[Piglit] [PATCH 1/3] tex-srgb: Also test a cleared texture
Nanley Chery
nanleychery at gmail.com
Fri Mar 30 17:52:51 UTC 2018
Test sRGB texturing on a cleared texture. This case is of interest
to Intel GPUs, which will fast-clear the texture.
---
tests/texturing/tex-srgb.c | 45 +++++++++++++++++++++++++++++----------------
1 file changed, 29 insertions(+), 16 deletions(-)
diff --git a/tests/texturing/tex-srgb.c b/tests/texturing/tex-srgb.c
index fa15ef665..96e92a1ff 100644
--- a/tests/texturing/tex-srgb.c
+++ b/tests/texturing/tex-srgb.c
@@ -68,27 +68,35 @@ nonlinear_to_linear(GLubyte cs8)
return table[cs8];
}
-static void fill_level(int level, const GLfloat *color)
+static void fill_level(GLuint tex, int level, const GLfloat *color,
+ bool with_clear)
{
GLfloat *data;
int size = SIZE / (1 << level);
int i;
- /* Update a square inside the texture to red */
- data = malloc(size * size * 4 * sizeof(GLfloat));
- for (i = 0; i < 4 * size * size; i += 4) {
- data[i + 0] = color[0];
- data[i + 1] = color[1];
- data[i + 2] = color[2];
- data[i + 3] = color[3];
- }
- glTexImage2D(GL_TEXTURE_2D, level, GL_SRGB8_ALPHA8, size, size, 0,
- GL_RGBA, GL_FLOAT, data);
- free(data);
+ glBindTexture(GL_TEXTURE_2D, tex);
+ if (with_clear) {
+ glTexImage2D(GL_TEXTURE_2D, level, GL_SRGB8_ALPHA8, size, size,
+ 0, GL_RGBA, GL_FLOAT, NULL);
+ glClearTexImage(tex, level, GL_RGBA, GL_FLOAT, color);
+ } else {
+ /* Update a square inside the texture to red */
+ data = malloc(size * size * 4 * sizeof(GLfloat));
+ for (i = 0; i < 4 * size * size; i += 4) {
+ data[i + 0] = color[0];
+ data[i + 1] = color[1];
+ data[i + 2] = color[2];
+ data[i + 3] = color[3];
+ }
+ glTexImage2D(GL_TEXTURE_2D, level, GL_SRGB8_ALPHA8, size, size,
+ 0, GL_RGBA, GL_FLOAT, data);
+ free(data);
+ }
}
static GLboolean
-srgb_tex_test(int srgb_format)
+srgb_tex_test(bool with_clear)
{
GLboolean pass = GL_TRUE;
float green[] = {0, 0.3, 0.0, 0};
@@ -101,9 +109,9 @@ srgb_tex_test(int srgb_format)
glGenTextures(1, &tex);
- glBindTexture(GL_TEXTURE_2D, tex);
+ fill_level(tex, 0, green, with_clear);
- fill_level(0, green);
+ glBindTexture(GL_TEXTURE_2D, tex);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER,
@@ -154,7 +162,12 @@ piglit_display(void)
{
GLboolean pass = GL_TRUE;
- pass = srgb_tex_test(0);
+ pass = srgb_tex_test(false);
+
+ if (piglit_is_extension_supported("GL_ARB_clear_texture")) {
+ /* This case is of particular interest to Intel GPUs */
+ pass &= srgb_tex_test(true);
+ }
return pass ? PIGLIT_PASS : PIGLIT_FAIL;
}
--
2.16.2
More information about the Piglit
mailing list