vkd3d: Remove heap_offset member from d3d12_resource.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
This commit is contained in:
parent
56ff4622b6
commit
d6a4826099
|
@ -4922,8 +4922,8 @@ static void STDMETHODCALLTYPE d3d12_command_list_CopyBufferRegion(d3d12_command_
|
|||
|
||||
d3d12_command_list_end_current_render_pass(list, true);
|
||||
|
||||
buffer_copy.srcOffset = src_offset + src_resource->heap_offset;
|
||||
buffer_copy.dstOffset = dst_offset + dst_resource->heap_offset;
|
||||
buffer_copy.srcOffset = src_offset + src_resource->mem.offset;
|
||||
buffer_copy.dstOffset = dst_offset + dst_resource->mem.offset;
|
||||
buffer_copy.size = byte_count;
|
||||
|
||||
VK_CALL(vkCmdCopyBuffer(list->vk_command_buffer,
|
||||
|
@ -5388,7 +5388,7 @@ static void STDMETHODCALLTYPE d3d12_command_list_CopyTextureRegion(d3d12_command
|
|||
|
||||
vk_image_buffer_copy_from_d3d12(&buffer_image_copy, &dst->PlacedFootprint,
|
||||
src->SubresourceIndex, &src_resource->desc, dst_format, src_box, dst_x, dst_y, dst_z);
|
||||
buffer_image_copy.bufferOffset += dst_resource->heap_offset;
|
||||
buffer_image_copy.bufferOffset += dst_resource->mem.offset;
|
||||
|
||||
vk_layout = d3d12_resource_pick_layout(src_resource, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL);
|
||||
|
||||
|
@ -5430,7 +5430,7 @@ static void STDMETHODCALLTYPE d3d12_command_list_CopyTextureRegion(d3d12_command
|
|||
|
||||
vk_buffer_image_copy_from_d3d12(&buffer_image_copy, &src->PlacedFootprint,
|
||||
dst->SubresourceIndex, &dst_resource->desc, src_format, src_box, dst_x, dst_y, dst_z);
|
||||
buffer_image_copy.bufferOffset += src_resource->heap_offset;
|
||||
buffer_image_copy.bufferOffset += src_resource->mem.offset;
|
||||
|
||||
vk_layout = d3d12_resource_pick_layout(dst_resource, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL);
|
||||
|
||||
|
@ -5516,8 +5516,8 @@ static void STDMETHODCALLTYPE d3d12_command_list_CopyResource(d3d12_command_list
|
|||
assert(d3d12_resource_is_buffer(src_resource));
|
||||
assert(src_resource->desc.Width == dst_resource->desc.Width);
|
||||
|
||||
vk_buffer_copy.srcOffset = src_resource->heap_offset;
|
||||
vk_buffer_copy.dstOffset = dst_resource->heap_offset;
|
||||
vk_buffer_copy.srcOffset = src_resource->mem.offset;
|
||||
vk_buffer_copy.dstOffset = dst_resource->mem.offset;
|
||||
vk_buffer_copy.size = dst_resource->desc.Width;
|
||||
VK_CALL(vkCmdCopyBuffer(list->vk_command_buffer,
|
||||
src_resource->res.vk_buffer, dst_resource->res.vk_buffer, 1, &vk_buffer_copy));
|
||||
|
@ -7510,7 +7510,7 @@ static void STDMETHODCALLTYPE d3d12_command_list_ResolveQueryData(d3d12_command_
|
|||
if (type != D3D12_QUERY_TYPE_BINARY_OCCLUSION)
|
||||
{
|
||||
copy_region.srcOffset = stride * start_index;
|
||||
copy_region.dstOffset = buffer->heap_offset + aligned_dst_buffer_offset;
|
||||
copy_region.dstOffset = buffer->mem.offset + aligned_dst_buffer_offset;
|
||||
copy_region.size = stride * query_count;
|
||||
|
||||
VK_CALL(vkCmdCopyBuffer(list->vk_command_buffer,
|
||||
|
@ -7523,7 +7523,7 @@ static void STDMETHODCALLTYPE d3d12_command_list_ResolveQueryData(d3d12_command_
|
|||
|
||||
d3d12_command_list_resolve_binary_occlusion_queries(list,
|
||||
query_heap->vk_buffer, start_index, buffer->res.vk_buffer,
|
||||
buffer->heap_offset, buffer->desc.Width, dst_index,
|
||||
buffer->mem.offset, buffer->desc.Width, dst_index,
|
||||
query_count);
|
||||
}
|
||||
}
|
||||
|
@ -7531,7 +7531,7 @@ static void STDMETHODCALLTYPE d3d12_command_list_ResolveQueryData(d3d12_command_
|
|||
{
|
||||
d3d12_command_list_read_query_range(list, query_heap->vk_query_pool, start_index, query_count);
|
||||
VK_CALL(vkCmdCopyQueryPoolResults(list->vk_command_buffer, query_heap->vk_query_pool,
|
||||
start_index, query_count, buffer->res.vk_buffer, buffer->heap_offset + aligned_dst_buffer_offset,
|
||||
start_index, query_count, buffer->res.vk_buffer, buffer->mem.offset + aligned_dst_buffer_offset,
|
||||
stride, VK_QUERY_RESULT_64_BIT | VK_QUERY_RESULT_WAIT_BIT));
|
||||
}
|
||||
}
|
||||
|
@ -7606,7 +7606,7 @@ static void STDMETHODCALLTYPE d3d12_command_list_SetPredication(d3d12_command_li
|
|||
{
|
||||
FIXME_ONCE("64-bit predicates not supported.\n");
|
||||
|
||||
copy_region.srcOffset = resource->heap_offset + aligned_buffer_offset;
|
||||
copy_region.srcOffset = resource->mem.offset + aligned_buffer_offset;
|
||||
copy_region.dstOffset = scratch.offset;
|
||||
copy_region.size = sizeof(uint32_t);
|
||||
|
||||
|
@ -7832,12 +7832,12 @@ static void STDMETHODCALLTYPE d3d12_command_list_ExecuteIndirect(d3d12_command_l
|
|||
else if (count_buffer)
|
||||
{
|
||||
scratch.buffer = count_impl->res.vk_buffer;
|
||||
scratch.offset = count_impl->heap_offset + count_buffer_offset;
|
||||
scratch.offset = count_impl->mem.offset + count_buffer_offset;
|
||||
}
|
||||
else
|
||||
{
|
||||
scratch.buffer = arg_impl->res.vk_buffer;
|
||||
scratch.offset = arg_impl->heap_offset + arg_buffer_offset;
|
||||
scratch.offset = arg_impl->mem.offset + arg_buffer_offset;
|
||||
}
|
||||
|
||||
switch (arg_desc->Type)
|
||||
|
@ -7852,13 +7852,13 @@ static void STDMETHODCALLTYPE d3d12_command_list_ExecuteIndirect(d3d12_command_l
|
|||
if (count_buffer || list->predicate_va)
|
||||
{
|
||||
VK_CALL(vkCmdDrawIndirectCountKHR(list->vk_command_buffer, arg_impl->res.vk_buffer,
|
||||
arg_buffer_offset + arg_impl->heap_offset, scratch.buffer, scratch.offset,
|
||||
arg_buffer_offset + arg_impl->mem.offset, scratch.buffer, scratch.offset,
|
||||
max_command_count, signature_desc->ByteStride));
|
||||
}
|
||||
else
|
||||
{
|
||||
VK_CALL(vkCmdDrawIndirect(list->vk_command_buffer, arg_impl->res.vk_buffer,
|
||||
arg_buffer_offset + arg_impl->heap_offset, max_command_count, signature_desc->ByteStride));
|
||||
arg_buffer_offset + arg_impl->mem.offset, max_command_count, signature_desc->ByteStride));
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -7880,13 +7880,13 @@ static void STDMETHODCALLTYPE d3d12_command_list_ExecuteIndirect(d3d12_command_l
|
|||
if (count_buffer || list->predicate_va)
|
||||
{
|
||||
VK_CALL(vkCmdDrawIndexedIndirectCountKHR(list->vk_command_buffer, arg_impl->res.vk_buffer,
|
||||
arg_buffer_offset + arg_impl->heap_offset, scratch.buffer, scratch.offset,
|
||||
arg_buffer_offset + arg_impl->mem.offset, scratch.buffer, scratch.offset,
|
||||
max_command_count, signature_desc->ByteStride));
|
||||
}
|
||||
else
|
||||
{
|
||||
VK_CALL(vkCmdDrawIndexedIndirect(list->vk_command_buffer, arg_impl->res.vk_buffer,
|
||||
arg_buffer_offset + arg_impl->heap_offset, max_command_count, signature_desc->ByteStride));
|
||||
arg_buffer_offset + arg_impl->mem.offset, max_command_count, signature_desc->ByteStride));
|
||||
}
|
||||
break;
|
||||
|
||||
|
|
|
@ -1310,7 +1310,7 @@ static bool d3d12_resource_get_mapped_memory_range(struct d3d12_resource *resour
|
|||
|
||||
if (resource->desc.Dimension == D3D12_RESOURCE_DIMENSION_BUFFER)
|
||||
{
|
||||
vk_mapped_range->offset = resource->heap_offset;
|
||||
vk_mapped_range->offset = resource->mem.offset;
|
||||
vk_mapped_range->size = resource->desc.Width;
|
||||
}
|
||||
else
|
||||
|
@ -2322,8 +2322,6 @@ HRESULT d3d12_resource_create_committed(struct d3d12_device *device, const D3D12
|
|||
if (FAILED(hr = vkd3d_allocate_resource_memory(device,
|
||||
&device->memory_allocator, &allocate_info, &object->mem)))
|
||||
goto fail;
|
||||
|
||||
object->heap_offset = object->mem.offset;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -2341,7 +2339,6 @@ HRESULT d3d12_resource_create_committed(struct d3d12_device *device, const D3D12
|
|||
|
||||
object->res.vk_buffer = object->mem.resource.vk_buffer;
|
||||
object->res.va = object->mem.resource.va;
|
||||
object->heap_offset = object->mem.offset;
|
||||
}
|
||||
|
||||
*resource = object;
|
||||
|
@ -2362,12 +2359,12 @@ static HRESULT d3d12_resource_bind_image_memory(struct d3d12_resource *resource,
|
|||
VK_CALL(vkGetImageMemoryRequirements(device->vk_device, resource->res.vk_image, &memory_requirements));
|
||||
|
||||
/* TODO implement sparse fallback instead to enforce alignment */
|
||||
if (resource->heap_offset & (memory_requirements.alignment - 1))
|
||||
if (resource->mem.offset & (memory_requirements.alignment - 1))
|
||||
{
|
||||
struct vkd3d_allocate_heap_memory_info allocate_info;
|
||||
|
||||
FIXME("Cannot allocate image %p with alignment %#"PRIx64" at heap offset %#"PRIx64", allocating device memory.\n",
|
||||
resource->res.vk_image, memory_requirements.alignment, resource->heap_offset);
|
||||
resource->res.vk_image, memory_requirements.alignment, resource->mem.offset);
|
||||
|
||||
memset(&allocate_info, 0, sizeof(allocate_info));
|
||||
allocate_info.heap_desc.Properties = resource->heap->desc.Properties;
|
||||
|
@ -2380,11 +2377,10 @@ static HRESULT d3d12_resource_bind_image_memory(struct d3d12_resource *resource,
|
|||
return hr;
|
||||
|
||||
resource->flags |= VKD3D_RESOURCE_ALLOCATION;
|
||||
resource->heap_offset = resource->mem.offset;
|
||||
}
|
||||
|
||||
if ((vr = VK_CALL(vkBindImageMemory(device->vk_device, resource->res.vk_image,
|
||||
resource->mem.vk_memory, resource->heap_offset)) < 0))
|
||||
resource->mem.vk_memory, resource->mem.offset)) < 0))
|
||||
{
|
||||
ERR("Failed to bind image memory, vr %d.\n", vr);
|
||||
return hresult_from_vk_result(vr);
|
||||
|
@ -2438,7 +2434,6 @@ HRESULT d3d12_resource_create_placed(struct d3d12_device *device, const D3D12_RE
|
|||
/* The exact allocation size is not important here since the
|
||||
* resource does not own the allocation, so just set it to 0. */
|
||||
vkd3d_memory_allocation_slice(&object->mem, &heap->allocation, heap_offset, 0);
|
||||
object->heap_offset = object->mem.offset;
|
||||
|
||||
if (d3d12_resource_is_texture(object))
|
||||
{
|
||||
|
@ -2939,7 +2934,7 @@ static bool vkd3d_create_buffer_view_for_resource(struct d3d12_device *device,
|
|||
key.view_type = VKD3D_VIEW_TYPE_BUFFER;
|
||||
key.u.buffer.buffer = resource->res.vk_buffer;
|
||||
key.u.buffer.format = format;
|
||||
key.u.buffer.offset = resource->heap_offset + offset * element_size;
|
||||
key.u.buffer.offset = resource->mem.offset + offset * element_size;
|
||||
key.u.buffer.size = size * element_size;
|
||||
|
||||
return !!(*view = vkd3d_view_map_create_view(&resource->view_map, device, &key));
|
||||
|
@ -3279,7 +3274,7 @@ static void vkd3d_buffer_view_get_bound_range_ssbo(struct d3d12_desc *descriptor
|
|||
|
||||
/* heap_offset is guaranteed to have 64KiB alignment */
|
||||
vk_buffer->buffer = resource->res.vk_buffer;
|
||||
vk_buffer->offset = resource->heap_offset + aligned_begin;
|
||||
vk_buffer->offset = resource->mem.offset + aligned_begin;
|
||||
vk_buffer->range = aligned_end - aligned_begin;
|
||||
|
||||
bound_range->byte_offset = offset - aligned_begin;
|
||||
|
@ -3841,7 +3836,7 @@ static void vkd3d_create_buffer_uav(struct d3d12_desc *descriptor, struct d3d12_
|
|||
if (device->bindless_state.flags & VKD3D_RAW_VA_AUX_BUFFER)
|
||||
{
|
||||
VkDeviceAddress address = vkd3d_get_buffer_device_address(device, counter_resource->res.vk_buffer);
|
||||
uav_counter_address = address + counter_resource->heap_offset + desc->Buffer.CounterOffsetInBytes;
|
||||
uav_counter_address = address + counter_resource->mem.offset + desc->Buffer.CounterOffsetInBytes;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -686,7 +686,6 @@ struct d3d12_resource
|
|||
struct vkd3d_unique_resource res;
|
||||
|
||||
struct d3d12_heap *heap;
|
||||
uint64_t heap_offset;
|
||||
|
||||
uint32_t flags;
|
||||
|
||||
|
@ -2578,7 +2577,7 @@ VkDeviceAddress vkd3d_get_buffer_device_address(struct d3d12_device *device, VkB
|
|||
|
||||
static inline VkDeviceAddress d3d12_resource_get_va(const struct d3d12_resource *resource, VkDeviceSize offset)
|
||||
{
|
||||
return vkd3d_get_buffer_device_address(resource->device, resource->res.vk_buffer) + resource->heap_offset + offset;
|
||||
return vkd3d_get_buffer_device_address(resource->device, resource->res.vk_buffer) + resource->mem.offset + offset;
|
||||
}
|
||||
|
||||
static inline unsigned int vkd3d_compute_workgroup_count(unsigned int thread_count, unsigned int workgroup_size)
|
||||
|
|
Loading…
Reference in New Issue