From 33202b4876a88b6f54ca7022eadd2875a2d3508a Mon Sep 17 00:00:00 2001 From: Paul Berry Date: Thu, 5 Jul 2012 18:50:56 -0700 Subject: [PATCH] i965/msaa: Enable CMS layout on Gen7 for the formats that support it. Reviewed-by: Chad Versace --- src/mesa/drivers/dri/intel/intel_mipmap_tree.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/mesa/drivers/dri/intel/intel_mipmap_tree.c b/src/mesa/drivers/dri/intel/intel_mipmap_tree.c index 358431b..4e892b2 100644 --- a/src/mesa/drivers/dri/intel/intel_mipmap_tree.c +++ b/src/mesa/drivers/dri/intel/intel_mipmap_tree.c @@ -293,7 +293,24 @@ compute_msaa_layout(struct intel_context *intel, gl_format format) case GL_DEPTH_STENCIL: return INTEL_MSAA_LAYOUT_IMS; default: - return INTEL_MSAA_LAYOUT_UMS; + /* From the Ivy Bridge PRM, Vol4 Part1 p77 ("MCS Enable"): + * + * This field must be set to 0 for all SINT MSRTs when all RT channels + * are not written + * + * In practice this means that we have to disable MCS for all signed + * integer MSAA buffers. The alternative, to disable MCS only when one + * of the render target channels is disabled, is impractical because it + * would require converting between CMS and UMS MSAA layouts on the fly, + * which is expensive. + */ + if (_mesa_get_format_datatype(format) == GL_INT) { + /* TODO: is this workaround needed for future chipsets? */ + assert(intel->gen == 7); + return INTEL_MSAA_LAYOUT_UMS; + } else { + return INTEL_MSAA_LAYOUT_CMS; + } } } -- 2.7.4