vulkan: Limit multisampling to supported sample counts. (#828)

This commit is contained in:
squidbus 2024-09-12 12:59:23 -07:00 committed by GitHub
parent bc66fe8fb5
commit fc90f279e2
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 29 additions and 6 deletions

View file

@ -146,10 +146,15 @@ Image::Image(const Vulkan::Instance& instance_, Vulkan::Scheduler& scheduler_,
break;
}
constexpr auto tiling = vk::ImageTiling::eOptimal;
const auto supported_format = instance->GetSupportedFormat(info.pixel_format);
const auto properties = instance->GetPhysicalDevice().getImageFormatProperties(
supported_format, info.type, tiling, usage, flags);
const vk::ImageCreateInfo image_ci = {
.flags = flags,
.imageType = info.type,
.format = instance->GetSupportedFormat(info.pixel_format),
.format = supported_format,
.extent{
.width = info.size.width,
.height = info.size.height,
@ -157,8 +162,8 @@ Image::Image(const Vulkan::Instance& instance_, Vulkan::Scheduler& scheduler_,
},
.mipLevels = static_cast<u32>(info.resources.levels),
.arrayLayers = static_cast<u32>(info.resources.layers),
.samples = LiverpoolToVK::NumSamples(info.num_samples),
.tiling = vk::ImageTiling::eOptimal,
.samples = LiverpoolToVK::NumSamples(info.num_samples, properties.sampleCounts),
.tiling = tiling,
.usage = usage,
.initialLayout = vk::ImageLayout::eUndefined,
};