Removed duplication.
This commit is contained in:
parent
e120b38066
commit
8769215437
|
|
@ -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,
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -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<vk::SurfaceFormatKHR>
|
||||
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<vk::PresentModeKHR>
|
||||
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<vk::QueueFamilyProperties, 32>
|
||||
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<QueueFamilyInfo>
|
||||
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<QueueFamilyInfo> 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<vk::PhysicalDevice, 8>
|
||||
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);
|
||||
|
|
|
|||
|
|
@ -28,6 +28,15 @@ struct QueueFamilyInfo
|
|||
QueueSupportFlags m_Support;
|
||||
};
|
||||
|
||||
[[nodiscard]] vk::SurfaceCapabilitiesKHR
|
||||
GetSurfaceCapabilities(vk::PhysicalDevice physicalDevice, vk::SurfaceKHR surface);
|
||||
|
||||
[[nodiscard]] eastl::vector<vk::SurfaceFormatKHR>
|
||||
GetSurfaceFormats(vk::PhysicalDevice physicalDevice, vk::SurfaceKHR surface);
|
||||
|
||||
[[nodiscard]] eastl::vector<vk::PresentModeKHR>
|
||||
GetSurfacePresentModes(vk::PhysicalDevice physicalDevice, vk::SurfaceKHR surface);
|
||||
|
||||
struct PhysicalDevice
|
||||
{
|
||||
vk::PhysicalDevice m_PhysicalDevice;
|
||||
|
|
|
|||
|
|
@ -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<vk::SurfaceFormatKHR>
|
||||
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<vk::SurfaceFormatKHR> 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<vk::PresentModeKHR>
|
||||
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<vk::PresentModeKHR> 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;
|
||||
|
|
|
|||
Loading…
Reference in New Issue