Graphics
Intel® graphics drivers and software, compatibility, troubleshooting, performance, and optimization
22695 Discussions

Rendering breaks if a Sampler Object is bound when using a Texture Buffer Object

bechard__malcolm
Beginner
2,600 Views

System Used: Intel NUC
CPU SKU: Core i5-250U 1.6Ghz
GPU SKU: HD6000
Processor Line: U
System BIOS Version: N/A
CMOS settings: N/A
Graphics Driver Version: 10.18.15.4256
GOP/VBIOS Version: 1038.0
Operating System: Windows 10 64-bit
OS Version: Windows 10 64-bit
API: OpenGL
Occurs on non-Intel GPUs?: No

Steps to Reproduce:
I can send a repro case with my application/project file. Let me know where to send it.

Edit: I've changed the text on this now that I've narrowed it down more.

It seems if I have a TBO bound, and I also have a sampler object bound for that image unit, rendering breaks. Changing the code to bind the 0 sampler object instead makes rendering work. No GL errors are generated in either case.

I tried making the sampler object have things like NEAREST filtering to be closer to what a TBO behaves as, but no luck.

This issue does not occur on Nvidia/AMD GPUs, and I'm pretty sure TBOs should just ignore the sampler object binding entirely.

Thanks

0 Kudos
9 Replies
bechard__malcolm
Beginner
2,600 Views

Update: seems to be TBO related specifically. If I change my shader so the TBOs arn't used I get something rendering.

0 Kudos
bechard__malcolm
Beginner
2,600 Views

I have totally changed the text for this bug as I've dug deeper and found the root cause.

The issue is TBOs and sampler objects being used together. This breaks rendering on Intels GPUs.

0 Kudos
Michael_C_Intel2
Employee
2,600 Views

Hi Malcolm,

You can attach a sample in a forum post, or send me a private message with it.

I am getting a ticket filed and talking with out OpenGL driver team.

Thanks,

-Michael

0 Kudos
Michael_C_Intel2
Employee
2,600 Views

Hi Malcolm,

The OpenGl teams has investigated your issue and did not find a driver issue. Uncommenting the line with texelFetch indeed breaks the rendering but this occurs due to TBO being used incorrectly. Looks like sampleBuffer sTDInstanceT is declared but there is nothing assigned to it through the "Samplers 1" tab in Parameters window. In this case results might be undefined. After assigning correct TOP to the sampler the issue does not occur and TBO can be sampled properly.

Hope this helps,

-Michael

0 Kudos
bechard__malcolm
Beginner
2,600 Views

Hey Michael,

The sTDInstanceT sampler is assigned internally and automatically by the TouchDesigner instancing code, not explicitly using the Samplers parameters on that GLSL node. The sampler is definetely assigned by the internal code since the instancing code works on other brand of GPUs for many years now. Binding it on the parameters would indeed override the internal binding, however a TOP is a texture2D, not a TBO, which avoids the bug.

The issue was fixed by not binding a sampler object (GL_ARB_sampler_objects) to the same image unit as the TBO is bound to. So it still seems like a driver bug as the samplerBuffer should just ignore any bound sampler object. Did the team look into that case at all?

0 Kudos
Michael_C_Intel2
Employee
2,600 Views

Hi Malcolm,

Debug is continuing, there might be a driver issue a very specific scenario we haven't covered yet.

-Michael

0 Kudos
Michael_C_Intel2
Employee
2,600 Views

Hi Malcolm,

Interesting development in this issue today. The investigating engineer downloaded the latest version of your application (TouchDesigner088.58140.64-Bit.exe) and he is unable to reproduce the issue using the same graphics driver. Can you confirm this on your end?

-Michael

0 Kudos
bechard__malcolm
Beginner
2,600 Views

Yes, that's expected. I added a workaround in the builds since this report was made that unbinds the sampler object when I detect a TBO is being bound.

0 Kudos
Michael_C_Intel2
Employee
2,600 Views

Hi Malcolm,

We have been looking at this issue and we are not able to reproduce it outside your application – no matter what or how we tried. In the end the driver team cannot find a driver issue. 

-Michael 

0 Kudos
Reply