Small tweaks before rewrite

This commit is contained in:
macmacmac 2025-07-03 09:58:21 -04:00
parent 6d48ac251c
commit 0ed40a0b64
4 changed files with 28 additions and 23 deletions

View File

@ -66,6 +66,14 @@ elseif(MSVC)
target_compile_options(${EXE_NAME} PRIVATE /W4) target_compile_options(${EXE_NAME} PRIVATE /W4)
endif() endif()
if(WIN32)
add_custom_command(
TARGET ${EXE_NAME} POST_BUILD
COMMAND "${CMAKE_COMMAND}" -E copy $<TARGET_FILE:SDL3::SDL3-shared> $<TARGET_FILE_DIR:${EXE_NAME}>
VERBATIM
)
endif()
# Linking # Linking
target_link_libraries(${EXE_NAME} PRIVATE SDL3::SDL3) target_link_libraries(${EXE_NAME} PRIVATE SDL3::SDL3)
target_link_libraries(${EXE_NAME} PRIVATE Vulkan::Vulkan) target_link_libraries(${EXE_NAME} PRIVATE Vulkan::Vulkan)

View File

@ -7,7 +7,7 @@
#include <vector> #include <vector>
#include <optional> #include <optional>
#include <stdio.h> #include <cstdio>
#include <vulkan/vulkan.h> #include <vulkan/vulkan.h>
@ -125,6 +125,7 @@ private:
VkSurfaceFormatKHR chooseSwapSurfaceFormat(const std::vector<VkSurfaceFormatKHR>&); VkSurfaceFormatKHR chooseSwapSurfaceFormat(const std::vector<VkSurfaceFormatKHR>&);
VkPresentModeKHR chooseSwapPresentMode(const std::vector<VkPresentModeKHR>&); VkPresentModeKHR chooseSwapPresentMode(const std::vector<VkPresentModeKHR>&);
VkExtent2D chooseSwapExtent(const VkSurfaceCapabilitiesKHR&); VkExtent2D chooseSwapExtent(const VkSurfaceCapabilitiesKHR&);
// Validation layer stuff // Validation layer stuff
void setupDebugMessenger(); void setupDebugMessenger();
bool checkValidationLayerSupport(); bool checkValidationLayerSupport();

View File

@ -7,8 +7,8 @@
#include <exception> #include <exception>
constexpr uint32_t winInitWidth = 512; constexpr uint32_t winInitWidth = 1024;
constexpr uint32_t winInitHeight = 512; constexpr uint32_t winInitHeight = 1024;
struct AppContext { struct AppContext {
VulkanApp vkapp; VulkanApp vkapp;
@ -28,7 +28,7 @@ SDL_AppResult SDL_AppInit(void **appstate, int argc, char **argv) {
return SDL_Fail(); return SDL_Fail();
try { try {
*appstate = new AppContext { .vkapp = VulkanApp(1024, 1024)}; *appstate = new AppContext { .vkapp = VulkanApp(winInitWidth, winInitHeight)};
AppContext* app = static_cast<AppContext*>(*appstate); AppContext* app = static_cast<AppContext*>(*appstate);
app->vkapp.init(); app->vkapp.init();
} catch(const std::exception& except) { } catch(const std::exception& except) {
@ -79,11 +79,10 @@ SDL_AppResult SDL_AppIterate(void *appstate) {
void SDL_AppQuit(void *appstate, SDL_AppResult result) { void SDL_AppQuit(void *appstate, SDL_AppResult result) {
AppContext* app = static_cast<AppContext*>(appstate); AppContext* app = static_cast<AppContext*>(appstate);
if(result == SDL_APP_FAILURE) { if(result == SDL_APP_FAILURE)
fputs("Program failure, shutting down\n", stderr); fputs("Program failure, shutting down\n", stderr);
} else { else
puts("Program shutting down, no errors."); puts("Program shutting down, no errors.");
}
if(app) { if(app) {
app->vkapp.cleanup(); app->vkapp.cleanup();

View File

@ -3,7 +3,6 @@
#include <SDL3/SDL.h> #include <SDL3/SDL.h>
#include <SDL3/SDL_vulkan.h> #include <SDL3/SDL_vulkan.h>
#include <cstdio>
#include <stdexcept> #include <stdexcept>
#include <set> #include <set>
#include <limits> #include <limits>
@ -305,9 +304,8 @@ void VulkanApp::drawFrame() {
} }
void VulkanApp::init() { void VulkanApp::init() {
// Initialize SDL2 // Initialize SDL3
SDL_Init(SDL_INIT_VIDEO | SDL_INIT_EVENTS); SDL_Init(SDL_INIT_VIDEO);
//SDL_Vulkan_LoadLibrary(nullptr);
// Create the window // Create the window
mWin = SDL_CreateWindow("Vulkan+SDL2 Application", mWin = SDL_CreateWindow("Vulkan+SDL2 Application",
@ -330,6 +328,7 @@ void VulkanApp::init() {
throw std::runtime_error("Could not create Vulkan surface!"); throw std::runtime_error("Could not create Vulkan surface!");
} }
// TODO: Replace some of this crap with vkbootstrap code
selectPhysicalDevice(); selectPhysicalDevice();
createLogicalDevice(); createLogicalDevice();
createSwapChain(); createSwapChain();
@ -349,7 +348,8 @@ void VulkanApp::createInstance() {
// Get # of extensions then get extensions // Get # of extensions then get extensions
uint32_t extensionCount = 0; uint32_t extensionCount = 0;
const char * const * extensionArr = SDL_Vulkan_GetInstanceExtensions(&extensionCount); const char * const *extensionArr = SDL_Vulkan_GetInstanceExtensions(&extensionCount);
// Put extensions into vector
std::vector<const char*> extensionNames(extensionArr, extensionArr + extensionCount); std::vector<const char*> extensionNames(extensionArr, extensionArr + extensionCount);
if(enableValidationLayers) if(enableValidationLayers)
@ -358,11 +358,11 @@ void VulkanApp::createInstance() {
// App info // App info
VkApplicationInfo appInfo{}; VkApplicationInfo appInfo{};
appInfo.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO; appInfo.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO;
appInfo.pApplicationName = "Simple Triangle"; appInfo.pApplicationName = "Triangle";
appInfo.applicationVersion = VK_MAKE_VERSION(1, 0, 0); appInfo.applicationVersion = VK_MAKE_VERSION(1, 1, 0);
appInfo.pEngineName = "RAPT2"; appInfo.pEngineName = "RAPT2";
appInfo.engineVersion = VK_MAKE_VERSION(1, 0, 0); appInfo.engineVersion = VK_MAKE_VERSION(1, 1, 0);
appInfo.apiVersion = VK_API_VERSION_1_0; appInfo.apiVersion = VK_API_VERSION_1_3;
// Extensions // Extensions
VkInstanceCreateInfo createInfo{}; VkInstanceCreateInfo createInfo{};
@ -404,9 +404,8 @@ void VulkanApp::selectPhysicalDevice() {
uint32_t deviceCount = 0; uint32_t deviceCount = 0;
vkEnumeratePhysicalDevices(mInstance, &deviceCount, nullptr); vkEnumeratePhysicalDevices(mInstance, &deviceCount, nullptr);
if(deviceCount == 0) { if(deviceCount == 0)
throw std::runtime_error("Could not find a Vulkan compatible GPU!"); throw std::runtime_error("Could not find a Vulkan compatible GPU!");
}
std::vector<VkPhysicalDevice> devices(deviceCount); std::vector<VkPhysicalDevice> devices(deviceCount);
vkEnumeratePhysicalDevices(mInstance, &deviceCount, devices.data()); vkEnumeratePhysicalDevices(mInstance, &deviceCount, devices.data());
@ -419,9 +418,8 @@ void VulkanApp::selectPhysicalDevice() {
} }
} }
if(mPhysicalDevice == VK_NULL_HANDLE) { if(mPhysicalDevice == VK_NULL_HANDLE)
throw std::runtime_error("Could not find any suitable GPU!"); throw std::runtime_error("Could not find any suitable GPU!");
}
} }
void VulkanApp::createLogicalDevice() { void VulkanApp::createLogicalDevice() {
@ -885,9 +883,8 @@ void VulkanApp::cleanup() {
vkDestroyDevice(mLogicalDevice, nullptr); vkDestroyDevice(mLogicalDevice, nullptr);
if (enableValidationLayers) { if (enableValidationLayers)
DestroyDebugUtilsMessengerEXT(mInstance, mDebugMessenger, nullptr); DestroyDebugUtilsMessengerEXT(mInstance, mDebugMessenger, nullptr);
}
vkDestroySurfaceKHR(mInstance, mSurface, nullptr); vkDestroySurfaceKHR(mInstance, mSurface, nullptr);
vkDestroyInstance(mInstance, nullptr); vkDestroyInstance(mInstance, nullptr);