@@ -608,16 +608,12 @@ endif::VK_VERSION_1_4,VK_KHR_push_descriptor[]
608
608
.Valid Usage
609
609
****
610
610
* [[VUID-VkDescriptorSetLayoutCreateInfo-binding-00279]]
611
- ifdef::VK_NV_per_stage_descriptor_set[]
612
- If the <<features-perStageDescriptorSet, pname:perStageDescriptorSet>>
613
- feature is not enabled, or pname:flags does not contain
614
- ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_PER_STAGE_BIT_NV, then the
615
- endif::VK_NV_per_stage_descriptor_set[]
616
- ifndef::VK_NV_per_stage_descriptor_set[]
617
- The
618
- endif::VK_NV_per_stage_descriptor_set[]
619
- slink:VkDescriptorSetLayoutBinding::pname:binding members of the
620
- elements of the pname:pBindings array must: each have different values
611
+ codified-vu
612
+ if not is_feature_enabled(perStageDescriptorSet) and not flags.has_bit(VK_DESCRIPTOR_SET_LAYOUT_CREATE_PER_STAGE_BIT_NV):
613
+ for binding in pBindings:
614
+ for binding2 in pBindings:
615
+ if array_index(binding2) != array_index(binding):
616
+ require(binding.binding != binding2.binding)
621
617
ifdef::VK_VERSION_1_4[]
622
618
* [[VUID-VkDescriptorSetLayoutCreateInfo-flags-10354]]
623
619
If pname:flags contains
@@ -629,17 +625,17 @@ endif::VK_KHR_push_descriptor[]
629
625
endif::VK_VERSION_1_4[]
630
626
ifdef::VK_VERSION_1_4,VK_KHR_push_descriptor[]
631
627
* [[VUID-VkDescriptorSetLayoutCreateInfo-flags-00280]]
632
- If pname:flags contains
633
- ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT, then all
634
- elements of pname:pBindings must: not have a pname:descriptorType of
635
- ename: VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC or
636
- ename: VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
628
+ codified-vu
629
+ if flags.has_bit(VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT):
630
+ for binding in pBindings:
631
+ require(binding.descriptorType != VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC and
632
+ binding.descriptorType != VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC)
637
633
ifdef::VK_VERSION_1_3,VK_EXT_inline_uniform_block[]
638
634
* [[VUID-VkDescriptorSetLayoutCreateInfo-flags-02208]]
639
- If pname:flags contains
640
- ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT, then all
641
- elements of pname:pBindings must: not have a pname:descriptorType of
642
- ename: VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK
635
+ codified-vu
636
+ if flags.has_bit(VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT):
637
+ for binding in pBindings:
638
+ require(binding.descriptorType != VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK)
643
639
endif::VK_VERSION_1_3,VK_EXT_inline_uniform_block[]
644
640
* [[VUID-VkDescriptorSetLayoutCreateInfo-flags-00281]]
645
641
If pname:flags contains
@@ -648,22 +644,24 @@ endif::VK_VERSION_1_3,VK_EXT_inline_uniform_block[]
648
644
slink:VkPhysicalDevicePushDescriptorProperties::pname:maxPushDescriptors
649
645
ifdef::VK_EXT_mutable_descriptor_type,VK_VALVE_mutable_descriptor_type[]
650
646
* [[VUID-VkDescriptorSetLayoutCreateInfo-flags-04590]]
651
- If pname:flags contains
652
- ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT, pname:flags
653
- must: not contain
654
- ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT
647
+ codified-vu
648
+ if flags.has_bit(VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT):
649
+ require(not flags.has_bit(VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT))
655
650
* [[VUID-VkDescriptorSetLayoutCreateInfo-flags-04591]]
656
- If pname:flags contains
657
- ename: VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT,
658
- pname:pBindings must: not have a pname:descriptorType of
659
- ename: VK_DESCRIPTOR_TYPE_MUTABLE_EXT
651
+ codified-vu
652
+ if flags.has_bit( VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT):
653
+ for binding in pBindings:
654
+ require(binding.descriptorType != VK_DESCRIPTOR_TYPE_MUTABLE_EXT)
660
655
endif::VK_EXT_mutable_descriptor_type,VK_VALVE_mutable_descriptor_type[]
661
656
endif::VK_VERSION_1_4,VK_KHR_push_descriptor[]
662
657
ifdef::VK_VERSION_1_2,VK_EXT_descriptor_indexing[]
663
658
* [[VUID-VkDescriptorSetLayoutCreateInfo-flags-03000]]
664
- If any binding has the ename:VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT
665
- bit set, pname:flags must: include
666
- ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
659
+ codified-vu
660
+ if has_pnext(VkDescriptorSetLayoutBindingFlagsCreateInfo):
661
+ bindingFlagsCreateInfo = pnext(VkDescriptorSetLayoutBindingFlagsCreateInfo)
662
+ for bindingFlags in bindingFlagsCreateInfo.pBindingFlags:
663
+ if bindingFlags.has_bit(VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT):
664
+ require(flags.has_bit(VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT))
667
665
* [[VUID-VkDescriptorSetLayoutCreateInfo-descriptorType-03001]]
668
666
If any binding has the ename:VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT
669
667
bit set, then all bindings must: not have pname:descriptorType of
@@ -679,10 +677,12 @@ endif::VK_EXT_mutable_descriptor_type,VK_VALVE_mutable_descriptor_type[]
679
677
endif::VK_VERSION_1_2,VK_EXT_descriptor_indexing[]
680
678
ifdef::VK_EXT_mutable_descriptor_type,VK_VALVE_mutable_descriptor_type[]
681
679
* [[VUID-VkDescriptorSetLayoutCreateInfo-pBindings-07303]]
682
- If any element pname:pBindings[i] has a pname:descriptorType of
683
- ename:VK_DESCRIPTOR_TYPE_MUTABLE_EXT, then the pname:pNext chain must:
684
- include a slink:VkMutableDescriptorTypeCreateInfoEXT structure, and
685
- pname:mutableDescriptorTypeListCount must: be greater than i
680
+ codified-vu
681
+ for binding in pBindings:
682
+ if binding.descriptorType == VK_DESCRIPTOR_TYPE_MUTABLE_EXT:
683
+ require(has_pnext(VkMutableDescriptorTypeCreateInfoEXT))
684
+ mutableCount = pnext(VkMutableDescriptorTypeCreateInfoEXT).mutableDescriptorTypeListCount
685
+ require(mutableCount > array_index(binding))
686
686
* [[VUID-VkDescriptorSetLayoutCreateInfo-descriptorType-04594]]
687
687
If a binding has a pname:descriptorType value of
688
688
ename:VK_DESCRIPTOR_TYPE_MUTABLE_EXT, then sname:pImmutableSamplers
0 commit comments