[Mesa-dev] [PATCH V3 06/10] i965/Gen7: Include bitfield in the sampler key for CMS layout

Paul Berry stereotype441 at gmail.com
Mon Dec 2 08:04:43 PST 2013


On 1 December 2013 00:24, Chris Forbes <chrisf at ijw.co.nz> wrote:

> We need to emit extra shader code in this case to sample the
> MCS surface first; we can't just blindly do this all the time
> since IVB will sometimes try to access the MCS surface even if
> disabled.
>
> V3: Use actual MSAA layout from the texture's mt, rather
> then computing what would have been used based on the format.
> This is simpler and less fragile - there's at least one case where
> we might want to have a texture's MSAA layout change based on what
> the app does (CMS SINT falling back to UMS if the app ever attempts
> to render to it with a channel disabled.)
>
> This also obsoletes V2's 1/10 -- compute_msaa_layout can now remain
> an implementation detail of the miptree code.
>
> Signed-off-by: Chris Forbes <chrisf at ijw.co.nz>
> ---
>  src/mesa/drivers/dri/i965/brw_program.h | 5 +++++
>  src/mesa/drivers/dri/i965/brw_wm.c      | 8 ++++++++
>  2 files changed, 13 insertions(+)
>
> diff --git a/src/mesa/drivers/dri/i965/brw_program.h
> b/src/mesa/drivers/dri/i965/brw_program.h
> index 07be4a0..51182ea 100644
> --- a/src/mesa/drivers/dri/i965/brw_program.h
> +++ b/src/mesa/drivers/dri/i965/brw_program.h
> @@ -45,6 +45,11 @@ struct brw_sampler_prog_key_data {
>      * For RG32F, gather4's channel select is broken.
>      */
>     uint16_t gather_channel_quirk_mask;
> +
> +   /**
> +    * Whether this sampler uses the compressed multisample surface layout.
> +    */
> +   uint16_t compressed_multisample_layout_mask;
>  };
>
>  #ifdef __cplusplus
> diff --git a/src/mesa/drivers/dri/i965/brw_wm.c
> b/src/mesa/drivers/dri/i965/brw_wm.c
> index bc1480c..3977395 100644
> --- a/src/mesa/drivers/dri/i965/brw_wm.c
> +++ b/src/mesa/drivers/dri/i965/brw_wm.c
> @@ -38,6 +38,7 @@
>  #include "main/samplerobj.h"
>  #include "program/prog_parameter.h"
>  #include "program/program.h"
> +#include "intel_mipmap_tree.h"
>
>  #include "glsl/ralloc.h"
>
> @@ -356,6 +357,13 @@ brw_populate_sampler_prog_key_data(struct gl_context
> *ctx,
>              if (img->InternalFormat == GL_RG32F)
>                 key->gather_channel_quirk_mask |= 1 << s;
>           }
> +
> +         /* If this is a multisample sampler, and uses the CMS MSAA
> layout, then
> +          * we need to emit slightly different code to first sample the
> MCS surface.
> +          */
> +         if (brw->gen >= 7 && intel_texture_object((struct
> gl_texture_object *)t)->mt->msaa_layout == INTEL_MSAA_LAYOUT_CMS) {
> +            key->compressed_multisample_layout_mask |= 1 << s;
> +         }
>

We prefer to keep source lines limited to <80 columns when possible.  Maybe
rewrite like this?

         /* If this is a multisample sampler, and uses the CMS MSAA layout,
          * then we need to emit slightly different code to first sample the
          * MCS surface.
          */
         struct intel_texture_object *intel_tex =
            intel_texture_object((struct gl_texture_object *)t);
         if (brw->gen >= 7 &&
             intel_tex->mt->msaa_layout == INTEL_MSAA_LAYOUT_CMS) {
            key->compressed_multisample_layout_mask |= 1 << s;
         }

With that fixed, this patch is:

Reviewed-by: Paul Berry <stereotype441 at gmail.com>


>        }
>     }
>  }
> --
> 1.8.4.2
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20131202/289eaac9/attachment.html>


More information about the mesa-dev mailing list