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