VkDeviceFaultInfoKHR
The VkDeviceFaultInfoKHR structure is defined as:
typedef struct VkDeviceFaultInfoKHR {
VkStructureType sType;
void* pNext;
VkDeviceFaultFlagsKHR flags;
uint64_t groupId;
char description[VK_MAX_DESCRIPTION_SIZE];
VkDeviceFaultAddressInfoKHR faultAddressInfo;
VkDeviceFaultAddressInfoKHR instructionAddressInfo;
VkDeviceFaultVendorInfoKHR vendorInfo;
} VkDeviceFaultInfoKHR;
pub struct DeviceFaultInfoKHR {
s_type: vk::StructureType,
p_next: *mut c_void,
flags: vk::DeviceFaultFlagsKHR,
group_id: u64,
description: [c_char; VK_MAX_DESCRIPTION_SIZE], // Free-form description of the fault
fault_address_info: vk::DeviceFaultAddressInfoKHR,
instruction_address_info: vk::DeviceFaultAddressInfoKHR,
vendor_info: vk::DeviceFaultVendorInfoKHR,
}
sTypeis a VkStructureType value identifying this structure.pNextisNULLor a pointer to a structure extending this structure.flagsis a bitmask of VkDeviceFaultFlagBitsKHR values giving information as to the type of fault and which additional fields have been populated by the driver provide further information.groupIDis a monotonically increasing value for associating multiple entries with a single fault.descriptionis an array ofVK_MAX_DESCRIPTION_SIZEcharcontaining a null-terminated UTF-8 string which is a human readable description of the fault.faultAddressInfoa VkDeviceFaultAddressInfoKHR structure providing details of the memory access which caused a fault.instructionAddressInfoa VkDeviceFaultAddressInfoKHR structure providing details of the GPU instruction which cause a fault.vendorInfoa VkDeviceFaultVendorInfoKHR structure providing vendor specific fault information.
An implementation should populate as many members of VkDeviceFaultInfoKHR as possible, given the information available at the time of the fault and the constraints of the implementation itself.
A single error may generate multiple instances of
VkDeviceFaultInfoKHR.
For example, multiple page faults may be generated, with the
faultAddress member of each instance identifying a different memory
address.
In this case, all instances of VkDeviceFaultInfoKHR should share the
same groupID where the implementation can reasonably ascertain this
association.
Due to hardware limitations, faultAddressInfo and
instructionAddressInfo describe ranges of GPU virtual address space,
rather than precise addresses.
The precise memory address accessed or the precise value of the instruction
pointer must lie within the region described.
VkDeviceFaultInfoKHR reported may (depending on the flags
set) provide:- A memory access which may have triggered a page fault and may have contributed to device loss
- The value of an active instruction pointer at the time a fault occurred. This value may be indicative of the active pipeline or shader at the time of device loss
faultAddressInfo
or instructionAddressInfo to GPU virtual address ranges reported by
the VK_EXT_device_address_binding_report extension may allow
applications to correlate between these addresses and Vulkan objects.
Applications should be aware that these addresses may also correspond to
resources internal to an implementation, which will not be reported via the
VK_EXT_device_address_binding_report extension.Valid Usage (Implicit)
VUID-VkDeviceFaultInfoKHR-sType-sType
sType must be VK_STRUCTURE_TYPE_DEVICE_FAULT_INFO_KHR
VUID-VkDeviceFaultInfoKHR-pNext-pNext
pNext must be NULL