Commit 5f38cadc authored by dyen's avatar dyen Committed by Commit bot

Added FBO Invalidation workaround for Nexus 6.

We have run into a driver issue where after we invalidate a Frame
Buffer Object it gets into a state where it will randomly drop
draw calls and/or texture copies. I have added a workaround for this
issue by skipping frame buffer invalidations on Adreno 420s. This is
valid because invalidations set the frame buffer to be in an undefined
state so skipping them is technically okay, however we may lose
optimizations that could happen at the driver level for operations
being performed on an undefined FBO.

R=sievers@chromium.org, vmiura@chromium.org
BUG=443060

Review URL: https://codereview.chromium.org/1034663003

Cr-Commit-Position: refs/heads/master@{#322403}
parent b6ff3ecb
...@@ -4496,6 +4496,9 @@ void GLES2DecoderImpl::DoDisableVertexAttribArray(GLuint index) { ...@@ -4496,6 +4496,9 @@ void GLES2DecoderImpl::DoDisableVertexAttribArray(GLuint index) {
void GLES2DecoderImpl::DoDiscardFramebufferEXT(GLenum target, void GLES2DecoderImpl::DoDiscardFramebufferEXT(GLenum target,
GLsizei numAttachments, GLsizei numAttachments,
const GLenum* attachments) { const GLenum* attachments) {
if (workarounds().disable_fbo_invalidations)
return;
Framebuffer* framebuffer = Framebuffer* framebuffer =
GetFramebufferInfoForTarget(GL_FRAMEBUFFER); GetFramebufferInfoForTarget(GL_FRAMEBUFFER);
......
...@@ -19,7 +19,7 @@ const char kGpuDriverBugListJson[] = LONG_STRING_CONST( ...@@ -19,7 +19,7 @@ const char kGpuDriverBugListJson[] = LONG_STRING_CONST(
{ {
"name": "gpu driver bug list", "name": "gpu driver bug list",
// Please update the version number whenever you change this file. // Please update the version number whenever you change this file.
"version": "7.17", "version": "7.18",
"entries": [ "entries": [
{ {
"id": 1, "id": 1,
...@@ -1176,6 +1176,19 @@ LONG_STRING_CONST( ...@@ -1176,6 +1176,19 @@ LONG_STRING_CONST(
"features": [ "features": [
"unbind_attachments_on_bound_render_fbo_delete" "unbind_attachments_on_bound_render_fbo_delete"
] ]
},
{
"id": 103,
"description": "Adreno 420 driver drops draw calls after FBO invalidation",
"cr_bugs": [443060],
"os": {
"type": "android"
},
"gl_vendor": "Qualcomm.*",
"gl_renderer": ".*420",
"features": [
"disable_fbo_invalidations"
]
} }
] ]
} }
......
...@@ -36,6 +36,8 @@ ...@@ -36,6 +36,8 @@
disable_ext_draw_buffers) \ disable_ext_draw_buffers) \
GPU_OP(DISABLE_EXT_OCCLUSION_QUERY, \ GPU_OP(DISABLE_EXT_OCCLUSION_QUERY, \
disable_ext_occlusion_query) \ disable_ext_occlusion_query) \
GPU_OP(DISABLE_FBO_INVALIDATIONS, \
disable_fbo_invalidations) \
GPU_OP(DISABLE_MULTIMONITOR_MULTISAMPLING, \ GPU_OP(DISABLE_MULTIMONITOR_MULTISAMPLING, \
disable_multimonitor_multisampling) \ disable_multimonitor_multisampling) \
GPU_OP(DISABLE_MULTISAMPLING, \ GPU_OP(DISABLE_MULTISAMPLING, \
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment