Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
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
Version 1.1 and
- 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
- Constantine Shablya, 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
cmdBindVertexBuffers2EXT
cmdSetAlphaToCoverageEnableEXT
cmdSetAlphaToOneEnableEXT
cmdSetColorBlendAdvancedEXT
cmdSetColorBlendEnableEXT
cmdSetColorBlendEquationEXT
cmdSetColorWriteMaskEXT
cmdSetConservativeRasterizationModeEXT
cmdSetCullModeEXT
cmdSetDepthBiasEnableEXT
cmdSetDepthBoundsTestEnableEXT
cmdSetDepthClampEnableEXT
cmdSetDepthClipEnableEXT
cmdSetDepthClipNegativeOneToOneEXT
cmdSetDepthCompareOpEXT
cmdSetDepthTestEnableEXT
cmdSetDepthWriteEnableEXT
cmdSetExtraPrimitiveOverestimationSizeEXT
cmdSetFrontFaceEXT
cmdSetLineRasterizationModeEXT
cmdSetLineStippleEnableEXT
cmdSetLogicOpEXT
cmdSetLogicOpEnableEXT
cmdSetPatchControlPointsEXT
cmdSetPolygonModeEXT
cmdSetPrimitiveRestartEnableEXT
cmdSetPrimitiveTopologyEXT
cmdSetProvokingVertexModeEXT
cmdSetRasterizationSamplesEXT
cmdSetRasterizationStreamEXT
cmdSetRasterizerDiscardEnableEXT
cmdSetSampleLocationsEnableEXT
cmdSetSampleMaskEXT
cmdSetScissorWithCountEXT
cmdSetStencilOpEXT
cmdSetStencilTestEnableEXT
cmdSetTessellationDomainOriginEXT
cmdSetVertexInputEXT
cmdSetViewportWithCountEXT
createShadersEXT
destroyShaderEXT
getShaderBinaryDataEXT
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
ColorBlendEquationEXT
ShaderCreateInfoEXT
VertexInputAttributeDescription2EXT
VertexInputBindingDescription2EXT
Extending
PhysicalDeviceFeatures2
,DeviceCreateInfo
:Extending
PhysicalDeviceProperties2
:Extending
PipelineShaderStageCreateInfo
,ShaderCreateInfoEXT
:
New Enums
New Bitmasks
New Enum Constants
EXT_SHADER_OBJECT_SPEC_VERSION
Extending
ObjectType
:Extending
Result
:Extending
StructureType
:STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT
STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT
STRUCTURE_TYPE_SHADER_CREATE_INFO_EXT
STRUCTURE_TYPE_SHADER_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT
STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT
STRUCTURE_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 Version 1.3 is supported:
Extending
ShaderCreateFlagBitsEXT
:
If VK_KHR_device_group or 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
ColorBlendAdvancedEXT
,
ColorBlendEquationEXT
,
PhysicalDeviceShaderObjectFeaturesEXT
,
PhysicalDeviceShaderObjectPropertiesEXT
, ShaderCodeTypeEXT
,
ShaderCreateFlagBitsEXT
, ShaderCreateFlagsEXT
,
ShaderCreateInfoEXT
, ShaderEXT
,
ShaderRequiredSubgroupSizeCreateInfoEXT
,
VertexInputAttributeDescription2EXT
,
VertexInputBindingDescription2EXT
,
cmdBindShadersEXT
,
cmdBindVertexBuffers2EXT
,
cmdSetAlphaToCoverageEnableEXT
,
cmdSetAlphaToOneEnableEXT
,
cmdSetColorBlendAdvancedEXT
,
cmdSetColorBlendEnableEXT
,
cmdSetColorBlendEquationEXT
,
cmdSetColorWriteMaskEXT
,
cmdSetConservativeRasterizationModeEXT
,
cmdSetCullModeEXT
,
cmdSetDepthBiasEnableEXT
,
cmdSetDepthBoundsTestEnableEXT
,
cmdSetDepthClampEnableEXT
,
cmdSetDepthClipEnableEXT
,
cmdSetDepthClipNegativeOneToOneEXT
,
cmdSetDepthCompareOpEXT
,
cmdSetDepthTestEnableEXT
,
cmdSetDepthWriteEnableEXT
,
cmdSetExtraPrimitiveOverestimationSizeEXT
,
cmdSetFrontFaceEXT
,
cmdSetLineRasterizationModeEXT
,
cmdSetLineStippleEnableEXT
,
cmdSetLogicOpEXT
,
cmdSetLogicOpEnableEXT
,
cmdSetPatchControlPointsEXT
,
cmdSetPolygonModeEXT
,
cmdSetPrimitiveRestartEnableEXT
,
cmdSetPrimitiveTopologyEXT
,
cmdSetProvokingVertexModeEXT
,
cmdSetRasterizationSamplesEXT
,
cmdSetRasterizationStreamEXT
,
cmdSetRasterizerDiscardEnableEXT
,
cmdSetSampleLocationsEnableEXT
,
cmdSetSampleMaskEXT
,
cmdSetScissorWithCountEXT
,
cmdSetStencilOpEXT
,
cmdSetStencilTestEnableEXT
,
cmdSetTessellationDomainOriginEXT
,
cmdSetVertexInputEXT
,
cmdSetViewportWithCountEXT
,
createShadersEXT
, destroyShaderEXT
, getShaderBinaryDataEXT
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 :: forall io. MonadIO io => Device -> ("createInfos" ::: Vector (SomeStruct ShaderCreateInfoEXT)) -> ("allocator" ::: Maybe AllocationCallbacks) -> io ("shaders" ::: Vector ShaderEXT)
- withShadersEXT :: forall io r. MonadIO io => Device -> Vector (SomeStruct ShaderCreateInfoEXT) -> Maybe AllocationCallbacks -> (io (Vector ShaderEXT) -> (Vector ShaderEXT -> io ()) -> r) -> r
- destroyShaderEXT :: forall io. MonadIO io => Device -> ShaderEXT -> ("allocator" ::: Maybe AllocationCallbacks) -> io ()
- getShaderBinaryDataEXT :: forall io. MonadIO io => Device -> ShaderEXT -> io (Result, "data" ::: ByteString)
- cmdBindShadersEXT :: forall io. MonadIO io => CommandBuffer -> ("stages" ::: Vector ShaderStageFlagBits) -> ("shaders" ::: Vector ShaderEXT) -> io ()
- pattern STRUCTURE_TYPE_SHADER_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT :: StructureType
- 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_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
- newtype ShaderCodeTypeEXT where
- type ShaderRequiredSubgroupSizeCreateInfoEXT = PipelineShaderStageRequiredSubgroupSizeCreateInfo
- type EXT_SHADER_OBJECT_SPEC_VERSION = 1
- pattern EXT_SHADER_OBJECT_SPEC_VERSION :: forall a. Integral a => a
- type EXT_SHADER_OBJECT_EXTENSION_NAME = "VK_EXT_shader_object"
- pattern EXT_SHADER_OBJECT_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
- newtype ShaderEXT = ShaderEXT Word64
- data ViewportSwizzleNV = ViewportSwizzleNV {}
- data ColorBlendEquationEXT = ColorBlendEquationEXT {}
- data ColorBlendAdvancedEXT = ColorBlendAdvancedEXT {}
- data VertexInputBindingDescription2EXT = VertexInputBindingDescription2EXT {}
- data VertexInputAttributeDescription2EXT = VertexInputAttributeDescription2EXT {}
- cmdSetPatchControlPointsEXT :: forall io. MonadIO io => CommandBuffer -> ("patchControlPoints" ::: Word32) -> io ()
- cmdSetLogicOpEXT :: forall io. MonadIO io => CommandBuffer -> LogicOp -> io ()
- cmdSetTessellationDomainOriginEXT :: forall io. MonadIO io => CommandBuffer -> TessellationDomainOrigin -> io ()
- cmdSetDepthClampEnableEXT :: forall io. MonadIO io => CommandBuffer -> ("depthClampEnable" ::: Bool) -> io ()
- cmdSetPolygonModeEXT :: forall io. MonadIO io => CommandBuffer -> PolygonMode -> io ()
- cmdSetRasterizationSamplesEXT :: forall io. MonadIO io => CommandBuffer -> ("rasterizationSamples" ::: SampleCountFlagBits) -> io ()
- cmdSetSampleMaskEXT :: forall io. MonadIO io => CommandBuffer -> ("samples" ::: SampleCountFlagBits) -> ("sampleMask" ::: Vector SampleMask) -> io ()
- cmdSetAlphaToCoverageEnableEXT :: forall io. MonadIO io => CommandBuffer -> ("alphaToCoverageEnable" ::: Bool) -> io ()
- cmdSetAlphaToOneEnableEXT :: forall io. MonadIO io => CommandBuffer -> ("alphaToOneEnable" ::: Bool) -> io ()
- cmdSetLogicOpEnableEXT :: forall io. MonadIO io => CommandBuffer -> ("logicOpEnable" ::: Bool) -> io ()
- cmdSetColorBlendEnableEXT :: forall io. MonadIO io => CommandBuffer -> ("firstAttachment" ::: Word32) -> ("colorBlendEnables" ::: Vector Bool) -> io ()
- cmdSetColorBlendEquationEXT :: forall io. MonadIO io => CommandBuffer -> ("firstAttachment" ::: Word32) -> ("colorBlendEquations" ::: Vector ColorBlendEquationEXT) -> io ()
- cmdSetColorWriteMaskEXT :: forall io. MonadIO io => CommandBuffer -> ("firstAttachment" ::: Word32) -> ("colorWriteMasks" ::: Vector ColorComponentFlags) -> io ()
- cmdSetRasterizationStreamEXT :: forall io. MonadIO io => CommandBuffer -> ("rasterizationStream" ::: Word32) -> io ()
- cmdSetConservativeRasterizationModeEXT :: forall io. MonadIO io => CommandBuffer -> ConservativeRasterizationModeEXT -> io ()
- cmdSetExtraPrimitiveOverestimationSizeEXT :: forall io. MonadIO io => CommandBuffer -> ("extraPrimitiveOverestimationSize" ::: Float) -> io ()
- cmdSetDepthClipEnableEXT :: forall io. MonadIO io => CommandBuffer -> ("depthClipEnable" ::: Bool) -> io ()
- cmdSetSampleLocationsEnableEXT :: forall io. MonadIO io => CommandBuffer -> ("sampleLocationsEnable" ::: Bool) -> io ()
- cmdSetColorBlendAdvancedEXT :: forall io. MonadIO io => CommandBuffer -> ("firstAttachment" ::: Word32) -> ("colorBlendAdvanced" ::: Vector ColorBlendAdvancedEXT) -> io ()
- cmdSetProvokingVertexModeEXT :: forall io. MonadIO io => CommandBuffer -> ProvokingVertexModeEXT -> io ()
- cmdSetLineRasterizationModeEXT :: forall io. MonadIO io => CommandBuffer -> LineRasterizationModeEXT -> io ()
- cmdSetLineStippleEnableEXT :: forall io. MonadIO io => CommandBuffer -> ("stippledLineEnable" ::: Bool) -> io ()
- cmdSetDepthClipNegativeOneToOneEXT :: forall io. MonadIO io => CommandBuffer -> ("negativeOneToOne" ::: Bool) -> io ()
- cmdSetViewportWScalingEnableNV :: forall io. MonadIO io => CommandBuffer -> ("viewportWScalingEnable" ::: Bool) -> io ()
- cmdSetViewportSwizzleNV :: forall io. MonadIO io => CommandBuffer -> ("firstViewport" ::: Word32) -> ("viewportSwizzles" ::: Vector ViewportSwizzleNV) -> io ()
- cmdSetCoverageToColorEnableNV :: forall io. MonadIO io => CommandBuffer -> ("coverageToColorEnable" ::: Bool) -> io ()
- cmdSetCoverageToColorLocationNV :: forall io. MonadIO io => CommandBuffer -> ("coverageToColorLocation" ::: Word32) -> io ()
- cmdSetCoverageModulationModeNV :: forall io. MonadIO io => CommandBuffer -> CoverageModulationModeNV -> io ()
- cmdSetCoverageModulationTableEnableNV :: forall io. MonadIO io => CommandBuffer -> ("coverageModulationTableEnable" ::: Bool) -> io ()
- cmdSetCoverageModulationTableNV :: forall io. MonadIO io => CommandBuffer -> ("coverageModulationTable" ::: Vector Float) -> io ()
- cmdSetShadingRateImageEnableNV :: forall io. MonadIO io => CommandBuffer -> ("shadingRateImageEnable" ::: Bool) -> io ()
- cmdSetCoverageReductionModeNV :: forall io. MonadIO io => CommandBuffer -> CoverageReductionModeNV -> io ()
- cmdSetRepresentativeFragmentTestEnableNV :: forall io. MonadIO io => CommandBuffer -> ("representativeFragmentTestEnable" ::: Bool) -> io ()
- cmdSetVertexInputEXT :: forall io. MonadIO io => CommandBuffer -> ("vertexBindingDescriptions" ::: Vector VertexInputBindingDescription2EXT) -> ("vertexAttributeDescriptions" ::: Vector VertexInputAttributeDescription2EXT) -> io ()
- newtype ViewportCoordinateSwizzleNV where
- ViewportCoordinateSwizzleNV Int32
- pattern VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV :: ViewportCoordinateSwizzleNV
- pattern VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV :: ViewportCoordinateSwizzleNV
- pattern VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV :: ViewportCoordinateSwizzleNV
- pattern VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV :: ViewportCoordinateSwizzleNV
- pattern VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV :: ViewportCoordinateSwizzleNV
- pattern VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV :: ViewportCoordinateSwizzleNV
- pattern VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV :: ViewportCoordinateSwizzleNV
- pattern VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV :: ViewportCoordinateSwizzleNV
- newtype BlendOverlapEXT where
- BlendOverlapEXT Int32
- pattern BLEND_OVERLAP_UNCORRELATED_EXT :: BlendOverlapEXT
- pattern BLEND_OVERLAP_DISJOINT_EXT :: BlendOverlapEXT
- pattern BLEND_OVERLAP_CONJOINT_EXT :: BlendOverlapEXT
- newtype CoverageModulationModeNV where
- CoverageModulationModeNV Int32
- pattern COVERAGE_MODULATION_MODE_NONE_NV :: CoverageModulationModeNV
- pattern COVERAGE_MODULATION_MODE_RGB_NV :: CoverageModulationModeNV
- pattern COVERAGE_MODULATION_MODE_ALPHA_NV :: CoverageModulationModeNV
- pattern COVERAGE_MODULATION_MODE_RGBA_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 LineRasterizationModeEXT where
- LineRasterizationModeEXT Int32
- pattern LINE_RASTERIZATION_MODE_DEFAULT_EXT :: LineRasterizationModeEXT
- pattern LINE_RASTERIZATION_MODE_RECTANGULAR_EXT :: LineRasterizationModeEXT
- pattern LINE_RASTERIZATION_MODE_BRESENHAM_EXT :: LineRasterizationModeEXT
- pattern LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT :: LineRasterizationModeEXT
- newtype ProvokingVertexModeEXT where
- 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
:: forall io. MonadIO io | |
=> Device |
|
-> ("createInfos" ::: Vector (SomeStruct ShaderCreateInfoEXT)) |
|
-> ("allocator" ::: Maybe AllocationCallbacks) |
|
-> io ("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
- The shaderObject feature must be enabled
- If
createInfoCount
is 1, there must be no element ofpCreateInfos
whoseflags
member includesSHADER_CREATE_LINK_STAGE_BIT_EXT
- If the
flags
member of any element ofpCreateInfos
includesSHADER_CREATE_LINK_STAGE_BIT_EXT
, theflags
member of all other elements ofpCreateInfos
whosestage
isSHADER_STAGE_VERTEX_BIT
,SHADER_STAGE_TESSELLATION_CONTROL_BIT
,SHADER_STAGE_TESSELLATION_EVALUATION_BIT
,SHADER_STAGE_GEOMETRY_BIT
, orSHADER_STAGE_FRAGMENT_BIT
must also includeSHADER_CREATE_LINK_STAGE_BIT_EXT
- If the
flags
member of any element ofpCreateInfos
includesSHADER_CREATE_LINK_STAGE_BIT_EXT
, theflags
member of all other elements ofpCreateInfos
whosestage
isSHADER_STAGE_TASK_BIT_EXT
orSHADER_STAGE_MESH_BIT_EXT
must also includeSHADER_CREATE_LINK_STAGE_BIT_EXT
- If the
flags
member of any element ofpCreateInfos
whosestage
isSHADER_STAGE_TASK_BIT_EXT
orSHADER_STAGE_MESH_BIT_EXT
includesSHADER_CREATE_LINK_STAGE_BIT_EXT
, there must be no member ofpCreateInfos
whosestage
isSHADER_STAGE_VERTEX_BIT
and whoseflags
member includesSHADER_CREATE_LINK_STAGE_BIT_EXT
- If there is any element
of
pCreateInfos
whosestage
isSHADER_STAGE_MESH_BIT_EXT
and whoseflags
member includes bothSHADER_CREATE_LINK_STAGE_BIT_EXT
andSHADER_CREATE_NO_TASK_SHADER_BIT_EXT
, there must be no element ofpCreateInfos
whosestage
isSHADER_STAGE_TASK_BIT_EXT
and whoseflags
member includesSHADER_CREATE_LINK_STAGE_BIT_EXT
- For each element of
pCreateInfos
whoseflags
member includesSHADER_CREATE_LINK_STAGE_BIT_EXT
, if there is any other element ofpCreateInfos
whosestage
is logically later than thestage
of the former and whoseflags
member also includesSHADER_CREATE_LINK_STAGE_BIT_EXT
, thenextStage
of the former must be equal to thestage
of the element with the logically earlieststage
following thestage
of the former whoseflags
member also includesSHADER_CREATE_LINK_STAGE_BIT_EXT
- The
stage
member of each element ofpCreateInfos
whoseflags
member includesSHADER_CREATE_LINK_STAGE_BIT_EXT
must be unique - The
codeType
member of all elements ofpCreateInfos
whoseflags
member includesSHADER_CREATE_LINK_STAGE_BIT_EXT
must be the same - If
pCreateInfos
contains elements with bothSHADER_STAGE_TESSELLATION_CONTROL_BIT
andSHADER_STAGE_TESSELLATION_EVALUATION_BIT
, both elements'flags
includeSHADER_CREATE_LINK_STAGE_BIT_EXT
, both elements'codeType
isSHADER_CODE_TYPE_SPIRV_EXT
, and theSHADER_STAGE_TESSELLATION_CONTROL_BIT
stage’spCode
contains anOpExecutionMode
instruction specifying the type of subdivision, it must match the subdivision type specified in theSHADER_STAGE_TESSELLATION_EVALUATION_BIT
stage - If
pCreateInfos
contains elements with bothSHADER_STAGE_TESSELLATION_CONTROL_BIT
andSHADER_STAGE_TESSELLATION_EVALUATION_BIT
, both elements'flags
includeSHADER_CREATE_LINK_STAGE_BIT_EXT
, both elements'codeType
isSHADER_CODE_TYPE_SPIRV_EXT
, and theSHADER_STAGE_TESSELLATION_CONTROL_BIT
stage’spCode
contains anOpExecutionMode
instruction specifying the orientation of triangles, it must match the triangle orientation specified in theSHADER_STAGE_TESSELLATION_EVALUATION_BIT
stage - If
pCreateInfos
contains elements with bothSHADER_STAGE_TESSELLATION_CONTROL_BIT
andSHADER_STAGE_TESSELLATION_EVALUATION_BIT
, both elements'flags
includeSHADER_CREATE_LINK_STAGE_BIT_EXT
, both elements'codeType
isSHADER_CODE_TYPE_SPIRV_EXT
, and theSHADER_STAGE_TESSELLATION_CONTROL_BIT
stage’spCode
contains anOpExecutionMode
instruction specifyingPointMode
, theSHADER_STAGE_TESSELLATION_EVALUATION_BIT
stage must also contain anOpExecutionMode
instruction specifyingPointMode
- If
pCreateInfos
contains elements with bothSHADER_STAGE_TESSELLATION_CONTROL_BIT
andSHADER_STAGE_TESSELLATION_EVALUATION_BIT
, both elements'flags
includeSHADER_CREATE_LINK_STAGE_BIT_EXT
, both elements'codeType
isSHADER_CODE_TYPE_SPIRV_EXT
, and theSHADER_STAGE_TESSELLATION_CONTROL_BIT
stage’spCode
contains anOpExecutionMode
instruction specifying the spacing of segments on the edges of tessellated primitives, it must match the segment spacing specified in theSHADER_STAGE_TESSELLATION_EVALUATION_BIT
stage - If
pCreateInfos
contains elements with bothSHADER_STAGE_TESSELLATION_CONTROL_BIT
andSHADER_STAGE_TESSELLATION_EVALUATION_BIT
, both elements'flags
includeSHADER_CREATE_LINK_STAGE_BIT_EXT
, both elements'codeType
isSHADER_CODE_TYPE_SPIRV_EXT
, and theSHADER_STAGE_TESSELLATION_CONTROL_BIT
stage’spCode
contains anOpExecutionMode
instruction specifying the output patch size, it must match the output patch size specified in theSHADER_STAGE_TESSELLATION_EVALUATION_BIT
stage
Valid Usage (Implicit)
-
device
must be a validDevice
handle
-
pCreateInfos
must be a valid pointer to an array ofcreateInfoCount
validShaderCreateInfoEXT
structures - If
pAllocator
is notNULL
,pAllocator
must be a valid pointer to a validAllocationCallbacks
structure -
pShaders
must be a valid pointer to an array ofcreateInfoCount
ShaderEXT
handles -
createInfoCount
must be greater than0
Return Codes
See Also
VK_EXT_shader_object,
AllocationCallbacks
,
Device
, ShaderCreateInfoEXT
,
ShaderEXT
withShadersEXT :: forall io r. MonadIO io => Device -> Vector (SomeStruct ShaderCreateInfoEXT) -> Maybe AllocationCallbacks -> (io (Vector ShaderEXT) -> (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.
:: forall io. 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
shader
must have completed execution - If
AllocationCallbacks
were provided whenshader
was created, a compatible set of callbacks must be provided here - If no
AllocationCallbacks
were provided whenshader
was created,pAllocator
must beNULL
Valid Usage (Implicit)
-
device
must be a validDevice
handle
-
shader
must be a validShaderEXT
handle - If
pAllocator
is notNULL
,pAllocator
must be a valid pointer to a validAllocationCallbacks
structure -
shader
must have been created, allocated, or retrieved fromdevice
Host Synchronization
- Host access to
shader
must be externally synchronized
See Also
VK_EXT_shader_object,
AllocationCallbacks
,
Device
, ShaderEXT
getShaderBinaryDataEXT Source #
:: forall io. 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 user 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
.
Note
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 it
its entirety.
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)
-
device
must be a validDevice
handle
-
shader
must be a validShaderEXT
handle -
pDataSize
must be a valid pointer to asize_t
value - If the value
referenced by
pDataSize
is not0
, andpData
is notNULL
,pData
must be a valid pointer to an array ofpDataSize
bytes -
shader
must have been created, allocated, or retrieved fromdevice
Return Codes
See Also
:: forall io. 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
pStages
must be unique -
pStages
must not containSHADER_STAGE_ALL_GRAPHICS
orSHADER_STAGE_ALL
-
pStages
must 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
-
pStages
must not containSHADER_STAGE_SUBPASS_SHADING_BIT_HUAWEI
-
pStages
must not containSHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI
- For each element of
pStages
, ifpShaders
is notNULL
, and the element of thepShaders
array with the same index is notNULL_HANDLE
, it must have been created with astage
equal to the corresponding element ofpStages
- If
pStages
contains bothSHADER_STAGE_TASK_BIT_EXT
andSHADER_STAGE_VERTEX_BIT
, andpShaders
is notNULL
, and the same index inpShaders
asSHADER_STAGE_TASK_BIT_EXT
inpStages
is notNULL_HANDLE
, the same index inpShaders
asSHADER_STAGE_VERTEX_BIT
inpStages
must beNULL_HANDLE
- If
pStages
contains bothSHADER_STAGE_MESH_BIT_EXT
andSHADER_STAGE_VERTEX_BIT
, andpShaders
is notNULL
, and the same index inpShaders
asSHADER_STAGE_MESH_BIT_EXT
inpStages
is notNULL_HANDLE
, the same index inpShaders
asSHADER_STAGE_VERTEX_BIT
inpStages
must beNULL_HANDLE
- If the
tessellationShader
feature is not enabled, and
pStages
containsSHADER_STAGE_TESSELLATION_CONTROL_BIT
orSHADER_STAGE_TESSELLATION_EVALUATION_BIT
, andpShaders
is notNULL
, the same index or indices inpShaders
must beNULL_HANDLE
- If the
geometryShader
feature is not enabled, and
pStages
containsSHADER_STAGE_GEOMETRY_BIT
, andpShaders
is notNULL
, the same index inpShaders
must beNULL_HANDLE
- If the
taskShader
feature is not enabled, and
pStages
containsSHADER_STAGE_TASK_BIT_EXT
, andpShaders
is notNULL
, the same index inpShaders
must beNULL_HANDLE
- If the
meshShader
feature is not enabled, and
pStages
containsSHADER_STAGE_MESH_BIT_EXT
, andpShaders
is notNULL
, the same index inpShaders
must beNULL_HANDLE
- If
pStages
containsSHADER_STAGE_COMPUTE_BIT
, theCommandPool
thatcommandBuffer
was allocated from must support compute operations - If
pStages
containsSHADER_STAGE_VERTEX_BIT
,SHADER_STAGE_TESSELLATION_CONTROL_BIT
,SHADER_STAGE_TESSELLATION_EVALUATION_BIT
,SHADER_STAGE_GEOMETRY_BIT
, orSHADER_STAGE_FRAGMENT_BIT
, theCommandPool
thatcommandBuffer
was allocated from must support graphics operations - If
pStages
containsSHADER_STAGE_MESH_BIT_EXT
orSHADER_STAGE_TASK_BIT_EXT
, theCommandPool
thatcommandBuffer
was allocated from must support graphics operations
Valid Usage (Implicit)
-
commandBuffer
must be a validCommandBuffer
handle
-
pStages
must be a valid pointer to an array ofstageCount
validShaderStageFlagBits
values - If
pShaders
is notNULL
,pShaders
must be a valid pointer to an array ofstageCount
valid orNULL_HANDLE
ShaderEXT
handles -
commandBuffer
must be in the recording state - The
CommandPool
thatcommandBuffer
was allocated from must support graphics, or compute operations - This command must only be called outside of a video coding scope
-
stageCount
must be greater than0
- Both of
commandBuffer
, and the elements ofpShaders
that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the sameDevice
Host Synchronization
- Host access to
commandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatcommandBuffer
was 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 | Graphics Compute | State |
See Also
VK_EXT_shader_object,
CommandBuffer
,
ShaderEXT
,
ShaderStageFlagBits
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. PhysicalDeviceShaderObjectFeaturesEXT
can also be used in
the pNext
chain of DeviceCreateInfo
to
selectively enable these features.
Valid Usage (Implicit)
See Also
PhysicalDeviceShaderObjectFeaturesEXT | |
|
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
PhysicalDeviceShaderObjectPropertiesEXT | |
|
Instances
data ShaderCreateInfoEXT (es :: [Type]) Source #
VkShaderCreateInfoEXT - Structure specifying parameters of a newly created shader
Valid Usage
- If
codeType
isSHADER_CODE_TYPE_SPIRV_EXT
,codeSize
must be a multiple of 4
- If
codeType
isSHADER_CODE_TYPE_SPIRV_EXT
,pCode
must point to valid SPIR-V code, formatted and packed as described by the Khronos SPIR-V Specification - If
codeType
isSHADER_CODE_TYPE_SPIRV_EXT
,pCode
must adhere to the validation rules described by the Validation Rules within a Module section of the SPIR-V Environment appendix - If
codeType
isSHADER_CODE_TYPE_SPIRV_EXT
,pCode
must declare theShader
capability for SPIR-V code - If
codeType
isSHADER_CODE_TYPE_SPIRV_EXT
,pCode
must not declare any capability that is not supported by the API, as described by the Capabilities section of the SPIR-V Environment appendix - If
codeType
isSHADER_CODE_TYPE_SPIRV_EXT
, andpCode
declares any of the capabilities listed in the SPIR-V Environment appendix, one of the corresponding requirements must be satisfied - If
codeType
isSHADER_CODE_TYPE_SPIRV_EXT
,pCode
must 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
codeType
isSHADER_CODE_TYPE_SPIRV_EXT
, andpCode
declares any of the SPIR-V extensions listed in the SPIR-V Environment appendix, one of the corresponding requirements must be satisfied - If
stage
is 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
,flags
must not includeSHADER_CREATE_LINK_STAGE_BIT_EXT
- If
stage
is notSHADER_STAGE_FRAGMENT_BIT
,flags
must not includeSHADER_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_EXT
- If the
attachmentFragmentShadingRate
feature is not enabled,
flags
must not includeSHADER_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_EXT
- If
stage
is notSHADER_STAGE_FRAGMENT_BIT
,flags
must not includeSHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT
- If the
fragmentDensityMap
feature is not enabled,
flags
must not includeSHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT
- If
flags
includesSHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT
,stage
must be one ofSHADER_STAGE_MESH_BIT_EXT
,SHADER_STAGE_TASK_BIT_EXT
, orSHADER_STAGE_COMPUTE_BIT
- If
stage
is notSHADER_STAGE_COMPUTE_BIT
,flags
must not includeSHADER_CREATE_DISPATCH_BASE_BIT_EXT
- If
stage
is notSHADER_STAGE_MESH_BIT_EXT
,flags
must not includeSHADER_CREATE_NO_TASK_SHADER_BIT_EXT
- If
flags
includes bothSHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT
andSHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT
, the local workgroup size in the X dimension of the shader must be a multiple of maxSubgroupSize - If
flags
includesSHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT
but notSHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT
and noShaderRequiredSubgroupSizeCreateInfoEXT
structure is included in thepNext
chain, the local workgroup size in the X dimension of the shader must be a multiple of subgroupSize -
stage
must not beSHADER_STAGE_ALL_GRAPHICS
orSHADER_STAGE_ALL
- If the
tessellationShader
feature is not enabled,
stage
must not beSHADER_STAGE_TESSELLATION_CONTROL_BIT
orSHADER_STAGE_TESSELLATION_EVALUATION_BIT
- If the
geometryShader
feature is not enabled,
stage
must not beSHADER_STAGE_GEOMETRY_BIT
- If the
taskShader
feature is not enabled,
stage
must not beSHADER_STAGE_TASK_BIT_EXT
- If the
meshShader
feature is not enabled,
stage
must not beSHADER_STAGE_MESH_BIT_EXT
-
stage
must not beSHADER_STAGE_SUBPASS_SHADING_BIT_HUAWEI
-
stage
must not beSHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI
- If
stage
isSHADER_STAGE_VERTEX_BIT
,nextStage
must 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,
nextStage
must not includeSHADER_STAGE_TESSELLATION_CONTROL_BIT
orSHADER_STAGE_TESSELLATION_EVALUATION_BIT
- If the
geometryShader
feature is not enabled,
nextStage
must not includeSHADER_STAGE_GEOMETRY_BIT
- If
stage
isSHADER_STAGE_TESSELLATION_CONTROL_BIT
,nextStage
must not include any bits other thanSHADER_STAGE_TESSELLATION_EVALUATION_BIT
- If
stage
isSHADER_STAGE_TESSELLATION_EVALUATION_BIT
,nextStage
must not include any bits other thanSHADER_STAGE_GEOMETRY_BIT
andSHADER_STAGE_FRAGMENT_BIT
- If
stage
isSHADER_STAGE_GEOMETRY_BIT
,nextStage
must not include any bits other thanSHADER_STAGE_FRAGMENT_BIT
- If
stage
isSHADER_STAGE_FRAGMENT_BIT
orSHADER_STAGE_COMPUTE_BIT
,nextStage
must be 0 - If
stage
isSHADER_STAGE_TASK_BIT_EXT
,nextStage
must not include any bits other thanSHADER_STAGE_MESH_BIT_EXT
- If
stage
isSHADER_STAGE_MESH_BIT_EXT
,nextStage
must not include any bits other thanSHADER_STAGE_FRAGMENT_BIT
- If
codeType
isSHADER_CODE_TYPE_SPIRV_EXT
,pName
must be the name of anOpEntryPoint
inpCode
with an execution model that matchesstage
- If
codeType
isSHADER_CODE_TYPE_BINARY_EXT
,pCode
must be aligned to16
bytes - If
codeType
isSHADER_CODE_TYPE_SPIRV_EXT
,pCode
must be aligned to4
bytes - If
codeType
isSHADER_CODE_TYPE_SPIRV_EXT
, and the identified entry point includes any variable in its interface that is declared with theClipDistance
BuiltIn
decoration, that variable must not have an array size greater thanPhysicalDeviceLimits
::maxClipDistances
- If
codeType
isSHADER_CODE_TYPE_SPIRV_EXT
, and the identified entry point includes any variable in its interface that is declared with theCullDistance
BuiltIn
decoration, that variable must not have an array size greater thanPhysicalDeviceLimits
::maxCullDistances
- If
codeType
isSHADER_CODE_TYPE_SPIRV_EXT
, and the identified entry point includes any variables in its interface that are declared with theClipDistance
orCullDistance
BuiltIn
decoration, those variables must not have array sizes which sum to more thanPhysicalDeviceLimits
::maxCombinedClipAndCullDistances
- If
codeType
isSHADER_CODE_TYPE_SPIRV_EXT
, and the identified entry point includes any variable in its interface that is declared with theSampleMask
BuiltIn
decoration, that variable must not have an array size greater thanPhysicalDeviceLimits
::maxSampleMaskWords
- If
codeType
isSHADER_CODE_TYPE_SPIRV_EXT
, andstage
isSHADER_STAGE_VERTEX_BIT
, the identified entry point must not include any input variable in its interface that is decorated withCullDistance
- If
codeType
isSHADER_CODE_TYPE_SPIRV_EXT
, andstage
isSHADER_STAGE_TESSELLATION_CONTROL_BIT
orSHADER_STAGE_TESSELLATION_EVALUATION_BIT
, and the identified entry point has anOpExecutionMode
instruction specifying a patch size withOutputVertices
, the patch size must be greater than0
and less than or equal toPhysicalDeviceLimits
::maxTessellationPatchSize
- If
codeType
isSHADER_CODE_TYPE_SPIRV_EXT
, andstage
isSHADER_STAGE_GEOMETRY_BIT
, the identified entry point must have anOpExecutionMode
instruction specifying a maximum output vertex count that is greater than0
and less than or equal toPhysicalDeviceLimits
::maxGeometryOutputVertices
- If
codeType
isSHADER_CODE_TYPE_SPIRV_EXT
, andstage
isSHADER_STAGE_GEOMETRY_BIT
, the identified entry point must have anOpExecutionMode
instruction specifying an invocation count that is greater than0
and less than or equal toPhysicalDeviceLimits
::maxGeometryShaderInvocations
- If
codeType
isSHADER_CODE_TYPE_SPIRV_EXT
, andstage
is a pre-rasterization shader stage, and the identified entry point writes toLayer
for any primitive, it must write the same value toLayer
for all vertices of a given primitive - If
codeType
isSHADER_CODE_TYPE_SPIRV_EXT
, andstage
is a pre-rasterization shader stage, and the identified entry point writes toViewportIndex
for any primitive, it must write the same value toViewportIndex
for all vertices of a given primitive - If
codeType
isSHADER_CODE_TYPE_SPIRV_EXT
, andstage
isSHADER_STAGE_FRAGMENT_BIT
, the identified entry point must not include any output variables in its interface decorated withCullDistance
- If
codeType
isSHADER_CODE_TYPE_SPIRV_EXT
, andstage
isSHADER_STAGE_FRAGMENT_BIT
, and the identified entry point writes toFragDepth
in 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
codeType
isSHADER_CODE_TYPE_SPIRV_EXT
, the shader code inpCode
must 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
codeType
isSHADER_CODE_TYPE_SPIRV_EXT
, andstage
isSHADER_STAGE_TESSELLATION_EVALUATION_BIT
,pCode
must contain anOpExecutionMode
instruction specifying the type of subdivision - If
codeType
isSHADER_CODE_TYPE_SPIRV_EXT
, andstage
isSHADER_STAGE_TESSELLATION_EVALUATION_BIT
,pCode
must contain anOpExecutionMode
instruction specifying the orientation of triangles generated by the tessellator - If
codeType
isSHADER_CODE_TYPE_SPIRV_EXT
, andstage
isSHADER_STAGE_TESSELLATION_EVALUATION_BIT
,pCode
must contain anOpExecutionMode
instruction specifying the spacing of segments on the edges of tessellated primitives - If
codeType
isSHADER_CODE_TYPE_SPIRV_EXT
, andstage
isSHADER_STAGE_TESSELLATION_EVALUATION_BIT
,pCode
must contain anOpExecutionMode
instruction specifying the output patch size
Valid Usage (Implicit)
-
sType
must beSTRUCTURE_TYPE_SHADER_CREATE_INFO_EXT
-
pNext
must beNULL
or a pointer to a valid instance ofPipelineShaderStageRequiredSubgroupSizeCreateInfo
- The
sType
value of each struct in thepNext
chain must be unique -
flags
must be a valid combination ofShaderCreateFlagBitsEXT
values -
stage
must be a validShaderStageFlagBits
value -
nextStage
must be a valid combination ofShaderStageFlagBits
values -
codeType
must be a validShaderCodeTypeEXT
value -
pCode
must be a valid pointer to an array ofcodeSize
bytes - If
pName
is notNULL
,pName
must be a null-terminated UTF-8 string - If
setLayoutCount
is not0
, andpSetLayouts
is notNULL
,pSetLayouts
must be a valid pointer to an array ofsetLayoutCount
validDescriptorSetLayout
handles - If
pushConstantRangeCount
is not0
, andpPushConstantRanges
is notNULL
,pPushConstantRanges
must be a valid pointer to an array ofpushConstantRangeCount
validPushConstantRange
structures - If
pSpecializationInfo
is notNULL
,pSpecializationInfo
must be a valid pointer to a validSpecializationInfo
structure -
codeSize
must be greater than0
See Also
VK_EXT_shader_object,
DescriptorSetLayout
,
PushConstantRange
, ShaderCodeTypeEXT
,
ShaderCreateFlagsEXT
,
ShaderStageFlagBits
,
ShaderStageFlags
,
SpecializationInfo
,
StructureType
, createShadersEXT
ShaderCreateInfoEXT | |
|
Instances
newtype ShaderCreateFlagBitsEXT Source #
VkShaderCreateFlagBitsEXT - Bitmask controlling how a shader object is created
See Also
Instances
newtype ShaderCodeTypeEXT Source #
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 :: forall a. Integral a => a Source #
type EXT_SHADER_OBJECT_EXTENSION_NAME = "VK_EXT_shader_object" Source #
pattern EXT_SHADER_OBJECT_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a Source #
VkShaderEXT - Opaque handle to a shader object
See Also
VK_EXT_shader_object,
cmdBindShadersEXT
,
createShadersEXT
,
destroyShaderEXT
,
getShaderBinaryDataEXT
Instances
Storable ShaderEXT Source # | |
Defined in Vulkan.Extensions.Handles | |
Show ShaderEXT Source # | |
Eq ShaderEXT Source # | |
Ord ShaderEXT Source # | |
Defined in Vulkan.Extensions.Handles | |
HasObjectType ShaderEXT Source # | |
Defined in Vulkan.Extensions.Handles 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
ViewportSwizzleNV | |
|
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,
srcColorBlendFactor
must 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,
dstColorBlendFactor
must 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,
srcAlphaBlendFactor
must 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,
dstAlphaBlendFactor
must not beBLEND_FACTOR_SRC1_COLOR
,BLEND_FACTOR_ONE_MINUS_SRC1_COLOR
,BLEND_FACTOR_SRC1_ALPHA
, orBLEND_FACTOR_ONE_MINUS_SRC1_ALPHA
-
colorBlendOp
andalphaBlendOp
must 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_subset
extension is enabled, andPhysicalDevicePortabilitySubsetFeaturesKHR
::constantAlphaColorBlendFactors
isFALSE
,srcColorBlendFactor
must not beBLEND_FACTOR_CONSTANT_ALPHA
orBLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA
-
If the
VK_KHR_portability_subset
extension is enabled, andPhysicalDevicePortabilitySubsetFeaturesKHR
::constantAlphaColorBlendFactors
isFALSE
,dstColorBlendFactor
must not beBLEND_FACTOR_CONSTANT_ALPHA
orBLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA
Valid Usage (Implicit)
-
srcColorBlendFactor
must be a validBlendFactor
value
-
dstColorBlendFactor
must be a validBlendFactor
value -
colorBlendOp
must be a validBlendOp
value -
srcAlphaBlendFactor
must be a validBlendFactor
value -
dstAlphaBlendFactor
must be a validBlendFactor
value -
alphaBlendOp
must be a validBlendOp
value
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
BlendFactor
,
BlendOp
, cmdSetColorBlendEquationEXT
ColorBlendEquationEXT | |
|
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,
srcPremultiplied
must beTRUE
- If the
non-premultiplied destination color
property is not supported,
dstPremultiplied
must beTRUE
- If the
correlated overlap
property is not supported,
blendOverlap
must beBLEND_OVERLAP_UNCORRELATED_EXT
Valid Usage (Implicit)
-
advancedBlendOp
must be a validBlendOp
value
-
blendOverlap
must be a validBlendOverlapEXT
value
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
BlendOp
,
BlendOverlapEXT
,
Bool32
, cmdSetColorBlendAdvancedEXT
ColorBlendAdvancedEXT | |
|
Instances
data VertexInputBindingDescription2EXT Source #
VkVertexInputBindingDescription2EXT - Structure specifying the extended vertex input binding description
Valid Usage
-
binding
must be less thanPhysicalDeviceLimits
::maxVertexInputBindings
-
stride
must be less than or equal toPhysicalDeviceLimits
::maxVertexInputBindingStride
- If the
vertexAttributeInstanceRateZeroDivisor
feature is not enabled,
divisor
must not be0
- If the
vertexAttributeInstanceRateDivisor
feature is not enabled,
divisor
must be1
-
divisor
must be a value between0
andPhysicalDeviceVertexAttributeDivisorPropertiesEXT
::maxVertexAttribDivisor
, inclusive - If
divisor
is not1
theninputRate
must be of typeVERTEX_INPUT_RATE_INSTANCE
Valid Usage (Implicit)
-
sType
must beSTRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT
-
inputRate
must be a validVertexInputRate
value
See Also
VK_EXT_shader_object,
VK_EXT_vertex_input_dynamic_state,
StructureType
,
VertexInputRate
,
cmdSetVertexInputEXT
VertexInputBindingDescription2EXT | |
|
Instances
data VertexInputAttributeDescription2EXT Source #
VkVertexInputAttributeDescription2EXT - Structure specifying the extended vertex input attribute description
Valid Usage
-
location
must be less thanPhysicalDeviceLimits
::maxVertexInputAttributes
-
binding
must be less thanPhysicalDeviceLimits
::maxVertexInputBindings
-
offset
must be less than or equal toPhysicalDeviceLimits
::maxVertexInputAttributeOffset
- The
format features
of
format
must containFORMAT_FEATURE_VERTEX_BUFFER_BIT
-
If the
VK_KHR_portability_subset
extension is enabled, andPhysicalDevicePortabilitySubsetFeaturesKHR
::vertexAttributeAccessBeyondStride
isFALSE
, the sum ofoffset
plus the size of the vertex attribute data described byformat
must not be greater thanstride
in theVertexInputBindingDescription2EXT
referenced inbinding
Valid Usage (Implicit)
-
sType
must beSTRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT
-
format
must be a validFormat
value
See Also
VK_EXT_shader_object,
VK_EXT_vertex_input_dynamic_state,
Format
,
StructureType
,
cmdSetVertexInputEXT
VertexInputAttributeDescription2EXT | |
|
Instances
cmdSetPatchControlPointsEXT Source #
:: forall io. 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
- Either the extendedDynamicState2PatchControlPoints feature or the shaderObject feature or both must be enabled
-
patchControlPoints
must be greater than zero and less than or equal toPhysicalDeviceLimits
::maxTessellationPatchSize
Valid Usage (Implicit)
-
commandBuffer
must be a validCommandBuffer
handle
-
commandBuffer
must be in the recording state - The
CommandPool
thatcommandBuffer
was allocated from must support graphics operations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatcommandBuffer
was 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 | Graphics | State |
See Also
VK_EXT_extended_dynamic_state2,
VK_EXT_shader_object,
CommandBuffer
:: forall io. 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
- Either the extendedDynamicState2LogicOp feature or the shaderObject feature or both must be enabled
Valid Usage (Implicit)
-
commandBuffer
must be a validCommandBuffer
handle
-
logicOp
must be a validLogicOp
value -
commandBuffer
must be in the recording state - The
CommandPool
thatcommandBuffer
was allocated from must support graphics operations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatcommandBuffer
was 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 | Graphics | State |
See Also
VK_EXT_extended_dynamic_state2,
VK_EXT_shader_object,
CommandBuffer
,
LogicOp
cmdSetTessellationDomainOriginEXT Source #
:: forall io. 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
- Either the extendedDynamicState3TessellationDomainOrigin feature or the shaderObject feature or both must be enabled
Valid Usage (Implicit)
-
commandBuffer
must be a validCommandBuffer
handle
-
domainOrigin
must be a validTessellationDomainOrigin
value -
commandBuffer
must be in the recording state - The
CommandPool
thatcommandBuffer
was allocated from must support graphics operations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatcommandBuffer
was 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 | Graphics | State |
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
CommandBuffer
,
TessellationDomainOrigin
cmdSetDepthClampEnableEXT Source #
:: forall io. 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
- Either the extendedDynamicState3DepthClampEnable feature or the shaderObject feature or both must be enabled
- If the
depthClamp
feature is not enabled,
depthClampEnable
must beFALSE
Valid Usage (Implicit)
-
commandBuffer
must be a validCommandBuffer
handle
-
commandBuffer
must be in the recording state - The
CommandPool
thatcommandBuffer
was allocated from must support graphics operations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatcommandBuffer
was 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 | Graphics | State |
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
Bool32
,
CommandBuffer
:: forall io. 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
- Either the extendedDynamicState3PolygonMode feature or the shaderObject feature or both must be enabled
- If the
fillModeNonSolid
feature is not enabled,
polygonMode
must bePOLYGON_MODE_FILL
orPOLYGON_MODE_FILL_RECTANGLE_NV
- If the
VK_NV_fill_rectangle
extension is not enabled,polygonMode
must not bePOLYGON_MODE_FILL_RECTANGLE_NV
Valid Usage (Implicit)
-
commandBuffer
must be a validCommandBuffer
handle
-
polygonMode
must be a validPolygonMode
value -
commandBuffer
must be in the recording state - The
CommandPool
thatcommandBuffer
was allocated from must support graphics operations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatcommandBuffer
was 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 | Graphics | State |
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
CommandBuffer
,
PolygonMode
cmdSetRasterizationSamplesEXT Source #
:: forall io. 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
- Either the extendedDynamicState3RasterizationSamples feature or the shaderObject feature or both must be enabled
Valid Usage (Implicit)
-
commandBuffer
must be a validCommandBuffer
handle
-
rasterizationSamples
must be a validSampleCountFlagBits
value -
commandBuffer
must be in the recording state - The
CommandPool
thatcommandBuffer
was allocated from must support graphics operations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatcommandBuffer
was 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 | Graphics | State |
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
CommandBuffer
,
SampleCountFlagBits
:: forall io. 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
- Either the extendedDynamicState3SampleMask feature or the shaderObject feature or both must be enabled
Valid Usage (Implicit)
-
commandBuffer
must be a validCommandBuffer
handle
-
samples
must be a validSampleCountFlagBits
value -
pSampleMask
must be a valid pointer to an array of \(\lceil{\mathit{samples} \over 32}\rceil\)SampleMask
values -
commandBuffer
must be in the recording state - The
CommandPool
thatcommandBuffer
was allocated from must support graphics operations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatcommandBuffer
was 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 | Graphics | State |
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
CommandBuffer
,
SampleCountFlagBits
,
SampleMask
cmdSetAlphaToCoverageEnableEXT Source #
:: forall io. 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
- Either the extendedDynamicState3AlphaToCoverageEnable feature or the shaderObject feature or both must be enabled
Valid Usage (Implicit)
-
commandBuffer
must be a validCommandBuffer
handle
-
commandBuffer
must be in the recording state - The
CommandPool
thatcommandBuffer
was allocated from must support graphics operations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatcommandBuffer
was 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 | Graphics | State |
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
Bool32
,
CommandBuffer
cmdSetAlphaToOneEnableEXT Source #
:: forall io. 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
- Either the extendedDynamicState3AlphaToOneEnable feature or the shaderObject feature or both must be enabled
- If the
alphaToOne
feature is not enabled,
alphaToOneEnable
must beFALSE
Valid Usage (Implicit)
-
commandBuffer
must be a validCommandBuffer
handle
-
commandBuffer
must be in the recording state - The
CommandPool
thatcommandBuffer
was allocated from must support graphics operations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatcommandBuffer
was 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 | Graphics | State |
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
Bool32
,
CommandBuffer
cmdSetLogicOpEnableEXT Source #
:: forall io. 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
- Either the extendedDynamicState3LogicOpEnable feature or the shaderObject feature or both must be enabled
Valid Usage (Implicit)
-
commandBuffer
must be a validCommandBuffer
handle
-
commandBuffer
must be in the recording state - The
CommandPool
thatcommandBuffer
was allocated from must support graphics operations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatcommandBuffer
was 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 | Graphics | State |
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
Bool32
,
CommandBuffer
cmdSetColorBlendEnableEXT Source #
:: forall io. 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
- Either the extendedDynamicState3ColorBlendEnable feature or the shaderObject feature or both must be enabled
Valid Usage (Implicit)
-
commandBuffer
must be a validCommandBuffer
handle
-
pColorBlendEnables
must be a valid pointer to an array ofattachmentCount
Bool32
values -
commandBuffer
must be in the recording state - The
CommandPool
thatcommandBuffer
was allocated from must support graphics operations - This command must only be called outside of a video coding scope
-
attachmentCount
must be greater than0
Host Synchronization
- Host access to
commandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatcommandBuffer
was 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 | Graphics | State |
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
Bool32
,
CommandBuffer
cmdSetColorBlendEquationEXT Source #
:: forall io. 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
- Either the extendedDynamicState3ColorBlendEquation feature or the shaderObject feature or both must be enabled
Valid Usage (Implicit)
-
commandBuffer
must be a validCommandBuffer
handle
-
pColorBlendEquations
must be a valid pointer to an array ofattachmentCount
validColorBlendEquationEXT
structures -
commandBuffer
must be in the recording state - The
CommandPool
thatcommandBuffer
was allocated from must support graphics operations - This command must only be called outside of a video coding scope
-
attachmentCount
must be greater than0
Host Synchronization
- Host access to
commandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatcommandBuffer
was 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 | Graphics | State |
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
ColorBlendEquationEXT
, CommandBuffer
cmdSetColorWriteMaskEXT Source #
:: forall io. 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.
Note
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
- Either the extendedDynamicState3ColorWriteMask feature or the shaderObject feature or both must be enabled
Valid Usage (Implicit)
-
commandBuffer
must be a validCommandBuffer
handle
-
pColorWriteMasks
must be a valid pointer to an array ofattachmentCount
valid combinations ofColorComponentFlagBits
values -
commandBuffer
must be in the recording state - The
CommandPool
thatcommandBuffer
was allocated from must support graphics operations - This command must only be called outside of a video coding scope
-
attachmentCount
must be greater than0
Host Synchronization
- Host access to
commandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatcommandBuffer
was 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 | Graphics | State |
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
ColorComponentFlags
,
CommandBuffer
cmdSetRasterizationStreamEXT Source #
:: forall io. 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
- Either the extendedDynamicState3RasterizationStream feature or the shaderObject feature or both must be enabled
- The transformFeedback feature must be enabled
-
rasterizationStream
must be less thanPhysicalDeviceTransformFeedbackPropertiesEXT
::maxTransformFeedbackStreams
-
rasterizationStream
must be zero ifPhysicalDeviceTransformFeedbackPropertiesEXT
::transformFeedbackRasterizationStreamSelect
isFALSE
Valid Usage (Implicit)
-
commandBuffer
must be a validCommandBuffer
handle
-
commandBuffer
must be in the recording state - The
CommandPool
thatcommandBuffer
was allocated from must support graphics operations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatcommandBuffer
was 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 | Graphics | State |
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
CommandBuffer
cmdSetConservativeRasterizationModeEXT Source #
:: forall io. 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
- Either the extendedDynamicState3ConservativeRasterizationMode feature or the shaderObject feature or both must be enabled
Valid Usage (Implicit)
-
commandBuffer
must be a validCommandBuffer
handle
-
conservativeRasterizationMode
must be a validConservativeRasterizationModeEXT
value -
commandBuffer
must be in the recording state -
The
CommandPool
thatcommandBuffer
was allocated from must support graphics operations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatcommandBuffer
was 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 | Graphics | State |
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
CommandBuffer
,
ConservativeRasterizationModeEXT
cmdSetExtraPrimitiveOverestimationSizeEXT Source #
:: forall io. 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
- Either the extendedDynamicState3ExtraPrimitiveOverestimationSize feature or the shaderObject feature or both must be enabled
-
extraPrimitiveOverestimationSize
must be in the range of0.0
toPhysicalDeviceConservativeRasterizationPropertiesEXT
::maxExtraPrimitiveOverestimationSize
inclusive
Valid Usage (Implicit)
-
commandBuffer
must be a validCommandBuffer
handle
-
commandBuffer
must be in the recording state -
The
CommandPool
thatcommandBuffer
was allocated from must support graphics operations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatcommandBuffer
was 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 | Graphics | State |
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
CommandBuffer
cmdSetDepthClipEnableEXT Source #
:: forall io. 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 is set to the
inverse of
PipelineRasterizationStateCreateInfo
::depthClampEnable
if
PipelineRasterizationDepthClipStateCreateInfoEXT
is not specified.
Valid Usage
- Either the extendedDynamicState3DepthClipEnable feature or the shaderObject feature or both must be enabled
- The depthClipEnable feature must be enabled
Valid Usage (Implicit)
-
commandBuffer
must be a validCommandBuffer
handle
-
commandBuffer
must be in the recording state - The
CommandPool
thatcommandBuffer
was allocated from must support graphics operations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatcommandBuffer
was 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 | Graphics | State |
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
Bool32
,
CommandBuffer
cmdSetSampleLocationsEnableEXT Source #
:: forall io. 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
- Either the extendedDynamicState3SampleLocationsEnable feature or the shaderObject feature or both must be enabled
Valid Usage (Implicit)
-
commandBuffer
must be a validCommandBuffer
handle
-
commandBuffer
must be in the recording state - The
CommandPool
thatcommandBuffer
was allocated from must support graphics operations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatcommandBuffer
was 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 | Graphics | State |
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
Bool32
,
CommandBuffer
cmdSetColorBlendAdvancedEXT Source #
:: forall io. 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
- Either the extendedDynamicState3ColorBlendAdvanced feature or the shaderObject feature or both must be enabled
Valid Usage (Implicit)
-
commandBuffer
must be a validCommandBuffer
handle
-
pColorBlendAdvanced
must be a valid pointer to an array ofattachmentCount
validColorBlendAdvancedEXT
structures -
commandBuffer
must be in the recording state - The
CommandPool
thatcommandBuffer
was allocated from must support graphics operations - This command must only be called outside of a video coding scope
-
attachmentCount
must be greater than0
Host Synchronization
- Host access to
commandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatcommandBuffer
was 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 | Graphics | State |
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
ColorBlendAdvancedEXT
, CommandBuffer
cmdSetProvokingVertexModeEXT Source #
:: forall io. 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
- Either the extendedDynamicState3ProvokingVertexMode feature or the shaderObject feature or both must be enabled
- If
provokingVertexMode
isPROVOKING_VERTEX_MODE_LAST_VERTEX_EXT
, then the provokingVertexLast feature must be enabled
Valid Usage (Implicit)
-
commandBuffer
must be a validCommandBuffer
handle
-
provokingVertexMode
must be a validProvokingVertexModeEXT
value -
commandBuffer
must be in the recording state - The
CommandPool
thatcommandBuffer
was allocated from must support graphics operations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatcommandBuffer
was 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 | Graphics | State |
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
CommandBuffer
,
ProvokingVertexModeEXT
cmdSetLineRasterizationModeEXT Source #
:: forall io. 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
PipelineRasterizationLineStateCreateInfoEXT
::lineRasterizationMode
value used to create the currently active pipeline.
Valid Usage
- Either the extendedDynamicState3LineRasterizationMode feature or the shaderObject feature or both must be enabled
-
If
lineRasterizationMode
isLINE_RASTERIZATION_MODE_RECTANGULAR_EXT
, then the rectangularLines feature must be enabled -
If
lineRasterizationMode
isLINE_RASTERIZATION_MODE_BRESENHAM_EXT
, then the bresenhamLines feature must be enabled -
If
lineRasterizationMode
isLINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT
, then the smoothLines feature must be enabled
Valid Usage (Implicit)
-
commandBuffer
must be a validCommandBuffer
handle
-
lineRasterizationMode
must be a validLineRasterizationModeEXT
value -
commandBuffer
must be in the recording state - The
CommandPool
thatcommandBuffer
was allocated from must support graphics operations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatcommandBuffer
was 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 | Graphics | State |
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
CommandBuffer
,
LineRasterizationModeEXT
cmdSetLineStippleEnableEXT Source #
:: forall io. 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
PipelineRasterizationLineStateCreateInfoEXT
::stippledLineEnable
value used to create the currently active pipeline.
Valid Usage
- Either the extendedDynamicState3LineStippleEnable feature or the shaderObject feature or both must be enabled
Valid Usage (Implicit)
-
commandBuffer
must be a validCommandBuffer
handle
-
commandBuffer
must be in the recording state - The
CommandPool
thatcommandBuffer
was allocated from must support graphics operations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatcommandBuffer
was 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 | Graphics | State |
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
Bool32
,
CommandBuffer
cmdSetDepthClipNegativeOneToOneEXT Source #
:: forall io. 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
- Either the extendedDynamicState3DepthClipNegativeOneToOne feature or the shaderObject feature or both must be enabled
- The depthClipControl feature must be enabled
Valid Usage (Implicit)
-
commandBuffer
must be a validCommandBuffer
handle
-
commandBuffer
must be in the recording state -
The
CommandPool
thatcommandBuffer
was allocated from must support graphics operations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatcommandBuffer
was 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 | Graphics | State |
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
Bool32
,
CommandBuffer
cmdSetViewportWScalingEnableNV Source #
:: forall io. 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
- Either the extendedDynamicState3ViewportWScalingEnable feature or the shaderObject feature or both must be enabled
Valid Usage (Implicit)
-
commandBuffer
must be a validCommandBuffer
handle
-
commandBuffer
must be in the recording state - The
CommandPool
thatcommandBuffer
was allocated from must support graphics operations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatcommandBuffer
was 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 | Graphics | State |
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
VK_NV_clip_space_w_scaling,
Bool32
,
CommandBuffer
cmdSetViewportSwizzleNV Source #
:: forall io. 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
- Either the extendedDynamicState3ViewportSwizzle feature or the shaderObject feature or both must be enabled
Valid Usage (Implicit)
-
commandBuffer
must be a validCommandBuffer
handle
-
pViewportSwizzles
must be a valid pointer to an array ofviewportCount
validViewportSwizzleNV
structures -
commandBuffer
must be in the recording state - The
CommandPool
thatcommandBuffer
was allocated from must support graphics operations - This command must only be called outside of a video coding scope
-
viewportCount
must be greater than0
Host Synchronization
- Host access to
commandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatcommandBuffer
was 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 | Graphics | State |
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
VK_NV_viewport_swizzle,
CommandBuffer
,
ViewportSwizzleNV
cmdSetCoverageToColorEnableNV Source #
:: forall io. 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
- Either the extendedDynamicState3CoverageToColorEnable feature or the shaderObject feature or both must be enabled
Valid Usage (Implicit)
-
commandBuffer
must be a validCommandBuffer
handle
-
commandBuffer
must be in the recording state - The
CommandPool
thatcommandBuffer
was allocated from must support graphics operations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatcommandBuffer
was 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 | Graphics | State |
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
VK_NV_fragment_coverage_to_color,
Bool32
,
CommandBuffer
cmdSetCoverageToColorLocationNV Source #
:: forall io. 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
- Either the extendedDynamicState3CoverageToColorLocation feature or the shaderObject feature or both must be enabled
Valid Usage (Implicit)
-
commandBuffer
must be a validCommandBuffer
handle
-
commandBuffer
must be in the recording state - The
CommandPool
thatcommandBuffer
was allocated from must support graphics operations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatcommandBuffer
was 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 | Graphics | State |
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
VK_NV_fragment_coverage_to_color,
CommandBuffer
cmdSetCoverageModulationModeNV Source #
:: forall io. 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
- Either the extendedDynamicState3CoverageModulationMode feature or the shaderObject feature or both must be enabled
Valid Usage (Implicit)
-
commandBuffer
must be a validCommandBuffer
handle
-
coverageModulationMode
must be a validCoverageModulationModeNV
value -
commandBuffer
must be in the recording state - The
CommandPool
thatcommandBuffer
was allocated from must support graphics operations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatcommandBuffer
was 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 | Graphics | State |
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
VK_NV_framebuffer_mixed_samples,
CommandBuffer
,
CoverageModulationModeNV
cmdSetCoverageModulationTableEnableNV Source #
:: forall io. 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
- Either the extendedDynamicState3CoverageModulationTableEnable feature or the shaderObject feature or both must be enabled
Valid Usage (Implicit)
-
commandBuffer
must be a validCommandBuffer
handle
-
commandBuffer
must be in the recording state -
The
CommandPool
thatcommandBuffer
was allocated from must support graphics operations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatcommandBuffer
was 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 | Graphics | State |
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
VK_NV_framebuffer_mixed_samples,
Bool32
,
CommandBuffer
cmdSetCoverageModulationTableNV Source #
:: forall io. 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
- Either the extendedDynamicState3CoverageModulationTable feature or the shaderObject feature or both must be enabled
Valid Usage (Implicit)
-
commandBuffer
must be a validCommandBuffer
handle
-
pCoverageModulationTable
must be a valid pointer to an array ofcoverageModulationTableCount
float
values -
commandBuffer
must be in the recording state - The
CommandPool
thatcommandBuffer
was allocated from must support graphics operations - This command must only be called outside of a video coding scope
-
coverageModulationTableCount
must be greater than0
Host Synchronization
- Host access to
commandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatcommandBuffer
was 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 | Graphics | State |
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
VK_NV_framebuffer_mixed_samples,
CommandBuffer
cmdSetShadingRateImageEnableNV Source #
:: forall io. 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
- Either the extendedDynamicState3ShadingRateImageEnable feature or the shaderObject feature or both must be enabled
Valid Usage (Implicit)
-
commandBuffer
must be a validCommandBuffer
handle
-
commandBuffer
must be in the recording state - The
CommandPool
thatcommandBuffer
was allocated from must support graphics operations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatcommandBuffer
was 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 | Graphics | State |
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
VK_NV_shading_rate_image,
Bool32
,
CommandBuffer
cmdSetCoverageReductionModeNV Source #
:: forall io. 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
- Either the extendedDynamicState3CoverageReductionMode feature or the shaderObject feature or both must be enabled
Valid Usage (Implicit)
-
commandBuffer
must be a validCommandBuffer
handle
-
coverageReductionMode
must be a validCoverageReductionModeNV
value -
commandBuffer
must be in the recording state - The
CommandPool
thatcommandBuffer
was allocated from must support graphics operations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatcommandBuffer
was 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 | Graphics | State |
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
VK_NV_coverage_reduction_mode,
CommandBuffer
,
CoverageReductionModeNV
cmdSetRepresentativeFragmentTestEnableNV Source #
:: forall io. 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
- Either the extendedDynamicState3RepresentativeFragmentTestEnable feature or the shaderObject feature or both must be enabled
Valid Usage (Implicit)
-
commandBuffer
must be a validCommandBuffer
handle
-
commandBuffer
must be in the recording state -
The
CommandPool
thatcommandBuffer
was allocated from must support graphics operations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatcommandBuffer
was 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 | Graphics | State |
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
VK_NV_representative_fragment_test,
Bool32
,
CommandBuffer
:: forall io. 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.
Valid Usage
- Either the vertexInputDynamicState feature or the shaderObject feature or both must be enabled
-
vertexBindingDescriptionCount
must be less than or equal toPhysicalDeviceLimits
::maxVertexInputBindings
-
vertexAttributeDescriptionCount
must be less than or equal toPhysicalDeviceLimits
::maxVertexInputAttributes
- For every
binding
specified by each element ofpVertexAttributeDescriptions
, aVertexInputBindingDescription2EXT
must exist inpVertexBindingDescriptions
with the same value ofbinding
- All
elements of
pVertexBindingDescriptions
must describe distinct binding numbers - All
elements of
pVertexAttributeDescriptions
must describe distinct attribute locations
Valid Usage (Implicit)
-
commandBuffer
must be a validCommandBuffer
handle
-
If
vertexBindingDescriptionCount
is not0
,pVertexBindingDescriptions
must be a valid pointer to an array ofvertexBindingDescriptionCount
validVertexInputBindingDescription2EXT
structures -
If
vertexAttributeDescriptionCount
is not0
,pVertexAttributeDescriptions
must be a valid pointer to an array ofvertexAttributeDescriptionCount
validVertexInputAttributeDescription2EXT
structures -
commandBuffer
must be in the recording state - The
CommandPool
thatcommandBuffer
was allocated from must support graphics operations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatcommandBuffer
was 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 | Graphics | State |
See Also
VK_EXT_shader_object,
VK_EXT_vertex_input_dynamic_state,
CommandBuffer
,
VertexInputAttributeDescription2EXT
,
VertexInputBindingDescription2EXT
newtype ViewportCoordinateSwizzleNV Source #
VkViewportCoordinateSwizzleNV - Specify how a viewport coordinate is swizzled
Description
These values are described in detail in Viewport Swizzle.
See Also
Instances
newtype BlendOverlapEXT Source #
VkBlendOverlapEXT - Enumerant specifying the blend overlap parameter
Description
'
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
pattern BLEND_OVERLAP_UNCORRELATED_EXT :: BlendOverlapEXT |
|
pattern BLEND_OVERLAP_DISJOINT_EXT :: BlendOverlapEXT |
|
pattern BLEND_OVERLAP_CONJOINT_EXT :: BlendOverlapEXT |
|
Instances
newtype CoverageModulationModeNV Source #
VkCoverageModulationModeNV - Specify the coverage modulation mode
See Also
VK_NV_framebuffer_mixed_samples,
PipelineCoverageModulationStateCreateInfoNV
,
cmdSetCoverageModulationModeNV
pattern COVERAGE_MODULATION_MODE_NONE_NV :: CoverageModulationModeNV |
|
pattern COVERAGE_MODULATION_MODE_RGB_NV :: CoverageModulationModeNV |
|
pattern COVERAGE_MODULATION_MODE_ALPHA_NV :: CoverageModulationModeNV |
|
pattern COVERAGE_MODULATION_MODE_RGBA_NV :: CoverageModulationModeNV |
|
Instances
newtype CoverageReductionModeNV Source #
VkCoverageReductionModeNV - Specify the coverage reduction mode
See Also
VK_NV_coverage_reduction_mode,
FramebufferMixedSamplesCombinationNV
,
PipelineCoverageReductionStateCreateInfoNV
,
cmdSetCoverageReductionModeNV
pattern COVERAGE_REDUCTION_MODE_MERGE_NV :: CoverageReductionModeNV |
|
pattern COVERAGE_REDUCTION_MODE_TRUNCATE_NV :: CoverageReductionModeNV |
|
Instances
newtype ConservativeRasterizationModeEXT Source #
VkConservativeRasterizationModeEXT - Specify the conservative rasterization mode
See Also
VK_EXT_conservative_rasterization,
PipelineRasterizationConservativeStateCreateInfoEXT
,
cmdSetConservativeRasterizationModeEXT
pattern CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT :: ConservativeRasterizationModeEXT |
|
pattern CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT :: ConservativeRasterizationModeEXT |
|
pattern CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT :: ConservativeRasterizationModeEXT |
|
Instances
newtype LineRasterizationModeEXT Source #
VkLineRasterizationModeEXT - Line rasterization modes
See Also
VK_EXT_line_rasterization,
PipelineRasterizationLineStateCreateInfoEXT
,
cmdSetLineRasterizationModeEXT
Instances
newtype ProvokingVertexModeEXT Source #
VkProvokingVertexModeEXT - Specify which vertex in a primitive is the provoking vertex
Description
These modes are described more precisely in Primitive Topologies.
See Also
VK_EXT_provoking_vertex,
PipelineRasterizationProvokingVertexStateCreateInfoEXT
,
cmdSetProvokingVertexModeEXT
pattern PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT :: ProvokingVertexModeEXT |
|
pattern PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT :: ProvokingVertexModeEXT |
|
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 #