summaryrefslogtreecommitdiff
path: root/vk-asylum
diff options
context:
space:
mode:
Diffstat (limited to 'vk-asylum')
-rw-r--r--vk-asylum/CMakeLists.txt9
-rw-r--r--vk-asylum/main.c42
2 files changed, 51 insertions, 0 deletions
diff --git a/vk-asylum/CMakeLists.txt b/vk-asylum/CMakeLists.txt
new file mode 100644
index 0000000..9983a04
--- /dev/null
+++ b/vk-asylum/CMakeLists.txt
@@ -0,0 +1,9 @@
+cmake_minimum_required(VERSION 3.15 FATAL_ERROR)
+project(vk-asylum C)
+
+set(DEMO_NEEDS_SDL3 TRUE)
+set(DEMO_NEEDS_VULKAN TRUE)
+include("${CMAKE_CURRENT_LIST_DIR}/../common/c_cpp/CMakeLists.txt")
+
+add_executable(vk-asylum main.c)
+target_link_libraries(vk-asylum PRIVATE common)
diff --git a/vk-asylum/main.c b/vk-asylum/main.c
new file mode 100644
index 0000000..2e0e0b2
--- /dev/null
+++ b/vk-asylum/main.c
@@ -0,0 +1,42 @@
+// Vulkan demo
+//
+// SPDX-License-Identifier: 0BSD
+//
+
+#include <SDL3/SDL.h>
+#include <SDL3/SDL_vulkan.h>
+#include <stdlib.h>
+#include <vulkan/vulkan.h>
+
+#define COUNTOF(_Arr) (sizeof(_Arr) / sizeof((_Arr)[0]))
+#define DIE(...) do { printf(__VA_ARGS__); printf("\n"); exit(1); } while (0);
+#define ASSERT(_Expr) do { if (!(_Expr)) { DIE("%s:%d: " #_Expr, __FILE__, __LINE__); } } while (0);
+
+int main(int argc, char* argv[])
+{
+ (void)argc; (void)argv;
+ SDL_Init(SDL_INIT_VIDEO);
+
+ SDL_Window* wnd = SDL_CreateWindow("vk-asylum", 1024, 768, SDL_WINDOW_VULKAN);
+ ASSERT(wnd);
+
+ VkApplicationInfo vkai = (VkApplicationInfo){
+ .sType = VK_STRUCTURE_TYPE_APPLICATION_INFO,
+ .apiVersion = VK_API_VERSION_1_4,
+ };
+ VkInstanceCreateInfo vkici = (VkInstanceCreateInfo){
+ .sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO,
+ .pApplicationInfo = &vkai,
+ };
+
+ vkici.ppEnabledExtensionNames = SDL_Vulkan_GetInstanceExtensions(&vkici.enabledExtensionCount);
+ printf("Instance extensions requested by SDL:\n");
+ for (uint32_t i = 0; i < vkici.enabledExtensionCount; ++i) {
+ printf(" %s\n", vkici.ppEnabledExtensionNames[i]);
+ }
+
+#ifdef __APPLE__
+ // Required for instance extension VK_KHR_portability_enumeration (MoltenVK)
+ vkici.flags |= VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR;
+#endif
+}