[Piglit] [PATCH] ext_texture_norm16-render: add more API coverage
Alejandro Piñeiro
apinheiro at igalia.com
Tue Jul 24 13:44:18 UTC 2018
Reviewed-by: Alejandro Piñeiro <apinheiro at 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.palli at 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.
> */
More information about the Piglit
mailing list