From Bindless Texture documentation, it is written the following about maximum amount of resident textures:
The amount of storage available for resident images/textures may be less than the total storage for textures that is available. As such, you should attempt to minimize the time a texture spends being resident. Do not attempt to take steps like making textures resident/unresident every frame or something. But if you are finished using a texture for some time, make it unresident.
Is there a way to get this limit for the current hardware? (Ideally through OpenGL API. Or as a last option from hardware vendor specific APIsâŚ)
I didnât find any other details about this limit than the quote above.
I am working with large texture data, splitted in chunks.
I have 16GB dedicated memory on my GPU.
Making texture resident works well, until I reach around 1.6GB of texture data. From this point, glMakeTextureHandleResidentARB silently fail for the following texture handles:
- no error, but all textures created after that contain only zero values
- and if I call glIsTextureHandleResidentARB after I made the texture resident, it returns false
1.6GB over 16GB seems really low to me as a ratio of available memory for resident textures. I was expecting it to be close to the overall memory space.
But I donât see what else could make this scenario fail / what other limit I might miss. Any clue is welcome.
When not using bindless textures, the workflow run just fine, regardless of the amount of textures (as long at it fits into GPU memory). And when using fewer texutres, bindless textures work just fine as well.
Thanks in advance.