[PATCH 4/6] wined3d: Always map the whole OpenGL buffer.
Zebediah Figura
zfigura at codeweavers.com
Tue Nov 30 17:55:20 CST 2021
From: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura at codeweavers.com>
---
dlls/wined3d/context_gl.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/dlls/wined3d/context_gl.c b/dlls/wined3d/context_gl.c
index 675c26ac6fe..700ccace2e5 100644
--- a/dlls/wined3d/context_gl.c
+++ b/dlls/wined3d/context_gl.c
@@ -2712,7 +2712,8 @@ map:
if (gl_info->supported[ARB_MAP_BUFFER_RANGE])
{
- map_ptr = GL_EXTCALL(glMapBufferRange(bo->binding, offset, size, wined3d_resource_gl_map_flags(bo, flags)));
+ if ((map_ptr = GL_EXTCALL(glMapBufferRange(bo->binding, 0, bo->size, wined3d_resource_gl_map_flags(bo, flags)))))
+ map_ptr += offset;
}
else
{
@@ -2757,11 +2758,12 @@ static void flush_bo_ranges(struct wined3d_context_gl *context_gl, const struct
if (gl_info->supported[ARB_MAP_BUFFER_RANGE])
{
+ /* The offset passed to glFlushMappedBufferRange() is relative to the
+ * mapped range, but we map the whole buffer anyway. */
for (i = 0; i < range_count; ++i)
{
- /* The offset passed to glFlushMappedBufferRange() is relative to
- * the mapped range, so don't add data->addr in this case. */
- GL_EXTCALL(glFlushMappedBufferRange(bo->binding, ranges[i].offset, ranges[i].size));
+ GL_EXTCALL(glFlushMappedBufferRange(bo->binding,
+ bo->b.buffer_offset + (uintptr_t)data->addr + ranges[i].offset, ranges[i].size));
}
}
else if (gl_info->supported[APPLE_FLUSH_BUFFER_RANGE])
--
2.32.0
More information about the wine-devel
mailing list