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

Side by Side Diff: content/test/gpu/page_sets/gpu_process_tests.py

Issue 1874643003: Do not lose secondary gpus and make sure to have an active gpu on multiple gpu configurations (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: 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 unified diff | Download patch
« no previous file with comments | « content/browser/gpu/gpu_data_manager_impl_private.cc ('k') | gpu/config/gpu_info_collector.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright 2014 The Chromium Authors. All rights reserved. 1 # Copyright 2014 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 import sys 4 import sys
5 from telemetry.story import story_set as story_set_module 5 from telemetry.story import story_set as story_set_module
6 from telemetry.page import page_test 6 from telemetry.page import page_test
7 7
8 from gpu_tests import gpu_test_base 8 from gpu_tests import gpu_test_base
9 9
10 class GpuProcessSharedPageState(gpu_test_base.GpuSharedPageState): 10 class GpuProcessSharedPageState(gpu_test_base.GpuSharedPageState):
11 11
12 gpu_switches = ['--gpu-no-complete-info-collection', 12 gpu_switches = ['--gpu-no-complete-info-collection',
13 '--gpu-testing-os-version', 13 '--gpu-testing-os-version',
14 '--gpu-testing-vendor-id', 14 '--gpu-testing-vendor-id',
15 '--gpu-testing-device-id', 15 '--gpu-testing-device-id',
16 '--gpu-testing-secondary-vendor-id',
17 '--gpu-testing-secondary-device-id',
16 '--gpu-testing-gl-vendor', 18 '--gpu-testing-gl-vendor',
17 '--gpu-testing-gl-renderer', 19 '--gpu-testing-gl-renderer',
18 '--gpu-testing-gl-version'] 20 '--gpu-testing-gl-version']
19 21
20 def __init__(self, test, finder_options, story_set): 22 def __init__(self, test, finder_options, story_set):
21 super(GpuProcessSharedPageState, self).__init__( 23 super(GpuProcessSharedPageState, self).__init__(
22 test, finder_options, story_set) 24 test, finder_options, story_set)
23 options = finder_options.browser_options.extra_browser_args 25 options = finder_options.browser_options.extra_browser_args
24 26
25 # Clear all existing gpu testing switches. 27 # Clear all existing gpu testing switches.
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
198 % (workaround, browser_list)) 200 % (workaround, browser_list))
199 201
200 gpu_list = tab.EvaluateJavaScript( \ 202 gpu_list = tab.EvaluateJavaScript( \
201 'chrome.gpuBenchmarking.getGpuDriverBugWorkarounds()') 203 'chrome.gpuBenchmarking.getGpuDriverBugWorkarounds()')
202 if not workaround in gpu_list: 204 if not workaround in gpu_list:
203 print 'Test failed. Printing page contents:' 205 print 'Test failed. Printing page contents:'
204 print tab.EvaluateJavaScript('document.body.innerHTML') 206 print tab.EvaluateJavaScript('document.body.innerHTML')
205 raise page_test.Failure('%s missing in GPU process workarounds: %s' \ 207 raise page_test.Failure('%s missing in GPU process workarounds: %s' \
206 % (workaround, gpu_list)) 208 % (workaround, gpu_list))
207 209
210 class IdentifyActiveGpuSharedPageState(GpuProcessSharedPageState):
211 def __init__(self, test, finder_options, story_set):
212 super(IdentifyActiveGpuSharedPageState, self).__init__(
213 test, finder_options, story_set)
214 options = finder_options.browser_options
215
216 if sys.platform in ('cygwin', 'win32') or sys.platform.startswith('linux'):
217 options.AppendExtraBrowserArgs('--gpu-testing-vendor-id=0x1002')
218 options.AppendExtraBrowserArgs('--gpu-testing-device-id=0x6779')
219 options.AppendExtraBrowserArgs('--gpu-testing-secondary-vendor-id=0x10de')
220 options.AppendExtraBrowserArgs('--gpu-testing-secondary-device-id=0x0de1')
Ken Russell (switch to Gerrit) 2016/04/14 01:54:59 A machine with both AMD and NVIDIA GPUs isn't a re
Julien Isorce Samsung 2016/04/14 18:02:47 Make sense I do not remember why I put AMD instead
221 options.AppendExtraBrowserArgs('--gpu-testing-gl-vendor=nouveau')
222
223 class IdentifyActiveGpuPage(gpu_test_base.PageBase):
224
225 def __init__(self, story_set, expectations):
226 super(IdentifyActiveGpuPage, self).__init__(
227 url='chrome:gpu',
228 name='GpuProcess.identify_active_gpu',
229 page_set=story_set,
230 shared_page_state_class=IdentifyActiveGpuSharedPageState,
231 expectations=expectations)
232
233 def Validate(self, tab, results):
234 basic_infos = tab.EvaluateJavaScript('browserBridge.gpuInfo.basic_info')
235 active_gpu = []
236 inactive_gpus = []
237 index = 0
238 for info in basic_infos:
239 description = info['description']
240 value = info['value']
241 if description.startswith('GPU%d' % index) and value.startswith('VENDOR'):
242 if value.endswith('*ACTIVE*'):
243 active_gpu.append(value)
244 else:
245 inactive_gpus.append(value)
246 index += 1
247
248 print active_gpu, inactive_gpus
249
250 if len(active_gpu) != 1 or \
251 active_gpu[0] != 'VENDOR = 0x10de, DEVICE= 0x0de1 *ACTIVE*':
252 raise page_test.Failure('Active GPU field is wrong %s' % active_gpu)
253
254 if len(inactive_gpus) != 1 or \
255 inactive_gpus[0] != 'VENDOR = 0x1002, DEVICE= 0x6779':
256 raise page_test.Failure('Inactive GPU field is wrong %s' % inactive_gpus)
257
208 class GpuProcessTestsStorySet(story_set_module.StorySet): 258 class GpuProcessTestsStorySet(story_set_module.StorySet):
209 259
210 """ Tests that accelerated content triggers the creation of a GPU process """ 260 """ Tests that accelerated content triggers the creation of a GPU process """
211 261
212 def __init__(self, expectations): 262 def __init__(self, expectations):
213 super(GpuProcessTestsStorySet, self).__init__( 263 super(GpuProcessTestsStorySet, self).__init__(
214 serving_dirs=set(['../../../../content/test/data'])) 264 serving_dirs=set(['../../../../content/test/data']))
215 265
216 urls_and_names_list = [ 266 urls_and_names_list = [
217 ('file://../../data/gpu/functional_canvas_demo.html', 267 ('file://../../data/gpu/functional_canvas_demo.html',
218 'GpuProcess.canvas2d'), 268 'GpuProcess.canvas2d'),
219 ('file://../../data/gpu/functional_3d_css.html', 269 ('file://../../data/gpu/functional_3d_css.html',
220 'GpuProcess.css3d'), 270 'GpuProcess.css3d'),
221 ('file://../../data/gpu/functional_webgl.html', 271 ('file://../../data/gpu/functional_webgl.html',
222 'GpuProcess.webgl') 272 'GpuProcess.webgl')
223 ] 273 ]
224 274
225 for url, name in urls_and_names_list: 275 for url, name in urls_and_names_list:
226 self.AddStory(GpuProcessTestsPage(url, name, self, expectations)) 276 self.AddStory(GpuProcessTestsPage(url, name, self, expectations))
227 277
228 self.AddStory(FunctionalVideoPage(self, expectations)) 278 self.AddStory(FunctionalVideoPage(self, expectations))
229 self.AddStory(GpuInfoCompletePage(self, expectations)) 279 self.AddStory(GpuInfoCompletePage(self, expectations))
230 self.AddStory(NoGpuProcessPage(self, expectations)) 280 self.AddStory(NoGpuProcessPage(self, expectations))
231 self.AddStory(SoftwareGpuProcessPage(self, expectations)) 281 self.AddStory(SoftwareGpuProcessPage(self, expectations))
232 self.AddStory(SkipGpuProcessPage(self, expectations)) 282 self.AddStory(SkipGpuProcessPage(self, expectations))
233 self.AddStory(DriverBugWorkaroundsInGpuProcessPage(self, expectations)) 283 self.AddStory(DriverBugWorkaroundsInGpuProcessPage(self, expectations))
284 self.AddStory(IdentifyActiveGpuPage(self, expectations))
234 285
235 @property 286 @property
236 def allow_mixed_story_states(self): 287 def allow_mixed_story_states(self):
237 # Return True here in order to be able to run pages with different browser 288 # Return True here in order to be able to run pages with different browser
238 # command line arguments. 289 # command line arguments.
239 return True 290 return True
OLDNEW
« no previous file with comments | « content/browser/gpu/gpu_data_manager_impl_private.cc ('k') | gpu/config/gpu_info_collector.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698