diff options
author | Lionel Landwerlin <lionel.g.landwerlin@intel.com> | 2022-12-12 15:30:40 +0200 |
---|---|---|
committer | Eric Engestrom <eric@engestrom.ch> | 2022-12-14 20:56:54 +0000 |
commit | b5820a84a24e9858dfb24e1d3631f655e0f6c397 (patch) | |
tree | 7d984ee587e8dc9bdd76010bd09c6c0d22b6f99b | |
parent | c1fad08d69661d0831eff0f3733c31ead33664ea (diff) | |
download | mesa-b5820a84a24e9858dfb24e1d3631f655e0f6c397.tar.gz |
isl: make Wa_1806565034 conditional to non robust access
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Ivan Briano <ivan.briano@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20280>
(cherry picked from commit 89a550a37b0bb32bc3dfd92062f9fe6eb05c11db)
-rw-r--r-- | .pick_status.json | 2 | ||||
-rw-r--r-- | src/intel/isl/isl.h | 7 | ||||
-rw-r--r-- | src/intel/isl/isl_surface_state.c | 11 |
3 files changed, 17 insertions, 3 deletions
diff --git a/.pick_status.json b/.pick_status.json index e5408be84e8..82c8cf90850 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -544,7 +544,7 @@ "description": "isl: make Wa_1806565034 conditional to non robust access", "nominated": false, "nomination_type": null, - "resolution": 4, + "resolution": 1, "main_sha": null, "because_sha": null }, diff --git a/src/intel/isl/isl.h b/src/intel/isl/isl.h index 7a35605a23e..f3abbd5db0e 100644 --- a/src/intel/isl/isl.h +++ b/src/intel/isl/isl.h @@ -1707,6 +1707,13 @@ struct isl_surf_fill_state_info { /* Intra-tile offset */ uint16_t x_offset_sa, y_offset_sa; + + /** + * Robust image access enabled + * + * This is used to turn off a performance workaround. + */ + bool robust_image_access; }; struct isl_buffer_fill_state_info { diff --git a/src/intel/isl/isl_surface_state.c b/src/intel/isl/isl_surface_state.c index 139c196d23a..59158f8e240 100644 --- a/src/intel/isl/isl_surface_state.c +++ b/src/intel/isl/isl_surface_state.c @@ -362,9 +362,16 @@ isl_genX(surf_fill_state_s)(const struct isl_device *dev, void *state, } #if GFX_VER >= 12 - /* Wa_1806565034: Only set SurfaceArray if arrayed surface is > 1. */ + /* Wa_1806565034: + * + * "Only set SurfaceArray if arrayed surface is > 1." + * + * Since this is a performance workaround, we only enable it when robust + * image access is disabled. Otherwise layered robust access is not + * specification compliant. + */ s.SurfaceArray = info->surf->dim != ISL_SURF_DIM_3D && - info->view->array_len > 1; + (info->robust_image_access || info->view->array_len > 1); #elif GFX_VER >= 7 s.SurfaceArray = info->surf->dim != ISL_SURF_DIM_3D; #endif |