mirror of
https://github.com/status-im/Vulkan-Docs.git
synced 2025-02-12 06:16:49 +00:00
* Update release number to 104. Public Issues: * Remove the incorrect line from "`Initial`" to "`Invalid`" state in the <<commandbuffer-lifecycle-diagram, Lifecycle of a command buffer>> diagram (public issue 881). * Add Fuchsia platform to <<boilerplate-wsi-header-table, Window System Extensions and Headers>> table (public pull request 933). * Change the type of slink:VkBufferDeviceAddressCreateInfoEXT::pname:deviceAddress from basetype:VkDeviceSize to basetype:VkDeviceAddress. These are both typedefs of code:uint64_t, so it is an ABI-compatible change (public issue 934). Internal Issues: * Remove generated header files and update the CI tests to build a copy of the headers for use by the hpp-generate / hpp-compile CI stages. Targets to generate the headers will not be removed, but keeping these generated files in the repository increased the frequency of conflicts between branches when merging to master (internal issue 745). * Reword "`undefined: behavior if *action*" to "`must: not do *action*`" in the places the old terminology was used, and add a new <<writing-undefined, Describing Undefined Behavior>> section of the style guide to explain how to write such language in the future (internal issue 1579). * Move almost all Python scripts into the toplevel `scripts/` directory. Apply extensive internal edits to clean up and simplify the scripts, and try to follow PEP8 guidelines. Generalize the scripts with the use of a Conventions object controlling many aspects of output generation, to enable their use in other Khronos projects with similar requirements. Autogenerate extension interface refpages (these are experimental and may be retired going forward). New Extensions: * `VK_AMD_display_native_hdr` * `VK_EXT_full_screen_exclusive` (internal issue 1439) * `VK_EXT_host_query_reset` * `VK_EXT_pipeline_creation_feedback` (internal issue 1560) * `VK_KHR_surface_protected_capabilities` (internal issue 1520)
173 lines
7.4 KiB
Plaintext
173 lines
7.4 KiB
Plaintext
// Copyright (c) 2014-2019 Khronos Group. This work is licensed under a
|
|
// Creative Commons Attribution 4.0 International License; see
|
|
// http://creativecommons.org/licenses/by/4.0/
|
|
// This section is included inside the Pipelines chapter (pipelines.txt)
|
|
|
|
[[pipelines-creation-feedback]]
|
|
== Pipeline Creation Feedback
|
|
|
|
[open,refpage='VkPipelineCreationFeedbackCreateInfoEXT',desc='Request for feedback about the creation of a pipeline',type='structs',xrefs='VkGraphicsPipelineCreateInfo VkComputePipelineCreateInfo VkRayTracingPipelineCreateInfoNV VkPipelineCreationFeedbackEXT']
|
|
--
|
|
|
|
Feedback about the creation of a particular pipeline object can: be obtained
|
|
by including a sname:VkPipelineCreationFeedbackCreateInfoEXT structure in
|
|
the pNext chain of slink:VkGraphicsPipelineCreateInfo,
|
|
ifdef::VK_NV_ray_tracing[]
|
|
slink:VkRayTracingPipelineCreateInfoNV,
|
|
endif::VK_NV_ray_tracing[]
|
|
or slink:VkComputePipelineCreateInfo.
|
|
The sname:VkPipelineCreationFeedbackCreateInfoEXT structure is defined as:
|
|
|
|
include::../../api/structs/VkPipelineCreationFeedbackCreateInfoEXT.txt[]
|
|
|
|
* pname:sType is the type of this structure.
|
|
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
|
|
* pname:pPipelineCreationFeedback is a pointer to a
|
|
slink:VkPipelineCreationFeedbackEXT structure.
|
|
* pname:pipelineStageCreationFeedbackCount is the number of elements in
|
|
pname:pPipelineStageCreationFeedbacks.
|
|
* pname:pPipelineStageCreationFeedbacks is an array of size
|
|
pname:pipelineStageCreationFeedbackCount of
|
|
slink:VkPipelineCreationFeedbackEXT structures.
|
|
|
|
An implementation should: write pipeline creation feedback to
|
|
pname:pPipelineCreationFeedback and may: write pipeline stage creation
|
|
feedback to pname:pPipelineStageCreationFeedbacks.
|
|
An implementation must: set or clear the
|
|
ename:VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT in
|
|
slink:VkPipelineCreationFeedbackEXT::pname:flags for
|
|
pname:pPipelineCreationFeedback and every element of
|
|
pname:pPipelineStageCreationFeedbacks.
|
|
|
|
[NOTE]
|
|
.Note
|
|
====
|
|
One common scenario for an implementation to skip per-stage feedback is when
|
|
ename:VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT
|
|
is set in pname:pPipelineCreationFeedback.
|
|
====
|
|
|
|
When chained to
|
|
ifdef::VK_NV_ray_tracing[]
|
|
slink:VkRayTracingPipelineCreateInfoNV or
|
|
endif::VK_NV_ray_tracing[]
|
|
slink:VkGraphicsPipelineCreateInfo, the `i` element of
|
|
pname:pPipelineStageCreationFeedbacks corresponds to the `i` element of
|
|
ifdef::VK_NV_ray_tracing[]
|
|
slink:VkRayTracingPipelineCreateInfoNV::pname:pStages or
|
|
endif::VK_NV_ray_tracing[]
|
|
slink:VkGraphicsPipelineCreateInfo::pname:pStages.
|
|
When chained to slink:VkComputePipelineCreateInfo, the first element of
|
|
pname:pPipelineStageCreationFeedbacks corresponds to
|
|
slink:VkComputePipelineCreateInfo::pname:stage.
|
|
|
|
.Valid Usage
|
|
****
|
|
* [[VUID-VkPipelineCreationFeedbackCreateInfoEXT-pipelineStageCreationFeedbackCount-02668]]
|
|
When chained to slink:VkGraphicsPipelineCreateInfo,
|
|
slink:VkPipelineCreationFeedbackEXT::pname:pipelineStageCreationFeedbackCount
|
|
must: equal slink:VkGraphicsPipelineCreateInfo::pname:stageCount
|
|
* [[VUID-VkPipelineCreationFeedbackCreateInfoEXT-pipelineStageCreationFeedbackCount-02669]]
|
|
When chained to slink:VkComputePipelineCreateInfo,
|
|
slink:VkPipelineCreationFeedbackEXT::pname:pipelineStageCreationFeedbackCount
|
|
must: equal 1
|
|
ifdef::VK_NV_ray_tracing[]
|
|
* [[VUID-VkPipelineCreationFeedbackCreateInfoEXT-pipelineStageCreationFeedbackCount-02670]]
|
|
When chained to slink:VkRayTracingPipelineCreateInfoNV,
|
|
slink:VkPipelineCreationFeedbackEXT::pname:pipelineStageCreationFeedbackCount
|
|
must: equal slink:VkRayTracingPipelineCreateInfoNV::pname:stageCount
|
|
endif::VK_NV_ray_tracing[]
|
|
****
|
|
|
|
include::../../validity/structs/VkPipelineCreationFeedbackCreateInfoEXT.txt[]
|
|
--
|
|
|
|
[open,refpage='VkPipelineCreationFeedbackEXT',desc='Feedback about the creation of a pipeline or pipeline stage',type='structs',xrefs='VkPipelineCreationFeedbackCreateInfoEXT VkPipelineCreationFeedbackFlagBitsEXT']
|
|
--
|
|
|
|
The sname:VkPipelineCreationFeedbackEXT structure is defined as:
|
|
|
|
include::../../api/structs/VkPipelineCreationFeedbackEXT.txt[]
|
|
|
|
* pname:flags is a bitmask of elink:VkPipelineCreationFeedbackFlagBitsEXT
|
|
providing feedback about the creation of a pipeline or of a pipeline
|
|
stage.
|
|
* pname:duration is the duration spent creating a pipeline or pipeline
|
|
stage in nanoseconds.
|
|
|
|
If the ename:VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT is not set in
|
|
pname:flags, an implementation must: not set any other bits in pname:flags,
|
|
and all other sname:VkPipelineCreationFeedbackEXT data members are
|
|
undefined.
|
|
|
|
include::../../validity/structs/VkPipelineCreationFeedbackEXT.txt[]
|
|
--
|
|
|
|
[open,refpage='VkPipelineCreationFeedbackFlagBitsEXT',desc='Bitmask specifying pipeline or pipeline stage creation feedback',type='enums',xrefs='VkPipelineCreationFeedbackCreateInfoEXT VkPipelineCreationFeedbackEXT']
|
|
--
|
|
|
|
Possible values of the pname:flags member of
|
|
slink:VkPipelineCreationFeedbackEXT are:
|
|
|
|
include::../../api/enums/VkPipelineCreationFeedbackFlagBitsEXT.txt[]
|
|
|
|
* ename:VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT indicates that the
|
|
feedback information is valid.
|
|
* ename:VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT
|
|
indicates that a readily usable pipeline or pipeline stage was found in
|
|
the pname:pipelineCache specified by the application in the pipeline
|
|
creation command.
|
|
+
|
|
An implementation should: set the
|
|
ename:VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT
|
|
bit if it was able to avoid the large majority of pipeline or pipeline stage
|
|
creation work by using the pname:pipelineCache parameter of
|
|
flink:vkCreateGraphicsPipelines,
|
|
ifdef::VK_NV_ray_tracing[]
|
|
flink:vkCreateRayTracingPipelinesNV,
|
|
endif::VK_NV_ray_tracing[]
|
|
or flink:vkCreateComputePipelines.
|
|
When an implementation sets this bit for the entire pipeline, it may: leave
|
|
it unset for any stage.
|
|
+
|
|
[NOTE]
|
|
.Note
|
|
====
|
|
Implementations are encouraged to provide a meaningful signal to
|
|
applications using this bit.
|
|
The intention is to communicate to the application that the pipeline or
|
|
pipeline stage was created "as fast as it gets" using the pipeline cache
|
|
provided by the application.
|
|
If an implementation uses an internal cache, it is discouraged from setting
|
|
this bit as the feedback would be unactionable.
|
|
====
|
|
|
|
* ename:VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT
|
|
indicates that the base pipeline specified by the
|
|
pname:basePipelineHandle or pname:basePipelineIndex member of the
|
|
stext:Vk*PipelineCreateInfo structure was used to accelerate the
|
|
creation of the pipeline.
|
|
+
|
|
An implementation should: set the
|
|
ename:VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT bit
|
|
if it was able to avoid a significant amount of work by using the base
|
|
pipeline.
|
|
+
|
|
[NOTE]
|
|
.Note
|
|
====
|
|
While "significant amount of work" is subjective, implementations are
|
|
encouraged to provide a meaningful signal to applications using this bit.
|
|
For example, a 1% reduction in duration may not warrant setting this bit,
|
|
while a 50% reduction would.
|
|
====
|
|
--
|
|
|
|
[open,refpage='VkPipelineCreationFeedbackFlagsEXT',desc='Bitmask of VkPipelineCreationFeedbackFlagBitsEXT',type='flags',xrefs='VkPipelineCreationFeedbackEXT VkPipelineCreationFeedbackFlagBitsEXT']
|
|
--
|
|
include::../../api/flags/VkPipelineCreationFeedbackFlagsEXT.txt[]
|
|
|
|
tname:VkPipelineCreationFeedbackFlagsEXT is a bitmask type for providing
|
|
zero or more elink:VkPipelineCreationFeedbackFlagBitsEXT.
|
|
--
|