Before, in every drawing we were having the same VBO values per vertex to be compared against the values in the uniforms. Now, we also have different values per vertex so we can be sure that it is truly its own data.
Signed-off-by: Andres Gomez <[email protected]> --- .../gen_vs_in_fp64/columns.shader_test.mako | 41 ++++++++++++--------- .../gen_vs_in_fp64/regular.shader_test.mako | 43 +++++++++++++--------- 2 files changed, 49 insertions(+), 35 deletions(-) diff --git a/generated_tests/templates/gen_vs_in_fp64/columns.shader_test.mako b/generated_tests/templates/gen_vs_in_fp64/columns.shader_test.mako index 2dfb723..f094a03 100644 --- a/generated_tests/templates/gen_vs_in_fp64/columns.shader_test.mako +++ b/generated_tests/templates/gen_vs_in_fp64/columns.shader_test.mako @@ -48,7 +48,9 @@ GLSL >= ${glsl} #extension GL_ARB_vertex_attrib_64bit : require % endif -uniform ${mat.name} expected; +% for vidx in range(4): + uniform ${mat.name} expected${vidx}; +% endfor in ${mat.name} value; in vec3 piglit_vertex; @@ -59,15 +61,18 @@ out vec4 fs_color; void main() { - gl_Position = vec4(piglit_vertex, 1.0); - % for idx, column in enumerate(columns): - % if column == 1: - if (value[${idx}] != expected[${idx}]) { - fs_color = RED; - return; - } - ## XXX: should we break here? - % endif + gl_Position = vec4(piglit_vertex.x, piglit_vertex.y, 0.0, 1.0); + % for vidx, vertex in enumerate(['-1.0', '0.0', '1.0', '2.0']): + if (piglit_vertex.z == ${vertex}) { + % for idx, column in enumerate(columns): + % if column == 1: + if (value[${idx}] != expected${vidx}[${idx}]) { + fs_color = RED; + return; + } + % endif + % endfor + } % endfor fs_color = GREEN; } @@ -90,11 +95,11 @@ piglit_vertex/float/vec3\ % endfor % for d in range(len(dvalues)): - % for vertex in ('-1.0 -1.0 0.0', ' 1.0 -1.0 0.0', ' 1.0 1.0 0.0', '-1.0 1.0 0.0'): + % for vidx, vertex in enumerate(['-1.0 -1.0 -1.0', ' 1.0 -1.0 0.0', ' 1.0 1.0 1.0', '-1.0 1.0 2.0']): ${vertex} \ % for i in range(mat.columns): % for j in range(mat.rows): -${dvalues[(d + i * mat.rows + j) % len(dvalues)]} \ +${dvalues[(d + i * mat.rows + j + vidx) % len(dvalues)]} \ % endfor \ % endfor @@ -105,13 +110,15 @@ ${dvalues[(d + i * mat.rows + j) % len(dvalues)]} \ [test] % for d in range(len(dvalues)): - uniform ${mat.name} expected\ - % for i in range(mat.columns): - % for j in range(mat.rows): - ${dvalues[(d + i * mat.rows + j) % len(dvalues)]}\ + % for vidx in range(4): + uniform ${mat.name} expected${vidx}\ + % for i in range(mat.columns): + % for j in range(mat.rows): + ${dvalues[(d + i * mat.rows + j + vidx) % len(dvalues)]}\ + % endfor % endfor - % endfor + % endfor clear color 0.0 0.0 1.0 0.0 clear draw arrays GL_TRIANGLE_FAN ${d * 4} 4 diff --git a/generated_tests/templates/gen_vs_in_fp64/regular.shader_test.mako b/generated_tests/templates/gen_vs_in_fp64/regular.shader_test.mako index b6fab62..5620cbe 100644 --- a/generated_tests/templates/gen_vs_in_fp64/regular.shader_test.mako +++ b/generated_tests/templates/gen_vs_in_fp64/regular.shader_test.mako @@ -50,7 +50,9 @@ GL_MAX_VERTEX_ATTRIBS >= ${num_vs_in} % endif % for idx, in_type in enumerate(in_types): - uniform ${in_type.name} expected${idx}${'[{}]'.format(arrays[idx]) if arrays[idx] - 1 else ''}; + % for vidx in range(4): + uniform ${in_type.name} expected${idx}${vidx}${'[{}]'.format(arrays[idx]) if arrays[idx] - 1 else ''}; + % endfor % endfor % for idx, in_type in enumerate(in_types): in ${in_type.name} value${idx}${'[{}]'.format(arrays[idx]) if arrays[idx] - 1 else ''}; @@ -63,13 +65,16 @@ out vec4 fs_color; void main() { - gl_Position = vec4(piglit_vertex, 1.0); - % for idx, in_type in enumerate(in_types): - if (value${idx} != expected${idx}) { - fs_color = RED; - return; - } - ## XXX: should this have a break? + gl_Position = vec4(piglit_vertex.x, piglit_vertex.y, 0.0, 1.0); + % for vidx, vertex in enumerate(['-1.0', '0.0', '1.0', '2.0']): + if (piglit_vertex.z == ${vertex}) { + % for idx, in_type in enumerate(in_types): + if (value${idx} != expected${idx}${vidx}) { + fs_color = RED; + return; + } + % endfor + } % endfor fs_color = GREEN; } @@ -101,7 +106,7 @@ void main() % endif % for d in range(len(gl_types_values['double'])): - % for vertex in ('-1.0 -1.0 0.0', ' 1.0 -1.0 0.0', ' 1.0 1.0 0.0', '-1.0 1.0 0.0'): + % for vidx, vertex in enumerate(['-1.0 -1.0 -1.0', ' 1.0 -1.0 0.0', ' 1.0 1.0 1.0', '-1.0 1.0 2.0']): % for idx, in_type in enumerate(in_types): % if idx == position_order - 1: ${vertex} \ @@ -109,7 +114,7 @@ void main() % for i in range(arrays[idx]): % for j in range(in_type.columns): % for k in range(in_type.rows): - ${gl_types_values[gl_types[idx]][(d + (i * in_type.columns + j) * in_type.rows + k) % len(gl_types_values[gl_types[idx]])]} \ + ${gl_types_values[gl_types[idx]][(d + (i * in_type.columns + j) * in_type.rows + k + vidx) % len(gl_types_values[gl_types[idx]])]} \ % endfor \ % endfor @@ -125,16 +130,18 @@ void main() [test] % for d in range(len(gl_types_values['double'])): - % for idx, in_type in enumerate(in_types): - % for i in range(arrays[idx]): - uniform ${in_type.name} expected${idx}${'[{}]'.format(i) if arrays[idx] > 1 else ''}\ - % for j in range(in_type.columns): - % for k in range(in_type.rows): - ## Careful: these are the values for the VBO type, not the uniform type. If we use the hex format they should match or the run will fail. - ${gl_types_values[gl_types[idx]][(d + (i * in_type.columns + j) * in_type.rows + k) % len(gl_types_values[gl_types[idx]])]}\ + % for vidx in range(4): + % for idx, in_type in enumerate(in_types): + % for i in range(arrays[idx]): + uniform ${in_type.name} expected${idx}${vidx}${'[{}]'.format(i) if arrays[idx] > 1 else ''}\ + % for j in range(in_type.columns): + % for k in range(in_type.rows): + ## Careful: these are the values for the VBO type, not the uniform type. If we use the hex format they should match or the run will fail. + ${gl_types_values[gl_types[idx]][(d + (i * in_type.columns + j) * in_type.rows + k + vidx) % len(gl_types_values[gl_types[idx]])]}\ + % endfor % endfor - % endfor + % endfor % endfor % endfor clear color 0.0 0.0 1.0 0.0 -- 2.8.1 _______________________________________________ Piglit mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/piglit
