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)
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
target_link_libraries(${EXE_NAME} PRIVATE SDL3::SDL3)
target_link_libraries(${EXE_NAME} PRIVATE Vulkan::Vulkan)

View File

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

View File

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

View File

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