From 3a8cf3357abb50d4ee11cfb801f965e3df7592fb Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Tue, 24 Jan 2012 16:32:36 -0800 Subject: [PATCH] i965: Don't allow rendering to non-GL_RED/RG/RGBA integer textures. Fixes piglit EXT_texture_integer/fbo-blending. --- src/mesa/drivers/dri/i965/brw_wm_surface_state.c | 11 +++++++++++ 1 file changed, 11 insertions(+) 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 bdce057366e..51d3a46245f 100644 --- a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c +++ b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c @@ -563,6 +563,17 @@ brw_render_target_supported(struct intel_context *intel, struct brw_context *brw = brw_context(&intel->ctx); gl_format format = rb->Format; + /* Many integer formats are promoted to RGBA (like XRGB8888 is), which means + * we would consider them renderable even though we don't have surface + * support for their alpha behavior and don't have the blending unit + * available to fake it like we do for XRGB8888. Force them to being + * unsupported. + */ + if ((rb->_BaseFormat != GL_RGBA && + rb->_BaseFormat != GL_RG && + rb->_BaseFormat != GL_RED) && _mesa_is_format_integer_color(format)) + return false; + return brw->format_supported_as_render_target[format]; } -- 2.30.2