page.title=OpenGL ES testing
@jd:body

<!--
    Copyright 2015 The Android Open Source Project

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

        http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-->

<div id="qv-wrapper">
  <div id="qv">
    <h2>In this document</h2>
    <ol id="auto-toc">
    </ol>
  </div>
</div>


<p>AOSP includes the drawElements Quality Program (deqp) GPU testing suite at
<a href="https://android.googlesource.com/platform/external/deqp">https://android.googlesource.com/platform/external/deqp</a>.
</p>

<p>To work with the latest submitted code, use the
<code>deqp-dev</code> branch. For code that matches a specific Android CTS
release, use the <code><em>release-code-name</em>-release</code> branch (e.g.
for Android 6.0, use the <code>marshmallow-release</code> branch).</p>

<h2 id=deploying_deqp>Deploying deqp</h2>

<p>To deploy the deqp test suite to a new environment, review all pages in this
section:</p>
<ul>
<li><a href="{@docRoot}devices/graphics/build-tests.html">Building test
programs</a>. Discusses build systems such as CMake, targets, and various builds
(Win32, Android, Linux).</li>
<li><a href="{@docRoot}devices/graphics/port-tests.html">Porting the test
framework</a>. Describes adapting base portability libraries, implementing
test-framework platform-integration interfaces, and porting the
execution service. Porting is optional (depending on the target platform).</li>
<li><a href="{@docRoot}devices/graphics/run-tests.html">Running the tests</a>.
Provides instructions for running deqp tests in Linux and Windows environments,
command line arguments, and the Android package.</li>
<li><a href="{@docRoot}devices/graphics/automate-tests.html">Automating the
tests</a>. Covers test automation options, command line tools, CSV and XML
exporting, and conversion to JUnit.</li>
<li><a href="{@docRoot}devices/graphics/test-groups.html">Using special test
groups</a>. Provides advice for running memory allocation and long-running
stress tests.</li>
<li><a href="{@docRoot}devices/graphics/cts-integration.html">Integrating with
Android CTS</a>. Describes the <code>mustpass</code> list of tests, duplicating
runs, and mapping CTS results.</li>
</ul>

<h2 id=source_layout>Source layout</h2>

<p>The source code layout for the deqp test modules and supporting libraries is
shown in the table below (the listing is not comprehensive but highlights the
most important directories).</p>

<table>
 <tr>
   <th>Directory</th>
   <th>Description</th>
 </tr>
 <tr>
    <td><code>android</code></td>
    <td><p>Android tester sources and build scripts</p></td>
 </tr>
 <tr>
    <td><code>data</code></td>
<td><p>Test data files</p>
</td>
 </tr>
 <tr>
    <td><code>modules</code></td>
<td><p>Test module sources</p>
</td>
 </tr>
 <tr>
    <td><code>
        modules/egl</code></td>
<td><p>EGL module</p>
</td>
 </tr>
 <tr>
    <td><code>
        modules/gles2</code></td>
<td><p>GLES2 module</p>
</td>
 </tr>
 <tr>
    <td><code>
        modules/gles3</code></td>
<td><p>GLES3 module</p>
</td>
 </tr>
 <tr>
    <td><code>
        modules/gles31</code></td>
<td><p>GLES3.1 module</p>
</td>
 </tr>
  <tr>
    <td><code>
        modules/gles32</code></td>
<td><p>GLES3.2 module</p>
</td>
 </tr>
 <tr>
    <td><code>targets</code></td>
<td><p>Target-specific build configuration files</p>
</td>
 </tr>
 <tr>
    <td><code>framework</code></td>
<td><p>deqp test module framework and utilities</p>
</td>
 </tr>
 <tr>
    <td><code>
        framework/delibs</code></td>
<td><p>Base portability and build libraries</p>
</td>
 </tr>
 <tr>
    <td><code>
        framework/platform</code></td>
<td><p>Platform ports</p>
</td>
 </tr>
 <tr>
    <td><code>
        framework/qphelper</code></td>
<td><p>Test program integration library (C)</p>
</td>
 </tr>
 <tr>
    <td><code>
        framework/common</code></td>
<td><p>Deqp framework (C++)</p>
</td>
 </tr>
 <tr>
    <td><code>
        framework/opengl, framework/egl</code></td>
<td><p>API-specific utilities</p>
</td>
 </tr>
 <tr>
    <td><code>
execserver</code></td>
<td><p>Device-side ExecServer source</p>
</td>
 </tr>
 <tr>
    <td><code>
executor</code></td>
<td><p>Host-side test executor shell tool and utilities</p>
</td>
 </tr>
 <tr>
    <td><code>
external</code></td>
<td><p>Build stub directory for external libs libpng and zlib</p>
</td>
 </tr>
</table>

<h3 id=open-source_components>Open source components</h3>

<p>The deqp uses <code>libpng</code> and <code>zlib</code>, which can be fetched
using the script <a href=
"https://android.googlesource.com/platform/external/deqp/+/master/external/fetch_sources.py">
<code>platform/external/deqp/external/fetch_sources.py</code></a> or via git
from <code>platform/external/[libpng,zlib]</code>.</p>
