From ee5bd8638bd123ab3ea49d513f8bba9e7cd4ae28 Mon Sep 17 00:00:00 2001 From: Marek Olšák Date: Fri, 31 Jan 2020 20:50:42 -0500 Subject: vbo: also map the immediate mode buffer for read MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit because we read from it sometimes and we want cached reads. We can only do it with the persistent mapping, because the non-persistent mapping uses incompatible flags. Reviewed-by: Mathias Fröhlich Part-of: --- src/mesa/vbo/vbo_exec_draw.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/mesa/vbo/vbo_exec_draw.c b/src/mesa/vbo/vbo_exec_draw.c index a46a2b03568..7c3b7ef4330 100644 --- a/src/mesa/vbo/vbo_exec_draw.c +++ b/src/mesa/vbo/vbo_exec_draw.c @@ -286,8 +286,13 @@ vbo_exec_vtx_map(struct vbo_exec_context *exec) GL_MAP_UNSYNCHRONIZED_BIT; if (ctx->Extensions.ARB_buffer_storage) { + /* We sometimes read from the buffer, so map it for read too. + * Only the persistent mapping can do that, because the non-persistent + * mapping uses flags that are incompatible with GL_MAP_READ_BIT. + */ accessRange |= GL_MAP_PERSISTENT_BIT | - GL_MAP_COHERENT_BIT; + GL_MAP_COHERENT_BIT | + GL_MAP_READ_BIT; } else { accessRange |= GL_MAP_INVALIDATE_RANGE_BIT | GL_MAP_FLUSH_EXPLICIT_BIT | @@ -328,7 +333,8 @@ vbo_exec_vtx_map(struct vbo_exec_context *exec) GL_MAP_WRITE_BIT | (ctx->Extensions.ARB_buffer_storage ? GL_MAP_PERSISTENT_BIT | - GL_MAP_COHERENT_BIT : 0) | + GL_MAP_COHERENT_BIT | + GL_MAP_READ_BIT : 0) | GL_DYNAMIC_STORAGE_BIT | GL_CLIENT_STORAGE_BIT, exec->vtx.bufferobj)) { -- cgit v1.2.3