idk why there didnt commit

This commit is contained in:
Greg Wells
2025-05-24 14:47:49 -04:00
parent b1fab45e53
commit dc86ccce95
3 changed files with 104 additions and 103 deletions

View File

@@ -1,11 +1,12 @@
#pragma once #pragma once
#include "vulkan_swapchain_support.h" #include "core/presentation_queue/gryphn_presentation_queue.h"
#include <vulkan/vulkan.h>
struct gnPlatformPresentationQueue { typedef struct gnPlatformPresentationQueue_t {
VkSwapchainKHR swapChain; VkSwapchainKHR swapChain;
VkDevice* device; // VkDevice* device;
gnOutputDevice* outputDevice; // gnOutputDevice* outputDevice;
vulkanSwapchainDetails swapchainDetails; // vulkanSwapchainDetails swapchainDetails;
VkResult result; // VkResult result;
}; } gnPlatformPresentationQueue;

View File

@@ -1,99 +1,99 @@
#pragma once // #pragma once
#include <vulkan/vulkan.h> // #include <vulkan/vulkan.h>
#include <gryphn/gryphn_utils.h> // #include <gryphn/gryphn_utils.h>
#include <cstdint> // Necessary for uint32_t // #include <cstdint> // Necessary for uint32_t
#include <limits> // Necessary for std::numeric_limits // #include <limits> // Necessary for std::numeric_limits
#include <algorithm> // Necessary for std::clamp // #include <algorithm> // Necessary for std::clamp
#include "vector" // #include "vector"
#include "set" // #include "set"
#include <iostream> // #include <iostream>
const std::vector<const char*> deviceExtensions = { // const std::vector<const char*> deviceExtensions = {
VK_KHR_SWAPCHAIN_EXTENSION_NAME, // VK_KHR_SWAPCHAIN_EXTENSION_NAME,
"VK_KHR_portability_subset" // "VK_KHR_portability_subset"
}; // };
static VkSurfaceFormatKHR chooseSwapSurfaceFormat(const std::vector<VkSurfaceFormatKHR>& availableFormats) { // static VkSurfaceFormatKHR chooseSwapSurfaceFormat(const std::vector<VkSurfaceFormatKHR>& availableFormats) {
for (const auto& availableFormat : availableFormats) { // for (const auto& availableFormat : availableFormats) {
if (availableFormat.format == VK_FORMAT_B8G8R8A8_SRGB && availableFormat.colorSpace == VK_COLOR_SPACE_SRGB_NONLINEAR_KHR) { // if (availableFormat.format == VK_FORMAT_B8G8R8A8_SRGB && availableFormat.colorSpace == VK_COLOR_SPACE_SRGB_NONLINEAR_KHR) {
return availableFormat; // return availableFormat;
} // }
} // }
return availableFormats[0]; // return availableFormats[0];
} // }
static VkPresentModeKHR chooseSwapPresentMode(const std::vector<VkPresentModeKHR>& availablePresentModes) { // static VkPresentModeKHR chooseSwapPresentMode(const std::vector<VkPresentModeKHR>& availablePresentModes) {
for (const auto& availablePresentMode : availablePresentModes) { // for (const auto& availablePresentMode : availablePresentModes) {
if (availablePresentMode == VK_PRESENT_MODE_MAILBOX_KHR) { // if (availablePresentMode == VK_PRESENT_MODE_MAILBOX_KHR) {
return availablePresentMode; // return availablePresentMode;
} // }
} // }
return VK_PRESENT_MODE_FIFO_KHR; // return VK_PRESENT_MODE_FIFO_KHR;
} // }
static VkExtent2D chooseSwapExtent(gnVec2 size, const VkSurfaceCapabilitiesKHR& capabilities) { // static VkExtent2D chooseSwapExtent(gnVec2 size, const VkSurfaceCapabilitiesKHR& capabilities) {
if (capabilities.currentExtent.width != std::numeric_limits<uint32_t>::max()) { // if (capabilities.currentExtent.width != std::numeric_limits<uint32_t>::max()) {
return capabilities.currentExtent; // return capabilities.currentExtent;
} else { // } else {
// int width, height; // // int width, height;
// glfwGetFramebufferSize(window, &width, &height); // // glfwGetFramebufferSize(window, &width, &height);
VkExtent2D actualExtent = { // VkExtent2D actualExtent = {
static_cast<uint32_t>(size.x), // static_cast<uint32_t>(size.x),
static_cast<uint32_t>(size.y) // static_cast<uint32_t>(size.y)
}; // };
actualExtent.width = std::clamp(actualExtent.width, capabilities.minImageExtent.width, capabilities.maxImageExtent.width); // actualExtent.width = std::clamp(actualExtent.width, capabilities.minImageExtent.width, capabilities.maxImageExtent.width);
actualExtent.height = std::clamp(actualExtent.height, capabilities.minImageExtent.height, capabilities.maxImageExtent.height); // actualExtent.height = std::clamp(actualExtent.height, capabilities.minImageExtent.height, capabilities.maxImageExtent.height);
return actualExtent; // return actualExtent;
} // }
} // }
static bool checkDeviceExtensionSupport(std::vector<const char*> deviceExtensions, const VkPhysicalDevice& device) { // static bool checkDeviceExtensionSupport(std::vector<const char*> deviceExtensions, const VkPhysicalDevice& device) {
uint32_t extensionCount; // uint32_t extensionCount;
vkEnumerateDeviceExtensionProperties(device, nullptr, &extensionCount, nullptr); // vkEnumerateDeviceExtensionProperties(device, nullptr, &extensionCount, nullptr);
std::vector<VkExtensionProperties> availableExtensions(extensionCount); // std::vector<VkExtensionProperties> availableExtensions(extensionCount);
vkEnumerateDeviceExtensionProperties(device, nullptr, &extensionCount, availableExtensions.data()); // vkEnumerateDeviceExtensionProperties(device, nullptr, &extensionCount, availableExtensions.data());
std::set<std::string> requiredExtensions(deviceExtensions.begin(), deviceExtensions.end()); // std::set<std::string> requiredExtensions(deviceExtensions.begin(), deviceExtensions.end());
for (const auto& extension : availableExtensions) { // for (const auto& extension : availableExtensions) {
requiredExtensions.erase(extension.extensionName); // requiredExtensions.erase(extension.extensionName);
} // }
return requiredExtensions.empty(); // return requiredExtensions.empty();
} // }
struct SwapChainSupportDetails { // struct SwapChainSupportDetails {
VkSurfaceCapabilitiesKHR capabilities; // VkSurfaceCapabilitiesKHR capabilities;
std::vector<VkSurfaceFormatKHR> formats; // std::vector<VkSurfaceFormatKHR> formats;
std::vector<VkPresentModeKHR> presentModes; // std::vector<VkPresentModeKHR> presentModes;
}; // };
static SwapChainSupportDetails querySwapChainSupport(const VkSurfaceKHR& surface, const VkPhysicalDevice& device) { // static SwapChainSupportDetails querySwapChainSupport(const VkSurfaceKHR& surface, const VkPhysicalDevice& device) {
SwapChainSupportDetails details; // SwapChainSupportDetails details;
vkGetPhysicalDeviceSurfaceCapabilitiesKHR(device, surface, &details.capabilities); // vkGetPhysicalDeviceSurfaceCapabilitiesKHR(device, surface, &details.capabilities);
uint32_t formatCount; // uint32_t formatCount;
vkGetPhysicalDeviceSurfaceFormatsKHR(device, surface, &formatCount, nullptr); // vkGetPhysicalDeviceSurfaceFormatsKHR(device, surface, &formatCount, nullptr);
if (formatCount != 0) { // if (formatCount != 0) {
details.formats.resize(formatCount); // details.formats.resize(formatCount);
vkGetPhysicalDeviceSurfaceFormatsKHR(device, surface, &formatCount, details.formats.data()); // vkGetPhysicalDeviceSurfaceFormatsKHR(device, surface, &formatCount, details.formats.data());
} // }
uint32_t presentModeCount; // uint32_t presentModeCount;
vkGetPhysicalDeviceSurfacePresentModesKHR(device, surface, &presentModeCount, nullptr); // vkGetPhysicalDeviceSurfacePresentModesKHR(device, surface, &presentModeCount, nullptr);
if (presentModeCount != 0) { // if (presentModeCount != 0) {
details.presentModes.resize(presentModeCount); // details.presentModes.resize(presentModeCount);
vkGetPhysicalDeviceSurfacePresentModesKHR(device, surface, &presentModeCount, details.presentModes.data()); // vkGetPhysicalDeviceSurfacePresentModesKHR(device, surface, &presentModeCount, details.presentModes.data());
} // }
return details; // return details;
} // }

View File

@@ -1,24 +1,24 @@
#pragma once // #pragma once
#include "vulkan/vulkan.h" // #include "vulkan/vulkan.h"
#include "vulkan_swapchain.h" // #include "vulkan_swapchain.h"
#include "../output_device/vulkan_output_devices.h" // #include "../output_device/vulkan_output_devices.h"
struct vulkanSwapchainDetails { // struct vulkanSwapchainDetails {
VkSurfaceFormatKHR surfaceFormat; // VkSurfaceFormatKHR surfaceFormat;
VkPresentModeKHR presentMode; // VkPresentModeKHR presentMode;
VkExtent2D extent; // VkExtent2D extent;
SwapChainSupportDetails swapChainSupport; // SwapChainSupportDetails swapChainSupport;
}; // };
static vulkanSwapchainDetails vulkanGetSwapchainDetails(gnVec2 size, const VkSurfaceKHR& surface, const VkPhysicalDevice& physicalDevice) { // static vulkanSwapchainDetails vulkanGetSwapchainDetails(gnVec2 size, const VkSurfaceKHR& surface, const VkPhysicalDevice& physicalDevice) {
SwapChainSupportDetails swapChainSupport = querySwapChainSupport(surface, physicalDevice); // SwapChainSupportDetails swapChainSupport = querySwapChainSupport(surface, physicalDevice);
VkSurfaceFormatKHR surfaceFormat = chooseSwapSurfaceFormat(swapChainSupport.formats); // VkSurfaceFormatKHR surfaceFormat = chooseSwapSurfaceFormat(swapChainSupport.formats);
VkPresentModeKHR presentMode = chooseSwapPresentMode(swapChainSupport.presentModes); // VkPresentModeKHR presentMode = chooseSwapPresentMode(swapChainSupport.presentModes);
VkExtent2D extent = chooseSwapExtent(size, swapChainSupport.capabilities); // VkExtent2D extent = chooseSwapExtent(size, swapChainSupport.capabilities);
return { // return {
surfaceFormat, presentMode, extent, swapChainSupport // surfaceFormat, presentMode, extent, swapChainSupport
}; // };
} // }