<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Tue, May 16, 2017 at 11:40 PM, Pohjolainen, Topi <span dir="ltr"><<a href="mailto:topi.pohjolainen@gmail.com" target="_blank">topi.pohjolainen@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">On Tue, May 16, 2017 at 03:45:03PM -0700, Jason Ekstrand wrote:<br>
> ---<br>
>  src/intel/isl/isl.c      |  3 +--<br>
>  src/intel/isl/isl_gen4.c | 51 ++++++++++++++++++++++++++++++<wbr>++++++++++++++++++<br>
>  src/intel/isl/isl_gen4.h |  5 +++++<br>
>  3 files changed, 57 insertions(+), 2 deletions(-)<br>
><br>
> diff --git a/src/intel/isl/isl.c b/src/intel/isl/isl.c<br>
> index c728a85..321850e 100644<br>
> --- a/src/intel/isl/isl.c<br>
> +++ b/src/intel/isl/isl.c<br>
> @@ -296,8 +296,7 @@ isl_surf_choose_tiling(const struct isl_device *dev,<br>
>     if (ISL_DEV_GEN(dev) >= 6) {<br>
>        isl_gen6_filter_tiling(dev, info, &tiling_flags);<br>
>     } else {<br>
> -      isl_finishme("%s: gen%u", __func__, ISL_DEV_GEN(dev));<br>
> -      isl_gen6_filter_tiling(dev, info, &tiling_flags);<br>
> +      isl_gen4_filter_tiling(dev, info, &tiling_flags);<br>
>     }<br>
><br>
>     #define CHOOSE(__tiling) \<br>
> diff --git a/src/intel/isl/isl_gen4.c b/src/intel/isl/isl_gen4.c<br>
> index 9fed454..63547f7 100644<br>
> --- a/src/intel/isl/isl_gen4.c<br>
> +++ b/src/intel/isl/isl_gen4.c<br>
> @@ -38,6 +38,57 @@ isl_gen4_choose_msaa_layout(<wbr>const struct isl_device *dev,<br>
>  }<br>
><br>
>  void<br>
> +isl_gen4_filter_tiling(const struct isl_device *dev,<br>
> +                       const struct isl_surf_init_info *restrict info,<br>
> +                       isl_tiling_flags_t *flags)<br>
> +{<br>
> +   /* Gen4-5 only support linear, X, and Y-tiling. */<br>
> +   *flags &= ISL_TILING_LINEAR_BIT | ISL_TILING_X_BIT | ISL_TILING_Y0_BIT;<br>
<br>
</div></div>Can we put () around .. | .. | .. just as you have further down?<span class=""><br></span></blockquote><div><br></div><div>Sure.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">
> +<br>
> +   if (isl_surf_usage_is_depth_or_<wbr>stencil(info->usage)) {<br>
> +      assert(!ISL_DEV_USE_SEPARATE_<wbr>STENCIL(dev));<br>
> +<br>
> +      /* From the g35 PRM Vol. 2, 3DSTATE_DEPTH_BUFFER::Tile Walk:<br>
> +       *<br>
> +       *    "The Depth Buffer, if tiled, must use Y-Major tiling"<br>
> +       */<br>
> +      *flags &= ISL_TILING_LINEAR_BIT | ISL_TILING_Y0_BIT;<br>
<br>
</span>Same here.<br>
<div><div class="h5"><br>
> +   }<br>
> +<br>
> +   if (info->usage & (ISL_SURF_USAGE_DISPLAY_<wbr>ROTATE_90_BIT |<br>
> +                      ISL_SURF_USAGE_DISPLAY_ROTATE_<wbr>180_BIT |<br>
> +                      ISL_SURF_USAGE_DISPLAY_ROTATE_<wbr>270_BIT)) {<br>
> +      assert(*flags & ISL_SURF_USAGE_DISPLAY_BIT);<br>
> +      isl_finishme("%s:%s: handle rotated display surfaces",<br>
> +                   __FILE__, __func__);<br>
> +   }<br>
> +<br>
> +   if (info->usage & (ISL_SURF_USAGE_DISPLAY_FLIP_<wbr>X_BIT |<br>
> +                      ISL_SURF_USAGE_DISPLAY_FLIP_Y_<wbr>BIT)) {<br>
> +      assert(*flags & ISL_SURF_USAGE_DISPLAY_BIT);<br>
> +      isl_finishme("%s:%s: handle flipped display surfaces",<br>
> +                   __FILE__, __func__);<br>
> +   }<br>
> +<br>
> +   if (info->usage & ISL_SURF_USAGE_DISPLAY_BIT) {<br>
> +      /* Before Skylake, the display engine does not accept Y */<br>
> +      *flags &= (ISL_TILING_LINEAR_BIT | ISL_TILING_X_BIT);<br>
> +   }<br>
> +<br>
> +   assert(info->samples == 1);<br>
> +<br>
> +   /* From the g35 PRM, Volume 1, 11.5.5, "Per-Stream Tile Format Support":<br>
> +    *<br>
> +    *    "NOTE: 128BPE Format Color buffer ( render target ) MUST be either<br>
> +    *    TileX or Linear."<br>
> +    *<br>
> +    * This is required all the way up to Sandy Bridge.<br>
> +    */<br>
> +   if (isl_format_get_layout(info-><wbr>format)->bpb >= 128)<br>
> +      *flags &= ~ISL_TILING_Y0_BIT;<br>
> +}<br>
> +<br>
> +void<br>
>  isl_gen4_choose_image_<wbr>alignment_el(const struct isl_device *dev,<br>
>                                     const struct isl_surf_init_info *restrict info,<br>
>                                     enum isl_tiling tiling,<br>
> diff --git a/src/intel/isl/isl_gen4.h b/src/intel/isl/isl_gen4.h<br>
> index dc6102b..c04f7fb 100644<br>
> --- a/src/intel/isl/isl_gen4.h<br>
> +++ b/src/intel/isl/isl_gen4.h<br>
> @@ -37,6 +37,11 @@ isl_gen4_choose_msaa_layout(<wbr>const struct isl_device *dev,<br>
>                              enum isl_msaa_layout *msaa_layout);<br>
><br>
>  void<br>
> +isl_gen4_filter_tiling(const struct isl_device *dev,<br>
> +                       const struct isl_surf_init_info *restrict info,<br>
> +                       isl_tiling_flags_t *flags);<br>
> +<br>
> +void<br>
>  isl_gen4_choose_image_<wbr>alignment_el(const struct isl_device *dev,<br>
>                                     const struct isl_surf_init_info *restrict info,<br>
>                                     enum isl_tiling tiling,<br>
> --<br>
> 2.5.0.400.gff86faf<br>
><br>
</div></div>> ______________________________<wbr>_________________<br>
> mesa-dev mailing list<br>
> <a href="mailto:mesa-dev@lists.freedesktop.org">mesa-dev@lists.freedesktop.org</a><br>
> <a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer" target="_blank">https://lists.freedesktop.org/<wbr>mailman/listinfo/mesa-dev</a><br>
</blockquote></div><br></div></div>