| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Vulkan.Extensions.VK_EXT_shader_object
Description
Name
VK_EXT_shader_object - device extension
VK_EXT_shader_object
- Name String
VK_EXT_shader_object
- Extension Type
- Device extension
- Registered Extension Number
- 483
- Revision
- 1
- Ratification Status
- Ratified
- Extension and Version Dependencies
VK_KHR_get_physical_device_properties2 or
VK_KHR_dynamic_rendering or Vulkan Version 1.3
- API Interactions
- Interacts with VK_VERSION_1_1
- Interacts with VK_VERSION_1_3
- Interacts with VK_EXT_blend_operation_advanced
- Interacts with VK_EXT_conservative_rasterization
- Interacts with VK_EXT_depth_clamp_control
- Interacts with VK_EXT_depth_clip_control
- Interacts with VK_EXT_depth_clip_enable
- Interacts with VK_EXT_fragment_density_map
- Interacts with VK_EXT_line_rasterization
- Interacts with VK_EXT_mesh_shader
- Interacts with VK_EXT_provoking_vertex
- Interacts with VK_EXT_sample_locations
- Interacts with VK_EXT_subgroup_size_control
- Interacts with VK_EXT_transform_feedback
- Interacts with VK_KHR_device_group
- Interacts with VK_KHR_fragment_shading_rate
- Interacts with VK_NV_clip_space_w_scaling
- Interacts with VK_NV_coverage_reduction_mode
- Interacts with VK_NV_fragment_coverage_to_color
- Interacts with VK_NV_framebuffer_mixed_samples
- Interacts with VK_NV_mesh_shader
- Interacts with VK_NV_representative_fragment_test
- Interacts with VK_NV_shading_rate_image
- Interacts with VK_NV_viewport_swizzle
- Contact
- Extension Proposal
- VK_EXT_shader_object
Other Extension Metadata
- Last Modified Date
- 2023-03-30
- Interactions and External Dependencies
- Interacts with
VK_EXT_extended_dynamic_state - Interacts with
VK_EXT_extended_dynamic_state2 - Interacts with
VK_EXT_extended_dynamic_state3 - Interacts with
VK_EXT_vertex_input_dynamic_state
- Interacts with
- IP Status
- No known IP claims.
- Contributors
- Piers Daniell, NVIDIA
- Sandy Jamieson, Nintendo
- Žiga Markuš, LunarG
- Tobias Hector, AMD
- Alex Walters, Imagination
- Shahbaz Youssefi, Google
- Ralph Potter, Samsung
- Jan-Harald Fredriksen, ARM
- Connor Abott, Valve
- Arseny Kapoulkine, Roblox
- Patrick Doane, Activision
- Jeff Leger, Qualcomm
- Stu Smith, AMD
- Chris Glover, Google
- Ricardo Garcia, Igalia
- Faith Ekstrand, Collabora
- Timur Kristóf, Valve
- Caterina Shablia, Collabora
- Daniel Koch, NVIDIA
- Alyssa Rosenzweig, Collabora
- Mike Blumenkrantz, Valve
- Samuel Pitoiset, Valve
- Qun Lin, AMD
- Spencer Fricke, LunarG
- Soroush Faghihi Kashani, Imagination
Description
This extension introduces a new ShaderEXT
object type which represents a single compiled shader stage. Shader
objects provide a more flexible alternative to
Pipeline objects, which may be helpful in
certain use cases.
New Object Types
New Commands
cmdBindVertexBuffers2EXTcmdSetAlphaToCoverageEnableEXTcmdSetAlphaToOneEnableEXTcmdSetColorBlendEnableEXTcmdSetColorBlendEquationEXTcmdSetColorWriteMaskEXTcmdSetCullModeEXTcmdSetDepthBiasEnableEXTcmdSetDepthBoundsTestEnableEXTcmdSetDepthClampEnableEXTcmdSetDepthCompareOpEXTcmdSetDepthTestEnableEXTcmdSetDepthWriteEnableEXTcmdSetFrontFaceEXTcmdSetLogicOpEXTcmdSetLogicOpEnableEXTcmdSetPatchControlPointsEXTcmdSetPolygonModeEXTcmdSetPrimitiveRestartEnableEXTcmdSetPrimitiveTopologyEXTcmdSetRasterizationSamplesEXTcmdSetRasterizerDiscardEnableEXTcmdSetSampleMaskEXTcmdSetScissorWithCountEXTcmdSetStencilOpEXTcmdSetStencilTestEnableEXTcmdSetTessellationDomainOriginEXTcmdSetVertexInputEXTcmdSetViewportWithCountEXTcreateShadersEXTdestroyShaderEXTgetShaderBinaryDataEXT
If VK_EXT_blend_operation_advanced is supported:
If VK_EXT_conservative_rasterization is supported:
If VK_EXT_depth_clamp_control is supported:
If VK_EXT_depth_clip_control is supported:
If VK_EXT_depth_clip_enable is supported:
If VK_EXT_line_rasterization is supported:
If VK_EXT_provoking_vertex is supported:
If VK_EXT_sample_locations is supported:
If VK_EXT_transform_feedback is supported:
If VK_NV_clip_space_w_scaling is supported:
If VK_NV_coverage_reduction_mode is supported:
If VK_NV_fragment_coverage_to_color is supported:
If VK_NV_framebuffer_mixed_samples is supported:
If VK_NV_representative_fragment_test is supported:
If VK_NV_shading_rate_image is supported:
If VK_NV_viewport_swizzle is supported:
New Structures
ColorBlendEquationEXTShaderCreateInfoEXTVertexInputAttributeDescription2EXTVertexInputBindingDescription2EXTExtending
PhysicalDeviceFeatures2,DeviceCreateInfo:Extending
PhysicalDeviceProperties2:Extending
PipelineShaderStageCreateInfo,ShaderCreateInfoEXT:
New Enums
New Bitmasks
New Enum Constants
EXT_SHADER_OBJECT_SPEC_VERSIONExtending
ObjectType:Extending
Result:Extending
StructureType:STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXTSTRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXTSTRUCTURE_TYPE_SHADER_CREATE_INFO_EXTSTRUCTURE_TYPE_SHADER_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXTSTRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXTSTRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT
If VK_EXT_fragment_density_map is supported:
If VK_EXT_mesh_shader or VK_NV_mesh_shader is supported:
If VK_EXT_subgroup_size_control or Vulkan Version 1.3 is supported:
Extending
ShaderCreateFlagBitsEXT:
If VK_KHR_device_group or Vulkan Version 1.1 is supported:
If VK_KHR_fragment_shading_rate is supported:
Examples
Example 1
Create linked pair of vertex and fragment shaders.
// Logical device created with the shaderObject feature enabled
VkDevice device;
// SPIR-V shader code for a vertex shader, along with its size in bytes
void* pVertexSpirv;
size_t vertexSpirvSize;
// SPIR-V shader code for a fragment shader, along with its size in bytes
void* pFragmentSpirv;
size_t fragmentSpirvSize;
// Descriptor set layout compatible with the shaders
VkDescriptorSetLayout descriptorSetLayout;
VkShaderCreateInfoEXT shaderCreateInfos[2] =
{
{
.sType = VK_STRUCTURE_TYPE_SHADER_CREATE_INFO_EXT,
.pNext = NULL,
.flags = VK_SHADER_CREATE_LINK_STAGE_BIT_EXT,
.stage = VK_SHADER_STAGE_VERTEX_BIT,
.nextStage = VK_SHADER_STAGE_FRAGMENT_BIT,
.codeType = VK_SHADER_CODE_TYPE_SPIRV_EXT,
.codeSize = vertexSpirvSize,
.pCode = pVertexSpirv,
.pName = "main",
.setLayoutCount = 1,
.pSetLayouts = &descriptorSetLayout;
.pushConstantRangeCount = 0,
.pPushConstantRanges = NULL,
.pSpecializationInfo = NULL
},
{
.sType = VK_STRUCTURE_TYPE_SHADER_CREATE_INFO_EXT,
.pNext = NULL,
.flags = VK_SHADER_CREATE_LINK_STAGE_BIT_EXT,
.stage = VK_SHADER_STAGE_FRAGMENT_BIT,
.nextStage = 0,
.codeType = VK_SHADER_CODE_TYPE_SPIRV_EXT,
.codeSize = fragmentSpirvSize,
.pCode = pFragmentSpirv,
.pName = "main",
.setLayoutCount = 1,
.pSetLayouts = &descriptorSetLayout;
.pushConstantRangeCount = 0,
.pPushConstantRanges = NULL,
.pSpecializationInfo = NULL
}
};
VkResult result;
VkShaderEXT shaders[2];
result = vkCreateShadersEXT(device, 2, &shaderCreateInfos, NULL, shaders);
if (result != VK_SUCCESS)
{
// Handle error
}Later, during command buffer recording, bind the linked shaders and draw.
// Command buffer in the recording state
VkCommandBuffer commandBuffer;
// Vertex and fragment shader objects created above
VkShaderEXT shaders[2];
// Assume vertex buffers, descriptor sets, etc. have been bound, and existing
// state setting commands have been called to set all required state
const VkShaderStageFlagBits stages[2] =
{
VK_SHADER_STAGE_VERTEX_BIT,
VK_SHADER_STAGE_FRAGMENT_BIT
};
// Bind linked shaders
vkCmdBindShadersEXT(commandBuffer, 2, stages, shaders);
// Equivalent to the previous line. Linked shaders can be bound one at a time,
// in any order:
// vkCmdBindShadersEXT(commandBuffer, 1, &stages[1], &shaders[1]);
// vkCmdBindShadersEXT(commandBuffer, 1, &stages[0], &shaders[0]);
// The above is sufficient to draw if the device was created with the
// tessellationShader and geometryShader features disabled. Otherwise, since
// those stages should not execute, vkCmdBindShadersEXT() must be called at
// least once with each of their stages in pStages before drawing:
const VkShaderStageFlagBits unusedStages[3] =
{
VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT,
VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT,
VK_SHADER_STAGE_GEOMETRY_BIT
};
// NULL pShaders is equivalent to an array of stageCount VK_NULL_HANDLE values,
// meaning no shaders are bound to those stages, and that any previously bound
// shaders are unbound
vkCmdBindShadersEXT(commandBuffer, 3, unusedStages, NULL);
// Graphics shader objects may only be used to draw inside dynamic render pass
// instances begun with vkCmdBeginRendering(), assume one has already been begun
// Draw a triangle
vkCmdDraw(commandBuffer, 3, 1, 0, 0);Example 2
Create unlinked vertex, geometry, and fragment shaders.
// Logical device created with the shaderObject feature enabled
VkDevice device;
// SPIR-V shader code for vertex shaders, along with their sizes in bytes
void* pVertexSpirv[2];
size_t vertexSpirvSize[2];
// SPIR-V shader code for a geometry shader, along with its size in bytes
void pGeometrySpirv;
size_t geometrySpirvSize;
// SPIR-V shader code for fragment shaders, along with their sizes in bytes
void* pFragmentSpirv[2];
size_t fragmentSpirvSize[2];
// Descriptor set layout compatible with the shaders
VkDescriptorSetLayout descriptorSetLayout;
VkShaderCreateInfoEXT shaderCreateInfos[5] =
{
// Stage order does not matter
{
.sType = VK_STRUCTURE_TYPE_SHADER_CREATE_INFO_EXT,
.pNext = NULL,
.flags = 0,
.stage = VK_SHADER_STAGE_GEOMETRY_BIT,
.nextStage = VK_SHADER_STAGE_FRAGMENT_BIT,
.codeType = VK_SHADER_CODE_TYPE_SPIRV_EXT,
.codeSize = pGeometrySpirv,
.pCode = geometrySpirvSize,
.pName = "main",
.setLayoutCount = 1,
.pSetLayouts = &descriptorSetLayout;
.pushConstantRangeCount = 0,
.pPushConstantRanges = NULL,
.pSpecializationInfo = NULL
},
{
.sType = VK_STRUCTURE_TYPE_SHADER_CREATE_INFO_EXT,
.pNext = NULL,
.flags = 0,
.stage = VK_SHADER_STAGE_VERTEX_BIT,
.nextStage = VK_SHADER_STAGE_GEOMETRY_BIT,
.codeType = VK_SHADER_CODE_TYPE_SPIRV_EXT,
.codeSize = vertexSpirvSize[0],
.pCode = pVertexSpirv[0],
.pName = "main",
.setLayoutCount = 1,
.pSetLayouts = &descriptorSetLayout;
.pushConstantRangeCount = 0,
.pPushConstantRanges = NULL,
.pSpecializationInfo = NULL
},
{
.sType = VK_STRUCTURE_TYPE_SHADER_CREATE_INFO_EXT,
.pNext = NULL,
.flags = 0,
.stage = VK_SHADER_STAGE_FRAGMENT_BIT,
.nextStage = 0,
.codeType = VK_SHADER_CODE_TYPE_SPIRV_EXT,
.codeSize = fragmentSpirvSize[0],
.pCode = pFragmentSpirv[0],
.pName = "main",
.setLayoutCount = 1,
.pSetLayouts = &descriptorSetLayout;
.pushConstantRangeCount = 0,
.pPushConstantRanges = NULL,
.pSpecializationInfo = NULL
},
{
.sType = VK_STRUCTURE_TYPE_SHADER_CREATE_INFO_EXT,
.pNext = NULL,
.flags = 0,
.stage = VK_SHADER_STAGE_FRAGMENT_BIT,
.nextStage = 0,
.codeType = VK_SHADER_CODE_TYPE_SPIRV_EXT,
.codeSize = fragmentSpirvSize[1],
.pCode = pFragmentSpirv[1],
.pName = "main",
.setLayoutCount = 1,
.pSetLayouts = &descriptorSetLayout;
.pushConstantRangeCount = 0,
.pPushConstantRanges = NULL,
.pSpecializationInfo = NULL
},
{
.sType = VK_STRUCTURE_TYPE_SHADER_CREATE_INFO_EXT,
.pNext = NULL,
.flags = 0,
.stage = VK_SHADER_STAGE_VERTEX_BIT,
// Suppose we want this vertex shader to be able to be followed by
// either a geometry shader or fragment shader:
.nextStage = VK_SHADER_STAGE_GEOMETRY_BIT | VK_SHADER_STAGE_FRAGMENT_BIT,
.codeType = VK_SHADER_CODE_TYPE_SPIRV_EXT,
.codeSize = vertexSpirvSize[1],
.pCode = pVertexSpirv[1],
.pName = "main",
.setLayoutCount = 1,
.pSetLayouts = &descriptorSetLayout;
.pushConstantRangeCount = 0,
.pPushConstantRanges = NULL,
.pSpecializationInfo = NULL
}
};
VkResult result;
VkShaderEXT shaders[5];
result = vkCreateShadersEXT(device, 5, &shaderCreateInfos, NULL, shaders);
if (result != VK_SUCCESS)
{
// Handle error
}Later, during command buffer recording, bind the linked shaders in different combinations and draw.
// Command buffer in the recording state
VkCommandBuffer commandBuffer;
// Vertex, geometry, and fragment shader objects created above
VkShaderEXT shaders[5];
// Assume vertex buffers, descriptor sets, etc. have been bound, and existing
// state setting commands have been called to set all required state
const VkShaderStageFlagBits stages[3] =
{
// Any order is allowed
VK_SHADER_STAGE_FRAGMENT_BIT,
VK_SHADER_STAGE_VERTEX_BIT,
VK_SHADER_STAGE_GEOMETRY_BIT,
};
VkShaderEXT bindShaders[3] =
{
shaders[2], // FS
shaders[1], // VS
shaders[0] // GS
};
// Bind unlinked shaders
vkCmdBindShadersEXT(commandBuffer, 3, stages, bindShaders);
// Assume the tessellationShader feature is disabled, so vkCmdBindShadersEXT()
// need not have been called with either tessellation stage
// Graphics shader objects may only be used to draw inside dynamic render pass
// instances begun with vkCmdBeginRendering(), assume one has already been begun
// Draw a triangle
vkCmdDraw(commandBuffer, 3, 1, 0, 0);
// Bind a different unlinked fragment shader
const VkShaderStageFlagBits fragmentStage = VK_SHADER_STAGE_FRAGMENT_BIT;
vkCmdBindShadersEXT(commandBuffer, 1, &fragmentStage, &shaders[3]);
// Draw another triangle
vkCmdDraw(commandBuffer, 3, 1, 0, 0);
// Bind a different unlinked vertex shader
const VkShaderStageFlagBits vertexStage = VK_SHADER_STAGE_VERTEX_BIT;
vkCmdBindShadersEXT(commandBuffer, 1, &vertexStage, &shaders[4]);
// Draw another triangle
vkCmdDraw(commandBuffer, 3, 1, 0, 0);Version History
Revision 1, 2023-03-30 (Daniel Story)
- Initial draft
See Also
No cross-references are available
Document Notes
For more information, see the Vulkan Specification.
This page is a generated document. Fixes and changes should be made to the generator scripts, not directly.
Synopsis
- createShadersEXT :: MonadIO io => Device -> ("createInfos" ::: Vector (SomeStruct ShaderCreateInfoEXT)) -> ("allocator" ::: Maybe AllocationCallbacks) -> io (Result, "shaders" ::: Vector ShaderEXT)
- withShadersEXT :: MonadIO io => Device -> Vector (SomeStruct ShaderCreateInfoEXT) -> Maybe AllocationCallbacks -> (io (Result, Vector ShaderEXT) -> ((Result, Vector ShaderEXT) -> io ()) -> r) -> r
- destroyShaderEXT :: MonadIO io => Device -> ShaderEXT -> ("allocator" ::: Maybe AllocationCallbacks) -> io ()
- getShaderBinaryDataEXT :: MonadIO io => Device -> ShaderEXT -> io (Result, "data" ::: ByteString)
- cmdBindShadersEXT :: MonadIO io => CommandBuffer -> ("stages" ::: Vector ShaderStageFlagBits) -> ("shaders" ::: Vector ShaderEXT) -> io ()
- pattern STRUCTURE_TYPE_SHADER_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT :: StructureType
- pattern ERROR_INCOMPATIBLE_SHADER_BINARY_EXT :: Result
- data PhysicalDeviceShaderObjectFeaturesEXT = PhysicalDeviceShaderObjectFeaturesEXT {
- shaderObject :: Bool
- data PhysicalDeviceShaderObjectPropertiesEXT = PhysicalDeviceShaderObjectPropertiesEXT {}
- data ShaderCreateInfoEXT (es :: [Type]) = ShaderCreateInfoEXT {
- next :: Chain es
- flags :: ShaderCreateFlagsEXT
- stage :: ShaderStageFlagBits
- nextStage :: ShaderStageFlags
- codeType :: ShaderCodeTypeEXT
- codeSize :: Word64
- code :: Ptr ()
- name :: Maybe ByteString
- setLayoutCount :: Word32
- setLayouts :: Vector DescriptorSetLayout
- pushConstantRangeCount :: Word32
- pushConstantRanges :: Vector PushConstantRange
- specializationInfo :: Maybe SpecializationInfo
- type ShaderCreateFlagsEXT = ShaderCreateFlagBitsEXT
- newtype ShaderCreateFlagBitsEXT where
- ShaderCreateFlagBitsEXT Flags
- pattern SHADER_CREATE_LINK_STAGE_BIT_EXT :: ShaderCreateFlagBitsEXT
- pattern SHADER_CREATE_64_BIT_INDEXING_BIT_EXT :: ShaderCreateFlagBitsEXT
- pattern SHADER_CREATE_INDIRECT_BINDABLE_BIT_EXT :: ShaderCreateFlagBitsEXT
- pattern SHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT :: ShaderCreateFlagBitsEXT
- pattern SHADER_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_EXT :: ShaderCreateFlagBitsEXT
- pattern SHADER_CREATE_DISPATCH_BASE_BIT_EXT :: ShaderCreateFlagBitsEXT
- pattern SHADER_CREATE_NO_TASK_SHADER_BIT_EXT :: ShaderCreateFlagBitsEXT
- pattern SHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT :: ShaderCreateFlagBitsEXT
- pattern SHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT :: ShaderCreateFlagBitsEXT
- pattern SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT :: ShaderCreateFlagBitsEXT
- newtype ShaderCodeTypeEXT where
- type ShaderRequiredSubgroupSizeCreateInfoEXT = PipelineShaderStageRequiredSubgroupSizeCreateInfo
- type EXT_SHADER_OBJECT_SPEC_VERSION = 1
- pattern EXT_SHADER_OBJECT_SPEC_VERSION :: Integral a => a
- type EXT_SHADER_OBJECT_EXTENSION_NAME = "VK_EXT_shader_object"
- pattern EXT_SHADER_OBJECT_EXTENSION_NAME :: (Eq a, IsString a) => a
- newtype ShaderEXT = ShaderEXT Word64
- data ViewportSwizzleNV = ViewportSwizzleNV {}
- data ColorBlendEquationEXT = ColorBlendEquationEXT {}
- data ColorBlendAdvancedEXT = ColorBlendAdvancedEXT {}
- data VertexInputBindingDescription2EXT = VertexInputBindingDescription2EXT {}
- data VertexInputAttributeDescription2EXT = VertexInputAttributeDescription2EXT {}
- data DepthClampRangeEXT = DepthClampRangeEXT {}
- cmdSetPatchControlPointsEXT :: MonadIO io => CommandBuffer -> ("patchControlPoints" ::: Word32) -> io ()
- cmdSetLogicOpEXT :: MonadIO io => CommandBuffer -> LogicOp -> io ()
- cmdSetTessellationDomainOriginEXT :: MonadIO io => CommandBuffer -> TessellationDomainOrigin -> io ()
- cmdSetDepthClampEnableEXT :: MonadIO io => CommandBuffer -> ("depthClampEnable" ::: Bool) -> io ()
- cmdSetPolygonModeEXT :: MonadIO io => CommandBuffer -> PolygonMode -> io ()
- cmdSetRasterizationSamplesEXT :: MonadIO io => CommandBuffer -> ("rasterizationSamples" ::: SampleCountFlagBits) -> io ()
- cmdSetSampleMaskEXT :: MonadIO io => CommandBuffer -> ("samples" ::: SampleCountFlagBits) -> ("sampleMask" ::: Vector SampleMask) -> io ()
- cmdSetAlphaToCoverageEnableEXT :: MonadIO io => CommandBuffer -> ("alphaToCoverageEnable" ::: Bool) -> io ()
- cmdSetAlphaToOneEnableEXT :: MonadIO io => CommandBuffer -> ("alphaToOneEnable" ::: Bool) -> io ()
- cmdSetLogicOpEnableEXT :: MonadIO io => CommandBuffer -> ("logicOpEnable" ::: Bool) -> io ()
- cmdSetColorBlendEnableEXT :: MonadIO io => CommandBuffer -> ("firstAttachment" ::: Word32) -> ("colorBlendEnables" ::: Vector Bool) -> io ()
- cmdSetColorBlendEquationEXT :: MonadIO io => CommandBuffer -> ("firstAttachment" ::: Word32) -> ("colorBlendEquations" ::: Vector ColorBlendEquationEXT) -> io ()
- cmdSetColorWriteMaskEXT :: MonadIO io => CommandBuffer -> ("firstAttachment" ::: Word32) -> ("colorWriteMasks" ::: Vector ColorComponentFlags) -> io ()
- cmdSetRasterizationStreamEXT :: MonadIO io => CommandBuffer -> ("rasterizationStream" ::: Word32) -> io ()
- cmdSetConservativeRasterizationModeEXT :: MonadIO io => CommandBuffer -> ConservativeRasterizationModeEXT -> io ()
- cmdSetExtraPrimitiveOverestimationSizeEXT :: MonadIO io => CommandBuffer -> ("extraPrimitiveOverestimationSize" ::: Float) -> io ()
- cmdSetDepthClipEnableEXT :: MonadIO io => CommandBuffer -> ("depthClipEnable" ::: Bool) -> io ()
- cmdSetSampleLocationsEnableEXT :: MonadIO io => CommandBuffer -> ("sampleLocationsEnable" ::: Bool) -> io ()
- cmdSetColorBlendAdvancedEXT :: MonadIO io => CommandBuffer -> ("firstAttachment" ::: Word32) -> ("colorBlendAdvanced" ::: Vector ColorBlendAdvancedEXT) -> io ()
- cmdSetProvokingVertexModeEXT :: MonadIO io => CommandBuffer -> ProvokingVertexModeEXT -> io ()
- cmdSetLineRasterizationModeEXT :: MonadIO io => CommandBuffer -> LineRasterizationModeEXT -> io ()
- cmdSetLineStippleEnableEXT :: MonadIO io => CommandBuffer -> ("stippledLineEnable" ::: Bool) -> io ()
- cmdSetDepthClipNegativeOneToOneEXT :: MonadIO io => CommandBuffer -> ("negativeOneToOne" ::: Bool) -> io ()
- cmdSetViewportWScalingEnableNV :: MonadIO io => CommandBuffer -> ("viewportWScalingEnable" ::: Bool) -> io ()
- cmdSetViewportSwizzleNV :: MonadIO io => CommandBuffer -> ("firstViewport" ::: Word32) -> ("viewportSwizzles" ::: Vector ViewportSwizzleNV) -> io ()
- cmdSetCoverageToColorEnableNV :: MonadIO io => CommandBuffer -> ("coverageToColorEnable" ::: Bool) -> io ()
- cmdSetCoverageToColorLocationNV :: MonadIO io => CommandBuffer -> ("coverageToColorLocation" ::: Word32) -> io ()
- cmdSetCoverageModulationModeNV :: MonadIO io => CommandBuffer -> CoverageModulationModeNV -> io ()
- cmdSetCoverageModulationTableEnableNV :: MonadIO io => CommandBuffer -> ("coverageModulationTableEnable" ::: Bool) -> io ()
- cmdSetCoverageModulationTableNV :: MonadIO io => CommandBuffer -> ("coverageModulationTable" ::: Vector Float) -> io ()
- cmdSetShadingRateImageEnableNV :: MonadIO io => CommandBuffer -> ("shadingRateImageEnable" ::: Bool) -> io ()
- cmdSetCoverageReductionModeNV :: MonadIO io => CommandBuffer -> CoverageReductionModeNV -> io ()
- cmdSetRepresentativeFragmentTestEnableNV :: MonadIO io => CommandBuffer -> ("representativeFragmentTestEnable" ::: Bool) -> io ()
- cmdSetVertexInputEXT :: MonadIO io => CommandBuffer -> ("vertexBindingDescriptions" ::: Vector VertexInputBindingDescription2EXT) -> ("vertexAttributeDescriptions" ::: Vector VertexInputAttributeDescription2EXT) -> io ()
- cmdSetDepthClampRangeEXT :: MonadIO io => CommandBuffer -> DepthClampModeEXT -> ("depthClampRange" ::: Maybe DepthClampRangeEXT) -> io ()
- newtype ViewportCoordinateSwizzleNV where
- ViewportCoordinateSwizzleNV Int32
- pattern VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV :: ViewportCoordinateSwizzleNV
- pattern VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV :: ViewportCoordinateSwizzleNV
- pattern VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV :: ViewportCoordinateSwizzleNV
- pattern VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV :: ViewportCoordinateSwizzleNV
- pattern VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV :: ViewportCoordinateSwizzleNV
- pattern VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV :: ViewportCoordinateSwizzleNV
- pattern VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV :: ViewportCoordinateSwizzleNV
- pattern VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV :: ViewportCoordinateSwizzleNV
- newtype BlendOverlapEXT where
- BlendOverlapEXT Int32
- pattern BLEND_OVERLAP_CONJOINT_EXT :: BlendOverlapEXT
- pattern BLEND_OVERLAP_DISJOINT_EXT :: BlendOverlapEXT
- pattern BLEND_OVERLAP_UNCORRELATED_EXT :: BlendOverlapEXT
- newtype CoverageModulationModeNV where
- CoverageModulationModeNV Int32
- pattern COVERAGE_MODULATION_MODE_ALPHA_NV :: CoverageModulationModeNV
- pattern COVERAGE_MODULATION_MODE_NONE_NV :: CoverageModulationModeNV
- pattern COVERAGE_MODULATION_MODE_RGBA_NV :: CoverageModulationModeNV
- pattern COVERAGE_MODULATION_MODE_RGB_NV :: CoverageModulationModeNV
- newtype CoverageReductionModeNV where
- newtype ConservativeRasterizationModeEXT where
- ConservativeRasterizationModeEXT Int32
- pattern CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT :: ConservativeRasterizationModeEXT
- pattern CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT :: ConservativeRasterizationModeEXT
- pattern CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT :: ConservativeRasterizationModeEXT
- newtype ProvokingVertexModeEXT where
- newtype DepthClampModeEXT where
- type LineRasterizationModeEXT = LineRasterizationMode
- cmdSetCullModeEXT :: MonadIO io => CommandBuffer -> CullModeFlags -> io ()
- cmdSetFrontFaceEXT :: MonadIO io => CommandBuffer -> FrontFace -> io ()
- cmdSetPrimitiveTopologyEXT :: MonadIO io => CommandBuffer -> PrimitiveTopology -> io ()
- cmdSetViewportWithCountEXT :: MonadIO io => CommandBuffer -> ("viewports" ::: Vector Viewport) -> io ()
- cmdSetScissorWithCountEXT :: MonadIO io => CommandBuffer -> ("scissors" ::: Vector Rect2D) -> io ()
- cmdBindVertexBuffers2EXT :: MonadIO io => CommandBuffer -> ("firstBinding" ::: Word32) -> ("buffers" ::: Vector Buffer) -> ("offsets" ::: Vector DeviceSize) -> ("sizes" ::: Vector DeviceSize) -> ("strides" ::: Vector DeviceSize) -> io ()
- cmdSetDepthTestEnableEXT :: MonadIO io => CommandBuffer -> ("depthTestEnable" ::: Bool) -> io ()
- cmdSetDepthWriteEnableEXT :: MonadIO io => CommandBuffer -> ("depthWriteEnable" ::: Bool) -> io ()
- cmdSetDepthCompareOpEXT :: MonadIO io => CommandBuffer -> ("depthCompareOp" ::: CompareOp) -> io ()
- cmdSetDepthBoundsTestEnableEXT :: MonadIO io => CommandBuffer -> ("depthBoundsTestEnable" ::: Bool) -> io ()
- cmdSetStencilTestEnableEXT :: MonadIO io => CommandBuffer -> ("stencilTestEnable" ::: Bool) -> io ()
- cmdSetStencilOpEXT :: MonadIO io => CommandBuffer -> ("faceMask" ::: StencilFaceFlags) -> ("failOp" ::: StencilOp) -> ("passOp" ::: StencilOp) -> ("depthFailOp" ::: StencilOp) -> CompareOp -> io ()
- cmdSetRasterizerDiscardEnableEXT :: MonadIO io => CommandBuffer -> ("rasterizerDiscardEnable" ::: Bool) -> io ()
- cmdSetDepthBiasEnableEXT :: MonadIO io => CommandBuffer -> ("depthBiasEnable" ::: Bool) -> io ()
- cmdSetPrimitiveRestartEnableEXT :: MonadIO io => CommandBuffer -> ("primitiveRestartEnable" ::: Bool) -> io ()
Documentation
Arguments
| :: MonadIO io | |
| => Device |
|
| -> ("createInfos" ::: Vector (SomeStruct ShaderCreateInfoEXT)) |
|
| -> ("allocator" ::: Maybe AllocationCallbacks) |
|
| -> io (Result, "shaders" ::: Vector ShaderEXT) |
vkCreateShadersEXT - Create one or more new shaders
Description
When this function returns, whether or not it succeeds, it is guaranteed
that every element of pShaders will have been overwritten by either
NULL_HANDLE or a valid
ShaderEXT handle.
This means that whenever shader creation fails, the application can
determine which shader the returned error pertains to by locating the
first NULL_HANDLE element in pShaders. It
also means that an application can reliably clean up from a failed
call by iterating over the pShaders array and destroying every element
that is not NULL_HANDLE.
Valid Usage
- If the
stagemember of any element ofpCreateInfosisSHADER_STAGE_COMPUTE_BIT,devicemust support at least one queue family with theQUEUE_COMPUTE_BITcapability
- If the
stagemember of any element ofpCreateInfosisSHADER_STAGE_TASK_BIT_EXT,SHADER_STAGE_MESH_BIT_EXT,SHADER_STAGE_VERTEX_BIT,SHADER_STAGE_TESSELLATION_CONTROL_BIT,SHADER_STAGE_TESSELLATION_EVALUATION_BIT,SHADER_STAGE_GEOMETRY_BIT, orSHADER_STAGE_FRAGMENT_BIT,devicemust support at least one queue family with theQUEUE_GRAPHICS_BITcapability - The shaderObject feature must be enabled
- If the
flagsmember of any element ofpCreateInfosincludesSHADER_CREATE_LINK_STAGE_BIT_EXT, theflagsmember of all other elements ofpCreateInfoswhosestageisSHADER_STAGE_VERTEX_BIT,SHADER_STAGE_TESSELLATION_CONTROL_BIT,SHADER_STAGE_TESSELLATION_EVALUATION_BIT,SHADER_STAGE_GEOMETRY_BIT, orSHADER_STAGE_FRAGMENT_BITmust also includeSHADER_CREATE_LINK_STAGE_BIT_EXT - If the
flagsmember of any element ofpCreateInfosincludesSHADER_CREATE_LINK_STAGE_BIT_EXT, theflagsmember of all other elements ofpCreateInfoswhosestageisSHADER_STAGE_TASK_BIT_EXTorSHADER_STAGE_MESH_BIT_EXTmust also includeSHADER_CREATE_LINK_STAGE_BIT_EXT - If the
flagsmember of any element ofpCreateInfoswhosestageisSHADER_STAGE_TASK_BIT_EXTorSHADER_STAGE_MESH_BIT_EXTincludesSHADER_CREATE_LINK_STAGE_BIT_EXT, there must be no member ofpCreateInfoswhosestageisSHADER_STAGE_VERTEX_BITand whoseflagsmember includesSHADER_CREATE_LINK_STAGE_BIT_EXT - If there is any element
of
pCreateInfoswhosestageisSHADER_STAGE_MESH_BIT_EXTand whoseflagsmember includes bothSHADER_CREATE_LINK_STAGE_BIT_EXTandSHADER_CREATE_NO_TASK_SHADER_BIT_EXT, there must be no element ofpCreateInfoswhosestageisSHADER_STAGE_TASK_BIT_EXTand whoseflagsmember includesSHADER_CREATE_LINK_STAGE_BIT_EXT - For each element of
pCreateInfoswhoseflagsmember includesSHADER_CREATE_LINK_STAGE_BIT_EXT, if there is any other element ofpCreateInfoswhosestageis logically later than thestageof the former and whoseflagsmember also includesSHADER_CREATE_LINK_STAGE_BIT_EXT, thenextStageof the former must be equal to thestageof the element with the logically earlieststagefollowing thestageof the former whoseflagsmember also includesSHADER_CREATE_LINK_STAGE_BIT_EXT - The
stagemember of each element ofpCreateInfoswhoseflagsmember includesSHADER_CREATE_LINK_STAGE_BIT_EXTmust be unique - The
codeTypemember of all elements ofpCreateInfoswhoseflagsmember includesSHADER_CREATE_LINK_STAGE_BIT_EXTmust be the same - If
pCreateInfoscontains elements with bothSHADER_STAGE_TESSELLATION_CONTROL_BITandSHADER_STAGE_TESSELLATION_EVALUATION_BIT, both elements'flagsincludeSHADER_CREATE_LINK_STAGE_BIT_EXT, both elements'codeTypeisSHADER_CODE_TYPE_SPIRV_EXT, at least one must contain anOpExecutionModeinstruction specifying the orientation of triangles generated by the tessellator - If
pCreateInfoscontains elements with bothSHADER_STAGE_TESSELLATION_CONTROL_BITandSHADER_STAGE_TESSELLATION_EVALUATION_BIT, both elements'flagsincludeSHADER_CREATE_LINK_STAGE_BIT_EXT, both elements'codeTypeisSHADER_CODE_TYPE_SPIRV_EXT, at least one must contain anOpExecutionModeinstruction specifying the spacing of segments on the edges of tessellated primitives - If
pCreateInfoscontains elements with bothSHADER_STAGE_TESSELLATION_CONTROL_BITandSHADER_STAGE_TESSELLATION_EVALUATION_BIT, both elements'flagsincludeSHADER_CREATE_LINK_STAGE_BIT_EXT, both elements'codeTypeisSHADER_CODE_TYPE_SPIRV_EXT, and both stages contains anOpExecutionModeinstruction specifying the type of subdivision, they must be the same - If
pCreateInfoscontains elements with bothSHADER_STAGE_TESSELLATION_CONTROL_BITandSHADER_STAGE_TESSELLATION_EVALUATION_BIT, both elements'flagsincludeSHADER_CREATE_LINK_STAGE_BIT_EXT, both elements'codeTypeisSHADER_CODE_TYPE_SPIRV_EXT, and both stages contains anOpExecutionModeinstruction specifying the orientation of triangles, they must be the same - If
pCreateInfoscontains elements with bothSHADER_STAGE_TESSELLATION_CONTROL_BITandSHADER_STAGE_TESSELLATION_EVALUATION_BIT, both elements'flagsincludeSHADER_CREATE_LINK_STAGE_BIT_EXT, both elements'codeTypeisSHADER_CODE_TYPE_SPIRV_EXT, and both stages contains anOpExecutionModeinstruction specifying the spacing of segments on the edges of tessellated primitives, they must be the same - If
pCreateInfoscontains elements with bothSHADER_STAGE_TESSELLATION_CONTROL_BITandSHADER_STAGE_TESSELLATION_EVALUATION_BIT, both elements'flagsincludeSHADER_CREATE_LINK_STAGE_BIT_EXT, both elements'codeTypeisSHADER_CODE_TYPE_SPIRV_EXT, and both stages contains anOpExecutionModeinstruction specifying the output patch size, they must be the same - If
pCreateInfoscontains aSHADER_STAGE_MESH_BIT_EXTwithcodeTypeofSHADER_CODE_TYPE_SPIRV_EXTandSHADER_CREATE_NO_TASK_SHADER_BIT_EXTis not set, then the mesh shader’s entry point must not declare a variable with aDrawIndexBuiltIndecoration - If any element of
pCreateInfossetsSHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXTand includes embedded sampler mappings, there must be less than (maxSamplerAllocationCount - (minSamplerHeapReservedRangeWithEmbedded
/
samplerDescriptorSize))
Samplerobjects currently created on the device - If any element of
pCreateInfossetsSHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXTand includes embedded sampler mappings, this command must not cause the total number of unique embedded samplers in pipelines and shaders on this device to exceed maxDescriptorHeapEmbeddedSamplers - If the
flagsmember of any element ofpCreateInfosincludesSHADER_CREATE_LINK_STAGE_BIT_EXTandSHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT, theflagsmember of all other elements ofpCreateInfoswhosestageisSHADER_STAGE_VERTEX_BIT,SHADER_STAGE_TESSELLATION_CONTROL_BIT,SHADER_STAGE_TESSELLATION_EVALUATION_BIT,SHADER_STAGE_GEOMETRY_BIT,SHADER_STAGE_TASK_BIT_EXT,SHADER_STAGE_MESH_BIT_EXT, orSHADER_STAGE_FRAGMENT_BITmust also includeSHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT
Valid Usage (Implicit)
-
devicemust be a validDevicehandle
-
pCreateInfosmust be a valid pointer to an array ofcreateInfoCountvalidShaderCreateInfoEXTstructures - If
pAllocatoris notNULL,pAllocatormust be a valid pointer to a validAllocationCallbacksstructure -
pShadersmust be a valid pointer to an array ofcreateInfoCountShaderEXThandles -
createInfoCountmust be greater than0
Return Codes
See Also
VK_EXT_shader_object,
AllocationCallbacks,
Device, ShaderCreateInfoEXT,
ShaderEXT
withShadersEXT :: MonadIO io => Device -> Vector (SomeStruct ShaderCreateInfoEXT) -> Maybe AllocationCallbacks -> (io (Result, Vector ShaderEXT) -> ((Result, Vector ShaderEXT) -> io ()) -> r) -> r Source #
A convenience wrapper to make a compatible pair of calls to
createShadersEXT and destroyShaderEXT
To ensure that destroyShaderEXT is always called: pass
bracket (or the allocate function from your
favourite resource management library) as the last argument.
To just extract the pair pass (,) as the last argument.
Arguments
| :: MonadIO io | |
| => Device |
|
| -> ShaderEXT |
|
| -> ("allocator" ::: Maybe AllocationCallbacks) |
|
| -> io () |
vkDestroyShaderEXT - Destroy a shader object
Description
Destroying a shader object used by one or more command buffers in the recording or executable state causes those command buffers to move into the invalid state.
Valid Usage
- The shaderObject feature must be enabled
- All submitted commands that
refer to
shadermust have completed execution - If
AllocationCallbackswere provided whenshaderwas created, a compatible set of callbacks must be provided here - If no
AllocationCallbackswere provided whenshaderwas created,pAllocatormust beNULL
Valid Usage (Implicit)
-
devicemust be a validDevicehandle
- If
shaderis notNULL_HANDLE,shadermust be a validShaderEXThandle - If
pAllocatoris notNULL,pAllocatormust be a valid pointer to a validAllocationCallbacksstructure - If
shaderis a valid handle, it must have been created, allocated, or retrieved fromdevice
Host Synchronization
- Host access to
shadermust be externally synchronized
See Also
VK_EXT_shader_object,
AllocationCallbacks,
Device, ShaderEXT
getShaderBinaryDataEXT Source #
Arguments
| :: MonadIO io | |
| => Device |
|
| -> ShaderEXT |
|
| -> io (Result, "data" ::: ByteString) |
vkGetShaderBinaryDataEXT - Get the binary shader code from a shader object
Description
If pData is NULL, then the size of the binary shader code of the
shader object, in bytes, is returned in pDataSize. Otherwise,
pDataSize must point to a variable set by the application to the
size of the buffer, in bytes, pointed to by pData, and on return the
variable is overwritten with the amount of data actually written to
pData. If pDataSize is less than the size of the binary shader code,
nothing is written to pData, and
INCOMPLETE will be returned instead of
SUCCESS.
The behavior of this command when pDataSize is too small differs from
how some other getter-type commands work in Vulkan. Because shader
binary data is only usable in its entirety, it would never be useful for
the implementation to return partial data. Because of this, nothing is
written to pData unless pDataSize is large enough to fit the data in
its entirety.
This behavior is not consistent with the behavior described in Opaque Binary Data Results, for historical reasons.
If the amount of data available is larger than the passed pDataSize,
the query returns a INCOMPLETE success
status instead of a
ERROR_NOT_ENOUGH_SPACE_KHR error status.
Binary shader code retrieved using getShaderBinaryDataEXT can be
passed to a subsequent call to createShadersEXT on a compatible
physical device by specifying SHADER_CODE_TYPE_BINARY_EXT in the
codeType member of ShaderCreateInfoEXT.
The shader code returned by repeated calls to this function with the
same ShaderEXT is guaranteed to be invariant
for the lifetime of the ShaderEXT object.
Valid Usage
- The shaderObject feature must be enabled
Valid Usage (Implicit)
-
devicemust be a validDevicehandle
-
shadermust be a validShaderEXThandle -
pDataSizemust be a valid pointer to asize_tvalue - If the value
referenced by
pDataSizeis not0, andpDatais notNULL,pDatamust be a valid pointer to an array ofpDataSizebytes -
shadermust have been created, allocated, or retrieved fromdevice
Return Codes
See Also
Arguments
| :: MonadIO io | |
| => CommandBuffer |
|
| -> ("stages" ::: Vector ShaderStageFlagBits) |
|
| -> ("shaders" ::: Vector ShaderEXT) |
|
| -> io () |
vkCmdBindShadersEXT - Bind shader objects to a command buffer
Description
When binding linked shaders, an application may bind them in any
combination of one or more calls to cmdBindShadersEXT (i.e., shaders
that were created linked together do not need to be bound in the same
cmdBindShadersEXT call).
Any shader object bound to a particular stage may be unbound by
setting its value in pShaders to
NULL_HANDLE. If pShaders is NULL,
cmdBindShadersEXT behaves as if pShaders was an array of
stageCount NULL_HANDLE values (i.e., any
shaders bound to the stages specified in pStages are unbound).
Valid Usage
- The shaderObject feature must be enabled
- Every element of
pStagesmust be unique -
pStagesmust not containSHADER_STAGE_ALL_GRAPHICSorSHADER_STAGE_ALL -
pStagesmust not containSHADER_STAGE_RAYGEN_BIT_KHR,SHADER_STAGE_ANY_HIT_BIT_KHR,SHADER_STAGE_CLOSEST_HIT_BIT_KHR,SHADER_STAGE_MISS_BIT_KHR,SHADER_STAGE_INTERSECTION_BIT_KHR, orSHADER_STAGE_CALLABLE_BIT_KHR -
pStagesmust not containSHADER_STAGE_SUBPASS_SHADING_BIT_HUAWEI -
pStagesmust not containSHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI - For each element of
pStages, ifpShadersis notNULL, and the element of thepShadersarray with the same index is notNULL_HANDLE, it must have been created with astageequal to the corresponding element ofpStages - If
pStagescontains bothSHADER_STAGE_TASK_BIT_EXTandSHADER_STAGE_VERTEX_BIT, andpShadersis notNULL, and the same index inpShadersasSHADER_STAGE_TASK_BIT_EXTinpStagesis notNULL_HANDLE, the same index inpShadersasSHADER_STAGE_VERTEX_BITinpStagesmust beNULL_HANDLE - If
pStagescontains bothSHADER_STAGE_MESH_BIT_EXTandSHADER_STAGE_VERTEX_BIT, andpShadersis notNULL, and the same index inpShadersasSHADER_STAGE_MESH_BIT_EXTinpStagesis notNULL_HANDLE, the same index inpShadersasSHADER_STAGE_VERTEX_BITinpStagesmust beNULL_HANDLE - If
pStagescontainsSHADER_STAGE_COMPUTE_BIT, theCommandPoolthatcommandBufferwas allocated from must support compute operations - If
pStagescontainsSHADER_STAGE_VERTEX_BIT,SHADER_STAGE_TESSELLATION_CONTROL_BIT,SHADER_STAGE_TESSELLATION_EVALUATION_BIT,SHADER_STAGE_GEOMETRY_BIT, orSHADER_STAGE_FRAGMENT_BIT, theCommandPoolthatcommandBufferwas allocated from must support graphics operations - If
pStagescontainsSHADER_STAGE_MESH_BIT_EXTorSHADER_STAGE_TASK_BIT_EXT, theCommandPoolthatcommandBufferwas allocated from must support graphics operations
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
pStagesmust be a valid pointer to an array ofstageCountvalidShaderStageFlagBitsvalues - If
pShadersis notNULL,pShadersmust be a valid pointer to an array ofstageCountvalid orNULL_HANDLEShaderEXThandles -
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must supportQUEUE_COMPUTE_BIT, orQUEUE_GRAPHICS_BIToperations - This command must only be called outside of a video coding scope
-
stageCountmust be greater than0 - Both of
commandBuffer, and the elements ofpShadersthat are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the sameDevice
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | VK_QUEUE_COMPUTE_BIT VK_QUEUE_GRAPHICS_BIT | State |
Conditional Rendering
vkCmdBindShadersEXT is not affected by conditional rendering
See Also
VK_EXT_shader_object,
CommandBuffer,
ShaderEXT,
ShaderStageFlagBits
pattern ERROR_INCOMPATIBLE_SHADER_BINARY_EXT :: Result Source #
data PhysicalDeviceShaderObjectFeaturesEXT Source #
VkPhysicalDeviceShaderObjectFeaturesEXT - Structure describing whether shader objects can be supported by an implementation
Members
This structure describes the following feature:
Description
If the PhysicalDeviceShaderObjectFeaturesEXT structure is included in
the pNext chain of the
PhysicalDeviceFeatures2
structure passed to
getPhysicalDeviceFeatures2,
it is filled in to indicate whether each corresponding feature is
supported. If the application wishes to use a
Device with any features described by
PhysicalDeviceShaderObjectFeaturesEXT, it must add an instance of
the structure, with the desired feature members set to
TRUE, to the pNext chain of
DeviceCreateInfo when creating the
Device.
Valid Usage (Implicit)
See Also
Constructors
| PhysicalDeviceShaderObjectFeaturesEXT | |
Fields
| |
Instances
data PhysicalDeviceShaderObjectPropertiesEXT Source #
VkPhysicalDeviceShaderObjectPropertiesEXT - Structure describing shader object properties supported by an implementation
Description
The purpose and usage of the values of this structure are described in greater detail in Binary Shader Compatibility.
If the PhysicalDeviceShaderObjectPropertiesEXT structure is included
in the pNext chain of the
PhysicalDeviceProperties2
structure passed to
getPhysicalDeviceProperties2,
it is filled in with each corresponding implementation-dependent
property.
Valid Usage (Implicit)
See Also
Constructors
| PhysicalDeviceShaderObjectPropertiesEXT | |
Fields
| |
Instances
data ShaderCreateInfoEXT (es :: [Type]) Source #
VkShaderCreateInfoEXT - Structure specifying parameters of a newly created shader
Description
When specifying descriptor heap mappings, only mappings corresponding to
bindings that are actually present in the SPIR-V shader affect
compilation. Mappings are ignored when codeType is
SHADER_CODE_TYPE_BINARY_EXT. The resulting compiled binary from two
different SPIR-V shaders which would have identical bit patterns must
remain identical even if the mapping entries vary in any of the
following ways:
- Different numbers of unused mapping structures
- Different binding counts for unused bindings
- Unused parameters in mapping structures (e.g. sampler offsets)
- Ignored parameters in mapping structures
- Different order of mapping structures, used or unused
Calculating the same offset in a mapping via different parameter values is not guaranteed to provide identical results.
Valid Usage
- If
codeTypeisSHADER_CODE_TYPE_SPIRV_EXT,codeSizemust be a multiple of 4
- If
codeTypeisSHADER_CODE_TYPE_SPIRV_EXT,pCodemust point to valid SPIR-V code, formatted and packed as described by the Khronos SPIR-V Specification - If
codeTypeisSHADER_CODE_TYPE_SPIRV_EXT,pCodemust adhere to the validation rules described by the Validation Rules within a Module section of the SPIR-V Environment appendix - If
codeTypeisSHADER_CODE_TYPE_SPIRV_EXT,pCodemust declare theShadercapability for SPIR-V code - If
codeTypeisSHADER_CODE_TYPE_SPIRV_EXT,pCodemust not declare any capability that is not supported by the API, as described by the Capabilities section of the SPIR-V Environment appendix - If
codeTypeisSHADER_CODE_TYPE_SPIRV_EXT, andpCodedeclares any of the capabilities listed in the SPIR-V Environment appendix, one of the corresponding requirements must be satisfied - If
codeTypeisSHADER_CODE_TYPE_SPIRV_EXT,pCodemust not declare any SPIR-V extension that is not supported by the API, as described by the Extension section of the SPIR-V Environment appendix - If
codeTypeisSHADER_CODE_TYPE_SPIRV_EXT, andpCodedeclares any of the SPIR-V extensions listed in the SPIR-V Environment appendix, one of the corresponding requirements must be satisfied - If the
descriptorHeap
feature is not enabled,
ShaderDescriptorSetAndBindingMappingInfoEXT::mappingCountmust be 0 - If the
pNextchain specifies a descriptor mapping usingDESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT,DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT, orDESCRIPTOR_MAPPING_SOURCE_RESOURCE_HEAP_DATA_EXT, the mapped resource in the shader must be a variable with a structure type decorated withBlockin theUniformStorageClass - If the
pNextchain specifies a descriptor mapping usingDESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT, the mapped structure must not be larger than the sum ofpushDataOffsetused in the mapping and maxPushDataSize - If the
pNextchain specifies a descriptor mapping usingDESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT, the sum of mapped structure size andshaderRecordDataOffsetused in the mapping must not be larger than maxShaderGroupStride If the
pNextchain specifies a descriptor mapping usingDESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXTorDESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT, the mapped resource in the shader must be one of:- A variable with a structure type decorated with
Blockin theUniformStorageClass - A variable with a structure type decorated with
BufferBlockin theUniformStorageClass - A variable with a structure type decorated with
Blockin theStorageBufferStorageClass - A
OpTypeAccelerationStructureKHRvariable - A
OpTypeAccelerationStructureNVvariable
- A variable with a structure type decorated with
- If the
pNextchain specifies a descriptor mapping usingDESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT,DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT, orDESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT, theOpArrayLengthorOpUntypedArrayLengthKHRinstruction must not be used on that resource - If the
pNextchain specifies a descriptor mapping usingDESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_CONSTANT_OFFSET_EXT,DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT,DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT,DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT, orDESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT, and the mapped resource declaration is an array, thepEmbeddedSamplermember of the corresponding mapping structure must beNULL - If
stageis notSHADER_STAGE_TASK_BIT_EXT,SHADER_STAGE_MESH_BIT_EXT,SHADER_STAGE_VERTEX_BIT,SHADER_STAGE_TESSELLATION_CONTROL_BIT,SHADER_STAGE_TESSELLATION_EVALUATION_BIT,SHADER_STAGE_GEOMETRY_BIT, orSHADER_STAGE_FRAGMENT_BIT,flagsmust not includeSHADER_CREATE_LINK_STAGE_BIT_EXT - If
stageis notSHADER_STAGE_FRAGMENT_BIT,flagsmust not includeSHADER_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_EXT - If the
attachmentFragmentShadingRate
feature is not enabled,
flagsmust not includeSHADER_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_EXT - If
stageis notSHADER_STAGE_FRAGMENT_BIT,flagsmust not includeSHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT - If the
fragmentDensityMap
feature is not enabled,
flagsmust not includeSHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT - If
flagsincludesSHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT, the subgroupSizeControl feature must be enabled - If
flagsincludesSHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT, the computeFullSubgroups feature must be enabled - If
flagsincludesSHADER_CREATE_INDIRECT_BINDABLE_BIT_EXT, then the ::deviceGeneratedCommands feature must be enabled - If
flagsincludesSHADER_CREATE_INDIRECT_BINDABLE_BIT_EXT, then the identified entry point must not specifyXfbexecution mode - If
flagsincludesSHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT,stagemust be one ofSHADER_STAGE_MESH_BIT_EXT,SHADER_STAGE_TASK_BIT_EXT, orSHADER_STAGE_COMPUTE_BIT - If
stageis notSHADER_STAGE_COMPUTE_BIT,flagsmust not includeSHADER_CREATE_DISPATCH_BASE_BIT_EXT - If
stageis notSHADER_STAGE_MESH_BIT_EXT,flagsmust not includeSHADER_CREATE_NO_TASK_SHADER_BIT_EXT - If
flagsincludes bothSHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXTandSHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT, the local workgroup size in the X dimension of the shader must be a multiple of maxSubgroupSize - If
flagsincludesSHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXTbut notSHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXTand noShaderRequiredSubgroupSizeCreateInfoEXTstructure is included in thepNextchain, the local workgroup size in the X dimension of the shader must be a multiple of subgroupSize -
stagemust not beSHADER_STAGE_ALL_GRAPHICSorSHADER_STAGE_ALL - If the
tessellationShader
feature is not enabled,
stagemust not beSHADER_STAGE_TESSELLATION_CONTROL_BITorSHADER_STAGE_TESSELLATION_EVALUATION_BIT - If the
geometryShader
feature is not enabled,
stagemust not beSHADER_STAGE_GEOMETRY_BIT - If the
taskShader
feature is not enabled,
stagemust not beSHADER_STAGE_TASK_BIT_EXT - If the
meshShader
feature is not enabled,
stagemust not beSHADER_STAGE_MESH_BIT_EXT -
stagemust not beSHADER_STAGE_SUBPASS_SHADING_BIT_HUAWEI -
stagemust not beSHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI - If
stageisSHADER_STAGE_VERTEX_BIT,nextStagemust not include any bits other thanSHADER_STAGE_TESSELLATION_CONTROL_BIT,SHADER_STAGE_GEOMETRY_BIT, andSHADER_STAGE_FRAGMENT_BIT - If the
tessellationShader
feature is not enabled,
nextStagemust not includeSHADER_STAGE_TESSELLATION_CONTROL_BITorSHADER_STAGE_TESSELLATION_EVALUATION_BIT - If the
geometryShader
feature is not enabled,
nextStagemust not includeSHADER_STAGE_GEOMETRY_BIT - If
stageisSHADER_STAGE_TESSELLATION_CONTROL_BIT,nextStagemust not include any bits other thanSHADER_STAGE_TESSELLATION_EVALUATION_BIT - If
stageisSHADER_STAGE_TESSELLATION_EVALUATION_BIT,nextStagemust not include any bits other thanSHADER_STAGE_GEOMETRY_BITandSHADER_STAGE_FRAGMENT_BIT - If
stageisSHADER_STAGE_GEOMETRY_BIT,nextStagemust not include any bits other thanSHADER_STAGE_FRAGMENT_BIT - If
stageisSHADER_STAGE_FRAGMENT_BITorSHADER_STAGE_COMPUTE_BIT,nextStagemust be 0 - If
stageisSHADER_STAGE_TASK_BIT_EXT,nextStagemust not include any bits other thanSHADER_STAGE_MESH_BIT_EXT - If
stageisSHADER_STAGE_MESH_BIT_EXT,nextStagemust not include any bits other thanSHADER_STAGE_FRAGMENT_BIT - If
codeTypeisSHADER_CODE_TYPE_SPIRV_EXT,pNamemust be the name of anOpEntryPointinpCodewith an execution model that matchesstage - If
codeTypeisSHADER_CODE_TYPE_BINARY_EXT,pCodemust be aligned to16bytes - If
codeTypeisSHADER_CODE_TYPE_SPIRV_EXT,pCodemust be aligned to4bytes - If
codeTypeisSHADER_CODE_TYPE_SPIRV_EXT, and the identified entry point includes any variable in its interface that is declared with theClipDistanceBuiltIndecoration, that variable must not have an array size greater thanPhysicalDeviceLimits::maxClipDistances - If
codeTypeisSHADER_CODE_TYPE_SPIRV_EXT, and the identified entry point includes any variable in its interface that is declared with theCullDistanceBuiltIndecoration, that variable must not have an array size greater thanPhysicalDeviceLimits::maxCullDistances - If
codeTypeisSHADER_CODE_TYPE_SPIRV_EXT, and the identified entry point includes variables in its interface that are declared with theClipDistanceBuiltIndecoration and variables in its interface that are declared with theCullDistanceBuiltIndecoration, those variables must not have array sizes which sum to more thanPhysicalDeviceLimits::maxCombinedClipAndCullDistances - If
codeTypeisSHADER_CODE_TYPE_SPIRV_EXT, and the identified entry point includes any variable in its interface that is declared with theSampleMaskBuiltIndecoration, that variable must not have an array size greater thanPhysicalDeviceLimits::maxSampleMaskWords - If
codeTypeisSHADER_CODE_TYPE_SPIRV_EXT, andstageisSHADER_STAGE_TESSELLATION_CONTROL_BITorSHADER_STAGE_TESSELLATION_EVALUATION_BIT, and the identified entry point has anOpExecutionModeinstruction specifying a patch size withOutputVertices, the patch size must be greater than0and less than or equal toPhysicalDeviceLimits::maxTessellationPatchSize - If
codeTypeisSHADER_CODE_TYPE_SPIRV_EXT, andstageisSHADER_STAGE_GEOMETRY_BIT, the identified entry point must have anOpExecutionModeinstruction specifying a maximum output vertex count that is greater than0and less than or equal toPhysicalDeviceLimits::maxGeometryOutputVertices - If
codeTypeisSHADER_CODE_TYPE_SPIRV_EXT, andstageisSHADER_STAGE_GEOMETRY_BIT, the identified entry point must have anOpExecutionModeinstruction specifying an invocation count that is greater than0and less than or equal toPhysicalDeviceLimits::maxGeometryShaderInvocations - If
codeTypeisSHADER_CODE_TYPE_SPIRV_EXT, andstageis a pre-rasterization shader stage, and the identified entry point writes toLayerfor any primitive, it must write the same value toLayerfor all vertices of a given primitive - If
codeTypeisSHADER_CODE_TYPE_SPIRV_EXT, andstageis a pre-rasterization shader stage, and the identified entry point writes toViewportIndexfor any primitive, it must write the same value toViewportIndexfor all vertices of a given primitive - If
codeTypeisSHADER_CODE_TYPE_SPIRV_EXT, andstageisSHADER_STAGE_FRAGMENT_BIT, and the identified entry point writes toFragDepthin any execution path, all execution paths that are not exclusive to helper invocations must either discard the fragment, or write or initialize the value ofFragDepth - If
codeTypeisSHADER_CODE_TYPE_SPIRV_EXT, the shader code inpCodemust be valid as described by the Khronos SPIR-V Specification after applying the specializations provided inpSpecializationInfo, if any, and then converting all specialization constants into fixed constants - If
codeTypeisSHADER_CODE_TYPE_SPIRV_EXT, andstageisSHADER_STAGE_TESSELLATION_EVALUATION_BIT,pCodemust contain anOpExecutionModeinstruction specifying the type of subdivision - If
codeTypeisSHADER_CODE_TYPE_SPIRV_EXT, andstageisSHADER_STAGE_TESSELLATION_CONTROL_BIT,pCodemust contain anOpExecutionModeinstruction specifying the output patch size - Any two
elements of
pPushConstantRangesmust not include the same stage instageFlags - If
codeTypeisSHADER_CODE_TYPE_SPIRV_EXT,flagsdoes not includeSHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXTand if a push constant block is declared in a shader, then an element ofpPushConstantRanges->stageFlagsmust matchstage - If
codeTypeisSHADER_CODE_TYPE_SPIRV_EXT,flagsdoes not includeSHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXTand if a push constant block is declared in a shader, the block must be contained inside the element ofpPushConstantRangesthat matches the stage - If
codeTypeisSHADER_CODE_TYPE_SPIRV_EXT,flagsdoes not includeSHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXTand a resource variable is declared in a shader, the corresponding descriptor set inpSetLayoutsmust match the shader stage - If
codeTypeisSHADER_CODE_TYPE_SPIRV_EXT,flagsdoes not includeSHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXTand a resource variable is declared in a shader, and the descriptor type is notDESCRIPTOR_TYPE_MUTABLE_EXT, the corresponding descriptor set inpSetLayoutsmust match the descriptor type - If
codeTypeisSHADER_CODE_TYPE_SPIRV_EXT,flagsdoes not includeSHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXTand a resource variable is declared in a shader as an array, the corresponding descriptor set inpSetLayoutsmust match the descriptor count - If
codeTypeisSHADER_CODE_TYPE_SPIRV_EXT,flagsdoes not includeSHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXTand a resource variable is declared in a shader as an array of descriptors, then the descriptor type of that variable must not beDESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK - If
shader64BitIndexing
feature is not enabled,
flagsmust not containSHADER_CREATE_64_BIT_INDEXING_BIT_EXT -
setLayoutCountmust be less than or equal toPhysicalDeviceLimits::maxBoundDescriptorSets - If
flagsincludesSHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT,setLayoutCountmust be 0 - If
flagsincludesSHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT,pSetLayoutsmust beNULL - If
flagsincludesSHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT,pushConstantRangeCountmust be 0 - If
flagsincludesSHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT,pPushConstantRangesmust beNULL - If
flagsincludesSHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT, andcodeTypeisSHADER_CODE_TYPE_SPIRV_EXT, all shader variables in the shader resource interface with aDescriptorSetandBindingdecoration must have a mapping declared inShaderDescriptorSetAndBindingMappingInfoEXT::pMappings
Valid Usage (Implicit)
-
sTypemust beSTRUCTURE_TYPE_SHADER_CREATE_INFO_EXT
- Each
pNextmember of any structure (including this one) in thepNextchain must be eitherNULLor a pointer to a valid instance ofCustomResolveCreateInfoEXT,PipelineShaderStageRequiredSubgroupSizeCreateInfo,ShaderDescriptorSetAndBindingMappingInfoEXT, orValidationFeaturesEXT - The
sTypevalue of each structure in thepNextchain must be unique -
flagsmust be a valid combination ofShaderCreateFlagBitsEXTvalues -
stagemust be a validShaderStageFlagBitsvalue -
nextStagemust be a valid combination ofShaderStageFlagBitsvalues -
codeTypemust be a validShaderCodeTypeEXTvalue -
pCodemust be a valid pointer to an array ofcodeSizebytes - If
pNameis notNULL,pNamemust be a null-terminated UTF-8 string - If
setLayoutCountis not0, andpSetLayoutsis notNULL,pSetLayoutsmust be a valid pointer to an array ofsetLayoutCountvalidDescriptorSetLayouthandles - If
pushConstantRangeCountis not0, andpPushConstantRangesis notNULL,pPushConstantRangesmust be a valid pointer to an array ofpushConstantRangeCountvalidPushConstantRangestructures - If
pSpecializationInfois notNULL,pSpecializationInfomust be a valid pointer to a validSpecializationInfostructure -
codeSizemust be greater than0
See Also
VK_EXT_shader_object,
DescriptorSetLayout,
PushConstantRange, ShaderCodeTypeEXT,
ShaderCreateFlagsEXT,
ShaderStageFlagBits,
ShaderStageFlags,
SpecializationInfo,
StructureType, createShadersEXT
Constructors
| ShaderCreateInfoEXT | |
Fields
| |
Instances
newtype ShaderCreateFlagBitsEXT Source #
VkShaderCreateFlagBitsEXT - Bitmask controlling how a shader object is created
Description
SHADER_CREATE_LINK_STAGE_BIT_EXTspecifies that a shader is linked to all other shaders created in the samecreateShadersEXTcall whoseShaderCreateInfoEXTstructures'flagsincludeSHADER_CREATE_LINK_STAGE_BIT_EXT.
SHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXTspecifies that the SubgroupSize may vary in a task, mesh, or compute shader.SHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXTspecifies that the subgroup sizes must be launched with all invocations active in a task, mesh, or compute shader.SHADER_CREATE_NO_TASK_SHADER_BIT_EXTspecifies that a mesh shader must only be used without a task shader. Otherwise, the mesh shader must only be used with a task shader.SHADER_CREATE_DISPATCH_BASE_BIT_EXTspecifies that a compute shader can be used withcmdDispatchBasewith a non-zero base workgroup.SHADER_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_EXTspecifies that a fragment shader can be used with a fragment shading rate attachment.SHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXTspecifies that a fragment shader can be used with a fragment density map attachment.SHADER_CREATE_INDIRECT_BINDABLE_BIT_EXTspecifies that the shader can be used in combination with https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#device-generated-commands.SHADER_CREATE_64_BIT_INDEXING_BIT_EXTspecifies that the shader enables 64-bit indexing.SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXTspecifies that the shader will use descriptor heap mappings instead of descriptor set layouts.
See Also
Constructors
| ShaderCreateFlagBitsEXT Flags |
Bundled Patterns
Instances
newtype ShaderCodeTypeEXT Source #
VkShaderCodeTypeEXT - Indicate a shader code type
Description
SHADER_CODE_TYPE_BINARY_EXTspecifies shader code in an opaque, implementation-defined binary format specific to the physical device.
SHADER_CODE_TYPE_SPIRV_EXTspecifies shader code in SPIR-V format.
See Also
Constructors
| ShaderCodeTypeEXT Int32 |
Bundled Patterns
| pattern SHADER_CODE_TYPE_BINARY_EXT :: ShaderCodeTypeEXT | |
| pattern SHADER_CODE_TYPE_SPIRV_EXT :: ShaderCodeTypeEXT |
Instances
type ShaderRequiredSubgroupSizeCreateInfoEXT = PipelineShaderStageRequiredSubgroupSizeCreateInfo Source #
type EXT_SHADER_OBJECT_SPEC_VERSION = 1 Source #
pattern EXT_SHADER_OBJECT_SPEC_VERSION :: Integral a => a Source #
type EXT_SHADER_OBJECT_EXTENSION_NAME = "VK_EXT_shader_object" Source #
pattern EXT_SHADER_OBJECT_EXTENSION_NAME :: (Eq a, IsString a) => a Source #
VkShaderEXT - Opaque handle to a shader object
See Also
VK_DEFINE_NON_DISPATCHABLE_HANDLE,
VK_EXT_shader_object,
GeneratedCommandsShaderInfoEXT,
IndirectExecutionSetShaderInfoEXT,
WriteIndirectExecutionSetShaderEXT,
cmdBindShadersEXT,
createShadersEXT,
destroyShaderEXT,
getShaderBinaryDataEXT
Instances
| Eq ShaderEXT Source # | |
| Ord ShaderEXT Source # | |
| Storable ShaderEXT Source # | |
Defined in Vulkan.Extensions.Handles | |
| Show ShaderEXT Source # | |
| HasObjectType ShaderEXT Source # | |
Defined in Vulkan.Extensions.Handles Methods objectTypeAndHandle :: ShaderEXT -> (ObjectType, Word64) Source # | |
| IsHandle ShaderEXT Source # | |
Defined in Vulkan.Extensions.Handles | |
| Zero ShaderEXT Source # | |
Defined in Vulkan.Extensions.Handles | |
data ViewportSwizzleNV Source #
VkViewportSwizzleNV - Structure specifying a viewport swizzle
Valid Usage (Implicit)
See Also
VK_NV_viewport_swizzle,
PipelineViewportSwizzleStateCreateInfoNV,
ViewportCoordinateSwizzleNV,
cmdSetViewportSwizzleNV
Constructors
| ViewportSwizzleNV | |
Fields
| |
Instances
data ColorBlendEquationEXT Source #
VkColorBlendEquationEXT - Structure specifying the color blend factors and operations for an attachment
Valid Usage
- If the
dualSrcBlend
feature is not enabled,
srcColorBlendFactormust not beBLEND_FACTOR_SRC1_COLOR,BLEND_FACTOR_ONE_MINUS_SRC1_COLOR,BLEND_FACTOR_SRC1_ALPHA, orBLEND_FACTOR_ONE_MINUS_SRC1_ALPHA
- If the
dualSrcBlend
feature is not enabled,
dstColorBlendFactormust not beBLEND_FACTOR_SRC1_COLOR,BLEND_FACTOR_ONE_MINUS_SRC1_COLOR,BLEND_FACTOR_SRC1_ALPHA, orBLEND_FACTOR_ONE_MINUS_SRC1_ALPHA - If the
dualSrcBlend
feature is not enabled,
srcAlphaBlendFactormust not beBLEND_FACTOR_SRC1_COLOR,BLEND_FACTOR_ONE_MINUS_SRC1_COLOR,BLEND_FACTOR_SRC1_ALPHA, orBLEND_FACTOR_ONE_MINUS_SRC1_ALPHA - If the
dualSrcBlend
feature is not enabled,
dstAlphaBlendFactormust not beBLEND_FACTOR_SRC1_COLOR,BLEND_FACTOR_ONE_MINUS_SRC1_COLOR,BLEND_FACTOR_SRC1_ALPHA, orBLEND_FACTOR_ONE_MINUS_SRC1_ALPHA -
colorBlendOpandalphaBlendOpmust not beBLEND_OP_ZERO_EXT,BLEND_OP_SRC_EXT,BLEND_OP_DST_EXT,BLEND_OP_SRC_OVER_EXT,BLEND_OP_DST_OVER_EXT,BLEND_OP_SRC_IN_EXT,BLEND_OP_DST_IN_EXT,BLEND_OP_SRC_OUT_EXT,BLEND_OP_DST_OUT_EXT,BLEND_OP_SRC_ATOP_EXT,BLEND_OP_DST_ATOP_EXT,BLEND_OP_XOR_EXT,BLEND_OP_MULTIPLY_EXT,BLEND_OP_SCREEN_EXT,BLEND_OP_OVERLAY_EXT,BLEND_OP_DARKEN_EXT,BLEND_OP_LIGHTEN_EXT,BLEND_OP_COLORDODGE_EXT,BLEND_OP_COLORBURN_EXT,BLEND_OP_HARDLIGHT_EXT,BLEND_OP_SOFTLIGHT_EXT,BLEND_OP_DIFFERENCE_EXT,BLEND_OP_EXCLUSION_EXT,BLEND_OP_INVERT_EXT,BLEND_OP_INVERT_RGB_EXT,BLEND_OP_LINEARDODGE_EXT,BLEND_OP_LINEARBURN_EXT,BLEND_OP_VIVIDLIGHT_EXT,BLEND_OP_LINEARLIGHT_EXT,BLEND_OP_PINLIGHT_EXT,BLEND_OP_HARDMIX_EXT,BLEND_OP_HSL_HUE_EXT,BLEND_OP_HSL_SATURATION_EXT,BLEND_OP_HSL_COLOR_EXT,BLEND_OP_HSL_LUMINOSITY_EXT,BLEND_OP_PLUS_EXT,BLEND_OP_PLUS_CLAMPED_EXT,BLEND_OP_PLUS_CLAMPED_ALPHA_EXT,BLEND_OP_PLUS_DARKER_EXT,BLEND_OP_MINUS_EXT,BLEND_OP_MINUS_CLAMPED_EXT,BLEND_OP_CONTRAST_EXT,BLEND_OP_INVERT_OVG_EXT,BLEND_OP_RED_EXT,BLEND_OP_GREEN_EXT, orBLEND_OP_BLUE_EXT -
If the
VK_KHR_portability_subsetextension is enabled, andPhysicalDevicePortabilitySubsetFeaturesKHR::constantAlphaColorBlendFactorsisFALSE,srcColorBlendFactormust not beBLEND_FACTOR_CONSTANT_ALPHAorBLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA -
If the
VK_KHR_portability_subsetextension is enabled, andPhysicalDevicePortabilitySubsetFeaturesKHR::constantAlphaColorBlendFactorsisFALSE,dstColorBlendFactormust not beBLEND_FACTOR_CONSTANT_ALPHAorBLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA
Valid Usage (Implicit)
-
srcColorBlendFactormust be a validBlendFactorvalue
-
dstColorBlendFactormust be a validBlendFactorvalue -
colorBlendOpmust be a validBlendOpvalue -
srcAlphaBlendFactormust be a validBlendFactorvalue -
dstAlphaBlendFactormust be a validBlendFactorvalue -
alphaBlendOpmust be a validBlendOpvalue
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
BlendFactor,
BlendOp, cmdSetColorBlendEquationEXT
Constructors
| ColorBlendEquationEXT | |
Fields
| |
Instances
data ColorBlendAdvancedEXT Source #
VkColorBlendAdvancedEXT - Structure specifying the advanced blend operation parameters for an attachment
Valid Usage
- If the
non-premultiplied source color
property is not supported,
srcPremultipliedmust beTRUE
- If the
non-premultiplied destination color
property is not supported,
dstPremultipliedmust beTRUE - If the
correlated overlap
property is not supported,
blendOverlapmust beBLEND_OVERLAP_UNCORRELATED_EXT
Valid Usage (Implicit)
-
advancedBlendOpmust be a validBlendOpvalue
-
blendOverlapmust be a validBlendOverlapEXTvalue
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
BlendOp,
BlendOverlapEXT,
Bool32, cmdSetColorBlendAdvancedEXT
Constructors
| ColorBlendAdvancedEXT | |
Fields
| |
Instances
data VertexInputBindingDescription2EXT Source #
VkVertexInputBindingDescription2EXT - Structure specifying the extended vertex input binding description
Valid Usage
-
bindingmust be less thanPhysicalDeviceLimits::maxVertexInputBindings
-
stridemust be less than or equal toPhysicalDeviceLimits::maxVertexInputBindingStride - If the
vertexAttributeInstanceRateZeroDivisor
feature is not enabled,
divisormust not be0 - If the
vertexAttributeInstanceRateDivisor
feature is not enabled,
divisormust be1 -
divisormust be a value between0andPhysicalDeviceVertexAttributeDivisorPropertiesEXT::maxVertexAttribDivisor, inclusive - If
divisoris not1theninputRatemust be of typeVERTEX_INPUT_RATE_INSTANCE
Valid Usage (Implicit)
-
sTypemust beSTRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT
-
inputRatemust be a validVertexInputRatevalue
See Also
VK_EXT_shader_object,
VK_EXT_vertex_input_dynamic_state,
StructureType,
VertexInputRate,
cmdSetVertexInputEXT
Constructors
| VertexInputBindingDescription2EXT | |
Fields
| |
Instances
data VertexInputAttributeDescription2EXT Source #
VkVertexInputAttributeDescription2EXT - Structure specifying the extended vertex input attribute description
Valid Usage
-
locationmust be less thanPhysicalDeviceLimits::maxVertexInputAttributes
-
bindingmust be less thanPhysicalDeviceLimits::maxVertexInputBindings -
offsetmust be less than or equal toPhysicalDeviceLimits::maxVertexInputAttributeOffset - The
format features
of
formatmust containFORMAT_FEATURE_VERTEX_BUFFER_BIT -
If the
VK_KHR_portability_subsetextension is enabled, andPhysicalDevicePortabilitySubsetFeaturesKHR::vertexAttributeAccessBeyondStrideisFALSE, the sum ofoffsetplus the size of the vertex attribute data described byformatmust not be greater thanstridein theVertexInputBindingDescription2EXTreferenced inbinding
Valid Usage (Implicit)
-
sTypemust beSTRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT
-
formatmust be a validFormatvalue
See Also
VK_EXT_shader_object,
VK_EXT_vertex_input_dynamic_state,
Format,
StructureType,
cmdSetVertexInputEXT
Constructors
| VertexInputAttributeDescription2EXT | |
Fields
| |
Instances
data DepthClampRangeEXT Source #
VkDepthClampRangeEXT - Structure specifying a depth clamp range
Valid Usage
- If the
VK_EXT_depth_range_unrestrictedextension is not enabled,minDepthClampmust be greater than or equal to0.0 - If the
VK_EXT_depth_range_unrestrictedextension is not enabled,maxDepthClampmust be less than or equal to1.0
See Also
VK_EXT_depth_clamp_control,
PipelineViewportDepthClampControlCreateInfoEXT,
cmdSetDepthClampRangeEXT
Constructors
| DepthClampRangeEXT | |
Fields
| |
Instances
cmdSetPatchControlPointsEXT Source #
Arguments
| :: MonadIO io | |
| => CommandBuffer |
|
| -> ("patchControlPoints" ::: Word32) |
|
| -> io () |
vkCmdSetPatchControlPointsEXT - Specify the number of control points per patch dynamically for a command buffer
Description
This command sets the number of control points per patch for subsequent
drawing commands when drawing using
shader objects,
or when the graphics pipeline is created with
DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT
set in
PipelineDynamicStateCreateInfo::pDynamicStates.
Otherwise, this state is specified by the
PipelineTessellationStateCreateInfo::patchControlPoints
value used to create the currently active pipeline.
Valid Usage
At least one of the following must be true:
- The extendedDynamicState2PatchControlPoints feature is enabled
- The shaderObject feature is enabled
-
patchControlPointsmust be greater than zero and less than or equal toPhysicalDeviceLimits::maxTessellationPatchSize
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must supportQUEUE_GRAPHICS_BIToperations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | VK_QUEUE_GRAPHICS_BIT | State |
Conditional Rendering
vkCmdSetPatchControlPointsEXT is not affected by conditional rendering
See Also
VK_EXT_extended_dynamic_state2,
VK_EXT_shader_object,
CommandBuffer
Arguments
| :: MonadIO io | |
| => CommandBuffer |
|
| -> LogicOp |
|
| -> io () |
vkCmdSetLogicOpEXT - Select which logical operation to apply for blend state dynamically for a command buffer
Description
This command sets the logical operation for blend state for subsequent
drawing commands when drawing using
shader objects,
or when the graphics pipeline is created with
DYNAMIC_STATE_LOGIC_OP_EXT set in
PipelineDynamicStateCreateInfo::pDynamicStates.
Otherwise, this state is specified by the
PipelineColorBlendStateCreateInfo::logicOp
value used to create the currently active pipeline.
Valid Usage
At least one of the following must be true:
- The extendedDynamicState2LogicOp feature is enabled
- The shaderObject feature is enabled
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
logicOpmust be a validLogicOpvalue -
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must supportQUEUE_GRAPHICS_BIToperations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | VK_QUEUE_GRAPHICS_BIT | State |
Conditional Rendering
vkCmdSetLogicOpEXT is not affected by conditional rendering
See Also
VK_EXT_extended_dynamic_state2,
VK_EXT_shader_object,
CommandBuffer,
LogicOp
cmdSetTessellationDomainOriginEXT Source #
Arguments
| :: MonadIO io | |
| => CommandBuffer |
|
| -> TessellationDomainOrigin |
|
| -> io () |
vkCmdSetTessellationDomainOriginEXT - Specify the origin of the tessellation domain space dynamically for a command buffer
Description
This command sets the origin of the tessellation domain space for
subsequent drawing commands when drawing using
shader objects,
or when the graphics pipeline is created with
DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT
set in
PipelineDynamicStateCreateInfo::pDynamicStates.
Otherwise, this state is specified by the
PipelineTessellationDomainOriginStateCreateInfo::domainOrigin
value used to create the currently active pipeline.
Valid Usage
At least one of the following must be true:
- The extendedDynamicState3TessellationDomainOrigin feature is enabled
- The shaderObject feature is enabled
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
domainOriginmust be a validTessellationDomainOriginvalue -
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must supportQUEUE_GRAPHICS_BIToperations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | VK_QUEUE_GRAPHICS_BIT | State |
Conditional Rendering
vkCmdSetTessellationDomainOriginEXT is not affected by conditional rendering
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
VK_KHR_maintenance2,
VK_VERSION_1_1,
CommandBuffer,
TessellationDomainOrigin
cmdSetDepthClampEnableEXT Source #
Arguments
| :: MonadIO io | |
| => CommandBuffer |
|
| -> ("depthClampEnable" ::: Bool) |
|
| -> io () |
vkCmdSetDepthClampEnableEXT - Specify dynamically whether depth clamping is enabled in the command buffer
Description
This command sets whether depth clamping is enabled or disabled for
subsequent drawing commands when drawing using
shader objects,
or when the graphics pipeline is created with
DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT
set in
PipelineDynamicStateCreateInfo::pDynamicStates.
Otherwise, this state is specified by the
PipelineRasterizationStateCreateInfo::depthClampEnable
value used to create the currently active pipeline.
If the depth clamping state is changed dynamically, and the pipeline was
not created with
DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT
enabled, then depth clipping is enabled when depth clamping is disabled
and vice versa.
Valid Usage
At least one of the following must be true:
- The extendedDynamicState3DepthClampEnable feature is enabled
- The shaderObject feature is enabled
- If the
depthClamp
feature is not enabled,
depthClampEnablemust beFALSE
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must supportQUEUE_GRAPHICS_BIToperations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | VK_QUEUE_GRAPHICS_BIT | State |
Conditional Rendering
vkCmdSetDepthClampEnableEXT is not affected by conditional rendering
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
Bool32,
CommandBuffer
Arguments
| :: MonadIO io | |
| => CommandBuffer |
|
| -> PolygonMode |
|
| -> io () |
vkCmdSetPolygonModeEXT - Specify polygon mode dynamically for a command buffer
Description
This command sets the polygon mode for subsequent drawing commands when
drawing using
shader objects,
or when the graphics pipeline is created with
DYNAMIC_STATE_POLYGON_MODE_EXT set in
PipelineDynamicStateCreateInfo::pDynamicStates.
Otherwise, this state is specified by the
PipelineRasterizationStateCreateInfo::polygonMode
value used to create the currently active pipeline.
Valid Usage
At least one of the following must be true:
- The extendedDynamicState3PolygonMode feature is enabled
- The shaderObject feature is enabled
- If the
fillModeNonSolid
feature is not enabled,
polygonModemust bePOLYGON_MODE_FILLorPOLYGON_MODE_FILL_RECTANGLE_NV - If the
VK_NV_fill_rectangleextension is not enabled,polygonModemust not bePOLYGON_MODE_FILL_RECTANGLE_NV
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
polygonModemust be a validPolygonModevalue -
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must supportQUEUE_GRAPHICS_BIToperations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | VK_QUEUE_GRAPHICS_BIT | State |
Conditional Rendering
vkCmdSetPolygonModeEXT is not affected by conditional rendering
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
CommandBuffer,
PolygonMode
cmdSetRasterizationSamplesEXT Source #
Arguments
| :: MonadIO io | |
| => CommandBuffer |
|
| -> ("rasterizationSamples" ::: SampleCountFlagBits) |
|
| -> io () |
vkCmdSetRasterizationSamplesEXT - Specify the rasterization samples dynamically for a command buffer
Description
This command sets the rasterizationSamples for subsequent drawing
commands when drawing using
shader objects,
or when the graphics pipeline is created with
DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
set in
PipelineDynamicStateCreateInfo::pDynamicStates.
Otherwise, this state is specified by the
PipelineMultisampleStateCreateInfo::rasterizationSamples
value used to create the currently active pipeline.
Valid Usage
At least one of the following must be true:
- The extendedDynamicState3RasterizationSamples feature is enabled
- The shaderObject feature is enabled
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
rasterizationSamplesmust be a validSampleCountFlagBitsvalue -
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must supportQUEUE_GRAPHICS_BIToperations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | VK_QUEUE_GRAPHICS_BIT | State |
Conditional Rendering
vkCmdSetRasterizationSamplesEXT is not affected by conditional rendering
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
CommandBuffer,
SampleCountFlagBits
Arguments
| :: MonadIO io | |
| => CommandBuffer |
|
| -> ("samples" ::: SampleCountFlagBits) |
|
| -> ("sampleMask" ::: Vector SampleMask) |
|
| -> io () |
vkCmdSetSampleMaskEXT - Specify the sample mask dynamically for a command buffer
Description
This command sets the sample mask for subsequent drawing commands when
drawing using
shader objects,
or when the graphics pipeline is created with
DYNAMIC_STATE_SAMPLE_MASK_EXT set in
PipelineDynamicStateCreateInfo::pDynamicStates.
Otherwise, this state is specified by the
PipelineMultisampleStateCreateInfo::pSampleMask
value used to create the currently active pipeline.
Valid Usage
At least one of the following must be true:
- The extendedDynamicState3SampleMask feature is enabled
- The shaderObject feature is enabled
-
pSampleMaskmust not beNULLif the maintenance10 feature is not enabled
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
samplesmust be a validSampleCountFlagBitsvalue - If
pSampleMaskis notNULL,pSampleMaskmust be a valid pointer to an array of \(\lceil{\mathit{samples} \over 32}\rceil\)SampleMaskvalues -
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must supportQUEUE_GRAPHICS_BIToperations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | VK_QUEUE_GRAPHICS_BIT | State |
Conditional Rendering
vkCmdSetSampleMaskEXT is not affected by conditional rendering
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
CommandBuffer,
SampleCountFlagBits,
SampleMask
cmdSetAlphaToCoverageEnableEXT Source #
Arguments
| :: MonadIO io | |
| => CommandBuffer |
|
| -> ("alphaToCoverageEnable" ::: Bool) |
|
| -> io () |
vkCmdSetAlphaToCoverageEnableEXT - Specify the alpha to coverage enable state dynamically for a command buffer
Description
This command sets the alphaToCoverageEnable state for subsequent
drawing commands when drawing using
shader objects,
or when the graphics pipeline is created with
DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT
set in
PipelineDynamicStateCreateInfo::pDynamicStates.
Otherwise, this state is specified by the
PipelineMultisampleStateCreateInfo::alphaToCoverageEnable
value used to create the currently active pipeline.
Valid Usage
At least one of the following must be true:
- The extendedDynamicState3AlphaToCoverageEnable feature is enabled
- The shaderObject feature is enabled
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must supportQUEUE_GRAPHICS_BIToperations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | VK_QUEUE_GRAPHICS_BIT | State |
Conditional Rendering
vkCmdSetAlphaToCoverageEnableEXT is not affected by conditional rendering
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
Bool32,
CommandBuffer
cmdSetAlphaToOneEnableEXT Source #
Arguments
| :: MonadIO io | |
| => CommandBuffer |
|
| -> ("alphaToOneEnable" ::: Bool) |
|
| -> io () |
vkCmdSetAlphaToOneEnableEXT - Specify the alpha to one enable state dynamically for a command buffer
Description
This command sets the alphaToOneEnable state for subsequent drawing
commands when drawing using
shader objects,
or when the graphics pipeline is created with
DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT
set in
PipelineDynamicStateCreateInfo::pDynamicStates.
Otherwise, this state is specified by the
PipelineMultisampleStateCreateInfo::alphaToOneEnable
value used to create the currently active pipeline.
Valid Usage
At least one of the following must be true:
- The extendedDynamicState3AlphaToOneEnable feature is enabled
- The shaderObject feature is enabled
- If the
alphaToOne
feature is not enabled,
alphaToOneEnablemust beFALSE
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must supportQUEUE_GRAPHICS_BIToperations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | VK_QUEUE_GRAPHICS_BIT | State |
Conditional Rendering
vkCmdSetAlphaToOneEnableEXT is not affected by conditional rendering
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
Bool32,
CommandBuffer
cmdSetLogicOpEnableEXT Source #
Arguments
| :: MonadIO io | |
| => CommandBuffer |
|
| -> ("logicOpEnable" ::: Bool) |
|
| -> io () |
vkCmdSetLogicOpEnableEXT - Specify dynamically whether logical operations are enabled for a command buffer
Description
This command sets whether logical operations are enabled for subsequent
drawing commands when drawing using
shader objects,
or when the graphics pipeline is created with
DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT set
in
PipelineDynamicStateCreateInfo::pDynamicStates.
Otherwise, this state is specified by the
PipelineColorBlendStateCreateInfo::logicOpEnable
value used to create the currently active pipeline.
Valid Usage
At least one of the following must be true:
- The extendedDynamicState3LogicOpEnable feature is enabled
- The shaderObject feature is enabled
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must supportQUEUE_GRAPHICS_BIToperations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | VK_QUEUE_GRAPHICS_BIT | State |
Conditional Rendering
vkCmdSetLogicOpEnableEXT is not affected by conditional rendering
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
Bool32,
CommandBuffer
cmdSetColorBlendEnableEXT Source #
Arguments
| :: MonadIO io | |
| => CommandBuffer |
|
| -> ("firstAttachment" ::: Word32) |
|
| -> ("colorBlendEnables" ::: Vector Bool) |
|
| -> io () |
vkCmdSetColorBlendEnableEXT - Specify the blendEnable for each
attachment dynamically for a command buffer
Description
This command sets the color blending enable of the specified color
attachments for subsequent drawing commands when drawing using
shader objects,
or when the graphics pipeline is created with
DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
set in
PipelineDynamicStateCreateInfo::pDynamicStates.
Otherwise, this state is specified by the
PipelineColorBlendAttachmentState::blendEnable
values used to create the currently active pipeline.
Valid Usage
At least one of the following must be true:
- The extendedDynamicState3ColorBlendEnable feature is enabled
- The shaderObject feature is enabled
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
pColorBlendEnablesmust be a valid pointer to an array ofattachmentCountBool32values -
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must supportQUEUE_GRAPHICS_BIToperations - This command must only be called outside of a video coding scope
-
attachmentCountmust be greater than0
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | VK_QUEUE_GRAPHICS_BIT | State |
Conditional Rendering
vkCmdSetColorBlendEnableEXT is not affected by conditional rendering
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
Bool32,
CommandBuffer
cmdSetColorBlendEquationEXT Source #
Arguments
| :: MonadIO io | |
| => CommandBuffer |
|
| -> ("firstAttachment" ::: Word32) |
|
| -> ("colorBlendEquations" ::: Vector ColorBlendEquationEXT) |
|
| -> io () |
vkCmdSetColorBlendEquationEXT - Specify the blend factors and operations dynamically for a command buffer
Description
This command sets the color blending factors and operations of the
specified attachments for subsequent drawing commands when drawing using
shader objects,
or when the graphics pipeline is created with
DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT
set in
PipelineDynamicStateCreateInfo::pDynamicStates.
Otherwise, this state is specified by the
PipelineColorBlendAttachmentState::srcColorBlendFactor,
PipelineColorBlendAttachmentState::dstColorBlendFactor,
PipelineColorBlendAttachmentState::colorBlendOp,
PipelineColorBlendAttachmentState::srcAlphaBlendFactor,
PipelineColorBlendAttachmentState::dstAlphaBlendFactor,
and
PipelineColorBlendAttachmentState::alphaBlendOp
values used to create the currently active pipeline.
Valid Usage
At least one of the following must be true:
- The extendedDynamicState3ColorBlendEquation feature is enabled
- The shaderObject feature is enabled
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
pColorBlendEquationsmust be a valid pointer to an array ofattachmentCountvalidColorBlendEquationEXTstructures -
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must supportQUEUE_GRAPHICS_BIToperations - This command must only be called outside of a video coding scope
-
attachmentCountmust be greater than0
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | VK_QUEUE_GRAPHICS_BIT | State |
Conditional Rendering
vkCmdSetColorBlendEquationEXT is not affected by conditional rendering
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
ColorBlendEquationEXT, CommandBuffer
cmdSetColorWriteMaskEXT Source #
Arguments
| :: MonadIO io | |
| => CommandBuffer |
|
| -> ("firstAttachment" ::: Word32) |
|
| -> ("colorWriteMasks" ::: Vector ColorComponentFlags) |
|
| -> io () |
vkCmdSetColorWriteMaskEXT - Specify the color write masks for each attachment dynamically for a command buffer
Description
This command sets the color write masks of the specified attachments for
subsequent drawing commands when drawing using
shader objects,
or when the graphics pipeline is created with
DYNAMIC_STATE_COLOR_WRITE_MASK_EXT
set in
PipelineDynamicStateCreateInfo::pDynamicStates.
Otherwise, this state is specified by the
PipelineColorBlendAttachmentState::colorWriteMask
values used to create the currently active pipeline.
Formats with bits that are shared between components specified by
ColorComponentFlagBits,
such as FORMAT_E5B9G9R9_UFLOAT_PACK32,
cannot have their channels individually masked by this functionality;
either all components that share bits have to be enabled, or none of
them.
Valid Usage
At least one of the following must be true:
- The extendedDynamicState3ColorWriteMask feature is enabled
- The shaderObject feature is enabled
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
pColorWriteMasksmust be a valid pointer to an array ofattachmentCountvalid combinations ofColorComponentFlagBitsvalues -
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must supportQUEUE_GRAPHICS_BIToperations - This command must only be called outside of a video coding scope
-
attachmentCountmust be greater than0
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | VK_QUEUE_GRAPHICS_BIT | State |
Conditional Rendering
vkCmdSetColorWriteMaskEXT is not affected by conditional rendering
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
ColorComponentFlags,
CommandBuffer
cmdSetRasterizationStreamEXT Source #
Arguments
| :: MonadIO io | |
| => CommandBuffer |
|
| -> ("rasterizationStream" ::: Word32) |
|
| -> io () |
vkCmdSetRasterizationStreamEXT - Specify the rasterization stream dynamically for a command buffer
Description
This command sets the rasterizationStream state for subsequent drawing
commands when drawing using
shader objects,
or when the graphics pipeline is created with
DYNAMIC_STATE_RASTERIZATION_STREAM_EXT
set in
PipelineDynamicStateCreateInfo::pDynamicStates.
Otherwise, this state is specified by the
PipelineRasterizationStateStreamCreateInfoEXT::rasterizationStream
value used to create the currently active pipeline.
Valid Usage
At least one of the following must be true:
- The extendedDynamicState3RasterizationStream feature is enabled
- The shaderObject feature is enabled
- The transformFeedback feature must be enabled
-
rasterizationStreammust be less thanPhysicalDeviceTransformFeedbackPropertiesEXT::maxTransformFeedbackStreams -
rasterizationStreammust be zero ifPhysicalDeviceTransformFeedbackPropertiesEXT::transformFeedbackRasterizationStreamSelectisFALSE
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must supportQUEUE_GRAPHICS_BIToperations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | VK_QUEUE_GRAPHICS_BIT | State |
Conditional Rendering
vkCmdSetRasterizationStreamEXT is not affected by conditional rendering
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
VK_EXT_transform_feedback,
CommandBuffer
cmdSetConservativeRasterizationModeEXT Source #
Arguments
| :: MonadIO io | |
| => CommandBuffer |
|
| -> ConservativeRasterizationModeEXT |
|
| -> io () |
vkCmdSetConservativeRasterizationModeEXT - Specify the conservative rasterization mode dynamically for a command buffer
Description
This command sets the conservativeRasterizationMode state for
subsequent drawing commands when drawing using
shader objects,
or when the graphics pipeline is created with
DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT
set in
PipelineDynamicStateCreateInfo::pDynamicStates.
Otherwise, this state is specified by the
PipelineRasterizationConservativeStateCreateInfoEXT::conservativeRasterizationMode
value used to create the currently active pipeline.
Valid Usage
At least one of the following must be true:
- The extendedDynamicState3ConservativeRasterizationMode feature is enabled
- The shaderObject feature is enabled
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
conservativeRasterizationModemust be a validConservativeRasterizationModeEXTvalue -
commandBuffermust be in the recording state -
The
CommandPoolthatcommandBufferwas allocated from must supportQUEUE_GRAPHICS_BIToperations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | VK_QUEUE_GRAPHICS_BIT | State |
Conditional Rendering
vkCmdSetConservativeRasterizationModeEXT is not affected by conditional rendering
See Also
VK_EXT_conservative_rasterization,
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
CommandBuffer,
ConservativeRasterizationModeEXT
cmdSetExtraPrimitiveOverestimationSizeEXT Source #
Arguments
| :: MonadIO io | |
| => CommandBuffer |
|
| -> ("extraPrimitiveOverestimationSize" ::: Float) |
|
| -> io () |
vkCmdSetExtraPrimitiveOverestimationSizeEXT - Specify the conservative rasterization extra primitive overestimation size dynamically for a command buffer
Description
This command sets the extraPrimitiveOverestimationSize for subsequent
drawing commands when drawing using
shader objects,
or when the graphics pipeline is created with
DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT
set in
PipelineDynamicStateCreateInfo::pDynamicStates.
Otherwise, this state is specified by the
PipelineRasterizationConservativeStateCreateInfoEXT::extraPrimitiveOverestimationSize
value used to create the currently active pipeline.
Valid Usage
At least one of the following must be true:
- The extendedDynamicState3ExtraPrimitiveOverestimationSize feature is enabled
- The shaderObject feature is enabled
-
extraPrimitiveOverestimationSizemust be in the range of0.0toPhysicalDeviceConservativeRasterizationPropertiesEXT::maxExtraPrimitiveOverestimationSizeinclusive
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
commandBuffermust be in the recording state -
The
CommandPoolthatcommandBufferwas allocated from must supportQUEUE_GRAPHICS_BIToperations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | VK_QUEUE_GRAPHICS_BIT | State |
Conditional Rendering
vkCmdSetExtraPrimitiveOverestimationSizeEXT is not affected by conditional rendering
See Also
VK_EXT_conservative_rasterization,
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
CommandBuffer
cmdSetDepthClipEnableEXT Source #
Arguments
| :: MonadIO io | |
| => CommandBuffer |
|
| -> ("depthClipEnable" ::: Bool) |
|
| -> io () |
vkCmdSetDepthClipEnableEXT - Specify dynamically whether depth clipping is enabled in the command buffer
Description
This command sets whether depth clipping is enabled or disabled for
subsequent drawing commands when drawing using
shader objects,
or when the graphics pipeline is created with
DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT
set in
PipelineDynamicStateCreateInfo::pDynamicStates.
Otherwise, this state is specified by the
PipelineRasterizationDepthClipStateCreateInfoEXT::depthClipEnable
value used to create the currently active pipeline, or by the inverse of
PipelineRasterizationStateCreateInfo::depthClampEnable
if
PipelineRasterizationDepthClipStateCreateInfoEXT
is not specified.
Valid Usage
At least one of the following must be true:
- The extendedDynamicState3DepthClipEnable feature is enabled
- The shaderObject feature is enabled
- The depthClipEnable feature must be enabled
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must supportQUEUE_GRAPHICS_BIToperations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | VK_QUEUE_GRAPHICS_BIT | State |
Conditional Rendering
vkCmdSetDepthClipEnableEXT is not affected by conditional rendering
See Also
VK_EXT_depth_clip_enable,
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
Bool32,
CommandBuffer
cmdSetSampleLocationsEnableEXT Source #
Arguments
| :: MonadIO io | |
| => CommandBuffer |
|
| -> ("sampleLocationsEnable" ::: Bool) |
|
| -> io () |
vkCmdSetSampleLocationsEnableEXT - Specify the samples locations enable state dynamically for a command buffer
Description
This command sets the sampleLocationsEnable state for subsequent
drawing commands when drawing using
shader objects,
or when the graphics pipeline is created with
DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
set in
PipelineDynamicStateCreateInfo::pDynamicStates.
Otherwise, this state is specified by the
PipelineSampleLocationsStateCreateInfoEXT::sampleLocationsEnable
value used to create the currently active pipeline.
Valid Usage
At least one of the following must be true:
- The extendedDynamicState3SampleLocationsEnable feature is enabled
- The shaderObject feature is enabled
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must supportQUEUE_GRAPHICS_BIToperations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | VK_QUEUE_GRAPHICS_BIT | State |
Conditional Rendering
vkCmdSetSampleLocationsEnableEXT is not affected by conditional rendering
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_sample_locations,
VK_EXT_shader_object,
Bool32,
CommandBuffer
cmdSetColorBlendAdvancedEXT Source #
Arguments
| :: MonadIO io | |
| => CommandBuffer |
|
| -> ("firstAttachment" ::: Word32) |
|
| -> ("colorBlendAdvanced" ::: Vector ColorBlendAdvancedEXT) |
|
| -> io () |
vkCmdSetColorBlendAdvancedEXT - Specify the advanced color blend state dynamically for a command buffer
Description
This command sets the advanced blend operation parameters of the
specified attachments for subsequent drawing commands when drawing using
shader objects,
or when the graphics pipeline is created with
DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
set in
PipelineDynamicStateCreateInfo::pDynamicStates.
Otherwise, this state is specified by the
PipelineColorBlendAdvancedStateCreateInfoEXT::srcPremultiplied,
PipelineColorBlendAdvancedStateCreateInfoEXT::dstPremultiplied,
and
PipelineColorBlendAdvancedStateCreateInfoEXT::blendOverlap
values used to create the currently active pipeline.
Valid Usage
At least one of the following must be true:
- The extendedDynamicState3ColorBlendAdvanced feature is enabled
- The shaderObject feature is enabled
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
pColorBlendAdvancedmust be a valid pointer to an array ofattachmentCountvalidColorBlendAdvancedEXTstructures -
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must supportQUEUE_GRAPHICS_BIToperations - This command must only be called outside of a video coding scope
-
attachmentCountmust be greater than0
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | VK_QUEUE_GRAPHICS_BIT | State |
Conditional Rendering
vkCmdSetColorBlendAdvancedEXT is not affected by conditional rendering
See Also
VK_EXT_blend_operation_advanced,
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
ColorBlendAdvancedEXT, CommandBuffer
cmdSetProvokingVertexModeEXT Source #
Arguments
| :: MonadIO io | |
| => CommandBuffer |
|
| -> ProvokingVertexModeEXT |
|
| -> io () |
vkCmdSetProvokingVertexModeEXT - Specify the provoking vertex mode dynamically for a command buffer
Description
This command sets the provokingVertexMode state for subsequent drawing
commands when drawing using
shader objects,
or when the graphics pipeline is created with
DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT
set in
PipelineDynamicStateCreateInfo::pDynamicStates.
Otherwise, this state is specified by the
PipelineRasterizationProvokingVertexStateCreateInfoEXT::provokingVertexMode
value used to create the currently active pipeline.
Valid Usage
At least one of the following must be true:
- The extendedDynamicState3ProvokingVertexMode feature is enabled
- The shaderObject feature is enabled
- If
provokingVertexModeisPROVOKING_VERTEX_MODE_LAST_VERTEX_EXT, then the provokingVertexLast feature must be enabled
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
provokingVertexModemust be a validProvokingVertexModeEXTvalue -
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must supportQUEUE_GRAPHICS_BIToperations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | VK_QUEUE_GRAPHICS_BIT | State |
Conditional Rendering
vkCmdSetProvokingVertexModeEXT is not affected by conditional rendering
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_provoking_vertex,
VK_EXT_shader_object,
CommandBuffer,
ProvokingVertexModeEXT
cmdSetLineRasterizationModeEXT Source #
Arguments
| :: MonadIO io | |
| => CommandBuffer |
|
| -> LineRasterizationModeEXT |
|
| -> io () |
vkCmdSetLineRasterizationModeEXT - Specify the line rasterization mode dynamically for a command buffer
Description
This command sets the lineRasterizationMode state for subsequent
drawing commands when drawing using
shader objects,
or when the graphics pipeline is created with
DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
set in
PipelineDynamicStateCreateInfo::pDynamicStates.
Otherwise, this state is specified by the
PipelineRasterizationLineStateCreateInfo::lineRasterizationMode
value used to create the currently active pipeline.
Valid Usage
At least one of the following must be true:
- The extendedDynamicState3LineRasterizationMode feature is enabled
- The shaderObject feature is enabled
-
If
lineRasterizationModeisLINE_RASTERIZATION_MODE_RECTANGULAR, then the rectangularLines feature must be enabled -
If
lineRasterizationModeisLINE_RASTERIZATION_MODE_BRESENHAM, then the bresenhamLines feature must be enabled -
If
lineRasterizationModeisLINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH, then the smoothLines feature must be enabled
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
lineRasterizationModemust be a validLineRasterizationModeEXTvalue -
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must supportQUEUE_GRAPHICS_BIToperations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | VK_QUEUE_GRAPHICS_BIT | State |
Conditional Rendering
vkCmdSetLineRasterizationModeEXT is not affected by conditional rendering
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_line_rasterization,
VK_EXT_shader_object,
CommandBuffer,
LineRasterizationMode
cmdSetLineStippleEnableEXT Source #
Arguments
| :: MonadIO io | |
| => CommandBuffer |
|
| -> ("stippledLineEnable" ::: Bool) |
|
| -> io () |
vkCmdSetLineStippleEnableEXT - Specify the line stipple enable dynamically for a command buffer
Description
This command sets the stippledLineEnable state for subsequent drawing
commands when drawing using
shader objects,
or when the graphics pipeline is created with
DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
set in
PipelineDynamicStateCreateInfo::pDynamicStates.
Otherwise, this state is specified by the
PipelineRasterizationLineStateCreateInfo::stippledLineEnable
value used to create the currently active pipeline.
Valid Usage
At least one of the following must be true:
- The extendedDynamicState3LineStippleEnable feature is enabled
- The shaderObject feature is enabled
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must supportQUEUE_GRAPHICS_BIToperations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | VK_QUEUE_GRAPHICS_BIT | State |
Conditional Rendering
vkCmdSetLineStippleEnableEXT is not affected by conditional rendering
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_line_rasterization,
VK_EXT_shader_object,
Bool32,
CommandBuffer
cmdSetDepthClipNegativeOneToOneEXT Source #
Arguments
| :: MonadIO io | |
| => CommandBuffer |
|
| -> ("negativeOneToOne" ::: Bool) |
|
| -> io () |
vkCmdSetDepthClipNegativeOneToOneEXT - Specify the negative one to one depth clip mode dynamically for a command buffer
Description
This command sets the negativeOneToOne state for subsequent drawing
commands when drawing using
shader objects,
or when the graphics pipeline is created with
DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT
set in
PipelineDynamicStateCreateInfo::pDynamicStates.
Otherwise, this state is specified by the
PipelineViewportDepthClipControlCreateInfoEXT::negativeOneToOne
value used to create the currently active pipeline.
Valid Usage
At least one of the following must be true:
- The extendedDynamicState3DepthClipNegativeOneToOne feature is enabled
- The shaderObject feature is enabled
- The depthClipControl feature must be enabled
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
commandBuffermust be in the recording state -
The
CommandPoolthatcommandBufferwas allocated from must supportQUEUE_GRAPHICS_BIToperations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | VK_QUEUE_GRAPHICS_BIT | State |
Conditional Rendering
vkCmdSetDepthClipNegativeOneToOneEXT is not affected by conditional rendering
See Also
VK_EXT_depth_clip_control,
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
Bool32,
CommandBuffer
cmdSetViewportWScalingEnableNV Source #
Arguments
| :: MonadIO io | |
| => CommandBuffer |
|
| -> ("viewportWScalingEnable" ::: Bool) |
|
| -> io () |
vkCmdSetViewportWScalingEnableNV - Specify the viewport W scaling enable state dynamically for a command buffer
Description
This command sets the viewportWScalingEnable state for subsequent
drawing commands when drawing using
shader objects,
or when the graphics pipeline is created with
DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV
set in
PipelineDynamicStateCreateInfo::pDynamicStates.
Otherwise, this state is specified by the
PipelineViewportWScalingStateCreateInfoNV::viewportWScalingEnable
value used to create the currently active pipeline.
Valid Usage
At least one of the following must be true:
- The extendedDynamicState3ViewportWScalingEnable feature is enabled
- The shaderObject feature is enabled
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must supportQUEUE_GRAPHICS_BIToperations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | VK_QUEUE_GRAPHICS_BIT | State |
Conditional Rendering
vkCmdSetViewportWScalingEnableNV is not affected by conditional rendering
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
VK_NV_clip_space_w_scaling,
Bool32,
CommandBuffer
cmdSetViewportSwizzleNV Source #
Arguments
| :: MonadIO io | |
| => CommandBuffer |
|
| -> ("firstViewport" ::: Word32) |
|
| -> ("viewportSwizzles" ::: Vector ViewportSwizzleNV) |
|
| -> io () |
vkCmdSetViewportSwizzleNV - Specify the viewport swizzle state dynamically for a command buffer
Description
This command sets the viewport swizzle state for subsequent drawing
commands when drawing using
shader objects,
or when the graphics pipeline is created with
DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV set
in
PipelineDynamicStateCreateInfo::pDynamicStates.
Otherwise, this state is specified by the
PipelineViewportSwizzleStateCreateInfoNV::viewportCount,
and
PipelineViewportSwizzleStateCreateInfoNV::pViewportSwizzles
values used to create the currently active pipeline.
Valid Usage
At least one of the following must be true:
- The extendedDynamicState3ViewportSwizzle feature is enabled
- The shaderObject feature is enabled
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
pViewportSwizzlesmust be a valid pointer to an array ofviewportCountvalidViewportSwizzleNVstructures -
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must supportQUEUE_GRAPHICS_BIToperations - This command must only be called outside of a video coding scope
-
viewportCountmust be greater than0
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | VK_QUEUE_GRAPHICS_BIT | State |
Conditional Rendering
vkCmdSetViewportSwizzleNV is not affected by conditional rendering
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
VK_NV_viewport_swizzle,
CommandBuffer,
ViewportSwizzleNV
cmdSetCoverageToColorEnableNV Source #
Arguments
| :: MonadIO io | |
| => CommandBuffer |
|
| -> ("coverageToColorEnable" ::: Bool) |
|
| -> io () |
vkCmdSetCoverageToColorEnableNV - Specify the coverage to color enable state dynamically for a command buffer
Description
This command sets the coverageToColorEnable state for subsequent
drawing commands when drawing using
shader objects,
or when the graphics pipeline is created with
DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV
set in
PipelineDynamicStateCreateInfo::pDynamicStates.
Otherwise, this state is specified by the
PipelineCoverageToColorStateCreateInfoNV::coverageToColorEnable
value used to create the currently active pipeline.
Valid Usage
At least one of the following must be true:
- The extendedDynamicState3CoverageToColorEnable feature is enabled
- The shaderObject feature is enabled
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must supportQUEUE_GRAPHICS_BIToperations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | VK_QUEUE_GRAPHICS_BIT | State |
Conditional Rendering
vkCmdSetCoverageToColorEnableNV is not affected by conditional rendering
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
VK_NV_fragment_coverage_to_color,
Bool32,
CommandBuffer
cmdSetCoverageToColorLocationNV Source #
Arguments
| :: MonadIO io | |
| => CommandBuffer |
|
| -> ("coverageToColorLocation" ::: Word32) |
|
| -> io () |
vkCmdSetCoverageToColorLocationNV - Specify the coverage to color location dynamically for a command buffer
Description
This command sets the coverageToColorLocation state for subsequent
drawing commands when drawing using
shader objects,
or when the graphics pipeline is created with
DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV
set in
PipelineDynamicStateCreateInfo::pDynamicStates.
Otherwise, this state is specified by the
PipelineCoverageToColorStateCreateInfoNV::coverageToColorLocation
value used to create the currently active pipeline.
Valid Usage
At least one of the following must be true:
- The extendedDynamicState3CoverageToColorLocation feature is enabled
- The shaderObject feature is enabled
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must supportQUEUE_GRAPHICS_BIToperations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | VK_QUEUE_GRAPHICS_BIT | State |
Conditional Rendering
vkCmdSetCoverageToColorLocationNV is not affected by conditional rendering
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
VK_NV_fragment_coverage_to_color,
CommandBuffer
cmdSetCoverageModulationModeNV Source #
Arguments
| :: MonadIO io | |
| => CommandBuffer |
|
| -> CoverageModulationModeNV |
|
| -> io () |
vkCmdSetCoverageModulationModeNV - Specify the coverage modulation mode dynamically for a command buffer
Description
This command sets the coverageModulationMode state for subsequent
drawing commands when drawing using
shader objects,
or the graphics pipeline is created with
DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV
set in
PipelineDynamicStateCreateInfo::pDynamicStates.
Otherwise, this state is specified by the
PipelineCoverageModulationStateCreateInfoNV::coverageModulationMode
value used to create the currently active pipeline.
Valid Usage
At least one of the following must be true:
- The extendedDynamicState3CoverageModulationMode feature is enabled
- The shaderObject feature is enabled
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
coverageModulationModemust be a validCoverageModulationModeNVvalue -
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must supportQUEUE_GRAPHICS_BIToperations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | VK_QUEUE_GRAPHICS_BIT | State |
Conditional Rendering
vkCmdSetCoverageModulationModeNV is not affected by conditional rendering
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
VK_NV_framebuffer_mixed_samples,
CommandBuffer,
CoverageModulationModeNV
cmdSetCoverageModulationTableEnableNV Source #
Arguments
| :: MonadIO io | |
| => CommandBuffer |
|
| -> ("coverageModulationTableEnable" ::: Bool) |
|
| -> io () |
vkCmdSetCoverageModulationTableEnableNV - Specify the coverage modulation table enable state dynamically for a command buffer
Description
This command sets the coverageModulationTableEnable state for
subsequent drawing commands when drawing using
shader objects,
or when the graphics pipeline is created with
DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV
set in
PipelineDynamicStateCreateInfo::pDynamicStates.
Otherwise, this state is specified by the
PipelineCoverageModulationStateCreateInfoNV::coverageModulationTableEnable
value used to create the currently active pipeline.
Valid Usage
At least one of the following must be true:
- The extendedDynamicState3CoverageModulationTableEnable feature is enabled
- The shaderObject feature is enabled
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
commandBuffermust be in the recording state -
The
CommandPoolthatcommandBufferwas allocated from must supportQUEUE_GRAPHICS_BIToperations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | VK_QUEUE_GRAPHICS_BIT | State |
Conditional Rendering
vkCmdSetCoverageModulationTableEnableNV is not affected by conditional rendering
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
VK_NV_framebuffer_mixed_samples,
Bool32,
CommandBuffer
cmdSetCoverageModulationTableNV Source #
Arguments
| :: MonadIO io | |
| => CommandBuffer |
|
| -> ("coverageModulationTable" ::: Vector Float) |
|
| -> io () |
vkCmdSetCoverageModulationTableNV - Specify the coverage modulation table dynamically for a command buffer
Description
This command sets the table of modulation factors for subsequent drawing
commands when drawing using
shader objects,
or when the graphics pipeline is created with
DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV
set in
PipelineDynamicStateCreateInfo::pDynamicStates.
Otherwise, this state is specified by the
PipelineCoverageModulationStateCreateInfoNV::coverageModulationTableCount,
and
PipelineCoverageModulationStateCreateInfoNV::pCoverageModulationTable
values used to create the currently active pipeline.
Valid Usage
At least one of the following must be true:
- The extendedDynamicState3CoverageModulationTable feature is enabled
- The shaderObject feature is enabled
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
pCoverageModulationTablemust be a valid pointer to an array ofcoverageModulationTableCountfloatvalues -
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must supportQUEUE_GRAPHICS_BIToperations - This command must only be called outside of a video coding scope
-
coverageModulationTableCountmust be greater than0
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | VK_QUEUE_GRAPHICS_BIT | State |
Conditional Rendering
vkCmdSetCoverageModulationTableNV is not affected by conditional rendering
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
VK_NV_framebuffer_mixed_samples,
CommandBuffer
cmdSetShadingRateImageEnableNV Source #
Arguments
| :: MonadIO io | |
| => CommandBuffer |
|
| -> ("shadingRateImageEnable" ::: Bool) |
|
| -> io () |
vkCmdSetShadingRateImageEnableNV - Specify the shading rate image enable state dynamically for a command buffer
Description
This command sets the shadingRateImageEnable state for subsequent
drawing commands when drawing using
shader objects,
or when the graphics pipeline is created with
DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV
set in
PipelineDynamicStateCreateInfo::pDynamicStates.
Otherwise, this state is specified by the
PipelineViewportShadingRateImageStateCreateInfoNV::shadingRateImageEnable
value used to create the currently active pipeline.
Valid Usage
At least one of the following must be true:
- The extendedDynamicState3ShadingRateImageEnable feature is enabled
- The shaderObject feature is enabled
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must supportQUEUE_GRAPHICS_BIToperations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | VK_QUEUE_GRAPHICS_BIT | State |
Conditional Rendering
vkCmdSetShadingRateImageEnableNV is not affected by conditional rendering
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
VK_NV_shading_rate_image,
Bool32,
CommandBuffer
cmdSetCoverageReductionModeNV Source #
Arguments
| :: MonadIO io | |
| => CommandBuffer |
|
| -> CoverageReductionModeNV |
|
| -> io () |
vkCmdSetCoverageReductionModeNV - Specify the coverage reduction mode dynamically for a command buffer
Description
This command sets the coverageReductionMode state for subsequent
drawing commands when drawing using
shader objects,
or when the graphics pipeline is created with
DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV
set in
PipelineDynamicStateCreateInfo::pDynamicStates.
Otherwise, this state is specified by the
PipelineCoverageReductionStateCreateInfoNV::coverageReductionMode
value used to create the currently active pipeline.
Valid Usage
At least one of the following must be true:
- The extendedDynamicState3CoverageReductionMode feature is enabled
- The shaderObject feature is enabled
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
coverageReductionModemust be a validCoverageReductionModeNVvalue -
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must supportQUEUE_GRAPHICS_BIToperations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | VK_QUEUE_GRAPHICS_BIT | State |
Conditional Rendering
vkCmdSetCoverageReductionModeNV is not affected by conditional rendering
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
VK_NV_coverage_reduction_mode,
CommandBuffer,
CoverageReductionModeNV
cmdSetRepresentativeFragmentTestEnableNV Source #
Arguments
| :: MonadIO io | |
| => CommandBuffer |
|
| -> ("representativeFragmentTestEnable" ::: Bool) |
|
| -> io () |
vkCmdSetRepresentativeFragmentTestEnableNV - Specify the representative fragment test enable dynamically for a command buffer
Description
This command sets the representativeFragmentTestEnable state for
subsequent drawing commands when drawing using
shader objects,
or when the graphics pipeline is created with
DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV
set in
PipelineDynamicStateCreateInfo::pDynamicStates.
Otherwise, this state is specified by the
PipelineRepresentativeFragmentTestStateCreateInfoNV::representativeFragmentTestEnable
value used to create the currently active pipeline.
Valid Usage
At least one of the following must be true:
- The extendedDynamicState3RepresentativeFragmentTestEnable feature is enabled
- The shaderObject feature is enabled
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
commandBuffermust be in the recording state -
The
CommandPoolthatcommandBufferwas allocated from must supportQUEUE_GRAPHICS_BIToperations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | VK_QUEUE_GRAPHICS_BIT | State |
Conditional Rendering
vkCmdSetRepresentativeFragmentTestEnableNV is not affected by conditional rendering
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
VK_NV_representative_fragment_test,
Bool32,
CommandBuffer
Arguments
| :: MonadIO io | |
| => CommandBuffer |
|
| -> ("vertexBindingDescriptions" ::: Vector VertexInputBindingDescription2EXT) |
|
| -> ("vertexAttributeDescriptions" ::: Vector VertexInputAttributeDescription2EXT) |
|
| -> io () |
vkCmdSetVertexInputEXT - Set the vertex input state dynamically for a command buffer
Description
This command sets the vertex input attribute and vertex input binding
descriptions state for subsequent drawing commands when drawing using
shader objects,
or when the graphics pipeline is created with
DYNAMIC_STATE_VERTEX_INPUT_EXT set in
PipelineDynamicStateCreateInfo::pDynamicStates.
Otherwise, this state is specified by the
GraphicsPipelineCreateInfo::pVertexInputState
values used to create the currently active pipeline.
If drawing using
shader objects,
or if the bound pipeline state object was also created with the
DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE
dynamic state enabled, then
cmdBindVertexBuffers2
can be used instead of cmdSetVertexInputEXT to dynamically set the
stride.
The vertex attribute description for any location in the range
[0,PhysicalDeviceLimits::maxVertexInputAttributes)
not specified in the pVertexAttributeDescriptions array becomes
undefined.
Valid Usage
- Either the vertexInputDynamicState feature or the shaderObject feature or both must be enabled
-
vertexBindingDescriptionCountmust be less than or equal toPhysicalDeviceLimits::maxVertexInputBindings -
vertexAttributeDescriptionCountmust be less than or equal toPhysicalDeviceLimits::maxVertexInputAttributes - For every
bindingspecified by each element ofpVertexAttributeDescriptions, aVertexInputBindingDescription2EXTmust exist inpVertexBindingDescriptionswith the same value ofbinding - All
elements of
pVertexBindingDescriptionsmust describe distinct binding numbers - All
elements of
pVertexAttributeDescriptionsmust describe distinct attribute locations
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
If
vertexBindingDescriptionCountis not0,pVertexBindingDescriptionsmust be a valid pointer to an array ofvertexBindingDescriptionCountvalidVertexInputBindingDescription2EXTstructures -
If
vertexAttributeDescriptionCountis not0,pVertexAttributeDescriptionsmust be a valid pointer to an array ofvertexAttributeDescriptionCountvalidVertexInputAttributeDescription2EXTstructures -
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must supportQUEUE_GRAPHICS_BIToperations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | VK_QUEUE_GRAPHICS_BIT | State |
Conditional Rendering
vkCmdSetVertexInputEXT is not affected by conditional rendering
See Also
VK_EXT_shader_object,
VK_EXT_vertex_input_dynamic_state,
CommandBuffer,
VertexInputAttributeDescription2EXT,
VertexInputBindingDescription2EXT
cmdSetDepthClampRangeEXT Source #
Arguments
| :: MonadIO io | |
| => CommandBuffer |
|
| -> DepthClampModeEXT |
|
| -> ("depthClampRange" ::: Maybe DepthClampRangeEXT) |
|
| -> io () |
vkCmdSetDepthClampRangeEXT - Set the viewport depth clamp range dynamically for a command buffer
Description
This command sets the viewport depth clamp range for subsequent drawing
commands when drawing using
shader objects,
or when the graphics pipeline is created with
DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT
set in
PipelineDynamicStateCreateInfo::pDynamicStates.
Otherwise, this state is specified by the
PipelineViewportDepthClampControlCreateInfoEXT::depthClampMode value
used to create the currently active pipeline.
Valid Usage
- If
depthClampModeisDEPTH_CLAMP_MODE_USER_DEFINED_RANGE_EXT, thenpDepthClampRangemust be a valid pointer to a validDepthClampRangeEXTstructure
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
depthClampModemust be a validDepthClampModeEXTvalue - If
pDepthClampRangeis notNULL,pDepthClampRangemust be a valid pointer to a validDepthClampRangeEXTstructure -
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must supportQUEUE_GRAPHICS_BIToperations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | VK_QUEUE_GRAPHICS_BIT | State |
Conditional Rendering
vkCmdSetDepthClampRangeEXT is not affected by conditional rendering
See Also
VK_EXT_depth_clamp_control,
VK_EXT_shader_object,
CommandBuffer, DepthClampModeEXT,
DepthClampRangeEXT
newtype ViewportCoordinateSwizzleNV Source #
VkViewportCoordinateSwizzleNV - Specify how a viewport coordinate is swizzled
Description
These values are described in detail in Viewport Swizzle.
See Also
Constructors
| ViewportCoordinateSwizzleNV Int32 |
Bundled Patterns
Instances
newtype BlendOverlapEXT Source #
VkBlendOverlapEXT - Enumerant specifying the blend overlap parameter
Description
BLEND_OVERLAP_UNCORRELATED_EXTspecifies that there is no correlation between the source and destination coverage.
BLEND_OVERLAP_CONJOINT_EXTspecifies that the source and destination coverage are considered to have maximal overlap.BLEND_OVERLAP_DISJOINT_EXTspecifies that the source and destination coverage are considered to have minimal overlap.
| Overlap Mode | Weighting Equations |
|---|---|
BLEND_OVERLAP_UNCORRELATED_EXT
| \[ \begin{aligned} p_0(A_s,A_d) & = A_sA_d \\ p_1(A_s,A_d) & = A_s(1-A_d) \\ p_2(A_s,A_d) & = A_d(1-A_s) \\ \end{aligned}\] |
BLEND_OVERLAP_CONJOINT_EXT
| \[ \begin{aligned} p_0(A_s,A_d) & = min(A_s,A_d) \\ p_1(A_s,A_d) & = max(A_s-A_d,0) \\ p_2(A_s,A_d) & = max(A_d-A_s,0) \\ \end{aligned}\] |
BLEND_OVERLAP_DISJOINT_EXT
| \[ \begin{aligned} p_0(A_s,A_d) & = max(A_s+A_d-1,0) \\ p_1(A_s,A_d) & = min(A_s,1-A_d) \\ p_2(A_s,A_d) & = min(A_d,1-A_s) \\ \end{aligned}\] |
Advanced Blend Overlap Modes
See Also
VK_EXT_blend_operation_advanced,
ColorBlendAdvancedEXT,
PipelineColorBlendAdvancedStateCreateInfoEXT
Constructors
| BlendOverlapEXT Int32 |
Bundled Patterns
| pattern BLEND_OVERLAP_CONJOINT_EXT :: BlendOverlapEXT | |
| pattern BLEND_OVERLAP_DISJOINT_EXT :: BlendOverlapEXT | |
| pattern BLEND_OVERLAP_UNCORRELATED_EXT :: BlendOverlapEXT |
Instances
newtype CoverageModulationModeNV Source #
VkCoverageModulationModeNV - Specify the coverage modulation mode
Description
COVERAGE_MODULATION_MODE_NONE_NVspecifies that no components are multiplied by the modulation factor.
COVERAGE_MODULATION_MODE_RGB_NVspecifies that the red, green, and blue components are multiplied by the modulation factor.COVERAGE_MODULATION_MODE_ALPHA_NVspecifies that the alpha component is multiplied by the modulation factor.COVERAGE_MODULATION_MODE_RGBA_NVspecifies that all components are multiplied by the modulation factor.
See Also
VK_NV_framebuffer_mixed_samples,
PipelineCoverageModulationStateCreateInfoNV,
cmdSetCoverageModulationModeNV
Constructors
| CoverageModulationModeNV Int32 |
Bundled Patterns
Instances
newtype CoverageReductionModeNV Source #
VkCoverageReductionModeNV - Specify the coverage reduction mode
Description
COVERAGE_REDUCTION_MODE_MERGE_NVspecifies that each color sample will be associated with an implementation-dependent subset of samples in the pixel coverage. If any of those associated samples are covered, the color sample is covered.
COVERAGE_REDUCTION_MODE_TRUNCATE_NVspecifies that for color samples present in the color attachments, a color sample is covered if the pixel coverage sample with the same sample index i is covered; other pixel coverage samples are discarded.
See Also
VK_NV_coverage_reduction_mode,
FramebufferMixedSamplesCombinationNV,
PipelineCoverageReductionStateCreateInfoNV,
cmdSetCoverageReductionModeNV
Constructors
| CoverageReductionModeNV Int32 |
Bundled Patterns
| pattern COVERAGE_REDUCTION_MODE_MERGE_NV :: CoverageReductionModeNV | |
| pattern COVERAGE_REDUCTION_MODE_TRUNCATE_NV :: CoverageReductionModeNV |
Instances
newtype ConservativeRasterizationModeEXT Source #
VkConservativeRasterizationModeEXT - Specify the conservative rasterization mode
Description
CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXTspecifies that conservative rasterization is disabled and rasterization proceeds as normal.
CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXTspecifies that conservative rasterization is enabled in overestimation mode.CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXTspecifies that conservative rasterization is enabled in underestimation mode.
See Also
VK_EXT_conservative_rasterization,
PipelineRasterizationConservativeStateCreateInfoEXT,
cmdSetConservativeRasterizationModeEXT
Constructors
| ConservativeRasterizationModeEXT Int32 |
Bundled Patterns
Instances
newtype ProvokingVertexModeEXT Source #
VkProvokingVertexModeEXT - Specify which vertex in a primitive is the provoking vertex
Description
PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXTspecifies that the provoking vertex is the first non-adjacency vertex in the list of vertices used by a primitive.
PROVOKING_VERTEX_MODE_LAST_VERTEX_EXTspecifies that the provoking vertex is the last non-adjacency vertex in the list of vertices used by a primitive.
These modes are described more precisely in Primitive Topologies.
See Also
VK_EXT_provoking_vertex,
PipelineRasterizationProvokingVertexStateCreateInfoEXT,
cmdSetProvokingVertexModeEXT
Constructors
| ProvokingVertexModeEXT Int32 |
Bundled Patterns
| pattern PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT :: ProvokingVertexModeEXT | |
| pattern PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT :: ProvokingVertexModeEXT |
Instances
newtype DepthClampModeEXT Source #
VkDepthClampModeEXT - Modes that determine the depth clamp range
Description
DEPTH_CLAMP_MODE_VIEWPORT_RANGE_EXTspecifies that the depth clamp range follows the viewport depth range. The depth clamp range of each viewport will implicitly be set to zmin = min(n,f) and zmax = max(n,f), where n and f are theminDepthandmaxDepthdepth range values of the viewport.
DEPTH_CLAMP_MODE_USER_DEFINED_RANGE_EXTspecifies that a single user-defined depth clamp range will be used for all viewports. The user-defined depth clamp range is defined by theminDepthClampandmaxDepthClampmembers ofDepthClampRangeEXT.
See Also
VK_EXT_depth_clamp_control,
PipelineViewportDepthClampControlCreateInfoEXT,
cmdSetDepthClampRangeEXT
Constructors
| DepthClampModeEXT Int32 |
Bundled Patterns
| pattern DEPTH_CLAMP_MODE_USER_DEFINED_RANGE_EXT :: DepthClampModeEXT | |
| pattern DEPTH_CLAMP_MODE_VIEWPORT_RANGE_EXT :: DepthClampModeEXT |
Instances
cmdSetCullModeEXT :: MonadIO io => CommandBuffer -> CullModeFlags -> io () Source #
cmdSetFrontFaceEXT :: MonadIO io => CommandBuffer -> FrontFace -> io () Source #
cmdSetPrimitiveTopologyEXT :: MonadIO io => CommandBuffer -> PrimitiveTopology -> io () Source #
cmdSetViewportWithCountEXT :: MonadIO io => CommandBuffer -> ("viewports" ::: Vector Viewport) -> io () Source #
cmdSetScissorWithCountEXT :: MonadIO io => CommandBuffer -> ("scissors" ::: Vector Rect2D) -> io () Source #
cmdBindVertexBuffers2EXT :: MonadIO io => CommandBuffer -> ("firstBinding" ::: Word32) -> ("buffers" ::: Vector Buffer) -> ("offsets" ::: Vector DeviceSize) -> ("sizes" ::: Vector DeviceSize) -> ("strides" ::: Vector DeviceSize) -> io () Source #
cmdSetDepthTestEnableEXT :: MonadIO io => CommandBuffer -> ("depthTestEnable" ::: Bool) -> io () Source #
cmdSetDepthWriteEnableEXT :: MonadIO io => CommandBuffer -> ("depthWriteEnable" ::: Bool) -> io () Source #
cmdSetDepthCompareOpEXT :: MonadIO io => CommandBuffer -> ("depthCompareOp" ::: CompareOp) -> io () Source #
cmdSetDepthBoundsTestEnableEXT :: MonadIO io => CommandBuffer -> ("depthBoundsTestEnable" ::: Bool) -> io () Source #
cmdSetStencilTestEnableEXT :: MonadIO io => CommandBuffer -> ("stencilTestEnable" ::: Bool) -> io () Source #
cmdSetStencilOpEXT :: MonadIO io => CommandBuffer -> ("faceMask" ::: StencilFaceFlags) -> ("failOp" ::: StencilOp) -> ("passOp" ::: StencilOp) -> ("depthFailOp" ::: StencilOp) -> CompareOp -> io () Source #
cmdSetRasterizerDiscardEnableEXT :: MonadIO io => CommandBuffer -> ("rasterizerDiscardEnable" ::: Bool) -> io () Source #
cmdSetDepthBiasEnableEXT :: MonadIO io => CommandBuffer -> ("depthBiasEnable" ::: Bool) -> io () Source #
cmdSetPrimitiveRestartEnableEXT :: MonadIO io => CommandBuffer -> ("primitiveRestartEnable" ::: Bool) -> io () Source #