• Home
  • History
  • Annotate
  • only in /external/deqp/external/openglcts/
NameDateSize

..10-Aug-20184 KiB

.clang-format10-Aug-20185.8 KiB

.gitignore10-Aug-201862

CMakeLists.txt10-Aug-20182.3 KiB

CONTRIBUTING.md10-Aug-20184.1 KiB

data/10-Aug-20184 KiB

docs/10-Aug-20184 KiB

modules/10-Aug-20184 KiB

README.md10-Aug-201836 KiB

scripts/10-Aug-20184 KiB

README.md

1OpenGL and OpenGL ES 2.0/3.X Conformance Test Instructions
2=================
3
4This document describes how to build, port, and run the OpenGL and OpenGL ES
52.0/3.X conformance tests, and how to verify and submit test results.
6
7The Conformance Tests are built on dEQP framework. dEQP documentation is
8available at http://source.android.com/devices/graphics/testing.html
9
10
11Contents
12------------------------
13 - [Test History](#test-history)
14 - [Introduction](#introduction)
15 - [Test Environment Requirements](#test-environment-requirements)
16 - [Configuring and Building the Tests](#configuring-and-building-the-tests)
17    - [Configuration](#configuration)
18    - [Building the Tests](#building-the-tests)
19       - [Windows](#windows)
20       - [Linux](#linux)
21       - [Android](#android)
22 - [Porting](#porting)
23    - [Common Porting Changes](#common-porting-changes)
24    - [Other Allowable Porting Changes](#other-allowable-porting-changes)
25 - [Running the Tests](#running-the-tests)
26    - [Conformance runs](#conformance-runs)
27       - [Linux and Windows](#linux-and-windows)
28       - [Android](#android-1)
29    - [Running Subsets](#running-subsets)
30       - [Command line options](#command-line-options)
31    - [Understanding the Results](#understanding-the-results)
32    - [Test Logs](#test-logs)
33 - [Debugging Test Failures](#debugging-test-failures)
34 - [Waivers](#waivers)
35 - [Creating a Submission Package](#creating-a-submission-package)
36 - [Submission Update Package](#submission-update-package)
37 - [Passing Criteria](#passing-criteria)
38 - [Troubleshooting](#troubleshooting)
39    - [Crashes early on in the run](#crashes-early-on-in-the-run)
40    - [Build fails](#build-fails)
41 - [Adding new tests](#adding-new-tests)
42 - [Acknowledgments](#acknowledgments)
43 - [Revision History](#revision-history)
44
45Test History
46------------------------
47The OpenGL and OpenGL ES Conformance Tests are expanded versions of the
48OpenGL ES 2.x Conformance Test. Much of the development was done by Symbio, Inc.
49under a contract with The Khronos Group. drawElements donated a considerable
50number of new tests and a new execution framework for version 1.1.
51The tests are built from the same source code base, although some individual
52feature tests are specific to OpenGL or OpenGL ES and their specification
53versions, and compilation options differing between OpenGL and OpenGL ES affect
54how the tests are compiled and executed in some cases.
55
56Introduction
57------------------------
58
59This document contains instructions for certifying conformance of implementations
60of the OpenGL and OpenGL ES APIs. The steps of the process are as follows:
61
621. Configure the conformance tests and port them to your platform.
632. Build a test executable and run it against your implementation to produce
64result logs.
653. Debug any test failures and modify your implementation as needed until it
66passes the test.
674. Create a Submission Package containing your final result logs and other
68documents describing the tested platform.
695. Submit the results to the appropriate Review Committee via the
70Khronos Adopters web page. The Committee will examine your submission and will
71notify you within thirty days if they find any issues requiring action on your part.
72
73This document describes each of these steps in detail. It also provides advice
74on reproducing, understanding, and debugging test failures, and discusses how
75to extend or modify the tests and the test framework.
76
77The reader is assumed to be a fluent programmer experienced with command line
78utilities and build tools, such as CMake or Make.
79
80Test Environment Requirements
81------------------------
82
83The conformance tests require a file system. The file system requires support
84for long file names (i.e. > 8.3 name format). Source files in the conformance
85tests use mixed case file names. When the `--verbose` option is used, rendered
86images and test case shaders are copied to the log files. This can lead to quite
87large log files, up to hundreds of megabytes on disk.
88
89Each execution of the conformance test writes a text-format results log to a disk.
90You will need to include this log as part of your conformance submission package.
91
92The conformance test executable can be large. Compiler options and CPU instruction
93sets can cause substantial variation. The disk space required for the build
94including all the temporary files can be up to 400MB.
95
96The build environment is expected to support C++ with exceptions and
97the Standard Template Library (STL).
98
99Configuring and Building the Tests
100------------------------
101The CTS is built via CMake build system. The requirements for the build are as follows:
102- CMake 2.8 or newer, 2.8.8 or newer recommended
103- C++ compiler with STL and exceptions support
104- Unix: Make + GCC / Clang
105- Windows: Visual Studio or Windows SDK (available free-of-charge)
106- Android: Android SDK and NDK for host platform
107
108The build is controlled by the file CMakeLists.txt found at the root of
109the CTS source.
110
111If the platform and compiler tools you use are not supported, you may be able to
112add support for that platform and tools to the build system. If you do this,
113please submit your changes back to Khronos for inclusion in the official tests
114going forward.
115
116Otherwise, if you choose not to use the supplied Makefiles, you must construct
117an equivalent build system for the chosen development environment(s).
118
119### Configuration
120
121The build is configured by using `CMakeLists.txt` files in the build target
122directory (`targets/`).  They specify platform-specific configuration, including
123include paths and link libraries.
124
125The main `CMakeLists.txt` includes the target file based on the `DEQP_TARGET`
126variable. For example `-DDEQP_TARGET=my_target` will use the target description
127file `targets/my_target/my_target.cmake`.
128
129See the main `CMakeLists.txt` file for the description of the variables that
130the target file can set.
131
132Porting to a new platform includes either creating a new target file, or
133modifying an existing target description.
134
135**NOTE**: All paths, except `TCUTIL_PLATFORM_SRCS` are relative to root source
136directory. `TCUTIL_PLATFORM_SRCS` is relative to `framework/platform` directory.
137
138Following target files are provided with the package:
139
140| Name | Description  |
141|:---------|-----------------|
142|android | Used in Android build. Requires use of suitable toolchain file (see `cmake/` directory) |
143|default| Checks for presence of GL, ES2, ES3, and EGL libraries and headers in default search paths and configures build accordingly|
144|null | Null build target |
145|nullws | NullWS build target |
146|x11_egl| X11 build for platforms with native EGL support|
147|x11_glx| X11 build for platforms with native GLX support|
148|x11_egl_glx| X11 build for platforms with native EGL/GLX support|
149
150**Example target file (targets/null/null.cmake):**
151```
152message("*** Using null context target")
153
154set(DEQP_TARGET_NAME "Null")
155
156set(TCUTIL_PLATFORM_SRCS
157	null/tcuNullPlatform.cpp
158	null/tcuNullPlatform.hpp
159	null/tcuNullRenderContext.cpp
160	null/tcuNullRenderContext.hpp
161	null/tcuNullContextFactory.cpp
162	null/tcuNullContextFactory.hpp
163	)
164```
165
166**Common configuration variables and their default values in CMake syntax:**
167
168- Target name
169```
170set(DEQP_TARGET_NAME "UNKNOWN")
171```
172
173- List of link libraries per API.  If no libraries are specified, entry points
174are loaded at run-time by default for OpenGL ES APIs. EGL always requires link
175libraries.  OpenGL always uses run-time loading.
176```
177set(DEQP_GLES2_LIBRARIES   )
178set(DEQP_GLES3_LIBRARIES   )
179set(DEQP_GLES31_LIBRARIES  )
180set(DEQP_GLES32_LIBRARIES  )
181set(DEQP_EGL_LIBRARIES     )
182set(DEQP_OPENGL_LIBRARIES  )
183```
184
185- Generic platform libraries required to link a working OpenGL (ES) Application
186(e.g. X11 libraries on Unix/X11)
187```
188set(DEQP_PLATFORM_LIBRARIES )
189```
190
191- Libraries / binaries that need to be copied to the build target dir
192```
193set(DEQP_PLATFORM_COPY_LIBRARIES )
194```
195
196- If running on Linux using X11 for creating windows etc., enable this.
197```
198set(DEQP_USE_X11 OFF)
199```
200
201- Embed the test files in the test Before building with this set (if GTF module is present), run these commands:
202```
203cd external/kc-cts/src/GTF_ES/glsl/GTF
204perl mergeTestFilesToCSource.pl
205```
206
207 In your target `.cmake` file add
208```
209set(DEQP_EMBED_TESTS ON)
210add_definitions(-DHKEMBEDDEDFILESYSTEM)
211```
212
213### Building the Tests
214
215To build the framework, you need first to download sources for zlib, libpng.
216
217To download sources, run:
218
219	python external/fetch_sources.py
220
221For OpenGL CTS releases, and OpenGL ES CTS releases prior to opengl-es-cts-3.2.4.0
222download Khronos Confidential Conformance Test Suite:
223
224	python external/fetch_kc_cts.py
225
226For OpenGL CTS releases, and OpenGL ES CTS releases prior to opengl-es-cts-3.2.4.0
227the results for the tests included in this suite must be included in a
228conformance submission.
229
230**NOTE**: You need to be a Khronos Adopter and have an active account
231at [Khronos Gitlab](https://gitlab.khronos.org/) to be able to download
232Khronos Confidential CTS.
233It is possible to run and build the CTS without the Khronos Confidential CTS.
234Khronos Confidential CTS is mandatory only if you plan to make a
235conformance submission (see [Creating a Submission Package](#creating-a-submission-package)).
236
237With CMake out-of-source builds are always recommended. Create a build directory
238of your choosing, and in that directory generate Makefiles or IDE project
239using Cmake.
240
241#### Windows
242
243Requirements:
244- Visual Studio (2010 or newer recommended) or Windows SDK
245- CMake 2.8.x Windows native version (i.e. not Cygwin version)
246- For GL/ES2/ES3.x tests: OpengGL, OpenGL ES 2 or ES 3.x libraries and headers
247
248To choose the backend build system for CMake, choose one of the following Generator Names for the
249command line examples in the next steps:
250- VS2010: "Visual Studio 10"
251- VS2012: "Visual Studio 11"
252- NMake (must be run in VS or SDK command prompt): "NMake Makefiles"
253
254Building GL, ES2, or ES3.x conformance tests:
255
256	cmake <path to openglcts> -DDEQP_TARGET=default -G"<Generator Name>"
257	cmake --build .
258
259Khronos Confidential CTS doesn't support run-time selection of API context.
260If you intend to run it you need to additionally supply `GLCTS_GTF_TARGET`
261option to you cmake command, e.g.:
262
263	cmake <path to openglcts> -DDEQP_TARGET=default -DGLCTS_GTF_TARGET=<target> -G"<Generator Name>"
264
265Available `<target>`s are `gles2`, `gles3`, `gles31`, `gles32`, and `gl`.
266The default `<target>` is `gles32`.
267
268It's also possible to build `GL-CTS.sln` in Visual Studio instead of running
269the `cmake --build .` command.
270
271**NOTE**: Do not create the build directory under the source directory
272(i.e anywhere under `<path to openglcts>`) on Windows, since it causes
273random build failures when copying data files around.
274
275**NOTE**: You can use the CMake for Windows GUI to do configuration and project
276file generation.
277
278**NOTE**: If using cygwin, you must install and ensure you use the Windows
279version of cmake. The cygwin vesion does not contain the Visual Studio
280generators. Here is a shell function you can put in your cygwin `.bash_profile`
281to use it easily. With this you can simply type `wcmake` to run the Windows version.
282
283```
284function wcmake () {
285    (TMP=$tmp TEMP=$temp; unset tmp; unset temp; "C:/Program Files (x86)/CMake 2.8/bin/cmake" "$@")
286}
287```
288
289#### Linux
290
291Required tools:
292- Standard build utilities (make, gcc, etc.)
293- CMake 2.8.x
294- Necessary API libraries (OpenGL, GLES, EGL depending on configuration)
295
296Building ES2 or ES3.x conformance tests:
297
298	cmake <path to openglcts> -DDEQP_TARGET=null -DGLCTS_GTF_TARGET=gles32
299	cmake --build .
300
301Building OpenGL conformance tests:
302
303	cmake <path to openglcts> -DDEQP_TARGET=null -DGLCTS_GTF_TARGET=gl
304	cmake --build .
305
306Khronos Confidential CTS doesn't support run-time selection of API context.
307If you intend to run it then the `GLCTS_GTF_TARGET` option is necessary.
308
309Available values for `GLCTS_GTF_TARGET` are `gles2`, `gles3`, `gles31`, `gles32`, and `gl`.
310The default value is `gles32`.
311
312CMake chooses to generate Makefiles by default. Other generators can be used
313as well. See CMake help for more details.
314
315#### Android
316
317The conformance tests come with native Android support. The following packages
318are needed in order to build an Android binary:
319- Python 2.7.x
320- Android NDK r11c
321- Android SDK with API 24 packages and tools installed
322- Apache Ant
323
324An Android binary (for ES 3.2) can be built using command:
325
326	python scripts/android/build_apk.py --target=openglcts --sdk <path to Android SDK> --ndk <path to Android NDK>
327
328If Khronos Confidential CTS is present then the script will set `GLCTS_GTF_TARGET`
329to `gles32` by default.
330It is possible to specify a different `GLCTS_GTF_TARGET` target by invoking the script
331with the `--kc-cts-target` option, e.g.:
332
333	python scripts/android/build_apk.py --target=openglcts --kc-cts-target=gles31 --sdk <path to Android SDK> --ndk <path to Android NDK>
334
335Available values for `--kc-cts-target` are `gles32`, `gles31`, `gles3`, `gles2` and `gl`.
336
337The package can be installed by either running:
338
339	python scripts/android/install_apk.py --target=openglcts
340
341By default the CTS package will contain libdeqp.so built for `armeabi-v7a`, `arm64-v8a`,
342`x86`, and `x86_64` ABIs, but that can be changed with `--abis` command line option.
343
344To pick which ABI to use at install time, following commands must be used
345instead:
346
347	adb install --abi <ABI name> <build root>/Khronos-CTS.apk /data/local/tmp/Khronos-CTS.apk
348
349Porting
350------------------------
351The Conformance Tests have been designed to be relatively platform-, OS-, and
352compiler-independent. Adopters are responsible for final changes needed to allow
353the Test to run on the platform they wish to
354certify as conformant.
355
356### Common Porting Changes
357
358Porting the dEQP framework requires implementation of either `glu::Platform` or,
359on platforms supporting EGL, the `tcu::EglPlatform` interface. The porting layer
360API is described in detail in following files:
361
362	framework/common/tcuPlatform.hpp
363	framework/opengl/gluPlatform.hpp
364	framework/egl/egluPlatform.hpp
365	framework/platform/tcuMain.cpp
366
367This version of the dEQP framework includes ports for Windows (both EGL and WGL),
368X11 (EGL and XGL), and Android.
369
370Base portability libraries in `framework/delibs` seldom need changes. However,
371introducing support for a new compiler or a new processor family may require
372some changes to correctly detect and parameterize the environment.
373
374Porting typically involves three types of changes:
3751. Changes to the make system used to generate the test executable.
3762. Changes needed to adapt the test executable to the operating system used on the platform.
3773. Changes to the platform specific GL and EGL header files.
378
379Changes should normally be confined to build files (CMake or Python) or source
380files (.c, .h, .cpp, and .h files) in the following directories or their
381subdirectories:
382- `framework/platform`
383- `targets`
384
385If you find that you must change other source (.c, .cpp, .h, or .hpp) files,
386you will need to file a waiver as described below.
387
388Note that the conformance tests assume that the implementation supports EGL.
389However EGL is not required for OpenGL or OpenGL ES conformance.
390
391Most of the tests require at least 256x256 pixels resolution in order to run properly
392and produce stable results. It is, therefore, important to ensure that a port to a
393new platform can support surfaces that fulfill width and height requirements.
394
395### Other Allowable Porting Changes
396
397Other than changes needed for porting, the only changes that are permitted are
398changes to fix bugs in the conformance test. A bug in the conformance test is
399a behavior which causes clearly incorrect execution (e.g., hanging, crashing,
400or memory corruption), OR which requires behavior which contradicts or exceeds
401the requirements of the relevant OpenGL or OpenGL ES Specification. Changes
402required to address either of these issues typically require [waivers](#waivers).
403
404Running the Tests
405------------------------
406All the following commands need to be run in the CTS build directory. If you
407need to move the binaries from the build directory, remember to copy the
408data directories named `gl_cts`, `gles2`, `gles3`, and `gles31` and its subdirectories
409from the build directory to the test target in the same relative locations.
410
411If the build instructions have been followed as-is, the correct path is:
412
413	cd <builddir>/external/openglcts/modules
414
415### Conformance runs
416A conformance run can be launched either by running the `cts-runner` binary with
417appropriate options on Linux/Windows or by running an Android application.
418
419### Linux and Windows
420Conformance run for OpenGL ES 3.2 on Windows:
421
422	Debug/cts-runner.exe --type=es32
423	  [For ES 3.1 use --type=es31; ES 3.0 use --type=es3; for ES 2.0, use --type=es2]
424
425Conformance run for OpenGL 3.0 - 4.4 on Windows:
426
427	Debug/cts-runner.exe --type=glxy
428	  [x and y are the major and minor specifiction versions]
429
430Full list of parameters for the `cts-runner` binary:
431```
432--type=[esN[M]|glNM] Conformance test run type. Choose from
433					 ES: es2, es3, es31, es32
434					 GL: gl30, gl31, gl32, gl33, gl40, gl41, gl42, gl43, gl44, gl45
435--logdir=[path]      Destination directory for log files
436--summary            Print summary without running the tests
437--verbose            Print out and log more information
438```
439
440The conformance run will create one or more `.qpa` files per tested config, a
441summary `.qpa` file containing run results and a summary `.xml` file containing
442command line options for each run, all of which should be included in your
443conformance submission package. The final verdict will be printed out at
444the end of run.
445
446Sometimes it is useful to know the command line options used for the conformance
447before the run completed. Full conformance run configuration is written
448to `cts-run-summary.xml` and this file can be generated by adding `--summary`
449parameter.
450
451By default the `cts-runner` does not include result images or shaders used in
452the logs. Adding parameter `--verbose` will cause them to be included in
453the logs. Images will be embedded as PNG data into the`.qpa` log files.
454See Section [Test Logs](#test-logs) for instructions on how to view the images.
455
456To direct logs to a directory, add `--logdir=[path]` parameter.
457
458**NOTE**: Due to the lack of support for run-time selection of API context in the
459Khronos Confidential CTS, a conformance run may fail if it is executed for an API
460version that doesn't match the `GLCTS_GTF_TARGET` value used during the build step.
461
462#### Android
463
464Once the CTS binary is built and installed on the device, a new application
465called `ES3.2 CTS`, `ES3.1 CTS`, `ES3 CTS`, `ES2 CTS`, or `GL4.5 CTS` (depending
466on the test version you built) should appear in the launcher. Conformance test
467runs can be done by launching the applications.
468
469Alternatively it is possible to start a conformance run from the command line,
470for example to launch a GLES 3.2 conformance run use:
471
472	am start -n org.khronos.gl_cts/org.khronos.cts.ES32Activity -e logdir "/sdcard/logs"
473
474For GLES 2.0, GLES 3.0, GLES 3.1, or GL 4.5 conformance runs, substitute the following
475activity name (respectively) ES2Activity, ES3Activity, ES31Activity, or GL45Activity.
476
477Test logs will be written to `/sdcard` by default. The log path can be
478customized by supplying a `logdir` string extra in launch intent. Verbose mode
479can be enabled by supplying a `verbose` = `"true"` string extra. See
480the following example:
481
482	am start -n org.khronos.gl_cts/org.khronos.cts.ES32Activity -e logdir "/sdcard/logs" -e verbose "true"
483
484Conformance run configuration can be generated by supplying a `summary` = `"true"`
485string extra. See the following example:
486
487	am start -n org.khronos.gl_cts/org.khronos.cts.ES32Activity -e logdir "/sdcard/logs" -e summary "true"
488
489**NOTE**: Supplying a `summary` = `"true"` string extra will result in the `cts-run-summary.xml` file
490being written out but no tests will be executed.
491
492Individual tests can be launched as well by targeting
493`org.khronos.gl_cts/android.app.NativeActivity` activity. Command line
494arguments must be supplied in a `cmdLine` string extra. See following example:
495
496	am start -n org.khronos.gl_cts/android.app.NativeActivity -e cmdLine "cts --deqp-case=KHR-GLES32.info.version --deqp-gl-config-id=1 --deqp-log-filename=/sdcard/ES32-egl-config-1.qpa --deqp-surface-width=128 --deqp-surface-height=128"
497
498In addition to the detailed `*.qpa` output files, the Android port of the CTS
499logs a summary of the test run, including the pass/fail status of each test.
500This summary can be viewed using the Android *logcat* utility.
501
502See Section [Running Subsets](#running-subsets) above for details on command
503line parameters.
504
505### Running Subsets
506
507Run shader compiler loop test cases from the OpenGL ES 3.0 CTS using EGL config with ID 3:
508
509	Debug/glcts.exe --deqp-case=KHR-GLES3.shaders.loops.* --deqp-gl-config-id=3
510
511Note that the GL context version is determined by the case name. `KHR-GLES3` in
512the example above selects OpenGL ES 3.0. The command to run the same test
513against OpenGL version 4.1 is:
514
515	Debug/glcts.exe --deqp-case=GL41-CTS.shaders.loops.* --deqp-gl-config-id=3
516
517To list available test cases (writes out `*-cases.txt` files per module), run:
518
519	Debug/glcts.exe --deqp-runmode=txt-caselist
520
521The type of the run for cts-runner chooses a specific list of test cases to
522be run. The selected tests can be checked from the summary logs. To run
523the same tests, just give equivalent test selection parameters to the `glcts`.
524
525#### Command line options
526
527Full list of parameters for the `glcts` binary:
528```
529  -h, --help
530    Show this help
531
532  -n, --deqp-case=<value>
533    Test case(s) to run, supports wildcards (e.g. dEQP-GLES2.info.*)
534
535  --deqp-caselist=<value>
536    Case list to run in trie format (e.g. {dEQP-GLES2{info{version,renderer}}})
537
538  --deqp-caselist-file=<value>
539    Read case list (in trie format) from given file
540
541  --deqp-stdin-caselist
542    Read case list (in trie format) from stdin
543
544  --deqp-log-filename=<value>
545    Write test results to given file
546    default: 'TestResults.qpa'
547
548  --deqp-runmode=[execute|xml-caselist|txt-caselist|stdout-caselist]
549    Execute tests, or write list of test cases into a file
550    default: 'execute'
551
552  --deqp-caselist-export-file=<value>
553    Set the target file name pattern for caselist export
554    default: '${packageName}-cases.${typeExtension}'
555
556  --deqp-watchdog=[enable|disable]
557    Enable test watchdog
558    default: 'disable'
559
560  --deqp-crashhandler=[enable|disable]
561    Enable crash handling
562    default: 'disable'
563
564  --deqp-base-seed=<value>
565    Base seed for test cases that use randomization
566    default: '0'
567
568  --deqp-test-iteration-count=<value>
569    Iteration count for cases that support variable number of iterations
570    default: '0'
571
572  --deqp-visibility=[windowed|fullscreen|hidden]
573    Default test window visibility
574    default: 'windowed'
575
576  --deqp-surface-width=<value>
577    Use given surface width if possible
578    default: '-1'
579
580  --deqp-surface-height=<value>
581    Use given surface height if possible
582    default: '-1'
583
584  --deqp-surface-type=[window|pixmap|pbuffer|fbo]
585    Use given surface type
586    default: 'window'
587
588  --deqp-screen-rotation=[unspecified|0|90|180|270]
589    Screen rotation for platforms that support it
590    default: '0'
591
592  --deqp-gl-context-type=<value>
593    OpenGL context type for platforms that support multiple
594
595  --deqp-gl-config-id=<value>
596    OpenGL (ES) render config ID (EGL config id on EGL platforms)
597    default: '-1'
598
599  --deqp-gl-config-name=<value>
600    Symbolic OpenGL (ES) render config name
601
602  --deqp-gl-context-flags=<value>
603    OpenGL context flags (comma-separated, supports debug and robust)
604
605  --deqp-cl-platform-id=<value>
606    Execute tests on given OpenCL platform (IDs start from 1)
607    default: '1'
608
609  --deqp-cl-device-ids=<value>
610    Execute tests on given CL devices (comma-separated, IDs start from 1)
611    default: ''
612
613  --deqp-cl-build-options=<value>
614    Extra build options for OpenCL compiler
615
616  --deqp-egl-display-type=<value>
617    EGL native display type
618
619  --deqp-egl-window-type=<value>
620    EGL native window type
621
622  --deqp-egl-pixmap-type=<value>
623    EGL native pixmap type
624
625  --deqp-log-images=[enable|disable]
626    Enable or disable logging of result images
627    default: 'enable'
628
629  --deqp-log-shaders=[enable|disable]
630    Enable or disable logging of shaders
631    default: 'enable'
632
633  --deqp-test-oom=[enable|disable]
634    Run tests that exhaust memory on purpose
635    default: 'disable'
636
637  --deqp-egl-config-id=<value>
638    Legacy name for --deqp-gl-config-id
639    default: '-1'
640
641  --deqp-egl-config-name=<value>
642    Legacy name for --deqp-gl-config-name
643```
644
645### Understanding the Results
646
647At the end of a completed test run, a file called `cts-run-summary.xml` is
648generated. It will contain summaries per configuration and the full command
649lines for the `glcts` application
650(See Section [Running Subsets](#running-subsets)) for debugging purposes.
651Additionally, a summary string similar to one below is printed:
652```
6534/4 sessions passed, conformance test PASSED
654```
655
656If the run fails, the message will say `FAILED` instead of `PASSED`. Under
657Linux or Windows, this string is printed to stdout if available. Under Android,
658it is emitted to the Android logging system for access via *logcat*.
659
660Each test case will be logged into the `.qpa` files in XML. Below is a minimal
661example of a test case log. The Result element contains the final verdict in
662the `StatusCode` attribute. Passing cases will have `Pass` and failing cases
663`Fail`. Other results such as `QualityWarning`, `CompatibilityWarning`,
664`NotSupported` or `ResourceError` are possible. Only `Fail` status will count
665as failure for conformance purposes.
666```
667<TestCaseResult Version="0.3.2" CasePath="ES2-CTS.info.vendor" CaseType="SelfValidate">
668    <Text>Vendor A</Text>
669    <Result StatusCode="Pass">Pass</Result>
670</TestCaseResult>
671```
672
673If the failure count is zero for all config sequences, the implementation
674passes the test. Note that in addition to a successful test result,
675a Submission Package must satisfy the conditions specified below under
676[Passing Criteria](#passing-criteria) in order to achieve conformance certification.
677
678### Test Logs
679
680The CTS writes test logs in XML encapsulated in a simple plain-text container
681format. Each tested configuration listed in `cts-run-summary.xml`
682
683To analyse and process the log files, run the following scripts
684- `external/openglcts/scripts/verify_submission.py`: Script that verifies logs based on `cts-run-summary.xml` file.
685- `scripts/log/log_to_csv.py`: This utility converts `.qpa` log into CSV format. This is
686useful for importing results into other systems.
687- `scripts/log/log_to_xml.py`: Converts `.qpa` into well-formed XML document. The document
688can be then viewed in browser using the testlog.{xsl,css} files.
689
690Some browsers, like Chrome, limit local file access. In such case, the files
691must be accessed over HTTP. Python comes with a simple HTTP server suitable
692for the purpose. Run `python -m SimpleHTTPServer` in the directory containing
693the generated XML files and point the browser to `127.0.0.1:8000`.
694
695Parser for the `.qpa` log file format in python is provided in
696`scripts/log/log_parser.py`.
697
698Python scripts require python 2.7 or newer in 2.x series. They are not
699compatible with python 3.x.
700
701Debugging Test Failures
702------------------------
703The best first step is to run the failing test cases via `glcts` executable to
704get the more verbose logs. Use, for example, the `log_to_xml.py` script
705detailed in Section [Test Logs](#test-logs), to view the generated logs.
706If the visual inspection of the logs does not give sufficient hints on the
707nature of the issue, inspecting the test code and stepping through it in
708debugger should help.
709
710Waivers
711------------------------
712The procedure for requesting a waiver is to report the issue by filing a bug
713report in the Gitlab VK GL CTS project
714(https://gitlab.khronos.org/Tracker/vk-gl-cts). When you create your submission
715package, include references to the waivers as described in the adopters' agreement.
716[Fully-qualified links](https://en.wikipedia.org/wiki/Fully_qualified_domain_name)
717to bug reports are highly recommended.
718Including as much information as possible in your bug report will ensure the issue
719can be progressed as speedily as possible. Such bug report must
720include a link to suggested file changes. Issues must be labeled `Waiver` and `OpenGL-ES`
721(for OpenGL ES submissions) or `Waiver` and `OpenGL` (for OpenGL submissions) and
722identify the CTS release tag and affected tests.
723
724Creating a Submission Package
725------------------------
726Please see the [Creating a Submission Package page](https://github.com/KhronosGroup/VK-GL-CTS/wiki/Creating-a-OpenGL-and-OpenGL-ES-Submission-Package).
727
728Submission Update Package
729------------------------
730Please see the [Submission Update Package page](https://github.com/KhronosGroup/VK-GL-CTS/wiki/Submission-Update-Package).
731
732Passing Criteria
733------------------------
734Please see the [Conformance Submission Passing Criteria page](https://github.com/KhronosGroup/VK-GL-CTS/wiki/OpenGL-and-OpenGL-ES-Conformance-Submission-Passing-Criteria).
735
736Troubleshooting
737------------------------
738### Crashes early on in the run
739If using run-time entry point loading, it is possible that not all required
740entry points are available. This will result in `NULL` pointer dereferencing.
741
742### Build fails
743First try re-running the build. If that does not help and you have used the
744same build directory with different version of the CTS, remove the build
745directory and run the CMake again.
746
747Adding new tests
748------------------------
749
750See the [Contribution Guide](CONTRIBUTING.md)
751
752Acknowledgments
753------------------------
754The Khronos Group gratefully acknowledges the support of drawElements Oy,
755who donated a large number of GLSL tests and a new test framework and build system.
756
757The Khronos Group also gratefully acknowledges the support of 3DLabs Inc.,
758who gave permission to use the 3DLabs Graphics Test Framework (GTF).
759
760The first internal version of the test was created by Bruno Schwander of
761Hooked Wireless, under a development contract with the Khronos Group.
762
763Symbio added tests specific to OpenGL and OpenGL ES 3.0.
764
765drawElements added their donated language tests and build system.
766
767The CTS results from these efforts, together with additional hard work by
768volunteers from the OpenGL ES Working Group, the OpenGL ARB Working Group,
769and their member companies, including:
770
771- Sumit Agarwal, Imagination Technologies
772- Eric Anholt, Intel
773- Oleksiy Avramchenko, Sony
774- Anthony Berent, ARM
775- Joseph Blankenship, AMD
776- Jeff Bolz, NVIDIA
777- Pierre Boudier, AMD
778- Benji Bowman, Imagination Technologies
779- Pat Brown, NVIDIA
780- David Cairns, Apple
781- Mark Callow, ArtSpark
782- Antoine Chauveau, NVIDIA
783- Aske Simon Christensen, ARM
784- Lin Chen, Qualcomm
785- Mathieu Comeau, QNX
786- Graham Connor, Imagination Technologies
787- Slawomir Cygan, Intel
788- Piotr Czubak, Intel
789- Piers Daniell, NVIDIA
790- Matthias Dejaegher, ZiiLabs
791- Chris Dodd, NVIDIA
792- David Donohoe, Movidius
793- Alex Eddy, Apple
794- Sean Ellis, ARM
795- Bryan Eyler, NVIDIA
796- Erik Faye-Lund, ARM
797- Nicholas FitzRoy-Dale, Broadcom
798- Michael Frydrych, NVIDIA
799- Toshiki Fujimori, Takumi
800- David Garcia, Qualcomm
801- Frido Garritsen, Vivante
802- Klaus Gerlicher, NVIDIA
803- Slawomir Grajewski, Intel
804- Jonas Gustavsson, Sony
805- Nick Haemel, NVIDIA
806- Matthew Harrison, Imagination Technologies
807- Pyry Haulos, drawElements
808- Jim Hauxwell, Broadcom
809- Valtteri Heikkil, Symbio
810- Tsachi Herman, AMD
811- Mathias Heyer, NVIDIA
812- Atsuko Hirose, Fujitsu
813- Ari Hirvonen, NVIDIA
814- Rune Holm, ARM
815- Jaakko Huovinen, Nokia
816- James Jones, Imagination Technologies
817- Norbert Juffa, NVIDIA
818- Jordan Justen, Intel
819- Sandeep Kakarlapudi, ARM
820- Anssi Kalliolahti, NVIDIA
821- Philip Kamenarsky, NVIDIA
822- Krzysztof Kaminski, Intel
823- Daniel Kartch, NVIDIA
824- Maxim Kazakov, DMP
825- Jon Kennedy, 3DLabs
826- John Kessenich
827- Daniel Koch, NVIDIA
828- Benjamin Kohler-Crowe, NVIDIA
829- Georg Kolling, Imagination Technologies
830- Misa Komuro, DMP
831- Boguslaw Kowalik, Intel
832- Aleksandra Krstic, Qualcomm
833- Karol Kurach, NVIDIA
834- VP Kutti
835- Sami Kyostila, Google
836- Teemu Laakso, Symbio
837- Antoine Labour, Sony
838- Alexandre Laurent, Imagination Technologies
839- Jon Leech, Khronos
840- Graeme Leese, Broadcom
841- I-Gene Leong, Intel
842- Radoslava Leseva, Imagination Technologies
843- Jake Lever, NVIDIA
844- Fred Liao, MediaTek
845- Bill Licea-Kane, Qualcomm
846- Benj Lipchak, Apple
847- Wayne Lister, Imagination Technologies
848- Isaac Liu, NVIDIA
849- Weiwan Liu, NVIDIA
850- Zhifang Long, Marvell
851- Toni L&#246;nnberg, AMD
852- Erik Lovlie
853- Christer Lunde, ARM
854- Zong-Hong Lyu, DMP
855- Daniel Mahashin, NVIDIA
856- Rob Matthesen, NVIDIA
857- Tom McReynolds, NVIDIA (CTS TSG Chair, ES 1.1)
858- Bruce Merry, ARM
859- Assif Mirza, Imagination Technologies
860- Zhenyao Mo, Google
861- Kazuhiro Mochizuki, Fujitsu
862- Affie Munshi, Apple
863- Yeshwant Muthusamy, Samsung
864- Mirela Nicolescu, Broadcom
865- Glenn Nissen, Broadcom
866- Michael O'Hara, AMD
867- Eisaku Ohbuchi, DMP
868- Tom Olson, ARM
869- Tapani Palli, Intel
870- Brian Paul, VMWare
871- Remi Pedersen, ARM
872- Adrian Peirson, ARM
873- Russell Pflughaupt, NVIDIA
874- Anuj Phogat, Intel
875- Tero Pihlajakoski, Nokia
876- Peter Pipkorn, NVIDIA
877- Acorn Pooley, NVIDIA
878- Guillaume Portier, ArtSpark
879- Greg Prisament, Lychee Software
880- Jonathan Putsman, Imagination Technologies
881- Mike Quinlan, AMD
882- Tarik Rahman, CodePlay
883- Kalle Raita, drawElements
884- Daniel Rakos, AMD
885- Manjunatha Ramachandra
886- John Recker, NVIDIA
887- Maurice Ribble, Qualcomm (CTS TSG Chair, ES 2.0)
888- James Riordon, Khronos
889- Lane Roberts, Samsung
890- Ian Romanick, Intel
891- Greg Roth, NVIDIA
892- Kenneth Russell, Google
893- Matteo Salardi, Imagination Technologies
894- Jeremy Sandmel, Apple
895- Shusaku Sawato, DMP
896- Chris Scholtes, Fujitsu
897- Mathias Schott, NVIDIA
898- Bruno Schwander, Hooked Wireless
899- Graham Sellers, AMD
900- Shereef Shehata, Texas Instruments
901- Benjamin Shen, Vivante
902- Robert Simpson, Qualcomm
903- Stuart Smith, Imagination Technologies
904- Janusz Sobczak, Mobica
905- Jacob Strom, Ericsson
906- Timo Suoranta, Broadcom
907- Jan Svarovsky, Ideaworks3D
908- Anthony Tai, Apple
909- Payal Talati, Imagination Technologies
910- Gregg Tavares, Google
911- Ross Thompson, NVIDIA
912- Jeremy Thorne, Broadcom
913- Jani Tikkanen, Symbio
914- Antti Tirronen, Qualcomm (CTS TSG Chair, ES 3.0/3.1)
915- Robert Tray, NVIDIA
916- Matt Turner, Intel
917- Eben Upton, Broadcom
918- Jani Vaarala, Nokia
919- Dmitriy Vasilev, NVIDIA
920- Chad Versace, Intel
921- Holger Waechtler, Broadcom
922- Joerg Wagner, ARM
923- Jun Wang, Imagination Technologies
924- Yuan Wang, Imagination Technologies
925- Hans-Martin Will
926- Ewa Wisniewska, Mobica
927- Dominik Witczak, Mobica
928- Oliver Wohlmuth, Fujitsu
929- Yanjun Zhang, Vivante
930- Lefan Zhong, Vivante
931- Jill Zhou
932- Marek Zylak, NVIDIA
933- Iliyan Dinev, Imagination Technologies
934- James Glanville, Imagination Technologies
935- Mark Adams, NVIDIA
936- Alexander Galazin, ARM
937- Riccardo Capra, ARM
938- Lars-Ivar Simonsen, ARM
939- Fei Yang, ARM
940
941Revision History
942------------------------
943- 0.0 - Tom Olson
944
945  Initial version cloned from `ES2_Readme`, plus feedback from Mark Callow.
946
947- 0.2 - Tom Olson
948
949  Modified to incorporate feedback in bug 8534.
950
951- 0.3 - Jon Leech
952
953  Added details for OpenGL Conformance.
954
955- 0.4 - Jon Leech 2012/10/31
956
957  Add configuration & build section, and table of contents
958
959- 0.5 - Jon Leech 2012/10/31
960
961  Fix typos noted by Mark Callow in bug 8534.
962
963- 0.6 - Jon Leech 2012/11/13
964
965  Discuss automatic version selection and document support for OpenGL 3.3-4.3.
966
967- 0.7 - Jon Leech 2012/11/14
968
969  Minor cleanup for GL version numbers per Bug 8534 comment #41.
970
971- 0.8 - Tom Olson 2013/1/25
972
973  Updated GL status in preparation for ES 3.0 release, removed display
974  parameters from product description, and removed mention of sample submission.
975
976- 0.9 - Jon Leech 2013/07/17
977
978  Restore GL-specific details in preparation for initial GL CTS release.
979
980- 1.0 - Jon Leech 2013/07/17
981
982  Change references to Visual Studio 11 to Visual Studio 2012 per bug 9862.
983  Reset change tracking to reduce clutter.
984
985- 1.1 - Kalle Raita 2013/10/30
986
987  Updated documentation after the integration of the drawElements framework and
988  language tests.
989
990- 1.2 - Kalle Raita 2013/12/03
991
992  Removed TODOs, added some notes on further development, and notes on file
993  dependencies. Exact list of directory sub-trees that can be modified during porting.
994
995- 1.3 - Tom Olson 2014/05/27
996
997  Updates for ES CTS 3.1.1.0 . Added Passing Criteria, updated examples to
998  include 3.1 versioning, and updated Acknowledgements.
999
1000- 1.4 - Alexander Galazin 2016/05/12
1001
1002  Updates for ES CTS 3.2.1.0.
1003
1004- 2.0 - Alexander Galazin 2016/09/23
1005
1006  Moved the contents to README.md.
1007  Updated to reflect new CTS structure and build instructions.
1008
1009- 2.1 - Alexander Galazin 2016/12/15
1010
1011  Updates in preparation for the new release.
1012  Document restructuring, more detailed process of creating a submission package.
1013  Incorporated OpenGL/CTS issue 39 and 40 in the Passing Criteria.
1014