Signed-off-by: Zebediah Figura zfigura@codeweavers.com --- dlls/wined3d/buffer.c | 14 ++++---------- dlls/wined3d/context_vk.c | 28 ++++++++++++++-------------- dlls/wined3d/wined3d_private.h | 4 ++-- 3 files changed, 20 insertions(+), 26 deletions(-)
diff --git a/dlls/wined3d/buffer.c b/dlls/wined3d/buffer.c index 4c5e2054fe0..2dbff2310ad 100644 --- a/dlls/wined3d/buffer.c +++ b/dlls/wined3d/buffer.c @@ -1431,17 +1431,11 @@ static BOOL wined3d_buffer_vk_create_buffer_object(struct wined3d_buffer_vk *buf return TRUE; }
-const VkDescriptorBufferInfo *wined3d_buffer_vk_get_buffer_info(struct wined3d_buffer_vk *buffer_vk) +void wined3d_buffer_vk_get_buffer_info(struct wined3d_buffer_vk *buffer_vk, VkDescriptorBufferInfo *buffer_info) { - if (buffer_vk->bo_user.valid) - return &buffer_vk->buffer_info; - - buffer_vk->buffer_info.buffer = buffer_vk->bo.vk_buffer; - buffer_vk->buffer_info.offset = buffer_vk->bo.buffer_offset; - buffer_vk->buffer_info.range = buffer_vk->b.resource.size; - buffer_vk->bo_user.valid = true; - - return &buffer_vk->buffer_info; + buffer_info->buffer = buffer_vk->bo.vk_buffer; + buffer_info->offset = buffer_vk->bo.buffer_offset; + buffer_info->range = buffer_vk->b.resource.size; }
static BOOL wined3d_buffer_vk_prepare_location(struct wined3d_buffer *buffer, diff --git a/dlls/wined3d/context_vk.c b/dlls/wined3d/context_vk.c index 4b1bea38370..da6c1243ad7 100644 --- a/dlls/wined3d/context_vk.c +++ b/dlls/wined3d/context_vk.c @@ -2418,8 +2418,8 @@ static void wined3d_context_vk_bind_vertex_buffers(struct wined3d_context_vk *co VkDeviceSize offsets[ARRAY_SIZE(state->streams)] = {0}; VkBuffer buffers[ARRAY_SIZE(state->streams)]; const struct wined3d_stream_state *stream; - const VkDescriptorBufferInfo *buffer_info; struct wined3d_buffer_vk *buffer_vk; + VkDescriptorBufferInfo buffer_info; struct wined3d_buffer *buffer; unsigned int i, first, count;
@@ -2432,10 +2432,10 @@ static void wined3d_context_vk_bind_vertex_buffers(struct wined3d_context_vk *co if ((buffer = stream->buffer)) { buffer_vk = wined3d_buffer_vk(buffer); - buffer_info = wined3d_buffer_vk_get_buffer_info(buffer_vk); + wined3d_buffer_vk_get_buffer_info(buffer_vk, &buffer_info); wined3d_context_vk_reference_bo(context_vk, &buffer_vk->bo); - buffers[count] = buffer_info->buffer; - offsets[count] = buffer_info->offset + stream->offset; + buffers[count] = buffer_info.buffer; + offsets[count] = buffer_info.offset + stream->offset; ++count; continue; } @@ -2457,8 +2457,8 @@ static void wined3d_context_vk_bind_stream_output_buffers(struct wined3d_context VkDeviceSize sizes[ARRAY_SIZE(state->stream_output)]; VkBuffer buffers[ARRAY_SIZE(state->stream_output)]; const struct wined3d_stream_output *stream; - const VkDescriptorBufferInfo *buffer_info; struct wined3d_buffer_vk *buffer_vk; + VkDescriptorBufferInfo buffer_info; struct wined3d_buffer *buffer; unsigned int i, first, count;
@@ -2471,16 +2471,16 @@ static void wined3d_context_vk_bind_stream_output_buffers(struct wined3d_context if ((buffer = stream->buffer)) { buffer_vk = wined3d_buffer_vk(buffer); - buffer_info = wined3d_buffer_vk_get_buffer_info(buffer_vk); + wined3d_buffer_vk_get_buffer_info(buffer_vk, &buffer_info); wined3d_context_vk_reference_bo(context_vk, &buffer_vk->bo); - buffers[count] = buffer_info->buffer; + buffers[count] = buffer_info.buffer; if ((offsets[count] = stream->offset) == ~0u) { FIXME("Appending to stream output buffers not implemented.\n"); offsets[count] = 0; } - sizes[count] = buffer_info->range - offsets[count]; - offsets[count] += buffer_info->offset; + sizes[count] = buffer_info.range - offsets[count]; + offsets[count] += buffer_info.offset; ++count; continue; } @@ -2664,7 +2664,7 @@ static bool wined3d_shader_descriptor_writes_vk_add_cbv_write(struct wined3d_sha VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, &device_vk->null_resources_vk.buffer_info, NULL, NULL);
buffer_vk = wined3d_buffer_vk(buffer); - *buffer_info = *wined3d_buffer_vk_get_buffer_info(buffer_vk); + wined3d_buffer_vk_get_buffer_info(buffer_vk, buffer_info); buffer_info->offset += cb_state->offset; buffer_info->range = min(cb_state->size, buffer_info->range); if (!wined3d_shader_descriptor_writes_vk_add_write(writes, vk_descriptor_set, @@ -3309,7 +3309,7 @@ VkCommandBuffer wined3d_context_vk_apply_draw_state(struct wined3d_context_vk *c
if (wined3d_context_is_graphics_state_dirty(&context_vk->c, STATE_INDEXBUFFER) && state->index_buffer) { - const VkDescriptorBufferInfo *buffer_info; + VkDescriptorBufferInfo buffer_info; VkIndexType idx_type;
if (state->index_format == WINED3DFMT_R16_UINT) @@ -3317,10 +3317,10 @@ VkCommandBuffer wined3d_context_vk_apply_draw_state(struct wined3d_context_vk *c else idx_type = VK_INDEX_TYPE_UINT32; buffer_vk = wined3d_buffer_vk(state->index_buffer); - buffer_info = wined3d_buffer_vk_get_buffer_info(buffer_vk); + wined3d_buffer_vk_get_buffer_info(buffer_vk, &buffer_info); wined3d_context_vk_reference_bo(context_vk, &buffer_vk->bo); - VK_CALL(vkCmdBindIndexBuffer(vk_command_buffer, buffer_info->buffer, - buffer_info->offset + state->index_offset, idx_type)); + VK_CALL(vkCmdBindIndexBuffer(vk_command_buffer, buffer_info.buffer, + buffer_info.offset + state->index_offset, idx_type)); }
if (wined3d_context_is_graphics_state_dirty(&context_vk->c, STATE_CONSTANT_BUFFER(WINED3D_SHADER_TYPE_PIXEL)) diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index a2048fc6ea6..ca85f811673 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -4971,7 +4971,6 @@ struct wined3d_buffer_vk
struct wined3d_bo_vk bo; struct wined3d_bo_user bo_user; - VkDescriptorBufferInfo buffer_info; uint32_t bind_mask; };
@@ -4982,7 +4981,8 @@ static inline struct wined3d_buffer_vk *wined3d_buffer_vk(struct wined3d_buffer
void wined3d_buffer_vk_barrier(struct wined3d_buffer_vk *buffer_vk, struct wined3d_context_vk *context_vk, uint32_t bind_mask) DECLSPEC_HIDDEN; -const VkDescriptorBufferInfo *wined3d_buffer_vk_get_buffer_info(struct wined3d_buffer_vk *buffer_vk) DECLSPEC_HIDDEN; +void wined3d_buffer_vk_get_buffer_info(struct wined3d_buffer_vk *buffer_vk, + VkDescriptorBufferInfo *buffer_info) DECLSPEC_HIDDEN; HRESULT wined3d_buffer_vk_init(struct wined3d_buffer_vk *buffer_vk, struct wined3d_device *device, const struct wined3d_buffer_desc *desc, const struct wined3d_sub_resource_data *data, void *parent, const struct wined3d_parent_ops *parent_ops) DECLSPEC_HIDDEN;