Small tweaks before rewrite
This commit is contained in:
parent
6d48ac251c
commit
0ed40a0b64
@ -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)
|
||||||
|
|||||||
@ -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();
|
||||||
|
|||||||
11
src/main.cc
11
src/main.cc
@ -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();
|
||||||
|
|||||||
@ -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();
|
||||||
@ -350,6 +349,7 @@ 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,10 +418,9 @@ 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() {
|
||||||
QueueFamilyIndices indices = findQueueFamilies(mPhysicalDevice);
|
QueueFamilyIndices indices = findQueueFamilies(mPhysicalDevice);
|
||||||
@ -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);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user