[Piglit] [PATCH] ext_texture_norm16-render: add more API coverage
Tapani Pälli
tapani.palli at intel.com
Mon Jul 23 12:16:32 UTC 2018
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.
*/
--
2.14.4
More information about the Piglit
mailing list