[Mesa-dev] [PATCH 2/2] intel/isl: Divide QPitch by 2 for 3-D stencil textures on SKL+

Chad Versace chadversary at chromium.org
Tue Sep 13 17:46:19 UTC 2016


On Thu 08 Sep 2016, Jason Ekstrand wrote:
> ---
>  src/intel/isl/isl_surface_state.c | 15 ++++++++++++++-
>  1 file changed, 14 insertions(+), 1 deletion(-)
> 
> diff --git a/src/intel/isl/isl_surface_state.c b/src/intel/isl/isl_surface_state.c
> index f8ea122..22fef3d 100644
> --- a/src/intel/isl/isl_surface_state.c
> +++ b/src/intel/isl/isl_surface_state.c
> @@ -173,7 +173,20 @@ get_qpitch(const struct isl_surf *surf)
>        unreachable("Bad isl_surf_dim");
>     case ISL_DIM_LAYOUT_GEN4_2D:
>        if (GEN_GEN >= 9) {
> -         return isl_surf_get_array_pitch_el_rows(surf);
> +         if (surf->dim == ISL_SURF_DIM_3D && surf->tiling == ISL_TILING_W) {
> +            /* This is rather annoying and completely undocumented.  It
> +             * appears that the hardware has a bug (or undocumented feature)
> +             * regarding stencil buffers most likely related to the way
> +             * W-tiling is handled as modified Y-tiling.  If you bind a 3-D or
> +             * 2-D array stencil buffer normally, and use texelFetch on it,
> +             * the z or array index will get implicitly multiplied by 2 for no
> +             * obvious reason.  The fix appears to be to divide qpitch by 2
> +             * for W-tiled surfaces.
> +             */

Have you confirmed that this fix is not needed on other gens? Or have
you only confirmed that it's needed on SKL, and are deferring the
workaround on the other gens until you had a chance to test it on them?

Either way, the patch is sound. And the workaround doesn't surprise me.
Reviewed-by: Chad Versace <chadversary at chromium.org>


More information about the mesa-dev mailing list