SWDEV-479958 - Support different address mode

Support different address modes in X, Y, Z directions

Change-Id: If1db5a8af33c92dd14b48968c3e8eceb97daea6c
This commit is contained in:
taosang2
2024-11-15 17:47:37 -05:00
committed by Tao Sang
parent 1af639ea44
commit d82d6a78cf
7 changed files with 94 additions and 125 deletions
+11 -8
View File
@@ -173,17 +173,20 @@ hipError_t ihipCreateTextureObject(hipTextureObject_t* pTexObject,
}
// TODO ROCclr assumes all dimensions have the same addressing mode.
cl_addressing_mode addressMode = CL_ADDRESS_NONE;
cl_addressing_mode addressMode[3] = { CL_ADDRESS_NONE, CL_ADDRESS_NONE, CL_ADDRESS_NONE};
// If hipTextureDesc::normalizedCoords is set to zero,
// hipAddressModeWrap and hipAddressModeMirror won't be supported
// and will be switched to hipAddressModeClamp.
if ((pTexDesc->normalizedCoords == 0) &&
((pTexDesc->addressMode[0] == hipAddressModeWrap) || (pTexDesc->addressMode[0] == hipAddressModeMirror))) {
addressMode = hip::getCLAddressingMode(hipAddressModeClamp);
}
// hipTextureDesc::addressMode is ignored if hipResourceDesc::resType is hipResourceTypeLinear
else if (pResDesc->resType != hipResourceTypeLinear) {
addressMode = hip::getCLAddressingMode(pTexDesc->addressMode[0]);
for (int i = 0; i < 3; i++) {
if ((pTexDesc->normalizedCoords == 0) &&
((pTexDesc->addressMode[i] == hipAddressModeWrap) ||
(pTexDesc->addressMode[i] == hipAddressModeMirror))) {
addressMode[i] = hip::getCLAddressingMode(hipAddressModeClamp);
}
// hipTextureDesc::addressMode is ignored if hipResourceDesc::resType is hipResourceTypeLinear
else if (pResDesc->resType != hipResourceTypeLinear) {
addressMode[i] = hip::getCLAddressingMode(pTexDesc->addressMode[i]);
}
}
#ifndef CL_FILTER_NONE