From f5c4ac079080f14034205bd530f4e1829bd0be45 Mon Sep 17 00:00:00 2001 From: firewire Date: Tue, 14 Apr 2026 18:20:52 -0400 Subject: [PATCH] ctx - max sample usage --- oatmeal/src/ctx.h | 2 ++ oatmeal/src/ctx_attachments.cpp | 27 +++++++++++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 oatmeal/src/ctx_attachments.cpp diff --git a/oatmeal/src/ctx.h b/oatmeal/src/ctx.h index d1ac7fd..73461ce 100644 --- a/oatmeal/src/ctx.h +++ b/oatmeal/src/ctx.h @@ -87,5 +87,7 @@ namespace Oatmeal { void pickPhysicalDevice(); bool isPhysicalDeviceSupported(vk::raii::PhysicalDevice device); uint32_t scorePhysicalDevice(vk::raii::PhysicalDevice device); + vk::SampleCountFlagBits getMaxUsableSampleCount(); + void createLogicalDevice(); }; } // namespace Oatmeal diff --git a/oatmeal/src/ctx_attachments.cpp b/oatmeal/src/ctx_attachments.cpp new file mode 100644 index 0000000..22b723d --- /dev/null +++ b/oatmeal/src/ctx_attachments.cpp @@ -0,0 +1,27 @@ +#include "ctx.h" +#include "vulkan/vulkan.hpp" + +namespace Oatmeal { + + vk::SampleCountFlagBits ctx::getMaxUsableSampleCount() { + vk::PhysicalDeviceProperties physicalDeviceProperties = m_physicalDevice.getProperties(); + + vk::SampleCountFlags count = physicalDeviceProperties.limits.framebufferColorSampleCounts & + physicalDeviceProperties.limits.framebufferDepthSampleCounts; + + if (count & vk::SampleCountFlagBits::e16) { + return vk::SampleCountFlagBits::e16; + } + if (count & vk::SampleCountFlagBits::e8) { + return vk::SampleCountFlagBits::e8; + } + if (count & vk::SampleCountFlagBits::e4) { + return vk::SampleCountFlagBits::e4; + } + if (count & vk::SampleCountFlagBits::e2) { + return vk::SampleCountFlagBits::e2; + } + + return vk::SampleCountFlagBits::e1; + } +} // namespace Oatmeal