more vk stuff

This commit is contained in:
Mars 2024-09-30 21:21:38 -04:00
parent 9b221b81b4
commit 6395c6b95c
Signed by untrusted user: pupbrained
GPG key ID: 0FF5B8826803F895

View file

@ -7,6 +7,9 @@
#include <set> #include <set>
#include <stdexcept> #include <stdexcept>
#ifdef __APPLE__
#define VK_ENABLE_BETA_EXTENSIONS
#endif
#define VULKAN_HPP_NO_CONSTRUCTORS #define VULKAN_HPP_NO_CONSTRUCTORS
#include <vulkan/vulkan.hpp> #include <vulkan/vulkan.hpp>
@ -85,20 +88,22 @@ class VulkanApp {
fn createInstance() -> void { fn createInstance() -> void {
if (enableValidationLayers && !checkValidationLayerSupport()) if (enableValidationLayers && !checkValidationLayerSupport())
throw std::runtime_error("validation layers requested, but not available!"); throw std::runtime_error("Validation layers requested, but not available!");
vk::ApplicationInfo appInfo { .pApplicationName = "Hello Triangle", vk::ApplicationInfo appInfo { .pApplicationName = "Hello Triangle",
.applicationVersion = 1, .applicationVersion = 1,
.pEngineName = "No Engine", .pEngineName = "No Engine",
.engineVersion = 1, .engineVersion = 1,
.apiVersion = VK_API_VERSION_1_0 }; .apiVersion = vk::ApiVersion10 };
// Retrieve extensions using custom function // Retrieve extensions using custom function
std::vector<const char*> extensions = getRequiredExtensions(); std::vector<const char*> extensions = getRequiredExtensions();
// Enable the portability extension and set flags // Enable the portability extension and set flags
extensions.push_back("VK_KHR_portability_enumeration"); extensions.push_back(vk::KHRPortabilityEnumerationExtensionName);
extensions.push_back("VK_KHR_get_physical_device_properties2"); #if VK_HEADER_VERSION < 110
extensions.push_back(vk::KHRGetPhysicalDeviceProperties2ExtensionName);
#endif
vk::InstanceCreateInfo createInfo { vk::InstanceCreateInfo createInfo {
.flags = vk::InstanceCreateFlagBits::eEnumeratePortabilityKHR, .flags = vk::InstanceCreateFlagBits::eEnumeratePortabilityKHR,
@ -187,13 +192,10 @@ class VulkanApp {
vk::PhysicalDeviceFeatures deviceFeatures; vk::PhysicalDeviceFeatures deviceFeatures;
#ifdef __APPLE__ #ifdef __APPLE__
// Add the portability subset extension
std::vector<const char*> deviceExtensions = { "VK_KHR_portability_subset" };
vk::DeviceCreateInfo createInfo { .queueCreateInfoCount = static_cast<u32>(queueCreateInfos.size()), vk::DeviceCreateInfo createInfo { .queueCreateInfoCount = static_cast<u32>(queueCreateInfos.size()),
.pQueueCreateInfos = queueCreateInfos.data(), .pQueueCreateInfos = queueCreateInfos.data(),
.enabledExtensionCount = static_cast<u32>(deviceExtensions.size()), .enabledExtensionCount = 1,
.ppEnabledExtensionNames = deviceExtensions.data(), .ppEnabledExtensionNames = { vk::KHRPortabilitySubsetExtensionName },
.pEnabledFeatures = &deviceFeatures }; .pEnabledFeatures = &deviceFeatures };
#else #else
vk::DeviceCreateInfo createInfo { .queueCreateInfoCount = static_cast<u32>(queueCreateInfos.size()), vk::DeviceCreateInfo createInfo { .queueCreateInfoCount = static_cast<u32>(queueCreateInfos.size()),