71 lines
2.7 KiB
Plaintext
71 lines
2.7 KiB
Plaintext
|
[[copies-buffer-markers]]
|
||
|
== Buffer Markers
|
||
|
|
||
|
[open,refpage='vkCmdWriteBufferMarkerAMD',desc='Execute a pipelined write of a marker value into a buffer',type='protos']
|
||
|
--
|
||
|
|
||
|
To write a 32-bit marker value into a buffer as a pipelined operation, call:
|
||
|
|
||
|
include::../../api/protos/vkCmdWriteBufferMarkerAMD.txt[]
|
||
|
|
||
|
* pname:commandBuffer is the command buffer into which the command will be
|
||
|
recorded.
|
||
|
* pname:pipelineStage is one of the elink:VkPipelineStageFlagBits values,
|
||
|
specifying the pipeline stage whose completion triggers the marker
|
||
|
write.
|
||
|
* pname:dstBuffer is the buffer where the marker will be written to.
|
||
|
* pname:dstOffset is the byte offset into the buffer where the marker will
|
||
|
be written to.
|
||
|
* pname:marker is the 32-bit value of the marker.
|
||
|
|
||
|
The command will write the 32-bit marker value into the buffer only after
|
||
|
all preceding commands have finished executing up to at least the specified
|
||
|
pipeline stage.
|
||
|
This includes the completion of other preceding
|
||
|
ename:vkCmdWriteBufferMarkerAMD commands so long as their specified pipeline
|
||
|
stages occur either at the same time or earlier than this command's
|
||
|
specified pname:pipelineStage.
|
||
|
|
||
|
While consecutive buffer marker writes with the same pname:pipelineStage
|
||
|
parameter are implicitly complete in submission order, memory and execution
|
||
|
dependencies between buffer marker writes and other operations must still be
|
||
|
explicitly ordered using synchronization commands.
|
||
|
The access scope for buffer marker writes falls under the
|
||
|
ename:VK_ACCESS_TRANSFER_WRITE_BIT, and the pipeline stages for identifying
|
||
|
the synchronization scope must: include both pname:pipelineStage and
|
||
|
ename:VK_PIPELINE_STAGE_TRANSFER_BIT.
|
||
|
|
||
|
[NOTE]
|
||
|
.Note
|
||
|
====
|
||
|
Similar to fname:vkCmdWriteTimestamp, if an implementation is unable to
|
||
|
write a marker at any specific pipeline stage, it may: instead do so at any
|
||
|
logically later stage.
|
||
|
====
|
||
|
|
||
|
[NOTE]
|
||
|
.Note
|
||
|
====
|
||
|
Implementations may: only support a limited number of pipelined marker write
|
||
|
operations in flight at a given time, thus excessive number of marker write
|
||
|
operations may: degrade command execution performance.
|
||
|
====
|
||
|
|
||
|
.Valid Usage
|
||
|
****
|
||
|
* [[VUID-vkCmdWriteBufferMarkerAMD-dstOffset-01798]]
|
||
|
pname:dstOffset must: be less than or equal to the size of
|
||
|
pname:dstBuffer minus `4`.
|
||
|
* [[VUID-vkCmdWriteBufferMarkerAMD-dstBuffer-01799]]
|
||
|
pname:dstBuffer must: have been created with
|
||
|
ename:VK_BUFFER_USAGE_TRANSFER_DST_BIT usage flag
|
||
|
* [[VUID-vkCmdWriteBufferMarkerAMD-dstBuffer-01800]]
|
||
|
If pname:dstBuffer is non-sparse then it must: be bound completely and
|
||
|
contiguously to a single sname:VkDeviceMemory object
|
||
|
* [[VUID-vkCmdWriteBufferMarkerAMD-dstOffset-01801]]
|
||
|
pname:dstOffset must: be a multiple of `4`
|
||
|
****
|
||
|
|
||
|
include::../../validity/protos/vkCmdWriteBufferMarkerAMD.txt[]
|
||
|
--
|