Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2861)

Unified Diff: content/test/gpu/page_sets/gpu_process_tests.py

Issue 1860823004: Entries from kGpuDriverBugListJson are not selected on OS_WIN when relying on gl_renderer (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove the ifdef altogether and rebase Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/public/common/content_switches.cc ('k') | gpu/config/gpu_switches.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/test/gpu/page_sets/gpu_process_tests.py
diff --git a/content/test/gpu/page_sets/gpu_process_tests.py b/content/test/gpu/page_sets/gpu_process_tests.py
index 84207c628e64105a0beab6d408cd356c1d1163ef..211ca86a55b35b001140065680d129a83edee757 100644
--- a/content/test/gpu/page_sets/gpu_process_tests.py
+++ b/content/test/gpu/page_sets/gpu_process_tests.py
@@ -15,6 +15,7 @@ class GpuProcessSharedPageState(gpu_test_base.GpuSharedPageState):
'--gpu-testing-device-id',
'--gpu-testing-secondary-vendor-ids',
'--gpu-testing-secondary-device-ids',
+ '--gpu-testing-driver-date',
'--gpu-testing-gl-vendor',
'--gpu-testing-gl-renderer',
'--gpu-testing-gl-version']
@@ -68,6 +69,57 @@ class IdentifyActiveGpuPageBase(gpu_test_base.PageBase):
raise page_test.Failure('Inactive GPU field is wrong %s' % inactive_gpus)
+class DriverBugWorkaroundsTestsPage(gpu_test_base.PageBase):
+ def __init__(self, page_set=None, name='',
+ shared_page_state_class=None,
+ expectations=None,
+ expected_workaround=None,
+ unexpected_workaround=None):
+ super(DriverBugWorkaroundsTestsPage, self).__init__(
+ url='chrome:gpu',
+ page_set=page_set,
+ name=name,
+ shared_page_state_class=shared_page_state_class,
+ expectations=expectations)
+ self.expected_workaround = expected_workaround
+ self.unexpected_workaround = unexpected_workaround
+
+ def _Validate(self, tab, process_kind, is_expected, workaround_name):
+ if process_kind == "browser_process":
+ gpu_driver_bug_workarounds = tab.EvaluateJavaScript( \
+ 'GetDriverBugWorkarounds()')
+ elif process_kind == "gpu_process":
+ gpu_driver_bug_workarounds = tab.EvaluateJavaScript( \
+ 'chrome.gpuBenchmarking.getGpuDriverBugWorkarounds()')
+
+ is_present = workaround_name in gpu_driver_bug_workarounds
+
+ failure = False
+ if is_expected and not is_present:
+ failure = True
+ error_message = "is missing"
+ elif not is_expected and is_present:
+ failure = True
+ error_message = "is not expected"
+
+ if failure:
+ print 'Test failed. Printing page contents:'
+ print tab.EvaluateJavaScript('document.body.innerHTML')
+ raise page_test.Failure('%s %s in Browser process workarounds: %s' \
+ % (workaround_name, error_message, gpu_driver_bug_workarounds))
+
+ def Validate(self, tab, results):
+ if not self.expected_workaround and not self.unexpected_workaround:
+ return
+
+ if self.expected_workaround:
+ self._Validate(tab, "browser_process", True, self.expected_workaround)
+ self._Validate(tab, "gpu_process", True, self.expected_workaround)
+
+ if self.unexpected_workaround:
+ self._Validate(tab, "browser_process", False, self.unexpected_workaround)
+ self._Validate(tab, "gpu_process", False, self.unexpected_workaround)
+
class GpuProcessTestsPage(gpu_test_base.PageBase):
def __init__(self, url, name, story_set, expectations):
super(GpuProcessTestsPage, self).__init__(url=url,
@@ -208,40 +260,76 @@ class SkipGpuProcessPage(gpu_test_base.PageBase):
raise page_test.Failure('GPU process detected')
-class DriverBugWorkaroundsSharedPageState(GpuProcessSharedPageState):
+class DriverBugWorkaroundsShared(GpuProcessSharedPageState):
def __init__(self, test, finder_options, story_set):
- super(DriverBugWorkaroundsSharedPageState, self).__init__(
+ super(DriverBugWorkaroundsShared, self).__init__(
test, finder_options, story_set)
options = finder_options.browser_options
options.AppendExtraBrowserArgs('--use_gpu_driver_workaround_for_testing')
-class DriverBugWorkaroundsInGpuProcessPage(gpu_test_base.PageBase):
+class DriverBugWorkaroundsInGpuProcessPage(DriverBugWorkaroundsTestsPage):
def __init__(self, story_set, expectations):
super(DriverBugWorkaroundsInGpuProcessPage, self).__init__(
- url='chrome:gpu',
name='GpuProcess.driver_bug_workarounds_in_gpu_process',
page_set=story_set,
- shared_page_state_class=DriverBugWorkaroundsSharedPageState,
- expectations=expectations)
+ shared_page_state_class=DriverBugWorkaroundsShared,
+ expectations=expectations,
+ expected_workaround='use_gpu_driver_workaround_for_testing')
def Validate(self, tab, results):
- workaround = 'use_gpu_driver_workaround_for_testing'
+ super(DriverBugWorkaroundsInGpuProcessPage, self).Validate(tab, results)
- browser_list = tab.EvaluateJavaScript('GetDriverBugWorkarounds()')
- if not workaround in browser_list:
- print 'Test failed. Printing page contents:'
- print tab.EvaluateJavaScript('document.body.innerHTML')
- raise page_test.Failure('%s missing in Browser process workarounds: %s' \
- % (workaround, browser_list))
- gpu_list = tab.EvaluateJavaScript( \
- 'chrome.gpuBenchmarking.getGpuDriverBugWorkarounds()')
- if not workaround in gpu_list:
- print 'Test failed. Printing page contents:'
- print tab.EvaluateJavaScript('document.body.innerHTML')
- raise page_test.Failure('%s missing in GPU process workarounds: %s' \
- % (workaround, gpu_list))
+class DriverBugWorkaroundsUponGLRendererShared(GpuProcessSharedPageState):
+ def __init__(self, test, finder_options, story_set):
+ super(DriverBugWorkaroundsUponGLRendererShared, self).__init__(
+ test, finder_options, story_set)
+ options = finder_options.browser_options
+ if sys.platform in ('cygwin', 'win32'):
+ # Hit id 51 and 87 from kGpuDriverBugListJson.
+ options.AppendExtraBrowserArgs('--gpu-testing-vendor-id=0x1002')
+ options.AppendExtraBrowserArgs('--gpu-testing-device-id=0x6779')
+ options.AppendExtraBrowserArgs('--gpu-testing-driver-date=11-20-2014')
+ options.AppendExtraBrowserArgs('--gpu-testing-gl-vendor=Google Inc.')
+ options.AppendExtraBrowserArgs('--gpu-testing-gl-renderer=ANGLE ' \
+ '(AMD Radeon HD 6450 Direct3D11 vs_5_0 ps_5_0)')
+ options.AppendExtraBrowserArgs('--gpu-testing-gl-version=OpenGL ES 2.0 ' \
+ '(ANGLE 2.1.0.0c0d8006a9dd)')
+ elif sys.platform.startswith('linux'):
+ # Hit id 153 from kGpuDriverBugListJson.
+ options.AppendExtraBrowserArgs('--gpu-testing-vendor-id=0x0101')
+ options.AppendExtraBrowserArgs('--gpu-testing-device-id=0x0102')
+ options.AppendExtraBrowserArgs('--gpu-testing-gl-vendor=Vivante ' \
+ 'Corporation')
+ options.AppendExtraBrowserArgs('--gpu-testing-gl-renderer=Vivante GC1000')
+ elif sys.platform == 'darwin':
+ # Currently on osx no workaround relies on gl-renderer.
+ pass
+
+
+class DriverBugWorkaroundsUponGLRendererPage(DriverBugWorkaroundsTestsPage):
+ def __init__(self, story_set, expectations):
+ self.expected_workaround = None
+ self.unexpected_workaround = None
+
+ if sys.platform in ('cygwin', 'win32'):
+ self.expected_workaround = "texsubimage_faster_than_teximage"
+ self.unexpected_workaround = "disable_d3d11"
+ elif sys.platform.startswith('linux'):
+ self.expected_workaround = "disable_multisampled_render_to_texture"
+ elif sys.platform == 'darwin':
+ pass
+ super(DriverBugWorkaroundsUponGLRendererPage, self).__init__(
+ name='GpuProcess.driver_bug_workarounds_upon_gl_renderer',
+ page_set=story_set,
+ shared_page_state_class=DriverBugWorkaroundsUponGLRendererShared,
+ expectations=expectations,
+ expected_workaround=self.expected_workaround,
+ unexpected_workaround=self.unexpected_workaround)
+
+ def Validate(self, tab, results):
+ super(DriverBugWorkaroundsUponGLRendererPage, self).Validate(tab, results)
class IdentifyActiveGpuSharedPageState1(GpuProcessSharedPageState):
@@ -441,6 +529,7 @@ class GpuProcessTestsStorySet(story_set_module.StorySet):
self.AddStory(IdentifyActiveGpuPage3(self, expectations))
self.AddStory(IdentifyActiveGpuPage4(self, expectations))
self.AddStory(ReadbackWebGLGpuProcessPage(self, expectations))
+ self.AddStory(DriverBugWorkaroundsUponGLRendererPage(self, expectations))
@property
def allow_mixed_story_states(self):
« no previous file with comments | « content/public/common/content_switches.cc ('k') | gpu/config/gpu_switches.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698