Currently we have a lot of doubled texture data with the interop form DX11 and Optix in our scientific project.
[OLD:
This is driven by the fact, that “bindless textures” are realized in DX11 by use of texture arrays. However Optix doesn’t allow for texture array interop. So we have to load all texture data twice without being shared. This also complicates our texture manager and texture streaming with a lot of glue code.
Native support of shared dx11 texture arrays in optix would be very helpful. (An optional workaround would be the possibility to create a shared texture not from the whole texture resource but also from a subresource - e.g. n shared optix textures from n slices in the dx texture array)
]
Ok, there was a misunderstanding in our wrapper code as the optix getArraySize api function always returns 1 for the array size of the shared Dx texture sampler. Even if it is a texture array in Dx.
From our current understanding it should be possible to use the shared texturearray. However not by using the optix bindless textures, but by binding the texture sampler as a variable and using the cuda tex2DLayered function.
However when setting the texture sampler as a variable we get the error: Validation error: TextureSampler contains incomplete mipmaps, [4915627], [4915358])
Even if all mipmaps have been created with the dx create mipmaps function, and also in the case where there is only 1 miplevel. What could be the reason? We found no further documentation of the errors codes.
Besides this, additional support for large (and compressed) dx textures would be also very helpful (We found no information in the documentation on the current size limits. But we get an exception if we try to create a shared dx texture that has a size larger 4k.)