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

Chris Forbes chrisf at ijw.co.nz
Mon Dec 2 09:53:50 PST 2013


Yes, that's nicer. Will fix.

On Tue, Dec 3, 2013 at 5:04 AM, Paul Berry <stereotype441 at gmail.com> wrote:
> 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
>
>


More information about the mesa-dev mailing list