Commit 3b53b545 authored by Brian Sheedy's avatar Brian Sheedy Committed by Commit Bot

Refactor GPU tags

Refactors several sets of GPU expectation tags for clarity:
1. ANGLE backend tags now have an angle- prefix
2. Tags that only make sense in the context of Skia Renderer have been
   consolidated instead of having separate use/no-use tags for each
   version.

Bug: 1011107, 1111876
Change-Id: I55d68444b4aa88116666d5464c470f7433dbc6ee
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2462222
Commit-Queue: Brian Sheedy <bsheedy@chromium.org>
Reviewed-by: default avatarJamie Madill <jmadill@chromium.org>
Reviewed-by: default avatarYuly Novikov <ynovikov@chromium.org>
Cr-Commit-Position: refs/heads/master@{#816321}
parent e7f45947
...@@ -98,25 +98,25 @@ def GetGpuDriverVersion(gpu_info): ...@@ -98,25 +98,25 @@ def GetGpuDriverVersion(gpu_info):
def GetANGLERenderer(gpu_info): def GetANGLERenderer(gpu_info):
retval = 'no_angle' retval = 'angle-no-backend'
if gpu_info and gpu_info.aux_attributes: if gpu_info and gpu_info.aux_attributes:
gl_renderer = gpu_info.aux_attributes.get('gl_renderer') gl_renderer = gpu_info.aux_attributes.get('gl_renderer')
if gl_renderer and 'ANGLE' in gl_renderer: if gl_renderer and 'ANGLE' in gl_renderer:
if 'Direct3D11' in gl_renderer: if 'Direct3D11' in gl_renderer:
retval = 'd3d11' retval = 'angle-d3d11'
elif 'Direct3D9' in gl_renderer: elif 'Direct3D9' in gl_renderer:
retval = 'd3d9' retval = 'angle-d3d9'
elif 'OpenGL ES' in gl_renderer: elif 'OpenGL ES' in gl_renderer:
retval = 'opengles' retval = 'angle-opengles'
elif 'OpenGL' in gl_renderer: elif 'OpenGL' in gl_renderer:
retval = 'opengl' retval = 'angle-opengl'
elif 'Metal' in gl_renderer: elif 'Metal' in gl_renderer:
retval = 'metal' retval = 'angle-metal'
# SwiftShader first because it also contains Vulkan # SwiftShader first because it also contains Vulkan
elif 'SwiftShader' in gl_renderer: elif 'SwiftShader' in gl_renderer:
retval = 'swiftshader' retval = 'angle-swiftshader'
elif 'Vulkan' in gl_renderer: elif 'Vulkan' in gl_renderer:
retval = 'vulkan' retval = 'angle-vulkan'
return retval return retval
...@@ -138,42 +138,40 @@ def GetCommandDecoder(gpu_info): ...@@ -138,42 +138,40 @@ def GetCommandDecoder(gpu_info):
return 'no_passthrough' return 'no_passthrough'
# Used to check GPU feature status to see if SkiaRenderer is enabled. def GetSkiaRenderer(gpu_feature_status, extra_browser_args):
def GetSkiaRenderer(gpu_feature_status): retval = 'no-skia-renderer'
if gpu_feature_status and 'skia_renderer' in gpu_feature_status: skia_renderer_enabled = (
if gpu_feature_status['skia_renderer'] == 'enabled_on': gpu_feature_status
return 'skia-renderer' and gpu_feature_status.get('skia_renderer') == 'enabled_on')
return 'no-skia-renderer' if skia_renderer_enabled:
if HasDawnSkiaRenderer(extra_browser_args):
retval = 'dawn-skia-renderer'
elif HasGlSkiaRenderer(extra_browser_args):
retval = 'gl-skia-renderer'
elif HasVulkanSkiaRenderer(gpu_feature_status):
retval = 'vulkan-skia-renderer'
return retval
# Used to check GPU feature status to see if Vulkan is enabled. # TODO(sgilhuly): Use GPU feature status for Dawn instead of command line.
def GetVulkan(gpu_feature_status): def HasDawnSkiaRenderer(extra_browser_args):
if gpu_feature_status and 'vulkan' in gpu_feature_status: if extra_browser_args:
if gpu_feature_status['vulkan'] == 'enabled_on': for arg in extra_browser_args:
return 'use-vulkan' if arg.startswith('--enable-features') and 'SkiaDawn' in arg:
return 'no-use-vulkan' return True
return False
# Used to parse additional options sent to the browser instance via def HasGlSkiaRenderer(extra_browser_args):
# '--extra-browser-args', looking for '--use-gl='.
def GetGL(extra_browser_args):
if extra_browser_args: if extra_browser_args:
for o in extra_browser_args: for arg in extra_browser_args:
if "--use-gl=" in o: if '--use-gl=' in arg:
return 'use-gl' return True
return 'no-use-gl' return False
# Used to parse additional options sent to the browser instance via def HasVulkanSkiaRenderer(gpu_feature_status):
# '--extra-browser-args', looking for '--enable-features=SkiaDawn' which return gpu_feature_status and gpu_feature_status.get('vulkan') == 'enabled_on'
# may be merged with additional feature flags.
# TODO(sgilhuly): Use GPU feature status for Dawn instead of command line.
def GetSkiaDawn(extra_browser_args):
if extra_browser_args:
for o in extra_browser_args:
if o.startswith('--enable-features') and "SkiaDawn" in o:
return 'use-skia-dawn'
return 'no-use-skia-dawn'
# used by unittests to create a mock arguments object # used by unittests to create a mock arguments object
......
...@@ -509,19 +509,10 @@ class GpuIntegrationTest( ...@@ -509,19 +509,10 @@ class GpuIntegrationTest(
tags.extend([re.sub('[ _]', '-', tag) for tag in gpu_tags]) tags.extend([re.sub('[ _]', '-', tag) for tag in gpu_tags])
# Add tags based on GPU feature status. # Add tags based on GPU feature status.
skia_renderer = gpu_helper.GetSkiaRenderer(gpu_info.feature_status) startup_args = getattr(browser, 'startup_args', None)
skia_renderer = gpu_helper.GetSkiaRenderer(gpu_info.feature_status,
startup_args)
tags.append(skia_renderer) tags.append(skia_renderer)
use_vulkan = gpu_helper.GetVulkan(gpu_info.feature_status)
tags.append(use_vulkan)
# If additional options have been set via '--extra-browser-args' check for
# those which map to expectation tags. The '_browser_backend' attribute may
# not exist in unit tests.
if hasattr(browser, 'startup_args'):
use_gl = gpu_helper.GetGL(browser.startup_args)
tags.append(use_gl)
use_skia_dawn = gpu_helper.GetSkiaDawn(browser.startup_args)
tags.append(use_skia_dawn)
return tags return tags
@classmethod @classmethod
......
...@@ -158,7 +158,7 @@ class GpuIntegrationTestUnittest(unittest.TestCase): ...@@ -158,7 +158,7 @@ class GpuIntegrationTestUnittest(unittest.TestCase):
tag_set = _GenerateNvidiaExampleTagsForTestClassAndArgs(test_class, args) tag_set = _GenerateNvidiaExampleTagsForTestClassAndArgs(test_class, args)
self.assertTrue( self.assertTrue(
set([ set([
'win', 'win10', 'd3d9', 'release', 'nvidia', 'nvidia-0x1cb3', 'win', 'win10', 'angle-d3d9', 'release', 'nvidia', 'nvidia-0x1cb3',
'no-passthrough' 'no-passthrough'
]).issubset(tag_set)) ]).issubset(tag_set))
return tag_set return tag_set
...@@ -201,9 +201,8 @@ class GpuIntegrationTestUnittest(unittest.TestCase): ...@@ -201,9 +201,8 @@ class GpuIntegrationTestUnittest(unittest.TestCase):
self.assertEqual( self.assertEqual(
_GetTagsToTest(browser), _GetTagsToTest(browser),
set([ set([
'win', 'win10', 'release', 'nvidia', 'nvidia-0x1cb3', 'd3d9', 'win', 'win10', 'release', 'nvidia', 'nvidia-0x1cb3', 'angle-d3d9',
'no-passthrough', 'no-swiftshader-gl', 'no-use-vulkan', 'no-passthrough', 'no-swiftshader-gl', 'no-skia-renderer'
'no-skia-renderer'
])) ]))
def testGenerateVendorTagUsingVendorString(self): def testGenerateVendorTagUsingVendorString(self):
...@@ -218,8 +217,8 @@ class GpuIntegrationTestUnittest(unittest.TestCase): ...@@ -218,8 +217,8 @@ class GpuIntegrationTestUnittest(unittest.TestCase):
_GetTagsToTest(browser), _GetTagsToTest(browser),
set([ set([
'mac', 'mojave', 'release', 'imagination', 'mac', 'mojave', 'release', 'imagination',
'imagination-PowerVR-SGX-554', 'opengles', 'passthrough', 'imagination-PowerVR-SGX-554', 'angle-opengles', 'passthrough',
'no-swiftshader-gl', 'no-use-vulkan', 'no-skia-renderer' 'no-swiftshader-gl', 'no-skia-renderer'
])) ]))
def testGenerateVendorTagUsingDeviceString(self): def testGenerateVendorTagUsingDeviceString(self):
...@@ -232,8 +231,8 @@ class GpuIntegrationTestUnittest(unittest.TestCase): ...@@ -232,8 +231,8 @@ class GpuIntegrationTestUnittest(unittest.TestCase):
_GetTagsToTest(browser), _GetTagsToTest(browser),
set([ set([
'mac', 'mojave', 'release', 'imagination', 'mac', 'mojave', 'release', 'imagination',
'imagination-Triangle-Monster-3000', 'no-angle', 'no-passthrough', 'imagination-Triangle-Monster-3000', 'angle-no-backend',
'no-swiftshader-gl', 'no-use-vulkan', 'no-skia-renderer' 'no-passthrough', 'no-swiftshader-gl', 'no-skia-renderer'
])) ]))
def testSimpleIntegrationTest(self): def testSimpleIntegrationTest(self):
......
# tags: [ android ] # tags: [ android ]
# tags: [ android-nexus-5x android-nexus-5 ] # tags: [ android-nexus-5x android-nexus-5 ]
# tags: [ skia-renderer no-skia-renderer ]
# results: [ Failure RetryOnFailure Skip ] # results: [ Failure RetryOnFailure Skip ]
crbug.com/1006045 [ android android-nexus-5x skia-renderer ] Maps_maps [ Failure ] crbug.com/1009137 [ android android-nexus-5 ] Maps_maps [ RetryOnFailure ]
crbug.com/1009137 [ android android-nexus-5 no-skia-renderer ] Maps_maps [ RetryOnFailure ]
...@@ -226,7 +226,7 @@ class WebGLConformanceIntegrationTest(gpu_integration_test.GpuIntegrationTest): ...@@ -226,7 +226,7 @@ class WebGLConformanceIntegrationTest(gpu_integration_test.GpuIntegrationTest):
# Verify that Chrome's GL backend matches if a specific one was requested # Verify that Chrome's GL backend matches if a specific one was requested
if self._gl_backend: if self._gl_backend:
if (self._gl_backend == 'angle' if (self._gl_backend == 'angle'
and gpu_helper.GetANGLERenderer(gpu_info) == 'no_angle'): and gpu_helper.GetANGLERenderer(gpu_info) == 'angle-no-backend'):
self.fail('requested GL backend (' + self._gl_backend + ')' + self.fail('requested GL backend (' + self._gl_backend + ')' +
' had no effect on the browser: ' + ' had no effect on the browser: ' +
_GetGPUInfoErrorString(gpu_info)) _GetGPUInfoErrorString(gpu_info))
...@@ -238,15 +238,15 @@ class WebGLConformanceIntegrationTest(gpu_integration_test.GpuIntegrationTest): ...@@ -238,15 +238,15 @@ class WebGLConformanceIntegrationTest(gpu_integration_test.GpuIntegrationTest):
# GPU exepections use slightly different names for the angle backends # GPU exepections use slightly different names for the angle backends
# than the Chrome flags # than the Chrome flags
known_backend_flag_map = { known_backend_flag_map = {
'd3d11': ['d3d11'], 'angle-d3d11': ['d3d11'],
'd3d9': ['d3d9'], 'angle-d3d9': ['d3d9'],
'opengl': ['gl'], 'angle-opengl': ['gl'],
'opengles': ['gles'], 'angle-opengles': ['gles'],
'metal': ['metal'], 'angle-metal': ['metal'],
'vulkan': ['vulkan'], 'angle-vulkan': ['vulkan'],
# Support setting VK_ICD_FILENAMES for swiftshader when requesting # Support setting VK_ICD_FILENAMES for swiftshader when requesting
# the 'vulkan' backend. # the 'vulkan' backend.
'swiftshader': ['swiftshader', 'vulkan'], 'angle-swiftshader': ['swiftshader', 'vulkan'],
} }
current_angle_backend = gpu_helper.GetANGLERenderer(gpu_info) current_angle_backend = gpu_helper.GetANGLERenderer(gpu_info)
if (current_angle_backend not in known_backend_flag_map or if (current_angle_backend not in known_backend_flag_map or
......
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