# 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