Skip to content

Commit 2d1f804

Browse files
committed
tests: Fix as null descriptor with templates
1 parent bc34a52 commit 2d1f804

File tree

1 file changed

+40
-1
lines changed

1 file changed

+40
-1
lines changed

tests/unit/descriptors_positive.cpp

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1771,4 +1771,43 @@ TEST_F(PositiveDescriptors, NullDescriptorSetGPL) {
17711771
vk::CmdBindDescriptorSets(m_command_buffer, VK_PIPELINE_BIND_POINT_GRAPHICS, pipeline_layout_null, 0u, 2u,
17721772
descriptor_set_handles, 0u, nullptr);
17731773
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

Comments
 (0)