Skip to content

Commit f17c0e9

Browse files
authored
Merge pull request #1351 from Seanst98/sean/interop-mipmaps
[Bindless][CUDA] Mipmap interop
2 parents 1cf9a08 + 3ca422a commit f17c0e9

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

source/adapters/cuda/image.cpp

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1006,17 +1006,23 @@ UR_APIEXPORT ur_result_t UR_APICALL urBindlessImagesMapExternalArrayExp(
10061006
ArrayDesc.Format = format;
10071007

10081008
CUDA_EXTERNAL_MEMORY_MIPMAPPED_ARRAY_DESC mipmapDesc = {};
1009-
mipmapDesc.numLevels = 1;
1009+
mipmapDesc.numLevels = pImageDesc->numMipLevel;
10101010
mipmapDesc.arrayDesc = ArrayDesc;
10111011

1012+
// External memory is mapped to a CUmipmappedArray
1013+
// If desired, a CUarray is retrieved from the mipmaps 0th level
10121014
CUmipmappedArray memMipMap;
10131015
UR_CHECK_ERROR(cuExternalMemoryGetMappedMipmappedArray(
10141016
&memMipMap, (CUexternalMemory)hInteropMem, &mipmapDesc));
10151017

1016-
CUarray memArray;
1017-
UR_CHECK_ERROR(cuMipmappedArrayGetLevel(&memArray, memMipMap, 0));
1018+
if (pImageDesc->numMipLevel > 1) {
1019+
*phImageMem = (ur_exp_image_mem_handle_t)memMipMap;
1020+
} else {
1021+
CUarray memArray;
1022+
UR_CHECK_ERROR(cuMipmappedArrayGetLevel(&memArray, memMipMap, 0));
10181023

1019-
*phImageMem = (ur_exp_image_mem_handle_t)memArray;
1024+
*phImageMem = (ur_exp_image_mem_handle_t)memArray;
1025+
}
10201026

10211027
} catch (ur_result_t Err) {
10221028
return Err;

0 commit comments

Comments
 (0)