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
