isl/state: Set SurfaceArray based on the surface dimension

According to the PRM, you can't set SurfaceArray for 3D or buffer textures.
There doesn't seem to be a good reason not to set it when we can.  On the
other hand, if we don't set it we can end up getting strange results for
1-layer array textures such as textureSize() returning the wrong results.

Reviewed-by: Chad Versace <chad.versace@intel.com>
Cc: "12.0" <mesa-stable@lists.freedesktop.org>
(cherry picked from commit bb326f7b01)
This commit is contained in:
Jason Ekstrand 2016-06-07 15:30:00 -07:00 committed by Emil Velikov
parent 6a3f08be3a
commit 415869c5c9

View file

@ -258,7 +258,7 @@ isl_genX(surf_fill_state_s)(const struct isl_device *dev, void *state,
unreachable("bad SurfaceType");
}
s.SurfaceArray = info->surf->phys_level0_sa.array_len > 1;
s.SurfaceArray = info->surf->dim != ISL_SURF_DIM_3D;
if (info->view->usage & ISL_SURF_USAGE_RENDER_TARGET_BIT) {
/* For render target surfaces, the hardware interprets field