This commit is contained in:
Mars 2024-10-06 12:26:44 -04:00
parent df0e12a783
commit 0d77992e67
Signed by: pupbrained
GPG key ID: 874E22DF2F9DFCB5

View file

@ -3,20 +3,19 @@
#include <iostream>
#include <set>
#define VULKAN_HPP_DISPATCH_LOADER_DYNAMIC 1
#define VK_ENABLE_BETA_EXTENSIONS
#define VULKAN_HPP_NO_CONSTRUCTORS
#define VULKAN_HPP_NO_EXCEPTIONS
#include <vulkan/vulkan.hpp>
VULKAN_HPP_DEFAULT_DISPATCH_LOADER_DYNAMIC_STORAGE
#include "util/types.h"
#define VKFW_NO_STD_FUNCTION_CALLBACKS
#include "vkfw.hpp"
namespace vk {
using DebugUtilsMessengerUnique = vk::UniqueHandle<vk::DebugUtilsMessengerEXT, vk::DispatchLoaderDynamic>;
}
constexpr i32 WIDTH = 800;
constexpr i32 HEIGHT = 600;
@ -51,9 +50,8 @@ class VulkanApp {
vk::UniqueInstance mInstance;
vk::DebugUtilsMessengerUnique mDebugMessenger;
vk::DispatchLoaderDynamic mLoader;
vk::UniqueSurfaceKHR mSurface;
vk::UniqueDebugUtilsMessengerEXT mDebugMessenger;
vk::UniqueSurfaceKHR mSurface;
vk::PhysicalDevice mPhysicalDevice;
vk::UniqueDevice mDevice;
@ -160,14 +158,10 @@ class VulkanApp {
}
fn cleanupSwapChain() -> void {
for (vk::UniqueHandle<vk::Framebuffer, vk::DispatchLoaderStatic>& mSwapChainFramebuffer :
mSwapChainFramebuffers) {
for (vk::UniqueFramebuffer& mSwapChainFramebuffer : mSwapChainFramebuffers) {
mSwapChainFramebuffer.reset();
}
for (vk::UniqueHandle<vk::ImageView, vk::DispatchLoaderStatic>& mSwapChainImageView :
mSwapChainImageViews) {
mSwapChainImageView.reset();
}
for (vk::UniqueImageView& mSwapChainImageView : mSwapChainImageViews) { mSwapChainImageView.reset(); }
mSwapChain.reset();
}
@ -201,7 +195,7 @@ class VulkanApp {
.applicationVersion = 1,
.pEngineName = "No Engine",
.engineVersion = 1,
.apiVersion = vk::ApiVersion10 };
.apiVersion = vk::ApiVersion12 };
// Retrieve extensions using custom function
std::vector<const char*> extensions = getRequiredExtensions();
@ -233,7 +227,7 @@ class VulkanApp {
#endif
mInstance = vk::createInstanceUnique(createInfo).value;
mLoader = vk::DispatchLoaderDynamic(mInstance.get(), vkGetInstanceProcAddr);
VULKAN_HPP_DEFAULT_DISPATCHER.init(mInstance.get());
}
fn setupDebugMessenger() -> void {
@ -251,7 +245,9 @@ class VulkanApp {
};
mDebugMessenger =
mInstance->createDebugUtilsMessengerEXTUnique(messengerCreateInfo, nullptr, mLoader).value;
mInstance
->createDebugUtilsMessengerEXTUnique(messengerCreateInfo, nullptr, VULKAN_HPP_DEFAULT_DISPATCHER)
.value;
}
fn createSurface() -> void { mSurface = vkfw::createWindowSurfaceUnique(mInstance.get(), mWindow.get()); }
@ -817,6 +813,11 @@ class VulkanApp {
};
fn main() -> i32 {
vk::DynamicLoader dynamicLoader;
auto vkGetInstanceProcAddr =
dynamicLoader.getProcAddress<PFN_vkGetInstanceProcAddr>("vkGetInstanceProcAddr");
VULKAN_HPP_DEFAULT_DISPATCHER.init(vkGetInstanceProcAddr);
VulkanApp app;
try {