# import vulkan
# , device
# , q
# #[
# // A list of present modes in order of priority (vector[0] has high priority, vector[size-1] has low priority)
# std::vector<VkPresentModeKHR> present_mode_priority_list =
# {
# VK_PRESENT_MODE_FIFO_KHR,
# VK_PRESENT_MODE_MAILBOX_KHR
# };
# // A list of surface formats in order of priority (vector[0] has high priority, vector[size-1] has low priority)
# std::vector<VkSurfaceFormatKHR> surface_format_priority_list = {
# {VK_FORMAT_R8G8B8A8_SRGB, VK_COLOR_SPACE_SRGB_NONLINEAR_KHR},
# {VK_FORMAT_B8G8R8A8_SRGB, VK_COLOR_SPACE_SRGB_NONLINEAR_KHR},
# {VK_FORMAT_R8G8B8A8_UNORM, VK_COLOR_SPACE_SRGB_NONLINEAR_KHR},
# {VK_FORMAT_B8G8R8A8_UNORM, VK_COLOR_SPACE_SRGB_NONLINEAR_KHR}};
# ]#
# const bufferPoolBlockSize: uint32 = 256
# type
# RenderFrameObj = object of RootObj
# surface_extent*: VkExtent2D
# device*: Device
# q*: Queue
# swapchain_properties*: SwapchainProperties
# prepared*: bool
# active*: bool
# currFrameInd*: uin32
# framePtrs*: seq[ptr RenderFrames]
# theSemaphore*: VkSemaphore
# # VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR
# preTransform*: VkSurfaceTransformFlagBitsKHR
# RenderFrame* = ref object of RenderFrameObj
# proc aDevice: VkDevice = nil
# proc aFence: VkFence = nil