diff --git a/libs/vkd3d/device.c b/libs/vkd3d/device.c index 50ddd487..2f89d37a 100644 --- a/libs/vkd3d/device.c +++ b/libs/vkd3d/device.c @@ -3808,20 +3808,7 @@ static UINT STDMETHODCALLTYPE d3d12_device_GetDescriptorHandleIncrementSize(d3d1 { TRACE("iface %p, descriptor_heap_type %#x.\n", iface, descriptor_heap_type); - switch (descriptor_heap_type) - { - case D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV: - case D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER: - return sizeof(struct d3d12_desc); - - case D3D12_DESCRIPTOR_HEAP_TYPE_RTV: - case D3D12_DESCRIPTOR_HEAP_TYPE_DSV: - return sizeof(struct d3d12_rtv_desc); - - default: - FIXME("Unhandled type %#x.\n", descriptor_heap_type); - return 0; - } + return d3d12_device_get_descriptor_handle_increment_size(descriptor_heap_type); } static HRESULT STDMETHODCALLTYPE d3d12_device_CreateRootSignature(d3d12_device_iface *iface, @@ -3960,7 +3947,7 @@ static inline void d3d12_device_copy_descriptors(struct d3d12_device *device, unsigned int dst_range_size, src_range_size, copy_count; unsigned int increment; - increment = d3d12_device_get_descriptor_handle_increment_size(device, descriptor_heap_type); + increment = d3d12_device_get_descriptor_handle_increment_size(descriptor_heap_type); dst_range_idx = dst_idx = 0; src_range_idx = src_idx = 0; diff --git a/libs/vkd3d/resource.c b/libs/vkd3d/resource.c index 3ff963fd..f96c9d73 100644 --- a/libs/vkd3d/resource.c +++ b/libs/vkd3d/resource.c @@ -5677,7 +5677,7 @@ HRESULT d3d12_descriptor_heap_create(struct d3d12_device *device, struct d3d12_descriptor_heap *object; HRESULT hr; - if (!(descriptor_size = d3d12_device_get_descriptor_handle_increment_size(device, desc->Type))) + if (!(descriptor_size = d3d12_device_get_descriptor_handle_increment_size(desc->Type))) { WARN("No descriptor size for descriptor type %#x.\n", desc->Type); return E_INVALIDARG; diff --git a/libs/vkd3d/vkd3d_private.h b/libs/vkd3d/vkd3d_private.h index 15a412a8..fc08b7e7 100644 --- a/libs/vkd3d/vkd3d_private.h +++ b/libs/vkd3d/vkd3d_private.h @@ -2989,10 +2989,23 @@ static inline ULONG d3d12_device_release(struct d3d12_device *device) return ID3D12Device9_Release(&device->ID3D12Device_iface); } -static inline unsigned int d3d12_device_get_descriptor_handle_increment_size(struct d3d12_device *device, - D3D12_DESCRIPTOR_HEAP_TYPE descriptor_type) +static inline unsigned int d3d12_device_get_descriptor_handle_increment_size( + D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type) { - return ID3D12Device9_GetDescriptorHandleIncrementSize(&device->ID3D12Device_iface, descriptor_type); + switch (descriptor_heap_type) + { + case D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV: + case D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER: + return sizeof(struct d3d12_desc); + + case D3D12_DESCRIPTOR_HEAP_TYPE_RTV: + case D3D12_DESCRIPTOR_HEAP_TYPE_DSV: + return sizeof(struct d3d12_rtv_desc); + + default: + FIXME("Unhandled type %#x.\n", descriptor_heap_type); + return 0; + } } static inline bool d3d12_device_use_ssbo_raw_buffer(struct d3d12_device *device)