isl: Implement a part of WA_22018390030 (xe2)

Fix: piglit test
gl-3.2-layered-rendering-clear-color-all-types 2d_array mipmapped -auto
-fbo

Signed-off-by: Jianxun Zhang <jianxun.zhang@intel.com>
Reviewed-by: Rohan Garg <rohan.garg@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>

Signed-off-by: Jianxun Zhang <jianxun.zhang@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29702>
This commit is contained in:
Jianxun Zhang
2024-06-12 15:34:48 -07:00
committed by Marge Bot
parent 8b084df0c0
commit 4debb5bbc4
+14
View File
@@ -21,6 +21,7 @@
* IN THE SOFTWARE.
*/
#include "dev/intel_debug.h"
#include "isl_gfx20.h"
#include "isl_priv.h"
@@ -221,6 +222,19 @@ isl_gfx20_choose_image_alignment_el(const struct isl_device *dev,
* is always Linear.
*/
*image_align_el = isl_extent3d(128 * 8 / fmtl->bpb, 4, 1);
/* WA_22018390030:
*
* Don't choose VALIGN_4 on Xe2 for color, non-volumetric, Tile4 surfaces
* which can be fast cleared. We choose the next smallest option instead,
* VALIGN_8.
*/
if (!INTEL_DEBUG(DEBUG_NO_FAST_CLEAR) &&
intel_needs_workaround(dev->info, 22018390030) &&
tiling == ISL_TILING_4 &&
info->dim != ISL_SURF_DIM_3D) {
image_align_el->h = 8;
}
} else if (fmtl->bpb >= 64) {
assert(fmtl->bpb == 64 || fmtl->bpb == 128);
/* From RENDER_SURFACE_STATE::SurfaceHorizontalAlignment,