<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
</Test>
</TestCase>
+ <TestCase name="highp_vertex">
+ <Test name="scalar">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ <Test name="vec2">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ <Test name="vec3">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ <Test name="vec4">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ </TestCase>
+ <TestCase name="highp_fragment">
+ <Test name="scalar">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ <Test name="vec2">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ <Test name="vec3">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ <Test name="vec4">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ </TestCase>
</TestSuite>
<TestSuite name="radians">
<TestCase name="lowp_vertex">
<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
</Test>
</TestCase>
+ <TestCase name="mediump_vertex">
+ <Test name="scalar">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ <Test name="vec2">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ <Test name="vec3">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ <Test name="vec4">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ </TestCase>
+ <TestCase name="mediump_fragment">
+ <Test name="scalar">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ <Test name="vec2">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ <Test name="vec3">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ <Test name="vec4">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ </TestCase>
<TestCase name="highp_vertex">
<Test name="scalar">
<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
</Test>
</TestCase>
+ <TestCase name="highp_vertex">
+ <Test name="scalar">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ <Test name="vec2">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ <Test name="vec3">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ <Test name="vec4">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ </TestCase>
+ <TestCase name="highp_fragment">
+ <Test name="scalar">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ <Test name="vec2">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ <Test name="vec3">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ <Test name="vec4">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ </TestCase>
</TestSuite>
<TestSuite name="atan2">
<TestCase name="lowp_vertex">
<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
</Test>
</TestCase>
+ <TestCase name="highp_vertex">
+ <Test name="scalar">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ <Test name="vec2">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ <Test name="vec3">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ <Test name="vec4">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ </TestCase>
+ <TestCase name="highp_fragment">
+ <Test name="scalar">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ <Test name="vec2">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ <Test name="vec3">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ <Test name="vec4">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ </TestCase>
</TestSuite>
<TestSuite name="pow">
<TestCase name="lowp_vertex">
<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
</Test>
</TestCase>
+ <TestCase name="highp_vertex">
+ <Test name="scalar">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ <Test name="vec2">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ <Test name="vec3">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ <Test name="vec4">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ </TestCase>
+ <TestCase name="highp_fragment">
+ <Test name="scalar">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ <Test name="vec2">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ <Test name="vec3">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ <Test name="vec4">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ </TestCase>
</TestSuite>
<TestCase name="modf">
<Test name="lowp_vertex">
<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
</Test>
</TestCase>
+ <TestCase name="mediump_compute">
+ <Test name="scalar">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ <Test name="vec2">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ <Test name="vec3">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ <Test name="vec4">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ </TestCase>
<TestCase name="highp_compute">
<Test name="scalar">
<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
</Test>
</TestCase>
+ <TestCase name="highp_compute">
+ <Test name="scalar">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ <Test name="vec2">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ <Test name="vec3">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ <Test name="vec4">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ </TestCase>
</TestSuite>
<TestSuite name="atan2">
<TestCase name="lowp_compute">
<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
</Test>
</TestCase>
+ <TestCase name="highp_compute">
+ <Test name="scalar">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ <Test name="vec2">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ <Test name="vec3">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ <Test name="vec4">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ </TestCase>
</TestSuite>
<TestSuite name="pow">
<TestCase name="lowp_compute">
dEQP-GLES3.functional.shaders.builtin_functions.precision.div.mediump_fragment.vec2
dEQP-GLES3.functional.shaders.builtin_functions.precision.div.mediump_fragment.vec3
dEQP-GLES3.functional.shaders.builtin_functions.precision.div.mediump_fragment.vec4
+dEQP-GLES3.functional.shaders.builtin_functions.precision.div.highp_vertex.scalar
+dEQP-GLES3.functional.shaders.builtin_functions.precision.div.highp_vertex.vec2
+dEQP-GLES3.functional.shaders.builtin_functions.precision.div.highp_vertex.vec3
+dEQP-GLES3.functional.shaders.builtin_functions.precision.div.highp_vertex.vec4
+dEQP-GLES3.functional.shaders.builtin_functions.precision.div.highp_fragment.scalar
+dEQP-GLES3.functional.shaders.builtin_functions.precision.div.highp_fragment.vec2
+dEQP-GLES3.functional.shaders.builtin_functions.precision.div.highp_fragment.vec3
+dEQP-GLES3.functional.shaders.builtin_functions.precision.div.highp_fragment.vec4
dEQP-GLES3.functional.shaders.builtin_functions.precision.radians.lowp_vertex.scalar
dEQP-GLES3.functional.shaders.builtin_functions.precision.radians.lowp_vertex.vec2
dEQP-GLES3.functional.shaders.builtin_functions.precision.radians.lowp_vertex.vec3
dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.lowp_fragment.vec2
dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.lowp_fragment.vec3
dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.lowp_fragment.vec4
+dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.mediump_vertex.scalar
+dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.mediump_vertex.vec2
+dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.mediump_vertex.vec3
+dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.mediump_vertex.vec4
+dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.mediump_fragment.scalar
+dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.mediump_fragment.vec2
+dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.mediump_fragment.vec3
+dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.mediump_fragment.vec4
dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.highp_vertex.scalar
dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.highp_vertex.vec2
dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.highp_vertex.vec3
dEQP-GLES3.functional.shaders.builtin_functions.precision.acos.mediump_fragment.vec2
dEQP-GLES3.functional.shaders.builtin_functions.precision.acos.mediump_fragment.vec3
dEQP-GLES3.functional.shaders.builtin_functions.precision.acos.mediump_fragment.vec4
+dEQP-GLES3.functional.shaders.builtin_functions.precision.acos.highp_vertex.scalar
+dEQP-GLES3.functional.shaders.builtin_functions.precision.acos.highp_vertex.vec2
+dEQP-GLES3.functional.shaders.builtin_functions.precision.acos.highp_vertex.vec3
+dEQP-GLES3.functional.shaders.builtin_functions.precision.acos.highp_vertex.vec4
+dEQP-GLES3.functional.shaders.builtin_functions.precision.acos.highp_fragment.scalar
+dEQP-GLES3.functional.shaders.builtin_functions.precision.acos.highp_fragment.vec2
+dEQP-GLES3.functional.shaders.builtin_functions.precision.acos.highp_fragment.vec3
+dEQP-GLES3.functional.shaders.builtin_functions.precision.acos.highp_fragment.vec4
dEQP-GLES3.functional.shaders.builtin_functions.precision.atan2.lowp_vertex.scalar
dEQP-GLES3.functional.shaders.builtin_functions.precision.atan2.lowp_vertex.vec2
dEQP-GLES3.functional.shaders.builtin_functions.precision.atan2.lowp_vertex.vec3
dEQP-GLES3.functional.shaders.builtin_functions.precision.atanh.mediump_vertex.vec2
dEQP-GLES3.functional.shaders.builtin_functions.precision.atanh.mediump_vertex.vec3
dEQP-GLES3.functional.shaders.builtin_functions.precision.atanh.mediump_vertex.vec4
+dEQP-GLES3.functional.shaders.builtin_functions.precision.atanh.highp_vertex.scalar
+dEQP-GLES3.functional.shaders.builtin_functions.precision.atanh.highp_vertex.vec2
+dEQP-GLES3.functional.shaders.builtin_functions.precision.atanh.highp_vertex.vec3
+dEQP-GLES3.functional.shaders.builtin_functions.precision.atanh.highp_vertex.vec4
+dEQP-GLES3.functional.shaders.builtin_functions.precision.atanh.highp_fragment.scalar
+dEQP-GLES3.functional.shaders.builtin_functions.precision.atanh.highp_fragment.vec2
+dEQP-GLES3.functional.shaders.builtin_functions.precision.atanh.highp_fragment.vec3
+dEQP-GLES3.functional.shaders.builtin_functions.precision.atanh.highp_fragment.vec4
dEQP-GLES3.functional.shaders.builtin_functions.precision.pow.lowp_vertex.scalar
dEQP-GLES3.functional.shaders.builtin_functions.precision.pow.lowp_vertex.vec2
dEQP-GLES3.functional.shaders.builtin_functions.precision.pow.lowp_vertex.vec3
dEQP-GLES3.functional.shaders.builtin_functions.precision.mod.mediump_fragment.vec2
dEQP-GLES3.functional.shaders.builtin_functions.precision.mod.mediump_fragment.vec3
dEQP-GLES3.functional.shaders.builtin_functions.precision.mod.mediump_fragment.vec4
+dEQP-GLES3.functional.shaders.builtin_functions.precision.mod.highp_vertex.scalar
+dEQP-GLES3.functional.shaders.builtin_functions.precision.mod.highp_vertex.vec2
+dEQP-GLES3.functional.shaders.builtin_functions.precision.mod.highp_vertex.vec3
+dEQP-GLES3.functional.shaders.builtin_functions.precision.mod.highp_vertex.vec4
+dEQP-GLES3.functional.shaders.builtin_functions.precision.mod.highp_fragment.scalar
+dEQP-GLES3.functional.shaders.builtin_functions.precision.mod.highp_fragment.vec2
+dEQP-GLES3.functional.shaders.builtin_functions.precision.mod.highp_fragment.vec3
+dEQP-GLES3.functional.shaders.builtin_functions.precision.mod.highp_fragment.vec4
dEQP-GLES3.functional.shaders.builtin_functions.precision.modf.lowp_vertex
dEQP-GLES3.functional.shaders.builtin_functions.precision.modf.lowp_fragment
dEQP-GLES3.functional.shaders.builtin_functions.precision.modf.mediump_vertex
dEQP-GLES31.functional.shaders.builtin_functions.precision.cos.lowp_compute.vec2
dEQP-GLES31.functional.shaders.builtin_functions.precision.cos.lowp_compute.vec3
dEQP-GLES31.functional.shaders.builtin_functions.precision.cos.lowp_compute.vec4
+dEQP-GLES31.functional.shaders.builtin_functions.precision.cos.mediump_compute.scalar
+dEQP-GLES31.functional.shaders.builtin_functions.precision.cos.mediump_compute.vec2
+dEQP-GLES31.functional.shaders.builtin_functions.precision.cos.mediump_compute.vec3
+dEQP-GLES31.functional.shaders.builtin_functions.precision.cos.mediump_compute.vec4
dEQP-GLES31.functional.shaders.builtin_functions.precision.cos.highp_compute.scalar
dEQP-GLES31.functional.shaders.builtin_functions.precision.cos.highp_compute.vec2
dEQP-GLES31.functional.shaders.builtin_functions.precision.cos.highp_compute.vec3
dEQP-GLES31.functional.shaders.builtin_functions.precision.acos.mediump_compute.vec2
dEQP-GLES31.functional.shaders.builtin_functions.precision.acos.mediump_compute.vec3
dEQP-GLES31.functional.shaders.builtin_functions.precision.acos.mediump_compute.vec4
+dEQP-GLES31.functional.shaders.builtin_functions.precision.acos.highp_compute.scalar
+dEQP-GLES31.functional.shaders.builtin_functions.precision.acos.highp_compute.vec2
+dEQP-GLES31.functional.shaders.builtin_functions.precision.acos.highp_compute.vec3
+dEQP-GLES31.functional.shaders.builtin_functions.precision.acos.highp_compute.vec4
dEQP-GLES31.functional.shaders.builtin_functions.precision.atan2.lowp_compute.scalar
dEQP-GLES31.functional.shaders.builtin_functions.precision.atan2.lowp_compute.vec2
dEQP-GLES31.functional.shaders.builtin_functions.precision.atan2.lowp_compute.vec3
dEQP-GLES31.functional.shaders.builtin_functions.precision.atanh.mediump_compute.vec2
dEQP-GLES31.functional.shaders.builtin_functions.precision.atanh.mediump_compute.vec3
dEQP-GLES31.functional.shaders.builtin_functions.precision.atanh.mediump_compute.vec4
+dEQP-GLES31.functional.shaders.builtin_functions.precision.atanh.highp_compute.scalar
+dEQP-GLES31.functional.shaders.builtin_functions.precision.atanh.highp_compute.vec2
+dEQP-GLES31.functional.shaders.builtin_functions.precision.atanh.highp_compute.vec3
+dEQP-GLES31.functional.shaders.builtin_functions.precision.atanh.highp_compute.vec4
dEQP-GLES31.functional.shaders.builtin_functions.precision.pow.lowp_compute.scalar
dEQP-GLES31.functional.shaders.builtin_functions.precision.pow.lowp_compute.vec2
dEQP-GLES31.functional.shaders.builtin_functions.precision.pow.lowp_compute.vec3
dEQP-GLES3.functional.shaders.builtin_functions.precision.atanh.mediump_fragment.vec2
dEQP-GLES3.functional.shaders.builtin_functions.precision.atanh.mediump_fragment.vec3
dEQP-GLES3.functional.shaders.builtin_functions.precision.atanh.mediump_fragment.vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.atanh.highp_vertex.scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.atanh.highp_vertex.vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.atanh.highp_vertex.vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.atanh.highp_vertex.vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.atanh.highp_fragment.scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.atanh.highp_fragment.vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.atanh.highp_fragment.vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.atanh.highp_fragment.vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.acos.highp_vertex.scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.acos.highp_vertex.vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.acos.highp_vertex.vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.acos.highp_vertex.vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.acos.highp_fragment.scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.acos.highp_fragment.vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.acos.highp_fragment.vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.acos.highp_fragment.vec4
dEQP-GLES3.functional.shaders.builtin_functions.precision.smoothstep.highp_vertex.scalar
dEQP-GLES3.functional.shaders.builtin_functions.precision.smoothstep.highp_vertex.vec3
dEQP-GLES3.functional.shaders.builtin_functions.precision.smoothstep.highp_vertex.vec4
dEQP-GLES3.functional.shaders.builtin_functions.precision.smoothstep.highp_fragment.scalar
dEQP-GLES3.functional.shaders.builtin_functions.precision.smoothstep.highp_fragment.vec3
dEQP-GLES3.functional.shaders.builtin_functions.precision.smoothstep.highp_fragment.vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.div.highp_vertex.scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.div.highp_vertex.vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.div.highp_vertex.vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.div.highp_vertex.vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.div.highp_fragment.scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.div.highp_fragment.vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.div.highp_fragment.vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.div.highp_fragment.vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mod.highp_vertex.scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mod.highp_vertex.vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mod.highp_vertex.vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mod.highp_vertex.vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mod.highp_fragment.scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mod.highp_fragment.vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mod.highp_fragment.vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mod.highp_fragment.vec4
dEQP-GLES3.functional.shaders.builtin_functions.precision.inverse.highp_vertex.mat2
dEQP-GLES3.functional.shaders.builtin_functions.precision.inverse.highp_fragment.mat2
dEQP-GLES3.functional.shaders.builtin_functions.precision.atan.lowp_vertex.scalar
dEQP-GLES3.functional.shaders.builtin_functions.precision.atan.mediump_fragment.vec2
dEQP-GLES3.functional.shaders.builtin_functions.precision.atan.mediump_fragment.vec3
dEQP-GLES3.functional.shaders.builtin_functions.precision.atan.mediump_fragment.vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.mediump_vertex.scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.mediump_vertex.vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.mediump_vertex.vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.mediump_vertex.vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.mediump_fragment.scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.mediump_fragment.vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.mediump_fragment.vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.mediump_fragment.vec4
# Bug 19408572
dEQP-GLES3.functional.shaders.builtin_functions.precision.reflect.*
# Bug 18323265
dEQP-GLES31.functional.shaders.builtin_functions.precision.dot.highp_compute.vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.atanh.highp_compute.scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.atanh.highp_compute.vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.atanh.highp_compute.vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.atanh.highp_compute.vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.acos.highp_compute.scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.acos.highp_compute.vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.acos.highp_compute.vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.acos.highp_compute.vec4
dEQP-GLES31.functional.shaders.builtin_functions.precision.smoothstep.mediump_compute.scalar
dEQP-GLES31.functional.shaders.builtin_functions.precision.smoothstep.mediump_compute.vec2
dEQP-GLES31.functional.shaders.builtin_functions.precision.smoothstep.mediump_compute.vec3
dEQP-GLES31.functional.shaders.builtin_functions.precision.smoothstep.mediump_compute.vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.cos.mediump_compute.scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.cos.mediump_compute.vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.cos.mediump_compute.vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.cos.mediump_compute.vec4
# Bug 18033342
dEQP-GLES31.functional.debug.negative_coverage.get_error.state.get_framebuffer_attachment_parameteriv
int fractionBits,
bool exactPrecision,
YesNoMaybe hasSubnormal_,
- YesNoMaybe hasInf,
- YesNoMaybe hasNaN)
+ YesNoMaybe hasInf_,
+ YesNoMaybe hasNaN_)
: m_minExp (minExp)
, m_maxExp (maxExp)
, m_fractionBits (fractionBits)
, m_hasSubnormal (hasSubnormal_)
- , m_hasInf (hasInf)
- , m_hasNaN (hasNaN)
+ , m_hasInf (hasInf_)
+ , m_hasNaN (hasNaN_)
, m_exactPrecision (exactPrecision)
, m_maxValue (computeMaxValue(maxExp, fractionBits))
{
int getMaxExp (void) const { return m_maxExp; }
double getMaxValue (void) const { return m_maxValue; }
int getFractionBits (void) const { return m_fractionBits; }
+ YesNoMaybe hasInf (void) const { return m_hasInf; }
YesNoMaybe hasSubnormal (void) const { return m_hasSubnormal; }
double ulp (double x, double count = 1.0) const;
return ret;
}
-protected:
-
- double applyExact (double x, double y) const { return x / y; }
+ double applyExact (double x, double y) const { return x / y; }
- Interval applyPoint (const EvalContext& ctx, double x, double y) const
+ Interval applyPoint (const EvalContext& ctx, double x, double y) const
{
- return FloatFunc2::applyPoint(ctx, x, y);
+ Interval ret = FloatFunc2::applyPoint(ctx, x, y);
+
+ if (!deIsInf(x) && !deIsInf(y) && y != 0.0)
+ {
+ const Interval dst = ctx.format.convert(ret);
+ if (dst.contains(-TCU_INFINITY)) ret |= -ctx.format.getMaxValue();
+ if (dst.contains(+TCU_INFINITY)) ret |= +ctx.format.getMaxValue();
+ }
+
+ return ret;
}
- double precision (const EvalContext& ctx, double ret, double, double den) const
+ double precision (const EvalContext& ctx, double ret, double, double den) const
{
const FloatFormat& fmt = ctx.format;
return deLdExp(deAbs(arg), -12);
}
}
+ else if (ctx.floatPrecision == glu::PRECISION_MEDIUMP)
+ {
+ if (-DE_PI_DOUBLE <= arg && arg <= DE_PI_DOUBLE)
+ {
+ // from OpenCL half-float extension specification
+ return ctx.format.ulp(ret, 2.0);
+ }
+ else
+ {
+ // |x| * 2^-10, slightly larger than 2 ULP at x == pi
+ return deLdExp(deAbs(DE_PI_DOUBLE), -10);
+ }
+ }
else
{
+ DE_ASSERT(ctx.floatPrecision == glu::PRECISION_LOWP);
+
// from OpenCL half-float extension specification
return ctx.format.ulp(ret, 2.0);
}
if (ctx.floatPrecision == glu::PRECISION_HIGHP)
{
- // Use OpenCL's precision
+ // Use OpenCL's fast relaxed math precision
return ctx.format.ulp(ret, m_precision);
}
else
class ASin : public ArcTrigFunc
{
public:
- ASin (void) : ArcTrigFunc("asin", deAsin, 4.0,
+ ASin (void) : ArcTrigFunc("asin", deAsin, 4096.0,
Interval(-1.0, 1.0),
Interval(-DE_PI_DOUBLE * 0.5, DE_PI_DOUBLE * 0.5)) {}
};
class ACos : public ArcTrigFunc
{
public:
- ACos (void) : ArcTrigFunc("acos", deAcos, 4.0,
+ ACos (void) : ArcTrigFunc("acos", deAcos, 4096.0,
Interval(-1.0, 1.0),
Interval(0.0, DE_PI_DOUBLE)) {}
};
class ATan : public ArcTrigFunc
{
public:
- ATan (void) : ArcTrigFunc("atan", deAtanOver, 5.0,
+ ATan (void) : ArcTrigFunc("atan", deAtanOver, 4096.0,
Interval::unbounded(),
Interval(-DE_PI_DOUBLE * 0.5, DE_PI_DOUBLE * 0.5)) {}
};
ATan2 (void) : CFloatFunc2 ("atan", deAtan2) {}
protected:
- Interval innerExtrema (const EvalContext&,
+ Interval innerExtrema (const EvalContext& ctx,
const Interval& yi,
const Interval& xi) const
{
ret |= Interval(-DE_PI_DOUBLE, DE_PI_DOUBLE);
}
+ if (ctx.format.hasInf() != YES && (!yi.isFinite() || !xi.isFinite()))
+ {
+ // Infinities may not be supported, allow anything, including NaN
+ ret |= TCU_NAN;
+ }
+
return ret;
}
double precision (const EvalContext& ctx, double ret, double, double) const
{
if (ctx.floatPrecision == glu::PRECISION_HIGHP)
- return ctx.format.ulp(ret, 6.0);
+ return ctx.format.ulp(ret, 4096.0);
else
return ctx.format.ulp(ret, 2.0);
}
}
protected:
- IRet doApply (const EvalContext&, const IArgs& iargs) const
+ IRet doApply (const EvalContext& ctx, const IArgs& iargs) const
{
Interval fracIV;
Interval& wholeIV = const_cast<Interval&>(iargs.b);
TCU_INTERVAL_APPLY_MONOTONE1(fracIV, x, iargs.a, frac, frac = deModf(x, &intPart));
TCU_INTERVAL_APPLY_MONOTONE1(wholeIV, x, iargs.a, whole,
deModf(x, &intPart); whole = intPart);
+
+ if ((ctx.format.hasInf() != YES) && !iargs.a.isFinite())
+ {
+ // Behavior on modf(Inf) not well-defined, allow anything as a fractional part
+ fracIV |= TCU_NAN;
+ }
+
return fracIV;
}