diff options
author | Henri Verbeet <hverbeet@gmail.com> | 2011-03-09 21:16:46 +0100 |
---|---|---|
committer | Henri Verbeet <hverbeet@gmail.com> | 2011-03-09 21:19:03 +0100 |
commit | e6e3868e7c805efcbbf70958d37325079d4e3038 (patch) | |
tree | bfeb46395f9f19ae0d2d0f16868bda1250ad2d92 | |
parent | 6e86df5109c4d1c3163d848b2ae7c4c34ceb63d2 (diff) |
fbo-srgb-blit: Also test EXT_framebuffer_sRGB.
-rw-r--r-- | tests/fbo/fbo-srgb-blit.c | 33 |
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) |