vkd3d: Add d3d12_resource_desc_get_sub_resource_count.

Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
This commit is contained in:
Hans-Kristian Arntzen 2021-09-01 18:05:57 +02:00
parent 5c2376faf5
commit 3d5010555e
2 changed files with 9 additions and 3 deletions

View File

@ -3849,7 +3849,7 @@ static void STDMETHODCALLTYPE d3d12_device_GetCopyableFootprints(d3d12_device_if
= {DXGI_FORMAT_UNKNOWN, VK_FORMAT_UNDEFINED, 1, 1, 1, 1, 0, 1};
unsigned int i, sub_resource_idx, miplevel_idx, row_count, row_size, row_pitch;
unsigned int width, height, depth, array_size, num_planes, num_subresources;
unsigned int width, height, depth, num_planes, num_subresources;
unsigned int num_subresources_per_plane, plane_idx;
const struct vkd3d_format *plane_format;
const struct vkd3d_format *format;
@ -3886,9 +3886,8 @@ static void STDMETHODCALLTYPE d3d12_device_GetCopyableFootprints(d3d12_device_if
}
num_planes = format->plane_count;
array_size = d3d12_resource_desc_get_layer_count(desc);
num_subresources_per_plane = d3d12_resource_desc_get_sub_resource_count_per_plane(desc);
num_subresources = num_subresources_per_plane * num_planes;
num_subresources = d3d12_resource_desc_get_sub_resource_count(device, desc);
if (first_sub_resource >= num_subresources
|| sub_resource_count > num_subresources - first_sub_resource)

View File

@ -2962,6 +2962,13 @@ static inline unsigned int d3d12_resource_desc_get_sub_resource_count_per_plane(
return d3d12_resource_desc_get_layer_count(desc) * desc->MipLevels;
}
static inline unsigned int d3d12_resource_desc_get_sub_resource_count(const struct d3d12_device *device,
const D3D12_RESOURCE_DESC *desc)
{
const struct vkd3d_format *format = vkd3d_get_format(device, desc->Format, true);
return d3d12_resource_desc_get_sub_resource_count_per_plane(desc) * (format ? format->plane_count : 1);
}
static inline unsigned int d3d12_resource_get_sub_resource_count(const struct d3d12_resource *resource)
{
return d3d12_resource_desc_get_sub_resource_count_per_plane(&resource->desc) *