<?xml version="1.0" encoding="utf-8"?>
<configuration>
	<!--
     Copyright (C) 2016 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.
     -->
	<!--
     This file has been automatically generated. Edit with caution.
     -->
	<test class="com.drawelements.deqp.runner.DeqpTestRunner">
		<option name="deqp-package" value="dEQP-EGL"/>
		<option name="deqp-caselist-file" value="egl-master.txt"/>
		<option name="deqp-gl-config-name" value="rgba8888d24s8ms0"/>
		<option name="deqp-surface-type" value="window"/>
		<option name="deqp-screen-rotation" value="unspecified"/>
		<option name="runtime-hint" value="24m"/>
	</test>
	<test class="com.drawelements.deqp.runner.DeqpTestRunner">
		<option name="deqp-package" value="dEQP-GLES2"/>
		<option name="deqp-caselist-file" value="gles2-master.txt"/>
		<option name="deqp-gl-config-name" value="rgba8888d24s8ms0"/>
		<option name="deqp-surface-type" value="window"/>
		<option name="deqp-screen-rotation" value="unspecified"/>
		<option name="runtime-hint" value="40m"/>
	</test>
	<test class="com.drawelements.deqp.runner.DeqpTestRunner">
		<option name="deqp-package" value="dEQP-GLES3"/>
		<option name="deqp-caselist-file" value="gles3-master.txt"/>
		<option name="deqp-gl-config-name" value="rgba8888d24s8ms0"/>
		<option name="deqp-surface-type" value="window"/>
		<option name="deqp-screen-rotation" value="unspecified"/>
		<option name="runtime-hint" value="1h15m"/>
	</test>
	<test class="com.drawelements.deqp.runner.DeqpTestRunner">
		<option name="deqp-package" value="dEQP-GLES3"/>
		<option name="deqp-caselist-file" value="gles3-rotate-portrait.txt"/>
		<option name="deqp-gl-config-name" value="rgba8888d24s8ms0"/>
		<option name="deqp-surface-type" value="window"/>
		<option name="deqp-screen-rotation" value="0"/>
		<option name="runtime-hint" value="7m"/>
	</test>
	<test class="com.drawelements.deqp.runner.DeqpTestRunner">
		<option name="deqp-package" value="dEQP-GLES3"/>
		<option name="deqp-caselist-file" value="gles3-rotate-landscape.txt"/>
		<option name="deqp-gl-config-name" value="rgba8888d24s8ms0"/>
		<option name="deqp-surface-type" value="window"/>
		<option name="deqp-screen-rotation" value="90"/>
		<option name="runtime-hint" value="7m"/>
	</test>
	<test class="com.drawelements.deqp.runner.DeqpTestRunner">
		<option name="deqp-package" value="dEQP-GLES3"/>
		<option name="deqp-caselist-file" value="gles3-rotate-reverse-portrait.txt"/>
		<option name="deqp-gl-config-name" value="rgba8888d24s8ms0"/>
		<option name="deqp-surface-type" value="window"/>
		<option name="deqp-screen-rotation" value="180"/>
		<option name="runtime-hint" value="7m"/>
	</test>
	<test class="com.drawelements.deqp.runner.DeqpTestRunner">
		<option name="deqp-package" value="dEQP-GLES3"/>
		<option name="deqp-caselist-file" value="gles3-rotate-reverse-landscape.txt"/>
		<option name="deqp-gl-config-name" value="rgba8888d24s8ms0"/>
		<option name="deqp-surface-type" value="window"/>
		<option name="deqp-screen-rotation" value="270"/>
		<option name="runtime-hint" value="7m"/>
	</test>
	<test class="com.drawelements.deqp.runner.DeqpTestRunner">
		<option name="deqp-package" value="dEQP-GLES3"/>
		<option name="deqp-caselist-file" value="gles3-multisample.txt"/>
		<option name="deqp-gl-config-name" value="rgba8888d24s8ms4"/>
		<option name="deqp-surface-type" value="window"/>
		<option name="deqp-screen-rotation" value="unspecified"/>
		<option name="runtime-hint" value="10m"/>
	</test>
	<test class="com.drawelements.deqp.runner.DeqpTestRunner">
		<option name="deqp-package" value="dEQP-GLES3"/>
		<option name="deqp-caselist-file" value="gles3-565-no-depth-no-stencil.txt"/>
		<option name="deqp-gl-config-name" value="rgb565d0s0ms0"/>
		<option name="deqp-surface-type" value="window"/>
		<option name="deqp-screen-rotation" value="unspecified"/>
		<option name="runtime-hint" value="10m"/>
	</test>
	<test class="com.drawelements.deqp.runner.DeqpTestRunner">
		<option name="deqp-package" value="dEQP-GLES31"/>
		<option name="deqp-caselist-file" value="gles31-master.txt"/>
		<option name="deqp-gl-config-name" value="rgba8888d24s8ms0"/>
		<option name="deqp-surface-type" value="window"/>
		<option name="deqp-screen-rotation" value="unspecified"/>
		<option name="runtime-hint" value="7h30m"/>
	</test>
	<test class="com.drawelements.deqp.runner.DeqpTestRunner">
		<option name="deqp-package" value="dEQP-GLES31"/>
		<option name="deqp-caselist-file" value="gles31-rotate-portrait.txt"/>
		<option name="deqp-gl-config-name" value="rgba8888d24s8ms0"/>
		<option name="deqp-surface-type" value="window"/>
		<option name="deqp-screen-rotation" value="0"/>
		<option name="runtime-hint" value="1m30s"/>
	</test>
	<test class="com.drawelements.deqp.runner.DeqpTestRunner">
		<option name="deqp-package" value="dEQP-GLES31"/>
		<option name="deqp-caselist-file" value="gles31-rotate-landscape.txt"/>
		<option name="deqp-gl-config-name" value="rgba8888d24s8ms0"/>
		<option name="deqp-surface-type" value="window"/>
		<option name="deqp-screen-rotation" value="90"/>
		<option name="runtime-hint" value="1m30s"/>
	</test>
	<test class="com.drawelements.deqp.runner.DeqpTestRunner">
		<option name="deqp-package" value="dEQP-GLES31"/>
		<option name="deqp-caselist-file" value="gles31-rotate-reverse-portrait.txt"/>
		<option name="deqp-gl-config-name" value="rgba8888d24s8ms0"/>
		<option name="deqp-surface-type" value="window"/>
		<option name="deqp-screen-rotation" value="180"/>
		<option name="runtime-hint" value="1m30s"/>
	</test>
	<test class="com.drawelements.deqp.runner.DeqpTestRunner">
		<option name="deqp-package" value="dEQP-GLES31"/>
		<option name="deqp-caselist-file" value="gles31-rotate-reverse-landscape.txt"/>
		<option name="deqp-gl-config-name" value="rgba8888d24s8ms0"/>
		<option name="deqp-surface-type" value="window"/>
		<option name="deqp-screen-rotation" value="270"/>
		<option name="runtime-hint" value="1m30s"/>
	</test>
	<test class="com.drawelements.deqp.runner.DeqpTestRunner">
		<option name="deqp-package" value="dEQP-GLES31"/>
		<option name="deqp-caselist-file" value="gles31-multisample.txt"/>
		<option name="deqp-gl-config-name" value="rgba8888d24s8ms4"/>
		<option name="deqp-surface-type" value="window"/>
		<option name="deqp-screen-rotation" value="unspecified"/>
		<option name="runtime-hint" value="2m"/>
	</test>
	<test class="com.drawelements.deqp.runner.DeqpTestRunner">
		<option name="deqp-package" value="dEQP-GLES31"/>
		<option name="deqp-caselist-file" value="gles31-565-no-depth-no-stencil.txt"/>
		<option name="deqp-gl-config-name" value="rgb565d0s0ms0"/>
		<option name="deqp-surface-type" value="window"/>
		<option name="deqp-screen-rotation" value="unspecified"/>
		<option name="runtime-hint" value="1m"/>
	</test>
	<test class="com.drawelements.deqp.runner.DeqpTestRunner">
		<option name="deqp-package" value="dEQP-VK"/>
		<option name="deqp-caselist-file" value="vk-master.txt"/>
		<option name="runtime-hint" value="3h45m"/>
	</test>
</configuration>
