Vulkan-Docs/doc/specs/vulkan/man/vkCmdCopyQueryPoolResults.txt

116 lines
4.4 KiB
Plaintext
Raw Normal View History

// Copyright (c) 2014-2016 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
2016-02-16 09:53:44 +00:00
vkCmdCopyQueryPoolResults(3)
============================
Name
----
vkCmdCopyQueryPoolResults - Copy the results of queries in a query pool to a buffer object.
C Specification
---------------
// refBegin vkCmdCopyQueryPoolResults Copy the results of queries in a query pool to a buffer object.
2016-02-16 09:53:44 +00:00
To copy query statuses and numerical results directly to buffer memory,
call:
2016-02-16 09:53:44 +00:00
include::../protos/vkCmdCopyQueryPoolResults.txt[]
2016-02-16 09:53:44 +00:00
Parameters
----------
2016-02-16 09:53:44 +00:00
* pname:commandBuffer is the command buffer into which this command will
be recorded.
* pname:queryPool is the query pool managing the queries containing the
desired results.
* pname:firstQuery is the initial query index.
* pname:queryCount is the number of queries. pname:firstQuery and
pname:queryCount together define a range of queries.
* pname:dstBuffer is a sname:VkBuffer object that will receive the results
of the copy command.
* pname:dstOffset is an offset into pname:dstBuffer.
* pname:stride is the stride in bytes between results for individual
queries within pname:dstBuffer. The required size of the backing memory
for pname:dstBuffer is determined as described above for
flink:vkGetQueryPoolResults.
* pname:flags is a bitmask of elink:VkQueryResultFlagBits specifying how
and when results are returned.
2016-02-16 09:53:44 +00:00
Description
-----------
fname:vkCmdCopyQueryPoolResults is guaranteed to see the effect of previous
uses of fname:vkCmdResetQueryPool in the same queue, without any additional
synchronization. Thus, the results will always reflect the most
recent use of the query.
pname:flags has the same possible values described above for the pname:flags
parameter of flink:vkGetQueryPoolResults, but the different style of
execution causes some subtle behavioral differences. Because
fname:vkCmdCopyQueryPoolResults executes in order with respect to other
query commands, there is less ambiguity about which use of a query is being
requested.
If no bits are set in pname:flags, results for all requested queries in the
available state are written as 32-bit unsigned integer values, and nothing
is written for queries in the unavailable state.
If ename:VK_QUERY_RESULT_64_BIT is set, the results are written as an array
of 64-bit unsigned integer values as described for
flink:vkGetQueryPoolResults.
If ename:VK_QUERY_RESULT_WAIT_BIT is set, the implementation will wait for
each query's status to be in the available state before retrieving the
numerical results for that query. This is guaranteed to reflect the most
recent use of the query on the same queue, assuming that the query is
not being simultaneously used by other queues. If the query does not become
available in a finite amount of time (e.g. due to not issuing a query
since the last reset), a ename:VK_ERROR_DEVICE_LOST error may: occur.
Similarly, if ename:VK_QUERY_RESULT_WITH_AVAILABILITY_BIT is set and
ename:VK_QUERY_RESULT_WAIT_BIT is not set, the availability is guaranteed to
reflect the most recent use of the query on the same queue, assuming
that the query is not being simultaneously used by other queues. As with
fname:vkGetQueryPoolResults, implementations must: guarantee that if they
return a non-zero availability value, then the numerical results are valid.
If ename:VK_QUERY_RESULT_PARTIAL_BIT is set, ename:VK_QUERY_RESULT_WAIT_BIT
is not set, and the query's status is unavailable, an intermediate
result value between zero and the final result value is written for that
query.
ename:VK_QUERY_RESULT_PARTIAL_BIT mustnot: be used if the pool's
pname:queryType is ename:VK_QUERY_TYPE_TIMESTAMP.
fname:vkCmdCopyQueryPoolResults is considered to be a transfer operation,
and its writes to buffer memory must: be synchronized using
ename:VK_PIPELINE_STAGE_TRANSFER_BIT and
ename:VK_ACCESS_TRANSFER_WRITE_BIT before using the results.
2016-02-16 09:53:44 +00:00
include::../validity/protos/vkCmdCopyQueryPoolResults.txt[]
See Also
--------
Change log for July 15, 2016 Vulkan 1.0.21 spec update: * Bump API patch number and header version number to 21 for this update. Github Issues: * Clarify how <<features-supported-sample-counts,sample count queries>> relate to the limits in slink:VkPhysicalDeviceLimits. (public issue 185). * Clarify in the <<interfaces-iointerfaces,Shader Input and Output Interfaces>> section that shader output variables have undefined values until the shader writes to them (public issue 240). * Specify the implicit value of image parameters that cannot be set in slink:VkSwapchainCreateInfo::pname:flags, pname:imageType, pname:mipLevels, pname:samples, pname:tiling, and pname:initialLayout (public issue 243). * Make use of code:NULL and code:VK_NULL_HANDLE consistent in the VK_KHR_swapchain extension (public issue 276). Internal Issues: * Clarify that presenting an image to a display surface swapchain applies the display surface's mode, and that destroying a display surface swapchain may reset the display's mode, in the VK_KHR_display_swapchain extension (internal issue 247). * Better describe what a slink:VkSurfaceKHR is, and that creating one does not set a mode, in the VK_KHR_display extension. This is a round-about way of pointing out that mode setting is not covered by the extension, but rather is performed as a side effect of presentation (internal issue 247). * Add more valid usage statements to flink:vkQueuePresentKHR command when the VK_KHR_display_swapchain extension is present (internal issue 247). * Add more includes to the VK_KHR_swapchain extension to better document interactions with VK_KHR_display_swapchain (internal issue 247). * Clarify restrictions on location aliasing in the <<fxvertex,Fixed-Function Vertex Processing>> section (internal issue 370). * Add mathematical description of blitting to flink:vkCmdBlitImage, and link it to the <<textures,Image Operations>> chapter. Use mathematical notation for ranges of texel coordinates in the <<textures,Image Operations>> chapter. Fixed miscellaneous validity statements for flink:vkCmdBlit and slink:VkImageBlit (internal issue 382). Other Commits: * Added a valid usage rule to flink:VkGraphicsPipelineCreateInfo that the ename:VK_PRIMITIVE_TOPOLOGY_PATCH_LIST topology must only be used when tessellation shaders are used. * Expand the style guide into a formal "Procedures and Conventions" document. Add a API Naming Conventions section, move most of the API Specification Appendix C (Layers and Extensions) content into the new document, and define the resulting procedures as mandatory (where relevant). This more clearly separates use vs. specification of Vulkan APIs. * Update vk_platform.h to handle 32-bit ARMv8 binaries. * Various minor cleanups to the Makefile and build process.
2016-07-16 02:05:43 +00:00
slink:VkBuffer, slink:VkCommandBuffer, basetype:VkDeviceSize, slink:VkQueryPool, elink:VkQueryResultFlags
Document Notes
--------------
For more information, see the Vulkan Specification at URL
https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#vkCmdCopyQueryPoolResults
This page is extracted from the Vulkan Specification.
Fixes and changes should be made to the Specification,not directly.
2016-02-16 09:53:44 +00:00
include::footer.txt[]