aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/vk-renderer.hpp14
-rw-r--r--include/vulkan-loader.hpp52
-rw-r--r--include/window.hpp6
3 files changed, 46 insertions, 26 deletions
diff --git a/include/vk-renderer.hpp b/include/vk-renderer.hpp
index 37a3494..a1dda6c 100644
--- a/include/vk-renderer.hpp
+++ b/include/vk-renderer.hpp
@@ -1,12 +1,15 @@
#ifndef __VK_RENDERER_HPP_
#define __VK_RENDERER_HPP_
+#include <vector>
+
#include "vulkan-loader.hpp"
#include "thirdparty/vk_mem_alloc.h"
#include "vec3.hpp"
#include "camera.hpp"
#include "sphere.hpp"
+#include "window.hpp"
struct input_data {
color sky_color;
@@ -35,7 +38,7 @@ struct path_tracer_data {
class vkrenderer {
public:
- vkrenderer();
+ vkrenderer(window& wnd);
void compute(const input_data& inputs, size_t width, size_t height);
@@ -46,8 +49,12 @@ class vkrenderer {
void create_debugger();
+ void create_surface(window& wnd);
+
void create_device();
+ void create_swapchain(window& wnd);
+
void create_pipeline();
void create_memory_allocator();
@@ -82,6 +89,11 @@ class vkrenderer {
VkPipelineLayout compute_pipeline_layout;
VkPipeline compute_pipeline;
+ VkSurfaceKHR platform_surface;
+ VkSwapchainKHR swapchain;
+ size_t swapchain_images_count = 3;
+ std::vector<VkImage> swapchain_images;
+
struct path_tracer_data* mapped_data;
};
diff --git a/include/vulkan-loader.hpp b/include/vulkan-loader.hpp
index 1691c6c..66542cf 100644
--- a/include/vulkan-loader.hpp
+++ b/include/vulkan-loader.hpp
@@ -1,11 +1,13 @@
#ifndef __VULKAN_LOADER_HPP_
#define __VULKAN_LOADER_HPP_
-#if defined(WINDOWS)
+#if defined(_WIN32) || defined(_WIN64)
#include <Windows.h>
#include <windowsx.h>
#define VK_USE_PLATFORM_WIN32_KHR
+#elif defined(__linux__)
+#define VK_USE_PLATFORM_XCB_KHR
#endif
#define VK_NO_PROTOTYPES
@@ -15,13 +17,32 @@
X(vkGetInstanceProcAddr) \
X(vkGetDeviceProcAddr)
+
#define VULKAN_APPLICATION_FUNCTIONS \
X(vkCreateInstance) \
X(vkEnumerateInstanceVersion) \
X(vkEnumerateInstanceExtensionProperties) \
X(vkEnumerateInstanceLayerProperties)
+
+#if defined(VK_USE_PLATFORM_WIN32_KHR)
+#define PLATFORM_VULKAN_INSTANCE_FUNCTIONS X(vkCreateWin32SurfaceKHR)
+#elif defined(VK_USE_PLATFORM_XCB_KHR)
+#define PLATFORM_VULKAN_INSTANCE_FUNCTIONS X(vkCreateXcbSurfaceKHR)
+#else
+#define PLATFORM_VULKAN_INSTANCE_FUNCTIONS
+#endif
+
+#define VULKAN_SURFACE_FUNCTIONS \
+ PLATFORM_VULKAN_INSTANCE_FUNCTIONS \
+ X(vkDestroySurfaceKHR) \
+ X(vkGetPhysicalDeviceSurfaceSupportKHR) \
+ X(vkGetPhysicalDeviceSurfaceCapabilitiesKHR) \
+ X(vkGetPhysicalDeviceSurfaceFormatsKHR) \
+ X(vkGetPhysicalDeviceSurfacePresentModesKHR)
+
#define VULKAN_INSTANCE_FUNCTIONS \
+ VULKAN_SURFACE_FUNCTIONS \
X(vkDestroyInstance) \
X(vkEnumeratePhysicalDevices) \
X(vkGetPhysicalDeviceProperties) \
@@ -33,22 +54,16 @@
X(vkCreateDebugUtilsMessengerEXT) \
X(vkDestroyDebugUtilsMessengerEXT)
-#if defined(VK_USE_PLATFORM_WIN32_KHR)
-#define VULKAN_SURFACE_FUNCTIONS \
- X(vkDestroySurfaceKHR) \
- X(vkGetPhysicalDeviceSurfaceSupportKHR) \
- X(vkGetPhysicalDeviceSurfaceCapabilitiesKHR) \
- X(vkGetPhysicalDeviceSurfaceFormatsKHR) \
- X(vkGetPhysicalDeviceSurfacePresentModesKHR)
-#endif
-#if defined(WINDOWS)
-#define PLATFORM_VULKAN_INSTANCE_FUNCTIONS X(vkCreateWin32SurfaceKHR)
-#else
-#define PLATFORM_VULKAN_INSTANCE_FUNCTIONS
-#endif
+#define VULKAN_SWAPCHAIN_FUNCTIONS \
+ X(vkCreateSwapchainKHR) \
+ X(vkGetSwapchainImagesKHR) \
+ X(vkAcquireNextImageKHR) \
+ X(vkDestroySwapchainKHR) \
+ X(vkQueuePresentKHR) \
#define VULKAN_DEVICE_FUNCTIONS \
+ VULKAN_SWAPCHAIN_FUNCTIONS \
X(vkGetDeviceQueue) \
X(vkDestroyDevice) \
X(vkDeviceWaitIdle) \
@@ -116,18 +131,10 @@
X(vkDestroyBuffer) \
X(vkDestroyRenderPass)
-// Depends on the swapchain extension
-// X(vkCreateSwapchainKHR) \
-// X(vkGetSwapchainImagesKHR) \
-// X(vkAcquireNextImageKHR) \
-// X(vkDestroySwapchainKHR) \
-// X(vkQueuePresentKHR) \
-
#define X(name) extern PFN_##name name;
VULKAN_EXPORTED_FUNCTIONS
VULKAN_APPLICATION_FUNCTIONS
VULKAN_INSTANCE_FUNCTIONS
- PLATFORM_VULKAN_INSTANCE_FUNCTIONS
VULKAN_DEVICE_FUNCTIONS
#undef X
@@ -139,7 +146,6 @@
#define X(name) void Load_##name(VkInstance _instance);
VULKAN_INSTANCE_FUNCTIONS
- PLATFORM_VULKAN_INSTANCE_FUNCTIONS
#undef X
#define X(name) void Load_##name(VkDevice _device);
diff --git a/include/window.hpp b/include/window.hpp
index 593c6f8..8ddb58d 100644
--- a/include/window.hpp
+++ b/include/window.hpp
@@ -5,11 +5,13 @@
class window {
public:
- window();
+ window(uint32_t width, uint32_t height);
- private:
xcb_connection_t* connection;
xcb_window_t win;
+
+ uint32_t width;
+ uint32_t height;
};
#endif // !__WINDOW_HPP_