Autotest Graphics Documentation
Keywords: This testing document describes how to run GLBench, TearTest, Piglit, WebGLConformance and other tests and benchmarks on ChromeOS and ChromiumOS devices.
Source code location
Python sources are under src/
| drwxr-xr-x | - | graphics_GLAPICheck | tree | history |
| drwxr-xr-x | - | graphics_GLBench | tree | history |
| drwxr-xr-x | - | graphics_O3DSelenium | tree | history |
| drwxr-xr-x | - | graphics_SanAngeles | tree | history |
| drwxr-xr-x | - | graphics_TearTest | tree | history |
| drwxr-xr-x | - | graphics_WebGLConformance | tree | history |
| drwxr-xr-x | - | graphics_WindowManagerGraphicsCapture | tree | history |
Binary dependencies are under src/
| drwxr-xr-x | - | glbench-images | tree | history |
| drwxr-xr-x | - | glbench | tree | history |
| drwxr-xr-x | - | piglit | tree | history |
A note on building binaries
The ebuild system knows if a target knows either OpenGL or OpenGL ES, or even
both. If only pre-compiled binaries are used there should not be much of a
problem with running tests. When editing tests after using the cros_workon
script the default system behavior is to recompile the binaries once more
without invoking the ebuild system. Unfortunately this means USE="opengles"
flags are not honored. Instead the easy way is to specify the proper switch via
am environment variable GRAPHICS_BACKEND=OPENGLES./
Autotest graphics_GLAPICheck
- two different binaries can be made
-- GRAPHICS_BACKEND=OPENGL or OPENGLES
-
runs 25 seconds
-
sample results
-
for OPENGL creates output below and parses some samples in python to see if they are there and if SUCCEED: run to the end is there
GL_VERSION = 3.2.0 NVIDIA 195.36.24
GL_EXTENSIONS = GL_ARB_color_buffer_float GL_ARB_compatibility GL_ARB_copy_buffer GL_ARB_depth_buffer_float GL_ARB_depth_clamp GL_ARB_depth_texture GL_ARB_draw_buffers GL_ARB_draw_elements_base_vertex [...] NV-GLX NV-CONTROL Generic
Event Extension SHAPE MIT-SHM XInputExtension XTEST BIG-REQUESTS SYNC XKEYBOARD XC-MISC SECURITY XINERAMA XFIXES RENDER RANDR XINERAMA Composite DAMAGE
SUCCEED: run to the end
Sample output
(cros-chroot) ihf@ql ~/
Initiating first contact with remote host
[...]
INFO : Test results:
graphics_GLAPICheck PASS
graphics_GLAPICheck/
Total PASS: 2/
No crashes detected during testing.
Elapsed time: 0m25s
Autotest graphics_GLBench
-
draws green/
ref/ purple/ fractal rectangles -
runs about 5 minutes
This benchmark executes glbench, a graphics benchmark designed to time how long
various graphic intensive activities take, which includes measuring:
-
fill rate
-
blended
-
opaque
-Z reject rate
-triangle rate
-
no cull
-
half cull (half triangles backface culled)
-
full cull (mix of back face and degenerates)
-
blend rate
-
texture fetch
-
nearest
-
bilinear
-
trilinear
-
compute
-
vertex shader
-
pixel shader
-
*fragement shader to test ddx and ddy
-
attribute fetch
-
color depth stencil test
-
*state change
-
texture upload
-
read back
-
does MD5 checksums of some but not all images
-- deps/
-- can be re-generated with -save option
Sample output
(cros-chroot) ihf@ql ~/
[...]
INFO : Test results:
graphics_GLBench PASS
graphics_GLBench/
1280x768_fps_compositing 11.18
1280x768_fps_no_fill_compositing 41.96
mpixels_sec_clear_color 490.74
mpixels_sec_clear_colordepth 323.88
mpixels_sec_clear_colordepthstencil 281.45
mpixels_sec_clear_depth 969.71
mpixels_sec_clear_depthstencil 647.34
mpixels_sec_fill_solid 285.1
mpixels_sec_fill_solid_blended 128.55
mpixels_sec_fill_solid_depth_neq 973.2
mpixels_sec_fill_solid_depth_never 1189.08
mpixels_sec_fill_tex_bilinear 149.56
mpixels_sec_fill_tex_nearest 203.7
mpixels_sec_fill_tex_trilinear_linear_01 164.63
mpixels_sec_fill_tex_trilinear_linear_04 nan
mpixels_sec_fill_tex_trilinear_linear_05 nan
mpixels_sec_fill_tex_trilinear_nearest_05 nan
mpixels_sec_pixel_read 6.72
mpixels_sec_pixel_read_2 6.72
mpixels_sec_pixel_read_3 6.74
mpixels_sec_varyings_shader_1 270.68
mpixels_sec_varyings_shader_2 144.33
mpixels_sec_varyings_shader_4 73.57
mpixels_sec_varyings_shader_8 24.29
mpixels_sec_yuv_shader_1 nan
mpixels_sec_yuv_shader_2 47.82
mpixels_sec_yuv_shader_3 93.36
mpixels_sec_yuv_shader_4 136.15
mtexel_sec_texture_update_teximage2d_1024 149.85
mtexel_sec_texture_update_teximage2d_128 80.92
mtexel_sec_texture_update_teximage2d_1536 146.05
mtexel_sec_texture_update_teximage2d_2048 149.47
mtexel_sec_texture_update_teximage2d_256 132.51
mtexel_sec_texture_update_teximage2d_32 10.29
mtexel_sec_texture_update_teximage2d_512 142.05
mtexel_sec_texture_update_teximage2d_768 147.56
mtexel_sec_texture_update_texsubimage2d_1024 150.94
mtexel_sec_texture_update_texsubimage2d_128 81.59
mtexel_sec_texture_update_texsubimage2d_1536 147.2
mtexel_sec_texture_update_texsubimage2d_2048 149.03
mtexel_sec_texture_update_texsubimage2d_256 130.59
mtexel_sec_texture_update_texsubimage2d_32 10.09
mtexel_sec_texture_update_texsubimage2d_512 113.54
mtexel_sec_texture_update_texsubimage2d_768 150.0
mtri_sec_triangle_setup 30.34
mtri_sec_triangle_setup_all_culled 49.89
mtri_sec_triangle_setup_half_culled 44.91
mvtx_sec_attribute_fetch_shader 149.51
mvtx_sec_attribute_fetch_shader_2_attr 149.34
mvtx_sec_attribute_fetch_shader_4_attr 141.36
mvtx_sec_attribute_fetch_shader_8_attr 106.71
us_swap_swap 19464.19
Total PASS: 2/
No crashes detected during testing.
Elapsed time: 8m58s
>>> Details stored under /tmp/
The "nan" in this example are passed because of knownbad output images. For more more details and failures look at
(cros-chroot) ihf@ql ~/
Note on HW Qual failures
Sometimes when site_tests/
Autotest graphics_O3DSelenium
-
tries to run O3D tests inside of chrome
-
failed to run and is known to be broken
Autotest graphics_Piglit
-
tests OpenGL implementation. Does not currently work on OpenGL ES only systems like Tegra2
-
about 1000-2000 targeted subtests
-
usually a few hundred failures
-
mostly care about counts of passes/
failures over time like perf test -
runs about 12-18 minutes, but initial copying dep-piglit.tar.bz2 takes 5-10 minutes that seem like a hang. Need to fix this.
-
generates html page with detailed results in
/tmp/
- can compare two test runs against each other via
./
-
can be build locally from piglit.tar.gz via cmake .;make
-
the numbers of passes does fluctuate by about 10 over time, so some intermittency
-
about 10 test binaries crash and are blocklisted to not be reported
-
sometimes (1 in about 2 weeks of test runs) fbo_depth_sample_compare takes gpu/
system with it when it crashes
2011-05-04T11:06:02.995237-07:00 localhost kernel: [ 75.994363]
fbo-depth-sampl[4250]: segfault at 0 ip (null) sp 7fc7abac error 14 in
card0[75f97000+4000] 2011-05-04T11:06:03.040387-07:00 localhost
crash_reporter[4251]: Received crash notification for
fbo-depth-sample-compare[4250] sig 11 (developer build - not testing - always
dumping) 2011-05-04T11:06:03.234936-07:00 localhost crash_reporter[4251]:
Stored minidump to
/var/
Sample output
(cros-chroot) ihf@ql ~/
[...]
INFO : Test results:
graphics_Piglit PASS
graphics_Piglit/
count_subtests_fail 239
count_subtests_pass 1040
count_subtests_skip 687
count_subtests_warn 14
Total PASS: 2/
No crashes detected during testing.
Elapsed time: 13m31s
>>> Details stored under /tmp/
Point browser to
/tmp/
Autotest graphics_SanAngeles
- draws a bunch of very coarse 3d models
This test runs the San Angeles Observation GPU benchmark. This benchmark uses
a minimal and portable framework to generate a small demo program. It exercises
basic features of OpenGL like vertex arrays, color arrays, and lighting. It
also uses objects generated using procedural algorithms.
This test is a benchmark. It will fail if it fails to complete.
Sample output
(cros-chroot) ihf@ql ~/
[...]
INFO : Test results:
graphics_SanAngeles PASS
graphics_SanAngeles/
frames_per_sec_rate_san_angeles 2.1
Total PASS: 2/
No crashes detected during testing.
Elapsed time: 2m17s
>>> Details stored under /tmp/
Autotest graphics_TearTest
-
copies glbench as dependency over
-
runs deps/
glbench/ teartest -
This test will fail if there is tearing in the two vertical lines that are
scrolling horizontally.
This is a semi-automated test that displays vertical lines scrolling
horizontally and asks the user if tearing was observed. Three variants are
available:
* using uniform update. This tests that glSwapInterval function performs as
expected.
* using full texture update. This tests that CPU-GPU interaction is properly
synchronized in the driver.
* using pixmap to texture extension. This tests that pixmap to texture
extension is properly synchronized.
Sample output
(cros-chroot) ihf@ql ~/
[...] - some user interaction
INFO : Test results:
graphics_TearTest PASS
graphics_TearTest/
Total PASS: 2/
No crashes detected during testing.
Elapsed time: 1m26s
>>> Details stored under /tmp/
Autotest graphics_WebGLConformance
This test runs the WebGL conformance tests:
http://www.khronos.org/
-
currently uses release version 1.0.0
-
opens copy of above website in chrome and executes the html page with hundreds of targeted tests
-
all suite tests must pass, but there is the ability to waive failures in the python script
-
javascript is patched to report individual results
-
suite is currently blocked in autotest regression runs by hangs/
crashes in browser
Sample output
Doesn't compile any code, so no GRAPHICS_BACKEND needed (but no harm in using
it). When the browser doesn't crash/
(cros-chroot) ihf@ql ~/
[...]
INFO : Test results:
graphics_WebGLConformance PASS
graphics_WebGLConformance/
count_tests_fail 352
count_tests_pass 5064
count_tests_timeout 2
waived_url_000
conformance/
waived_url_001 conformance/
waived_url_002 conformance/
waived_url_003 conformance/
waived_url_004 conformance/
waived_url_005 conformance/
waived_url_006 conformance/
waived_url_007 conformance/
waived_url_008 conformance/
waived_url_009 conformance/
waived_url_010 conformance/
waived_url_011 conformance/
waived_url_012 conformance/
waived_url_013 conformance/
waived_url_014 conformance/
waived_url_015 conformance/
waived_url_016 conformance/
waived_url_017 conformance/
waived_url_018 conformance/
Total PASS: 2/
Crashes detected during testing:
chrome sig 6
graphics_WebGLConformance/
Total unique crashes: 1
>>> Details stored under /tmp/
Autotest graphics_WindowManagerGraphicsCapture
-
This test verifies the window manager can capture graphics from applications.
-
This test fails if application screen shots cannot capture the screen output.
-
draws less than 10 full screen color frames of a dot/
sphere -
copies dep-glbench.tar.bz2 as dependency over
-
runs deps/
glbench/ windowmanagertest -
converts/
resizes images to 100x100 pixels -
runs perceptualdiff to compare with reference images
-
runs about 30 seconds
-
fairly stable test
Sample Output
ihf@ql ~/
[...]
INFO : Test results:
graphics_WindowManagerGraphicsCapture PASS
graphics_WindowManagerGraphicsCapture/
Total PASS: 2/
No crashes detected during testing.
Elapsed time: 0m36s
>>> Details stored under /tmp/