[PATCH 1/5] wined3d: Drop the bind flag parameters to wined3d_adapter_ops.adapter_copy_bo_address().
Henri Verbeet
hverbeet at codeweavers.com
Wed Apr 22 16:34:54 CDT 2020
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
---
dlls/wined3d/adapter_gl.c | 3 +--
dlls/wined3d/adapter_vk.c | 23 +++++++++++++----------
dlls/wined3d/buffer.c | 3 +--
dlls/wined3d/directx.c | 3 +--
dlls/wined3d/view.c | 5 ++---
dlls/wined3d/wined3d_private.h | 9 +++------
6 files changed, 21 insertions(+), 25 deletions(-)
diff --git a/dlls/wined3d/adapter_gl.c b/dlls/wined3d/adapter_gl.c
index 230f76f28cf..ba0026ba586 100644
--- a/dlls/wined3d/adapter_gl.c
+++ b/dlls/wined3d/adapter_gl.c
@@ -4639,8 +4639,7 @@ static void adapter_gl_unmap_bo_address(struct wined3d_context *context,
}
static void adapter_gl_copy_bo_address(struct wined3d_context *context,
- const struct wined3d_bo_address *dst, uint32_t dst_bind_flags,
- const struct wined3d_bo_address *src, uint32_t src_bind_flags, size_t size)
+ const struct wined3d_bo_address *dst, const struct wined3d_bo_address *src, size_t size)
{
wined3d_context_gl_copy_bo_address(wined3d_context_gl(context), dst, src, size);
}
diff --git a/dlls/wined3d/adapter_vk.c b/dlls/wined3d/adapter_vk.c
index c6c89276554..c718919a04a 100644
--- a/dlls/wined3d/adapter_vk.c
+++ b/dlls/wined3d/adapter_vk.c
@@ -735,12 +735,12 @@ static void adapter_vk_unmap_bo_address(struct wined3d_context *context,
}
static void adapter_vk_copy_bo_address(struct wined3d_context *context,
- const struct wined3d_bo_address *dst, uint32_t dst_bind_flags,
- const struct wined3d_bo_address *src, uint32_t src_bind_flags, size_t size)
+ const struct wined3d_bo_address *dst, const struct wined3d_bo_address *src, size_t size)
{
struct wined3d_context_vk *context_vk = wined3d_context_vk(context);
const struct wined3d_vk_info *vk_info = context_vk->vk_info;
struct wined3d_bo_vk staging_bo, *src_bo, *dst_bo;
+ VkAccessFlags src_access_mask, dst_access_mask;
VkBufferMemoryBarrier vk_barrier[2];
struct wined3d_bo_address staging;
VkCommandBuffer vk_command_buffer;
@@ -759,13 +759,16 @@ static void adapter_vk_copy_bo_address(struct wined3d_context *context,
return;
}
+ src_access_mask = vk_access_mask_from_buffer_usage(src_bo->usage);
+ dst_access_mask = vk_access_mask_from_buffer_usage(dst_bo->usage);
+
region.srcOffset = src_bo->buffer_offset + (uintptr_t)src->addr;
region.dstOffset = dst_bo->buffer_offset + (uintptr_t)dst->addr;
region.size = size;
vk_barrier[0].sType = VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER;
vk_barrier[0].pNext = NULL;
- vk_barrier[0].srcAccessMask = vk_access_mask_from_bind_flags(src_bind_flags);
+ vk_barrier[0].srcAccessMask = src_access_mask;
vk_barrier[0].dstAccessMask = VK_ACCESS_TRANSFER_READ_BIT;
vk_barrier[0].srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
vk_barrier[0].dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
@@ -775,7 +778,7 @@ static void adapter_vk_copy_bo_address(struct wined3d_context *context,
vk_barrier[1].sType = VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER;
vk_barrier[1].pNext = NULL;
- vk_barrier[1].srcAccessMask = vk_access_mask_from_bind_flags(dst_bind_flags);
+ vk_barrier[1].srcAccessMask = dst_access_mask;
vk_barrier[1].dstAccessMask = VK_ACCESS_TRANSFER_WRITE_BIT;
vk_barrier[1].srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
vk_barrier[1].dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
@@ -789,10 +792,10 @@ static void adapter_vk_copy_bo_address(struct wined3d_context *context,
VK_CALL(vkCmdCopyBuffer(vk_command_buffer, src_bo->vk_buffer, dst_bo->vk_buffer, 1, ®ion));
vk_barrier[0].srcAccessMask = VK_ACCESS_TRANSFER_READ_BIT;
- vk_barrier[0].dstAccessMask = vk_access_mask_from_bind_flags(src_bind_flags);
+ vk_barrier[0].dstAccessMask = src_access_mask;
vk_barrier[1].srcAccessMask = VK_ACCESS_TRANSFER_WRITE_BIT;
- vk_barrier[1].dstAccessMask = vk_access_mask_from_bind_flags(dst_bind_flags);
+ vk_barrier[1].dstAccessMask = dst_access_mask;
VK_CALL(vkCmdPipelineBarrier(vk_command_buffer, VK_PIPELINE_STAGE_TRANSFER_BIT,
VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, 0, 0, NULL, 2, vk_barrier, 0, NULL));
@@ -814,8 +817,8 @@ static void adapter_vk_copy_bo_address(struct wined3d_context *context,
staging.buffer_object = (uintptr_t)&staging_bo;
staging.addr = NULL;
- adapter_vk_copy_bo_address(context, &staging, 0, src, src_bind_flags, size);
- adapter_vk_copy_bo_address(context, dst, dst_bind_flags, &staging, 0, size);
+ adapter_vk_copy_bo_address(context, &staging, src, size);
+ adapter_vk_copy_bo_address(context, dst, &staging, size);
wined3d_context_vk_destroy_bo(context_vk, &staging_bo);
@@ -834,8 +837,8 @@ static void adapter_vk_copy_bo_address(struct wined3d_context *context,
staging.buffer_object = (uintptr_t)&staging_bo;
staging.addr = NULL;
- adapter_vk_copy_bo_address(context, &staging, 0, src, src_bind_flags, size);
- adapter_vk_copy_bo_address(context, dst, dst_bind_flags, &staging, 0, size);
+ adapter_vk_copy_bo_address(context, &staging, src, size);
+ adapter_vk_copy_bo_address(context, dst, &staging, size);
wined3d_context_vk_destroy_bo(context_vk, &staging_bo);
diff --git a/dlls/wined3d/buffer.c b/dlls/wined3d/buffer.c
index 719d4ae3044..1444ac9b633 100644
--- a/dlls/wined3d/buffer.c
+++ b/dlls/wined3d/buffer.c
@@ -1209,8 +1209,7 @@ void wined3d_buffer_copy(struct wined3d_buffer *dst_buffer, unsigned int dst_off
src.addr += src_offset;
context = context_acquire(dst_buffer->resource.device, NULL, 0);
- wined3d_context_copy_bo_address(context, &dst, dst_buffer->resource.bind_flags,
- &src, src_buffer->resource.bind_flags, size);
+ wined3d_context_copy_bo_address(context, &dst, &src, size);
context_release(context);
wined3d_buffer_invalidate_range(dst_buffer, ~dst_location, dst_offset, size);
diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c
index c5f7eab4d1d..5fe0856e514 100644
--- a/dlls/wined3d/directx.c
+++ b/dlls/wined3d/directx.c
@@ -2426,8 +2426,7 @@ static void adapter_no3d_unmap_bo_address(struct wined3d_context *context,
}
static void adapter_no3d_copy_bo_address(struct wined3d_context *context,
- const struct wined3d_bo_address *dst, uint32_t dst_bind_flags,
- const struct wined3d_bo_address *src, uint32_t src_bind_flags, size_t size)
+ const struct wined3d_bo_address *dst, const struct wined3d_bo_address *src, size_t size)
{
if (dst->buffer_object)
ERR("Unsupported dst buffer object %#lx.\n", dst->buffer_object);
diff --git a/dlls/wined3d/view.c b/dlls/wined3d/view.c
index 834eaa71023..093143c674f 100644
--- a/dlls/wined3d/view.c
+++ b/dlls/wined3d/view.c
@@ -1055,7 +1055,7 @@ void wined3d_unordered_access_view_set_counter(struct wined3d_unordered_access_v
dst.buffer_object = view->counter_bo;
dst.addr = NULL;
- wined3d_context_copy_bo_address(context, &dst, WINED3D_BIND_UNORDERED_ACCESS, &src, 0, sizeof(uint32_t));
+ wined3d_context_copy_bo_address(context, &dst, &src, sizeof(uint32_t));
context_release(context);
}
@@ -1075,8 +1075,7 @@ void wined3d_unordered_access_view_copy_counter(struct wined3d_unordered_access_
src.buffer_object = view->counter_bo;
src.addr = NULL;
- wined3d_context_copy_bo_address(context, &dst, buffer->resource.bind_flags,
- &src, WINED3D_BIND_UNORDERED_ACCESS, sizeof(uint32_t));
+ wined3d_context_copy_bo_address(context, &dst, &src, sizeof(uint32_t));
wined3d_buffer_invalidate_location(buffer, ~dst_location);
}
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 687f6a3a9ff..02418d88171 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -2968,8 +2968,7 @@ struct wined3d_adapter_ops
void (*adapter_unmap_bo_address)(struct wined3d_context *context, const struct wined3d_bo_address *data,
unsigned int range_count, const struct wined3d_range *ranges);
void (*adapter_copy_bo_address)(struct wined3d_context *context,
- const struct wined3d_bo_address *dst, uint32_t dst_bind_flags,
- const struct wined3d_bo_address *src, uint32_t src_bind_flags, size_t size);
+ const struct wined3d_bo_address *dst, const struct wined3d_bo_address *src, size_t size);
HRESULT (*adapter_create_swapchain)(struct wined3d_device *device, struct wined3d_swapchain_desc *desc,
void *parent, const struct wined3d_parent_ops *parent_ops, struct wined3d_swapchain **swapchain);
void (*adapter_destroy_swapchain)(struct wined3d_swapchain *swapchain);
@@ -5487,11 +5486,9 @@ static inline void wined3d_context_unmap_bo_address(struct wined3d_context *cont
}
static inline void wined3d_context_copy_bo_address(struct wined3d_context *context,
- const struct wined3d_bo_address *dst, uint32_t dst_bind_flags,
- const struct wined3d_bo_address *src, uint32_t src_bind_flags, size_t size)
+ const struct wined3d_bo_address *dst, const struct wined3d_bo_address *src, size_t size)
{
- context->device->adapter->adapter_ops->adapter_copy_bo_address(context,
- dst, dst_bind_flags, src, src_bind_flags, size);
+ context->device->adapter->adapter_ops->adapter_copy_bo_address(context, dst, src, size);
}
static inline BOOL wined3d_dsv_srv_conflict(const struct wined3d_rendertarget_view *dsv,
--
2.20.1
More information about the wine-devel
mailing list