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 <mark.a.janes at intel.com>
This commit is contained in:
Iago Toral Quiroga
2015-02-03 12:34:29 +01:00
parent 8b0b81339b
commit 47597f8f5c
2 changed files with 6 additions and 2 deletions
@@ -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
@@ -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;