Henri Verbeet : wined3d: Use DISCARD maps in wined3d_buffer_vk_upload_ranges() if possible.

Alexandre Julliard julliard at winehq.org
Wed Apr 29 16:11:12 CDT 2020


Module: wine
Branch: master
Commit: b7e1fc96172ebface5b0af619a9bd4b72bf3be6d
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=b7e1fc96172ebface5b0af619a9bd4b72bf3be6d

Author: Henri Verbeet <hverbeet at codeweavers.com>
Date:   Wed Apr 29 03:05:01 2020 +0430

wined3d: Use DISCARD maps in wined3d_buffer_vk_upload_ranges() if possible.

Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/wined3d/buffer.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/dlls/wined3d/buffer.c b/dlls/wined3d/buffer.c
index 1444ac9b63..703a8aee70 100644
--- a/dlls/wined3d/buffer.c
+++ b/dlls/wined3d/buffer.c
@@ -1649,6 +1649,7 @@ static void wined3d_buffer_vk_upload_ranges(struct wined3d_buffer *buffer, struc
     const struct wined3d_range *range;
     struct wined3d_bo_address dst;
     unsigned int i = range_count;
+    uint32_t flags;
     void *map_ptr;
 
     if (!range_count)
@@ -1657,7 +1658,10 @@ static void wined3d_buffer_vk_upload_ranges(struct wined3d_buffer *buffer, struc
     dst.buffer_object = buffer->buffer_object;
     dst.addr = NULL;
 
-    if (!(map_ptr = wined3d_context_map_bo_address(context, &dst, resource->size, WINED3D_MAP_WRITE)))
+    flags = WINED3D_MAP_WRITE;
+    if (!ranges->offset && ranges->size == resource->size)
+        flags |= WINED3D_MAP_DISCARD;
+    if (!(map_ptr = wined3d_context_map_bo_address(context, &dst, resource->size, flags)))
     {
         FIXME("Failed to map buffer.\n");
         return;




More information about the wine-cvs mailing list