1e5c31af7Sopenharmony_ci// Copyright 2015-2024 The Khronos Group Inc. 2e5c31af7Sopenharmony_ci// 3e5c31af7Sopenharmony_ci// SPDX-License-Identifier: CC-BY-4.0 4e5c31af7Sopenharmony_ci 5e5c31af7Sopenharmony_ci[[pipelines]] 6e5c31af7Sopenharmony_ci= Pipelines 7e5c31af7Sopenharmony_ci 8e5c31af7Sopenharmony_ciThe following <<pipelines-block-diagram,figure>> shows a block diagram of 9e5c31af7Sopenharmony_cithe Vulkan pipelines. 10e5c31af7Sopenharmony_ciSome Vulkan commands specify geometric objects to be drawn or computational 11e5c31af7Sopenharmony_ciwork to be performed, while others specify state controlling how objects are 12e5c31af7Sopenharmony_cihandled by the various pipeline stages, or control data transfer between 13e5c31af7Sopenharmony_cimemory organized as images and buffers. 14e5c31af7Sopenharmony_ciCommands are effectively sent through a processing pipeline, either a 15e5c31af7Sopenharmony_ci_graphics pipeline_, 16e5c31af7Sopenharmony_ciifdef::VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline[] 17e5c31af7Sopenharmony_cia _ray tracing pipeline_, 18e5c31af7Sopenharmony_ciendif::VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline[] 19e5c31af7Sopenharmony_cior a _compute pipeline_. 20e5c31af7Sopenharmony_ci 21e5c31af7Sopenharmony_ciifdef::VK_NV_mesh_shader,VK_EXT_mesh_shader[] 22e5c31af7Sopenharmony_ciThe graphics pipeline can be operated in two modes, as either _primitive 23e5c31af7Sopenharmony_cishading_ or _mesh shading_ pipeline. 24e5c31af7Sopenharmony_ci 25e5c31af7Sopenharmony_ci*Primitive Shading* 26e5c31af7Sopenharmony_ci 27e5c31af7Sopenharmony_ciendif::VK_NV_mesh_shader,VK_EXT_mesh_shader[] 28e5c31af7Sopenharmony_ci 29e5c31af7Sopenharmony_ciThe first stage of the <<pipelines-graphics,graphics pipeline>> 30e5c31af7Sopenharmony_ci(<<drawing,Input Assembler>>) assembles vertices to form geometric 31e5c31af7Sopenharmony_ciprimitives such as points, lines, and triangles, based on a requested 32e5c31af7Sopenharmony_ciprimitive topology. 33e5c31af7Sopenharmony_ciIn the next stage (<<shaders-vertex,Vertex Shader>>) vertices can: be 34e5c31af7Sopenharmony_citransformed, computing positions and attributes for each vertex. 35e5c31af7Sopenharmony_ciIf <<tessellation,tessellation>> and/or <<geometry,geometry>> shaders are 36e5c31af7Sopenharmony_cisupported, they can: then generate multiple primitives from a single input 37e5c31af7Sopenharmony_ciprimitive, possibly changing the primitive topology or generating additional 38e5c31af7Sopenharmony_ciattribute data in the process. 39e5c31af7Sopenharmony_ci 40e5c31af7Sopenharmony_ciifdef::VK_HUAWEI_cluster_culling_shader[] 41e5c31af7Sopenharmony_ci*Cluster Culling Shading* 42e5c31af7Sopenharmony_ci 43e5c31af7Sopenharmony_ciWhen using the Cluster Culling Shader, a compute-like shader will perform 44e5c31af7Sopenharmony_cicluster-based culling, a set of new built-in output variables are used to 45e5c31af7Sopenharmony_ciexpress visible cluster, in addition, a new built-in function is used to 46e5c31af7Sopenharmony_ciemit these variables from the cluster culling shader to the Input 47e5c31af7Sopenharmony_ciAssembler(IA) stage, then IA can use these variables to fetches vertices of 48e5c31af7Sopenharmony_civisible cluster and drive vertex shader to work. 49e5c31af7Sopenharmony_ci 50e5c31af7Sopenharmony_ciendif::VK_HUAWEI_cluster_culling_shader[] 51e5c31af7Sopenharmony_ci 52e5c31af7Sopenharmony_ciifdef::VK_NV_mesh_shader,VK_EXT_mesh_shader[] 53e5c31af7Sopenharmony_ci*Mesh Shading* 54e5c31af7Sopenharmony_ci 55e5c31af7Sopenharmony_ciWhen using the <<mesh,_mesh shading_>> pipeline input primitives are not 56e5c31af7Sopenharmony_ciassembled implicitly, but explicitly through the (<<shaders-mesh,Mesh 57e5c31af7Sopenharmony_ciShader>>). 58e5c31af7Sopenharmony_ciThe work on the mesh pipeline is initiated by the application 59e5c31af7Sopenharmony_ci<<drawing-mesh-shading,drawing>> a set of mesh tasks. 60e5c31af7Sopenharmony_ci 61e5c31af7Sopenharmony_ciIf an optional (<<shaders-task,Task Shader>>) is active, each task triggers 62e5c31af7Sopenharmony_cithe execution of a task shader workgroup that will generate a new set of 63e5c31af7Sopenharmony_citasks upon completion. 64e5c31af7Sopenharmony_ciEach of these spawned tasks, or each of the original dispatched tasks if no 65e5c31af7Sopenharmony_citask shader is present, triggers the execution of a mesh shader workgroup 66e5c31af7Sopenharmony_cithat produces an output mesh with a variable-sized number of primitives 67e5c31af7Sopenharmony_ciassembled from vertices stored in the output mesh. 68e5c31af7Sopenharmony_ci 69e5c31af7Sopenharmony_ci*Common* 70e5c31af7Sopenharmony_ciendif::VK_NV_mesh_shader,VK_EXT_mesh_shader[] 71e5c31af7Sopenharmony_ci 72e5c31af7Sopenharmony_ciThe final resulting primitives are <<vertexpostproc-clipping,clipped>> to a 73e5c31af7Sopenharmony_ciclip volume in preparation for the next stage, <<primsrast,Rasterization>>. 74e5c31af7Sopenharmony_ciThe rasterizer produces a series of _fragments_ associated with a region of 75e5c31af7Sopenharmony_cithe framebuffer, from a two-dimensional description of a point, line 76e5c31af7Sopenharmony_cisegment, or triangle. 77e5c31af7Sopenharmony_ciThese fragments are processed by <<fragops,fragment operations>> to 78e5c31af7Sopenharmony_cidetermine whether generated values will be written to the framebuffer. 79e5c31af7Sopenharmony_ci<<fragops-shader, Fragment shading>> determines the values to be written to 80e5c31af7Sopenharmony_cithe framebuffer attachments. 81e5c31af7Sopenharmony_ciFramebuffer operations then read and write the color and depth/stencil 82e5c31af7Sopenharmony_ciattachments of the framebuffer for a given subpass of a <<renderpass,render 83e5c31af7Sopenharmony_cipass instance>>. 84e5c31af7Sopenharmony_ciThe attachments can: be used as input attachments in the fragment shader in 85e5c31af7Sopenharmony_cia later subpass of the same render pass. 86e5c31af7Sopenharmony_ci 87e5c31af7Sopenharmony_ciThe <<pipelines-compute,compute pipeline>> is a separate pipeline from the 88e5c31af7Sopenharmony_cigraphics pipeline, which operates on one-, two-, or three-dimensional 89e5c31af7Sopenharmony_ciworkgroups which can: read from and write to buffer and image memory. 90e5c31af7Sopenharmony_ci 91e5c31af7Sopenharmony_ciThis ordering is meant only as a tool for describing Vulkan, not as a strict 92e5c31af7Sopenharmony_cirule of how Vulkan is implemented, and we present it only as a means to 93e5c31af7Sopenharmony_ciorganize the various operations of the pipelines. 94e5c31af7Sopenharmony_ciActual ordering guarantees between pipeline stages are explained in detail 95e5c31af7Sopenharmony_ciin the <<synchronization-pipeline-stages-order, synchronization chapter>>. 96e5c31af7Sopenharmony_ci 97e5c31af7Sopenharmony_ci[[pipelines-block-diagram]] 98e5c31af7Sopenharmony_ciifndef::VK_NV_mesh_shader,VK_EXT_mesh_shader[] 99e5c31af7Sopenharmony_ciimage::{images}/pipeline.svg[title="Block diagram of the Vulkan pipeline",align="center",opts="{imageopts}"] 100e5c31af7Sopenharmony_ciendif::VK_NV_mesh_shader,VK_EXT_mesh_shader[] 101e5c31af7Sopenharmony_ciifdef::VK_NV_mesh_shader,VK_EXT_mesh_shader[] 102e5c31af7Sopenharmony_ciimage::{images}/pipelinemesh.svg[title="Block diagram of the Vulkan pipeline",align="center",opts="{imageopts}"] 103e5c31af7Sopenharmony_ciendif::VK_NV_mesh_shader,VK_EXT_mesh_shader[] 104e5c31af7Sopenharmony_ci 105e5c31af7Sopenharmony_ciEach pipeline is controlled by a monolithic object created from a 106e5c31af7Sopenharmony_cidescription of all of the shader stages and any relevant fixed-function 107e5c31af7Sopenharmony_cistages. 108e5c31af7Sopenharmony_ci<<interfaces,Linking>> the whole pipeline together allows the optimization 109e5c31af7Sopenharmony_ciof shaders based on their input/outputs and eliminates expensive draw time 110e5c31af7Sopenharmony_cistate validation. 111e5c31af7Sopenharmony_ci 112e5c31af7Sopenharmony_ciA pipeline object is bound to the current state using 113e5c31af7Sopenharmony_ciflink:vkCmdBindPipeline. 114e5c31af7Sopenharmony_ciAny pipeline object state that is specified as <<pipelines-dynamic-state, 115e5c31af7Sopenharmony_cidynamic>> is not applied to the current state when the pipeline object is 116e5c31af7Sopenharmony_cibound, but is instead set by dynamic state setting commands. 117e5c31af7Sopenharmony_ci 118e5c31af7Sopenharmony_ciNo state, including dynamic state, is inherited from one command buffer to 119e5c31af7Sopenharmony_cianother. 120e5c31af7Sopenharmony_ci 121e5c31af7Sopenharmony_ci 122e5c31af7Sopenharmony_ci[open,refpage='VkPipeline',desc='Opaque handle to a pipeline object',type='handles'] 123e5c31af7Sopenharmony_ci-- 124e5c31af7Sopenharmony_ciCompute, 125e5c31af7Sopenharmony_ciifdef::VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline[] 126e5c31af7Sopenharmony_ciray tracing, 127e5c31af7Sopenharmony_ciendif::VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline[] 128e5c31af7Sopenharmony_ciand graphics pipelines are each represented by sname:VkPipeline handles: 129e5c31af7Sopenharmony_ci 130e5c31af7Sopenharmony_ciinclude::{generated}/api/handles/VkPipeline.adoc[] 131e5c31af7Sopenharmony_ci-- 132e5c31af7Sopenharmony_ci 133e5c31af7Sopenharmony_ci 134e5c31af7Sopenharmony_ci[[pipelines-multiple]] 135e5c31af7Sopenharmony_ci== Multiple Pipeline Creation 136e5c31af7Sopenharmony_ci 137e5c31af7Sopenharmony_ciMultiple pipelines can: be created in a single call by commands such as 138e5c31af7Sopenharmony_ciifdef::VK_AMDX_shader_enqueue[flink:vkCreateExecutionGraphPipelinesAMDX,] 139e5c31af7Sopenharmony_ciifdef::VK_KHR_ray_tracing_pipeline[flink:vkCreateRayTracingPipelinesKHR,] 140e5c31af7Sopenharmony_ciifdef::VK_NV_ray_tracing[flink:vkCreateRayTracingPipelinesNV,] 141e5c31af7Sopenharmony_ciflink:vkCreateComputePipelines, and flink:vkCreateGraphicsPipelines. 142e5c31af7Sopenharmony_ci 143e5c31af7Sopenharmony_ciThe creation commands are passed an array pname:pCreateInfos of 144e5c31af7Sopenharmony_cistext:Vk*PipelineCreateInfo structures specifying parameters of each 145e5c31af7Sopenharmony_cipipeline to be created, and return a corresponding array of handles in 146e5c31af7Sopenharmony_cipname:pPipelines. 147e5c31af7Sopenharmony_ciEach element index _i_ of pname:pPipelines is created based on the 148e5c31af7Sopenharmony_cicorresponding element _i_ of pname:pCreateInfos. 149e5c31af7Sopenharmony_ci 150e5c31af7Sopenharmony_ciApplications can: group together similar pipelines to be created in a single 151e5c31af7Sopenharmony_cicall, and implementations are encouraged to look for reuse opportunities 152e5c31af7Sopenharmony_ciwhen creating a group. 153e5c31af7Sopenharmony_ci 154e5c31af7Sopenharmony_ciWhen attempting to create many pipelines in a single command, it is possible 155e5c31af7Sopenharmony_cithat creation may: fail for a subset of them. 156e5c31af7Sopenharmony_ciIn this case, the corresponding elements of pname:pPipelines will be set to 157e5c31af7Sopenharmony_cidlink:VK_NULL_HANDLE. 158e5c31af7Sopenharmony_ciIf creation fails for a pipeline despite valid arguments (for example, due 159e5c31af7Sopenharmony_cito out of memory errors), the elink:VkResult code returned by the pipeline 160e5c31af7Sopenharmony_cicreation command will indicate why. 161e5c31af7Sopenharmony_ciThe implementation will attempt to create all pipelines, and only return 162e5c31af7Sopenharmony_cidlink:VK_NULL_HANDLE values for those that actually failed. 163e5c31af7Sopenharmony_ci 164e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control[] 165e5c31af7Sopenharmony_ciIf creation fails for a pipeline that has the 166e5c31af7Sopenharmony_ciename:VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT set in its 167e5c31af7Sopenharmony_cistext:Vk*PipelineCreateInfo, pipelines at an index in the pname:pPipelines 168e5c31af7Sopenharmony_ciarray greater than or equal to that of the failing pipeline will be set to 169e5c31af7Sopenharmony_cidlink:VK_NULL_HANDLE. 170e5c31af7Sopenharmony_ciendif::VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control[] 171e5c31af7Sopenharmony_ci 172e5c31af7Sopenharmony_ciIf creation fails for multiple pipelines, the returned elink:VkResult must: 173e5c31af7Sopenharmony_cibe the return value of any one of the pipelines which did not succeed. 174e5c31af7Sopenharmony_ciAn application can: reliably clean up from a failed call by iterating over 175e5c31af7Sopenharmony_cithe pname:pPipelines array and destroying every element that is not 176e5c31af7Sopenharmony_cidlink:VK_NULL_HANDLE. 177e5c31af7Sopenharmony_ci 178e5c31af7Sopenharmony_ciIf the entire command fails and no pipelines are created, all elements of 179e5c31af7Sopenharmony_cipname:pPipelines will be set to dlink:VK_NULL_HANDLE. 180e5c31af7Sopenharmony_ci 181e5c31af7Sopenharmony_ci 182e5c31af7Sopenharmony_ci[[pipelines-compute]] 183e5c31af7Sopenharmony_ci== Compute Pipelines 184e5c31af7Sopenharmony_ci 185e5c31af7Sopenharmony_ciCompute pipelines consist of a single static compute shader stage and the 186e5c31af7Sopenharmony_cipipeline layout. 187e5c31af7Sopenharmony_ci 188e5c31af7Sopenharmony_ciThe compute pipeline represents a compute shader and is created by calling 189e5c31af7Sopenharmony_cifname:vkCreateComputePipelines 190e5c31af7Sopenharmony_ciifndef::VKSC_VERSION_1_0[] 191e5c31af7Sopenharmony_ciwith pname:module and pname:pName selecting an entry point from a shader 192e5c31af7Sopenharmony_cimodule, where that entry point defines a valid compute shader, in the 193e5c31af7Sopenharmony_cislink:VkPipelineShaderStageCreateInfo structure contained within the 194e5c31af7Sopenharmony_cislink:VkComputePipelineCreateInfo structure. 195e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 196e5c31af7Sopenharmony_ciifdef::VKSC_VERSION_1_0[] 197e5c31af7Sopenharmony_ciwith an offline compiled pipeline provided in pname:pipelineCache and the 198e5c31af7Sopenharmony_cipipeline identified by slink:VkPipelineOfflineCreateInfo structure in the 199e5c31af7Sopenharmony_cipname:pNext chain of slink:VkComputePipelineCreateInfo structure. 200e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 201e5c31af7Sopenharmony_ci 202e5c31af7Sopenharmony_ci 203e5c31af7Sopenharmony_ci[open,refpage='vkCreateComputePipelines',desc='Creates a new compute pipeline object',type='protos'] 204e5c31af7Sopenharmony_ci-- 205e5c31af7Sopenharmony_ci:refpage: vkCreateComputePipelines 206e5c31af7Sopenharmony_ci:objectnameplural: compute pipelines 207e5c31af7Sopenharmony_ci:objectnamecamelcase: computePipeline 208e5c31af7Sopenharmony_ci:objectcount: pname:createInfoCount 209e5c31af7Sopenharmony_ci 210e5c31af7Sopenharmony_ciTo create compute pipelines, call: 211e5c31af7Sopenharmony_ci 212e5c31af7Sopenharmony_ciinclude::{generated}/api/protos/vkCreateComputePipelines.adoc[] 213e5c31af7Sopenharmony_ci 214e5c31af7Sopenharmony_ci * pname:device is the logical device that creates the compute pipelines. 215e5c31af7Sopenharmony_ciifndef::VKSC_VERSION_1_0[] 216e5c31af7Sopenharmony_ci * pname:pipelineCache is either dlink:VK_NULL_HANDLE, indicating that 217e5c31af7Sopenharmony_ci pipeline caching is disabled; or the handle of a valid 218e5c31af7Sopenharmony_ci <<pipelines-cache,pipeline cache>> object, in which case use of that 219e5c31af7Sopenharmony_ci cache is enabled for the duration of the command. 220e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 221e5c31af7Sopenharmony_ciifdef::VKSC_VERSION_1_0[] 222e5c31af7Sopenharmony_ci * pname:pipelineCache is the handle of a valid <<pipelines-cache,pipeline 223e5c31af7Sopenharmony_ci cache>> object. 224e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 225e5c31af7Sopenharmony_ci * pname:createInfoCount is the length of the pname:pCreateInfos and 226e5c31af7Sopenharmony_ci pname:pPipelines arrays. 227e5c31af7Sopenharmony_ci * pname:pCreateInfos is a pointer to an array of 228e5c31af7Sopenharmony_ci slink:VkComputePipelineCreateInfo structures. 229e5c31af7Sopenharmony_ci * pname:pAllocator controls host memory allocation as described in the 230e5c31af7Sopenharmony_ci <<memory-allocation, Memory Allocation>> chapter. 231e5c31af7Sopenharmony_ci * pname:pPipelines is a pointer to an array of slink:VkPipeline handles in 232e5c31af7Sopenharmony_ci which the resulting compute pipeline objects are returned. 233e5c31af7Sopenharmony_ci 234e5c31af7Sopenharmony_ciPipelines are created and returned as described for <<pipelines-multiple, 235e5c31af7Sopenharmony_ciMultiple Pipeline Creation>>. 236e5c31af7Sopenharmony_ci 237e5c31af7Sopenharmony_ciifdef::VKSC_VERSION_1_0[] 238e5c31af7Sopenharmony_ciIf a pipeline creation fails due to: 239e5c31af7Sopenharmony_ci 240e5c31af7Sopenharmony_ci * The identified pipeline not being present in pname:pipelineCache 241e5c31af7Sopenharmony_ci * The pname:pNext chain not including a slink:VkPipelineOfflineCreateInfo 242e5c31af7Sopenharmony_ci structure 243e5c31af7Sopenharmony_ci 244e5c31af7Sopenharmony_cithe operation will continue as specified in <<pipelines-multiple, Multiple 245e5c31af7Sopenharmony_ciPipeline Creation>> and the command will return 246e5c31af7Sopenharmony_ciename:VK_ERROR_NO_PIPELINE_MATCH. 247e5c31af7Sopenharmony_ciifdef::hidden[] 248e5c31af7Sopenharmony_ci// tag::scdeviation[] 249e5c31af7Sopenharmony_ci * flink:vkCreateComputePipelines returns ename:VK_ERROR_NO_PIPELINE_MATCH 250e5c31af7Sopenharmony_ci if the slink:VkComputePipelineCreateInfo::pname:pNext chain does not 251e5c31af7Sopenharmony_ci include a valid slink:VkPipelineOfflineCreateInfo structure <<SCID-1>>. 252e5c31af7Sopenharmony_ci// end::scdeviation[] 253e5c31af7Sopenharmony_ciendif::hidden[] 254e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 255e5c31af7Sopenharmony_ci 256e5c31af7Sopenharmony_ciinclude::{chapters}/commonvalidity/no_dynamic_allocations_common.adoc[] 257e5c31af7Sopenharmony_ci 258e5c31af7Sopenharmony_ci.Valid Usage 259e5c31af7Sopenharmony_ci**** 260e5c31af7Sopenharmony_ciifndef::VKSC_VERSION_1_0[] 261e5c31af7Sopenharmony_ci * [[VUID-vkCreateComputePipelines-flags-00695]] 262e5c31af7Sopenharmony_ci If the pname:flags member of any element of pname:pCreateInfos contains 263e5c31af7Sopenharmony_ci the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and the 264e5c31af7Sopenharmony_ci pname:basePipelineIndex member of that same element is not `-1`, 265e5c31af7Sopenharmony_ci pname:basePipelineIndex must: be less than the index into 266e5c31af7Sopenharmony_ci pname:pCreateInfos that corresponds to that element 267e5c31af7Sopenharmony_ci * [[VUID-vkCreateComputePipelines-flags-00696]] 268e5c31af7Sopenharmony_ci If the pname:flags member of any element of pname:pCreateInfos contains 269e5c31af7Sopenharmony_ci the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, the base pipeline 270e5c31af7Sopenharmony_ci must: have been created with the 271e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT flag set 272e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 273e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control[] 274e5c31af7Sopenharmony_ci * [[VUID-vkCreateComputePipelines-pipelineCache-02873]] 275e5c31af7Sopenharmony_ci If pname:pipelineCache was created with 276e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT, host access 277e5c31af7Sopenharmony_ci to pname:pipelineCache must: be 278e5c31af7Sopenharmony_ci <<fundamentals-threadingbehavior,externally synchronized>> 279e5c31af7Sopenharmony_ciendif::VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control[] 280e5c31af7Sopenharmony_ciinclude::{chapters}/commonvalidity/memory_reservation_request_count_common.adoc[] 281e5c31af7Sopenharmony_ci**** 282e5c31af7Sopenharmony_ciifdef::VKSC_VERSION_1_0[] 283e5c31af7Sopenharmony_ciifdef::hidden[] 284e5c31af7Sopenharmony_ci// tag::scdeviation[] 285e5c31af7Sopenharmony_ci * flink:vkCreateComputePipelines::pname:pipelineCache must: not be 286e5c31af7Sopenharmony_ci dlink:VK_NULL_HANDLE <<SCID-1>>, <<SCID-8>>. 287e5c31af7Sopenharmony_ci// end::scdeviation[] 288e5c31af7Sopenharmony_ciendif::hidden[] 289e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 290e5c31af7Sopenharmony_ci 291e5c31af7Sopenharmony_ciinclude::{generated}/validity/protos/vkCreateComputePipelines.adoc[] 292e5c31af7Sopenharmony_ci-- 293e5c31af7Sopenharmony_ci 294e5c31af7Sopenharmony_ci[open,refpage='VkComputePipelineCreateInfo',desc='Structure specifying parameters of a newly created compute pipeline',type='structs'] 295e5c31af7Sopenharmony_ci-- 296e5c31af7Sopenharmony_ci:refpage: VkComputePipelineCreateInfo 297e5c31af7Sopenharmony_ci 298e5c31af7Sopenharmony_ciThe sname:VkComputePipelineCreateInfo structure is defined as: 299e5c31af7Sopenharmony_ci 300e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkComputePipelineCreateInfo.adoc[] 301e5c31af7Sopenharmony_ci 302e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 303e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or a pointer to a structure extending this 304e5c31af7Sopenharmony_ci structure. 305e5c31af7Sopenharmony_ci * pname:flags is a bitmask of elink:VkPipelineCreateFlagBits specifying 306e5c31af7Sopenharmony_ci how the pipeline will be generated. 307e5c31af7Sopenharmony_ci * pname:stage is a slink:VkPipelineShaderStageCreateInfo structure 308e5c31af7Sopenharmony_ci describing the compute shader. 309e5c31af7Sopenharmony_ci * pname:layout is the description of binding locations used by both the 310e5c31af7Sopenharmony_ci pipeline and descriptor sets used with the pipeline. 311e5c31af7Sopenharmony_ci * pname:basePipelineHandle is a pipeline to derive from. 312e5c31af7Sopenharmony_ciifdef::VKSC_VERSION_1_0[] 313e5c31af7Sopenharmony_ci This is not used in Vulkan SC <<SCID-8>>. 314e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 315e5c31af7Sopenharmony_ci * pname:basePipelineIndex is an index into the pname:pCreateInfos 316e5c31af7Sopenharmony_ci parameter to use as a pipeline to derive from. 317e5c31af7Sopenharmony_ciifdef::VKSC_VERSION_1_0[] 318e5c31af7Sopenharmony_ci This is not used in Vulkan SC <<SCID-8>>. 319e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 320e5c31af7Sopenharmony_ci 321e5c31af7Sopenharmony_ciThe parameters pname:basePipelineHandle and pname:basePipelineIndex are 322e5c31af7Sopenharmony_cidescribed in more detail in <<pipelines-pipeline-derivatives,Pipeline 323e5c31af7Sopenharmony_ciDerivatives>>. 324e5c31af7Sopenharmony_ci 325e5c31af7Sopenharmony_ciifdef::VK_KHR_maintenance5[] 326e5c31af7Sopenharmony_ciIf a slink:VkPipelineCreateFlags2CreateInfoKHR structure is present in the 327e5c31af7Sopenharmony_cipname:pNext chain, slink:VkPipelineCreateFlags2CreateInfoKHR::pname:flags 328e5c31af7Sopenharmony_cifrom that structure is used instead of pname:flags from this structure. 329e5c31af7Sopenharmony_ciendif::VK_KHR_maintenance5[] 330e5c31af7Sopenharmony_ci 331e5c31af7Sopenharmony_ci.Valid Usage 332e5c31af7Sopenharmony_ci**** 333e5c31af7Sopenharmony_ci:pipelineType: compute 334e5c31af7Sopenharmony_ciinclude::{chapters}/commonvalidity/pipeline_create_info_common.adoc[] 335e5c31af7Sopenharmony_ciinclude::{chapters}/commonvalidity/compute_graph_pipeline_create_info_common.adoc[] 336e5c31af7Sopenharmony_ci * [[VUID-VkComputePipelineCreateInfo-stage-00701]] 337e5c31af7Sopenharmony_ci The pname:stage member of pname:stage must: be 338e5c31af7Sopenharmony_ci ename:VK_SHADER_STAGE_COMPUTE_BIT 339e5c31af7Sopenharmony_ci * [[VUID-VkComputePipelineCreateInfo-stage-00702]] 340e5c31af7Sopenharmony_ci The shader code for the entry point identified by pname:stage and the 341e5c31af7Sopenharmony_ci rest of the state identified by this structure must: adhere to the 342e5c31af7Sopenharmony_ci pipeline linking rules described in the <<interfaces,Shader Interfaces>> 343e5c31af7Sopenharmony_ci chapter 344e5c31af7Sopenharmony_ci * [[VUID-VkComputePipelineCreateInfo-layout-01687]] 345e5c31af7Sopenharmony_ci The number of resources in pname:layout accessible to the compute shader 346e5c31af7Sopenharmony_ci stage must: be less than or equal to 347e5c31af7Sopenharmony_ci sname:VkPhysicalDeviceLimits::pname:maxPerStageResources 348e5c31af7Sopenharmony_ciifdef::VK_KHR_pipeline_library[] 349e5c31af7Sopenharmony_ci * [[VUID-VkComputePipelineCreateInfo-shaderEnqueue-09177]] 350e5c31af7Sopenharmony_ciifdef::VK_AMDX_shader_enqueue[] 351e5c31af7Sopenharmony_ci If <<features-shaderEnqueue,pname:shaderEnqueue>> is not enabled, 352e5c31af7Sopenharmony_ciendif::VK_AMDX_shader_enqueue[] 353e5c31af7Sopenharmony_ci pname:flags must: not include ename:VK_PIPELINE_CREATE_LIBRARY_BIT_KHR 354e5c31af7Sopenharmony_ciifdef::VK_AMDX_shader_enqueue[] 355e5c31af7Sopenharmony_ci * [[VUID-VkComputePipelineCreateInfo-flags-09178]] 356e5c31af7Sopenharmony_ci If pname:flags does not include 357e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_LIBRARY_BIT_KHR, the shader specified by 358e5c31af7Sopenharmony_ci pname:stage must: not declare the code:ShaderEnqueueAMDX capability 359e5c31af7Sopenharmony_ciendif::VK_AMDX_shader_enqueue[] 360e5c31af7Sopenharmony_ciendif::VK_KHR_pipeline_library[] 361e5c31af7Sopenharmony_ciifdef::VK_EXT_pipeline_creation_feedback,VK_VERSION_1_3[] 362e5c31af7Sopenharmony_ci * [[VUID-VkComputePipelineCreateInfo-pipelineStageCreationFeedbackCount-06566]] 363e5c31af7Sopenharmony_ci If 364e5c31af7Sopenharmony_ci slink:VkPipelineCreationFeedbackCreateInfo::pname:pipelineStageCreationFeedbackCount 365e5c31af7Sopenharmony_ci is not `0`, it must: be `1` 366e5c31af7Sopenharmony_ciendif::VK_EXT_pipeline_creation_feedback,VK_VERSION_1_3[] 367e5c31af7Sopenharmony_ciifdef::VK_EXT_opacity_micromap[] 368e5c31af7Sopenharmony_ci * [[VUID-VkComputePipelineCreateInfo-flags-07367]] 369e5c31af7Sopenharmony_ci pname:flags must: not include 370e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT 371e5c31af7Sopenharmony_ciendif::VK_EXT_opacity_micromap[] 372e5c31af7Sopenharmony_ciifdef::VK_NV_displacement_micromap[] 373e5c31af7Sopenharmony_ci * [[VUID-VkComputePipelineCreateInfo-flags-07996]] 374e5c31af7Sopenharmony_ci pname:flags must: not include 375e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV 376e5c31af7Sopenharmony_ciendif::VK_NV_displacement_micromap[] 377e5c31af7Sopenharmony_ci**** 378e5c31af7Sopenharmony_ciifdef::VKSC_VERSION_1_0[] 379e5c31af7Sopenharmony_ciifdef::hidden[] 380e5c31af7Sopenharmony_ci// tag::scdeviation[] 381e5c31af7Sopenharmony_ci * slink:VkComputePipelineCreateInfo::pname:basePipelineHandle must: be 382e5c31af7Sopenharmony_ci dlink:VK_NULL_HANDLE <<SCID-8>>. 383e5c31af7Sopenharmony_ci * slink:VkComputePipelineCreateInfo::pname:basePipelineIndex must: be zero 384e5c31af7Sopenharmony_ci <<SCID-8>>. 385e5c31af7Sopenharmony_ci// end::scdeviation[] 386e5c31af7Sopenharmony_ciendif::hidden[] 387e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 388e5c31af7Sopenharmony_ci 389e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkComputePipelineCreateInfo.adoc[] 390e5c31af7Sopenharmony_ci-- 391e5c31af7Sopenharmony_ci 392e5c31af7Sopenharmony_ci[open,refpage='VkPipelineShaderStageCreateInfo',desc='Structure specifying parameters of a newly created pipeline shader stage',type='structs'] 393e5c31af7Sopenharmony_ci-- 394e5c31af7Sopenharmony_ciThe sname:VkPipelineShaderStageCreateInfo structure is defined as: 395e5c31af7Sopenharmony_ci 396e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkPipelineShaderStageCreateInfo.adoc[] 397e5c31af7Sopenharmony_ci 398e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 399e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or a pointer to a structure extending this 400e5c31af7Sopenharmony_ci structure. 401e5c31af7Sopenharmony_ci * pname:flags is a bitmask of elink:VkPipelineShaderStageCreateFlagBits 402e5c31af7Sopenharmony_ci specifying how the pipeline shader stage will be generated. 403e5c31af7Sopenharmony_ci * pname:stage is a elink:VkShaderStageFlagBits value specifying a single 404e5c31af7Sopenharmony_ci pipeline stage. 405e5c31af7Sopenharmony_ciifdef::VK_EXT_graphics_pipeline_library,VK_EXT_shader_module_identifier,VK_KHR_maintenance5[] 406e5c31af7Sopenharmony_ci * pname:module is optionally a slink:VkShaderModule object containing the 407e5c31af7Sopenharmony_ci shader code for this stage. 408e5c31af7Sopenharmony_ciendif::VK_EXT_graphics_pipeline_library,VK_EXT_shader_module_identifier,VK_KHR_maintenance5[] 409e5c31af7Sopenharmony_ciifndef::VK_EXT_graphics_pipeline_library,VK_EXT_shader_module_identifier,VK_KHR_maintenance5[] 410e5c31af7Sopenharmony_ci * pname:module is a slink:VkShaderModule object containing the shader code 411e5c31af7Sopenharmony_ci for this stage. 412e5c31af7Sopenharmony_ciendif::VK_EXT_graphics_pipeline_library,VK_EXT_shader_module_identifier,VK_KHR_maintenance5[] 413e5c31af7Sopenharmony_ciifdef::VKSC_VERSION_1_0[] 414e5c31af7Sopenharmony_ci This is not used in Vulkan SC <<SCID-8>>. 415e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 416e5c31af7Sopenharmony_ci * pname:pName is a pointer to a null-terminated UTF-8 string specifying 417e5c31af7Sopenharmony_ci the entry point name of the shader for this stage. 418e5c31af7Sopenharmony_ci * pname:pSpecializationInfo is a pointer to a slink:VkSpecializationInfo 419e5c31af7Sopenharmony_ci structure, as described in 420e5c31af7Sopenharmony_ci <<pipelines-specialization-constants,Specialization Constants>>, or 421e5c31af7Sopenharmony_ci `NULL`. 422e5c31af7Sopenharmony_ci 423e5c31af7Sopenharmony_ciifdef::VKSC_VERSION_1_0[] 424e5c31af7Sopenharmony_ciIn Vulkan SC, the pipeline compilation process occurs 425e5c31af7Sopenharmony_ci<<pipelines-offline-compilation,offline>>. 426e5c31af7Sopenharmony_ciAccordingly, pname:module must: be dlink:VK_NULL_HANDLE, and the pname:pName 427e5c31af7Sopenharmony_ciand pname:pSpecializationInfo parameters are not used at runtime and should: 428e5c31af7Sopenharmony_cibe ignored by the implementation. 429e5c31af7Sopenharmony_ciIf provided, the application must: set the pname:pName and 430e5c31af7Sopenharmony_cipname:pSpecializationInfo parameters to the values that were specified for 431e5c31af7Sopenharmony_cithe offline compilation of this pipeline. 432e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 433e5c31af7Sopenharmony_ci 434e5c31af7Sopenharmony_ciifndef::VKSC_VERSION_1_0[] 435e5c31af7Sopenharmony_ciifdef::VK_EXT_graphics_pipeline_library,VK_KHR_maintenance5[] 436e5c31af7Sopenharmony_ciIf pname:module is not dlink:VK_NULL_HANDLE, the shader code used by the 437e5c31af7Sopenharmony_cipipeline is defined by pname:module. 438e5c31af7Sopenharmony_ciIf pname:module is dlink:VK_NULL_HANDLE, the shader code is defined by the 439e5c31af7Sopenharmony_cichained slink:VkShaderModuleCreateInfo if present. 440e5c31af7Sopenharmony_ciendif::VK_EXT_graphics_pipeline_library,VK_KHR_maintenance5[] 441e5c31af7Sopenharmony_ciifndef::VK_EXT_graphics_pipeline_library,VK_KHR_maintenance5[] 442e5c31af7Sopenharmony_ciThe shader code used by the pipeline is defined by pname:module. 443e5c31af7Sopenharmony_ciendif::VK_EXT_graphics_pipeline_library,VK_KHR_maintenance5[] 444e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 445e5c31af7Sopenharmony_ci 446e5c31af7Sopenharmony_ciifdef::VK_EXT_shader_module_identifier[] 447e5c31af7Sopenharmony_ciIf the <<features-shaderModuleIdentifier, pname:shaderModuleIdentifier>> 448e5c31af7Sopenharmony_cifeature is enabled, applications can: omit shader code for pname:stage and 449e5c31af7Sopenharmony_ciinstead provide a module identifier. 450e5c31af7Sopenharmony_ciThis is done by including a 451e5c31af7Sopenharmony_cislink:VkPipelineShaderStageModuleIdentifierCreateInfoEXT struct with 452e5c31af7Sopenharmony_cipname:identifierSize not equal to 0 in the pname:pNext chain. 453e5c31af7Sopenharmony_ciA shader stage created in this way is equivalent to one created using a 454e5c31af7Sopenharmony_cishader module with the same identifier. 455e5c31af7Sopenharmony_ciThe identifier allows an implementation to look up a pipeline without 456e5c31af7Sopenharmony_ciconsuming a valid SPIR-V module. 457e5c31af7Sopenharmony_ciIf a pipeline is not found, pipeline compilation is not possible and the 458e5c31af7Sopenharmony_ciimplementation must: fail as specified by 459e5c31af7Sopenharmony_ciename:VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT. 460e5c31af7Sopenharmony_ci 461e5c31af7Sopenharmony_ciWhen an identifier is used in lieu of a shader module, implementations may: 462e5c31af7Sopenharmony_cifail pipeline compilation with ename:VK_PIPELINE_COMPILE_REQUIRED for any 463e5c31af7Sopenharmony_cireason. 464e5c31af7Sopenharmony_ci 465e5c31af7Sopenharmony_ci[NOTE] 466e5c31af7Sopenharmony_ci.Note 467e5c31af7Sopenharmony_ci==== 468e5c31af7Sopenharmony_ciThe rationale for the relaxed requirement on implementations to return a 469e5c31af7Sopenharmony_cipipeline with slink:VkPipelineShaderStageModuleIdentifierCreateInfoEXT is 470e5c31af7Sopenharmony_cithat layers or tools may intercept pipeline creation calls and require the 471e5c31af7Sopenharmony_cifull SPIR-V context to operate correctly. 472e5c31af7Sopenharmony_ciICDs are not expected to fail pipeline compilation if the pipeline exists in 473e5c31af7Sopenharmony_cia cache somewhere. 474e5c31af7Sopenharmony_ci==== 475e5c31af7Sopenharmony_ci 476e5c31af7Sopenharmony_ciifdef::VK_KHR_pipeline_library[] 477e5c31af7Sopenharmony_ciApplications can: use identifiers when creating pipelines with 478e5c31af7Sopenharmony_ciename:VK_PIPELINE_CREATE_LIBRARY_BIT_KHR. 479e5c31af7Sopenharmony_ciWhen creating such pipelines, ename:VK_SUCCESS may: be returned, but 480e5c31af7Sopenharmony_cisubsequently fail when referencing the pipeline in a 481e5c31af7Sopenharmony_cislink:VkPipelineLibraryCreateInfoKHR struct. 482e5c31af7Sopenharmony_ciApplications must: allow pipeline compilation to fail during link steps with 483e5c31af7Sopenharmony_ciename:VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT as it may: 484e5c31af7Sopenharmony_cinot be possible to determine if a pipeline can: be created from identifiers 485e5c31af7Sopenharmony_ciuntil the link step. 486e5c31af7Sopenharmony_ciendif::VK_KHR_pipeline_library[] 487e5c31af7Sopenharmony_ciendif::VK_EXT_shader_module_identifier[] 488e5c31af7Sopenharmony_ci 489e5c31af7Sopenharmony_ci.Valid Usage 490e5c31af7Sopenharmony_ci**** 491e5c31af7Sopenharmony_ci * [[VUID-VkPipelineShaderStageCreateInfo-stage-00704]] 492e5c31af7Sopenharmony_ci If the <<features-geometryShader, pname:geometryShader>> feature is not 493e5c31af7Sopenharmony_ci enabled, pname:stage must: not be ename:VK_SHADER_STAGE_GEOMETRY_BIT 494e5c31af7Sopenharmony_ci * [[VUID-VkPipelineShaderStageCreateInfo-stage-00705]] 495e5c31af7Sopenharmony_ci If the <<features-tessellationShader, pname:tessellationShader>> feature 496e5c31af7Sopenharmony_ci is not enabled, pname:stage must: not be 497e5c31af7Sopenharmony_ci ename:VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT or 498e5c31af7Sopenharmony_ci ename:VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT 499e5c31af7Sopenharmony_ciifdef::VK_NV_mesh_shader,VK_EXT_mesh_shader[] 500e5c31af7Sopenharmony_ci * [[VUID-VkPipelineShaderStageCreateInfo-stage-02091]] 501e5c31af7Sopenharmony_ci If the <<features-meshShader, pname:meshShaders>> feature is not 502e5c31af7Sopenharmony_ci enabled, pname:stage must: not be ename:VK_SHADER_STAGE_MESH_BIT_EXT 503e5c31af7Sopenharmony_ci * [[VUID-VkPipelineShaderStageCreateInfo-stage-02092]] 504e5c31af7Sopenharmony_ci If the <<features-taskShader, pname:taskShaders>> feature is not 505e5c31af7Sopenharmony_ci enabled, pname:stage must: not be ename:VK_SHADER_STAGE_TASK_BIT_EXT 506e5c31af7Sopenharmony_ciendif::VK_NV_mesh_shader,VK_EXT_mesh_shader[] 507e5c31af7Sopenharmony_ci 508e5c31af7Sopenharmony_ciifdef::VK_HUAWEI_cluster_culling_shader[] 509e5c31af7Sopenharmony_ci * [[VUID-VkPipelineShaderStageCreateInfo-clustercullingShader-07813]] 510e5c31af7Sopenharmony_ci If the <<features-clustercullingShader, pname:clustercullingShader>> 511e5c31af7Sopenharmony_ci feature is not enabled, pname:stage must: not be 512e5c31af7Sopenharmony_ci ename:VK_SHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI 513e5c31af7Sopenharmony_ciendif::VK_HUAWEI_cluster_culling_shader[] 514e5c31af7Sopenharmony_ci * [[VUID-VkPipelineShaderStageCreateInfo-stage-00706]] 515e5c31af7Sopenharmony_ci pname:stage must: not be ename:VK_SHADER_STAGE_ALL_GRAPHICS, or 516e5c31af7Sopenharmony_ci ename:VK_SHADER_STAGE_ALL 517e5c31af7Sopenharmony_ciifdef::VKSC_VERSION_1_0[] 518e5c31af7Sopenharmony_ci * [[VUID-VkPipelineShaderStageCreateInfo-module-05026]] 519e5c31af7Sopenharmony_ci pname:module must: be dlink:VK_NULL_HANDLE. 520e5c31af7Sopenharmony_ci * [[VUID-VkPipelineShaderStageCreateInfo-pName-05027]] 521e5c31af7Sopenharmony_ci If pname:pName is not `NULL`, it must: be the name of an 522e5c31af7Sopenharmony_ci code:OpEntryPoint in the SPIR-V shader module used for offline 523e5c31af7Sopenharmony_ci compilation of this pipeline with an execution model that matches 524e5c31af7Sopenharmony_ci pname:stage 525e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 526e5c31af7Sopenharmony_ciifndef::VKSC_VERSION_1_0[] 527e5c31af7Sopenharmony_ci * [[VUID-VkPipelineShaderStageCreateInfo-pName-00707]] 528e5c31af7Sopenharmony_ci pname:pName must: be the name of an code:OpEntryPoint in pname:module 529e5c31af7Sopenharmony_ci with an execution model that matches pname:stage 530e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 531e5c31af7Sopenharmony_ci * [[VUID-VkPipelineShaderStageCreateInfo-maxClipDistances-00708]] 532e5c31af7Sopenharmony_ci If the identified entry point includes any variable in its interface 533e5c31af7Sopenharmony_ci that is declared with the code:ClipDistance code:BuiltIn decoration, 534e5c31af7Sopenharmony_ci that variable must: not have an array size greater than 535e5c31af7Sopenharmony_ci sname:VkPhysicalDeviceLimits::pname:maxClipDistances 536e5c31af7Sopenharmony_ci * [[VUID-VkPipelineShaderStageCreateInfo-maxCullDistances-00709]] 537e5c31af7Sopenharmony_ci If the identified entry point includes any variable in its interface 538e5c31af7Sopenharmony_ci that is declared with the code:CullDistance code:BuiltIn decoration, 539e5c31af7Sopenharmony_ci that variable must: not have an array size greater than 540e5c31af7Sopenharmony_ci sname:VkPhysicalDeviceLimits::pname:maxCullDistances 541e5c31af7Sopenharmony_ci * [[VUID-VkPipelineShaderStageCreateInfo-maxCombinedClipAndCullDistances-00710]] 542e5c31af7Sopenharmony_ci If the identified entry point includes any variables in its interface 543e5c31af7Sopenharmony_ci that are declared with the code:ClipDistance or code:CullDistance 544e5c31af7Sopenharmony_ci code:BuiltIn decoration, those variables must: not have array sizes 545e5c31af7Sopenharmony_ci which sum to more than 546e5c31af7Sopenharmony_ci sname:VkPhysicalDeviceLimits::pname:maxCombinedClipAndCullDistances 547e5c31af7Sopenharmony_ci * [[VUID-VkPipelineShaderStageCreateInfo-maxSampleMaskWords-00711]] 548e5c31af7Sopenharmony_ci If the identified entry point includes any variable in its interface 549e5c31af7Sopenharmony_ci that is declared with the code:SampleMask code:BuiltIn decoration, that 550e5c31af7Sopenharmony_ci variable must: not have an array size greater than 551e5c31af7Sopenharmony_ci sname:VkPhysicalDeviceLimits::pname:maxSampleMaskWords 552e5c31af7Sopenharmony_ci * [[VUID-VkPipelineShaderStageCreateInfo-stage-00713]] 553e5c31af7Sopenharmony_ci If pname:stage is ename:VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT or 554e5c31af7Sopenharmony_ci ename:VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT, and the identified 555e5c31af7Sopenharmony_ci entry point has an code:OpExecutionMode instruction specifying a patch 556e5c31af7Sopenharmony_ci size with code:OutputVertices, the patch size must: be greater than `0` 557e5c31af7Sopenharmony_ci and less than or equal to 558e5c31af7Sopenharmony_ci sname:VkPhysicalDeviceLimits::pname:maxTessellationPatchSize 559e5c31af7Sopenharmony_ci * [[VUID-VkPipelineShaderStageCreateInfo-stage-00714]] 560e5c31af7Sopenharmony_ci If pname:stage is ename:VK_SHADER_STAGE_GEOMETRY_BIT, the identified 561e5c31af7Sopenharmony_ci entry point must: have an code:OpExecutionMode instruction specifying a 562e5c31af7Sopenharmony_ci maximum output vertex count that is greater than `0` and less than or 563e5c31af7Sopenharmony_ci equal to sname:VkPhysicalDeviceLimits::pname:maxGeometryOutputVertices 564e5c31af7Sopenharmony_ci * [[VUID-VkPipelineShaderStageCreateInfo-stage-00715]] 565e5c31af7Sopenharmony_ci If pname:stage is ename:VK_SHADER_STAGE_GEOMETRY_BIT, the identified 566e5c31af7Sopenharmony_ci entry point must: have an code:OpExecutionMode instruction specifying an 567e5c31af7Sopenharmony_ci invocation count that is greater than `0` and less than or equal to 568e5c31af7Sopenharmony_ci sname:VkPhysicalDeviceLimits::pname:maxGeometryShaderInvocations 569e5c31af7Sopenharmony_ci * [[VUID-VkPipelineShaderStageCreateInfo-stage-02596]] 570e5c31af7Sopenharmony_ci If pname:stage is either ename:VK_SHADER_STAGE_VERTEX_BIT, 571e5c31af7Sopenharmony_ci ename:VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT, 572e5c31af7Sopenharmony_ci ename:VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT, or 573e5c31af7Sopenharmony_ci ename:VK_SHADER_STAGE_GEOMETRY_BIT, and the identified entry point 574e5c31af7Sopenharmony_ci writes to code:Layer for any primitive, it must: write the same value to 575e5c31af7Sopenharmony_ci code:Layer for all vertices of a given primitive 576e5c31af7Sopenharmony_ci * [[VUID-VkPipelineShaderStageCreateInfo-stage-02597]] 577e5c31af7Sopenharmony_ci If pname:stage is either ename:VK_SHADER_STAGE_VERTEX_BIT, 578e5c31af7Sopenharmony_ci ename:VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT, 579e5c31af7Sopenharmony_ci ename:VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT, or 580e5c31af7Sopenharmony_ci ename:VK_SHADER_STAGE_GEOMETRY_BIT, and the identified entry point 581e5c31af7Sopenharmony_ci writes to code:ViewportIndex for any primitive, it must: write the same 582e5c31af7Sopenharmony_ci value to code:ViewportIndex for all vertices of a given primitive 583e5c31af7Sopenharmony_ci * [[VUID-VkPipelineShaderStageCreateInfo-stage-06685]] 584e5c31af7Sopenharmony_ci If pname:stage is ename:VK_SHADER_STAGE_FRAGMENT_BIT, and the identified 585e5c31af7Sopenharmony_ci entry point writes to code:FragDepth in any execution path, all 586e5c31af7Sopenharmony_ci execution paths that are not exclusive to helper invocations must: 587e5c31af7Sopenharmony_ci either discard the fragment, or write or initialize the value of 588e5c31af7Sopenharmony_ci code:FragDepth 589e5c31af7Sopenharmony_ciifdef::VK_EXT_shader_stencil_export[] 590e5c31af7Sopenharmony_ci * [[VUID-VkPipelineShaderStageCreateInfo-stage-06686]] 591e5c31af7Sopenharmony_ci If pname:stage is ename:VK_SHADER_STAGE_FRAGMENT_BIT, and the identified 592e5c31af7Sopenharmony_ci entry point writes to code:FragStencilRefEXT in any execution path, all 593e5c31af7Sopenharmony_ci execution paths that are not exclusive to helper invocations must: 594e5c31af7Sopenharmony_ci either discard the fragment, or write or initialize the value of 595e5c31af7Sopenharmony_ci code:FragStencilRefEXT 596e5c31af7Sopenharmony_ciendif::VK_EXT_shader_stencil_export[] 597e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_3,VK_EXT_subgroup_size_control[] 598e5c31af7Sopenharmony_ci * [[VUID-VkPipelineShaderStageCreateInfo-flags-02784]] 599e5c31af7Sopenharmony_ci If pname:flags has the 600e5c31af7Sopenharmony_ci ename:VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT 601e5c31af7Sopenharmony_ci flag set, the <<features-subgroupSizeControl, 602e5c31af7Sopenharmony_ci pname:subgroupSizeControl>> feature must: be enabled 603e5c31af7Sopenharmony_ci * [[VUID-VkPipelineShaderStageCreateInfo-flags-02785]] 604e5c31af7Sopenharmony_ci If pname:flags has the 605e5c31af7Sopenharmony_ci ename:VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT flag 606e5c31af7Sopenharmony_ci set, the <<features-computeFullSubgroups, pname:computeFullSubgroups>> 607e5c31af7Sopenharmony_ci feature must: be enabled 608e5c31af7Sopenharmony_ci * [[VUID-VkPipelineShaderStageCreateInfo-flags-08988]] 609e5c31af7Sopenharmony_ci If pname:flags includes 610e5c31af7Sopenharmony_ci ename:VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT, 611e5c31af7Sopenharmony_ci pname:stage must: be 612e5c31af7Sopenharmony_ciifdef::VK_NV_mesh_shader,VK_EXT_mesh_shader[] 613e5c31af7Sopenharmony_ci one of ename:VK_SHADER_STAGE_MESH_BIT_EXT, 614e5c31af7Sopenharmony_ci ename:VK_SHADER_STAGE_TASK_BIT_EXT, or 615e5c31af7Sopenharmony_ciendif::VK_NV_mesh_shader,VK_EXT_mesh_shader[] 616e5c31af7Sopenharmony_ci ename:VK_SHADER_STAGE_COMPUTE_BIT 617e5c31af7Sopenharmony_ci * [[VUID-VkPipelineShaderStageCreateInfo-pNext-02754]] 618e5c31af7Sopenharmony_ci If a slink:VkPipelineShaderStageRequiredSubgroupSizeCreateInfo structure 619e5c31af7Sopenharmony_ci is included in the pname:pNext chain, pname:flags must: not have the 620e5c31af7Sopenharmony_ci ename:VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT 621e5c31af7Sopenharmony_ci flag set 622e5c31af7Sopenharmony_ci * [[VUID-VkPipelineShaderStageCreateInfo-pNext-02755]] 623e5c31af7Sopenharmony_ci If a slink:VkPipelineShaderStageRequiredSubgroupSizeCreateInfo structure 624e5c31af7Sopenharmony_ci is included in the pname:pNext chain, the 625e5c31af7Sopenharmony_ci <<features-subgroupSizeControl, pname:subgroupSizeControl>> feature 626e5c31af7Sopenharmony_ci must: be enabled, and pname:stage must: be a valid bit specified in 627e5c31af7Sopenharmony_ci <<limits-requiredSubgroupSizeStages, pname:requiredSubgroupSizeStages>> 628e5c31af7Sopenharmony_ci * [[VUID-VkPipelineShaderStageCreateInfo-pNext-02756]] 629e5c31af7Sopenharmony_ci If a slink:VkPipelineShaderStageRequiredSubgroupSizeCreateInfo structure 630e5c31af7Sopenharmony_ci is included in the pname:pNext chain and pname:stage is 631e5c31af7Sopenharmony_ci ename:VK_SHADER_STAGE_COMPUTE_BIT, 632e5c31af7Sopenharmony_ciifdef::VK_NV_mesh_shader,VK_EXT_mesh_shader[ename:VK_SHADER_STAGE_MESH_BIT_EXT, or ename:VK_SHADER_STAGE_TASK_BIT_EXT,] 633e5c31af7Sopenharmony_ci the local workgroup size of the shader must: be less than or equal to 634e5c31af7Sopenharmony_ci the product of 635e5c31af7Sopenharmony_ci slink:VkPipelineShaderStageRequiredSubgroupSizeCreateInfo::pname:requiredSubgroupSize 636e5c31af7Sopenharmony_ci and <<limits-maxComputeWorkgroupSubgroups, 637e5c31af7Sopenharmony_ci pname:maxComputeWorkgroupSubgroups>> 638e5c31af7Sopenharmony_ci * [[VUID-VkPipelineShaderStageCreateInfo-pNext-02757]] 639e5c31af7Sopenharmony_ci If a slink:VkPipelineShaderStageRequiredSubgroupSizeCreateInfo structure 640e5c31af7Sopenharmony_ci is included in the pname:pNext chain, and pname:flags has the 641e5c31af7Sopenharmony_ci ename:VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT flag 642e5c31af7Sopenharmony_ci set, the local workgroup size in the X dimension of the pipeline must: 643e5c31af7Sopenharmony_ci be a multiple of 644e5c31af7Sopenharmony_ci slink:VkPipelineShaderStageRequiredSubgroupSizeCreateInfo::pname:requiredSubgroupSize 645e5c31af7Sopenharmony_ci * [[VUID-VkPipelineShaderStageCreateInfo-flags-02758]] 646e5c31af7Sopenharmony_ci If pname:flags has both the 647e5c31af7Sopenharmony_ci ename:VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT and 648e5c31af7Sopenharmony_ci ename:VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT 649e5c31af7Sopenharmony_ci flags set, the local workgroup size in the X dimension of the pipeline 650e5c31af7Sopenharmony_ci must: be a multiple of <<limits-maxSubgroupSize, pname:maxSubgroupSize>> 651e5c31af7Sopenharmony_ci * [[VUID-VkPipelineShaderStageCreateInfo-flags-02759]] 652e5c31af7Sopenharmony_ci If pname:flags has the 653e5c31af7Sopenharmony_ci ename:VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT flag 654e5c31af7Sopenharmony_ci set and pname:flags does not have the 655e5c31af7Sopenharmony_ci ename:VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT 656e5c31af7Sopenharmony_ci flag set and no 657e5c31af7Sopenharmony_ci slink:VkPipelineShaderStageRequiredSubgroupSizeCreateInfo structure is 658e5c31af7Sopenharmony_ci included in the pname:pNext chain, the local workgroup size in the X 659e5c31af7Sopenharmony_ci dimension of the pipeline must: be a multiple of <<limits-subgroup-size, 660e5c31af7Sopenharmony_ci pname:subgroupSize>> 661e5c31af7Sopenharmony_ciifdef::VK_KHR_cooperative_matrix[] 662e5c31af7Sopenharmony_ci * [[VUID-VkPipelineShaderStageCreateInfo-module-08987]] 663e5c31af7Sopenharmony_ci If pname:module uses the code:OpTypeCooperativeMatrixKHR instruction 664e5c31af7Sopenharmony_ci with a code:Scope equal to code:Subgroup, then the local workgroup size 665e5c31af7Sopenharmony_ci in the X dimension of the pipeline must: be a multiple of 666e5c31af7Sopenharmony_ci <<limits-subgroup-size,pname:subgroupSize>>. 667e5c31af7Sopenharmony_ciendif::VK_KHR_cooperative_matrix[] 668e5c31af7Sopenharmony_ciendif::VK_VERSION_1_3,VK_EXT_subgroup_size_control[] 669e5c31af7Sopenharmony_ci 670e5c31af7Sopenharmony_ciifndef::VKSC_VERSION_1_0[] 671e5c31af7Sopenharmony_ci * [[VUID-VkPipelineShaderStageCreateInfo-stage-08771]] 672e5c31af7Sopenharmony_ciifdef::VK_EXT_shader_module_identifier[] 673e5c31af7Sopenharmony_ci If a shader module identifier is not specified for this pname:stage, 674e5c31af7Sopenharmony_ciendif::VK_EXT_shader_module_identifier[] 675e5c31af7Sopenharmony_ci pname:module must: be a valid slink:VkShaderModule 676e5c31af7Sopenharmony_ciifdef::VK_EXT_graphics_pipeline_library,VK_KHR_maintenance5[] 677e5c31af7Sopenharmony_ci if none of the following features are enabled: 678e5c31af7Sopenharmony_ciifdef::VK_EXT_graphics_pipeline_library[] 679e5c31af7Sopenharmony_ci ** <<features-graphicsPipelineLibrary, pname:graphicsPipelineLibrary>> 680e5c31af7Sopenharmony_ciendif::VK_EXT_graphics_pipeline_library[] 681e5c31af7Sopenharmony_ciifdef::VK_KHR_maintenance5[] 682e5c31af7Sopenharmony_ci ** <<features-maintenance5, pname:maintenance5>> 683e5c31af7Sopenharmony_ciendif::VK_KHR_maintenance5[] 684e5c31af7Sopenharmony_ciendif::VK_EXT_graphics_pipeline_library,VK_KHR_maintenance5[] 685e5c31af7Sopenharmony_ci 686e5c31af7Sopenharmony_ciifdef::VK_EXT_graphics_pipeline_library,VK_KHR_maintenance5[] 687e5c31af7Sopenharmony_ci * [[VUID-VkPipelineShaderStageCreateInfo-stage-06845]] 688e5c31af7Sopenharmony_ciifdef::VK_EXT_shader_module_identifier[] 689e5c31af7Sopenharmony_ci If a shader module identifier is not specified for this pname:stage, 690e5c31af7Sopenharmony_ci pname:module must: be a valid slink:VkShaderModule, or 691e5c31af7Sopenharmony_ciendif::VK_EXT_shader_module_identifier[] 692e5c31af7Sopenharmony_ciifndef::VK_EXT_shader_module_identifier[] 693e5c31af7Sopenharmony_ci If pname:module is dlink:VK_NULL_HANDLE] 694e5c31af7Sopenharmony_ciendif::VK_EXT_shader_module_identifier[] 695e5c31af7Sopenharmony_ci there must: be a valid slink:VkShaderModuleCreateInfo structure in the 696e5c31af7Sopenharmony_ci pname:pNext chain 697e5c31af7Sopenharmony_ciendif::VK_EXT_graphics_pipeline_library,VK_KHR_maintenance5[] 698e5c31af7Sopenharmony_ci 699e5c31af7Sopenharmony_ciifdef::VK_EXT_shader_module_identifier[] 700e5c31af7Sopenharmony_ciifdef::VK_EXT_graphics_pipeline_library,VK_KHR_maintenance5[] 701e5c31af7Sopenharmony_ci * [[VUID-VkPipelineShaderStageCreateInfo-stage-06844]] 702e5c31af7Sopenharmony_ci If a shader module identifier is specified for this pname:stage, a 703e5c31af7Sopenharmony_ci slink:VkShaderModuleCreateInfo structure must: not be present in the 704e5c31af7Sopenharmony_ci pname:pNext chain 705e5c31af7Sopenharmony_ciendif::VK_EXT_graphics_pipeline_library,VK_KHR_maintenance5[] 706e5c31af7Sopenharmony_ci * [[VUID-VkPipelineShaderStageCreateInfo-stage-06848]] 707e5c31af7Sopenharmony_ci If a shader module identifier is specified for this pname:stage, 708e5c31af7Sopenharmony_ci pname:module must: be dlink:VK_NULL_HANDLE 709e5c31af7Sopenharmony_ciendif::VK_EXT_shader_module_identifier[] 710e5c31af7Sopenharmony_ci * [[VUID-VkPipelineShaderStageCreateInfo-pSpecializationInfo-06849]] 711e5c31af7Sopenharmony_ciifdef::VK_EXT_shader_module_identifier[] 712e5c31af7Sopenharmony_ci If a shader module identifier is not specified, the 713e5c31af7Sopenharmony_ciendif::VK_EXT_shader_module_identifier[] 714e5c31af7Sopenharmony_ciifndef::VK_EXT_shader_module_identifier[The] 715e5c31af7Sopenharmony_ci shader code used by the pipeline must: be valid as described by the 716e5c31af7Sopenharmony_ci <<spirv-spec,Khronos SPIR-V Specification>> after applying the 717e5c31af7Sopenharmony_ci specializations provided in pname:pSpecializationInfo, if any, and then 718e5c31af7Sopenharmony_ci converting all specialization constants into fixed constants 719e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 720e5c31af7Sopenharmony_ci**** 721e5c31af7Sopenharmony_ci 722e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkPipelineShaderStageCreateInfo.adoc[] 723e5c31af7Sopenharmony_ci-- 724e5c31af7Sopenharmony_ci 725e5c31af7Sopenharmony_ci[open,refpage='VkPipelineShaderStageCreateFlags',desc='Bitmask of VkPipelineShaderStageCreateFlagBits',type='flags'] 726e5c31af7Sopenharmony_ci-- 727e5c31af7Sopenharmony_ciinclude::{generated}/api/flags/VkPipelineShaderStageCreateFlags.adoc[] 728e5c31af7Sopenharmony_ci 729e5c31af7Sopenharmony_citname:VkPipelineShaderStageCreateFlags is a bitmask type for setting a mask 730e5c31af7Sopenharmony_ciof zero or more elink:VkPipelineShaderStageCreateFlagBits. 731e5c31af7Sopenharmony_ci-- 732e5c31af7Sopenharmony_ci 733e5c31af7Sopenharmony_ci[open,refpage='VkPipelineShaderStageCreateFlagBits',desc='Bitmask controlling how a pipeline shader stage is created',type='enums'] 734e5c31af7Sopenharmony_ci-- 735e5c31af7Sopenharmony_ciPossible values of the pname:flags member of 736e5c31af7Sopenharmony_cislink:VkPipelineShaderStageCreateInfo specifying how a pipeline shader stage 737e5c31af7Sopenharmony_ciis created, are: 738e5c31af7Sopenharmony_ci 739e5c31af7Sopenharmony_ciinclude::{generated}/api/enums/VkPipelineShaderStageCreateFlagBits.adoc[] 740e5c31af7Sopenharmony_ci 741e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_3,VK_EXT_subgroup_size_control[] 742e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT 743e5c31af7Sopenharmony_ci specifies that the 744e5c31af7Sopenharmony_ci <<interfaces-builtin-variables-sgs,code:SubgroupSize>> may: vary in the 745e5c31af7Sopenharmony_ci shader stage. 746e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT 747e5c31af7Sopenharmony_ci specifies that the subgroup sizes must: be launched with all invocations 748e5c31af7Sopenharmony_ci active in the 749e5c31af7Sopenharmony_ciifdef::VK_NV_mesh_shader,VK_EXT_mesh_shader[task, mesh, or] 750e5c31af7Sopenharmony_ci compute stage. 751e5c31af7Sopenharmony_ci 752e5c31af7Sopenharmony_ci[NOTE] 753e5c31af7Sopenharmony_ci.Note 754e5c31af7Sopenharmony_ci==== 755e5c31af7Sopenharmony_ciIf ename:VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT 756e5c31af7Sopenharmony_ciand ename:VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT are 757e5c31af7Sopenharmony_cispecified and <<limits-minSubgroupSize, pname:minSubgroupSize>> does not 758e5c31af7Sopenharmony_ciequal <<limits-maxSubgroupSize, pname:maxSubgroupSize>> and no 759e5c31af7Sopenharmony_ci<<pipelines-required-subgroup-size, required subgroup size>> is specified, 760e5c31af7Sopenharmony_cithen the only way to guarantee that the 'X' dimension of the local workgroup 761e5c31af7Sopenharmony_cisize is a multiple of <<interfaces-builtin-variables-sgs, 762e5c31af7Sopenharmony_cicode:SubgroupSize>> is to make it a multiple of pname:maxSubgroupSize. 763e5c31af7Sopenharmony_ciUnder these conditions, you are guaranteed full subgroups but not any 764e5c31af7Sopenharmony_ciparticular subgroup size. 765e5c31af7Sopenharmony_ci==== 766e5c31af7Sopenharmony_ci 767e5c31af7Sopenharmony_ciendif::VK_VERSION_1_3,VK_EXT_subgroup_size_control[] 768e5c31af7Sopenharmony_ci-- 769e5c31af7Sopenharmony_ci 770e5c31af7Sopenharmony_ci[open,refpage='VkShaderStageFlagBits',desc='Bitmask specifying a pipeline stage',type='enums'] 771e5c31af7Sopenharmony_ci-- 772e5c31af7Sopenharmony_ciBits which can: be set by commands and structures, specifying one or more 773e5c31af7Sopenharmony_cishader stages, are: 774e5c31af7Sopenharmony_ci 775e5c31af7Sopenharmony_ciinclude::{generated}/api/enums/VkShaderStageFlagBits.adoc[] 776e5c31af7Sopenharmony_ci 777e5c31af7Sopenharmony_ci * ename:VK_SHADER_STAGE_VERTEX_BIT specifies the vertex stage. 778e5c31af7Sopenharmony_ci * ename:VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT specifies the 779e5c31af7Sopenharmony_ci tessellation control stage. 780e5c31af7Sopenharmony_ci * ename:VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT specifies the 781e5c31af7Sopenharmony_ci tessellation evaluation stage. 782e5c31af7Sopenharmony_ci * ename:VK_SHADER_STAGE_GEOMETRY_BIT specifies the geometry stage. 783e5c31af7Sopenharmony_ci * ename:VK_SHADER_STAGE_FRAGMENT_BIT specifies the fragment stage. 784e5c31af7Sopenharmony_ci * ename:VK_SHADER_STAGE_COMPUTE_BIT specifies the compute stage. 785e5c31af7Sopenharmony_ci * ename:VK_SHADER_STAGE_ALL_GRAPHICS is a combination of bits used as 786e5c31af7Sopenharmony_ci shorthand to specify all graphics stages defined above (excluding the 787e5c31af7Sopenharmony_ci compute stage). 788e5c31af7Sopenharmony_ci * ename:VK_SHADER_STAGE_ALL is a combination of bits used as shorthand to 789e5c31af7Sopenharmony_ci specify all shader stages supported by the device, including all 790e5c31af7Sopenharmony_ci additional stages which are introduced by extensions. 791e5c31af7Sopenharmony_ciifdef::VK_NV_mesh_shader,VK_EXT_mesh_shader[] 792e5c31af7Sopenharmony_ci * ename:VK_SHADER_STAGE_TASK_BIT_EXT specifies the task stage. 793e5c31af7Sopenharmony_ci * ename:VK_SHADER_STAGE_MESH_BIT_EXT specifies the mesh stage. 794e5c31af7Sopenharmony_ciendif::VK_NV_mesh_shader,VK_EXT_mesh_shader[] 795e5c31af7Sopenharmony_ciifdef::VK_HUAWEI_cluster_culling_shader[] 796e5c31af7Sopenharmony_ci * ename:VK_SHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI specifies the cluster 797e5c31af7Sopenharmony_ci culling stage. 798e5c31af7Sopenharmony_ciendif::VK_HUAWEI_cluster_culling_shader[] 799e5c31af7Sopenharmony_ciifdef::VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline[] 800e5c31af7Sopenharmony_ci * ename:VK_SHADER_STAGE_RAYGEN_BIT_KHR specifies the ray generation stage. 801e5c31af7Sopenharmony_ci * ename:VK_SHADER_STAGE_ANY_HIT_BIT_KHR specifies the any-hit stage. 802e5c31af7Sopenharmony_ci * ename:VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR specifies the closest hit 803e5c31af7Sopenharmony_ci stage. 804e5c31af7Sopenharmony_ci * ename:VK_SHADER_STAGE_MISS_BIT_KHR specifies the miss stage. 805e5c31af7Sopenharmony_ci * ename:VK_SHADER_STAGE_INTERSECTION_BIT_KHR specifies the intersection 806e5c31af7Sopenharmony_ci stage. 807e5c31af7Sopenharmony_ci * ename:VK_SHADER_STAGE_CALLABLE_BIT_KHR specifies the callable stage. 808e5c31af7Sopenharmony_ciendif::VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline[] 809e5c31af7Sopenharmony_ci 810e5c31af7Sopenharmony_ci[NOTE] 811e5c31af7Sopenharmony_ci.Note 812e5c31af7Sopenharmony_ci==== 813e5c31af7Sopenharmony_ciename:VK_SHADER_STAGE_ALL_GRAPHICS only includes the original five graphics 814e5c31af7Sopenharmony_cistages included in Vulkan 1.0, and not any stages added by extensions. 815e5c31af7Sopenharmony_ciThus, it may not have the desired effect in all cases. 816e5c31af7Sopenharmony_ci==== 817e5c31af7Sopenharmony_ci-- 818e5c31af7Sopenharmony_ci 819e5c31af7Sopenharmony_ci[open,refpage='VkShaderStageFlags',desc='Bitmask of VkShaderStageFlagBits',type='flags'] 820e5c31af7Sopenharmony_ci-- 821e5c31af7Sopenharmony_ciinclude::{generated}/api/flags/VkShaderStageFlags.adoc[] 822e5c31af7Sopenharmony_ci 823e5c31af7Sopenharmony_citname:VkShaderStageFlags is a bitmask type for setting a mask of zero or 824e5c31af7Sopenharmony_cimore elink:VkShaderStageFlagBits. 825e5c31af7Sopenharmony_ci-- 826e5c31af7Sopenharmony_ci 827e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_3,VK_EXT_subgroup_size_control[] 828e5c31af7Sopenharmony_ci[open,refpage='VkPipelineShaderStageRequiredSubgroupSizeCreateInfo',desc='Structure specifying the required subgroup size of a newly created pipeline shader stage',type='structs',alias='VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT'] 829e5c31af7Sopenharmony_ci-- 830e5c31af7Sopenharmony_ciThe sname:VkPipelineShaderStageRequiredSubgroupSizeCreateInfo structure is 831e5c31af7Sopenharmony_cidefined as: 832e5c31af7Sopenharmony_ci 833e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkPipelineShaderStageRequiredSubgroupSizeCreateInfo.adoc[] 834e5c31af7Sopenharmony_ci 835e5c31af7Sopenharmony_ciifdef::VK_EXT_subgroup_size_control[] 836e5c31af7Sopenharmony_cior the equivalent 837e5c31af7Sopenharmony_ci 838e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT.adoc[] 839e5c31af7Sopenharmony_ciendif::VK_EXT_subgroup_size_control[] 840e5c31af7Sopenharmony_ci 841e5c31af7Sopenharmony_ciifdef::VK_EXT_shader_object[] 842e5c31af7Sopenharmony_cior the equiavlent 843e5c31af7Sopenharmony_ci 844e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkShaderRequiredSubgroupSizeCreateInfoEXT.adoc[] 845e5c31af7Sopenharmony_ciendif::VK_EXT_shader_object[] 846e5c31af7Sopenharmony_ci 847e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 848e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or a pointer to a structure extending this 849e5c31af7Sopenharmony_ci structure. 850e5c31af7Sopenharmony_ci * [[pipelines-required-subgroup-size]] pname:requiredSubgroupSize is an 851e5c31af7Sopenharmony_ci unsigned integer value specifying the required subgroup size for the 852e5c31af7Sopenharmony_ci newly created pipeline shader stage. 853e5c31af7Sopenharmony_ci 854e5c31af7Sopenharmony_ciIf a sname:VkPipelineShaderStageRequiredSubgroupSizeCreateInfo structure is 855e5c31af7Sopenharmony_ciincluded in the pname:pNext chain of slink:VkPipelineShaderStageCreateInfo, 856e5c31af7Sopenharmony_ciit specifies that the pipeline shader stage being compiled has a required 857e5c31af7Sopenharmony_cisubgroup size. 858e5c31af7Sopenharmony_ci 859e5c31af7Sopenharmony_ciifdef::VK_EXT_shader_object[] 860e5c31af7Sopenharmony_ciIf a sname:VkShaderRequiredSubgroupSizeCreateInfoEXT structure is included 861e5c31af7Sopenharmony_ciin the pname:pNext chain of slink:VkShaderCreateInfoEXT, it specifies that 862e5c31af7Sopenharmony_cithe shader being compiled has a required subgroup size. 863e5c31af7Sopenharmony_ciendif::VK_EXT_shader_object[] 864e5c31af7Sopenharmony_ci 865e5c31af7Sopenharmony_ci.Valid Usage 866e5c31af7Sopenharmony_ci**** 867e5c31af7Sopenharmony_ci * [[VUID-VkPipelineShaderStageRequiredSubgroupSizeCreateInfo-requiredSubgroupSize-02760]] 868e5c31af7Sopenharmony_ci pname:requiredSubgroupSize must: be a power-of-two integer 869e5c31af7Sopenharmony_ci * [[VUID-VkPipelineShaderStageRequiredSubgroupSizeCreateInfo-requiredSubgroupSize-02761]] 870e5c31af7Sopenharmony_ci pname:requiredSubgroupSize must: be greater or equal to 871e5c31af7Sopenharmony_ci <<limits-minSubgroupSize, pname:minSubgroupSize>> 872e5c31af7Sopenharmony_ci * [[VUID-VkPipelineShaderStageRequiredSubgroupSizeCreateInfo-requiredSubgroupSize-02762]] 873e5c31af7Sopenharmony_ci pname:requiredSubgroupSize must: be less than or equal to 874e5c31af7Sopenharmony_ci <<limits-maxSubgroupSize, pname:maxSubgroupSize>> 875e5c31af7Sopenharmony_ci**** 876e5c31af7Sopenharmony_ci 877e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkPipelineShaderStageRequiredSubgroupSizeCreateInfo.adoc[] 878e5c31af7Sopenharmony_ci-- 879e5c31af7Sopenharmony_ciendif::VK_VERSION_1_3,VK_EXT_subgroup_size_control[] 880e5c31af7Sopenharmony_ci 881e5c31af7Sopenharmony_ciifdef::VK_HUAWEI_subpass_shading[] 882e5c31af7Sopenharmony_ci[open,refpage='VkSubpassShadingPipelineCreateInfoHUAWEI',desc='Structure specifying parameters of a newly created subpass shading pipeline',type='structs'] 883e5c31af7Sopenharmony_ci-- 884e5c31af7Sopenharmony_ciA subpass shading pipeline is a compute pipeline which must: be called only 885e5c31af7Sopenharmony_ciin a subpass of a render pass with work dimensions specified by render area 886e5c31af7Sopenharmony_cisize. 887e5c31af7Sopenharmony_ciThe subpass shading pipeline shader is a compute shader allowed to access 888e5c31af7Sopenharmony_ciinput attachments specified in the calling subpass. 889e5c31af7Sopenharmony_ciTo create a subpass shading pipeline, call flink:vkCreateComputePipelines 890e5c31af7Sopenharmony_ciwith slink:VkSubpassShadingPipelineCreateInfoHUAWEI in the pname:pNext chain 891e5c31af7Sopenharmony_ciof slink:VkComputePipelineCreateInfo. 892e5c31af7Sopenharmony_ci 893e5c31af7Sopenharmony_ciThe sname:VkSubpassShadingPipelineCreateInfoHUAWEI structure is defined as: 894e5c31af7Sopenharmony_ci 895e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkSubpassShadingPipelineCreateInfoHUAWEI.adoc[] 896e5c31af7Sopenharmony_ci 897e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 898e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or a pointer to a structure extending this 899e5c31af7Sopenharmony_ci structure. 900e5c31af7Sopenharmony_ci * pname:renderPass is a handle to a render pass object describing the 901e5c31af7Sopenharmony_ci environment in which the pipeline will be used. 902e5c31af7Sopenharmony_ci The pipeline must: only be used with a render pass instance compatible 903e5c31af7Sopenharmony_ci with the one provided. 904e5c31af7Sopenharmony_ci See <<renderpass-compatibility,Render Pass Compatibility>> for more 905e5c31af7Sopenharmony_ci information. 906e5c31af7Sopenharmony_ci * pname:subpass is the index of the subpass in the render pass where this 907e5c31af7Sopenharmony_ci pipeline will be used. 908e5c31af7Sopenharmony_ci 909e5c31af7Sopenharmony_ci.Valid Usage 910e5c31af7Sopenharmony_ci**** 911e5c31af7Sopenharmony_ci * [[VUID-VkSubpassShadingPipelineCreateInfoHUAWEI-subpass-04946]] 912e5c31af7Sopenharmony_ci pname:subpass must: be created with 913e5c31af7Sopenharmony_ci ename:VK_PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI bind point 914e5c31af7Sopenharmony_ci**** 915e5c31af7Sopenharmony_ci 916e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkSubpassShadingPipelineCreateInfoHUAWEI.adoc[] 917e5c31af7Sopenharmony_ci-- 918e5c31af7Sopenharmony_ci 919e5c31af7Sopenharmony_ci[open,refpage='vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI',desc='Query maximum supported subpass shading workgroup size for a give render pass',type='protos'] 920e5c31af7Sopenharmony_ci-- 921e5c31af7Sopenharmony_ciA subpass shading pipeline's workgroup size is a 2D vector with number of 922e5c31af7Sopenharmony_cipower-of-two in width and height. 923e5c31af7Sopenharmony_ciThe maximum number of width and height is implementation-dependent, and may: 924e5c31af7Sopenharmony_civary for different formats and sample counts of attachments in a render 925e5c31af7Sopenharmony_cipass. 926e5c31af7Sopenharmony_ci 927e5c31af7Sopenharmony_ciTo query the maximum workgroup size, call: 928e5c31af7Sopenharmony_ci 929e5c31af7Sopenharmony_ciinclude::{generated}/api/protos/vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI.adoc[] 930e5c31af7Sopenharmony_ci 931e5c31af7Sopenharmony_ci * pname:device is a handle to a local device object that was used to 932e5c31af7Sopenharmony_ci create the given render pass. 933e5c31af7Sopenharmony_ci * pname:renderPass is a handle to a render pass object describing the 934e5c31af7Sopenharmony_ci environment in which the pipeline will be used. 935e5c31af7Sopenharmony_ci The pipeline must: only be used with a render pass instance compatible 936e5c31af7Sopenharmony_ci with the one provided. 937e5c31af7Sopenharmony_ci See <<renderpass-compatibility,Render Pass Compatibility>> for more 938e5c31af7Sopenharmony_ci information. 939e5c31af7Sopenharmony_ci * pname:pMaxWorkgroupSize is a pointer to a slink:VkExtent2D structure. 940e5c31af7Sopenharmony_ci 941e5c31af7Sopenharmony_ciinclude::{generated}/validity/protos/vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI.adoc[] 942e5c31af7Sopenharmony_ci-- 943e5c31af7Sopenharmony_ciendif::VK_HUAWEI_subpass_shading[] 944e5c31af7Sopenharmony_ci 945e5c31af7Sopenharmony_ciifdef::VK_EXT_pipeline_robustness[] 946e5c31af7Sopenharmony_ci[open,refpage='VkPipelineRobustnessCreateInfoEXT',desc='Structure controlling the robustness of a newly created pipeline shader stage',type='structs'] 947e5c31af7Sopenharmony_ci-- 948e5c31af7Sopenharmony_ciThe sname:VkPipelineRobustnessCreateInfoEXT structure is defined as: 949e5c31af7Sopenharmony_ci 950e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkPipelineRobustnessCreateInfoEXT.adoc[] 951e5c31af7Sopenharmony_ci 952e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 953e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or a pointer to a structure extending this 954e5c31af7Sopenharmony_ci structure. 955e5c31af7Sopenharmony_ci * pname:storageBuffers sets the behaviour of out of bounds accesses made 956e5c31af7Sopenharmony_ci to resources bound as: 957e5c31af7Sopenharmony_ci ** ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER 958e5c31af7Sopenharmony_ci ** ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER 959e5c31af7Sopenharmony_ci ** ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC 960e5c31af7Sopenharmony_ci * pname:uniformBuffers describes the behaviour of out of bounds accesses 961e5c31af7Sopenharmony_ci made to resources bound as: 962e5c31af7Sopenharmony_ci ** ename:VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER 963e5c31af7Sopenharmony_ci ** ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER 964e5c31af7Sopenharmony_ci ** ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC 965e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_3,VK_EXT_inline_uniform_block[] 966e5c31af7Sopenharmony_ci ** ename:VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK 967e5c31af7Sopenharmony_ciendif::VK_VERSION_1_3,VK_EXT_inline_uniform_block[] 968e5c31af7Sopenharmony_ci * pname:vertexInputs describes the behaviour of out of bounds accesses 969e5c31af7Sopenharmony_ci made to vertex input attributes 970e5c31af7Sopenharmony_ci * pname:images describes the behaviour of out of bounds accesses made to 971e5c31af7Sopenharmony_ci resources bound as: 972e5c31af7Sopenharmony_ci ** ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE 973e5c31af7Sopenharmony_ci ** ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE 974e5c31af7Sopenharmony_ci 975e5c31af7Sopenharmony_ciifdef::VK_EXT_mutable_descriptor_type,VK_VALVE_mutable_descriptor_type[] 976e5c31af7Sopenharmony_ciResources bound as ename:VK_DESCRIPTOR_TYPE_MUTABLE_EXT will have the 977e5c31af7Sopenharmony_cirobustness behavior that covers its active descriptor type. 978e5c31af7Sopenharmony_ciendif::VK_EXT_mutable_descriptor_type,VK_VALVE_mutable_descriptor_type[] 979e5c31af7Sopenharmony_ci 980e5c31af7Sopenharmony_ciThe scope of the effect of sname:VkPipelineRobustnessCreateInfoEXT depends 981e5c31af7Sopenharmony_cion which structure's pname:pNext chain it is included in. 982e5c31af7Sopenharmony_ci 983e5c31af7Sopenharmony_ci * sname:VkGraphicsPipelineCreateInfo, 984e5c31af7Sopenharmony_ciifdef::VK_KHR_ray_tracing_pipeline[sname:VkRayTracingPipelineCreateInfoKHR,] 985e5c31af7Sopenharmony_ci sname:VkComputePipelineCreateInfo: + 986e5c31af7Sopenharmony_ci The robustness behavior described by 987e5c31af7Sopenharmony_ci sname:VkPipelineRobustnessCreateInfoEXT applies to all accesses through 988e5c31af7Sopenharmony_ci this pipeline 989e5c31af7Sopenharmony_ci * sname:VkPipelineShaderStageCreateInfo: + 990e5c31af7Sopenharmony_ci The robustness behavior described by 991e5c31af7Sopenharmony_ci sname:VkPipelineRobustnessCreateInfoEXT applies to all accesses 992e5c31af7Sopenharmony_ci emanating from the shader code of this shader stage 993e5c31af7Sopenharmony_ci 994e5c31af7Sopenharmony_ciIf sname:VkPipelineRobustnessCreateInfoEXT is specified for both a pipeline 995e5c31af7Sopenharmony_ciand a pipeline stage, the sname:VkPipelineRobustnessCreateInfoEXT specified 996e5c31af7Sopenharmony_cifor the pipeline stage will take precedence. 997e5c31af7Sopenharmony_ci 998e5c31af7Sopenharmony_ciifdef::VK_KHR_pipeline_library[] 999e5c31af7Sopenharmony_ciWhen sname:VkPipelineRobustnessCreateInfoEXT is specified for a pipeline, it 1000e5c31af7Sopenharmony_cionly affects the subset of the pipeline that is specified by the create 1001e5c31af7Sopenharmony_ciinfo, as opposed to subsets linked from pipeline libraries. 1002e5c31af7Sopenharmony_ciifdef::VK_EXT_graphics_pipeline_library[] 1003e5c31af7Sopenharmony_ciFor slink:VkGraphicsPipelineCreateInfo, that subset is specified by 1004e5c31af7Sopenharmony_cislink:VkGraphicsPipelineLibraryCreateInfoEXT::pname:flags. 1005e5c31af7Sopenharmony_ciendif::VK_EXT_graphics_pipeline_library[] 1006e5c31af7Sopenharmony_ciifdef::VK_KHR_ray_tracing_pipeline[] 1007e5c31af7Sopenharmony_ciFor slink:VkRayTracingPipelineCreateInfoKHR, that subset is specified by the 1008e5c31af7Sopenharmony_cispecific stages in slink:VkRayTracingPipelineCreateInfoKHR::pname:pStages. 1009e5c31af7Sopenharmony_ciendif::VK_KHR_ray_tracing_pipeline[] 1010e5c31af7Sopenharmony_ciendif::VK_KHR_pipeline_library[] 1011e5c31af7Sopenharmony_ci 1012e5c31af7Sopenharmony_ci.Valid Usage 1013e5c31af7Sopenharmony_ci**** 1014e5c31af7Sopenharmony_ci * [[VUID-VkPipelineRobustnessCreateInfoEXT-pipelineRobustness-06926]] 1015e5c31af7Sopenharmony_ci If the <<features-pipelineRobustness, pname:pipelineRobustness>> feature 1016e5c31af7Sopenharmony_ci is not enabled, pname:storageBuffers must: be 1017e5c31af7Sopenharmony_ci ename:VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT 1018e5c31af7Sopenharmony_ci * [[VUID-VkPipelineRobustnessCreateInfoEXT-pipelineRobustness-06927]] 1019e5c31af7Sopenharmony_ci If the <<features-pipelineRobustness, pname:pipelineRobustness>> feature 1020e5c31af7Sopenharmony_ci is not enabled, pname:uniformBuffers must: be 1021e5c31af7Sopenharmony_ci ename:VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT 1022e5c31af7Sopenharmony_ci * [[VUID-VkPipelineRobustnessCreateInfoEXT-pipelineRobustness-06928]] 1023e5c31af7Sopenharmony_ci If the <<features-pipelineRobustness, pname:pipelineRobustness>> feature 1024e5c31af7Sopenharmony_ci is not enabled, pname:vertexInputs must: be 1025e5c31af7Sopenharmony_ci ename:VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT 1026e5c31af7Sopenharmony_ci * [[VUID-VkPipelineRobustnessCreateInfoEXT-pipelineRobustness-06929]] 1027e5c31af7Sopenharmony_ci If the <<features-pipelineRobustness, pname:pipelineRobustness>> feature 1028e5c31af7Sopenharmony_ci is not enabled, pname:images must: be 1029e5c31af7Sopenharmony_ci ename:VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT 1030e5c31af7Sopenharmony_ci * [[VUID-VkPipelineRobustnessCreateInfoEXT-robustImageAccess-06930]] 1031e5c31af7Sopenharmony_ci If the <<features-robustImageAccess, pname:robustImageAccess>> feature 1032e5c31af7Sopenharmony_ci is not supported, pname:images must: not be 1033e5c31af7Sopenharmony_ci ename:VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT 1034e5c31af7Sopenharmony_ci * [[VUID-VkPipelineRobustnessCreateInfoEXT-robustBufferAccess2-06931]] 1035e5c31af7Sopenharmony_ci If the <<features-robustBufferAccess2, pname:robustBufferAccess2>> 1036e5c31af7Sopenharmony_ci feature is not supported, pname:storageBuffers must: not be 1037e5c31af7Sopenharmony_ci ename:VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT 1038e5c31af7Sopenharmony_ci * [[VUID-VkPipelineRobustnessCreateInfoEXT-robustBufferAccess2-06932]] 1039e5c31af7Sopenharmony_ci If the <<features-robustBufferAccess2, pname:robustBufferAccess2>> 1040e5c31af7Sopenharmony_ci feature is not supported, pname:uniformBuffers must: not be 1041e5c31af7Sopenharmony_ci ename:VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT 1042e5c31af7Sopenharmony_ci * [[VUID-VkPipelineRobustnessCreateInfoEXT-robustBufferAccess2-06933]] 1043e5c31af7Sopenharmony_ci If the <<features-robustBufferAccess2, pname:robustBufferAccess2>> 1044e5c31af7Sopenharmony_ci feature is not supported, pname:vertexInputs must: not be 1045e5c31af7Sopenharmony_ci ename:VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT 1046e5c31af7Sopenharmony_ci * [[VUID-VkPipelineRobustnessCreateInfoEXT-robustImageAccess2-06934]] 1047e5c31af7Sopenharmony_ci If the <<features-robustImageAccess2, pname:robustImageAccess2>> feature 1048e5c31af7Sopenharmony_ci is not supported, pname:images must: not be 1049e5c31af7Sopenharmony_ci ename:VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT 1050e5c31af7Sopenharmony_ci**** 1051e5c31af7Sopenharmony_ci 1052e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkPipelineRobustnessCreateInfoEXT.adoc[] 1053e5c31af7Sopenharmony_ci-- 1054e5c31af7Sopenharmony_ci 1055e5c31af7Sopenharmony_ci[open,refpage='VkPipelineRobustnessBufferBehaviorEXT',desc='Enum controlling the robustness of buffer accesses in a pipeline stage',type='enums'] 1056e5c31af7Sopenharmony_ci-- 1057e5c31af7Sopenharmony_ciPossible values of the pname:storageBuffers, pname:uniformBuffers, and 1058e5c31af7Sopenharmony_cipname:vertexInputs members of slink:VkPipelineRobustnessCreateInfoEXT are: 1059e5c31af7Sopenharmony_ci 1060e5c31af7Sopenharmony_ciinclude::{generated}/api/enums/VkPipelineRobustnessBufferBehaviorEXT.adoc[] 1061e5c31af7Sopenharmony_ci 1062e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT 1063e5c31af7Sopenharmony_ci specifies that this pipeline stage follows the behavior of robustness 1064e5c31af7Sopenharmony_ci features that are enabled on the device that created this pipeline 1065e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT specifies that 1066e5c31af7Sopenharmony_ci buffer accesses by this pipeline stage to the relevant resource types 1067e5c31af7Sopenharmony_ci must: not be out of bounds 1068e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT 1069e5c31af7Sopenharmony_ci specifies that out of bounds accesses by this pipeline stage to the 1070e5c31af7Sopenharmony_ci relevant resource types behave as if the <<features-robustBufferAccess, 1071e5c31af7Sopenharmony_ci pname:robustBufferAccess>> feature is enabled 1072e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT 1073e5c31af7Sopenharmony_ci specifies that out of bounds accesses by this pipeline stage to the 1074e5c31af7Sopenharmony_ci relevant resource types behave as if the <<features-robustBufferAccess2, 1075e5c31af7Sopenharmony_ci pname:robustBufferAccess2>> feature is enabled 1076e5c31af7Sopenharmony_ci-- 1077e5c31af7Sopenharmony_ci 1078e5c31af7Sopenharmony_ci[open,refpage='VkPipelineRobustnessImageBehaviorEXT',desc='Enum controlling the robustness of image accesses in a pipeline stage',type='enums'] 1079e5c31af7Sopenharmony_ci-- 1080e5c31af7Sopenharmony_ciPossible values of the pname:images member of 1081e5c31af7Sopenharmony_cislink:VkPipelineRobustnessCreateInfoEXT are: 1082e5c31af7Sopenharmony_ci 1083e5c31af7Sopenharmony_ciinclude::{generated}/api/enums/VkPipelineRobustnessImageBehaviorEXT.adoc[] 1084e5c31af7Sopenharmony_ci 1085e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT specifies 1086e5c31af7Sopenharmony_ci that this pipeline stage follows the behavior of robustness features 1087e5c31af7Sopenharmony_ci that are enabled on the device that created this pipeline 1088e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED_EXT specifies that 1089e5c31af7Sopenharmony_ci image accesses by this pipeline stage to the relevant resource types 1090e5c31af7Sopenharmony_ci must: not be out of bounds 1091e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT 1092e5c31af7Sopenharmony_ci specifies that out of bounds accesses by this pipeline stage to images 1093e5c31af7Sopenharmony_ci behave as if the <<features-robustImageAccess, pname:robustImageAccess>> 1094e5c31af7Sopenharmony_ci feature is enabled 1095e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT 1096e5c31af7Sopenharmony_ci specifies that out of bounds accesses by this pipeline stage to images 1097e5c31af7Sopenharmony_ci behave as if the <<features-robustImageAccess2, 1098e5c31af7Sopenharmony_ci pname:robustImageAccess2>> feature is enabled 1099e5c31af7Sopenharmony_ci-- 1100e5c31af7Sopenharmony_ciendif::VK_EXT_pipeline_robustness[] 1101e5c31af7Sopenharmony_ci 1102e5c31af7Sopenharmony_ciifdef::VK_EXT_shader_module_identifier[] 1103e5c31af7Sopenharmony_ci[open,refpage='VkPipelineShaderStageModuleIdentifierCreateInfoEXT',desc='Structure specifying an identifier for a shader module',type='structs'] 1104e5c31af7Sopenharmony_ci-- 1105e5c31af7Sopenharmony_ciAn identifier can: be provided instead of shader code in an attempt to 1106e5c31af7Sopenharmony_cicompile pipelines without providing complete SPIR-V to the implementation. 1107e5c31af7Sopenharmony_ci 1108e5c31af7Sopenharmony_ciThe sname:VkPipelineShaderStageModuleIdentifierCreateInfoEXT structure is 1109e5c31af7Sopenharmony_cidefined as: 1110e5c31af7Sopenharmony_ci 1111e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkPipelineShaderStageModuleIdentifierCreateInfoEXT.adoc[] 1112e5c31af7Sopenharmony_ci 1113e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 1114e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or a pointer to a structure extending this 1115e5c31af7Sopenharmony_ci structure. 1116e5c31af7Sopenharmony_ci * pname:identifierSize is the size, in bytes, of the buffer pointed to by 1117e5c31af7Sopenharmony_ci pname:pIdentifier. 1118e5c31af7Sopenharmony_ci * pname:pIdentifier is a pointer to a buffer of opaque data specifying an 1119e5c31af7Sopenharmony_ci identifier. 1120e5c31af7Sopenharmony_ci 1121e5c31af7Sopenharmony_ciAny identifier can: be used. 1122e5c31af7Sopenharmony_ciIf the pipeline being created with identifier requires compilation to 1123e5c31af7Sopenharmony_cicomplete the pipeline creation call, pipeline compilation must: fail as 1124e5c31af7Sopenharmony_cidefined by ename:VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT. 1125e5c31af7Sopenharmony_ci 1126e5c31af7Sopenharmony_cipname:pIdentifier and pname:identifierSize can: be obtained from an 1127e5c31af7Sopenharmony_cislink:VkShaderModuleIdentifierEXT queried earlier. 1128e5c31af7Sopenharmony_ci 1129e5c31af7Sopenharmony_ci.Valid Usage 1130e5c31af7Sopenharmony_ci**** 1131e5c31af7Sopenharmony_ci * [[VUID-VkPipelineShaderStageModuleIdentifierCreateInfoEXT-pNext-06850]] 1132e5c31af7Sopenharmony_ci If this structure is included in a pname:pNext chain and 1133e5c31af7Sopenharmony_ci pname:identifierSize is not equal to 0, the 1134e5c31af7Sopenharmony_ci <<features-shaderModuleIdentifier, pname:shaderModuleIdentifier>> 1135e5c31af7Sopenharmony_ci feature must: be enabled 1136e5c31af7Sopenharmony_ci * [[VUID-VkPipelineShaderStageModuleIdentifierCreateInfoEXT-pNext-06851]] 1137e5c31af7Sopenharmony_ci If this struct is included in a pname:pNext chain of 1138e5c31af7Sopenharmony_ci slink:VkPipelineShaderStageCreateInfo and pname:identifierSize is not 1139e5c31af7Sopenharmony_ci equal to 0, the pipeline must: be created with the 1140e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT flag set 1141e5c31af7Sopenharmony_ci * [[VUID-VkPipelineShaderStageModuleIdentifierCreateInfoEXT-identifierSize-06852]] 1142e5c31af7Sopenharmony_ci pname:identifierSize must: be less-or-equal to 1143e5c31af7Sopenharmony_ci ename:VK_MAX_SHADER_MODULE_IDENTIFIER_SIZE_EXT 1144e5c31af7Sopenharmony_ci**** 1145e5c31af7Sopenharmony_ci 1146e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkPipelineShaderStageModuleIdentifierCreateInfoEXT.adoc[] 1147e5c31af7Sopenharmony_ci-- 1148e5c31af7Sopenharmony_ciendif::VK_EXT_shader_module_identifier[] 1149e5c31af7Sopenharmony_ci 1150e5c31af7Sopenharmony_ciifdef::VK_NV_device_generated_commands_compute[] 1151e5c31af7Sopenharmony_ciIf a compute pipeline is going to be used in <<device-generated-commands, 1152e5c31af7Sopenharmony_ciDevice-Generated Commands>> by specifying its pipeline token with 1153e5c31af7Sopenharmony_cislink:VkBindPipelineIndirectCommandNV, then that pipeline's associated 1154e5c31af7Sopenharmony_cimetadata must: be saved at a specified buffer device address for later use 1155e5c31af7Sopenharmony_ciin indirect command generation. 1156e5c31af7Sopenharmony_ciThe buffer device address must: be specified at the time of compute pipeline 1157e5c31af7Sopenharmony_cicreation with slink:VkComputePipelineIndirectBufferInfoNV structure in the 1158e5c31af7Sopenharmony_cipname:pNext chain of slink:VkComputePipelineCreateInfo. 1159e5c31af7Sopenharmony_ci 1160e5c31af7Sopenharmony_ci[open,refpage='VkComputePipelineIndirectBufferInfoNV',desc='Structure describing the device address where pipeline\'s metadata will be saved',type='structs'] 1161e5c31af7Sopenharmony_ci-- 1162e5c31af7Sopenharmony_ciThe sname:VkComputePipelineIndirectBufferInfoNV structure is defined as: 1163e5c31af7Sopenharmony_ci 1164e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkComputePipelineIndirectBufferInfoNV.adoc[] 1165e5c31af7Sopenharmony_ci 1166e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 1167e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or a pointer to a structure extending this 1168e5c31af7Sopenharmony_ci structure. 1169e5c31af7Sopenharmony_ci * pname:deviceAddress is the address where the pipeline's metadata will be 1170e5c31af7Sopenharmony_ci stored. 1171e5c31af7Sopenharmony_ci * pname:size is the size of pipeline's metadata that was queried using 1172e5c31af7Sopenharmony_ci flink:vkGetPipelineIndirectMemoryRequirementsNV. 1173e5c31af7Sopenharmony_ci * pname:pipelineDeviceAddressCaptureReplay is the device address where 1174e5c31af7Sopenharmony_ci pipeline's metadata was originally saved and can now be used to 1175e5c31af7Sopenharmony_ci re-populate pname:deviceAddress for replay. 1176e5c31af7Sopenharmony_ci 1177e5c31af7Sopenharmony_ciIf pname:pipelineDeviceAddressCaptureReplay is zero, no specific address is 1178e5c31af7Sopenharmony_cirequested. 1179e5c31af7Sopenharmony_ciIf pname:pipelineDeviceAddressCaptureReplay is not zero, then it must: be an 1180e5c31af7Sopenharmony_ciaddress retrieved from an identically created pipeline on the same 1181e5c31af7Sopenharmony_ciimplementation. 1182e5c31af7Sopenharmony_ciThe pipeline metadata must: also be placed on an identically created buffer 1183e5c31af7Sopenharmony_ciand at the same offset using the flink:vkCmdUpdatePipelineIndirectBufferNV 1184e5c31af7Sopenharmony_cicommand. 1185e5c31af7Sopenharmony_ci 1186e5c31af7Sopenharmony_ci.Valid Usage 1187e5c31af7Sopenharmony_ci**** 1188e5c31af7Sopenharmony_ci * [[VUID-VkComputePipelineIndirectBufferInfoNV-deviceGeneratedComputePipelines-09009]] 1189e5c31af7Sopenharmony_ci The <<features-deviceGeneratedComputePipelines, 1190e5c31af7Sopenharmony_ci sname:VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV::pname:deviceGeneratedComputePipelines>> 1191e5c31af7Sopenharmony_ci feature must: be enabled 1192e5c31af7Sopenharmony_ci * [[VUID-VkComputePipelineIndirectBufferInfoNV-flags-09010]] 1193e5c31af7Sopenharmony_ci The pipeline creation flags in 1194e5c31af7Sopenharmony_ci slink:VkComputePipelineCreateInfo::pname:flags must: include 1195e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV 1196e5c31af7Sopenharmony_ci * [[VUID-VkComputePipelineIndirectBufferInfoNV-deviceAddress-09011]] 1197e5c31af7Sopenharmony_ci pname:deviceAddress must: be aligned to the 1198e5c31af7Sopenharmony_ci slink:VkMemoryRequirements2::pname:alignment, as returned by 1199e5c31af7Sopenharmony_ci flink:vkGetPipelineIndirectMemoryRequirementsNV 1200e5c31af7Sopenharmony_ci * [[VUID-VkComputePipelineIndirectBufferInfoNV-deviceAddress-09012]] 1201e5c31af7Sopenharmony_ci pname:deviceAddress must: have been allocated from a buffer that was 1202e5c31af7Sopenharmony_ci created with usage ename:VK_BUFFER_USAGE_TRANSFER_DST_BIT and 1203e5c31af7Sopenharmony_ci ename:VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT 1204e5c31af7Sopenharmony_ci * [[VUID-VkComputePipelineIndirectBufferInfoNV-size-09013]] 1205e5c31af7Sopenharmony_ci pname:size must: be greater than or equal to the 1206e5c31af7Sopenharmony_ci slink:VkMemoryRequirements2::pname:size, as returned by 1207e5c31af7Sopenharmony_ci flink:vkGetPipelineIndirectMemoryRequirementsNV 1208e5c31af7Sopenharmony_ci * [[VUID-VkComputePipelineIndirectBufferInfoNV-pipelineDeviceAddressCaptureReplay-09014]] 1209e5c31af7Sopenharmony_ci If pname:pipelineDeviceAddressCaptureReplay is non-zero then the 1210e5c31af7Sopenharmony_ci <<features-deviceGeneratedComputePipelines, 1211e5c31af7Sopenharmony_ci sname:VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV::pname:deviceGeneratedComputeCaptureReplay>> 1212e5c31af7Sopenharmony_ci feature must: be enabled 1213e5c31af7Sopenharmony_ci * [[VUID-VkComputePipelineIndirectBufferInfoNV-pipelineDeviceAddressCaptureReplay-09015]] 1214e5c31af7Sopenharmony_ci If pname:pipelineDeviceAddressCaptureReplay is non-zero then that 1215e5c31af7Sopenharmony_ci address must: have been allocated with flag 1216e5c31af7Sopenharmony_ci ename:VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT set 1217e5c31af7Sopenharmony_ci * [[VUID-VkComputePipelineIndirectBufferInfoNV-pipelineDeviceAddressCaptureReplay-09016]] 1218e5c31af7Sopenharmony_ci If pname:pipelineDeviceAddressCaptureReplay is non-zero, the 1219e5c31af7Sopenharmony_ci pname:pipeline must: have been recreated for replay 1220e5c31af7Sopenharmony_ci * [[VUID-VkComputePipelineIndirectBufferInfoNV-pipelineDeviceAddressCaptureReplay-09017]] 1221e5c31af7Sopenharmony_ci pname:pipelineDeviceAddressCaptureReplay must: satisfy the 1222e5c31af7Sopenharmony_ci pname:alignment and pname:size requirements similar to 1223e5c31af7Sopenharmony_ci pname:deviceAddress 1224e5c31af7Sopenharmony_ci**** 1225e5c31af7Sopenharmony_ci 1226e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkComputePipelineIndirectBufferInfoNV.adoc[] 1227e5c31af7Sopenharmony_ci-- 1228e5c31af7Sopenharmony_ci 1229e5c31af7Sopenharmony_ci[open,refpage='vkCmdUpdatePipelineIndirectBufferNV',desc='Update the indirect compute pipeline\'s metadata',type='protos'] 1230e5c31af7Sopenharmony_ci-- 1231e5c31af7Sopenharmony_ciTo save a compute pipeline's metadata at a device address call: 1232e5c31af7Sopenharmony_ci 1233e5c31af7Sopenharmony_ciinclude::{generated}/api/protos/vkCmdUpdatePipelineIndirectBufferNV.adoc[] 1234e5c31af7Sopenharmony_ci 1235e5c31af7Sopenharmony_ci * pname:commandBuffer is the command buffer into which the command will be 1236e5c31af7Sopenharmony_ci recorded. 1237e5c31af7Sopenharmony_ci * pname:pipelineBindPoint is a elink:VkPipelineBindPoint value specifying 1238e5c31af7Sopenharmony_ci the type of pipeline whose metadata will be saved. 1239e5c31af7Sopenharmony_ci * pname:pipeline is the pipeline whose metadata will be saved. 1240e5c31af7Sopenharmony_ci 1241e5c31af7Sopenharmony_cifname:vkCmdUpdatePipelineIndirectBufferNV is only allowed outside of a 1242e5c31af7Sopenharmony_cirender pass. 1243e5c31af7Sopenharmony_ciThis command is treated as a "`transfer`" operation for the purposes of 1244e5c31af7Sopenharmony_cisynchronization barriers. 1245e5c31af7Sopenharmony_ciThe writes to the address must: be synchronized using stages 1246e5c31af7Sopenharmony_ciename:VK_PIPELINE_STAGE_2_COPY_BIT and 1247e5c31af7Sopenharmony_ciename:VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV and with access masks 1248e5c31af7Sopenharmony_ciename:VK_ACCESS_MEMORY_WRITE_BIT and 1249e5c31af7Sopenharmony_ciename:VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV respectively before using the 1250e5c31af7Sopenharmony_ciresults in preprocessing. 1251e5c31af7Sopenharmony_ci 1252e5c31af7Sopenharmony_ci.Valid Usage 1253e5c31af7Sopenharmony_ci**** 1254e5c31af7Sopenharmony_ci * [[VUID-vkCmdUpdatePipelineIndirectBufferNV-pipelineBindPoint-09018]] 1255e5c31af7Sopenharmony_ci pname:pipelineBindPoint must: be ename:VK_PIPELINE_BIND_POINT_COMPUTE 1256e5c31af7Sopenharmony_ci * [[VUID-vkCmdUpdatePipelineIndirectBufferNV-pipeline-09019]] 1257e5c31af7Sopenharmony_ci pname:pipeline must: have been created with 1258e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV flag set 1259e5c31af7Sopenharmony_ci * [[VUID-vkCmdUpdatePipelineIndirectBufferNV-pipeline-09020]] 1260e5c31af7Sopenharmony_ci pname:pipeline must: have been created with 1261e5c31af7Sopenharmony_ci slink:VkComputePipelineIndirectBufferInfoNV structure specifying a valid 1262e5c31af7Sopenharmony_ci address where its metadata will be saved 1263e5c31af7Sopenharmony_ci * [[VUID-vkCmdUpdatePipelineIndirectBufferNV-deviceGeneratedComputePipelines-09021]] 1264e5c31af7Sopenharmony_ci The <<features-deviceGeneratedComputePipelines, 1265e5c31af7Sopenharmony_ci sname:VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV::pname:deviceGeneratedComputePipelines>> 1266e5c31af7Sopenharmony_ci feature must: be enabled 1267e5c31af7Sopenharmony_ci**** 1268e5c31af7Sopenharmony_ci 1269e5c31af7Sopenharmony_ciinclude::{generated}/validity/protos/vkCmdUpdatePipelineIndirectBufferNV.adoc[] 1270e5c31af7Sopenharmony_ci-- 1271e5c31af7Sopenharmony_ci 1272e5c31af7Sopenharmony_ciendif::VK_NV_device_generated_commands_compute[] 1273e5c31af7Sopenharmony_ci 1274e5c31af7Sopenharmony_ci[[pipelines-graphics]] 1275e5c31af7Sopenharmony_ci== Graphics Pipelines 1276e5c31af7Sopenharmony_ci 1277e5c31af7Sopenharmony_ciGraphics pipelines consist of multiple shader stages, multiple 1278e5c31af7Sopenharmony_cifixed-function pipeline stages, and a pipeline layout. 1279e5c31af7Sopenharmony_ci 1280e5c31af7Sopenharmony_ci[open,refpage='vkCreateGraphicsPipelines',desc='Create graphics pipelines',type='protos'] 1281e5c31af7Sopenharmony_ci-- 1282e5c31af7Sopenharmony_ci:refpage: vkCreateGraphicsPipelines 1283e5c31af7Sopenharmony_ci:objectnameplural: graphics pipelines 1284e5c31af7Sopenharmony_ci:objectnamecamelcase: graphicsPipeline 1285e5c31af7Sopenharmony_ci:objectcount: pname:createInfoCount 1286e5c31af7Sopenharmony_ci 1287e5c31af7Sopenharmony_ciTo create graphics pipelines, call: 1288e5c31af7Sopenharmony_ci 1289e5c31af7Sopenharmony_ciinclude::{generated}/api/protos/vkCreateGraphicsPipelines.adoc[] 1290e5c31af7Sopenharmony_ci 1291e5c31af7Sopenharmony_ci * pname:device is the logical device that creates the graphics pipelines. 1292e5c31af7Sopenharmony_ciifndef::VKSC_VERSION_1_0[] 1293e5c31af7Sopenharmony_ci * pname:pipelineCache is either dlink:VK_NULL_HANDLE, indicating that 1294e5c31af7Sopenharmony_ci pipeline caching is disabled; or the handle of a valid 1295e5c31af7Sopenharmony_ci <<pipelines-cache,pipeline cache>> object, in which case use of that 1296e5c31af7Sopenharmony_ci cache is enabled for the duration of the command. 1297e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 1298e5c31af7Sopenharmony_ciifdef::VKSC_VERSION_1_0[] 1299e5c31af7Sopenharmony_ci * pname:pipelineCache is the handle of a valid <<pipelines-cache,pipeline 1300e5c31af7Sopenharmony_ci cache>> object. 1301e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 1302e5c31af7Sopenharmony_ci * pname:createInfoCount is the length of the pname:pCreateInfos and 1303e5c31af7Sopenharmony_ci pname:pPipelines arrays. 1304e5c31af7Sopenharmony_ci * pname:pCreateInfos is a pointer to an array of 1305e5c31af7Sopenharmony_ci slink:VkGraphicsPipelineCreateInfo structures. 1306e5c31af7Sopenharmony_ci * pname:pAllocator controls host memory allocation as described in the 1307e5c31af7Sopenharmony_ci <<memory-allocation, Memory Allocation>> chapter. 1308e5c31af7Sopenharmony_ci * pname:pPipelines is a pointer to an array of slink:VkPipeline handles in 1309e5c31af7Sopenharmony_ci which the resulting graphics pipeline objects are returned. 1310e5c31af7Sopenharmony_ci 1311e5c31af7Sopenharmony_ciThe slink:VkGraphicsPipelineCreateInfo structure includes an array of 1312e5c31af7Sopenharmony_cislink:VkPipelineShaderStageCreateInfo structures for each of the desired 1313e5c31af7Sopenharmony_ciactive shader stages, as well as creation information for all relevant 1314e5c31af7Sopenharmony_cifixed-function stages, and a pipeline layout. 1315e5c31af7Sopenharmony_ci 1316e5c31af7Sopenharmony_ciPipelines are created and returned as described for <<pipelines-multiple, 1317e5c31af7Sopenharmony_ciMultiple Pipeline Creation>>. 1318e5c31af7Sopenharmony_ci 1319e5c31af7Sopenharmony_ciifdef::VKSC_VERSION_1_0[] 1320e5c31af7Sopenharmony_ciIf a pipeline creation fails due to: 1321e5c31af7Sopenharmony_ci 1322e5c31af7Sopenharmony_ci * The identified pipeline not being present in pname:pipelineCache 1323e5c31af7Sopenharmony_ci * The pname:pNext chain not including a slink:VkPipelineOfflineCreateInfo 1324e5c31af7Sopenharmony_ci structure 1325e5c31af7Sopenharmony_ci 1326e5c31af7Sopenharmony_cithe operation will continue as specified in <<pipelines-multiple, Multiple 1327e5c31af7Sopenharmony_ciPipeline Creation>> and the command will return 1328e5c31af7Sopenharmony_ciename:VK_ERROR_NO_PIPELINE_MATCH. 1329e5c31af7Sopenharmony_ciifdef::hidden[] 1330e5c31af7Sopenharmony_ci// tag::scdeviation[] 1331e5c31af7Sopenharmony_ci * flink:vkCreateGraphicsPipelines returns ename:VK_ERROR_NO_PIPELINE_MATCH 1332e5c31af7Sopenharmony_ci if the slink:VkGraphicsPipelineCreateInfo::pname:pNext chain does not 1333e5c31af7Sopenharmony_ci include a valid slink:VkPipelineOfflineCreateInfo structure <<SCID-1>>. 1334e5c31af7Sopenharmony_ci// end::scdeviation[] 1335e5c31af7Sopenharmony_ciendif::hidden[] 1336e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 1337e5c31af7Sopenharmony_ci 1338e5c31af7Sopenharmony_ciinclude::{chapters}/commonvalidity/no_dynamic_allocations_common.adoc[] 1339e5c31af7Sopenharmony_ci 1340e5c31af7Sopenharmony_ci.Valid Usage 1341e5c31af7Sopenharmony_ci**** 1342e5c31af7Sopenharmony_ciifndef::VKSC_VERSION_1_0[] 1343e5c31af7Sopenharmony_ci * [[VUID-vkCreateGraphicsPipelines-flags-00720]] 1344e5c31af7Sopenharmony_ci If the pname:flags member of any element of pname:pCreateInfos contains 1345e5c31af7Sopenharmony_ci the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and the 1346e5c31af7Sopenharmony_ci pname:basePipelineIndex member of that same element is not `-1`, 1347e5c31af7Sopenharmony_ci pname:basePipelineIndex must: be less than the index into 1348e5c31af7Sopenharmony_ci pname:pCreateInfos that corresponds to that element 1349e5c31af7Sopenharmony_ci * [[VUID-vkCreateGraphicsPipelines-flags-00721]] 1350e5c31af7Sopenharmony_ci If the pname:flags member of any element of pname:pCreateInfos contains 1351e5c31af7Sopenharmony_ci the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, the base pipeline 1352e5c31af7Sopenharmony_ci must: have been created with the 1353e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT flag set 1354e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 1355e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control[] 1356e5c31af7Sopenharmony_ci * [[VUID-vkCreateGraphicsPipelines-pipelineCache-02876]] 1357e5c31af7Sopenharmony_ci If pname:pipelineCache was created with 1358e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT, host access 1359e5c31af7Sopenharmony_ci to pname:pipelineCache must: be 1360e5c31af7Sopenharmony_ci <<fundamentals-threadingbehavior,externally synchronized>> 1361e5c31af7Sopenharmony_ciendif::VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control[] 1362e5c31af7Sopenharmony_ciinclude::{chapters}/commonvalidity/memory_reservation_request_count_common.adoc[] 1363e5c31af7Sopenharmony_ci**** 1364e5c31af7Sopenharmony_ciifdef::VKSC_VERSION_1_0[] 1365e5c31af7Sopenharmony_ciifdef::hidden[] 1366e5c31af7Sopenharmony_ci// tag::scdeviation[] 1367e5c31af7Sopenharmony_ci * flink:vkCreateGraphicsPipelines::pname:pipelineCache must: not be 1368e5c31af7Sopenharmony_ci dlink:VK_NULL_HANDLE <<SCID-1>>, <<SCID-8>>. 1369e5c31af7Sopenharmony_ci// end::scdeviation[] 1370e5c31af7Sopenharmony_ciendif::hidden[] 1371e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 1372e5c31af7Sopenharmony_ci 1373e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control[] 1374e5c31af7Sopenharmony_ci[NOTE] 1375e5c31af7Sopenharmony_ci.Note 1376e5c31af7Sopenharmony_ci==== 1377e5c31af7Sopenharmony_ciAn implicit cache may be provided by the implementation or a layer. 1378e5c31af7Sopenharmony_ciFor this reason, it is still valid to set 1379e5c31af7Sopenharmony_ciename:VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT on 1380e5c31af7Sopenharmony_cipname:flags for any element of pname:pCreateInfos while passing 1381e5c31af7Sopenharmony_cidlink:VK_NULL_HANDLE for pname:pipelineCache. 1382e5c31af7Sopenharmony_ci==== 1383e5c31af7Sopenharmony_ciendif::VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control[] 1384e5c31af7Sopenharmony_ci 1385e5c31af7Sopenharmony_ciinclude::{generated}/validity/protos/vkCreateGraphicsPipelines.adoc[] 1386e5c31af7Sopenharmony_ci-- 1387e5c31af7Sopenharmony_ci 1388e5c31af7Sopenharmony_ci[open,refpage='VkGraphicsPipelineCreateInfo',desc='Structure specifying parameters of a newly created graphics pipeline',type='structs'] 1389e5c31af7Sopenharmony_ci-- 1390e5c31af7Sopenharmony_ci:refpage: VkGraphicsPipelineCreateInfo 1391e5c31af7Sopenharmony_ci 1392e5c31af7Sopenharmony_ciThe sname:VkGraphicsPipelineCreateInfo structure is defined as: 1393e5c31af7Sopenharmony_ci 1394e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkGraphicsPipelineCreateInfo.adoc[] 1395e5c31af7Sopenharmony_ci 1396e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 1397e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or a pointer to a structure extending this 1398e5c31af7Sopenharmony_ci structure. 1399e5c31af7Sopenharmony_ci * pname:flags is a bitmask of elink:VkPipelineCreateFlagBits specifying 1400e5c31af7Sopenharmony_ci how the pipeline will be generated. 1401e5c31af7Sopenharmony_ci * pname:stageCount is the number of entries in the pname:pStages array. 1402e5c31af7Sopenharmony_ci * pname:pStages is a pointer to an array of pname:stageCount 1403e5c31af7Sopenharmony_ci slink:VkPipelineShaderStageCreateInfo structures describing the set of 1404e5c31af7Sopenharmony_ci the shader stages to be included in the graphics pipeline. 1405e5c31af7Sopenharmony_ci * pname:pVertexInputState is a pointer to a 1406e5c31af7Sopenharmony_ci slink:VkPipelineVertexInputStateCreateInfo structure. 1407e5c31af7Sopenharmony_ciifdef::VK_NV_mesh_shader,VK_EXT_mesh_shader[] 1408e5c31af7Sopenharmony_ci It is ignored if the pipeline includes a mesh shader stage. 1409e5c31af7Sopenharmony_ciendif::VK_NV_mesh_shader,VK_EXT_mesh_shader[] 1410e5c31af7Sopenharmony_ciifdef::VK_EXT_vertex_input_dynamic_state[] 1411e5c31af7Sopenharmony_ci It can: be `NULL` if the pipeline is created with the 1412e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state set. 1413e5c31af7Sopenharmony_ciendif::VK_EXT_vertex_input_dynamic_state[] 1414e5c31af7Sopenharmony_ci * pname:pInputAssemblyState is a pointer to a 1415e5c31af7Sopenharmony_ci slink:VkPipelineInputAssemblyStateCreateInfo structure which determines 1416e5c31af7Sopenharmony_ci input assembly behavior for vertex shading, as described in <<drawing, 1417e5c31af7Sopenharmony_ci Drawing Commands>>. 1418e5c31af7Sopenharmony_ciifdef::VK_EXT_extended_dynamic_state3[] 1419e5c31af7Sopenharmony_ci If the `apiext:VK_EXT_extended_dynamic_state3` extension is enabled, it 1420e5c31af7Sopenharmony_ci can: be `NULL` if the pipeline is created with both 1421e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE, and 1422e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY dynamic states set and 1423e5c31af7Sopenharmony_ci <<limits-dynamicPrimitiveTopologyUnrestricted, 1424e5c31af7Sopenharmony_ci pname:dynamicPrimitiveTopologyUnrestricted>> is ename:VK_TRUE. 1425e5c31af7Sopenharmony_ciendif::VK_EXT_extended_dynamic_state3[] 1426e5c31af7Sopenharmony_ciifdef::VK_NV_mesh_shader,VK_EXT_mesh_shader[] 1427e5c31af7Sopenharmony_ci It is ignored if the pipeline includes a mesh shader stage. 1428e5c31af7Sopenharmony_ciendif::VK_NV_mesh_shader,VK_EXT_mesh_shader[] 1429e5c31af7Sopenharmony_ci * pname:pTessellationState is a pointer to a 1430e5c31af7Sopenharmony_ci slink:VkPipelineTessellationStateCreateInfo structure defining 1431e5c31af7Sopenharmony_ci tessellation state used by tessellation shaders. 1432e5c31af7Sopenharmony_ciifdef::VK_EXT_extended_dynamic_state2[] 1433e5c31af7Sopenharmony_ci It can: be `NULL` if the pipeline is created with the 1434e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT dynamic state set. 1435e5c31af7Sopenharmony_ciendif::VK_EXT_extended_dynamic_state2[] 1436e5c31af7Sopenharmony_ci * pname:pViewportState is a pointer to a 1437e5c31af7Sopenharmony_ci slink:VkPipelineViewportStateCreateInfo structure defining viewport 1438e5c31af7Sopenharmony_ci state used when rasterization is enabled. 1439e5c31af7Sopenharmony_ciifdef::VK_EXT_extended_dynamic_state3[] 1440e5c31af7Sopenharmony_ci If the `apiext:VK_EXT_extended_dynamic_state3` extension is enabled, it 1441e5c31af7Sopenharmony_ci can: be `NULL` if the pipeline is created with both 1442e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT, and 1443e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT dynamic states set. 1444e5c31af7Sopenharmony_ciendif::VK_EXT_extended_dynamic_state3[] 1445e5c31af7Sopenharmony_ci * pname:pRasterizationState is a pointer to a 1446e5c31af7Sopenharmony_ci slink:VkPipelineRasterizationStateCreateInfo structure defining 1447e5c31af7Sopenharmony_ci rasterization state. 1448e5c31af7Sopenharmony_ciifdef::VK_EXT_extended_dynamic_state3[] 1449e5c31af7Sopenharmony_ci If the `apiext:VK_EXT_extended_dynamic_state3` extension is enabled, it 1450e5c31af7Sopenharmony_ci can: be `NULL` if the pipeline is created with all of 1451e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT, 1452e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE, 1453e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_POLYGON_MODE_EXT, 1454e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_CULL_MODE, ename:VK_DYNAMIC_STATE_FRONT_FACE, 1455e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE, 1456e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_DEPTH_BIAS, and ename:VK_DYNAMIC_STATE_LINE_WIDTH 1457e5c31af7Sopenharmony_ci dynamic states set. 1458e5c31af7Sopenharmony_ciendif::VK_EXT_extended_dynamic_state3[] 1459e5c31af7Sopenharmony_ci * pname:pMultisampleState is a pointer to a 1460e5c31af7Sopenharmony_ci slink:VkPipelineMultisampleStateCreateInfo structure defining 1461e5c31af7Sopenharmony_ci multisample state used when rasterization is enabled. 1462e5c31af7Sopenharmony_ciifdef::VK_EXT_extended_dynamic_state3[] 1463e5c31af7Sopenharmony_ci If the `apiext:VK_EXT_extended_dynamic_state3` extension is enabled, it 1464e5c31af7Sopenharmony_ci can: be `NULL` if the pipeline is created with all of 1465e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT, 1466e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_SAMPLE_MASK_EXT, and 1467e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT dynamic states set, 1468e5c31af7Sopenharmony_ci and either <<features-alphaToOne,alphaToOne>> is disabled on the device 1469e5c31af7Sopenharmony_ci or ename:VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT is set, in which case 1470e5c31af7Sopenharmony_ci slink:VkPipelineMultisampleStateCreateInfo::pname:sampleShadingEnable is 1471e5c31af7Sopenharmony_ci assumed to be ename:VK_FALSE. 1472e5c31af7Sopenharmony_ciendif::VK_EXT_extended_dynamic_state3[] 1473e5c31af7Sopenharmony_ci * pname:pDepthStencilState is a pointer to a 1474e5c31af7Sopenharmony_ci slink:VkPipelineDepthStencilStateCreateInfo structure defining 1475e5c31af7Sopenharmony_ci depth/stencil state used when rasterization is enabled for depth or 1476e5c31af7Sopenharmony_ci stencil attachments accessed during rendering. 1477e5c31af7Sopenharmony_ciifdef::VK_EXT_extended_dynamic_state3[] 1478e5c31af7Sopenharmony_ci If the `apiext:VK_EXT_extended_dynamic_state3` extension is enabled, it 1479e5c31af7Sopenharmony_ci can: be `NULL` if the pipeline is created with all of 1480e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE, 1481e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE, 1482e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_DEPTH_COMPARE_OP, 1483e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE, 1484e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE, 1485e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_STENCIL_OP, and 1486e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_DEPTH_BOUNDS dynamic states set. 1487e5c31af7Sopenharmony_ciendif::VK_EXT_extended_dynamic_state3[] 1488e5c31af7Sopenharmony_ci * pname:pColorBlendState is a pointer to a 1489e5c31af7Sopenharmony_ci slink:VkPipelineColorBlendStateCreateInfo structure defining color blend 1490e5c31af7Sopenharmony_ci state used when rasterization is enabled for any color attachments 1491e5c31af7Sopenharmony_ci accessed during rendering. 1492e5c31af7Sopenharmony_ciifdef::VK_EXT_extended_dynamic_state3[] 1493e5c31af7Sopenharmony_ci If the `apiext:VK_EXT_extended_dynamic_state3` extension is enabled, it 1494e5c31af7Sopenharmony_ci can: be `NULL` if the pipeline is created with all of 1495e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT, 1496e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_LOGIC_OP_EXT, 1497e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT, 1498e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT, 1499e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT, and 1500e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_BLEND_CONSTANTS dynamic states set. 1501e5c31af7Sopenharmony_ciendif::VK_EXT_extended_dynamic_state3[] 1502e5c31af7Sopenharmony_ci * pname:pDynamicState is a pointer to a 1503e5c31af7Sopenharmony_ci slink:VkPipelineDynamicStateCreateInfo structure defining which 1504e5c31af7Sopenharmony_ci properties of the pipeline state object are dynamic and can: be changed 1505e5c31af7Sopenharmony_ci independently of the pipeline state. 1506e5c31af7Sopenharmony_ci This can: be `NULL`, which means no state in the pipeline is considered 1507e5c31af7Sopenharmony_ci dynamic. 1508e5c31af7Sopenharmony_ci * pname:layout is the description of binding locations used by both the 1509e5c31af7Sopenharmony_ci pipeline and descriptor sets used with the pipeline. 1510e5c31af7Sopenharmony_ci * pname:renderPass is a handle to a render pass object describing the 1511e5c31af7Sopenharmony_ci environment in which the pipeline will be used. 1512e5c31af7Sopenharmony_ci The pipeline must: only be used with a render pass instance compatible 1513e5c31af7Sopenharmony_ci with the one provided. 1514e5c31af7Sopenharmony_ci See <<renderpass-compatibility,Render Pass Compatibility>> for more 1515e5c31af7Sopenharmony_ci information. 1516e5c31af7Sopenharmony_ci * pname:subpass is the index of the subpass in the render pass where this 1517e5c31af7Sopenharmony_ci pipeline will be used. 1518e5c31af7Sopenharmony_ci * pname:basePipelineHandle is a pipeline to derive from. 1519e5c31af7Sopenharmony_ciifdef::VKSC_VERSION_1_0[] 1520e5c31af7Sopenharmony_ci This is not used in Vulkan SC <<SCID-8>>. 1521e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 1522e5c31af7Sopenharmony_ci * pname:basePipelineIndex is an index into the pname:pCreateInfos 1523e5c31af7Sopenharmony_ci parameter to use as a pipeline to derive from. 1524e5c31af7Sopenharmony_ciifdef::VKSC_VERSION_1_0[] 1525e5c31af7Sopenharmony_ci This is not used in Vulkan SC <<SCID-8>>. 1526e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 1527e5c31af7Sopenharmony_ci 1528e5c31af7Sopenharmony_ciThe parameters pname:basePipelineHandle and pname:basePipelineIndex are 1529e5c31af7Sopenharmony_cidescribed in more detail in <<pipelines-pipeline-derivatives,Pipeline 1530e5c31af7Sopenharmony_ciDerivatives>>. 1531e5c31af7Sopenharmony_ci 1532e5c31af7Sopenharmony_ciifdef::VK_NV_glsl_shader[] 1533e5c31af7Sopenharmony_ciIf any shader stage fails to compile, 1534e5c31af7Sopenharmony_ciifdef::VK_EXT_debug_report[] 1535e5c31af7Sopenharmony_cithe compile log will be reported back to the application, and 1536e5c31af7Sopenharmony_ciendif::VK_EXT_debug_report[] 1537e5c31af7Sopenharmony_ciename:VK_ERROR_INVALID_SHADER_NV will be generated. 1538e5c31af7Sopenharmony_ciendif::VK_NV_glsl_shader[] 1539e5c31af7Sopenharmony_ci 1540e5c31af7Sopenharmony_ciifdef::VK_EXT_extended_dynamic_state3[] 1541e5c31af7Sopenharmony_ci[NOTE] 1542e5c31af7Sopenharmony_ci.Note 1543e5c31af7Sopenharmony_ci==== 1544e5c31af7Sopenharmony_ciWith `apiext:VK_EXT_extended_dynamic_state3`, it is possible that many of 1545e5c31af7Sopenharmony_cithe sname:VkGraphicsPipelineCreateInfo members above can: be `NULL` because 1546e5c31af7Sopenharmony_ciall their state is dynamic and therefore ignored. 1547e5c31af7Sopenharmony_ciThis is optional so the application can: still use a valid pointer if it 1548e5c31af7Sopenharmony_cineeds to set the pname:pNext or pname:flags fields to specify state for 1549e5c31af7Sopenharmony_ciother extensions. 1550e5c31af7Sopenharmony_ci==== 1551e5c31af7Sopenharmony_ciendif::VK_EXT_extended_dynamic_state3[] 1552e5c31af7Sopenharmony_ci 1553e5c31af7Sopenharmony_ci[[pipelines-graphics-subsets]] 1554e5c31af7Sopenharmony_ciThe state required for a graphics pipeline is divided into 1555e5c31af7Sopenharmony_ci<<pipelines-graphics-subsets-vertex-input, vertex input state>>, 1556e5c31af7Sopenharmony_ci<<pipelines-graphics-subsets-pre-rasterization,pre-rasterization shader 1557e5c31af7Sopenharmony_cistate>>, <<pipelines-graphics-subsets-fragment-shader,fragment shader 1558e5c31af7Sopenharmony_cistate>>, and <<pipelines-graphics-subsets-fragment-output,fragment output 1559e5c31af7Sopenharmony_cistate>>. 1560e5c31af7Sopenharmony_ci 1561e5c31af7Sopenharmony_ci[[pipelines-graphics-subsets-vertex-input]] 1562e5c31af7Sopenharmony_ci.Vertex Input State 1563e5c31af7Sopenharmony_ciVertex input state is defined by: 1564e5c31af7Sopenharmony_ci 1565e5c31af7Sopenharmony_ci * slink:VkPipelineVertexInputStateCreateInfo 1566e5c31af7Sopenharmony_ci * slink:VkPipelineInputAssemblyStateCreateInfo 1567e5c31af7Sopenharmony_ci 1568e5c31af7Sopenharmony_ciifndef::VK_EXT_mesh_shader[] 1569e5c31af7Sopenharmony_ciThis state must: be specified to create a 1570e5c31af7Sopenharmony_ci<<pipelines-graphics-subsets-complete,complete graphics pipeline>>. 1571e5c31af7Sopenharmony_ciendif::VK_EXT_mesh_shader[] 1572e5c31af7Sopenharmony_ci 1573e5c31af7Sopenharmony_ciifdef::VK_EXT_mesh_shader[] 1574e5c31af7Sopenharmony_ciIf 1575e5c31af7Sopenharmony_ciifdef::VK_EXT_graphics_pipeline_library[] 1576e5c31af7Sopenharmony_cithis pipeline specifies 1577e5c31af7Sopenharmony_ci<<pipelines-graphics-subsets-pre-rasterization,pre-rasterization state>> 1578e5c31af7Sopenharmony_cieither directly or by including it as a pipeline library and its 1579e5c31af7Sopenharmony_ciendif::VK_EXT_graphics_pipeline_library[] 1580e5c31af7Sopenharmony_cipname:pStages includes a vertex shader, this state must: be specified to 1581e5c31af7Sopenharmony_cicreate a <<pipelines-graphics-subsets-complete,complete graphics pipeline>>. 1582e5c31af7Sopenharmony_ciendif::VK_EXT_mesh_shader[] 1583e5c31af7Sopenharmony_ci 1584e5c31af7Sopenharmony_ciifdef::VK_EXT_graphics_pipeline_library[] 1585e5c31af7Sopenharmony_ciIf a pipeline includes 1586e5c31af7Sopenharmony_ciename:VK_GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT in 1587e5c31af7Sopenharmony_cislink:VkGraphicsPipelineLibraryCreateInfoEXT::pname:flags either explicitly 1588e5c31af7Sopenharmony_cior as a default, and either the conditions requiring this state for a 1589e5c31af7Sopenharmony_ci<<pipelines-graphics-subsets-complete,complete graphics pipeline>> are met 1590e5c31af7Sopenharmony_cior this pipeline does not specify 1591e5c31af7Sopenharmony_ci<<pipelines-graphics-subsets-pre-rasterization,pre-rasterization state>> in 1592e5c31af7Sopenharmony_ciany way, that pipeline must: specify this state directly. 1593e5c31af7Sopenharmony_ciendif::VK_EXT_graphics_pipeline_library[] 1594e5c31af7Sopenharmony_ci 1595e5c31af7Sopenharmony_ci 1596e5c31af7Sopenharmony_ci[[pipelines-graphics-subsets-pre-rasterization]] 1597e5c31af7Sopenharmony_ci.Pre-Rasterization Shader State 1598e5c31af7Sopenharmony_ciPre-rasterization shader state is defined by: 1599e5c31af7Sopenharmony_ci 1600e5c31af7Sopenharmony_ci * slink:VkPipelineShaderStageCreateInfo entries for: 1601e5c31af7Sopenharmony_ci ** Vertex shaders 1602e5c31af7Sopenharmony_ci ** Tessellation control shaders 1603e5c31af7Sopenharmony_ci ** Tessellation evaluation shaders 1604e5c31af7Sopenharmony_ci ** Geometry shaders 1605e5c31af7Sopenharmony_ciifdef::VK_NV_mesh_shader,VK_EXT_mesh_shader[] 1606e5c31af7Sopenharmony_ci ** Task shaders 1607e5c31af7Sopenharmony_ci ** Mesh shaders 1608e5c31af7Sopenharmony_ciendif::VK_NV_mesh_shader,VK_EXT_mesh_shader[] 1609e5c31af7Sopenharmony_ciifdef::VK_EXT_graphics_pipeline_library[] 1610e5c31af7Sopenharmony_ci * Within the slink:VkPipelineLayout, all descriptor sets with 1611e5c31af7Sopenharmony_ci pre-rasterization shader bindings if 1612e5c31af7Sopenharmony_ci ename:VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT was specified. 1613e5c31af7Sopenharmony_ci ** If ename:VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT was not 1614e5c31af7Sopenharmony_ci specified, the full pipeline layout must be specified. 1615e5c31af7Sopenharmony_ciendif::VK_EXT_graphics_pipeline_library[] 1616e5c31af7Sopenharmony_ciifndef::VK_EXT_graphics_pipeline_library[] 1617e5c31af7Sopenharmony_ci * Within the slink:VkPipelineLayout, the full pipeline layout must be 1618e5c31af7Sopenharmony_ci specified. 1619e5c31af7Sopenharmony_ciendif::VK_EXT_graphics_pipeline_library[] 1620e5c31af7Sopenharmony_ci * slink:VkPipelineViewportStateCreateInfo 1621e5c31af7Sopenharmony_ci * slink:VkPipelineRasterizationStateCreateInfo 1622e5c31af7Sopenharmony_ci * slink:VkPipelineTessellationStateCreateInfo 1623e5c31af7Sopenharmony_ci * slink:VkRenderPass and pname:subpass parameter 1624e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_3,VK_KHR_dynamic_rendering[] 1625e5c31af7Sopenharmony_ci * The pname:viewMask parameter of slink:VkPipelineRenderingCreateInfo 1626e5c31af7Sopenharmony_ci (formats are ignored) 1627e5c31af7Sopenharmony_ciendif::VK_VERSION_1_3,VK_KHR_dynamic_rendering[] 1628e5c31af7Sopenharmony_ciifdef::VK_EXT_discard_rectangles[] 1629e5c31af7Sopenharmony_ci * slink:VkPipelineDiscardRectangleStateCreateInfoEXT 1630e5c31af7Sopenharmony_ciendif::VK_EXT_discard_rectangles[] 1631e5c31af7Sopenharmony_ciifdef::VK_KHR_fragment_shading_rate[] 1632e5c31af7Sopenharmony_ci * slink:VkPipelineFragmentShadingRateStateCreateInfoKHR 1633e5c31af7Sopenharmony_ciendif::VK_KHR_fragment_shading_rate[] 1634e5c31af7Sopenharmony_ci 1635e5c31af7Sopenharmony_ciThis state must: be specified to create a 1636e5c31af7Sopenharmony_ci<<pipelines-graphics-subsets-complete,complete graphics pipeline>>. 1637e5c31af7Sopenharmony_ci 1638e5c31af7Sopenharmony_ciifdef::VK_EXT_graphics_pipeline_library[] 1639e5c31af7Sopenharmony_ciIf either the pname:pNext chain includes a 1640e5c31af7Sopenharmony_cislink:VkGraphicsPipelineLibraryCreateInfoEXT structure with 1641e5c31af7Sopenharmony_ciename:VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT 1642e5c31af7Sopenharmony_ciincluded in pname:flags, or it is not specified and would default to include 1643e5c31af7Sopenharmony_cithat value, this state must: be specified in the pipeline. 1644e5c31af7Sopenharmony_ciendif::VK_EXT_graphics_pipeline_library[] 1645e5c31af7Sopenharmony_ci 1646e5c31af7Sopenharmony_ci 1647e5c31af7Sopenharmony_ci[[pipelines-graphics-subsets-fragment-shader]] 1648e5c31af7Sopenharmony_ci.Fragment Shader State 1649e5c31af7Sopenharmony_ciFragment shader state is defined by: 1650e5c31af7Sopenharmony_ci 1651e5c31af7Sopenharmony_ci * A slink:VkPipelineShaderStageCreateInfo entry for the fragment shader 1652e5c31af7Sopenharmony_ciifdef::VK_EXT_graphics_pipeline_library[] 1653e5c31af7Sopenharmony_ci * Within the slink:VkPipelineLayout, all descriptor sets with fragment 1654e5c31af7Sopenharmony_ci shader bindings if 1655e5c31af7Sopenharmony_ci ename:VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT was specified. 1656e5c31af7Sopenharmony_ci ** If ename:VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT was not 1657e5c31af7Sopenharmony_ci specified, the full pipeline layout must be specified. 1658e5c31af7Sopenharmony_ciendif::VK_EXT_graphics_pipeline_library[] 1659e5c31af7Sopenharmony_ciifndef::VK_EXT_graphics_pipeline_library[] 1660e5c31af7Sopenharmony_ci * Within the slink:VkPipelineLayout, the full pipeline layout must be 1661e5c31af7Sopenharmony_ci specified. 1662e5c31af7Sopenharmony_ciendif::VK_EXT_graphics_pipeline_library[] 1663e5c31af7Sopenharmony_ci * slink:VkPipelineMultisampleStateCreateInfo 1664e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_3,VK_KHR_dynamic_rendering[] 1665e5c31af7Sopenharmony_ci if <<primsrast-sampleshading, sample shading>> is enabled or 1666e5c31af7Sopenharmony_ci pname:renderpass is not dlink:VK_NULL_HANDLE 1667e5c31af7Sopenharmony_ciendif::VK_VERSION_1_3,VK_KHR_dynamic_rendering[] 1668e5c31af7Sopenharmony_ci * slink:VkPipelineDepthStencilStateCreateInfo 1669e5c31af7Sopenharmony_ci * slink:VkRenderPass and pname:subpass parameter 1670e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_3,VK_KHR_dynamic_rendering[] 1671e5c31af7Sopenharmony_ci * The pname:viewMask parameter of slink:VkPipelineRenderingCreateInfo 1672e5c31af7Sopenharmony_ci (formats are ignored) 1673e5c31af7Sopenharmony_ciendif::VK_VERSION_1_3,VK_KHR_dynamic_rendering[] 1674e5c31af7Sopenharmony_ciifdef::VK_KHR_fragment_shading_rate[] 1675e5c31af7Sopenharmony_ci * slink:VkPipelineFragmentShadingRateStateCreateInfoKHR 1676e5c31af7Sopenharmony_ciifdef::VK_NV_fragment_shading_rate_enums[] 1677e5c31af7Sopenharmony_ci * slink:VkPipelineFragmentShadingRateEnumStateCreateInfoNV 1678e5c31af7Sopenharmony_ciendif::VK_NV_fragment_shading_rate_enums[] 1679e5c31af7Sopenharmony_ciendif::VK_KHR_fragment_shading_rate[] 1680e5c31af7Sopenharmony_ciifdef::VK_NV_representative_fragment_test[] 1681e5c31af7Sopenharmony_ci * slink:VkPipelineRepresentativeFragmentTestStateCreateInfoNV 1682e5c31af7Sopenharmony_ciendif::VK_NV_representative_fragment_test[] 1683e5c31af7Sopenharmony_ciifdef::VK_KHR_fragment_shading_rate[] 1684e5c31af7Sopenharmony_ci * Inclusion/omission of the 1685e5c31af7Sopenharmony_ci ename:VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR 1686e5c31af7Sopenharmony_ci flag 1687e5c31af7Sopenharmony_ciendif::VK_KHR_fragment_shading_rate[] 1688e5c31af7Sopenharmony_ciifdef::VK_EXT_fragment_density_map[] 1689e5c31af7Sopenharmony_ci * Inclusion/omission of the 1690e5c31af7Sopenharmony_ci ename:VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT 1691e5c31af7Sopenharmony_ci flag 1692e5c31af7Sopenharmony_ciendif::VK_EXT_fragment_density_map[] 1693e5c31af7Sopenharmony_ci 1694e5c31af7Sopenharmony_ciIf 1695e5c31af7Sopenharmony_ciifdef::VK_EXT_graphics_pipeline_library[] 1696e5c31af7Sopenharmony_cia pipeline specifies 1697e5c31af7Sopenharmony_ci<<pipelines-graphics-subsets-pre-rasterization,pre-rasterization state>> 1698e5c31af7Sopenharmony_cieither directly or by including it as a pipeline library and 1699e5c31af7Sopenharmony_ciendif::VK_EXT_graphics_pipeline_library[] 1700e5c31af7Sopenharmony_cipname:rasterizerDiscardEnable is set to ename:VK_FALSE 1701e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_3,VK_EXT_extended_dynamic_state2[] 1702e5c31af7Sopenharmony_cior ename:VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE is used, 1703e5c31af7Sopenharmony_ciendif::VK_VERSION_1_3,VK_EXT_extended_dynamic_state2[] 1704e5c31af7Sopenharmony_ciifdef::VK_EXT_graphics_pipeline_library[] 1705e5c31af7Sopenharmony_ciendif::VK_EXT_graphics_pipeline_library[] 1706e5c31af7Sopenharmony_cithis state must: be specified to create a 1707e5c31af7Sopenharmony_ci<<pipelines-graphics-subsets-complete,complete graphics pipeline>>. 1708e5c31af7Sopenharmony_ci 1709e5c31af7Sopenharmony_ciifdef::VK_EXT_graphics_pipeline_library[] 1710e5c31af7Sopenharmony_ciIf a pipeline includes 1711e5c31af7Sopenharmony_ciename:VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT in 1712e5c31af7Sopenharmony_cislink:VkGraphicsPipelineLibraryCreateInfoEXT::pname:flags either explicitly 1713e5c31af7Sopenharmony_cior as a default, and either the conditions requiring this state for a 1714e5c31af7Sopenharmony_ci<<pipelines-graphics-subsets-complete,complete graphics pipeline>> are met 1715e5c31af7Sopenharmony_cior this pipeline does not specify 1716e5c31af7Sopenharmony_ci<<pipelines-graphics-subsets-pre-rasterization,pre-rasterization state>> in 1717e5c31af7Sopenharmony_ciany way, that pipeline must: specify this state directly. 1718e5c31af7Sopenharmony_ciendif::VK_EXT_graphics_pipeline_library[] 1719e5c31af7Sopenharmony_ci 1720e5c31af7Sopenharmony_ci 1721e5c31af7Sopenharmony_ci[[pipelines-graphics-subsets-fragment-output]] 1722e5c31af7Sopenharmony_ci.Fragment Output State 1723e5c31af7Sopenharmony_ciFragment output state is defined by: 1724e5c31af7Sopenharmony_ci 1725e5c31af7Sopenharmony_ci * slink:VkPipelineColorBlendStateCreateInfo 1726e5c31af7Sopenharmony_ci * slink:VkRenderPass and pname:subpass parameter 1727e5c31af7Sopenharmony_ci * slink:VkPipelineMultisampleStateCreateInfo 1728e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_3,VK_KHR_dynamic_rendering[] 1729e5c31af7Sopenharmony_ci * slink:VkPipelineRenderingCreateInfo 1730e5c31af7Sopenharmony_ciifdef::VK_AMD_mixed_attachment_samples[] 1731e5c31af7Sopenharmony_ci * slink:VkAttachmentSampleCountInfoAMD 1732e5c31af7Sopenharmony_ciendif::VK_AMD_mixed_attachment_samples[] 1733e5c31af7Sopenharmony_ciifdef::VK_NV_framebuffer_mixed_samples[] 1734e5c31af7Sopenharmony_ci * slink:VkAttachmentSampleCountInfoNV 1735e5c31af7Sopenharmony_ciendif::VK_NV_framebuffer_mixed_samples[] 1736e5c31af7Sopenharmony_ciifdef::VK_ANDROID_external_format_resolve[] 1737e5c31af7Sopenharmony_ci * slink:VkExternalFormatANDROID 1738e5c31af7Sopenharmony_ciendif::VK_ANDROID_external_format_resolve[] 1739e5c31af7Sopenharmony_ciendif::VK_VERSION_1_3,VK_KHR_dynamic_rendering[] 1740e5c31af7Sopenharmony_ciifdef::VK_EXT_attachment_feedback_loop_layout[] 1741e5c31af7Sopenharmony_ci * Inclusion/omission of the 1742e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT and 1743e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT 1744e5c31af7Sopenharmony_ci flags 1745e5c31af7Sopenharmony_ciendif::VK_EXT_attachment_feedback_loop_layout[] 1746e5c31af7Sopenharmony_ci 1747e5c31af7Sopenharmony_ciIf 1748e5c31af7Sopenharmony_ciifdef::VK_EXT_graphics_pipeline_library[] 1749e5c31af7Sopenharmony_cia pipeline specifies 1750e5c31af7Sopenharmony_ci<<pipelines-graphics-subsets-pre-rasterization,pre-rasterization state>> 1751e5c31af7Sopenharmony_cieither directly or by including it as a pipeline library and 1752e5c31af7Sopenharmony_ciendif::VK_EXT_graphics_pipeline_library[] 1753e5c31af7Sopenharmony_cipname:rasterizerDiscardEnable is set to ename:VK_FALSE 1754e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_3,VK_EXT_extended_dynamic_state2[] 1755e5c31af7Sopenharmony_cior ename:VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE is used, 1756e5c31af7Sopenharmony_ciendif::VK_VERSION_1_3,VK_EXT_extended_dynamic_state2[] 1757e5c31af7Sopenharmony_ciifdef::VK_EXT_graphics_pipeline_library[] 1758e5c31af7Sopenharmony_ciendif::VK_EXT_graphics_pipeline_library[] 1759e5c31af7Sopenharmony_cithis state must: be specified to create a 1760e5c31af7Sopenharmony_ci<<pipelines-graphics-subsets-complete,complete graphics pipeline>>. 1761e5c31af7Sopenharmony_ci 1762e5c31af7Sopenharmony_ciifdef::VK_EXT_graphics_pipeline_library[] 1763e5c31af7Sopenharmony_ciIf a pipeline includes 1764e5c31af7Sopenharmony_ciename:VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT in 1765e5c31af7Sopenharmony_cislink:VkGraphicsPipelineLibraryCreateInfoEXT::pname:flags either explicitly 1766e5c31af7Sopenharmony_cior as a default, and either the conditions requiring this state for a 1767e5c31af7Sopenharmony_ci<<pipelines-graphics-subsets-complete,complete graphics pipeline>> are met 1768e5c31af7Sopenharmony_cior this pipeline does not specify 1769e5c31af7Sopenharmony_ci<<pipelines-graphics-subsets-pre-rasterization,pre-rasterization state>> in 1770e5c31af7Sopenharmony_ciany way, that pipeline must: specify this state directly. 1771e5c31af7Sopenharmony_ciendif::VK_EXT_graphics_pipeline_library[] 1772e5c31af7Sopenharmony_ci 1773e5c31af7Sopenharmony_ci 1774e5c31af7Sopenharmony_ci[[pipelines-graphics-subsets-dynamic-state]] 1775e5c31af7Sopenharmony_ci.Dynamic State 1776e5c31af7Sopenharmony_ciDynamic state values set via pname:pDynamicState must: be ignored if the 1777e5c31af7Sopenharmony_cistate they correspond to is not otherwise statically set by one of the state 1778e5c31af7Sopenharmony_cisubsets used to create the pipeline. 1779e5c31af7Sopenharmony_ciifdef::VK_EXT_graphics_pipeline_library[] 1780e5c31af7Sopenharmony_ciAdditionally, setting dynamic state values must: not modify whether state in 1781e5c31af7Sopenharmony_cia linked library is static or dynamic; this is set and unchangeable when the 1782e5c31af7Sopenharmony_cilibrary is created. 1783e5c31af7Sopenharmony_ciendif::VK_EXT_graphics_pipeline_library[] 1784e5c31af7Sopenharmony_ciFor example, if a pipeline only included 1785e5c31af7Sopenharmony_ci<<pipelines-graphics-subsets-pre-rasterization, pre-rasterization shader 1786e5c31af7Sopenharmony_cistate>>, then any dynamic state value corresponding to depth or stencil 1787e5c31af7Sopenharmony_citesting has no effect. 1788e5c31af7Sopenharmony_ciifdef::VK_EXT_graphics_pipeline_library[] 1789e5c31af7Sopenharmony_ciAny linked library that has dynamic state enabled that same dynamic state 1790e5c31af7Sopenharmony_cimust: also be enabled in all the other linked libraries to which that 1791e5c31af7Sopenharmony_cidynamic state applies. 1792e5c31af7Sopenharmony_ciendif::VK_EXT_graphics_pipeline_library[] 1793e5c31af7Sopenharmony_ci 1794e5c31af7Sopenharmony_ci[[pipelines-graphics-subsets-complete]] 1795e5c31af7Sopenharmony_ci.Complete Graphics Pipelines 1796e5c31af7Sopenharmony_ci 1797e5c31af7Sopenharmony_ciA complete graphics pipeline always includes 1798e5c31af7Sopenharmony_ci<<pipelines-graphics-subsets-pre-rasterization, pre-rasterization shader 1799e5c31af7Sopenharmony_cistate>>, with other subsets included depending on that state as specified in 1800e5c31af7Sopenharmony_cithe above sections. 1801e5c31af7Sopenharmony_ci 1802e5c31af7Sopenharmony_ciifdef::VK_EXT_graphics_pipeline_library[] 1803e5c31af7Sopenharmony_ci.Graphics Pipeline Library Layouts 1804e5c31af7Sopenharmony_ci 1805e5c31af7Sopenharmony_ciIf different subsets are linked together with pipeline layouts created with 1806e5c31af7Sopenharmony_ciename:VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT, the final 1807e5c31af7Sopenharmony_cieffective pipeline layout is effectively the union of the linked pipeline 1808e5c31af7Sopenharmony_cilayouts. 1809e5c31af7Sopenharmony_ciWhen binding descriptor sets for this pipeline, the pipeline layout used 1810e5c31af7Sopenharmony_cimust: be compatible with this union. 1811e5c31af7Sopenharmony_ciThis pipeline layout can: be overridden when linking with 1812e5c31af7Sopenharmony_ciename:VK_PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT by providing a 1813e5c31af7Sopenharmony_cislink:VkPipelineLayout that is <<descriptorsets-compatibility,compatible>> 1814e5c31af7Sopenharmony_ciwith this union other than 1815e5c31af7Sopenharmony_ciename:VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT, or when linking 1816e5c31af7Sopenharmony_ciwithout ename:VK_PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT by providing 1817e5c31af7Sopenharmony_cia slink:VkPipelineLayout that is fully 1818e5c31af7Sopenharmony_ci<<descriptorsets-compatibility,compatible>> with this union. 1819e5c31af7Sopenharmony_ciendif::VK_EXT_graphics_pipeline_library[] 1820e5c31af7Sopenharmony_ci 1821e5c31af7Sopenharmony_ciifdef::VK_KHR_maintenance5[] 1822e5c31af7Sopenharmony_ciIf a slink:VkPipelineCreateFlags2CreateInfoKHR structure is present in the 1823e5c31af7Sopenharmony_cipname:pNext chain, slink:VkPipelineCreateFlags2CreateInfoKHR::pname:flags 1824e5c31af7Sopenharmony_cifrom that structure is used instead of pname:flags from this structure. 1825e5c31af7Sopenharmony_ciendif::VK_KHR_maintenance5[] 1826e5c31af7Sopenharmony_ci 1827e5c31af7Sopenharmony_ciifdef::VKSC_VERSION_1_0[] 1828e5c31af7Sopenharmony_ciIn Vulkan SC, the pipeline compilation process occurs 1829e5c31af7Sopenharmony_ci<<pipelines-offline-compilation,offline>> and the pname:pStages are not 1830e5c31af7Sopenharmony_cineeded at runtime and may: be omitted. 1831e5c31af7Sopenharmony_ciIf omitted, pname:stageCount must: be set to `0` and pname:pStages must: be 1832e5c31af7Sopenharmony_ci`NULL`. 1833e5c31af7Sopenharmony_ciIf provided, the values must: match the values specified to the offline 1834e5c31af7Sopenharmony_cicompiler. 1835e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 1836e5c31af7Sopenharmony_ci 1837e5c31af7Sopenharmony_ci.Valid Usage 1838e5c31af7Sopenharmony_ci**** 1839e5c31af7Sopenharmony_ci:pipelineType: graphics 1840e5c31af7Sopenharmony_ciinclude::{chapters}/commonvalidity/pipeline_create_info_common.adoc[] 1841e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-stage-02096]] 1842e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 1843e5c31af7Sopenharmony_ci pre-rasterization shader state>> the pname:stage member of one element 1844e5c31af7Sopenharmony_ci of pname:pStages must: be ename:VK_SHADER_STAGE_VERTEX_BIT 1845e5c31af7Sopenharmony_ciifdef::VK_NV_mesh_shader,VK_EXT_mesh_shader[] 1846e5c31af7Sopenharmony_ci or ename:VK_SHADER_STAGE_MESH_BIT_EXT 1847e5c31af7Sopenharmony_ciendif::VK_NV_mesh_shader,VK_EXT_mesh_shader[] 1848e5c31af7Sopenharmony_ciifdef::VK_NV_mesh_shader,VK_EXT_mesh_shader[] 1849e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pStages-02095]] 1850e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 1851e5c31af7Sopenharmony_ci pre-rasterization shader state>> the geometric shader stages provided in 1852e5c31af7Sopenharmony_ci pname:pStages must: be either from the mesh shading pipeline 1853e5c31af7Sopenharmony_ci (pname:stage is ename:VK_SHADER_STAGE_TASK_BIT_EXT or 1854e5c31af7Sopenharmony_ci ename:VK_SHADER_STAGE_MESH_BIT_EXT) or from the primitive shading 1855e5c31af7Sopenharmony_ci pipeline (pname:stage is ename:VK_SHADER_STAGE_VERTEX_BIT, 1856e5c31af7Sopenharmony_ci ename:VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT, 1857e5c31af7Sopenharmony_ci ename:VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT, or 1858e5c31af7Sopenharmony_ci ename:VK_SHADER_STAGE_GEOMETRY_BIT) 1859e5c31af7Sopenharmony_ciendif::VK_NV_mesh_shader,VK_EXT_mesh_shader[] 1860e5c31af7Sopenharmony_ciifdef::VK_NV_mesh_shader+VK_EXT_mesh_shader[] 1861e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-TaskNV-07063]] 1862e5c31af7Sopenharmony_ci The shader stages for ename:VK_SHADER_STAGE_TASK_BIT_EXT or 1863e5c31af7Sopenharmony_ci ename:VK_SHADER_STAGE_MESH_BIT_EXT must: use either the code:TaskNV and 1864e5c31af7Sopenharmony_ci code:MeshNV {ExecutionModel} or the code:TaskEXT and code:MeshEXT 1865e5c31af7Sopenharmony_ci {ExecutionModel}, but must: not use both 1866e5c31af7Sopenharmony_ciendif::VK_NV_mesh_shader+VK_EXT_mesh_shader[] 1867e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pStages-00729]] 1868e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 1869e5c31af7Sopenharmony_ci pre-rasterization shader state>> and pname:pStages includes a 1870e5c31af7Sopenharmony_ci tessellation control shader stage, it must: include a tessellation 1871e5c31af7Sopenharmony_ci evaluation shader stage 1872e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pStages-00730]] 1873e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 1874e5c31af7Sopenharmony_ci pre-rasterization shader state>> and pname:pStages includes a 1875e5c31af7Sopenharmony_ci tessellation evaluation shader stage, it must: include a tessellation 1876e5c31af7Sopenharmony_ci control shader stage 1877e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pStages-09022]] 1878e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 1879e5c31af7Sopenharmony_ci pre-rasterization shader state>> and pname:pStages includes a 1880e5c31af7Sopenharmony_ci tessellation control shader stage, 1881e5c31af7Sopenharmony_ciifdef::VK_EXT_extended_dynamic_state3[] 1882e5c31af7Sopenharmony_ci and the `apiext:VK_EXT_extended_dynamic_state3` extension is not enabled 1883e5c31af7Sopenharmony_ci or the ename:VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT dynamic state is 1884e5c31af7Sopenharmony_ci not set, 1885e5c31af7Sopenharmony_ciendif::VK_EXT_extended_dynamic_state3[] 1886e5c31af7Sopenharmony_ci pname:pTessellationState must: be a valid pointer to a valid 1887e5c31af7Sopenharmony_ci slink:VkPipelineTessellationStateCreateInfo structure 1888e5c31af7Sopenharmony_ciifdef::VK_EXT_extended_dynamic_state3[] 1889e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pTessellationState-09023]] 1890e5c31af7Sopenharmony_ci If pname:pTessellationState is not `NULL` it must: be a pointer to a 1891e5c31af7Sopenharmony_ci valid slink:VkPipelineTessellationStateCreateInfo structure 1892e5c31af7Sopenharmony_ciendif::VK_EXT_extended_dynamic_state3[] 1893e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pStages-00732]] 1894e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 1895e5c31af7Sopenharmony_ci pre-rasterization shader state>> and pname:pStages includes tessellation 1896e5c31af7Sopenharmony_ci shader stages, the shader code of at least one stage must: contain an 1897e5c31af7Sopenharmony_ci code:OpExecutionMode instruction specifying the type of subdivision in 1898e5c31af7Sopenharmony_ci the pipeline 1899e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pStages-00733]] 1900e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 1901e5c31af7Sopenharmony_ci pre-rasterization shader state>> and pname:pStages includes tessellation 1902e5c31af7Sopenharmony_ci shader stages, and the shader code of both stages contain an 1903e5c31af7Sopenharmony_ci code:OpExecutionMode instruction specifying the type of subdivision in 1904e5c31af7Sopenharmony_ci the pipeline, they must: both specify the same subdivision mode 1905e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pStages-00734]] 1906e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 1907e5c31af7Sopenharmony_ci pre-rasterization shader state>> and pname:pStages includes tessellation 1908e5c31af7Sopenharmony_ci shader stages, the shader code of at least one stage must: contain an 1909e5c31af7Sopenharmony_ci code:OpExecutionMode instruction specifying the output patch size in the 1910e5c31af7Sopenharmony_ci pipeline 1911e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pStages-00735]] 1912e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 1913e5c31af7Sopenharmony_ci pre-rasterization shader state>> and pname:pStages includes tessellation 1914e5c31af7Sopenharmony_ci shader stages, and the shader code of both contain an 1915e5c31af7Sopenharmony_ci code:OpExecutionMode instruction specifying the out patch size in the 1916e5c31af7Sopenharmony_ci pipeline, they must: both specify the same patch size 1917e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pStages-08888]] 1918e5c31af7Sopenharmony_ci If the pipeline is being created with 1919e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-pre-rasterization, pre-rasterization shader 1920e5c31af7Sopenharmony_ci state>> and <<pipelines-graphics-subsets-vertex-input, vertex input 1921e5c31af7Sopenharmony_ci state>> and pname:pStages includes tessellation shader stages, 1922e5c31af7Sopenharmony_ciifdef::VK_EXT_extended_dynamic_state3[] 1923e5c31af7Sopenharmony_ci and either ename:VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY dynamic state is 1924e5c31af7Sopenharmony_ci not enabled or 1925e5c31af7Sopenharmony_ci <<limits-dynamicPrimitiveTopologyUnrestricted,pname:dynamicPrimitiveTopologyUnrestricted>> 1926e5c31af7Sopenharmony_ci is ename:VK_FALSE, 1927e5c31af7Sopenharmony_ciendif::VK_EXT_extended_dynamic_state3[] 1928e5c31af7Sopenharmony_ci the pname:topology member of pname:pInputAssembly must: be 1929e5c31af7Sopenharmony_ci ename:VK_PRIMITIVE_TOPOLOGY_PATCH_LIST 1930e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-topology-08889]] 1931e5c31af7Sopenharmony_ci If the pipeline is being created with 1932e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-pre-rasterization, pre-rasterization shader 1933e5c31af7Sopenharmony_ci state>> and <<pipelines-graphics-subsets-vertex-input, vertex input 1934e5c31af7Sopenharmony_ci state>> and the pname:topology member of pname:pInputAssembly is 1935e5c31af7Sopenharmony_ci ename:VK_PRIMITIVE_TOPOLOGY_PATCH_LIST, 1936e5c31af7Sopenharmony_ciifdef::VK_EXT_extended_dynamic_state3[] 1937e5c31af7Sopenharmony_ci and either ename:VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY dynamic state is 1938e5c31af7Sopenharmony_ci not enabled or 1939e5c31af7Sopenharmony_ci <<limits-dynamicPrimitiveTopologyUnrestricted,pname:dynamicPrimitiveTopologyUnrestricted>> 1940e5c31af7Sopenharmony_ci is ename:VK_FALSE, 1941e5c31af7Sopenharmony_ciendif::VK_EXT_extended_dynamic_state3[] 1942e5c31af7Sopenharmony_ci then pname:pStages must: include tessellation shader stages 1943e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-TessellationEvaluation-07723]] 1944e5c31af7Sopenharmony_ci If the pipeline is being created with a code:TessellationEvaluation 1945e5c31af7Sopenharmony_ci {ExecutionModel}, no code:Geometry {ExecutionModel}, uses the 1946e5c31af7Sopenharmony_ci code:PointMode {ExecutionMode}, and 1947e5c31af7Sopenharmony_ci <<features-shaderTessellationAndGeometryPointSize, 1948e5c31af7Sopenharmony_ci pname:shaderTessellationAndGeometryPointSize>> is enabled, a 1949e5c31af7Sopenharmony_ci code:PointSize decorated variable must: be written to 1950e5c31af7Sopenharmony_ciifdef::VK_KHR_maintenance5[] 1951e5c31af7Sopenharmony_ci if <<features-maintenance5, pname:maintenance5>> is not enabled 1952e5c31af7Sopenharmony_ciendif::VK_KHR_maintenance5[] 1953e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-topology-08773]] 1954e5c31af7Sopenharmony_ci If the pipeline is being created with a code:Vertex {ExecutionModel} and 1955e5c31af7Sopenharmony_ci no code:TessellationEvaluation or code:Geometry {ExecutionModel}, and 1956e5c31af7Sopenharmony_ci the pname:topology member of pname:pInputAssembly is 1957e5c31af7Sopenharmony_ci ename:VK_PRIMITIVE_TOPOLOGY_POINT_LIST, 1958e5c31af7Sopenharmony_ciifdef::VK_EXT_extended_dynamic_state3[] 1959e5c31af7Sopenharmony_ci and either ename:VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY dynamic state is 1960e5c31af7Sopenharmony_ci not enabled or 1961e5c31af7Sopenharmony_ci <<limits-dynamicPrimitiveTopologyUnrestricted,pname:dynamicPrimitiveTopologyUnrestricted>> 1962e5c31af7Sopenharmony_ci is ename:VK_FALSE, 1963e5c31af7Sopenharmony_ciendif::VK_EXT_extended_dynamic_state3[] 1964e5c31af7Sopenharmony_ci a code:PointSize decorated variable must: be written to 1965e5c31af7Sopenharmony_ciifdef::VK_KHR_maintenance5[] 1966e5c31af7Sopenharmony_ci if <<features-maintenance5, pname:maintenance5>> is not enabled 1967e5c31af7Sopenharmony_ciendif::VK_KHR_maintenance5[] 1968e5c31af7Sopenharmony_ciifdef::VK_KHR_maintenance5[] 1969e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-maintenance5-08775]] 1970e5c31af7Sopenharmony_ci If <<features-maintenance5, pname:maintenance5>> is enabled and a 1971e5c31af7Sopenharmony_ci code:PointSize decorated variable is written to, all execution paths 1972e5c31af7Sopenharmony_ci must: write to a code:PointSize decorated variable 1973e5c31af7Sopenharmony_ciendif::VK_KHR_maintenance5[] 1974e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-TessellationEvaluation-07724]] 1975e5c31af7Sopenharmony_ci If the pipeline is being created with a code:TessellationEvaluation 1976e5c31af7Sopenharmony_ci {ExecutionModel}, no code:Geometry {ExecutionModel}, uses the 1977e5c31af7Sopenharmony_ci code:PointMode {ExecutionMode}, and 1978e5c31af7Sopenharmony_ci <<features-shaderTessellationAndGeometryPointSize, 1979e5c31af7Sopenharmony_ci pname:shaderTessellationAndGeometryPointSize>> is not enabled, a 1980e5c31af7Sopenharmony_ci code:PointSize decorated variable must: not be written to 1981e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-shaderTessellationAndGeometryPointSize-08776]] 1982e5c31af7Sopenharmony_ci If the pipeline is being created with a code:Geometry {ExecutionModel}, 1983e5c31af7Sopenharmony_ci uses the code:OutputPoints {ExecutionMode}, and 1984e5c31af7Sopenharmony_ci <<features-shaderTessellationAndGeometryPointSize, 1985e5c31af7Sopenharmony_ci pname:shaderTessellationAndGeometryPointSize>> is enabled, a 1986e5c31af7Sopenharmony_ci code:PointSize decorated variable must: be written to for every vertex 1987e5c31af7Sopenharmony_ci emitted 1988e5c31af7Sopenharmony_ciifdef::VK_KHR_maintenance5[] 1989e5c31af7Sopenharmony_ci if <<features-maintenance5, pname:maintenance5>> is not enabled 1990e5c31af7Sopenharmony_ciendif::VK_KHR_maintenance5[] 1991e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-Geometry-07726]] 1992e5c31af7Sopenharmony_ci If the pipeline is being created with a code:Geometry {ExecutionModel}, 1993e5c31af7Sopenharmony_ci uses the code:OutputPoints {ExecutionMode}, and 1994e5c31af7Sopenharmony_ci <<features-shaderTessellationAndGeometryPointSize, 1995e5c31af7Sopenharmony_ci pname:shaderTessellationAndGeometryPointSize>> is not enabled, a 1996e5c31af7Sopenharmony_ci code:PointSize decorated variable must: not be written to 1997e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pStages-00738]] 1998e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 1999e5c31af7Sopenharmony_ci pre-rasterization shader state>> and pname:pStages includes a geometry 2000e5c31af7Sopenharmony_ci shader stage, and does not include any tessellation shader stages, its 2001e5c31af7Sopenharmony_ci shader code must: contain an code:OpExecutionMode instruction specifying 2002e5c31af7Sopenharmony_ci an input primitive type that is <<shaders-geometry-execution, 2003e5c31af7Sopenharmony_ci compatible>> with the primitive topology specified in 2004e5c31af7Sopenharmony_ci pname:pInputAssembly 2005e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pStages-00739]] 2006e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 2007e5c31af7Sopenharmony_ci pre-rasterization shader state>> and pname:pStages includes a geometry 2008e5c31af7Sopenharmony_ci shader stage, and also includes tessellation shader stages, its shader 2009e5c31af7Sopenharmony_ci code must: contain an code:OpExecutionMode instruction specifying an 2010e5c31af7Sopenharmony_ci input primitive type that is <<shaders-geometry-execution, compatible>> 2011e5c31af7Sopenharmony_ci with the primitive topology that is output by the tessellation stages 2012e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pStages-00740]] 2013e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 2014e5c31af7Sopenharmony_ci pre-rasterization shader state>> and 2015e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-fragment-shader, fragment shader state>>, 2016e5c31af7Sopenharmony_ci it includes both a fragment shader and a geometry shader, and the 2017e5c31af7Sopenharmony_ci fragment shader code reads from an input variable that is decorated with 2018e5c31af7Sopenharmony_ci code:PrimitiveId, then the geometry shader code must: write to a 2019e5c31af7Sopenharmony_ci matching output variable, decorated with code:PrimitiveId, in all 2020e5c31af7Sopenharmony_ci execution paths 2021e5c31af7Sopenharmony_ciifdef::VK_NV_mesh_shader,VK_EXT_mesh_shader[] 2022e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-PrimitiveId-06264]] 2023e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 2024e5c31af7Sopenharmony_ci pre-rasterization shader state>>, it includes a mesh shader and the 2025e5c31af7Sopenharmony_ci fragment shader code reads from an input variable that is decorated with 2026e5c31af7Sopenharmony_ci code:PrimitiveId, then the mesh shader code must: write to a matching 2027e5c31af7Sopenharmony_ci output variable, decorated with code:PrimitiveId, in all execution paths 2028e5c31af7Sopenharmony_ciendif::VK_NV_mesh_shader,VK_EXT_mesh_shader[] 2029e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-renderPass-06038]] 2030e5c31af7Sopenharmony_ci If pname:renderPass is not dlink:VK_NULL_HANDLE and the pipeline is 2031e5c31af7Sopenharmony_ci being created with <<pipelines-graphics-subsets-fragment-shader, 2032e5c31af7Sopenharmony_ci fragment shader state>> the fragment shader must: not read from any 2033e5c31af7Sopenharmony_ci input attachment that is defined as ename:VK_ATTACHMENT_UNUSED in 2034e5c31af7Sopenharmony_ci pname:subpass 2035e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pStages-00742]] 2036e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 2037e5c31af7Sopenharmony_ci pre-rasterization shader state>> and multiple pre-rasterization shader 2038e5c31af7Sopenharmony_ci stages are included in pname:pStages, the shader code for the entry 2039e5c31af7Sopenharmony_ci points identified by those pname:pStages and the rest of the state 2040e5c31af7Sopenharmony_ci identified by this structure must: adhere to the pipeline linking rules 2041e5c31af7Sopenharmony_ci described in the <<interfaces,Shader Interfaces>> chapter 2042e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-None-04889]] 2043e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 2044e5c31af7Sopenharmony_ci pre-rasterization shader state>> and 2045e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-fragment-shader, fragment shader state>>, 2046e5c31af7Sopenharmony_ci the fragment shader and last 2047e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-pre-rasterization,pre-rasterization shader 2048e5c31af7Sopenharmony_ci stage>> and any relevant state must: adhere to the pipeline linking 2049e5c31af7Sopenharmony_ci rules described in the <<interfaces,Shader Interfaces>> chapter 2050e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-renderPass-06041]] 2051e5c31af7Sopenharmony_ci If pname:renderPass is not dlink:VK_NULL_HANDLE, and the pipeline is 2052e5c31af7Sopenharmony_ci being created with <<pipelines-graphics-subsets-fragment-output, 2053e5c31af7Sopenharmony_ci fragment output interface state>>, then for each color attachment in the 2054e5c31af7Sopenharmony_ci subpass, if the <<potential-format-features,potential format features>> 2055e5c31af7Sopenharmony_ci of the format of the corresponding attachment description do not contain 2056e5c31af7Sopenharmony_ci ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, then the 2057e5c31af7Sopenharmony_ci pname:blendEnable member of the corresponding element of the 2058e5c31af7Sopenharmony_ci pname:pAttachments member of pname:pColorBlendState must: be 2059e5c31af7Sopenharmony_ci ename:VK_FALSE 2060e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-renderPass-07609]] 2061e5c31af7Sopenharmony_ci If pname:renderPass is not dlink:VK_NULL_HANDLE, and the pipeline is 2062e5c31af7Sopenharmony_ci being created with <<pipelines-graphics-subsets-fragment-output, 2063e5c31af7Sopenharmony_ci fragment output interface state>>, and the pname:pColorBlendState 2064e5c31af7Sopenharmony_ci pointer is not `NULL`, and the subpass uses color attachments, the 2065e5c31af7Sopenharmony_ci pname:attachmentCount member of pname:pColorBlendState must: be equal to 2066e5c31af7Sopenharmony_ci the pname:colorAttachmentCount used to create pname:subpass 2067e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04130]] 2068e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 2069e5c31af7Sopenharmony_ci pre-rasterization shader state>>, and pname:pViewportState->pViewports 2070e5c31af7Sopenharmony_ci is not dynamic, then pname:pViewportState->pViewports must: be a valid 2071e5c31af7Sopenharmony_ci pointer to an array of pname:pViewportState->viewportCount valid 2072e5c31af7Sopenharmony_ci sname:VkViewport structures 2073e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04131]] 2074e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 2075e5c31af7Sopenharmony_ci pre-rasterization shader state>>, and pname:pViewportState->pScissors is 2076e5c31af7Sopenharmony_ci not dynamic, then pname:pViewportState->pScissors must: be a valid 2077e5c31af7Sopenharmony_ci pointer to an array of pname:pViewportState->scissorCount sname:VkRect2D 2078e5c31af7Sopenharmony_ci structures 2079e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00749]] 2080e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 2081e5c31af7Sopenharmony_ci pre-rasterization shader state>>, and the <<features-wideLines, 2082e5c31af7Sopenharmony_ci pname:wideLines>> feature is not enabled, and no element of the 2083e5c31af7Sopenharmony_ci pname:pDynamicStates member of pname:pDynamicState is 2084e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_LINE_WIDTH, the pname:lineWidth member of 2085e5c31af7Sopenharmony_ci pname:pRasterizationState must: be `1.0` 2086e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-09024]] 2087e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 2088e5c31af7Sopenharmony_ci pre-rasterization shader state>>, and 2089e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_3,VK_EXT_extended_dynamic_state2[] 2090e5c31af7Sopenharmony_ci the ename:VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE dynamic state is 2091e5c31af7Sopenharmony_ci enabled or 2092e5c31af7Sopenharmony_ciendif::VK_VERSION_1_3,VK_EXT_extended_dynamic_state2[] 2093e5c31af7Sopenharmony_ci the pname:rasterizerDiscardEnable member of pname:pRasterizationState is 2094e5c31af7Sopenharmony_ci ename:VK_FALSE, 2095e5c31af7Sopenharmony_ciifdef::VK_EXT_extended_dynamic_state3[] 2096e5c31af7Sopenharmony_ci and either the `apiext:VK_EXT_extended_dynamic_state3` extension is not 2097e5c31af7Sopenharmony_ci enabled, or either the ename:VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT or 2098e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT dynamic states are not set, 2099e5c31af7Sopenharmony_ciendif::VK_EXT_extended_dynamic_state3[] 2100e5c31af7Sopenharmony_ci pname:pViewportState must: be a valid pointer to a valid 2101e5c31af7Sopenharmony_ci slink:VkPipelineViewportStateCreateInfo structure 2102e5c31af7Sopenharmony_ciifdef::VK_EXT_extended_dynamic_state3[] 2103e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pViewportState-09025]] 2104e5c31af7Sopenharmony_ci If pname:pViewportState is not `NULL` it must: be a valid pointer to a 2105e5c31af7Sopenharmony_ci valid slink:VkPipelineViewportStateCreateInfo structure 2106e5c31af7Sopenharmony_ciendif::VK_EXT_extended_dynamic_state3[] 2107e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pMultisampleState-09026]] 2108e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-fragment-output, 2109e5c31af7Sopenharmony_ci fragment output interface state>>, 2110e5c31af7Sopenharmony_ciifdef::VK_EXT_extended_dynamic_state3[] 2111e5c31af7Sopenharmony_ci and the `apiext:VK_EXT_extended_dynamic_state3` extension is not enabled 2112e5c31af7Sopenharmony_ci or any of the ename:VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT, 2113e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_SAMPLE_MASK_EXT, or 2114e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT dynamic states is 2115e5c31af7Sopenharmony_ci not set, or <<features-alphaToOne,alphaToOne>> is enabled on the device 2116e5c31af7Sopenharmony_ci and ename:VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT is not set, 2117e5c31af7Sopenharmony_ciendif::VK_EXT_extended_dynamic_state3[] 2118e5c31af7Sopenharmony_ci pname:pMultisampleState must: be a valid pointer to a valid 2119e5c31af7Sopenharmony_ci slink:VkPipelineMultisampleStateCreateInfo structure 2120e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pMultisampleState-09027]] 2121e5c31af7Sopenharmony_ci If pname:pMultisampleState is not `NULL` it must: be a valid pointer to 2122e5c31af7Sopenharmony_ci a valid slink:VkPipelineMultisampleStateCreateInfo structure 2123e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-alphaToCoverageEnable-08891]] 2124e5c31af7Sopenharmony_ci If the pipeline is being created with 2125e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-fragment-shader, fragment shader state>>, 2126e5c31af7Sopenharmony_ci the 2127e5c31af7Sopenharmony_ci slink:VkPipelineMultisampleStateCreateInfo::pname:alphaToCoverageEnable 2128e5c31af7Sopenharmony_ci is not ignored and is ename:VK_TRUE, then the 2129e5c31af7Sopenharmony_ci <<interfaces-fragmentoutput, Fragment Output Interface>> must: contain a 2130e5c31af7Sopenharmony_ci variable for the alpha code:Component word in code:Location 0 at 2131e5c31af7Sopenharmony_ci code:Index 0 2132e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-renderPass-09028]] 2133e5c31af7Sopenharmony_ci If pname:renderPass is not dlink:VK_NULL_HANDLE, the pipeline is being 2134e5c31af7Sopenharmony_ci created with <<pipelines-graphics-subsets-fragment-shader, fragment 2135e5c31af7Sopenharmony_ci shader state>>, and pname:subpass uses a depth/stencil attachment, 2136e5c31af7Sopenharmony_ciifdef::VK_EXT_extended_dynamic_state3[] 2137e5c31af7Sopenharmony_ci and the `apiext:VK_EXT_extended_dynamic_state3` extension is not enabled 2138e5c31af7Sopenharmony_ci or, any of the ename:VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE, 2139e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE, 2140e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_DEPTH_COMPARE_OP, 2141e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE, 2142e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE, 2143e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_STENCIL_OP, or 2144e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_DEPTH_BOUNDS dynamic states are not set, 2145e5c31af7Sopenharmony_ciendif::VK_EXT_extended_dynamic_state3[] 2146e5c31af7Sopenharmony_ci pname:pDepthStencilState must: be a valid pointer to a valid 2147e5c31af7Sopenharmony_ci slink:VkPipelineDepthStencilStateCreateInfo structure 2148e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pDepthStencilState-09029]] 2149e5c31af7Sopenharmony_ci If pname:pDepthStencilState is not `NULL` it must: be a valid pointer to 2150e5c31af7Sopenharmony_ci a valid slink:VkPipelineDepthStencilStateCreateInfo structure 2151e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-renderPass-09030]] 2152e5c31af7Sopenharmony_ci If pname:renderPass is not dlink:VK_NULL_HANDLE, the pipeline is being 2153e5c31af7Sopenharmony_ci created with <<pipelines-graphics-subsets-fragment-output, fragment 2154e5c31af7Sopenharmony_ci output interface state>>, and pname:subpass uses color attachments, 2155e5c31af7Sopenharmony_ciifdef::VK_EXT_extended_dynamic_state3[] 2156e5c31af7Sopenharmony_ci and `apiext:VK_EXT_extended_dynamic_state3` extension is not enabled, or 2157e5c31af7Sopenharmony_ci any of the ename:VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT, 2158e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_LOGIC_OP_EXT, 2159e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT, 2160e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT, 2161e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT, or 2162e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_BLEND_CONSTANTS dynamic states are not set, 2163e5c31af7Sopenharmony_ciendif::VK_EXT_extended_dynamic_state3[] 2164e5c31af7Sopenharmony_ci pname:pColorBlendState must: be a valid pointer to a valid 2165e5c31af7Sopenharmony_ci slink:VkPipelineColorBlendStateCreateInfo structure 2166e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00754]] 2167e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 2168e5c31af7Sopenharmony_ci pre-rasterization shader state>>, the <<features-depthBiasClamp, 2169e5c31af7Sopenharmony_ci pname:depthBiasClamp>> feature is not enabled, no element of the 2170e5c31af7Sopenharmony_ci pname:pDynamicStates member of pname:pDynamicState is 2171e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_DEPTH_BIAS, and the pname:depthBiasEnable member 2172e5c31af7Sopenharmony_ci of pname:pRasterizationState is ename:VK_TRUE, the pname:depthBiasClamp 2173e5c31af7Sopenharmony_ci member of pname:pRasterizationState must: be `0.0` 2174e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-02510]] 2175e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-fragment-shader, 2176e5c31af7Sopenharmony_ci fragment shader state>>, 2177e5c31af7Sopenharmony_ciifdef::VK_EXT_depth_range_unrestricted[] 2178e5c31af7Sopenharmony_ci the `apiext:VK_EXT_depth_range_unrestricted` extension is not enabled 2179e5c31af7Sopenharmony_ciendif::VK_EXT_depth_range_unrestricted[] 2180e5c31af7Sopenharmony_ci and no element of the pname:pDynamicStates member of pname:pDynamicState 2181e5c31af7Sopenharmony_ci is ename:VK_DYNAMIC_STATE_DEPTH_BOUNDS, and the 2182e5c31af7Sopenharmony_ci pname:depthBoundsTestEnable member of pname:pDepthStencilState is 2183e5c31af7Sopenharmony_ci ename:VK_TRUE, the pname:minDepthBounds and pname:maxDepthBounds members 2184e5c31af7Sopenharmony_ci of pname:pDepthStencilState must: be between `0.0` and `1.0`, inclusive 2185e5c31af7Sopenharmony_ciifdef::VK_EXT_sample_locations[] 2186e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-07610]] 2187e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-fragment-shader, 2188e5c31af7Sopenharmony_ci fragment shader state>> or <<pipelines-graphics-subsets-fragment-output, 2189e5c31af7Sopenharmony_ci fragment output interface state>>, and pname:rasterizationSamples and 2190e5c31af7Sopenharmony_ci pname:sampleLocationsInfo are not dynamic, and 2191e5c31af7Sopenharmony_ci slink:VkPipelineSampleLocationsStateCreateInfoEXT::pname:sampleLocationsEnable 2192e5c31af7Sopenharmony_ci included in the pname:pNext chain of pname:pMultisampleState is 2193e5c31af7Sopenharmony_ci ename:VK_TRUE, pname:sampleLocationsInfo.sampleLocationGridSize.width 2194e5c31af7Sopenharmony_ci must: evenly divide 2195e5c31af7Sopenharmony_ci slink:VkMultisamplePropertiesEXT::pname:sampleLocationGridSize.width as 2196e5c31af7Sopenharmony_ci returned by flink:vkGetPhysicalDeviceMultisamplePropertiesEXT with a 2197e5c31af7Sopenharmony_ci pname:samples parameter equaling pname:rasterizationSamples 2198e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-07611]] 2199e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-fragment-shader, 2200e5c31af7Sopenharmony_ci fragment shader state>> or <<pipelines-graphics-subsets-fragment-output, 2201e5c31af7Sopenharmony_ci fragment output interface state>>, and pname:rasterizationSamples and 2202e5c31af7Sopenharmony_ci pname:sampleLocationsInfo are not dynamic, and 2203e5c31af7Sopenharmony_ci slink:VkPipelineSampleLocationsStateCreateInfoEXT::pname:sampleLocationsEnable 2204e5c31af7Sopenharmony_ci the included in the pname:pNext chain of pname:pMultisampleState is 2205e5c31af7Sopenharmony_ci ename:VK_TRUE or ename:VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT is 2206e5c31af7Sopenharmony_ci used, pname:sampleLocationsInfo.sampleLocationGridSize.height must: 2207e5c31af7Sopenharmony_ci evenly divide 2208e5c31af7Sopenharmony_ci slink:VkMultisamplePropertiesEXT::pname:sampleLocationGridSize.height as 2209e5c31af7Sopenharmony_ci returned by flink:vkGetPhysicalDeviceMultisamplePropertiesEXT with a 2210e5c31af7Sopenharmony_ci pname:samples parameter equaling pname:rasterizationSamples 2211e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-07612]] 2212e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-fragment-shader, 2213e5c31af7Sopenharmony_ci fragment shader state>> or <<pipelines-graphics-subsets-fragment-output, 2214e5c31af7Sopenharmony_ci fragment output interface state>>, and pname:rasterizationSamples and 2215e5c31af7Sopenharmony_ci pname:sampleLocationsInfo are not dynamic, and 2216e5c31af7Sopenharmony_ci slink:VkPipelineSampleLocationsStateCreateInfoEXT::pname:sampleLocationsEnable 2217e5c31af7Sopenharmony_ci included in the pname:pNext chain of pname:pMultisampleState is 2218e5c31af7Sopenharmony_ci ename:VK_TRUE or ename:VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT is 2219e5c31af7Sopenharmony_ci used, pname:sampleLocationsInfo.sampleLocationsPerPixel must: equal 2220e5c31af7Sopenharmony_ci pname:rasterizationSamples 2221e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-sampleLocationsEnable-01524]] 2222e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-fragment-shader, 2223e5c31af7Sopenharmony_ci fragment shader state>>, and the pname:sampleLocationsEnable member of a 2224e5c31af7Sopenharmony_ci slink:VkPipelineSampleLocationsStateCreateInfoEXT structure included in 2225e5c31af7Sopenharmony_ci the pname:pNext chain of pname:pMultisampleState is ename:VK_TRUE, the 2226e5c31af7Sopenharmony_ci fragment shader code must: not statically use the extended instruction 2227e5c31af7Sopenharmony_ci code:InterpolateAtSample 2228e5c31af7Sopenharmony_ciendif::VK_EXT_sample_locations[] 2229e5c31af7Sopenharmony_ciifdef::VK_EXT_multisampled_render_to_single_sampled[] 2230e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-multisampledRenderToSingleSampled-06853]] 2231e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-fragment-output, 2232e5c31af7Sopenharmony_ci fragment output interface state>>, and none of the 2233e5c31af7Sopenharmony_ci `apiext:VK_AMD_mixed_attachment_samples` extension, the 2234e5c31af7Sopenharmony_ci `apiext:VK_NV_framebuffer_mixed_samples` extension, or the 2235e5c31af7Sopenharmony_ci <<features-multisampledRenderToSingleSampled, 2236e5c31af7Sopenharmony_ci pname:multisampledRenderToSingleSampled>> feature are enabled, 2237e5c31af7Sopenharmony_ci pname:rasterizationSamples is not dynamic, and if pname:subpass uses 2238e5c31af7Sopenharmony_ci color and/or depth/stencil attachments, then the 2239e5c31af7Sopenharmony_ci pname:rasterizationSamples member of pname:pMultisampleState must: be 2240e5c31af7Sopenharmony_ci the same as the sample count for those subpass attachments 2241e5c31af7Sopenharmony_ciendif::VK_EXT_multisampled_render_to_single_sampled[] 2242e5c31af7Sopenharmony_ciifdef::VK_AMD_mixed_attachment_samples[] 2243e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-subpass-01505]] 2244e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-fragment-output, 2245e5c31af7Sopenharmony_ci fragment output interface state>>, and the 2246e5c31af7Sopenharmony_ci `apiext:VK_AMD_mixed_attachment_samples` extension is enabled, 2247e5c31af7Sopenharmony_ci pname:rasterizationSamples is not dynamic, and if pname:subpass uses 2248e5c31af7Sopenharmony_ci color and/or depth/stencil attachments, then the 2249e5c31af7Sopenharmony_ci pname:rasterizationSamples member of pname:pMultisampleState must: equal 2250e5c31af7Sopenharmony_ci the maximum of the sample counts of those subpass attachments 2251e5c31af7Sopenharmony_ciendif::VK_AMD_mixed_attachment_samples[] 2252e5c31af7Sopenharmony_ciifdef::VK_EXT_multisampled_render_to_single_sampled[] 2253e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-renderPass-06854]] 2254e5c31af7Sopenharmony_ci If pname:renderPass is not dlink:VK_NULL_HANDLE, the 2255e5c31af7Sopenharmony_ci `apiext:VK_EXT_multisampled_render_to_single_sampled` extension is 2256e5c31af7Sopenharmony_ci enabled, pname:rasterizationSamples is not dynamic, and pname:subpass 2257e5c31af7Sopenharmony_ci has a slink:VkMultisampledRenderToSingleSampledInfoEXT structure 2258e5c31af7Sopenharmony_ci included in the slink:VkSubpassDescription2::pname:pNext chain with 2259e5c31af7Sopenharmony_ci pname:multisampledRenderToSingleSampledEnable equal to ename:VK_TRUE, 2260e5c31af7Sopenharmony_ci then the pname:rasterizationSamples member of pname:pMultisampleState 2261e5c31af7Sopenharmony_ci must: be equal to 2262e5c31af7Sopenharmony_ci slink:VkMultisampledRenderToSingleSampledInfoEXT::pname:rasterizationSamples 2263e5c31af7Sopenharmony_ciendif::VK_EXT_multisampled_render_to_single_sampled[] 2264e5c31af7Sopenharmony_ciifdef::VK_NV_framebuffer_mixed_samples[] 2265e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-subpass-01411]] 2266e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-fragment-output, 2267e5c31af7Sopenharmony_ci fragment output interface state>>, the 2268e5c31af7Sopenharmony_ci `apiext:VK_NV_framebuffer_mixed_samples` extension is enabled, 2269e5c31af7Sopenharmony_ci pname:rasterizationSamples is not dynamic, and if pname:subpass has a 2270e5c31af7Sopenharmony_ci depth/stencil attachment and depth test, stencil test, or depth bounds 2271e5c31af7Sopenharmony_ci test are enabled, then the pname:rasterizationSamples member of 2272e5c31af7Sopenharmony_ci pname:pMultisampleState must: be the same as the sample count of the 2273e5c31af7Sopenharmony_ci depth/stencil attachment 2274e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-subpass-01412]] 2275e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-fragment-output, 2276e5c31af7Sopenharmony_ci fragment output interface state>>, the 2277e5c31af7Sopenharmony_ci `apiext:VK_NV_framebuffer_mixed_samples` extension is enabled, 2278e5c31af7Sopenharmony_ci pname:rasterizationSamples is not dynamic, and if pname:subpass has any 2279e5c31af7Sopenharmony_ci color attachments, then the pname:rasterizationSamples member of 2280e5c31af7Sopenharmony_ci pname:pMultisampleState must: be greater than or equal to the sample 2281e5c31af7Sopenharmony_ci count for those subpass attachments 2282e5c31af7Sopenharmony_ciendif::VK_NV_framebuffer_mixed_samples[] 2283e5c31af7Sopenharmony_ciifdef::VK_NV_coverage_reduction_mode[] 2284e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-coverageReductionMode-02722]] 2285e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-fragment-output, 2286e5c31af7Sopenharmony_ci fragment output interface state>>, the 2287e5c31af7Sopenharmony_ci `apiext:VK_NV_coverage_reduction_mode` extension is enabled, and 2288e5c31af7Sopenharmony_ci pname:rasterizationSamples is not dynamic, the coverage reduction mode 2289e5c31af7Sopenharmony_ci specified by 2290e5c31af7Sopenharmony_ci slink:VkPipelineCoverageReductionStateCreateInfoNV::pname:coverageReductionMode, 2291e5c31af7Sopenharmony_ci the pname:rasterizationSamples member of pname:pMultisampleState and the 2292e5c31af7Sopenharmony_ci sample counts for the color and depth/stencil attachments (if the 2293e5c31af7Sopenharmony_ci subpass has them) must: be a valid combination returned by 2294e5c31af7Sopenharmony_ci fname:vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV 2295e5c31af7Sopenharmony_ciendif::VK_NV_coverage_reduction_mode[] 2296e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-subpass-00758]] 2297e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-fragment-output, 2298e5c31af7Sopenharmony_ci fragment output interface state>>, pname:rasterizationSamples is not 2299e5c31af7Sopenharmony_ci dynamic, and pname:subpass does not use any color and/or depth/stencil 2300e5c31af7Sopenharmony_ci attachments, then the pname:rasterizationSamples member of 2301e5c31af7Sopenharmony_ci pname:pMultisampleState must: follow the rules for a 2302e5c31af7Sopenharmony_ci <<renderpass-noattachments, zero-attachment subpass>> 2303e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-renderPass-06046]] 2304e5c31af7Sopenharmony_ci If pname:renderPass is not dlink:VK_NULL_HANDLE, pname:subpass must: be 2305e5c31af7Sopenharmony_ci a valid subpass within pname:renderPass 2306e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_1,VK_KHR_multiview[] 2307e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-renderPass-06047]] 2308e5c31af7Sopenharmony_ci If pname:renderPass is not dlink:VK_NULL_HANDLE, the pipeline is being 2309e5c31af7Sopenharmony_ci created with <<pipelines-graphics-subsets-pre-rasterization, 2310e5c31af7Sopenharmony_ci pre-rasterization shader state>>, pname:subpass viewMask is not `0`, and 2311e5c31af7Sopenharmony_ci pname:multiviewTessellationShader is not enabled, then pname:pStages 2312e5c31af7Sopenharmony_ci must: not include tessellation shaders 2313e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-renderPass-06048]] 2314e5c31af7Sopenharmony_ci If pname:renderPass is not dlink:VK_NULL_HANDLE, the pipeline is being 2315e5c31af7Sopenharmony_ci created with <<pipelines-graphics-subsets-pre-rasterization, 2316e5c31af7Sopenharmony_ci pre-rasterization shader state>>, pname:subpass viewMask is not `0`, and 2317e5c31af7Sopenharmony_ci pname:multiviewGeometryShader is not enabled, then pname:pStages must: 2318e5c31af7Sopenharmony_ci not include a geometry shader 2319e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-renderPass-06049]] 2320e5c31af7Sopenharmony_ci If pname:renderPass is not dlink:VK_NULL_HANDLE, the pipeline is being 2321e5c31af7Sopenharmony_ci created with <<pipelines-graphics-subsets-pre-rasterization, 2322e5c31af7Sopenharmony_ci pre-rasterization shader state>>, and pname:subpass viewMask is not `0`, 2323e5c31af7Sopenharmony_ci all of the shaders in the pipeline must: not write to the code:Layer 2324e5c31af7Sopenharmony_ci built-in output 2325e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-renderPass-06050]] 2326e5c31af7Sopenharmony_ci If pname:renderPass is not dlink:VK_NULL_HANDLE and the pipeline is 2327e5c31af7Sopenharmony_ci being created with <<pipelines-graphics-subsets-pre-rasterization, 2328e5c31af7Sopenharmony_ci pre-rasterization shader state>>, and pname:subpass viewMask is not `0`, 2329e5c31af7Sopenharmony_ci then all of the shaders in the pipeline must: not include variables 2330e5c31af7Sopenharmony_ci decorated with the code:Layer built-in decoration in their interfaces 2331e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-renderPass-07717]] 2332e5c31af7Sopenharmony_ci If pname:renderPass is not dlink:VK_NULL_HANDLE and the pipeline is 2333e5c31af7Sopenharmony_ci being created with <<pipelines-graphics-subsets-pre-rasterization, 2334e5c31af7Sopenharmony_ci pre-rasterization shader state>>, and pname:subpass viewMask is not `0`, 2335e5c31af7Sopenharmony_ci then all of the shaders in the pipeline must: not include variables 2336e5c31af7Sopenharmony_ci decorated with the code:ViewMask built-in decoration in their interfaces 2337e5c31af7Sopenharmony_ciifdef::VK_EXT_mesh_shader[] 2338e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-renderPass-07064]] 2339e5c31af7Sopenharmony_ci If pname:renderPass is not dlink:VK_NULL_HANDLE, the pipeline is being 2340e5c31af7Sopenharmony_ci created with <<pipelines-graphics-subsets-pre-rasterization, 2341e5c31af7Sopenharmony_ci pre-rasterization shader state>>, pname:subpass viewMask is not `0`, and 2342e5c31af7Sopenharmony_ci pname:multiviewMeshShader is not enabled, then pname:pStages must: not 2343e5c31af7Sopenharmony_ci include a mesh shader 2344e5c31af7Sopenharmony_ciendif::VK_EXT_mesh_shader[] 2345e5c31af7Sopenharmony_ciendif::VK_VERSION_1_1,VK_KHR_multiview[] 2346e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_1,VK_KHR_device_group[] 2347e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-flags-00764]] 2348e5c31af7Sopenharmony_ci pname:flags must: not contain the ename:VK_PIPELINE_CREATE_DISPATCH_BASE 2349e5c31af7Sopenharmony_ci flag 2350e5c31af7Sopenharmony_ciendif::VK_VERSION_1_1,VK_KHR_device_group[] 2351e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_1,VK_KHR_maintenance2,VK_KHR_create_renderpass2[] 2352e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pStages-01565]] 2353e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-fragment-shader, 2354e5c31af7Sopenharmony_ci fragment shader state>> and an input attachment was referenced by an 2355e5c31af7Sopenharmony_ci pname:aspectMask at pname:renderPass creation time, the fragment shader 2356e5c31af7Sopenharmony_ci must: only read from the aspects that were specified for that input 2357e5c31af7Sopenharmony_ci attachment 2358e5c31af7Sopenharmony_ciendif::VK_VERSION_1_1,VK_KHR_maintenance2,VK_KHR_create_renderpass2[] 2359e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-layout-01688]] 2360e5c31af7Sopenharmony_ci The number of resources in pname:layout accessible to each shader stage 2361e5c31af7Sopenharmony_ci that is used by the pipeline must: be less than or equal to 2362e5c31af7Sopenharmony_ci sname:VkPhysicalDeviceLimits::pname:maxPerStageResources 2363e5c31af7Sopenharmony_ciifdef::VK_NV_clip_space_w_scaling[] 2364e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01715]] 2365e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 2366e5c31af7Sopenharmony_ci pre-rasterization shader state>>, and no element of the 2367e5c31af7Sopenharmony_ci pname:pDynamicStates member of pname:pDynamicState is 2368e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV, and the 2369e5c31af7Sopenharmony_ci pname:viewportWScalingEnable member of a 2370e5c31af7Sopenharmony_ci slink:VkPipelineViewportWScalingStateCreateInfoNV structure, included in 2371e5c31af7Sopenharmony_ci the pname:pNext chain of pname:pViewportState, is ename:VK_TRUE, the 2372e5c31af7Sopenharmony_ci pname:pViewportWScalings member of the 2373e5c31af7Sopenharmony_ci slink:VkPipelineViewportWScalingStateCreateInfoNV must: be a pointer to 2374e5c31af7Sopenharmony_ci an array of 2375e5c31af7Sopenharmony_ci slink:VkPipelineViewportWScalingStateCreateInfoNV::pname:viewportCount 2376e5c31af7Sopenharmony_ci valid slink:VkViewportWScalingNV structures 2377e5c31af7Sopenharmony_ciendif::VK_NV_clip_space_w_scaling[] 2378e5c31af7Sopenharmony_ciifdef::VK_NV_scissor_exclusive[] 2379e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04056]] 2380e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 2381e5c31af7Sopenharmony_ci pre-rasterization shader state>>, and no element of the 2382e5c31af7Sopenharmony_ci pname:pDynamicStates member of pname:pDynamicState is 2383e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV, and if 2384e5c31af7Sopenharmony_ci pname:pViewportState->pNext chain includes a 2385e5c31af7Sopenharmony_ci slink:VkPipelineViewportExclusiveScissorStateCreateInfoNV structure, and 2386e5c31af7Sopenharmony_ci if its pname:exclusiveScissorCount member is not `0`, then its 2387e5c31af7Sopenharmony_ci pname:pExclusiveScissors member must: be a valid pointer to an array of 2388e5c31af7Sopenharmony_ci pname:exclusiveScissorCount slink:VkRect2D structures 2389e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-07854]] 2390e5c31af7Sopenharmony_ci If ename:VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV is included in the 2391e5c31af7Sopenharmony_ci pname:pDynamicStates array then the implementation must: support at 2392e5c31af7Sopenharmony_ci least pname:specVersion `2` of the `apiext:VK_NV_scissor_exclusive` 2393e5c31af7Sopenharmony_ci extension 2394e5c31af7Sopenharmony_ciendif::VK_NV_scissor_exclusive[] 2395e5c31af7Sopenharmony_ciifdef::VK_NV_shading_rate_image[] 2396e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04057]] 2397e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 2398e5c31af7Sopenharmony_ci pre-rasterization shader state>>, and no element of the 2399e5c31af7Sopenharmony_ci pname:pDynamicStates member of pname:pDynamicState is 2400e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV, and if 2401e5c31af7Sopenharmony_ci pname:pViewportState->pNext chain includes a 2402e5c31af7Sopenharmony_ci slink:VkPipelineViewportShadingRateImageStateCreateInfoNV structure, 2403e5c31af7Sopenharmony_ci then its pname:pShadingRatePalettes member must: be a valid pointer to 2404e5c31af7Sopenharmony_ci an array of pname:viewportCount valid slink:VkShadingRatePaletteNV 2405e5c31af7Sopenharmony_ci structures 2406e5c31af7Sopenharmony_ciendif::VK_NV_shading_rate_image[] 2407e5c31af7Sopenharmony_ciifdef::VK_EXT_discard_rectangles[] 2408e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04058]] 2409e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 2410e5c31af7Sopenharmony_ci pre-rasterization shader state>>, and no element of the 2411e5c31af7Sopenharmony_ci pname:pDynamicStates member of pname:pDynamicState is 2412e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT, and if pname:pNext chain 2413e5c31af7Sopenharmony_ci includes a slink:VkPipelineDiscardRectangleStateCreateInfoEXT structure, 2414e5c31af7Sopenharmony_ci and if its pname:discardRectangleCount member is not `0`, then its 2415e5c31af7Sopenharmony_ci pname:pDiscardRectangles member must: be a valid pointer to an array of 2416e5c31af7Sopenharmony_ci pname:discardRectangleCount slink:VkRect2D structures 2417e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-07855]] 2418e5c31af7Sopenharmony_ci If ename:VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT is included in 2419e5c31af7Sopenharmony_ci the pname:pDynamicStates array then the implementation must: support at 2420e5c31af7Sopenharmony_ci least pname:specVersion `2` of the `apiext:VK_EXT_discard_rectangles` 2421e5c31af7Sopenharmony_ci extension 2422e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-07856]] 2423e5c31af7Sopenharmony_ci If ename:VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT is included in the 2424e5c31af7Sopenharmony_ci pname:pDynamicStates array then the implementation must: support at 2425e5c31af7Sopenharmony_ci least pname:specVersion `2` of the `apiext:VK_EXT_discard_rectangles` 2426e5c31af7Sopenharmony_ci extension 2427e5c31af7Sopenharmony_ciendif::VK_EXT_discard_rectangles[] 2428e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pStages-02097]] 2429e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-vertex-input, 2430e5c31af7Sopenharmony_ci vertex input state>>, and pname:pVertexInputState is not dynamic, then 2431e5c31af7Sopenharmony_ci pname:pVertexInputState must: be a valid pointer to a valid 2432e5c31af7Sopenharmony_ci slink:VkPipelineVertexInputStateCreateInfo structure 2433e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-Input-07904]] 2434e5c31af7Sopenharmony_ci If the pipeline is being created with 2435e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-vertex-input, vertex input state>> and 2436e5c31af7Sopenharmony_ci pname:pVertexInputState is not dynamic, then all variables with the 2437e5c31af7Sopenharmony_ci code:Input storage class decorated with code:Location in the code:Vertex 2438e5c31af7Sopenharmony_ci {ExecutionModel} code:OpEntryPoint must: contain a location in 2439e5c31af7Sopenharmony_ci slink:VkVertexInputAttributeDescription::pname:location 2440e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-Input-08733]] 2441e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-vertex-input, 2442e5c31af7Sopenharmony_ci vertex input state>> and pname:pVertexInputState is not dynamic, then 2443e5c31af7Sopenharmony_ci the numeric type associated with all code:Input variables of the 2444e5c31af7Sopenharmony_ci corresponding code:Location in the code:Vertex {ExecutionModel} 2445e5c31af7Sopenharmony_ci code:OpEntryPoint must: be the same as 2446e5c31af7Sopenharmony_ci slink:VkVertexInputAttributeDescription::pname:format 2447e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pVertexInputState-08929]] 2448e5c31af7Sopenharmony_ci If the pipeline is being created with 2449e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-vertex-input, vertex input state>> and 2450e5c31af7Sopenharmony_ci pname:pVertexInputState is not dynamic, and 2451e5c31af7Sopenharmony_ci slink:VkVertexInputAttributeDescription::pname:format has a 64-bit 2452e5c31af7Sopenharmony_ci component, then the scalar width associated with all code:Input 2453e5c31af7Sopenharmony_ci variables of the corresponding code:Location in the code:Vertex 2454e5c31af7Sopenharmony_ci {ExecutionModel} code:OpEntryPoint must: be 64-bit 2455e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pVertexInputState-08930]] 2456e5c31af7Sopenharmony_ci If the pipeline is being created with 2457e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-vertex-input, vertex input state>> and 2458e5c31af7Sopenharmony_ci pname:pVertexInputState is not dynamic, and the scalar width associated 2459e5c31af7Sopenharmony_ci with a code:Location decorated code:Input variable in the code:Vertex 2460e5c31af7Sopenharmony_ci {ExecutionModel} code:OpEntryPoint is 64-bit, then the corresponding 2461e5c31af7Sopenharmony_ci slink:VkVertexInputAttributeDescription::pname:format must: have a 2462e5c31af7Sopenharmony_ci 64-bit component 2463e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pVertexInputState-09198]] 2464e5c31af7Sopenharmony_ci If the pipeline is being created with 2465e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-vertex-input, vertex input state>> and 2466e5c31af7Sopenharmony_ci pname:pVertexInputState is not dynamic, and 2467e5c31af7Sopenharmony_ci slink:VkVertexInputAttributeDescription::pname:format has a 64-bit 2468e5c31af7Sopenharmony_ci component, then all code:Input variables at the corresponding 2469e5c31af7Sopenharmony_ci code:Location in the code:Vertex {ExecutionModel} code:OpEntryPoint 2470e5c31af7Sopenharmony_ci must: not use components that are not present in the format 2471e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-dynamicPrimitiveTopologyUnrestricted-09031]] 2472e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-vertex-input, 2473e5c31af7Sopenharmony_ci vertex input state>>, 2474e5c31af7Sopenharmony_ciifdef::VK_EXT_extended_dynamic_state3[] 2475e5c31af7Sopenharmony_ci and the `apiext:VK_EXT_extended_dynamic_state3` extension is not 2476e5c31af7Sopenharmony_ci enabled, or either ename:VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE, or 2477e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY dynamic states are not set, or 2478e5c31af7Sopenharmony_ci <<limits-dynamicPrimitiveTopologyUnrestricted, 2479e5c31af7Sopenharmony_ci pname:dynamicPrimitiveTopologyUnrestricted>> is ename:VK_FALSE, 2480e5c31af7Sopenharmony_ciendif::VK_EXT_extended_dynamic_state3[] 2481e5c31af7Sopenharmony_ci pname:pInputAssemblyState must: be a valid pointer to a valid 2482e5c31af7Sopenharmony_ci slink:VkPipelineInputAssemblyStateCreateInfo structure 2483e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pInputAssemblyState-09032]] 2484e5c31af7Sopenharmony_ci If pname:pInputAssemblyState is not `NULL` it must: be a valid pointer 2485e5c31af7Sopenharmony_ci to a valid slink:VkPipelineInputAssemblyStateCreateInfo structure 2486e5c31af7Sopenharmony_ciifdef::VK_EXT_transform_feedback[] 2487e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pStages-02317]] 2488e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 2489e5c31af7Sopenharmony_ci pre-rasterization shader state>>, the code:Xfb execution mode can: be 2490e5c31af7Sopenharmony_ci specified by no more than one shader stage in pname:pStages 2491e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pStages-02318]] 2492e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 2493e5c31af7Sopenharmony_ci pre-rasterization shader state>>, and any shader stage in pname:pStages 2494e5c31af7Sopenharmony_ci specifies code:Xfb execution mode it must: be the last 2495e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-pre-rasterization,pre-rasterization shader 2496e5c31af7Sopenharmony_ci stage>> 2497e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-rasterizationStream-02319]] 2498e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 2499e5c31af7Sopenharmony_ci pre-rasterization shader state>>, and a 2500e5c31af7Sopenharmony_ci slink:VkPipelineRasterizationStateStreamCreateInfoEXT::pname:rasterizationStream 2501e5c31af7Sopenharmony_ci value other than zero is specified, all variables in the output 2502e5c31af7Sopenharmony_ci interface of the entry point being compiled decorated with 2503e5c31af7Sopenharmony_ci code:Position, code:PointSize, code:ClipDistance, or code:CullDistance 2504e5c31af7Sopenharmony_ci must: be decorated with identical code:Stream values that match the 2505e5c31af7Sopenharmony_ci pname:rasterizationStream 2506e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-rasterizationStream-02320]] 2507e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 2508e5c31af7Sopenharmony_ci pre-rasterization shader state>>, and 2509e5c31af7Sopenharmony_ci slink:VkPipelineRasterizationStateStreamCreateInfoEXT::pname:rasterizationStream 2510e5c31af7Sopenharmony_ci is zero, or not specified, all variables in the output interface of the 2511e5c31af7Sopenharmony_ci entry point being compiled decorated with code:Position, code:PointSize, 2512e5c31af7Sopenharmony_ci code:ClipDistance, or code:CullDistance must: be decorated with a 2513e5c31af7Sopenharmony_ci code:Stream value of zero, or must: not specify the code:Stream 2514e5c31af7Sopenharmony_ci decoration 2515e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-geometryStreams-02321]] 2516e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 2517e5c31af7Sopenharmony_ci pre-rasterization shader state>>, and the last 2518e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-pre-rasterization,pre-rasterization shader 2519e5c31af7Sopenharmony_ci stage>> is a geometry shader, and that geometry shader uses the 2520e5c31af7Sopenharmony_ci code:GeometryStreams capability, then 2521e5c31af7Sopenharmony_ci sname:VkPhysicalDeviceTransformFeedbackFeaturesEXT::pname:geometryStreams 2522e5c31af7Sopenharmony_ci feature must: be enabled 2523e5c31af7Sopenharmony_ciifdef::VK_NV_mesh_shader,VK_EXT_mesh_shader[] 2524e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-None-02322]] 2525e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 2526e5c31af7Sopenharmony_ci pre-rasterization shader state>>, and there are any mesh shader stages 2527e5c31af7Sopenharmony_ci in the pipeline there must: not be any shader stage in the pipeline with 2528e5c31af7Sopenharmony_ci a code:Xfb execution mode 2529e5c31af7Sopenharmony_ciendif::VK_NV_mesh_shader,VK_EXT_mesh_shader[] 2530e5c31af7Sopenharmony_ciendif::VK_EXT_transform_feedback[] 2531e5c31af7Sopenharmony_ciifdef::VK_EXT_line_rasterization[] 2532e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-lineRasterizationMode-02766]] 2533e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 2534e5c31af7Sopenharmony_ci pre-rasterization shader state>> and at least one of 2535e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-fragment-output, fragment output interface 2536e5c31af7Sopenharmony_ci state>> or <<pipelines-graphics-subsets-fragment-shader, fragment shader 2537e5c31af7Sopenharmony_ci state>>, and pname:pMultisampleState is not `NULL`, the 2538e5c31af7Sopenharmony_ci pname:lineRasterizationMode member of a 2539e5c31af7Sopenharmony_ci slink:VkPipelineRasterizationLineStateCreateInfoEXT structure included 2540e5c31af7Sopenharmony_ci in the pname:pNext chain of pname:pRasterizationState is 2541e5c31af7Sopenharmony_ci ename:VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT or 2542e5c31af7Sopenharmony_ci ename:VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT, then the 2543e5c31af7Sopenharmony_ci pname:alphaToCoverageEnable, pname:alphaToOneEnable, and 2544e5c31af7Sopenharmony_ci pname:sampleShadingEnable members of pname:pMultisampleState must: all 2545e5c31af7Sopenharmony_ci be ename:VK_FALSE 2546e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-stippledLineEnable-02767]] 2547e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 2548e5c31af7Sopenharmony_ci pre-rasterization shader state>>, the pname:stippledLineEnable member of 2549e5c31af7Sopenharmony_ci slink:VkPipelineRasterizationLineStateCreateInfoEXT is ename:VK_TRUE, 2550e5c31af7Sopenharmony_ci and no element of the pname:pDynamicStates member of pname:pDynamicState 2551e5c31af7Sopenharmony_ci is ename:VK_DYNAMIC_STATE_LINE_STIPPLE_EXT, then the 2552e5c31af7Sopenharmony_ci pname:lineStippleFactor member of 2553e5c31af7Sopenharmony_ci slink:VkPipelineRasterizationLineStateCreateInfoEXT must: be in the 2554e5c31af7Sopenharmony_ci range [eq]#[1,256]# 2555e5c31af7Sopenharmony_ciendif::VK_EXT_line_rasterization[] 2556e5c31af7Sopenharmony_ciifdef::VK_KHR_ray_tracing_pipeline[] 2557e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-flags-03372]] 2558e5c31af7Sopenharmony_ci pname:flags must: not include 2559e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR 2560e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-flags-03373]] 2561e5c31af7Sopenharmony_ci pname:flags must: not include 2562e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR 2563e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-flags-03374]] 2564e5c31af7Sopenharmony_ci pname:flags must: not include 2565e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR 2566e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-flags-03375]] 2567e5c31af7Sopenharmony_ci pname:flags must: not include 2568e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR 2569e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-flags-03376]] 2570e5c31af7Sopenharmony_ci pname:flags must: not include 2571e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR 2572e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-flags-03377]] 2573e5c31af7Sopenharmony_ci pname:flags must: not include 2574e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR 2575e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-flags-03577]] 2576e5c31af7Sopenharmony_ci pname:flags must: not include 2577e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR 2578e5c31af7Sopenharmony_ciendif::VK_KHR_ray_tracing_pipeline[] 2579e5c31af7Sopenharmony_ciifdef::VK_NV_ray_tracing_motion_blur[] 2580e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-flags-04947]] 2581e5c31af7Sopenharmony_ci pname:flags must: not include 2582e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV 2583e5c31af7Sopenharmony_ciendif::VK_NV_ray_tracing_motion_blur[] 2584e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_3,VK_EXT_extended_dynamic_state[] 2585e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-03378]] 2586e5c31af7Sopenharmony_ci If 2587e5c31af7Sopenharmony_ciifdef::VK_EXT_extended_dynamic_state[] 2588e5c31af7Sopenharmony_ci the <<features-extendedDynamicState, pname:extendedDynamicState>> 2589e5c31af7Sopenharmony_ci feature is not enabled, 2590e5c31af7Sopenharmony_ciendif::VK_EXT_extended_dynamic_state[] 2591e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_3+VK_EXT_extended_dynamic_state[and] 2592e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_3[] 2593e5c31af7Sopenharmony_ci the value of slink:VkApplicationInfo::pname:apiVersion used to create 2594e5c31af7Sopenharmony_ci the slink:VkInstance is less than Version 1.3 2595e5c31af7Sopenharmony_ciendif::VK_VERSION_1_3[] 2596e5c31af7Sopenharmony_ci there must: be no element of the pname:pDynamicStates member of 2597e5c31af7Sopenharmony_ci pname:pDynamicState set to ename:VK_DYNAMIC_STATE_CULL_MODE, 2598e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_FRONT_FACE, 2599e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY, 2600e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT, 2601e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT, 2602e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE, 2603e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE, 2604e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE, 2605e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_DEPTH_COMPARE_OP, 2606e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE, 2607e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE, or 2608e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_STENCIL_OP 2609e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-03379]] 2610e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 2611e5c31af7Sopenharmony_ci pre-rasterization shader state>>, and 2612e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT is included in the 2613e5c31af7Sopenharmony_ci pname:pDynamicStates array then pname:viewportCount must: be zero 2614e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-03380]] 2615e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 2616e5c31af7Sopenharmony_ci pre-rasterization shader state>>, and 2617e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT is included in the 2618e5c31af7Sopenharmony_ci pname:pDynamicStates array then pname:scissorCount must: be zero 2619e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04132]] 2620e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 2621e5c31af7Sopenharmony_ci pre-rasterization shader state>>, and 2622e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT is included in the 2623e5c31af7Sopenharmony_ci pname:pDynamicStates array then ename:VK_DYNAMIC_STATE_VIEWPORT must: 2624e5c31af7Sopenharmony_ci not be present 2625e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04133]] 2626e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 2627e5c31af7Sopenharmony_ci pre-rasterization shader state>>, and 2628e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT is included in the 2629e5c31af7Sopenharmony_ci pname:pDynamicStates array then ename:VK_DYNAMIC_STATE_SCISSOR must: not 2630e5c31af7Sopenharmony_ci be present 2631e5c31af7Sopenharmony_ciifdef::VK_NV_mesh_shader,VK_EXT_mesh_shader[] 2632e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-07065]] 2633e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 2634e5c31af7Sopenharmony_ci pre-rasterization shader state>>, and includes a mesh shader, there 2635e5c31af7Sopenharmony_ci must: be no element of the pname:pDynamicStates member of 2636e5c31af7Sopenharmony_ci pname:pDynamicState set to ename:VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY, or 2637e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE 2638e5c31af7Sopenharmony_ciendif::VK_NV_mesh_shader,VK_EXT_mesh_shader[] 2639e5c31af7Sopenharmony_ciendif::VK_VERSION_1_3,VK_EXT_extended_dynamic_state[] 2640e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_3,VK_EXT_extended_dynamic_state2[] 2641e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04868]] 2642e5c31af7Sopenharmony_ci If 2643e5c31af7Sopenharmony_ciifdef::VK_EXT_extended_dynamic_state[] 2644e5c31af7Sopenharmony_ci the <<features-extendedDynamicState2, pname:extendedDynamicState2>> 2645e5c31af7Sopenharmony_ci feature is not enabled, 2646e5c31af7Sopenharmony_ciendif::VK_EXT_extended_dynamic_state[] 2647e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_3+VK_EXT_extended_dynamic_state[and] 2648e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_3[] 2649e5c31af7Sopenharmony_ci the value of slink:VkApplicationInfo::pname:apiVersion used to create 2650e5c31af7Sopenharmony_ci the slink:VkInstance is less than Version 1.3 2651e5c31af7Sopenharmony_ciendif::VK_VERSION_1_3[] 2652e5c31af7Sopenharmony_ci there must: be no element of the pname:pDynamicStates member of 2653e5c31af7Sopenharmony_ci pname:pDynamicState set to ename:VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE, 2654e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE, or 2655e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE 2656e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04869]] 2657e5c31af7Sopenharmony_ci If the <<features-extendedDynamicState2LogicOp, 2658e5c31af7Sopenharmony_ci pname:extendedDynamicState2LogicOp>> feature is not enabled, there must: 2659e5c31af7Sopenharmony_ci be no element of the pname:pDynamicStates member of pname:pDynamicState 2660e5c31af7Sopenharmony_ci set to ename:VK_DYNAMIC_STATE_LOGIC_OP_EXT 2661e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04870]] 2662e5c31af7Sopenharmony_ci If the <<features-extendedDynamicState2PatchControlPoints, 2663e5c31af7Sopenharmony_ci pname:extendedDynamicState2PatchControlPoints>> feature is not enabled, 2664e5c31af7Sopenharmony_ci there must: be no element of the pname:pDynamicStates member of 2665e5c31af7Sopenharmony_ci pname:pDynamicState set to 2666e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT 2667e5c31af7Sopenharmony_ciifdef::VK_NV_mesh_shader,VK_EXT_mesh_shader[] 2668e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-07066]] 2669e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 2670e5c31af7Sopenharmony_ci pre-rasterization shader state>>, and includes a mesh shader, there 2671e5c31af7Sopenharmony_ci must: be no element of the pname:pDynamicStates member of 2672e5c31af7Sopenharmony_ci pname:pDynamicState set to 2673e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE, or 2674e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT 2675e5c31af7Sopenharmony_ciendif::VK_NV_mesh_shader,VK_EXT_mesh_shader[] 2676e5c31af7Sopenharmony_ciendif::VK_VERSION_1_3,VK_EXT_extended_dynamic_state2[] 2677e5c31af7Sopenharmony_ciifdef::VK_NV_device_generated_commands[] 2678e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-flags-02877]] 2679e5c31af7Sopenharmony_ci If pname:flags includes 2680e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV, then the 2681e5c31af7Sopenharmony_ci <<features-deviceGeneratedCommands, pname:deviceGeneratedCommands>> 2682e5c31af7Sopenharmony_ci feature must: be enabled 2683e5c31af7Sopenharmony_ciifdef::VK_EXT_transform_feedback[] 2684e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-flags-02966]] 2685e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 2686e5c31af7Sopenharmony_ci pre-rasterization shader state>> and pname:flags includes 2687e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV, then all stages must: 2688e5c31af7Sopenharmony_ci not specify code:Xfb execution mode 2689e5c31af7Sopenharmony_ciendif::VK_EXT_transform_feedback[] 2690e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-libraryCount-06648]] 2691e5c31af7Sopenharmony_ci If the pipeline is not created with a 2692e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-complete, complete set of state>>, 2693e5c31af7Sopenharmony_ciifdef::VK_EXT_graphics_pipeline_library[] 2694e5c31af7Sopenharmony_ci or slink:VkPipelineLibraryCreateInfoKHR::pname:libraryCount is not `0`, 2695e5c31af7Sopenharmony_ciendif::VK_EXT_graphics_pipeline_library[] 2696e5c31af7Sopenharmony_ci slink:VkGraphicsPipelineShaderGroupsCreateInfoNV::pname:groupCount and 2697e5c31af7Sopenharmony_ci slink:VkGraphicsPipelineShaderGroupsCreateInfoNV::pname:pipelineCount 2698e5c31af7Sopenharmony_ci must: be `0` 2699e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-libraryCount-06649]] 2700e5c31af7Sopenharmony_ci If the pipeline is created with a <<pipelines-graphics-subsets-complete, 2701e5c31af7Sopenharmony_ci complete set of state>>, 2702e5c31af7Sopenharmony_ciifdef::VK_EXT_graphics_pipeline_library[] 2703e5c31af7Sopenharmony_ci and slink:VkPipelineLibraryCreateInfoKHR::pname:libraryCount is `0`, 2704e5c31af7Sopenharmony_ciendif::VK_EXT_graphics_pipeline_library[] 2705e5c31af7Sopenharmony_ci and the pname:pNext chain includes an instance of 2706e5c31af7Sopenharmony_ci slink:VkGraphicsPipelineShaderGroupsCreateInfoNV, 2707e5c31af7Sopenharmony_ci slink:VkGraphicsPipelineShaderGroupsCreateInfoNV::pname:groupCount must: 2708e5c31af7Sopenharmony_ci be greater than `0` 2709e5c31af7Sopenharmony_ciendif::VK_NV_device_generated_commands[] 2710e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control[] 2711e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pipelineCreationCacheControl-02878]] 2712e5c31af7Sopenharmony_ci If the <<features-pipelineCreationCacheControl, 2713e5c31af7Sopenharmony_ci pname:pipelineCreationCacheControl>> feature is not enabled, pname:flags 2714e5c31af7Sopenharmony_ci must: not include 2715e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT or 2716e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT 2717e5c31af7Sopenharmony_ciendif::VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control[] 2718e5c31af7Sopenharmony_ciifdef::VK_EXT_pipeline_protected_access[] 2719e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pipelineProtectedAccess-07368]] 2720e5c31af7Sopenharmony_ci If the <<features-pipelineProtectedAccess, 2721e5c31af7Sopenharmony_ci pname:pipelineProtectedAccess>> feature is not enabled, pname:flags 2722e5c31af7Sopenharmony_ci must: not include ename:VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT 2723e5c31af7Sopenharmony_ci or ename:VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT 2724e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-flags-07369]] 2725e5c31af7Sopenharmony_ci pname:flags must: not include both 2726e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT and 2727e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT 2728e5c31af7Sopenharmony_ciendif::VK_EXT_pipeline_protected_access[] 2729e5c31af7Sopenharmony_ciifdef::VK_KHR_fragment_shading_rate[] 2730e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04494]] 2731e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 2732e5c31af7Sopenharmony_ci pre-rasterization shader state>> or 2733e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-fragment-shader, fragment shader state>> 2734e5c31af7Sopenharmony_ci and ename:VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR is not included in 2735e5c31af7Sopenharmony_ci pname:pDynamicState->pDynamicStates, 2736e5c31af7Sopenharmony_ci slink:VkPipelineFragmentShadingRateStateCreateInfoKHR::pname:fragmentSize.width 2737e5c31af7Sopenharmony_ci must: be greater than or equal to `1` 2738e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04495]] 2739e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 2740e5c31af7Sopenharmony_ci pre-rasterization shader state>> or 2741e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-fragment-shader, fragment shader state>> 2742e5c31af7Sopenharmony_ci and ename:VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR is not included in 2743e5c31af7Sopenharmony_ci pname:pDynamicState->pDynamicStates, 2744e5c31af7Sopenharmony_ci slink:VkPipelineFragmentShadingRateStateCreateInfoKHR::pname:fragmentSize.height 2745e5c31af7Sopenharmony_ci must: be greater than or equal to `1` 2746e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04496]] 2747e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 2748e5c31af7Sopenharmony_ci pre-rasterization shader state>> or 2749e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-fragment-shader, fragment shader state>> 2750e5c31af7Sopenharmony_ci and ename:VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR is not included in 2751e5c31af7Sopenharmony_ci pname:pDynamicState->pDynamicStates, 2752e5c31af7Sopenharmony_ci slink:VkPipelineFragmentShadingRateStateCreateInfoKHR::pname:fragmentSize.width 2753e5c31af7Sopenharmony_ci must: be a power-of-two value 2754e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04497]] 2755e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 2756e5c31af7Sopenharmony_ci pre-rasterization shader state>> or 2757e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-fragment-shader, fragment shader state>> 2758e5c31af7Sopenharmony_ci and ename:VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR is not included in 2759e5c31af7Sopenharmony_ci pname:pDynamicState->pDynamicStates, 2760e5c31af7Sopenharmony_ci slink:VkPipelineFragmentShadingRateStateCreateInfoKHR::pname:fragmentSize.height 2761e5c31af7Sopenharmony_ci must: be a power-of-two value 2762e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04498]] 2763e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 2764e5c31af7Sopenharmony_ci pre-rasterization shader state>> or 2765e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-fragment-shader, fragment shader state>> 2766e5c31af7Sopenharmony_ci and ename:VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR is not included in 2767e5c31af7Sopenharmony_ci pname:pDynamicState->pDynamicStates, 2768e5c31af7Sopenharmony_ci slink:VkPipelineFragmentShadingRateStateCreateInfoKHR::pname:fragmentSize.width 2769e5c31af7Sopenharmony_ci must: be less than or equal to `4` 2770e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04499]] 2771e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 2772e5c31af7Sopenharmony_ci pre-rasterization shader state>> or 2773e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-fragment-shader, fragment shader state>> 2774e5c31af7Sopenharmony_ci and ename:VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR is not included in 2775e5c31af7Sopenharmony_ci pname:pDynamicState->pDynamicStates, 2776e5c31af7Sopenharmony_ci slink:VkPipelineFragmentShadingRateStateCreateInfoKHR::pname:fragmentSize.height 2777e5c31af7Sopenharmony_ci must: be less than or equal to `4` 2778e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04500]] 2779e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 2780e5c31af7Sopenharmony_ci pre-rasterization shader state>> or 2781e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-fragment-shader, fragment shader state>> 2782e5c31af7Sopenharmony_ci and ename:VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR is not included in 2783e5c31af7Sopenharmony_ci pname:pDynamicState->pDynamicStates, and the 2784e5c31af7Sopenharmony_ci <<features-pipelineFragmentShadingRate, 2785e5c31af7Sopenharmony_ci pname:pipelineFragmentShadingRate>> feature is not enabled, 2786e5c31af7Sopenharmony_ci slink:VkPipelineFragmentShadingRateStateCreateInfoKHR::pname:fragmentSize.width 2787e5c31af7Sopenharmony_ci and 2788e5c31af7Sopenharmony_ci slink:VkPipelineFragmentShadingRateStateCreateInfoKHR::pname:fragmentSize.height 2789e5c31af7Sopenharmony_ci must: both be equal to `1` 2790e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pDynamicState-06567]] 2791e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 2792e5c31af7Sopenharmony_ci pre-rasterization shader state>> or 2793e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-fragment-shader, fragment shader state>> 2794e5c31af7Sopenharmony_ci and ename:VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR is not included in 2795e5c31af7Sopenharmony_ci pname:pDynamicState->pDynamicStates, 2796e5c31af7Sopenharmony_ci slink:VkPipelineFragmentShadingRateStateCreateInfoKHR::pname:combinerOps[0] 2797e5c31af7Sopenharmony_ci must: be a valid elink:VkFragmentShadingRateCombinerOpKHR value 2798e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pDynamicState-06568]] 2799e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 2800e5c31af7Sopenharmony_ci pre-rasterization shader state>> or 2801e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-fragment-shader, fragment shader state>> 2802e5c31af7Sopenharmony_ci and ename:VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR is not included in 2803e5c31af7Sopenharmony_ci pname:pDynamicState->pDynamicStates, 2804e5c31af7Sopenharmony_ci slink:VkPipelineFragmentShadingRateStateCreateInfoKHR::pname:combinerOps[1] 2805e5c31af7Sopenharmony_ci must: be a valid elink:VkFragmentShadingRateCombinerOpKHR value 2806e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04501]] 2807e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 2808e5c31af7Sopenharmony_ci pre-rasterization shader state>> or 2809e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-fragment-shader, fragment shader state>> 2810e5c31af7Sopenharmony_ci and ename:VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR is not included in 2811e5c31af7Sopenharmony_ci pname:pDynamicState->pDynamicStates, and the 2812e5c31af7Sopenharmony_ci <<features-primitiveFragmentShadingRate, 2813e5c31af7Sopenharmony_ci pname:primitiveFragmentShadingRate>> feature is not enabled, 2814e5c31af7Sopenharmony_ci slink:VkPipelineFragmentShadingRateStateCreateInfoKHR::pname:combinerOps[0] 2815e5c31af7Sopenharmony_ci must: be ename:VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR 2816e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04502]] 2817e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 2818e5c31af7Sopenharmony_ci pre-rasterization shader state>> or 2819e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-fragment-shader, fragment shader state>> 2820e5c31af7Sopenharmony_ci and ename:VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR is not included in 2821e5c31af7Sopenharmony_ci pname:pDynamicState->pDynamicStates, and the 2822e5c31af7Sopenharmony_ci <<features-attachmentFragmentShadingRate, 2823e5c31af7Sopenharmony_ci pname:attachmentFragmentShadingRate>> feature is not enabled, 2824e5c31af7Sopenharmony_ci slink:VkPipelineFragmentShadingRateStateCreateInfoKHR::pname:combinerOps[1] 2825e5c31af7Sopenharmony_ci must: be ename:VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR 2826e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_3,VK_EXT_extended_dynamic_state[] 2827e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-primitiveFragmentShadingRateWithMultipleViewports-04503]] 2828e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 2829e5c31af7Sopenharmony_ci pre-rasterization shader state>> and the 2830e5c31af7Sopenharmony_ci <<limits-primitiveFragmentShadingRateWithMultipleViewports, 2831e5c31af7Sopenharmony_ci pname:primitiveFragmentShadingRateWithMultipleViewports>> limit is not 2832e5c31af7Sopenharmony_ci supported, ename:VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT is not included in 2833e5c31af7Sopenharmony_ci pname:pDynamicState->pDynamicStates, and 2834e5c31af7Sopenharmony_ci slink:VkPipelineViewportStateCreateInfo::pname:viewportCount is greater 2835e5c31af7Sopenharmony_ci than `1`, entry points specified in pname:pStages must: not write to the 2836e5c31af7Sopenharmony_ci code:PrimitiveShadingRateKHR built-in 2837e5c31af7Sopenharmony_ciendif::VK_VERSION_1_3,VK_EXT_extended_dynamic_state[] 2838e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-primitiveFragmentShadingRateWithMultipleViewports-04504]] 2839e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 2840e5c31af7Sopenharmony_ci pre-rasterization shader state>> and the 2841e5c31af7Sopenharmony_ci <<limits-primitiveFragmentShadingRateWithMultipleViewports, 2842e5c31af7Sopenharmony_ci pname:primitiveFragmentShadingRateWithMultipleViewports>> limit is not 2843e5c31af7Sopenharmony_ci supported, and entry points specified in pname:pStages write to the 2844e5c31af7Sopenharmony_ci code:ViewportIndex built-in, they must: not also write to the 2845e5c31af7Sopenharmony_ci code:PrimitiveShadingRateKHR built-in 2846e5c31af7Sopenharmony_ciifdef::VK_NV_viewport_array2[] 2847e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-primitiveFragmentShadingRateWithMultipleViewports-04505]] 2848e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 2849e5c31af7Sopenharmony_ci pre-rasterization shader state>> and the 2850e5c31af7Sopenharmony_ci <<limits-primitiveFragmentShadingRateWithMultipleViewports, 2851e5c31af7Sopenharmony_ci pname:primitiveFragmentShadingRateWithMultipleViewports>> limit is not 2852e5c31af7Sopenharmony_ci supported, and entry points specified in pname:pStages write to the 2853e5c31af7Sopenharmony_ci code:ViewportMaskNV built-in, they must: not also write to the 2854e5c31af7Sopenharmony_ci code:PrimitiveShadingRateKHR built-in 2855e5c31af7Sopenharmony_ciendif::VK_NV_viewport_array2[] 2856e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-fragmentShadingRateNonTrivialCombinerOps-04506]] 2857e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 2858e5c31af7Sopenharmony_ci pre-rasterization shader state>> or 2859e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-fragment-shader, fragment shader state>>, 2860e5c31af7Sopenharmony_ci the <<limits-fragmentShadingRateNonTrivialCombinerOps, 2861e5c31af7Sopenharmony_ci pname:fragmentShadingRateNonTrivialCombinerOps>> limit is not supported, 2862e5c31af7Sopenharmony_ci and ename:VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR is not included in 2863e5c31af7Sopenharmony_ci pname:pDynamicState->pDynamicStates, elements of 2864e5c31af7Sopenharmony_ci slink:VkPipelineFragmentShadingRateStateCreateInfoKHR::pname:combinerOps 2865e5c31af7Sopenharmony_ci must: be ename:VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR or 2866e5c31af7Sopenharmony_ci ename:VK_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR 2867e5c31af7Sopenharmony_ciendif::VK_KHR_fragment_shading_rate[] 2868e5c31af7Sopenharmony_ciifdef::VK_NV_fragment_shading_rate_enums[] 2869e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-None-06569]] 2870e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-fragment-shader, 2871e5c31af7Sopenharmony_ci fragment shader state>> 2872e5c31af7Sopenharmony_ci and ename:VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR is not included in 2873e5c31af7Sopenharmony_ci pname:pDynamicState->pDynamicStates, 2874e5c31af7Sopenharmony_ci slink:VkPipelineFragmentShadingRateEnumStateCreateInfoNV::pname:shadingRateType 2875e5c31af7Sopenharmony_ci must: be a valid elink:VkFragmentShadingRateTypeNV value 2876e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pDynamicState-06570]] 2877e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-fragment-shader, 2878e5c31af7Sopenharmony_ci fragment shader state>> and 2879e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR is not included in 2880e5c31af7Sopenharmony_ci pname:pDynamicState->pDynamicStates, 2881e5c31af7Sopenharmony_ci slink:VkPipelineFragmentShadingRateEnumStateCreateInfoNV::pname:shadingRate 2882e5c31af7Sopenharmony_ci must: be a valid elink:VkFragmentShadingRateNV value 2883e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pDynamicState-06571]] 2884e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-fragment-shader, 2885e5c31af7Sopenharmony_ci fragment shader state>> and 2886e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR is not included in 2887e5c31af7Sopenharmony_ci pname:pDynamicState->pDynamicStates, 2888e5c31af7Sopenharmony_ci slink:VkPipelineFragmentShadingRateEnumStateCreateInfoNV::pname:combinerOps[0] 2889e5c31af7Sopenharmony_ci must: be a valid elink:VkFragmentShadingRateCombinerOpKHR value 2890e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pDynamicState-06572]] 2891e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-fragment-shader, 2892e5c31af7Sopenharmony_ci fragment shader state>> and 2893e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR is not included in 2894e5c31af7Sopenharmony_ci pname:pDynamicState->pDynamicStates, 2895e5c31af7Sopenharmony_ci slink:VkPipelineFragmentShadingRateEnumStateCreateInfoNV::pname:combinerOps[1] 2896e5c31af7Sopenharmony_ci must: be a valid elink:VkFragmentShadingRateCombinerOpKHR value 2897e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04569]] 2898e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-fragment-shader, 2899e5c31af7Sopenharmony_ci fragment shader state>> and 2900e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR is not included in 2901e5c31af7Sopenharmony_ci pname:pDynamicState->pDynamicStates, and the 2902e5c31af7Sopenharmony_ci <<features-fragmentShadingRateEnums, pname:fragmentShadingRateEnums>> 2903e5c31af7Sopenharmony_ci feature is not enabled, 2904e5c31af7Sopenharmony_ci slink:VkPipelineFragmentShadingRateEnumStateCreateInfoNV::pname:shadingRateType 2905e5c31af7Sopenharmony_ci must: be equal to ename:VK_FRAGMENT_SHADING_RATE_TYPE_FRAGMENT_SIZE_NV 2906e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04570]] 2907e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-fragment-shader, 2908e5c31af7Sopenharmony_ci fragment shader state>> and 2909e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR is not included in 2910e5c31af7Sopenharmony_ci pname:pDynamicState->pDynamicStates, and the 2911e5c31af7Sopenharmony_ci <<features-pipelineFragmentShadingRate, 2912e5c31af7Sopenharmony_ci pname:pipelineFragmentShadingRate>> feature is not enabled, 2913e5c31af7Sopenharmony_ci slink:VkPipelineFragmentShadingRateEnumStateCreateInfoNV::pname:shadingRate 2914e5c31af7Sopenharmony_ci must: be equal to 2915e5c31af7Sopenharmony_ci ename:VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV 2916e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04571]] 2917e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-fragment-shader, 2918e5c31af7Sopenharmony_ci fragment shader state>> and 2919e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR is not included in 2920e5c31af7Sopenharmony_ci pname:pDynamicState->pDynamicStates, and the 2921e5c31af7Sopenharmony_ci <<features-primitiveFragmentShadingRate, 2922e5c31af7Sopenharmony_ci pname:primitiveFragmentShadingRate>> feature is not enabled, 2923e5c31af7Sopenharmony_ci slink:VkPipelineFragmentShadingRateEnumStateCreateInfoNV::pname:combinerOps[0] 2924e5c31af7Sopenharmony_ci must: be ename:VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR 2925e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04572]] 2926e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-fragment-shader, 2927e5c31af7Sopenharmony_ci fragment shader state>> and 2928e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR is not included in 2929e5c31af7Sopenharmony_ci pname:pDynamicState->pDynamicStates, and the 2930e5c31af7Sopenharmony_ci <<features-attachmentFragmentShadingRate, 2931e5c31af7Sopenharmony_ci pname:attachmentFragmentShadingRate>> feature is not enabled, 2932e5c31af7Sopenharmony_ci slink:VkPipelineFragmentShadingRateEnumStateCreateInfoNV::pname:combinerOps[1] 2933e5c31af7Sopenharmony_ci must: be ename:VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR 2934e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-fragmentShadingRateNonTrivialCombinerOps-04573]] 2935e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-fragment-shader, 2936e5c31af7Sopenharmony_ci fragment shader state>>, and the 2937e5c31af7Sopenharmony_ci <<limits-fragmentShadingRateNonTrivialCombinerOps, 2938e5c31af7Sopenharmony_ci pname:fragmentShadingRateNonTrivialCombinerOps>> limit is not supported 2939e5c31af7Sopenharmony_ci and ename:VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR is not included in 2940e5c31af7Sopenharmony_ci pname:pDynamicState->pDynamicStates, elements of 2941e5c31af7Sopenharmony_ci slink:VkPipelineFragmentShadingRateEnumStateCreateInfoNV::pname:combinerOps 2942e5c31af7Sopenharmony_ci must: be ename:VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR or 2943e5c31af7Sopenharmony_ci ename:VK_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR 2944e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-None-04574]] 2945e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-fragment-shader, 2946e5c31af7Sopenharmony_ci fragment shader state>>, and the 2947e5c31af7Sopenharmony_ci <<features-supersampleFragmentShadingRates, 2948e5c31af7Sopenharmony_ci pname:supersampleFragmentShadingRates>> feature is not enabled, 2949e5c31af7Sopenharmony_ci slink:VkPipelineFragmentShadingRateEnumStateCreateInfoNV::pname:shadingRate 2950e5c31af7Sopenharmony_ci must: not be equal to 2951e5c31af7Sopenharmony_ci ename:VK_FRAGMENT_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV, 2952e5c31af7Sopenharmony_ci ename:VK_FRAGMENT_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV, 2953e5c31af7Sopenharmony_ci ename:VK_FRAGMENT_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV, or 2954e5c31af7Sopenharmony_ci ename:VK_FRAGMENT_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV 2955e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-None-04575]] 2956e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-fragment-shader, 2957e5c31af7Sopenharmony_ci fragment shader state>>, and the 2958e5c31af7Sopenharmony_ci <<features-noInvocationFragmentShadingRates, 2959e5c31af7Sopenharmony_ci pname:noInvocationFragmentShadingRates>> feature is not enabled, 2960e5c31af7Sopenharmony_ci slink:VkPipelineFragmentShadingRateEnumStateCreateInfoNV::pname:shadingRate 2961e5c31af7Sopenharmony_ci must: not be equal to ename:VK_FRAGMENT_SHADING_RATE_NO_INVOCATIONS_NV 2962e5c31af7Sopenharmony_ciendif::VK_NV_fragment_shading_rate_enums[] 2963e5c31af7Sopenharmony_ciifdef::VK_KHR_ray_tracing_pipeline[] 2964e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-03578]] 2965e5c31af7Sopenharmony_ci All elements of the pname:pDynamicStates member of pname:pDynamicState 2966e5c31af7Sopenharmony_ci must: not be ename:VK_DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR 2967e5c31af7Sopenharmony_ciendif::VK_KHR_ray_tracing_pipeline[] 2968e5c31af7Sopenharmony_ciifdef::VK_EXT_vertex_input_dynamic_state[] 2969e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04807]] 2970e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 2971e5c31af7Sopenharmony_ci pre-rasterization shader state>> and the 2972e5c31af7Sopenharmony_ci <<features-vertexInputDynamicState, pname:vertexInputDynamicState>> 2973e5c31af7Sopenharmony_ci feature is not enabled, there must: be no element of the 2974e5c31af7Sopenharmony_ci pname:pDynamicStates member of pname:pDynamicState set to 2975e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 2976e5c31af7Sopenharmony_ciifdef::VK_NV_mesh_shader,VK_EXT_mesh_shader[] 2977e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-07067]] 2978e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 2979e5c31af7Sopenharmony_ci pre-rasterization shader state>>, and includes a mesh shader, there 2980e5c31af7Sopenharmony_ci must: be no element of the pname:pDynamicStates member of 2981e5c31af7Sopenharmony_ci pname:pDynamicState set to ename:VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 2982e5c31af7Sopenharmony_ciendif::VK_NV_mesh_shader,VK_EXT_mesh_shader[] 2983e5c31af7Sopenharmony_ciendif::VK_EXT_vertex_input_dynamic_state[] 2984e5c31af7Sopenharmony_ciifdef::VK_EXT_color_write_enable[] 2985e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04800]] 2986e5c31af7Sopenharmony_ci If the <<features-colorWriteEnable, pname:colorWriteEnable>> feature is 2987e5c31af7Sopenharmony_ci not enabled, there must: be no element of the pname:pDynamicStates 2988e5c31af7Sopenharmony_ci member of pname:pDynamicState set to 2989e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT 2990e5c31af7Sopenharmony_ciendif::VK_EXT_color_write_enable[] 2991e5c31af7Sopenharmony_ciifdef::VK_QCOM_render_pass_shader_resolve[] 2992e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-rasterizationSamples-04899]] 2993e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-fragment-shader, 2994e5c31af7Sopenharmony_ci fragment shader state>>, and the 2995e5c31af7Sopenharmony_ci `apiext:VK_QCOM_render_pass_shader_resolve` extension is enabled, 2996e5c31af7Sopenharmony_ci pname:rasterizationSamples is not dynamic, and if subpass has any input 2997e5c31af7Sopenharmony_ci attachments, and if the subpass description contains 2998e5c31af7Sopenharmony_ci ename:VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM, then the sample 2999e5c31af7Sopenharmony_ci count of the input attachments must: equal pname:rasterizationSamples 3000e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-sampleShadingEnable-04900]] 3001e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-fragment-shader, 3002e5c31af7Sopenharmony_ci fragment shader state>>, and the 3003e5c31af7Sopenharmony_ci `apiext:VK_QCOM_render_pass_shader_resolve` extension is enabled, and if 3004e5c31af7Sopenharmony_ci the subpass description contains 3005e5c31af7Sopenharmony_ci ename:VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM, then 3006e5c31af7Sopenharmony_ci pname:sampleShadingEnable must: be false 3007e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-flags-04901]] 3008e5c31af7Sopenharmony_ci If pname:flags includes 3009e5c31af7Sopenharmony_ci ename:VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM, then the subpass 3010e5c31af7Sopenharmony_ci must: be the last subpass in a subpass dependency chain 3011e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-flags-04902]] 3012e5c31af7Sopenharmony_ci If pname:flags includes 3013e5c31af7Sopenharmony_ci ename:VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM, and if 3014e5c31af7Sopenharmony_ci pname:pResolveAttachments is not `NULL`, then each resolve attachment 3015e5c31af7Sopenharmony_ci must: be ename:VK_ATTACHMENT_UNUSED 3016e5c31af7Sopenharmony_ciendif::VK_QCOM_render_pass_shader_resolve[] 3017e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_3,VK_KHR_dynamic_rendering[] 3018e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-dynamicRendering-06576]] 3019e5c31af7Sopenharmony_ci If the <<features-dynamicRendering, pname:dynamicRendering>> feature is 3020e5c31af7Sopenharmony_ci not enabled and the pipeline requires 3021e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-pre-rasterization, pre-rasterization shader 3022e5c31af7Sopenharmony_ci state>>, <<pipelines-graphics-subsets-fragment-shader, fragment shader 3023e5c31af7Sopenharmony_ci state>>, or <<pipelines-graphics-subsets-fragment-output, fragment 3024e5c31af7Sopenharmony_ci output interface state>>, pname:renderPass must: not be 3025e5c31af7Sopenharmony_ci dlink:VK_NULL_HANDLE 3026e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-multiview-06577]] 3027e5c31af7Sopenharmony_ci If the <<features-multiview, pname:multiview>> feature is not enabled, 3028e5c31af7Sopenharmony_ci the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 3029e5c31af7Sopenharmony_ci pre-rasterization shader state>>, 3030e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-fragment-shader, fragment shader state>>, 3031e5c31af7Sopenharmony_ci or <<pipelines-graphics-subsets-fragment-output, fragment output 3032e5c31af7Sopenharmony_ci interface state>>, and pname:renderPass is dlink:VK_NULL_HANDLE, 3033e5c31af7Sopenharmony_ci slink:VkPipelineRenderingCreateInfo::pname:viewMask must: be `0` 3034e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-renderPass-06578]] 3035e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 3036e5c31af7Sopenharmony_ci pre-rasterization shader state>>, 3037e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-fragment-shader, fragment shader state>>, 3038e5c31af7Sopenharmony_ci or <<pipelines-graphics-subsets-fragment-output, fragment output 3039e5c31af7Sopenharmony_ci interface state>>, and pname:renderPass is dlink:VK_NULL_HANDLE, the 3040e5c31af7Sopenharmony_ci index of the most significant bit in 3041e5c31af7Sopenharmony_ci slink:VkPipelineRenderingCreateInfo::pname:viewMask must: be less than 3042e5c31af7Sopenharmony_ci <<limits-maxMultiviewViewCount, pname:maxMultiviewViewCount>> 3043e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-renderPass-06579]] 3044e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-fragment-output, 3045e5c31af7Sopenharmony_ci fragment output interface state>>, and pname:renderPass is 3046e5c31af7Sopenharmony_ci dlink:VK_NULL_HANDLE, and 3047e5c31af7Sopenharmony_ci slink:VkPipelineRenderingCreateInfo::pname:colorAttachmentCount is not 3048e5c31af7Sopenharmony_ci 0, slink:VkPipelineRenderingCreateInfo::pname:pColorAttachmentFormats 3049e5c31af7Sopenharmony_ci must: be a valid pointer to an array of pname:colorAttachmentCount valid 3050e5c31af7Sopenharmony_ci elink:VkFormat values 3051e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-renderPass-06580]] 3052e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-fragment-output, 3053e5c31af7Sopenharmony_ci fragment output interface state>>, and pname:renderPass is 3054e5c31af7Sopenharmony_ci dlink:VK_NULL_HANDLE, each element of 3055e5c31af7Sopenharmony_ci slink:VkPipelineRenderingCreateInfo::pname:pColorAttachmentFormats must: 3056e5c31af7Sopenharmony_ci be a valid elink:VkFormat value 3057e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-renderPass-06582]] 3058e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-fragment-output, 3059e5c31af7Sopenharmony_ci fragment output interface state>>, pname:renderPass is 3060e5c31af7Sopenharmony_ci dlink:VK_NULL_HANDLE, and any element of 3061e5c31af7Sopenharmony_ci slink:VkPipelineRenderingCreateInfo::pname:pColorAttachmentFormats is 3062e5c31af7Sopenharmony_ci not ename:VK_FORMAT_UNDEFINED, that format must: be a format with 3063e5c31af7Sopenharmony_ci <<potential-format-features, potential format features>> that include 3064e5c31af7Sopenharmony_ci ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT 3065e5c31af7Sopenharmony_ciifdef::VK_NV_linear_color_attachment[] 3066e5c31af7Sopenharmony_ci or ename:VK_FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV 3067e5c31af7Sopenharmony_ciendif::VK_NV_linear_color_attachment[] 3068e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-renderPass-06583]] 3069e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-fragment-output, 3070e5c31af7Sopenharmony_ci fragment output interface state>>, and pname:renderPass is 3071e5c31af7Sopenharmony_ci dlink:VK_NULL_HANDLE, 3072e5c31af7Sopenharmony_ci slink:VkPipelineRenderingCreateInfo::pname:depthAttachmentFormat must: 3073e5c31af7Sopenharmony_ci be a valid elink:VkFormat value 3074e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-renderPass-06584]] 3075e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-fragment-output, 3076e5c31af7Sopenharmony_ci fragment output interface state>>, and pname:renderPass is 3077e5c31af7Sopenharmony_ci dlink:VK_NULL_HANDLE, 3078e5c31af7Sopenharmony_ci slink:VkPipelineRenderingCreateInfo::pname:stencilAttachmentFormat must: 3079e5c31af7Sopenharmony_ci be a valid elink:VkFormat value 3080e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-renderPass-06585]] 3081e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-fragment-output, 3082e5c31af7Sopenharmony_ci fragment output interface state>>, pname:renderPass is 3083e5c31af7Sopenharmony_ci dlink:VK_NULL_HANDLE, and 3084e5c31af7Sopenharmony_ci slink:VkPipelineRenderingCreateInfo::pname:depthAttachmentFormat is not 3085e5c31af7Sopenharmony_ci ename:VK_FORMAT_UNDEFINED, it must: be a format with 3086e5c31af7Sopenharmony_ci <<potential-format-features, potential format features>> that include 3087e5c31af7Sopenharmony_ci ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT 3088e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-renderPass-06586]] 3089e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-fragment-output, 3090e5c31af7Sopenharmony_ci fragment output interface state>>, pname:renderPass is 3091e5c31af7Sopenharmony_ci dlink:VK_NULL_HANDLE, and 3092e5c31af7Sopenharmony_ci slink:VkPipelineRenderingCreateInfo::pname:stencilAttachmentFormat is 3093e5c31af7Sopenharmony_ci not ename:VK_FORMAT_UNDEFINED, it must: be a format with 3094e5c31af7Sopenharmony_ci <<potential-format-features, potential format features>> that include 3095e5c31af7Sopenharmony_ci ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT 3096e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-renderPass-06587]] 3097e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-fragment-output, 3098e5c31af7Sopenharmony_ci fragment output interface state>>, pname:renderPass is 3099e5c31af7Sopenharmony_ci dlink:VK_NULL_HANDLE, and 3100e5c31af7Sopenharmony_ci slink:VkPipelineRenderingCreateInfo::pname:depthAttachmentFormat is not 3101e5c31af7Sopenharmony_ci ename:VK_FORMAT_UNDEFINED, it must: be a format that includes a depth 3102e5c31af7Sopenharmony_ci component 3103e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-renderPass-06588]] 3104e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-fragment-output, 3105e5c31af7Sopenharmony_ci fragment output interface state>>, pname:renderPass is 3106e5c31af7Sopenharmony_ci dlink:VK_NULL_HANDLE, and 3107e5c31af7Sopenharmony_ci slink:VkPipelineRenderingCreateInfo::pname:stencilAttachmentFormat is 3108e5c31af7Sopenharmony_ci not ename:VK_FORMAT_UNDEFINED, it must: be a format that includes a 3109e5c31af7Sopenharmony_ci stencil component 3110e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-renderPass-06589]] 3111e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-fragment-output, 3112e5c31af7Sopenharmony_ci fragment output interface state>>, pname:renderPass is 3113e5c31af7Sopenharmony_ci dlink:VK_NULL_HANDLE, 3114e5c31af7Sopenharmony_ci slink:VkPipelineRenderingCreateInfo::pname:depthAttachmentFormat is not 3115e5c31af7Sopenharmony_ci ename:VK_FORMAT_UNDEFINED, and 3116e5c31af7Sopenharmony_ci slink:VkPipelineRenderingCreateInfo::pname:stencilAttachmentFormat is 3117e5c31af7Sopenharmony_ci not ename:VK_FORMAT_UNDEFINED, pname:depthAttachmentFormat must: equal 3118e5c31af7Sopenharmony_ci pname:stencilAttachmentFormat 3119e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-renderPass-09033]] 3120e5c31af7Sopenharmony_ci If pname:renderPass is dlink:VK_NULL_HANDLE, the pipeline is being 3121e5c31af7Sopenharmony_ci created with <<pipelines-graphics-subsets-fragment-shader, fragment 3122e5c31af7Sopenharmony_ci shader state>> and <<pipelines-graphics-subsets-fragment-output, 3123e5c31af7Sopenharmony_ci fragment output interface state>>, and either of 3124e5c31af7Sopenharmony_ci slink:VkPipelineRenderingCreateInfo::pname:depthAttachmentFormat or 3125e5c31af7Sopenharmony_ci slink:VkPipelineRenderingCreateInfo::pname:stencilAttachmentFormat are 3126e5c31af7Sopenharmony_ci not ename:VK_FORMAT_UNDEFINED, 3127e5c31af7Sopenharmony_ciifdef::VK_EXT_extended_dynamic_state3[] 3128e5c31af7Sopenharmony_ci and the `apiext:VK_EXT_extended_dynamic_state3` extension is not enabled 3129e5c31af7Sopenharmony_ci or any of the ename:VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE, 3130e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE, 3131e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_DEPTH_COMPARE_OP, 3132e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE, 3133e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE, 3134e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_STENCIL_OP, or 3135e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_DEPTH_BOUNDS dynamic states are not set, 3136e5c31af7Sopenharmony_ciendif::VK_EXT_extended_dynamic_state3[] 3137e5c31af7Sopenharmony_ci pname:pDepthStencilState must: be a valid pointer to a valid 3138e5c31af7Sopenharmony_ci slink:VkPipelineDepthStencilStateCreateInfo structure 3139e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pDepthStencilState-09034]] 3140e5c31af7Sopenharmony_ci If pname:pDepthStencilState is not `NULL` it must: be a valid pointer to 3141e5c31af7Sopenharmony_ci a valid slink:VkPipelineDepthStencilStateCreateInfo structure 3142e5c31af7Sopenharmony_ciifdef::VK_EXT_graphics_pipeline_library[] 3143e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-renderPass-09035]] 3144e5c31af7Sopenharmony_ci If pname:renderPass is dlink:VK_NULL_HANDLE and the pipeline is being 3145e5c31af7Sopenharmony_ci created with <<pipelines-graphics-subsets-fragment-shader, fragment 3146e5c31af7Sopenharmony_ci shader state>> but not <<pipelines-graphics-subsets-fragment-output, 3147e5c31af7Sopenharmony_ci fragment output interface state>>, 3148e5c31af7Sopenharmony_ciifdef::VK_EXT_extended_dynamic_state3[] 3149e5c31af7Sopenharmony_ci and the `apiext:VK_EXT_extended_dynamic_state3` extension is not 3150e5c31af7Sopenharmony_ci enabled, or any of the ename:VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE, 3151e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE, 3152e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_DEPTH_COMPARE_OP, 3153e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE, 3154e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE, 3155e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_STENCIL_OP, or 3156e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_DEPTH_BOUNDS dynamic states are not set, 3157e5c31af7Sopenharmony_ciendif::VK_EXT_extended_dynamic_state3[] 3158e5c31af7Sopenharmony_ci pname:pDepthStencilState must: be a valid pointer to a valid 3159e5c31af7Sopenharmony_ci slink:VkPipelineDepthStencilStateCreateInfo structure 3160e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pDepthStencilState-09036]] 3161e5c31af7Sopenharmony_ci If pname:pDepthStencilState is not `NULL` it must: be a valid pointer to 3162e5c31af7Sopenharmony_ci a valid slink:VkPipelineDepthStencilStateCreateInfo structure 3163e5c31af7Sopenharmony_ciendif::VK_EXT_graphics_pipeline_library[] 3164e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-renderPass-09037]] 3165e5c31af7Sopenharmony_ci If pname:renderPass is dlink:VK_NULL_HANDLE, the pipeline is being 3166e5c31af7Sopenharmony_ci created with <<pipelines-graphics-subsets-fragment-output, fragment 3167e5c31af7Sopenharmony_ci output interface state>>, and 3168e5c31af7Sopenharmony_ci slink:VkPipelineRenderingCreateInfo::pname:colorAttachmentCount is not 3169e5c31af7Sopenharmony_ci equal to `0`, 3170e5c31af7Sopenharmony_ciifdef::VK_EXT_extended_dynamic_state3[] 3171e5c31af7Sopenharmony_ci and the `apiext:VK_EXT_extended_dynamic_state3` extension is not 3172e5c31af7Sopenharmony_ci enabled, or any of the ename:VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT, 3173e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_LOGIC_OP_EXT, 3174e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT, 3175e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT, 3176e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT, or 3177e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_BLEND_CONSTANTS dynamic states are not set, 3178e5c31af7Sopenharmony_ciendif::VK_EXT_extended_dynamic_state3[] 3179e5c31af7Sopenharmony_ci pname:pColorBlendState must: be a valid pointer to a valid 3180e5c31af7Sopenharmony_ci slink:VkPipelineColorBlendStateCreateInfo structure 3181e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pColorBlendState-09038]] 3182e5c31af7Sopenharmony_ci If pname:pColorBlendState is not `NULL` it must: be a valid pointer to a 3183e5c31af7Sopenharmony_ci valid slink:VkPipelineColorBlendStateCreateInfo structure 3184e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-renderPass-06055]] 3185e5c31af7Sopenharmony_ci If pname:renderPass is dlink:VK_NULL_HANDLE, pname:pColorBlendState is 3186e5c31af7Sopenharmony_ci not dynamic, and the pipeline is being created with 3187e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-fragment-output, fragment output interface 3188e5c31af7Sopenharmony_ci state>>, pname:pColorBlendState->attachmentCount must: be equal to 3189e5c31af7Sopenharmony_ci slink:VkPipelineRenderingCreateInfo::pname:colorAttachmentCount 3190e5c31af7Sopenharmony_ciifdef::VK_KHR_multiview,VK_VERSION_1_1[] 3191e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-renderPass-06057]] 3192e5c31af7Sopenharmony_ci If pname:renderPass is dlink:VK_NULL_HANDLE, the pipeline is being 3193e5c31af7Sopenharmony_ci created with <<pipelines-graphics-subsets-pre-rasterization, 3194e5c31af7Sopenharmony_ci pre-rasterization shader state>>, 3195e5c31af7Sopenharmony_ci slink:VkPipelineRenderingCreateInfo::pname:viewMask is not `0`, and the 3196e5c31af7Sopenharmony_ci <<features-multiview-tess, pname:multiviewTessellationShader>> feature 3197e5c31af7Sopenharmony_ci is not enabled, then pname:pStages must: not include tessellation 3198e5c31af7Sopenharmony_ci shaders 3199e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-renderPass-06058]] 3200e5c31af7Sopenharmony_ci If pname:renderPass is dlink:VK_NULL_HANDLE, the pipeline is being 3201e5c31af7Sopenharmony_ci created with <<pipelines-graphics-subsets-pre-rasterization, 3202e5c31af7Sopenharmony_ci pre-rasterization shader state>>, 3203e5c31af7Sopenharmony_ci slink:VkPipelineRenderingCreateInfo::pname:viewMask is not `0`, and the 3204e5c31af7Sopenharmony_ci <<features-multiview-gs, pname:multiviewGeometryShader>> feature is not 3205e5c31af7Sopenharmony_ci enabled, then pname:pStages must: not include a geometry shader 3206e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-renderPass-07718]] 3207e5c31af7Sopenharmony_ci If pname:renderPass is dlink:VK_NULL_HANDLE, the pipeline is being 3208e5c31af7Sopenharmony_ci created with <<pipelines-graphics-subsets-pre-rasterization, 3209e5c31af7Sopenharmony_ci pre-rasterization shader state>>, and 3210e5c31af7Sopenharmony_ci slink:VkPipelineRenderingCreateInfo::pname:viewMask is not `0`, all of 3211e5c31af7Sopenharmony_ci the shaders in the pipeline must: not write to the code:Layer built-in 3212e5c31af7Sopenharmony_ci output 3213e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-renderPass-06059]] 3214e5c31af7Sopenharmony_ci If pname:renderPass is dlink:VK_NULL_HANDLE, the pipeline is being 3215e5c31af7Sopenharmony_ci created with <<pipelines-graphics-subsets-pre-rasterization, 3216e5c31af7Sopenharmony_ci pre-rasterization shader state>>, and 3217e5c31af7Sopenharmony_ci slink:VkPipelineRenderingCreateInfo::pname:viewMask is not `0`, all of 3218e5c31af7Sopenharmony_ci the shaders in the pipeline must: not include variables decorated with 3219e5c31af7Sopenharmony_ci the code:Layer built-in decoration in their interfaces 3220e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-renderPass-07719]] 3221e5c31af7Sopenharmony_ci If pname:renderPass is dlink:VK_NULL_HANDLE, the pipeline is being 3222e5c31af7Sopenharmony_ci created with <<pipelines-graphics-subsets-pre-rasterization, 3223e5c31af7Sopenharmony_ci pre-rasterization shader state>>, and 3224e5c31af7Sopenharmony_ci slink:VkPipelineRenderingCreateInfo::pname:viewMask is not `0`, all of 3225e5c31af7Sopenharmony_ci the shaders in the pipeline must: not include variables decorated with 3226e5c31af7Sopenharmony_ci the code:ViewIndex built-in decoration in their interfaces 3227e5c31af7Sopenharmony_ciifdef::VK_EXT_mesh_shader[] 3228e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-renderPass-07720]] 3229e5c31af7Sopenharmony_ci If pname:renderPass is dlink:VK_NULL_HANDLE, the pipeline is being 3230e5c31af7Sopenharmony_ci created with <<pipelines-graphics-subsets-pre-rasterization, 3231e5c31af7Sopenharmony_ci pre-rasterization shader state>>, and 3232e5c31af7Sopenharmony_ci slink:VkPipelineRenderingCreateInfo::pname:viewMask is not `0`, and 3233e5c31af7Sopenharmony_ci pname:multiviewMeshShader is not enabled, then pname:pStages must: not 3234e5c31af7Sopenharmony_ci include a mesh shader 3235e5c31af7Sopenharmony_ciendif::VK_EXT_mesh_shader[] 3236e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-renderPass-06061]] 3237e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-fragment-shader, 3238e5c31af7Sopenharmony_ci fragment shader state>> and pname:renderPass is dlink:VK_NULL_HANDLE, 3239e5c31af7Sopenharmony_ci fragment shaders in pname:pStages must: not include the 3240e5c31af7Sopenharmony_ci code:InputAttachment capability 3241e5c31af7Sopenharmony_ciifdef::VK_EXT_shader_tile_image[] 3242e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-renderPass-08710]] 3243e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-fragment-shader, 3244e5c31af7Sopenharmony_ci fragment shader state>> and pname:renderPass is not 3245e5c31af7Sopenharmony_ci dlink:VK_NULL_HANDLE, fragment shaders in pname:pStages must: not 3246e5c31af7Sopenharmony_ci include any of the code:TileImageColorReadAccessEXT, 3247e5c31af7Sopenharmony_ci code:TileImageDepthReadAccessEXT, or code:TileImageStencilReadAccessEXT 3248e5c31af7Sopenharmony_ci capabilities 3249e5c31af7Sopenharmony_ciendif::VK_EXT_shader_tile_image[] 3250e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-renderPass-06062]] 3251e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-fragment-output, 3252e5c31af7Sopenharmony_ci fragment output interface state>> and pname:renderPass is 3253e5c31af7Sopenharmony_ci dlink:VK_NULL_HANDLE, for each color attachment format defined by the 3254e5c31af7Sopenharmony_ci pname:pColorAttachmentFormats member of 3255e5c31af7Sopenharmony_ci slink:VkPipelineRenderingCreateInfo, if its 3256e5c31af7Sopenharmony_ci <<potential-format-features,potential format features>> do not contain 3257e5c31af7Sopenharmony_ci ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, then the 3258e5c31af7Sopenharmony_ci pname:blendEnable member of the corresponding element of the 3259e5c31af7Sopenharmony_ci pname:pAttachments member of pname:pColorBlendState must: be 3260e5c31af7Sopenharmony_ci ename:VK_FALSE 3261e5c31af7Sopenharmony_ciendif::VK_KHR_multiview,VK_VERSION_1_1[] 3262e5c31af7Sopenharmony_ciifdef::VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples[] 3263e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-renderPass-06063]] 3264e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-fragment-output, 3265e5c31af7Sopenharmony_ci fragment output interface state>> and pname:renderPass is 3266e5c31af7Sopenharmony_ci dlink:VK_NULL_HANDLE, if the pname:pNext chain includes 3267e5c31af7Sopenharmony_ci slink:VkAttachmentSampleCountInfoAMD or 3268e5c31af7Sopenharmony_ci sname:VkAttachmentSampleCountInfoNV, the pname:colorAttachmentCount 3269e5c31af7Sopenharmony_ci member of that structure must: be equal to the value of 3270e5c31af7Sopenharmony_ci slink:VkPipelineRenderingCreateInfo::pname:colorAttachmentCount 3271e5c31af7Sopenharmony_ciendif::VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples[] 3272e5c31af7Sopenharmony_ciendif::VK_VERSION_1_3,VK_KHR_dynamic_rendering[] 3273e5c31af7Sopenharmony_ciifdef::VK_EXT_rasterization_order_attachment_access,VK_ARM_rasterization_order_attachment_access[] 3274e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-flags-06591]] 3275e5c31af7Sopenharmony_ci If pname:pStages includes a fragment shader stage, and the fragment 3276e5c31af7Sopenharmony_ci shader declares the code:EarlyFragmentTests execution mode, the 3277e5c31af7Sopenharmony_ci pname:flags member of slink:VkPipelineDepthStencilStateCreateInfo must: 3278e5c31af7Sopenharmony_ci not include 3279e5c31af7Sopenharmony_ci ename:VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT 3280e5c31af7Sopenharmony_ci or 3281e5c31af7Sopenharmony_ci ename:VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT 3282e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_3,VK_KHR_dynamic_rendering[] 3283e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-flags-06482]] 3284e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-fragment-output, 3285e5c31af7Sopenharmony_ci fragment output interface state>> and the pname:flags member of 3286e5c31af7Sopenharmony_ci slink:VkPipelineColorBlendStateCreateInfo includes 3287e5c31af7Sopenharmony_ci ename:VK_PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_EXT, 3288e5c31af7Sopenharmony_ci pname:renderpass must: not be dlink:VK_NULL_HANDLE 3289e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-flags-06483]] 3290e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-fragment-output, 3291e5c31af7Sopenharmony_ci fragment output interface state>> and the pname:flags member of 3292e5c31af7Sopenharmony_ci slink:VkPipelineDepthStencilStateCreateInfo includes 3293e5c31af7Sopenharmony_ci ename:VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT 3294e5c31af7Sopenharmony_ci or 3295e5c31af7Sopenharmony_ci ename:VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT, 3296e5c31af7Sopenharmony_ci pname:renderpass must: not be dlink:VK_NULL_HANDLE 3297e5c31af7Sopenharmony_ciifdef::VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples[] 3298e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pColorAttachmentSamples-06592]] 3299e5c31af7Sopenharmony_ci If the <<pipelines-graphics-subsets-fragment-output, fragment output 3300e5c31af7Sopenharmony_ci interface state>>, elements of the pname:pColorAttachmentSamples member 3301e5c31af7Sopenharmony_ci of slink:VkAttachmentSampleCountInfoAMD or 3302e5c31af7Sopenharmony_ci slink:VkAttachmentSampleCountInfoNV must: be valid 3303e5c31af7Sopenharmony_ci elink:VkSampleCountFlagBits values 3304e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-depthStencilAttachmentSamples-06593]] 3305e5c31af7Sopenharmony_ci If the <<pipelines-graphics-subsets-fragment-output, fragment output 3306e5c31af7Sopenharmony_ci interface state>> and the pname:depthStencilAttachmentSamples member of 3307e5c31af7Sopenharmony_ci slink:VkAttachmentSampleCountInfoAMD or 3308e5c31af7Sopenharmony_ci slink:VkAttachmentSampleCountInfoNV is not 0, it must: be a valid 3309e5c31af7Sopenharmony_ci elink:VkSampleCountFlagBits value 3310e5c31af7Sopenharmony_ciendif::VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples[] 3311e5c31af7Sopenharmony_ciendif::VK_VERSION_1_3,VK_KHR_dynamic_rendering[] 3312e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-flags-06484]] 3313e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-fragment-output, 3314e5c31af7Sopenharmony_ci fragment output interface state>> and the pname:flags member of 3315e5c31af7Sopenharmony_ci slink:VkPipelineColorBlendStateCreateInfo includes 3316e5c31af7Sopenharmony_ci ename:VK_PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_EXT 3317e5c31af7Sopenharmony_ci pname:subpass must: have been created with 3318e5c31af7Sopenharmony_ci ename:VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_EXT 3319e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-flags-06485]] 3320e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-fragment-shader, 3321e5c31af7Sopenharmony_ci fragment shader state>> and the pname:flags member of 3322e5c31af7Sopenharmony_ci slink:VkPipelineDepthStencilStateCreateInfo includes 3323e5c31af7Sopenharmony_ci ename:VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT, 3324e5c31af7Sopenharmony_ci pname:subpass must: have been created with 3325e5c31af7Sopenharmony_ci ename:VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT 3326e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-flags-06486]] 3327e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-fragment-shader, 3328e5c31af7Sopenharmony_ci fragment shader state>> and the pname:flags member of 3329e5c31af7Sopenharmony_ci slink:VkPipelineDepthStencilStateCreateInfo includes 3330e5c31af7Sopenharmony_ci ename:VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT, 3331e5c31af7Sopenharmony_ci pname:subpass must: have been created with 3332e5c31af7Sopenharmony_ci ename:VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT 3333e5c31af7Sopenharmony_ciendif::VK_EXT_rasterization_order_attachment_access,VK_ARM_rasterization_order_attachment_access[] 3334e5c31af7Sopenharmony_ciifdef::VK_EXT_pipeline_creation_feedback,VK_VERSION_1_3[] 3335e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pipelineStageCreationFeedbackCount-06594]] 3336e5c31af7Sopenharmony_ci If 3337e5c31af7Sopenharmony_ci slink:VkPipelineCreationFeedbackCreateInfo::pname:pipelineStageCreationFeedbackCount 3338e5c31af7Sopenharmony_ci is not `0`, it must: be equal to pname:stageCount 3339e5c31af7Sopenharmony_ciendif::VK_EXT_pipeline_creation_feedback,VK_VERSION_1_3[] 3340e5c31af7Sopenharmony_ciifdef::VK_NVX_multiview_per_view_attributes[] 3341e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-renderPass-06595]] 3342e5c31af7Sopenharmony_ci If pname:renderPass is dlink:VK_NULL_HANDLE, the pipeline is being 3343e5c31af7Sopenharmony_ci created with <<pipelines-graphics-subsets-pre-rasterization, 3344e5c31af7Sopenharmony_ci pre-rasterization shader state>> or 3345e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-fragment-shader, fragment shader state>>, 3346e5c31af7Sopenharmony_ci and 3347e5c31af7Sopenharmony_ci slink:VkMultiviewPerViewAttributesInfoNVX::pname:perViewAttributesPositionXOnly 3348e5c31af7Sopenharmony_ci is ename:VK_TRUE then 3349e5c31af7Sopenharmony_ci slink:VkMultiviewPerViewAttributesInfoNVX::pname:perViewAttributes must: 3350e5c31af7Sopenharmony_ci also be ename:VK_TRUE 3351e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-flags-06596]] 3352e5c31af7Sopenharmony_ci If slink:VkGraphicsPipelineLibraryCreateInfoEXT::pname:flags includes 3353e5c31af7Sopenharmony_ci only one of 3354e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT or 3355e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, and an 3356e5c31af7Sopenharmony_ci element of slink:VkPipelineLibraryCreateInfoKHR::pname:pLibraries 3357e5c31af7Sopenharmony_ci includes the other flag, the value of 3358e5c31af7Sopenharmony_ci slink:VkMultiviewPerViewAttributesInfoNVX::pname:perViewAttributes 3359e5c31af7Sopenharmony_ci specified in both this pipeline and the library must: be equal 3360e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pLibraries-06597]] 3361e5c31af7Sopenharmony_ci If one element of slink:VkPipelineLibraryCreateInfoKHR::pname:pLibraries 3362e5c31af7Sopenharmony_ci includes 3363e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT and 3364e5c31af7Sopenharmony_ci another element includes 3365e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, the value of 3366e5c31af7Sopenharmony_ci slink:VkMultiviewPerViewAttributesInfoNVX::pname:perViewAttributes 3367e5c31af7Sopenharmony_ci specified in both libraries must: be equal 3368e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-flags-06598]] 3369e5c31af7Sopenharmony_ci If slink:VkGraphicsPipelineLibraryCreateInfoEXT::pname:flags includes 3370e5c31af7Sopenharmony_ci only one of 3371e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT or 3372e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, and an 3373e5c31af7Sopenharmony_ci element of slink:VkPipelineLibraryCreateInfoKHR::pname:pLibraries 3374e5c31af7Sopenharmony_ci includes the other flag, the value of 3375e5c31af7Sopenharmony_ci slink:VkMultiviewPerViewAttributesInfoNVX::pname:perViewAttributesPositionXOnly 3376e5c31af7Sopenharmony_ci specified in both this pipeline and the library must: be equal 3377e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pLibraries-06599]] 3378e5c31af7Sopenharmony_ci If one element of slink:VkPipelineLibraryCreateInfoKHR::pname:pLibraries 3379e5c31af7Sopenharmony_ci includes 3380e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT and 3381e5c31af7Sopenharmony_ci another element includes 3382e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, the value of 3383e5c31af7Sopenharmony_ci slink:VkMultiviewPerViewAttributesInfoNVX::pname:perViewAttributesPositionXOnly 3384e5c31af7Sopenharmony_ci specified in both libraries must: be equal 3385e5c31af7Sopenharmony_ciendif::VK_NVX_multiview_per_view_attributes[] 3386e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pStages-06600]] 3387e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 3388e5c31af7Sopenharmony_ci pre-rasterization shader state>> or 3389e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-fragment-shader, fragment shader state>>, 3390e5c31af7Sopenharmony_ci pname:pStages must: be a valid pointer to an array of pname:stageCount 3391e5c31af7Sopenharmony_ci valid slink:VkPipelineShaderStageCreateInfo structures 3392e5c31af7Sopenharmony_ciifndef::VK_EXT_extended_dynamic_state3[] 3393e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pRasterizationState-06601]] 3394e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 3395e5c31af7Sopenharmony_ci pre-rasterization shader state>>, pname:pRasterizationState must: be a 3396e5c31af7Sopenharmony_ci valid pointer to a valid slink:VkPipelineRasterizationStateCreateInfo 3397e5c31af7Sopenharmony_ci structure 3398e5c31af7Sopenharmony_ciendif::VK_EXT_extended_dynamic_state3[] 3399e5c31af7Sopenharmony_ciifdef::VK_EXT_extended_dynamic_state3[] 3400e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pRasterizationState-09039]] 3401e5c31af7Sopenharmony_ci If 3402e5c31af7Sopenharmony_ciifdef::VK_EXT_graphics_pipeline_library[] 3403e5c31af7Sopenharmony_ci slink:VkGraphicsPipelineLibraryCreateInfoEXT::pname:flags includes 3404e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT, 3405e5c31af7Sopenharmony_ci and 3406e5c31af7Sopenharmony_ciendif::VK_EXT_graphics_pipeline_library[] 3407e5c31af7Sopenharmony_ci the `apiext:VK_EXT_extended_dynamic_state3` extension is not enabled, or 3408e5c31af7Sopenharmony_ci any of the ename:VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT, 3409e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_SAMPLE_MASK_EXT, or 3410e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT dynamic states are 3411e5c31af7Sopenharmony_ci not set, or <<features-alphaToOne,alphaToOne>> is enabled on the device 3412e5c31af7Sopenharmony_ci and ename:VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT is not set, then 3413e5c31af7Sopenharmony_ci pname:pMultisampleState must: be a valid pointer to a valid 3414e5c31af7Sopenharmony_ci slink:VkPipelineMultisampleStateCreateInfo structure 3415e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pRasterizationState-09040]] 3416e5c31af7Sopenharmony_ci If pname:pRasterizationState is not `NULL` it must: be a valid pointer 3417e5c31af7Sopenharmony_ci to a valid slink:VkPipelineRasterizationStateCreateInfo structure 3418e5c31af7Sopenharmony_ciendif::VK_EXT_extended_dynamic_state3[] 3419e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-layout-06602]] 3420e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-fragment-shader, 3421e5c31af7Sopenharmony_ci fragment shader state>> or 3422e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-pre-rasterization, pre-rasterization shader 3423e5c31af7Sopenharmony_ci state>>, pname:layout must: be a valid slink:VkPipelineLayout handle 3424e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-renderPass-06603]] 3425e5c31af7Sopenharmony_ci If <<pipelines-graphics-subsets-pre-rasterization, pre-rasterization 3426e5c31af7Sopenharmony_ci shader state>>, <<pipelines-graphics-subsets-fragment-shader, fragment 3427e5c31af7Sopenharmony_ci shader state>>, or <<pipelines-graphics-subsets-fragment-output, 3428e5c31af7Sopenharmony_ci fragment output state>>, 3429e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_3,VK_KHR_dynamic_rendering[] 3430e5c31af7Sopenharmony_ci and pname:renderPass is not dlink:VK_NULL_HANDLE, 3431e5c31af7Sopenharmony_ciendif::VK_VERSION_1_3,VK_KHR_dynamic_rendering[] 3432e5c31af7Sopenharmony_ci pname:renderPass must: be a valid slink:VkRenderPass handle 3433e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-stageCount-06604]] 3434e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 3435e5c31af7Sopenharmony_ci pre-rasterization shader state>> or 3436e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-fragment-shader, fragment shader state>>, 3437e5c31af7Sopenharmony_ci pname:stageCount must: be greater than `0` 3438e5c31af7Sopenharmony_ciifdef::VK_KHR_pipeline_library[] 3439e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-graphicsPipelineLibrary-06606]] 3440e5c31af7Sopenharmony_ciifdef::VK_EXT_graphics_pipeline_library[] 3441e5c31af7Sopenharmony_ci If the <<features-graphicsPipelineLibrary, 3442e5c31af7Sopenharmony_ci pname:graphicsPipelineLibrary>> feature is not enabled, 3443e5c31af7Sopenharmony_ciendif::VK_EXT_graphics_pipeline_library[] 3444e5c31af7Sopenharmony_ci pname:flags must: not include ename:VK_PIPELINE_CREATE_LIBRARY_BIT_KHR 3445e5c31af7Sopenharmony_ciendif::VK_KHR_pipeline_library[] 3446e5c31af7Sopenharmony_ciifdef::VK_EXT_graphics_pipeline_library[] 3447e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-flags-06608]] 3448e5c31af7Sopenharmony_ci If the pipeline defines, or includes as libraries, all the state subsets 3449e5c31af7Sopenharmony_ci required for a <<pipelines-graphics-subsets-complete, complete graphics 3450e5c31af7Sopenharmony_ci pipeline>>, pname:flags must: not include 3451e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_LIBRARY_BIT_KHR 3452e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-flags-06609]] 3453e5c31af7Sopenharmony_ci If pname:flags includes 3454e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT, pipeline 3455e5c31af7Sopenharmony_ci libraries included via slink:VkPipelineLibraryCreateInfoKHR must: have 3456e5c31af7Sopenharmony_ci been created with 3457e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT 3458e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-flags-09245]] 3459e5c31af7Sopenharmony_ci If pname:flags includes 3460e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT, 3461e5c31af7Sopenharmony_ci pname:flags must: also include ename:VK_PIPELINE_CREATE_LIBRARY_BIT_KHR 3462e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-flags-06610]] 3463e5c31af7Sopenharmony_ci If pname:flags includes 3464e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT, 3465e5c31af7Sopenharmony_ci pipeline libraries included via slink:VkPipelineLibraryCreateInfoKHR 3466e5c31af7Sopenharmony_ci must: have been created with 3467e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT 3468e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pLibraries-06611]] 3469e5c31af7Sopenharmony_ci Any pipeline libraries included via 3470e5c31af7Sopenharmony_ci slink:VkPipelineLibraryCreateInfoKHR::pname:pLibraries must: not include 3471e5c31af7Sopenharmony_ci any <<pipelines-graphics-subsets, state subset>> already defined by this 3472e5c31af7Sopenharmony_ci structure or defined by any other pipeline library in 3473e5c31af7Sopenharmony_ci slink:VkPipelineLibraryCreateInfoKHR::pname:pLibraries 3474e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-flags-06612]] 3475e5c31af7Sopenharmony_ci If slink:VkGraphicsPipelineLibraryCreateInfoEXT::pname:flags includes 3476e5c31af7Sopenharmony_ci only one of 3477e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT or 3478e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, and an 3479e5c31af7Sopenharmony_ci element of slink:VkPipelineLibraryCreateInfoKHR::pname:pLibraries 3480e5c31af7Sopenharmony_ci includes the other flag, and pname:layout was not created with 3481e5c31af7Sopenharmony_ci ename:VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT, then the 3482e5c31af7Sopenharmony_ci pname:layout used by this pipeline and the library must: be _identically 3483e5c31af7Sopenharmony_ci defined_ 3484e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pLibraries-06613]] 3485e5c31af7Sopenharmony_ci If one element of slink:VkPipelineLibraryCreateInfoKHR::pname:pLibraries 3486e5c31af7Sopenharmony_ci includes 3487e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT and 3488e5c31af7Sopenharmony_ci another element includes 3489e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, and the 3490e5c31af7Sopenharmony_ci pname:layout specified by either library was not created with 3491e5c31af7Sopenharmony_ci ename:VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT, then the 3492e5c31af7Sopenharmony_ci pname:layout used by each library must: be _identically defined_ 3493e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-flags-06614]] 3494e5c31af7Sopenharmony_ci If slink:VkGraphicsPipelineLibraryCreateInfoEXT::pname:flags includes 3495e5c31af7Sopenharmony_ci only one of 3496e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT or 3497e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, an element 3498e5c31af7Sopenharmony_ci of slink:VkPipelineLibraryCreateInfoKHR::pname:pLibraries includes the 3499e5c31af7Sopenharmony_ci other subset, and pname:layout was created with 3500e5c31af7Sopenharmony_ci ename:VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT, then the 3501e5c31af7Sopenharmony_ci pname:layout used by the library must: also have been created with 3502e5c31af7Sopenharmony_ci ename:VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT 3503e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pLibraries-06615]] 3504e5c31af7Sopenharmony_ci If one element of slink:VkPipelineLibraryCreateInfoKHR::pname:pLibraries 3505e5c31af7Sopenharmony_ci includes 3506e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT and 3507e5c31af7Sopenharmony_ci another element includes 3508e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, and the 3509e5c31af7Sopenharmony_ci pname:layout specified by either library was created with 3510e5c31af7Sopenharmony_ci ename:VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT, then the 3511e5c31af7Sopenharmony_ci pname:layout used by both libraries must: have been created with 3512e5c31af7Sopenharmony_ci ename:VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT 3513e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-flags-06616]] 3514e5c31af7Sopenharmony_ci If slink:VkGraphicsPipelineLibraryCreateInfoEXT::pname:flags includes 3515e5c31af7Sopenharmony_ci only one of 3516e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT or 3517e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, an element 3518e5c31af7Sopenharmony_ci of slink:VkPipelineLibraryCreateInfoKHR::pname:pLibraries includes the 3519e5c31af7Sopenharmony_ci other subset, and pname:layout was created with 3520e5c31af7Sopenharmony_ci ename:VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT, elements of 3521e5c31af7Sopenharmony_ci the pname:pSetLayouts array which pname:layout was created with that are 3522e5c31af7Sopenharmony_ci not dlink:VK_NULL_HANDLE must: be _identically defined_ to the element 3523e5c31af7Sopenharmony_ci at the same index of pname:pSetLayouts used to create the library's 3524e5c31af7Sopenharmony_ci pname:layout 3525e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pLibraries-06617]] 3526e5c31af7Sopenharmony_ci If one element of slink:VkPipelineLibraryCreateInfoKHR::pname:pLibraries 3527e5c31af7Sopenharmony_ci includes 3528e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT and 3529e5c31af7Sopenharmony_ci another element includes 3530e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, and the 3531e5c31af7Sopenharmony_ci pname:layout specified by either library was created with 3532e5c31af7Sopenharmony_ci ename:VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT, elements of 3533e5c31af7Sopenharmony_ci the pname:pSetLayouts array which either pname:layout was created with 3534e5c31af7Sopenharmony_ci that are not dlink:VK_NULL_HANDLE must: be _identically defined_ to the 3535e5c31af7Sopenharmony_ci element at the same index of pname:pSetLayouts used to create the other 3536e5c31af7Sopenharmony_ci library's pname:layout 3537e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-flags-06618]] 3538e5c31af7Sopenharmony_ci If slink:VkGraphicsPipelineLibraryCreateInfoEXT::pname:flags includes 3539e5c31af7Sopenharmony_ci only one of 3540e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT or 3541e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, and an 3542e5c31af7Sopenharmony_ci element of slink:VkPipelineLibraryCreateInfoKHR::pname:pLibraries 3543e5c31af7Sopenharmony_ci includes the other flag, any descriptor set layout _N_ specified by 3544e5c31af7Sopenharmony_ci pname:layout in both this pipeline and the library which include 3545e5c31af7Sopenharmony_ci bindings accessed by shader stages in each must: be _identically 3546e5c31af7Sopenharmony_ci defined_ 3547e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pLibraries-06619]] 3548e5c31af7Sopenharmony_ci If one element of slink:VkPipelineLibraryCreateInfoKHR::pname:pLibraries 3549e5c31af7Sopenharmony_ci includes 3550e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT and 3551e5c31af7Sopenharmony_ci another element includes 3552e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, any 3553e5c31af7Sopenharmony_ci descriptor set layout _N_ specified by pname:layout in both libraries 3554e5c31af7Sopenharmony_ci which include bindings accessed by shader stages in each must: be 3555e5c31af7Sopenharmony_ci _identically defined_ 3556e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-flags-06620]] 3557e5c31af7Sopenharmony_ci If slink:VkGraphicsPipelineLibraryCreateInfoEXT::pname:flags includes 3558e5c31af7Sopenharmony_ci only one of 3559e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT or 3560e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, and an 3561e5c31af7Sopenharmony_ci element of slink:VkPipelineLibraryCreateInfoKHR::pname:pLibraries 3562e5c31af7Sopenharmony_ci includes the other flag, push constants specified in pname:layout in 3563e5c31af7Sopenharmony_ci both this pipeline and the library which are available to shader stages 3564e5c31af7Sopenharmony_ci in each must: be _identically defined_ 3565e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pLibraries-06621]] 3566e5c31af7Sopenharmony_ci If one element of slink:VkPipelineLibraryCreateInfoKHR::pname:pLibraries 3567e5c31af7Sopenharmony_ci includes 3568e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT and 3569e5c31af7Sopenharmony_ci another element includes 3570e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, push 3571e5c31af7Sopenharmony_ci constants specified in pname:layout in both this pipeline and the 3572e5c31af7Sopenharmony_ci library which are available to shader stages in each must: be 3573e5c31af7Sopenharmony_ci _identically defined_ 3574e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-flags-06679]] 3575e5c31af7Sopenharmony_ci If slink:VkGraphicsPipelineLibraryCreateInfoEXT::pname:flags includes 3576e5c31af7Sopenharmony_ci only one of 3577e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT or 3578e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, an element 3579e5c31af7Sopenharmony_ci of slink:VkPipelineLibraryCreateInfoKHR::pname:pLibraries includes the 3580e5c31af7Sopenharmony_ci other subset, any element of the pname:pSetLayouts array when 3581e5c31af7Sopenharmony_ci pname:layout was created and the corresponding element of the 3582e5c31af7Sopenharmony_ci pname:pSetLayouts array used to create the library's pname:layout must: 3583e5c31af7Sopenharmony_ci not both be dlink:VK_NULL_HANDLE 3584e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pLibraries-06681]] 3585e5c31af7Sopenharmony_ci If one element of slink:VkPipelineLibraryCreateInfoKHR::pname:pLibraries 3586e5c31af7Sopenharmony_ci includes 3587e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT and 3588e5c31af7Sopenharmony_ci another element includes 3589e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, and any 3590e5c31af7Sopenharmony_ci element of the pname:pSetLayouts array used to create each library's 3591e5c31af7Sopenharmony_ci pname:layout was dlink:VK_NULL_HANDLE, then the corresponding element of 3592e5c31af7Sopenharmony_ci the pname:pSetLayouts array used to create the other library's 3593e5c31af7Sopenharmony_ci pname:layout must: not be dlink:VK_NULL_HANDLE 3594e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-flags-06756]] 3595e5c31af7Sopenharmony_ci If slink:VkGraphicsPipelineLibraryCreateInfoEXT::pname:flags includes 3596e5c31af7Sopenharmony_ci only one of 3597e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT or 3598e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, an element 3599e5c31af7Sopenharmony_ci of slink:VkPipelineLibraryCreateInfoKHR::pname:pLibraries includes the 3600e5c31af7Sopenharmony_ci other subset, and any element of the pname:pSetLayouts array which 3601e5c31af7Sopenharmony_ci pname:layout was created with was dlink:VK_NULL_HANDLE, then the 3602e5c31af7Sopenharmony_ci corresponding element of the pname:pSetLayouts array used to create the 3603e5c31af7Sopenharmony_ci library's pname:layout must: not have shader bindings for shaders in the 3604e5c31af7Sopenharmony_ci other subset 3605e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-flags-06757]] 3606e5c31af7Sopenharmony_ci If slink:VkGraphicsPipelineLibraryCreateInfoEXT::pname:flags includes 3607e5c31af7Sopenharmony_ci only one of 3608e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT or 3609e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, an element 3610e5c31af7Sopenharmony_ci of slink:VkPipelineLibraryCreateInfoKHR::pname:pLibraries includes the 3611e5c31af7Sopenharmony_ci other subset, and any element of the pname:pSetLayouts array used to 3612e5c31af7Sopenharmony_ci create the library's pname:layout was dlink:VK_NULL_HANDLE, then the 3613e5c31af7Sopenharmony_ci corresponding element of the pname:pSetLayouts array used to create this 3614e5c31af7Sopenharmony_ci pipeline's pname:layout must: not have shader bindings for shaders in 3615e5c31af7Sopenharmony_ci the other subset 3616e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pLibraries-06758]] 3617e5c31af7Sopenharmony_ci If one element of slink:VkPipelineLibraryCreateInfoKHR::pname:pLibraries 3618e5c31af7Sopenharmony_ci includes 3619e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT and 3620e5c31af7Sopenharmony_ci another element includes 3621e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, and any 3622e5c31af7Sopenharmony_ci element of the pname:pSetLayouts array used to create each library's 3623e5c31af7Sopenharmony_ci pname:layout was dlink:VK_NULL_HANDLE, then the corresponding element of 3624e5c31af7Sopenharmony_ci the pname:pSetLayouts array used to create the other library's 3625e5c31af7Sopenharmony_ci pname:layout must: not have shader bindings for shaders in the other 3626e5c31af7Sopenharmony_ci subset 3627e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-flags-06682]] 3628e5c31af7Sopenharmony_ci If slink:VkGraphicsPipelineLibraryCreateInfoEXT::pname:flags includes 3629e5c31af7Sopenharmony_ci both 3630e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT and 3631e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, pname:layout 3632e5c31af7Sopenharmony_ci must: have been created with no elements of the pname:pSetLayouts array 3633e5c31af7Sopenharmony_ci set to dlink:VK_NULL_HANDLE 3634e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-flags-06683]] 3635e5c31af7Sopenharmony_ci If slink:VkGraphicsPipelineLibraryCreateInfoEXT::pname:flags includes 3636e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT and 3637e5c31af7Sopenharmony_ci pname:pRasterizationState->rasterizerDiscardEnable is ename:VK_TRUE, 3638e5c31af7Sopenharmony_ci pname:layout must: have been created with no elements of the 3639e5c31af7Sopenharmony_ci pname:pSetLayouts array set to dlink:VK_NULL_HANDLE 3640e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-flags-06684]] 3641e5c31af7Sopenharmony_ci If slink:VkGraphicsPipelineLibraryCreateInfoEXT::pname:flags includes at 3642e5c31af7Sopenharmony_ci least one of and no more than two of 3643e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT, 3644e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, or 3645e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT, 3646e5c31af7Sopenharmony_ci and an element of slink:VkPipelineLibraryCreateInfoKHR::pname:pLibraries 3647e5c31af7Sopenharmony_ci includes one of the other flags, the value of pname:subpass must: be 3648e5c31af7Sopenharmony_ci equal to that used to create the library 3649e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pLibraries-06623]] 3650e5c31af7Sopenharmony_ci If one element of slink:VkPipelineLibraryCreateInfoKHR::pname:pLibraries 3651e5c31af7Sopenharmony_ci includes at least one of and no more than two of 3652e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT, 3653e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, or 3654e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT, 3655e5c31af7Sopenharmony_ci and another element of 3656e5c31af7Sopenharmony_ci slink:VkPipelineLibraryCreateInfoKHR::pname:pLibraries includes one of 3657e5c31af7Sopenharmony_ci the other flags, the value of pname:subpass used to create each library 3658e5c31af7Sopenharmony_ci must: be identical 3659e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-renderpass-06624]] 3660e5c31af7Sopenharmony_ci If pname:renderpass is not dlink:VK_NULL_HANDLE, 3661e5c31af7Sopenharmony_ci slink:VkGraphicsPipelineLibraryCreateInfoEXT::pname:flags includes at 3662e5c31af7Sopenharmony_ci least one of and no more than two of 3663e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT, 3664e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, or 3665e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT, 3666e5c31af7Sopenharmony_ci and an element of slink:VkPipelineLibraryCreateInfoKHR::pname:pLibraries 3667e5c31af7Sopenharmony_ci includes one of the other flags, pname:renderPass must: be compatible 3668e5c31af7Sopenharmony_ci with that used to create the library 3669e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_3,VK_KHR_dynamic_rendering[] 3670e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-renderpass-06625]] 3671e5c31af7Sopenharmony_ci If pname:renderpass is dlink:VK_NULL_HANDLE, 3672e5c31af7Sopenharmony_ci slink:VkGraphicsPipelineLibraryCreateInfoEXT::pname:flags includes at 3673e5c31af7Sopenharmony_ci least one of and no more than two of 3674e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT, 3675e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, or 3676e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT, 3677e5c31af7Sopenharmony_ci and an element of slink:VkPipelineLibraryCreateInfoKHR::pname:pLibraries 3678e5c31af7Sopenharmony_ci includes one of the other flags, the value of pname:renderPass used to 3679e5c31af7Sopenharmony_ci create that library must: also be dlink:VK_NULL_HANDLE 3680e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-flags-06626]] 3681e5c31af7Sopenharmony_ci If slink:VkGraphicsPipelineLibraryCreateInfoEXT::pname:flags includes at 3682e5c31af7Sopenharmony_ci least one of and no more than two of 3683e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT, 3684e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, or 3685e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT, an 3686e5c31af7Sopenharmony_ci element of slink:VkPipelineLibraryCreateInfoKHR::pname:pLibraries 3687e5c31af7Sopenharmony_ci includes one of the other flags, and pname:renderPass is 3688e5c31af7Sopenharmony_ci dlink:VK_NULL_HANDLE, the value of 3689e5c31af7Sopenharmony_ci slink:VkPipelineRenderingCreateInfo::pname:viewMask used by this 3690e5c31af7Sopenharmony_ci pipeline and that specified by the library must: be identical 3691e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pLibraries-06627]] 3692e5c31af7Sopenharmony_ci If one element of slink:VkPipelineLibraryCreateInfoKHR::pname:pLibraries 3693e5c31af7Sopenharmony_ci includes at least one of and no more than two of 3694e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT, 3695e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, or 3696e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT, 3697e5c31af7Sopenharmony_ci another element of 3698e5c31af7Sopenharmony_ci slink:VkPipelineLibraryCreateInfoKHR::pname:pLibraries includes one of 3699e5c31af7Sopenharmony_ci the other flags, and pname:renderPass was dlink:VK_NULL_HANDLE for both 3700e5c31af7Sopenharmony_ci libraries, the value of 3701e5c31af7Sopenharmony_ci slink:VkPipelineRenderingCreateInfo::pname:viewMask set by each library 3702e5c31af7Sopenharmony_ci must: be identical 3703e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pLibraries-06628]] 3704e5c31af7Sopenharmony_ci If one element of slink:VkPipelineLibraryCreateInfoKHR::pname:pLibraries 3705e5c31af7Sopenharmony_ci includes at least one of and no more than two of 3706e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT, 3707e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, or 3708e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT, 3709e5c31af7Sopenharmony_ci and another element of 3710e5c31af7Sopenharmony_ci slink:VkPipelineLibraryCreateInfoKHR::pname:pLibraries includes one of 3711e5c31af7Sopenharmony_ci the other flags, the pname:renderPass objects used to create each 3712e5c31af7Sopenharmony_ci library must: be compatible or all equal to dlink:VK_NULL_HANDLE 3713e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-renderpass-06631]] 3714e5c31af7Sopenharmony_ci If pname:renderPass is not dlink:VK_NULL_HANDLE, the pipeline requires 3715e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-fragment-shader, fragment shader state>>, 3716e5c31af7Sopenharmony_ciifdef::VK_EXT_extended_dynamic_state3[] 3717e5c31af7Sopenharmony_ci and the `apiext:VK_EXT_extended_dynamic_state3` extension is not enabled 3718e5c31af7Sopenharmony_ci or any of the ename:VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT, 3719e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_SAMPLE_MASK_EXT, or 3720e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT dynamic states is 3721e5c31af7Sopenharmony_ci not set, or <<features-alphaToOne,alphaToOne>> is enabled on the device 3722e5c31af7Sopenharmony_ci and ename:VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT is not set, 3723e5c31af7Sopenharmony_ciendif::VK_EXT_extended_dynamic_state3[] 3724e5c31af7Sopenharmony_ci then pname:pMultisampleState must: be a valid pointer to a valid 3725e5c31af7Sopenharmony_ci slink:VkPipelineMultisampleStateCreateInfo structure 3726e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-Input-06632]] 3727e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-fragment-shader, 3728e5c31af7Sopenharmony_ci fragment shader state>> with a fragment shader that either enables 3729e5c31af7Sopenharmony_ci <<primsrast-sampleshading, sample shading>> or decorates any variable in 3730e5c31af7Sopenharmony_ci the code:Input storage class with code:Sample, 3731e5c31af7Sopenharmony_ciifdef::VK_EXT_extended_dynamic_state3[] 3732e5c31af7Sopenharmony_ci and the `apiext:VK_EXT_extended_dynamic_state3` extension is not enabled 3733e5c31af7Sopenharmony_ci or any of the ename:VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT, 3734e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_SAMPLE_MASK_EXT, or 3735e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT dynamic states is 3736e5c31af7Sopenharmony_ci not set, or <<features-alphaToOne,alphaToOne>> is enabled on the device 3737e5c31af7Sopenharmony_ci and ename:VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT is not set, 3738e5c31af7Sopenharmony_ciendif::VK_EXT_extended_dynamic_state3[] 3739e5c31af7Sopenharmony_ci then pname:pMultisampleState must: be a valid pointer to a valid 3740e5c31af7Sopenharmony_ci slink:VkPipelineMultisampleStateCreateInfo structure 3741e5c31af7Sopenharmony_ciendif::VK_VERSION_1_3,VK_KHR_dynamic_rendering[] 3742e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-flags-06633]] 3743e5c31af7Sopenharmony_ci If slink:VkGraphicsPipelineLibraryCreateInfoEXT::pname:flags includes 3744e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT with a 3745e5c31af7Sopenharmony_ci pname:pMultisampleState that was not `NULL`, and an element of 3746e5c31af7Sopenharmony_ci slink:VkPipelineLibraryCreateInfoKHR::pname:pLibraries was created with 3747e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT, 3748e5c31af7Sopenharmony_ci pname:pMultisampleState must: be _identically defined_ to that used to 3749e5c31af7Sopenharmony_ci create the library 3750e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pLibraries-06634]] 3751e5c31af7Sopenharmony_ci If an element of slink:VkPipelineLibraryCreateInfoKHR::pname:pLibraries 3752e5c31af7Sopenharmony_ci was created with 3753e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT with a 3754e5c31af7Sopenharmony_ci pname:pMultisampleState that was not `NULL`, and if 3755e5c31af7Sopenharmony_ci slink:VkGraphicsPipelineLibraryCreateInfoEXT::pname:flags includes 3756e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT, 3757e5c31af7Sopenharmony_ci pname:pMultisampleState must: be _identically defined_ to that used to 3758e5c31af7Sopenharmony_ci create the library 3759e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pLibraries-06635]] 3760e5c31af7Sopenharmony_ci If one element of slink:VkPipelineLibraryCreateInfoKHR::pname:pLibraries 3761e5c31af7Sopenharmony_ci was created with 3762e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT with a 3763e5c31af7Sopenharmony_ci pname:pMultisampleState that was not `NULL`, and if a different element 3764e5c31af7Sopenharmony_ci of slink:VkPipelineLibraryCreateInfoKHR::pname:pLibraries was created 3765e5c31af7Sopenharmony_ci with 3766e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT, 3767e5c31af7Sopenharmony_ci the pname:pMultisampleState used to create each library must: be 3768e5c31af7Sopenharmony_ci _identically defined_ 3769e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pLibraries-06636]] 3770e5c31af7Sopenharmony_ci If one element of slink:VkPipelineLibraryCreateInfoKHR::pname:pLibraries 3771e5c31af7Sopenharmony_ci was created with 3772e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT and 3773e5c31af7Sopenharmony_ci a value of pname:pMultisampleState->sampleShading equal ename:VK_TRUE, 3774e5c31af7Sopenharmony_ci and if a different element of 3775e5c31af7Sopenharmony_ci slink:VkPipelineLibraryCreateInfoKHR::pname:pLibraries was created with 3776e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, the 3777e5c31af7Sopenharmony_ci pname:pMultisampleState used to create each library must: be 3778e5c31af7Sopenharmony_ci _identically defined_ 3779e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-flags-06637]] 3780e5c31af7Sopenharmony_ci If slink:VkGraphicsPipelineLibraryCreateInfoEXT::pname:flags includes 3781e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT, 3782e5c31af7Sopenharmony_ci pname:pMultisampleState->sampleShading is ename:VK_TRUE, and an element 3783e5c31af7Sopenharmony_ci of slink:VkPipelineLibraryCreateInfoKHR::pname:pLibraries was created 3784e5c31af7Sopenharmony_ci with ename:VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, the 3785e5c31af7Sopenharmony_ci pname:pMultisampleState used to create that library must: be 3786e5c31af7Sopenharmony_ci _identically defined_ pname:pMultisampleState 3787e5c31af7Sopenharmony_ciifdef::VK_KHR_fragment_shading_rate[] 3788e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-flags-06638]] 3789e5c31af7Sopenharmony_ci If slink:VkGraphicsPipelineLibraryCreateInfoEXT::pname:flags includes 3790e5c31af7Sopenharmony_ci only one of 3791e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT or 3792e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, and an 3793e5c31af7Sopenharmony_ci element of slink:VkPipelineLibraryCreateInfoKHR::pname:pLibraries 3794e5c31af7Sopenharmony_ci includes the other flag, values specified in 3795e5c31af7Sopenharmony_ci slink:VkPipelineFragmentShadingRateStateCreateInfoKHR for both this 3796e5c31af7Sopenharmony_ci pipeline and that library must: be identical 3797e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pLibraries-06639]] 3798e5c31af7Sopenharmony_ci If one element of slink:VkPipelineLibraryCreateInfoKHR::pname:pLibraries 3799e5c31af7Sopenharmony_ci includes 3800e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT and 3801e5c31af7Sopenharmony_ci another element includes 3802e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, values 3803e5c31af7Sopenharmony_ci specified in slink:VkPipelineFragmentShadingRateStateCreateInfoKHR for 3804e5c31af7Sopenharmony_ci both this pipeline and that library must: be identical 3805e5c31af7Sopenharmony_ciendif::VK_KHR_fragment_shading_rate[] 3806e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-flags-06640]] 3807e5c31af7Sopenharmony_ci If slink:VkGraphicsPipelineLibraryCreateInfoEXT::pname:flags includes 3808e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT or 3809e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, 3810e5c31af7Sopenharmony_ci pname:pStages must: be a valid pointer to an array of pname:stageCount 3811e5c31af7Sopenharmony_ci valid slink:VkPipelineShaderStageCreateInfo structures 3812e5c31af7Sopenharmony_ciifndef::VK_EXT_extended_dynamic_state3[] 3813e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-flags-06641]] 3814e5c31af7Sopenharmony_ci If slink:VkGraphicsPipelineLibraryCreateInfoEXT::pname:flags includes 3815e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT, 3816e5c31af7Sopenharmony_ci pname:pRasterizationState must: be a valid pointer to a valid 3817e5c31af7Sopenharmony_ci slink:VkPipelineRasterizationStateCreateInfo structure 3818e5c31af7Sopenharmony_ciendif::VK_EXT_extended_dynamic_state3[] 3819e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-flags-06642]] 3820e5c31af7Sopenharmony_ci If slink:VkGraphicsPipelineLibraryCreateInfoEXT::pname:flags includes 3821e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT or 3822e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, pname:layout 3823e5c31af7Sopenharmony_ci must: be a valid slink:VkPipelineLayout handle 3824e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-flags-06643]] 3825e5c31af7Sopenharmony_ci If slink:VkGraphicsPipelineLibraryCreateInfoEXT::pname:flags includes 3826e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT, or 3827e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, 3828e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT, 3829e5c31af7Sopenharmony_ci and pname:renderPass is not dlink:VK_NULL_HANDLE, pname:renderPass must: 3830e5c31af7Sopenharmony_ci be a valid slink:VkRenderPass handle 3831e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-flags-06644]] 3832e5c31af7Sopenharmony_ci If slink:VkGraphicsPipelineLibraryCreateInfoEXT::pname:flags includes 3833e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT or 3834e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, 3835e5c31af7Sopenharmony_ci pname:stageCount must: be greater than `0` 3836e5c31af7Sopenharmony_ciifdef::VK_KHR_pipeline_executable_properties[] 3837e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-flags-06645]] 3838e5c31af7Sopenharmony_ci If slink:VkGraphicsPipelineLibraryCreateInfoEXT::pname:flags is 3839e5c31af7Sopenharmony_ci non-zero, if pname:flags includes 3840e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR, any 3841e5c31af7Sopenharmony_ci libraries must: have also been created with 3842e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR 3843e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pLibraries-06646]] 3844e5c31af7Sopenharmony_ci If slink:VkPipelineLibraryCreateInfoKHR::pname:pLibraries includes more 3845e5c31af7Sopenharmony_ci than one library, and any library was created with 3846e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR, all 3847e5c31af7Sopenharmony_ci libraries must: have also been created with 3848e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR 3849e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pLibraries-06647]] 3850e5c31af7Sopenharmony_ci If slink:VkPipelineLibraryCreateInfoKHR::pname:pLibraries includes at 3851e5c31af7Sopenharmony_ci least one library, 3852e5c31af7Sopenharmony_ci slink:VkGraphicsPipelineLibraryCreateInfoEXT::pname:flags is non-zero, 3853e5c31af7Sopenharmony_ci and any library was created with 3854e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR, 3855e5c31af7Sopenharmony_ci pname:flags must: include 3856e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR 3857e5c31af7Sopenharmony_ciendif::VK_KHR_pipeline_executable_properties[] 3858e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-None-07826]] 3859e5c31af7Sopenharmony_ci If the pipeline includes a <<pipelines-graphics-subsets-complete, 3860e5c31af7Sopenharmony_ci complete set of state>>, and there are no libraries included in 3861e5c31af7Sopenharmony_ci slink:VkPipelineLibraryCreateInfoKHR::pname:pLibraries, then 3862e5c31af7Sopenharmony_ci slink:VkPipelineLayout must: be a valid pipeline layout 3863e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-layout-07827]] 3864e5c31af7Sopenharmony_ci If the pipeline includes a <<pipelines-graphics-subsets-complete, 3865e5c31af7Sopenharmony_ci complete set of state>> specified entirely by libraries, and each 3866e5c31af7Sopenharmony_ci library was created with a slink:VkPipelineLayout created without 3867e5c31af7Sopenharmony_ci ename:VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT, then 3868e5c31af7Sopenharmony_ci pname:layout must: be <<descriptorsets-compatibility,compatible>> with 3869e5c31af7Sopenharmony_ci the layouts in those libraries 3870e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-flags-06729]] 3871e5c31af7Sopenharmony_ci If pname:flags includes 3872e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT, the pipeline 3873e5c31af7Sopenharmony_ci includes a <<pipelines-graphics-subsets-complete, complete set of 3874e5c31af7Sopenharmony_ci state>> specified entirely by libraries, and each library was created 3875e5c31af7Sopenharmony_ci with a slink:VkPipelineLayout created with 3876e5c31af7Sopenharmony_ci ename:VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT, then 3877e5c31af7Sopenharmony_ci pname:layout must: be <<descriptorsets-compatibility,compatible>> with 3878e5c31af7Sopenharmony_ci the union of the libraries' pipeline layouts other than the 3879e5c31af7Sopenharmony_ci inclusion/exclusion of 3880e5c31af7Sopenharmony_ci ename:VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT 3881e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-flags-06730]] 3882e5c31af7Sopenharmony_ci If pname:flags does not include 3883e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT, the pipeline 3884e5c31af7Sopenharmony_ci includes a <<pipelines-graphics-subsets-complete, complete set of 3885e5c31af7Sopenharmony_ci state>> specified entirely by libraries, and each library was created 3886e5c31af7Sopenharmony_ci with a slink:VkPipelineLayout created with 3887e5c31af7Sopenharmony_ci ename:VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT, then 3888e5c31af7Sopenharmony_ci pname:layout must: be <<descriptorsets-compatibility, compatible>> with 3889e5c31af7Sopenharmony_ci the union of the libraries' pipeline layouts 3890e5c31af7Sopenharmony_ciendif::VK_EXT_graphics_pipeline_library[] 3891e5c31af7Sopenharmony_ciifdef::VK_EXT_conservative_rasterization[] 3892e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-conservativePointAndLineRasterization-08892]] 3893e5c31af7Sopenharmony_ci If <<limits-conservativePointAndLineRasterization, 3894e5c31af7Sopenharmony_ci pname:conservativePointAndLineRasterization>> is not supported; the 3895e5c31af7Sopenharmony_ci pipeline is being created with 3896e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-vertex-input, vertex input state>> and 3897e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-pre-rasterization, pre-rasterization shader 3898e5c31af7Sopenharmony_ci state>>; the pipeline does not include a geometry shader; and the value 3899e5c31af7Sopenharmony_ci of slink:VkPipelineInputAssemblyStateCreateInfo::pname:topology is 3900e5c31af7Sopenharmony_ci ename:VK_PRIMITIVE_TOPOLOGY_POINT_LIST, 3901e5c31af7Sopenharmony_ci ename:VK_PRIMITIVE_TOPOLOGY_LINE_LIST, or 3902e5c31af7Sopenharmony_ci ename:VK_PRIMITIVE_TOPOLOGY_LINE_STRIP, 3903e5c31af7Sopenharmony_ciifdef::VK_EXT_extended_dynamic_state3[] 3904e5c31af7Sopenharmony_ci and either ename:VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY dynamic state is 3905e5c31af7Sopenharmony_ci not enabled or 3906e5c31af7Sopenharmony_ci <<limits-dynamicPrimitiveTopologyUnrestricted,pname:dynamicPrimitiveTopologyUnrestricted>> 3907e5c31af7Sopenharmony_ci is ename:VK_FALSE, 3908e5c31af7Sopenharmony_ciendif::VK_EXT_extended_dynamic_state3[] 3909e5c31af7Sopenharmony_ci then 3910e5c31af7Sopenharmony_ci slink:VkPipelineRasterizationConservativeStateCreateInfoEXT::pname:conservativeRasterizationMode 3911e5c31af7Sopenharmony_ci must: be ename:VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT 3912e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-conservativePointAndLineRasterization-06760]] 3913e5c31af7Sopenharmony_ci If <<limits-conservativePointAndLineRasterization, 3914e5c31af7Sopenharmony_ci pname:conservativePointAndLineRasterization>> is not supported, the 3915e5c31af7Sopenharmony_ci pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 3916e5c31af7Sopenharmony_ci pre-rasterization shader state>>, and the pipeline includes a geometry 3917e5c31af7Sopenharmony_ci shader with either the code:OutputPoints or code:OutputLineStrip 3918e5c31af7Sopenharmony_ci execution modes, 3919e5c31af7Sopenharmony_ci slink:VkPipelineRasterizationConservativeStateCreateInfoEXT::pname:conservativeRasterizationMode 3920e5c31af7Sopenharmony_ci must: be ename:VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT 3921e5c31af7Sopenharmony_ciifdef::VK_NV_mesh_shader[] 3922e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-conservativePointAndLineRasterization-06761]] 3923e5c31af7Sopenharmony_ci If <<limits-conservativePointAndLineRasterization, 3924e5c31af7Sopenharmony_ci pname:conservativePointAndLineRasterization>> is not supported, the 3925e5c31af7Sopenharmony_ci pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 3926e5c31af7Sopenharmony_ci pre-rasterization shader state>>, and the pipeline includes a mesh 3927e5c31af7Sopenharmony_ci shader with either the code:OutputPoints or code:OutputLinesNV execution 3928e5c31af7Sopenharmony_ci modes, 3929e5c31af7Sopenharmony_ci slink:VkPipelineRasterizationConservativeStateCreateInfoEXT::pname:conservativeRasterizationMode 3930e5c31af7Sopenharmony_ci must: be ename:VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT 3931e5c31af7Sopenharmony_ciendif::VK_NV_mesh_shader[] 3932e5c31af7Sopenharmony_ciendif::VK_EXT_conservative_rasterization[] 3933e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pStages-06894]] 3934e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 3935e5c31af7Sopenharmony_ci pre-rasterization shader state>> but not 3936e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-fragment-shader, fragment shader state>>, 3937e5c31af7Sopenharmony_ci elements of pname:pStages must: not have pname:stage set to 3938e5c31af7Sopenharmony_ci ename:VK_SHADER_STAGE_FRAGMENT_BIT 3939e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pStages-06895]] 3940e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-fragment-shader, 3941e5c31af7Sopenharmony_ci fragment shader state>> but not 3942e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-pre-rasterization, pre-rasterization shader 3943e5c31af7Sopenharmony_ci state>>, elements of pname:pStages must: not have pname:stage set to a 3944e5c31af7Sopenharmony_ci shader stage which participates in pre-rasterization 3945e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pStages-06896]] 3946e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 3947e5c31af7Sopenharmony_ci pre-rasterization shader state>>, all elements of pname:pStages must: 3948e5c31af7Sopenharmony_ci have a pname:stage set to a shader stage which participates in 3949e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-fragment-shader, fragment shader state>> or 3950e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-pre-rasterization, pre-rasterization shader 3951e5c31af7Sopenharmony_ci state>> 3952e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-stage-06897]] 3953e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-fragment-shader, 3954e5c31af7Sopenharmony_ci fragment shader state>> and/or 3955e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-pre-rasterization, pre-rasterization shader 3956e5c31af7Sopenharmony_ci state>>, any value of pname:stage must: not be set in more than one 3957e5c31af7Sopenharmony_ci element of pname:pStages 3958e5c31af7Sopenharmony_ciifdef::VK_EXT_extended_dynamic_state3[] 3959e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3TessellationDomainOrigin-07370]] 3960e5c31af7Sopenharmony_ci If the <<features-extendedDynamicState3TessellationDomainOrigin, 3961e5c31af7Sopenharmony_ci pname:extendedDynamicState3TessellationDomainOrigin>> feature is not 3962e5c31af7Sopenharmony_ci enabled, there must: be no element of the pname:pDynamicStates member of 3963e5c31af7Sopenharmony_ci pname:pDynamicState set to 3964e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT 3965e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3DepthClampEnable-07371]] 3966e5c31af7Sopenharmony_ci If the <<features-extendedDynamicState3DepthClampEnable, 3967e5c31af7Sopenharmony_ci pname:extendedDynamicState3DepthClampEnable>> feature is not enabled, 3968e5c31af7Sopenharmony_ci there must: be no element of the pname:pDynamicStates member of 3969e5c31af7Sopenharmony_ci pname:pDynamicState set to ename:VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT 3970e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3PolygonMode-07372]] 3971e5c31af7Sopenharmony_ci If the <<features-extendedDynamicState3PolygonMode, 3972e5c31af7Sopenharmony_ci pname:extendedDynamicState3PolygonMode>> feature is not enabled, there 3973e5c31af7Sopenharmony_ci must: be no element of the pname:pDynamicStates member of 3974e5c31af7Sopenharmony_ci pname:pDynamicState set to ename:VK_DYNAMIC_STATE_POLYGON_MODE_EXT 3975e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3RasterizationSamples-07373]] 3976e5c31af7Sopenharmony_ci If the <<features-extendedDynamicState3RasterizationSamples, 3977e5c31af7Sopenharmony_ci pname:extendedDynamicState3RasterizationSamples>> feature is not 3978e5c31af7Sopenharmony_ci enabled, there must: be no element of the pname:pDynamicStates member of 3979e5c31af7Sopenharmony_ci pname:pDynamicState set to 3980e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT 3981e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3SampleMask-07374]] 3982e5c31af7Sopenharmony_ci If the <<features-extendedDynamicState3SampleMask, 3983e5c31af7Sopenharmony_ci pname:extendedDynamicState3SampleMask>> feature is not enabled, there 3984e5c31af7Sopenharmony_ci must: be no element of the pname:pDynamicStates member of 3985e5c31af7Sopenharmony_ci pname:pDynamicState set to ename:VK_DYNAMIC_STATE_SAMPLE_MASK_EXT 3986e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3AlphaToCoverageEnable-07375]] 3987e5c31af7Sopenharmony_ci If the <<features-extendedDynamicState3AlphaToCoverageEnable, 3988e5c31af7Sopenharmony_ci pname:extendedDynamicState3AlphaToCoverageEnable>> feature is not 3989e5c31af7Sopenharmony_ci enabled, there must: be no element of the pname:pDynamicStates member of 3990e5c31af7Sopenharmony_ci pname:pDynamicState set to 3991e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT 3992e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3AlphaToOneEnable-07376]] 3993e5c31af7Sopenharmony_ci If the <<features-extendedDynamicState3AlphaToOneEnable, 3994e5c31af7Sopenharmony_ci pname:extendedDynamicState3AlphaToOneEnable>> feature is not enabled, 3995e5c31af7Sopenharmony_ci there must: be no element of the pname:pDynamicStates member of 3996e5c31af7Sopenharmony_ci pname:pDynamicState set to 3997e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT 3998e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3LogicOpEnable-07377]] 3999e5c31af7Sopenharmony_ci If the <<features-extendedDynamicState3LogicOpEnable, 4000e5c31af7Sopenharmony_ci pname:extendedDynamicState3LogicOpEnable>> feature is not enabled, there 4001e5c31af7Sopenharmony_ci must: be no element of the pname:pDynamicStates member of 4002e5c31af7Sopenharmony_ci pname:pDynamicState set to ename:VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT 4003e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3ColorBlendEnable-07378]] 4004e5c31af7Sopenharmony_ci If the <<features-extendedDynamicState3ColorBlendEnable, 4005e5c31af7Sopenharmony_ci pname:extendedDynamicState3ColorBlendEnable>> feature is not enabled, 4006e5c31af7Sopenharmony_ci there must: be no element of the pname:pDynamicStates member of 4007e5c31af7Sopenharmony_ci pname:pDynamicState set to ename:VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT 4008e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3ColorBlendEquation-07379]] 4009e5c31af7Sopenharmony_ci If the <<features-extendedDynamicState3ColorBlendEquation, 4010e5c31af7Sopenharmony_ci pname:extendedDynamicState3ColorBlendEquation>> feature is not enabled, 4011e5c31af7Sopenharmony_ci there must: be no element of the pname:pDynamicStates member of 4012e5c31af7Sopenharmony_ci pname:pDynamicState set to 4013e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT 4014e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3ColorWriteMask-07380]] 4015e5c31af7Sopenharmony_ci If the <<features-extendedDynamicState3ColorWriteMask, 4016e5c31af7Sopenharmony_ci pname:extendedDynamicState3ColorWriteMask>> feature is not enabled, 4017e5c31af7Sopenharmony_ci there must: be no element of the pname:pDynamicStates member of 4018e5c31af7Sopenharmony_ci pname:pDynamicState set to ename:VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT 4019e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3RasterizationStream-07381]] 4020e5c31af7Sopenharmony_ci If the <<features-extendedDynamicState3RasterizationStream, 4021e5c31af7Sopenharmony_ci pname:extendedDynamicState3RasterizationStream>> feature is not enabled, 4022e5c31af7Sopenharmony_ci there must: be no element of the pname:pDynamicStates member of 4023e5c31af7Sopenharmony_ci pname:pDynamicState set to 4024e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT 4025e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3ConservativeRasterizationMode-07382]] 4026e5c31af7Sopenharmony_ci If the <<features-extendedDynamicState3ConservativeRasterizationMode, 4027e5c31af7Sopenharmony_ci pname:extendedDynamicState3ConservativeRasterizationMode>> feature is 4028e5c31af7Sopenharmony_ci not enabled, there must: be no element of the pname:pDynamicStates 4029e5c31af7Sopenharmony_ci member of pname:pDynamicState set to 4030e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT 4031e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3ExtraPrimitiveOverestimationSize-07383]] 4032e5c31af7Sopenharmony_ci If the <<features-extendedDynamicState3ExtraPrimitiveOverestimationSize, 4033e5c31af7Sopenharmony_ci pname:extendedDynamicState3ExtraPrimitiveOverestimationSize>> feature is 4034e5c31af7Sopenharmony_ci not enabled, there must: be no element of the pname:pDynamicStates 4035e5c31af7Sopenharmony_ci member of pname:pDynamicState set to 4036e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT 4037e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3DepthClipEnable-07384]] 4038e5c31af7Sopenharmony_ci If the <<features-extendedDynamicState3DepthClipEnable, 4039e5c31af7Sopenharmony_ci pname:extendedDynamicState3DepthClipEnable>> feature is not enabled, 4040e5c31af7Sopenharmony_ci there must: be no element of the pname:pDynamicStates member of 4041e5c31af7Sopenharmony_ci pname:pDynamicState set to ename:VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT 4042e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3SampleLocationsEnable-07385]] 4043e5c31af7Sopenharmony_ci If the <<features-extendedDynamicState3SampleLocationsEnable, 4044e5c31af7Sopenharmony_ci pname:extendedDynamicState3SampleLocationsEnable>> feature is not 4045e5c31af7Sopenharmony_ci enabled, there must: be no element of the pname:pDynamicStates member of 4046e5c31af7Sopenharmony_ci pname:pDynamicState set to 4047e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT 4048e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3ColorBlendAdvanced-07386]] 4049e5c31af7Sopenharmony_ci If the <<features-extendedDynamicState3ColorBlendAdvanced, 4050e5c31af7Sopenharmony_ci pname:extendedDynamicState3ColorBlendAdvanced>> feature is not enabled, 4051e5c31af7Sopenharmony_ci there must: be no element of the pname:pDynamicStates member of 4052e5c31af7Sopenharmony_ci pname:pDynamicState set to 4053e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT 4054e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3ProvokingVertexMode-07387]] 4055e5c31af7Sopenharmony_ci If the <<features-extendedDynamicState3ProvokingVertexMode, 4056e5c31af7Sopenharmony_ci pname:extendedDynamicState3ProvokingVertexMode>> feature is not enabled, 4057e5c31af7Sopenharmony_ci there must: be no element of the pname:pDynamicStates member of 4058e5c31af7Sopenharmony_ci pname:pDynamicState set to 4059e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT 4060e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3LineRasterizationMode-07388]] 4061e5c31af7Sopenharmony_ci If the <<features-extendedDynamicState3LineRasterizationMode, 4062e5c31af7Sopenharmony_ci pname:extendedDynamicState3LineRasterizationMode>> feature is not 4063e5c31af7Sopenharmony_ci enabled, there must: be no element of the pname:pDynamicStates member of 4064e5c31af7Sopenharmony_ci pname:pDynamicState set to 4065e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT 4066e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3LineStippleEnable-07389]] 4067e5c31af7Sopenharmony_ci If the <<features-extendedDynamicState3LineStippleEnable, 4068e5c31af7Sopenharmony_ci pname:extendedDynamicState3LineStippleEnable>> feature is not enabled, 4069e5c31af7Sopenharmony_ci there must: be no element of the pname:pDynamicStates member of 4070e5c31af7Sopenharmony_ci pname:pDynamicState set to 4071e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT 4072e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3DepthClipNegativeOneToOne-07390]] 4073e5c31af7Sopenharmony_ci If the <<features-extendedDynamicState3DepthClipNegativeOneToOne, 4074e5c31af7Sopenharmony_ci pname:extendedDynamicState3DepthClipNegativeOneToOne>> feature is not 4075e5c31af7Sopenharmony_ci enabled, there must: be no element of the pname:pDynamicStates member of 4076e5c31af7Sopenharmony_ci pname:pDynamicState set to 4077e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT 4078e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3ViewportWScalingEnable-07391]] 4079e5c31af7Sopenharmony_ci If the <<features-extendedDynamicState3ViewportWScalingEnable, 4080e5c31af7Sopenharmony_ci pname:extendedDynamicState3ViewportWScalingEnable>> feature is not 4081e5c31af7Sopenharmony_ci enabled, there must: be no element of the pname:pDynamicStates member of 4082e5c31af7Sopenharmony_ci pname:pDynamicState set to 4083e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV 4084e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3ViewportSwizzle-07392]] 4085e5c31af7Sopenharmony_ci If the <<features-extendedDynamicState3ViewportSwizzle, 4086e5c31af7Sopenharmony_ci pname:extendedDynamicState3ViewportSwizzle>> feature is not enabled, 4087e5c31af7Sopenharmony_ci there must: be no element of the pname:pDynamicStates member of 4088e5c31af7Sopenharmony_ci pname:pDynamicState set to ename:VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV 4089e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3CoverageToColorEnable-07393]] 4090e5c31af7Sopenharmony_ci If the <<features-extendedDynamicState3CoverageToColorEnable, 4091e5c31af7Sopenharmony_ci pname:extendedDynamicState3CoverageToColorEnable>> feature is not 4092e5c31af7Sopenharmony_ci enabled, there must: be no element of the pname:pDynamicStates member of 4093e5c31af7Sopenharmony_ci pname:pDynamicState set to 4094e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV 4095e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3CoverageToColorLocation-07394]] 4096e5c31af7Sopenharmony_ci If the <<features-extendedDynamicState3CoverageToColorLocation, 4097e5c31af7Sopenharmony_ci pname:extendedDynamicState3CoverageToColorLocation>> feature is not 4098e5c31af7Sopenharmony_ci enabled, there must: be no element of the pname:pDynamicStates member of 4099e5c31af7Sopenharmony_ci pname:pDynamicState set to 4100e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV 4101e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3CoverageModulationMode-07395]] 4102e5c31af7Sopenharmony_ci If the <<features-extendedDynamicState3CoverageModulationMode, 4103e5c31af7Sopenharmony_ci pname:extendedDynamicState3CoverageModulationMode>> feature is not 4104e5c31af7Sopenharmony_ci enabled, there must: be no element of the pname:pDynamicStates member of 4105e5c31af7Sopenharmony_ci pname:pDynamicState set to 4106e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV 4107e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3CoverageModulationTableEnable-07396]] 4108e5c31af7Sopenharmony_ci If the <<features-extendedDynamicState3CoverageModulationTableEnable, 4109e5c31af7Sopenharmony_ci pname:extendedDynamicState3CoverageModulationTableEnable>> feature is 4110e5c31af7Sopenharmony_ci not enabled, there must: be no element of the pname:pDynamicStates 4111e5c31af7Sopenharmony_ci member of pname:pDynamicState set to 4112e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV 4113e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3CoverageModulationTable-07397]] 4114e5c31af7Sopenharmony_ci If the <<features-extendedDynamicState3CoverageModulationTable, 4115e5c31af7Sopenharmony_ci pname:extendedDynamicState3CoverageModulationTable>> feature is not 4116e5c31af7Sopenharmony_ci enabled, there must: be no element of the pname:pDynamicStates member of 4117e5c31af7Sopenharmony_ci pname:pDynamicState set to 4118e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV 4119e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3CoverageReductionMode-07398]] 4120e5c31af7Sopenharmony_ci If the <<features-extendedDynamicState3CoverageReductionMode, 4121e5c31af7Sopenharmony_ci pname:extendedDynamicState3CoverageReductionMode>> feature is not 4122e5c31af7Sopenharmony_ci enabled, there must: be no element of the pname:pDynamicStates member of 4123e5c31af7Sopenharmony_ci pname:pDynamicState set to 4124e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV 4125e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3RepresentativeFragmentTestEnable-07399]] 4126e5c31af7Sopenharmony_ci If the <<features-extendedDynamicState3RepresentativeFragmentTestEnable, 4127e5c31af7Sopenharmony_ci pname:extendedDynamicState3RepresentativeFragmentTestEnable>> feature is 4128e5c31af7Sopenharmony_ci not enabled, there must: be no element of the pname:pDynamicStates 4129e5c31af7Sopenharmony_ci member of pname:pDynamicState set to 4130e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV 4131e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3ShadingRateImageEnable-07400]] 4132e5c31af7Sopenharmony_ci If the <<features-extendedDynamicState3ShadingRateImageEnable, 4133e5c31af7Sopenharmony_ci pname:extendedDynamicState3ShadingRateImageEnable>> feature is not 4134e5c31af7Sopenharmony_ci enabled, there must: be no element of the pname:pDynamicStates member of 4135e5c31af7Sopenharmony_ci pname:pDynamicState set to 4136e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV 4137e5c31af7Sopenharmony_ciendif::VK_EXT_extended_dynamic_state3[] 4138e5c31af7Sopenharmony_ciifdef::VK_EXT_opacity_micromap[] 4139e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-flags-07401]] 4140e5c31af7Sopenharmony_ci pname:flags must: not include 4141e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT 4142e5c31af7Sopenharmony_ciendif::VK_EXT_opacity_micromap[] 4143e5c31af7Sopenharmony_ciifdef::VK_NV_displacement_micromap[] 4144e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-flags-07997]] 4145e5c31af7Sopenharmony_ci pname:flags must: not include 4146e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV 4147e5c31af7Sopenharmony_ciendif::VK_NV_displacement_micromap[] 4148e5c31af7Sopenharmony_ciifdef::VK_QCOM_multiview_per_view_viewports[] 4149e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-07730]] 4150e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 4151e5c31af7Sopenharmony_ci pre-rasterization shader state>>, and no element of the 4152e5c31af7Sopenharmony_ci pname:pDynamicStates member of pname:pDynamicState is 4153e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_VIEWPORT or 4154e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT, and if 4155e5c31af7Sopenharmony_ci <<features-multiview-per-view-viewports, 4156e5c31af7Sopenharmony_ci pname:multiviewPerViewViewports>> is enabled, then the index of the most 4157e5c31af7Sopenharmony_ci significant bit in each element of 4158e5c31af7Sopenharmony_ci slink:VkRenderPassMultiviewCreateInfo::pname:pViewMasks must: be less 4159e5c31af7Sopenharmony_ci than pname:pViewportState->viewportCount 4160e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-07731]] 4161e5c31af7Sopenharmony_ci If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, 4162e5c31af7Sopenharmony_ci pre-rasterization shader state>>, and no element of the 4163e5c31af7Sopenharmony_ci pname:pDynamicStates member of pname:pDynamicState is 4164e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_SCISSOR or 4165e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT, and if 4166e5c31af7Sopenharmony_ci <<features-multiview-per-view-viewports, 4167e5c31af7Sopenharmony_ci pname:multiviewPerViewViewports>> is enabled, then the index of the most 4168e5c31af7Sopenharmony_ci significant bit in each element of 4169e5c31af7Sopenharmony_ci slink:VkRenderPassMultiviewCreateInfo::pname:pViewMasks must: be less 4170e5c31af7Sopenharmony_ci than pname:pViewportState->scissorCount 4171e5c31af7Sopenharmony_ciendif::VK_QCOM_multiview_per_view_viewports[] 4172e5c31af7Sopenharmony_ciifdef::VK_EXT_shader_tile_image[] 4173e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pStages-08711]] 4174e5c31af7Sopenharmony_ci If pname:pStages includes a fragment shader stage, 4175e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE is not set in 4176e5c31af7Sopenharmony_ci slink:VkPipelineDynamicStateCreateInfo::pname:pDynamicStates, and the 4177e5c31af7Sopenharmony_ci fragment shader declares the code:EarlyFragmentTests execution mode and 4178e5c31af7Sopenharmony_ci uses code:OpDepthAttachmentReadEXT, the pname:depthWriteEnable member of 4179e5c31af7Sopenharmony_ci slink:VkPipelineDepthStencilStateCreateInfo must: be ename:VK_FALSE 4180e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pStages-08712]] 4181e5c31af7Sopenharmony_ci If pname:pStages includes a fragment shader stage, 4182e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_STENCIL_WRITE_MASK is not set in 4183e5c31af7Sopenharmony_ci slink:VkPipelineDynamicStateCreateInfo::pname:pDynamicStates, and the 4184e5c31af7Sopenharmony_ci fragment shader declares the code:EarlyFragmentTests execution mode and 4185e5c31af7Sopenharmony_ci uses code:OpStencilAttachmentReadEXT, the value of 4186e5c31af7Sopenharmony_ci slink:VkStencilOpState::pname:writeMask for both pname:front and 4187e5c31af7Sopenharmony_ci pname:back in slink:VkPipelineDepthStencilStateCreateInfo must: be `0` 4188e5c31af7Sopenharmony_ciendif::VK_EXT_shader_tile_image[] 4189e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_3,VK_KHR_dynamic_rendering[] 4190e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-renderPass-08744]] 4191e5c31af7Sopenharmony_ci If pname:renderPass is dlink:VK_NULL_HANDLE, the pipeline requires 4192e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-fragment-output, fragment output state>> or 4193e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-fragment-shader, fragment shader state>>, 4194e5c31af7Sopenharmony_ci the pipeline enables <<primsrast-sampleshading, sample shading>>, 4195e5c31af7Sopenharmony_ci pname:rasterizationSamples is not dynamic, and the pname:pNext chain 4196e5c31af7Sopenharmony_ci includes a slink:VkPipelineRenderingCreateInfo structure, 4197e5c31af7Sopenharmony_ci pname:rasterizationSamples must: be a valid elink:VkSampleCountFlagBits 4198e5c31af7Sopenharmony_ci value that is set in pname:imageCreateSampleCounts (as defined in 4199e5c31af7Sopenharmony_ci <<resources-image-creation-limits,Image Creation Limits>>) for every 4200e5c31af7Sopenharmony_ci element of pname:depthAttachmentFormat, pname:stencilAttachmentFormat 4201e5c31af7Sopenharmony_ci and the pname:pColorAttachmentFormats array which is not 4202e5c31af7Sopenharmony_ci ename:VK_FORMAT_UNDEFINED 4203e5c31af7Sopenharmony_ciendif::VK_VERSION_1_3,VK_KHR_dynamic_rendering[] 4204e5c31af7Sopenharmony_ciifndef::VK_EXT_graphics_pipeline_library[] 4205e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-None-08893]] 4206e5c31af7Sopenharmony_ci The pipeline must: be created with 4207e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-pre-rasterization, pre-rasterization shader 4208e5c31af7Sopenharmony_ci state>> 4209e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pStages-08894]] 4210e5c31af7Sopenharmony_ci If pname:pStages includes a vertex shader stage, the pipeline must: be 4211e5c31af7Sopenharmony_ci created with <<pipelines-graphics-subsets-vertex-input, vertex input 4212e5c31af7Sopenharmony_ci state>> 4213e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-pDynamicState-08896]] 4214e5c31af7Sopenharmony_ci If 4215e5c31af7Sopenharmony_ciifdef::VK_EXT_extended_dynamic_state2,VK_VERSION_1_3[] 4216e5c31af7Sopenharmony_ci pname:pDynamicState->pDynamicStates includes 4217e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE, or if it does not and 4218e5c31af7Sopenharmony_ciendif::VK_EXT_extended_dynamic_state2,VK_VERSION_1_3[] 4219e5c31af7Sopenharmony_ci pname:pRasterizationState->rasterizerDiscardEnable is ename:VK_FALSE, 4220e5c31af7Sopenharmony_ci the pipeline must: be created with 4221e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-fragment-shader, fragment shader state>> 4222e5c31af7Sopenharmony_ci and <<pipelines-graphics-subsets-fragment-output,fragment output 4223e5c31af7Sopenharmony_ci interface state>> 4224e5c31af7Sopenharmony_ciendif::VK_EXT_graphics_pipeline_library[] 4225e5c31af7Sopenharmony_ciifdef::VK_EXT_graphics_pipeline_library[] 4226e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-flags-08897]] 4227e5c31af7Sopenharmony_ci If slink:VkGraphicsPipelineLibraryCreateInfoEXT::pname:flags includes 4228e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT, 4229e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-pre-rasterization, pre-rasterization shader 4230e5c31af7Sopenharmony_ci state>> is specified either in a library or by the inclusion of 4231e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT, 4232e5c31af7Sopenharmony_ci and that state includes a vertex shader stage in pname:pStages, the 4233e5c31af7Sopenharmony_ci pipeline must: define <<pipelines-graphics-subsets-vertex-input, vertex 4234e5c31af7Sopenharmony_ci input state>> 4235e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-flags-08898]] 4236e5c31af7Sopenharmony_ci If slink:VkGraphicsPipelineLibraryCreateInfoEXT::pname:flags includes 4237e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT, and 4238e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-pre-rasterization, pre-rasterization shader 4239e5c31af7Sopenharmony_ci state>> is not specified, the pipeline must: define 4240e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-vertex-input, vertex input state>> 4241e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-flags-08899]] 4242e5c31af7Sopenharmony_ci If pname:flags does not include 4243e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_LIBRARY_BIT_KHR, 4244e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-pre-rasterization, pre-rasterization shader 4245e5c31af7Sopenharmony_ci state>> is specified either in a library or by the inclusion of 4246e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT, 4247e5c31af7Sopenharmony_ci and that state includes a vertex shader stage in pname:pStages, the 4248e5c31af7Sopenharmony_ci pipeline must: either define 4249e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-pre-rasterization, pre-rasterization shader 4250e5c31af7Sopenharmony_ci state>> or include that state in a linked pipeline library 4251e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-flags-08900]] 4252e5c31af7Sopenharmony_ci If slink:VkGraphicsPipelineLibraryCreateInfoEXT::pname:flags includes 4253e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT the 4254e5c31af7Sopenharmony_ci pipeline must: define <<pipelines-graphics-subsets-pre-rasterization, 4255e5c31af7Sopenharmony_ci pre-rasterization shader state>> 4256e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-flags-08901]] 4257e5c31af7Sopenharmony_ci If pname:flags does not include 4258e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_LIBRARY_BIT_KHR, the pipeline must: either 4259e5c31af7Sopenharmony_ci define <<pipelines-graphics-subsets-pre-rasterization, pre-rasterization 4260e5c31af7Sopenharmony_ci shader state>> or include that state in a linked pipeline library 4261e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-flags-08903]] 4262e5c31af7Sopenharmony_ci If slink:VkGraphicsPipelineLibraryCreateInfoEXT::pname:flags includes 4263e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, 4264e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-pre-rasterization, pre-rasterization shader 4265e5c31af7Sopenharmony_ci state>> is specified either in a library or by the inclusion of 4266e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT, 4267e5c31af7Sopenharmony_ci and that state 4268e5c31af7Sopenharmony_ciifdef::VK_EXT_extended_dynamic_state2,VK_VERSION_1_3[] 4269e5c31af7Sopenharmony_ci either includes ename:VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE or 4270e5c31af7Sopenharmony_ciendif::VK_EXT_extended_dynamic_state2,VK_VERSION_1_3[] 4271e5c31af7Sopenharmony_ci has pname:pRasterizationState->rasterizerDiscardEnable set to 4272e5c31af7Sopenharmony_ci ename:VK_FALSE, the pipeline must: define 4273e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-fragment-shader, fragment shader state>> 4274e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-flags-08904]] 4275e5c31af7Sopenharmony_ci If slink:VkGraphicsPipelineLibraryCreateInfoEXT::pname:flags includes 4276e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, and 4277e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-pre-rasterization, pre-rasterization shader 4278e5c31af7Sopenharmony_ci state>> is not specified, the pipeline must: define 4279e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-fragment-shader, fragment shader state>> 4280e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-flags-08906]] 4281e5c31af7Sopenharmony_ci If slink:VkGraphicsPipelineLibraryCreateInfoEXT::pname:flags includes 4282e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, 4283e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-pre-rasterization, pre-rasterization shader 4284e5c31af7Sopenharmony_ci state>> is specified either in a library or by the inclusion of 4285e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT, 4286e5c31af7Sopenharmony_ci and that state 4287e5c31af7Sopenharmony_ciifdef::VK_EXT_extended_dynamic_state2,VK_VERSION_1_3[] 4288e5c31af7Sopenharmony_ci either includes ename:VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE or 4289e5c31af7Sopenharmony_ciendif::VK_EXT_extended_dynamic_state2,VK_VERSION_1_3[] 4290e5c31af7Sopenharmony_ci has pname:pRasterizationState->rasterizerDiscardEnable set to 4291e5c31af7Sopenharmony_ci ename:VK_FALSE, the pipeline must: define 4292e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-fragment-output,fragment output interface 4293e5c31af7Sopenharmony_ci state>> 4294e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-flags-08907]] 4295e5c31af7Sopenharmony_ci If slink:VkGraphicsPipelineLibraryCreateInfoEXT::pname:flags includes 4296e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, and 4297e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-pre-rasterization, pre-rasterization shader 4298e5c31af7Sopenharmony_ci state>> is not specified, the pipeline must: define 4299e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-fragment-output,fragment output interface 4300e5c31af7Sopenharmony_ci state>> 4301e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-flags-08909]] 4302e5c31af7Sopenharmony_ci If pname:flags does not include 4303e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_LIBRARY_BIT_KHR, 4304e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-pre-rasterization, pre-rasterization shader 4305e5c31af7Sopenharmony_ci state>> is specified either in a library or by the inclusion of 4306e5c31af7Sopenharmony_ci ename:VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT, 4307e5c31af7Sopenharmony_ci and that state 4308e5c31af7Sopenharmony_ciifdef::VK_EXT_extended_dynamic_state2,VK_VERSION_1_3[] 4309e5c31af7Sopenharmony_ci either includes ename:VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE or 4310e5c31af7Sopenharmony_ciendif::VK_EXT_extended_dynamic_state2,VK_VERSION_1_3[] 4311e5c31af7Sopenharmony_ci has pname:pRasterizationState->rasterizerDiscardEnable set to 4312e5c31af7Sopenharmony_ci ename:VK_FALSE, the pipeline must: define 4313e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-fragment-output,fragment output interface 4314e5c31af7Sopenharmony_ci state>> and <<pipelines-graphics-subsets-fragment-shader, fragment 4315e5c31af7Sopenharmony_ci shader state>> or include those states in linked pipeline libraries 4316e5c31af7Sopenharmony_ciendif::VK_EXT_graphics_pipeline_library[] 4317e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-None-09043]] 4318e5c31af7Sopenharmony_ci If 4319e5c31af7Sopenharmony_ciifdef::VK_EXT_extended_dynamic_state3[] 4320e5c31af7Sopenharmony_ci pname:pDynamicState->pDynamicStates does not include 4321e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT, and 4322e5c31af7Sopenharmony_ciendif::VK_EXT_extended_dynamic_state3[] 4323e5c31af7Sopenharmony_ci the format of any color attachment is 4324e5c31af7Sopenharmony_ci ename:VK_FORMAT_E5B9G9R9_UFLOAT_PACK32, the pname:colorWriteMask member 4325e5c31af7Sopenharmony_ci of the corresponding element of pname:pColorBlendState->pAttachments 4326e5c31af7Sopenharmony_ci must: either include all of ename:VK_COLOR_COMPONENT_R_BIT, 4327e5c31af7Sopenharmony_ci ename:VK_COLOR_COMPONENT_G_BIT, and ename:VK_COLOR_COMPONENT_B_BIT, or 4328e5c31af7Sopenharmony_ci none of them 4329e5c31af7Sopenharmony_ciifdef::VK_ANDROID_external_format_resolve[] 4330e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_3,VK_KHR_dynamic_rendering[] 4331e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09301]] 4332e5c31af7Sopenharmony_ci If the <<features-externalFormatResolve, pname:externalFormatResolve>> 4333e5c31af7Sopenharmony_ci feature is enabled, the pipeline requires 4334e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-fragment-output, fragment output interface 4335e5c31af7Sopenharmony_ci state>>, pname:renderPass is dlink:VK_NULL_HANDLE, and 4336e5c31af7Sopenharmony_ci slink:VkExternalFormatANDROID::pname:externalFormat is not `0`, 4337e5c31af7Sopenharmony_ci slink:VkPipelineRenderingCreateInfo::pname:viewMask must: be `0` 4338e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09304]] 4339e5c31af7Sopenharmony_ci If the <<features-externalFormatResolve, pname:externalFormatResolve>> 4340e5c31af7Sopenharmony_ci feature is enabled, the pipeline requires 4341e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-fragment-output, fragment output interface 4342e5c31af7Sopenharmony_ci state>>, pname:renderPass is dlink:VK_NULL_HANDLE, 4343e5c31af7Sopenharmony_ci slink:VkExternalFormatANDROID::pname:externalFormat is not `0`, and 4344e5c31af7Sopenharmony_ci pname:rasterizationSamples is not dynamic, 4345e5c31af7Sopenharmony_ci slink:VkPipelineMultisampleStateCreateInfo::pname:rasterizationSamples 4346e5c31af7Sopenharmony_ci must: be `1` 4347e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09305]] 4348e5c31af7Sopenharmony_ci If the <<features-externalFormatResolve, pname:externalFormatResolve>> 4349e5c31af7Sopenharmony_ci feature is enabled, the pipeline requires 4350e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-fragment-output, fragment output interface 4351e5c31af7Sopenharmony_ci state>>, pname:renderPass is dlink:VK_NULL_HANDLE, and 4352e5c31af7Sopenharmony_ci slink:VkExternalFormatANDROID::pname:externalFormat is not `0`, and 4353e5c31af7Sopenharmony_ci pname:blendEnable is not dynamic, the pname:blendEnable member of each 4354e5c31af7Sopenharmony_ci element of pname:pColorBlendState->pAttachments must: be ename:VK_FALSE 4355e5c31af7Sopenharmony_ciifdef::VK_KHR_fragment_shading_rate[] 4356e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09306]] 4357e5c31af7Sopenharmony_ci If the <<features-externalFormatResolve, pname:externalFormatResolve>> 4358e5c31af7Sopenharmony_ci feature is enabled, the pipeline requires 4359e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-fragment-output, fragment output interface 4360e5c31af7Sopenharmony_ci state>>, pname:renderPass is dlink:VK_NULL_HANDLE, and 4361e5c31af7Sopenharmony_ci slink:VkExternalFormatANDROID::pname:externalFormat is not `0`, and 4362e5c31af7Sopenharmony_ci pname:pDynamicState->pDynamicStates does not include 4363e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR, 4364e5c31af7Sopenharmony_ci slink:VkPipelineFragmentShadingRateStateCreateInfoKHR::pname:width must: 4365e5c31af7Sopenharmony_ci be `1` 4366e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09307]] 4367e5c31af7Sopenharmony_ci If the <<features-externalFormatResolve, pname:externalFormatResolve>> 4368e5c31af7Sopenharmony_ci feature is enabled, the pipeline requires 4369e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-fragment-output, fragment output interface 4370e5c31af7Sopenharmony_ci state>>, pname:renderPass is dlink:VK_NULL_HANDLE, and 4371e5c31af7Sopenharmony_ci slink:VkExternalFormatANDROID::pname:externalFormat is not `0`, and 4372e5c31af7Sopenharmony_ci pname:pDynamicState->pDynamicStates does not include 4373e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR, 4374e5c31af7Sopenharmony_ci slink:VkPipelineFragmentShadingRateStateCreateInfoKHR::pname:height 4375e5c31af7Sopenharmony_ci must: be `1` 4376e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09308]] 4377e5c31af7Sopenharmony_ci If the <<features-externalFormatResolve, pname:externalFormatResolve>> 4378e5c31af7Sopenharmony_ci feature is enabled, the pipeline requires 4379e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-fragment-output, pre-rasterization shader 4380e5c31af7Sopenharmony_ci state>> and <<pipelines-graphics-subsets-fragment-output, fragment 4381e5c31af7Sopenharmony_ci output interface state>>, pname:renderPass is dlink:VK_NULL_HANDLE, and 4382e5c31af7Sopenharmony_ci slink:VkExternalFormatANDROID::pname:externalFormat is not `0`, the last 4383e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-pre-rasterization, pre-rasterization shader 4384e5c31af7Sopenharmony_ci stage>> must: not statically use a variable with the 4385e5c31af7Sopenharmony_ci code:PrimitiveShadingRateKHR built-in 4386e5c31af7Sopenharmony_ciendif::VK_KHR_fragment_shading_rate[] 4387e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09309]] 4388e5c31af7Sopenharmony_ci If the <<features-externalFormatResolve, pname:externalFormatResolve>> 4389e5c31af7Sopenharmony_ci feature is enabled, the pipeline requires 4390e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-fragment-output, fragment output interface 4391e5c31af7Sopenharmony_ci state>>, pname:renderPass is dlink:VK_NULL_HANDLE, and 4392e5c31af7Sopenharmony_ci slink:VkExternalFormatANDROID::pname:externalFormat is not `0`, 4393e5c31af7Sopenharmony_ci slink:VkPipelineRenderingCreateInfo::pname:colorAttachmentCount must: be 4394e5c31af7Sopenharmony_ci `1` 4395e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09310]] 4396e5c31af7Sopenharmony_ci If the <<features-externalFormatResolve, pname:externalFormatResolve>> 4397e5c31af7Sopenharmony_ci feature is enabled, the pipeline requires 4398e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-fragment-shader, fragment shader state>> 4399e5c31af7Sopenharmony_ci and <<pipelines-graphics-subsets-fragment-output, fragment output 4400e5c31af7Sopenharmony_ci interface state>>, pname:renderPass is dlink:VK_NULL_HANDLE, and 4401e5c31af7Sopenharmony_ci slink:VkExternalFormatANDROID::pname:externalFormat is not `0`, the 4402e5c31af7Sopenharmony_ci fragment shader must: not declare the code:DepthReplacing or 4403e5c31af7Sopenharmony_ci code:StencilRefReplacingEXT execution modes 4404e5c31af7Sopenharmony_ciendif::VK_VERSION_1_3,VK_KHR_dynamic_rendering[] 4405e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09313]] 4406e5c31af7Sopenharmony_ci If the <<features-externalFormatResolve, pname:externalFormatResolve>> 4407e5c31af7Sopenharmony_ci feature is enabled, the pipeline requires 4408e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-fragment-output, fragment output interface 4409e5c31af7Sopenharmony_ci state>>, pname:renderPass is not dlink:VK_NULL_HANDLE, pname:subpass 4410e5c31af7Sopenharmony_ci includes an external format resolve attachment, and 4411e5c31af7Sopenharmony_ci pname:rasterizationSamples is not dynamic, 4412e5c31af7Sopenharmony_ci slink:VkPipelineMultisampleStateCreateInfo::pname:rasterizationSamples 4413e5c31af7Sopenharmony_ci must: be ename:VK_SAMPLE_COUNT_1_BIT 4414e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09314]] 4415e5c31af7Sopenharmony_ci If the <<features-externalFormatResolve, pname:externalFormatResolve>> 4416e5c31af7Sopenharmony_ci feature is enabled, the pipeline requires 4417e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-fragment-output, fragment output interface 4418e5c31af7Sopenharmony_ci state>>, pname:renderPass is not dlink:VK_NULL_HANDLE, pname:subpass 4419e5c31af7Sopenharmony_ci includes an external format resolve attachment, and pname:blendEnable is 4420e5c31af7Sopenharmony_ci not dynamic, the pname:blendEnable member of each element of 4421e5c31af7Sopenharmony_ci pname:pColorBlendState->pAttachments must: be ename:VK_FALSE 4422e5c31af7Sopenharmony_ciifdef::VK_KHR_fragment_shading_rate[] 4423e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09315]] 4424e5c31af7Sopenharmony_ci If the <<features-externalFormatResolve, pname:externalFormatResolve>> 4425e5c31af7Sopenharmony_ci feature is enabled, the pipeline requires 4426e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-fragment-output, fragment output interface 4427e5c31af7Sopenharmony_ci state>>, pname:renderPass is not dlink:VK_NULL_HANDLE, pname:subpass 4428e5c31af7Sopenharmony_ci includes an external format resolve attachment, and 4429e5c31af7Sopenharmony_ci pname:pDynamicState->pDynamicStates does not include 4430e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR, 4431e5c31af7Sopenharmony_ci slink:VkPipelineFragmentShadingRateStateCreateInfoKHR::pname:width must: 4432e5c31af7Sopenharmony_ci be `1` 4433e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09316]] 4434e5c31af7Sopenharmony_ci If the <<features-externalFormatResolve, pname:externalFormatResolve>> 4435e5c31af7Sopenharmony_ci feature is enabled, the pipeline requires 4436e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-fragment-output, fragment output interface 4437e5c31af7Sopenharmony_ci state>>, pname:renderPass is not dlink:VK_NULL_HANDLE, pname:subpass 4438e5c31af7Sopenharmony_ci includes an external format resolve attachment, and 4439e5c31af7Sopenharmony_ci pname:pDynamicState->pDynamicStates does not include 4440e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR, 4441e5c31af7Sopenharmony_ci slink:VkPipelineFragmentShadingRateStateCreateInfoKHR::pname:height 4442e5c31af7Sopenharmony_ci must: be `1` 4443e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09317]] 4444e5c31af7Sopenharmony_ci If the <<features-externalFormatResolve, pname:externalFormatResolve>> 4445e5c31af7Sopenharmony_ci feature is enabled, the pipeline requires 4446e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-fragment-output, pre-rasterization shader 4447e5c31af7Sopenharmony_ci state>> and <<pipelines-graphics-subsets-fragment-output, fragment 4448e5c31af7Sopenharmony_ci output interface state>>, pname:renderPass is not dlink:VK_NULL_HANDLE, 4449e5c31af7Sopenharmony_ci and pname:subpass includes an external format resolve attachment, the 4450e5c31af7Sopenharmony_ci last <<pipelines-graphics-subsets-pre-rasterization, pre-rasterization 4451e5c31af7Sopenharmony_ci shader stage>> must: not statically use a variable with the 4452e5c31af7Sopenharmony_ci code:PrimitiveShadingRateKHR built-in 4453e5c31af7Sopenharmony_ciendif::VK_KHR_fragment_shading_rate[] 4454e5c31af7Sopenharmony_ciendif::VK_ANDROID_external_format_resolve[] 4455e5c31af7Sopenharmony_ci**** 4456e5c31af7Sopenharmony_ciifdef::VKSC_VERSION_1_0[] 4457e5c31af7Sopenharmony_ciifdef::hidden[] 4458e5c31af7Sopenharmony_ci// tag::scdeviation[] 4459e5c31af7Sopenharmony_ci * slink:VkGraphicsPipelineCreateInfo::pname:basePipelineHandle must: be 4460e5c31af7Sopenharmony_ci dlink:VK_NULL_HANDLE <<SCID-8>>. 4461e5c31af7Sopenharmony_ci * slink:VkGraphicsPipelineCreateInfo::pname:basePipelineIndex must: be 4462e5c31af7Sopenharmony_ci zero <<SCID-8>>. 4463e5c31af7Sopenharmony_ci// end::scdeviation[] 4464e5c31af7Sopenharmony_ciendif::hidden[] 4465e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 4466e5c31af7Sopenharmony_ci 4467e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkGraphicsPipelineCreateInfo.adoc[] 4468e5c31af7Sopenharmony_ci-- 4469e5c31af7Sopenharmony_ci 4470e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_3,VK_KHR_dynamic_rendering[] 4471e5c31af7Sopenharmony_ci[open,refpage='VkPipelineRenderingCreateInfo',desc='Structure specifying attachment formats',type='structs',alias='VkPipelineRenderingCreateInfoKHR'] 4472e5c31af7Sopenharmony_ci-- 4473e5c31af7Sopenharmony_ciThe sname:VkPipelineRenderingCreateInfo structure is defined as: 4474e5c31af7Sopenharmony_ci 4475e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkPipelineRenderingCreateInfo.adoc[] 4476e5c31af7Sopenharmony_ci 4477e5c31af7Sopenharmony_ciifdef::VK_KHR_dynamic_rendering[] 4478e5c31af7Sopenharmony_cior the equivalent 4479e5c31af7Sopenharmony_ci 4480e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkPipelineRenderingCreateInfoKHR.adoc[] 4481e5c31af7Sopenharmony_ciendif::VK_KHR_dynamic_rendering[] 4482e5c31af7Sopenharmony_ci 4483e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 4484e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or a pointer to a structure extending this 4485e5c31af7Sopenharmony_ci structure. 4486e5c31af7Sopenharmony_ci * pname:viewMask is the viewMask used for rendering. 4487e5c31af7Sopenharmony_ci * pname:colorAttachmentCount is the number of entries in 4488e5c31af7Sopenharmony_ci pname:pColorAttachmentFormats 4489e5c31af7Sopenharmony_ci * pname:pColorAttachmentFormats is a pointer to an array of elink:VkFormat 4490e5c31af7Sopenharmony_ci values defining the format of color attachments used in this pipeline. 4491e5c31af7Sopenharmony_ci * pname:depthAttachmentFormat is a elink:VkFormat value defining the 4492e5c31af7Sopenharmony_ci format of the depth attachment used in this pipeline. 4493e5c31af7Sopenharmony_ci * pname:stencilAttachmentFormat is a elink:VkFormat value defining the 4494e5c31af7Sopenharmony_ci format of the stencil attachment used in this pipeline. 4495e5c31af7Sopenharmony_ci 4496e5c31af7Sopenharmony_ciWhen a pipeline is created without a slink:VkRenderPass, if the pname:pNext 4497e5c31af7Sopenharmony_cichain of slink:VkGraphicsPipelineCreateInfo includes this structure, it 4498e5c31af7Sopenharmony_cispecifies the view mask and format of attachments used for rendering. 4499e5c31af7Sopenharmony_ciIf this structure is not specified, and the pipeline does not include a 4500e5c31af7Sopenharmony_cislink:VkRenderPass, pname:viewMask and pname:colorAttachmentCount are `0`, 4501e5c31af7Sopenharmony_ciand pname:depthAttachmentFormat and pname:stencilAttachmentFormat are 4502e5c31af7Sopenharmony_ciename:VK_FORMAT_UNDEFINED. 4503e5c31af7Sopenharmony_ciIf a graphics pipeline is created with a valid slink:VkRenderPass, 4504e5c31af7Sopenharmony_ciparameters of this structure are ignored. 4505e5c31af7Sopenharmony_ci 4506e5c31af7Sopenharmony_ciIf pname:depthAttachmentFormat, pname:stencilAttachmentFormat, or any 4507e5c31af7Sopenharmony_cielement of pname:pColorAttachmentFormats is ename:VK_FORMAT_UNDEFINED, it 4508e5c31af7Sopenharmony_ciindicates that the corresponding attachment is unused within the render 4509e5c31af7Sopenharmony_cipass. 4510e5c31af7Sopenharmony_ciValid formats indicate that an attachment can: be used - but it is still 4511e5c31af7Sopenharmony_civalid to set the attachment to `NULL` when beginning rendering. 4512e5c31af7Sopenharmony_ci 4513e5c31af7Sopenharmony_ciifdef::VK_ANDROID_external_format_resolve[] 4514e5c31af7Sopenharmony_ciIf the render pass is going to be used with an external format resolve 4515e5c31af7Sopenharmony_ciattachment, a slink:VkExternalFormatANDROID structure must: also be included 4516e5c31af7Sopenharmony_ciin the pname:pNext chain of slink:VkGraphicsPipelineCreateInfo, defining the 4517e5c31af7Sopenharmony_ciexternal format of the resolve attachment that will be used. 4518e5c31af7Sopenharmony_ciendif::VK_ANDROID_external_format_resolve[] 4519e5c31af7Sopenharmony_ci 4520e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkPipelineRenderingCreateInfo.adoc[] 4521e5c31af7Sopenharmony_ci-- 4522e5c31af7Sopenharmony_ciendif::VK_VERSION_1_3,VK_KHR_dynamic_rendering[] 4523e5c31af7Sopenharmony_ci 4524e5c31af7Sopenharmony_ciifdef::VK_KHR_maintenance5[] 4525e5c31af7Sopenharmony_ci[open,refpage='VkPipelineCreateFlags2CreateInfoKHR',desc='Extended pipeline create flags',type='structs'] 4526e5c31af7Sopenharmony_ci-- 4527e5c31af7Sopenharmony_ciThe sname:VkPipelineCreateFlags2CreateInfoKHR structure is defined as: 4528e5c31af7Sopenharmony_ci 4529e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkPipelineCreateFlags2CreateInfoKHR.adoc[] 4530e5c31af7Sopenharmony_ci 4531e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 4532e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or a pointer to a structure extending this 4533e5c31af7Sopenharmony_ci structure. 4534e5c31af7Sopenharmony_ci * pname:flags is a bitmask of elink:VkPipelineCreateFlagBits2KHR 4535e5c31af7Sopenharmony_ci specifying how a pipeline will be generated. 4536e5c31af7Sopenharmony_ci 4537e5c31af7Sopenharmony_ciIf this structure is included in the pname:pNext chain of a pipeline 4538e5c31af7Sopenharmony_cicreation structure, pname:flags is used instead of the corresponding 4539e5c31af7Sopenharmony_cipname:flags value passed in that creation structure, allowing additional 4540e5c31af7Sopenharmony_cicreation flags to be specified. 4541e5c31af7Sopenharmony_ci 4542e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkPipelineCreateFlags2CreateInfoKHR.adoc[] 4543e5c31af7Sopenharmony_ci-- 4544e5c31af7Sopenharmony_ci 4545e5c31af7Sopenharmony_ci[open,refpage='VkPipelineCreateFlagBits2KHR',desc='Bitmask controlling how a pipeline is created',type='enums'] 4546e5c31af7Sopenharmony_ci-- 4547e5c31af7Sopenharmony_ciBits which can: be set in 4548e5c31af7Sopenharmony_cislink:VkPipelineCreateFlags2CreateInfoKHR::pname:flags, specifying how a 4549e5c31af7Sopenharmony_cipipeline is created, are: 4550e5c31af7Sopenharmony_ci 4551e5c31af7Sopenharmony_ciinclude::{generated}/api/enums/VkPipelineCreateFlagBits2KHR.adoc[] 4552e5c31af7Sopenharmony_ci 4553e5c31af7Sopenharmony_ci// Note - when editing this section, make sure that any relevant changes 4554e5c31af7Sopenharmony_ci// are mirrored in VkPipelineCreateFlagBits2KHR/VkPipelineCreateFlagBits 4555e5c31af7Sopenharmony_ci 4556e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CREATE_2_DISABLE_OPTIMIZATION_BIT_KHR specifies that 4557e5c31af7Sopenharmony_ci the created pipeline will not be optimized. 4558e5c31af7Sopenharmony_ci Using this flag may: reduce the time taken to create the pipeline. 4559e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CREATE_2_ALLOW_DERIVATIVES_BIT_KHR specifies that the 4560e5c31af7Sopenharmony_ci pipeline to be created is allowed to be the parent of a pipeline that 4561e5c31af7Sopenharmony_ci will be created in a subsequent pipeline creation call. 4562e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CREATE_2_DERIVATIVE_BIT_KHR specifies that the 4563e5c31af7Sopenharmony_ci pipeline to be created will be a child of a previously created parent 4564e5c31af7Sopenharmony_ci pipeline. 4565e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_1,VK_KHR_device_group[] 4566e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_1,VK_KHR_multiview[] 4567e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CREATE_2_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR 4568e5c31af7Sopenharmony_ci specifies that any shader input variables decorated as code:ViewIndex 4569e5c31af7Sopenharmony_ci will be assigned values as if they were decorated as code:DeviceIndex. 4570e5c31af7Sopenharmony_ciendif::VK_VERSION_1_1,VK_KHR_multiview[] 4571e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CREATE_2_DISPATCH_BASE_BIT_KHR specifies that a 4572e5c31af7Sopenharmony_ci compute pipeline can: be used with flink:vkCmdDispatchBase with a 4573e5c31af7Sopenharmony_ci non-zero base workgroup. 4574e5c31af7Sopenharmony_ciendif::VK_VERSION_1_1,VK_KHR_device_group[] 4575e5c31af7Sopenharmony_ciifdef::VK_NV_ray_tracing[] 4576e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CREATE_2_DEFER_COMPILE_BIT_NV specifies that a 4577e5c31af7Sopenharmony_ci pipeline is created with all shaders in the deferred state. 4578e5c31af7Sopenharmony_ci Before using the pipeline the application must: call 4579e5c31af7Sopenharmony_ci flink:vkCompileDeferredNV exactly once on each shader in the pipeline 4580e5c31af7Sopenharmony_ci before using the pipeline. 4581e5c31af7Sopenharmony_ciendif::VK_NV_ray_tracing[] 4582e5c31af7Sopenharmony_ciifdef::VK_KHR_pipeline_executable_properties[] 4583e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CREATE_2_CAPTURE_STATISTICS_BIT_KHR specifies that the 4584e5c31af7Sopenharmony_ci shader compiler should capture statistics for the pipeline executables 4585e5c31af7Sopenharmony_ci produced by the compile process which can: later be retrieved by calling 4586e5c31af7Sopenharmony_ci flink:vkGetPipelineExecutableStatisticsKHR. 4587e5c31af7Sopenharmony_ci Enabling this flag must: not affect the final compiled pipeline but may: 4588e5c31af7Sopenharmony_ci disable pipeline caching or otherwise affect pipeline creation time. 4589e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CREATE_2_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR 4590e5c31af7Sopenharmony_ci specifies that the shader compiler should capture the internal 4591e5c31af7Sopenharmony_ci representations of pipeline executables produced by the compile process 4592e5c31af7Sopenharmony_ci which can: later be retrieved by calling 4593e5c31af7Sopenharmony_ci flink:vkGetPipelineExecutableInternalRepresentationsKHR. 4594e5c31af7Sopenharmony_ci Enabling this flag must: not affect the final compiled pipeline but may: 4595e5c31af7Sopenharmony_ci disable pipeline caching or otherwise affect pipeline creation time. 4596e5c31af7Sopenharmony_ciifdef::VK_KHR_pipeline_library[] 4597e5c31af7Sopenharmony_ci When capturing IR from pipelines created with pipeline libraries, there 4598e5c31af7Sopenharmony_ci is no guarantee that IR from libraries can: be retrieved from the linked 4599e5c31af7Sopenharmony_ci pipeline. 4600e5c31af7Sopenharmony_ci Applications should: retrieve IR from each library, and any linked 4601e5c31af7Sopenharmony_ci pipelines, separately. 4602e5c31af7Sopenharmony_ciendif::VK_KHR_pipeline_library[] 4603e5c31af7Sopenharmony_ciendif::VK_KHR_pipeline_executable_properties[] 4604e5c31af7Sopenharmony_ciifdef::VK_KHR_pipeline_library[] 4605e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CREATE_2_LIBRARY_BIT_KHR specifies that the pipeline 4606e5c31af7Sopenharmony_ci cannot: be used directly, and instead defines a _pipeline library_ that 4607e5c31af7Sopenharmony_ci can: be combined with other pipelines using the 4608e5c31af7Sopenharmony_ci slink:VkPipelineLibraryCreateInfoKHR structure. 4609e5c31af7Sopenharmony_ciifdef::VK_KHR_ray_tracing_pipeline,VK_EXT_graphics_pipeline_library[] 4610e5c31af7Sopenharmony_ci This is available in 4611e5c31af7Sopenharmony_ciifdef::VK_KHR_ray_tracing_pipeline[ray tracing] 4612e5c31af7Sopenharmony_ciifdef::VK_KHR_ray_tracing_pipeline+VK_EXT_graphics_pipeline_library[and] 4613e5c31af7Sopenharmony_ciifdef::VK_EXT_graphics_pipeline_library[graphics] 4614e5c31af7Sopenharmony_ci pipelines. 4615e5c31af7Sopenharmony_ciendif::VK_KHR_ray_tracing_pipeline,VK_EXT_graphics_pipeline_library[] 4616e5c31af7Sopenharmony_ciendif::VK_KHR_pipeline_library[] 4617e5c31af7Sopenharmony_ciifdef::VK_KHR_ray_tracing_pipeline[] 4618e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR 4619e5c31af7Sopenharmony_ci specifies that an any-hit shader will always be present when an any-hit 4620e5c31af7Sopenharmony_ci shader would be executed. 4621e5c31af7Sopenharmony_ci A NULL any-hit shader is an any-hit shader which is effectively 4622e5c31af7Sopenharmony_ci ename:VK_SHADER_UNUSED_KHR, such as from a shader group consisting 4623e5c31af7Sopenharmony_ci entirely of zeros. 4624e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR 4625e5c31af7Sopenharmony_ci specifies that a closest hit shader will always be present when a 4626e5c31af7Sopenharmony_ci closest hit shader would be executed. 4627e5c31af7Sopenharmony_ci A NULL closest hit shader is a closest hit shader which is effectively 4628e5c31af7Sopenharmony_ci ename:VK_SHADER_UNUSED_KHR, such as from a shader group consisting 4629e5c31af7Sopenharmony_ci entirely of zeros. 4630e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR 4631e5c31af7Sopenharmony_ci specifies that a miss shader will always be present when a miss shader 4632e5c31af7Sopenharmony_ci would be executed. 4633e5c31af7Sopenharmony_ci A NULL miss shader is a miss shader which is effectively 4634e5c31af7Sopenharmony_ci ename:VK_SHADER_UNUSED_KHR, such as from a shader group consisting 4635e5c31af7Sopenharmony_ci entirely of zeros. 4636e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR 4637e5c31af7Sopenharmony_ci specifies that an intersection shader will always be present when an 4638e5c31af7Sopenharmony_ci intersection shader would be executed. 4639e5c31af7Sopenharmony_ci A NULL intersection shader is an intersection shader which is 4640e5c31af7Sopenharmony_ci effectively ename:VK_SHADER_UNUSED_KHR, such as from a shader group 4641e5c31af7Sopenharmony_ci consisting entirely of zeros. 4642e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CREATE_2_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR specifies 4643e5c31af7Sopenharmony_ci that triangle primitives will be skipped during traversal using 4644e5c31af7Sopenharmony_ci <<glossary-pipeline-trace-ray, pipeline trace ray>> instructions. 4645e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CREATE_2_RAY_TRACING_SKIP_AABBS_BIT_KHR specifies that 4646e5c31af7Sopenharmony_ci AABB primitives will be skipped during traversal using 4647e5c31af7Sopenharmony_ci <<glossary-pipeline-trace-ray, pipeline trace ray>> instructions. 4648e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CREATE_2_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR 4649e5c31af7Sopenharmony_ci specifies that the shader group handles can: be saved and reused on a 4650e5c31af7Sopenharmony_ci subsequent run (e.g. for trace capture and replay). 4651e5c31af7Sopenharmony_ciendif::VK_KHR_ray_tracing_pipeline[] 4652e5c31af7Sopenharmony_ciifdef::VK_NV_device_generated_commands[] 4653e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_NV specifies that the 4654e5c31af7Sopenharmony_ci pipeline can be used in combination with <<device-generated-commands>>. 4655e5c31af7Sopenharmony_ciendif::VK_NV_device_generated_commands[] 4656e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control[] 4657e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CREATE_2_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_KHR 4658e5c31af7Sopenharmony_ci specifies that pipeline creation will fail if a compile is required for 4659e5c31af7Sopenharmony_ci creation of a valid slink:VkPipeline object; 4660e5c31af7Sopenharmony_ci ename:VK_PIPELINE_COMPILE_REQUIRED will be returned by pipeline 4661e5c31af7Sopenharmony_ci creation, and the slink:VkPipeline will be set to dlink:VK_NULL_HANDLE. 4662e5c31af7Sopenharmony_ci * When creating multiple pipelines, 4663e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_2_EARLY_RETURN_ON_FAILURE_BIT_KHR specifies 4664e5c31af7Sopenharmony_ci that control will be returned to the application if any individual 4665e5c31af7Sopenharmony_ci pipeline returns a result which is not ename:VK_SUCCESS rather than 4666e5c31af7Sopenharmony_ci continuing to create additional pipelines. 4667e5c31af7Sopenharmony_ciendif::VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control[] 4668e5c31af7Sopenharmony_ciifdef::VK_NV_ray_tracing_motion_blur[] 4669e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CREATE_2_RAY_TRACING_ALLOW_MOTION_BIT_NV specifies 4670e5c31af7Sopenharmony_ci that the pipeline is allowed to use code:OpTraceRayMotionNV. 4671e5c31af7Sopenharmony_ciendif::VK_NV_ray_tracing_motion_blur[] 4672e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_3,VK_KHR_dynamic_rendering[] 4673e5c31af7Sopenharmony_ciifdef::VK_KHR_fragment_shading_rate[] 4674e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CREATE_2_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR 4675e5c31af7Sopenharmony_ci specifies that the pipeline will be used with a fragment shading rate 4676e5c31af7Sopenharmony_ci attachment. 4677e5c31af7Sopenharmony_ciendif::VK_KHR_fragment_shading_rate[] 4678e5c31af7Sopenharmony_ciifdef::VK_EXT_fragment_density_map[] 4679e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CREATE_2_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT 4680e5c31af7Sopenharmony_ci specifies that the pipeline will be used with a fragment density map 4681e5c31af7Sopenharmony_ci attachment. 4682e5c31af7Sopenharmony_ciendif::VK_EXT_fragment_density_map[] 4683e5c31af7Sopenharmony_ciendif::VK_VERSION_1_3,VK_KHR_dynamic_rendering[] 4684e5c31af7Sopenharmony_ciifdef::VK_EXT_graphics_pipeline_library[] 4685e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION_BIT_EXT specifies that 4686e5c31af7Sopenharmony_ci pipeline libraries being linked into this library should: have link time 4687e5c31af7Sopenharmony_ci optimizations applied. 4688e5c31af7Sopenharmony_ci If this bit is omitted, implementations should: instead perform linking 4689e5c31af7Sopenharmony_ci as rapidly as possible. 4690e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CREATE_2_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT 4691e5c31af7Sopenharmony_ci specifies that pipeline libraries should retain any information 4692e5c31af7Sopenharmony_ci necessary to later perform an optimal link with 4693e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION_BIT_EXT. 4694e5c31af7Sopenharmony_ciendif::VK_EXT_graphics_pipeline_library[] 4695e5c31af7Sopenharmony_ciifdef::VK_EXT_descriptor_buffer[] 4696e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CREATE_2_DESCRIPTOR_BUFFER_BIT_EXT specifies that a 4697e5c31af7Sopenharmony_ci pipeline will be used with <<descriptorbuffers,descriptor buffers>>, 4698e5c31af7Sopenharmony_ci rather than <<descriptorsets,descriptor sets>>. 4699e5c31af7Sopenharmony_ciendif::VK_EXT_descriptor_buffer[] 4700e5c31af7Sopenharmony_ciifdef::VK_EXT_attachment_feedback_loop_layout[] 4701e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CREATE_2_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT 4702e5c31af7Sopenharmony_ci specifies that the pipeline may: be used with an attachment feedback 4703e5c31af7Sopenharmony_ci loop including color attachments. 4704e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CREATE_2_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT 4705e5c31af7Sopenharmony_ci specifies that the pipeline may: be used with an attachment feedback 4706e5c31af7Sopenharmony_ci loop including depth-stencil attachments. 4707e5c31af7Sopenharmony_ciendif::VK_EXT_attachment_feedback_loop_layout[] 4708e5c31af7Sopenharmony_ciifdef::VK_EXT_opacity_micromap[] 4709e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CREATE_2_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT 4710e5c31af7Sopenharmony_ci specifies that the ray tracing pipeline can: be used with acceleration 4711e5c31af7Sopenharmony_ci structures which reference an opacity micromap array. 4712e5c31af7Sopenharmony_ciendif::VK_EXT_opacity_micromap[] 4713e5c31af7Sopenharmony_ciifdef::VK_NV_displacement_micromap[] 4714e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CREATE_2_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV 4715e5c31af7Sopenharmony_ci specifies that the ray tracing pipeline can: be used with acceleration 4716e5c31af7Sopenharmony_ci structures which reference a displacement micromap array. 4717e5c31af7Sopenharmony_ciendif::VK_NV_displacement_micromap[] 4718e5c31af7Sopenharmony_ciifdef::VK_EXT_pipeline_protected_access[] 4719e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CREATE_2_NO_PROTECTED_ACCESS_BIT_EXT specifies that 4720e5c31af7Sopenharmony_ci the pipeline must: not be bound to a protected command buffer. 4721e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CREATE_2_PROTECTED_ACCESS_ONLY_BIT_EXT specifies that 4722e5c31af7Sopenharmony_ci the pipeline must: not be bound to an unprotected command buffer. 4723e5c31af7Sopenharmony_ciendif::VK_EXT_pipeline_protected_access[] 4724e5c31af7Sopenharmony_ci 4725e5c31af7Sopenharmony_ciIt is valid to set both ename:VK_PIPELINE_CREATE_2_ALLOW_DERIVATIVES_BIT_KHR 4726e5c31af7Sopenharmony_ciand ename:VK_PIPELINE_CREATE_2_DERIVATIVE_BIT_KHR. 4727e5c31af7Sopenharmony_ciThis allows a pipeline to be both a parent and possibly a child in a 4728e5c31af7Sopenharmony_cipipeline hierarchy. 4729e5c31af7Sopenharmony_ciSee <<pipelines-pipeline-derivatives,Pipeline Derivatives>> for more 4730e5c31af7Sopenharmony_ciinformation. 4731e5c31af7Sopenharmony_ci 4732e5c31af7Sopenharmony_ciifdef::VK_EXT_graphics_pipeline_library[] 4733e5c31af7Sopenharmony_ciWhen an implementation is looking up a pipeline in a 4734e5c31af7Sopenharmony_ci<<pipelines-cache,pipeline cache>>, if that pipeline is being created using 4735e5c31af7Sopenharmony_cilinked libraries, implementations should: always return an equivalent 4736e5c31af7Sopenharmony_cipipeline created with 4737e5c31af7Sopenharmony_ciename:VK_PIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION_BIT_EXT if available, 4738e5c31af7Sopenharmony_ciwhether or not that bit was specified. 4739e5c31af7Sopenharmony_ci 4740e5c31af7Sopenharmony_ci[NOTE] 4741e5c31af7Sopenharmony_ci.Note 4742e5c31af7Sopenharmony_ci==== 4743e5c31af7Sopenharmony_ciUsing ename:VK_PIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION_BIT_EXT (or not) 4744e5c31af7Sopenharmony_ciwhen linking pipeline libraries is intended as a performance tradeoff 4745e5c31af7Sopenharmony_cibetween host and device. 4746e5c31af7Sopenharmony_ciIf the bit is omitted, linking should be faster and produce a pipeline more 4747e5c31af7Sopenharmony_cirapidly, but performance of the pipeline on the target device may be 4748e5c31af7Sopenharmony_cireduced. 4749e5c31af7Sopenharmony_ciIf the bit is included, linking may be slower but should produce a pipeline 4750e5c31af7Sopenharmony_ciwith device performance comparable to a monolithically created pipeline. 4751e5c31af7Sopenharmony_ciUsing both options can allow latency-sensitive applications to generate a 4752e5c31af7Sopenharmony_cisuboptimal but usable pipeline quickly, and then perform an optimal link in 4753e5c31af7Sopenharmony_cithe background, substituting the result for the suboptimally linked pipeline 4754e5c31af7Sopenharmony_cias soon as it is available. 4755e5c31af7Sopenharmony_ci==== 4756e5c31af7Sopenharmony_ciendif::VK_EXT_graphics_pipeline_library[] 4757e5c31af7Sopenharmony_ci-- 4758e5c31af7Sopenharmony_ci 4759e5c31af7Sopenharmony_ci[open,refpage='VkPipelineCreateFlags2KHR',desc='Bitmask of VkPipelineCreateFlagBits2KHR',type='flags'] 4760e5c31af7Sopenharmony_ci-- 4761e5c31af7Sopenharmony_ciinclude::{generated}/api/flags/VkPipelineCreateFlags2KHR.adoc[] 4762e5c31af7Sopenharmony_ci 4763e5c31af7Sopenharmony_citname:VkPipelineCreateFlags2KHR is a bitmask type for setting a mask of zero 4764e5c31af7Sopenharmony_cior more elink:VkPipelineCreateFlagBits2KHR. 4765e5c31af7Sopenharmony_ci-- 4766e5c31af7Sopenharmony_ciendif::VK_KHR_maintenance5[] 4767e5c31af7Sopenharmony_ci 4768e5c31af7Sopenharmony_ci[open,refpage='VkPipelineCreateFlagBits',desc='Bitmask controlling how a pipeline is created',type='enums'] 4769e5c31af7Sopenharmony_ci-- 4770e5c31af7Sopenharmony_ciBits which can: be set in 4771e5c31af7Sopenharmony_ci 4772e5c31af7Sopenharmony_ci * slink:VkGraphicsPipelineCreateInfo::pname:flags 4773e5c31af7Sopenharmony_ci * slink:VkComputePipelineCreateInfo::pname:flags 4774e5c31af7Sopenharmony_ciifdef::VK_KHR_ray_tracing_pipeline[] 4775e5c31af7Sopenharmony_ci * slink:VkRayTracingPipelineCreateInfoKHR::pname:flags 4776e5c31af7Sopenharmony_ciendif::VK_KHR_ray_tracing_pipeline[] 4777e5c31af7Sopenharmony_ciifdef::VK_NV_ray_tracing[] 4778e5c31af7Sopenharmony_ci * slink:VkRayTracingPipelineCreateInfoNV::pname:flags 4779e5c31af7Sopenharmony_ciendif::VK_NV_ray_tracing[] 4780e5c31af7Sopenharmony_ci 4781e5c31af7Sopenharmony_cispecify how a pipeline is created, and are: 4782e5c31af7Sopenharmony_ci 4783e5c31af7Sopenharmony_ciinclude::{generated}/api/enums/VkPipelineCreateFlagBits.adoc[] 4784e5c31af7Sopenharmony_ci 4785e5c31af7Sopenharmony_ci// Note - when editing this section, make sure that any relevant changes 4786e5c31af7Sopenharmony_ci// are mirrored in VkPipelineCreateFlagBits2KHR/VkPipelineCreateFlagBits 4787e5c31af7Sopenharmony_ci 4788e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT specifies that the 4789e5c31af7Sopenharmony_ci created pipeline will not be optimized. 4790e5c31af7Sopenharmony_ci Using this flag may: reduce the time taken to create the pipeline. 4791e5c31af7Sopenharmony_ciifndef::VKSC_VERSION_1_0[] 4792e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT specifies that the 4793e5c31af7Sopenharmony_ci pipeline to be created is allowed to be the parent of a pipeline that 4794e5c31af7Sopenharmony_ci will be created in a subsequent pipeline creation call. 4795e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT specifies that the pipeline to 4796e5c31af7Sopenharmony_ci be created will be a child of a previously created parent pipeline. 4797e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 4798e5c31af7Sopenharmony_ciifdef::VKSC_VERSION_1_0[] 4799e5c31af7Sopenharmony_ciifdef::hidden[] 4800e5c31af7Sopenharmony_ci// tag::scremoved[] 4801e5c31af7Sopenharmony_ci * elink:VkPipelineCreateFlagBits 4802e5c31af7Sopenharmony_ci ** ename:VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT <<SCID-8>> 4803e5c31af7Sopenharmony_ci ** ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT <<SCID-8>> 4804e5c31af7Sopenharmony_ci// end::scremoved[] 4805e5c31af7Sopenharmony_ciendif::hidden[] 4806e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 4807e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_1,VK_KHR_device_group[] 4808e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_1,VK_KHR_multiview[] 4809e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT specifies that 4810e5c31af7Sopenharmony_ci any shader input variables decorated as code:ViewIndex will be assigned 4811e5c31af7Sopenharmony_ci values as if they were decorated as code:DeviceIndex. 4812e5c31af7Sopenharmony_ciendif::VK_VERSION_1_1,VK_KHR_multiview[] 4813e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CREATE_DISPATCH_BASE specifies that a compute pipeline 4814e5c31af7Sopenharmony_ci can: be used with flink:vkCmdDispatchBase with a non-zero base 4815e5c31af7Sopenharmony_ci workgroup. 4816e5c31af7Sopenharmony_ciendif::VK_VERSION_1_1,VK_KHR_device_group[] 4817e5c31af7Sopenharmony_ciifdef::VK_NV_ray_tracing[] 4818e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV specifies that a pipeline 4819e5c31af7Sopenharmony_ci is created with all shaders in the deferred state. 4820e5c31af7Sopenharmony_ci Before using the pipeline the application must: call 4821e5c31af7Sopenharmony_ci flink:vkCompileDeferredNV exactly once on each shader in the pipeline 4822e5c31af7Sopenharmony_ci before using the pipeline. 4823e5c31af7Sopenharmony_ciendif::VK_NV_ray_tracing[] 4824e5c31af7Sopenharmony_ciifdef::VK_KHR_pipeline_executable_properties[] 4825e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR specifies that the 4826e5c31af7Sopenharmony_ci shader compiler should capture statistics for the pipeline executables 4827e5c31af7Sopenharmony_ci produced by the compile process which can: later be retrieved by calling 4828e5c31af7Sopenharmony_ci flink:vkGetPipelineExecutableStatisticsKHR. 4829e5c31af7Sopenharmony_ci Enabling this flag must: not affect the final compiled pipeline but may: 4830e5c31af7Sopenharmony_ci disable pipeline caching or otherwise affect pipeline creation time. 4831e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR 4832e5c31af7Sopenharmony_ci specifies that the shader compiler should capture the internal 4833e5c31af7Sopenharmony_ci representations of pipeline executables produced by the compile process 4834e5c31af7Sopenharmony_ci which can: later be retrieved by calling 4835e5c31af7Sopenharmony_ci flink:vkGetPipelineExecutableInternalRepresentationsKHR. 4836e5c31af7Sopenharmony_ci Enabling this flag must: not affect the final compiled pipeline but may: 4837e5c31af7Sopenharmony_ci disable pipeline caching or otherwise affect pipeline creation time. 4838e5c31af7Sopenharmony_ciifdef::VK_KHR_pipeline_library[] 4839e5c31af7Sopenharmony_ci When capturing IR from pipelines created with pipeline libraries, there 4840e5c31af7Sopenharmony_ci is no guarantee that IR from libraries can: be retrieved from the linked 4841e5c31af7Sopenharmony_ci pipeline. 4842e5c31af7Sopenharmony_ci Applications should: retrieve IR from each library, and any linked 4843e5c31af7Sopenharmony_ci pipelines, separately. 4844e5c31af7Sopenharmony_ciendif::VK_KHR_pipeline_library[] 4845e5c31af7Sopenharmony_ciendif::VK_KHR_pipeline_executable_properties[] 4846e5c31af7Sopenharmony_ciifdef::VK_KHR_pipeline_library[] 4847e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CREATE_LIBRARY_BIT_KHR specifies that the pipeline 4848e5c31af7Sopenharmony_ci cannot: be used directly, and instead defines a _pipeline library_ that 4849e5c31af7Sopenharmony_ci can: be combined with other pipelines using the 4850e5c31af7Sopenharmony_ci slink:VkPipelineLibraryCreateInfoKHR structure. 4851e5c31af7Sopenharmony_ciifdef::VK_KHR_ray_tracing_pipeline,VK_EXT_graphics_pipeline_library[] 4852e5c31af7Sopenharmony_ci This is available in 4853e5c31af7Sopenharmony_ciifdef::VK_KHR_ray_tracing_pipeline[ray tracing] 4854e5c31af7Sopenharmony_ciifdef::VK_KHR_ray_tracing_pipeline+VK_EXT_graphics_pipeline_library[and] 4855e5c31af7Sopenharmony_ciifdef::VK_EXT_graphics_pipeline_library[graphics] 4856e5c31af7Sopenharmony_ci pipelines. 4857e5c31af7Sopenharmony_ciendif::VK_KHR_ray_tracing_pipeline,VK_EXT_graphics_pipeline_library[] 4858e5c31af7Sopenharmony_ciendif::VK_KHR_pipeline_library[] 4859e5c31af7Sopenharmony_ciifdef::VK_KHR_ray_tracing_pipeline[] 4860e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR 4861e5c31af7Sopenharmony_ci specifies that an any-hit shader will always be present when an any-hit 4862e5c31af7Sopenharmony_ci shader would be executed. 4863e5c31af7Sopenharmony_ci A NULL any-hit shader is an any-hit shader which is effectively 4864e5c31af7Sopenharmony_ci ename:VK_SHADER_UNUSED_KHR, such as from a shader group consisting 4865e5c31af7Sopenharmony_ci entirely of zeros. 4866e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR 4867e5c31af7Sopenharmony_ci specifies that a closest hit shader will always be present when a 4868e5c31af7Sopenharmony_ci closest hit shader would be executed. 4869e5c31af7Sopenharmony_ci A NULL closest hit shader is a closest hit shader which is effectively 4870e5c31af7Sopenharmony_ci ename:VK_SHADER_UNUSED_KHR, such as from a shader group consisting 4871e5c31af7Sopenharmony_ci entirely of zeros. 4872e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR 4873e5c31af7Sopenharmony_ci specifies that a miss shader will always be present when a miss shader 4874e5c31af7Sopenharmony_ci would be executed. 4875e5c31af7Sopenharmony_ci A NULL miss shader is a miss shader which is effectively 4876e5c31af7Sopenharmony_ci ename:VK_SHADER_UNUSED_KHR, such as from a shader group consisting 4877e5c31af7Sopenharmony_ci entirely of zeros. 4878e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR 4879e5c31af7Sopenharmony_ci specifies that an intersection shader will always be present when an 4880e5c31af7Sopenharmony_ci intersection shader would be executed. 4881e5c31af7Sopenharmony_ci A NULL intersection shader is an intersection shader which is 4882e5c31af7Sopenharmony_ci effectively ename:VK_SHADER_UNUSED_KHR, such as from a shader group 4883e5c31af7Sopenharmony_ci consisting entirely of zeros. 4884e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR specifies 4885e5c31af7Sopenharmony_ci that triangle primitives will be skipped during traversal using 4886e5c31af7Sopenharmony_ci <<glossary-pipeline-trace-ray, pipeline trace ray>> instructions. 4887e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR specifies that 4888e5c31af7Sopenharmony_ci AABB primitives will be skipped during traversal using 4889e5c31af7Sopenharmony_ci <<glossary-pipeline-trace-ray, pipeline trace ray>> instructions. 4890e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR 4891e5c31af7Sopenharmony_ci specifies that the shader group handles can: be saved and reused on a 4892e5c31af7Sopenharmony_ci subsequent run (e.g. for trace capture and replay). 4893e5c31af7Sopenharmony_ciendif::VK_KHR_ray_tracing_pipeline[] 4894e5c31af7Sopenharmony_ciifdef::VK_NV_device_generated_commands[] 4895e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV specifies that the 4896e5c31af7Sopenharmony_ci pipeline can be used in combination with <<device-generated-commands>>. 4897e5c31af7Sopenharmony_ciendif::VK_NV_device_generated_commands[] 4898e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control[] 4899e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT specifies 4900e5c31af7Sopenharmony_ci that pipeline creation will fail if a compile is required for creation 4901e5c31af7Sopenharmony_ci of a valid slink:VkPipeline object; ename:VK_PIPELINE_COMPILE_REQUIRED 4902e5c31af7Sopenharmony_ci will be returned by pipeline creation, and the slink:VkPipeline will be 4903e5c31af7Sopenharmony_ci set to dlink:VK_NULL_HANDLE. 4904e5c31af7Sopenharmony_ci * When creating multiple pipelines, 4905e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT specifies that 4906e5c31af7Sopenharmony_ci control will be returned to the application if any individual pipeline 4907e5c31af7Sopenharmony_ci returns a result which is not ename:VK_SUCCESS rather than continuing to 4908e5c31af7Sopenharmony_ci create additional pipelines. 4909e5c31af7Sopenharmony_ciendif::VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control[] 4910e5c31af7Sopenharmony_ciifdef::VK_NV_ray_tracing_motion_blur[] 4911e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV specifies that 4912e5c31af7Sopenharmony_ci the pipeline is allowed to use code:OpTraceRayMotionNV. 4913e5c31af7Sopenharmony_ciendif::VK_NV_ray_tracing_motion_blur[] 4914e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_3,VK_KHR_dynamic_rendering[] 4915e5c31af7Sopenharmony_ciifdef::VK_KHR_fragment_shading_rate[] 4916e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR 4917e5c31af7Sopenharmony_ci specifies that the pipeline will be used with a fragment shading rate 4918e5c31af7Sopenharmony_ci attachment and dynamic rendering. 4919e5c31af7Sopenharmony_ciendif::VK_KHR_fragment_shading_rate[] 4920e5c31af7Sopenharmony_ciifdef::VK_EXT_fragment_density_map[] 4921e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT 4922e5c31af7Sopenharmony_ci specifies that the pipeline will be used with a fragment density map 4923e5c31af7Sopenharmony_ci attachment and dynamic rendering. 4924e5c31af7Sopenharmony_ciendif::VK_EXT_fragment_density_map[] 4925e5c31af7Sopenharmony_ciendif::VK_VERSION_1_3,VK_KHR_dynamic_rendering[] 4926e5c31af7Sopenharmony_ciifdef::VK_EXT_graphics_pipeline_library[] 4927e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT specifies that 4928e5c31af7Sopenharmony_ci pipeline libraries being linked into this library should: have link time 4929e5c31af7Sopenharmony_ci optimizations applied. 4930e5c31af7Sopenharmony_ci If this bit is omitted, implementations should: instead perform linking 4931e5c31af7Sopenharmony_ci as rapidly as possible. 4932e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CREATE_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT 4933e5c31af7Sopenharmony_ci specifies that pipeline libraries should retain any information 4934e5c31af7Sopenharmony_ci necessary to later perform an optimal link with 4935e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT. 4936e5c31af7Sopenharmony_ciendif::VK_EXT_graphics_pipeline_library[] 4937e5c31af7Sopenharmony_ciifdef::VK_EXT_descriptor_buffer[] 4938e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT specifies that a 4939e5c31af7Sopenharmony_ci pipeline will be used with <<descriptorbuffers,descriptor buffers>>, 4940e5c31af7Sopenharmony_ci rather than <<descriptorsets,descriptor sets>>. 4941e5c31af7Sopenharmony_ciendif::VK_EXT_descriptor_buffer[] 4942e5c31af7Sopenharmony_ciifdef::VK_EXT_attachment_feedback_loop_layout[] 4943e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT 4944e5c31af7Sopenharmony_ci specifies that the pipeline may: be used with an attachment feedback 4945e5c31af7Sopenharmony_ci loop including color attachments. 4946e5c31af7Sopenharmony_ciifdef::VK_EXT_attachment_feedback_loop_dynamic_state[] 4947e5c31af7Sopenharmony_ci It is ignored if 4948e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT is set in 4949e5c31af7Sopenharmony_ci pname:pDynamicStates. 4950e5c31af7Sopenharmony_ciendif::VK_EXT_attachment_feedback_loop_dynamic_state[] 4951e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT 4952e5c31af7Sopenharmony_ci specifies that the pipeline may: be used with an attachment feedback 4953e5c31af7Sopenharmony_ci loop including depth-stencil attachments. 4954e5c31af7Sopenharmony_ciifdef::VK_EXT_attachment_feedback_loop_dynamic_state[] 4955e5c31af7Sopenharmony_ci It is ignored if 4956e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT is set in 4957e5c31af7Sopenharmony_ci pname:pDynamicStates. 4958e5c31af7Sopenharmony_ciendif::VK_EXT_attachment_feedback_loop_dynamic_state[] 4959e5c31af7Sopenharmony_ciendif::VK_EXT_attachment_feedback_loop_layout[] 4960e5c31af7Sopenharmony_ciifdef::VK_EXT_opacity_micromap[] 4961e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT specifies 4962e5c31af7Sopenharmony_ci that the ray tracing pipeline can: be used with acceleration structures 4963e5c31af7Sopenharmony_ci which reference an opacity micromap array. 4964e5c31af7Sopenharmony_ciendif::VK_EXT_opacity_micromap[] 4965e5c31af7Sopenharmony_ciifdef::VK_NV_displacement_micromap[] 4966e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CREATE_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV 4967e5c31af7Sopenharmony_ci specifies that the ray tracing pipeline can: be used with acceleration 4968e5c31af7Sopenharmony_ci structures which reference a displacement micromap array. 4969e5c31af7Sopenharmony_ciendif::VK_NV_displacement_micromap[] 4970e5c31af7Sopenharmony_ciifdef::VK_EXT_pipeline_protected_access[] 4971e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT specifies that the 4972e5c31af7Sopenharmony_ci pipeline must: not be bound to a protected command buffer. 4973e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT specifies that 4974e5c31af7Sopenharmony_ci the pipeline must: not be bound to an unprotected command buffer. 4975e5c31af7Sopenharmony_ciendif::VK_EXT_pipeline_protected_access[] 4976e5c31af7Sopenharmony_ci 4977e5c31af7Sopenharmony_ciifndef::VKSC_VERSION_1_0[] 4978e5c31af7Sopenharmony_ciIt is valid to set both ename:VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT and 4979e5c31af7Sopenharmony_ciename:VK_PIPELINE_CREATE_DERIVATIVE_BIT. 4980e5c31af7Sopenharmony_ciThis allows a pipeline to be both a parent and possibly a child in a 4981e5c31af7Sopenharmony_cipipeline hierarchy. 4982e5c31af7Sopenharmony_ciSee <<pipelines-pipeline-derivatives,Pipeline Derivatives>> for more 4983e5c31af7Sopenharmony_ciinformation. 4984e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 4985e5c31af7Sopenharmony_ci 4986e5c31af7Sopenharmony_ciifdef::VK_EXT_graphics_pipeline_library[] 4987e5c31af7Sopenharmony_ciWhen an implementation is looking up a pipeline in a 4988e5c31af7Sopenharmony_ci<<pipelines-cache,pipeline cache>>, if that pipeline is being created using 4989e5c31af7Sopenharmony_cilinked libraries, implementations should: always return an equivalent 4990e5c31af7Sopenharmony_cipipeline created with 4991e5c31af7Sopenharmony_ciename:VK_PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT if available, 4992e5c31af7Sopenharmony_ciwhether or not that bit was specified. 4993e5c31af7Sopenharmony_ci 4994e5c31af7Sopenharmony_ci[NOTE] 4995e5c31af7Sopenharmony_ci.Note 4996e5c31af7Sopenharmony_ci==== 4997e5c31af7Sopenharmony_ciUsing ename:VK_PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT (or not) when 4998e5c31af7Sopenharmony_cilinking pipeline libraries is intended as a performance tradeoff between 4999e5c31af7Sopenharmony_cihost and device. 5000e5c31af7Sopenharmony_ciIf the bit is omitted, linking should be faster and produce a pipeline more 5001e5c31af7Sopenharmony_cirapidly, but performance of the pipeline on the target device may be 5002e5c31af7Sopenharmony_cireduced. 5003e5c31af7Sopenharmony_ciIf the bit is included, linking may be slower but should produce a pipeline 5004e5c31af7Sopenharmony_ciwith device performance comparable to a monolithically created pipeline. 5005e5c31af7Sopenharmony_ciUsing both options can allow latency-sensitive applications to generate a 5006e5c31af7Sopenharmony_cisuboptimal but usable pipeline quickly, and then perform an optimal link in 5007e5c31af7Sopenharmony_cithe background, substituting the result for the suboptimally linked pipeline 5008e5c31af7Sopenharmony_cias soon as it is available. 5009e5c31af7Sopenharmony_ci==== 5010e5c31af7Sopenharmony_ciendif::VK_EXT_graphics_pipeline_library[] 5011e5c31af7Sopenharmony_ci-- 5012e5c31af7Sopenharmony_ci 5013e5c31af7Sopenharmony_ci[open,refpage='VkPipelineCreateFlags',desc='Bitmask of VkPipelineCreateFlagBits',type='flags'] 5014e5c31af7Sopenharmony_ci-- 5015e5c31af7Sopenharmony_ciinclude::{generated}/api/flags/VkPipelineCreateFlags.adoc[] 5016e5c31af7Sopenharmony_ci 5017e5c31af7Sopenharmony_citname:VkPipelineCreateFlags is a bitmask type for setting a mask of zero or 5018e5c31af7Sopenharmony_cimore elink:VkPipelineCreateFlagBits. 5019e5c31af7Sopenharmony_ci-- 5020e5c31af7Sopenharmony_ci 5021e5c31af7Sopenharmony_ciifdef::VK_EXT_graphics_pipeline_library[] 5022e5c31af7Sopenharmony_ci[open,refpage='VkGraphicsPipelineLibraryCreateInfoEXT',desc='Structure specifying the subsets of the graphics pipeline being compiled',type='structs'] 5023e5c31af7Sopenharmony_ci-- 5024e5c31af7Sopenharmony_ciThe sname:VkGraphicsPipelineLibraryCreateInfoEXT structure is defined as: 5025e5c31af7Sopenharmony_ci 5026e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkGraphicsPipelineLibraryCreateInfoEXT.adoc[] 5027e5c31af7Sopenharmony_ci 5028e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 5029e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or a pointer to a structure extending this 5030e5c31af7Sopenharmony_ci structure. 5031e5c31af7Sopenharmony_ci * pname:flags is a bitmask of elink:VkGraphicsPipelineLibraryFlagBitsEXT 5032e5c31af7Sopenharmony_ci specifying the subsets of the graphics pipeline that are being compiled. 5033e5c31af7Sopenharmony_ci 5034e5c31af7Sopenharmony_ciIf a sname:VkGraphicsPipelineLibraryCreateInfoEXT structure is included in 5035e5c31af7Sopenharmony_cithe pname:pNext chain of slink:VkGraphicsPipelineCreateInfo, it specifies 5036e5c31af7Sopenharmony_cithe <<pipelines-graphics-subsets,subsets of the graphics pipeline>> being 5037e5c31af7Sopenharmony_cicreated, excluding any subsets from linked pipeline libraries. 5038e5c31af7Sopenharmony_ciIf the pipeline is created with pipeline libraries, state from those 5039e5c31af7Sopenharmony_cilibraries is aggregated with said subset. 5040e5c31af7Sopenharmony_ci 5041e5c31af7Sopenharmony_ciIf this structure is omitted, and either 5042e5c31af7Sopenharmony_cislink:VkGraphicsPipelineCreateInfo::pname:flags includes 5043e5c31af7Sopenharmony_ciename:VK_PIPELINE_CREATE_LIBRARY_BIT_KHR or the 5044e5c31af7Sopenharmony_cislink:VkGraphicsPipelineCreateInfo::pname:pNext chain includes a 5045e5c31af7Sopenharmony_cislink:VkPipelineLibraryCreateInfoKHR structure with a pname:libraryCount 5046e5c31af7Sopenharmony_cigreater than `0`, it is as if pname:flags is `0`. 5047e5c31af7Sopenharmony_ciOtherwise if this structure is omitted, it is as if pname:flags includes all 5048e5c31af7Sopenharmony_cipossible subsets of the graphics pipeline (i.e. a 5049e5c31af7Sopenharmony_ci<<pipelines-graphics-subsets-complete,complete graphics pipeline>>). 5050e5c31af7Sopenharmony_ci 5051e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkGraphicsPipelineLibraryCreateInfoEXT.adoc[] 5052e5c31af7Sopenharmony_ci-- 5053e5c31af7Sopenharmony_ci 5054e5c31af7Sopenharmony_ci[open,refpage='VkGraphicsPipelineLibraryFlagsEXT', desc='Bitmask of VkGraphicsPipelineLibraryFlagBitsEXT', type='flags'] 5055e5c31af7Sopenharmony_ci-- 5056e5c31af7Sopenharmony_ciinclude::{generated}/api/flags/VkGraphicsPipelineLibraryFlagsEXT.adoc[] 5057e5c31af7Sopenharmony_ci 5058e5c31af7Sopenharmony_citname:VkGraphicsPipelineLibraryFlagsEXT is a bitmask type for setting a mask 5059e5c31af7Sopenharmony_ciof zero or more elink:VkGraphicsPipelineLibraryFlagBitsEXT. 5060e5c31af7Sopenharmony_ci-- 5061e5c31af7Sopenharmony_ci 5062e5c31af7Sopenharmony_ci[open,refpage='VkGraphicsPipelineLibraryFlagBitsEXT',desc='Bitmask specifying the subset of a graphics pipeline to compile',type='enums'] 5063e5c31af7Sopenharmony_ci-- 5064e5c31af7Sopenharmony_ciPossible values of the pname:flags member of 5065e5c31af7Sopenharmony_cislink:VkGraphicsPipelineLibraryCreateInfoEXT, specifying the subsets of a 5066e5c31af7Sopenharmony_cigraphics pipeline to compile are: 5067e5c31af7Sopenharmony_ci 5068e5c31af7Sopenharmony_ciinclude::{generated}/api/enums/VkGraphicsPipelineLibraryFlagBitsEXT.adoc[] 5069e5c31af7Sopenharmony_ci 5070e5c31af7Sopenharmony_ci * ename:VK_GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT 5071e5c31af7Sopenharmony_ci specifies that a pipeline will include 5072e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-vertex-input,vertex input interface 5073e5c31af7Sopenharmony_ci state>>. 5074e5c31af7Sopenharmony_ci * ename:VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT 5075e5c31af7Sopenharmony_ci specifies that a pipeline will include 5076e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-pre-rasterization,pre-rasterization shader 5077e5c31af7Sopenharmony_ci state>>. 5078e5c31af7Sopenharmony_ci * ename:VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT specifies 5079e5c31af7Sopenharmony_ci that a pipeline will include 5080e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-fragment-shader,fragment shader state>>. 5081e5c31af7Sopenharmony_ci * ename:VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT 5082e5c31af7Sopenharmony_ci specifies that a pipeline will include 5083e5c31af7Sopenharmony_ci <<pipelines-graphics-subsets-fragment-output,fragment output interface 5084e5c31af7Sopenharmony_ci state>>. 5085e5c31af7Sopenharmony_ci-- 5086e5c31af7Sopenharmony_ciendif::VK_EXT_graphics_pipeline_library[] 5087e5c31af7Sopenharmony_ci 5088e5c31af7Sopenharmony_ci[open,refpage='VkPipelineDynamicStateCreateInfo',desc='Structure specifying parameters of a newly created pipeline dynamic state',type='structs'] 5089e5c31af7Sopenharmony_ci-- 5090e5c31af7Sopenharmony_ciThe sname:VkPipelineDynamicStateCreateInfo structure is defined as: 5091e5c31af7Sopenharmony_ci 5092e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkPipelineDynamicStateCreateInfo.adoc[] 5093e5c31af7Sopenharmony_ci 5094e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 5095e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or a pointer to a structure extending this 5096e5c31af7Sopenharmony_ci structure. 5097e5c31af7Sopenharmony_ci * pname:flags is reserved for future use. 5098e5c31af7Sopenharmony_ci * pname:dynamicStateCount is the number of elements in the 5099e5c31af7Sopenharmony_ci pname:pDynamicStates array. 5100e5c31af7Sopenharmony_ci * pname:pDynamicStates is a pointer to an array of elink:VkDynamicState 5101e5c31af7Sopenharmony_ci values specifying which pieces of pipeline state will use the values 5102e5c31af7Sopenharmony_ci from dynamic state commands rather than from pipeline state creation 5103e5c31af7Sopenharmony_ci information. 5104e5c31af7Sopenharmony_ci 5105e5c31af7Sopenharmony_ci.Valid Usage 5106e5c31af7Sopenharmony_ci**** 5107e5c31af7Sopenharmony_ci * [[VUID-VkPipelineDynamicStateCreateInfo-pDynamicStates-01442]] 5108e5c31af7Sopenharmony_ci Each element of pname:pDynamicStates must: be unique 5109e5c31af7Sopenharmony_ci**** 5110e5c31af7Sopenharmony_ci 5111e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkPipelineDynamicStateCreateInfo.adoc[] 5112e5c31af7Sopenharmony_ci-- 5113e5c31af7Sopenharmony_ci 5114e5c31af7Sopenharmony_ci[open,refpage='VkPipelineDynamicStateCreateFlags',desc='Reserved for future use',type='flags'] 5115e5c31af7Sopenharmony_ci-- 5116e5c31af7Sopenharmony_ciinclude::{generated}/api/flags/VkPipelineDynamicStateCreateFlags.adoc[] 5117e5c31af7Sopenharmony_ci 5118e5c31af7Sopenharmony_citname:VkPipelineDynamicStateCreateFlags is a bitmask type for setting a 5119e5c31af7Sopenharmony_cimask, but is currently reserved for future use. 5120e5c31af7Sopenharmony_ci-- 5121e5c31af7Sopenharmony_ci 5122e5c31af7Sopenharmony_ci[open,refpage='VkDynamicState',desc='Indicate which dynamic state is taken from dynamic state commands',type='enums'] 5123e5c31af7Sopenharmony_ci-- 5124e5c31af7Sopenharmony_ciThe source of different pieces of dynamic state is specified by the 5125e5c31af7Sopenharmony_cislink:VkPipelineDynamicStateCreateInfo::pname:pDynamicStates property of the 5126e5c31af7Sopenharmony_cicurrently active pipeline, each of whose elements must: be one of the 5127e5c31af7Sopenharmony_civalues: 5128e5c31af7Sopenharmony_ci 5129e5c31af7Sopenharmony_ciinclude::{generated}/api/enums/VkDynamicState.adoc[] 5130e5c31af7Sopenharmony_ci 5131e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_VIEWPORT specifies that the pname:pViewports 5132e5c31af7Sopenharmony_ci state in slink:VkPipelineViewportStateCreateInfo will be ignored and 5133e5c31af7Sopenharmony_ci must: be set dynamically with flink:vkCmdSetViewport before any drawing 5134e5c31af7Sopenharmony_ci commands. 5135e5c31af7Sopenharmony_ci The number of viewports used by a pipeline is still specified by the 5136e5c31af7Sopenharmony_ci pname:viewportCount member of slink:VkPipelineViewportStateCreateInfo. 5137e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_SCISSOR specifies that the pname:pScissors state 5138e5c31af7Sopenharmony_ci in slink:VkPipelineViewportStateCreateInfo will be ignored and must: be 5139e5c31af7Sopenharmony_ci set dynamically with flink:vkCmdSetScissor before any drawing commands. 5140e5c31af7Sopenharmony_ci The number of scissor rectangles used by a pipeline is still specified 5141e5c31af7Sopenharmony_ci by the pname:scissorCount member of 5142e5c31af7Sopenharmony_ci slink:VkPipelineViewportStateCreateInfo. 5143e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_LINE_WIDTH specifies that the pname:lineWidth 5144e5c31af7Sopenharmony_ci state in slink:VkPipelineRasterizationStateCreateInfo will be ignored 5145e5c31af7Sopenharmony_ci and must: be set dynamically with flink:vkCmdSetLineWidth before any 5146e5c31af7Sopenharmony_ci drawing commands that generate line primitives for the rasterizer. 5147e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_DEPTH_BIAS specifies that 5148e5c31af7Sopenharmony_ciifdef::VK_EXT_depth_bias_control[] 5149e5c31af7Sopenharmony_ci any instance of slink:VkDepthBiasRepresentationInfoEXT included in the 5150e5c31af7Sopenharmony_ci pname:pNext chain of slink:VkPipelineRasterizationStateCreateInfo as 5151e5c31af7Sopenharmony_ci well as 5152e5c31af7Sopenharmony_ciendif::VK_EXT_depth_bias_control[] 5153e5c31af7Sopenharmony_ci the pname:depthBiasConstantFactor, pname:depthBiasClamp and 5154e5c31af7Sopenharmony_ci pname:depthBiasSlopeFactor states in 5155e5c31af7Sopenharmony_ci slink:VkPipelineRasterizationStateCreateInfo will be ignored and must: 5156e5c31af7Sopenharmony_ci be set dynamically with flink:vkCmdSetDepthBias 5157e5c31af7Sopenharmony_ciifdef::VK_EXT_depth_bias_control[or flink:vkCmdSetDepthBias2EXT] 5158e5c31af7Sopenharmony_ci before any draws are performed with <<primsrast-depthbias-enable, depth 5159e5c31af7Sopenharmony_ci bias enabled>>. 5160e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_BLEND_CONSTANTS specifies that the 5161e5c31af7Sopenharmony_ci pname:blendConstants state in slink:VkPipelineColorBlendStateCreateInfo 5162e5c31af7Sopenharmony_ci will be ignored and must: be set dynamically with 5163e5c31af7Sopenharmony_ci flink:vkCmdSetBlendConstants before any draws are performed with a 5164e5c31af7Sopenharmony_ci pipeline state with sname:VkPipelineColorBlendAttachmentState member 5165e5c31af7Sopenharmony_ci pname:blendEnable set to ename:VK_TRUE and any of the blend functions 5166e5c31af7Sopenharmony_ci using a constant blend color. 5167e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_DEPTH_BOUNDS specifies that the 5168e5c31af7Sopenharmony_ci pname:minDepthBounds and pname:maxDepthBounds states of 5169e5c31af7Sopenharmony_ci slink:VkPipelineDepthStencilStateCreateInfo will be ignored and must: be 5170e5c31af7Sopenharmony_ci set dynamically with flink:vkCmdSetDepthBounds before any draws are 5171e5c31af7Sopenharmony_ci performed with a pipeline state with 5172e5c31af7Sopenharmony_ci slink:VkPipelineDepthStencilStateCreateInfo member 5173e5c31af7Sopenharmony_ci pname:depthBoundsTestEnable set to ename:VK_TRUE. 5174e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK specifies that the 5175e5c31af7Sopenharmony_ci pname:compareMask state in slink:VkPipelineDepthStencilStateCreateInfo 5176e5c31af7Sopenharmony_ci for both pname:front and pname:back will be ignored and must: be set 5177e5c31af7Sopenharmony_ci dynamically with flink:vkCmdSetStencilCompareMask before any draws are 5178e5c31af7Sopenharmony_ci performed with a pipeline state with 5179e5c31af7Sopenharmony_ci slink:VkPipelineDepthStencilStateCreateInfo member 5180e5c31af7Sopenharmony_ci pname:stencilTestEnable set to ename:VK_TRUE 5181e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_STENCIL_WRITE_MASK specifies that the 5182e5c31af7Sopenharmony_ci pname:writeMask state in slink:VkPipelineDepthStencilStateCreateInfo for 5183e5c31af7Sopenharmony_ci both pname:front and pname:back will be ignored and must: be set 5184e5c31af7Sopenharmony_ci dynamically with flink:vkCmdSetStencilWriteMask before any draws are 5185e5c31af7Sopenharmony_ci performed with a pipeline state with 5186e5c31af7Sopenharmony_ci slink:VkPipelineDepthStencilStateCreateInfo member 5187e5c31af7Sopenharmony_ci pname:stencilTestEnable set to ename:VK_TRUE 5188e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_STENCIL_REFERENCE specifies that the 5189e5c31af7Sopenharmony_ci pname:reference state in slink:VkPipelineDepthStencilStateCreateInfo for 5190e5c31af7Sopenharmony_ci both pname:front and pname:back will be ignored and must: be set 5191e5c31af7Sopenharmony_ci dynamically with flink:vkCmdSetStencilReference before any draws are 5192e5c31af7Sopenharmony_ci performed with a pipeline state with 5193e5c31af7Sopenharmony_ci slink:VkPipelineDepthStencilStateCreateInfo member 5194e5c31af7Sopenharmony_ci pname:stencilTestEnable set to ename:VK_TRUE 5195e5c31af7Sopenharmony_ciifdef::VK_NV_clip_space_w_scaling[] 5196e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV specifies that the 5197e5c31af7Sopenharmony_ci pname:pViewportWScalings state in 5198e5c31af7Sopenharmony_ci slink:VkPipelineViewportWScalingStateCreateInfoNV will be ignored and 5199e5c31af7Sopenharmony_ci must: be set dynamically with flink:vkCmdSetViewportWScalingNV before 5200e5c31af7Sopenharmony_ci any draws are performed with a pipeline state with 5201e5c31af7Sopenharmony_ci slink:VkPipelineViewportWScalingStateCreateInfoNV member 5202e5c31af7Sopenharmony_ci pname:viewportScalingEnable set to ename:VK_TRUE 5203e5c31af7Sopenharmony_ciendif::VK_NV_clip_space_w_scaling[] 5204e5c31af7Sopenharmony_ciifdef::VK_EXT_discard_rectangles[] 5205e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT specifies that the 5206e5c31af7Sopenharmony_ci pname:pDiscardRectangles state in 5207e5c31af7Sopenharmony_ci slink:VkPipelineDiscardRectangleStateCreateInfoEXT will be ignored and 5208e5c31af7Sopenharmony_ci must: be set dynamically with flink:vkCmdSetDiscardRectangleEXT before 5209e5c31af7Sopenharmony_ci any draw or clear commands. 5210e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT specifies that the 5211e5c31af7Sopenharmony_ci presence of the slink:VkPipelineDiscardRectangleStateCreateInfoEXT 5212e5c31af7Sopenharmony_ci structure in the slink:VkGraphicsPipelineCreateInfo chain with a 5213e5c31af7Sopenharmony_ci pname:discardRectangleCount greater than zero does not implicitly enable 5214e5c31af7Sopenharmony_ci discard rectangles and they must: be enabled dynamically with 5215e5c31af7Sopenharmony_ci flink:vkCmdSetDiscardRectangleEnableEXT before any draw commands. 5216e5c31af7Sopenharmony_ci This is available on implementations that support at least 5217e5c31af7Sopenharmony_ci pname:specVersion `2` of the `apiext:VK_EXT_discard_rectangles` 5218e5c31af7Sopenharmony_ci extension. 5219e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT specifies that the 5220e5c31af7Sopenharmony_ci pname:discardRectangleMode state in 5221e5c31af7Sopenharmony_ci slink:VkPipelineDiscardRectangleStateCreateInfoEXT will be ignored and 5222e5c31af7Sopenharmony_ci must: be set dynamically with flink:vkCmdSetDiscardRectangleModeEXT 5223e5c31af7Sopenharmony_ci before any draw commands. 5224e5c31af7Sopenharmony_ci This is available on implementations that support at least 5225e5c31af7Sopenharmony_ci pname:specVersion `2` of the `apiext:VK_EXT_discard_rectangles` 5226e5c31af7Sopenharmony_ci extension. 5227e5c31af7Sopenharmony_ciendif::VK_EXT_discard_rectangles[] 5228e5c31af7Sopenharmony_ciifdef::VK_EXT_sample_locations[] 5229e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT specifies that the 5230e5c31af7Sopenharmony_ci pname:sampleLocationsInfo state in 5231e5c31af7Sopenharmony_ci slink:VkPipelineSampleLocationsStateCreateInfoEXT will be ignored and 5232e5c31af7Sopenharmony_ci must: be set dynamically with flink:vkCmdSetSampleLocationsEXT before 5233e5c31af7Sopenharmony_ci any draw or clear commands. 5234e5c31af7Sopenharmony_ci Enabling custom sample locations is still indicated by the 5235e5c31af7Sopenharmony_ci pname:sampleLocationsEnable member of 5236e5c31af7Sopenharmony_ci slink:VkPipelineSampleLocationsStateCreateInfoEXT. 5237e5c31af7Sopenharmony_ciendif::VK_EXT_sample_locations[] 5238e5c31af7Sopenharmony_ciifdef::VK_NV_scissor_exclusive[] 5239e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV specifies that the 5240e5c31af7Sopenharmony_ci pname:pExclusiveScissors state in 5241e5c31af7Sopenharmony_ci slink:VkPipelineViewportExclusiveScissorStateCreateInfoNV will be 5242e5c31af7Sopenharmony_ci ignored and must: be set dynamically with 5243e5c31af7Sopenharmony_ci flink:vkCmdSetExclusiveScissorNV before any drawing commands. 5244e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV specifies that the 5245e5c31af7Sopenharmony_ci exclusive scissors must: be explicitly enabled with 5246e5c31af7Sopenharmony_ci flink:vkCmdSetExclusiveScissorEnableNV and the 5247e5c31af7Sopenharmony_ci pname:exclusiveScissorCount value in 5248e5c31af7Sopenharmony_ci slink:VkPipelineViewportExclusiveScissorStateCreateInfoNV will not 5249e5c31af7Sopenharmony_ci implicitly enable them. 5250e5c31af7Sopenharmony_ci This is available on implementations that support at least 5251e5c31af7Sopenharmony_ci pname:specVersion `2` of the `apiext:VK_NV_scissor_exclusive` extension. 5252e5c31af7Sopenharmony_ciendif::VK_NV_scissor_exclusive[] 5253e5c31af7Sopenharmony_ciifdef::VK_NV_shading_rate_image[] 5254e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV specifies that 5255e5c31af7Sopenharmony_ci the pname:pShadingRatePalettes state in 5256e5c31af7Sopenharmony_ci slink:VkPipelineViewportShadingRateImageStateCreateInfoNV will be 5257e5c31af7Sopenharmony_ci ignored and must: be set dynamically with 5258e5c31af7Sopenharmony_ci flink:vkCmdSetViewportShadingRatePaletteNV before any drawing commands. 5259e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV specifies that 5260e5c31af7Sopenharmony_ci the coarse sample order state in 5261e5c31af7Sopenharmony_ci slink:VkPipelineViewportCoarseSampleOrderStateCreateInfoNV will be 5262e5c31af7Sopenharmony_ci ignored and must: be set dynamically with 5263e5c31af7Sopenharmony_ci flink:vkCmdSetCoarseSampleOrderNV before any drawing commands. 5264e5c31af7Sopenharmony_ciendif::VK_NV_shading_rate_image[] 5265e5c31af7Sopenharmony_ciifdef::VK_EXT_line_rasterization[] 5266e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_LINE_STIPPLE_EXT specifies that the 5267e5c31af7Sopenharmony_ci pname:lineStippleFactor and pname:lineStipplePattern state in 5268e5c31af7Sopenharmony_ci slink:VkPipelineRasterizationLineStateCreateInfoEXT will be ignored and 5269e5c31af7Sopenharmony_ci must: be set dynamically with flink:vkCmdSetLineStippleEXT before any 5270e5c31af7Sopenharmony_ci draws are performed with a pipeline state with 5271e5c31af7Sopenharmony_ci slink:VkPipelineRasterizationLineStateCreateInfoEXT member 5272e5c31af7Sopenharmony_ci pname:stippledLineEnable set to ename:VK_TRUE. 5273e5c31af7Sopenharmony_ciendif::VK_EXT_line_rasterization[] 5274e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_3,VK_EXT_extended_dynamic_state[] 5275e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_CULL_MODE specifies that the pname:cullMode state 5276e5c31af7Sopenharmony_ci in slink:VkPipelineRasterizationStateCreateInfo will be ignored and 5277e5c31af7Sopenharmony_ci must: be set dynamically with flink:vkCmdSetCullMode before any drawing 5278e5c31af7Sopenharmony_ci commands. 5279e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_FRONT_FACE specifies that the pname:frontFace 5280e5c31af7Sopenharmony_ci state in slink:VkPipelineRasterizationStateCreateInfo will be ignored 5281e5c31af7Sopenharmony_ci and must: be set dynamically with flink:vkCmdSetFrontFace before any 5282e5c31af7Sopenharmony_ci drawing commands. 5283e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY specifies that the 5284e5c31af7Sopenharmony_ci pname:topology state in slink:VkPipelineInputAssemblyStateCreateInfo 5285e5c31af7Sopenharmony_ci only specifies the <<drawing-primitive-topology-class, topology class>>, 5286e5c31af7Sopenharmony_ci and the specific topology order and adjacency must: be set dynamically 5287e5c31af7Sopenharmony_ci with flink:vkCmdSetPrimitiveTopology before any drawing commands. 5288e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT specifies that the 5289e5c31af7Sopenharmony_ci pname:viewportCount and pname:pViewports state in 5290e5c31af7Sopenharmony_ci slink:VkPipelineViewportStateCreateInfo will be ignored and must: be set 5291e5c31af7Sopenharmony_ci dynamically with flink:vkCmdSetViewportWithCount before any draw call. 5292e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT specifies that the 5293e5c31af7Sopenharmony_ci pname:scissorCount and pname:pScissors state in 5294e5c31af7Sopenharmony_ci slink:VkPipelineViewportStateCreateInfo will be ignored and must: be set 5295e5c31af7Sopenharmony_ci dynamically with flink:vkCmdSetScissorWithCount before any draw call. 5296e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE specifies that the 5297e5c31af7Sopenharmony_ci pname:stride state in slink:VkVertexInputBindingDescription will be 5298e5c31af7Sopenharmony_ci ignored and must: be set dynamically with flink:vkCmdBindVertexBuffers2 5299e5c31af7Sopenharmony_ci before any draw call. 5300e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE specifies that the 5301e5c31af7Sopenharmony_ci pname:depthTestEnable state in 5302e5c31af7Sopenharmony_ci slink:VkPipelineDepthStencilStateCreateInfo will be ignored and must: be 5303e5c31af7Sopenharmony_ci set dynamically with flink:vkCmdSetDepthTestEnable before any draw call. 5304e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE specifies that the 5305e5c31af7Sopenharmony_ci pname:depthWriteEnable state in 5306e5c31af7Sopenharmony_ci slink:VkPipelineDepthStencilStateCreateInfo will be ignored and must: be 5307e5c31af7Sopenharmony_ci set dynamically with flink:vkCmdSetDepthWriteEnable before any draw 5308e5c31af7Sopenharmony_ci call. 5309e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_DEPTH_COMPARE_OP specifies that the 5310e5c31af7Sopenharmony_ci pname:depthCompareOp state in 5311e5c31af7Sopenharmony_ci slink:VkPipelineDepthStencilStateCreateInfo will be ignored and must: be 5312e5c31af7Sopenharmony_ci set dynamically with flink:vkCmdSetDepthCompareOp before any draw call. 5313e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE specifies that the 5314e5c31af7Sopenharmony_ci pname:depthBoundsTestEnable state in 5315e5c31af7Sopenharmony_ci slink:VkPipelineDepthStencilStateCreateInfo will be ignored and must: be 5316e5c31af7Sopenharmony_ci set dynamically with flink:vkCmdSetDepthBoundsTestEnable before any draw 5317e5c31af7Sopenharmony_ci call. 5318e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE specifies that the 5319e5c31af7Sopenharmony_ci pname:stencilTestEnable state in 5320e5c31af7Sopenharmony_ci slink:VkPipelineDepthStencilStateCreateInfo will be ignored and must: be 5321e5c31af7Sopenharmony_ci set dynamically with flink:vkCmdSetStencilTestEnable before any draw 5322e5c31af7Sopenharmony_ci call. 5323e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_STENCIL_OP specifies that the pname:failOp, 5324e5c31af7Sopenharmony_ci pname:passOp, pname:depthFailOp, and pname:compareOp states in 5325e5c31af7Sopenharmony_ci sname:VkPipelineDepthStencilStateCreateInfo for both pname:front and 5326e5c31af7Sopenharmony_ci pname:back will be ignored and must: be set dynamically with 5327e5c31af7Sopenharmony_ci flink:vkCmdSetStencilOp before any draws are performed with a pipeline 5328e5c31af7Sopenharmony_ci state with sname:VkPipelineDepthStencilStateCreateInfo member 5329e5c31af7Sopenharmony_ci pname:stencilTestEnable set to ename:VK_TRUE 5330e5c31af7Sopenharmony_ciendif::VK_VERSION_1_3,VK_EXT_extended_dynamic_state[] 5331e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_3,VK_EXT_extended_dynamic_state2[] 5332e5c31af7Sopenharmony_ciifdef::VK_EXT_extended_dynamic_state2[] 5333e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT specifies that the 5334e5c31af7Sopenharmony_ci pname:patchControlPoints state in 5335e5c31af7Sopenharmony_ci slink:VkPipelineTessellationStateCreateInfo will be ignored and must: be 5336e5c31af7Sopenharmony_ci set dynamically with flink:vkCmdSetPatchControlPointsEXT before any 5337e5c31af7Sopenharmony_ci drawing commands. 5338e5c31af7Sopenharmony_ciendif::VK_EXT_extended_dynamic_state2[] 5339e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE specifies that the 5340e5c31af7Sopenharmony_ci pname:rasterizerDiscardEnable state in 5341e5c31af7Sopenharmony_ci slink:VkPipelineRasterizationStateCreateInfo will be ignored and must: 5342e5c31af7Sopenharmony_ci be set dynamically with flink:vkCmdSetRasterizerDiscardEnable before any 5343e5c31af7Sopenharmony_ci drawing commands. 5344e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE specifies that the 5345e5c31af7Sopenharmony_ci pname:depthBiasEnable state in 5346e5c31af7Sopenharmony_ci slink:VkPipelineRasterizationStateCreateInfo will be ignored and must: 5347e5c31af7Sopenharmony_ci be set dynamically with flink:vkCmdSetDepthBiasEnable before any drawing 5348e5c31af7Sopenharmony_ci commands. 5349e5c31af7Sopenharmony_ciifdef::VK_EXT_extended_dynamic_state2[] 5350e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_LOGIC_OP_EXT specifies that the pname:logicOp 5351e5c31af7Sopenharmony_ci state in slink:VkPipelineColorBlendStateCreateInfo will be ignored and 5352e5c31af7Sopenharmony_ci must: be set dynamically with flink:vkCmdSetLogicOpEXT before any 5353e5c31af7Sopenharmony_ci drawing commands. 5354e5c31af7Sopenharmony_ciendif::VK_EXT_extended_dynamic_state2[] 5355e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE specifies that the 5356e5c31af7Sopenharmony_ci pname:primitiveRestartEnable state in 5357e5c31af7Sopenharmony_ci slink:VkPipelineInputAssemblyStateCreateInfo will be ignored and must: 5358e5c31af7Sopenharmony_ci be set dynamically with flink:vkCmdSetPrimitiveRestartEnable before any 5359e5c31af7Sopenharmony_ci drawing commands. 5360e5c31af7Sopenharmony_ciendif::VK_VERSION_1_3,VK_EXT_extended_dynamic_state2[] 5361e5c31af7Sopenharmony_ciifdef::VK_KHR_fragment_shading_rate[] 5362e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR specifies that state in 5363e5c31af7Sopenharmony_ci slink:VkPipelineFragmentShadingRateStateCreateInfoKHR 5364e5c31af7Sopenharmony_ciifdef::VK_NV_fragment_shading_rate_enums[] 5365e5c31af7Sopenharmony_ci and slink:VkPipelineFragmentShadingRateEnumStateCreateInfoNV 5366e5c31af7Sopenharmony_ciendif::VK_NV_fragment_shading_rate_enums[] 5367e5c31af7Sopenharmony_ci will be ignored and must: be set dynamically with 5368e5c31af7Sopenharmony_ci flink:vkCmdSetFragmentShadingRateKHR 5369e5c31af7Sopenharmony_ciifdef::VK_NV_fragment_shading_rate_enums[] 5370e5c31af7Sopenharmony_ci or flink:vkCmdSetFragmentShadingRateEnumNV 5371e5c31af7Sopenharmony_ciendif::VK_NV_fragment_shading_rate_enums[] 5372e5c31af7Sopenharmony_ci before any drawing commands. 5373e5c31af7Sopenharmony_ciendif::VK_KHR_fragment_shading_rate[] 5374e5c31af7Sopenharmony_ciifdef::VK_KHR_ray_tracing_pipeline[] 5375e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR specifies 5376e5c31af7Sopenharmony_ci that the default stack size computation for the pipeline will be ignored 5377e5c31af7Sopenharmony_ci and must: be set dynamically with 5378e5c31af7Sopenharmony_ci flink:vkCmdSetRayTracingPipelineStackSizeKHR before any ray tracing 5379e5c31af7Sopenharmony_ci calls are performed. 5380e5c31af7Sopenharmony_ciendif::VK_KHR_ray_tracing_pipeline[] 5381e5c31af7Sopenharmony_ciifdef::VK_EXT_vertex_input_dynamic_state[] 5382e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_VERTEX_INPUT_EXT specifies that the 5383e5c31af7Sopenharmony_ci pname:pVertexInputState state will be ignored and must: be set 5384e5c31af7Sopenharmony_ci dynamically with flink:vkCmdSetVertexInputEXT before any drawing 5385e5c31af7Sopenharmony_ci commands 5386e5c31af7Sopenharmony_ciendif::VK_EXT_vertex_input_dynamic_state[] 5387e5c31af7Sopenharmony_ciifdef::VK_EXT_color_write_enable[] 5388e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT specifies that the 5389e5c31af7Sopenharmony_ci pname:pColorWriteEnables state in 5390e5c31af7Sopenharmony_ci slink:VkPipelineColorWriteCreateInfoEXT will be ignored and must: be set 5391e5c31af7Sopenharmony_ci dynamically with flink:vkCmdSetColorWriteEnableEXT before any draw call. 5392e5c31af7Sopenharmony_ciendif::VK_EXT_color_write_enable[] 5393e5c31af7Sopenharmony_ciifdef::VK_EXT_extended_dynamic_state3[] 5394e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT specifies that the 5395e5c31af7Sopenharmony_ci pname:domainOrigin state in 5396e5c31af7Sopenharmony_ci slink:VkPipelineTessellationDomainOriginStateCreateInfo will be ignored 5397e5c31af7Sopenharmony_ci and must: be set dynamically with 5398e5c31af7Sopenharmony_ci flink:vkCmdSetTessellationDomainOriginEXT before any draw call. 5399e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT specifies that the 5400e5c31af7Sopenharmony_ci pname:depthClampEnable state in 5401e5c31af7Sopenharmony_ci slink:VkPipelineRasterizationStateCreateInfo will be ignored and must: 5402e5c31af7Sopenharmony_ci be set dynamically with flink:vkCmdSetDepthClampEnableEXT before any 5403e5c31af7Sopenharmony_ci draw call. 5404e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_POLYGON_MODE_EXT specifies that the 5405e5c31af7Sopenharmony_ci pname:polygonMode state in slink:VkPipelineRasterizationStateCreateInfo 5406e5c31af7Sopenharmony_ci will be ignored and must: be set dynamically with 5407e5c31af7Sopenharmony_ci flink:vkCmdSetPolygonModeEXT before any draw call. 5408e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT specifies that the 5409e5c31af7Sopenharmony_ci pname:rasterizationSamples state in 5410e5c31af7Sopenharmony_ci slink:VkPipelineMultisampleStateCreateInfo will be ignored and must: be 5411e5c31af7Sopenharmony_ci set dynamically with flink:vkCmdSetRasterizationSamplesEXT before any 5412e5c31af7Sopenharmony_ci draw call. 5413e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_SAMPLE_MASK_EXT specifies that the 5414e5c31af7Sopenharmony_ci pname:pSampleMask state in slink:VkPipelineMultisampleStateCreateInfo 5415e5c31af7Sopenharmony_ci will be ignored and must: be set dynamically with 5416e5c31af7Sopenharmony_ci flink:vkCmdSetSampleMaskEXT before any draw call. 5417e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT specifies that the 5418e5c31af7Sopenharmony_ci pname:alphaToCoverageEnable state in 5419e5c31af7Sopenharmony_ci slink:VkPipelineMultisampleStateCreateInfo will be ignored and must: be 5420e5c31af7Sopenharmony_ci set dynamically with flink:vkCmdSetAlphaToCoverageEnableEXT before any 5421e5c31af7Sopenharmony_ci draw call. 5422e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT specifies that the 5423e5c31af7Sopenharmony_ci pname:alphaToOneEnable state in 5424e5c31af7Sopenharmony_ci slink:VkPipelineMultisampleStateCreateInfo will be ignored and must: be 5425e5c31af7Sopenharmony_ci set dynamically with flink:vkCmdSetAlphaToOneEnableEXT before any draw 5426e5c31af7Sopenharmony_ci call. 5427e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT specifies that the 5428e5c31af7Sopenharmony_ci pname:logicOpEnable state in slink:VkPipelineColorBlendStateCreateInfo 5429e5c31af7Sopenharmony_ci will be ignored and must: be set dynamically with 5430e5c31af7Sopenharmony_ci flink:vkCmdSetLogicOpEnableEXT before any draw call. 5431e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT specifies that the 5432e5c31af7Sopenharmony_ci pname:blendEnable state in slink:VkPipelineColorBlendAttachmentState 5433e5c31af7Sopenharmony_ci will be ignored and must: be set dynamically with 5434e5c31af7Sopenharmony_ci flink:vkCmdSetColorBlendEnableEXT before any draw call. 5435e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT specifies that the 5436e5c31af7Sopenharmony_ci pname:srcColorBlendFactor, pname:dstColorBlendFactor, 5437e5c31af7Sopenharmony_ci pname:colorBlendOp, pname:srcAlphaBlendFactor, 5438e5c31af7Sopenharmony_ci pname:dstAlphaBlendFactor, and pname:alphaBlendOp states in 5439e5c31af7Sopenharmony_ci slink:VkPipelineColorBlendAttachmentState will be ignored and must: be 5440e5c31af7Sopenharmony_ci set dynamically with flink:vkCmdSetColorBlendEquationEXT before any draw 5441e5c31af7Sopenharmony_ci call. 5442e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT specifies that the 5443e5c31af7Sopenharmony_ci pname:colorWriteMask state in slink:VkPipelineColorBlendAttachmentState 5444e5c31af7Sopenharmony_ci will be ignored and must: be set dynamically with 5445e5c31af7Sopenharmony_ci flink:vkCmdSetColorWriteMaskEXT before any draw call. 5446e5c31af7Sopenharmony_ciifdef::VK_EXT_transform_feedback[] 5447e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT specifies that the 5448e5c31af7Sopenharmony_ci pname:rasterizationStream state in 5449e5c31af7Sopenharmony_ci slink:VkPipelineRasterizationStateStreamCreateInfoEXT will be ignored 5450e5c31af7Sopenharmony_ci and must: be set dynamically with flink:vkCmdSetRasterizationStreamEXT 5451e5c31af7Sopenharmony_ci before any draw call. 5452e5c31af7Sopenharmony_ciendif::VK_EXT_transform_feedback[] 5453e5c31af7Sopenharmony_ciifdef::VK_EXT_conservative_rasterization[] 5454e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT specifies 5455e5c31af7Sopenharmony_ci that the pname:conservativeRasterizationMode state in 5456e5c31af7Sopenharmony_ci slink:VkPipelineRasterizationConservativeStateCreateInfoEXT will be 5457e5c31af7Sopenharmony_ci ignored and must: be set dynamically with 5458e5c31af7Sopenharmony_ci flink:vkCmdSetConservativeRasterizationModeEXT before any draw call. 5459e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT specifies 5460e5c31af7Sopenharmony_ci that the pname:extraPrimitiveOverestimationSize state in 5461e5c31af7Sopenharmony_ci slink:VkPipelineRasterizationConservativeStateCreateInfoEXT will be 5462e5c31af7Sopenharmony_ci ignored and must: be set dynamically with 5463e5c31af7Sopenharmony_ci flink:vkCmdSetExtraPrimitiveOverestimationSizeEXT before any draw call. 5464e5c31af7Sopenharmony_ciendif::VK_EXT_conservative_rasterization[] 5465e5c31af7Sopenharmony_ciifdef::VK_EXT_depth_clip_enable[] 5466e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT specifies that the 5467e5c31af7Sopenharmony_ci pname:depthClipEnable state in 5468e5c31af7Sopenharmony_ci slink:VkPipelineRasterizationDepthClipStateCreateInfoEXT will be ignored 5469e5c31af7Sopenharmony_ci and must: be set dynamically with flink:vkCmdSetDepthClipEnableEXT 5470e5c31af7Sopenharmony_ci before any draw call. 5471e5c31af7Sopenharmony_ciendif::VK_EXT_depth_clip_enable[] 5472e5c31af7Sopenharmony_ciifdef::VK_EXT_sample_locations[] 5473e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT specifies that the 5474e5c31af7Sopenharmony_ci pname:sampleLocationsEnable state in 5475e5c31af7Sopenharmony_ci slink:VkPipelineSampleLocationsStateCreateInfoEXT will be ignored and 5476e5c31af7Sopenharmony_ci must: be set dynamically with flink:vkCmdSetSampleLocationsEnableEXT 5477e5c31af7Sopenharmony_ci before any draw call. 5478e5c31af7Sopenharmony_ciendif::VK_EXT_sample_locations[] 5479e5c31af7Sopenharmony_ciifdef::VK_EXT_blend_operation_advanced[] 5480e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT specifies that the 5481e5c31af7Sopenharmony_ci pname:colorBlendOp state in slink:VkPipelineColorBlendAttachmentState, 5482e5c31af7Sopenharmony_ci and pname:srcPremultiplied, pname:dstPremultiplied, and 5483e5c31af7Sopenharmony_ci pname:blendOverlap states in 5484e5c31af7Sopenharmony_ci slink:VkPipelineColorBlendAdvancedStateCreateInfoEXT will be ignored and 5485e5c31af7Sopenharmony_ci must: be set dynamically with flink:vkCmdSetColorBlendAdvancedEXT before 5486e5c31af7Sopenharmony_ci any draw call. 5487e5c31af7Sopenharmony_ciendif::VK_EXT_blend_operation_advanced[] 5488e5c31af7Sopenharmony_ciifdef::VK_EXT_provoking_vertex[] 5489e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT specifies that the 5490e5c31af7Sopenharmony_ci pname:provokingVertexMode state in 5491e5c31af7Sopenharmony_ci slink:VkPipelineRasterizationProvokingVertexStateCreateInfoEXT will be 5492e5c31af7Sopenharmony_ci ignored and must: be set dynamically with 5493e5c31af7Sopenharmony_ci flink:vkCmdSetProvokingVertexModeEXT before any draw call. 5494e5c31af7Sopenharmony_ciendif::VK_EXT_provoking_vertex[] 5495e5c31af7Sopenharmony_ciifdef::VK_EXT_line_rasterization[] 5496e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT specifies that the 5497e5c31af7Sopenharmony_ci pname:lineRasterizationMode state in 5498e5c31af7Sopenharmony_ci slink:VkPipelineRasterizationLineStateCreateInfoEXT will be ignored and 5499e5c31af7Sopenharmony_ci must: be set dynamically with flink:vkCmdSetLineRasterizationModeEXT 5500e5c31af7Sopenharmony_ci before any draw call. 5501e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT specifies that the 5502e5c31af7Sopenharmony_ci pname:stippledLineEnable state in 5503e5c31af7Sopenharmony_ci slink:VkPipelineRasterizationLineStateCreateInfoEXT will be ignored and 5504e5c31af7Sopenharmony_ci must: be set dynamically with flink:vkCmdSetLineStippleEnableEXT before 5505e5c31af7Sopenharmony_ci any draw call. 5506e5c31af7Sopenharmony_ciendif::VK_EXT_line_rasterization[] 5507e5c31af7Sopenharmony_ciifdef::VK_EXT_depth_clip_control[] 5508e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT specifies that 5509e5c31af7Sopenharmony_ci the pname:negativeOneToOne state in 5510e5c31af7Sopenharmony_ci slink:VkPipelineViewportDepthClipControlCreateInfoEXT will be ignored 5511e5c31af7Sopenharmony_ci and must: be set dynamically with 5512e5c31af7Sopenharmony_ci flink:vkCmdSetDepthClipNegativeOneToOneEXT before any draw call. 5513e5c31af7Sopenharmony_ciendif::VK_EXT_depth_clip_control[] 5514e5c31af7Sopenharmony_ciifdef::VK_NV_clip_space_w_scaling[] 5515e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV specifies that the 5516e5c31af7Sopenharmony_ci pname:viewportWScalingEnable state in 5517e5c31af7Sopenharmony_ci slink:VkPipelineViewportWScalingStateCreateInfoNV will be ignored and 5518e5c31af7Sopenharmony_ci must: be set dynamically with flink:vkCmdSetViewportWScalingEnableNV 5519e5c31af7Sopenharmony_ci before any draw call. 5520e5c31af7Sopenharmony_ciendif::VK_NV_clip_space_w_scaling[] 5521e5c31af7Sopenharmony_ciifdef::VK_NV_viewport_swizzle[] 5522e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV specifies that the 5523e5c31af7Sopenharmony_ci pname:viewportCount, and pname:pViewportSwizzles states in 5524e5c31af7Sopenharmony_ci slink:VkPipelineViewportSwizzleStateCreateInfoNV will be ignored and 5525e5c31af7Sopenharmony_ci must: be set dynamically with flink:vkCmdSetViewportSwizzleNV before any 5526e5c31af7Sopenharmony_ci draw call. 5527e5c31af7Sopenharmony_ciendif::VK_NV_viewport_swizzle[] 5528e5c31af7Sopenharmony_ciifdef::VK_NV_fragment_coverage_to_color[] 5529e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV specifies that the 5530e5c31af7Sopenharmony_ci pname:coverageToColorEnable state in 5531e5c31af7Sopenharmony_ci slink:VkPipelineCoverageToColorStateCreateInfoNV will be ignored and 5532e5c31af7Sopenharmony_ci must: be set dynamically with flink:vkCmdSetCoverageToColorEnableNV 5533e5c31af7Sopenharmony_ci before any draw call. 5534e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV specifies that the 5535e5c31af7Sopenharmony_ci pname:coverageToColorLocation state in 5536e5c31af7Sopenharmony_ci slink:VkPipelineCoverageToColorStateCreateInfoNV will be ignored and 5537e5c31af7Sopenharmony_ci must: be set dynamically with flink:vkCmdSetCoverageToColorLocationNV 5538e5c31af7Sopenharmony_ci before any draw call. 5539e5c31af7Sopenharmony_ciendif::VK_NV_fragment_coverage_to_color[] 5540e5c31af7Sopenharmony_ciifdef::VK_NV_framebuffer_mixed_samples[] 5541e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV specifies that the 5542e5c31af7Sopenharmony_ci pname:coverageModulationMode state in 5543e5c31af7Sopenharmony_ci slink:VkPipelineCoverageModulationStateCreateInfoNV will be ignored and 5544e5c31af7Sopenharmony_ci must: be set dynamically with flink:vkCmdSetCoverageModulationModeNV 5545e5c31af7Sopenharmony_ci before any draw call. 5546e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV specifies 5547e5c31af7Sopenharmony_ci that the pname:coverageModulationTableEnable state in 5548e5c31af7Sopenharmony_ci slink:VkPipelineCoverageModulationStateCreateInfoNV will be ignored and 5549e5c31af7Sopenharmony_ci must: be set dynamically with 5550e5c31af7Sopenharmony_ci flink:vkCmdSetCoverageModulationTableEnableNV before any draw call. 5551e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV specifies that the 5552e5c31af7Sopenharmony_ci pname:coverageModulationTableCount, and pname:pCoverageModulationTable 5553e5c31af7Sopenharmony_ci states in slink:VkPipelineCoverageModulationStateCreateInfoNV will be 5554e5c31af7Sopenharmony_ci ignored and must: be set dynamically with 5555e5c31af7Sopenharmony_ci flink:vkCmdSetCoverageModulationTableNV before any draw call. 5556e5c31af7Sopenharmony_ciendif::VK_NV_framebuffer_mixed_samples[] 5557e5c31af7Sopenharmony_ciifdef::VK_NV_shading_rate_image[] 5558e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV specifies that the 5559e5c31af7Sopenharmony_ci pname:shadingRateImageEnable state in 5560e5c31af7Sopenharmony_ci slink:VkPipelineViewportShadingRateImageStateCreateInfoNV will be 5561e5c31af7Sopenharmony_ci ignored and must: be set dynamically with 5562e5c31af7Sopenharmony_ci flink:vkCmdSetShadingRateImageEnableNV before any draw call. 5563e5c31af7Sopenharmony_ciendif::VK_NV_shading_rate_image[] 5564e5c31af7Sopenharmony_ciifdef::VK_NV_representative_fragment_test[] 5565e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV specifies 5566e5c31af7Sopenharmony_ci that the pname:representativeFragmentTestEnable state in 5567e5c31af7Sopenharmony_ci slink:VkPipelineRepresentativeFragmentTestStateCreateInfoNV will be 5568e5c31af7Sopenharmony_ci ignored and must: be set dynamically with 5569e5c31af7Sopenharmony_ci flink:vkCmdSetRepresentativeFragmentTestEnableNV before any draw call. 5570e5c31af7Sopenharmony_ciendif::VK_NV_representative_fragment_test[] 5571e5c31af7Sopenharmony_ciifdef::VK_NV_coverage_reduction_mode[] 5572e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV specifies that the 5573e5c31af7Sopenharmony_ci pname:coverageReductionMode state in 5574e5c31af7Sopenharmony_ci slink:VkPipelineCoverageReductionStateCreateInfoNV will be ignored and 5575e5c31af7Sopenharmony_ci must: be set dynamically with flink:vkCmdSetCoverageReductionModeNV 5576e5c31af7Sopenharmony_ci before any draw call. 5577e5c31af7Sopenharmony_ciendif::VK_NV_coverage_reduction_mode[] 5578e5c31af7Sopenharmony_ciifdef::VK_EXT_attachment_feedback_loop_dynamic_state[] 5579e5c31af7Sopenharmony_ci * ename:VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT specifies 5580e5c31af7Sopenharmony_ci that the ename:VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT 5581e5c31af7Sopenharmony_ci and 5582e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT 5583e5c31af7Sopenharmony_ci flags will be ignored and must: be set dynamically with 5584e5c31af7Sopenharmony_ci flink:vkCmdSetAttachmentFeedbackLoopEnableEXT before any draw call. 5585e5c31af7Sopenharmony_ciendif::VK_EXT_attachment_feedback_loop_dynamic_state[] 5586e5c31af7Sopenharmony_ciendif::VK_EXT_extended_dynamic_state3[] 5587e5c31af7Sopenharmony_ci-- 5588e5c31af7Sopenharmony_ci 5589e5c31af7Sopenharmony_ci 5590e5c31af7Sopenharmony_ci=== Valid Combinations of Stages for Graphics Pipelines 5591e5c31af7Sopenharmony_ci 5592e5c31af7Sopenharmony_ciifdef::VK_NV_mesh_shader,VK_EXT_mesh_shader[] 5593e5c31af7Sopenharmony_ciPrimitive processing can be handled either on a per primitive basis by the 5594e5c31af7Sopenharmony_civertex, tessellation, and geometry shader stages, or on a per mesh basis 5595e5c31af7Sopenharmony_ciusing task and mesh shader stages. 5596e5c31af7Sopenharmony_ciIf the pipeline includes a mesh shader stage, it uses the mesh pipeline, 5597e5c31af7Sopenharmony_ciotherwise it uses the primitive pipeline. 5598e5c31af7Sopenharmony_ci 5599e5c31af7Sopenharmony_ciIf a task shader is omitted, the task shading stage is skipped. 5600e5c31af7Sopenharmony_ciendif::VK_NV_mesh_shader,VK_EXT_mesh_shader[] 5601e5c31af7Sopenharmony_ci 5602e5c31af7Sopenharmony_ciIf tessellation shader stages are omitted, the tessellation shading and 5603e5c31af7Sopenharmony_cifixed-function stages of the pipeline are skipped. 5604e5c31af7Sopenharmony_ci 5605e5c31af7Sopenharmony_ciIf a geometry shader is omitted, the geometry shading stage is skipped. 5606e5c31af7Sopenharmony_ci 5607e5c31af7Sopenharmony_ciIf a fragment shader is omitted, fragment color outputs have undefined: 5608e5c31af7Sopenharmony_civalues, and the fragment depth value is determined by <<fragops, Fragment 5609e5c31af7Sopenharmony_ciOperations>> state. 5610e5c31af7Sopenharmony_ciThis can: be useful for depth-only rendering. 5611e5c31af7Sopenharmony_ci 5612e5c31af7Sopenharmony_ciifdef::VKSC_VERSION_1_0[] 5613e5c31af7Sopenharmony_ciPresence of a shader stage in a pipeline is derived from the 5614e5c31af7Sopenharmony_ci<<pipelines-cache,pipeline cache>> entry identified by 5615e5c31af7Sopenharmony_cislink:VkPipelineOfflineCreateInfo::pname:pipelineIdentifier. 5616e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 5617e5c31af7Sopenharmony_ciifndef::VKSC_VERSION_1_0[] 5618e5c31af7Sopenharmony_ciPresence of a shader stage in a pipeline is indicated by including a valid 5619e5c31af7Sopenharmony_cislink:VkPipelineShaderStageCreateInfo with pname:module and pname:pName 5620e5c31af7Sopenharmony_ciselecting an entry point from a shader module, where that entry point is 5621e5c31af7Sopenharmony_civalid for the stage specified by pname:stage. 5622e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 5623e5c31af7Sopenharmony_ci 5624e5c31af7Sopenharmony_ciPresence of some of the fixed-function stages in the pipeline is implicitly 5625e5c31af7Sopenharmony_ciderived from enabled shaders and provided state. 5626e5c31af7Sopenharmony_ciFor example, the fixed-function tessellator is always present when the 5627e5c31af7Sopenharmony_cipipeline has valid Tessellation Control and Tessellation Evaluation shaders. 5628e5c31af7Sopenharmony_ci 5629e5c31af7Sopenharmony_ci.For example: 5630e5c31af7Sopenharmony_ci * Depth/stencil-only rendering in a subpass with no color attachments 5631e5c31af7Sopenharmony_ci ** Active Pipeline Shader Stages 5632e5c31af7Sopenharmony_ci *** Vertex Shader 5633e5c31af7Sopenharmony_ci ** Required: Fixed-Function Pipeline Stages 5634e5c31af7Sopenharmony_ci *** slink:VkPipelineVertexInputStateCreateInfo 5635e5c31af7Sopenharmony_ci *** slink:VkPipelineInputAssemblyStateCreateInfo 5636e5c31af7Sopenharmony_ci *** slink:VkPipelineViewportStateCreateInfo 5637e5c31af7Sopenharmony_ci *** slink:VkPipelineRasterizationStateCreateInfo 5638e5c31af7Sopenharmony_ci *** slink:VkPipelineMultisampleStateCreateInfo 5639e5c31af7Sopenharmony_ci *** slink:VkPipelineDepthStencilStateCreateInfo 5640e5c31af7Sopenharmony_ci * Color-only rendering in a subpass with no depth/stencil attachment 5641e5c31af7Sopenharmony_ci ** Active Pipeline Shader Stages 5642e5c31af7Sopenharmony_ci *** Vertex Shader 5643e5c31af7Sopenharmony_ci *** Fragment Shader 5644e5c31af7Sopenharmony_ci ** Required: Fixed-Function Pipeline Stages 5645e5c31af7Sopenharmony_ci *** slink:VkPipelineVertexInputStateCreateInfo 5646e5c31af7Sopenharmony_ci *** slink:VkPipelineInputAssemblyStateCreateInfo 5647e5c31af7Sopenharmony_ci *** slink:VkPipelineViewportStateCreateInfo 5648e5c31af7Sopenharmony_ci *** slink:VkPipelineRasterizationStateCreateInfo 5649e5c31af7Sopenharmony_ci *** slink:VkPipelineMultisampleStateCreateInfo 5650e5c31af7Sopenharmony_ci *** slink:VkPipelineColorBlendStateCreateInfo 5651e5c31af7Sopenharmony_ci * Rendering pipeline with tessellation and geometry shaders 5652e5c31af7Sopenharmony_ci ** Active Pipeline Shader Stages 5653e5c31af7Sopenharmony_ci *** Vertex Shader 5654e5c31af7Sopenharmony_ci *** Tessellation Control Shader 5655e5c31af7Sopenharmony_ci *** Tessellation Evaluation Shader 5656e5c31af7Sopenharmony_ci *** Geometry Shader 5657e5c31af7Sopenharmony_ci *** Fragment Shader 5658e5c31af7Sopenharmony_ci ** Required: Fixed-Function Pipeline Stages 5659e5c31af7Sopenharmony_ci *** slink:VkPipelineVertexInputStateCreateInfo 5660e5c31af7Sopenharmony_ci *** slink:VkPipelineInputAssemblyStateCreateInfo 5661e5c31af7Sopenharmony_ci *** slink:VkPipelineTessellationStateCreateInfo 5662e5c31af7Sopenharmony_ci *** slink:VkPipelineViewportStateCreateInfo 5663e5c31af7Sopenharmony_ci *** slink:VkPipelineRasterizationStateCreateInfo 5664e5c31af7Sopenharmony_ci *** slink:VkPipelineMultisampleStateCreateInfo 5665e5c31af7Sopenharmony_ci *** slink:VkPipelineDepthStencilStateCreateInfo 5666e5c31af7Sopenharmony_ci *** slink:VkPipelineColorBlendStateCreateInfo 5667e5c31af7Sopenharmony_ciifdef::VK_NV_mesh_shader,VK_EXT_mesh_shader[] 5668e5c31af7Sopenharmony_ci * Rendering pipeline with task and mesh shaders 5669e5c31af7Sopenharmony_ci ** Active Pipeline Shader Stages 5670e5c31af7Sopenharmony_ci *** Task Shader 5671e5c31af7Sopenharmony_ci *** Mesh Shader 5672e5c31af7Sopenharmony_ci *** Fragment Shader 5673e5c31af7Sopenharmony_ci ** Required: Fixed-Function Pipeline Stages 5674e5c31af7Sopenharmony_ci *** slink:VkPipelineViewportStateCreateInfo 5675e5c31af7Sopenharmony_ci *** slink:VkPipelineRasterizationStateCreateInfo 5676e5c31af7Sopenharmony_ci *** slink:VkPipelineMultisampleStateCreateInfo 5677e5c31af7Sopenharmony_ci *** slink:VkPipelineDepthStencilStateCreateInfo 5678e5c31af7Sopenharmony_ci *** slink:VkPipelineColorBlendStateCreateInfo 5679e5c31af7Sopenharmony_ciendif::VK_NV_mesh_shader,VK_EXT_mesh_shader[] 5680e5c31af7Sopenharmony_ci 5681e5c31af7Sopenharmony_ci 5682e5c31af7Sopenharmony_ciifdef::VK_NV_device_generated_commands[] 5683e5c31af7Sopenharmony_ci[[graphics-shadergroups]] 5684e5c31af7Sopenharmony_ci=== Graphics Pipeline Shader Groups 5685e5c31af7Sopenharmony_ci 5686e5c31af7Sopenharmony_ciGraphics pipelines can contain multiple shader groups that can be bound 5687e5c31af7Sopenharmony_ciindividually. 5688e5c31af7Sopenharmony_ciEach shader group behaves as if it was a pipeline using the shader group's 5689e5c31af7Sopenharmony_cistate. 5690e5c31af7Sopenharmony_ciWhen the pipeline is bound by regular means, it behaves as if the state of 5691e5c31af7Sopenharmony_cigroup `0` is active, use flink:vkCmdBindPipelineShaderGroupNV to bind an 5692e5c31af7Sopenharmony_ciindividual shader group. 5693e5c31af7Sopenharmony_ci 5694e5c31af7Sopenharmony_ciThe primary purpose of shader groups is allowing the device to bind 5695e5c31af7Sopenharmony_cidifferent pipeline state using <<device-generated-commands>>. 5696e5c31af7Sopenharmony_ci 5697e5c31af7Sopenharmony_ci[open,refpage='VkGraphicsPipelineShaderGroupsCreateInfoNV',desc='Structure specifying parameters of a newly created multi shader group pipeline',type='structs'] 5698e5c31af7Sopenharmony_ci-- 5699e5c31af7Sopenharmony_ciThe sname:VkGraphicsPipelineShaderGroupsCreateInfoNV structure is defined 5700e5c31af7Sopenharmony_cias: 5701e5c31af7Sopenharmony_ci 5702e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkGraphicsPipelineShaderGroupsCreateInfoNV.adoc[] 5703e5c31af7Sopenharmony_ci 5704e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 5705e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or a pointer to a structure extending this 5706e5c31af7Sopenharmony_ci structure. 5707e5c31af7Sopenharmony_ci * pname:groupCount is the number of elements in the pname:pGroups array. 5708e5c31af7Sopenharmony_ci * pname:pGroups is a pointer to an array of 5709e5c31af7Sopenharmony_ci slink:VkGraphicsShaderGroupCreateInfoNV structures specifying which 5710e5c31af7Sopenharmony_ci state of the original slink:VkGraphicsPipelineCreateInfo each shader 5711e5c31af7Sopenharmony_ci group overrides. 5712e5c31af7Sopenharmony_ci * pname:pipelineCount is the number of elements in the pname:pPipelines 5713e5c31af7Sopenharmony_ci array. 5714e5c31af7Sopenharmony_ci * pname:pPipelines is a pointer to an array of graphics sname:VkPipeline 5715e5c31af7Sopenharmony_ci structures which are referenced within the created pipeline, including 5716e5c31af7Sopenharmony_ci all their shader groups. 5717e5c31af7Sopenharmony_ci 5718e5c31af7Sopenharmony_ciWhen referencing shader groups by index, groups defined in the referenced 5719e5c31af7Sopenharmony_cipipelines are treated as if they were defined as additional entries in 5720e5c31af7Sopenharmony_cipname:pGroups. 5721e5c31af7Sopenharmony_ciThey are appended in the order they appear in the pname:pPipelines array and 5722e5c31af7Sopenharmony_ciin the pname:pGroups array when those pipelines were defined. 5723e5c31af7Sopenharmony_ci 5724e5c31af7Sopenharmony_ciThe application must: maintain the lifetime of all such referenced pipelines 5725e5c31af7Sopenharmony_cibased on the pipelines that make use of them. 5726e5c31af7Sopenharmony_ci 5727e5c31af7Sopenharmony_ci.Valid Usage 5728e5c31af7Sopenharmony_ci**** 5729e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-groupCount-02879]] 5730e5c31af7Sopenharmony_ci pname:groupCount must: be at least `1` and as maximum 5731e5c31af7Sopenharmony_ci sname:VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV::pname:maxGraphicsShaderGroupCount 5732e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-groupCount-02880]] 5733e5c31af7Sopenharmony_ci The sum of pname:groupCount including those groups added from referenced 5734e5c31af7Sopenharmony_ci pname:pPipelines must: also be as maximum 5735e5c31af7Sopenharmony_ci sname:VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV::pname:maxGraphicsShaderGroupCount 5736e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pGroups-02881]] 5737e5c31af7Sopenharmony_ci The state of the first element of pname:pGroups must: match its 5738e5c31af7Sopenharmony_ci equivalent within the parent's slink:VkGraphicsPipelineCreateInfo 5739e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pGroups-02882]] 5740e5c31af7Sopenharmony_ci Each element of pname:pGroups must: in combination with the rest of the 5741e5c31af7Sopenharmony_ci pipeline state yield a valid state configuration 5742e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pGroups-02884]] 5743e5c31af7Sopenharmony_ci All elements of pname:pGroups must: use the same shader stage 5744e5c31af7Sopenharmony_ci combinations 5745e5c31af7Sopenharmony_ciifdef::VK_NV_mesh_shader,VK_EXT_mesh_shader[] 5746e5c31af7Sopenharmony_ci unless any mesh shader stage is used, then either combination of task 5747e5c31af7Sopenharmony_ci and mesh or just mesh shader is valid 5748e5c31af7Sopenharmony_ciendif::VK_NV_mesh_shader,VK_EXT_mesh_shader[] 5749e5c31af7Sopenharmony_ciifdef::VK_NV_mesh_shader,VK_EXT_mesh_shader[] 5750e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pGroups-02885]] 5751e5c31af7Sopenharmony_ci Mesh and regular primitive shading stages cannot be mixed across 5752e5c31af7Sopenharmony_ci pname:pGroups 5753e5c31af7Sopenharmony_ciendif::VK_NV_mesh_shader,VK_EXT_mesh_shader[] 5754e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pPipelines-02886]] 5755e5c31af7Sopenharmony_ci Each element of pname:pPipelines must: have been created with identical 5756e5c31af7Sopenharmony_ci state to the pipeline currently created except the state that can be 5757e5c31af7Sopenharmony_ci overridden by slink:VkGraphicsShaderGroupCreateInfoNV 5758e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-deviceGeneratedCommands-02887]] 5759e5c31af7Sopenharmony_ci The <<features-deviceGeneratedCommands, pname:deviceGeneratedCommands>> 5760e5c31af7Sopenharmony_ci feature must: be enabled 5761e5c31af7Sopenharmony_ci**** 5762e5c31af7Sopenharmony_ci 5763e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkGraphicsPipelineShaderGroupsCreateInfoNV.adoc[] 5764e5c31af7Sopenharmony_ci-- 5765e5c31af7Sopenharmony_ci 5766e5c31af7Sopenharmony_ci[open,refpage='VkGraphicsShaderGroupCreateInfoNV',desc='Structure specifying override parameters for each shader group',type='structs'] 5767e5c31af7Sopenharmony_ci-- 5768e5c31af7Sopenharmony_ciThe sname:VkGraphicsShaderGroupCreateInfoNV structure provides the state 5769e5c31af7Sopenharmony_cioverrides for each shader group. 5770e5c31af7Sopenharmony_ciEach shader group behaves like a pipeline that was created from its state as 5771e5c31af7Sopenharmony_ciwell as the remaining parent's state. 5772e5c31af7Sopenharmony_ciIt is defined as: 5773e5c31af7Sopenharmony_ci 5774e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkGraphicsShaderGroupCreateInfoNV.adoc[] 5775e5c31af7Sopenharmony_ci 5776e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 5777e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or a pointer to a structure extending this 5778e5c31af7Sopenharmony_ci structure. 5779e5c31af7Sopenharmony_ci * pname:stageCount is the number of entries in the pname:pStages array. 5780e5c31af7Sopenharmony_ci * pname:pStages is a pointer to an array 5781e5c31af7Sopenharmony_ci slink:VkPipelineShaderStageCreateInfo structures specifying the set of 5782e5c31af7Sopenharmony_ci the shader stages to be included in this shader group. 5783e5c31af7Sopenharmony_ci * pname:pVertexInputState is a pointer to a 5784e5c31af7Sopenharmony_ci slink:VkPipelineVertexInputStateCreateInfo structure. 5785e5c31af7Sopenharmony_ci * pname:pTessellationState is a pointer to a 5786e5c31af7Sopenharmony_ci slink:VkPipelineTessellationStateCreateInfo structure, and is ignored if 5787e5c31af7Sopenharmony_ci the shader group does not include a tessellation control shader stage 5788e5c31af7Sopenharmony_ci and tessellation evaluation shader stage. 5789e5c31af7Sopenharmony_ci 5790e5c31af7Sopenharmony_ci.Valid Usage 5791e5c31af7Sopenharmony_ci**** 5792e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsShaderGroupCreateInfoNV-stageCount-02888]] 5793e5c31af7Sopenharmony_ci For pname:stageCount, the same restrictions as in 5794e5c31af7Sopenharmony_ci slink:VkGraphicsPipelineCreateInfo::pname:stageCount apply 5795e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsShaderGroupCreateInfoNV-pStages-02889]] 5796e5c31af7Sopenharmony_ci For pname:pStages, the same restrictions as in 5797e5c31af7Sopenharmony_ci slink:VkGraphicsPipelineCreateInfo::pname:pStages apply 5798e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsShaderGroupCreateInfoNV-pVertexInputState-02890]] 5799e5c31af7Sopenharmony_ci For pname:pVertexInputState, the same restrictions as in 5800e5c31af7Sopenharmony_ci slink:VkGraphicsPipelineCreateInfo::pname:pVertexInputState apply 5801e5c31af7Sopenharmony_ci * [[VUID-VkGraphicsShaderGroupCreateInfoNV-pTessellationState-02891]] 5802e5c31af7Sopenharmony_ci For pname:pTessellationState, the same restrictions as in 5803e5c31af7Sopenharmony_ci slink:VkGraphicsPipelineCreateInfo::pname:pTessellationState apply 5804e5c31af7Sopenharmony_ci**** 5805e5c31af7Sopenharmony_ci 5806e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkGraphicsShaderGroupCreateInfoNV.adoc[] 5807e5c31af7Sopenharmony_ci-- 5808e5c31af7Sopenharmony_ciendif::VK_NV_device_generated_commands[] 5809e5c31af7Sopenharmony_ci 5810e5c31af7Sopenharmony_ci 5811e5c31af7Sopenharmony_ciifdef::VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline[] 5812e5c31af7Sopenharmony_ci[[pipelines-ray-tracing]] 5813e5c31af7Sopenharmony_ci== Ray Tracing Pipelines 5814e5c31af7Sopenharmony_ci 5815e5c31af7Sopenharmony_ciRay tracing pipelines consist of multiple shader stages, fixed-function 5816e5c31af7Sopenharmony_citraversal stages, and a pipeline layout. 5817e5c31af7Sopenharmony_ci 5818e5c31af7Sopenharmony_ci[open,refpage='VK_SHADER_UNUSED_KHR',desc='Sentinel for an unused shader index',type='consts',alias='VK_SHADER_UNUSED_NV'] 5819e5c31af7Sopenharmony_ci-- 5820e5c31af7Sopenharmony_ciename:VK_SHADER_UNUSED_KHR is a special shader index used to indicate that a 5821e5c31af7Sopenharmony_ciray generation, miss, or callable shader member is not used. 5822e5c31af7Sopenharmony_ci 5823e5c31af7Sopenharmony_ciinclude::{generated}/api/enums/VK_SHADER_UNUSED_KHR.adoc[] 5824e5c31af7Sopenharmony_ci 5825e5c31af7Sopenharmony_ciifdef::VK_NV_ray_tracing[] 5826e5c31af7Sopenharmony_cior the equivalent 5827e5c31af7Sopenharmony_ci 5828e5c31af7Sopenharmony_ciinclude::{generated}/api/enums/VK_SHADER_UNUSED_NV.adoc[] 5829e5c31af7Sopenharmony_ciendif::VK_NV_ray_tracing[] 5830e5c31af7Sopenharmony_ci-- 5831e5c31af7Sopenharmony_ci 5832e5c31af7Sopenharmony_ciifdef::VK_NV_ray_tracing[] 5833e5c31af7Sopenharmony_ci[open,refpage='vkCreateRayTracingPipelinesNV',desc='Creates a new ray tracing pipeline object',type='protos'] 5834e5c31af7Sopenharmony_ci-- 5835e5c31af7Sopenharmony_ci:refpage: vkCreateRayTracingPipelinesNV 5836e5c31af7Sopenharmony_ci 5837e5c31af7Sopenharmony_ciTo create ray tracing pipelines, call: 5838e5c31af7Sopenharmony_ci 5839e5c31af7Sopenharmony_ciinclude::{generated}/api/protos/vkCreateRayTracingPipelinesNV.adoc[] 5840e5c31af7Sopenharmony_ci 5841e5c31af7Sopenharmony_ci * pname:device is the logical device that creates the ray tracing 5842e5c31af7Sopenharmony_ci pipelines. 5843e5c31af7Sopenharmony_ciifndef::VKSC_VERSION_1_0[] 5844e5c31af7Sopenharmony_ci * pname:pipelineCache is either dlink:VK_NULL_HANDLE, indicating that 5845e5c31af7Sopenharmony_ci pipeline caching is disabled, or the handle of a valid 5846e5c31af7Sopenharmony_ci <<pipelines-cache,pipeline cache>> object, in which case use of that 5847e5c31af7Sopenharmony_ci cache is enabled for the duration of the command. 5848e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 5849e5c31af7Sopenharmony_ciifdef::VKSC_VERSION_1_0[] 5850e5c31af7Sopenharmony_ci * pname:pipelineCache is the handle of a valid <<pipelines-cache,pipeline 5851e5c31af7Sopenharmony_ci cache>> object. 5852e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 5853e5c31af7Sopenharmony_ci * pname:createInfoCount is the length of the pname:pCreateInfos and 5854e5c31af7Sopenharmony_ci pname:pPipelines arrays. 5855e5c31af7Sopenharmony_ci * pname:pCreateInfos is a pointer to an array of 5856e5c31af7Sopenharmony_ci slink:VkRayTracingPipelineCreateInfoNV structures. 5857e5c31af7Sopenharmony_ci * pname:pAllocator controls host memory allocation as described in the 5858e5c31af7Sopenharmony_ci <<memory-allocation, Memory Allocation>> chapter. 5859e5c31af7Sopenharmony_ci * pname:pPipelines is a pointer to an array in which the resulting ray 5860e5c31af7Sopenharmony_ci tracing pipeline objects are returned. 5861e5c31af7Sopenharmony_ci 5862e5c31af7Sopenharmony_ciPipelines are created and returned as described for <<pipelines-multiple, 5863e5c31af7Sopenharmony_ciMultiple Pipeline Creation>>. 5864e5c31af7Sopenharmony_ci 5865e5c31af7Sopenharmony_ciifdef::VKSC_VERSION_1_0[] 5866e5c31af7Sopenharmony_ciIf a pipeline creation fails due to: 5867e5c31af7Sopenharmony_ci 5868e5c31af7Sopenharmony_ci * The identified pipeline not being present in pname:pipelineCache 5869e5c31af7Sopenharmony_ci * The pname:pNext chain not including a slink:VkPipelineOfflineCreateInfo 5870e5c31af7Sopenharmony_ci structure 5871e5c31af7Sopenharmony_ci 5872e5c31af7Sopenharmony_cithe operation will continue as specified in <<pipelines-multiple, Multiple 5873e5c31af7Sopenharmony_ciPipeline Creation>> and the command will return 5874e5c31af7Sopenharmony_ciename:VK_ERROR_NO_PIPELINE_MATCH. 5875e5c31af7Sopenharmony_ciifdef::hidden[] 5876e5c31af7Sopenharmony_ci// tag::scdeviation[] 5877e5c31af7Sopenharmony_ciifdef::VK_NV_ray_tracing[] 5878e5c31af7Sopenharmony_ci * flink:vkCreateRayTracingPipelinesNV returns 5879e5c31af7Sopenharmony_ci ename:VK_ERROR_NO_PIPELINE_MATCH if the 5880e5c31af7Sopenharmony_ci slink:VkRayTracingPipelineCreateInfoNV::pname:pNext chain does not 5881e5c31af7Sopenharmony_ci include a valid slink:VkPipelineOfflineCreateInfo structure <<SCID-1>>. 5882e5c31af7Sopenharmony_ciendif::VK_NV_ray_tracing[] 5883e5c31af7Sopenharmony_ci// end::scdeviation[] 5884e5c31af7Sopenharmony_ciendif::hidden[] 5885e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 5886e5c31af7Sopenharmony_ci 5887e5c31af7Sopenharmony_ci.Valid Usage 5888e5c31af7Sopenharmony_ci**** 5889e5c31af7Sopenharmony_ciinclude::{chapters}/commonvalidity/create_ray_tracing_pipelines_common.adoc[] 5890e5c31af7Sopenharmony_ci**** 5891e5c31af7Sopenharmony_ciifdef::VKSC_VERSION_1_0[] 5892e5c31af7Sopenharmony_ciifdef::hidden[] 5893e5c31af7Sopenharmony_ci// tag::scdeviation[] 5894e5c31af7Sopenharmony_ciifdef::VK_NV_ray_tracing[] 5895e5c31af7Sopenharmony_ci * flink:vkCreateRayTracingPipelinesNV::pname:pipelineCache must: not be 5896e5c31af7Sopenharmony_ci dlink:VK_NULL_HANDLE <<SCID-1>>, <<SCID-8>>. 5897e5c31af7Sopenharmony_ciendif::VK_NV_ray_tracing[] 5898e5c31af7Sopenharmony_ci// end::scdeviation[] 5899e5c31af7Sopenharmony_ciendif::hidden[] 5900e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 5901e5c31af7Sopenharmony_ci 5902e5c31af7Sopenharmony_ciinclude::{generated}/validity/protos/vkCreateRayTracingPipelinesNV.adoc[] 5903e5c31af7Sopenharmony_ci-- 5904e5c31af7Sopenharmony_ciendif::VK_NV_ray_tracing[] 5905e5c31af7Sopenharmony_ci 5906e5c31af7Sopenharmony_ciifdef::VK_KHR_ray_tracing_pipeline[] 5907e5c31af7Sopenharmony_ci[open,refpage='vkCreateRayTracingPipelinesKHR',desc='Creates a new ray tracing pipeline object',type='protos'] 5908e5c31af7Sopenharmony_ci-- 5909e5c31af7Sopenharmony_ci:refpage: vkCreateRayTracingPipelinesKHR 5910e5c31af7Sopenharmony_ci 5911e5c31af7Sopenharmony_ciTo create ray tracing pipelines, call: 5912e5c31af7Sopenharmony_ci 5913e5c31af7Sopenharmony_ciinclude::{generated}/api/protos/vkCreateRayTracingPipelinesKHR.adoc[] 5914e5c31af7Sopenharmony_ci 5915e5c31af7Sopenharmony_ci * pname:device is the logical device that creates the ray tracing 5916e5c31af7Sopenharmony_ci pipelines. 5917e5c31af7Sopenharmony_ci * pname:deferredOperation is dlink:VK_NULL_HANDLE or the handle of a valid 5918e5c31af7Sopenharmony_ci slink:VkDeferredOperationKHR <<deferred-host-operations-requesting, 5919e5c31af7Sopenharmony_ci request deferral>> object for this command. 5920e5c31af7Sopenharmony_ciifndef::VKSC_VERSION_1_0[] 5921e5c31af7Sopenharmony_ci * pname:pipelineCache is either dlink:VK_NULL_HANDLE, indicating that 5922e5c31af7Sopenharmony_ci pipeline caching is disabled, or the handle of a valid 5923e5c31af7Sopenharmony_ci <<pipelines-cache,pipeline cache>> object, in which case use of that 5924e5c31af7Sopenharmony_ci cache is enabled for the duration of the command. 5925e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 5926e5c31af7Sopenharmony_ciifdef::VKSC_VERSION_1_0[] 5927e5c31af7Sopenharmony_ci * pname:pipelineCache is the handle of a valid <<pipelines-cache,pipeline 5928e5c31af7Sopenharmony_ci cache>> object. 5929e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 5930e5c31af7Sopenharmony_ci * pname:createInfoCount is the length of the pname:pCreateInfos and 5931e5c31af7Sopenharmony_ci pname:pPipelines arrays. 5932e5c31af7Sopenharmony_ci * pname:pCreateInfos is a pointer to an array of 5933e5c31af7Sopenharmony_ci slink:VkRayTracingPipelineCreateInfoKHR structures. 5934e5c31af7Sopenharmony_ci * pname:pAllocator controls host memory allocation as described in the 5935e5c31af7Sopenharmony_ci <<memory-allocation, Memory Allocation>> chapter. 5936e5c31af7Sopenharmony_ci * pname:pPipelines is a pointer to an array in which the resulting ray 5937e5c31af7Sopenharmony_ci tracing pipeline objects are returned. 5938e5c31af7Sopenharmony_ci 5939e5c31af7Sopenharmony_ciThe ename:VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS error is returned if the 5940e5c31af7Sopenharmony_ciimplementation is unable to reuse the shader group handles provided in 5941e5c31af7Sopenharmony_cislink:VkRayTracingShaderGroupCreateInfoKHR::pname:pShaderGroupCaptureReplayHandle 5942e5c31af7Sopenharmony_ciwhen 5943e5c31af7Sopenharmony_cislink:VkPhysicalDeviceRayTracingPipelineFeaturesKHR::pname:rayTracingPipelineShaderGroupHandleCaptureReplay 5944e5c31af7Sopenharmony_ciis enabled. 5945e5c31af7Sopenharmony_ci 5946e5c31af7Sopenharmony_ciPipelines are created and returned as described for <<pipelines-multiple, 5947e5c31af7Sopenharmony_ciMultiple Pipeline Creation>>. 5948e5c31af7Sopenharmony_ci 5949e5c31af7Sopenharmony_ciifdef::VKSC_VERSION_1_0[] 5950e5c31af7Sopenharmony_ciIf a pipeline creation fails due to: 5951e5c31af7Sopenharmony_ci 5952e5c31af7Sopenharmony_ci * The identified pipeline not being present in pname:pipelineCache 5953e5c31af7Sopenharmony_ci * The pname:pNext chain not including a slink:VkPipelineOfflineCreateInfo 5954e5c31af7Sopenharmony_ci structure 5955e5c31af7Sopenharmony_ci 5956e5c31af7Sopenharmony_cithe operation will continue as specified in <<pipelines-multiple, Multiple 5957e5c31af7Sopenharmony_ciPipeline Creation>> and the command will return 5958e5c31af7Sopenharmony_ciename:VK_ERROR_NO_PIPELINE_MATCH. 5959e5c31af7Sopenharmony_ciifdef::hidden[] 5960e5c31af7Sopenharmony_ci// tag::scdeviation[] 5961e5c31af7Sopenharmony_ciifdef::VK_KHR_ray_tracing_pipeline[] 5962e5c31af7Sopenharmony_ci * flink:vkCreateRayTracingPipelinesKHR returns 5963e5c31af7Sopenharmony_ci ename:VK_ERROR_NO_PIPELINE_MATCH if the 5964e5c31af7Sopenharmony_ci slink:VkRayTracingPipelineCreateInfoKHR::pname:pNext chain does not 5965e5c31af7Sopenharmony_ci include a valid slink:VkPipelineOfflineCreateInfo structure <<SCID-1>>. 5966e5c31af7Sopenharmony_ciendif::VK_KHR_ray_tracing_pipeline[] 5967e5c31af7Sopenharmony_ci// end::scdeviation[] 5968e5c31af7Sopenharmony_ciendif::hidden[] 5969e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 5970e5c31af7Sopenharmony_ci 5971e5c31af7Sopenharmony_ci.Valid Usage 5972e5c31af7Sopenharmony_ci**** 5973e5c31af7Sopenharmony_ciinclude::{chapters}/commonvalidity/create_ray_tracing_pipelines_common.adoc[] 5974e5c31af7Sopenharmony_ciinclude::{chapters}/commonvalidity/deferred_operations_common.adoc[] 5975e5c31af7Sopenharmony_ci * [[VUID-vkCreateRayTracingPipelinesKHR-rayTracingPipeline-03586]] 5976e5c31af7Sopenharmony_ci The <<features-rayTracingPipeline, pname:rayTracingPipeline>> feature 5977e5c31af7Sopenharmony_ci must: be enabled 5978e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control[] 5979e5c31af7Sopenharmony_ciifdef::VK_KHR_deferred_host_operations[] 5980e5c31af7Sopenharmony_ci * [[VUID-vkCreateRayTracingPipelinesKHR-deferredOperation-03587]] 5981e5c31af7Sopenharmony_ci If pname:deferredOperation is not dlink:VK_NULL_HANDLE, the pname:flags 5982e5c31af7Sopenharmony_ci member of elements of pname:pCreateInfos must: not include 5983e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT 5984e5c31af7Sopenharmony_ciendif::VK_KHR_deferred_host_operations[] 5985e5c31af7Sopenharmony_ciendif::VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control[] 5986e5c31af7Sopenharmony_ci**** 5987e5c31af7Sopenharmony_ciifdef::VKSC_VERSION_1_0[] 5988e5c31af7Sopenharmony_ciifdef::hidden[] 5989e5c31af7Sopenharmony_ci// tag::scdeviation[] 5990e5c31af7Sopenharmony_ciifdef::VK_KHR_ray_tracing_pipeline[] 5991e5c31af7Sopenharmony_ci * flink:vkCreateRayTracingPipelinesKHR::pname:pipelineCache must: not be 5992e5c31af7Sopenharmony_ci dlink:VK_NULL_HANDLE <<SCID-1>>, <<SCID-8>>. 5993e5c31af7Sopenharmony_ciendif::VK_KHR_ray_tracing_pipeline[] 5994e5c31af7Sopenharmony_ci// end::scdeviation[] 5995e5c31af7Sopenharmony_ciendif::hidden[] 5996e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 5997e5c31af7Sopenharmony_ci 5998e5c31af7Sopenharmony_ciinclude::{generated}/validity/protos/vkCreateRayTracingPipelinesKHR.adoc[] 5999e5c31af7Sopenharmony_ci-- 6000e5c31af7Sopenharmony_ciendif::VK_KHR_ray_tracing_pipeline[] 6001e5c31af7Sopenharmony_ci 6002e5c31af7Sopenharmony_ciifdef::VK_NV_ray_tracing[] 6003e5c31af7Sopenharmony_ci[open,refpage='VkRayTracingPipelineCreateInfoNV',desc='Structure specifying parameters of a newly created ray tracing pipeline',type='structs'] 6004e5c31af7Sopenharmony_ci-- 6005e5c31af7Sopenharmony_ci:refpage: VkRayTracingPipelineCreateInfoNV 6006e5c31af7Sopenharmony_ci 6007e5c31af7Sopenharmony_ciThe sname:VkRayTracingPipelineCreateInfoNV structure is defined as: 6008e5c31af7Sopenharmony_ci 6009e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkRayTracingPipelineCreateInfoNV.adoc[] 6010e5c31af7Sopenharmony_ci 6011e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 6012e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or a pointer to a structure extending this 6013e5c31af7Sopenharmony_ci structure. 6014e5c31af7Sopenharmony_ci * pname:flags is a bitmask of elink:VkPipelineCreateFlagBits specifying 6015e5c31af7Sopenharmony_ci how the pipeline will be generated. 6016e5c31af7Sopenharmony_ci * pname:stageCount is the number of entries in the pname:pStages array. 6017e5c31af7Sopenharmony_ci * pname:pStages is a pointer to an array of 6018e5c31af7Sopenharmony_ci slink:VkPipelineShaderStageCreateInfo structures specifying the set of 6019e5c31af7Sopenharmony_ci the shader stages to be included in the ray tracing pipeline. 6020e5c31af7Sopenharmony_ci * pname:groupCount is the number of entries in the pname:pGroups array. 6021e5c31af7Sopenharmony_ci * pname:pGroups is a pointer to an array of 6022e5c31af7Sopenharmony_ci slink:VkRayTracingShaderGroupCreateInfoNV structures describing the set 6023e5c31af7Sopenharmony_ci of the shader stages to be included in each shader group in the ray 6024e5c31af7Sopenharmony_ci tracing pipeline. 6025e5c31af7Sopenharmony_ci * pname:maxRecursionDepth is the <<ray-tracing-recursion-depth, maximum 6026e5c31af7Sopenharmony_ci recursion depth>> of shaders executed by this pipeline. 6027e5c31af7Sopenharmony_ci * pname:layout is the description of binding locations used by both the 6028e5c31af7Sopenharmony_ci pipeline and descriptor sets used with the pipeline. 6029e5c31af7Sopenharmony_ci * pname:basePipelineHandle is a pipeline to derive from. 6030e5c31af7Sopenharmony_ciifdef::VKSC_VERSION_1_0[] 6031e5c31af7Sopenharmony_ci This is not used in Vulkan SC <<SCID-8>>. 6032e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 6033e5c31af7Sopenharmony_ci * pname:basePipelineIndex is an index into the pname:pCreateInfos 6034e5c31af7Sopenharmony_ci parameter to use as a pipeline to derive from. 6035e5c31af7Sopenharmony_ciifdef::VKSC_VERSION_1_0[] 6036e5c31af7Sopenharmony_ci This is not used in Vulkan SC <<SCID-8>>. 6037e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 6038e5c31af7Sopenharmony_ci 6039e5c31af7Sopenharmony_ciThe parameters pname:basePipelineHandle and pname:basePipelineIndex are 6040e5c31af7Sopenharmony_cidescribed in more detail in <<pipelines-pipeline-derivatives,Pipeline 6041e5c31af7Sopenharmony_ciDerivatives>>. 6042e5c31af7Sopenharmony_ci 6043e5c31af7Sopenharmony_ciifdef::VK_KHR_maintenance5[] 6044e5c31af7Sopenharmony_ciIf a slink:VkPipelineCreateFlags2CreateInfoKHR structure is present in the 6045e5c31af7Sopenharmony_cipname:pNext chain, slink:VkPipelineCreateFlags2CreateInfoKHR::pname:flags 6046e5c31af7Sopenharmony_cifrom that structure is used instead of pname:flags from this structure. 6047e5c31af7Sopenharmony_ciendif::VK_KHR_maintenance5[] 6048e5c31af7Sopenharmony_ci 6049e5c31af7Sopenharmony_ci.Valid Usage 6050e5c31af7Sopenharmony_ci**** 6051e5c31af7Sopenharmony_ci:pipelineType: ray tracing 6052e5c31af7Sopenharmony_ciinclude::{chapters}/commonvalidity/pipeline_create_info_common.adoc[] 6053e5c31af7Sopenharmony_ciinclude::{chapters}/commonvalidity/ray_tracing_pipeline_create_info_common.adoc[] 6054e5c31af7Sopenharmony_ci * [[VUID-VkRayTracingPipelineCreateInfoNV-stage-06232]] 6055e5c31af7Sopenharmony_ci The pname:stage member of at least one element of pname:pStages must: be 6056e5c31af7Sopenharmony_ci ename:VK_SHADER_STAGE_RAYGEN_BIT_KHR 6057e5c31af7Sopenharmony_ciifdef::VK_KHR_pipeline_library[] 6058e5c31af7Sopenharmony_ci * [[VUID-VkRayTracingPipelineCreateInfoNV-flags-03456]] 6059e5c31af7Sopenharmony_ci pname:flags must: not include ename:VK_PIPELINE_CREATE_LIBRARY_BIT_KHR 6060e5c31af7Sopenharmony_ciendif::VK_KHR_pipeline_library[] 6061e5c31af7Sopenharmony_ci * [[VUID-VkRayTracingPipelineCreateInfoNV-maxRecursionDepth-03457]] 6062e5c31af7Sopenharmony_ci pname:maxRecursionDepth must: be less than or equal to 6063e5c31af7Sopenharmony_ci slink:VkPhysicalDeviceRayTracingPropertiesNV::pname:maxRecursionDepth 6064e5c31af7Sopenharmony_ciifdef::VK_KHR_ray_tracing_pipeline[] 6065e5c31af7Sopenharmony_ci * [[VUID-VkRayTracingPipelineCreateInfoNV-flags-03458]] 6066e5c31af7Sopenharmony_ci pname:flags must: not include 6067e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR 6068e5c31af7Sopenharmony_ci * [[VUID-VkRayTracingPipelineCreateInfoNV-flags-03459]] 6069e5c31af7Sopenharmony_ci pname:flags must: not include 6070e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR 6071e5c31af7Sopenharmony_ci * [[VUID-VkRayTracingPipelineCreateInfoNV-flags-03460]] 6072e5c31af7Sopenharmony_ci pname:flags must: not include 6073e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR 6074e5c31af7Sopenharmony_ci * [[VUID-VkRayTracingPipelineCreateInfoNV-flags-03461]] 6075e5c31af7Sopenharmony_ci pname:flags must: not include 6076e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR 6077e5c31af7Sopenharmony_ci * [[VUID-VkRayTracingPipelineCreateInfoNV-flags-03462]] 6078e5c31af7Sopenharmony_ci pname:flags must: not include 6079e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR 6080e5c31af7Sopenharmony_ci * [[VUID-VkRayTracingPipelineCreateInfoNV-flags-03463]] 6081e5c31af7Sopenharmony_ci pname:flags must: not include 6082e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR 6083e5c31af7Sopenharmony_ci * [[VUID-VkRayTracingPipelineCreateInfoNV-flags-03588]] 6084e5c31af7Sopenharmony_ci pname:flags must: not include 6085e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR 6086e5c31af7Sopenharmony_ciendif::VK_KHR_ray_tracing_pipeline[] 6087e5c31af7Sopenharmony_ciifdef::VK_NV_ray_tracing_motion_blur[] 6088e5c31af7Sopenharmony_ci * [[VUID-VkRayTracingPipelineCreateInfoNV-flags-04948]] 6089e5c31af7Sopenharmony_ci pname:flags must: not include 6090e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV 6091e5c31af7Sopenharmony_ciendif::VK_NV_ray_tracing_motion_blur[] 6092e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control[] 6093e5c31af7Sopenharmony_ci * [[VUID-VkRayTracingPipelineCreateInfoNV-flags-02957]] 6094e5c31af7Sopenharmony_ci pname:flags must: not include both 6095e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV and 6096e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT at the 6097e5c31af7Sopenharmony_ci same time 6098e5c31af7Sopenharmony_ciendif::VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control[] 6099e5c31af7Sopenharmony_ciifdef::VK_EXT_pipeline_creation_feedback,VK_VERSION_1_3[] 6100e5c31af7Sopenharmony_ci * [[VUID-VkRayTracingPipelineCreateInfoNV-pipelineStageCreationFeedbackCount-06651]] 6101e5c31af7Sopenharmony_ci If 6102e5c31af7Sopenharmony_ci slink:VkPipelineCreationFeedbackCreateInfo::pname:pipelineStageCreationFeedbackCount 6103e5c31af7Sopenharmony_ci is not `0`, it must: be equal to pname:stageCount 6104e5c31af7Sopenharmony_ciendif::VK_EXT_pipeline_creation_feedback,VK_VERSION_1_3[] 6105e5c31af7Sopenharmony_ci * [[VUID-VkRayTracingPipelineCreateInfoNV-stage-06898]] 6106e5c31af7Sopenharmony_ci The pname:stage value in all pname:pStages elements must: be one of 6107e5c31af7Sopenharmony_ci ename:VK_SHADER_STAGE_RAYGEN_BIT_KHR, 6108e5c31af7Sopenharmony_ci ename:VK_SHADER_STAGE_ANY_HIT_BIT_KHR, 6109e5c31af7Sopenharmony_ci ename:VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR, 6110e5c31af7Sopenharmony_ci ename:VK_SHADER_STAGE_MISS_BIT_KHR, 6111e5c31af7Sopenharmony_ci ename:VK_SHADER_STAGE_INTERSECTION_BIT_KHR, or 6112e5c31af7Sopenharmony_ci ename:VK_SHADER_STAGE_CALLABLE_BIT_KHR 6113e5c31af7Sopenharmony_ciifdef::VK_EXT_opacity_micromap[] 6114e5c31af7Sopenharmony_ci * [[VUID-VkRayTracingPipelineCreateInfoNV-flags-07402]] 6115e5c31af7Sopenharmony_ci pname:flags must: not include 6116e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT 6117e5c31af7Sopenharmony_ciendif::VK_EXT_opacity_micromap[] 6118e5c31af7Sopenharmony_ciifdef::VK_NV_displacement_micromap[] 6119e5c31af7Sopenharmony_ci * [[VUID-VkRayTracingPipelineCreateInfoNV-flags-07998]] 6120e5c31af7Sopenharmony_ci pname:flags must: not include 6121e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV 6122e5c31af7Sopenharmony_ciendif::VK_NV_displacement_micromap[] 6123e5c31af7Sopenharmony_ci**** 6124e5c31af7Sopenharmony_ciifdef::VKSC_VERSION_1_0[] 6125e5c31af7Sopenharmony_ciifdef::hidden[] 6126e5c31af7Sopenharmony_ci// tag::scdeviation[] 6127e5c31af7Sopenharmony_ciifdef::VK_NV_ray_tracing[] 6128e5c31af7Sopenharmony_ci * slink:VkRayTracingPipelineCreateInfoNV::pname:basePipelineHandle must: 6129e5c31af7Sopenharmony_ci be dlink:VK_NULL_HANDLE <<SCID-8>>. 6130e5c31af7Sopenharmony_ci * slink:VkRayTracingPipelineCreateInfoNV::pname:basePipelineIndex must: be 6131e5c31af7Sopenharmony_ci zero <<SCID-8>>. 6132e5c31af7Sopenharmony_ciendif::VK_NV_ray_tracing[] 6133e5c31af7Sopenharmony_ci// end::scdeviation[] 6134e5c31af7Sopenharmony_ciendif::hidden[] 6135e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 6136e5c31af7Sopenharmony_ci 6137e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkRayTracingPipelineCreateInfoNV.adoc[] 6138e5c31af7Sopenharmony_ci-- 6139e5c31af7Sopenharmony_ciendif::VK_NV_ray_tracing[] 6140e5c31af7Sopenharmony_ci 6141e5c31af7Sopenharmony_ciifdef::VK_KHR_ray_tracing_pipeline[] 6142e5c31af7Sopenharmony_ci[open,refpage='VkRayTracingPipelineCreateInfoKHR',desc='Structure specifying parameters of a newly created ray tracing pipeline',type='structs'] 6143e5c31af7Sopenharmony_ci-- 6144e5c31af7Sopenharmony_ci:refpage: VkRayTracingPipelineCreateInfoKHR 6145e5c31af7Sopenharmony_ci 6146e5c31af7Sopenharmony_ciThe sname:VkRayTracingPipelineCreateInfoKHR structure is defined as: 6147e5c31af7Sopenharmony_ci 6148e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkRayTracingPipelineCreateInfoKHR.adoc[] 6149e5c31af7Sopenharmony_ci 6150e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 6151e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or a pointer to a structure extending this 6152e5c31af7Sopenharmony_ci structure. 6153e5c31af7Sopenharmony_ci * pname:flags is a bitmask of elink:VkPipelineCreateFlagBits specifying 6154e5c31af7Sopenharmony_ci how the pipeline will be generated. 6155e5c31af7Sopenharmony_ci * pname:stageCount is the number of entries in the pname:pStages array. 6156e5c31af7Sopenharmony_ci * pname:pStages is a pointer to an array of pname:stageCount 6157e5c31af7Sopenharmony_ci slink:VkPipelineShaderStageCreateInfo structures describing the set of 6158e5c31af7Sopenharmony_ci the shader stages to be included in the ray tracing pipeline. 6159e5c31af7Sopenharmony_ci * pname:groupCount is the number of entries in the pname:pGroups array. 6160e5c31af7Sopenharmony_ci * pname:pGroups is a pointer to an array of pname:groupCount 6161e5c31af7Sopenharmony_ci slink:VkRayTracingShaderGroupCreateInfoKHR structures describing the set 6162e5c31af7Sopenharmony_ci of the shader stages to be included in each shader group in the ray 6163e5c31af7Sopenharmony_ci tracing pipeline. 6164e5c31af7Sopenharmony_ci * pname:maxPipelineRayRecursionDepth is the <<ray-tracing-recursion-depth, 6165e5c31af7Sopenharmony_ci maximum recursion depth>> of shaders executed by this pipeline. 6166e5c31af7Sopenharmony_ci * pname:pLibraryInfo is a pointer to a 6167e5c31af7Sopenharmony_ci slink:VkPipelineLibraryCreateInfoKHR structure defining pipeline 6168e5c31af7Sopenharmony_ci libraries to include. 6169e5c31af7Sopenharmony_ci * pname:pLibraryInterface is a pointer to a 6170e5c31af7Sopenharmony_ci slink:VkRayTracingPipelineInterfaceCreateInfoKHR structure defining 6171e5c31af7Sopenharmony_ci additional information when using pipeline libraries. 6172e5c31af7Sopenharmony_ci * pname:pDynamicState is a pointer to a 6173e5c31af7Sopenharmony_ci slink:VkPipelineDynamicStateCreateInfo structure, and is used to 6174e5c31af7Sopenharmony_ci indicate which properties of the pipeline state object are dynamic and 6175e5c31af7Sopenharmony_ci can: be changed independently of the pipeline state. 6176e5c31af7Sopenharmony_ci This can: be `NULL`, which means no state in the pipeline is considered 6177e5c31af7Sopenharmony_ci dynamic. 6178e5c31af7Sopenharmony_ci * pname:layout is the description of binding locations used by both the 6179e5c31af7Sopenharmony_ci pipeline and descriptor sets used with the pipeline. 6180e5c31af7Sopenharmony_ci * pname:basePipelineHandle is a pipeline to derive from. 6181e5c31af7Sopenharmony_ciifdef::VKSC_VERSION_1_0[] 6182e5c31af7Sopenharmony_ci This is not used in Vulkan SC <<SCID-8>>. 6183e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 6184e5c31af7Sopenharmony_ci * pname:basePipelineIndex is an index into the pname:pCreateInfos 6185e5c31af7Sopenharmony_ci parameter to use as a pipeline to derive from. 6186e5c31af7Sopenharmony_ciifdef::VKSC_VERSION_1_0[] 6187e5c31af7Sopenharmony_ci This is not used in Vulkan SC <<SCID-8>>. 6188e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 6189e5c31af7Sopenharmony_ci 6190e5c31af7Sopenharmony_ciThe parameters pname:basePipelineHandle and pname:basePipelineIndex are 6191e5c31af7Sopenharmony_cidescribed in more detail in <<pipelines-pipeline-derivatives,Pipeline 6192e5c31af7Sopenharmony_ciDerivatives>>. 6193e5c31af7Sopenharmony_ci 6194e5c31af7Sopenharmony_ciifdef::VK_KHR_pipeline_library[] 6195e5c31af7Sopenharmony_ciWhen ename:VK_PIPELINE_CREATE_LIBRARY_BIT_KHR is specified, this pipeline 6196e5c31af7Sopenharmony_cidefines a _pipeline library_ which cannot: be bound as a ray tracing 6197e5c31af7Sopenharmony_cipipeline directly. 6198e5c31af7Sopenharmony_ciInstead, pipeline libraries define common shaders and shader groups which 6199e5c31af7Sopenharmony_cican: be included in future pipeline creation. 6200e5c31af7Sopenharmony_ci 6201e5c31af7Sopenharmony_ciIf pipeline libraries are included in pname:pLibraryInfo, shaders defined in 6202e5c31af7Sopenharmony_cithose libraries are treated as if they were defined as additional entries in 6203e5c31af7Sopenharmony_cipname:pStages, appended in the order they appear in the pname:pLibraries 6204e5c31af7Sopenharmony_ciarray and in the pname:pStages array when those libraries were defined. 6205e5c31af7Sopenharmony_ci 6206e5c31af7Sopenharmony_ciWhen referencing shader groups in order to obtain a shader group handle, 6207e5c31af7Sopenharmony_cigroups defined in those libraries are treated as if they were defined as 6208e5c31af7Sopenharmony_ciadditional entries in pname:pGroups, appended in the order they appear in 6209e5c31af7Sopenharmony_cithe pname:pLibraries array and in the pname:pGroups array when those 6210e5c31af7Sopenharmony_cilibraries were defined. 6211e5c31af7Sopenharmony_ciThe shaders these groups reference are set when the pipeline library is 6212e5c31af7Sopenharmony_cicreated, referencing those specified in the pipeline library, not in the 6213e5c31af7Sopenharmony_cipipeline that includes it. 6214e5c31af7Sopenharmony_ciendif::VK_KHR_pipeline_library[] 6215e5c31af7Sopenharmony_ci 6216e5c31af7Sopenharmony_ciThe default stack size for a pipeline if 6217e5c31af7Sopenharmony_ciename:VK_DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR is not provided 6218e5c31af7Sopenharmony_ciis computed as described in <<ray-tracing-pipeline-stack, Ray Tracing 6219e5c31af7Sopenharmony_ciPipeline Stack>>. 6220e5c31af7Sopenharmony_ci 6221e5c31af7Sopenharmony_ciifdef::VK_KHR_maintenance5[] 6222e5c31af7Sopenharmony_ciIf a slink:VkPipelineCreateFlags2CreateInfoKHR structure is present in the 6223e5c31af7Sopenharmony_cipname:pNext chain, slink:VkPipelineCreateFlags2CreateInfoKHR::pname:flags 6224e5c31af7Sopenharmony_cifrom that structure is used instead of pname:flags from this structure. 6225e5c31af7Sopenharmony_ciendif::VK_KHR_maintenance5[] 6226e5c31af7Sopenharmony_ci 6227e5c31af7Sopenharmony_ci.Valid Usage 6228e5c31af7Sopenharmony_ci**** 6229e5c31af7Sopenharmony_ci:pipelineType: ray tracing 6230e5c31af7Sopenharmony_ciinclude::{chapters}/commonvalidity/pipeline_create_info_common.adoc[] 6231e5c31af7Sopenharmony_ciinclude::{chapters}/commonvalidity/ray_tracing_pipeline_create_info_common.adoc[] 6232e5c31af7Sopenharmony_ci * [[VUID-VkRayTracingPipelineCreateInfoKHR-stage-03425]] 6233e5c31af7Sopenharmony_ci If pname:flags does not include 6234e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_LIBRARY_BIT_KHR, the pname:stage member of at 6235e5c31af7Sopenharmony_ci least one element of pname:pStages, including those implicitly added by 6236e5c31af7Sopenharmony_ci pname:pLibraryInfo, must: be ename:VK_SHADER_STAGE_RAYGEN_BIT_KHR 6237e5c31af7Sopenharmony_ci * [[VUID-VkRayTracingPipelineCreateInfoKHR-maxPipelineRayRecursionDepth-03589]] 6238e5c31af7Sopenharmony_ci pname:maxPipelineRayRecursionDepth must: be less than or equal to 6239e5c31af7Sopenharmony_ci slink:VkPhysicalDeviceRayTracingPipelinePropertiesKHR::pname:maxRayRecursionDepth 6240e5c31af7Sopenharmony_ciifdef::VK_KHR_pipeline_library[] 6241e5c31af7Sopenharmony_ci * [[VUID-VkRayTracingPipelineCreateInfoKHR-flags-03465]] 6242e5c31af7Sopenharmony_ci If pname:flags includes ename:VK_PIPELINE_CREATE_LIBRARY_BIT_KHR, 6243e5c31af7Sopenharmony_ci pname:pLibraryInterface must: not be `NULL` 6244e5c31af7Sopenharmony_ci * [[VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-03590]] 6245e5c31af7Sopenharmony_ci If pname:pLibraryInfo is not `NULL` and its pname:libraryCount member is 6246e5c31af7Sopenharmony_ci greater than `0`, pname:pLibraryInterface must: not be `NULL` 6247e5c31af7Sopenharmony_ci * [[VUID-VkRayTracingPipelineCreateInfoKHR-pLibraries-03591]] 6248e5c31af7Sopenharmony_ci Each element of pname:pLibraryInfo->pLibraries must: have been created 6249e5c31af7Sopenharmony_ci with the value of pname:maxPipelineRayRecursionDepth equal to that in 6250e5c31af7Sopenharmony_ci this pipeline 6251e5c31af7Sopenharmony_ci * [[VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-03592]] 6252e5c31af7Sopenharmony_ci If pname:pLibraryInfo is not `NULL`, each element of its 6253e5c31af7Sopenharmony_ci pname:pLibraries member must: have been created with a pname:layout that 6254e5c31af7Sopenharmony_ci is compatible with the pname:layout in this pipeline 6255e5c31af7Sopenharmony_ci * [[VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-03593]] 6256e5c31af7Sopenharmony_ci If pname:pLibraryInfo is not `NULL`, each element of its 6257e5c31af7Sopenharmony_ci pname:pLibraries member must: have been created with values of the 6258e5c31af7Sopenharmony_ci pname:maxPipelineRayPayloadSize and pname:maxPipelineRayHitAttributeSize 6259e5c31af7Sopenharmony_ci members of pname:pLibraryInterface equal to those in this pipeline 6260e5c31af7Sopenharmony_ci * [[VUID-VkRayTracingPipelineCreateInfoKHR-flags-03594]] 6261e5c31af7Sopenharmony_ci If pname:flags includes 6262e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR, 6263e5c31af7Sopenharmony_ci each element of pname:pLibraryInfo->pLibraries must: have been created 6264e5c31af7Sopenharmony_ci with the 6265e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR 6266e5c31af7Sopenharmony_ci bit set 6267e5c31af7Sopenharmony_ci * [[VUID-VkRayTracingPipelineCreateInfoKHR-flags-04718]] 6268e5c31af7Sopenharmony_ci If pname:flags includes 6269e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR, each element of 6270e5c31af7Sopenharmony_ci pname:pLibraryInfo->pLibraries must: have been created with the 6271e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR bit set 6272e5c31af7Sopenharmony_ci * [[VUID-VkRayTracingPipelineCreateInfoKHR-flags-04719]] 6273e5c31af7Sopenharmony_ci If pname:flags includes 6274e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR, each 6275e5c31af7Sopenharmony_ci element of pname:pLibraryInfo->pLibraries must: have been created with 6276e5c31af7Sopenharmony_ci the ename:VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR bit set 6277e5c31af7Sopenharmony_ci * [[VUID-VkRayTracingPipelineCreateInfoKHR-flags-04720]] 6278e5c31af7Sopenharmony_ci If pname:flags includes 6279e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR, 6280e5c31af7Sopenharmony_ci each element of pname:pLibraryInfo->pLibraries must: have been created 6281e5c31af7Sopenharmony_ci with the 6282e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR bit 6283e5c31af7Sopenharmony_ci set 6284e5c31af7Sopenharmony_ci * [[VUID-VkRayTracingPipelineCreateInfoKHR-flags-04721]] 6285e5c31af7Sopenharmony_ci If pname:flags includes 6286e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR, 6287e5c31af7Sopenharmony_ci each element of pname:pLibraryInfo->pLibraries must: have been created 6288e5c31af7Sopenharmony_ci with the 6289e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR 6290e5c31af7Sopenharmony_ci bit set 6291e5c31af7Sopenharmony_ci * [[VUID-VkRayTracingPipelineCreateInfoKHR-flags-04722]] 6292e5c31af7Sopenharmony_ci If pname:flags includes 6293e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR, 6294e5c31af7Sopenharmony_ci each element of pname:pLibraryInfo->pLibraries must: have been created 6295e5c31af7Sopenharmony_ci with the 6296e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR 6297e5c31af7Sopenharmony_ci bit set 6298e5c31af7Sopenharmony_ci * [[VUID-VkRayTracingPipelineCreateInfoKHR-flags-04723]] 6299e5c31af7Sopenharmony_ci If pname:flags includes 6300e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR, each 6301e5c31af7Sopenharmony_ci element of pname:pLibraryInfo->pLibraries must: have been created with 6302e5c31af7Sopenharmony_ci the ename:VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR 6303e5c31af7Sopenharmony_ci bit set 6304e5c31af7Sopenharmony_ciendif::VK_KHR_pipeline_library[] 6305e5c31af7Sopenharmony_ci * [[VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-03595]] 6306e5c31af7Sopenharmony_ci If the `apiext:VK_KHR_pipeline_library` extension is not enabled, 6307e5c31af7Sopenharmony_ci pname:pLibraryInfo and pname:pLibraryInterface must: be `NULL` 6308e5c31af7Sopenharmony_ci * [[VUID-VkRayTracingPipelineCreateInfoKHR-flags-03470]] 6309e5c31af7Sopenharmony_ci If pname:flags includes 6310e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR, 6311e5c31af7Sopenharmony_ci for any element of pname:pGroups with a pname:type of 6312e5c31af7Sopenharmony_ci ename:VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR or 6313e5c31af7Sopenharmony_ci ename:VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR, the 6314e5c31af7Sopenharmony_ci pname:anyHitShader of that element must: not be 6315e5c31af7Sopenharmony_ci ename:VK_SHADER_UNUSED_KHR 6316e5c31af7Sopenharmony_ci * [[VUID-VkRayTracingPipelineCreateInfoKHR-flags-03471]] 6317e5c31af7Sopenharmony_ci If pname:flags includes 6318e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR, 6319e5c31af7Sopenharmony_ci for any element of pname:pGroups with a pname:type of 6320e5c31af7Sopenharmony_ci ename:VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR or 6321e5c31af7Sopenharmony_ci ename:VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR, the 6322e5c31af7Sopenharmony_ci pname:closestHitShader of that element must: not be 6323e5c31af7Sopenharmony_ci ename:VK_SHADER_UNUSED_KHR 6324e5c31af7Sopenharmony_ci * [[VUID-VkRayTracingPipelineCreateInfoKHR-rayTraversalPrimitiveCulling-03596]] 6325e5c31af7Sopenharmony_ci If the <<features-rayTraversalPrimitiveCulling, 6326e5c31af7Sopenharmony_ci pname:rayTraversalPrimitiveCulling>> feature is not enabled, pname:flags 6327e5c31af7Sopenharmony_ci must: not include 6328e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR 6329e5c31af7Sopenharmony_ci * [[VUID-VkRayTracingPipelineCreateInfoKHR-rayTraversalPrimitiveCulling-03597]] 6330e5c31af7Sopenharmony_ci If the <<features-rayTraversalPrimitiveCulling, 6331e5c31af7Sopenharmony_ci pname:rayTraversalPrimitiveCulling>> feature is not enabled, pname:flags 6332e5c31af7Sopenharmony_ci must: not include 6333e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR 6334e5c31af7Sopenharmony_ci * [[VUID-VkRayTracingPipelineCreateInfoKHR-flags-06546]] 6335e5c31af7Sopenharmony_ci pname:flags must: not include both 6336e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR and 6337e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR 6338e5c31af7Sopenharmony_ci * [[VUID-VkRayTracingPipelineCreateInfoKHR-flags-03598]] 6339e5c31af7Sopenharmony_ci If pname:flags includes 6340e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR, 6341e5c31af7Sopenharmony_ci <<features-rayTracingPipelineShaderGroupHandleCaptureReplay, 6342e5c31af7Sopenharmony_ci pname:rayTracingPipelineShaderGroupHandleCaptureReplay>> must: be 6343e5c31af7Sopenharmony_ci enabled 6344e5c31af7Sopenharmony_ci * [[VUID-VkRayTracingPipelineCreateInfoKHR-rayTracingPipelineShaderGroupHandleCaptureReplay-03599]] 6345e5c31af7Sopenharmony_ci If 6346e5c31af7Sopenharmony_ci slink:VkPhysicalDeviceRayTracingPipelineFeaturesKHR::pname:rayTracingPipelineShaderGroupHandleCaptureReplay 6347e5c31af7Sopenharmony_ci is ename:VK_TRUE and the pname:pShaderGroupCaptureReplayHandle member of 6348e5c31af7Sopenharmony_ci any element of pname:pGroups is not `NULL`, pname:flags must: include 6349e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR 6350e5c31af7Sopenharmony_ci * [[VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-07999]] 6351e5c31af7Sopenharmony_ci If pname:pLibraryInfo is `NULL` or its pname:libraryCount is `0`, 6352e5c31af7Sopenharmony_ci pname:stageCount must: not be `0` 6353e5c31af7Sopenharmony_ci * [[VUID-VkRayTracingPipelineCreateInfoKHR-flags-08700]] 6354e5c31af7Sopenharmony_ci If pname:flags does not include ename:VK_PIPELINE_CREATE_LIBRARY_BIT_KHR 6355e5c31af7Sopenharmony_ci and either pname:pLibraryInfo is `NULL` or its pname:libraryCount is 6356e5c31af7Sopenharmony_ci `0`, pname:groupCount must: not be `0` 6357e5c31af7Sopenharmony_ci * [[VUID-VkRayTracingPipelineCreateInfoKHR-pDynamicStates-03602]] 6358e5c31af7Sopenharmony_ci Any element of the pname:pDynamicStates member of pname:pDynamicState 6359e5c31af7Sopenharmony_ci must: be ename:VK_DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR 6360e5c31af7Sopenharmony_ciifdef::VK_EXT_pipeline_creation_feedback,VK_VERSION_1_3[] 6361e5c31af7Sopenharmony_ci * [[VUID-VkRayTracingPipelineCreateInfoKHR-pipelineStageCreationFeedbackCount-06652]] 6362e5c31af7Sopenharmony_ci If 6363e5c31af7Sopenharmony_ci slink:VkPipelineCreationFeedbackCreateInfo::pname:pipelineStageCreationFeedbackCount 6364e5c31af7Sopenharmony_ci is not `0`, it must: be equal to pname:stageCount 6365e5c31af7Sopenharmony_ciendif::VK_EXT_pipeline_creation_feedback,VK_VERSION_1_3[] 6366e5c31af7Sopenharmony_ci * [[VUID-VkRayTracingPipelineCreateInfoKHR-stage-06899]] 6367e5c31af7Sopenharmony_ci The pname:stage value in all pname:pStages elements must: be one of 6368e5c31af7Sopenharmony_ci ename:VK_SHADER_STAGE_RAYGEN_BIT_KHR, 6369e5c31af7Sopenharmony_ci ename:VK_SHADER_STAGE_ANY_HIT_BIT_KHR, 6370e5c31af7Sopenharmony_ci ename:VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR, 6371e5c31af7Sopenharmony_ci ename:VK_SHADER_STAGE_MISS_BIT_KHR, 6372e5c31af7Sopenharmony_ci ename:VK_SHADER_STAGE_INTERSECTION_BIT_KHR, or 6373e5c31af7Sopenharmony_ci ename:VK_SHADER_STAGE_CALLABLE_BIT_KHR 6374e5c31af7Sopenharmony_ciifdef::VK_EXT_opacity_micromap[] 6375e5c31af7Sopenharmony_ci * [[VUID-VkRayTracingPipelineCreateInfoKHR-flags-07403]] 6376e5c31af7Sopenharmony_ci If pname:flags includes 6377e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT, each 6378e5c31af7Sopenharmony_ci element of pname:pLibraryInfo->pLibraries must: have been created with 6379e5c31af7Sopenharmony_ci the ename:VK_PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT bit 6380e5c31af7Sopenharmony_ci set 6381e5c31af7Sopenharmony_ciendif::VK_EXT_opacity_micromap[] 6382e5c31af7Sopenharmony_ciifdef::VK_NV_displacement_micromap[] 6383e5c31af7Sopenharmony_ci * [[VUID-VkRayTracingPipelineCreateInfoKHR-flags-08701]] 6384e5c31af7Sopenharmony_ci If pname:flags includes 6385e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV, each 6386e5c31af7Sopenharmony_ci element of pname:pLibraryInfo->pLibraries must: have been created with 6387e5c31af7Sopenharmony_ci the ename:VK_PIPELINE_CREATE_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV 6388e5c31af7Sopenharmony_ci bit set 6389e5c31af7Sopenharmony_ciendif::VK_NV_displacement_micromap[] 6390e5c31af7Sopenharmony_ci**** 6391e5c31af7Sopenharmony_ciifdef::VKSC_VERSION_1_0[] 6392e5c31af7Sopenharmony_ciifdef::hidden[] 6393e5c31af7Sopenharmony_ci// tag::scdeviation[] 6394e5c31af7Sopenharmony_ciifdef::VK_KHR_ray_tracing_pipeline[] 6395e5c31af7Sopenharmony_ci * slink:VkRayTracingPipelineCreateInfoKHR::pname:flags must: not contain 6396e5c31af7Sopenharmony_ci the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag <<SCID-8>>. 6397e5c31af7Sopenharmony_ci * slink:VkRayTracingPipelineCreateInfoKHR::pname:basePipelineHandle must: 6398e5c31af7Sopenharmony_ci be dlink:VK_NULL_HANDLE <<SCID-8>>. 6399e5c31af7Sopenharmony_ci * slink:VkRayTracingPipelineCreateInfoKHR::pname:basePipelineIndex must: 6400e5c31af7Sopenharmony_ci be zero <<SCID-8>>. 6401e5c31af7Sopenharmony_ciendif::VK_KHR_ray_tracing_pipeline[] 6402e5c31af7Sopenharmony_ci// end::scdeviation[] 6403e5c31af7Sopenharmony_ciendif::hidden[] 6404e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 6405e5c31af7Sopenharmony_ci 6406e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkRayTracingPipelineCreateInfoKHR.adoc[] 6407e5c31af7Sopenharmony_ci-- 6408e5c31af7Sopenharmony_ciendif::VK_KHR_ray_tracing_pipeline[] 6409e5c31af7Sopenharmony_ci 6410e5c31af7Sopenharmony_ciifdef::VK_NV_ray_tracing[] 6411e5c31af7Sopenharmony_ci[open,refpage='VkRayTracingShaderGroupCreateInfoNV',desc='Structure specifying shaders in a shader group',type='structs'] 6412e5c31af7Sopenharmony_ci-- 6413e5c31af7Sopenharmony_ci:refpage: VkRayTracingShaderGroupCreateInfoNV 6414e5c31af7Sopenharmony_ci 6415e5c31af7Sopenharmony_ciThe sname:VkRayTracingShaderGroupCreateInfoNV structure is defined as: 6416e5c31af7Sopenharmony_ci 6417e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkRayTracingShaderGroupCreateInfoNV.adoc[] 6418e5c31af7Sopenharmony_ci 6419e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 6420e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or a pointer to a structure extending this 6421e5c31af7Sopenharmony_ci structure. 6422e5c31af7Sopenharmony_ci * pname:type is the type of hit group specified in this structure. 6423e5c31af7Sopenharmony_ci * pname:generalShader is the index of the ray generation, miss, or 6424e5c31af7Sopenharmony_ci callable shader from 6425e5c31af7Sopenharmony_ci slink:VkRayTracingPipelineCreateInfoNV::pname:pStages in the group if 6426e5c31af7Sopenharmony_ci the shader group has pname:type of 6427e5c31af7Sopenharmony_ci ename:VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV, and 6428e5c31af7Sopenharmony_ci ename:VK_SHADER_UNUSED_NV otherwise. 6429e5c31af7Sopenharmony_ci * pname:closestHitShader is the optional index of the closest hit shader 6430e5c31af7Sopenharmony_ci from slink:VkRayTracingPipelineCreateInfoNV::pname:pStages in the group 6431e5c31af7Sopenharmony_ci if the shader group has pname:type of 6432e5c31af7Sopenharmony_ci ename:VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV or 6433e5c31af7Sopenharmony_ci ename:VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV, and 6434e5c31af7Sopenharmony_ci ename:VK_SHADER_UNUSED_NV otherwise. 6435e5c31af7Sopenharmony_ci * pname:anyHitShader is the optional index of the any-hit shader from 6436e5c31af7Sopenharmony_ci slink:VkRayTracingPipelineCreateInfoNV::pname:pStages in the group if 6437e5c31af7Sopenharmony_ci the shader group has pname:type of 6438e5c31af7Sopenharmony_ci ename:VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV or 6439e5c31af7Sopenharmony_ci ename:VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV, and 6440e5c31af7Sopenharmony_ci ename:VK_SHADER_UNUSED_NV otherwise. 6441e5c31af7Sopenharmony_ci * pname:intersectionShader is the index of the intersection shader from 6442e5c31af7Sopenharmony_ci slink:VkRayTracingPipelineCreateInfoNV::pname:pStages in the group if 6443e5c31af7Sopenharmony_ci the shader group has pname:type of 6444e5c31af7Sopenharmony_ci ename:VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV, and 6445e5c31af7Sopenharmony_ci ename:VK_SHADER_UNUSED_NV otherwise. 6446e5c31af7Sopenharmony_ci 6447e5c31af7Sopenharmony_ci.Valid Usage 6448e5c31af7Sopenharmony_ci**** 6449e5c31af7Sopenharmony_ci * [[VUID-VkRayTracingShaderGroupCreateInfoNV-type-02413]] 6450e5c31af7Sopenharmony_ci If pname:type is ename:VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV then 6451e5c31af7Sopenharmony_ci pname:generalShader must: be a valid index into 6452e5c31af7Sopenharmony_ci slink:VkRayTracingPipelineCreateInfoNV::pname:pStages referring to a 6453e5c31af7Sopenharmony_ci shader of ename:VK_SHADER_STAGE_RAYGEN_BIT_NV, 6454e5c31af7Sopenharmony_ci ename:VK_SHADER_STAGE_MISS_BIT_NV, or 6455e5c31af7Sopenharmony_ci ename:VK_SHADER_STAGE_CALLABLE_BIT_NV 6456e5c31af7Sopenharmony_ci * [[VUID-VkRayTracingShaderGroupCreateInfoNV-type-02414]] 6457e5c31af7Sopenharmony_ci If pname:type is ename:VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV then 6458e5c31af7Sopenharmony_ci pname:closestHitShader, pname:anyHitShader, and pname:intersectionShader 6459e5c31af7Sopenharmony_ci must: be ename:VK_SHADER_UNUSED_NV 6460e5c31af7Sopenharmony_ci * [[VUID-VkRayTracingShaderGroupCreateInfoNV-type-02415]] 6461e5c31af7Sopenharmony_ci If pname:type is 6462e5c31af7Sopenharmony_ci ename:VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV then 6463e5c31af7Sopenharmony_ci pname:intersectionShader must: be a valid index into 6464e5c31af7Sopenharmony_ci slink:VkRayTracingPipelineCreateInfoNV::pname:pStages referring to a 6465e5c31af7Sopenharmony_ci shader of ename:VK_SHADER_STAGE_INTERSECTION_BIT_NV 6466e5c31af7Sopenharmony_ci * [[VUID-VkRayTracingShaderGroupCreateInfoNV-type-02416]] 6467e5c31af7Sopenharmony_ci If pname:type is 6468e5c31af7Sopenharmony_ci ename:VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV then 6469e5c31af7Sopenharmony_ci pname:intersectionShader must: be ename:VK_SHADER_UNUSED_NV 6470e5c31af7Sopenharmony_ci * [[VUID-VkRayTracingShaderGroupCreateInfoNV-closestHitShader-02417]] 6471e5c31af7Sopenharmony_ci pname:closestHitShader must: be either ename:VK_SHADER_UNUSED_NV or a 6472e5c31af7Sopenharmony_ci valid index into slink:VkRayTracingPipelineCreateInfoNV::pname:pStages 6473e5c31af7Sopenharmony_ci referring to a shader of ename:VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV 6474e5c31af7Sopenharmony_ci * [[VUID-VkRayTracingShaderGroupCreateInfoNV-anyHitShader-02418]] 6475e5c31af7Sopenharmony_ci pname:anyHitShader must: be either ename:VK_SHADER_UNUSED_NV or a valid 6476e5c31af7Sopenharmony_ci index into slink:VkRayTracingPipelineCreateInfoNV::pname:pStages 6477e5c31af7Sopenharmony_ci referring to a shader of ename:VK_SHADER_STAGE_ANY_HIT_BIT_NV 6478e5c31af7Sopenharmony_ci**** 6479e5c31af7Sopenharmony_ci 6480e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkRayTracingShaderGroupCreateInfoNV.adoc[] 6481e5c31af7Sopenharmony_ci-- 6482e5c31af7Sopenharmony_ci 6483e5c31af7Sopenharmony_ciendif::VK_NV_ray_tracing[] 6484e5c31af7Sopenharmony_ci 6485e5c31af7Sopenharmony_ciifdef::VK_KHR_ray_tracing_pipeline[] 6486e5c31af7Sopenharmony_ci[open,refpage='VkRayTracingShaderGroupCreateInfoKHR',desc='Structure specifying shaders in a shader group',type='structs'] 6487e5c31af7Sopenharmony_ci-- 6488e5c31af7Sopenharmony_ci:refpage: VkRayTracingShaderGroupCreateInfoKHR 6489e5c31af7Sopenharmony_ci 6490e5c31af7Sopenharmony_ciThe sname:VkRayTracingShaderGroupCreateInfoKHR structure is defined as: 6491e5c31af7Sopenharmony_ci 6492e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkRayTracingShaderGroupCreateInfoKHR.adoc[] 6493e5c31af7Sopenharmony_ci 6494e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 6495e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or a pointer to a structure extending this 6496e5c31af7Sopenharmony_ci structure. 6497e5c31af7Sopenharmony_ci * pname:type is the type of hit group specified in this structure. 6498e5c31af7Sopenharmony_ci * pname:generalShader is the index of the ray generation, miss, or 6499e5c31af7Sopenharmony_ci callable shader from 6500e5c31af7Sopenharmony_ci slink:VkRayTracingPipelineCreateInfoKHR::pname:pStages in the group if 6501e5c31af7Sopenharmony_ci the shader group has pname:type of 6502e5c31af7Sopenharmony_ci ename:VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR, and 6503e5c31af7Sopenharmony_ci ename:VK_SHADER_UNUSED_KHR otherwise. 6504e5c31af7Sopenharmony_ci * pname:closestHitShader is the optional index of the closest hit shader 6505e5c31af7Sopenharmony_ci from slink:VkRayTracingPipelineCreateInfoKHR::pname:pStages in the group 6506e5c31af7Sopenharmony_ci if the shader group has pname:type of 6507e5c31af7Sopenharmony_ci ename:VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR or 6508e5c31af7Sopenharmony_ci ename:VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR, and 6509e5c31af7Sopenharmony_ci ename:VK_SHADER_UNUSED_KHR otherwise. 6510e5c31af7Sopenharmony_ci * pname:anyHitShader is the optional index of the any-hit shader from 6511e5c31af7Sopenharmony_ci slink:VkRayTracingPipelineCreateInfoKHR::pname:pStages in the group if 6512e5c31af7Sopenharmony_ci the shader group has pname:type of 6513e5c31af7Sopenharmony_ci ename:VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR or 6514e5c31af7Sopenharmony_ci ename:VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR, and 6515e5c31af7Sopenharmony_ci ename:VK_SHADER_UNUSED_KHR otherwise. 6516e5c31af7Sopenharmony_ci * pname:intersectionShader is the index of the intersection shader from 6517e5c31af7Sopenharmony_ci slink:VkRayTracingPipelineCreateInfoKHR::pname:pStages in the group if 6518e5c31af7Sopenharmony_ci the shader group has pname:type of 6519e5c31af7Sopenharmony_ci ename:VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR, and 6520e5c31af7Sopenharmony_ci ename:VK_SHADER_UNUSED_KHR otherwise. 6521e5c31af7Sopenharmony_ci * pname:pShaderGroupCaptureReplayHandle is `NULL` or a pointer to replay 6522e5c31af7Sopenharmony_ci information for this shader group queried from 6523e5c31af7Sopenharmony_ci flink:vkGetRayTracingCaptureReplayShaderGroupHandlesKHR, as described in 6524e5c31af7Sopenharmony_ci <<ray-tracing-capture-replay, Ray Tracing Capture Replay>>. 6525e5c31af7Sopenharmony_ci Ignored if 6526e5c31af7Sopenharmony_ci slink:VkPhysicalDeviceRayTracingPipelineFeaturesKHR::pname:rayTracingPipelineShaderGroupHandleCaptureReplay 6527e5c31af7Sopenharmony_ci is ename:VK_FALSE. 6528e5c31af7Sopenharmony_ci 6529e5c31af7Sopenharmony_ciifdef::VK_EXT_pipeline_library_group_handles[] 6530e5c31af7Sopenharmony_ciIf the pipeline is created with ename:VK_PIPELINE_CREATE_LIBRARY_BIT_KHR and 6531e5c31af7Sopenharmony_cithe <<features-pipelineLibraryGroupHandles,pipelineLibraryGroupHandles>> 6532e5c31af7Sopenharmony_cifeature is enabled, pname:pShaderGroupCaptureReplayHandle is inherited by 6533e5c31af7Sopenharmony_ciall pipelines which link against this pipeline and remains bitwise identical 6534e5c31af7Sopenharmony_cifor any pipeline which references this pipeline library. 6535e5c31af7Sopenharmony_ciendif::VK_EXT_pipeline_library_group_handles[] 6536e5c31af7Sopenharmony_ci 6537e5c31af7Sopenharmony_ci.Valid Usage 6538e5c31af7Sopenharmony_ci**** 6539e5c31af7Sopenharmony_ci * [[VUID-VkRayTracingShaderGroupCreateInfoKHR-type-03474]] 6540e5c31af7Sopenharmony_ci If pname:type is ename:VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR then 6541e5c31af7Sopenharmony_ci pname:generalShader must: be a valid index into 6542e5c31af7Sopenharmony_ci slink:VkRayTracingPipelineCreateInfoKHR::pname:pStages referring to a 6543e5c31af7Sopenharmony_ci shader of ename:VK_SHADER_STAGE_RAYGEN_BIT_KHR, 6544e5c31af7Sopenharmony_ci ename:VK_SHADER_STAGE_MISS_BIT_KHR, or 6545e5c31af7Sopenharmony_ci ename:VK_SHADER_STAGE_CALLABLE_BIT_KHR 6546e5c31af7Sopenharmony_ci * [[VUID-VkRayTracingShaderGroupCreateInfoKHR-type-03475]] 6547e5c31af7Sopenharmony_ci If pname:type is ename:VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR then 6548e5c31af7Sopenharmony_ci pname:closestHitShader, pname:anyHitShader, and pname:intersectionShader 6549e5c31af7Sopenharmony_ci must: be ename:VK_SHADER_UNUSED_KHR 6550e5c31af7Sopenharmony_ci * [[VUID-VkRayTracingShaderGroupCreateInfoKHR-type-03476]] 6551e5c31af7Sopenharmony_ci If pname:type is 6552e5c31af7Sopenharmony_ci ename:VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR then 6553e5c31af7Sopenharmony_ci pname:intersectionShader must: be a valid index into 6554e5c31af7Sopenharmony_ci slink:VkRayTracingPipelineCreateInfoKHR::pname:pStages referring to a 6555e5c31af7Sopenharmony_ci shader of ename:VK_SHADER_STAGE_INTERSECTION_BIT_KHR 6556e5c31af7Sopenharmony_ci * [[VUID-VkRayTracingShaderGroupCreateInfoKHR-type-03477]] 6557e5c31af7Sopenharmony_ci If pname:type is 6558e5c31af7Sopenharmony_ci ename:VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR then 6559e5c31af7Sopenharmony_ci pname:intersectionShader must: be ename:VK_SHADER_UNUSED_KHR 6560e5c31af7Sopenharmony_ci * [[VUID-VkRayTracingShaderGroupCreateInfoKHR-closestHitShader-03478]] 6561e5c31af7Sopenharmony_ci pname:closestHitShader must: be either ename:VK_SHADER_UNUSED_KHR or a 6562e5c31af7Sopenharmony_ci valid index into slink:VkRayTracingPipelineCreateInfoKHR::pname:pStages 6563e5c31af7Sopenharmony_ci referring to a shader of ename:VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR 6564e5c31af7Sopenharmony_ci * [[VUID-VkRayTracingShaderGroupCreateInfoKHR-anyHitShader-03479]] 6565e5c31af7Sopenharmony_ci pname:anyHitShader must: be either ename:VK_SHADER_UNUSED_KHR or a valid 6566e5c31af7Sopenharmony_ci index into slink:VkRayTracingPipelineCreateInfoKHR::pname:pStages 6567e5c31af7Sopenharmony_ci referring to a shader of ename:VK_SHADER_STAGE_ANY_HIT_BIT_KHR 6568e5c31af7Sopenharmony_ci * [[VUID-VkRayTracingShaderGroupCreateInfoKHR-rayTracingPipelineShaderGroupHandleCaptureReplayMixed-03603]] 6569e5c31af7Sopenharmony_ci If 6570e5c31af7Sopenharmony_ci slink:VkPhysicalDeviceRayTracingPipelineFeaturesKHR::pname:rayTracingPipelineShaderGroupHandleCaptureReplayMixed 6571e5c31af7Sopenharmony_ci is ename:VK_FALSE then pname:pShaderGroupCaptureReplayHandle must: not 6572e5c31af7Sopenharmony_ci be provided if it has not been provided on a previous call to ray 6573e5c31af7Sopenharmony_ci tracing pipeline creation 6574e5c31af7Sopenharmony_ci * [[VUID-VkRayTracingShaderGroupCreateInfoKHR-rayTracingPipelineShaderGroupHandleCaptureReplayMixed-03604]] 6575e5c31af7Sopenharmony_ci If 6576e5c31af7Sopenharmony_ci slink:VkPhysicalDeviceRayTracingPipelineFeaturesKHR::pname:rayTracingPipelineShaderGroupHandleCaptureReplayMixed 6577e5c31af7Sopenharmony_ci is ename:VK_FALSE then the caller must: guarantee that no ray tracing 6578e5c31af7Sopenharmony_ci pipeline creation commands with pname:pShaderGroupCaptureReplayHandle 6579e5c31af7Sopenharmony_ci provided execute simultaneously with ray tracing pipeline creation 6580e5c31af7Sopenharmony_ci commands without pname:pShaderGroupCaptureReplayHandle provided 6581e5c31af7Sopenharmony_ci**** 6582e5c31af7Sopenharmony_ci 6583e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkRayTracingShaderGroupCreateInfoKHR.adoc[] 6584e5c31af7Sopenharmony_ci-- 6585e5c31af7Sopenharmony_ciendif::VK_KHR_ray_tracing_pipeline[] 6586e5c31af7Sopenharmony_ci 6587e5c31af7Sopenharmony_ci[open,refpage='VkRayTracingShaderGroupTypeKHR',desc='Shader group types',type='enums',alias='VkRayTracingShaderGroupTypeNV'] 6588e5c31af7Sopenharmony_ci-- 6589e5c31af7Sopenharmony_ci:refpage: VkRayTracingShaderGroupTypeKHR 6590e5c31af7Sopenharmony_ci 6591e5c31af7Sopenharmony_ciPossible values of pname:type in sname:VkRayTracingShaderGroupCreateInfoKHR 6592e5c31af7Sopenharmony_ciare: 6593e5c31af7Sopenharmony_ci 6594e5c31af7Sopenharmony_ciinclude::{generated}/api/enums/VkRayTracingShaderGroupTypeKHR.adoc[] 6595e5c31af7Sopenharmony_ci 6596e5c31af7Sopenharmony_ciifdef::VK_NV_ray_tracing[] 6597e5c31af7Sopenharmony_cior the equivalent 6598e5c31af7Sopenharmony_ci 6599e5c31af7Sopenharmony_ciinclude::{generated}/api/enums/VkRayTracingShaderGroupTypeNV.adoc[] 6600e5c31af7Sopenharmony_ciendif::VK_NV_ray_tracing[] 6601e5c31af7Sopenharmony_ci 6602e5c31af7Sopenharmony_ci * ename:VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR indicates a shader 6603e5c31af7Sopenharmony_ci group with a single ename:VK_SHADER_STAGE_RAYGEN_BIT_KHR, 6604e5c31af7Sopenharmony_ci ename:VK_SHADER_STAGE_MISS_BIT_KHR, or 6605e5c31af7Sopenharmony_ci ename:VK_SHADER_STAGE_CALLABLE_BIT_KHR shader in it. 6606e5c31af7Sopenharmony_ci * ename:VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR specifies 6607e5c31af7Sopenharmony_ci a shader group that only hits triangles and must: not contain an 6608e5c31af7Sopenharmony_ci intersection shader, only closest hit and any-hit shaders. 6609e5c31af7Sopenharmony_ci * ename:VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR 6610e5c31af7Sopenharmony_ci specifies a shader group that only intersects with custom geometry and 6611e5c31af7Sopenharmony_ci must: contain an intersection shader and may: contain closest hit and 6612e5c31af7Sopenharmony_ci any-hit shaders. 6613e5c31af7Sopenharmony_ci 6614e5c31af7Sopenharmony_ci[NOTE] 6615e5c31af7Sopenharmony_ci.Note 6616e5c31af7Sopenharmony_ci==== 6617e5c31af7Sopenharmony_ciFor current group types, the hit group type could be inferred from the 6618e5c31af7Sopenharmony_cipresence or absence of the intersection shader, but we provide the type 6619e5c31af7Sopenharmony_ciexplicitly for future hit groups that do not have that property. 6620e5c31af7Sopenharmony_ci==== 6621e5c31af7Sopenharmony_ci-- 6622e5c31af7Sopenharmony_ci 6623e5c31af7Sopenharmony_ciifdef::VK_KHR_ray_tracing_pipeline[] 6624e5c31af7Sopenharmony_ci[open,refpage='VkRayTracingPipelineInterfaceCreateInfoKHR',desc='Structure specifying additional interface information when using libraries',type='structs'] 6625e5c31af7Sopenharmony_ci-- 6626e5c31af7Sopenharmony_ci:refpage: VkRayTracingPipelineInterfaceCreateInfoKHR 6627e5c31af7Sopenharmony_ci 6628e5c31af7Sopenharmony_ciThe sname:VkRayTracingPipelineInterfaceCreateInfoKHR structure is defined 6629e5c31af7Sopenharmony_cias: 6630e5c31af7Sopenharmony_ci 6631e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkRayTracingPipelineInterfaceCreateInfoKHR.adoc[] 6632e5c31af7Sopenharmony_ci 6633e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 6634e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or a pointer to a structure extending this 6635e5c31af7Sopenharmony_ci structure. 6636e5c31af7Sopenharmony_ci * pname:maxPipelineRayPayloadSize is the maximum payload size in bytes 6637e5c31af7Sopenharmony_ci used by any shader in the pipeline. 6638e5c31af7Sopenharmony_ci * pname:maxPipelineRayHitAttributeSize is the maximum attribute structure 6639e5c31af7Sopenharmony_ci size in bytes used by any shader in the pipeline. 6640e5c31af7Sopenharmony_ci 6641e5c31af7Sopenharmony_cipname:maxPipelineRayPayloadSize is calculated as the maximum number of bytes 6642e5c31af7Sopenharmony_ciused by any block declared in the code:RayPayloadKHR or 6643e5c31af7Sopenharmony_cicode:IncomingRayPayloadKHR storage classes. 6644e5c31af7Sopenharmony_cipname:maxPipelineRayHitAttributeSize is calculated as the maximum number of 6645e5c31af7Sopenharmony_cibytes used by any block declared in the code:HitAttributeKHR storage class. 6646e5c31af7Sopenharmony_ciAs variables in these storage classes do not have explicit offsets, the size 6647e5c31af7Sopenharmony_cishould be calculated as if each variable has a 6648e5c31af7Sopenharmony_ci<<interfaces-alignment-requirements, scalar alignment>> equal to the largest 6649e5c31af7Sopenharmony_ciscalar alignment of any of the block's members. 6650e5c31af7Sopenharmony_ci 6651e5c31af7Sopenharmony_ci[NOTE] 6652e5c31af7Sopenharmony_ci.Note 6653e5c31af7Sopenharmony_ci==== 6654e5c31af7Sopenharmony_ciThere is no explicit upper limit for pname:maxPipelineRayPayloadSize, but in 6655e5c31af7Sopenharmony_cipractice it should be kept as small as possible. 6656e5c31af7Sopenharmony_ciSimilar to invocation local memory, it must be allocated for each shader 6657e5c31af7Sopenharmony_ciinvocation and for devices which support many simultaneous invocations, this 6658e5c31af7Sopenharmony_cistorage can rapidly be exhausted, resulting in failure. 6659e5c31af7Sopenharmony_ci==== 6660e5c31af7Sopenharmony_ci 6661e5c31af7Sopenharmony_ci.Valid Usage 6662e5c31af7Sopenharmony_ci**** 6663e5c31af7Sopenharmony_ci * [[VUID-VkRayTracingPipelineInterfaceCreateInfoKHR-maxPipelineRayHitAttributeSize-03605]] 6664e5c31af7Sopenharmony_ci pname:maxPipelineRayHitAttributeSize must: be less than or equal to 6665e5c31af7Sopenharmony_ci slink:VkPhysicalDeviceRayTracingPipelinePropertiesKHR::pname:maxRayHitAttributeSize 6666e5c31af7Sopenharmony_ci**** 6667e5c31af7Sopenharmony_ci 6668e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkRayTracingPipelineInterfaceCreateInfoKHR.adoc[] 6669e5c31af7Sopenharmony_ci-- 6670e5c31af7Sopenharmony_ciendif::VK_KHR_ray_tracing_pipeline[] 6671e5c31af7Sopenharmony_ci 6672e5c31af7Sopenharmony_ci[open,refpage='vkGetRayTracingShaderGroupHandlesKHR',desc='Query ray tracing pipeline shader group handles',type='protos',alias='vkGetRayTracingShaderGroupHandlesNV'] 6673e5c31af7Sopenharmony_ci-- 6674e5c31af7Sopenharmony_ci:refpage: vkGetRayTracingShaderGroupHandlesKHR 6675e5c31af7Sopenharmony_ci 6676e5c31af7Sopenharmony_ciTo query the opaque handles of shaders in the ray tracing pipeline, call: 6677e5c31af7Sopenharmony_ci 6678e5c31af7Sopenharmony_ciifdef::VK_KHR_ray_tracing_pipeline[] 6679e5c31af7Sopenharmony_ciinclude::{generated}/api/protos/vkGetRayTracingShaderGroupHandlesKHR.adoc[] 6680e5c31af7Sopenharmony_ciendif::VK_KHR_ray_tracing_pipeline[] 6681e5c31af7Sopenharmony_ci 6682e5c31af7Sopenharmony_ciifdef::VK_KHR_ray_tracing_pipeline+VK_NV_ray_tracing[or the equivalent command] 6683e5c31af7Sopenharmony_ci 6684e5c31af7Sopenharmony_ciifdef::VK_NV_ray_tracing[] 6685e5c31af7Sopenharmony_ciinclude::{generated}/api/protos/vkGetRayTracingShaderGroupHandlesNV.adoc[] 6686e5c31af7Sopenharmony_ciendif::VK_NV_ray_tracing[] 6687e5c31af7Sopenharmony_ci 6688e5c31af7Sopenharmony_ci * pname:device is the logical device containing the ray tracing pipeline. 6689e5c31af7Sopenharmony_ci * pname:pipeline is the ray tracing pipeline object containing the 6690e5c31af7Sopenharmony_ci shaders. 6691e5c31af7Sopenharmony_ci * pname:firstGroup is the index of the first group to retrieve a handle 6692e5c31af7Sopenharmony_ci for from the 6693e5c31af7Sopenharmony_ciifdef::VK_KHR_ray_tracing_pipeline[] 6694e5c31af7Sopenharmony_cislink:VkRayTracingPipelineCreateInfoKHR::pname:pGroups 6695e5c31af7Sopenharmony_ciendif::VK_KHR_ray_tracing_pipeline[] 6696e5c31af7Sopenharmony_ciifdef::VK_KHR_ray_tracing_pipeline+VK_NV_ray_tracing[or] 6697e5c31af7Sopenharmony_ciifdef::VK_NV_ray_tracing[] 6698e5c31af7Sopenharmony_cislink:VkRayTracingPipelineCreateInfoNV::pname:pGroups 6699e5c31af7Sopenharmony_ciendif::VK_NV_ray_tracing[] 6700e5c31af7Sopenharmony_ci array. 6701e5c31af7Sopenharmony_ci * pname:groupCount is the number of shader handles to retrieve. 6702e5c31af7Sopenharmony_ci * pname:dataSize is the size in bytes of the buffer pointed to by 6703e5c31af7Sopenharmony_ci pname:pData. 6704e5c31af7Sopenharmony_ci * pname:pData is a pointer to a user-allocated buffer where the results 6705e5c31af7Sopenharmony_ci will be written. 6706e5c31af7Sopenharmony_ci 6707e5c31af7Sopenharmony_ciifdef::VK_EXT_pipeline_library_group_handles[] 6708e5c31af7Sopenharmony_ciIf pname:pipeline was created with ename:VK_PIPELINE_CREATE_LIBRARY_BIT_KHR 6709e5c31af7Sopenharmony_ciand the <<features-pipelineLibraryGroupHandles,pipelineLibraryGroupHandles>> 6710e5c31af7Sopenharmony_cifeature is enabled applications can: query group handles from that pipeline, 6711e5c31af7Sopenharmony_cieven if the pipeline is a library and is never bound to a command buffer. 6712e5c31af7Sopenharmony_ciThese group handles remain bitwise identical for any pname:pipeline which 6713e5c31af7Sopenharmony_cireferences the pipeline library. 6714e5c31af7Sopenharmony_ciGroup indices are assigned as-if the pipeline was created without 6715e5c31af7Sopenharmony_ciename:VK_PIPELINE_CREATE_LIBRARY_BIT_KHR. 6716e5c31af7Sopenharmony_ciendif::VK_EXT_pipeline_library_group_handles[] 6717e5c31af7Sopenharmony_ci 6718e5c31af7Sopenharmony_ci.Valid Usage 6719e5c31af7Sopenharmony_ci**** 6720e5c31af7Sopenharmony_ci * [[VUID-vkGetRayTracingShaderGroupHandlesKHR-pipeline-04619]] 6721e5c31af7Sopenharmony_ci pname:pipeline must: be a ray tracing pipeline 6722e5c31af7Sopenharmony_ci * [[VUID-vkGetRayTracingShaderGroupHandlesKHR-firstGroup-04050]] 6723e5c31af7Sopenharmony_ci pname:firstGroup must: be less than the number of shader groups in 6724e5c31af7Sopenharmony_ci pname:pipeline 6725e5c31af7Sopenharmony_ci * [[VUID-vkGetRayTracingShaderGroupHandlesKHR-firstGroup-02419]] 6726e5c31af7Sopenharmony_ci The sum of pname:firstGroup and pname:groupCount must: be less than or 6727e5c31af7Sopenharmony_ci equal to the number of shader groups in pname:pipeline 6728e5c31af7Sopenharmony_ci * [[VUID-vkGetRayTracingShaderGroupHandlesKHR-dataSize-02420]] 6729e5c31af7Sopenharmony_ci pname:dataSize must: be at least 6730e5c31af7Sopenharmony_ci [eq]#slink:VkPhysicalDeviceRayTracingPipelinePropertiesKHR::pname:shaderGroupHandleSize 6731e5c31af7Sopenharmony_ci {times} pname:groupCount# 6732e5c31af7Sopenharmony_ciifdef::VK_KHR_pipeline_library[] 6733e5c31af7Sopenharmony_ci * [[VUID-vkGetRayTracingShaderGroupHandlesKHR-pipeline-07828]] 6734e5c31af7Sopenharmony_ciifdef::VK_EXT_pipeline_library_group_handles[] 6735e5c31af7Sopenharmony_ci If the 6736e5c31af7Sopenharmony_ci <<features-pipelineLibraryGroupHandles,pipelineLibraryGroupHandles>> 6737e5c31af7Sopenharmony_ci feature is not enabled, 6738e5c31af7Sopenharmony_ciendif::VK_EXT_pipeline_library_group_handles[] 6739e5c31af7Sopenharmony_ci pname:pipeline must: not have been created with 6740e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_LIBRARY_BIT_KHR 6741e5c31af7Sopenharmony_ciendif::VK_KHR_pipeline_library[] 6742e5c31af7Sopenharmony_ci**** 6743e5c31af7Sopenharmony_ci 6744e5c31af7Sopenharmony_ciinclude::{generated}/validity/protos/vkGetRayTracingShaderGroupHandlesKHR.adoc[] 6745e5c31af7Sopenharmony_ci-- 6746e5c31af7Sopenharmony_ci 6747e5c31af7Sopenharmony_ciifdef::VK_KHR_ray_tracing_pipeline[] 6748e5c31af7Sopenharmony_ci[open,refpage='vkGetRayTracingCaptureReplayShaderGroupHandlesKHR',desc='Query opaque capture replay data for pipeline shader group handles',type='protos'] 6749e5c31af7Sopenharmony_ci-- 6750e5c31af7Sopenharmony_ci:refpage: vkGetRayTracingCaptureReplayShaderGroupHandlesKHR 6751e5c31af7Sopenharmony_ci 6752e5c31af7Sopenharmony_ciTo query the opaque capture data of shader groups in a ray tracing pipeline, 6753e5c31af7Sopenharmony_cicall: 6754e5c31af7Sopenharmony_ci 6755e5c31af7Sopenharmony_ciinclude::{generated}/api/protos/vkGetRayTracingCaptureReplayShaderGroupHandlesKHR.adoc[] 6756e5c31af7Sopenharmony_ci 6757e5c31af7Sopenharmony_ci * pname:device is the logical device containing the ray tracing pipeline. 6758e5c31af7Sopenharmony_ci * pname:pipeline is the ray tracing pipeline object containing the 6759e5c31af7Sopenharmony_ci shaders. 6760e5c31af7Sopenharmony_ci * pname:firstGroup is the index of the first group to retrieve a handle 6761e5c31af7Sopenharmony_ci for from the slink:VkRayTracingPipelineCreateInfoKHR::pname:pGroups 6762e5c31af7Sopenharmony_ci array. 6763e5c31af7Sopenharmony_ci * pname:groupCount is the number of shader handles to retrieve. 6764e5c31af7Sopenharmony_ci * pname:dataSize is the size in bytes of the buffer pointed to by 6765e5c31af7Sopenharmony_ci pname:pData. 6766e5c31af7Sopenharmony_ci * pname:pData is a pointer to a user-allocated buffer where the results 6767e5c31af7Sopenharmony_ci will be written. 6768e5c31af7Sopenharmony_ci 6769e5c31af7Sopenharmony_ciOnce queried, this opaque data can: be provided at pipeline creation time 6770e5c31af7Sopenharmony_ci(in a subsequent execution), using 6771e5c31af7Sopenharmony_cislink:VkRayTracingShaderGroupCreateInfoKHR::pname:pShaderGroupCaptureReplayHandle, 6772e5c31af7Sopenharmony_cias described in <<ray-tracing-capture-replay, Ray Tracing Capture Replay>>. 6773e5c31af7Sopenharmony_ci 6774e5c31af7Sopenharmony_ciifdef::VK_EXT_pipeline_library_group_handles[] 6775e5c31af7Sopenharmony_ciIf pname:pipeline was created with ename:VK_PIPELINE_CREATE_LIBRARY_BIT_KHR 6776e5c31af7Sopenharmony_ciand the <<features-pipelineLibraryGroupHandles,pipelineLibraryGroupHandles>> 6777e5c31af7Sopenharmony_cifeature is enabled applications can: query capture replay group handles from 6778e5c31af7Sopenharmony_cithat pipeline. 6779e5c31af7Sopenharmony_ciThe capture replay handle remains bitwise identical for any pname:pipeline 6780e5c31af7Sopenharmony_ciwhich references the pipeline library. 6781e5c31af7Sopenharmony_ciGroup indices are assigned as-if the pipeline was created without 6782e5c31af7Sopenharmony_ciename:VK_PIPELINE_CREATE_LIBRARY_BIT_KHR. 6783e5c31af7Sopenharmony_ciendif::VK_EXT_pipeline_library_group_handles[] 6784e5c31af7Sopenharmony_ci 6785e5c31af7Sopenharmony_ci.Valid Usage 6786e5c31af7Sopenharmony_ci**** 6787e5c31af7Sopenharmony_ci * [[VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-pipeline-04620]] 6788e5c31af7Sopenharmony_ci pname:pipeline must: be a ray tracing pipeline 6789e5c31af7Sopenharmony_ci * [[VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-firstGroup-04051]] 6790e5c31af7Sopenharmony_ci pname:firstGroup must: be less than the number of shader groups in 6791e5c31af7Sopenharmony_ci pname:pipeline 6792e5c31af7Sopenharmony_ci * [[VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-firstGroup-03483]] 6793e5c31af7Sopenharmony_ci The sum of pname:firstGroup and pname:groupCount must: be less than or 6794e5c31af7Sopenharmony_ci equal to the number of shader groups in pname:pipeline 6795e5c31af7Sopenharmony_ci * [[VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-dataSize-03484]] 6796e5c31af7Sopenharmony_ci pname:dataSize must: be at least 6797e5c31af7Sopenharmony_ci [eq]#slink:VkPhysicalDeviceRayTracingPipelinePropertiesKHR::pname:shaderGroupHandleCaptureReplaySize 6798e5c31af7Sopenharmony_ci {times} pname:groupCount# 6799e5c31af7Sopenharmony_ci * [[VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-rayTracingPipelineShaderGroupHandleCaptureReplay-03606]] 6800e5c31af7Sopenharmony_ci sname:VkPhysicalDeviceRayTracingPipelineFeaturesKHR::pname:rayTracingPipelineShaderGroupHandleCaptureReplay 6801e5c31af7Sopenharmony_ci must: be enabled to call this function 6802e5c31af7Sopenharmony_ci * [[VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-pipeline-03607]] 6803e5c31af7Sopenharmony_ci pname:pipeline must: have been created with a pname:flags that included 6804e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR 6805e5c31af7Sopenharmony_ciifdef::VK_KHR_pipeline_library[] 6806e5c31af7Sopenharmony_ci * [[VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-pipeline-07829]] 6807e5c31af7Sopenharmony_ciifdef::VK_EXT_pipeline_library_group_handles[] 6808e5c31af7Sopenharmony_ci If the 6809e5c31af7Sopenharmony_ci <<features-pipelineLibraryGroupHandles,pipelineLibraryGroupHandles>> 6810e5c31af7Sopenharmony_ci feature is not enabled, 6811e5c31af7Sopenharmony_ciendif::VK_EXT_pipeline_library_group_handles[] 6812e5c31af7Sopenharmony_ci pname:pipeline must: not have been created with 6813e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_LIBRARY_BIT_KHR 6814e5c31af7Sopenharmony_ciendif::VK_KHR_pipeline_library[] 6815e5c31af7Sopenharmony_ci**** 6816e5c31af7Sopenharmony_ci 6817e5c31af7Sopenharmony_ciinclude::{generated}/validity/protos/vkGetRayTracingCaptureReplayShaderGroupHandlesKHR.adoc[] 6818e5c31af7Sopenharmony_ci-- 6819e5c31af7Sopenharmony_ciendif::VK_KHR_ray_tracing_pipeline[] 6820e5c31af7Sopenharmony_ci 6821e5c31af7Sopenharmony_ciifdef::VK_NV_ray_tracing[] 6822e5c31af7Sopenharmony_ciRay tracing pipelines can: contain more shaders than a graphics or compute 6823e5c31af7Sopenharmony_cipipeline, so to allow parallel compilation of shaders within a pipeline, an 6824e5c31af7Sopenharmony_ciapplication can: choose to defer compilation until a later point in time. 6825e5c31af7Sopenharmony_ci 6826e5c31af7Sopenharmony_ci[open,refpage='vkCompileDeferredNV',desc='Deferred compilation of shaders',type='protos'] 6827e5c31af7Sopenharmony_ci-- 6828e5c31af7Sopenharmony_ci:refpage: vkCompileDeferredNV 6829e5c31af7Sopenharmony_ci 6830e5c31af7Sopenharmony_ciTo compile a deferred shader in a pipeline call: 6831e5c31af7Sopenharmony_ci 6832e5c31af7Sopenharmony_ciinclude::{generated}/api/protos/vkCompileDeferredNV.adoc[] 6833e5c31af7Sopenharmony_ci 6834e5c31af7Sopenharmony_ci * pname:device is the logical device containing the ray tracing pipeline. 6835e5c31af7Sopenharmony_ci * pname:pipeline is the ray tracing pipeline object containing the 6836e5c31af7Sopenharmony_ci shaders. 6837e5c31af7Sopenharmony_ci * pname:shader is the index of the shader to compile. 6838e5c31af7Sopenharmony_ci 6839e5c31af7Sopenharmony_ci.Valid Usage 6840e5c31af7Sopenharmony_ci**** 6841e5c31af7Sopenharmony_ci * [[VUID-vkCompileDeferredNV-pipeline-04621]] 6842e5c31af7Sopenharmony_ci pname:pipeline must: be a ray tracing pipeline 6843e5c31af7Sopenharmony_ci * [[VUID-vkCompileDeferredNV-pipeline-02237]] 6844e5c31af7Sopenharmony_ci pname:pipeline must: have been created with 6845e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV 6846e5c31af7Sopenharmony_ci * [[VUID-vkCompileDeferredNV-shader-02238]] 6847e5c31af7Sopenharmony_ci pname:shader must: not have been called as a deferred compile before 6848e5c31af7Sopenharmony_ci**** 6849e5c31af7Sopenharmony_ci 6850e5c31af7Sopenharmony_ciinclude::{generated}/validity/protos/vkCompileDeferredNV.adoc[] 6851e5c31af7Sopenharmony_ci-- 6852e5c31af7Sopenharmony_ciendif::VK_NV_ray_tracing[] 6853e5c31af7Sopenharmony_ci 6854e5c31af7Sopenharmony_ciifdef::VK_KHR_ray_tracing_pipeline[] 6855e5c31af7Sopenharmony_ci[open,refpage='vkGetRayTracingShaderGroupStackSizeKHR',desc='Query ray tracing pipeline shader group shader stack size',type='protos'] 6856e5c31af7Sopenharmony_ci-- 6857e5c31af7Sopenharmony_ciTo query the pipeline stack size of shaders in a shader group in the ray 6858e5c31af7Sopenharmony_citracing pipeline, call: 6859e5c31af7Sopenharmony_ci 6860e5c31af7Sopenharmony_ciinclude::{generated}/api/protos/vkGetRayTracingShaderGroupStackSizeKHR.adoc[] 6861e5c31af7Sopenharmony_ci 6862e5c31af7Sopenharmony_ci * pname:device is the logical device containing the ray tracing pipeline. 6863e5c31af7Sopenharmony_ci * pname:pipeline is the ray tracing pipeline object containing the shaders 6864e5c31af7Sopenharmony_ci groups. 6865e5c31af7Sopenharmony_ci * pname:group is the index of the shader group to query. 6866e5c31af7Sopenharmony_ci * pname:groupShader is the type of shader from the group to query. 6867e5c31af7Sopenharmony_ci 6868e5c31af7Sopenharmony_ciThe return value is the ray tracing pipeline stack size in bytes for the 6869e5c31af7Sopenharmony_cispecified shader as called from the specified shader group. 6870e5c31af7Sopenharmony_ci 6871e5c31af7Sopenharmony_ci.Valid Usage 6872e5c31af7Sopenharmony_ci**** 6873e5c31af7Sopenharmony_ci * [[VUID-vkGetRayTracingShaderGroupStackSizeKHR-pipeline-04622]] 6874e5c31af7Sopenharmony_ci pname:pipeline must: be a ray tracing pipeline 6875e5c31af7Sopenharmony_ci * [[VUID-vkGetRayTracingShaderGroupStackSizeKHR-group-03608]] 6876e5c31af7Sopenharmony_ci The value of pname:group must be less than the number of shader groups 6877e5c31af7Sopenharmony_ci in pname:pipeline 6878e5c31af7Sopenharmony_ci * [[VUID-vkGetRayTracingShaderGroupStackSizeKHR-groupShader-03609]] 6879e5c31af7Sopenharmony_ci The shader identified by pname:groupShader in pname:group must: not be 6880e5c31af7Sopenharmony_ci ename:VK_SHADER_UNUSED_KHR 6881e5c31af7Sopenharmony_ci**** 6882e5c31af7Sopenharmony_ci 6883e5c31af7Sopenharmony_ciinclude::{generated}/validity/protos/vkGetRayTracingShaderGroupStackSizeKHR.adoc[] 6884e5c31af7Sopenharmony_ci-- 6885e5c31af7Sopenharmony_ci 6886e5c31af7Sopenharmony_ci[open,refpage='VkShaderGroupShaderKHR',desc='Shader group shaders',type='enums'] 6887e5c31af7Sopenharmony_ci-- 6888e5c31af7Sopenharmony_ciPossible values of pname:groupShader in 6889e5c31af7Sopenharmony_ciflink:vkGetRayTracingShaderGroupStackSizeKHR are: 6890e5c31af7Sopenharmony_ci 6891e5c31af7Sopenharmony_ciinclude::{generated}/api/enums/VkShaderGroupShaderKHR.adoc[] 6892e5c31af7Sopenharmony_ci 6893e5c31af7Sopenharmony_ci * ename:VK_SHADER_GROUP_SHADER_GENERAL_KHR uses the shader specified in 6894e5c31af7Sopenharmony_ci the group with 6895e5c31af7Sopenharmony_ci slink:VkRayTracingShaderGroupCreateInfoKHR::pname:generalShader 6896e5c31af7Sopenharmony_ci * ename:VK_SHADER_GROUP_SHADER_CLOSEST_HIT_KHR uses the shader specified 6897e5c31af7Sopenharmony_ci in the group with 6898e5c31af7Sopenharmony_ci slink:VkRayTracingShaderGroupCreateInfoKHR::pname:closestHitShader 6899e5c31af7Sopenharmony_ci * ename:VK_SHADER_GROUP_SHADER_ANY_HIT_KHR uses the shader specified in 6900e5c31af7Sopenharmony_ci the group with 6901e5c31af7Sopenharmony_ci slink:VkRayTracingShaderGroupCreateInfoKHR::pname:anyHitShader 6902e5c31af7Sopenharmony_ci * ename:VK_SHADER_GROUP_SHADER_INTERSECTION_KHR uses the shader specified 6903e5c31af7Sopenharmony_ci in the group with 6904e5c31af7Sopenharmony_ci slink:VkRayTracingShaderGroupCreateInfoKHR::pname:intersectionShader 6905e5c31af7Sopenharmony_ci-- 6906e5c31af7Sopenharmony_ci 6907e5c31af7Sopenharmony_ci[open,refpage='vkCmdSetRayTracingPipelineStackSizeKHR',desc='Set the stack size dynamically for a ray tracing pipeline',type='protos'] 6908e5c31af7Sopenharmony_ci-- 6909e5c31af7Sopenharmony_ci:refpage: vkCmdSetRayTracingPipelineStackSizeKHR 6910e5c31af7Sopenharmony_ci 6911e5c31af7Sopenharmony_ciTo <<pipelines-dynamic-state, dynamically set>> the stack size for a ray 6912e5c31af7Sopenharmony_citracing pipeline, call: 6913e5c31af7Sopenharmony_ci 6914e5c31af7Sopenharmony_ciinclude::{generated}/api/protos/vkCmdSetRayTracingPipelineStackSizeKHR.adoc[] 6915e5c31af7Sopenharmony_ci 6916e5c31af7Sopenharmony_ci * pname:commandBuffer is the command buffer into which the command will be 6917e5c31af7Sopenharmony_ci recorded. 6918e5c31af7Sopenharmony_ci * pname:pipelineStackSize is the stack size to use for subsequent ray 6919e5c31af7Sopenharmony_ci tracing trace commands. 6920e5c31af7Sopenharmony_ci 6921e5c31af7Sopenharmony_ciThis command sets the stack size for subsequent ray tracing commands when 6922e5c31af7Sopenharmony_cithe ray tracing pipeline is created with 6923e5c31af7Sopenharmony_ciename:VK_DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR set in 6924e5c31af7Sopenharmony_cislink:VkPipelineDynamicStateCreateInfo::pname:pDynamicStates. 6925e5c31af7Sopenharmony_ciOtherwise, the stack size is computed as described in 6926e5c31af7Sopenharmony_ci<<ray-tracing-pipeline-stack, Ray Tracing Pipeline Stack>>. 6927e5c31af7Sopenharmony_ci 6928e5c31af7Sopenharmony_ci.Valid Usage 6929e5c31af7Sopenharmony_ci**** 6930e5c31af7Sopenharmony_ci * [[VUID-vkCmdSetRayTracingPipelineStackSizeKHR-pipelineStackSize-03610]] 6931e5c31af7Sopenharmony_ci pname:pipelineStackSize must: be large enough for any dynamic execution 6932e5c31af7Sopenharmony_ci through the shaders in the ray tracing pipeline used by a subsequent 6933e5c31af7Sopenharmony_ci trace call 6934e5c31af7Sopenharmony_ci**** 6935e5c31af7Sopenharmony_ciinclude::{generated}/validity/protos/vkCmdSetRayTracingPipelineStackSizeKHR.adoc[] 6936e5c31af7Sopenharmony_ci-- 6937e5c31af7Sopenharmony_ciendif::VK_KHR_ray_tracing_pipeline[] 6938e5c31af7Sopenharmony_ciendif::VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline[] 6939e5c31af7Sopenharmony_ci 6940e5c31af7Sopenharmony_ci 6941e5c31af7Sopenharmony_ci[[pipelines-destruction]] 6942e5c31af7Sopenharmony_ci== Pipeline Destruction 6943e5c31af7Sopenharmony_ci 6944e5c31af7Sopenharmony_ci[open,refpage='vkDestroyPipeline',desc='Destroy a pipeline object',type='protos'] 6945e5c31af7Sopenharmony_ci-- 6946e5c31af7Sopenharmony_ciTo destroy a pipeline, call: 6947e5c31af7Sopenharmony_ci 6948e5c31af7Sopenharmony_ciinclude::{generated}/api/protos/vkDestroyPipeline.adoc[] 6949e5c31af7Sopenharmony_ci 6950e5c31af7Sopenharmony_ci * pname:device is the logical device that destroys the pipeline. 6951e5c31af7Sopenharmony_ci * pname:pipeline is the handle of the pipeline to destroy. 6952e5c31af7Sopenharmony_ci * pname:pAllocator controls host memory allocation as described in the 6953e5c31af7Sopenharmony_ci <<memory-allocation, Memory Allocation>> chapter. 6954e5c31af7Sopenharmony_ci 6955e5c31af7Sopenharmony_ci.Valid Usage 6956e5c31af7Sopenharmony_ci**** 6957e5c31af7Sopenharmony_ci * [[VUID-vkDestroyPipeline-pipeline-00765]] 6958e5c31af7Sopenharmony_ci All submitted commands that refer to pname:pipeline must: have completed 6959e5c31af7Sopenharmony_ci execution 6960e5c31af7Sopenharmony_ciifndef::VKSC_VERSION_1_0[] 6961e5c31af7Sopenharmony_ci * [[VUID-vkDestroyPipeline-pipeline-00766]] 6962e5c31af7Sopenharmony_ci If sname:VkAllocationCallbacks were provided when pname:pipeline was 6963e5c31af7Sopenharmony_ci created, a compatible set of callbacks must: be provided here 6964e5c31af7Sopenharmony_ci * [[VUID-vkDestroyPipeline-pipeline-00767]] 6965e5c31af7Sopenharmony_ci If no sname:VkAllocationCallbacks were provided when pname:pipeline was 6966e5c31af7Sopenharmony_ci created, pname:pAllocator must: be `NULL` 6967e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 6968e5c31af7Sopenharmony_ci**** 6969e5c31af7Sopenharmony_ci 6970e5c31af7Sopenharmony_ciinclude::{generated}/validity/protos/vkDestroyPipeline.adoc[] 6971e5c31af7Sopenharmony_ci-- 6972e5c31af7Sopenharmony_ci 6973e5c31af7Sopenharmony_ci 6974e5c31af7Sopenharmony_ci[[pipelines-pipeline-derivatives]] 6975e5c31af7Sopenharmony_ci== Pipeline Derivatives 6976e5c31af7Sopenharmony_ci 6977e5c31af7Sopenharmony_ci 6978e5c31af7Sopenharmony_ciA pipeline derivative is a child pipeline created from a parent pipeline, 6979e5c31af7Sopenharmony_ciwhere the child and parent are expected to have much commonality. 6980e5c31af7Sopenharmony_ci 6981e5c31af7Sopenharmony_ciifndef::VKSC_VERSION_1_0[] 6982e5c31af7Sopenharmony_ciThe goal of derivative pipelines is that they be cheaper to create using the 6983e5c31af7Sopenharmony_ciparent as a starting point, and that it be more efficient (on either host or 6984e5c31af7Sopenharmony_cidevice) to switch/bind between children of the same parent. 6985e5c31af7Sopenharmony_ci 6986e5c31af7Sopenharmony_ciA derivative pipeline is created by setting the 6987e5c31af7Sopenharmony_ciename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag in the 6988e5c31af7Sopenharmony_cistext:Vk*PipelineCreateInfo structure. 6989e5c31af7Sopenharmony_ciIf this is set, then exactly one of pname:basePipelineHandle or 6990e5c31af7Sopenharmony_cipname:basePipelineIndex members of the structure must: have a valid 6991e5c31af7Sopenharmony_cihandle/index, and specifies the parent pipeline. 6992e5c31af7Sopenharmony_ciIf pname:basePipelineHandle is used, the parent pipeline must: have already 6993e5c31af7Sopenharmony_cibeen created. 6994e5c31af7Sopenharmony_ciIf pname:basePipelineIndex is used, then the parent is being created in the 6995e5c31af7Sopenharmony_cisame command. 6996e5c31af7Sopenharmony_cidlink:VK_NULL_HANDLE acts as the invalid handle for 6997e5c31af7Sopenharmony_cipname:basePipelineHandle, and -1 is the invalid index for 6998e5c31af7Sopenharmony_cipname:basePipelineIndex. 6999e5c31af7Sopenharmony_ciIf pname:basePipelineIndex is used, the base pipeline must: appear earlier 7000e5c31af7Sopenharmony_ciin the array. 7001e5c31af7Sopenharmony_ciThe base pipeline must: have been created with the 7002e5c31af7Sopenharmony_ciename:VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT flag set. 7003e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 7004e5c31af7Sopenharmony_ciifdef::VKSC_VERSION_1_0[] 7005e5c31af7Sopenharmony_ciPipeline derivatives are not supported in Vulkan SC due to the use of 7006e5c31af7Sopenharmony_ciread-only offline generated pipeline caches <<SCID-8>>. 7007e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 7008e5c31af7Sopenharmony_ci 7009e5c31af7Sopenharmony_ci[[pipelines-cache]] 7010e5c31af7Sopenharmony_ci== Pipeline Cache 7011e5c31af7Sopenharmony_ci 7012e5c31af7Sopenharmony_ci[open,refpage='VkPipelineCache',desc='Opaque handle to a pipeline cache object',type='handles'] 7013e5c31af7Sopenharmony_ci-- 7014e5c31af7Sopenharmony_ciifndef::VKSC_VERSION_1_0[] 7015e5c31af7Sopenharmony_ciPipeline cache objects allow the result of pipeline construction to be 7016e5c31af7Sopenharmony_cireused between pipelines and between runs of an application. 7017e5c31af7Sopenharmony_ciReuse between pipelines is achieved by passing the same pipeline cache 7018e5c31af7Sopenharmony_ciobject when creating multiple related pipelines. 7019e5c31af7Sopenharmony_ciReuse across runs of an application is achieved by retrieving pipeline cache 7020e5c31af7Sopenharmony_cicontents in one run of an application, saving the contents, and using them 7021e5c31af7Sopenharmony_cito preinitialize a pipeline cache on a subsequent run. 7022e5c31af7Sopenharmony_ciThe contents of the pipeline cache objects are managed by the 7023e5c31af7Sopenharmony_ciimplementation. 7024e5c31af7Sopenharmony_ciApplications can: manage the host memory consumed by a pipeline cache object 7025e5c31af7Sopenharmony_ciand control the amount of data retrieved from a pipeline cache object. 7026e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 7027e5c31af7Sopenharmony_ciifdef::VKSC_VERSION_1_0[] 7028e5c31af7Sopenharmony_ciPipeline cache objects allow the application to load multiple binary 7029e5c31af7Sopenharmony_cipipeline objects generated by an offline cache creation tool into pipeline 7030e5c31af7Sopenharmony_cicache objects. 7031e5c31af7Sopenharmony_ciThe cache can then be used during pipeline creation to load offline pipeline 7032e5c31af7Sopenharmony_cidata. 7033e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 7034e5c31af7Sopenharmony_ci 7035e5c31af7Sopenharmony_ciPipeline cache objects are represented by sname:VkPipelineCache handles: 7036e5c31af7Sopenharmony_ci 7037e5c31af7Sopenharmony_ciinclude::{generated}/api/handles/VkPipelineCache.adoc[] 7038e5c31af7Sopenharmony_ci-- 7039e5c31af7Sopenharmony_ci 7040e5c31af7Sopenharmony_ci 7041e5c31af7Sopenharmony_ci[[pipelines-cache-create]] 7042e5c31af7Sopenharmony_ci=== Creating a Pipeline Cache 7043e5c31af7Sopenharmony_ci 7044e5c31af7Sopenharmony_ci[open,refpage='vkCreatePipelineCache',desc='Creates a new pipeline cache',type='protos'] 7045e5c31af7Sopenharmony_ci-- 7046e5c31af7Sopenharmony_ci:refpage: vkCreatePipelineCache 7047e5c31af7Sopenharmony_ci:objectnameplural: pipeline caches 7048e5c31af7Sopenharmony_ci:objectnamecamelcase: pipelineCache 7049e5c31af7Sopenharmony_ci:objectcount: 1 7050e5c31af7Sopenharmony_ci 7051e5c31af7Sopenharmony_ciTo create pipeline cache objects, call: 7052e5c31af7Sopenharmony_ci 7053e5c31af7Sopenharmony_ciinclude::{generated}/api/protos/vkCreatePipelineCache.adoc[] 7054e5c31af7Sopenharmony_ci 7055e5c31af7Sopenharmony_ci * pname:device is the logical device that creates the pipeline cache 7056e5c31af7Sopenharmony_ci object. 7057e5c31af7Sopenharmony_ci * pname:pCreateInfo is a pointer to a slink:VkPipelineCacheCreateInfo 7058e5c31af7Sopenharmony_ci structure containing initial parameters for the pipeline cache object. 7059e5c31af7Sopenharmony_ci * pname:pAllocator controls host memory allocation as described in the 7060e5c31af7Sopenharmony_ci <<memory-allocation, Memory Allocation>> chapter. 7061e5c31af7Sopenharmony_ci * pname:pPipelineCache is a pointer to a slink:VkPipelineCache handle in 7062e5c31af7Sopenharmony_ci which the resulting pipeline cache object is returned. 7063e5c31af7Sopenharmony_ci 7064e5c31af7Sopenharmony_ciifndef::VKSC_VERSION_1_0[] 7065e5c31af7Sopenharmony_ci[NOTE] 7066e5c31af7Sopenharmony_ci.Note 7067e5c31af7Sopenharmony_ci==== 7068e5c31af7Sopenharmony_ciApplications can: track and manage the total host memory size of a pipeline 7069e5c31af7Sopenharmony_cicache object using the pname:pAllocator. 7070e5c31af7Sopenharmony_ciApplications can: limit the amount of data retrieved from a pipeline cache 7071e5c31af7Sopenharmony_ciobject in fname:vkGetPipelineCacheData. 7072e5c31af7Sopenharmony_ciImplementations should: not internally limit the total number of entries 7073e5c31af7Sopenharmony_ciadded to a pipeline cache object or the total host memory consumed. 7074e5c31af7Sopenharmony_ci==== 7075e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 7076e5c31af7Sopenharmony_ci 7077e5c31af7Sopenharmony_ciifdef::VKSC_VERSION_1_0[] 7078e5c31af7Sopenharmony_ciIf the pipeline cache data pointed to by 7079e5c31af7Sopenharmony_cislink:VkPipelineCacheCreateInfo::pname:pInitialData is not compatible with 7080e5c31af7Sopenharmony_cithe device, pipeline cache creation will fail and 7081e5c31af7Sopenharmony_ciename:VK_ERROR_INVALID_PIPELINE_CACHE_DATA will be returned. 7082e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 7083e5c31af7Sopenharmony_ci 7084e5c31af7Sopenharmony_ciOnce created, a pipeline cache can: be passed to the 7085e5c31af7Sopenharmony_ciflink:vkCreateGraphicsPipelines 7086e5c31af7Sopenharmony_ciifdef::VK_KHR_ray_tracing_pipeline[flink:vkCreateRayTracingPipelinesKHR,] 7087e5c31af7Sopenharmony_ciifdef::VK_NV_ray_tracing[flink:vkCreateRayTracingPipelinesNV,] 7088e5c31af7Sopenharmony_ciand flink:vkCreateComputePipelines commands. 7089e5c31af7Sopenharmony_ciifndef::VKSC_VERSION_1_0[] 7090e5c31af7Sopenharmony_ciIf the pipeline cache passed into these commands is not 7091e5c31af7Sopenharmony_cidlink:VK_NULL_HANDLE, the implementation will query it for possible reuse 7092e5c31af7Sopenharmony_ciopportunities and update it with new content. 7093e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 7094e5c31af7Sopenharmony_ciifdef::VKSC_VERSION_1_0[] 7095e5c31af7Sopenharmony_ciThe pipeline cache passed into these commands will be queried by the 7096e5c31af7Sopenharmony_ciimplementation for matching pipelines on pipeline creation. 7097e5c31af7Sopenharmony_ciAfter the cache is created, its contents cannot be updated. 7098e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 7099e5c31af7Sopenharmony_ciThe use of the pipeline cache object in these commands is internally 7100e5c31af7Sopenharmony_cisynchronized, and the same pipeline cache object can: be used in multiple 7101e5c31af7Sopenharmony_cithreads simultaneously. 7102e5c31af7Sopenharmony_ci 7103e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control[] 7104e5c31af7Sopenharmony_ciIf pname:flags of pname:pCreateInfo includes 7105e5c31af7Sopenharmony_ciename:VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT, all commands 7106e5c31af7Sopenharmony_cithat modify the returned pipeline cache object must: be 7107e5c31af7Sopenharmony_ci<<fundamentals-threadingbehavior,externally synchronized>>. 7108e5c31af7Sopenharmony_ciendif::VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control[] 7109e5c31af7Sopenharmony_ci 7110e5c31af7Sopenharmony_ciifndef::VKSC_VERSION_1_0[] 7111e5c31af7Sopenharmony_ci[NOTE] 7112e5c31af7Sopenharmony_ci.Note 7113e5c31af7Sopenharmony_ci==== 7114e5c31af7Sopenharmony_ciImplementations should: make every effort to limit any critical sections to 7115e5c31af7Sopenharmony_cithe actual accesses to the cache, which is expected to be significantly 7116e5c31af7Sopenharmony_cishorter than the duration of the ftext:vkCreate*Pipelines commands. 7117e5c31af7Sopenharmony_ci==== 7118e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 7119e5c31af7Sopenharmony_ci 7120e5c31af7Sopenharmony_ciinclude::{chapters}/commonvalidity/no_dynamic_allocations_common.adoc[] 7121e5c31af7Sopenharmony_ci 7122e5c31af7Sopenharmony_ciifdef::VKSC_VERSION_1_0[] 7123e5c31af7Sopenharmony_ci.Valid Usage 7124e5c31af7Sopenharmony_ci**** 7125e5c31af7Sopenharmony_ci * [[VUID-vkCreatePipelineCache-pCreateInfo-05045]] 7126e5c31af7Sopenharmony_ci The contents of the structure pointed to by pname:pCreateInfo and the 7127e5c31af7Sopenharmony_ci data pointed to by pname:pCreateInfo->pInitialData must: be the same as 7128e5c31af7Sopenharmony_ci specified in one of the 7129e5c31af7Sopenharmony_ci slink:VkDeviceObjectReservationCreateInfo::pname:pPipelineCacheCreateInfos 7130e5c31af7Sopenharmony_ci structures when the device was created 7131e5c31af7Sopenharmony_ciinclude::{chapters}/commonvalidity/memory_reservation_request_count_common.adoc[] 7132e5c31af7Sopenharmony_ci**** 7133e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 7134e5c31af7Sopenharmony_ci 7135e5c31af7Sopenharmony_ciinclude::{generated}/validity/protos/vkCreatePipelineCache.adoc[] 7136e5c31af7Sopenharmony_ci-- 7137e5c31af7Sopenharmony_ci 7138e5c31af7Sopenharmony_ci[open,refpage='VkPipelineCacheCreateInfo',desc='Structure specifying parameters of a newly created pipeline cache',type='structs'] 7139e5c31af7Sopenharmony_ci-- 7140e5c31af7Sopenharmony_ciThe sname:VkPipelineCacheCreateInfo structure is defined as: 7141e5c31af7Sopenharmony_ci 7142e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkPipelineCacheCreateInfo.adoc[] 7143e5c31af7Sopenharmony_ci 7144e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 7145e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or a pointer to a structure extending this 7146e5c31af7Sopenharmony_ci structure. 7147e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control,VKSC_VERSION_1_0[] 7148e5c31af7Sopenharmony_ci * pname:flags is a bitmask of elink:VkPipelineCacheCreateFlagBits 7149e5c31af7Sopenharmony_ci specifying the behavior of the pipeline cache. 7150e5c31af7Sopenharmony_ciendif::VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control,VKSC_VERSION_1_0[] 7151e5c31af7Sopenharmony_ciifndef::VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control,VKSC_VERSION_1_0[] 7152e5c31af7Sopenharmony_ci * pname:flags is reserved for future use. 7153e5c31af7Sopenharmony_ciendif::VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control,VKSC_VERSION_1_0[] 7154e5c31af7Sopenharmony_ci * pname:initialDataSize is the number of bytes in pname:pInitialData. 7155e5c31af7Sopenharmony_ciifndef::VKSC_VERSION_1_0[] 7156e5c31af7Sopenharmony_ci If pname:initialDataSize is zero, the pipeline cache will initially be 7157e5c31af7Sopenharmony_ci empty. 7158e5c31af7Sopenharmony_ci * pname:pInitialData is a pointer to previously retrieved pipeline cache 7159e5c31af7Sopenharmony_ci data. 7160e5c31af7Sopenharmony_ci If the pipeline cache data is incompatible (as defined below) with the 7161e5c31af7Sopenharmony_ci device, the pipeline cache will be initially empty. 7162e5c31af7Sopenharmony_ci If pname:initialDataSize is zero, pname:pInitialData is ignored. 7163e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 7164e5c31af7Sopenharmony_ciifdef::VKSC_VERSION_1_0[] 7165e5c31af7Sopenharmony_ci * pname:pInitialData is a pointer to pipeline cache data that has been 7166e5c31af7Sopenharmony_ci generated offline. 7167e5c31af7Sopenharmony_ci If the pipeline cache data is incompatible (as defined below) with the 7168e5c31af7Sopenharmony_ci device, ename:VK_ERROR_INVALID_PIPELINE_CACHE_DATA is returned. 7169e5c31af7Sopenharmony_ciifdef::hidden[] 7170e5c31af7Sopenharmony_ci// tag::scdeviation[] 7171e5c31af7Sopenharmony_ci * slink:VkPipelineCacheCreateInfo::pname:pInitialData must: point to a 7172e5c31af7Sopenharmony_ci valid pipeline cache that has been generated offline <<SCID-1>>, 7173e5c31af7Sopenharmony_ci <<SCID-8>>. 7174e5c31af7Sopenharmony_ci// end::scdeviation[] 7175e5c31af7Sopenharmony_ciendif::hidden[] 7176e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 7177e5c31af7Sopenharmony_ci 7178e5c31af7Sopenharmony_ci.Valid Usage 7179e5c31af7Sopenharmony_ci**** 7180e5c31af7Sopenharmony_ciifndef::VKSC_VERSION_1_0[] 7181e5c31af7Sopenharmony_ci * [[VUID-VkPipelineCacheCreateInfo-initialDataSize-00768]] 7182e5c31af7Sopenharmony_ci If pname:initialDataSize is not `0`, it must: be equal to the size of 7183e5c31af7Sopenharmony_ci pname:pInitialData, as returned by fname:vkGetPipelineCacheData when 7184e5c31af7Sopenharmony_ci pname:pInitialData was originally retrieved 7185e5c31af7Sopenharmony_ci * [[VUID-VkPipelineCacheCreateInfo-initialDataSize-00769]] 7186e5c31af7Sopenharmony_ci If pname:initialDataSize is not `0`, pname:pInitialData must: have been 7187e5c31af7Sopenharmony_ci retrieved from a previous call to fname:vkGetPipelineCacheData 7188e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 7189e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control[] 7190e5c31af7Sopenharmony_ci * [[VUID-VkPipelineCacheCreateInfo-pipelineCreationCacheControl-02892]] 7191e5c31af7Sopenharmony_ci If the <<features-pipelineCreationCacheControl, 7192e5c31af7Sopenharmony_ci pname:pipelineCreationCacheControl>> feature is not enabled, pname:flags 7193e5c31af7Sopenharmony_ci must: not include 7194e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT 7195e5c31af7Sopenharmony_ciendif::VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control[] 7196e5c31af7Sopenharmony_ciifdef::VKSC_VERSION_1_0[] 7197e5c31af7Sopenharmony_ci * [[VUID-VkPipelineCacheCreateInfo-flags-05043]] 7198e5c31af7Sopenharmony_ci pname:flags must: include ename:VK_PIPELINE_CACHE_CREATE_READ_ONLY_BIT 7199e5c31af7Sopenharmony_ci * [[VUID-VkPipelineCacheCreateInfo-flags-05044]] 7200e5c31af7Sopenharmony_ci pname:flags must: include 7201e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CACHE_CREATE_USE_APPLICATION_STORAGE_BIT 7202e5c31af7Sopenharmony_ci * [[VUID-VkPipelineCacheCreateInfo-pInitialData-05139]] 7203e5c31af7Sopenharmony_ci The pipeline cache data pointed to by pname:pInitialData must: not 7204e5c31af7Sopenharmony_ci contain any pipelines with duplicate pipeline identifiers. 7205e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 7206e5c31af7Sopenharmony_ci**** 7207e5c31af7Sopenharmony_ciifdef::VKSC_VERSION_1_0[] 7208e5c31af7Sopenharmony_ciifdef::hidden[] 7209e5c31af7Sopenharmony_ci// tag::scdeviation[] 7210e5c31af7Sopenharmony_ci * slink:VkPipelineCacheCreateInfo::pname:initialDataSize must: not be `0` 7211e5c31af7Sopenharmony_ci <<SCID-1>>, <<SCID-8>>. 7212e5c31af7Sopenharmony_ci * slink:VkPipelineCacheCreateInfo::pname:pInitialData must: not be `NULL` 7213e5c31af7Sopenharmony_ci <<SCID-1>>, <<SCID-8>>. 7214e5c31af7Sopenharmony_ci * slink:VkPipelineCacheCreateInfo::pname:flags must: include 7215e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CACHE_CREATE_READ_ONLY_BIT <<SCID-1>>, <<SCID-8>>. 7216e5c31af7Sopenharmony_ci * slink:VkPipelineCacheCreateInfo::pname:flags must: include 7217e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CACHE_CREATE_USE_APPLICATION_STORAGE_BIT <<SCID-2>>. 7218e5c31af7Sopenharmony_ci * The contents of slink:VkPipelineCacheCreateInfo, including the data 7219e5c31af7Sopenharmony_ci pointed to by slink:VkPipelineCacheCreateInfo::pname:pInitialData, 7220e5c31af7Sopenharmony_ci passed to flink:vkCreatePipelineCache must: be the same as specified in 7221e5c31af7Sopenharmony_ci one of the 7222e5c31af7Sopenharmony_ci slink:VkDeviceObjectReservationCreateInfo::pname:pPipelineCacheCreateInfos 7223e5c31af7Sopenharmony_ci structures when the device was created <<SCID-1>>. 7224e5c31af7Sopenharmony_ci// end::scdeviation[] 7225e5c31af7Sopenharmony_ciendif::hidden[] 7226e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 7227e5c31af7Sopenharmony_ci 7228e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkPipelineCacheCreateInfo.adoc[] 7229e5c31af7Sopenharmony_ci-- 7230e5c31af7Sopenharmony_ci 7231e5c31af7Sopenharmony_ci[open,refpage='VkPipelineCacheCreateFlags', desc='Bitmask of VkPipelineCreateFlagBits', type='flags'] 7232e5c31af7Sopenharmony_ci-- 7233e5c31af7Sopenharmony_ciinclude::{generated}/api/flags/VkPipelineCacheCreateFlags.adoc[] 7234e5c31af7Sopenharmony_ci 7235e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control,VKSC_VERSION_1_0[] 7236e5c31af7Sopenharmony_citname:VkPipelineCacheCreateFlags is a bitmask type for setting a mask of 7237e5c31af7Sopenharmony_cizero or more elink:VkPipelineCacheCreateFlagBits. 7238e5c31af7Sopenharmony_ciendif::VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control,VKSC_VERSION_1_0[] 7239e5c31af7Sopenharmony_ciifndef::VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control,VKSC_VERSION_1_0[] 7240e5c31af7Sopenharmony_citname:VkPipelineCacheCreateFlags is a bitmask type for setting a mask, but 7241e5c31af7Sopenharmony_ciis currently reserved for future use. 7242e5c31af7Sopenharmony_ciendif::VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control,VKSC_VERSION_1_0[] 7243e5c31af7Sopenharmony_ci-- 7244e5c31af7Sopenharmony_ci 7245e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control,VKSC_VERSION_1_0[] 7246e5c31af7Sopenharmony_ci[open,refpage='VkPipelineCacheCreateFlagBits',desc='Bitmask specifying the behavior of the pipeline cache',type='enums'] 7247e5c31af7Sopenharmony_ci-- 7248e5c31af7Sopenharmony_ciBits which can: be set in slink:VkPipelineCacheCreateInfo::pname:flags, 7249e5c31af7Sopenharmony_cispecifying behavior of the pipeline cache, are: 7250e5c31af7Sopenharmony_ci 7251e5c31af7Sopenharmony_ciinclude::{generated}/api/enums/VkPipelineCacheCreateFlagBits.adoc[] 7252e5c31af7Sopenharmony_ci 7253e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control[] 7254e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT specifies 7255e5c31af7Sopenharmony_ci that all commands that modify the created slink:VkPipelineCache will be 7256e5c31af7Sopenharmony_ci <<fundamentals-threadingbehavior,externally synchronized>>. 7257e5c31af7Sopenharmony_ci When set, the implementation may: skip any unnecessary processing needed 7258e5c31af7Sopenharmony_ci to support simultaneous modification from multiple threads where 7259e5c31af7Sopenharmony_ci allowed. 7260e5c31af7Sopenharmony_ciendif::VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control[] 7261e5c31af7Sopenharmony_ciifdef::VKSC_VERSION_1_0[] 7262e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CACHE_CREATE_READ_ONLY_BIT specifies that the new 7263e5c31af7Sopenharmony_ci pipeline cache will be read-only. 7264e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CACHE_CREATE_USE_APPLICATION_STORAGE_BIT specifies 7265e5c31af7Sopenharmony_ci that the application will maintain the contents of the memory pointed to 7266e5c31af7Sopenharmony_ci by pname:pInitialData for the lifetime of the pipeline cache object 7267e5c31af7Sopenharmony_ci created, avoiding the need for the implementation to make a copy of the 7268e5c31af7Sopenharmony_ci data. 7269e5c31af7Sopenharmony_ci The memory pointed to by pname:pInitialData can: be modified or released 7270e5c31af7Sopenharmony_ci by the application only after any pipeline cache objects created using 7271e5c31af7Sopenharmony_ci it have been destroyed. 7272e5c31af7Sopenharmony_ciifdef::hidden[] 7273e5c31af7Sopenharmony_ci// tag::scaddition[] 7274e5c31af7Sopenharmony_ci * extending elink:VkPipelineCacheCreateFlagBits 7275e5c31af7Sopenharmony_ci ** ename:VK_PIPELINE_CACHE_CREATE_READ_ONLY_BIT <<SCID-1>>, <<SCID-8>> 7276e5c31af7Sopenharmony_ci ** ename:VK_PIPELINE_CACHE_CREATE_USE_APPLICATION_STORAGE_BIT <<SCID-2>> 7277e5c31af7Sopenharmony_ci// end::scaddition[] 7278e5c31af7Sopenharmony_ciendif::hidden[] 7279e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 7280e5c31af7Sopenharmony_ci-- 7281e5c31af7Sopenharmony_ciendif::VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control,VKSC_VERSION_1_0[] 7282e5c31af7Sopenharmony_ci 7283e5c31af7Sopenharmony_ciifdef::VKSC_VERSION_1_0[] 7284e5c31af7Sopenharmony_ciifdef::hidden[] 7285e5c31af7Sopenharmony_ci// tag::scremoved[] 7286e5c31af7Sopenharmony_ci * fname:vkMergePipelineCaches, fname:vkGetPipelineCacheData <<SCID-1>>, 7287e5c31af7Sopenharmony_ci <<SCID-8>> 7288e5c31af7Sopenharmony_ci// end::scremoved[] 7289e5c31af7Sopenharmony_ciendif::hidden[] 7290e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 7291e5c31af7Sopenharmony_ciifndef::VKSC_VERSION_1_0[] 7292e5c31af7Sopenharmony_ci 7293e5c31af7Sopenharmony_ci 7294e5c31af7Sopenharmony_ci[[pipelines-cache-merge]] 7295e5c31af7Sopenharmony_ci=== Merging Pipeline Caches 7296e5c31af7Sopenharmony_ci 7297e5c31af7Sopenharmony_ci[open,refpage='vkMergePipelineCaches',desc='Combine the data stores of pipeline caches',type='protos'] 7298e5c31af7Sopenharmony_ci-- 7299e5c31af7Sopenharmony_ciPipeline cache objects can: be merged using the command: 7300e5c31af7Sopenharmony_ci 7301e5c31af7Sopenharmony_ciinclude::{generated}/api/protos/vkMergePipelineCaches.adoc[] 7302e5c31af7Sopenharmony_ci 7303e5c31af7Sopenharmony_ci * pname:device is the logical device that owns the pipeline cache objects. 7304e5c31af7Sopenharmony_ci * pname:dstCache is the handle of the pipeline cache to merge results 7305e5c31af7Sopenharmony_ci into. 7306e5c31af7Sopenharmony_ci * pname:srcCacheCount is the length of the pname:pSrcCaches array. 7307e5c31af7Sopenharmony_ci * pname:pSrcCaches is a pointer to an array of pipeline cache handles, 7308e5c31af7Sopenharmony_ci which will be merged into pname:dstCache. 7309e5c31af7Sopenharmony_ci The previous contents of pname:dstCache are included after the merge. 7310e5c31af7Sopenharmony_ci 7311e5c31af7Sopenharmony_ci[NOTE] 7312e5c31af7Sopenharmony_ci.Note 7313e5c31af7Sopenharmony_ci==== 7314e5c31af7Sopenharmony_ciThe details of the merge operation are implementation-dependent, but 7315e5c31af7Sopenharmony_ciimplementations should: merge the contents of the specified pipelines and 7316e5c31af7Sopenharmony_ciprune duplicate entries. 7317e5c31af7Sopenharmony_ci==== 7318e5c31af7Sopenharmony_ci 7319e5c31af7Sopenharmony_ci.Valid Usage 7320e5c31af7Sopenharmony_ci**** 7321e5c31af7Sopenharmony_ci * [[VUID-vkMergePipelineCaches-dstCache-00770]] 7322e5c31af7Sopenharmony_ci pname:dstCache must: not appear in the list of source caches 7323e5c31af7Sopenharmony_ci**** 7324e5c31af7Sopenharmony_ci 7325e5c31af7Sopenharmony_ciinclude::{generated}/validity/protos/vkMergePipelineCaches.adoc[] 7326e5c31af7Sopenharmony_ci-- 7327e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 7328e5c31af7Sopenharmony_ciifndef::VKSC_VERSION_1_0[] 7329e5c31af7Sopenharmony_ci 7330e5c31af7Sopenharmony_ci 7331e5c31af7Sopenharmony_ci[[pipelines-cache-retrieval]] 7332e5c31af7Sopenharmony_ci=== Retrieving Pipeline Cache Data 7333e5c31af7Sopenharmony_ci 7334e5c31af7Sopenharmony_ci[open,refpage='vkGetPipelineCacheData',desc='Get the data store from a pipeline cache',type='protos'] 7335e5c31af7Sopenharmony_ci-- 7336e5c31af7Sopenharmony_ciData can: be retrieved from a pipeline cache object using the command: 7337e5c31af7Sopenharmony_ci 7338e5c31af7Sopenharmony_ciinclude::{generated}/api/protos/vkGetPipelineCacheData.adoc[] 7339e5c31af7Sopenharmony_ci 7340e5c31af7Sopenharmony_ci * pname:device is the logical device that owns the pipeline cache. 7341e5c31af7Sopenharmony_ci * pname:pipelineCache is the pipeline cache to retrieve data from. 7342e5c31af7Sopenharmony_ci * pname:pDataSize is a pointer to a code:size_t value related to the 7343e5c31af7Sopenharmony_ci amount of data in the pipeline cache, as described below. 7344e5c31af7Sopenharmony_ci * pname:pData is either `NULL` or a pointer to a buffer. 7345e5c31af7Sopenharmony_ci 7346e5c31af7Sopenharmony_ciIf pname:pData is `NULL`, then the maximum size of the data that can: be 7347e5c31af7Sopenharmony_ciretrieved from the pipeline cache, in bytes, is returned in pname:pDataSize. 7348e5c31af7Sopenharmony_ciOtherwise, pname:pDataSize must: point to a variable set by the user to the 7349e5c31af7Sopenharmony_cisize of the buffer, in bytes, pointed to by pname:pData, and on return the 7350e5c31af7Sopenharmony_civariable is overwritten with the amount of data actually written to 7351e5c31af7Sopenharmony_cipname:pData. 7352e5c31af7Sopenharmony_ciIf pname:pDataSize is less than the maximum size that can: be retrieved by 7353e5c31af7Sopenharmony_cithe pipeline cache, at most pname:pDataSize bytes will be written to 7354e5c31af7Sopenharmony_cipname:pData, and ename:VK_INCOMPLETE will be returned instead of 7355e5c31af7Sopenharmony_ciename:VK_SUCCESS, to indicate that not all of the pipeline cache was 7356e5c31af7Sopenharmony_cireturned. 7357e5c31af7Sopenharmony_ci 7358e5c31af7Sopenharmony_ciAny data written to pname:pData is valid and can: be provided as the 7359e5c31af7Sopenharmony_cipname:pInitialData member of the slink:VkPipelineCacheCreateInfo structure 7360e5c31af7Sopenharmony_cipassed to fname:vkCreatePipelineCache. 7361e5c31af7Sopenharmony_ci 7362e5c31af7Sopenharmony_ciTwo calls to fname:vkGetPipelineCacheData with the same parameters must: 7363e5c31af7Sopenharmony_ciretrieve the same data unless a command that modifies the contents of the 7364e5c31af7Sopenharmony_cicache is called between them. 7365e5c31af7Sopenharmony_ci 7366e5c31af7Sopenharmony_ciThe initial bytes written to pname:pData must: be a header as described in 7367e5c31af7Sopenharmony_cithe <<pipelines-cache-header, Pipeline Cache Header>> section. 7368e5c31af7Sopenharmony_ci 7369e5c31af7Sopenharmony_ciIf pname:pDataSize is less than what is necessary to store this header, 7370e5c31af7Sopenharmony_cinothing will be written to pname:pData and zero will be written to 7371e5c31af7Sopenharmony_cipname:pDataSize. 7372e5c31af7Sopenharmony_ci 7373e5c31af7Sopenharmony_ciinclude::{generated}/validity/protos/vkGetPipelineCacheData.adoc[] 7374e5c31af7Sopenharmony_ci-- 7375e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 7376e5c31af7Sopenharmony_ci 7377e5c31af7Sopenharmony_ci 7378e5c31af7Sopenharmony_ci[[pipelines-cache-header]] 7379e5c31af7Sopenharmony_ci=== Pipeline Cache Header 7380e5c31af7Sopenharmony_ci 7381e5c31af7Sopenharmony_ciifdef::VKSC_VERSION_1_0[] 7382e5c31af7Sopenharmony_ciApplications must: load data from <<pipelines-offline-compilation,offline 7383e5c31af7Sopenharmony_cicompiled>> pipeline caches into pipeline cache objects. 7384e5c31af7Sopenharmony_ciThe results of pipeline compilations may: depend on the vendor ID, device 7385e5c31af7Sopenharmony_ciID, driver version, and other details of the target device. 7386e5c31af7Sopenharmony_ciTo allow detection of pipeline cache data that is incompatible with the 7387e5c31af7Sopenharmony_cidevice, the pipeline cache data must: begin with a valid pipeline cache 7388e5c31af7Sopenharmony_ciheader. 7389e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 7390e5c31af7Sopenharmony_ci 7391e5c31af7Sopenharmony_ciifndef::VKSC_VERSION_1_0[] 7392e5c31af7Sopenharmony_ciApplications can: store the data retrieved from the pipeline cache, and use 7393e5c31af7Sopenharmony_cithese data, possibly in a future run of the application, to populate new 7394e5c31af7Sopenharmony_cipipeline cache objects. 7395e5c31af7Sopenharmony_ciThe results of pipeline compiles, however, may: depend on the vendor ID, 7396e5c31af7Sopenharmony_cidevice ID, driver version, and other details of the device. 7397e5c31af7Sopenharmony_ciTo enable applications to detect when previously retrieved data is 7398e5c31af7Sopenharmony_ciincompatible with the device, the pipeline cache data must: begin with a 7399e5c31af7Sopenharmony_civalid pipeline cache header. 7400e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 7401e5c31af7Sopenharmony_ci 7402e5c31af7Sopenharmony_ci[NOTE] 7403e5c31af7Sopenharmony_ci.Note 7404e5c31af7Sopenharmony_ci==== 7405e5c31af7Sopenharmony_ciStructures described in this section are not part of the Vulkan API and are 7406e5c31af7Sopenharmony_cionly used to describe the representation of data elements in pipeline cache 7407e5c31af7Sopenharmony_cidata. 7408e5c31af7Sopenharmony_ciAccordingly, the valid usage clauses defined for structures defined in this 7409e5c31af7Sopenharmony_cisection do not define valid usage conditions for APIs accepting pipeline 7410e5c31af7Sopenharmony_cicache data as input, as providing invalid pipeline cache data as input to 7411e5c31af7Sopenharmony_ciany Vulkan API commands will result 7412e5c31af7Sopenharmony_ciifndef::VKSC_VERSION_1_0[] 7413e5c31af7Sopenharmony_ciin the provided pipeline cache data being ignored. 7414e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 7415e5c31af7Sopenharmony_ciifdef::VKSC_VERSION_1_0[] 7416e5c31af7Sopenharmony_ciin the runtime error ename:VK_ERROR_INVALID_PIPELINE_CACHE_DATA. 7417e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 7418e5c31af7Sopenharmony_ci==== 7419e5c31af7Sopenharmony_ci 7420e5c31af7Sopenharmony_ci[open,refpage='VkPipelineCacheHeaderVersionOne',desc='Structure describing the layout of the pipeline cache header',type='structs'] 7421e5c31af7Sopenharmony_ci-- 7422e5c31af7Sopenharmony_ciVersion one of the pipeline cache header is defined as: 7423e5c31af7Sopenharmony_ci 7424e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkPipelineCacheHeaderVersionOne.adoc[] 7425e5c31af7Sopenharmony_ci 7426e5c31af7Sopenharmony_ci * pname:headerSize is the length in bytes of the pipeline cache header. 7427e5c31af7Sopenharmony_ci * pname:headerVersion is a elink:VkPipelineCacheHeaderVersion value 7428e5c31af7Sopenharmony_ci specifying the version of the header. 7429e5c31af7Sopenharmony_ci A consumer of the pipeline cache should: use the cache version to 7430e5c31af7Sopenharmony_ci interpret the remainder of the cache header. 7431e5c31af7Sopenharmony_ci * pname:vendorID is the sname:VkPhysicalDeviceProperties::pname:vendorID 7432e5c31af7Sopenharmony_ci of the implementation. 7433e5c31af7Sopenharmony_ci * pname:deviceID is the sname:VkPhysicalDeviceProperties::pname:deviceID 7434e5c31af7Sopenharmony_ci of the implementation. 7435e5c31af7Sopenharmony_ci * pname:pipelineCacheUUID is the 7436e5c31af7Sopenharmony_ci sname:VkPhysicalDeviceProperties::pname:pipelineCacheUUID of the 7437e5c31af7Sopenharmony_ci implementation. 7438e5c31af7Sopenharmony_ci 7439e5c31af7Sopenharmony_ciUnlike most structures declared by the Vulkan API, all fields of this 7440e5c31af7Sopenharmony_cistructure are written with the least significant byte first, regardless of 7441e5c31af7Sopenharmony_cihost byte-order. 7442e5c31af7Sopenharmony_ci 7443e5c31af7Sopenharmony_ciThe C language specification does not define the packing of structure 7444e5c31af7Sopenharmony_cimembers. 7445e5c31af7Sopenharmony_ciThis layout assumes tight structure member packing, with members laid out in 7446e5c31af7Sopenharmony_cithe order listed in the structure, and the intended size of the structure is 7447e5c31af7Sopenharmony_ci32 bytes. 7448e5c31af7Sopenharmony_ciIf a compiler produces code that diverges from that pattern, applications 7449e5c31af7Sopenharmony_cimust: employ another method to set values at the correct offsets. 7450e5c31af7Sopenharmony_ci 7451e5c31af7Sopenharmony_ci.Valid Usage 7452e5c31af7Sopenharmony_ci**** 7453e5c31af7Sopenharmony_ciifndef::VKSC_VERSION_1_0[] 7454e5c31af7Sopenharmony_ci * [[VUID-VkPipelineCacheHeaderVersionOne-headerSize-04967]] 7455e5c31af7Sopenharmony_ci pname:headerSize must: be 32 7456e5c31af7Sopenharmony_ci * [[VUID-VkPipelineCacheHeaderVersionOne-headerVersion-04968]] 7457e5c31af7Sopenharmony_ci pname:headerVersion must: be ename:VK_PIPELINE_CACHE_HEADER_VERSION_ONE 7458e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 7459e5c31af7Sopenharmony_ciifdef::VKSC_VERSION_1_0[] 7460e5c31af7Sopenharmony_ci * [[VUID-VkPipelineCacheHeaderVersionOne-headerSize-05075]] 7461e5c31af7Sopenharmony_ci pname:headerSize must: be 56 7462e5c31af7Sopenharmony_ci * [[VUID-VkPipelineCacheHeaderVersionOne-headerVersion-05076]] 7463e5c31af7Sopenharmony_ci pname:headerVersion must: be 7464e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CACHE_HEADER_VERSION_SAFETY_CRITICAL_ONE 7465e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 7466e5c31af7Sopenharmony_ci * [[VUID-VkPipelineCacheHeaderVersionOne-headerSize-08990]] 7467e5c31af7Sopenharmony_ci pname:headerSize must: not exceed the size of the pipeline cache 7468e5c31af7Sopenharmony_ci**** 7469e5c31af7Sopenharmony_ciifdef::VKSC_VERSION_1_0[] 7470e5c31af7Sopenharmony_ciifdef::hidden[] 7471e5c31af7Sopenharmony_ci// tag::scdeviation[] 7472e5c31af7Sopenharmony_ci * slink:VkPipelineCacheHeaderVersionOne::pname:headerSize must: be 56 7473e5c31af7Sopenharmony_ci <<SCID-1>>. 7474e5c31af7Sopenharmony_ci * slink:VkPipelineCacheHeaderVersionOne::pname:headerVersion must: be 7475e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CACHE_HEADER_VERSION_SAFETY_CRITICAL_ONE <<SCID-1>>. 7476e5c31af7Sopenharmony_ci// end::scdeviation[] 7477e5c31af7Sopenharmony_ciendif::hidden[] 7478e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 7479e5c31af7Sopenharmony_ci 7480e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkPipelineCacheHeaderVersionOne.adoc[] 7481e5c31af7Sopenharmony_ci-- 7482e5c31af7Sopenharmony_ci 7483e5c31af7Sopenharmony_ci[open,refpage='VkPipelineCacheHeaderVersion',desc='Encode pipeline cache version',type='enums',xrefs='vkCreatePipelineCache vkGetPipelineCacheData'] 7484e5c31af7Sopenharmony_ci-- 7485e5c31af7Sopenharmony_ciPossible values of the pname:headerVersion value of the pipeline cache 7486e5c31af7Sopenharmony_ciheader are: 7487e5c31af7Sopenharmony_ci 7488e5c31af7Sopenharmony_ciinclude::{generated}/api/enums/VkPipelineCacheHeaderVersion.adoc[] 7489e5c31af7Sopenharmony_ci 7490e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CACHE_HEADER_VERSION_ONE specifies version one of the 7491e5c31af7Sopenharmony_ci pipeline cache, described by slink:VkPipelineCacheHeaderVersionOne. 7492e5c31af7Sopenharmony_ciifdef::VKSC_VERSION_1_0[] 7493e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CACHE_HEADER_VERSION_SAFETY_CRITICAL_ONE specifies 7494e5c31af7Sopenharmony_ci version one of the pipeline cache for Vulkan SC, described by 7495e5c31af7Sopenharmony_ci slink:VkPipelineCacheHeaderVersionSafetyCriticalOne. 7496e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 7497e5c31af7Sopenharmony_ci-- 7498e5c31af7Sopenharmony_ci 7499e5c31af7Sopenharmony_ciifdef::VKSC_VERSION_1_0[] 7500e5c31af7Sopenharmony_ci[open,refpage='VkPipelineCacheHeaderVersionSafetyCriticalOne',desc='Structure describing the layout of the pipeline cache header for safety critical',type='structs'] 7501e5c31af7Sopenharmony_ci-- 7502e5c31af7Sopenharmony_ciVersion one of the pipeline cache header for Vulkan SC is defined as: 7503e5c31af7Sopenharmony_ci 7504e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkPipelineCacheHeaderVersionSafetyCriticalOne.adoc[] 7505e5c31af7Sopenharmony_ci 7506e5c31af7Sopenharmony_ci * pname:headerVersionOne is a slink:VkPipelineCacheHeaderVersionOne 7507e5c31af7Sopenharmony_ci structure. 7508e5c31af7Sopenharmony_ci * pname:validationVersion is a elink:VkPipelineCacheValidationVersion enum 7509e5c31af7Sopenharmony_ci value specifying the version of any validation information that is 7510e5c31af7Sopenharmony_ci included in this pipeline cache. 7511e5c31af7Sopenharmony_ci * pname:implementationData is 4 bytes of padding to ensure structure 7512e5c31af7Sopenharmony_ci members are consistently aligned on all platforms. 7513e5c31af7Sopenharmony_ci The contents of this field may: be used for implementation-specific 7514e5c31af7Sopenharmony_ci information. 7515e5c31af7Sopenharmony_ci * pname:pipelineIndexCount is the number of entries contained in the 7516e5c31af7Sopenharmony_ci pipeline cache index. 7517e5c31af7Sopenharmony_ci * pname:pipelineIndexStride is the number of bytes between consecutive 7518e5c31af7Sopenharmony_ci pipeline cache index entries. 7519e5c31af7Sopenharmony_ci * pname:pipelineIndexOffset is the offset in bytes from the beginning of 7520e5c31af7Sopenharmony_ci the pipeline cache header to the pipeline cache index. 7521e5c31af7Sopenharmony_ci 7522e5c31af7Sopenharmony_ciThe <<pipelines-cache-index, pipeline cache index>> consists of 7523e5c31af7Sopenharmony_cipname:pipelineIndexCount slink:VkPipelineCacheSafetyCriticalIndexEntry 7524e5c31af7Sopenharmony_cistructures containing an index of all the pipelines in this cache. 7525e5c31af7Sopenharmony_ciThe pipeline cache index is located starting at pname:pipelineIndexOffset 7526e5c31af7Sopenharmony_cibytes into the cache and the location of pipeline code:i is calculated as: 7527e5c31af7Sopenharmony_ci[eq]#pname:pipelineIndexOffset + code:i {times} pname:pipelineIndexStride#. 7528e5c31af7Sopenharmony_ciThe slink:VkPipelineCacheSafetyCriticalIndexEntry structures may: not be 7529e5c31af7Sopenharmony_citightly packed, enabling additional implementation-specific data to be 7530e5c31af7Sopenharmony_cistored with each entry, or for future extensibility. 7531e5c31af7Sopenharmony_ci 7532e5c31af7Sopenharmony_ci[NOTE] 7533e5c31af7Sopenharmony_ci.Note 7534e5c31af7Sopenharmony_ci==== 7535e5c31af7Sopenharmony_ciBecause the pipeline cache index is keyed by pipeline identifier, 7536e5c31af7Sopenharmony_ciapplications and offline compilers must ensure that there are no pipelines 7537e5c31af7Sopenharmony_ciwith identical pipeline identifiers in the same pipeline cache. 7538e5c31af7Sopenharmony_ci==== 7539e5c31af7Sopenharmony_ci 7540e5c31af7Sopenharmony_ciUnlike most structures declared by the Vulkan API, all fields of this 7541e5c31af7Sopenharmony_cistructure are written with the least significant byte first, regardless of 7542e5c31af7Sopenharmony_cihost byte-order. 7543e5c31af7Sopenharmony_ci 7544e5c31af7Sopenharmony_ciThe C language specification does not define the packing of structure 7545e5c31af7Sopenharmony_cimembers. 7546e5c31af7Sopenharmony_ciThis layout assumes tight structure member packing, with members laid out in 7547e5c31af7Sopenharmony_cithe order listed in the structure, and the intended size of the structure is 7548e5c31af7Sopenharmony_ci56 bytes. 7549e5c31af7Sopenharmony_ciIf a compiler produces code that diverges from that pattern, applications 7550e5c31af7Sopenharmony_cimust: employ another method to set values at the correct offsets. 7551e5c31af7Sopenharmony_ci 7552e5c31af7Sopenharmony_ci.Valid Usage 7553e5c31af7Sopenharmony_ci**** 7554e5c31af7Sopenharmony_ci * [[VUID-VkPipelineCacheHeaderVersionSafetyCriticalOne-validationVersion-05077]] 7555e5c31af7Sopenharmony_ci pname:validationVersion must: be 7556e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CACHE_VALIDATION_VERSION_SAFETY_CRITICAL_ONE 7557e5c31af7Sopenharmony_ci * [[VUID-VkPipelineCacheHeaderVersionSafetyCriticalOne-pipelineIndexStride-05078]] 7558e5c31af7Sopenharmony_ci pname:pipelineIndexStride must: be greater than or equal to 56 (the size 7559e5c31af7Sopenharmony_ci of the slink:VkPipelineCacheSafetyCriticalIndexEntry structure) 7560e5c31af7Sopenharmony_ci * [[VUID-VkPipelineCacheHeaderVersionSafetyCriticalOne-pipelineIndexOffset-05079]] 7561e5c31af7Sopenharmony_ci [eq]#pname:pipelineIndexOffset + pname:pipelineIndexCount {times} 7562e5c31af7Sopenharmony_ci pname:pipelineIndexStride# must: not exceed the size of the pipeline 7563e5c31af7Sopenharmony_ci cache 7564e5c31af7Sopenharmony_ci**** 7565e5c31af7Sopenharmony_ci 7566e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkPipelineCacheHeaderVersionSafetyCriticalOne.adoc[] 7567e5c31af7Sopenharmony_ci-- 7568e5c31af7Sopenharmony_ci 7569e5c31af7Sopenharmony_ci[open,refpage='VkPipelineCacheValidationVersion',desc='Encode pipeline cache validation version',type='enums'] 7570e5c31af7Sopenharmony_ci-- 7571e5c31af7Sopenharmony_ciThe elink:VkPipelineCacheValidationVersion enumeration determines the 7572e5c31af7Sopenharmony_cicontents of the pipeline cache validation information. 7573e5c31af7Sopenharmony_ciPossible values are: 7574e5c31af7Sopenharmony_ci 7575e5c31af7Sopenharmony_ciinclude::{generated}/api/enums/VkPipelineCacheValidationVersion.adoc[] 7576e5c31af7Sopenharmony_ci 7577e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_CACHE_VALIDATION_VERSION_SAFETY_CRITICAL_ONE specifies 7578e5c31af7Sopenharmony_ci version one of the pipeline cache validation information for Vulkan SC. 7579e5c31af7Sopenharmony_ci-- 7580e5c31af7Sopenharmony_ci 7581e5c31af7Sopenharmony_ci[[pipelines-cache-index]] 7582e5c31af7Sopenharmony_ci[open,refpage='VkPipelineCacheSafetyCriticalIndexEntry',desc='Structure describing the pipeline cache index entry',type='structs'] 7583e5c31af7Sopenharmony_ci-- 7584e5c31af7Sopenharmony_ciEach pipeline cache index entry consists of a 7585e5c31af7Sopenharmony_cisname:VkPipelineCacheSafetyCriticalIndexEntry structure: 7586e5c31af7Sopenharmony_ci 7587e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkPipelineCacheSafetyCriticalIndexEntry.adoc[] 7588e5c31af7Sopenharmony_ci 7589e5c31af7Sopenharmony_ci * pname:pipelineIdentifier is the <<pipelines-identifier, pipeline 7590e5c31af7Sopenharmony_ci identifier>> indicating which pipeline the information is associated 7591e5c31af7Sopenharmony_ci with. 7592e5c31af7Sopenharmony_ci * pname:pipelineMemorySize is the number of bytes of pipeline memory 7593e5c31af7Sopenharmony_ci required for this pipeline. 7594e5c31af7Sopenharmony_ci This is the minimum value that can: be successfully used for 7595e5c31af7Sopenharmony_ci slink:VkPipelineOfflineCreateInfo::pname:poolEntrySize when this 7596e5c31af7Sopenharmony_ci pipeline is used. 7597e5c31af7Sopenharmony_ci * pname:jsonSize is the size in bytes of the pipeline JSON data 7598e5c31af7Sopenharmony_ci representing the pipeline state for this pipeline. 7599e5c31af7Sopenharmony_ci This value may: be zero, indicating the JSON data is not present in the 7600e5c31af7Sopenharmony_ci pipeline cache for this pipeline. 7601e5c31af7Sopenharmony_ci * pname:jsonOffset is the offset in bytes from the beginning of the 7602e5c31af7Sopenharmony_ci pipeline cache header to the pipeline JSON data for this pipeline. 7603e5c31af7Sopenharmony_ci This value must: be zero if the JSON data is not present in the pipeline 7604e5c31af7Sopenharmony_ci cache for this pipeline. 7605e5c31af7Sopenharmony_ci * pname:stageIndexCount is the number of entries in the pipeline cache 7606e5c31af7Sopenharmony_ci stage validation index for this pipeline. 7607e5c31af7Sopenharmony_ci This value may: be zero, indicating that no stage validation information 7608e5c31af7Sopenharmony_ci is present in the pipeline cache for this pipeline. 7609e5c31af7Sopenharmony_ci * pname:stageIndexStride is the number of bytes between consecutive stage 7610e5c31af7Sopenharmony_ci validation index entries. 7611e5c31af7Sopenharmony_ci * pname:stageIndexOffset is the offset in bytes from the beginning of the 7612e5c31af7Sopenharmony_ci pipeline cache header to the <<pipelines-cache-stage-validation-index, 7613e5c31af7Sopenharmony_ci stage validation index>> for this pipeline. 7614e5c31af7Sopenharmony_ci This value must: be zero if no stage validation information is present 7615e5c31af7Sopenharmony_ci for this pipeline. 7616e5c31af7Sopenharmony_ci 7617e5c31af7Sopenharmony_ciThe JSON data and the stage validation index are optionally: included in the 7618e5c31af7Sopenharmony_cipipeline cache index entry. 7619e5c31af7Sopenharmony_ciThey are only intended to be used for validation and debugging. 7620e5c31af7Sopenharmony_ciIf present they must: include both the JSON data and the corresponding 7621e5c31af7Sopenharmony_ciSPIR-V modules that were used by the offline compiler to compile the 7622e5c31af7Sopenharmony_cipipeline cache entry. 7623e5c31af7Sopenharmony_ci 7624e5c31af7Sopenharmony_ciThe data at pname:jsonOffset consists of a byte stream of pname:jsonSize 7625e5c31af7Sopenharmony_cibytes of UTF-8 encoded JSON that was used by the 7626e5c31af7Sopenharmony_ci<<pipelines-offline-compilation, offline pipeline compiler>> to create this 7627e5c31af7Sopenharmony_cipipeline cache entry. 7628e5c31af7Sopenharmony_ci 7629e5c31af7Sopenharmony_ciThe <<pipelines-cache-stage-validation-index, stage validation index>> 7630e5c31af7Sopenharmony_ciconsists of pname:stageIndexCount 7631e5c31af7Sopenharmony_cislink:VkPipelineCacheStageValidationIndexEntry structures which provide the 7632e5c31af7Sopenharmony_ciSPIR-V modules used by this pipeline and these are provided in the same 7633e5c31af7Sopenharmony_ciorder as provided to the slink:VkPipelineShaderStageCreateInfo structure(s) 7634e5c31af7Sopenharmony_ciin the stext:Vk*PipelineCreateInfo structure for this pipeline. 7635e5c31af7Sopenharmony_ciThe stage validation index is located at pname:stageIndexOffset bytes into 7636e5c31af7Sopenharmony_cithe cache and the location of stage code:i is calculated as: 7637e5c31af7Sopenharmony_ci[eq]#pname:stageIndexOffset {plus} code:i {times} pname:stageIndexStride#. 7638e5c31af7Sopenharmony_ciThe slink:VkPipelineCacheStageValidationIndexEntry structures may: not be 7639e5c31af7Sopenharmony_citightly packed, enabling additional implementation-specific data to be 7640e5c31af7Sopenharmony_cistored with each entry, or for future extensibility. 7641e5c31af7Sopenharmony_ci 7642e5c31af7Sopenharmony_ciUnlike most structures declared by the Vulkan API, all fields of this 7643e5c31af7Sopenharmony_cistructure are written with the least significant byte first, regardless of 7644e5c31af7Sopenharmony_cihost byte-order. 7645e5c31af7Sopenharmony_ci 7646e5c31af7Sopenharmony_ciThe C language specification does not define the packing of structure 7647e5c31af7Sopenharmony_cimembers. 7648e5c31af7Sopenharmony_ciThis layout assumes tight structure member packing, with members laid out in 7649e5c31af7Sopenharmony_cithe order listed in the structure, and the intended size of the structure is 7650e5c31af7Sopenharmony_ci56 bytes. 7651e5c31af7Sopenharmony_ciIf a compiler produces code that diverges from that pattern, applications 7652e5c31af7Sopenharmony_cimust: employ another method to set values at the correct offsets. 7653e5c31af7Sopenharmony_ci 7654e5c31af7Sopenharmony_ci.Valid Usage 7655e5c31af7Sopenharmony_ci**** 7656e5c31af7Sopenharmony_ci * [[VUID-VkPipelineCacheSafetyCriticalIndexEntry-jsonSize-05080]] 7657e5c31af7Sopenharmony_ci If pname:jsonSize is 0, pname:jsonOffset must: be 0 7658e5c31af7Sopenharmony_ci * [[VUID-VkPipelineCacheSafetyCriticalIndexEntry-jsonSize-05081]] 7659e5c31af7Sopenharmony_ci If pname:jsonSize is 0, pname:stageIndexCount must: be 0 7660e5c31af7Sopenharmony_ci * [[VUID-VkPipelineCacheSafetyCriticalIndexEntry-jsonSize-08991]] 7661e5c31af7Sopenharmony_ci If pname:jsonSize is not 0, [eq]#pname:jsonOffset {plus} pname:jsonSize# 7662e5c31af7Sopenharmony_ci must: not exceed the size of the pipeline cache 7663e5c31af7Sopenharmony_ci * [[VUID-VkPipelineCacheSafetyCriticalIndexEntry-stageIndexCount-05082]] 7664e5c31af7Sopenharmony_ci If pname:stageIndexCount is 0, pname:stageIndexOffset and 7665e5c31af7Sopenharmony_ci pname:stageIndexStride must: be 0 7666e5c31af7Sopenharmony_ci * [[VUID-VkPipelineCacheSafetyCriticalIndexEntry-stageIndexCount-05083]] 7667e5c31af7Sopenharmony_ci If pname:stageIndexCount is not 0, pname:stageIndexStride must: be 7668e5c31af7Sopenharmony_ci greater than or equal to 16 (the size of the 7669e5c31af7Sopenharmony_ci slink:VkPipelineCacheStageValidationIndexEntry structure) 7670e5c31af7Sopenharmony_ci * [[VUID-VkPipelineCacheSafetyCriticalIndexEntry-stageIndexCount-05084]] 7671e5c31af7Sopenharmony_ci If pname:stageIndexCount is not 0, [eq]#pname:stageIndexOffset {plus} 7672e5c31af7Sopenharmony_ci pname:stageIndexCount {times} pname:stageIndexStride# must: not exceed 7673e5c31af7Sopenharmony_ci the size of the pipeline cache 7674e5c31af7Sopenharmony_ci**** 7675e5c31af7Sopenharmony_ci 7676e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkPipelineCacheSafetyCriticalIndexEntry.adoc[] 7677e5c31af7Sopenharmony_ci-- 7678e5c31af7Sopenharmony_ci 7679e5c31af7Sopenharmony_ci[[pipelines-cache-stage-validation-index]] 7680e5c31af7Sopenharmony_ci[open,refpage='VkPipelineCacheStageValidationIndexEntry',desc='Structure describing the pipeline cache stage validation index',type='structs'] 7681e5c31af7Sopenharmony_ci-- 7682e5c31af7Sopenharmony_ciEach pipeline cache stage validation index entry consists of a 7683e5c31af7Sopenharmony_cisname:VkPipelineCacheStageValidationIndexEntry structure: 7684e5c31af7Sopenharmony_ci 7685e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkPipelineCacheStageValidationIndexEntry.adoc[] 7686e5c31af7Sopenharmony_ci 7687e5c31af7Sopenharmony_ci * pname:codeSize is the size in bytes of the SPIR-V module for this 7688e5c31af7Sopenharmony_ci pipeline stage. 7689e5c31af7Sopenharmony_ci * pname:codeOffset is the offset in bytes from the beginning of the 7690e5c31af7Sopenharmony_ci pipeline cache header to the SPIR-V module for this pipeline stage. 7691e5c31af7Sopenharmony_ci 7692e5c31af7Sopenharmony_ciThe data at pname:codeOffset consists of pname:codeSize bytes of SPIR-V 7693e5c31af7Sopenharmony_cimodule as described in <<spirvenv, Appendix A>> that was used by the 7694e5c31af7Sopenharmony_ci<<pipelines-offline-compilation, offline pipeline compiler>> for this shader 7695e5c31af7Sopenharmony_cistage when creating this pipeline cache entry. 7696e5c31af7Sopenharmony_ci 7697e5c31af7Sopenharmony_ciUnlike most structures declared by the Vulkan API, all fields of this 7698e5c31af7Sopenharmony_cistructure are written with the least significant byte first, regardless of 7699e5c31af7Sopenharmony_cihost byte-order. 7700e5c31af7Sopenharmony_ci 7701e5c31af7Sopenharmony_ciThe C language specification does not define the packing of structure 7702e5c31af7Sopenharmony_cimembers. 7703e5c31af7Sopenharmony_ciThis layout assumes tight structure member packing, with members laid out in 7704e5c31af7Sopenharmony_cithe order listed in the structure, and the intended size of the structure is 7705e5c31af7Sopenharmony_ci16 bytes. 7706e5c31af7Sopenharmony_ciIf a compiler produces code that diverges from that pattern, applications 7707e5c31af7Sopenharmony_cimust: employ another method to set values at the correct offsets. 7708e5c31af7Sopenharmony_ci 7709e5c31af7Sopenharmony_ci.Valid Usage 7710e5c31af7Sopenharmony_ci**** 7711e5c31af7Sopenharmony_ci * [[VUID-VkPipelineCacheStageValidationIndexEntry-codeSize-05085]] 7712e5c31af7Sopenharmony_ci pname:codeSize must: be greater than 0 7713e5c31af7Sopenharmony_ci * [[VUID-VkPipelineCacheStageValidationIndexEntry-codeSize-05086]] 7714e5c31af7Sopenharmony_ci pname:codeSize must: be a multiple of 4 7715e5c31af7Sopenharmony_ci * [[VUID-VkPipelineCacheStageValidationIndexEntry-codeOffset-05087]] 7716e5c31af7Sopenharmony_ci [eq]#pname:codeOffset {plus} pname:codeSize# must: not exceed the size 7717e5c31af7Sopenharmony_ci of the pipeline cache 7718e5c31af7Sopenharmony_ci**** 7719e5c31af7Sopenharmony_ci 7720e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkPipelineCacheStageValidationIndexEntry.adoc[] 7721e5c31af7Sopenharmony_ci-- 7722e5c31af7Sopenharmony_ci 7723e5c31af7Sopenharmony_ciifdef::hidden[] 7724e5c31af7Sopenharmony_ci// tag::scaddition[] 7725e5c31af7Sopenharmony_ci * extending elink:VkPipelineCacheHeaderVersion 7726e5c31af7Sopenharmony_ci ** ename:VK_PIPELINE_CACHE_HEADER_VERSION_SAFETY_CRITICAL_ONE <<SCID-1>>, 7727e5c31af7Sopenharmony_ci <<SCID-8>> 7728e5c31af7Sopenharmony_ci * slink:VkPipelineCacheHeaderVersionSafetyCriticalOne <<SCID-1>>, 7729e5c31af7Sopenharmony_ci <<SCID-8>> 7730e5c31af7Sopenharmony_ci * elink:VkPipelineCacheValidationVersion <<SCID-1>>, <<SCID-8>> 7731e5c31af7Sopenharmony_ci * slink:VkPipelineCacheSafetyCriticalIndexEntry <<SCID-1>>, <<SCID-8>> 7732e5c31af7Sopenharmony_ci * slink:VkPipelineCacheStageValidationIndexEntry<<SCID-1>>, <<SCID-8>> 7733e5c31af7Sopenharmony_ci// end::scaddition[] 7734e5c31af7Sopenharmony_ciendif::hidden[] 7735e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 7736e5c31af7Sopenharmony_ci 7737e5c31af7Sopenharmony_ci 7738e5c31af7Sopenharmony_ci[[pipelines-cache-destroy]] 7739e5c31af7Sopenharmony_ci=== Destroying a Pipeline Cache 7740e5c31af7Sopenharmony_ci 7741e5c31af7Sopenharmony_ci[open,refpage='vkDestroyPipelineCache',desc='Destroy a pipeline cache object',type='protos'] 7742e5c31af7Sopenharmony_ci-- 7743e5c31af7Sopenharmony_ciTo destroy a pipeline cache, call: 7744e5c31af7Sopenharmony_ci 7745e5c31af7Sopenharmony_ciinclude::{generated}/api/protos/vkDestroyPipelineCache.adoc[] 7746e5c31af7Sopenharmony_ci 7747e5c31af7Sopenharmony_ci * pname:device is the logical device that destroys the pipeline cache 7748e5c31af7Sopenharmony_ci object. 7749e5c31af7Sopenharmony_ci * pname:pipelineCache is the handle of the pipeline cache to destroy. 7750e5c31af7Sopenharmony_ci * pname:pAllocator controls host memory allocation as described in the 7751e5c31af7Sopenharmony_ci <<memory-allocation, Memory Allocation>> chapter. 7752e5c31af7Sopenharmony_ci 7753e5c31af7Sopenharmony_ciifndef::VKSC_VERSION_1_0[] 7754e5c31af7Sopenharmony_ci.Valid Usage 7755e5c31af7Sopenharmony_ci**** 7756e5c31af7Sopenharmony_ci * [[VUID-vkDestroyPipelineCache-pipelineCache-00771]] 7757e5c31af7Sopenharmony_ci If sname:VkAllocationCallbacks were provided when pname:pipelineCache 7758e5c31af7Sopenharmony_ci was created, a compatible set of callbacks must: be provided here 7759e5c31af7Sopenharmony_ci * [[VUID-vkDestroyPipelineCache-pipelineCache-00772]] 7760e5c31af7Sopenharmony_ci If no sname:VkAllocationCallbacks were provided when pname:pipelineCache 7761e5c31af7Sopenharmony_ci was created, pname:pAllocator must: be `NULL` 7762e5c31af7Sopenharmony_ci**** 7763e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 7764e5c31af7Sopenharmony_ci 7765e5c31af7Sopenharmony_ciinclude::{generated}/validity/protos/vkDestroyPipelineCache.adoc[] 7766e5c31af7Sopenharmony_ci-- 7767e5c31af7Sopenharmony_ci 7768e5c31af7Sopenharmony_ciifdef::VKSC_VERSION_1_0[] 7769e5c31af7Sopenharmony_ci[[pipelines-offline-compilation]] 7770e5c31af7Sopenharmony_ci== Offline Pipeline Compilation 7771e5c31af7Sopenharmony_ci 7772e5c31af7Sopenharmony_ciIn Vulkan SC, the pipeline compilation process occurs offline <<SCID-8>>. 7773e5c31af7Sopenharmony_ci 7774e5c31af7Sopenharmony_ciThe <<shader-modules,SPIR-V shader module>> and pipeline state are supplied 7775e5c31af7Sopenharmony_cito an offline pipeline cache compiler which creates a pipeline cache entry 7776e5c31af7Sopenharmony_cifor the pipeline. 7777e5c31af7Sopenharmony_ciThe set of pipeline cache entries are combined offline into one or more 7778e5c31af7Sopenharmony_ci<<pipelines-cache, pipeline caches>>. 7779e5c31af7Sopenharmony_ciAt application run-time, the offline generated pipeline cache is provided to 7780e5c31af7Sopenharmony_cidevice creation as part of the slink:VkDeviceObjectReservationCreateInfo 7781e5c31af7Sopenharmony_cistructure and then loaded into a slink:VkPipelineCache object by the 7782e5c31af7Sopenharmony_ciapplication. 7783e5c31af7Sopenharmony_ciThe device, pipeline, and pipeline cache creation functions can: extract 7784e5c31af7Sopenharmony_ciimplementation-specific information from the pipeline cache. 7785e5c31af7Sopenharmony_ciThe specific pipeline to be loaded from the cache is specified at pipeline 7786e5c31af7Sopenharmony_cicreation time using a <<pipelines-identifier,pipeline identifier>>. 7787e5c31af7Sopenharmony_ciThe pipeline state that is provided at runtime to pipeline creation must: 7788e5c31af7Sopenharmony_cimatch the state that was specified to the offline pipeline cache compiler 7789e5c31af7Sopenharmony_ciwhen the pipeline cache entry was created offline (with the exception of the 7790e5c31af7Sopenharmony_cislink:VkPipelineShaderStageCreateInfo structure). 7791e5c31af7Sopenharmony_ci 7792e5c31af7Sopenharmony_ciIn order to assist with the specification of pipeline state for the offline 7793e5c31af7Sopenharmony_cipipeline cache compiler, Khronos has defined a _pipeline JSON schema_ to 7794e5c31af7Sopenharmony_cirepresent the pipeline state required to compile a SPIR-V module to 7795e5c31af7Sopenharmony_cidevice-specific machine code and a set of utilities to help with reading and 7796e5c31af7Sopenharmony_ciwriting of the JSON files. 7797e5c31af7Sopenharmony_ciSee https://github.com/KhronosGroup/VulkanSC-Docs/wiki/JSON-schema for more 7798e5c31af7Sopenharmony_ciinformation. 7799e5c31af7Sopenharmony_ci 7800e5c31af7Sopenharmony_ci[[pipelines-memory-reservation]] 7801e5c31af7Sopenharmony_ci== Pipeline Memory Reservation 7802e5c31af7Sopenharmony_ci 7803e5c31af7Sopenharmony_ciPipeline memory is allocated from a pool that is reserved at device creation 7804e5c31af7Sopenharmony_citime. 7805e5c31af7Sopenharmony_ciThe offline pipeline cache compiler writes the pipeline memory size 7806e5c31af7Sopenharmony_cirequirements for each pipeline into the pipeline's 7807e5c31af7Sopenharmony_cislink:VkPipelineCacheSafetyCriticalIndexEntry::pname:pipelineMemorySize 7808e5c31af7Sopenharmony_cientry in the <<pipelines-cache-index,pipeline cache index>>. 7809e5c31af7Sopenharmony_ciThe offline pipeline cache compiler may: also report it separately. 7810e5c31af7Sopenharmony_ciThe elements of 7811e5c31af7Sopenharmony_cislink:VkDeviceObjectReservationCreateInfo::pname:pPipelinePoolSizes are 7812e5c31af7Sopenharmony_cirequests for pname:poolEntryCount pool entries each of pool size 7813e5c31af7Sopenharmony_cipname:poolEntrySize, and any pipeline with a 7814e5c31af7Sopenharmony_cislink:VkPipelineCacheSafetyCriticalIndexEntry::pname:pipelineMemorySize less 7815e5c31af7Sopenharmony_cithan or equal to slink:VkPipelineOfflineCreateInfo::pname:poolEntrySize can: 7816e5c31af7Sopenharmony_cibe placed in one of those pool entries. 7817e5c31af7Sopenharmony_ciThe application should: request a set of pool sizes that best suits its 7818e5c31af7Sopenharmony_cianticipated worst-case usage. 7819e5c31af7Sopenharmony_ci 7820e5c31af7Sopenharmony_ciOn implementations where 7821e5c31af7Sopenharmony_cislink:VkPhysicalDeviceVulkanSC10Properties::pname:recyclePipelineMemory is 7822e5c31af7Sopenharmony_ciename:VK_FALSE, the memory for the pipeline pool is not recycled when a 7823e5c31af7Sopenharmony_cipipeline is destroyed, and once an entry has been used it cannot: be reused. 7824e5c31af7Sopenharmony_ciOn implementations where 7825e5c31af7Sopenharmony_cislink:VkPhysicalDeviceVulkanSC10Properties::pname:recyclePipelineMemory is 7826e5c31af7Sopenharmony_ciename:VK_TRUE, the memory for the pipeline pool is recycled when a pipeline 7827e5c31af7Sopenharmony_ciis destroyed, and the entry it was using becomes available to be reused. 7828e5c31af7Sopenharmony_ci 7829e5c31af7Sopenharmony_ci[[pipelines-identifier]] 7830e5c31af7Sopenharmony_ci== Pipeline Identifier 7831e5c31af7Sopenharmony_ci 7832e5c31af7Sopenharmony_ciA _pipeline identifier_ is an identifier that can be used to identify a 7833e5c31af7Sopenharmony_cispecific pipeline independently from the pipeline description, shader stages 7834e5c31af7Sopenharmony_ciand any relevant fixed-function stages, that were used to create the 7835e5c31af7Sopenharmony_cipipeline object. 7836e5c31af7Sopenharmony_ci 7837e5c31af7Sopenharmony_ciThe slink:VkPipelineOfflineCreateInfo structure allows an identifier to be 7838e5c31af7Sopenharmony_cispecified for the pipeline at pipeline creation via the pname:pNext field of 7839e5c31af7Sopenharmony_cithe slink:VkGraphicsPipelineCreateInfo, 7840e5c31af7Sopenharmony_ciifdef::VK_KHR_ray_tracing_pipeline[slink:VkRayTracingPipelineCreateInfoKHR,] 7841e5c31af7Sopenharmony_ciifdef::VK_NV_ray_tracing[slink:VkRayTracingPipelineCreateInfoNV,] 7842e5c31af7Sopenharmony_ciand slink:VkComputePipelineCreateInfo structures. 7843e5c31af7Sopenharmony_ciIf a sname:VkPipelineOfflineCreateInfo structure is not included in the 7844e5c31af7Sopenharmony_cipname:pNext chain then pipeline creation will fail and 7845e5c31af7Sopenharmony_ciename:VK_ERROR_NO_PIPELINE_MATCH will be returned by the corresponding 7846e5c31af7Sopenharmony_ciftext:vkCreate*Pipelines command. 7847e5c31af7Sopenharmony_ci 7848e5c31af7Sopenharmony_ciThe identifier must: be used by the implementation to match against the 7849e5c31af7Sopenharmony_ciexisting content of the pipeline cache at pipeline creation. 7850e5c31af7Sopenharmony_ciThis is required for Vulkan SC where pipelines are generated offline and 7851e5c31af7Sopenharmony_cithere is no shader code in the pipeline cache to match at runtime. 7852e5c31af7Sopenharmony_ci 7853e5c31af7Sopenharmony_ci[NOTE] 7854e5c31af7Sopenharmony_ci.Note 7855e5c31af7Sopenharmony_ci==== 7856e5c31af7Sopenharmony_ciThe identifier values must be specified or generated during the offline 7857e5c31af7Sopenharmony_cipipeline cache generation and embedded in to the pipeline cache blob. 7858e5c31af7Sopenharmony_ci==== 7859e5c31af7Sopenharmony_ci 7860e5c31af7Sopenharmony_ci[open,refpage='VkPipelineOfflineCreateInfo',desc='Structure specifying pipeline UUID and pipeline pool size to use',type='structs'] 7861e5c31af7Sopenharmony_ci-- 7862e5c31af7Sopenharmony_ciThe sname:VkPipelineOfflineCreateInfo structure is defined as: 7863e5c31af7Sopenharmony_ci 7864e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkPipelineOfflineCreateInfo.adoc[] 7865e5c31af7Sopenharmony_ci 7866e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 7867e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or a pointer to a structure extending this 7868e5c31af7Sopenharmony_ci structure. 7869e5c31af7Sopenharmony_ci * pname:pipelineIdentifier is an array of ename:VK_UUID_SIZE code:uint8_t 7870e5c31af7Sopenharmony_ci values representing an identifier for the pipeline. 7871e5c31af7Sopenharmony_ci * pname:matchControl is a elink:VkPipelineMatchControl value specifying 7872e5c31af7Sopenharmony_ci the type of identifier being used and how the match should be performed. 7873e5c31af7Sopenharmony_ci * pname:poolEntrySize is the size of the entry in pipeline memory to use 7874e5c31af7Sopenharmony_ci for this pipeline. 7875e5c31af7Sopenharmony_ci It must: be a size that was requested via slink:VkPipelinePoolSize when 7876e5c31af7Sopenharmony_ci the device was created. 7877e5c31af7Sopenharmony_ci 7878e5c31af7Sopenharmony_ciIf a match in the pipeline cache is not found then 7879e5c31af7Sopenharmony_ciename:VK_ERROR_NO_PIPELINE_MATCH will be returned to the application. 7880e5c31af7Sopenharmony_ci 7881e5c31af7Sopenharmony_ciIf pname:poolEntrySize is too small for the pipeline, or the number of 7882e5c31af7Sopenharmony_cientries for the requested pool size exceeds the reserved count for that pool 7883e5c31af7Sopenharmony_cisize, pipeline creation will fail and ename:VK_ERROR_OUT_OF_POOL_MEMORY will 7884e5c31af7Sopenharmony_cibe returned by the corresponding ftext:vkCreate*Pipelines command. 7885e5c31af7Sopenharmony_ci 7886e5c31af7Sopenharmony_ci.Valid Usage 7887e5c31af7Sopenharmony_ci**** 7888e5c31af7Sopenharmony_ci * [[VUID-VkPipelineOfflineCreateInfo-poolEntrySize-05028]] 7889e5c31af7Sopenharmony_ci pname:poolEntrySize must: be one of the sizes requested via 7890e5c31af7Sopenharmony_ci slink:VkPipelinePoolSize when the device was created 7891e5c31af7Sopenharmony_ci * [[VUID-VkPipelineOfflineCreateInfo-recyclePipelineMemory-05029]] 7892e5c31af7Sopenharmony_ci If 7893e5c31af7Sopenharmony_ci slink:VkPhysicalDeviceVulkanSC10Properties::pname:recyclePipelineMemory 7894e5c31af7Sopenharmony_ci is ename:VK_TRUE, the number of currently existing pipelines created 7895e5c31af7Sopenharmony_ci with this same value of pname:poolEntrySize plus 1 must: be less than or 7896e5c31af7Sopenharmony_ci equal to the sum of the slink:VkPipelinePoolSize::pname:poolEntryCount 7897e5c31af7Sopenharmony_ci values with the same value of pname:poolEntrySize 7898e5c31af7Sopenharmony_ci * [[VUID-VkPipelineOfflineCreateInfo-recyclePipelineMemory-05030]] 7899e5c31af7Sopenharmony_ci If 7900e5c31af7Sopenharmony_ci slink:VkPhysicalDeviceVulkanSC10Properties::pname:recyclePipelineMemory 7901e5c31af7Sopenharmony_ci is ename:VK_FALSE, the total number of pipelines ever created with this 7902e5c31af7Sopenharmony_ci same value of pname:poolEntrySize plus 1 must: be less than or equal to 7903e5c31af7Sopenharmony_ci the sum of the slink:VkPipelinePoolSize::pname:poolEntryCount values 7904e5c31af7Sopenharmony_ci with the same value of pname:poolEntrySize 7905e5c31af7Sopenharmony_ci**** 7906e5c31af7Sopenharmony_ciifdef::hidden[] 7907e5c31af7Sopenharmony_ci// tag::scaddition[] 7908e5c31af7Sopenharmony_ci * slink:VkPipelineOfflineCreateInfo <<SCID-1>>, <<SCID-8>> 7909e5c31af7Sopenharmony_ci * elink:VkPipelineMatchControl <<SCID-1>> 7910e5c31af7Sopenharmony_ci// end::scaddition[] 7911e5c31af7Sopenharmony_ciendif::hidden[] 7912e5c31af7Sopenharmony_ci 7913e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkPipelineOfflineCreateInfo.adoc[] 7914e5c31af7Sopenharmony_ci-- 7915e5c31af7Sopenharmony_ci 7916e5c31af7Sopenharmony_ci[open,refpage='VkPipelineMatchControl',desc='Describes the type of Identifier and Match being used',type='enums',xrefs='VkPipelineOfflineCreateInfo'] 7917e5c31af7Sopenharmony_ci-- 7918e5c31af7Sopenharmony_ciPossible values of the pname:matchControl member of 7919e5c31af7Sopenharmony_cisname:VkPipelineOfflineCreateInfo 7920e5c31af7Sopenharmony_ci 7921e5c31af7Sopenharmony_ciinclude::{generated}/api/enums/VkPipelineMatchControl.adoc[] 7922e5c31af7Sopenharmony_ci 7923e5c31af7Sopenharmony_ciare: 7924e5c31af7Sopenharmony_ci 7925e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_MATCH_CONTROL_APPLICATION_UUID_EXACT_MATCH specifies 7926e5c31af7Sopenharmony_ci that the identifier is a UUID generated by the application and the 7927e5c31af7Sopenharmony_ci identifiers must be an exact match. 7928e5c31af7Sopenharmony_ci 7929e5c31af7Sopenharmony_ci-- 7930e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 7931e5c31af7Sopenharmony_ci 7932e5c31af7Sopenharmony_ci[[pipelines-specialization-constants]] 7933e5c31af7Sopenharmony_ci== Specialization Constants 7934e5c31af7Sopenharmony_ci 7935e5c31af7Sopenharmony_ciifndef::VKSC_VERSION_1_0[] 7936e5c31af7Sopenharmony_ciSpecialization constants are a mechanism whereby constants in a SPIR-V 7937e5c31af7Sopenharmony_cimodule can: have their constant value specified at the time the 7938e5c31af7Sopenharmony_cisname:VkPipeline is created. 7939e5c31af7Sopenharmony_ciThis allows a SPIR-V module to have constants that can: be modified while 7940e5c31af7Sopenharmony_ciexecuting an application that uses the Vulkan API. 7941e5c31af7Sopenharmony_ci 7942e5c31af7Sopenharmony_ci[NOTE] 7943e5c31af7Sopenharmony_ci.Note 7944e5c31af7Sopenharmony_ci==== 7945e5c31af7Sopenharmony_ciSpecialization constants are useful to allow a compute shader to have its 7946e5c31af7Sopenharmony_cilocal workgroup size changed at runtime by the user, for example. 7947e5c31af7Sopenharmony_ci==== 7948e5c31af7Sopenharmony_ci 7949e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 7950e5c31af7Sopenharmony_ciifdef::VKSC_VERSION_1_0[] 7951e5c31af7Sopenharmony_ciSpecialization constants are a mechanism whereby constants in a SPIR-V 7952e5c31af7Sopenharmony_cimodule can: have their constant value specified at the time the 7953e5c31af7Sopenharmony_cisname:VkPipeline is compiled offline. 7954e5c31af7Sopenharmony_ciThis allows a SPIR-V module to have constants that can: be modified at 7955e5c31af7Sopenharmony_cicompilation time rather than in the SPIR-V source. 7956e5c31af7Sopenharmony_ciThe pname:pSpecializationInfo parameters are not used at runtime and should: 7957e5c31af7Sopenharmony_cibe ignored by the implementation. 7958e5c31af7Sopenharmony_ciIf provided, the application must: set the pname:pSpecializationInfo 7959e5c31af7Sopenharmony_ciparameters to the values that were specified for the offline compilation of 7960e5c31af7Sopenharmony_cithis pipeline. 7961e5c31af7Sopenharmony_ci 7962e5c31af7Sopenharmony_ci[NOTE] 7963e5c31af7Sopenharmony_ci.Note 7964e5c31af7Sopenharmony_ci==== 7965e5c31af7Sopenharmony_ciSpecialization constants are useful to allow a compute shader to have its 7966e5c31af7Sopenharmony_cilocal workgroup size changed at pipeline compilation time, for example. 7967e5c31af7Sopenharmony_ci==== 7968e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[] 7969e5c31af7Sopenharmony_ci 7970e5c31af7Sopenharmony_ciEach slink:VkPipelineShaderStageCreateInfo structure contains a 7971e5c31af7Sopenharmony_cipname:pSpecializationInfo member, which can: be `NULL` to indicate no 7972e5c31af7Sopenharmony_cispecialization constants, or point to a sname:VkSpecializationInfo 7973e5c31af7Sopenharmony_cistructure. 7974e5c31af7Sopenharmony_ci 7975e5c31af7Sopenharmony_ci[open,refpage='VkSpecializationInfo',desc='Structure specifying specialization information',type='structs'] 7976e5c31af7Sopenharmony_ci-- 7977e5c31af7Sopenharmony_ciThe sname:VkSpecializationInfo structure is defined as: 7978e5c31af7Sopenharmony_ci 7979e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkSpecializationInfo.adoc[] 7980e5c31af7Sopenharmony_ci 7981e5c31af7Sopenharmony_ci * pname:mapEntryCount is the number of entries in the pname:pMapEntries 7982e5c31af7Sopenharmony_ci array. 7983e5c31af7Sopenharmony_ci * pname:pMapEntries is a pointer to an array of 7984e5c31af7Sopenharmony_ci sname:VkSpecializationMapEntry structures, which map constant IDs to 7985e5c31af7Sopenharmony_ci offsets in pname:pData. 7986e5c31af7Sopenharmony_ci * pname:dataSize is the byte size of the pname:pData buffer. 7987e5c31af7Sopenharmony_ci * pname:pData contains the actual constant values to specialize with. 7988e5c31af7Sopenharmony_ci 7989e5c31af7Sopenharmony_ci.Valid Usage 7990e5c31af7Sopenharmony_ci**** 7991e5c31af7Sopenharmony_ci * [[VUID-VkSpecializationInfo-offset-00773]] 7992e5c31af7Sopenharmony_ci The pname:offset member of each element of pname:pMapEntries must: be 7993e5c31af7Sopenharmony_ci less than pname:dataSize 7994e5c31af7Sopenharmony_ci * [[VUID-VkSpecializationInfo-pMapEntries-00774]] 7995e5c31af7Sopenharmony_ci The pname:size member of each element of pname:pMapEntries must: be less 7996e5c31af7Sopenharmony_ci than or equal to pname:dataSize minus pname:offset 7997e5c31af7Sopenharmony_ci * [[VUID-VkSpecializationInfo-constantID-04911]] 7998e5c31af7Sopenharmony_ci The pname:constantID value of each element of pname:pMapEntries must: be 7999e5c31af7Sopenharmony_ci unique within pname:pMapEntries 8000e5c31af7Sopenharmony_ci**** 8001e5c31af7Sopenharmony_ci 8002e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkSpecializationInfo.adoc[] 8003e5c31af7Sopenharmony_ci-- 8004e5c31af7Sopenharmony_ci 8005e5c31af7Sopenharmony_ci[open,refpage='VkSpecializationMapEntry',desc='Structure specifying a specialization map entry',type='structs'] 8006e5c31af7Sopenharmony_ci-- 8007e5c31af7Sopenharmony_ciThe sname:VkSpecializationMapEntry structure is defined as: 8008e5c31af7Sopenharmony_ci 8009e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkSpecializationMapEntry.adoc[] 8010e5c31af7Sopenharmony_ci 8011e5c31af7Sopenharmony_ci * pname:constantID is the ID of the specialization constant in SPIR-V. 8012e5c31af7Sopenharmony_ci * pname:offset is the byte offset of the specialization constant value 8013e5c31af7Sopenharmony_ci within the supplied data buffer. 8014e5c31af7Sopenharmony_ci * pname:size is the byte size of the specialization constant value within 8015e5c31af7Sopenharmony_ci the supplied data buffer. 8016e5c31af7Sopenharmony_ci 8017e5c31af7Sopenharmony_ciIf a pname:constantID value is not a specialization constant ID used in the 8018e5c31af7Sopenharmony_cishader, that map entry does not affect the behavior of the pipeline. 8019e5c31af7Sopenharmony_ci 8020e5c31af7Sopenharmony_ci.Valid Usage 8021e5c31af7Sopenharmony_ci**** 8022e5c31af7Sopenharmony_ci * [[VUID-VkSpecializationMapEntry-constantID-00776]] 8023e5c31af7Sopenharmony_ci For a pname:constantID specialization constant declared in a shader, 8024e5c31af7Sopenharmony_ci pname:size must: match the byte size of the pname:constantID. 8025e5c31af7Sopenharmony_ci If the specialization constant is of type code:boolean, pname:size must: 8026e5c31af7Sopenharmony_ci be the byte size of basetype:VkBool32 8027e5c31af7Sopenharmony_ci**** 8028e5c31af7Sopenharmony_ci 8029e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkSpecializationMapEntry.adoc[] 8030e5c31af7Sopenharmony_ci-- 8031e5c31af7Sopenharmony_ci 8032e5c31af7Sopenharmony_ciIn human readable SPIR-V: 8033e5c31af7Sopenharmony_ci 8034e5c31af7Sopenharmony_ci[source,glsl] 8035e5c31af7Sopenharmony_ci---- 8036e5c31af7Sopenharmony_ciOpDecorate %x SpecId 13 ; decorate .x component of WorkgroupSize with ID 13 8037e5c31af7Sopenharmony_ciOpDecorate %y SpecId 42 ; decorate .y component of WorkgroupSize with ID 42 8038e5c31af7Sopenharmony_ciOpDecorate %z SpecId 3 ; decorate .z component of WorkgroupSize with ID 3 8039e5c31af7Sopenharmony_ciOpDecorate %wgsize BuiltIn WorkgroupSize ; decorate WorkgroupSize onto constant 8040e5c31af7Sopenharmony_ci%i32 = OpTypeInt 32 0 ; declare an unsigned 32-bit type 8041e5c31af7Sopenharmony_ci%uvec3 = OpTypeVector %i32 3 ; declare a 3 element vector type of unsigned 32-bit 8042e5c31af7Sopenharmony_ci%x = OpSpecConstant %i32 1 ; declare the .x component of WorkgroupSize 8043e5c31af7Sopenharmony_ci%y = OpSpecConstant %i32 1 ; declare the .y component of WorkgroupSize 8044e5c31af7Sopenharmony_ci%z = OpSpecConstant %i32 1 ; declare the .z component of WorkgroupSize 8045e5c31af7Sopenharmony_ci%wgsize = OpSpecConstantComposite %uvec3 %x %y %z ; declare WorkgroupSize 8046e5c31af7Sopenharmony_ci---- 8047e5c31af7Sopenharmony_ci 8048e5c31af7Sopenharmony_ciFrom the above we have three specialization constants, one for each of the 8049e5c31af7Sopenharmony_cix, y & z elements of the WorkgroupSize vector. 8050e5c31af7Sopenharmony_ci 8051e5c31af7Sopenharmony_ciNow to specialize the above via the specialization constants mechanism: 8052e5c31af7Sopenharmony_ci 8053e5c31af7Sopenharmony_ci[source,c++] 8054e5c31af7Sopenharmony_ci---- 8055e5c31af7Sopenharmony_ciconst VkSpecializationMapEntry entries[] = 8056e5c31af7Sopenharmony_ci{ 8057e5c31af7Sopenharmony_ci { 8058e5c31af7Sopenharmony_ci .constantID = 13, 8059e5c31af7Sopenharmony_ci .offset = 0 * sizeof(uint32_t), 8060e5c31af7Sopenharmony_ci .size = sizeof(uint32_t) 8061e5c31af7Sopenharmony_ci }, 8062e5c31af7Sopenharmony_ci { 8063e5c31af7Sopenharmony_ci .constantID = 42, 8064e5c31af7Sopenharmony_ci .offset = 1 * sizeof(uint32_t), 8065e5c31af7Sopenharmony_ci .size = sizeof(uint32_t) 8066e5c31af7Sopenharmony_ci }, 8067e5c31af7Sopenharmony_ci { 8068e5c31af7Sopenharmony_ci .constantID = 3, 8069e5c31af7Sopenharmony_ci .offset = 2 * sizeof(uint32_t), 8070e5c31af7Sopenharmony_ci .size = sizeof(uint32_t) 8071e5c31af7Sopenharmony_ci } 8072e5c31af7Sopenharmony_ci}; 8073e5c31af7Sopenharmony_ci 8074e5c31af7Sopenharmony_ciconst uint32_t data[] = { 16, 8, 4 }; // our workgroup size is 16x8x4 8075e5c31af7Sopenharmony_ci 8076e5c31af7Sopenharmony_ciconst VkSpecializationInfo info = 8077e5c31af7Sopenharmony_ci{ 8078e5c31af7Sopenharmony_ci .mapEntryCount = 3, 8079e5c31af7Sopenharmony_ci .pMapEntries = entries, 8080e5c31af7Sopenharmony_ci .dataSize = 3 * sizeof(uint32_t), 8081e5c31af7Sopenharmony_ci .pData = data, 8082e5c31af7Sopenharmony_ci}; 8083e5c31af7Sopenharmony_ci---- 8084e5c31af7Sopenharmony_ci 8085e5c31af7Sopenharmony_ciThen when calling flink:vkCreateComputePipelines, and passing the 8086e5c31af7Sopenharmony_cisname:VkSpecializationInfo we defined as the pname:pSpecializationInfo 8087e5c31af7Sopenharmony_ciparameter of slink:VkPipelineShaderStageCreateInfo, we will create a compute 8088e5c31af7Sopenharmony_cipipeline with the runtime specified local workgroup size. 8089e5c31af7Sopenharmony_ci 8090e5c31af7Sopenharmony_ciAnother example would be that an application has a SPIR-V module that has 8091e5c31af7Sopenharmony_cisome platform-dependent constants they wish to use. 8092e5c31af7Sopenharmony_ci 8093e5c31af7Sopenharmony_ciIn human readable SPIR-V: 8094e5c31af7Sopenharmony_ci 8095e5c31af7Sopenharmony_ci// [source,glsl] 8096e5c31af7Sopenharmony_ci[source,glsl] 8097e5c31af7Sopenharmony_ci---- 8098e5c31af7Sopenharmony_ciOpDecorate %1 SpecId 0 ; decorate our signed 32-bit integer constant 8099e5c31af7Sopenharmony_ciOpDecorate %2 SpecId 12 ; decorate our 32-bit floating-point constant 8100e5c31af7Sopenharmony_ci%i32 = OpTypeInt 32 1 ; declare a signed 32-bit type 8101e5c31af7Sopenharmony_ci%float = OpTypeFloat 32 ; declare a 32-bit floating-point type 8102e5c31af7Sopenharmony_ci%1 = OpSpecConstant %i32 -1 ; some signed 32-bit integer constant 8103e5c31af7Sopenharmony_ci%2 = OpSpecConstant %float 0.5 ; some 32-bit floating-point constant 8104e5c31af7Sopenharmony_ci---- 8105e5c31af7Sopenharmony_ci 8106e5c31af7Sopenharmony_ciFrom the above we have two specialization constants, one is a signed 32-bit 8107e5c31af7Sopenharmony_ciinteger and the second is a 32-bit floating-point value. 8108e5c31af7Sopenharmony_ci 8109e5c31af7Sopenharmony_ciNow to specialize the above via the specialization constants mechanism: 8110e5c31af7Sopenharmony_ci 8111e5c31af7Sopenharmony_ci[source,c++] 8112e5c31af7Sopenharmony_ci---- 8113e5c31af7Sopenharmony_cistruct SpecializationData { 8114e5c31af7Sopenharmony_ci int32_t data0; 8115e5c31af7Sopenharmony_ci float data1; 8116e5c31af7Sopenharmony_ci}; 8117e5c31af7Sopenharmony_ci 8118e5c31af7Sopenharmony_ciconst VkSpecializationMapEntry entries[] = 8119e5c31af7Sopenharmony_ci{ 8120e5c31af7Sopenharmony_ci { 8121e5c31af7Sopenharmony_ci .constantID = 0, 8122e5c31af7Sopenharmony_ci .offset = offsetof(SpecializationData, data0), 8123e5c31af7Sopenharmony_ci .size = sizeof(SpecializationData::data0) 8124e5c31af7Sopenharmony_ci }, 8125e5c31af7Sopenharmony_ci { 8126e5c31af7Sopenharmony_ci .constantID = 12, 8127e5c31af7Sopenharmony_ci .offset = offsetof(SpecializationData, data1), 8128e5c31af7Sopenharmony_ci .size = sizeof(SpecializationData::data1) 8129e5c31af7Sopenharmony_ci } 8130e5c31af7Sopenharmony_ci}; 8131e5c31af7Sopenharmony_ci 8132e5c31af7Sopenharmony_ciSpecializationData data; 8133e5c31af7Sopenharmony_cidata.data0 = -42; // set the data for the 32-bit integer 8134e5c31af7Sopenharmony_cidata.data1 = 42.0f; // set the data for the 32-bit floating-point 8135e5c31af7Sopenharmony_ci 8136e5c31af7Sopenharmony_ciconst VkSpecializationInfo info = 8137e5c31af7Sopenharmony_ci{ 8138e5c31af7Sopenharmony_ci .mapEntryCount = 2, 8139e5c31af7Sopenharmony_ci .pMapEntries = entries, 8140e5c31af7Sopenharmony_ci .dataSize = sizeof(data), 8141e5c31af7Sopenharmony_ci .pdata = &data, 8142e5c31af7Sopenharmony_ci}; 8143e5c31af7Sopenharmony_ci---- 8144e5c31af7Sopenharmony_ci 8145e5c31af7Sopenharmony_ciIt is legal for a SPIR-V module with specializations to be compiled into a 8146e5c31af7Sopenharmony_cipipeline where no specialization information was provided. 8147e5c31af7Sopenharmony_ciSPIR-V specialization constants contain default values such that if a 8148e5c31af7Sopenharmony_cispecialization is not provided, the default value will be used. 8149e5c31af7Sopenharmony_ciIn the examples above, it would be valid for an application to only 8150e5c31af7Sopenharmony_cispecialize some of the specialization constants within the SPIR-V module, 8151e5c31af7Sopenharmony_ciand let the other constants use their default values encoded within the 8152e5c31af7Sopenharmony_ciOpSpecConstant declarations. 8153e5c31af7Sopenharmony_ci 8154e5c31af7Sopenharmony_ci 8155e5c31af7Sopenharmony_ciifdef::VK_KHR_pipeline_library[] 8156e5c31af7Sopenharmony_ci[[pipelines-library]] 8157e5c31af7Sopenharmony_ci== Pipeline Libraries 8158e5c31af7Sopenharmony_ci 8159e5c31af7Sopenharmony_ciA pipeline library is a special pipeline that was created using the 8160e5c31af7Sopenharmony_ciename:VK_PIPELINE_CREATE_LIBRARY_BIT_KHR and cannot be bound, instead it 8161e5c31af7Sopenharmony_cidefines a set of pipeline state which can be linked into other pipelines. 8162e5c31af7Sopenharmony_ciifdef::VK_KHR_ray_tracing_pipeline[] 8163e5c31af7Sopenharmony_ciFor ray tracing pipelines this includes shaders and shader groups. 8164e5c31af7Sopenharmony_ciendif::VK_KHR_ray_tracing_pipeline[] 8165e5c31af7Sopenharmony_ciifdef::VK_EXT_graphics_pipeline_library[] 8166e5c31af7Sopenharmony_ciFor graphics pipelines this includes distinct library types defined by 8167e5c31af7Sopenharmony_cielink:VkGraphicsPipelineLibraryFlagBitsEXT. 8168e5c31af7Sopenharmony_ciendif::VK_EXT_graphics_pipeline_library[] 8169e5c31af7Sopenharmony_ciThe application must: maintain the lifetime of a pipeline library based on 8170e5c31af7Sopenharmony_cithe pipelines that link with it. 8171e5c31af7Sopenharmony_ci 8172e5c31af7Sopenharmony_ciThis linkage is achieved by using the following structure within the 8173e5c31af7Sopenharmony_ciappropriate creation mechanisms: 8174e5c31af7Sopenharmony_ci 8175e5c31af7Sopenharmony_ci[open,refpage='VkPipelineLibraryCreateInfoKHR',desc='Structure specifying pipeline libraries to use when creating a pipeline',type='structs'] 8176e5c31af7Sopenharmony_ci-- 8177e5c31af7Sopenharmony_ciThe sname:VkPipelineLibraryCreateInfoKHR structure is defined as: 8178e5c31af7Sopenharmony_ci 8179e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkPipelineLibraryCreateInfoKHR.adoc[] 8180e5c31af7Sopenharmony_ci 8181e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 8182e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or a pointer to a structure extending this 8183e5c31af7Sopenharmony_ci structure. 8184e5c31af7Sopenharmony_ci * pname:libraryCount is the number of pipeline libraries in 8185e5c31af7Sopenharmony_ci pname:pLibraries. 8186e5c31af7Sopenharmony_ci * pname:pLibraries is a pointer to an array of slink:VkPipeline structures 8187e5c31af7Sopenharmony_ci specifying pipeline libraries to use when creating a pipeline. 8188e5c31af7Sopenharmony_ci 8189e5c31af7Sopenharmony_ci.Valid Usage 8190e5c31af7Sopenharmony_ci**** 8191e5c31af7Sopenharmony_ci * [[VUID-VkPipelineLibraryCreateInfoKHR-pLibraries-03381]] 8192e5c31af7Sopenharmony_ci Each element of pname:pLibraries must: have been created with 8193e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_LIBRARY_BIT_KHR 8194e5c31af7Sopenharmony_ciifdef::VK_EXT_shader_module_identifier[] 8195e5c31af7Sopenharmony_ci * [[VUID-VkPipelineLibraryCreateInfoKHR-pLibraries-06855]] 8196e5c31af7Sopenharmony_ci If any library in pname:pLibraries was created with a shader stage with 8197e5c31af7Sopenharmony_ci slink:VkPipelineShaderStageModuleIdentifierCreateInfoEXT and 8198e5c31af7Sopenharmony_ci pname:identifierSize not equal to 0, the pipeline must: be created with 8199e5c31af7Sopenharmony_ci the ename:VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT flag 8200e5c31af7Sopenharmony_ci set 8201e5c31af7Sopenharmony_ciendif::VK_EXT_shader_module_identifier[] 8202e5c31af7Sopenharmony_ciifdef::VK_EXT_descriptor_buffer[] 8203e5c31af7Sopenharmony_ci * [[VUID-VkPipelineLibraryCreateInfoKHR-pLibraries-08096]] 8204e5c31af7Sopenharmony_ci If any element of pname:pLibraries was created with 8205e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT, all elements must: 8206e5c31af7Sopenharmony_ci have been created with 8207e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT 8208e5c31af7Sopenharmony_ciendif::VK_EXT_descriptor_buffer[] 8209e5c31af7Sopenharmony_ciifdef::VK_EXT_pipeline_protected_access[] 8210e5c31af7Sopenharmony_ci * [[VUID-VkPipelineLibraryCreateInfoKHR-pipeline-07404]] 8211e5c31af7Sopenharmony_ci If pname:pipeline is being created with 8212e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT, every element of 8213e5c31af7Sopenharmony_ci pname:pLibraries must: have been created with 8214e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT 8215e5c31af7Sopenharmony_ci * [[VUID-VkPipelineLibraryCreateInfoKHR-pipeline-07405]] 8216e5c31af7Sopenharmony_ci If pname:pipeline is being created without 8217e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT, every element of 8218e5c31af7Sopenharmony_ci pname:pLibraries must: have been created without 8219e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT 8220e5c31af7Sopenharmony_ci * [[VUID-VkPipelineLibraryCreateInfoKHR-pipeline-07406]] 8221e5c31af7Sopenharmony_ci If pname:pipeline is being created with 8222e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT, every element of 8223e5c31af7Sopenharmony_ci pname:pLibraries must: have been created with 8224e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT 8225e5c31af7Sopenharmony_ci * [[VUID-VkPipelineLibraryCreateInfoKHR-pipeline-07407]] 8226e5c31af7Sopenharmony_ci If pname:pipeline is being created without 8227e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT, every element of 8228e5c31af7Sopenharmony_ci pname:pLibraries must: have been created without 8229e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT 8230e5c31af7Sopenharmony_ciendif::VK_EXT_pipeline_protected_access[] 8231e5c31af7Sopenharmony_ci**** 8232e5c31af7Sopenharmony_ci 8233e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkPipelineLibraryCreateInfoKHR.adoc[] 8234e5c31af7Sopenharmony_ci-- 8235e5c31af7Sopenharmony_ci 8236e5c31af7Sopenharmony_ciPipelines created with ename:VK_PIPELINE_CREATE_LIBRARY_BIT_KHR libraries 8237e5c31af7Sopenharmony_cican: depend on other pipeline libraries in 8238e5c31af7Sopenharmony_cislink:VkPipelineLibraryCreateInfoKHR. 8239e5c31af7Sopenharmony_ci 8240e5c31af7Sopenharmony_ciA pipeline library is considered in-use, as long as one of the linking 8241e5c31af7Sopenharmony_cipipelines is in-use. 8242e5c31af7Sopenharmony_ciThis applies recursively if a pipeline library includes other pipeline 8243e5c31af7Sopenharmony_cilibraries. 8244e5c31af7Sopenharmony_ci 8245e5c31af7Sopenharmony_ciendif::VK_KHR_pipeline_library[] 8246e5c31af7Sopenharmony_ci 8247e5c31af7Sopenharmony_ci 8248e5c31af7Sopenharmony_ci[[pipelines-binding]] 8249e5c31af7Sopenharmony_ci== Pipeline Binding 8250e5c31af7Sopenharmony_ci 8251e5c31af7Sopenharmony_ci[open,refpage='vkCmdBindPipeline',desc='Bind a pipeline object to a command buffer',type='protos'] 8252e5c31af7Sopenharmony_ci-- 8253e5c31af7Sopenharmony_ciOnce a pipeline has been created, it can: be bound to the command buffer 8254e5c31af7Sopenharmony_ciusing the command: 8255e5c31af7Sopenharmony_ci 8256e5c31af7Sopenharmony_ciinclude::{generated}/api/protos/vkCmdBindPipeline.adoc[] 8257e5c31af7Sopenharmony_ci 8258e5c31af7Sopenharmony_ci * pname:commandBuffer is the command buffer that the pipeline will be 8259e5c31af7Sopenharmony_ci bound to. 8260e5c31af7Sopenharmony_ci * pname:pipelineBindPoint is a elink:VkPipelineBindPoint value specifying 8261e5c31af7Sopenharmony_ci to which bind point the pipeline is bound. 8262e5c31af7Sopenharmony_ci Binding one does not disturb the others. 8263e5c31af7Sopenharmony_ci * pname:pipeline is the pipeline to be bound. 8264e5c31af7Sopenharmony_ci 8265e5c31af7Sopenharmony_ci[[pipelines-bindpoint-commands]] 8266e5c31af7Sopenharmony_ciOnce bound, a pipeline binding affects subsequent commands that interact 8267e5c31af7Sopenharmony_ciwith the given pipeline type in the command buffer until a different 8268e5c31af7Sopenharmony_cipipeline of the same type is bound to the bind 8269e5c31af7Sopenharmony_ciifdef::VK_EXT_shader_object[] 8270e5c31af7Sopenharmony_cipoint, or until the pipeline bind point is disturbed by binding a 8271e5c31af7Sopenharmony_ci<<shaders-objects, shader object>> as described in 8272e5c31af7Sopenharmony_ci<<shaders-objects-pipeline-interaction, Interaction with Pipelines>>. 8273e5c31af7Sopenharmony_ciendif::VK_EXT_shader_object[] 8274e5c31af7Sopenharmony_ciifndef::VK_EXT_shader_object[] 8275e5c31af7Sopenharmony_cipoint. 8276e5c31af7Sopenharmony_ciendif::VK_EXT_shader_object[] 8277e5c31af7Sopenharmony_ciCommands that do not interact with the <<shaders-binding,given pipeline>> 8278e5c31af7Sopenharmony_citype must: not be affected by the pipeline state. 8279e5c31af7Sopenharmony_ci 8280e5c31af7Sopenharmony_ci.Valid Usage 8281e5c31af7Sopenharmony_ci**** 8282e5c31af7Sopenharmony_ci * [[VUID-vkCmdBindPipeline-pipelineBindPoint-00777]] 8283e5c31af7Sopenharmony_ci If pname:pipelineBindPoint is ename:VK_PIPELINE_BIND_POINT_COMPUTE, the 8284e5c31af7Sopenharmony_ci sname:VkCommandPool that pname:commandBuffer was allocated from must: 8285e5c31af7Sopenharmony_ci support compute operations 8286e5c31af7Sopenharmony_ci * [[VUID-vkCmdBindPipeline-pipelineBindPoint-00778]] 8287e5c31af7Sopenharmony_ci If pname:pipelineBindPoint is ename:VK_PIPELINE_BIND_POINT_GRAPHICS, the 8288e5c31af7Sopenharmony_ci sname:VkCommandPool that pname:commandBuffer was allocated from must: 8289e5c31af7Sopenharmony_ci support graphics operations 8290e5c31af7Sopenharmony_ci * [[VUID-vkCmdBindPipeline-pipelineBindPoint-00779]] 8291e5c31af7Sopenharmony_ci If pname:pipelineBindPoint is ename:VK_PIPELINE_BIND_POINT_COMPUTE, 8292e5c31af7Sopenharmony_ci pname:pipeline must: be a compute pipeline 8293e5c31af7Sopenharmony_ci * [[VUID-vkCmdBindPipeline-pipelineBindPoint-00780]] 8294e5c31af7Sopenharmony_ci If pname:pipelineBindPoint is ename:VK_PIPELINE_BIND_POINT_GRAPHICS, 8295e5c31af7Sopenharmony_ci pname:pipeline must: be a graphics pipeline 8296e5c31af7Sopenharmony_ci * [[VUID-vkCmdBindPipeline-pipeline-00781]] 8297e5c31af7Sopenharmony_ci If the <<features-variableMultisampleRate, 8298e5c31af7Sopenharmony_ci pname:variableMultisampleRate>> feature is not supported, pname:pipeline 8299e5c31af7Sopenharmony_ci is a graphics pipeline, the current subpass <<renderpass-noattachments, 8300e5c31af7Sopenharmony_ci uses no attachments>>, and this is not the first call to this function 8301e5c31af7Sopenharmony_ci with a graphics pipeline after transitioning to the current subpass, 8302e5c31af7Sopenharmony_ci then the sample count specified by this pipeline must: match that set in 8303e5c31af7Sopenharmony_ci the previous pipeline 8304e5c31af7Sopenharmony_ciifdef::VK_EXT_sample_locations[] 8305e5c31af7Sopenharmony_ci * [[VUID-vkCmdBindPipeline-variableSampleLocations-01525]] 8306e5c31af7Sopenharmony_ci If 8307e5c31af7Sopenharmony_ci slink:VkPhysicalDeviceSampleLocationsPropertiesEXT::pname:variableSampleLocations 8308e5c31af7Sopenharmony_ci is ename:VK_FALSE, and pname:pipeline is a graphics pipeline created 8309e5c31af7Sopenharmony_ci with a slink:VkPipelineSampleLocationsStateCreateInfoEXT structure 8310e5c31af7Sopenharmony_ci having its pname:sampleLocationsEnable member set to ename:VK_TRUE but 8311e5c31af7Sopenharmony_ci without ename:VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT enabled then the 8312e5c31af7Sopenharmony_ci current render pass instance must: have been begun by specifying a 8313e5c31af7Sopenharmony_ci slink:VkRenderPassSampleLocationsBeginInfoEXT structure whose 8314e5c31af7Sopenharmony_ci pname:pPostSubpassSampleLocations member contains an element with a 8315e5c31af7Sopenharmony_ci pname:subpassIndex matching the current subpass index and the 8316e5c31af7Sopenharmony_ci pname:sampleLocationsInfo member of that element must: match the 8317e5c31af7Sopenharmony_ci pname:sampleLocationsInfo specified in 8318e5c31af7Sopenharmony_ci slink:VkPipelineSampleLocationsStateCreateInfoEXT when the pipeline was 8319e5c31af7Sopenharmony_ci created 8320e5c31af7Sopenharmony_ciendif::VK_EXT_sample_locations[] 8321e5c31af7Sopenharmony_ciifdef::VK_EXT_transform_feedback[] 8322e5c31af7Sopenharmony_ci * [[VUID-vkCmdBindPipeline-None-02323]] 8323e5c31af7Sopenharmony_ci This command must: not be recorded when transform feedback is active 8324e5c31af7Sopenharmony_ciendif::VK_EXT_transform_feedback[] 8325e5c31af7Sopenharmony_ciifdef::VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline[] 8326e5c31af7Sopenharmony_ci * [[VUID-vkCmdBindPipeline-pipelineBindPoint-02391]] 8327e5c31af7Sopenharmony_ci If pname:pipelineBindPoint is 8328e5c31af7Sopenharmony_ci ename:VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR, the sname:VkCommandPool 8329e5c31af7Sopenharmony_ci that pname:commandBuffer was allocated from must: support compute 8330e5c31af7Sopenharmony_ci operations 8331e5c31af7Sopenharmony_ci * [[VUID-vkCmdBindPipeline-pipelineBindPoint-02392]] 8332e5c31af7Sopenharmony_ci If pname:pipelineBindPoint is 8333e5c31af7Sopenharmony_ci ename:VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR, pname:pipeline must: be a 8334e5c31af7Sopenharmony_ci ray tracing pipeline 8335e5c31af7Sopenharmony_ci * [[VUID-vkCmdBindPipeline-pipelineBindPoint-06721]] 8336e5c31af7Sopenharmony_ci If pname:pipelineBindPoint is 8337e5c31af7Sopenharmony_ci ename:VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR, pname:commandBuffer must: 8338e5c31af7Sopenharmony_ci not be a protected command buffer 8339e5c31af7Sopenharmony_ciendif::VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline[] 8340e5c31af7Sopenharmony_ciifdef::VK_EXT_pipeline_protected_access[] 8341e5c31af7Sopenharmony_ci * [[VUID-vkCmdBindPipeline-pipelineProtectedAccess-07408]] 8342e5c31af7Sopenharmony_ci If the <<features-pipelineProtectedAccess, 8343e5c31af7Sopenharmony_ci pname:pipelineProtectedAccess>> feature is enabled, and 8344e5c31af7Sopenharmony_ci pname:commandBuffer is a protected command buffer, pname:pipeline must: 8345e5c31af7Sopenharmony_ci have been created without 8346e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT 8347e5c31af7Sopenharmony_ci * [[VUID-vkCmdBindPipeline-pipelineProtectedAccess-07409]] 8348e5c31af7Sopenharmony_ci If the <<features-pipelineProtectedAccess, 8349e5c31af7Sopenharmony_ci pname:pipelineProtectedAccess>> feature is enabled, and 8350e5c31af7Sopenharmony_ci pname:commandBuffer is not a protected command buffer, pname:pipeline 8351e5c31af7Sopenharmony_ci must: have been created without 8352e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT 8353e5c31af7Sopenharmony_ciendif::VK_EXT_pipeline_protected_access[] 8354e5c31af7Sopenharmony_ciifdef::VK_KHR_pipeline_library[] 8355e5c31af7Sopenharmony_ci * [[VUID-vkCmdBindPipeline-pipeline-03382]] 8356e5c31af7Sopenharmony_ci pname:pipeline must: not have been created with 8357e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_LIBRARY_BIT_KHR set 8358e5c31af7Sopenharmony_ciendif::VK_KHR_pipeline_library[] 8359e5c31af7Sopenharmony_ciifdef::VK_NV_inherited_viewport_scissor[] 8360e5c31af7Sopenharmony_ci * [[VUID-vkCmdBindPipeline-commandBuffer-04808]] 8361e5c31af7Sopenharmony_ci If pname:commandBuffer is a secondary command buffer with 8362e5c31af7Sopenharmony_ci slink:VkCommandBufferInheritanceViewportScissorInfoNV::pname:viewportScissor2D 8363e5c31af7Sopenharmony_ci enabled and pname:pipelineBindPoint is 8364e5c31af7Sopenharmony_ci ename:VK_PIPELINE_BIND_POINT_GRAPHICS, then the pname:pipeline must: 8365e5c31af7Sopenharmony_ci have been created with ename:VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT or 8366e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_VIEWPORT, and 8367e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT or 8368e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_SCISSOR enabled 8369e5c31af7Sopenharmony_ciendif::VK_NV_inherited_viewport_scissor[] 8370e5c31af7Sopenharmony_ciifdef::VK_NV_inherited_viewport_scissor,VK_EXT_discard_rectangles[] 8371e5c31af7Sopenharmony_ci * [[VUID-vkCmdBindPipeline-commandBuffer-04809]] 8372e5c31af7Sopenharmony_ci If pname:commandBuffer is a secondary command buffer with 8373e5c31af7Sopenharmony_ci slink:VkCommandBufferInheritanceViewportScissorInfoNV::pname:viewportScissor2D 8374e5c31af7Sopenharmony_ci enabled and pname:pipelineBindPoint is 8375e5c31af7Sopenharmony_ci ename:VK_PIPELINE_BIND_POINT_GRAPHICS and pname:pipeline was created 8376e5c31af7Sopenharmony_ci with slink:VkPipelineDiscardRectangleStateCreateInfoEXT structure and 8377e5c31af7Sopenharmony_ci its pname:discardRectangleCount member is not `0`, or the pipeline was 8378e5c31af7Sopenharmony_ci created with ename:VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT 8379e5c31af7Sopenharmony_ci enabled, then the pipeline must: have been created with 8380e5c31af7Sopenharmony_ci ename:VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT enabled 8381e5c31af7Sopenharmony_ciendif::VK_NV_inherited_viewport_scissor,VK_EXT_discard_rectangles[] 8382e5c31af7Sopenharmony_ciifdef::VK_EXT_provoking_vertex[] 8383e5c31af7Sopenharmony_ci * [[VUID-vkCmdBindPipeline-pipelineBindPoint-04881]] 8384e5c31af7Sopenharmony_ci If pname:pipelineBindPoint is ename:VK_PIPELINE_BIND_POINT_GRAPHICS and 8385e5c31af7Sopenharmony_ci the <<limits-provokingVertexModePerPipeline, 8386e5c31af7Sopenharmony_ci pname:provokingVertexModePerPipeline>> limit is ename:VK_FALSE, then 8387e5c31af7Sopenharmony_ci pipeline's 8388e5c31af7Sopenharmony_ci slink:VkPipelineRasterizationProvokingVertexStateCreateInfoEXT::pname:provokingVertexMode 8389e5c31af7Sopenharmony_ci must: be the same as that of any other pipelines previously bound to 8390e5c31af7Sopenharmony_ci this bind point within the current render pass instance, including any 8391e5c31af7Sopenharmony_ci pipeline already bound when beginning the render pass instance 8392e5c31af7Sopenharmony_ciendif::VK_EXT_provoking_vertex[] 8393e5c31af7Sopenharmony_ciifdef::VK_HUAWEI_subpass_shading[] 8394e5c31af7Sopenharmony_ci * [[VUID-vkCmdBindPipeline-pipelineBindPoint-04949]] 8395e5c31af7Sopenharmony_ci If pname:pipelineBindPoint is 8396e5c31af7Sopenharmony_ci ename:VK_PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI, the 8397e5c31af7Sopenharmony_ci sname:VkCommandPool that pname:commandBuffer was allocated from must: 8398e5c31af7Sopenharmony_ci support compute operations 8399e5c31af7Sopenharmony_ci * [[VUID-vkCmdBindPipeline-pipelineBindPoint-04950]] 8400e5c31af7Sopenharmony_ci If pname:pipelineBindPoint is 8401e5c31af7Sopenharmony_ci ename:VK_PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI, pname:pipeline 8402e5c31af7Sopenharmony_ci must: be a subpass shading pipeline 8403e5c31af7Sopenharmony_ciendif::VK_HUAWEI_subpass_shading[] 8404e5c31af7Sopenharmony_ci**** 8405e5c31af7Sopenharmony_ci 8406e5c31af7Sopenharmony_ciinclude::{generated}/validity/protos/vkCmdBindPipeline.adoc[] 8407e5c31af7Sopenharmony_ci-- 8408e5c31af7Sopenharmony_ci 8409e5c31af7Sopenharmony_ci[open,refpage='VkPipelineBindPoint',desc='Specify the bind point of a pipeline object to a command buffer',type='enums'] 8410e5c31af7Sopenharmony_ci-- 8411e5c31af7Sopenharmony_ciPossible values of flink:vkCmdBindPipeline::pname:pipelineBindPoint, 8412e5c31af7Sopenharmony_cispecifying the bind point of a pipeline object, are: 8413e5c31af7Sopenharmony_ci 8414e5c31af7Sopenharmony_ciinclude::{generated}/api/enums/VkPipelineBindPoint.adoc[] 8415e5c31af7Sopenharmony_ci 8416e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_BIND_POINT_COMPUTE specifies binding as a compute 8417e5c31af7Sopenharmony_ci pipeline. 8418e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_BIND_POINT_GRAPHICS specifies binding as a graphics 8419e5c31af7Sopenharmony_ci pipeline. 8420e5c31af7Sopenharmony_ciifdef::VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline[] 8421e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR specifies binding as a ray 8422e5c31af7Sopenharmony_ci tracing pipeline. 8423e5c31af7Sopenharmony_ciendif::VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline[] 8424e5c31af7Sopenharmony_ciifdef::VK_HUAWEI_subpass_shading[] 8425e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI specifies binding as 8426e5c31af7Sopenharmony_ci a subpass shading pipeline. 8427e5c31af7Sopenharmony_ciendif::VK_HUAWEI_subpass_shading[] 8428e5c31af7Sopenharmony_ciifdef::VK_AMDX_shader_enqueue[] 8429e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_BIND_POINT_EXECUTION_GRAPH_AMDX specifies binding as 8430e5c31af7Sopenharmony_ci an <<executiongraphs, execution graph pipeline>>. 8431e5c31af7Sopenharmony_ciendif::VK_AMDX_shader_enqueue[] 8432e5c31af7Sopenharmony_ci-- 8433e5c31af7Sopenharmony_ci 8434e5c31af7Sopenharmony_ciifdef::VK_NV_device_generated_commands[] 8435e5c31af7Sopenharmony_ci[open,refpage='vkCmdBindPipelineShaderGroupNV',desc='Bind a pipeline object's shader group to a command buffer',type='protos'] 8436e5c31af7Sopenharmony_ci-- 8437e5c31af7Sopenharmony_ciFor pipelines that were created with the support of multiple shader groups 8438e5c31af7Sopenharmony_ci(see <<graphics-shadergroups,Graphics Pipeline Shader Groups>>), the regular 8439e5c31af7Sopenharmony_cifname:vkCmdBindPipeline command will bind Shader Group `0`. 8440e5c31af7Sopenharmony_ciTo explicitly bind a shader group use: 8441e5c31af7Sopenharmony_ci 8442e5c31af7Sopenharmony_ciinclude::{generated}/api/protos/vkCmdBindPipelineShaderGroupNV.adoc[] 8443e5c31af7Sopenharmony_ci 8444e5c31af7Sopenharmony_ci * pname:commandBuffer is the command buffer that the pipeline will be 8445e5c31af7Sopenharmony_ci bound to. 8446e5c31af7Sopenharmony_ci * pname:pipelineBindPoint is a elink:VkPipelineBindPoint value specifying 8447e5c31af7Sopenharmony_ci the bind point to which the pipeline will be bound. 8448e5c31af7Sopenharmony_ci * pname:pipeline is the pipeline to be bound. 8449e5c31af7Sopenharmony_ci * pname:groupIndex is the shader group to be bound. 8450e5c31af7Sopenharmony_ci 8451e5c31af7Sopenharmony_ci 8452e5c31af7Sopenharmony_ci.Valid Usage 8453e5c31af7Sopenharmony_ci**** 8454e5c31af7Sopenharmony_ci * [[VUID-vkCmdBindPipelineShaderGroupNV-groupIndex-02893]] 8455e5c31af7Sopenharmony_ci pname:groupIndex must: be `0` or less than the effective 8456e5c31af7Sopenharmony_ci slink:VkGraphicsPipelineShaderGroupsCreateInfoNV::pname:groupCount 8457e5c31af7Sopenharmony_ci including the referenced pipelines 8458e5c31af7Sopenharmony_ci * [[VUID-vkCmdBindPipelineShaderGroupNV-pipelineBindPoint-02894]] 8459e5c31af7Sopenharmony_ci The pname:pipelineBindPoint must: be 8460e5c31af7Sopenharmony_ci ename:VK_PIPELINE_BIND_POINT_GRAPHICS 8461e5c31af7Sopenharmony_ci * [[VUID-vkCmdBindPipelineShaderGroupNV-groupIndex-02895]] 8462e5c31af7Sopenharmony_ci The same restrictions as flink:vkCmdBindPipeline apply as if the bound 8463e5c31af7Sopenharmony_ci pipeline was created only with the Shader Group from the 8464e5c31af7Sopenharmony_ci pname:groupIndex information 8465e5c31af7Sopenharmony_ci * [[VUID-vkCmdBindPipelineShaderGroupNV-deviceGeneratedCommands-02896]] 8466e5c31af7Sopenharmony_ci The <<features-deviceGeneratedCommands, pname:deviceGeneratedCommands>> 8467e5c31af7Sopenharmony_ci feature must: be enabled 8468e5c31af7Sopenharmony_ci**** 8469e5c31af7Sopenharmony_ci 8470e5c31af7Sopenharmony_ciinclude::{generated}/validity/protos/vkCmdBindPipelineShaderGroupNV.adoc[] 8471e5c31af7Sopenharmony_ci-- 8472e5c31af7Sopenharmony_ciendif::VK_NV_device_generated_commands[] 8473e5c31af7Sopenharmony_ci 8474e5c31af7Sopenharmony_ciifdef::VK_EXT_shader_object[] 8475e5c31af7Sopenharmony_ci[[pipelines-shader-object-interaction]] 8476e5c31af7Sopenharmony_ci=== Interaction With Shader Objects 8477e5c31af7Sopenharmony_ci 8478e5c31af7Sopenharmony_ciIf the <<features-shaderObject, pname:shaderObject>> feature is enabled, 8479e5c31af7Sopenharmony_ciapplications can: use both pipelines and <<shaders-objects, shader objects>> 8480e5c31af7Sopenharmony_ciat the same time. 8481e5c31af7Sopenharmony_ciThe interaction between pipelines and shader objects is described in 8482e5c31af7Sopenharmony_ci<<shaders-objects-pipeline-interaction, Interaction with Pipelines>>. 8483e5c31af7Sopenharmony_ciendif::VK_EXT_shader_object[] 8484e5c31af7Sopenharmony_ci 8485e5c31af7Sopenharmony_ci[[pipelines-dynamic-state]] 8486e5c31af7Sopenharmony_ci== Dynamic State 8487e5c31af7Sopenharmony_ci 8488e5c31af7Sopenharmony_ciWhen a pipeline object is bound, any pipeline object state that is not 8489e5c31af7Sopenharmony_cispecified as dynamic is applied to the command buffer state. 8490e5c31af7Sopenharmony_ciPipeline object state that is specified as dynamic is not applied to the 8491e5c31af7Sopenharmony_cicommand buffer state at this time. 8492e5c31af7Sopenharmony_ciInstead, dynamic state can: be modified at any time and persists for the 8493e5c31af7Sopenharmony_cilifetime of the command buffer, or until modified by another dynamic state 8494e5c31af7Sopenharmony_cisetting command, or made invalid by another pipeline bind with that state 8495e5c31af7Sopenharmony_cispecified as static. 8496e5c31af7Sopenharmony_ci 8497e5c31af7Sopenharmony_ciWhen a pipeline object is bound, the following applies to each state 8498e5c31af7Sopenharmony_ciparameter: 8499e5c31af7Sopenharmony_ci 8500e5c31af7Sopenharmony_ci * If the state is not specified as dynamic in the new pipeline object, 8501e5c31af7Sopenharmony_ci then that command buffer state is overwritten by the state in the new 8502e5c31af7Sopenharmony_ci pipeline object. 8503e5c31af7Sopenharmony_ci Before any draw or dispatch call with this pipeline there must: not have 8504e5c31af7Sopenharmony_ci been any calls to any of the corresponding dynamic state setting 8505e5c31af7Sopenharmony_ci commands after this pipeline was bound. 8506e5c31af7Sopenharmony_ci * If the state is specified as dynamic in the new pipeline object, then 8507e5c31af7Sopenharmony_ci that command buffer state is not disturbed. 8508e5c31af7Sopenharmony_ci Before any draw or dispatch call with this pipeline there must: have 8509e5c31af7Sopenharmony_ci been at least one call to each of the corresponding dynamic state 8510e5c31af7Sopenharmony_ci setting commands. 8511e5c31af7Sopenharmony_ci The state-setting commands must: be recorded after command buffer 8512e5c31af7Sopenharmony_ci recording was begun, or after the last command binding a pipeline object 8513e5c31af7Sopenharmony_ci with that state specified as static, whichever was the latter. 8514e5c31af7Sopenharmony_ci * If the state is not included (corresponding pointer in 8515e5c31af7Sopenharmony_ci slink:VkGraphicsPipelineCreateInfo was `NULL` or was ignored) in the new 8516e5c31af7Sopenharmony_ci pipeline object, then that command buffer state is not disturbed. 8517e5c31af7Sopenharmony_ciifdef::VK_NV_mesh_shader,VK_EXT_mesh_shader[] 8518e5c31af7Sopenharmony_ci For example, mesh shading pipelines do not include vertex input state 8519e5c31af7Sopenharmony_ci and therefore do not disturb any such command buffer state. 8520e5c31af7Sopenharmony_ciendif::VK_NV_mesh_shader,VK_EXT_mesh_shader[] 8521e5c31af7Sopenharmony_ci 8522e5c31af7Sopenharmony_ciDynamic state that does not affect the result of operations can: be left 8523e5c31af7Sopenharmony_ciundefined:. 8524e5c31af7Sopenharmony_ci 8525e5c31af7Sopenharmony_ci[NOTE] 8526e5c31af7Sopenharmony_ci.Note 8527e5c31af7Sopenharmony_ci==== 8528e5c31af7Sopenharmony_ciFor example, if blending is disabled by the pipeline object state then the 8529e5c31af7Sopenharmony_cidynamic color blend constants do not need to be specified in the command 8530e5c31af7Sopenharmony_cibuffer, even if this state is specified as dynamic in the pipeline object. 8531e5c31af7Sopenharmony_ci==== 8532e5c31af7Sopenharmony_ci 8533e5c31af7Sopenharmony_ci 8534e5c31af7Sopenharmony_ciifdef::VK_AMD_shader_info,VK_KHR_pipeline_executable_properties,VK_EXT_pipeline_properties[] 8535e5c31af7Sopenharmony_ci[[pipelines-shader-information]] 8536e5c31af7Sopenharmony_ci== Pipeline Properties and Shader Information 8537e5c31af7Sopenharmony_ciendif::VK_AMD_shader_info,VK_KHR_pipeline_executable_properties,VK_EXT_pipeline_properties[] 8538e5c31af7Sopenharmony_ci 8539e5c31af7Sopenharmony_ciifdef::VK_KHR_pipeline_executable_properties[] 8540e5c31af7Sopenharmony_ci[open,refpage='vkGetPipelineExecutablePropertiesKHR',desc='Get the executables associated with a pipeline',type='protos'] 8541e5c31af7Sopenharmony_ci-- 8542e5c31af7Sopenharmony_ciWhen a pipeline is created, its state and shaders are compiled into zero or 8543e5c31af7Sopenharmony_cimore device-specific executables, which are used when executing commands 8544e5c31af7Sopenharmony_ciagainst that pipeline. 8545e5c31af7Sopenharmony_ciTo query the properties of these pipeline executables, call: 8546e5c31af7Sopenharmony_ci 8547e5c31af7Sopenharmony_ciinclude::{generated}/api/protos/vkGetPipelineExecutablePropertiesKHR.adoc[] 8548e5c31af7Sopenharmony_ci 8549e5c31af7Sopenharmony_ci * pname:device is the device that created the pipeline. 8550e5c31af7Sopenharmony_ci * pname:pPipelineInfo describes the pipeline being queried. 8551e5c31af7Sopenharmony_ci * pname:pExecutableCount is a pointer to an integer related to the number 8552e5c31af7Sopenharmony_ci of pipeline executables available or queried, as described below. 8553e5c31af7Sopenharmony_ci * pname:pProperties is either `NULL` or a pointer to an array of 8554e5c31af7Sopenharmony_ci slink:VkPipelineExecutablePropertiesKHR structures. 8555e5c31af7Sopenharmony_ci 8556e5c31af7Sopenharmony_ciIf pname:pProperties is `NULL`, then the number of pipeline executables 8557e5c31af7Sopenharmony_ciassociated with the pipeline is returned in pname:pExecutableCount. 8558e5c31af7Sopenharmony_ciOtherwise, pname:pExecutableCount must: point to a variable set by the user 8559e5c31af7Sopenharmony_cito the number of elements in the pname:pProperties array, and on return the 8560e5c31af7Sopenharmony_civariable is overwritten with the number of structures actually written to 8561e5c31af7Sopenharmony_cipname:pProperties. 8562e5c31af7Sopenharmony_ciIf pname:pExecutableCount is less than the number of pipeline executables 8563e5c31af7Sopenharmony_ciassociated with the pipeline, at most pname:pExecutableCount structures will 8564e5c31af7Sopenharmony_cibe written, and ename:VK_INCOMPLETE will be returned instead of 8565e5c31af7Sopenharmony_ciename:VK_SUCCESS, to indicate that not all the available properties were 8566e5c31af7Sopenharmony_cireturned. 8567e5c31af7Sopenharmony_ci 8568e5c31af7Sopenharmony_ci.Valid Usage 8569e5c31af7Sopenharmony_ci**** 8570e5c31af7Sopenharmony_ci * [[VUID-vkGetPipelineExecutablePropertiesKHR-pipelineExecutableInfo-03270]] 8571e5c31af7Sopenharmony_ci The <<features-pipelineExecutableInfo, pname:pipelineExecutableInfo>> 8572e5c31af7Sopenharmony_ci feature must: be enabled 8573e5c31af7Sopenharmony_ci * [[VUID-vkGetPipelineExecutablePropertiesKHR-pipeline-03271]] 8574e5c31af7Sopenharmony_ci The pname:pipeline member of pname:pPipelineInfo must: have been created 8575e5c31af7Sopenharmony_ci with pname:device 8576e5c31af7Sopenharmony_ci**** 8577e5c31af7Sopenharmony_ci 8578e5c31af7Sopenharmony_ciinclude::{generated}/validity/protos/vkGetPipelineExecutablePropertiesKHR.adoc[] 8579e5c31af7Sopenharmony_ci-- 8580e5c31af7Sopenharmony_ci 8581e5c31af7Sopenharmony_ci[open,refpage='VkPipelineExecutablePropertiesKHR',desc='Structure describing a pipeline executable',type='structs'] 8582e5c31af7Sopenharmony_ci-- 8583e5c31af7Sopenharmony_ciThe sname:VkPipelineExecutablePropertiesKHR structure is defined as: 8584e5c31af7Sopenharmony_ci 8585e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkPipelineExecutablePropertiesKHR.adoc[] 8586e5c31af7Sopenharmony_ci 8587e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 8588e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or a pointer to a structure extending this 8589e5c31af7Sopenharmony_ci structure. 8590e5c31af7Sopenharmony_ci * pname:stages is a bitmask of zero or more elink:VkShaderStageFlagBits 8591e5c31af7Sopenharmony_ci indicating which shader stages (if any) were principally used as inputs 8592e5c31af7Sopenharmony_ci to compile this pipeline executable. 8593e5c31af7Sopenharmony_ci * pname:name is an array of ename:VK_MAX_DESCRIPTION_SIZE code:char 8594e5c31af7Sopenharmony_ci containing a null-terminated UTF-8 string which is a short human 8595e5c31af7Sopenharmony_ci readable name for this pipeline executable. 8596e5c31af7Sopenharmony_ci * pname:description is an array of ename:VK_MAX_DESCRIPTION_SIZE code:char 8597e5c31af7Sopenharmony_ci containing a null-terminated UTF-8 string which is a human readable 8598e5c31af7Sopenharmony_ci description for this pipeline executable. 8599e5c31af7Sopenharmony_ci * pname:subgroupSize is the subgroup size with which this pipeline 8600e5c31af7Sopenharmony_ci executable is dispatched. 8601e5c31af7Sopenharmony_ci 8602e5c31af7Sopenharmony_ciNot all implementations have a 1:1 mapping between shader stages and 8603e5c31af7Sopenharmony_cipipeline executables and some implementations may: reduce a given shader 8604e5c31af7Sopenharmony_cistage to fixed function hardware programming such that no pipeline 8605e5c31af7Sopenharmony_ciexecutable is available. 8606e5c31af7Sopenharmony_ciNo guarantees are provided about the mapping between shader stages and 8607e5c31af7Sopenharmony_cipipeline executables and pname:stages should: be considered a best effort 8608e5c31af7Sopenharmony_cihint. 8609e5c31af7Sopenharmony_ciBecause the application cannot: rely on the pname:stages field to provide an 8610e5c31af7Sopenharmony_ciexact description, pname:name and pname:description provide a human readable 8611e5c31af7Sopenharmony_ciname and description which more accurately describes the given pipeline 8612e5c31af7Sopenharmony_ciexecutable. 8613e5c31af7Sopenharmony_ci 8614e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkPipelineExecutablePropertiesKHR.adoc[] 8615e5c31af7Sopenharmony_ci-- 8616e5c31af7Sopenharmony_ciendif::VK_KHR_pipeline_executable_properties[] 8617e5c31af7Sopenharmony_ci 8618e5c31af7Sopenharmony_ciifdef::VK_EXT_pipeline_properties[] 8619e5c31af7Sopenharmony_ci[open,refpage='vkGetPipelinePropertiesEXT',desc='Query pipeline properties',type='protos'] 8620e5c31af7Sopenharmony_ci-- 8621e5c31af7Sopenharmony_ciTo query the pipeline properties call: 8622e5c31af7Sopenharmony_ci 8623e5c31af7Sopenharmony_ciinclude::{generated}/api/protos/vkGetPipelinePropertiesEXT.adoc[] 8624e5c31af7Sopenharmony_ci 8625e5c31af7Sopenharmony_ci * pname:device is the logical device that created the pipeline. 8626e5c31af7Sopenharmony_ci * pname:pPipelineInfo is a pointer to a slink:VkPipelineInfoEXT structure 8627e5c31af7Sopenharmony_ci which describes the pipeline being queried. 8628e5c31af7Sopenharmony_ci * pname:pPipelineProperties is a pointer to a slink:VkBaseOutStructure 8629e5c31af7Sopenharmony_ci structure in which the pipeline properties will be written. 8630e5c31af7Sopenharmony_ci 8631e5c31af7Sopenharmony_ciTo query a pipeline's pname:pipelineIdentifier pass a 8632e5c31af7Sopenharmony_cislink:VkPipelinePropertiesIdentifierEXT structure in 8633e5c31af7Sopenharmony_cipname:pPipelineProperties. 8634e5c31af7Sopenharmony_ciEach pipeline is associated with a pname:pipelineIdentifier and the 8635e5c31af7Sopenharmony_ciidentifier is implementation specific. 8636e5c31af7Sopenharmony_ci 8637e5c31af7Sopenharmony_ci.Valid Usage 8638e5c31af7Sopenharmony_ci**** 8639e5c31af7Sopenharmony_ci * [[VUID-vkGetPipelinePropertiesEXT-pipeline-06738]] 8640e5c31af7Sopenharmony_ci The pname:pipeline member of pname:pPipelineInfo must: have been created 8641e5c31af7Sopenharmony_ci with pname:device 8642e5c31af7Sopenharmony_ci * [[VUID-vkGetPipelinePropertiesEXT-pPipelineProperties-06739]] 8643e5c31af7Sopenharmony_ci pname:pPipelineProperties must: be a valid pointer to a 8644e5c31af7Sopenharmony_ci slink:VkPipelinePropertiesIdentifierEXT structure 8645e5c31af7Sopenharmony_ci * [[VUID-vkGetPipelinePropertiesEXT-None-06766]] 8646e5c31af7Sopenharmony_ci The <<features-pipelinePropertiesIdentifier, 8647e5c31af7Sopenharmony_ci pname:pipelinePropertiesIdentifier>> feature must: be enabled 8648e5c31af7Sopenharmony_ci**** 8649e5c31af7Sopenharmony_ci 8650e5c31af7Sopenharmony_ciinclude::{generated}/validity/protos/vkGetPipelinePropertiesEXT.adoc[] 8651e5c31af7Sopenharmony_ci-- 8652e5c31af7Sopenharmony_ci 8653e5c31af7Sopenharmony_ci[open,refpage='VkPipelinePropertiesIdentifierEXT',desc='Structure used to retrieve pipeline properties',type='structs'] 8654e5c31af7Sopenharmony_ci-- 8655e5c31af7Sopenharmony_ciThe sname:VkPipelinePropertiesIdentifierEXT structure is defined as: 8656e5c31af7Sopenharmony_ci 8657e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkPipelinePropertiesIdentifierEXT.adoc[] 8658e5c31af7Sopenharmony_ci 8659e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 8660e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or a pointer to a structure extending this 8661e5c31af7Sopenharmony_ci structure. 8662e5c31af7Sopenharmony_ci * pname:pipelineIdentifier is an array of ename:VK_UUID_SIZE code:uint8_t 8663e5c31af7Sopenharmony_ci values into which the pipeline identifier will be written. 8664e5c31af7Sopenharmony_ci 8665e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkPipelinePropertiesIdentifierEXT.adoc[] 8666e5c31af7Sopenharmony_ci-- 8667e5c31af7Sopenharmony_ciendif::VK_EXT_pipeline_properties[] 8668e5c31af7Sopenharmony_ci 8669e5c31af7Sopenharmony_ci// This structure is used by both vkGetPipelineExecutablePropertiesKHR and 8670e5c31af7Sopenharmony_ci// vkGetPipelinePropertiesEXT above, placing it in a nonstandard position. 8671e5c31af7Sopenharmony_ciifdef::VK_KHR_pipeline_executable_properties,VK_EXT_pipeline_properties[] 8672e5c31af7Sopenharmony_ci[open,refpage='VkPipelineInfoKHR',desc='Structure describing a pipeline',type='structs',alias='VkPipelineInfoEXT'] 8673e5c31af7Sopenharmony_ci-- 8674e5c31af7Sopenharmony_ciThe sname:VkPipelineInfoKHR structure is defined as: 8675e5c31af7Sopenharmony_ci 8676e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkPipelineInfoKHR.adoc[] 8677e5c31af7Sopenharmony_ci 8678e5c31af7Sopenharmony_ciifdef::VK_EXT_pipeline_properties[] 8679e5c31af7Sopenharmony_cior the equivalent 8680e5c31af7Sopenharmony_ci 8681e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkPipelineInfoEXT.adoc[] 8682e5c31af7Sopenharmony_ciendif::VK_EXT_pipeline_properties[] 8683e5c31af7Sopenharmony_ci 8684e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 8685e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or a pointer to a structure extending this 8686e5c31af7Sopenharmony_ci structure. 8687e5c31af7Sopenharmony_ci * pname:pipeline is a sname:VkPipeline handle. 8688e5c31af7Sopenharmony_ci 8689e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkPipelineInfoKHR.adoc[] 8690e5c31af7Sopenharmony_ci-- 8691e5c31af7Sopenharmony_ciendif::VK_KHR_pipeline_executable_properties,VK_EXT_pipeline_properties[] 8692e5c31af7Sopenharmony_ci 8693e5c31af7Sopenharmony_ciifdef::VK_KHR_pipeline_executable_properties[] 8694e5c31af7Sopenharmony_ci[open,refpage='vkGetPipelineExecutableStatisticsKHR',desc='Get compile time statistics associated with a pipeline executable',type='protos'] 8695e5c31af7Sopenharmony_ci-- 8696e5c31af7Sopenharmony_ciEach pipeline executable may: have a set of statistics associated with it 8697e5c31af7Sopenharmony_cithat are generated by the pipeline compilation process. 8698e5c31af7Sopenharmony_ciThese statistics may: include things such as instruction counts, amount of 8699e5c31af7Sopenharmony_cispilling (if any), maximum number of simultaneous threads, or anything else 8700e5c31af7Sopenharmony_ciwhich may: aid developers in evaluating the expected performance of a 8701e5c31af7Sopenharmony_cishader. 8702e5c31af7Sopenharmony_ciTo query the compile time statistics associated with a pipeline executable, 8703e5c31af7Sopenharmony_cicall: 8704e5c31af7Sopenharmony_ci 8705e5c31af7Sopenharmony_ciinclude::{generated}/api/protos/vkGetPipelineExecutableStatisticsKHR.adoc[] 8706e5c31af7Sopenharmony_ci 8707e5c31af7Sopenharmony_ci * pname:device is the device that created the pipeline. 8708e5c31af7Sopenharmony_ci * pname:pExecutableInfo describes the pipeline executable being queried. 8709e5c31af7Sopenharmony_ci * pname:pStatisticCount is a pointer to an integer related to the number 8710e5c31af7Sopenharmony_ci of statistics available or queried, as described below. 8711e5c31af7Sopenharmony_ci * pname:pStatistics is either `NULL` or a pointer to an array of 8712e5c31af7Sopenharmony_ci slink:VkPipelineExecutableStatisticKHR structures. 8713e5c31af7Sopenharmony_ci 8714e5c31af7Sopenharmony_ciIf pname:pStatistics is `NULL`, then the number of statistics associated 8715e5c31af7Sopenharmony_ciwith the pipeline executable is returned in pname:pStatisticCount. 8716e5c31af7Sopenharmony_ciOtherwise, pname:pStatisticCount must: point to a variable set by the user 8717e5c31af7Sopenharmony_cito the number of elements in the pname:pStatistics array, and on return the 8718e5c31af7Sopenharmony_civariable is overwritten with the number of structures actually written to 8719e5c31af7Sopenharmony_cipname:pStatistics. 8720e5c31af7Sopenharmony_ciIf pname:pStatisticCount is less than the number of statistics associated 8721e5c31af7Sopenharmony_ciwith the pipeline executable, at most pname:pStatisticCount structures will 8722e5c31af7Sopenharmony_cibe written, and ename:VK_INCOMPLETE will be returned instead of 8723e5c31af7Sopenharmony_ciename:VK_SUCCESS, to indicate that not all the available statistics were 8724e5c31af7Sopenharmony_cireturned. 8725e5c31af7Sopenharmony_ci 8726e5c31af7Sopenharmony_ci.Valid Usage 8727e5c31af7Sopenharmony_ci**** 8728e5c31af7Sopenharmony_ci * [[VUID-vkGetPipelineExecutableStatisticsKHR-pipelineExecutableInfo-03272]] 8729e5c31af7Sopenharmony_ci The <<features-pipelineExecutableInfo, pname:pipelineExecutableInfo>> 8730e5c31af7Sopenharmony_ci feature must: be enabled 8731e5c31af7Sopenharmony_ci * [[VUID-vkGetPipelineExecutableStatisticsKHR-pipeline-03273]] 8732e5c31af7Sopenharmony_ci The pname:pipeline member of pname:pExecutableInfo must: have been 8733e5c31af7Sopenharmony_ci created with pname:device 8734e5c31af7Sopenharmony_ci * [[VUID-vkGetPipelineExecutableStatisticsKHR-pipeline-03274]] 8735e5c31af7Sopenharmony_ci The pname:pipeline member of pname:pExecutableInfo must: have been 8736e5c31af7Sopenharmony_ci created with ename:VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR 8737e5c31af7Sopenharmony_ci**** 8738e5c31af7Sopenharmony_ci 8739e5c31af7Sopenharmony_ciinclude::{generated}/validity/protos/vkGetPipelineExecutableStatisticsKHR.adoc[] 8740e5c31af7Sopenharmony_ci-- 8741e5c31af7Sopenharmony_ci 8742e5c31af7Sopenharmony_ci[open,refpage='VkPipelineExecutableInfoKHR',desc='Structure describing a pipeline executable to query for associated statistics or internal representations',type='structs'] 8743e5c31af7Sopenharmony_ci-- 8744e5c31af7Sopenharmony_ciThe sname:VkPipelineExecutableInfoKHR structure is defined as: 8745e5c31af7Sopenharmony_ci 8746e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkPipelineExecutableInfoKHR.adoc[] 8747e5c31af7Sopenharmony_ci 8748e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 8749e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or a pointer to a structure extending this 8750e5c31af7Sopenharmony_ci structure. 8751e5c31af7Sopenharmony_ci * pname:pipeline is the pipeline to query. 8752e5c31af7Sopenharmony_ci * pname:executableIndex is the index of the pipeline executable to query 8753e5c31af7Sopenharmony_ci in the array of executable properties returned by 8754e5c31af7Sopenharmony_ci flink:vkGetPipelineExecutablePropertiesKHR. 8755e5c31af7Sopenharmony_ci 8756e5c31af7Sopenharmony_ci.Valid Usage 8757e5c31af7Sopenharmony_ci**** 8758e5c31af7Sopenharmony_ci * [[VUID-VkPipelineExecutableInfoKHR-executableIndex-03275]] 8759e5c31af7Sopenharmony_ci pname:executableIndex must: be less than the number of pipeline 8760e5c31af7Sopenharmony_ci executables associated with pname:pipeline as returned in the 8761e5c31af7Sopenharmony_ci pname:pExecutableCount parameter of 8762e5c31af7Sopenharmony_ci fname:vkGetPipelineExecutablePropertiesKHR 8763e5c31af7Sopenharmony_ci**** 8764e5c31af7Sopenharmony_ci 8765e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkPipelineExecutableInfoKHR.adoc[] 8766e5c31af7Sopenharmony_ci-- 8767e5c31af7Sopenharmony_ci 8768e5c31af7Sopenharmony_ci[open,refpage='VkPipelineExecutableStatisticKHR',desc='Structure describing a compile time pipeline executable statistic',type='structs'] 8769e5c31af7Sopenharmony_ci-- 8770e5c31af7Sopenharmony_ciThe sname:VkPipelineExecutableStatisticKHR structure is defined as: 8771e5c31af7Sopenharmony_ci 8772e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkPipelineExecutableStatisticKHR.adoc[] 8773e5c31af7Sopenharmony_ci 8774e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 8775e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or a pointer to a structure extending this 8776e5c31af7Sopenharmony_ci structure. 8777e5c31af7Sopenharmony_ci * pname:name is an array of ename:VK_MAX_DESCRIPTION_SIZE code:char 8778e5c31af7Sopenharmony_ci containing a null-terminated UTF-8 string which is a short human 8779e5c31af7Sopenharmony_ci readable name for this statistic. 8780e5c31af7Sopenharmony_ci * pname:description is an array of ename:VK_MAX_DESCRIPTION_SIZE code:char 8781e5c31af7Sopenharmony_ci containing a null-terminated UTF-8 string which is a human readable 8782e5c31af7Sopenharmony_ci description for this statistic. 8783e5c31af7Sopenharmony_ci * pname:format is a elink:VkPipelineExecutableStatisticFormatKHR value 8784e5c31af7Sopenharmony_ci specifying the format of the data found in pname:value. 8785e5c31af7Sopenharmony_ci * pname:value is the value of this statistic. 8786e5c31af7Sopenharmony_ci 8787e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkPipelineExecutableStatisticKHR.adoc[] 8788e5c31af7Sopenharmony_ci-- 8789e5c31af7Sopenharmony_ci 8790e5c31af7Sopenharmony_ci[open,refpage='VkPipelineExecutableStatisticFormatKHR',desc='Enum describing a pipeline executable statistic's data format',type='enums'] 8791e5c31af7Sopenharmony_ci-- 8792e5c31af7Sopenharmony_ciThe ename:VkPipelineExecutableStatisticFormatKHR enum is defined as: 8793e5c31af7Sopenharmony_ci 8794e5c31af7Sopenharmony_ciinclude::{generated}/api/enums/VkPipelineExecutableStatisticFormatKHR.adoc[] 8795e5c31af7Sopenharmony_ci 8796e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR specifies that 8797e5c31af7Sopenharmony_ci the statistic is returned as a 32-bit boolean value which must: be 8798e5c31af7Sopenharmony_ci either ename:VK_TRUE or ename:VK_FALSE and should: be read from the 8799e5c31af7Sopenharmony_ci fname:b32 field of sname:VkPipelineExecutableStatisticValueKHR. 8800e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR specifies that 8801e5c31af7Sopenharmony_ci the statistic is returned as a signed 64-bit integer and should: be read 8802e5c31af7Sopenharmony_ci from the fname:i64 field of sname:VkPipelineExecutableStatisticValueKHR. 8803e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR specifies that 8804e5c31af7Sopenharmony_ci the statistic is returned as an unsigned 64-bit integer and should: be 8805e5c31af7Sopenharmony_ci read from the fname:u64 field of 8806e5c31af7Sopenharmony_ci sname:VkPipelineExecutableStatisticValueKHR. 8807e5c31af7Sopenharmony_ci * ename:VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR specifies that 8808e5c31af7Sopenharmony_ci the statistic is returned as a 64-bit floating-point value and should: 8809e5c31af7Sopenharmony_ci be read from the fname:f64 field of 8810e5c31af7Sopenharmony_ci sname:VkPipelineExecutableStatisticValueKHR. 8811e5c31af7Sopenharmony_ci-- 8812e5c31af7Sopenharmony_ci 8813e5c31af7Sopenharmony_ci[open,refpage='VkPipelineExecutableStatisticValueKHR',desc='A union describing a pipeline executable statistic's value',type='structs'] 8814e5c31af7Sopenharmony_ci-- 8815e5c31af7Sopenharmony_ciThe sname:VkPipelineExecutableStatisticValueKHR union is defined as: 8816e5c31af7Sopenharmony_ci 8817e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkPipelineExecutableStatisticValueKHR.adoc[] 8818e5c31af7Sopenharmony_ci 8819e5c31af7Sopenharmony_ci * pname:b32 is the 32-bit boolean value if the 8820e5c31af7Sopenharmony_ci ename:VkPipelineExecutableStatisticFormatKHR is 8821e5c31af7Sopenharmony_ci ename:VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR. 8822e5c31af7Sopenharmony_ci * pname:i64 is the signed 64-bit integer value if the 8823e5c31af7Sopenharmony_ci ename:VkPipelineExecutableStatisticFormatKHR is 8824e5c31af7Sopenharmony_ci ename:VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR. 8825e5c31af7Sopenharmony_ci * pname:u64 is the unsigned 64-bit integer value if the 8826e5c31af7Sopenharmony_ci ename:VkPipelineExecutableStatisticFormatKHR is 8827e5c31af7Sopenharmony_ci ename:VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR. 8828e5c31af7Sopenharmony_ci * pname:f64 is the 64-bit floating-point value if the 8829e5c31af7Sopenharmony_ci ename:VkPipelineExecutableStatisticFormatKHR is 8830e5c31af7Sopenharmony_ci ename:VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR. 8831e5c31af7Sopenharmony_ci 8832e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkPipelineExecutableStatisticValueKHR.adoc[] 8833e5c31af7Sopenharmony_ci-- 8834e5c31af7Sopenharmony_ci 8835e5c31af7Sopenharmony_ci[open,refpage='vkGetPipelineExecutableInternalRepresentationsKHR',desc='Get internal representations of the pipeline executable',type='protos'] 8836e5c31af7Sopenharmony_ci-- 8837e5c31af7Sopenharmony_ciEach pipeline executable may: have one or more text or binary internal 8838e5c31af7Sopenharmony_cirepresentations associated with it which are generated as part of the 8839e5c31af7Sopenharmony_cicompile process. 8840e5c31af7Sopenharmony_ciThese may: include the final shader assembly, a binary form of the compiled 8841e5c31af7Sopenharmony_cishader, or the shader compiler's internal representation at any number of 8842e5c31af7Sopenharmony_ciintermediate compile steps. 8843e5c31af7Sopenharmony_ciTo query the internal representations associated with a pipeline executable, 8844e5c31af7Sopenharmony_cicall: 8845e5c31af7Sopenharmony_ci 8846e5c31af7Sopenharmony_ciinclude::{generated}/api/protos/vkGetPipelineExecutableInternalRepresentationsKHR.adoc[] 8847e5c31af7Sopenharmony_ci 8848e5c31af7Sopenharmony_ci * pname:device is the device that created the pipeline. 8849e5c31af7Sopenharmony_ci * pname:pExecutableInfo describes the pipeline executable being queried. 8850e5c31af7Sopenharmony_ci * pname:pInternalRepresentationCount is a pointer to an integer related to 8851e5c31af7Sopenharmony_ci the number of internal representations available or queried, as 8852e5c31af7Sopenharmony_ci described below. 8853e5c31af7Sopenharmony_ci * pname:pInternalRepresentations is either `NULL` or a pointer to an array 8854e5c31af7Sopenharmony_ci of slink:VkPipelineExecutableInternalRepresentationKHR structures. 8855e5c31af7Sopenharmony_ci 8856e5c31af7Sopenharmony_ciIf pname:pInternalRepresentations is `NULL`, then the number of internal 8857e5c31af7Sopenharmony_cirepresentations associated with the pipeline executable is returned in 8858e5c31af7Sopenharmony_cipname:pInternalRepresentationCount. 8859e5c31af7Sopenharmony_ciOtherwise, pname:pInternalRepresentationCount must: point to a variable set 8860e5c31af7Sopenharmony_ciby the user to the number of elements in the pname:pInternalRepresentations 8861e5c31af7Sopenharmony_ciarray, and on return the variable is overwritten with the number of 8862e5c31af7Sopenharmony_cistructures actually written to pname:pInternalRepresentations. 8863e5c31af7Sopenharmony_ciIf pname:pInternalRepresentationCount is less than the number of internal 8864e5c31af7Sopenharmony_cirepresentations associated with the pipeline executable, at most 8865e5c31af7Sopenharmony_cipname:pInternalRepresentationCount structures will be written, and 8866e5c31af7Sopenharmony_ciename:VK_INCOMPLETE will be returned instead of ename:VK_SUCCESS, to 8867e5c31af7Sopenharmony_ciindicate that not all the available representations were returned. 8868e5c31af7Sopenharmony_ci 8869e5c31af7Sopenharmony_ciWhile the details of the internal representations remain 8870e5c31af7Sopenharmony_ciimplementation-dependent, the implementation should: order the internal 8871e5c31af7Sopenharmony_cirepresentations in the order in which they occur in the compiled pipeline 8872e5c31af7Sopenharmony_ciwith the final shader assembly (if any) last. 8873e5c31af7Sopenharmony_ci 8874e5c31af7Sopenharmony_ci.Valid Usage 8875e5c31af7Sopenharmony_ci**** 8876e5c31af7Sopenharmony_ci * [[VUID-vkGetPipelineExecutableInternalRepresentationsKHR-pipelineExecutableInfo-03276]] 8877e5c31af7Sopenharmony_ci The <<features-pipelineExecutableInfo, pname:pipelineExecutableInfo>> 8878e5c31af7Sopenharmony_ci feature must: be enabled 8879e5c31af7Sopenharmony_ci * [[VUID-vkGetPipelineExecutableInternalRepresentationsKHR-pipeline-03277]] 8880e5c31af7Sopenharmony_ci The pname:pipeline member of pname:pExecutableInfo must: have been 8881e5c31af7Sopenharmony_ci created with pname:device 8882e5c31af7Sopenharmony_ci * [[VUID-vkGetPipelineExecutableInternalRepresentationsKHR-pipeline-03278]] 8883e5c31af7Sopenharmony_ci The pname:pipeline member of pname:pExecutableInfo must: have been 8884e5c31af7Sopenharmony_ci created with 8885e5c31af7Sopenharmony_ci ename:VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR 8886e5c31af7Sopenharmony_ci**** 8887e5c31af7Sopenharmony_ci 8888e5c31af7Sopenharmony_ciinclude::{generated}/validity/protos/vkGetPipelineExecutableInternalRepresentationsKHR.adoc[] 8889e5c31af7Sopenharmony_ci-- 8890e5c31af7Sopenharmony_ci 8891e5c31af7Sopenharmony_ci[open,refpage='VkPipelineExecutableInternalRepresentationKHR',desc='Structure describing the textual form of a pipeline executable internal representation',type='structs'] 8892e5c31af7Sopenharmony_ci-- 8893e5c31af7Sopenharmony_ciThe sname:VkPipelineExecutableInternalRepresentationKHR structure is defined 8894e5c31af7Sopenharmony_cias: 8895e5c31af7Sopenharmony_ci 8896e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkPipelineExecutableInternalRepresentationKHR.adoc[] 8897e5c31af7Sopenharmony_ci 8898e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 8899e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or a pointer to a structure extending this 8900e5c31af7Sopenharmony_ci structure. 8901e5c31af7Sopenharmony_ci * pname:name is an array of ename:VK_MAX_DESCRIPTION_SIZE code:char 8902e5c31af7Sopenharmony_ci containing a null-terminated UTF-8 string which is a short human 8903e5c31af7Sopenharmony_ci readable name for this internal representation. 8904e5c31af7Sopenharmony_ci * pname:description is an array of ename:VK_MAX_DESCRIPTION_SIZE code:char 8905e5c31af7Sopenharmony_ci containing a null-terminated UTF-8 string which is a human readable 8906e5c31af7Sopenharmony_ci description for this internal representation. 8907e5c31af7Sopenharmony_ci * pname:isText specifies whether the returned data is text or opaque data. 8908e5c31af7Sopenharmony_ci If pname:isText is ename:VK_TRUE then the data returned in pname:pData 8909e5c31af7Sopenharmony_ci is text and is guaranteed to be a null-terminated UTF-8 string. 8910e5c31af7Sopenharmony_ci * pname:dataSize is an integer related to the size, in bytes, of the 8911e5c31af7Sopenharmony_ci internal representation's data, as described below. 8912e5c31af7Sopenharmony_ci * pname:pData is either `NULL` or a pointer to a block of data into which 8913e5c31af7Sopenharmony_ci the implementation will write the internal representation. 8914e5c31af7Sopenharmony_ci 8915e5c31af7Sopenharmony_ciIf pname:pData is `NULL`, then the size, in bytes, of the internal 8916e5c31af7Sopenharmony_cirepresentation data is returned in pname:dataSize. 8917e5c31af7Sopenharmony_ciOtherwise, pname:dataSize must be the size of the buffer, in bytes, pointed 8918e5c31af7Sopenharmony_cito by pname:pData and on return pname:dataSize is overwritten with the 8919e5c31af7Sopenharmony_cinumber of bytes of data actually written to pname:pData including any 8920e5c31af7Sopenharmony_citrailing null character. 8921e5c31af7Sopenharmony_ciIf pname:dataSize is less than the size, in bytes, of the internal 8922e5c31af7Sopenharmony_cirepresentation's data, at most pname:dataSize bytes of data will be written 8923e5c31af7Sopenharmony_cito pname:pData, and ename:VK_INCOMPLETE will be returned instead of 8924e5c31af7Sopenharmony_ciename:VK_SUCCESS, to indicate that not all the available representation was 8925e5c31af7Sopenharmony_cireturned. 8926e5c31af7Sopenharmony_ci 8927e5c31af7Sopenharmony_ciIf pname:isText is ename:VK_TRUE and pname:pData is not `NULL` and 8928e5c31af7Sopenharmony_cipname:dataSize is not zero, the last byte written to pname:pData will be a 8929e5c31af7Sopenharmony_cinull character. 8930e5c31af7Sopenharmony_ci 8931e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkPipelineExecutableInternalRepresentationKHR.adoc[] 8932e5c31af7Sopenharmony_ci-- 8933e5c31af7Sopenharmony_ciendif::VK_KHR_pipeline_executable_properties[] 8934e5c31af7Sopenharmony_ci 8935e5c31af7Sopenharmony_ci 8936e5c31af7Sopenharmony_ciifdef::VK_AMD_shader_info[] 8937e5c31af7Sopenharmony_ciinclude::{chapters}/VK_AMD_shader_info.adoc[] 8938e5c31af7Sopenharmony_ciendif::VK_AMD_shader_info[] 8939e5c31af7Sopenharmony_ci 8940e5c31af7Sopenharmony_ci 8941e5c31af7Sopenharmony_ci// These includes have their own section headers 8942e5c31af7Sopenharmony_ci 8943e5c31af7Sopenharmony_ciifdef::VK_AMD_pipeline_compiler_control[] 8944e5c31af7Sopenharmony_ciinclude::{chapters}/VK_AMD_pipeline_compiler_control.adoc[] 8945e5c31af7Sopenharmony_ciendif::VK_AMD_pipeline_compiler_control[] 8946e5c31af7Sopenharmony_ci 8947e5c31af7Sopenharmony_ciifdef::VK_VERSION_1_3,VK_EXT_pipeline_creation_feedback[] 8948e5c31af7Sopenharmony_ciinclude::{chapters}/VK_EXT_pipeline_creation_feedback/pipelines.adoc[] 8949e5c31af7Sopenharmony_ciendif::VK_VERSION_1_3,VK_EXT_pipeline_creation_feedback[] 8950