@@ -1771,4 +1771,43 @@ TEST_F(PositiveDescriptors, NullDescriptorSetGPL) {
1771
1771
vk::CmdBindDescriptorSets (m_command_buffer, VK_PIPELINE_BIND_POINT_GRAPHICS, pipeline_layout_null, 0u , 2u ,
1772
1772
descriptor_set_handles, 0u , nullptr );
1773
1773
m_command_buffer.End ();
1774
- }
1774
+ }
1775
+
1776
+ TEST_F (PositiveDescriptors, AccelerationStructureTemplateNullDescriptor) {
1777
+ SetTargetApiVersion (VK_API_VERSION_1_1);
1778
+ AddRequiredExtensions (VK_KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME);
1779
+ AddRequiredExtensions (VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME);
1780
+ AddRequiredExtensions (VK_EXT_ROBUSTNESS_2_EXTENSION_NAME);
1781
+ AddRequiredFeature (vkt::Feature::accelerationStructure);
1782
+ AddRequiredFeature (vkt::Feature::bufferDeviceAddress);
1783
+ AddRequiredFeature (vkt::Feature::nullDescriptor);
1784
+ RETURN_IF_SKIP (Init ());
1785
+
1786
+ OneOffDescriptorSet descriptor_set (m_device,
1787
+ {
1788
+ {0 , VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR, 1 , VK_SHADER_STAGE_ALL, nullptr },
1789
+ });
1790
+
1791
+ struct SimpleTemplateData {
1792
+ VkAccelerationStructureKHR as;
1793
+ };
1794
+
1795
+ VkDescriptorUpdateTemplateEntry update_template_entry = {};
1796
+ update_template_entry.dstBinding = 0 ;
1797
+ update_template_entry.dstArrayElement = 0 ;
1798
+ update_template_entry.descriptorCount = 1 ;
1799
+ update_template_entry.descriptorType = VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR;
1800
+ update_template_entry.offset = 0 ;
1801
+ update_template_entry.stride = sizeof (SimpleTemplateData);
1802
+
1803
+ VkDescriptorUpdateTemplateCreateInfo update_template_ci = vku::InitStructHelper ();
1804
+ update_template_ci.descriptorUpdateEntryCount = 1 ;
1805
+ update_template_ci.pDescriptorUpdateEntries = &update_template_entry;
1806
+ update_template_ci.templateType = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET;
1807
+ update_template_ci.descriptorSetLayout = descriptor_set.layout_ ;
1808
+ vkt::DescriptorUpdateTemplate update_template (*m_device, update_template_ci);
1809
+
1810
+ SimpleTemplateData update_template_data;
1811
+ update_template_data.as = VK_NULL_HANDLE;
1812
+ vk::UpdateDescriptorSetWithTemplate (device (), descriptor_set.set_ , update_template, &update_template_data);
1813
+ }
0 commit comments