mirror of
https://github.com/status-im/Vulkan-Docs.git
synced 2025-02-08 04:23:40 +00:00
279452463a
* Update release number to 92. Public Issues: * Move and modify valid usage statements dealing with pname:aspectMask in flink:vkCmdClearColorImage, flink:vkCmdClearDepthStencilImage, and slink:VkClearAttachment, so they are in places where all necessary information is available (public issue 529). * Fix math markup in <<textures-texel-anisotropic-filtering, Texel Anisotropic Filtering>> (public pull request 840). * Fix misspellings (public pull request 845). Internal Issues: * Add installation instructions and a Makefile "`chunked`" target for chunked HTML generation (internal issue 1352). * Fix pipeline mesh diagram style; also fix a minor bug in the classic pipeline diagram where vertex/index buffers wrongly fed into the vertex shader (internal issue 1436). * Make asciidoctor ERROR output raise an error, and don't suppress executed command output from CI make invocation (internal issue 1454). * Minor typo fixes and clarifications for `VK_NV_raytracing`. * Cleanup extension-specific properties ** Remove duplicated documentation for pname:maxDiscardRectangles, pname:pointClippingBehavior, and pname:maxVertexAttribDivisor (they shouldn't be documented with the other members of slink:VkPhysicalDeviceLimits at all). ** Remove duplicate anchor for pname:maxVertexAttribDivisor ** Consistently document stext:VkPhysicalDevice<Extension>PropertiesKHR *** Always document pname:sType/pname:pNext (was inconsistent before) *** Always mention chaining to slink:VkPhysicalDeviceProperties2 (and not as slink:VkPhysicalDeviceProperties2KHR) *** Always include Valid Usage statements last * Update Makefile 'checklinks' target and associated scripts, and fix markup problems identified by checkLinks.py, so that we can rely on the checklinks script as part of Gitlab CI.
95 lines
3.7 KiB
Plaintext
95 lines
3.7 KiB
Plaintext
== Device Loss Debugging
|
|
|
|
=== Device Diagnostic Checkpoints
|
|
|
|
Device execution progress can: be tracked for the purposes of debugging a
|
|
device loss by annotating the command stream with application-defined
|
|
diagnostic checkpoints.
|
|
|
|
Each diagnostic checkpoint command is executed at two pipeline stages:
|
|
ename:VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, and
|
|
ename:VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT.
|
|
If the device is lost, the application can: call
|
|
flink:vkGetQueueCheckpointDataNV to retrieve checkpoint data associated with
|
|
both pipeline stages, indicating the range of diagnostic checkpoints that
|
|
are currently in the execution pipeline on the device.
|
|
|
|
[open,refpage='vkCmdSetCheckpointNV',desc='insert diagnostic checkpoint in command stream',type='protos']
|
|
--
|
|
|
|
Device diagnostic checkpoints are inserted into the command stream by
|
|
calling flink:vkCmdSetCheckpointNV.
|
|
|
|
include::../../api/protos/vkCmdSetCheckpointNV.txt[]
|
|
|
|
* pname:commandBuffer is the command buffer that will receive the marker
|
|
* pname:pCheckpointMarker is an opaque application-provided value that
|
|
will be associated with the checkpoint.
|
|
|
|
include::../../validity/protos/vkCmdSetCheckpointNV.txt[]
|
|
--
|
|
|
|
Note that pname:pCheckpointMarker is treated as an opaque value.
|
|
It does not need to be a valid pointer and will not be dereferenced by the
|
|
implementation.
|
|
|
|
[open,refpage='vkGetQueueCheckpointDataNV',desc='retrieve diagnostic checkpoint data',type='protos']
|
|
--
|
|
|
|
If the device encounters an error during execution, the implementation will
|
|
return a ename:VK_ERROR_DEVICE_LOST error to the application at a certain
|
|
point during host execution.
|
|
When this happens, the application can: call
|
|
flink:vkGetQueueCheckpointDataNV to retrieve information on the most recent
|
|
diagnostic checkpoints that were executed by the device.
|
|
|
|
include::../../api/protos/vkGetQueueCheckpointDataNV.txt[]
|
|
|
|
* pname:queue is the slink:VkQueue object the caller would like to
|
|
retrieve checkpoint data for
|
|
* pname:pCheckpointDataCount is a pointer to an integer related to the
|
|
number of checkpoint markers available or queried, as described below.
|
|
* pname:pCheckpointData is either `NULL` or a pointer to an array of
|
|
sname:VkCheckpointDataNV structures.
|
|
|
|
If pname:pCheckpointData is `NULL`, then the number of checkpoint markers
|
|
available is returned in pname:pCheckpointDataCount.
|
|
|
|
Otherwise, pname:pCheckpointDataCount must: point to a variable set by the
|
|
user to the number of elements in the pname:pCheckpointData array, and on
|
|
return the variable is overwritten with the number of structures actually
|
|
written to pname:pCheckpointData.
|
|
|
|
If pname:pCheckpointDataCount is less than the number of checkpoint markers
|
|
available, at most pname:pCheckpointDataCount structures will be written.
|
|
|
|
.Valid Usage
|
|
****
|
|
* [[VUID-vkGetQueueCheckpointDataNV-queue-02025]]
|
|
The device that pname:queue belongs to must: be in the lost state
|
|
****
|
|
|
|
include::../../validity/protos/vkGetQueueCheckpointDataNV.txt[]
|
|
--
|
|
|
|
[open,refpage='VkCheckpointDataNV',desc='return structure for command buffer checkpoint data',type='structs']
|
|
--
|
|
The slink:VkCheckpointDataNV structure is defined as:
|
|
|
|
include::../../api/structs/VkCheckpointDataNV.txt[]
|
|
|
|
* pname:sType is the type of this structure
|
|
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
|
|
* pname:stage indicates which pipeline stage the checkpoint marker data
|
|
refers to.
|
|
* pname:pCheckpointMarker contains the value of the last checkpoint marker
|
|
executed in the stage that pname:stage refers to.
|
|
|
|
include::../../validity/structs/VkCheckpointDataNV.txt[]
|
|
|
|
Note that the stages at which a checkpoint marker can: be executed are
|
|
implementation-defined and can: be queried by calling
|
|
flink:vkGetPhysicalDeviceQueueFamilyProperties2.
|
|
|
|
--
|