On 4 February 2013 21:48, Chris Forbes 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
>
> 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
> ---
> 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