Module: wine Branch: master Commit: 793ac83d5b7fc0bc440714b218d607ad464a4f05 URL: https://source.winehq.org/git/wine.git/?a=commit;h=793ac83d5b7fc0bc440714b21...
Author: Henri Verbeet hverbeet@codeweavers.com Date: Tue Nov 30 17:55:20 2021 -0600
wined3d: Always map the whole OpenGL buffer.
Signed-off-by: Zebediah Figura zfigura@codeweavers.com Signed-off-by: Henri Verbeet hverbeet@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
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])