ilo: fix textureSize() for single-layered array textures
We returned 0 instead of 1 for the number of layers when the array texutre is single-layered. This fixed it on GEN7+.
This commit is contained in:
@@ -25,6 +25,7 @@
|
|||||||
* Chia-I Wu <olv@lunarg.com>
|
* Chia-I Wu <olv@lunarg.com>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "util/u_resource.h"
|
||||||
#include "brw_defines.h"
|
#include "brw_defines.h"
|
||||||
#include "intel_reg.h"
|
#include "intel_reg.h"
|
||||||
|
|
||||||
@@ -1591,8 +1592,23 @@ ilo_gpe_init_view_surface_for_texture_gen7(const struct ilo_dev_info *dev,
|
|||||||
surface_format << BRW_SURFACE_FORMAT_SHIFT |
|
surface_format << BRW_SURFACE_FORMAT_SHIFT |
|
||||||
ilo_gpe_gen6_translate_winsys_tiling(tex->tiling) << 13;
|
ilo_gpe_gen6_translate_winsys_tiling(tex->tiling) << 13;
|
||||||
|
|
||||||
if (surface_type != BRW_SURFACE_3D && depth > 1)
|
/*
|
||||||
dw[0] |= GEN7_SURFACE_IS_ARRAY;
|
* From the Ivy Bridge PRM, volume 4 part 1, page 63:
|
||||||
|
*
|
||||||
|
* "If this field (Surface Array) is enabled, the Surface Type must be
|
||||||
|
* SURFTYPE_1D, SURFTYPE_2D, or SURFTYPE_CUBE. If this field is
|
||||||
|
* disabled and Surface Type is SURFTYPE_1D, SURFTYPE_2D, or
|
||||||
|
* SURFTYPE_CUBE, the Depth field must be set to zero."
|
||||||
|
*
|
||||||
|
* For non-3D sampler surfaces, resinfo (the sampler message) always
|
||||||
|
* returns zero for the number of layers when this field is not set.
|
||||||
|
*/
|
||||||
|
if (surface_type != BRW_SURFACE_3D) {
|
||||||
|
if (util_resource_is_array_texture(&tex->base))
|
||||||
|
dw[0] |= GEN7_SURFACE_IS_ARRAY;
|
||||||
|
else
|
||||||
|
assert(depth == 1);
|
||||||
|
}
|
||||||
|
|
||||||
if (tex->valign_4)
|
if (tex->valign_4)
|
||||||
dw[0] |= GEN7_SURFACE_VALIGN_4;
|
dw[0] |= GEN7_SURFACE_VALIGN_4;
|
||||||
|
Reference in New Issue
Block a user