| Safe Haskell | Safe-Inferred |
|---|---|
| Language | Haskell2010 |
Vulkan.Extensions.VK_EXT_device_fault
Description
Name
VK_EXT_device_fault - device extension
VK_EXT_device_fault
- Name String
VK_EXT_device_fault
- Extension Type
- Device extension
- Registered Extension Number
- 342
- Revision
- 2
- Ratification Status
- Not ratified
- Extension and Version Dependencies
- VK_KHR_get_physical_device_properties2
- Contact
- Ralph Potter
r_potter
- Ralph 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
Description
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.
New Commands
New Structures
DeviceFaultCountsEXTDeviceFaultInfoEXTDeviceFaultVendorBinaryHeaderVersionOneEXTDeviceFaultVendorInfoEXTExtending
PhysicalDeviceFeatures2,DeviceCreateInfo:
New Enums
New Enum Constants
EXT_DEVICE_FAULT_SPEC_VERSIONExtending
StructureType:
Version History
Revision 2, 2023-04-05 (Ralph Potter)
- Restored two missing members to the XML definition of VkDeviceFaultVendorBinaryHeaderVersionOneEXT. No functional change to the specification.
Revision 1, 2020-10-19 (Ralph Potter)
- Initial revision
See Also
DeviceFaultAddressInfoEXT, DeviceFaultAddressTypeEXT,
DeviceFaultCountsEXT, DeviceFaultInfoEXT,
DeviceFaultVendorBinaryHeaderVersionEXT,
DeviceFaultVendorBinaryHeaderVersionOneEXT,
DeviceFaultVendorInfoEXT, PhysicalDeviceFaultFeaturesEXT,
getDeviceFaultInfoEXT
Document Notes
For more information, see the Vulkan Specification
This page is a generated document. Fixes and changes should be made to the generator scripts, not directly.
Synopsis
- getDeviceFaultInfoEXT :: forall io. MonadIO io => Device -> io (Result, DeviceFaultCountsEXT, DeviceFaultInfoEXT)
- data PhysicalDeviceFaultFeaturesEXT = PhysicalDeviceFaultFeaturesEXT {}
- data DeviceFaultAddressInfoEXT = DeviceFaultAddressInfoEXT {}
- data DeviceFaultVendorInfoEXT = DeviceFaultVendorInfoEXT {}
- data DeviceFaultCountsEXT = DeviceFaultCountsEXT {}
- data DeviceFaultInfoEXT = DeviceFaultInfoEXT {}
- data DeviceFaultVendorBinaryHeaderVersionOneEXT = DeviceFaultVendorBinaryHeaderVersionOneEXT {}
- newtype DeviceFaultAddressTypeEXT where
- DeviceFaultAddressTypeEXT Int32
- pattern DEVICE_FAULT_ADDRESS_TYPE_NONE_EXT :: DeviceFaultAddressTypeEXT
- pattern DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXT :: DeviceFaultAddressTypeEXT
- pattern DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_EXT :: DeviceFaultAddressTypeEXT
- pattern DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_EXT :: DeviceFaultAddressTypeEXT
- pattern DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXT :: DeviceFaultAddressTypeEXT
- pattern DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXT :: DeviceFaultAddressTypeEXT
- pattern DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXT :: DeviceFaultAddressTypeEXT
- newtype DeviceFaultVendorBinaryHeaderVersionEXT where
- type EXT_DEVICE_FAULT_SPEC_VERSION = 2
- pattern EXT_DEVICE_FAULT_SPEC_VERSION :: forall a. Integral a => a
- type EXT_DEVICE_FAULT_EXTENSION_NAME = "VK_EXT_device_fault"
- pattern EXT_DEVICE_FAULT_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
Documentation
getDeviceFaultInfoEXT Source #
Arguments
| :: forall io. MonadIO io | |
| => Device |
|
| -> io (Result, DeviceFaultCountsEXT, DeviceFaultInfoEXT) |
vkGetDeviceFaultInfoEXT - Reports diagnostic fault information on the specified logical device
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
DeviceFaultCountsEXT 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
- If the value
referenced by
pFaultCounts->addressInfoCountis not0, andpFaultInfo->pAddressInfosis notNULL,pFaultInfo->pAddressInfosmust be a valid pointer to an array ofpFaultCounts->addressInfoCountDeviceFaultAddressInfoEXTstructures - If the value
referenced by
pFaultCounts->vendorInfoCountis not0, andpFaultInfo->pVendorInfosis notNULL,pFaultInfo->pVendorInfosmust be a valid pointer to an array ofpFaultCounts->vendorInfoCountDeviceFaultVendorInfoEXTstructures - If the value
referenced by
pFaultCounts->vendorBinarySizeis not0, andpFaultInfo->pVendorBinaryDatais notNULL,pFaultInfo->pVendorBinaryDatamust be a valid pointer to an array ofpFaultCounts->vendorBinarySizebytes
Valid Usage (Implicit)
-
devicemust be a validDevicehandle
-
pFaultCountsmust be a valid pointer to aDeviceFaultCountsEXTstructure - If
pFaultInfois notNULL,pFaultInfomust be a valid pointer to aDeviceFaultInfoEXTstructure
Return Codes
See Also
VK_EXT_device_fault,
Device, DeviceFaultCountsEXT,
DeviceFaultInfoEXT
data PhysicalDeviceFaultFeaturesEXT Source #
VkPhysicalDeviceFaultFeaturesEXT - Structure indicating support for device fault reporting
Members
The members of the PhysicalDeviceFaultFeaturesEXT structure describe
the following features:
Description
If the PhysicalDeviceFaultFeaturesEXT structure is included in the
pNext chain of the
PhysicalDeviceFeatures2
structure passed to
getPhysicalDeviceFeatures2,
it is filled in to indicate whether each corresponding feature is
supported. PhysicalDeviceFaultFeaturesEXT can also be used in the
pNext chain of DeviceCreateInfo to selectively
enable these features.
Valid Usage (Implicit)
See Also
Constructors
| PhysicalDeviceFaultFeaturesEXT | |
Fields | |
Instances
data DeviceFaultAddressInfoEXT Source #
VkDeviceFaultAddressInfoEXT - Structure specifying GPU virtual address information
Description
The combination of reportedAddress and addressPrecision allow the
possible range of addresses to be calculated, such that:
lower_address = (pInfo->reportedAddress & ~(pInfo->addressPrecision-1)) upper_address = (pInfo->reportedAddress | (pInfo->addressPrecision-1))
Note
It is valid for the reportedAddress to contain a more precise address
than indicated by addressPrecision. In this case, the value of
reportedAddress should be treated as an additional hint as to the
value of the address that triggered the page fault, or to the value of
an instruction pointer.
Valid Usage (Implicit)
See Also
VK_EXT_device_fault,
DeviceAddress,
DeviceFaultAddressTypeEXT, DeviceFaultInfoEXT,
DeviceSize
Constructors
| DeviceFaultAddressInfoEXT | |
Fields
| |
Instances
data DeviceFaultVendorInfoEXT Source #
VkDeviceFaultVendorInfoEXT - Structure specifying vendor-specific fault information
See Also
Constructors
| DeviceFaultVendorInfoEXT | |
Fields
| |
Instances
data DeviceFaultCountsEXT Source #
VkDeviceFaultCountsEXT - Structure specifying device fault information
Valid Usage (Implicit)
See Also
VK_EXT_device_fault,
DeviceSize,
StructureType,
getDeviceFaultInfoEXT
Constructors
| DeviceFaultCountsEXT | |
Fields
| |
Instances
data DeviceFaultInfoEXT Source #
VkDeviceFaultInfoEXT - Structure specifying device fault information
Description
An implementation should populate as many members of
DeviceFaultInfoEXT as possible, given the information available at the
time of the fault and the constraints of the implementation itself.
Due to hardware limitations, pAddressInfos describes 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.
Note
Each element of pAddressInfos describes either:
- 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
Comparison of the GPU virtual addresses described by pAddressInfos 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)
-
sTypemust beSTRUCTURE_TYPE_DEVICE_FAULT_INFO_EXT
-
pNextmust beNULL - If
pAddressInfosis notNULL,pAddressInfosmust be a valid pointer to aDeviceFaultAddressInfoEXTstructure - If
pVendorInfosis notNULL,pVendorInfosmust be a valid pointer to aDeviceFaultVendorInfoEXTstructure
See Also
VK_EXT_device_fault,
DeviceFaultAddressInfoEXT, DeviceFaultVendorInfoEXT,
StructureType,
getDeviceFaultInfoEXT
Constructors
| DeviceFaultInfoEXT | |
Fields
| |
Instances
data DeviceFaultVendorBinaryHeaderVersionOneEXT Source #
VkDeviceFaultVendorBinaryHeaderVersionOneEXT - Structure describing the layout of the vendor binary crash dump header
Description
Unlike most structures declared by the Vulkan API, all fields of this structure are written with the least significant byte first, regardless of host byte-order.
The C language specification does not define the packing of structure members. This layout assumes tight structure member packing, with members laid out in the order listed in the structure, and the intended size of the structure is 56 bytes. If a compiler produces code that diverges from that pattern, applications must employ another method to set values at the correct offsets.
Valid Usage (Implicit)
See Also
VK_EXT_device_fault,
DeviceFaultVendorBinaryHeaderVersionEXT
Constructors
| DeviceFaultVendorBinaryHeaderVersionOneEXT | |
Fields
| |
Instances
newtype DeviceFaultAddressTypeEXT Source #
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
Constructors
| DeviceFaultAddressTypeEXT Int32 |
Bundled Patterns
Instances
newtype DeviceFaultVendorBinaryHeaderVersionEXT Source #
VkDeviceFaultVendorBinaryHeaderVersionEXT - Encode vendor binary crash dump version
See Also
VK_EXT_device_fault,
DeviceFaultVendorBinaryHeaderVersionOneEXT, getDeviceFaultInfoEXT
Constructors
| DeviceFaultVendorBinaryHeaderVersionEXT Int32 |
Bundled Patterns
| pattern DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_EXT :: DeviceFaultVendorBinaryHeaderVersionEXT |
|
Instances
type EXT_DEVICE_FAULT_SPEC_VERSION = 2 Source #
pattern EXT_DEVICE_FAULT_SPEC_VERSION :: forall a. Integral a => a Source #
type EXT_DEVICE_FAULT_EXTENSION_NAME = "VK_EXT_device_fault" Source #
pattern EXT_DEVICE_FAULT_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a Source #