HatchitGraphics
ht_vktools.h
1 
26 #pragma once
27 
28 #include <ht_platform.h> //HT_API
29 #include <ht_vulkan.h> //General Vulkan headers
30 #include <ht_vkdevice.h> //Vulkan Device
31 #include <ht_vkqueue.h> //Vulkan Queue
32 
33 namespace Hatchit {
34 
35  namespace Graphics {
36 
37  namespace Vulkan {
38 
39  class HT_API VKTools
40  {
41  public:
42  static bool Initialize(const VKDevice* device, const VKQueue* queue);
43  static void DeInitialize();
44 
45  static bool CreateUniformBuffer(size_t dataSize, void* data, UniformBlock_vk* uniformBlock);
46  static bool CreateTexelBuffer(size_t dataSize, void* data, TexelBlock_vk* texelBlock);
47 
48  static void DeleteUniformBuffer(UniformBlock_vk& uniformBlock);
49  static void DeleteTexelBuffer(TexelBlock_vk& texelBlock);
50 
51  static VkFormat GetPreferredColorFormat();
52  static VkFormat GetPreferredDepthFormat();
53 
54  static void CreateSetupCommandBuffer();
55  static void FlushSetupCommandBuffer();
56  static VkCommandBuffer GetSetupCommandBuffer();
57 
58  //Reused helpers
59  static bool SetImageLayout(VkCommandBuffer commandBuffer, VkImage image, VkImageAspectFlags aspectMask,
60  VkImageLayout oldImageLayout, VkImageLayout newImageLayout);
61  static bool SetImageLayout(VkImage image, VkImageAspectFlags aspectMask,
62  VkImageLayout oldImageLayout, VkImageLayout newImageLayout);
63  static bool MemoryTypeFromProperties(uint32_t typeBits, VkFlags requirementsMask, uint32_t* typeIndex);
64 
65  private:
66  static VkCommandPool m_setupCommandPool;
67  static VkCommandBuffer m_setupCommandBuffer;
68  static VkDevice m_device;
69  static VkQueue m_queue;
70  static VkPhysicalDeviceMemoryProperties m_gpuMemoryProps;
71 
72  };
73 
74  }
75  }
76 }
Definition: ht_vkqueue.h:39
Definition: ht_vktools.h:39
Hatchit Engine Copyright(c) 2015-2016 Third-Degree.
Definition: ht_color.h:19
Vulkan device wrapper.
Definition: ht_vkdevice.h:29