On 4 February 2013 21:48, Chris Forbes <chr...@ijw.co.nz> wrote: > Gen7 has an erratum affecting the ld_mcs message, making it unsafe to > use when the surface doesn't have an associated MCS. >
Would you mind quoting the exact text of the erratum here (and citing the page number)? With that addition, this patch is: Reviewed-by: Paul Berry <stereotype...@gmail.com> > > To allow the shader to treat all surfaces uniformly, force UMS if the > surface is to be used as a multisample texture, even if CMS would have > been possible. > > Signed-off-by: Chris Forbes <chr...@ijw.co.nz> > --- > src/mesa/drivers/dri/intel/intel_mipmap_tree.c | 15 ++++++++++++--- > 1 file changed, 12 insertions(+), 3 deletions(-) > > diff --git a/src/mesa/drivers/dri/intel/intel_mipmap_tree.c > b/src/mesa/drivers/dri/intel/intel_mipmap_tree.c > index e68285c..be13c07 100644 > --- a/src/mesa/drivers/dri/intel/intel_mipmap_tree.c > +++ b/src/mesa/drivers/dri/intel/intel_mipmap_tree.c > @@ -72,7 +72,7 @@ target_to_target(GLenum target) > * created, based on the chip generation and the surface type. > */ > static enum intel_msaa_layout > -compute_msaa_layout(struct intel_context *intel, gl_format format) > +compute_msaa_layout(struct intel_context *intel, gl_format format, GLenum > target) > { > /* Prior to Gen7, all MSAA surfaces used IMS layout. */ > if (intel->gen < 7) > @@ -101,7 +101,16 @@ compute_msaa_layout(struct intel_context *intel, > gl_format format) > assert(intel->gen == 7); > return INTEL_MSAA_LAYOUT_UMS; > } else { > - return INTEL_MSAA_LAYOUT_CMS; > + /* For now, if we're going to be texturing from this surface, > + * force UMS, so that the shader doesn't have to do different > things > + * based on whether there's a multisample control surface > needing sampled first. > + */ > + if (target == GL_TEXTURE_2D_MULTISAMPLE || > + target == GL_TEXTURE_2D_MULTISAMPLE_ARRAY) { > + return INTEL_MSAA_LAYOUT_UMS; > + } else { > + return INTEL_MSAA_LAYOUT_CMS; > + } > } > } > } > @@ -150,7 +159,7 @@ intel_miptree_create_layout(struct intel_context > *intel, > > if (num_samples > 1) { > /* Adjust width/height/depth for MSAA */ > - mt->msaa_layout = compute_msaa_layout(intel, format); > + mt->msaa_layout = compute_msaa_layout(intel, format, mt->target); > if (mt->msaa_layout == INTEL_MSAA_LAYOUT_IMS) { > /* In the Sandy Bridge PRM, volume 4, part 1, page 31, it says: > * > -- > 1.8.1.2 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev >
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev