From 8769215437bc50ef34682aba842f1eabda7caada Mon Sep 17 00:00:00 2001 From: Anish Bhobe Date: Thu, 27 Jun 2024 01:34:58 +0200 Subject: [PATCH] Removed duplication. --- aster/context.cpp | 4 ++-- aster/physical_device.cpp | 36 ++++++++++++++++++---------- aster/physical_device.h | 9 +++++++ aster/swapchain.cpp | 50 +++------------------------------------ 4 files changed, 38 insertions(+), 61 deletions(-) diff --git a/aster/context.cpp b/aster/context.cpp index 8656766..c74b503 100644 --- a/aster/context.cpp +++ b/aster/context.cpp @@ -12,7 +12,7 @@ constexpr eastl::array VALIDATION_LAYERS = { }; VKAPI_ATTR b32 VKAPI_CALL -debugCallback(VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, VkDebugUtilsMessageTypeFlagsEXT messageType, +DebugCallback(VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, VkDebugUtilsMessageTypeFlagsEXT messageType, const VkDebugUtilsMessengerCallbackDataEXT *callbackData, [[maybe_unused]] void *userData) { using Severity = vk::DebugUtilsMessageSeverityFlagsEXT; @@ -57,7 +57,7 @@ Context::Context(cstr appName, Version version, bool enableValidation) .messageType = vk::DebugUtilsMessageTypeFlagBitsEXT::eGeneral | vk::DebugUtilsMessageTypeFlagBitsEXT::ePerformance | vk::DebugUtilsMessageTypeFlagBitsEXT::eValidation, - .pfnUserCallback = debugCallback, + .pfnUserCallback = DebugCallback, .pUserData = nullptr, }; diff --git a/aster/physical_device.cpp b/aster/physical_device.cpp index a82d493..ecb368f 100644 --- a/aster/physical_device.cpp +++ b/aster/physical_device.cpp @@ -8,8 +8,20 @@ #include "context.h" #include "window.h" +[[nodiscard]] vk::SurfaceCapabilitiesKHR +GetSurfaceCapabilities(const vk::PhysicalDevice physicalDevice, const vk::SurfaceKHR surface) +{ + vk::SurfaceCapabilitiesKHR surfaceCapabilities; + + vk::Result result = physicalDevice.getSurfaceCapabilitiesKHR(surface, &surfaceCapabilities); + ERROR_IF(failed(result), "Fetching surface capabilities failed. Cause: {}", result) + THEN_ABORT(result); + + return surfaceCapabilities; +} + [[nodiscard]] eastl::vector -getSurfaceFormats(const vk::SurfaceKHR surface, const vk::PhysicalDevice physicalDevice) +GetSurfaceFormats(const vk::PhysicalDevice physicalDevice, const vk::SurfaceKHR surface) { // vk::Result::eIncomplete should not occur in this function. The rest are errors. Thus, abort is allowed. u32 count = 0; @@ -26,7 +38,7 @@ getSurfaceFormats(const vk::SurfaceKHR surface, const vk::PhysicalDevice physica } [[nodiscard]] eastl::vector -getSurfacePresentModes(const vk::SurfaceKHR surface, const vk::PhysicalDevice physicalDevice) +GetSurfacePresentModes(const vk::PhysicalDevice physicalDevice, const vk::SurfaceKHR surface) { // vk::Result::eIncomplete should not occur in this function. The rest are errors. Thus, abort is allowed. u32 count = 0; @@ -43,7 +55,7 @@ getSurfacePresentModes(const vk::SurfaceKHR surface, const vk::PhysicalDevice ph } [[nodiscard]] bool -getQueuePresentSupport(const u32 queueFamilyIndex, vk::SurfaceKHR surface, const vk::PhysicalDevice physicalDevice) +GetQueuePresentSupport(const u32 queueFamilyIndex, vk::SurfaceKHR surface, const vk::PhysicalDevice physicalDevice) { b32 supported = false; const vk::Result result = physicalDevice.getSurfaceSupportKHR(queueFamilyIndex, surface, &supported); @@ -54,7 +66,7 @@ getQueuePresentSupport(const u32 queueFamilyIndex, vk::SurfaceKHR surface, const } [[nodiscard]] eastl::fixed_vector -getQueueFamilyProperties(const vk::PhysicalDevice physicalDevice) +GetQueueFamilyProperties(const vk::PhysicalDevice physicalDevice) { // Devices rarely have more than 32 queue families. Thus fixed vector u32 count = 0; @@ -68,10 +80,10 @@ getQueueFamilyProperties(const vk::PhysicalDevice physicalDevice) // Size 384 return. [[nodiscard]] eastl::vector -getQueueFamilies(const vk::SurfaceKHR surface, const vk::PhysicalDevice physicalDevice) +GetQueueFamilies(const vk::SurfaceKHR surface, const vk::PhysicalDevice physicalDevice) { - auto queueFamilyProperties = getQueueFamilyProperties(physicalDevice); + auto queueFamilyProperties = GetQueueFamilyProperties(physicalDevice); eastl::vector queueFamilyInfos; queueFamilyInfos.reserve(queueFamilyProperties.size()); @@ -96,7 +108,7 @@ getQueueFamilies(const vk::SurfaceKHR surface, const vk::PhysicalDevice physical support |= QueueSupportFlagBits::eCompute; } - if (getQueuePresentSupport(familyIndex, surface, physicalDevice)) + if (GetQueuePresentSupport(familyIndex, surface, physicalDevice)) { support |= QueueSupportFlagBits::ePresent; } @@ -118,15 +130,15 @@ PhysicalDevice::PhysicalDevice(const vk::SurfaceKHR surface, const vk::PhysicalD physicalDevice.getProperties(&m_DeviceProperties); physicalDevice.getFeatures(&m_DeviceFeatures); - m_SurfaceFormats = getSurfaceFormats(surface, physicalDevice); - m_PresentModes = getSurfacePresentModes(surface, physicalDevice); - m_QueueFamilies = getQueueFamilies(surface, physicalDevice); + m_SurfaceFormats = GetSurfaceFormats(physicalDevice, surface); + m_PresentModes = GetSurfacePresentModes(physicalDevice, surface); + m_QueueFamilies = GetQueueFamilies(surface, physicalDevice); m_PhysicalDevice = physicalDevice; } eastl::fixed_vector -enumeratePhysicalDevices(const vk::Instance instance) +EnumeratePhysicalDevices(const vk::Instance instance) { u32 count = 0; vk::Result result = instance.enumeratePhysicalDevices(&count, nullptr); @@ -144,7 +156,7 @@ enumeratePhysicalDevices(const vk::Instance instance) PhysicalDevices::PhysicalDevices(const Window *window, const Context *context) { auto surface = window->m_Surface; - auto physicalDevices = enumeratePhysicalDevices(context->m_Instance); + auto physicalDevices = EnumeratePhysicalDevices(context->m_Instance); for (auto physicalDevice : physicalDevices) { this->emplace_back(surface, physicalDevice); diff --git a/aster/physical_device.h b/aster/physical_device.h index 5f824f8..7c977db 100644 --- a/aster/physical_device.h +++ b/aster/physical_device.h @@ -28,6 +28,15 @@ struct QueueFamilyInfo QueueSupportFlags m_Support; }; +[[nodiscard]] vk::SurfaceCapabilitiesKHR +GetSurfaceCapabilities(vk::PhysicalDevice physicalDevice, vk::SurfaceKHR surface); + +[[nodiscard]] eastl::vector +GetSurfaceFormats(vk::PhysicalDevice physicalDevice, vk::SurfaceKHR surface); + +[[nodiscard]] eastl::vector +GetSurfacePresentModes(vk::PhysicalDevice physicalDevice, vk::SurfaceKHR surface); + struct PhysicalDevice { vk::PhysicalDevice m_PhysicalDevice; diff --git a/aster/swapchain.cpp b/aster/swapchain.cpp index 225ab56..c7336d6 100644 --- a/aster/swapchain.cpp +++ b/aster/swapchain.cpp @@ -9,50 +9,6 @@ #include "physical_device.h" #include "window.h" -vk::SurfaceCapabilitiesKHR -getSurfaceCapabilities(vk::PhysicalDevice physicalDevice, const vk::SurfaceKHR surface) -{ - vk::SurfaceCapabilitiesKHR surfaceCapabilities; - - vk::Result result = physicalDevice.getSurfaceCapabilitiesKHR(surface, &surfaceCapabilities); - ERROR_IF(failed(result), "Fetching surface capabilities failed. Cause: {}", result) - THEN_ABORT(result); - - return surfaceCapabilities; -} - -eastl::vector -getSurfaceFormats(vk::PhysicalDevice physicalDevice, const vk::SurfaceKHR surface) -{ - u32 count = 0; - vk::Result result = physicalDevice.getSurfaceFormatsKHR(surface, &count, nullptr); - ERROR_IF(failed(result), "Fetching surface formats failed. Cause: {}", result) - THEN_ABORT(result); - - eastl::vector surfaceFormats(count); - result = physicalDevice.getSurfaceFormatsKHR(surface, &count, surfaceFormats.data()); - ERROR_IF(failed(result), "Fetching surface formats failed. Cause: {}", result) - THEN_ABORT(result); - - return surfaceFormats; -} - -eastl::vector -getSurfacePresentModes(vk::PhysicalDevice physicalDevice, const vk::SurfaceKHR surface) -{ - u32 count = 0; - vk::Result result = physicalDevice.getSurfacePresentModesKHR(surface, &count, nullptr); - ERROR_IF(failed(result), "Fetching surface present modes failed. Cause: {}", result) - THEN_ABORT(result); - - eastl::vector surfacePresentModes(count); - result = physicalDevice.getSurfacePresentModesKHR(surface, &count, surfacePresentModes.data()); - ERROR_IF(failed(result), "Fetching surface present modes failed. Cause: {}", result) - THEN_ABORT(result); - - return surfacePresentModes; -} - Swapchain::Swapchain(const Window *window, const Device *device, NameString &&name) : m_Device(device) , m_Name(std::move(name)) @@ -73,9 +29,9 @@ Swapchain::~Swapchain() void Swapchain::Create(const Window *window) { - auto surfaceCapabilities = getSurfaceCapabilities(m_Device->m_PhysicalDevice, window->m_Surface); - auto surfaceFormats = getSurfaceFormats(m_Device->m_PhysicalDevice, window->m_Surface); - auto presentModes = getSurfacePresentModes(m_Device->m_PhysicalDevice, window->m_Surface); + auto surfaceCapabilities = GetSurfaceCapabilities(m_Device->m_PhysicalDevice, window->m_Surface); + auto surfaceFormats = GetSurfaceFormats(m_Device->m_PhysicalDevice, window->m_Surface); + auto presentModes = GetSurfacePresentModes(m_Device->m_PhysicalDevice, window->m_Surface); vk::Format swapchainFormat = vk::Format::eUndefined; vk::ColorSpaceKHR swapchainColorSpace = vk::ColorSpaceKHR::eSrgbNonlinear;