iris: Avoid creating uncompressed view with unaligned tile offsets on BDW

Fixes: 60568d5d ("iris: Use isl_surf_get_uncompressed_surf")
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/7990
Signed-off-by: Sviatoslav Peleshko <sviatoslav.peleshko@globallogic.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21147>
This commit is contained in:
Sviatoslav Peleshko 2023-02-06 12:48:30 +02:00 committed by Marge Bot
parent 7ebdddf319
commit 4229d9324f

View file

@ -2823,6 +2823,21 @@ iris_create_surface(struct pipe_context *ctx,
&res->surf, view,
&isl_surf, view, &offset_B,
&tile_x_el, &tile_y_el);
/* On Broadwell, HALIGN and VALIGN are specified in pixels and are
* hard-coded to align to exactly the block size of the compressed
* texture. This means that, when reinterpreted as a non-compressed
* texture, the tile offsets may be anything.
*
* We need them to be multiples of 4 to be usable in RENDER_SURFACE_STATE,
* so force the state tracker to take fallback paths if they're not.
*/
#if GFX_VER == 8
if (tile_x_el % 4 != 0 || tile_y_el % 4 != 0) {
ok = false;
}
#endif
if (!ok) {
free(surf);
return NULL;