41 #ifndef RV_VKDescriptorSet_h
42 #define RV_VKDescriptorSet_h
108 uint32_t array_stride,
109 uint32_t matrix_stride,
118 , baseSize(base_size)
119 , arrayStride(array_stride)
120 , matrixStride(matrix_stride)
122 , myIsActive(is_active)
131 uint32_t arraySize = 1;
135 uint32_t binding = 0;
142 uint32_t baseSize = 0;
144 uint32_t arrayStride = 0;
146 uint32_t matrixStride = 0;
150 bool myIsActive =
true;
180 uint32_t buffer_size,
185 bool compare_uniforms_types,
186 bool compare_uniforms_names,
187 bool compare_binding_location,
188 bool compare_binding_stages,
200 uint32_t myCount = 0;
231 bool isValid()
const;
243 bool allow_missing_bindings,
244 bool allow_different_stages,
245 bool allow_different_names,
255 return b_num < myBindings.size() &&
256 myBindings(b_num).isValid();
264 {
return compare(other,
false,
false,
false,
nullptr); }
281 bool myHashValid =
false;
283 exint myLayoutId = -1;
300 return myVkDescriptorSetLayout;
308 : myInst(other.myInst)
309 , myVkDescriptorSetLayout(other.myVkDescriptorSetLayout)
311 other.myVkDescriptorSetLayout =
nullptr;
326 VkDescriptorSetLayout vk_layout,
328 : myInst(inst), myVkDescriptorSetLayout(vk_layout)
345 bool hasBinding(uint32_t binding, uint32_t element = 0);
369 VkBufferView buffer_view,
372 void bindAccelStruct(
375 VkAccelerationStructureKHR accel_struct);
378 uint32_t dst_binding,
379 uint32_t dst_element,
380 uint32_t src_binding,
381 uint32_t src_element,
384 bool isDirty()
const;
424 const char*
name =
nullptr);
428 VkDescriptorSet vk_set,
457 VkDescriptorSet myVkDescriptorSet;
484 VkDescriptorPool vk_desc_pool)
485 : myInst(inst), mySizes(sizes), myVkDescPool(vk_desc_pool)
490 VkResult allocateSet(VkDescriptorSetLayout layout, VkDescriptorSet&
set);
492 bool containsSet(VkDescriptorSet
set)
const;
504 bool myHasSpace =
true;
531 std::pair<VkDescriptorSet, exint> allocateVkDescriptorSet(
532 VkDescriptorSetLayout vk_layout);
534 void freeVkDescriptorSet(VkDescriptorSet vk_set,
int pool_idx = -1);
558 bool allocateNewPool();
const RV_VKDescriptorSetInfo * mySetLayout
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)
bool RVtryToUseUpdateAfterBind()
GLint GLint GLsizei GLint GLenum GLenum type
const RV_VKDescriptorLayout * mySetLayoutObject
constexpr auto set(type rhs) -> int
SYS_HashType hash_value(const RV_VKDescriptorSetInfo &in)
const UT_ArrayStringMap< int > * myBindingTable
exint getLayoutID() const
bool validLayoutID() 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