[PATCH v2 2/3] wined3d: Use wined3d_buffer_copy_bo_address() in wined3d_cs_exec_update_sub_resource().

Zebediah Figura z.figura12 at gmail.com
Mon Jun 28 11:39:02 CDT 2021


Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
---
 dlls/wined3d/buffer.c          | 19 -------------------
 dlls/wined3d/cs.c              | 15 ++++-----------
 dlls/wined3d/wined3d_private.h |  2 --
 3 files changed, 4 insertions(+), 32 deletions(-)

diff --git a/dlls/wined3d/buffer.c b/dlls/wined3d/buffer.c
index 0511f278144..9d22a909fb6 100644
--- a/dlls/wined3d/buffer.c
+++ b/dlls/wined3d/buffer.c
@@ -1054,25 +1054,6 @@ void wined3d_buffer_copy(struct wined3d_buffer *dst_buffer, unsigned int dst_off
     context_release(context);
 }
 
-void wined3d_buffer_upload_data(struct wined3d_buffer *buffer, struct wined3d_context *context,
-        const struct wined3d_box *box, const void *data)
-{
-    struct wined3d_range range;
-
-    if (box)
-    {
-        range.offset = box->left;
-        range.size = box->right - box->left;
-    }
-    else
-    {
-        range.offset = 0;
-        range.size = buffer->resource.size;
-    }
-
-    buffer->buffer_ops->buffer_upload_ranges(buffer, context, data, range.offset, 1, &range);
-}
-
 static void wined3d_buffer_init_data(struct wined3d_buffer *buffer,
         struct wined3d_device *device, const struct wined3d_sub_resource_data *data)
 {
diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
index 4adfa18f5f7..022c0acbd0a 100644
--- a/dlls/wined3d/cs.c
+++ b/dlls/wined3d/cs.c
@@ -2613,18 +2613,14 @@ static void wined3d_cs_exec_update_sub_resource(struct wined3d_cs *cs, const voi
 
     context = context_acquire(cs->c.device, NULL, 0);
 
+    addr.buffer_object = 0;
+    addr.addr = op->data.data;
+
     if (resource->type == WINED3D_RTYPE_BUFFER)
     {
         struct wined3d_buffer *buffer = buffer_from_resource(resource);
 
-        if (!wined3d_buffer_load_location(buffer, context, WINED3D_LOCATION_BUFFER))
-        {
-            ERR("Failed to load buffer location.\n");
-            goto done;
-        }
-
-        wined3d_buffer_upload_data(buffer, context, box, op->data.data);
-        wined3d_buffer_invalidate_location(buffer, ~WINED3D_LOCATION_BUFFER);
+        wined3d_buffer_copy_bo_address(buffer, context, box->left, &addr, box->right - box->left);
         goto done;
     }
 
@@ -2635,9 +2631,6 @@ static void wined3d_cs_exec_update_sub_resource(struct wined3d_cs *cs, const voi
     height = wined3d_texture_get_level_height(texture, level);
     depth = wined3d_texture_get_level_depth(texture, level);
 
-    addr.buffer_object = 0;
-    addr.addr = op->data.data;
-
     /* Only load the sub-resource for partial updates. */
     if (!box->left && !box->top && !box->front
             && box->right == width && box->bottom == height && box->back == depth)
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 6700302b481..0dba25477cf 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -4926,8 +4926,6 @@ BOOL wined3d_buffer_load_location(struct wined3d_buffer *buffer,
 BYTE *wined3d_buffer_load_sysmem(struct wined3d_buffer *buffer, struct wined3d_context *context) DECLSPEC_HIDDEN;
 BOOL wined3d_buffer_prepare_location(struct wined3d_buffer *buffer,
         struct wined3d_context *context, unsigned int location) DECLSPEC_HIDDEN;
-void wined3d_buffer_upload_data(struct wined3d_buffer *buffer, struct wined3d_context *context,
-        const struct wined3d_box *box, const void *data) DECLSPEC_HIDDEN;
 
 HRESULT wined3d_buffer_no3d_init(struct wined3d_buffer *buffer_no3d, struct wined3d_device *device,
         const struct wined3d_buffer_desc *desc, const struct wined3d_sub_resource_data *data,
-- 
2.30.2




More information about the wine-devel mailing list