[Piglit] [PATCH] arb_texture_buffer_object_rgb32: add support for RGB32 formats to formats test

Dave Airlie airlied at gmail.com
Fri Dec 14 19:26:30 PST 2012


This adds support to test the rgb32 formats in the GL4.x extension.

Signed-off-by: Dave Airlie <airlied at redhat.com>
---
 tests/spec/arb_texture_buffer_object/formats.c | 29 +++++++++++++++++++++++---
 1 file changed, 26 insertions(+), 3 deletions(-)

diff --git a/tests/spec/arb_texture_buffer_object/formats.c b/tests/spec/arb_texture_buffer_object/formats.c
index f0b690a..b89781e 100644
--- a/tests/spec/arb_texture_buffer_object/formats.c
+++ b/tests/spec/arb_texture_buffer_object/formats.c
@@ -35,6 +35,7 @@ enum channels {
 	I,
 	R,
 	RG,
+	RGB,
 	RGBA,
 };
 
@@ -127,11 +128,15 @@ static const struct format {
 	{ GL_RG8UI,                      GL_UNSIGNED_BYTE,  2,        false,    RG },
 	{ GL_RG16UI,                     GL_UNSIGNED_SHORT, 2,        false,    RG },
 	{ GL_RG32UI,                     GL_UNSIGNED_INT,   2,        false,    RG },
+
+	{ GL_RGB32F,                     GL_FLOAT,          3,        false,    RGB },
+	{ GL_RGB32I,                     GL_INT,            3,        false,    RGB },
+	{ GL_RGB32UI,                    GL_UNSIGNED_INT,   3,        false,    RGB },
 };
 
 bool test_vs;
 bool test_arb;
-
+bool test_rgb32;
 struct program {
 	GLuint prog;
 	int pos_location;
@@ -216,7 +221,12 @@ get_expected_f(const struct format *format, int sample, float *expected)
 		expected[2] = chans[2];
 		expected[3] = chans[3];
 		break;
-
+	case RGB:
+		expected[0] = chans[0];
+		expected[1] = chans[1];
+		expected[2] = chans[2];
+		expected[3] = 1.0;
+		break;
 	case RG:
 		expected[0] = chans[0];
 		expected[1] = chans[1];
@@ -304,7 +314,12 @@ get_expected_i(const struct format *format, int sample, uint32_t *expected)
 		expected[2] = chans[2];
 		expected[3] = chans[3];
 		break;
-
+	case RGB:
+		expected[0] = chans[0];
+		expected[1] = chans[1];
+		expected[2] = chans[2];
+		expected[3] = 1.0;
+		break;
 	case RG:
 		expected[0] = chans[0];
 		expected[1] = chans[1];
@@ -362,6 +377,7 @@ test_format(int format_index)
 		       format->channels == L ||
 		       format->channels == LA ||
 		       format->channels == A);
+	bool is_rgb32 = (format->channels == RGB);
 	bool pass = true;
 	int data_components, num_samples;
 	int i;
@@ -390,6 +406,9 @@ test_format(int format_index)
 	if (test_arb != is_arb)
 		return PIGLIT_SKIP;
 
+	if (is_rgb32 && !test_rgb32)
+		return PIGLIT_SKIP;
+
 	/* These didn't exist in the extension before being promoted to
 	 * GL 3.1.
 	 */
@@ -685,6 +704,10 @@ piglit_init(int argc, char **argv)
 	} else {
 		if (piglit_get_gl_version() < 31)
 			piglit_require_extension("GL_ARB_texture_buffer_object");
+
+		if (piglit_is_extension_supported("GL_ARB_texture_buffer_object_rgb32"))
+			test_rgb32 = true;
+
 	}
 
 	init_programs();
-- 
1.8.0.1



More information about the Piglit mailing list