From 4d540d5b4545cc472519365dcaa399168cb7d0f3 Mon Sep 17 00:00:00 2001 From: Sven Hesse Date: Wed, 9 Aug 2017 17:15:05 +0200 Subject: [PATCH] libs/vkd3d: Delete DXGI_FORMAT_UNKNOWN from the formats table again. Put it into a local in GetCopyableFootprints() instead. --- libs/vkd3d/device.c | 16 +++++++++++++--- libs/vkd3d/utils.c | 1 - 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/libs/vkd3d/device.c b/libs/vkd3d/device.c index 063effb0..8a6d0861 100644 --- a/libs/vkd3d/device.c +++ b/libs/vkd3d/device.c @@ -1121,6 +1121,8 @@ static void STDMETHODCALLTYPE d3d12_device_GetCopyableFootprints(ID3D12Device *i UINT64 base_offset, D3D12_PLACED_SUBRESOURCE_FOOTPRINT *layouts, UINT *row_counts, UINT64 *row_sizes, UINT64 *total_bytes) { + static const struct vkd3d_format vkd3d_format_unknown = {DXGI_FORMAT_UNKNOWN, VK_FORMAT_UNDEFINED, 1, 1, 1, 1, 0}; + unsigned int i, sub_resource_idx, miplevel_idx, width, height, row_count, row_size, row_pitch; unsigned int array_size, depth; const struct vkd3d_format *format; @@ -1139,10 +1141,18 @@ static void STDMETHODCALLTYPE d3d12_device_GetCopyableFootprints(ID3D12Device *i memset(row_sizes, 0xff, sizeof(*row_sizes) * sub_resource_count); if (total_bytes) *total_bytes = ~(UINT64)0; - if (!(format = vkd3d_get_format(desc->Format))) + + if (desc->Dimension != D3D12_RESOURCE_DIMENSION_BUFFER) { - WARN("Invalid format %#x.\n", desc->Format); - return; + if (!(format = vkd3d_get_format(desc->Format))) + { + WARN("Invalid format %#x.\n", desc->Format); + return; + } + } + else + { + format = &vkd3d_format_unknown; } switch (desc->Dimension) diff --git a/libs/vkd3d/utils.c b/libs/vkd3d/utils.c index d18196db..7c5a9add 100644 --- a/libs/vkd3d/utils.c +++ b/libs/vkd3d/utils.c @@ -20,7 +20,6 @@ static const struct vkd3d_format vkd3d_formats[] = { - {DXGI_FORMAT_UNKNOWN, VK_FORMAT_UNDEFINED, 1, 1, 1, 1, 0}, {DXGI_FORMAT_R32G32B32A32_FLOAT, VK_FORMAT_R32G32B32A32_SFLOAT, 16, 1, 1, 1, VK_IMAGE_ASPECT_COLOR_BIT}, {DXGI_FORMAT_R32G32B32A32_UINT, VK_FORMAT_R32G32B32A32_UINT, 16, 1, 1, 1, VK_IMAGE_ASPECT_COLOR_BIT}, {DXGI_FORMAT_R32G32B32A32_SINT, VK_FORMAT_R32G32B32A32_SINT, 16, 1, 1, 1, VK_IMAGE_ASPECT_COLOR_BIT},