On 1 December 2013 00:24, Chris Forbes <chr...@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 <chr...@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 <stereotype...@gmail.com> > } > } > } > -- > 1.8.4.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