41 #ifndef RV_VKDescriptorSet_h
42 #define RV_VKDescriptorSet_h
105 uint32_t array_stride,
106 uint32_t matrix_stride,
115 , baseSize(base_size)
116 , arrayStride(array_stride)
117 , matrixStride(matrix_stride)
119 , myIsActive(is_active)
128 uint32_t arraySize = 1;
132 uint32_t binding = 0;
139 uint32_t baseSize = 0;
141 uint32_t arrayStride = 0;
143 uint32_t matrixStride = 0;
147 bool myIsActive =
true;
175 uint32_t buffer_size,
180 bool compare_uniforms_types,
181 bool compare_uniforms_names,
182 bool compare_binding_location,
183 bool compare_binding_stages,
195 uint32_t myCount = 0;
225 bool isValid()
const;
237 bool allow_missing_bindings,
238 bool allow_different_stages,
239 bool allow_different_names,
248 return b_num < myBindings.size() &&
249 myBindings(b_num).isValid();
257 {
return compare(other,
false,
false,
false,
nullptr); }
274 bool myHashValid =
false;
293 return myVkDescriptorSetLayout;
301 : myInst(other.myInst)
302 , myVkDescriptorSetLayout(other.myVkDescriptorSetLayout)
304 other.myVkDescriptorSetLayout =
nullptr;
319 VkDescriptorSetLayout vk_layout,
321 : myInst(inst), myVkDescriptorSetLayout(vk_layout)
338 bool hasBinding(uint32_t binding, uint32_t element = 0);
362 VkBufferView buffer_view,
365 void bindAccelStruct(
368 VkAccelerationStructureKHR accel_struct);
371 uint32_t dst_binding,
372 uint32_t dst_element,
373 uint32_t src_binding,
374 uint32_t src_element,
377 bool isDirty()
const;
417 const char*
name =
nullptr);
421 VkDescriptorSet vk_set,
448 VkDescriptorSet myVkDescriptorSet;
475 VkDescriptorPool vk_desc_pool)
476 : myInst(inst), mySizes(sizes), myVkDescPool(vk_desc_pool)
481 VkResult allocateSet(VkDescriptorSetLayout layout, VkDescriptorSet&
set);
483 bool containsSet(VkDescriptorSet
set)
const;
495 bool myHasSpace =
true;
522 std::pair<VkDescriptorSet, exint> allocateVkDescriptorSet(
523 VkDescriptorSetLayout vk_layout);
525 void freeVkDescriptorSet(VkDescriptorSet vk_set,
int pool_idx = -1);
539 bool allocateNewPool();
GLuint GLsizei const GLuint const GLintptr const GLsizeiptr * sizes
const RV_VKDescriptorSetInfo * getInfo() const
exint getNumPools() const
GLuint GLsizei const GLchar * label
VkShaderStageFlags myStages
const RV_ResourceID & getID() const
CompareResults OIIO_API compare(const ImageBuf &A, const ImageBuf &B, float failthresh, float warnthresh, float failrelative, float warnrelative, ROI roi={}, int nthreads=0)
std::size_t SYS_HashType
Define the type for hash values.
void RVgetUniformSize(RV_UniformType type, int &out_typesize, bool &out_is_int, int &out_size, int &out_align, int &out_vec_num, int &out_col_num)
VkDescriptorSet getVkDescriptorSet()
constexpr auto in(type t, int set) -> bool
UT_UniquePtr< RV_VKDescriptorPool > RV_VKDescriptorPoolPtr
UT_Array< RV_Uniform > myUniforms
UT_UniquePtr< RV_VKDescriptorLayout > RV_VKDescriptorLayoutPtr
std::unique_ptr< T, Deleter > UT_UniquePtr
A smart pointer for unique ownership of dynamically allocated objects.
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
GLint GLint GLsizei GLint GLenum GLenum type
constexpr auto set(type rhs) -> int
SYS_HashType hash_value(const RV_VKDescriptorSetInfo &in)
exint getLayoutID() const
GLuint const GLchar * name
Handle to the main interface of Vulkan.
const UT_Array< RV_VKDescriptorBinding > & getBindings() const
RV_VKDescriptorLayout(RV_Instance *inst, VkDescriptorSetLayout vk_layout, const PassKey &)
VkFlags VkDescriptorSetLayoutCreateFlags
LeafData & operator=(const LeafData &)=delete
bool hasBinding(uint32_t b_num) const
SYS_HashType getHash() const
RV_VKDescriptorLayout(RV_VKDescriptorLayout &&other)
FMT_INLINE void print(format_string< T...> fmt, T &&...args)
VkDescriptorSetLayout getVkDescriptorSetLayout() const
RV_VKDescriptorPool(RV_Instance *inst, const UT_Array< VkDescriptorPoolSize > &sizes, VkDescriptorPool vk_desc_pool)
VkFlags VkShaderStageFlags