Module: Mesa Branch: main Commit: 614a8502a85010012cb199c853adc356a8eb7770 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=614a8502a85010012cb199c853adc356a8eb7770
Author: Alyssa Rosenzweig <[email protected]> Date: Fri Oct 28 22:40:58 2022 -0400 etnaviv: Advertise PIPE_CAP_BUFFER_MAP_PERSISTENT_COHERENT This CAP only concerns mapping of buffers, not textures. For buffers, etnaviv does not seem to use any staging resources. In neither case does etnaviv use explicit syncs or flushes, so persistent/coherent mapping should come as the implicit default and the cap should be almost free. Signed-off-by: Alyssa Rosenzweig <[email protected]> Reviewed-by: Emma Anholt <[email protected]> Reviewed-by: Christian Gmeiner <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19392> --- docs/features.txt | 2 +- src/gallium/drivers/etnaviv/etnaviv_screen.c | 1 + src/gallium/drivers/etnaviv/etnaviv_transfer.c | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/features.txt b/docs/features.txt index dac663f585a..af9dfc55464 100644 --- a/docs/features.txt +++ b/docs/features.txt @@ -195,7 +195,7 @@ GL 4.3, GLSL 4.30 -- all DONE: freedreno/a6xx, i965/gen8+, nvc0, r600, radeonsi, GL 4.4, GLSL 4.40 -- all DONE: i965/gen8+, nvc0, r600, radeonsi, llvmpipe, zink GL_MAX_VERTEX_ATTRIB_STRIDE DONE (all drivers) - GL_ARB_buffer_storage DONE (freedreno, i965, nv50, v3d, vc4, lima, panfrost, asahi, d3d12, softpipe) + GL_ARB_buffer_storage DONE (freedreno, i965, nv50, v3d, vc4, lima, panfrost, asahi, d3d12, softpipe, etnaviv) GL_ARB_clear_texture DONE (i965, nv50, softpipe, virgl) GL_ARB_enhanced_layouts DONE (freedreno/a3xx+, i965, nv50, softpipe, virgl) - compile-time constant expressions DONE diff --git a/src/gallium/drivers/etnaviv/etnaviv_screen.c b/src/gallium/drivers/etnaviv/etnaviv_screen.c index c9684a58b2e..e8774189135 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_screen.c +++ b/src/gallium/drivers/etnaviv/etnaviv_screen.c @@ -159,6 +159,7 @@ etna_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param) case PIPE_CAP_MIXED_FRAMEBUFFER_SIZES: case PIPE_CAP_STRING_MARKER: case PIPE_CAP_FRONTEND_NOOP: + case PIPE_CAP_BUFFER_MAP_PERSISTENT_COHERENT: return 1; case PIPE_CAP_NATIVE_FENCE_FD: return screen->drm_version >= ETNA_DRM_VERSION_FENCE_FD; diff --git a/src/gallium/drivers/etnaviv/etnaviv_transfer.c b/src/gallium/drivers/etnaviv/etnaviv_transfer.c index 0560211b598..1a13d415c24 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_transfer.c +++ b/src/gallium/drivers/etnaviv/etnaviv_transfer.c @@ -222,6 +222,7 @@ etna_transfer_map(struct pipe_context *pctx, struct pipe_resource *prsc, */ if ((usage & PIPE_MAP_DISCARD_RANGE) && !(usage & PIPE_MAP_UNSYNCHRONIZED) && + !(prsc->flags & PIPE_RESOURCE_FLAG_MAP_PERSISTENT) && prsc->last_level == 0 && prsc->width0 == box->width && prsc->height0 == box->height &&
