Skip to content

Commit 8b7501e

Browse files
committed
Enable the fault feature
1 parent 0e8bdeb commit 8b7501e

File tree

4 files changed

+14
-1
lines changed

4 files changed

+14
-1
lines changed

include/zvulkan/vulkaninstance.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ class VulkanDeviceFeatures
2828
VkPhysicalDeviceAccelerationStructureFeaturesKHR AccelerationStructure = { VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR };
2929
VkPhysicalDeviceRayQueryFeaturesKHR RayQuery = { VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR };
3030
VkPhysicalDeviceDescriptorIndexingFeatures DescriptorIndexing = { VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT };
31+
VkPhysicalDeviceFaultFeaturesEXT Fault = { VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_EXT };
3132
};
3233

3334
class VulkanDeviceProperties

src/vulkanbuilders.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1818,6 +1818,7 @@ std::vector<VulkanCompatibleDevice> VulkanDeviceBuilder::FindDevices(const std::
18181818
enabledFeatures.DescriptorIndexing.descriptorBindingSampledImageUpdateAfterBind = deviceFeatures.DescriptorIndexing.descriptorBindingSampledImageUpdateAfterBind;
18191819
enabledFeatures.DescriptorIndexing.descriptorBindingVariableDescriptorCount = deviceFeatures.DescriptorIndexing.descriptorBindingVariableDescriptorCount;
18201820
enabledFeatures.DescriptorIndexing.shaderSampledImageArrayNonUniformIndexing = deviceFeatures.DescriptorIndexing.shaderSampledImageArrayNonUniformIndexing;
1821+
enabledFeatures.Fault.deviceFault = deviceFeatures.Fault.deviceFault;
18211822

18221823
// Figure out which queue can present
18231824
if (surface)

src/vulkandevice.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,11 @@ void VulkanDevice::CreateDevice()
136136
*next = &EnabledFeatures.DescriptorIndexing;
137137
next = &EnabledFeatures.DescriptorIndexing.pNext;
138138
}
139+
if (SupportsExtension(VK_EXT_DEVICE_FAULT_EXTENSION_NAME))
140+
{
141+
*next = &EnabledFeatures.Fault;
142+
next = &EnabledFeatures.Fault.pNext;
143+
}
139144

140145
VkResult result = vkCreateDevice(PhysicalDevice.Device, &deviceCreateInfo, nullptr, &device);
141146
CheckVulkanError(result, "Could not create vulkan device");
@@ -174,7 +179,7 @@ void VulkanDevice::SetObjectName(const char* name, uint64_t handle, VkObjectType
174179

175180
VulkanDeviceFaultInfo VulkanDevice::GetDeviceFaultInfo()
176181
{
177-
if (!SupportsExtension(VK_EXT_DEVICE_FAULT_EXTENSION_NAME))
182+
if (!SupportsExtension(VK_EXT_DEVICE_FAULT_EXTENSION_NAME) || !EnabledFeatures.Fault.deviceFault)
178183
return {};
179184

180185
VkDeviceFaultCountsEXT counts = { VK_STRUCTURE_TYPE_DEVICE_FAULT_COUNTS_EXT };

src/vulkaninstance.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -297,13 +297,19 @@ std::vector<VulkanPhysicalDevice> VulkanInstance::GetPhysicalDevices(VkInstance
297297
*next = &dev.Features.DescriptorIndexing;
298298
next = &dev.Features.DescriptorIndexing.pNext;
299299
}
300+
if (checkForExtension(VK_EXT_DEVICE_FAULT_EXTENSION_NAME))
301+
{
302+
*next = &dev.Features.Fault;
303+
next = &dev.Features.Fault.pNext;
304+
}
300305

301306
vkGetPhysicalDeviceFeatures2(dev.Device, &deviceFeatures2);
302307
dev.Features.Features = deviceFeatures2.features;
303308
dev.Features.BufferDeviceAddress.pNext = nullptr;
304309
dev.Features.AccelerationStructure.pNext = nullptr;
305310
dev.Features.RayQuery.pNext = nullptr;
306311
dev.Features.DescriptorIndexing.pNext = nullptr;
312+
dev.Features.Fault.pNext = nullptr;
307313
}
308314
else
309315
{

0 commit comments

Comments
 (0)