Class EXTDeviceFault
This extension introduces a new command: GetDeviceFaultInfoEXT, which may be called subsequent to a ERROR_DEVICE_LOST error code having been returned by the implementation. This command allows developers to query for additional information on GPU faults which may have caused device loss, and to generate binary crash dumps, which may be loaded into external tools for further diagnosis.
- Name String
VK_EXT_device_fault- Extension Type
- Device extension
- Registered Extension Number
- 342
- Revision
- 2
- Extension and Version Dependencies
VK_KHR_get_physical_device_properties2or Version 1.1- Contact
- Ralph Potter r_potter
- Extension Proposal
- VK_EXT_device_fault
Other Extension Metadata
- Last Modified Date
- 2021-03-10
- IP Status
- No known IP claims.
- Contributors
- Ralph Potter, Samsung
- Stuart Smith, AMD
- Jan-Harald Fredriksen, ARM
- Mark Bellamy, ARM
- Andrew Ellem, Google
- Alex Walters, IMG
- Jeff Bolz, NVIDIA
- Baldur Karlsson, Valve
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intVkDeviceFaultAddressTypeEXT - Page fault access typesstatic final intVkDeviceFaultAddressTypeEXT - Page fault access typesstatic final intVkDeviceFaultAddressTypeEXT - Page fault access typesstatic final intVkDeviceFaultAddressTypeEXT - Page fault access typesstatic final intVkDeviceFaultAddressTypeEXT - Page fault access typesstatic final intVkDeviceFaultAddressTypeEXT - Page fault access typesstatic final intVkDeviceFaultAddressTypeEXT - Page fault access typesstatic final intVkDeviceFaultVendorBinaryHeaderVersionEXT - Encode vendor binary crash dump versionstatic final StringThe extension name.static final intThe extension specification version.static final intExtendsVkStructureType.static final intExtendsVkStructureType.static final intExtendsVkStructureType. -
Method Summary
Modifier and TypeMethodDescriptionstatic intnvkGetDeviceFaultInfoEXT(org.lwjgl.vulkan.VkDevice device, long pFaultCounts, long pFaultInfo) Unsafe version of:GetDeviceFaultInfoEXTstatic intvkGetDeviceFaultInfoEXT(org.lwjgl.vulkan.VkDevice device, VkDeviceFaultCountsEXT pFaultCounts, @Nullable VkDeviceFaultInfoEXT pFaultInfo) Reports diagnostic fault information on the specified logical device.
-
Field Details
-
VK_EXT_DEVICE_FAULT_SPEC_VERSION
public static final int VK_EXT_DEVICE_FAULT_SPEC_VERSIONThe extension specification version.- See Also:
-
VK_EXT_DEVICE_FAULT_EXTENSION_NAME
The extension name.- See Also:
-
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_EXT
public static final int VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_EXTExtendsVkStructureType.Enum values:
- See Also:
-
VK_STRUCTURE_TYPE_DEVICE_FAULT_COUNTS_EXT
public static final int VK_STRUCTURE_TYPE_DEVICE_FAULT_COUNTS_EXTExtendsVkStructureType.Enum values:
- See Also:
-
VK_STRUCTURE_TYPE_DEVICE_FAULT_INFO_EXT
public static final int VK_STRUCTURE_TYPE_DEVICE_FAULT_INFO_EXTExtendsVkStructureType.Enum values:
- See Also:
-
VK_DEVICE_FAULT_ADDRESS_TYPE_NONE_EXT
public static final int VK_DEVICE_FAULT_ADDRESS_TYPE_NONE_EXTVkDeviceFaultAddressTypeEXT - Page fault access typesDescription
DEVICE_FAULT_ADDRESS_TYPE_NONE_EXTspecifies thatVkDeviceFaultAddressInfoEXTdoes not describe a page fault, or an instruction address.DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXTspecifies thatVkDeviceFaultAddressInfoEXTdescribes a page fault triggered by an invalid read operation.DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_EXTspecifies thatVkDeviceFaultAddressInfoEXTdescribes a page fault triggered by an invalid write operation.DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_EXTdescribes a page fault triggered by an attempt to execute non-executable memory.DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXTspecifies an instruction pointer value at the time the fault occurred. This may or may not be related to a fault.DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXTspecifies an instruction pointer value associated with an invalid instruction fault.DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXTspecifies an instruction pointer value associated with a fault.
Note
The instruction pointer values recorded may not identify the specific instruction(s) that triggered the fault. The relationship between the instruction pointer reported and triggering instruction will be vendor-specific.
See Also
- See Also:
-
VK_DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXT
public static final int VK_DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXTVkDeviceFaultAddressTypeEXT - Page fault access typesDescription
DEVICE_FAULT_ADDRESS_TYPE_NONE_EXTspecifies thatVkDeviceFaultAddressInfoEXTdoes not describe a page fault, or an instruction address.DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXTspecifies thatVkDeviceFaultAddressInfoEXTdescribes a page fault triggered by an invalid read operation.DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_EXTspecifies thatVkDeviceFaultAddressInfoEXTdescribes a page fault triggered by an invalid write operation.DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_EXTdescribes a page fault triggered by an attempt to execute non-executable memory.DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXTspecifies an instruction pointer value at the time the fault occurred. This may or may not be related to a fault.DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXTspecifies an instruction pointer value associated with an invalid instruction fault.DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXTspecifies an instruction pointer value associated with a fault.
Note
The instruction pointer values recorded may not identify the specific instruction(s) that triggered the fault. The relationship between the instruction pointer reported and triggering instruction will be vendor-specific.
See Also
- See Also:
-
VK_DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_EXT
public static final int VK_DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_EXTVkDeviceFaultAddressTypeEXT - Page fault access typesDescription
DEVICE_FAULT_ADDRESS_TYPE_NONE_EXTspecifies thatVkDeviceFaultAddressInfoEXTdoes not describe a page fault, or an instruction address.DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXTspecifies thatVkDeviceFaultAddressInfoEXTdescribes a page fault triggered by an invalid read operation.DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_EXTspecifies thatVkDeviceFaultAddressInfoEXTdescribes a page fault triggered by an invalid write operation.DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_EXTdescribes a page fault triggered by an attempt to execute non-executable memory.DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXTspecifies an instruction pointer value at the time the fault occurred. This may or may not be related to a fault.DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXTspecifies an instruction pointer value associated with an invalid instruction fault.DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXTspecifies an instruction pointer value associated with a fault.
Note
The instruction pointer values recorded may not identify the specific instruction(s) that triggered the fault. The relationship between the instruction pointer reported and triggering instruction will be vendor-specific.
See Also
- See Also:
-
VK_DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_EXT
public static final int VK_DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_EXTVkDeviceFaultAddressTypeEXT - Page fault access typesDescription
DEVICE_FAULT_ADDRESS_TYPE_NONE_EXTspecifies thatVkDeviceFaultAddressInfoEXTdoes not describe a page fault, or an instruction address.DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXTspecifies thatVkDeviceFaultAddressInfoEXTdescribes a page fault triggered by an invalid read operation.DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_EXTspecifies thatVkDeviceFaultAddressInfoEXTdescribes a page fault triggered by an invalid write operation.DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_EXTdescribes a page fault triggered by an attempt to execute non-executable memory.DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXTspecifies an instruction pointer value at the time the fault occurred. This may or may not be related to a fault.DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXTspecifies an instruction pointer value associated with an invalid instruction fault.DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXTspecifies an instruction pointer value associated with a fault.
Note
The instruction pointer values recorded may not identify the specific instruction(s) that triggered the fault. The relationship between the instruction pointer reported and triggering instruction will be vendor-specific.
See Also
- See Also:
-
VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXT
public static final int VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXTVkDeviceFaultAddressTypeEXT - Page fault access typesDescription
DEVICE_FAULT_ADDRESS_TYPE_NONE_EXTspecifies thatVkDeviceFaultAddressInfoEXTdoes not describe a page fault, or an instruction address.DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXTspecifies thatVkDeviceFaultAddressInfoEXTdescribes a page fault triggered by an invalid read operation.DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_EXTspecifies thatVkDeviceFaultAddressInfoEXTdescribes a page fault triggered by an invalid write operation.DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_EXTdescribes a page fault triggered by an attempt to execute non-executable memory.DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXTspecifies an instruction pointer value at the time the fault occurred. This may or may not be related to a fault.DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXTspecifies an instruction pointer value associated with an invalid instruction fault.DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXTspecifies an instruction pointer value associated with a fault.
Note
The instruction pointer values recorded may not identify the specific instruction(s) that triggered the fault. The relationship between the instruction pointer reported and triggering instruction will be vendor-specific.
See Also
- See Also:
-
VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXT
public static final int VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXTVkDeviceFaultAddressTypeEXT - Page fault access typesDescription
DEVICE_FAULT_ADDRESS_TYPE_NONE_EXTspecifies thatVkDeviceFaultAddressInfoEXTdoes not describe a page fault, or an instruction address.DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXTspecifies thatVkDeviceFaultAddressInfoEXTdescribes a page fault triggered by an invalid read operation.DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_EXTspecifies thatVkDeviceFaultAddressInfoEXTdescribes a page fault triggered by an invalid write operation.DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_EXTdescribes a page fault triggered by an attempt to execute non-executable memory.DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXTspecifies an instruction pointer value at the time the fault occurred. This may or may not be related to a fault.DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXTspecifies an instruction pointer value associated with an invalid instruction fault.DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXTspecifies an instruction pointer value associated with a fault.
Note
The instruction pointer values recorded may not identify the specific instruction(s) that triggered the fault. The relationship between the instruction pointer reported and triggering instruction will be vendor-specific.
See Also
- See Also:
-
VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXT
public static final int VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXTVkDeviceFaultAddressTypeEXT - Page fault access typesDescription
DEVICE_FAULT_ADDRESS_TYPE_NONE_EXTspecifies thatVkDeviceFaultAddressInfoEXTdoes not describe a page fault, or an instruction address.DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXTspecifies thatVkDeviceFaultAddressInfoEXTdescribes a page fault triggered by an invalid read operation.DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_EXTspecifies thatVkDeviceFaultAddressInfoEXTdescribes a page fault triggered by an invalid write operation.DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_EXTdescribes a page fault triggered by an attempt to execute non-executable memory.DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXTspecifies an instruction pointer value at the time the fault occurred. This may or may not be related to a fault.DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXTspecifies an instruction pointer value associated with an invalid instruction fault.DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXTspecifies an instruction pointer value associated with a fault.
Note
The instruction pointer values recorded may not identify the specific instruction(s) that triggered the fault. The relationship between the instruction pointer reported and triggering instruction will be vendor-specific.
See Also
- See Also:
-
VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_EXT
public static final int VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_EXTVkDeviceFaultVendorBinaryHeaderVersionEXT - Encode vendor binary crash dump versionDescription
DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_EXTspecifies version one of the binary crash dump header.
See Also
VkDeviceFaultVendorBinaryHeaderVersionOneEXT,GetDeviceFaultInfoEXT- See Also:
-
-
Method Details
-
nvkGetDeviceFaultInfoEXT
public static int nvkGetDeviceFaultInfoEXT(org.lwjgl.vulkan.VkDevice device, long pFaultCounts, long pFaultInfo) Unsafe version of:GetDeviceFaultInfoEXT -
vkGetDeviceFaultInfoEXT
public static int vkGetDeviceFaultInfoEXT(org.lwjgl.vulkan.VkDevice device, VkDeviceFaultCountsEXT pFaultCounts, @Nullable VkDeviceFaultInfoEXT pFaultInfo) Reports diagnostic fault information on the specified logical device.C Specification
To retrieve diagnostic information about faults that may have caused device loss, call:
VkResult vkGetDeviceFaultInfoEXT( VkDevice device, VkDeviceFaultCountsEXT* pFaultCounts, VkDeviceFaultInfoEXT* pFaultInfo);Description
If
pFaultInfoisNULL, then the counts of corresponding additional fault information structures available are returned in theaddressInfoCountandvendorInfoCountmembers ofpFaultCounts. Additionally, the size of any vendor-specific binary crash dump is returned in thevendorBinarySizemember ofpFaultCounts.If
pFaultInfois notNULL,pFaultCountsmust point to aVkDeviceFaultCountsEXTstructure with each structure count or size member (addressInfoCount,vendorInfoCount,vendorBinarySize) set by the application to the number of elements in the corresponding output array member ofpFaultInfo(pAddressInfosandpVendorInfos), or to the size of the output buffer in bytes (pVendorBinaryData). On return, each structure count member is overwritten with the number of structures actually written to the corresponding output array member ofpFaultInfo. Similarly,vendorBinarySizeis overwritten with the number of bytes actually written to thepVendorBinaryDatamember ofpFaultInfo.If the vendor-specific crash dumps feature is not enabled, then implementations must set
pFaultCounts->vendorBinarySize to zero and must not modifypFaultInfo->pVendorBinaryData.If any
pFaultCountsstructure count member is less than the number of corresponding fault properties available, at most structure count (addressInfoCount,vendorInfoCount) elements will be written to the associatedpFaultInfooutput array. Similarly, ifvendorBinarySizeis less than the size in bytes of the available crash dump data, at mostvendorBinarySizeelements will be written topVendorBinaryData.If
pFaultInfoisNULL, then subsequent calls toGetDeviceFaultInfoEXTfor the samedevicemust return identical values in theaddressInfoCount,vendorInfoCountandvendorBinarySizemembers ofpFaultCounts.If
pFaultInfois notNULL, then subsequent calls toGetDeviceFaultInfoEXTfor the samedevicemust return identical values in the output members ofpFaultInfo(pAddressInfos,pVendorInfos,pVendorBinaryData), up to the limits described by the structure count and buffer size members ofpFaultCounts(addressInfoCount,vendorInfoCount,vendorBinarySize). If the sizes of the output members ofpFaultInfoincrease for a subsequent call toGetDeviceFaultInfoEXT, then supplementary information may be returned in the additional available space.If any
pFaultCountsstructure count member is smaller than the number of corresponding fault properties available, or ifpFaultCounts->vendorBinarySize is smaller than the size in bytes of the generated binary crash dump data,INCOMPLETEwill be returned instead ofSUCCESS, to indicate that not all the available properties were returned.If
pFaultCounts->vendorBinarySize is less than what is necessary to store the binary crash dump header, nothing will be written topFaultInfo->pVendorBinaryData and zero will be written topFaultCounts->vendorBinarySize.Valid Usage
devicemust be in the lost state- If the value referenced by
pFaultCounts→addressInfoCountis not 0, andpFaultInfo→pAddressInfosis notNULL,pFaultInfo→pAddressInfosmust be a valid pointer to an array ofpFaultCounts→addressInfoCountVkDeviceFaultAddressInfoEXTstructures - If the value referenced by
pFaultCounts→vendorInfoCountis not 0, andpFaultInfo→pVendorInfosis notNULL,pFaultInfo→pVendorInfosmust be a valid pointer to an array ofpFaultCounts→vendorInfoCountVkDeviceFaultVendorInfoEXTstructures - If the value referenced by
pFaultCounts→vendorBinarySizeis not 0, andpFaultInfo→pVendorBinaryDatais notNULL,pFaultInfo→pVendorBinaryDatamust be a valid pointer to an array ofpFaultCounts→vendorBinarySizebytes
Valid Usage (Implicit)
devicemust be a validVkDevicehandlepFaultCountsmust be a valid pointer to aVkDeviceFaultCountsEXTstructure- If
pFaultInfois notNULL,pFaultInfomust be a valid pointer to aVkDeviceFaultInfoEXTstructure
Return Codes
- On success, this command returns
- On failure, this command returns
See Also
- Parameters:
device- the logical device from which to query the diagnostic fault information.pFaultCounts- a pointer to aVkDeviceFaultCountsEXTstructure in which counts for structures describing additional fault information are returned.pFaultInfo-NULLor a pointer to aVkDeviceFaultInfoEXTstructure in which fault information is returned.
-