We are implementing HDR in an RGBM encoded LDR (RGBA8) render target in our engine. We can only support this on devices that support framebuffer fetch. The 5XX series have the GL_EXT_shader_framebuffer_fetch extension enumerated but it doesn't appear to work properly. The same shader code works fine on PowerVR, Mali, and iOS. Here are some screenshots and driver info.
no fetch (what it should look like): https://dl.dropboxusercontent.com/u/39900018/Screenshot_20161201-163636.png
RGBA8 fetch: https://dl.dropboxusercontent.com/u/39900018/Screenshot_20161201-162713.png
RGBA_FP16 fetch: https://dl.dropboxusercontent.com/u/39900018/Screenshot_20161201-162738.png
Device Info: https://dl.dropboxusercontent.com/u/39900018/Screenshot_20161201-163256.png (I have also tested on a 510)
Hi.. Would you be able to provide your fragment code which shows how you're using the extension to do the blending?
thanks...
I have same problem on a Adreno 418 GPU with Android 7.1.1. It looks like that the color fetched from framebuffer is always zero.
Best,
Wayne
Here is my simple testing code: #extension GL_EXT_shader_framebuffer_fetch: enable layout(location=0) inout vec4 fragColor0; void main() { vec4 result0 = fragColor0; result0 += ...
fragColor0 = result0;
}
Any updates to this? I'm facing the same issue.
Would love to see an update on this.
Getting wrong behaviour on an Adreno 430.
I can't see the original images anymore, but I am also experiencing an issue with GL_EXT_shader_framebuffer_fetch on an Adreno 540. The program works on PowerVR and Intel, which also support this extension.
It seems like GL_EXT_shader_framebuffer_fetch is not enforcing coherency/ordering on Adreno devices.
I tested using GL_QCOM_shader_framebuffer_fetch_noncoherent, breaking up the draw calls and inserting glFramebufferFetchBarrierQCOM() between each draw call, and this fixed the issue.
Is there some workaround for this?
Any update on this?