summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHenri Verbeet <hverbeet@gmail.com>2011-03-09 21:16:46 +0100
committerHenri Verbeet <hverbeet@gmail.com>2011-03-09 21:19:03 +0100
commite6e3868e7c805efcbbf70958d37325079d4e3038 (patch)
treebfeb46395f9f19ae0d2d0f16868bda1250ad2d92
parent6e86df5109c4d1c3163d848b2ae7c4c34ceb63d2 (diff)
fbo-srgb-blit: Also test EXT_framebuffer_sRGB.
-rw-r--r--tests/fbo/fbo-srgb-blit.c33
1 files changed, 26 insertions, 7 deletions
diff --git a/tests/fbo/fbo-srgb-blit.c b/tests/fbo/fbo-srgb-blit.c
index 712640107..ea393d329 100644
--- a/tests/fbo/fbo-srgb-blit.c
+++ b/tests/fbo/fbo-srgb-blit.c
@@ -37,6 +37,7 @@ int piglit_window_mode = GLUT_DOUBLE | GLUT_RGB;
static GLuint src_tex, dst_tex;
static GLuint src_fbo, dst_fbo;
static uint32_t *tex_data;
+static bool has_fb_srgb;
static void blit_rect(GLenum src_format, GLenum dst_format, float x, float y, float w, float h, bool stretch)
{
@@ -49,13 +50,25 @@ static void blit_rect(GLenum src_format, GLenum dst_format, float x, float y, fl
glBindFramebufferEXT(GL_READ_FRAMEBUFFER_EXT, src_fbo);
glFramebufferTexture2DEXT(GL_READ_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, src_tex, 0);
+ if (has_fb_srgb)
+ glEnable(GL_FRAMEBUFFER_SRGB_EXT);
glBindFramebufferEXT(GL_DRAW_FRAMEBUFFER_EXT, dst_fbo);
glFramebufferTexture2DEXT(GL_DRAW_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, dst_tex, 0);
if (stretch)
- glBlitFramebufferEXT(7, 7, 9, 9, 0, 0, 16, 16, GL_COLOR_BUFFER_BIT, GL_LINEAR);
+ {
+ glBlitFramebufferEXT(7, 7, 9, 9, 0, 0, 8, 16, GL_COLOR_BUFFER_BIT, GL_LINEAR);
+ if (has_fb_srgb)
+ glDisable(GL_FRAMEBUFFER_SRGB_EXT);
+ glBlitFramebufferEXT(7, 7, 9, 9, 8, 0, 16, 16, GL_COLOR_BUFFER_BIT, GL_LINEAR);
+ }
else
- glBlitFramebufferEXT(0, 0, 16, 16, 0, 0, 16, 16, GL_COLOR_BUFFER_BIT, GL_LINEAR);
+ {
+ glBlitFramebufferEXT(0, 0, 8, 16, 0, 0, 8, 16, GL_COLOR_BUFFER_BIT, GL_LINEAR);
+ if (has_fb_srgb)
+ glDisable(GL_FRAMEBUFFER_SRGB_EXT);
+ glBlitFramebufferEXT(8, 0, 16, 16, 8, 0, 16, 16, GL_COLOR_BUFFER_BIT, GL_LINEAR);
+ }
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
@@ -78,18 +91,22 @@ enum piglit_result piglit_display(void)
}
expected[] =
{
- {32, 32, {0.11f, 0.16f, 0.21f}},
- {32, 96, {0.37f, 0.44f, 0.50f}},
- {96, 96, {0.11f, 0.16f, 0.21f}},
- {96, 32, {0.37f, 0.44f, 0.50f}},
+ { 16, 32, {0.11f, 0.16f, 0.21f}},
+ { 48, 32, {0.11f, 0.16f, 0.21f}},
+ { 80, 32, {0.37f, 0.44f, 0.50f}},
+ {112, 32, {0.37f, 0.44f, 0.50f}},
+ { 16, 96, {0.37f, 0.44f, 0.50f}},
+ { 48, 96, {0.37f, 0.44f, 0.50f}},
+ { 80, 96, {0.11f, 0.16f, 0.21f}},
+ {112, 96, {0.11f, 0.16f, 0.21f}},
};
GLboolean pass = GL_TRUE;
unsigned int i;
blit_rect(GL_RGBA8, GL_SRGB8_ALPHA8, -1.0f, -1.0f, 1.0f, 1.0f, false);
+ blit_rect(GL_SRGB8_ALPHA8, GL_RGBA8, 0.0f, -1.0f, 1.0f, 1.0f, false);
blit_rect(GL_SRGB8_ALPHA8, GL_RGBA8, -1.0f, 0.0f, 1.0f, 1.0f, true);
blit_rect(GL_RGBA8, GL_SRGB8_ALPHA8, 0.0f, 0.0f, 1.0f, 1.0f, true);
- blit_rect(GL_SRGB8_ALPHA8, GL_RGBA8, 0.0f, -1.0f, 1.0f, 1.0f, false);
for (i = 0; i < sizeof(expected) / sizeof(*expected); ++i)
{
@@ -108,6 +125,8 @@ void piglit_init(int argc, char **argv)
piglit_require_extension("GL_EXT_framebuffer_object");
piglit_require_extension("GL_EXT_framebuffer_blit");
piglit_require_extension("GL_EXT_texture_sRGB");
+ if (piglit_is_extension_supported("GL_EXT_framebuffer_sRGB"))
+ has_fb_srgb = true;
tex_data = malloc(16 * 16 * sizeof(*tex_data));
for (i = 0; i < 16 * 16; ++i)