ULRE/inc/hgl/graph/VKDescriptorSets.h

56 lines
1.8 KiB
C
Raw Normal View History

#ifndef HGL_GRAPH_VULKAN_DESCRIPTOR_SETS_LAYOUT_INCLUDE
#define HGL_GRAPH_VULKAN_DESCRIPTOR_SETS_LAYOUT_INCLUDE
#include<hgl/graph/VK.h>
#include<hgl/type/Map.h>
VK_NAMESPACE_BEGIN
2020-10-21 12:09:15 +08:00
class GPUBuffer;
class DescriptorSets
{
VkDevice device;
2021-09-14 20:31:15 +08:00
int binding_count;
VkDescriptorSet desc_set;
VkPipelineLayout pipeline_layout;
2020-10-29 16:50:19 +08:00
ObjectList<VkDescriptorBufferInfo> buffer_list;
ObjectList<VkDescriptorImageInfo> image_list;
2020-09-07 20:07:08 +08:00
List<VkWriteDescriptorSet> wds_list;
private:
2021-09-14 20:31:15 +08:00
friend class GPUDevice;
2021-09-14 20:31:15 +08:00
DescriptorSets(VkDevice dev,const int bc,VkPipelineLayout pl,VkDescriptorSet ds)
{
2021-09-14 20:31:15 +08:00
device =dev;
binding_count =bc;
desc_set =ds;
pipeline_layout =pl;
}
public:
~DescriptorSets()=default;
2021-09-14 20:31:15 +08:00
const uint32_t GetCount ()const{return binding_count;}
2021-06-16 20:29:25 +08:00
const VkDescriptorSet GetDescriptorSet ()const{return desc_set;}
const VkPipelineLayout GetPipelineLayout ()const{return pipeline_layout;}
const bool IsReady ()const{return wds_list.GetCount()==binding_count;}
void Clear();
2021-09-14 20:31:15 +08:00
bool BindUBO (const int binding,const GPUBuffer *buf,bool dynamic=false);
bool BindUBO (const int binding,const GPUBuffer *buf,const VkDeviceSize offset,const VkDeviceSize range,bool dynamic=false);
bool BindSSBO (const int binding,const GPUBuffer *buf,bool dynamic=false);
bool BindSSBO (const int binding,const GPUBuffer *buf,const VkDeviceSize offset,const VkDeviceSize range,bool dynamic=false);
2019-08-01 15:37:03 +08:00
bool BindSampler(const int binding,Texture *,Sampler *);
bool BindInputAttachment(const int binding,Texture *);
void Update();
};//class DescriptorSets
VK_NAMESPACE_END
#endif//HGL_GRAPH_VULKAN_DESCRIPTOR_SETS_LAYOUT_INCLUDE