|
|
|
@ -238,15 +238,20 @@ void VKDevice::ReportLoss() const { |
|
|
|
bool VKDevice::IsOptimalAstcSupported(const vk::PhysicalDeviceFeatures& features, |
|
|
|
const vk::DispatchLoaderDynamic& dldi) const { |
|
|
|
static constexpr std::array astc_formats = { |
|
|
|
vk::Format::eAstc4x4SrgbBlock, vk::Format::eAstc8x8SrgbBlock, |
|
|
|
vk::Format::eAstc8x5SrgbBlock, vk::Format::eAstc5x4SrgbBlock, |
|
|
|
vk::Format::eAstc4x4UnormBlock, vk::Format::eAstc4x4SrgbBlock, |
|
|
|
vk::Format::eAstc5x4UnormBlock, vk::Format::eAstc5x4SrgbBlock, |
|
|
|
vk::Format::eAstc5x5UnormBlock, vk::Format::eAstc5x5SrgbBlock, |
|
|
|
vk::Format::eAstc10x8UnormBlock, vk::Format::eAstc10x8SrgbBlock, |
|
|
|
vk::Format::eAstc6x5UnormBlock, vk::Format::eAstc6x5SrgbBlock, |
|
|
|
vk::Format::eAstc6x6UnormBlock, vk::Format::eAstc6x6SrgbBlock, |
|
|
|
vk::Format::eAstc10x10UnormBlock, vk::Format::eAstc10x10SrgbBlock, |
|
|
|
vk::Format::eAstc12x12UnormBlock, vk::Format::eAstc12x12SrgbBlock, |
|
|
|
vk::Format::eAstc8x5UnormBlock, vk::Format::eAstc8x5SrgbBlock, |
|
|
|
vk::Format::eAstc8x6UnormBlock, vk::Format::eAstc8x6SrgbBlock, |
|
|
|
vk::Format::eAstc6x5UnormBlock, vk::Format::eAstc6x5SrgbBlock}; |
|
|
|
vk::Format::eAstc8x8UnormBlock, vk::Format::eAstc8x8SrgbBlock, |
|
|
|
vk::Format::eAstc10x5UnormBlock, vk::Format::eAstc10x5SrgbBlock, |
|
|
|
vk::Format::eAstc10x6UnormBlock, vk::Format::eAstc10x6SrgbBlock, |
|
|
|
vk::Format::eAstc10x8UnormBlock, vk::Format::eAstc10x8SrgbBlock, |
|
|
|
vk::Format::eAstc10x10UnormBlock, vk::Format::eAstc10x10SrgbBlock, |
|
|
|
vk::Format::eAstc12x10UnormBlock, vk::Format::eAstc12x10SrgbBlock, |
|
|
|
vk::Format::eAstc12x12UnormBlock, vk::Format::eAstc12x12SrgbBlock}; |
|
|
|
if (!features.textureCompressionASTC_LDR) { |
|
|
|
return false; |
|
|
|
} |
|
|
|
@ -570,24 +575,34 @@ std::unordered_map<vk::Format, vk::FormatProperties> VKDevice::GetFormatProperti |
|
|
|
vk::Format::eBc2SrgbBlock, |
|
|
|
vk::Format::eBc3SrgbBlock, |
|
|
|
vk::Format::eBc7SrgbBlock, |
|
|
|
vk::Format::eAstc4x4UnormBlock, |
|
|
|
vk::Format::eAstc4x4SrgbBlock, |
|
|
|
vk::Format::eAstc8x8SrgbBlock, |
|
|
|
vk::Format::eAstc8x5SrgbBlock, |
|
|
|
vk::Format::eAstc5x4UnormBlock, |
|
|
|
vk::Format::eAstc5x4SrgbBlock, |
|
|
|
vk::Format::eAstc5x5UnormBlock, |
|
|
|
vk::Format::eAstc5x5SrgbBlock, |
|
|
|
vk::Format::eAstc10x8UnormBlock, |
|
|
|
vk::Format::eAstc10x8SrgbBlock, |
|
|
|
vk::Format::eAstc6x5UnormBlock, |
|
|
|
vk::Format::eAstc6x5SrgbBlock, |
|
|
|
vk::Format::eAstc6x6UnormBlock, |
|
|
|
vk::Format::eAstc6x6SrgbBlock, |
|
|
|
vk::Format::eAstc8x5UnormBlock, |
|
|
|
vk::Format::eAstc8x5SrgbBlock, |
|
|
|
vk::Format::eAstc8x6UnormBlock, |
|
|
|
vk::Format::eAstc8x6SrgbBlock, |
|
|
|
vk::Format::eAstc8x8UnormBlock, |
|
|
|
vk::Format::eAstc8x8SrgbBlock, |
|
|
|
vk::Format::eAstc10x5UnormBlock, |
|
|
|
vk::Format::eAstc10x5SrgbBlock, |
|
|
|
vk::Format::eAstc10x6UnormBlock, |
|
|
|
vk::Format::eAstc10x6SrgbBlock, |
|
|
|
vk::Format::eAstc10x8UnormBlock, |
|
|
|
vk::Format::eAstc10x8SrgbBlock, |
|
|
|
vk::Format::eAstc10x10UnormBlock, |
|
|
|
vk::Format::eAstc10x10SrgbBlock, |
|
|
|
vk::Format::eAstc12x10UnormBlock, |
|
|
|
vk::Format::eAstc12x10SrgbBlock, |
|
|
|
vk::Format::eAstc12x12UnormBlock, |
|
|
|
vk::Format::eAstc12x12SrgbBlock, |
|
|
|
vk::Format::eAstc8x6UnormBlock, |
|
|
|
vk::Format::eAstc8x6SrgbBlock, |
|
|
|
vk::Format::eAstc6x5UnormBlock, |
|
|
|
vk::Format::eAstc6x5SrgbBlock, |
|
|
|
vk::Format::eE5B9G9R9UfloatPack32}; |
|
|
|
std::unordered_map<vk::Format, vk::FormatProperties> format_properties; |
|
|
|
for (const auto format : formats) { |
|
|
|
|