HatchitGraphics
ht_vkgpuresourcethread.h
1 
15 #pragma once
16 
17 #include <ht_platform.h>
18 #include <ht_gpuresourcerequest.h>
19 #include <ht_gpuresourcethread.h>
20 #include <ht_threadvector.h>
21 #include <ht_threadstack.h>
22 #include <thread>
23 #include <atomic>
24 #include <ht_vulkan.h>
25 #include <ht_vkswapchain.h>
26 #include <ht_material_resource.h>
27 #include <ht_texture_resource.h>
28 #include <ht_model.h>
29 
30 namespace Hatchit
31 {
32  namespace Graphics
33  {
34  namespace Vulkan
35  {
36  class VKDevice;
37 
38  class HT_API VKGPUResourceThread : public GPUResourceThread
39  {
40  using GPURequestQueue = Core::ThreadsafeQueue<GPUResourceRequest>;
41  public:
42  VKGPUResourceThread(VKDevice* device, VKSwapChain* swapchain);
43 
45 
46  void VStart() override;
47 
48  private:
49  VKDevice* m_device;
50  VKSwapChain* m_swapchain;
51 
52  VkDescriptorPool m_descriptorPool;
53 
54  void VCreateTextureBase(Resource::TextureHandle handle, void** base) override;
55  void VCreateMaterialBase(Resource::MaterialHandle handle, void** base) override;
56  void VCreateRootLayoutBase(Resource::RootLayoutHandle handle, void** base) override;
57  void VCreatePipelineBase(Resource::PipelineHandle handle, void** base) override;
58  void VCreateShaderBase(Resource::ShaderHandle handle, void** base) override;
59  void VCreateRenderPassBase(Resource::RenderPassHandle handle, void** base) override;
60  void VCreateRenderTargetBase(Resource::RenderTargetHandle handle, void** base) override;
61  void VCreateMeshBase(Resource::ModelHandle handle, void** base) override;
62 
63  void thread_main();
64 
65  bool createDescriptorPool(const VkDevice& device);
66  };
67  }
68  }
69 }
Abstract class that defines and implements functions for creation of GPU resource objects...
Definition: ht_gpuresourcethread.h:53
Definition: ht_vkswapchain.h:55
Hatchit Engine Copyright(c) 2015-2016 Third-Degree.
Definition: ht_color.h:19
Definition: ht_vkgpuresourcethread.h:38
Vulkan device wrapper.
Definition: ht_vkdevice.h:29