From 3a887dc4f88e3fcb63df1fee1c1dd4aeb38ae865 Mon Sep 17 00:00:00 2001 From: Noah Metz Date: Sat, 13 Jan 2024 02:48:58 -0700 Subject: [PATCH] start cleanup --- src/main.c | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/src/main.c b/src/main.c index 76c4066..012b6cf 100644 --- a/src/main.c +++ b/src/main.c @@ -152,6 +152,25 @@ typedef struct VulkanContextStruct { VkDevice device; Queues queues; + // G Buffer + GPUPage* g_buffer_page; + VkRenderPass g_renderpass; + VkFramebuffer g_framebuffer; + + GPUImage g_image_position; + GPUImage g_image_normal; + GPUImage g_image_depth; + + VkImageView g_image_view_position; + VkImageView g_image_view_normal; + VkImageView g_image_view_depth; + + VkFormat g_image_format_position; + VkFormat g_image_format_normal; + VkFormat g_image_format_depth; + + + // Present Swapchain VkSurfaceKHR surface; SwapchainDetails swapchain_details; @@ -2375,6 +2394,47 @@ VulkanContext* init_vulkan(GLFWwindow* window, uint32_t max_frames_in_flight) { context->in_flight_fences = if_fences; } + result = gpu_page_allocate(context->device, context->memories, 1000000, 0xFFFFFFFF, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT, VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT, &context->g_buffer_page); + if(result != VK_SUCCESS) { + return 0; + } + + VkImageCreateInfo g_pos_info = { + .sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO, + .usage = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, + .imageType = VK_IMAGE_TYPE_2D, + .extent = { + .width = context->swapchain_extent.width, + .height = context->swapchain_extent.height, + .depth = 1, + }, + .mipLevels = 1, + .arrayLayers = 1, + .samples = VK_SAMPLE_COUNT_1_BIT, + .tiling = VK_IMAGE_TILING_OPTIMAL, + }; + + result = gpu_image_malloc(context->device, context->g_buffer_page, &g_pos_info, &context->g_image_position); + if(result != VK_SUCCESS) { + return 0; + } + + VkImageViewCreateInfo g_pos_view_info = { + .sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO, + .image = context->g_image_position.handle, + .viewType = VK_IMAGE_VIEW_TYPE_2D, + .format = VK_FORMAT_R16G16B16A16_SFLOAT, + .subresourceRange = { + .aspectMask = VK_IMAGE_ASPECT_COLOR_BIT, + .baseMipLevel = 0, + .levelCount = 1, + .baseArrayLayer = 0, + .layerCount = 1, + }, + }; + + result = vkCreateImageView(context->device, &g_pos_view_info, 0, &context->g_image_view_position); + return context; }