I forgot if I filed a bug about this or not, but I couldn't find it if I did, so creating this new one. I will post my study and design in this bug.
This is somewhat blocking MANGLE, so I will work on this while in Montreal office for the week.
Step 1, move GPU driver bug workarounds decision making to GPU process.
It seems the only blocker is a renderer WebPreference:
prefs->disable_2d_canvas_copy_on_write =
IsDriverBugWorkaroundActive(gpu::BROKEN_EGL_IMAGE_REF_COUNTING) &&
command_line->HasSwitch(switches::kEnableThreadedTextureMailboxes);
We can add a struct of related WebPreferences and send it back as part of Gpu::EstablishGpuChannel, i.e., update these WebPreferences when we create the gpu context (in this case, a context for a 2D canvas).
This solution can be applied in the future for GPU blacklist decisions also.
Just want to insert a comment to mark the progress: at this point driver bug workarounds are purely computed in GPU process/thread. So half the task is accomplished.
The remaining half is to move blacklisting also to GPU side.
The CL above seems to have broken GPU info collection in Telemetry in some cases and it doesn't revert cleanly any more: https://chromium-review.googlesource.com/741184 . Mo, could you take Issue 778680 and Issue 778806?
At this point, I think this task is DONE.
Now GPU info collection and decision making are purely on GPU process.
There are still some further cleanups to do, but let's call this bug fixed.
Comment 1 by zmo@chromium.org
, Jul 17 2017Step 1, move GPU driver bug workarounds decision making to GPU process. It seems the only blocker is a renderer WebPreference: prefs->disable_2d_canvas_copy_on_write = IsDriverBugWorkaroundActive(gpu::BROKEN_EGL_IMAGE_REF_COUNTING) && command_line->HasSwitch(switches::kEnableThreadedTextureMailboxes); We can add a struct of related WebPreferences and send it back as part of Gpu::EstablishGpuChannel, i.e., update these WebPreferences when we create the gpu context (in this case, a context for a 2D canvas). This solution can be applied in the future for GPU blacklist decisions also.