Merge in fixes from Khronos repository
diff --git a/android/cts/master/com.drawelements.deqp.gles3.xml b/android/cts/master/com.drawelements.deqp.gles3.xml
index 449ff26..389b170 100644
--- a/android/cts/master/com.drawelements.deqp.gles3.xml
+++ b/android/cts/master/com.drawelements.deqp.gles3.xml
@@ -3223,18 +3223,6 @@
<Test name="defined_macro_undef_fragment">
<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
</Test>
- <Test name="define_defined_vertex">
- <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
- </Test>
- <Test name="define_defined_fragment">
- <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
- </Test>
- <Test name="define_defined_outside_if_vertex">
- <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
- </Test>
- <Test name="define_defined_outside_if_fragment">
- <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
- </Test>
<Test name="defined_invalid_before_all_macros_replaced_vertex">
<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
</Test>
diff --git a/android/cts/master/com.drawelements.deqp.gles31.xml b/android/cts/master/com.drawelements.deqp.gles31.xml
index 73dfc12..d1d82e9 100644
--- a/android/cts/master/com.drawelements.deqp.gles31.xml
+++ b/android/cts/master/com.drawelements.deqp.gles31.xml
@@ -20347,6 +20347,15 @@
<Test name="isolines">
<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
</Test>
+ <Test name="triangles_explicit_tcs_out_size">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ <Test name="quads_explicit_tcs_out_size">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ <Test name="isolines_explicit_tcs_out_size">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
</TestCase>
<TestCase name="vertex_io_array_size_shader_builtin">
<Test name="triangles">
@@ -20358,6 +20367,15 @@
<Test name="isolines">
<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
</Test>
+ <Test name="triangles_explicit_tcs_out_size">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ <Test name="quads_explicit_tcs_out_size">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ <Test name="isolines_explicit_tcs_out_size">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
</TestCase>
<TestCase name="vertex_io_array_size_query">
<Test name="triangles">
@@ -20369,6 +20387,15 @@
<Test name="isolines">
<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
</Test>
+ <Test name="triangles_explicit_tcs_out_size">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ <Test name="quads_explicit_tcs_out_size">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ <Test name="isolines_explicit_tcs_out_size">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
</TestCase>
</TestSuite>
<TestSuite name="per_vertex_block">
@@ -20382,6 +20409,15 @@
<Test name="isolines">
<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
</Test>
+ <Test name="triangles_explicit_tcs_out_size">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ <Test name="quads_explicit_tcs_out_size">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ <Test name="isolines_explicit_tcs_out_size">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
</TestCase>
<TestCase name="vertex_io_array_size_shader_builtin">
<Test name="triangles">
@@ -20393,6 +20429,15 @@
<Test name="isolines">
<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
</Test>
+ <Test name="triangles_explicit_tcs_out_size">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ <Test name="quads_explicit_tcs_out_size">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ <Test name="isolines_explicit_tcs_out_size">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
</TestCase>
<TestCase name="vertex_io_array_size_query">
<Test name="triangles">
@@ -20404,6 +20449,15 @@
<Test name="isolines">
<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
</Test>
+ <Test name="triangles_explicit_tcs_out_size">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ <Test name="quads_explicit_tcs_out_size">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
+ <Test name="isolines_explicit_tcs_out_size">
+ <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
+ </Test>
</TestCase>
</TestSuite>
<TestCase name="negative">
@@ -20413,9 +20467,6 @@
<Test name="per_patch_structs_containing_arrays">
<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
</Test>
- <Test name="per_vertex_incorrect_control_explicit_output_array_size_1">
- <TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
- </Test>
<Test name="per_vertex_incorrect_control_explicit_output_array_size_2">
<TestInstance glconfig="rgba8888d24s8ms0" rotation="unspecified" surfacetype="window"/>
</Test>
diff --git a/android/cts/master/gles3-master.txt b/android/cts/master/gles3-master.txt
index 8d410f1..2cd197f 100644
--- a/android/cts/master/gles3-master.txt
+++ b/android/cts/master/gles3-master.txt
@@ -960,10 +960,6 @@
dEQP-GLES3.functional.shaders.preprocessor.conditional_inclusion.defined_macro_defined_test_fragment
dEQP-GLES3.functional.shaders.preprocessor.conditional_inclusion.defined_macro_undef_vertex
dEQP-GLES3.functional.shaders.preprocessor.conditional_inclusion.defined_macro_undef_fragment
-dEQP-GLES3.functional.shaders.preprocessor.conditional_inclusion.define_defined_vertex
-dEQP-GLES3.functional.shaders.preprocessor.conditional_inclusion.define_defined_fragment
-dEQP-GLES3.functional.shaders.preprocessor.conditional_inclusion.define_defined_outside_if_vertex
-dEQP-GLES3.functional.shaders.preprocessor.conditional_inclusion.define_defined_outside_if_fragment
dEQP-GLES3.functional.shaders.preprocessor.conditional_inclusion.defined_invalid_before_all_macros_replaced_vertex
dEQP-GLES3.functional.shaders.preprocessor.conditional_inclusion.defined_invalid_before_all_macros_replaced_fragment
dEQP-GLES3.functional.shaders.preprocessor.conditional_inclusion.basic_3_vertex
diff --git a/android/cts/master/gles31-master.txt b/android/cts/master/gles31-master.txt
index 681a205..8843688 100644
--- a/android/cts/master/gles31-master.txt
+++ b/android/cts/master/gles31-master.txt
@@ -6355,24 +6355,41 @@
dEQP-GLES31.functional.tessellation.user_defined_io.per_vertex.vertex_io_array_size_implicit.triangles
dEQP-GLES31.functional.tessellation.user_defined_io.per_vertex.vertex_io_array_size_implicit.quads
dEQP-GLES31.functional.tessellation.user_defined_io.per_vertex.vertex_io_array_size_implicit.isolines
+dEQP-GLES31.functional.tessellation.user_defined_io.per_vertex.vertex_io_array_size_implicit.triangles_explicit_tcs_out_size
+dEQP-GLES31.functional.tessellation.user_defined_io.per_vertex.vertex_io_array_size_implicit.quads_explicit_tcs_out_size
+dEQP-GLES31.functional.tessellation.user_defined_io.per_vertex.vertex_io_array_size_implicit.isolines_explicit_tcs_out_size
dEQP-GLES31.functional.tessellation.user_defined_io.per_vertex.vertex_io_array_size_shader_builtin.triangles
dEQP-GLES31.functional.tessellation.user_defined_io.per_vertex.vertex_io_array_size_shader_builtin.quads
dEQP-GLES31.functional.tessellation.user_defined_io.per_vertex.vertex_io_array_size_shader_builtin.isolines
+dEQP-GLES31.functional.tessellation.user_defined_io.per_vertex.vertex_io_array_size_shader_builtin.triangles_explicit_tcs_out_size
+dEQP-GLES31.functional.tessellation.user_defined_io.per_vertex.vertex_io_array_size_shader_builtin.quads_explicit_tcs_out_size
+dEQP-GLES31.functional.tessellation.user_defined_io.per_vertex.vertex_io_array_size_shader_builtin.isolines_explicit_tcs_out_size
dEQP-GLES31.functional.tessellation.user_defined_io.per_vertex.vertex_io_array_size_query.triangles
dEQP-GLES31.functional.tessellation.user_defined_io.per_vertex.vertex_io_array_size_query.quads
dEQP-GLES31.functional.tessellation.user_defined_io.per_vertex.vertex_io_array_size_query.isolines
+dEQP-GLES31.functional.tessellation.user_defined_io.per_vertex.vertex_io_array_size_query.triangles_explicit_tcs_out_size
+dEQP-GLES31.functional.tessellation.user_defined_io.per_vertex.vertex_io_array_size_query.quads_explicit_tcs_out_size
+dEQP-GLES31.functional.tessellation.user_defined_io.per_vertex.vertex_io_array_size_query.isolines_explicit_tcs_out_size
dEQP-GLES31.functional.tessellation.user_defined_io.per_vertex_block.vertex_io_array_size_implicit.triangles
dEQP-GLES31.functional.tessellation.user_defined_io.per_vertex_block.vertex_io_array_size_implicit.quads
dEQP-GLES31.functional.tessellation.user_defined_io.per_vertex_block.vertex_io_array_size_implicit.isolines
+dEQP-GLES31.functional.tessellation.user_defined_io.per_vertex_block.vertex_io_array_size_implicit.triangles_explicit_tcs_out_size
+dEQP-GLES31.functional.tessellation.user_defined_io.per_vertex_block.vertex_io_array_size_implicit.quads_explicit_tcs_out_size
+dEQP-GLES31.functional.tessellation.user_defined_io.per_vertex_block.vertex_io_array_size_implicit.isolines_explicit_tcs_out_size
dEQP-GLES31.functional.tessellation.user_defined_io.per_vertex_block.vertex_io_array_size_shader_builtin.triangles
dEQP-GLES31.functional.tessellation.user_defined_io.per_vertex_block.vertex_io_array_size_shader_builtin.quads
dEQP-GLES31.functional.tessellation.user_defined_io.per_vertex_block.vertex_io_array_size_shader_builtin.isolines
+dEQP-GLES31.functional.tessellation.user_defined_io.per_vertex_block.vertex_io_array_size_shader_builtin.triangles_explicit_tcs_out_size
+dEQP-GLES31.functional.tessellation.user_defined_io.per_vertex_block.vertex_io_array_size_shader_builtin.quads_explicit_tcs_out_size
+dEQP-GLES31.functional.tessellation.user_defined_io.per_vertex_block.vertex_io_array_size_shader_builtin.isolines_explicit_tcs_out_size
dEQP-GLES31.functional.tessellation.user_defined_io.per_vertex_block.vertex_io_array_size_query.triangles
dEQP-GLES31.functional.tessellation.user_defined_io.per_vertex_block.vertex_io_array_size_query.quads
dEQP-GLES31.functional.tessellation.user_defined_io.per_vertex_block.vertex_io_array_size_query.isolines
+dEQP-GLES31.functional.tessellation.user_defined_io.per_vertex_block.vertex_io_array_size_query.triangles_explicit_tcs_out_size
+dEQP-GLES31.functional.tessellation.user_defined_io.per_vertex_block.vertex_io_array_size_query.quads_explicit_tcs_out_size
+dEQP-GLES31.functional.tessellation.user_defined_io.per_vertex_block.vertex_io_array_size_query.isolines_explicit_tcs_out_size
dEQP-GLES31.functional.tessellation.user_defined_io.negative.per_patch_array_of_structs
dEQP-GLES31.functional.tessellation.user_defined_io.negative.per_patch_structs_containing_arrays
-dEQP-GLES31.functional.tessellation.user_defined_io.negative.per_vertex_incorrect_control_explicit_output_array_size_1
dEQP-GLES31.functional.tessellation.user_defined_io.negative.per_vertex_incorrect_control_explicit_output_array_size_2
dEQP-GLES31.functional.tessellation.user_defined_io.negative.per_vertex_incorrect_control_explicit_output_array_size_3
dEQP-GLES31.functional.tessellation.user_defined_io.negative.per_vertex_incorrect_eval_explicit_input_array_size
diff --git a/android/cts/master/src/gles3-spec-issues.txt b/android/cts/master/src/gles3-spec-issues.txt
index 7efd102..ad1f008 100644
--- a/android/cts/master/src/gles3-spec-issues.txt
+++ b/android/cts/master/src/gles3-spec-issues.txt
@@ -519,3 +519,9 @@
# Khronos bug 14266, internal bug 22654014
dEQP-GLES3.functional.negative_api.texture.compressedteximage3d_invalid_astc_target
dEQP-GLES3.functional.negative_api.texture.texstorage3d_invalid_astc_target
+
+# Khronos bug 15567, internal bug 27126954
+dEQP-GLES3.functional.shaders.preprocessor.conditional_inclusion.define_defined_vertex
+dEQP-GLES3.functional.shaders.preprocessor.conditional_inclusion.define_defined_fragment
+dEQP-GLES3.functional.shaders.preprocessor.conditional_inclusion.define_defined_outside_if_vertex
+dEQP-GLES3.functional.shaders.preprocessor.conditional_inclusion.define_defined_outside_if_fragment
diff --git a/data/gles31/shaders/tessellation_negative_user_defined_io.test b/data/gles31/shaders/tessellation_negative_user_defined_io.test
index 32ae315..1204b6f 100644
--- a/data/gles31/shaders/tessellation_negative_user_defined_io.test
+++ b/data/gles31/shaders/tessellation_negative_user_defined_io.test
@@ -115,52 +115,6 @@
""
end
-case per_vertex_incorrect_control_explicit_output_array_size_1
- version 310 es
- desc "Incorrectly sized tessellation control output array"
- expect compile_or_link_fail
- require extension { "GL_OES_tessellation_shader" | "GL_EXT_tessellation_shader" } in { tessellation_control, tessellation_evaluation }
- vertex ""
- #version 310 es
- ${VERTEX_DECLARATIONS}
- void main()
- {
- ${VERTEX_OUTPUT}
- }
- ""
- tessellation_control ""
- #version 310 es
- ${TESSELLATION_CONTROL_DECLARATIONS}
- out highp float varyingArray[3]; // size is not equal to gl_MaxPatchVertices
- void main()
- {
- varyingArray[gl_InvocationID] = gl_in[0].gl_Position[gl_InvocationID];
- ${TESSELLATION_CONTROL_OUTPUT}
- }
- ""
- tessellation_evaluation ""
- #version 310 es
- ${TESSELLATION_EVALUATION_DECLARATIONS}
- in highp float varyingArray[gl_MaxPatchVertices]; // size is correct
- out mediump float te_out;
- void main()
- {
- te_out = varyingArray[0] * gl_TessCoord.x + varyingArray[1] * gl_TessCoord.y + varyingArray[2];
- ${TESSELLATION_EVALUATION_OUTPUT}
- }
- ""
- fragment ""
- #version 310 es
- precision mediump float;
- ${FRAGMENT_DECLARATIONS}
- in mediump float te_out;
- void main()
- {
- ${FRAG_COLOR} = vec4(te_out);
- }
- ""
-end
-
case per_vertex_incorrect_control_explicit_output_array_size_2
version 310 es
desc "Incorrectly sized tessellation control output array"
diff --git a/modules/gles31/functional/es31fTessellationTests.cpp b/modules/gles31/functional/es31fTessellationTests.cpp
index 78f2308..22f09c2 100644
--- a/modules/gles31/functional/es31fTessellationTests.cpp
+++ b/modules/gles31/functional/es31fTessellationTests.cpp
@@ -5509,12 +5509,21 @@
VERTEX_IO_ARRAY_SIZE_LAST
};
- UserDefinedIOCase (Context& context, const char* name, const char* description, TessPrimitiveType primType, IOType ioType, VertexIOArraySize vertexIOArraySize, const char* referenceImagePath)
- : TestCase (context, name, description)
- , m_primitiveType (primType)
- , m_ioType (ioType)
- , m_vertexIOArraySize (vertexIOArraySize)
- , m_referenceImagePath (referenceImagePath)
+ enum TessControlOutArraySize
+ {
+ TESS_CONTROL_OUT_ARRAY_SIZE_IMPLICIT = 0,
+ TESS_CONTROL_OUT_ARRAY_SIZE_LAYOUT,
+ TESS_CONTROL_OUT_ARRAY_SIZE_QUERY,
+ TESS_CONTROL_OUT_ARRAY_SIZE_SHADER_BUILTIN
+ };
+
+ UserDefinedIOCase (Context& context, const char* name, const char* description, TessPrimitiveType primType, IOType ioType, VertexIOArraySize vertexIOArraySize, TessControlOutArraySize tessControlOutArraySize, const char* referenceImagePath)
+ : TestCase (context, name, description)
+ , m_primitiveType (primType)
+ , m_ioType (ioType)
+ , m_vertexIOArraySize (vertexIOArraySize)
+ , m_tessControlOutArraySize (tessControlOutArraySize)
+ , m_referenceImagePath (referenceImagePath)
{
}
@@ -5629,6 +5638,7 @@
const TessPrimitiveType m_primitiveType;
const IOType m_ioType;
const VertexIOArraySize m_vertexIOArraySize;
+ const TessControlOutArraySize m_tessControlOutArraySize;
const string m_referenceImagePath;
vector<glu::StructType> m_structTypes;
@@ -5999,9 +6009,11 @@
if (isArray)
{
- // \note: TCS output arrays are always implicitly-sized
- tcsDeclarations += outMaybePatch + output.declareArray(m_ioType == IO_TYPE_PER_PATCH_ARRAY ? de::toString(int(NUM_PER_PATCH_ARRAY_ELEMS))
- : m_ioType == IO_TYPE_PER_PATCH_BLOCK_ARRAY ? de::toString(int(NUM_PER_PATCH_BLOCKS))
+ tcsDeclarations += outMaybePatch + output.declareArray(m_ioType == IO_TYPE_PER_PATCH_ARRAY ? de::toString(int(NUM_PER_PATCH_ARRAY_ELEMS))
+ : m_ioType == IO_TYPE_PER_PATCH_BLOCK_ARRAY ? de::toString(int(NUM_PER_PATCH_BLOCKS))
+ : m_tessControlOutArraySize == TESS_CONTROL_OUT_ARRAY_SIZE_LAYOUT ? de::toString(int(NUM_OUTPUT_VERTICES))
+ : m_tessControlOutArraySize == TESS_CONTROL_OUT_ARRAY_SIZE_QUERY ? de::toString(m_context.getContextInfo().getInt(GL_MAX_PATCH_VERTICES))
+ : m_tessControlOutArraySize == TESS_CONTROL_OUT_ARRAY_SIZE_SHADER_BUILTIN ? "gl_MaxPatchVertices"
: "");
}
else
@@ -7566,9 +7578,20 @@
for (int primitiveTypeI = 0; primitiveTypeI < TESSPRIMITIVETYPE_LAST; primitiveTypeI++)
{
const TessPrimitiveType primitiveType = (TessPrimitiveType)primitiveTypeI;
- vertexArraySizeGroup->addChild(new UserDefinedIOCase(m_context, getTessPrimitiveTypeShaderName(primitiveType), "", primitiveType, ioCases[ndx].ioType, vertexArraySize,
+ vertexArraySizeGroup->addChild(new UserDefinedIOCase(m_context, getTessPrimitiveTypeShaderName(primitiveType), "", primitiveType, ioCases[ndx].ioType, vertexArraySize, UserDefinedIOCase::TESS_CONTROL_OUT_ARRAY_SIZE_IMPLICIT,
(string() + "data/tessellation/user_defined_io_" + getTessPrimitiveTypeShaderName(primitiveType) + "_ref.png").c_str()));
}
+
+ if (ioCases[ndx].ioType == UserDefinedIOCase::IO_TYPE_PER_VERTEX
+ || ioCases[ndx].ioType == UserDefinedIOCase::IO_TYPE_PER_VERTEX_BLOCK)
+ {
+ for (int primitiveTypeI = 0; primitiveTypeI < TESSPRIMITIVETYPE_LAST; primitiveTypeI++)
+ {
+ const TessPrimitiveType primitiveType = (TessPrimitiveType)primitiveTypeI;
+ vertexArraySizeGroup->addChild(new UserDefinedIOCase(m_context, (string(getTessPrimitiveTypeShaderName(primitiveType)) + "_explicit_tcs_out_size").c_str(), "", primitiveType, ioCases[ndx].ioType, vertexArraySize, UserDefinedIOCase::TESS_CONTROL_OUT_ARRAY_SIZE_LAYOUT,
+ (string() + "data/tessellation/user_defined_io_" + getTessPrimitiveTypeShaderName(primitiveType) + "_ref.png").c_str()));
+ }
+ }
}
}