[Mesa-dev] [PATCH 2/3] isl: add MCS width constraint 16 samples

Lionel Landwerlin lionel.g.landwerlin at intel.com
Mon Feb 20 19:38:48 UTC 2017


On 20/02/17 19:12, Jason Ekstrand wrote:
> On Mon, Feb 20, 2017 at 10:33 AM, Lionel Landwerlin 
> <lionel.g.landwerlin at intel.com <mailto:lionel.g.landwerlin at intel.com>> 
> wrote:
>
>     On 20/02/17 18:09, Jason Ekstrand wrote:
>
>         From: Lionel Landwerlin <lionel.g.landwerlin at intel.com
>         <mailto:lionel.g.landwerlin at intel.com>>
>
>         v3 (Jason Ekstrand): Add a comment explaining why
>
>         Signed-off-by: Lionel Landwerlin
>         <lionel.g.landwerlin at intel.com
>         <mailto:lionel.g.landwerlin at intel.com>>
>         Reviewed-by: Jason Ekstrand <jason at jlekstrand.net
>         <mailto:jason at jlekstrand.net>>
>         ---
>           src/intel/isl/isl.c | 10 ++++++++++
>           1 file changed, 10 insertions(+)
>
>         diff --git a/src/intel/isl/isl.c b/src/intel/isl/isl.c
>         index 1a47da5..6979063 100644
>         --- a/src/intel/isl/isl.c
>         +++ b/src/intel/isl/isl.c
>         @@ -1417,6 +1417,16 @@ isl_surf_get_mcs_surf(const struct
>         isl_device *dev,
>              assert(surf->levels == 1);
>              assert(surf->logical_level0_px.depth == 1);
>           +   /* The "Auxiliary Surface Pitch" field in
>         RENDER_SURFACE_STATE is only 9
>         +    * bits which means the maximum pitch of a compression
>         surface is 512
>         +    * tiles or 64KB (since MCS is always Y-tiled). Since a
>         16x MCS buffer is
>         +    * 64bpp, this gives us a maximum width of 8192 pixels. 
>         We can create
>         +    * larger multisampled surfaces, we just can't compress
>         them.   For 2x, 4x,
>         +    * and 8x, we have enough room for the full 16k supported
>         by the hardware.
>         +    */
>         +   if (surf->samples == 16 && surf->width > 8192)
>         +      return false;
>         +
>
>
>     I was about to write something like this :
>
>        struct isl_tile_info tile_info;
>        isl_surf_get_tile_info(dev, surf, &tile_info);
>        if ((surf->row_pitch / tile_info.phys_extent_B.width) > 512)
>           return false;
>
>
> That would work too and it is a bit more general. However, ISL 
> currently doesn't touch the isl_surf if creation fails.  I wouldn't 
> mind keeping that.  Also, I like that the end result of the 
> restriction is clearly spelled out with the old check.  I can't say 
> that I care all that much one way or the other so long as both the 
> effect (16x 16k surfaces not working) and the reason (pitch) are 
> documented.

Whichever :)

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>

>              enum isl_format mcs_format;
>              switch (surf->samples) {
>              case 2:  mcs_format = ISL_FORMAT_MCS_2X; break;
>
>
>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20170220/9fbd5c4b/attachment.html>


More information about the mesa-dev mailing list