diff options
author | Mark Mueller <MarkKMueller@gmail.com> | 2014-01-01 11:07:27 -0800 |
---|---|---|
committer | Mark Mueller <MarkKMueller@gmail.com> | 2014-01-13 09:46:01 -0800 |
commit | ce5ebb6d6573c80f59ccded85eac39a43608b1ca (patch) | |
tree | 80bd6fb113f3664a3c0ec5a70179a057132eb5c3 | |
parent | 5206389b16ad9622bcadd15ba19880a128428df3 (diff) |
Fix minor issues with non-linear color space
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_blorp.cpp | 8 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_blorp_blit.cpp | 27 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_wm_surface_state.c | 2 |
3 files changed, 17 insertions, 20 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_blorp.cpp b/src/mesa/drivers/dri/i965/brw_blorp.cpp index 107a782080..d99dd74fe1 100644 --- a/src/mesa/drivers/dri/i965/brw_blorp.cpp +++ b/src/mesa/drivers/dri/i965/brw_blorp.cpp @@ -86,7 +86,7 @@ brw_blorp_surface_info::set(struct brw_context *brw, this->array_spacing_lod0 = mt->array_spacing_lod0; this->msaa_layout = mt->msaa_layout; - const GLenum sRGB_sel = sRGB_en ? GL_SKIP_DECODE_EXT : 0; + const GLenum sRGB_sel = !sRGB_en ? GL_SKIP_DECODE_EXT : 0; const struct format_translator *format_info = translate_tex_format(brw, mt->format, sRGB_sel); this->process_format_flags = format_info->process_flags; @@ -100,9 +100,15 @@ brw_blorp_surface_info::set(struct brw_context *brw, /* set up for a render target */ this->brw_surfaceformat = format_info->brw_render_shadow_format; + + _mesa_debug(&brw->ctx, "%s. Using render format: 0x%x for: %s\n", + __FUNCTION__, this->brw_surfaceformat, _mesa_get_format_name(mt->format)); } else { /* set up for a sample target */ this->brw_surfaceformat = format_info->brw_sample_shadow_format; + + _mesa_debug(&brw->ctx, "%s. Using sample format: 0x%x for: %s\n", + __FUNCTION__, this->brw_surfaceformat, _mesa_get_format_name(mt->format)); } #if 0 diff --git a/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp b/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp index eeff8e8969..e306b416fd 100644 --- a/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp +++ b/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp @@ -2432,7 +2432,7 @@ brw_blorp_blit_params::test_formats(struct brw_context *brw, } /* blorp lies about some formats to placate the GPU. */ - const GLenum sRGB_en = brw->ctx.Color.sRGBEnabled ? GL_SKIP_DECODE_EXT : 0; + const GLenum sRGB_en = !brw->ctx.Color.sRGBEnabled ? GL_SKIP_DECODE_EXT : 0; const struct format_translator *src_format_info = translate_tex_format(brw, src_format, sRGB_en); if (src_format_info->process_flags & sample_not_supported_mask) { @@ -2456,22 +2456,10 @@ brw_blorp_blit_params::test_formats(struct brw_context *brw, return false; } - // Revisit - GLenum dst_format_encoding = _mesa_get_format_color_encoding(dst_format); - if (GL_SRGB == dst_format_encoding && dst_format != src_format) { - /* - * There is a piglit test that uses an SRGBA internal format and reads the - * texture back in an SRGBA format, which fails. Other uses are fine. - */ - _mesa_debug(ctx, "%s: SRGB target from non SRGB sample format BLTs aren't yet supported.\n", - __FUNCTION__); - return false; - } - const bool raw_dst = raw_sample & dst_format_info->process_flags; const bool raw_src = raw_sample & src_format_info->process_flags; - if (raw_dst || raw_src && dst_format != src_format) { - _mesa_debug(ctx, "%s: Blorp doesn't yet convert from or to raw formats" + if ((raw_dst || raw_src) && dst_format != src_format) { + _mesa_debug(ctx, "%s: Blorp doesn't yet convert from or to BRW raw formats" " dst: %s: src: %s.\n", __FUNCTION__, _mesa_get_format_name(dst_format), _mesa_get_format_name(src_format)); @@ -2537,6 +2525,7 @@ brw_blorp_blit_params::brw_blorp_blit_params(struct brw_context *brw, struct gl_context *ctx = &brw->ctx; const struct gl_framebuffer *read_fb = ctx->ReadBuffer; + src.set(brw, src_mt, src_level, src_layer, false, brw->ctx.Color.sRGBEnabled); dst.set(brw, dst_mt, dst_level, dst_layer, true, brw->ctx.Color.sRGBEnabled); @@ -2564,7 +2553,9 @@ brw_blorp_blit_params::brw_blorp_blit_params(struct brw_context *brw, dst.brw_surfaceformat = format_info->brw_render_shadow_format; src.brw_surfaceformat = format_info->brw_sample_shadow_format; - _mesa_debug(&brw->ctx, "%s doing blt in sRGB format", __FUNCTION__); + _mesa_debug(&brw->ctx, "%s doing blt in sRGB format: %s from 0x%x to 0x%x\n", + __FUNCTION__, _mesa_get_format_name(dst_mt->format), + src.brw_surfaceformat, dst.brw_surfaceformat); } /* When doing a multisample resolve of a GL_LUMINANCE32F or GL_INTENSITY32F @@ -2606,7 +2597,7 @@ brw_blorp_blit_params::brw_blorp_blit_params(struct brw_context *brw, wm_prog_key.src_texture_data_type = BRW_REGISTER_TYPE_D; break; default: - _mesa_debug(&brw->ctx, "Unrecognized blorp format"); + _mesa_debug(&brw->ctx, "Unrecognized blorp format\n"); break; } @@ -2628,7 +2619,7 @@ brw_blorp_blit_params::brw_blorp_blit_params(struct brw_context *brw, wm_prog_key.dst_texture_data_type = BRW_REGISTER_TYPE_D; break; default: - _mesa_debug(&brw->ctx, "Unrecognized blorp format"); + _mesa_debug(&brw->ctx, "Unrecognized blorp format\n"); break; } diff --git a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c index cd5b0a8084..1c3d81168e 100644 --- a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c +++ b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c @@ -630,7 +630,7 @@ brw_update_renderbuffer_surface(struct brw_context *brw, surf = brw_state_batch(brw, AUB_TRACE_SURFACE_STATE, 6 * 4, 32, &brw->wm.base.surf_offset[surf_index]); - const GLenum sRGB_sel = ctx->Color.sRGBEnabled ? GL_SKIP_DECODE_EXT : 0; + const GLenum sRGB_sel = !ctx->Color.sRGBEnabled ? GL_SKIP_DECODE_EXT : 0; const struct format_translator *format_info = translate_tex_format(brw, intel_rb_format(irb), sRGB_sel); |