--- tests/util/piglit-util-gl.c | 46 +++++++++++++++++++++++++++++++++++++++++++++ tests/util/piglit-util-gl.h | 2 ++ 2 files changed, 48 insertions(+)
diff --git a/tests/util/piglit-util-gl.c b/tests/util/piglit-util-gl.c index 43b38e5..8fe5f98 100644 --- a/tests/util/piglit-util-gl.c +++ b/tests/util/piglit-util-gl.c @@ -2677,6 +2677,52 @@ piglit_rgbw_texture(GLenum internalFormat, int w, int h, GLboolean mip, } /** + * Generate a 4 texel RGBA 1D texture with texels red, green, blue, white, + * edge clamping and NEAREST filtering. + */ +GLuint +piglit_rgbw_texture_1d(void) +{ + GLuint tex; + glGenTextures(1, &tex); + glBindTexture(GL_TEXTURE_1D, tex); + glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + + static const float img[] = {1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1}; + glTexImage1D(GL_TEXTURE_1D, 0, GL_RGBA, 4, 0, GL_RGBA, GL_FLOAT, img); + + return tex; +} + +/** + * Generate a 2 by 2 by 2 texel RGBA 3D texture with texels red, green, blue, + * white, yellow, magenta, cyan, black, edge clamping and NEAREST filtering. + */ +GLuint +piglit_rgbw_texture_3d(void) +{ + GLuint tex; + glGenTextures(1, &tex); + glBindTexture(GL_TEXTURE_3D, tex); + glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + + static const float img[] = {1, 0, 0, 1, 0, 1, 0, 1, + 0, 0, 1, 1, 1, 1, 1, 1, + 1, 1, 0, 1, 1, 0, 1, 1, + 0, 1, 1, 1, 0, 0, 0, 1}; + glTexImage3D(GL_TEXTURE_3D, 0, GL_RGBA, 2, 2, 2, 0, GL_RGBA, GL_FLOAT, img); + + return tex; +} + +/** * Generates a texture with the given integer internal format. * Pixel data will be filled as R = x, G = y, B = b, A = a. */ diff --git a/tests/util/piglit-util-gl.h b/tests/util/piglit-util-gl.h index e8728d0..73a38f7 100644 --- a/tests/util/piglit-util-gl.h +++ b/tests/util/piglit-util-gl.h @@ -301,6 +301,8 @@ GLfloat *piglit_rgbw_image(GLenum internalFormat, int w, int h, GLubyte *piglit_rgbw_image_ubyte(int w, int h, GLboolean alpha); GLuint piglit_rgbw_texture(GLenum internalFormat, int w, int h, GLboolean mip, GLboolean alpha, GLenum basetype); +GLuint piglit_rgbw_texture_1d(void); +GLuint piglit_rgbw_texture_3d(void); GLuint piglit_integer_texture(GLenum internalFormat, int w, int h, int b, int a); GLuint piglit_depth_texture(GLenum target, GLenum format, int w, int h, int d, GLboolean mip); GLuint piglit_array_texture(GLenum target, GLenum format, int w, int h, int d, GLboolean mip); -- 2.7.4 _______________________________________________ Piglit mailing list Piglit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/piglit