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

View file

@ -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

View file

@ -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;