diff options
author | Dave Airlie <[email protected]> | 2011-01-28 14:16:00 +1000 |
---|---|---|
committer | Dave Airlie <[email protected]> | 2011-02-05 17:06:30 +1000 |
commit | 88ffa9ce5b8e5fe2b93238f8b9a7a888be28324e (patch) | |
tree | f59e467d5cc03f938f9c4326c72029b9ef08dbc9 /src/mesa/drivers/dri | |
parent | 5c3f1cdbbeb4d787bad7729ccd3f10aa78d113ac (diff) |
mesa/965: add support for GL_EXT_framebuffer_sRGB (v2)
This adds i965 support for GL_EXT_framebuffer_sRGB, it introduces a new
constant to say that the driver can support sRGB enabled FBOs since enabling
the extension doesn't mean the driver can actually support sRGB.
Also adds the suggested state flush in the core code suggested by Brian.
fix the ARB_fbo color encoding.
Signed-off-by: Dave Airlie <[email protected]>
Diffstat (limited to 'src/mesa/drivers/dri')
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_wm_surface_state.c | 5 | ||||
-rw-r--r-- | src/mesa/drivers/dri/intel/intel_context.c | 1 | ||||
-rw-r--r-- | src/mesa/drivers/dri/intel/intel_extensions.c | 1 |
3 files changed, 6 insertions, 1 deletions
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 a372554555c..c931df3c605 100644 --- a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c +++ b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c @@ -446,7 +446,10 @@ brw_update_renderbuffer_surface(struct brw_context *brw, case MESA_FORMAT_SARGB8: /* without GL_EXT_framebuffer_sRGB we shouldn't bind sRGB surfaces to the blend/update as sRGB */ - surf.ss0.surface_format = BRW_SURFACEFORMAT_B8G8R8A8_UNORM; + if (ctx->Color.sRGBEnabled) + surf.ss0.surface_format = brw_format_for_mesa_format[irb->Base.Format]; + else + surf.ss0.surface_format = BRW_SURFACEFORMAT_B8G8R8A8_UNORM; break; default: surf.ss0.surface_format = brw_format_for_mesa_format[irb->Base.Format]; diff --git a/src/mesa/drivers/dri/intel/intel_context.c b/src/mesa/drivers/dri/intel/intel_context.c index 2a5029964be..432a22a7c3c 100644 --- a/src/mesa/drivers/dri/intel/intel_context.c +++ b/src/mesa/drivers/dri/intel/intel_context.c @@ -807,6 +807,7 @@ intelInitContext(struct intel_context *intel, meta_init_metaops(ctx, &intel->meta); if (intel->gen >= 4) { + ctx->Const.sRGBCapable = GL_TRUE; if (MAX_WIDTH > 8192) ctx->Const.MaxRenderbufferSize = 8192; } else { diff --git a/src/mesa/drivers/dri/intel/intel_extensions.c b/src/mesa/drivers/dri/intel/intel_extensions.c index 747e9dcb717..febc1d4f859 100644 --- a/src/mesa/drivers/dri/intel/intel_extensions.c +++ b/src/mesa/drivers/dri/intel/intel_extensions.c @@ -175,6 +175,7 @@ static const struct dri_extension brw_extensions[] = { { "GL_ARB_texture_non_power_of_two", NULL }, { "GL_ARB_texture_rg", NULL }, { "GL_EXT_draw_buffers2", GL_EXT_draw_buffers2_functions }, + { "GL_EXT_framebuffer_sRGB", NULL }, { "GL_EXT_shadow_funcs", NULL }, { "GL_EXT_stencil_two_side", GL_EXT_stencil_two_side_functions }, { "GL_EXT_texture_sRGB", NULL }, |