[Piglit] [PATCH] generators/gen_vs_in_fp64: Different VBO values per vertex

Andres Gomez agomez at igalia.com
Wed Jul 13 14:17:38 UTC 2016


Hi,

this patch is still unreviewed.

I'd welcome some help to get this into piglit with guarantees that the
changes are OK. Dylan, could you give it a look? :)

If there is nothing new by the end of this week, I will assume that all
is OK and will proceed to land the patch.

On Wed, 2016-07-06 at 14:40 +0300, Andres Gomez wrote:
> 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 <agomez at igalia.com>
> ---
>  .../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
-- 

Br,

Andres


More information about the Piglit mailing list