Top Description Fields Constructors Methods
org.lwjgl.vulkan

public Class EXTDeviceFault

extends Object
Class Inheritance
Imports
javax.annotation.*, org.lwjgl.system.*

Device loss can be triggered by a variety of issues, including invalid API usage, implementation errors, or hardware failures.

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.

VK_EXT_device_fault
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_properties2
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

Modifier and TypeField and Description
public static final int
VK_DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_EXT

VkDeviceFaultAddressTypeEXT - Page fault access types Description

public static final int
VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXT

VkDeviceFaultAddressTypeEXT - Page fault access types Description

public static final int
VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXT

VkDeviceFaultAddressTypeEXT - Page fault access types Description

public static final int
VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXT

VkDeviceFaultAddressTypeEXT - Page fault access types Description

public static final int
VK_DEVICE_FAULT_ADDRESS_TYPE_NONE_EXT

VkDeviceFaultAddressTypeEXT - Page fault access types Description

public static final int
VK_DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXT

VkDeviceFaultAddressTypeEXT - Page fault access types Description

public static final int
VK_DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_EXT

VkDeviceFaultAddressTypeEXT - Page fault access types Description

public static final int
VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_EXT

VkDeviceFaultVendorBinaryHeaderVersionEXT - Encode vendor binary crash dump version Description

public static final String
public static final int
VK_EXT_DEVICE_FAULT_SPEC_VERSION

The extension specification version.

public static final int
public static final int
public static final int

Constructor Summary

AccessConstructor and Description
protected

Method Summary

Modifier and TypeMethod and Description
public static int
nvkGetDeviceFaultInfoEXT(VkDevice device, long pFaultCounts, long pFaultInfo)

Unsafe version of: GetDeviceFaultInfoEXT

public static int
vkGetDeviceFaultInfoEXT(VkDevice
the logical device from which to query the diagnostic fault information.
device
,
VkDeviceFaultCountsEXT
a pointer to a VkDeviceFaultCountsEXT structure in which counts for structures describing additional fault information are returned.
pFaultCounts
,
VkDeviceFaultInfoEXT
NULL or a pointer to a VkDeviceFaultInfoEXT structure in which fault information is returned.
pFaultInfo
)

Reports diagnostic fault information on the specified logical device.

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

VK_DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_EXTback to summary
public static final int VK_DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_EXT

VkDeviceFaultAddressTypeEXT - Page fault access types

Description
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

VkDeviceFaultAddressInfoEXT

VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXTback to summary
public static final int VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXT

VkDeviceFaultAddressTypeEXT - Page fault access types

Description
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

VkDeviceFaultAddressInfoEXT

VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXTback to summary
public static final int VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXT

VkDeviceFaultAddressTypeEXT - Page fault access types

Description
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

VkDeviceFaultAddressInfoEXT

VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXTback to summary
public static final int VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXT

VkDeviceFaultAddressTypeEXT - Page fault access types

Description
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

VkDeviceFaultAddressInfoEXT

VK_DEVICE_FAULT_ADDRESS_TYPE_NONE_EXTback to summary
public static final int VK_DEVICE_FAULT_ADDRESS_TYPE_NONE_EXT

VkDeviceFaultAddressTypeEXT - Page fault access types

Description
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

VkDeviceFaultAddressInfoEXT

VK_DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXTback to summary
public static final int VK_DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXT

VkDeviceFaultAddressTypeEXT - Page fault access types

Description
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

VkDeviceFaultAddressInfoEXT

VK_DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_EXTback to summary
public static final int VK_DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_EXT

VkDeviceFaultAddressTypeEXT - Page fault access types

Description
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

VkDeviceFaultAddressInfoEXT

VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_EXTback to summary
public static final int VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_EXT

VkDeviceFaultVendorBinaryHeaderVersionEXT - Encode vendor binary crash dump version

Description
See Also

VkDeviceFaultVendorBinaryHeaderVersionOneEXT, GetDeviceFaultInfoEXT

VK_EXT_DEVICE_FAULT_EXTENSION_NAMEback to summary
public static final String VK_EXT_DEVICE_FAULT_EXTENSION_NAME

The extension name.

VK_EXT_DEVICE_FAULT_SPEC_VERSIONback to summary
public static final int VK_EXT_DEVICE_FAULT_SPEC_VERSION

The extension specification version.

VK_STRUCTURE_TYPE_DEVICE_FAULT_COUNTS_EXTback to summary
public static final int VK_STRUCTURE_TYPE_DEVICE_FAULT_COUNTS_EXT

Extends VkStructureType.

Enum values:
VK_STRUCTURE_TYPE_DEVICE_FAULT_INFO_EXTback to summary
public static final int VK_STRUCTURE_TYPE_DEVICE_FAULT_INFO_EXT

Extends VkStructureType.

Enum values:
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_EXTback to summary
public static final int VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_EXT

Extends VkStructureType.

Enum values:

Constructor Detail

EXTDeviceFaultback to summary
protected EXTDeviceFault()

Method Detail

nvkGetDeviceFaultInfoEXTback to summary
public static int nvkGetDeviceFaultInfoEXT(VkDevice device, long pFaultCounts, long pFaultInfo)

Unsafe version of: GetDeviceFaultInfoEXT

vkGetDeviceFaultInfoEXTback to summary
public static int vkGetDeviceFaultInfoEXT(VkDevice device, VkDeviceFaultCountsEXT pFaultCounts, 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 pFaultInfo is NULL, then the counts of corresponding additional fault information structures available are returned in the addressInfoCount and vendorInfoCount members of pFaultCounts. Additionally, the size of any vendor-specific binary crash dump is returned in the vendorBinarySize member of pFaultCounts.

If pFaultInfo is not NULL, pFaultCounts must point to a VkDeviceFaultCountsEXT structure with each structure count or size member (addressInfoCount, vendorInfoCount, vendorBinarySize) set by the user to the number of elements in the corresponding output array member of pFaultInfo (pAddressInfos and pVendorInfos), 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 of pFaultInfo. Similarly, vendorBinarySize is overwritten with the number of bytes actually written to the pVendorBinaryData member of pFaultInfo.

If the vendor-specific crash dumps feature is not enabled, then implementations must set pFaultCounts->vendorBinarySize to zero and must not modify pFaultInfo->pVendorBinaryData.

If any pFaultCounts structure count member is less than the number of corresponding fault properties available, at most structure count (addressInfoCount, vendorInfoCount) elements will be written to the associated pFaultInfo output array. Similarly, if vendorBinarySize is less than the size in bytes of the available crash dump data, at most vendorBinarySize elements will be written to pVendorBinaryData.

If pFaultInfo is NULL, then subsequent calls to GetDeviceFaultInfoEXT for the same device must return identical values in the addressInfoCount, vendorInfoCount and vendorBinarySize members of pFaultCounts.

If pFaultInfo is not NULL, then subsequent calls to GetDeviceFaultInfoEXT for the same device must return identical values in the output members of pFaultInfo (pAddressInfos, pVendorInfos, pVendorBinaryData), up to the limits described by the structure count and buffer size members of pFaultCounts (addressInfoCount, vendorInfoCount, vendorBinarySize). If the sizes of the output members of pFaultInfo increase for a subsequent call to GetDeviceFaultInfoEXT, then supplementary information may be returned in the additional available space.

If any pFaultCounts structure count member is smaller than the number of corresponding fault properties available, or if pFaultCounts->vendorBinarySize is smaller than the size in bytes of the generated binary crash dump data, INCOMPLETE will be returned instead of SUCCESS, 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 to pFaultInfo->pVendorBinaryData and zero will be written to pFaultCounts->vendorBinarySize.

Valid Usage
  • device must be in the lost state
  • If the value referenced by pFaultCounts→addressInfoCount is not 0, and pFaultInfo→pAddressInfos is not NULL, pFaultInfo→pAddressInfos must be a valid pointer to an array of pFaultCounts→addressInfoCount VkDeviceFaultAddressInfoEXT structures
  • If the value referenced by pFaultCounts→vendorInfoCount is not 0, and pFaultInfo→pVendorInfos is not NULL, pFaultInfo→pVendorInfos must be a valid pointer to an array of pFaultCounts→vendorInfoCount VkDeviceFaultVendorInfoEXT structures
  • If the value referenced by pFaultCounts→vendorBinarySize is not 0, and pFaultInfo→pVendorBinaryData is not NULL, pFaultInfo→pVendorBinaryData must be a valid pointer to an array of pFaultCounts→vendorBinarySize bytes
Valid Usage (Implicit)
  • device must be a valid VkDevice handle
  • pFaultCounts must be a valid pointer to a VkDeviceFaultCountsEXT structure
  • If pFaultInfo is not NULL, pFaultInfo must be a valid pointer to a VkDeviceFaultInfoEXT structure
Return Codes
On success, this command returns
On failure, this command returns
See Also

VkDeviceFaultCountsEXT, VkDeviceFaultInfoEXT

Parameters
device:VkDevice

the logical device from which to query the diagnostic fault information.

pFaultCounts:VkDeviceFaultCountsEXT

a pointer to a VkDeviceFaultCountsEXT structure in which counts for structures describing additional fault information are returned.

pFaultInfo:VkDeviceFaultInfoEXT

NULL or a pointer to a VkDeviceFaultInfoEXT structure in which fault information is returned.

Annotations
@NativeType:VkResult