Mercurial > games > semicongine
comparison src/engine.nim @ 11:3415afff1d1a
Merge /mnt/Users/sam/git/vulkan
author | Sam <sam@basx.dev> |
---|---|
date | Sat, 24 Dec 2022 22:38:09 +0700 |
parents | 227e53d1a853 0660ba9d1930 |
children | b40466fa446a |
comparison
equal
deleted
inserted
replaced
9:227e53d1a853 | 11:3415afff1d1a |
---|---|
10 import ./events | 10 import ./events |
11 | 11 |
12 import ./glslang/glslang | 12 import ./glslang/glslang |
13 | 13 |
14 const MAX_FRAMES_IN_FLIGHT = 2 | 14 const MAX_FRAMES_IN_FLIGHT = 2 |
15 const DEBUG_LOG = not defined(release) | |
15 | 16 |
16 var logger = newConsoleLogger() | 17 var logger = newConsoleLogger() |
17 addHandler(logger) | 18 addHandler(logger) |
18 | 19 |
19 | 20 |
135 return VkExtent2D( | 136 return VkExtent2D( |
136 width: min(max(uint32(width), capabilities.minImageExtent.width), capabilities.maxImageExtent.width), | 137 width: min(max(uint32(width), capabilities.minImageExtent.width), capabilities.maxImageExtent.width), |
137 height: min(max(uint32(height), capabilities.minImageExtent.height), capabilities.maxImageExtent.height), | 138 height: min(max(uint32(height), capabilities.minImageExtent.height), capabilities.maxImageExtent.height), |
138 ) | 139 ) |
139 | 140 |
140 when not defined(release): | 141 when DEBUG_LOG: |
141 proc setupDebugLog(instance: VkInstance): VkDebugUtilsMessengerEXT = | 142 proc setupDebugLog(instance: VkInstance): VkDebugUtilsMessengerEXT = |
142 var createInfo = VkDebugUtilsMessengerCreateInfoEXT( | 143 var createInfo = VkDebugUtilsMessengerCreateInfoEXT( |
143 sType: VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT, | 144 sType: VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT, |
144 messageSeverity: VkDebugUtilsMessageSeverityFlagsEXT( | 145 messageSeverity: VkDebugUtilsMessageSeverityFlagsEXT( |
145 ord(VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT) or | 146 ord(VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT) or |
420 result[0], | 421 result[0], |
421 vulkan.renderPass, | 422 vulkan.renderPass, |
422 vulkan.frameDimension | 423 vulkan.frameDimension |
423 ) | 424 ) |
424 | 425 |
425 # createFramebuffers(); | |
426 | |
427 | 426 |
428 proc setupCommandBuffers(device: VkDevice, graphicsQueueFamily: uint32): (VkCommandPool, array[MAX_FRAMES_IN_FLIGHT, VkCommandBuffer]) = | 427 proc setupCommandBuffers(device: VkDevice, graphicsQueueFamily: uint32): (VkCommandPool, array[MAX_FRAMES_IN_FLIGHT, VkCommandBuffer]) = |
429 # set up command buffer | 428 # set up command buffer |
430 var poolInfo = VkCommandPoolCreateInfo( | 429 var poolInfo = VkCommandPoolCreateInfo( |
431 sType: VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO, | 430 sType: VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO, |
463 | 462 |
464 # setup vulkan functions | 463 # setup vulkan functions |
465 vkLoad1_0() | 464 vkLoad1_0() |
466 vkLoad1_1() | 465 vkLoad1_1() |
467 vkLoad1_2() | 466 vkLoad1_2() |
467 | |
468 checkGlslangResult glslang_initialize_process() | 468 checkGlslangResult glslang_initialize_process() |
469 | 469 |
470 # create vulkan instance | 470 # create vulkan instance |
471 result.vulkan.instance = createVulkanInstance(VULKAN_VERSION) | 471 result.vulkan.instance = createVulkanInstance(VULKAN_VERSION) |
472 when not defined(release): | 472 when DEBUG_LOG: |
473 result.vulkan.debugMessenger = result.vulkan.instance.setupDebugLog() | 473 result.vulkan.debugMessenger = result.vulkan.instance.setupDebugLog() |
474 result.vulkan.surface = result.vulkan.instance.createVulkanSurface(result.window) | 474 result.vulkan.surface = result.vulkan.instance.createVulkanSurface(result.window) |
475 result.vulkan.device = result.vulkan.instance.setupVulkanDeviceAndQueues(result.vulkan.surface) | 475 result.vulkan.device = result.vulkan.instance.setupVulkanDeviceAndQueues(result.vulkan.surface) |
476 | 476 |
477 # get basic frame information | 477 # get basic frame information |
636 for shaderStage in engine.vulkan.pipeline.shaderStages: | 636 for shaderStage in engine.vulkan.pipeline.shaderStages: |
637 engine.vulkan.device.device.vkDestroyShaderModule(shaderStage.module, nil) | 637 engine.vulkan.device.device.vkDestroyShaderModule(shaderStage.module, nil) |
638 | 638 |
639 engine.vulkan.instance.vkDestroySurfaceKHR(engine.vulkan.surface, nil) | 639 engine.vulkan.instance.vkDestroySurfaceKHR(engine.vulkan.surface, nil) |
640 engine.vulkan.device.device.vkDestroyDevice(nil) | 640 engine.vulkan.device.device.vkDestroyDevice(nil) |
641 when ENABLEVULKANVALIDATIONLAYERS: | 641 when DEBUG_LOG: |
642 engine.vulkan.instance.vkDestroyDebugUtilsMessengerEXT(engine.vulkan.debugMessenger, nil) | 642 engine.vulkan.instance.vkDestroyDebugUtilsMessengerEXT(engine.vulkan.debugMessenger, nil) |
643 glslang_finalize_process() | 643 glslang_finalize_process() |
644 engine.window.trash() | 644 engine.window.trash() |
645 engine.vulkan.instance.vkDestroyInstance(nil) | 645 engine.vulkan.instance.vkDestroyInstance(nil) |