On Tue, Sep 27, 2016 at 09:22:01AM -0700, Jason Ekstrand wrote: > HiZ buffers can be multisampled and, on Broadwell and earlier, simply using > interleaved multisampling with a compression block size of 8x4 samples > yields the correct HiZ surface size calculations. Unfortunately, > choose_msaa_layout was rejecting multisampled HiZ buffers because of format > checks. Now that we have a simple helper for determining if a format > supports multisampling, that's an easy enough issue to fix. > > Signed-off-by: Jason Ekstrand <ja...@jlekstrand.net> > Reviewed-by: Chad Versace <chadvers...@chromium.org> > --- > src/intel/isl/isl.c | 4 +++- > src/intel/isl/isl_format.c | 11 +++++++++-- > 2 files changed, 12 insertions(+), 3 deletions(-) >
This patch is Reviewed-by: Nanley Chery <nanley.g.ch...@intel.com> > diff --git a/src/intel/isl/isl.c b/src/intel/isl/isl.c > index 185984d..33d7079 100644 > --- a/src/intel/isl/isl.c > +++ b/src/intel/isl/isl.c > @@ -572,7 +572,6 @@ isl_calc_phys_level0_extent_sa(const struct isl_device > *dev, > assert(info->depth == 1); > assert(info->levels == 1); > assert(isl_format_supports_multisampling(dev->info, info->format)); > - assert(fmtl->bw == 1 && fmtl->bh == 1); > > *phys_level0_sa = (struct isl_extent4d) { > .w = info->width, > @@ -584,6 +583,9 @@ isl_calc_phys_level0_extent_sa(const struct isl_device > *dev, > isl_msaa_interleaved_scale_px_to_sa(info->samples, > &phys_level0_sa->w, > &phys_level0_sa->h); > + > + phys_level0_sa->w = isl_align(phys_level0_sa->w, fmtl->bw); > + phys_level0_sa->h = isl_align(phys_level0_sa->h, fmtl->bh); > break; > } > break; > diff --git a/src/intel/isl/isl_format.c b/src/intel/isl/isl_format.c > index f3429be..e373e49 100644 > --- a/src/intel/isl/isl_format.c > +++ b/src/intel/isl/isl_format.c > @@ -444,9 +444,16 @@ isl_format_supports_multisampling(const struct > brw_device_info *devinfo, > * - any compressed texture format (BC*) > * - any YCRCB* format > * > - * The restriction on the format's size is removed on Broadwell. > + * The restriction on the format's size is removed on Broadwell. Also, > + * there is an exception for HiZ which we treat as a compressed format and > + * is allowed to be multisampled on Broadwell and earlier. > */ > - if (devinfo->gen < 8 && isl_format_get_layout(format)->bpb > 64) { > + if (format == ISL_FORMAT_HIZ) { > + /* On SKL+, HiZ is always single-sampled even when the primary surface > + * is multisampled. See also isl_surf_get_hiz_surf(). > + */ > + return devinfo->gen <= 8; > + } else if (devinfo->gen < 8 && isl_format_get_layout(format)->bpb > 64) { > return false; > } else if (isl_format_is_compressed(format)) { > return false; > -- > 2.5.0.400.gff86faf > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev