import vulkan 
, gpu 
, swapchain
, vkTypes 
, buffer 
, depth_stencil
, render_pass
, uniform_buffer
, graphics_pipeline

type 
 Vulkan_Record_Object = object of RootObj
  command_pool*: VkCommandPool
  vk_device*: VkDevice
  gpu*: GPU
  graphics_queue*: VkQueue
  instance*: VkInstance
  logicalDevice*: VkDevice
  presentQueue*: VkQueue
  queue*: VkQueue
  swapchain*: Swapchain
  semaphores*: Semaphores 
  pipeline_cache*: VkPipelineCache
  frame_buffers*: seq[VkFramebuffer]
  currentFrameBuffer*: uint32 
  instanceExtensions*: cstringarray
  ieLen*: int
  deviceExtensions*: cstringarray
  deLen*: int
  framePrepared*: bool
  qfi*: QueueFamily
  qfps*: seq[VkQueueFamilyProperties]
  qni*: uint32
  submitInfo*: VkSubmitInfo
  draw_command_buffers*: seq[VkCommandBuffer]
  fences*: seq[VkFence]
  presentCompleteSemaphore*: VkSemaphore
  renderCompleteSemaphore*: VkSemaphore
  current_viewport*: VkViewport
  readyFrame*: bool
  master_vertex_buffer*: Buffer 
  master_index_buffer*: Buffer 
  master_uniform_buffer*: Buffer 
  
 Vulkan_Record* = ref object of Vulkan_Record_Object