vkd3d: Move copy descriptors implementation into a new func
Calling this from CopyDescriptorsSimple on its own is a bad idea given its __stdcall and GCC doesn't like optimizing that. Also marked it as inline given it can easily be optimized greatly contextually for CopyDescriptorsSimple Signed-off-by: Joshua Ashton <joshua@froggi.es>
This commit is contained in:
parent
79ee5ccf60
commit
73b7aefd81
|
@ -3226,26 +3226,17 @@ static void STDMETHODCALLTYPE d3d12_device_CreateSampler(d3d12_device_iface *ifa
|
||||||
d3d12_desc_write_atomic(d3d12_desc_from_cpu_handle(descriptor), &tmp, device);
|
d3d12_desc_write_atomic(d3d12_desc_from_cpu_handle(descriptor), &tmp, device);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void STDMETHODCALLTYPE d3d12_device_CopyDescriptors(d3d12_device_iface *iface,
|
static inline void d3d12_device_copy_descriptors(struct d3d12_device *device,
|
||||||
UINT dst_descriptor_range_count, const D3D12_CPU_DESCRIPTOR_HANDLE *dst_descriptor_range_offsets,
|
UINT dst_descriptor_range_count, const D3D12_CPU_DESCRIPTOR_HANDLE *dst_descriptor_range_offsets,
|
||||||
const UINT *dst_descriptor_range_sizes,
|
const UINT *dst_descriptor_range_sizes,
|
||||||
UINT src_descriptor_range_count, const D3D12_CPU_DESCRIPTOR_HANDLE *src_descriptor_range_offsets,
|
UINT src_descriptor_range_count, const D3D12_CPU_DESCRIPTOR_HANDLE *src_descriptor_range_offsets,
|
||||||
const UINT *src_descriptor_range_sizes,
|
const UINT *src_descriptor_range_sizes,
|
||||||
D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type)
|
D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type)
|
||||||
{
|
{
|
||||||
struct d3d12_device *device = impl_from_ID3D12Device(iface);
|
|
||||||
unsigned int dst_range_idx, dst_idx, src_range_idx, src_idx;
|
unsigned int dst_range_idx, dst_idx, src_range_idx, src_idx;
|
||||||
unsigned int dst_range_size, src_range_size;
|
unsigned int dst_range_size, src_range_size;
|
||||||
struct d3d12_desc *dst, *src;
|
struct d3d12_desc *dst, *src;
|
||||||
|
|
||||||
TRACE("iface %p, dst_descriptor_range_count %u, dst_descriptor_range_offsets %p, "
|
|
||||||
"dst_descriptor_range_sizes %p, src_descriptor_range_count %u, "
|
|
||||||
"src_descriptor_range_offsets %p, src_descriptor_range_sizes %p, "
|
|
||||||
"descriptor_heap_type %#x.\n",
|
|
||||||
iface, dst_descriptor_range_count, dst_descriptor_range_offsets,
|
|
||||||
dst_descriptor_range_sizes, src_descriptor_range_count, src_descriptor_range_offsets,
|
|
||||||
src_descriptor_range_sizes, descriptor_heap_type);
|
|
||||||
|
|
||||||
if (descriptor_heap_type != D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV
|
if (descriptor_heap_type != D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV
|
||||||
&& descriptor_heap_type != D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER)
|
&& descriptor_heap_type != D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER)
|
||||||
{
|
{
|
||||||
|
@ -3279,6 +3270,29 @@ static void STDMETHODCALLTYPE d3d12_device_CopyDescriptors(d3d12_device_iface *i
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void STDMETHODCALLTYPE d3d12_device_CopyDescriptors(d3d12_device_iface *iface,
|
||||||
|
UINT dst_descriptor_range_count, const D3D12_CPU_DESCRIPTOR_HANDLE *dst_descriptor_range_offsets,
|
||||||
|
const UINT *dst_descriptor_range_sizes,
|
||||||
|
UINT src_descriptor_range_count, const D3D12_CPU_DESCRIPTOR_HANDLE *src_descriptor_range_offsets,
|
||||||
|
const UINT *src_descriptor_range_sizes,
|
||||||
|
D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type)
|
||||||
|
{
|
||||||
|
TRACE("iface %p, dst_descriptor_range_count %u, dst_descriptor_range_offsets %p, "
|
||||||
|
"dst_descriptor_range_sizes %p, src_descriptor_range_count %u, "
|
||||||
|
"src_descriptor_range_offsets %p, src_descriptor_range_sizes %p, "
|
||||||
|
"descriptor_heap_type %#x.\n",
|
||||||
|
iface, dst_descriptor_range_count, dst_descriptor_range_offsets,
|
||||||
|
dst_descriptor_range_sizes, src_descriptor_range_count, src_descriptor_range_offsets,
|
||||||
|
src_descriptor_range_sizes, descriptor_heap_type);
|
||||||
|
|
||||||
|
d3d12_device_copy_descriptors(impl_from_ID3D12Device(iface),
|
||||||
|
dst_descriptor_range_count, dst_descriptor_range_offsets,
|
||||||
|
dst_descriptor_range_sizes,
|
||||||
|
src_descriptor_range_count, src_descriptor_range_offsets,
|
||||||
|
src_descriptor_range_sizes,
|
||||||
|
descriptor_heap_type);
|
||||||
|
}
|
||||||
|
|
||||||
static void STDMETHODCALLTYPE d3d12_device_CopyDescriptorsSimple(d3d12_device_iface *iface,
|
static void STDMETHODCALLTYPE d3d12_device_CopyDescriptorsSimple(d3d12_device_iface *iface,
|
||||||
UINT descriptor_count, const D3D12_CPU_DESCRIPTOR_HANDLE dst_descriptor_range_offset,
|
UINT descriptor_count, const D3D12_CPU_DESCRIPTOR_HANDLE dst_descriptor_range_offset,
|
||||||
const D3D12_CPU_DESCRIPTOR_HANDLE src_descriptor_range_offset,
|
const D3D12_CPU_DESCRIPTOR_HANDLE src_descriptor_range_offset,
|
||||||
|
@ -3289,8 +3303,10 @@ static void STDMETHODCALLTYPE d3d12_device_CopyDescriptorsSimple(d3d12_device_if
|
||||||
iface, descriptor_count, dst_descriptor_range_offset.ptr, src_descriptor_range_offset.ptr,
|
iface, descriptor_count, dst_descriptor_range_offset.ptr, src_descriptor_range_offset.ptr,
|
||||||
descriptor_heap_type);
|
descriptor_heap_type);
|
||||||
|
|
||||||
d3d12_device_CopyDescriptors(iface, 1, &dst_descriptor_range_offset, &descriptor_count,
|
d3d12_device_copy_descriptors(impl_from_ID3D12Device(iface),
|
||||||
1, &src_descriptor_range_offset, &descriptor_count, descriptor_heap_type);
|
1, &dst_descriptor_range_offset, &descriptor_count,
|
||||||
|
1, &src_descriptor_range_offset, &descriptor_count,
|
||||||
|
descriptor_heap_type);
|
||||||
}
|
}
|
||||||
|
|
||||||
static D3D12_RESOURCE_ALLOCATION_INFO* STDMETHODCALLTYPE d3d12_device_GetResourceAllocationInfo1(d3d12_device_iface *iface,
|
static D3D12_RESOURCE_ALLOCATION_INFO* STDMETHODCALLTYPE d3d12_device_GetResourceAllocationInfo1(d3d12_device_iface *iface,
|
||||||
|
|
Loading…
Reference in New Issue