This patch is

Reviewed-by: Ian Romanick <[email protected]>

On 04/06/2015 04:39 PM, Marek Olšák wrote:
> From: Marek Olšák <[email protected]>
> 
> The only allowed primitive type with tessellation is GL_PATCHES, so this is
> the only way to draw rectangles.
> ---
>  tests/shaders/shader_runner.c |  4 ++++
>  tests/util/piglit-util-gl.c   | 22 ++++++++++++++++------
>  tests/util/piglit-util-gl.h   |  5 ++++-
>  3 files changed, 24 insertions(+), 7 deletions(-)
> 
> diff --git a/tests/shaders/shader_runner.c b/tests/shaders/shader_runner.c
> index 20eb26c..dcb9c3e 100644
> --- a/tests/shaders/shader_runner.c
> +++ b/tests/shaders/shader_runner.c
> @@ -2303,6 +2303,10 @@ piglit_display(void)
>                       get_floats(line + 13, c, 8);
>                       piglit_draw_rect_tex(c[0], c[1], c[2], c[3],
>                                            c[4], c[5], c[6], c[7]);
> +             } else if (string_match("draw rect patch", line)) {
> +                     program_must_be_in_use();
> +                     get_floats(line + 15, c, 4);
> +                     piglit_draw_rect_custom(c[0], c[1], c[2], c[3], true);
>               } else if (string_match("draw rect", line)) {
>                       program_must_be_in_use();
>                       get_floats(line + 9, c, 4);
> diff --git a/tests/util/piglit-util-gl.c b/tests/util/piglit-util-gl.c
> index aae6df0..131f63e 100644
> --- a/tests/util/piglit-util-gl.c
> +++ b/tests/util/piglit-util-gl.c
> @@ -656,7 +656,8 @@ required_gl_version_from_glsl_version(unsigned 
> glsl_version)
>   * if not NULL.
>   */
>  void
> -piglit_draw_rect_from_arrays(const void *verts, const void *tex)
> +piglit_draw_rect_from_arrays(const void *verts, const void *tex,
> +                          bool use_patches)
>  {
>       bool use_fixed_function_attributes;
>  
> @@ -754,7 +755,7 @@ piglit_draw_rect_from_arrays(const void *verts, const 
> void *tex)
>                       glEnableVertexAttribArray(PIGLIT_ATTRIB_TEX);
>               }
>  
> -             glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
> +             glDrawArrays(use_patches ? GL_PATCHES : GL_TRIANGLE_STRIP, 0, 
> 4);
>  
>               if (verts)
>                       glDisableVertexAttribArray(PIGLIT_ATTRIB_POS);
> @@ -775,7 +776,7 @@ piglit_draw_rect_from_arrays(const void *verts, const 
> void *tex)
>   * Convenience function to draw an axis-aligned rectangle.
>   */
>  GLvoid
> -piglit_draw_rect(float x, float y, float w, float h)
> +piglit_draw_rect_custom(float x, float y, float w, float h, bool use_patches)
>  {
>       float verts[4][4];
>  
> @@ -796,7 +797,16 @@ piglit_draw_rect(float x, float y, float w, float h)
>       verts[3][2] = 0.0;
>       verts[3][3] = 1.0;
>  
> -     piglit_draw_rect_from_arrays(verts, NULL);
> +     piglit_draw_rect_from_arrays(verts, NULL, use_patches);
> +}
> +
> +/**
> + * Convenience function to draw an axis-aligned rectangle.
> + */
> +GLvoid
> +piglit_draw_rect(float x, float y, float w, float h)
> +{
> +     piglit_draw_rect_custom(x, y, w, h, false);
>  }
>  
>  /**
> @@ -824,7 +834,7 @@ piglit_draw_rect_z(float z, float x, float y, float w, 
> float h)
>       verts[3][2] = z;
>       verts[3][3] = 1.0;
>  
> -     piglit_draw_rect_from_arrays(verts, NULL);
> +     piglit_draw_rect_from_arrays(verts, NULL, false);
>  }
>  
>  /**
> @@ -863,7 +873,7 @@ piglit_draw_rect_tex(float x, float y, float w, float h,
>       tex[3][0] = tx + tw;
>       tex[3][1] = ty + th;
>  
> -     piglit_draw_rect_from_arrays(verts, tex);
> +     piglit_draw_rect_from_arrays(verts, tex, false);
>  }
>  
>  unsigned
> diff --git a/tests/util/piglit-util-gl.h b/tests/util/piglit-util-gl.h
> index 0f8eb81..2196e2c 100644
> --- a/tests/util/piglit-util-gl.h
> +++ b/tests/util/piglit-util-gl.h
> @@ -175,12 +175,15 @@ GLvoid piglit_draw_triangle(float x1, float y1, float 
> x2, float y2,
>                           float x3, float y3);
>  GLvoid piglit_draw_triangle_z(float z, float x1, float y1, float x2, float 
> y2,
>                             float x3, float y3);
> +GLvoid piglit_draw_rect_custom(float x, float y, float w, float h,
> +                            bool use_patches);
>  GLvoid piglit_draw_rect(float x, float y, float w, float h);
>  GLvoid piglit_draw_rect_z(float z, float x, float y, float w, float h);
>  GLvoid piglit_draw_rect_tex(float x, float y, float w, float h,
>                              float tx, float ty, float tw, float th);
>  GLvoid piglit_draw_rect_back(float x, float y, float w, float h);
> -void piglit_draw_rect_from_arrays(const void *verts, const void *tex);
> +void piglit_draw_rect_from_arrays(const void *verts, const void *tex,
> +                               bool use_patches);
>  
>  unsigned short piglit_half_from_float(float val);
>  
> 

_______________________________________________
Piglit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/piglit

Reply via email to