summaryrefslogtreecommitdiffstats
path: root/src/mesa
diff options
context:
space:
mode:
authorEric Anholt <[email protected]>2012-01-24 16:32:36 -0800
committerEric Anholt <[email protected]>2012-01-27 11:46:10 -0800
commit3a8cf3357abb50d4ee11cfb801f965e3df7592fb (patch)
treeff59370e5ced0144b2d7e84ec741162d64b9d991 /src/mesa
parent796f44d77906342e5912e7da6bdba1ba86bab9f0 (diff)
i965: Don't allow rendering to non-GL_RED/RG/RGBA integer textures.
Fixes piglit EXT_texture_integer/fbo-blending.
Diffstat (limited to 'src/mesa')
-rw-r--r--src/mesa/drivers/dri/i965/brw_wm_surface_state.c11
1 files changed, 11 insertions, 0 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 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];
}