New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 600741 link

Starred by 2 users

Issue metadata

Status: Fixed
Owner:
Email to this user bounced
Closed: May 2016
Cc:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Bug



Sign in to add a comment

Workarounds relying on gl_renderer are never set on Windows

Project Member Reported by j.iso...@samsung.com, Apr 5 2016

Issue description

Version: 51.0.2700.0 (Developer Build) (64-bit)
OS: Win

The driver bug id 51 from kGpuDriverBugListJson, is never selected on Windows because
gpu::ApplyGpuDriverBugWorkarounds is currently not called on Windows (only on chromeos, android and linux).
On osx no problem since no driver bug id relies on gl_renderer.


See:
    {
      "id": 51,
      "description": "TexSubImage is faster for full uploads on ANGLE",
      "os": {
        "type": "win"
      },
      "gl_renderer": "ANGLE.*",
      "features": [
        "texsubimage_faster_than_teximage"
      ]
    },

The solution is to add "|| defined(OS_WIN)" but then driver bug id 87 maybe be wrongly selected since it requires "gpu_info.driver_date" knowledge from gpu process. So the fix should also contain passing driver_date from browser process to gpu process like it is done for vendor_id and device id.

 
I suggested the CL https://codereview.chromium.org/1860823004/.


Before to start the GPU process, the browser process compute the gpu driver workarounds from GpuDataManager->Initialize() / gpu_driver_bug_list_->MakeDecision (see https://chromium.googlesource.com/chromium/src.git/+/master/content/browser/gpu/gpu_data_manager_impl_private.cc#582)

Few lines after it calls gpu::GpuDriverBugList::AppendWorkaroundsFromCommandLine (https://chromium.googlesource.com/chromium/src.git/+/master/content/browser/gpu/gpu_data_manager_impl_private.cc#606) to pass them to the gpu process when launching it.

But at this time gpu_info.gl_renderer is not known. (except on Linux through SetGLStrings but only works for second time the browser is launched)

So that's why in gpu_main.cc there is a call to gpu::ApplyGpuDriverBugWorkarounds (https://chromium.googlesource.com/chromium/src.git/+/master/content/gpu/gpu_main.cc#309) just after the call to CollectGraphicsInfo (that actually retrieves gl_renderer using GLGetString(GL_RENDERER)).

But this gpu::ApplyGpuDriverBugWorkarounds is not called Windows.t 
I think it assumed at some point that no entry from kGpuDriverBugListJson where relying on "gl_renderer" for os type "win".
But since then there is at least id 51 that relies on gl_renderer.

So unless I am mistaken the only way to fix the problem is to add "|| defined(OS_WIN)" here https://chromium.googlesource.com/chromium/src.git/+/master/content/gpu/gpu_main.cc#309.
In the new test I refer to that with "expected_workarounds".

The changes in the CL related to driver_date is a collateral damage. Indeed the fact that this CL enables the above call to gpu::ApplyGpuDriverBugWorkarounds in gpu_main.cc, makes appear another problem. ApplyGpuDriverBugWorkarounds calls MakeDecision it will pick id 87 (https://chromium.googlesource.com/chromium/src.git/+/master/gpu/config/gpu_driver_bug_list_json.cc#942)
Indeed in gpu_main.cc the gpu_info.driver_date is alway empty. This CL fixes that as well. In the new test I refer to that through "unexpected_workarounds".





Project Member

Comment 2 by bugdroid1@chromium.org, Apr 28 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/fecf94b1e7ce2e6ab0e89a0a7aefd1a1771f94c1

commit fecf94b1e7ce2e6ab0e89a0a7aefd1a1771f94c1
Author: j.isorce <j.isorce@samsung.com>
Date: Thu Apr 28 05:52:15 2016

Entries from kGpuDriverBugListJson are not selected on OS_WIN when relying on gl_renderer

For example the current entry id 51 from kGpuDriverBugListJson,
is never selected on Windows because gpu::ApplyGpuDriverBugWorkarounds
(from gpu_main.cc) is currently not called on Windows.
It is only called on chromeos, android and linux. On osx no problem since
no entry id relies on gl_renderer.

This CL also adds DriverBugWorkaroundsUponGLRendererPage to gpu_process_test.py

Also this CL adds a new base class DriverBugWorkaroundsTestsPage to factor
some common code.

R=kbr@chromium.org, piman@chromium.org, zmo@chromium.org

BUG= 600741 

TEST=./content/test/gpu/run_gpu_test.py gpu_process
CQ_INCLUDE_TRYBOTS=tryserver.chromium.win:win_optional_gpu_tests_rel;tryserver.chromium.mac:mac_optional_gpu_tests_rel

Review-Url: https://codereview.chromium.org/1860823004
Cr-Commit-Position: refs/heads/master@{#390310}

[modify] https://crrev.com/fecf94b1e7ce2e6ab0e89a0a7aefd1a1771f94c1/content/browser/gpu/gpu_data_manager_impl_private.cc
[modify] https://crrev.com/fecf94b1e7ce2e6ab0e89a0a7aefd1a1771f94c1/content/gpu/gpu_main.cc
[modify] https://crrev.com/fecf94b1e7ce2e6ab0e89a0a7aefd1a1771f94c1/content/public/common/content_switches.cc
[modify] https://crrev.com/fecf94b1e7ce2e6ab0e89a0a7aefd1a1771f94c1/content/public/common/content_switches.h
[modify] https://crrev.com/fecf94b1e7ce2e6ab0e89a0a7aefd1a1771f94c1/content/test/gpu/page_sets/gpu_process_tests.py
[modify] https://crrev.com/fecf94b1e7ce2e6ab0e89a0a7aefd1a1771f94c1/gpu/config/gpu_switches.cc
[modify] https://crrev.com/fecf94b1e7ce2e6ab0e89a0a7aefd1a1771f94c1/gpu/config/gpu_switches.h

Status: Fixed (was: Assigned)

Sign in to add a comment