Module: wine Branch: master Commit: ce59348c8f5e2d24f70a00b1181f06b025649a50 URL: https://gitlab.winehq.org/wine/wine/-/commit/ce59348c8f5e2d24f70a00b1181f06b...
Author: Zebediah Figura zfigura@codeweavers.com Date: Wed Nov 8 18:03:45 2023 -0600
wined3d: Create the XFB counter BO in wined3d_context_vk_bind_stream_output_buffers().
---
dlls/wined3d/adapter_vk.c | 15 --------------- dlls/wined3d/context_vk.c | 14 ++++++++++++++ 2 files changed, 14 insertions(+), 15 deletions(-)
diff --git a/dlls/wined3d/adapter_vk.c b/dlls/wined3d/adapter_vk.c index 73807d827e6..96eeeb3472a 100644 --- a/dlls/wined3d/adapter_vk.c +++ b/dlls/wined3d/adapter_vk.c @@ -1724,7 +1724,6 @@ static void adapter_vk_draw_primitive(struct wined3d_device *device, struct wined3d_context_vk *context_vk; VkCommandBuffer vk_command_buffer; uint32_t instance_count; - unsigned int i;
TRACE("device %p, state %p, parameters %p.\n", device, state, parameters);
@@ -1744,20 +1743,6 @@ static void adapter_vk_draw_primitive(struct wined3d_device *device,
if (context_vk->c.transform_feedback_active) { - if (!context_vk->vk_so_counter_bo.vk_buffer) - { - struct wined3d_bo_vk *bo = &context_vk->vk_so_counter_bo; - - if (!wined3d_context_vk_create_bo(context_vk, ARRAY_SIZE(context_vk->vk_so_counters) * sizeof(uint32_t) * 2, - VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT, bo)) - ERR("Failed to create counter BO.\n"); - for (i = 0; i < ARRAY_SIZE(context_vk->vk_so_counters); ++i) - { - context_vk->vk_so_counters[i] = bo->vk_buffer; - context_vk->vk_so_offsets[i] = bo->b.buffer_offset + i * sizeof(uint32_t) * 2; - } - } - wined3d_context_vk_reference_bo(context_vk, &context_vk->vk_so_counter_bo); if (context_vk->c.transform_feedback_paused) VK_CALL(vkCmdBeginTransformFeedbackEXT(vk_command_buffer, 0, ARRAY_SIZE(context_vk->vk_so_counters), diff --git a/dlls/wined3d/context_vk.c b/dlls/wined3d/context_vk.c index 75f0e68395c..fcdaaa17966 100644 --- a/dlls/wined3d/context_vk.c +++ b/dlls/wined3d/context_vk.c @@ -2813,6 +2813,20 @@ static void wined3d_context_vk_bind_stream_output_buffers(struct wined3d_context struct wined3d_buffer *buffer; unsigned int i, first, count;
+ if (!context_vk->vk_so_counter_bo.vk_buffer) + { + struct wined3d_bo_vk *bo = &context_vk->vk_so_counter_bo; + + if (!wined3d_context_vk_create_bo(context_vk, ARRAY_SIZE(context_vk->vk_so_counters) * sizeof(uint32_t) * 2, + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT, bo)) + ERR("Failed to create counter BO.\n"); + for (i = 0; i < ARRAY_SIZE(context_vk->vk_so_counters); ++i) + { + context_vk->vk_so_counters[i] = bo->vk_buffer; + context_vk->vk_so_offsets[i] = bo->b.buffer_offset + i * sizeof(uint32_t) * 2; + } + } + first = 0; count = 0; for (i = 0; i < ARRAY_SIZE(state->stream_output); ++i)