Ed Daenar
10-08-2011, 02:17 PM
I have been trying to get a 360º renderer running and after what seem hours of debugging trying to find the mistake I have come to the conclusion that I may have hit a driver bug.
The problem:
When using layered framebuffers with GL 3.3 AMD Radeon HD drivers the glClear (or glClearBuffers) function does not work correctly. It only cleares the layer 0 of the full layered texture object.
The minimalistic test I've performed does this:
1. Create a layered texture object. I've tested 3D textures, 2D texture arrays and cubemaps, all with the same results.
2. Create a frame buffer and attach the texture object to the color attachment 0.
glCheckFramebufferStatus returns GL_FRAMEBUFFER_COMPLETE.
When rendering, if I use glClear only the layer0 face is cleared. However, I am able to draw to all layers. The output operations of the geometry shader appear correctly on the layers and I can visualize this output wether it's a cubemap, 3D tex or 2D tex array, it's all the same.
I've tried everything I could think of, but the GL 3.3 specification is very clear about how glClear should work on layered textures: it simply says all layers will be cleared.
Have I hit a driver bug or am I missing some obscure way to clear all the layers? This basicly destroys any use of layer rendering.
Current video driver:
Driver Packaging Version 8.892-110914m-125030C-ATI
Catalyst Version 11.9
Provider ATI Technologies Inc.
2D Driver Version 8.01.01.1186
Direct3D Version 7.14.10.0860
OpenGL Version 6.14.10.11079
AMD VISION Engine Control Center Version 2011.0908.1355.23115
AMD Audio Driver Version 7.12.0.7702
I'm about to go check older or beta drivers if I can find them, but I figured I'd drop this problem here first because testing drivers is going to take a while.
Thank you in advance.
The problem:
When using layered framebuffers with GL 3.3 AMD Radeon HD drivers the glClear (or glClearBuffers) function does not work correctly. It only cleares the layer 0 of the full layered texture object.
The minimalistic test I've performed does this:
1. Create a layered texture object. I've tested 3D textures, 2D texture arrays and cubemaps, all with the same results.
2. Create a frame buffer and attach the texture object to the color attachment 0.
glCheckFramebufferStatus returns GL_FRAMEBUFFER_COMPLETE.
When rendering, if I use glClear only the layer0 face is cleared. However, I am able to draw to all layers. The output operations of the geometry shader appear correctly on the layers and I can visualize this output wether it's a cubemap, 3D tex or 2D tex array, it's all the same.
I've tried everything I could think of, but the GL 3.3 specification is very clear about how glClear should work on layered textures: it simply says all layers will be cleared.
Have I hit a driver bug or am I missing some obscure way to clear all the layers? This basicly destroys any use of layer rendering.
Current video driver:
Driver Packaging Version 8.892-110914m-125030C-ATI
Catalyst Version 11.9
Provider ATI Technologies Inc.
2D Driver Version 8.01.01.1186
Direct3D Version 7.14.10.0860
OpenGL Version 6.14.10.11079
AMD VISION Engine Control Center Version 2011.0908.1355.23115
AMD Audio Driver Version 7.12.0.7702
I'm about to go check older or beta drivers if I can find them, but I figured I'd drop this problem here first because testing drivers is going to take a while.
Thank you in advance.