We have been porting our engine to use bindless texture. We pack those with u64vec2/u64vec4 and put into SSBO/UBO buffers. We detected very strange behavaior when executing in some complex pixel shader scenarios:
- for() loops which access samplers hang
- shader execution varies if using constant indexing into buffers vs dynamic uniform (per draw call).
When we switched from u64vec type to just uint64_t - those issues disappear.
Important to note: in SSBO/UBO we use std140 and std430 layouts respectively and we triple checked data integrity and padding.One of the major aspects of this bug is that simple pixel shader code (very minimal branching and no loops) works,but as mentioned above, shaders with very complex execution logic start freezing and causing the whole process hang.
I can’t put out the code here as this is commercial product. But we have verified the bug on Quadro P2000/P4000
That’s the hardware we use and have no ability to test on more cards at the moment.If you need more information,let me know how we can transfer it in a more discrete way.