[Piglit] [PATCH 04/16] util: Allow non-ES2 code to draw_rect with non-fixed-function arrays

Paul Berry stereotype441 at gmail.com
Tue Aug 27 07:30:07 PDT 2013


On 26 August 2013 11:37, Ian Romanick <idr at freedesktop.org> wrote:

> From: Ian Romanick <ian.d.romanick at intel.com>
>
> This will be used in future commits.
>
> Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>
> Cc: Matt Turner <mattst88 at gmail.com>
> Cc: Paul Berry <stereoytpe441 at gmail.com>
> ---
>  tests/util/piglit-util-gl-common.c | 86
> ++++++++++++++++++++++++--------------
>  tests/util/piglit-util-gl-common.h |  3 +-
>  2 files changed, 56 insertions(+), 33 deletions(-)
>
> diff --git a/tests/util/piglit-util-gl-common.c
> b/tests/util/piglit-util-gl-common.c
> index b5e87bf..c097d8f 100644
> --- a/tests/util/piglit-util-gl-common.c
> +++ b/tests/util/piglit-util-gl-common.c
> @@ -599,46 +599,68 @@ required_gl_version_from_glsl_version(unsigned
> glsl_version)
>   *   float tex[4][2];
>   *
>   * if not NULL.
> + *
> + * \param fixed_function_attribute  Should fixed-function attributes
> (e.g.,
> + *                                  \c glVertexPointer) be used?  In an
> OpenGL
> + *                                  core profile this must be \c true.  In
> + *                                  OpenGL ES the value is ignored.
>   */
>  void
> -piglit_draw_rect_from_arrays(const void *verts, const void *tex)
> +piglit_draw_rect_from_arrays(const void *verts, const void *tex,
> +                             bool fixed_function_attributes)
>  {
> +#if defined(PIGLIT_USE_OPENGL_ES1)
> +#define USE_FF(x) true
> +#elif defined(PIGLIT_USE_OPENGL_ES2) ||  defined(PIGLIT_USE_OPENGL_ES3)
> +#define USE_FF(x) false
> +#elif defined(PIGLIT_USE_OPENGL)
> +#define USE_FF(x) x
> +#else
> +#error "don't know how to draw arrays"
> +#endif
>

The use of defines seems weird here.  Why not just:

#if defined(PIGLIT_USE_OPENGL_ES1)
   const bool use_ff = true;
#elif defined(PIGLIT_USE_OPENGL_ES2) || defined(PIGLIT_USE_OPENGL_ES3)
   const bool use_ff = false;
#elif defined(PIGLIT_USE_OPENGL)
   const bool use_ff = fixed_function_attributes;
#else
#error "don't know how to draw arrays"
#endif


> +
>  #if defined(PIGLIT_USE_OPENGL_ES1) || defined(PIGLIT_USE_OPENGL)
> -       if (verts) {
> -               glVertexPointer(4, GL_FLOAT, 0, verts);
> -               glEnableClientState(GL_VERTEX_ARRAY);
> -       }
> +       if (USE_FF(fixed_function_attributes)) {
> +               if (verts) {
> +                       glVertexPointer(4, GL_FLOAT, 0, verts);
> +                       glEnableClientState(GL_VERTEX_ARRAY);
> +               }
>
> -       if (tex) {
> -               glTexCoordPointer(2, GL_FLOAT, 0, tex);
> -               glEnableClientState(GL_TEXTURE_COORD_ARRAY);
> -       }
> +               if (tex) {
> +                       glTexCoordPointer(2, GL_FLOAT, 0, tex);
> +                       glEnableClientState(GL_TEXTURE_COORD_ARRAY);
> +               }
>
> -       glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
> +               glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
>
> -       if (verts)
> -               glDisableClientState(GL_VERTEX_ARRAY);
> -       if (tex)
> -               glDisableClientState(GL_TEXTURE_COORD_ARRAY);
> -#elif defined(PIGLIT_USE_OPENGL_ES2) ||defined(PIGLIT_USE_OPENGL_ES3)
> -       if (verts) {
> -               glVertexAttribPointer(PIGLIT_ATTRIB_POS, 4, GL_FLOAT,
> GL_FALSE, 0, verts);
> -               glEnableVertexAttribArray(PIGLIT_ATTRIB_POS);
> +               if (verts)
> +                       glDisableClientState(GL_VERTEX_ARRAY);
> +               if (tex)
> +                       glDisableClientState(GL_TEXTURE_COORD_ARRAY);
>         }
> +#endif
> +#if defined(PIGLIT_USE_OPENGL_ES2) || defined(PIGLIT_USE_OPENGL_ES3) \
> +       || defined(PIGLIT_USE_OPENGL)
> +       if (!USE_FF(fixed_function_attributes)) {
> +               if (verts) {
> +                       glVertexAttribPointer(PIGLIT_ATTRIB_POS, 4,
> GL_FLOAT,
> +                                             GL_FALSE, 0, verts);
> +                       glEnableVertexAttribArray(PIGLIT_ATTRIB_POS);
> +               }
>
> -       if (tex) {
> -               glVertexAttribPointer(PIGLIT_ATTRIB_TEX, 2, GL_FLOAT,
> GL_FALSE, 0, tex);
> -               glEnableVertexAttribArray(PIGLIT_ATTRIB_TEX);
> -       }
> +               if (tex) {
> +                       glVertexAttribPointer(PIGLIT_ATTRIB_TEX, 2,
> GL_FLOAT,
> +                                             GL_FALSE, 0, tex);
> +                       glEnableVertexAttribArray(PIGLIT_ATTRIB_TEX);
> +               }
>
> -       glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
> +               glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
>
> -       if (verts)
> -               glDisableVertexAttribArray(PIGLIT_ATTRIB_POS);
> -       if (tex)
> -               glDisableVertexAttribArray(PIGLIT_ATTRIB_TEX);
> -#else
> -#      error "don't know how to draw arrays"
> +               if (verts)
> +                       glDisableVertexAttribArray(PIGLIT_ATTRIB_POS);
> +               if (tex)
> +                       glDisableVertexAttribArray(PIGLIT_ATTRIB_TEX);
> +       }
>  #endif
>  }
>
> @@ -667,7 +689,7 @@ 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, true);
>  }
>
>  /**
> @@ -695,7 +717,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, true);
>  }
>
>  /**
> @@ -734,5 +756,5 @@ 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, true);
>  }
> diff --git a/tests/util/piglit-util-gl-common.h
> b/tests/util/piglit-util-gl-common.h
> index ef87514..44e46ac 100644
> --- a/tests/util/piglit-util-gl-common.h
> +++ b/tests/util/piglit-util-gl-common.h
> @@ -162,7 +162,8 @@ 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 fixed_function_attributes);
>
>  unsigned short piglit_half_from_float(float val);
>
> --
> 1.8.1.4
>
> _______________________________________________
> Piglit mailing list
> Piglit at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/piglit
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/piglit/attachments/20130827/7ed98a25/attachment.html>


More information about the Piglit mailing list