diff options
-rw-r--r-- | include/rune/ui/input.h | 2 | ||||
-rw-r--r-- | render/vulkan/context.h | 34 | ||||
-rw-r--r-- | render/vulkan/device.h | 48 | ||||
-rw-r--r-- | render/vulkan/fence.h | 9 | ||||
-rw-r--r-- | render/vulkan/framebuffer.h | 10 | ||||
-rw-r--r-- | render/vulkan/image.c | 1 | ||||
-rw-r--r-- | render/vulkan/image.h | 12 | ||||
-rw-r--r-- | render/vulkan/renderpass.h | 18 | ||||
-rw-r--r-- | render/vulkan/surface.h | 13 | ||||
-rw-r--r-- | render/vulkan/swapchain.c | 3 | ||||
-rw-r--r-- | render/vulkan/swapchain.h | 16 | ||||
-rw-r--r-- | render/vulkan/vk_types.h | 111 | ||||
-rw-r--r-- | render/vulkan/vkassert.h | 2 |
13 files changed, 123 insertions, 156 deletions
diff --git a/include/rune/ui/input.h b/include/rune/ui/input.h index c03f8a2..3d8ca9a 100644 --- a/include/rune/ui/input.h +++ b/include/rune/ui/input.h @@ -23,7 +23,7 @@ #define RUNE_UI_INPUT_H #include <rune/util/types.h> -#include <rune/ui/window.h> +#include <rune/ui/app_window.h> #define KB_MODE_RAW 0 #define KB_MODE_TEXT 1 diff --git a/render/vulkan/context.h b/render/vulkan/context.h index 14a86f1..e671223 100644 --- a/render/vulkan/context.h +++ b/render/vulkan/context.h @@ -1,39 +1,7 @@ #ifndef VKCONTEXT_H #define VKCONTEXT_H -#include "surface.h" -#include "device.h" -#include "swapchain.h" -#include "renderpass.h" -#include "framebuffer.h" -#include "fence.h" - -struct ext_container { - const char** extensions; - uint32_t ext_count; -}; - -struct vklayer_container { - const char** vklayer_names; - uint32_t vklayer_count; -}; - -struct vkcontext { - VkInstance instance; - VkDebugUtilsMessengerEXT db_messenger; - VkSemaphore *queue_semaphores; - VkSemaphore *image_semaphores; - struct vksurface *surface; - struct vkswapchain *swapchain; - struct vkrendpass *rendpass; - struct vkdev *dev; - struct vkcmdbuffer** cmdbuffers; - struct vkframebuffer** framebuffers; - struct vkfence** fences_in_flight; - struct vkfence** images_in_flight; - uint32_t num_fences_in_flight; - uint32_t img_index; -}; +#include "vk_types.h" struct vkcontext* create_vkcontext(struct vklayer_container *vklayers, struct ext_container *ext); void destroy_vkcontext(struct vkcontext *context); diff --git a/render/vulkan/device.h b/render/vulkan/device.h index e498137..6e3f5aa 100644 --- a/render/vulkan/device.h +++ b/render/vulkan/device.h @@ -1,53 +1,7 @@ -/* - * Rune Game Engine - * Copyright 2024 Danny Holman <dholman@gymli.org> - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would be - * appreciated but is not required. - * 2. Altered source versions must be plainly marked as such, and must not be - * misrepresented as being the original software. - * 3. This notice may not be removed or altered from any source distribution. - */ - #ifndef VKDEVICE_H #define VKDEVICE_H -#include <rune/util/types.h> -#include <vulkan/vulkan.h> -#include <GLFW/glfw3.h> - -struct vkswapchain_data { - VkSurfaceCapabilitiesKHR capabilities; - VkSurfaceFormatKHR *formats; - VkPresentModeKHR *present_modes; - uint32_t format_count; - uint32_t present_count; -}; - -struct vkqueue { - uint32_t index; - uint32_t qfam; - VkQueue handle; -}; - -struct vkdev { - VkPhysicalDevice pdev; - VkDevice ldev; - struct vkswapchain_data scdata; - struct vkqueue queues[4]; - VkCommandPool cmd_pool; - VkFormat depth_format; -}; +#include "vk_types.h" struct vkdev* create_vkdev(VkInstance instance, VkSurfaceKHR surface); void destroy_vkdev(struct vkdev *dev); diff --git a/render/vulkan/fence.h b/render/vulkan/fence.h index 34af87d..16e309d 100644 --- a/render/vulkan/fence.h +++ b/render/vulkan/fence.h @@ -1,14 +1,7 @@ #ifndef VKFENCE_H #define VKFENCE_H -#include "device.h" -#include <rune/util/types.h> -#include <vulkan/vulkan.h> - -struct vkfence { - VkFence handle; - int signal; -}; +#include "vk_types.h" struct vkfence* create_vkfence(struct vkdev *dev, uint8_t signal); void destroy_vkfence(struct vkfence *fence, struct vkdev *dev); diff --git a/render/vulkan/framebuffer.h b/render/vulkan/framebuffer.h index 4bd7e86..a5bfd59 100644 --- a/render/vulkan/framebuffer.h +++ b/render/vulkan/framebuffer.h @@ -1,15 +1,7 @@ #ifndef VKFRAMEBUFFER_H #define VKFRAMEBUFFER_H -#include "device.h" -#include "renderpass.h" - -struct vkframebuffer { - VkFramebuffer handle; - uint32_t at_count; - VkImageView *attachments; - struct vkrendpass *rendpass; -}; +#include "vk_types.h" struct vkframebuffer* create_vkframebuffer(struct vkdev *dev, struct vkrendpass *rendpass, uint32_t width, uint32_t height, uint32_t at_count, VkImageView *at); void destroy_vkframebuffer(struct vkframebuffer *framebuffer, struct vkdev *dev); diff --git a/render/vulkan/image.c b/render/vulkan/image.c index 9160fee..41548f6 100644 --- a/render/vulkan/image.c +++ b/render/vulkan/image.c @@ -1,4 +1,5 @@ #include "image.h" +#include "device.h" #include "vkassert.h" #include <rune/core/alloc.h> diff --git a/render/vulkan/image.h b/render/vulkan/image.h index 9e5b101..7b96695 100644 --- a/render/vulkan/image.h +++ b/render/vulkan/image.h @@ -1,17 +1,7 @@ #ifndef VKIMAGE_H #define VKIMAGE_H -#include <rune/util/types.h> -#include "surface.h" -#include "device.h" - -struct vkimage { - VkImage handle; - VkDeviceMemory memory; - VkImageView view; - uint32_t width; - uint32_t height; -}; +#include "vk_types.h" struct vkimage* create_vkimage(struct vkdev *dev, VkFormat format, uint32_t width, uint32_t height, uint32_t usage, uint32_t mem_flags, uint32_t aflags, int create_view); void destroy_vkimage(struct vkimage *image, struct vkdev *dev); diff --git a/render/vulkan/renderpass.h b/render/vulkan/renderpass.h index 9fbb417..2a27821 100644 --- a/render/vulkan/renderpass.h +++ b/render/vulkan/renderpass.h @@ -1,10 +1,7 @@ #ifndef VKRENDERPASS_H #define VKRENDERPASS_H -#include "swapchain.h" -#include "device.h" -#include <rune/util/types.h> -#include <cglm/cglm.h> +#include "vk_types.h" enum cmdbuf_state { CMDBUF_READY, @@ -14,19 +11,6 @@ enum cmdbuf_state { CMDBUF_SUBMIT }; -struct vkcmdbuffer { - VkCommandBuffer handle; - int state; -}; - -struct vkrendpass { - VkRenderPass handle; - vec4 area; - vec4 color; - float depth; - uint32_t stencil; -}; - struct vkcmdbuffer* create_vkcmdbuffer(struct vkdev *dev, int primary); void destroy_vkcmdbuffer(struct vkcmdbuffer *cmdbuffer, struct vkdev *dev); diff --git a/render/vulkan/surface.h b/render/vulkan/surface.h deleted file mode 100644 index 8d59ab8..0000000 --- a/render/vulkan/surface.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef VKSURFACE_H -#define VKSURFACE_H - -#include <vulkan/vulkan.h> -#include <GLFW/glfw3.h> - -struct vksurface { - VkSurfaceKHR handle; - uint32_t width; - uint32_t height; -}; - -#endif diff --git a/render/vulkan/swapchain.c b/render/vulkan/swapchain.c index c6cea29..7d655a3 100644 --- a/render/vulkan/swapchain.c +++ b/render/vulkan/swapchain.c @@ -1,6 +1,7 @@ #include "swapchain.h" -#include "vkassert.h" #include "image.h" +#include "device.h" +#include "vkassert.h" #include <rune/core/logging.h> #include <rune/core/alloc.h> #include <rune/util/stubbed.h> diff --git a/render/vulkan/swapchain.h b/render/vulkan/swapchain.h index d2f3d89..716aadd 100644 --- a/render/vulkan/swapchain.h +++ b/render/vulkan/swapchain.h @@ -1,21 +1,7 @@ #ifndef VKSWAPCHAIN_H #define VKSWAPCHAIN_H -#include "surface.h" -#include "device.h" - -struct vkswapchain { - VkSwapchainKHR handle; - VkSurfaceFormatKHR format_khr; - VkFormat format; - VkSemaphore render_complete; - VkImage *images; - VkImageView *views; - struct vkimage *depth_attachment; - uint8_t max_frames; - uint32_t frame; - uint32_t img_count; -}; +#include "vk_types.h" struct vkswapchain* create_swapchain(struct vksurface *surface, struct vkdev *dev); void destroy_swapchain(struct vkswapchain *swapchain, struct vkdev *dev); diff --git a/render/vulkan/vk_types.h b/render/vulkan/vk_types.h new file mode 100644 index 0000000..6e99bca --- /dev/null +++ b/render/vulkan/vk_types.h @@ -0,0 +1,111 @@ +#ifndef VK_TYPES_H +#define VK_TYPES_H + +#include <rune/util/types.h> +#include <vulkan/vulkan.h> +#include <GLFW/glfw3.h> +#include <cglm/cglm.h> + +struct vkqueue { + uint32_t index; + uint32_t qfam; + VkQueue handle; +}; + +struct vksurface { + VkSurfaceKHR handle; + uint32_t width; + uint32_t height; +}; + +struct vkcmdbuffer { + VkCommandBuffer handle; + int state; +}; + +struct vkfence { + VkFence handle; + int signal; +}; + +struct vkimage { + VkImage handle; + VkDeviceMemory memory; + VkImageView view; + uint32_t width; + uint32_t height; +}; + +struct ext_container { + const char** extensions; + uint32_t ext_count; +}; + +struct vklayer_container { + const char** vklayer_names; + uint32_t vklayer_count; +}; + +struct vkswapchain_data { + VkSurfaceCapabilitiesKHR capabilities; + VkSurfaceFormatKHR *formats; + VkPresentModeKHR *present_modes; + uint32_t format_count; + uint32_t present_count; +}; + +struct vkrendpass { + VkRenderPass handle; + vec4 area; + vec4 color; + float depth; + uint32_t stencil; +}; + +struct vkframebuffer { + VkFramebuffer handle; + uint32_t at_count; + VkImageView *attachments; + struct vkrendpass *rendpass; +}; + +struct vkdev { + VkPhysicalDevice pdev; + VkDevice ldev; + struct vkswapchain_data scdata; + struct vkqueue queues[4]; + VkCommandPool cmd_pool; + VkFormat depth_format; +}; + +struct vkswapchain { + VkSwapchainKHR handle; + VkSurfaceFormatKHR format_khr; + VkFormat format; + VkSemaphore render_complete; + VkImage *images; + VkImageView *views; + struct vkimage *depth_attachment; + uint8_t max_frames; + uint32_t frame; + uint32_t img_count; +}; + +struct vkcontext { + VkInstance instance; + VkDebugUtilsMessengerEXT db_messenger; + VkSemaphore *queue_semaphores; + VkSemaphore *image_semaphores; + struct vksurface *surface; + struct vkswapchain *swapchain; + struct vkrendpass *rendpass; + struct vkdev *dev; + struct vkcmdbuffer** cmdbuffers; + struct vkframebuffer** framebuffers; + struct vkfence** fences_in_flight; + struct vkfence** images_in_flight; + uint32_t num_fences_in_flight; + uint32_t img_index; +}; + +#endif diff --git a/render/vulkan/vkassert.h b/render/vulkan/vkassert.h index 4d4f99b..b708732 100644 --- a/render/vulkan/vkassert.h +++ b/render/vulkan/vkassert.h @@ -1,9 +1,9 @@ #ifndef VKASSERT_H #define VKASSERT_H +#include "vk_types.h" #include <rune/core/logging.h> #include <rune/core/abort.h> -#include <vulkan/vulkan.h> #include <string.h> static char* get_vkerr_str(VkResult res) { |