Zebediah Figura : wined3d: Respect the client map count even for suballocated BOs.
Alexandre Julliard
julliard at winehq.org
Thu Jul 14 16:58:18 CDT 2022
Module: wine
Branch: master
Commit: 93b8b6375ff630a4def6aa381bca51771d6fcf98
URL: https://gitlab.winehq.org/wine/wine/-/commit/93b8b6375ff630a4def6aa381bca51771d6fcf98
Author: Zebediah Figura <zfigura at codeweavers.com>
Date: Sun Jul 10 15:30:45 2022 -0500
wined3d: Respect the client map count even for suballocated BOs.
I believe this was a mistake introduced by 831ff102008e2ba93a403344646b5ed67258eaeb.
This fixes GL errors with multiple applications, including Ragnarok Online and
Bloodrayne: Terminal Cut.
---
dlls/wined3d/context_gl.c | 17 ++++++++---------
1 file changed, 8 insertions(+), 9 deletions(-)
diff --git a/dlls/wined3d/context_gl.c b/dlls/wined3d/context_gl.c
index 52a75c3d5ea..0d80aa8596f 100644
--- a/dlls/wined3d/context_gl.c
+++ b/dlls/wined3d/context_gl.c
@@ -2944,15 +2944,6 @@ static void wined3d_bo_gl_unmap(struct wined3d_bo_gl *bo, struct wined3d_context
return;
}
- if (bo->memory)
- {
- struct wined3d_allocator_chunk_gl *chunk_gl = wined3d_allocator_chunk_gl(bo->memory->chunk);
-
- wined3d_allocator_chunk_gl_unmap(chunk_gl, context_gl);
- bo->b.map_ptr = NULL;
- return;
- }
-
wined3d_device_bo_map_lock(context_gl->c.device);
/* The mapping is still in use by the client (viz. for an accelerated
* NOOVERWRITE map). The client will trigger another unmap request when the
@@ -2967,6 +2958,14 @@ static void wined3d_bo_gl_unmap(struct wined3d_bo_gl *bo, struct wined3d_context
bo->b.map_ptr = NULL;
wined3d_device_bo_map_unlock(context_gl->c.device);
+ if (bo->memory)
+ {
+ struct wined3d_allocator_chunk_gl *chunk_gl = wined3d_allocator_chunk_gl(bo->memory->chunk);
+
+ wined3d_allocator_chunk_gl_unmap(chunk_gl, context_gl);
+ return;
+ }
+
wined3d_context_gl_bind_bo(context_gl, bo->binding, bo->id);
GL_EXTCALL(glUnmapBuffer(bo->binding));
wined3d_context_gl_bind_bo(context_gl, bo->binding, 0);
More information about the wine-cvs
mailing list