summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Mueller <MarkKMueller@gmail.com>2014-01-01 11:07:27 -0800
committerMark Mueller <MarkKMueller@gmail.com>2014-01-13 09:46:01 -0800
commitce5ebb6d6573c80f59ccded85eac39a43608b1ca (patch)
tree80bd6fb113f3664a3c0ec5a70179a057132eb5c3
parent5206389b16ad9622bcadd15ba19880a128428df3 (diff)
Fix minor issues with non-linear color space
-rw-r--r--src/mesa/drivers/dri/i965/brw_blorp.cpp8
-rw-r--r--src/mesa/drivers/dri/i965/brw_blorp_blit.cpp27
-rw-r--r--src/mesa/drivers/dri/i965/brw_wm_surface_state.c2
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);