From 47597f8f5cfe950093110d2b777923ef85c5d24f Mon Sep 17 00:00:00 2001 From: Iago Toral Quiroga Date: Tue, 3 Feb 2015 12:34:29 +0100 Subject: [PATCH] i965: Make sure we always mark array surfaces as such Even if they only have one slice, otherwise textureSize() won't produce correct results for the depth value. Fixes 10 dEQP tests in this category: dEQP-GLES3.functional.shaders.texture_functions.texturesize.sampler2darray* Reviewed-by: Mark Janes --- src/mesa/drivers/dri/i965/gen7_wm_surface_state.c | 4 +++- src/mesa/drivers/dri/i965/gen8_surface_state.c | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/mesa/drivers/dri/i965/gen7_wm_surface_state.c b/src/mesa/drivers/dri/i965/gen7_wm_surface_state.c index 7d78515543c..d9361d3d659 100644 --- a/src/mesa/drivers/dri/i965/gen7_wm_surface_state.c +++ b/src/mesa/drivers/dri/i965/gen7_wm_surface_state.c @@ -24,6 +24,7 @@ #include "main/blend.h" #include "main/samplerobj.h" #include "main/texformat.h" +#include "main/teximage.h" #include "program/prog_parameter.h" #include "intel_mipmap_tree.h" @@ -301,7 +302,8 @@ gen7_update_texture_surface(struct gl_context *ctx, if (mt->align_w == 8) surf[0] |= GEN7_SURFACE_HALIGN_8; - if (mt->logical_depth0 > 1 && tObj->Target != GL_TEXTURE_3D) + if (_mesa_is_array_texture(tObj->Target) || + tObj->Target == GL_TEXTURE_CUBE_MAP) surf[0] |= GEN7_SURFACE_IS_ARRAY; /* if this is a view with restricted NumLayers, then diff --git a/src/mesa/drivers/dri/i965/gen8_surface_state.c b/src/mesa/drivers/dri/i965/gen8_surface_state.c index 7f82f537b56..0007c95f30f 100644 --- a/src/mesa/drivers/dri/i965/gen8_surface_state.c +++ b/src/mesa/drivers/dri/i965/gen8_surface_state.c @@ -25,6 +25,7 @@ #include "main/mtypes.h" #include "main/samplerobj.h" #include "main/texformat.h" +#include "main/teximage.h" #include "program/prog_parameter.h" #include "intel_mipmap_tree.h" @@ -208,7 +209,8 @@ gen8_update_texture_surface(struct gl_context *ctx, surf[0] |= BRW_SURFACE_CUBEFACE_ENABLES; } - if (mt->logical_depth0 > 1 && tObj->Target != GL_TEXTURE_3D) + if (_mesa_is_array_texture(tObj->Target) || + tObj->Target == GL_TEXTURE_CUBE_MAP) surf[0] |= GEN8_SURFACE_IS_ARRAY; surf[1] = SET_FIELD(mocs_wb, GEN8_SURFACE_MOCS) | mt->qpitch >> 2; -- 2.30.2