MCPcopy Create free account
hub / github.com/NVIDIAGameWorks/Falcor / importTextureToMipmappedArray

Function importTextureToMipmappedArray

Source/Falcor/Utils/CudaUtils.cpp:250–284  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

248}
249
250cudaMipmappedArray_t importTextureToMipmappedArray(ref<Texture> pTex, uint32_t cudaUsageFlags)
251{
252 SharedResourceApiHandle sharedHandle = pTex->getSharedApiHandle();
253 FALCOR_CHECK(sharedHandle, "Texture shared handle creation failed");
254
255 cudaExternalMemoryHandleDesc externalMemoryHandleDesc;
256 memset(&externalMemoryHandleDesc, 0, sizeof(externalMemoryHandleDesc));
257
258 externalMemoryHandleDesc.type = cudaExternalMemoryHandleTypeD3D12Resource;
259 externalMemoryHandleDesc.handle.win32.handle = sharedHandle;
260 externalMemoryHandleDesc.size = pTex->getTextureSizeInBytes();
261 externalMemoryHandleDesc.flags = cudaExternalMemoryDedicated;
262
263 cudaExternalMemory_t externalMemory;
264 FALCOR_CUDA_CHECK(cudaImportExternalMemory(&externalMemory, &externalMemoryHandleDesc));
265
266 // Map mipmapped array onto external memory
267 cudaExternalMemoryMipmappedArrayDesc mipDesc;
268 memset(&mipDesc, 0, sizeof(mipDesc));
269 auto format = pTex->getFormat();
270 mipDesc.formatDesc.x = getNumChannelBits(format, 0);
271 mipDesc.formatDesc.y = getNumChannelBits(format, 1);
272 mipDesc.formatDesc.z = getNumChannelBits(format, 2);
273 mipDesc.formatDesc.w = getNumChannelBits(format, 3);
274 mipDesc.formatDesc.f = (getFormatType(format) == FormatType::Float) ? cudaChannelFormatKindFloat : cudaChannelFormatKindUnsigned;
275 mipDesc.extent.depth = 1;
276 mipDesc.extent.width = pTex->getWidth();
277 mipDesc.extent.height = pTex->getHeight();
278 mipDesc.flags = cudaUsageFlags;
279 mipDesc.numLevels = 1;
280
281 cudaMipmappedArray_t mipmappedArray;
282 FALCOR_CUDA_CHECK(cudaExternalMemoryGetMappedMipmappedArray(&mipmappedArray, externalMemory, &mipDesc));
283 return mipmappedArray;
284}
285
286cudaSurfaceObject_t mapTextureToSurface(ref<Texture> pTex, uint32_t cudaUsageFlags)
287{

Callers 1

mapTextureToSurfaceFunction · 0.85

Calls 7

getNumChannelBitsFunction · 0.85
getFormatTypeFunction · 0.85
getTextureSizeInBytesMethod · 0.80
getFormatMethod · 0.80
getWidthMethod · 0.80
getHeightMethod · 0.80
getSharedApiHandleMethod · 0.45

Tested by

no test coverage detected