diff --git a/src/dxgi/dxgi_format.cpp b/src/dxgi/dxgi_format.cpp index 306f773e..996d3651 100644 --- a/src/dxgi/dxgi_format.cpp +++ b/src/dxgi/dxgi_format.cpp @@ -318,12 +318,10 @@ namespace dxvk { VK_FORMAT_R8_UINT, VK_IMAGE_ASPECT_COLOR_BIT }, // DXGI_FORMAT_A8_UNORM - { VK_FORMAT_R8_UNORM, + { VK_FORMAT_A8_UNORM_KHR, VK_FORMAT_UNDEFINED, - VK_FORMAT_UNDEFINED, - VK_IMAGE_ASPECT_COLOR_BIT, 0, - { VK_COMPONENT_SWIZZLE_ZERO, VK_COMPONENT_SWIZZLE_ZERO, - VK_COMPONENT_SWIZZLE_ZERO, VK_COMPONENT_SWIZZLE_R }}, + VK_FORMAT_R8_UINT, + VK_IMAGE_ASPECT_COLOR_BIT, 0 }, // DXGI_FORMAT_R1_UNORM { }, // Unsupported // DXGI_FORMAT_R9G9B9E5_SHAREDEXP @@ -860,6 +858,16 @@ namespace dxvk { RemapDepthFormat(DXGI_FORMAT_X24_TYPELESS_G8_UINT, VK_FORMAT_D32_SFLOAT_S8_UINT); RemapDepthFormat(DXGI_FORMAT_D24_UNORM_S8_UINT, VK_FORMAT_D32_SFLOAT_S8_UINT); } + + // Map A8_UNORM to R8_UNORM with appropriate swizzles if necessary + if (!CheckImageFormatSupport(device, VK_FORMAT_A8_UNORM_KHR, + VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT | + VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT | + VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT)) { + RemapColorFormat(DXGI_FORMAT_A8_UNORM, VK_FORMAT_R8_UNORM, + { VK_COMPONENT_SWIZZLE_ZERO, VK_COMPONENT_SWIZZLE_ZERO, + VK_COMPONENT_SWIZZLE_ZERO, VK_COMPONENT_SWIZZLE_R }); + } }