From bb326f7b01daeb97e544873f20a23614ed54c548 Mon Sep 17 00:00:00 2001 From: Jason Ekstrand Date: Tue, 7 Jun 2016 15:30:00 -0700 Subject: [PATCH] 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 Cc: "12.0" --- src/intel/isl/isl_surface_state.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/intel/isl/isl_surface_state.c b/src/intel/isl/isl_surface_state.c index 89fd69d..602726a 100644 --- a/src/intel/isl/isl_surface_state.c +++ b/src/intel/isl/isl_surface_state.c @@ -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 -- 2.7.4