diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/vk-renderer.hpp | 14 | ||||
| -rw-r--r-- | include/vulkan-loader.hpp | 52 | ||||
| -rw-r--r-- | include/window.hpp | 6 |
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_ |
