Reviewed-by: Alejandro Piñeiro <apinhe...@igalia.com>

On 23/07/18 14:16, Tapani Pälli wrote:
> Add tests for glRenderbufferStorage and glCopyTexImage2D.
>
> Signed-off-by: Tapani Pälli <tapani.pa...@intel.com>
> ---
>  tests/spec/ext_texture_norm16/render.c | 53 
> ++++++++++++++++++++++++++++++++--
>  1 file changed, 50 insertions(+), 3 deletions(-)
>
> diff --git a/tests/spec/ext_texture_norm16/render.c 
> b/tests/spec/ext_texture_norm16/render.c
> index a6011e3f7..46cc7c91b 100644
> --- a/tests/spec/ext_texture_norm16/render.c
> +++ b/tests/spec/ext_texture_norm16/render.c
> @@ -173,14 +173,12 @@ generate_data(const struct fmt_test *test)
>  }
>  
>  static GLuint
> -create_texture(const struct fmt_test *test)
> +create_empty_texture()
>  {
>       GLuint tex;
>       glGenTextures(1, &tex);
>       glBindTexture(GL_TEXTURE_2D, tex);
>  
> -     generate_data(test);
> -
>       glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
>       glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
>       glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
> @@ -189,6 +187,25 @@ create_texture(const struct fmt_test *test)
>       return tex;
>  }
>  
> +static GLuint
> +create_texture(const struct fmt_test *test)
> +{
> +     GLuint tex = create_empty_texture();
> +     generate_data(test);
> +     return tex;
> +}
> +
> +static GLuint
> +create_rbo(const struct fmt_test *test)
> +{
> +     GLuint rbo;
> +     glGenRenderbuffers(1, &rbo);
> +     glBindRenderbuffer(GL_RENDERBUFFER, rbo);
> +     glRenderbufferStorage(GL_RENDERBUFFER, test->iformat, piglit_width,
> +                           piglit_height);
> +     return rbo;
> +}
> +
>  static GLuint
>  create_fbo(const struct fmt_test *test, GLuint *tex)
>  {
> @@ -362,6 +379,21 @@ test_format(const struct fmt_test *test)
>               return pass;
>       }
>  
> +     /* Test glRenderbufferStorage. */
> +     GLuint rbo = create_rbo(test);
> +     if (!rbo || !piglit_check_gl_error(GL_NO_ERROR)) {
> +             piglit_report_subtest_result(PIGLIT_FAIL,
> +                                          "format 0x%x RBO test",
> +                                          test->iformat);
> +             pass &= false;
> +     } else {
> +             piglit_report_subtest_result(PIGLIT_PASS,
> +                                          "format 0x%x RBO test",
> +                                          test->iformat);
> +     }
> +     glDeleteRenderbuffers(1, &rbo);
> +
> +     /* Create framebuffer object. */
>       GLuint fbo_tex;
>       const GLuint fbo = create_fbo(test, &fbo_tex);
>  
> @@ -375,6 +407,21 @@ test_format(const struct fmt_test *test)
>  
>       render_texture(texture, GL_TEXTURE_2D, fbo);
>  
> +     /* Test glCopyTexImage2D by copying current fbo content to
> +      * a texture, rendering copy back to fbo and verifying fbo contents.
> +      */
> +     GLuint tmp_tex = create_empty_texture();
> +     glCopyTexImage2D(GL_TEXTURE_2D, 0, test->iformat, 0, 0, piglit_width,
> +                      piglit_height, 0);
> +
> +     render_texture(tmp_tex, GL_TEXTURE_2D, fbo);
> +
> +     /* If format can be read, verify contents. */
> +     if (test->can_read)
> +             pass &= verify_contents(test);
> +
> +     glDeleteTextures(1, &tmp_tex);
> +
>       /* If GL_EXT_copy_image is supported then create another
>        * texture, copy contents and render result to fbo.
>        */

_______________________________________________
Piglit mailing list
Piglit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/piglit

Reply via email to