Module: Mesa
Branch: staging/21.0
Commit: 22956ea3e0a159cb8f96189a42178cf92ff36132
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=22956ea3e0a159cb8f96189a42178cf92ff36132

Author: Marcin Ślusarz <[email protected]>
Date:   Thu Mar 25 17:29:11 2021 +0100

iris: disable dynamic VAO fastpath on GFX version 9

Enabling this fast path, while making CPU side simpler
(and thus reducing driver's CPU overhead), forces us to
generate multiple VERTEX_BUFFER_STATE packets pointing to
the same buffer, but with slightly shifted BufferStartingAddress.
This is fine on GFX version >= 11 and < 8, but on version
8 and 9, thanks to internal details of the VF cache, vertex
data from each VERTEX_BUFFER_STATE is cached separately
and this results in a lot of cache misses.

Disabling this fast path restores previous performance levels.

On my SKL GT2 machine this improves performance in:
- GLB27 Egypt offscreen by 37%
- GLB27 TRex offscreen by 22%
- gfxbench5 Manhattan offscreen by 1.75%
- gfxbench5 Manhattan31 offscreen by 1.9%
- gfxbench5 Aztec Ruins high by 2.3%

In Intel performance CI on GFX version 9 it improves performance in:
- gfxbench5 Manhattan offscreen by 1.65%
- gfxbench5 Aztec Ruins normal offscreen by 1.33%

Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/3277
Fixes: 42842306d3c ("mesa,st/mesa: add a fast path for non-static VAOs")
Signed-off-by: Marcin Ślusarz <[email protected]>
Reviewed-by: Kenneth Graunke <[email protected]>
Reviewed-by: Jason Ekstrand <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10175>

---

 src/gallium/drivers/iris/iris_screen.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/src/gallium/drivers/iris/iris_screen.c 
b/src/gallium/drivers/iris/iris_screen.c
index 19ee81f1680..2a90293a654 100644
--- a/src/gallium/drivers/iris/iris_screen.c
+++ b/src/gallium/drivers/iris/iris_screen.c
@@ -395,6 +395,13 @@ iris_get_param(struct pipe_screen *pscreen, enum pipe_cap 
param)
    case PIPE_CAP_INTEGER_MULTIPLY_32X16:
       return true;
 
+   case PIPE_CAP_ALLOW_DYNAMIC_VAO_FASTPATH:
+      /* Internal details of VF cache make this optimization harmful on GFX
+       * version 8 and 9, because generated VERTEX_BUFFER_STATEs are cached
+       * separately.
+       */
+      return devinfo->gen >= 11;
+
    default:
       return u_pipe_screen_get_param_defaults(pscreen, param);
    }

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to