[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