// Copyright (c) 2019-2020 Advanced Micro Devices, Inc.
//
// SPDX-License-Identifier: CC-BY-4.0

// This section is included inside the Pipelines chapter (pipelines.txt)

[[pipelines-compiler-control]]
== Pipeline Compiler Control

[open,refpage='VkPipelineCompilerControlCreateInfoAMD',desc='Structure used to pass compilation control flags to a pipeline',type='structs']
--
The compilation of a pipeline can: be tuned by adding a
sname:VkPipelineCompilerControlCreateInfoAMD structure to the pname:pNext
chain of slink:VkGraphicsPipelineCreateInfo or
slink:VkComputePipelineCreateInfo.

include::{generated}/api/structs/VkPipelineCompilerControlCreateInfoAMD.txt[]

  * pname:sType is the type of this structure.
  * pname:pNext is `NULL` or a pointer to a structure extending this
    structure.
  * pname:compilerControlFlags is a bitmask of
    elink:VkPipelineCompilerControlFlagBitsAMD affecting how the pipeline
    will be compiled.

include::{generated}/validity/structs/VkPipelineCompilerControlCreateInfoAMD.txt[]
--

[open,refpage='VkPipelineCompilerControlFlagBitsAMD',desc='Enum specifying available compilation control flags',type='enums']
--
There are currently no available flags for this extension; flags will be
added by future versions of this extension.

include::{generated}/api/enums/VkPipelineCompilerControlFlagBitsAMD.txt[]
--

[open,refpage='VkPipelineCompilerControlFlagsAMD',desc='Bitmask of VkPipelineCompilerControlFlagBitsAMD',type='flags']
--
include::{generated}/api/flags/VkPipelineCompilerControlFlagsAMD.txt[]

tname:VkPipelineCompilerControlFlagsAMD is a bitmask type for setting a mask
of zero or more elink:VkPipelineCompilerControlFlagBitsAMD.
--
