Signed-off-by: Zebediah Figura zfigura@codeweavers.com --- dlls/wined3d/adapter_vk.c | 14 +++++++------- dlls/wined3d/buffer.c | 4 ++-- dlls/wined3d/context_gl.c | 8 ++++---- dlls/wined3d/context_vk.c | 10 +++++----- dlls/wined3d/device.c | 6 +++--- dlls/wined3d/state.c | 4 ++-- dlls/wined3d/texture.c | 8 ++++---- dlls/wined3d/view.c | 8 ++++---- dlls/wined3d/wined3d_private.h | 3 +-- 9 files changed, 32 insertions(+), 33 deletions(-)
diff --git a/dlls/wined3d/adapter_vk.c b/dlls/wined3d/adapter_vk.c index e6f5bf108c7..f9a31265cd3 100644 --- a/dlls/wined3d/adapter_vk.c +++ b/dlls/wined3d/adapter_vk.c @@ -1011,7 +1011,7 @@ static void *adapter_vk_map_bo_address(struct wined3d_context *context, vk_barrier.srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED; vk_barrier.dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED; vk_barrier.buffer = bo->vk_buffer; - vk_barrier.offset = bo->buffer_offset + (uintptr_t)data->addr; + vk_barrier.offset = bo->b.buffer_offset + (uintptr_t)data->addr; vk_barrier.size = size; VK_CALL(vkCmdPipelineBarrier(vk_command_buffer, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, VK_PIPELINE_STAGE_HOST_BIT, 0, 0, NULL, 1, &vk_barrier, 0, NULL)); @@ -1113,8 +1113,8 @@ void adapter_vk_copy_bo_address(struct wined3d_context *context, 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.srcOffset = src_bo->b.buffer_offset + (uintptr_t)src->addr; + region.dstOffset = dst_bo->b.buffer_offset + (uintptr_t)dst->addr; region.size = size;
vk_barrier[0].sType = VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER; @@ -1781,7 +1781,7 @@ static void adapter_vk_draw_primitive(struct wined3d_device *device, 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->buffer_offset + i * sizeof(uint32_t) * 2; + context_vk->vk_so_offsets[i] = bo->b.buffer_offset + i * sizeof(uint32_t) * 2; } }
@@ -1805,13 +1805,13 @@ static void adapter_vk_draw_primitive(struct wined3d_device *device, { stride = sizeof(VkDrawIndexedIndirectCommand); VK_CALL(vkCmdDrawIndexedIndirect(vk_command_buffer, bo->vk_buffer, - bo->buffer_offset + parameters->u.indirect.offset, size / stride, stride)); + bo->b.buffer_offset + parameters->u.indirect.offset, size / stride, stride)); } else { stride = sizeof(VkDrawIndirectCommand); VK_CALL(vkCmdDrawIndirect(vk_command_buffer, bo->vk_buffer, - bo->buffer_offset + parameters->u.indirect.offset, size / stride, stride)); + bo->b.buffer_offset + parameters->u.indirect.offset, size / stride, stride)); } } else @@ -1871,7 +1871,7 @@ static void adapter_vk_dispatch_compute(struct wined3d_device *device,
wined3d_context_vk_reference_bo(context_vk, bo); VK_CALL(vkCmdDispatchIndirect(vk_command_buffer, bo->vk_buffer, - bo->buffer_offset + parameters->u.indirect.offset)); + bo->b.buffer_offset + parameters->u.indirect.offset)); } else { diff --git a/dlls/wined3d/buffer.c b/dlls/wined3d/buffer.c index 315ea05260e..d3aeb2e76f4 100644 --- a/dlls/wined3d/buffer.c +++ b/dlls/wined3d/buffer.c @@ -1521,7 +1521,7 @@ const VkDescriptorBufferInfo *wined3d_buffer_vk_get_buffer_info(struct wined3d_b return &buffer_vk->buffer_info;
buffer_vk->buffer_info.buffer = bo->vk_buffer; - buffer_vk->buffer_info.offset = bo->buffer_offset; + buffer_vk->buffer_info.offset = bo->b.buffer_offset; buffer_vk->buffer_info.range = buffer_vk->b.resource.size; buffer_vk->b.bo_user.valid = true;
@@ -1702,7 +1702,7 @@ void wined3d_buffer_vk_barrier(struct wined3d_buffer_vk *buffer_vk, vk_barrier.srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED; vk_barrier.dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED; vk_barrier.buffer = bo->vk_buffer; - vk_barrier.offset = bo->buffer_offset; + vk_barrier.offset = bo->b.buffer_offset; vk_barrier.size = buffer_vk->b.resource.size; VK_CALL(vkCmdPipelineBarrier(wined3d_context_vk_get_command_buffer(context_vk), vk_pipeline_stage_mask_from_bind_flags(src_bind_mask), diff --git a/dlls/wined3d/context_gl.c b/dlls/wined3d/context_gl.c index 2751a4a2182..69eb13f3027 100644 --- a/dlls/wined3d/context_gl.c +++ b/dlls/wined3d/context_gl.c @@ -2922,7 +2922,7 @@ bool wined3d_context_gl_create_bo(struct wined3d_context_gl *context_gl, GLsizei list_init(&bo->b.users); bo->command_fence_id = 0; bo->b.memory_offset = 0; - bo->buffer_offset = 0; + bo->b.buffer_offset = 0; bo->b.map_ptr = NULL;
return true; @@ -3789,7 +3789,7 @@ static void wined3d_context_gl_bind_unordered_access_views(struct wined3d_contex
if (view_gl->counter_bo.id) GL_EXTCALL(glBindBufferRange(GL_ATOMIC_COUNTER_BUFFER, i, view_gl->counter_bo.id, - view_gl->counter_bo.buffer_offset, view_gl->counter_bo.size)); + view_gl->counter_bo.b.buffer_offset, view_gl->counter_bo.size)); } checkGLcall("Bind unordered access views"); } @@ -4915,7 +4915,7 @@ void draw_primitive(struct wined3d_device *device, const struct wined3d_state *s if (!bo || !stream_info->all_vbo) idx_data = index_buffer->resource.heap_memory; else - idx_data = (void *)wined3d_bo_gl(bo)->buffer_offset; + idx_data = (void *)bo->buffer_offset; idx_data = (const BYTE *)idx_data + state->index_offset;
if (state->index_format == WINED3DFMT_R16_UINT) @@ -5077,7 +5077,7 @@ static const void *get_vertex_attrib_pointer(const struct wined3d_stream_info_el const uint8_t *offset = element->data.addr + state->load_base_vertex_index * element->stride;
if (element->data.buffer_object) - offset += wined3d_bo_gl(element->data.buffer_object)->buffer_offset; + offset += element->data.buffer_object->buffer_offset; return offset; }
diff --git a/dlls/wined3d/context_vk.c b/dlls/wined3d/context_vk.c index ec3554ddc30..56b2da53060 100644 --- a/dlls/wined3d/context_vk.c +++ b/dlls/wined3d/context_vk.c @@ -456,8 +456,8 @@ static bool wined3d_context_vk_create_slab_bo(struct wined3d_context_vk *context *bo = slab->bo; bo->memory = NULL; bo->slab = slab; - bo->buffer_offset = idx * object_size; - bo->b.memory_offset = slab->bo.b.memory_offset + bo->buffer_offset; + bo->b.buffer_offset = idx * object_size; + bo->b.memory_offset = slab->bo.b.memory_offset + bo->b.buffer_offset; bo->size = size; list_init(&bo->b.users); bo->command_buffer_id = 0; @@ -465,7 +465,7 @@ static bool wined3d_context_vk_create_slab_bo(struct wined3d_context_vk *context
TRACE("Using buffer 0x%s, memory 0x%s, offset 0x%s for bo %p.\n", wine_dbgstr_longlong(bo->vk_buffer), wine_dbgstr_longlong(bo->vk_memory), - wine_dbgstr_longlong(bo->buffer_offset), bo); + wine_dbgstr_longlong(bo->b.buffer_offset), bo);
return true; } @@ -534,7 +534,7 @@ BOOL wined3d_context_vk_create_bo(struct wined3d_context_vk *context_vk, VkDevic }
bo->b.map_ptr = NULL; - bo->buffer_offset = 0; + bo->b.buffer_offset = 0; bo->size = size; bo->usage = usage; bo->memory_type = adapter_vk->memory_properties.memoryTypes[memory_type_idx].propertyFlags; @@ -961,7 +961,7 @@ void wined3d_context_vk_destroy_bo(struct wined3d_context_vk *context_vk, const if (bo->b.map_ptr) wined3d_bo_slab_vk_unmap(slab_vk, context_vk); object_size = slab_vk->bo.size / 32; - idx = bo->buffer_offset / object_size; + idx = bo->b.buffer_offset / object_size; wined3d_context_vk_destroy_bo_slab_slice(context_vk, slab_vk, idx, bo->command_buffer_id); return; } diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c index c5de58c29c9..7fb8a7ec3a6 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -657,9 +657,9 @@ bool wined3d_device_vk_create_null_resources(struct wined3d_device_vk *device_vk memory_type = VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT; if (!wined3d_context_vk_create_bo(context_vk, 16, usage, memory_type, &r->bo)) return false; - VK_CALL(vkCmdFillBuffer(vk_command_buffer, r->bo.vk_buffer, r->bo.buffer_offset, r->bo.size, 0x00000000u)); + VK_CALL(vkCmdFillBuffer(vk_command_buffer, r->bo.vk_buffer, r->bo.b.buffer_offset, r->bo.size, 0x00000000u)); r->buffer_info.buffer = r->bo.vk_buffer; - r->buffer_info.offset = r->bo.buffer_offset; + r->buffer_info.offset = r->bo.b.buffer_offset; r->buffer_info.range = r->bo.size;
if (!wined3d_null_image_vk_init(&r->image_1d, context_vk, vk_command_buffer, VK_IMAGE_TYPE_1D, 1, 1)) @@ -735,7 +735,7 @@ bool wined3d_device_vk_create_null_views(struct wined3d_device_vk *device_vk, st buffer_create_info.flags = 0; buffer_create_info.buffer = r->bo.vk_buffer; buffer_create_info.format = VK_FORMAT_R32_UINT; - buffer_create_info.offset = r->bo.buffer_offset; + buffer_create_info.offset = r->bo.b.buffer_offset; buffer_create_info.range = r->bo.size;
if ((vr = VK_CALL(vkCreateBufferView(device_vk->vk_device, diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c index e0dba8701bc..c76e0c2b604 100644 --- a/dlls/wined3d/state.c +++ b/dlls/wined3d/state.c @@ -4600,7 +4600,7 @@ static void state_cb(struct wined3d_context *context, const struct wined3d_state buffer = buffer_state->buffer; bo_gl = wined3d_bo_gl(buffer->buffer_object); GL_EXTCALL(glBindBufferRange(GL_UNIFORM_BUFFER, base + i, - bo_gl->id, bo_gl->buffer_offset + buffer_state->offset, buffer_state->size)); + bo_gl->id, bo_gl->b.buffer_offset + buffer_state->offset, buffer_state->size)); buffer->bo_user.valid = true; } checkGLcall("bind constant buffers"); @@ -4677,7 +4677,7 @@ static void state_so(struct wined3d_context *context, const struct wined3d_state } size = buffer->resource.size - offset; GL_EXTCALL(glBindBufferRange(GL_TRANSFORM_FEEDBACK_BUFFER, i, - bo_gl->id, bo_gl->buffer_offset + offset, size)); + bo_gl->id, bo_gl->b.buffer_offset + offset, size)); buffer->bo_user.valid = true; } checkGLcall("bind transform feedback buffers"); diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c index 7e2da350f5a..87ae569b549 100644 --- a/dlls/wined3d/texture.c +++ b/dlls/wined3d/texture.c @@ -4764,7 +4764,7 @@ static void wined3d_texture_vk_upload_data(struct wined3d_context *context, vk_barrier.srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED; vk_barrier.dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED; vk_barrier.buffer = src_bo->vk_buffer; - vk_barrier.offset = src_bo->buffer_offset + (size_t)src_bo_addr->addr; + vk_barrier.offset = src_bo->b.buffer_offset + (size_t)src_bo_addr->addr; vk_barrier.size = sub_resource->size;
src_offset += (size_t)src_bo_addr->addr; @@ -4788,7 +4788,7 @@ static void wined3d_texture_vk_upload_data(struct wined3d_context *context, dst_texture_vk->layout, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, dst_texture_vk->image.vk_image, &vk_range);
- region.bufferOffset = src_bo->buffer_offset + src_offset; + region.bufferOffset = src_bo->b.buffer_offset + src_offset; region.bufferRowLength = (src_row_pitch / src_format->block_byte_count) * src_format->block_width; if (src_row_pitch) region.bufferImageHeight = (src_slice_pitch / src_row_pitch) * src_format->block_height; @@ -4941,7 +4941,7 @@ static void wined3d_texture_vk_download_data(struct wined3d_context *context, vk_barrier.srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED; vk_barrier.dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED; vk_barrier.buffer = dst_bo->vk_buffer; - vk_barrier.offset = dst_bo->buffer_offset + (size_t)dst_bo_addr->addr; + vk_barrier.offset = dst_bo->b.buffer_offset + (size_t)dst_bo_addr->addr; vk_barrier.size = sub_resource->size;
bo_stage_flags = vk_pipeline_stage_mask_from_buffer_usage(dst_bo->usage); @@ -4964,7 +4964,7 @@ static void wined3d_texture_vk_download_data(struct wined3d_context *context, src_texture_vk->layout, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, src_texture_vk->image.vk_image, &vk_range);
- region.bufferOffset = dst_bo->buffer_offset + dst_offset; + region.bufferOffset = dst_bo->b.buffer_offset + dst_offset; region.bufferRowLength = 0; region.bufferImageHeight = 0; region.imageSubresource.aspectMask = vk_range.aspectMask; diff --git a/dlls/wined3d/view.c b/dlls/wined3d/view.c index b902812aded..b981602f1a2 100644 --- a/dlls/wined3d/view.c +++ b/dlls/wined3d/view.c @@ -685,7 +685,7 @@ static VkBufferView wined3d_view_vk_create_vk_buffer_view(struct wined3d_context create_info.flags = 0; create_info.buffer = bo->vk_buffer; create_info.format = view_format_vk->vk_format; - create_info.offset = bo->buffer_offset + offset; + create_info.offset = bo->b.buffer_offset + offset; create_info.range = size;
device_vk = wined3d_device_vk(buffer_vk->b.resource.device); @@ -2101,7 +2101,7 @@ void wined3d_unordered_access_view_vk_clear(struct wined3d_unordered_access_view
buffer_info.buffer = constants_bo.vk_buffer; buffer_info.range = constants_bo.size; - buffer_info.offset = constants_bo.buffer_offset; + buffer_info.offset = constants_bo.b.buffer_offset;
vk_info = context_vk->vk_info;
@@ -2234,7 +2234,7 @@ static void wined3d_unordered_access_view_vk_cs_init(void *object)
wined3d_context_vk_end_current_render_pass(context_vk); VK_CALL(vkCmdFillBuffer(wined3d_context_vk_get_command_buffer(context_vk), - uav_vk->counter_bo.vk_buffer, uav_vk->counter_bo.buffer_offset, sizeof(uint32_t), 0)); + uav_vk->counter_bo.vk_buffer, uav_vk->counter_bo.b.buffer_offset, sizeof(uint32_t), 0)); wined3d_context_vk_reference_bo(context_vk, &uav_vk->counter_bo);
create_info.sType = VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO; @@ -2242,7 +2242,7 @@ static void wined3d_unordered_access_view_vk_cs_init(void *object) create_info.flags = 0; create_info.buffer = uav_vk->counter_bo.vk_buffer; create_info.format = VK_FORMAT_R32_UINT; - create_info.offset = uav_vk->counter_bo.buffer_offset; + create_info.offset = uav_vk->counter_bo.b.buffer_offset; create_info.range = sizeof(uint32_t); if ((vr = VK_CALL(vkCreateBufferView(device_vk->vk_device, &create_info, NULL, &uav_vk->vk_counter_view))) < 0) diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index 79b02c2448d..2fce585c6b1 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -1597,6 +1597,7 @@ struct wined3d_bo { struct list users; void *map_ptr; + size_t buffer_offset; size_t memory_offset; bool coherent; }; @@ -1606,7 +1607,6 @@ struct wined3d_bo_gl struct wined3d_bo b;
GLuint id; - GLsizeiptr buffer_offset; GLsizeiptr size; GLenum binding; GLenum usage; @@ -1641,7 +1641,6 @@ struct wined3d_bo_vk
VkDeviceMemory vk_memory;
- VkDeviceSize buffer_offset; VkDeviceSize size; VkBufferUsageFlags usage; VkMemoryPropertyFlags memory_type;