| Safe Haskell | Safe-Inferred |
|---|---|
| Language | Haskell2010 |
Vulkan.Extensions.VK_EXT_shader_object
Description
Name
VK_EXT_shader_object - device extension
VK_EXT_shader_object
- Name String
VK_EXT_shader_object
- Extension Type
- Device extension
- Registered Extension Number
- 483
- Revision
- 1
- Ratification Status
- Ratified
- Extension and Version Dependencies
VK_KHR_get_physical_device_properties2 or
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
cmdBindVertexBuffers2EXTcmdSetAlphaToCoverageEnableEXTcmdSetAlphaToOneEnableEXTcmdSetColorBlendAdvancedEXTcmdSetColorBlendEnableEXTcmdSetColorBlendEquationEXTcmdSetColorWriteMaskEXTcmdSetConservativeRasterizationModeEXTcmdSetCullModeEXTcmdSetDepthBiasEnableEXTcmdSetDepthBoundsTestEnableEXTcmdSetDepthClampEnableEXTcmdSetDepthClipEnableEXTcmdSetDepthClipNegativeOneToOneEXTcmdSetDepthCompareOpEXTcmdSetDepthTestEnableEXTcmdSetDepthWriteEnableEXTcmdSetExtraPrimitiveOverestimationSizeEXTcmdSetFrontFaceEXTcmdSetLineRasterizationModeEXTcmdSetLineStippleEnableEXTcmdSetLogicOpEXTcmdSetLogicOpEnableEXTcmdSetPatchControlPointsEXTcmdSetPolygonModeEXTcmdSetPrimitiveRestartEnableEXTcmdSetPrimitiveTopologyEXTcmdSetProvokingVertexModeEXTcmdSetRasterizationSamplesEXTcmdSetRasterizationStreamEXTcmdSetRasterizerDiscardEnableEXTcmdSetSampleLocationsEnableEXTcmdSetSampleMaskEXTcmdSetScissorWithCountEXTcmdSetStencilOpEXTcmdSetStencilTestEnableEXTcmdSetTessellationDomainOriginEXTcmdSetVertexInputEXTcmdSetViewportWithCountEXTcreateShadersEXTdestroyShaderEXTgetShaderBinaryDataEXT
If VK_NV_clip_space_w_scaling is supported:
If VK_NV_coverage_reduction_mode is supported:
If VK_NV_fragment_coverage_to_color is supported:
If VK_NV_framebuffer_mixed_samples is supported:
If VK_NV_representative_fragment_test is supported:
If VK_NV_shading_rate_image is supported:
If VK_NV_viewport_swizzle is supported:
New Structures
ColorBlendEquationEXTShaderCreateInfoEXTVertexInputAttributeDescription2EXTVertexInputBindingDescription2EXTExtending
PhysicalDeviceFeatures2,DeviceCreateInfo:Extending
PhysicalDeviceProperties2:Extending
PipelineShaderStageCreateInfo,ShaderCreateInfoEXT:
New Enums
New Bitmasks
New Enum Constants
EXT_SHADER_OBJECT_SPEC_VERSIONExtending
ObjectType:Extending
Result:Extending
StructureType:STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXTSTRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXTSTRUCTURE_TYPE_SHADER_CREATE_INFO_EXTSTRUCTURE_TYPE_SHADER_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXTSTRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXTSTRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT
If VK_EXT_fragment_density_map is supported:
If VK_EXT_mesh_shader or VK_NV_mesh_shader is supported:
If VK_EXT_subgroup_size_control or 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
Arguments
| :: 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
createInfoCountis 1, there must be no element ofpCreateInfoswhoseflagsmember includesSHADER_CREATE_LINK_STAGE_BIT_EXT - If the
flagsmember of any element ofpCreateInfosincludesSHADER_CREATE_LINK_STAGE_BIT_EXT, theflagsmember of all other elements ofpCreateInfoswhosestageisSHADER_STAGE_VERTEX_BIT,SHADER_STAGE_TESSELLATION_CONTROL_BIT,SHADER_STAGE_TESSELLATION_EVALUATION_BIT,SHADER_STAGE_GEOMETRY_BIT, orSHADER_STAGE_FRAGMENT_BITmust also includeSHADER_CREATE_LINK_STAGE_BIT_EXT - If the
flagsmember of any element ofpCreateInfosincludesSHADER_CREATE_LINK_STAGE_BIT_EXT, theflagsmember of all other elements ofpCreateInfoswhosestageisSHADER_STAGE_TASK_BIT_EXTorSHADER_STAGE_MESH_BIT_EXTmust also includeSHADER_CREATE_LINK_STAGE_BIT_EXT - If the
flagsmember of any element ofpCreateInfoswhosestageisSHADER_STAGE_TASK_BIT_EXTorSHADER_STAGE_MESH_BIT_EXTincludesSHADER_CREATE_LINK_STAGE_BIT_EXT, there must be no member ofpCreateInfoswhosestageisSHADER_STAGE_VERTEX_BITand whoseflagsmember includesSHADER_CREATE_LINK_STAGE_BIT_EXT - If there is any element
of
pCreateInfoswhosestageisSHADER_STAGE_MESH_BIT_EXTand whoseflagsmember includes bothSHADER_CREATE_LINK_STAGE_BIT_EXTandSHADER_CREATE_NO_TASK_SHADER_BIT_EXT, there must be no element ofpCreateInfoswhosestageisSHADER_STAGE_TASK_BIT_EXTand whoseflagsmember includesSHADER_CREATE_LINK_STAGE_BIT_EXT - For each element of
pCreateInfoswhoseflagsmember includesSHADER_CREATE_LINK_STAGE_BIT_EXT, if there is any other element ofpCreateInfoswhosestageis logically later than thestageof the former and whoseflagsmember also includesSHADER_CREATE_LINK_STAGE_BIT_EXT, thenextStageof the former must be equal to thestageof the element with the logically earlieststagefollowing thestageof the former whoseflagsmember also includesSHADER_CREATE_LINK_STAGE_BIT_EXT - The
stagemember of each element ofpCreateInfoswhoseflagsmember includesSHADER_CREATE_LINK_STAGE_BIT_EXTmust be unique - The
codeTypemember of all elements ofpCreateInfoswhoseflagsmember includesSHADER_CREATE_LINK_STAGE_BIT_EXTmust be the same - If
pCreateInfoscontains elements with bothSHADER_STAGE_TESSELLATION_CONTROL_BITandSHADER_STAGE_TESSELLATION_EVALUATION_BIT, both elements'flagsincludeSHADER_CREATE_LINK_STAGE_BIT_EXT, both elements'codeTypeisSHADER_CODE_TYPE_SPIRV_EXT, and theSHADER_STAGE_TESSELLATION_CONTROL_BITstage’spCodecontains anOpExecutionModeinstruction specifying the type of subdivision, it must match the subdivision type specified in theSHADER_STAGE_TESSELLATION_EVALUATION_BITstage - If
pCreateInfoscontains elements with bothSHADER_STAGE_TESSELLATION_CONTROL_BITandSHADER_STAGE_TESSELLATION_EVALUATION_BIT, both elements'flagsincludeSHADER_CREATE_LINK_STAGE_BIT_EXT, both elements'codeTypeisSHADER_CODE_TYPE_SPIRV_EXT, and theSHADER_STAGE_TESSELLATION_CONTROL_BITstage’spCodecontains anOpExecutionModeinstruction specifying the orientation of triangles, it must match the triangle orientation specified in theSHADER_STAGE_TESSELLATION_EVALUATION_BITstage - If
pCreateInfoscontains elements with bothSHADER_STAGE_TESSELLATION_CONTROL_BITandSHADER_STAGE_TESSELLATION_EVALUATION_BIT, both elements'flagsincludeSHADER_CREATE_LINK_STAGE_BIT_EXT, both elements'codeTypeisSHADER_CODE_TYPE_SPIRV_EXT, and theSHADER_STAGE_TESSELLATION_CONTROL_BITstage’spCodecontains anOpExecutionModeinstruction specifyingPointMode, theSHADER_STAGE_TESSELLATION_EVALUATION_BITstage must also contain anOpExecutionModeinstruction specifyingPointMode - If
pCreateInfoscontains elements with bothSHADER_STAGE_TESSELLATION_CONTROL_BITandSHADER_STAGE_TESSELLATION_EVALUATION_BIT, both elements'flagsincludeSHADER_CREATE_LINK_STAGE_BIT_EXT, both elements'codeTypeisSHADER_CODE_TYPE_SPIRV_EXT, and theSHADER_STAGE_TESSELLATION_CONTROL_BITstage’spCodecontains anOpExecutionModeinstruction specifying the spacing of segments on the edges of tessellated primitives, it must match the segment spacing specified in theSHADER_STAGE_TESSELLATION_EVALUATION_BITstage - If
pCreateInfoscontains elements with bothSHADER_STAGE_TESSELLATION_CONTROL_BITandSHADER_STAGE_TESSELLATION_EVALUATION_BIT, both elements'flagsincludeSHADER_CREATE_LINK_STAGE_BIT_EXT, both elements'codeTypeisSHADER_CODE_TYPE_SPIRV_EXT, and theSHADER_STAGE_TESSELLATION_CONTROL_BITstage’spCodecontains anOpExecutionModeinstruction specifying the output patch size, it must match the output patch size specified in theSHADER_STAGE_TESSELLATION_EVALUATION_BITstage
Valid Usage (Implicit)
-
devicemust be a validDevicehandle
-
pCreateInfosmust be a valid pointer to an array ofcreateInfoCountvalidShaderCreateInfoEXTstructures - If
pAllocatoris notNULL,pAllocatormust be a valid pointer to a validAllocationCallbacksstructure -
pShadersmust be a valid pointer to an array ofcreateInfoCountShaderEXThandles -
createInfoCountmust be greater than0
Return Codes
See Also
VK_EXT_shader_object,
AllocationCallbacks,
Device, ShaderCreateInfoEXT,
ShaderEXT
withShadersEXT :: 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.
Arguments
| :: 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
shadermust have completed execution - If
AllocationCallbackswere provided whenshaderwas created, a compatible set of callbacks must be provided here - If no
AllocationCallbackswere provided whenshaderwas created,pAllocatormust beNULL
Valid Usage (Implicit)
-
devicemust be a validDevicehandle
-
shadermust be a validShaderEXThandle - If
pAllocatoris notNULL,pAllocatormust be a valid pointer to a validAllocationCallbacksstructure -
shadermust have been created, allocated, or retrieved fromdevice
Host Synchronization
- Host access to
shadermust be externally synchronized
See Also
VK_EXT_shader_object,
AllocationCallbacks,
Device, ShaderEXT
getShaderBinaryDataEXT Source #
Arguments
| :: 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)
-
devicemust be a validDevicehandle
-
shadermust be a validShaderEXThandle -
pDataSizemust be a valid pointer to asize_tvalue - If the value
referenced by
pDataSizeis not0, andpDatais notNULL,pDatamust be a valid pointer to an array ofpDataSizebytes -
shadermust have been created, allocated, or retrieved fromdevice
Return Codes
See Also
Arguments
| :: 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
pStagesmust be unique -
pStagesmust not containSHADER_STAGE_ALL_GRAPHICSorSHADER_STAGE_ALL -
pStagesmust not containSHADER_STAGE_RAYGEN_BIT_KHR,SHADER_STAGE_ANY_HIT_BIT_KHR,SHADER_STAGE_CLOSEST_HIT_BIT_KHR,SHADER_STAGE_MISS_BIT_KHR,SHADER_STAGE_INTERSECTION_BIT_KHR, orSHADER_STAGE_CALLABLE_BIT_KHR -
pStagesmust not containSHADER_STAGE_SUBPASS_SHADING_BIT_HUAWEI -
pStagesmust not containSHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI - For each element of
pStages, ifpShadersis notNULL, and the element of thepShadersarray with the same index is notNULL_HANDLE, it must have been created with astageequal to the corresponding element ofpStages - If
pStagescontains bothSHADER_STAGE_TASK_BIT_EXTandSHADER_STAGE_VERTEX_BIT, andpShadersis notNULL, and the same index inpShadersasSHADER_STAGE_TASK_BIT_EXTinpStagesis notNULL_HANDLE, the same index inpShadersasSHADER_STAGE_VERTEX_BITinpStagesmust beNULL_HANDLE - If
pStagescontains bothSHADER_STAGE_MESH_BIT_EXTandSHADER_STAGE_VERTEX_BIT, andpShadersis notNULL, and the same index inpShadersasSHADER_STAGE_MESH_BIT_EXTinpStagesis notNULL_HANDLE, the same index inpShadersasSHADER_STAGE_VERTEX_BITinpStagesmust beNULL_HANDLE - If the
tessellationShader
feature is not enabled, and
pStagescontainsSHADER_STAGE_TESSELLATION_CONTROL_BITorSHADER_STAGE_TESSELLATION_EVALUATION_BIT, andpShadersis notNULL, the same index or indices inpShadersmust beNULL_HANDLE - If the
geometryShader
feature is not enabled, and
pStagescontainsSHADER_STAGE_GEOMETRY_BIT, andpShadersis notNULL, the same index inpShadersmust beNULL_HANDLE - If the
taskShader
feature is not enabled, and
pStagescontainsSHADER_STAGE_TASK_BIT_EXT, andpShadersis notNULL, the same index inpShadersmust beNULL_HANDLE - If the
meshShader
feature is not enabled, and
pStagescontainsSHADER_STAGE_MESH_BIT_EXT, andpShadersis notNULL, the same index inpShadersmust beNULL_HANDLE - If
pStagescontainsSHADER_STAGE_COMPUTE_BIT, theCommandPoolthatcommandBufferwas allocated from must support compute operations - If
pStagescontainsSHADER_STAGE_VERTEX_BIT,SHADER_STAGE_TESSELLATION_CONTROL_BIT,SHADER_STAGE_TESSELLATION_EVALUATION_BIT,SHADER_STAGE_GEOMETRY_BIT, orSHADER_STAGE_FRAGMENT_BIT, theCommandPoolthatcommandBufferwas allocated from must support graphics operations - If
pStagescontainsSHADER_STAGE_MESH_BIT_EXTorSHADER_STAGE_TASK_BIT_EXT, theCommandPoolthatcommandBufferwas allocated from must support graphics operations
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
pStagesmust be a valid pointer to an array ofstageCountvalidShaderStageFlagBitsvalues - If
pShadersis notNULL,pShadersmust be a valid pointer to an array ofstageCountvalid orNULL_HANDLEShaderEXThandles -
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must support graphics, or compute operations - This command must only be called outside of a video coding scope
-
stageCountmust be greater than0 - Both of
commandBuffer, and the elements ofpShadersthat are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the sameDevice
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | 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
Constructors
| PhysicalDeviceShaderObjectFeaturesEXT | |
Fields
| |
Instances
data PhysicalDeviceShaderObjectPropertiesEXT Source #
VkPhysicalDeviceShaderObjectPropertiesEXT - Structure describing shader object properties supported by an implementation
Description
The purpose and usage of the values of this structure are described in greater detail in Binary Shader Compatibility.
If the PhysicalDeviceShaderObjectPropertiesEXT structure is included
in the pNext chain of the
PhysicalDeviceProperties2
structure passed to
getPhysicalDeviceProperties2,
it is filled in with each corresponding implementation-dependent
property.
Valid Usage (Implicit)
See Also
Constructors
| PhysicalDeviceShaderObjectPropertiesEXT | |
Fields
| |
Instances
data ShaderCreateInfoEXT (es :: [Type]) Source #
VkShaderCreateInfoEXT - Structure specifying parameters of a newly created shader
Valid Usage
- If
codeTypeisSHADER_CODE_TYPE_SPIRV_EXT,codeSizemust be a multiple of 4
- If
codeTypeisSHADER_CODE_TYPE_SPIRV_EXT,pCodemust point to valid SPIR-V code, formatted and packed as described by the Khronos SPIR-V Specification - If
codeTypeisSHADER_CODE_TYPE_SPIRV_EXT,pCodemust adhere to the validation rules described by the Validation Rules within a Module section of the SPIR-V Environment appendix - If
codeTypeisSHADER_CODE_TYPE_SPIRV_EXT,pCodemust declare theShadercapability for SPIR-V code - If
codeTypeisSHADER_CODE_TYPE_SPIRV_EXT,pCodemust not declare any capability that is not supported by the API, as described by the Capabilities section of the SPIR-V Environment appendix - If
codeTypeisSHADER_CODE_TYPE_SPIRV_EXT, andpCodedeclares any of the capabilities listed in the SPIR-V Environment appendix, one of the corresponding requirements must be satisfied - If
codeTypeisSHADER_CODE_TYPE_SPIRV_EXT,pCodemust not declare any SPIR-V extension that is not supported by the API, as described by the Extension section of the SPIR-V Environment appendix - If
codeTypeisSHADER_CODE_TYPE_SPIRV_EXT, andpCodedeclares any of the SPIR-V extensions listed in the SPIR-V Environment appendix, one of the corresponding requirements must be satisfied - If
stageis notSHADER_STAGE_TASK_BIT_EXT,SHADER_STAGE_MESH_BIT_EXT,SHADER_STAGE_VERTEX_BIT,SHADER_STAGE_TESSELLATION_CONTROL_BIT,SHADER_STAGE_TESSELLATION_EVALUATION_BIT,SHADER_STAGE_GEOMETRY_BIT, orSHADER_STAGE_FRAGMENT_BIT,flagsmust not includeSHADER_CREATE_LINK_STAGE_BIT_EXT - If
stageis notSHADER_STAGE_FRAGMENT_BIT,flagsmust not includeSHADER_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_EXT - If the
attachmentFragmentShadingRate
feature is not enabled,
flagsmust not includeSHADER_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_EXT - If
stageis notSHADER_STAGE_FRAGMENT_BIT,flagsmust not includeSHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT - If the
fragmentDensityMap
feature is not enabled,
flagsmust not includeSHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT - If
flagsincludesSHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT, the subgroupSizeControl feature must be enabled - If
flagsincludesSHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT, the computeFullSubgroups feature must be enabled - If
flagsincludesSHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT,stagemust be one ofSHADER_STAGE_MESH_BIT_EXT,SHADER_STAGE_TASK_BIT_EXT, orSHADER_STAGE_COMPUTE_BIT - If
stageis notSHADER_STAGE_COMPUTE_BIT,flagsmust not includeSHADER_CREATE_DISPATCH_BASE_BIT_EXT - If
stageis notSHADER_STAGE_MESH_BIT_EXT,flagsmust not includeSHADER_CREATE_NO_TASK_SHADER_BIT_EXT - If
flagsincludes bothSHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXTandSHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT, the local workgroup size in the X dimension of the shader must be a multiple of maxSubgroupSize - If
flagsincludesSHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXTbut notSHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXTand noShaderRequiredSubgroupSizeCreateInfoEXTstructure is included in thepNextchain, the local workgroup size in the X dimension of the shader must be a multiple of subgroupSize -
stagemust not beSHADER_STAGE_ALL_GRAPHICSorSHADER_STAGE_ALL - If the
tessellationShader
feature is not enabled,
stagemust not beSHADER_STAGE_TESSELLATION_CONTROL_BITorSHADER_STAGE_TESSELLATION_EVALUATION_BIT - If the
geometryShader
feature is not enabled,
stagemust not beSHADER_STAGE_GEOMETRY_BIT - If the
taskShader
feature is not enabled,
stagemust not beSHADER_STAGE_TASK_BIT_EXT - If the
meshShader
feature is not enabled,
stagemust not beSHADER_STAGE_MESH_BIT_EXT -
stagemust not beSHADER_STAGE_SUBPASS_SHADING_BIT_HUAWEI -
stagemust not beSHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI - If
stageisSHADER_STAGE_VERTEX_BIT,nextStagemust not include any bits other thanSHADER_STAGE_TESSELLATION_CONTROL_BIT,SHADER_STAGE_GEOMETRY_BIT, andSHADER_STAGE_FRAGMENT_BIT - If the
tessellationShader
feature is not enabled,
nextStagemust not includeSHADER_STAGE_TESSELLATION_CONTROL_BITorSHADER_STAGE_TESSELLATION_EVALUATION_BIT - If the
geometryShader
feature is not enabled,
nextStagemust not includeSHADER_STAGE_GEOMETRY_BIT - If
stageisSHADER_STAGE_TESSELLATION_CONTROL_BIT,nextStagemust not include any bits other thanSHADER_STAGE_TESSELLATION_EVALUATION_BIT - If
stageisSHADER_STAGE_TESSELLATION_EVALUATION_BIT,nextStagemust not include any bits other thanSHADER_STAGE_GEOMETRY_BITandSHADER_STAGE_FRAGMENT_BIT - If
stageisSHADER_STAGE_GEOMETRY_BIT,nextStagemust not include any bits other thanSHADER_STAGE_FRAGMENT_BIT - If
stageisSHADER_STAGE_FRAGMENT_BITorSHADER_STAGE_COMPUTE_BIT,nextStagemust be 0 - If
stageisSHADER_STAGE_TASK_BIT_EXT,nextStagemust not include any bits other thanSHADER_STAGE_MESH_BIT_EXT - If
stageisSHADER_STAGE_MESH_BIT_EXT,nextStagemust not include any bits other thanSHADER_STAGE_FRAGMENT_BIT - If
codeTypeisSHADER_CODE_TYPE_SPIRV_EXT,pNamemust be the name of anOpEntryPointinpCodewith an execution model that matchesstage - If
codeTypeisSHADER_CODE_TYPE_BINARY_EXT,pCodemust be aligned to16bytes - If
codeTypeisSHADER_CODE_TYPE_SPIRV_EXT,pCodemust be aligned to4bytes - If
codeTypeisSHADER_CODE_TYPE_SPIRV_EXT, and the identified entry point includes any variable in its interface that is declared with theClipDistanceBuiltIndecoration, that variable must not have an array size greater thanPhysicalDeviceLimits::maxClipDistances - If
codeTypeisSHADER_CODE_TYPE_SPIRV_EXT, and the identified entry point includes any variable in its interface that is declared with theCullDistanceBuiltIndecoration, that variable must not have an array size greater thanPhysicalDeviceLimits::maxCullDistances - If
codeTypeisSHADER_CODE_TYPE_SPIRV_EXT, and the identified entry point includes any variables in its interface that are declared with theClipDistanceorCullDistanceBuiltIndecoration, those variables must not have array sizes which sum to more thanPhysicalDeviceLimits::maxCombinedClipAndCullDistances - If
codeTypeisSHADER_CODE_TYPE_SPIRV_EXT, and the identified entry point includes any variable in its interface that is declared with theSampleMaskBuiltIndecoration, that variable must not have an array size greater thanPhysicalDeviceLimits::maxSampleMaskWords - If
codeTypeisSHADER_CODE_TYPE_SPIRV_EXT, andstageisSHADER_STAGE_VERTEX_BIT, the identified entry point must not include any input variable in its interface that is decorated withCullDistance - If
codeTypeisSHADER_CODE_TYPE_SPIRV_EXT, andstageisSHADER_STAGE_TESSELLATION_CONTROL_BITorSHADER_STAGE_TESSELLATION_EVALUATION_BIT, and the identified entry point has anOpExecutionModeinstruction specifying a patch size withOutputVertices, the patch size must be greater than0and less than or equal toPhysicalDeviceLimits::maxTessellationPatchSize - If
codeTypeisSHADER_CODE_TYPE_SPIRV_EXT, andstageisSHADER_STAGE_GEOMETRY_BIT, the identified entry point must have anOpExecutionModeinstruction specifying a maximum output vertex count that is greater than0and less than or equal toPhysicalDeviceLimits::maxGeometryOutputVertices - If
codeTypeisSHADER_CODE_TYPE_SPIRV_EXT, andstageisSHADER_STAGE_GEOMETRY_BIT, the identified entry point must have anOpExecutionModeinstruction specifying an invocation count that is greater than0and less than or equal toPhysicalDeviceLimits::maxGeometryShaderInvocations - If
codeTypeisSHADER_CODE_TYPE_SPIRV_EXT, andstageis a pre-rasterization shader stage, and the identified entry point writes toLayerfor any primitive, it must write the same value toLayerfor all vertices of a given primitive - If
codeTypeisSHADER_CODE_TYPE_SPIRV_EXT, andstageis a pre-rasterization shader stage, and the identified entry point writes toViewportIndexfor any primitive, it must write the same value toViewportIndexfor all vertices of a given primitive - If
codeTypeisSHADER_CODE_TYPE_SPIRV_EXT, andstageisSHADER_STAGE_FRAGMENT_BIT, the identified entry point must not include any output variables in its interface decorated withCullDistance - If
codeTypeisSHADER_CODE_TYPE_SPIRV_EXT, andstageisSHADER_STAGE_FRAGMENT_BIT, and the identified entry point writes toFragDepthin any execution path, all execution paths that are not exclusive to helper invocations must either discard the fragment, or write or initialize the value ofFragDepth - If
codeTypeisSHADER_CODE_TYPE_SPIRV_EXT, the shader code inpCodemust be valid as described by the Khronos SPIR-V Specification after applying the specializations provided inpSpecializationInfo, if any, and then converting all specialization constants into fixed constants - If
codeTypeisSHADER_CODE_TYPE_SPIRV_EXT, andstageisSHADER_STAGE_TESSELLATION_EVALUATION_BIT,pCodemust contain anOpExecutionModeinstruction specifying the type of subdivision - If
codeTypeisSHADER_CODE_TYPE_SPIRV_EXT, andstageisSHADER_STAGE_TESSELLATION_EVALUATION_BIT,pCodemust contain anOpExecutionModeinstruction specifying the orientation of triangles generated by the tessellator - If
codeTypeisSHADER_CODE_TYPE_SPIRV_EXT, andstageisSHADER_STAGE_TESSELLATION_EVALUATION_BIT,pCodemust contain anOpExecutionModeinstruction specifying the spacing of segments on the edges of tessellated primitives - If
codeTypeisSHADER_CODE_TYPE_SPIRV_EXT, andstageisSHADER_STAGE_TESSELLATION_EVALUATION_BIT,pCodemust contain anOpExecutionModeinstruction specifying the output patch size
Valid Usage (Implicit)
-
sTypemust beSTRUCTURE_TYPE_SHADER_CREATE_INFO_EXT
-
pNextmust beNULLor a pointer to a valid instance ofPipelineShaderStageRequiredSubgroupSizeCreateInfo - The
sTypevalue of each struct in thepNextchain must be unique -
flagsmust be a valid combination ofShaderCreateFlagBitsEXTvalues -
stagemust be a validShaderStageFlagBitsvalue -
nextStagemust be a valid combination ofShaderStageFlagBitsvalues -
codeTypemust be a validShaderCodeTypeEXTvalue -
pCodemust be a valid pointer to an array ofcodeSizebytes - If
pNameis notNULL,pNamemust be a null-terminated UTF-8 string - If
setLayoutCountis not0, andpSetLayoutsis notNULL,pSetLayoutsmust be a valid pointer to an array ofsetLayoutCountvalidDescriptorSetLayouthandles - If
pushConstantRangeCountis not0, andpPushConstantRangesis notNULL,pPushConstantRangesmust be a valid pointer to an array ofpushConstantRangeCountvalidPushConstantRangestructures - If
pSpecializationInfois notNULL,pSpecializationInfomust be a valid pointer to a validSpecializationInfostructure -
codeSizemust be greater than0
See Also
VK_EXT_shader_object,
DescriptorSetLayout,
PushConstantRange, ShaderCodeTypeEXT,
ShaderCreateFlagsEXT,
ShaderStageFlagBits,
ShaderStageFlags,
SpecializationInfo,
StructureType, createShadersEXT
Constructors
| ShaderCreateInfoEXT | |
Fields
| |
Instances
newtype ShaderCreateFlagBitsEXT Source #
VkShaderCreateFlagBitsEXT - Bitmask controlling how a shader object is created
See Also
Constructors
| ShaderCreateFlagBitsEXT Flags |
Bundled Patterns
Instances
newtype ShaderCodeTypeEXT Source #
Constructors
| ShaderCodeTypeEXT Int32 |
Bundled Patterns
| pattern SHADER_CODE_TYPE_BINARY_EXT :: ShaderCodeTypeEXT |
|
| pattern SHADER_CODE_TYPE_SPIRV_EXT :: ShaderCodeTypeEXT |
|
Instances
type ShaderRequiredSubgroupSizeCreateInfoEXT = PipelineShaderStageRequiredSubgroupSizeCreateInfo Source #
type EXT_SHADER_OBJECT_SPEC_VERSION = 1 Source #
pattern EXT_SHADER_OBJECT_SPEC_VERSION :: 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 # | |
| HasObjectType ShaderEXT Source # | |
Defined in Vulkan.Extensions.Handles Methods objectTypeAndHandle :: ShaderEXT -> (ObjectType, Word64) Source # | |
| IsHandle ShaderEXT Source # | |
Defined in Vulkan.Extensions.Handles | |
| Zero ShaderEXT Source # | |
Defined in Vulkan.Extensions.Handles | |
data ViewportSwizzleNV Source #
VkViewportSwizzleNV - Structure specifying a viewport swizzle
Valid Usage (Implicit)
See Also
VK_NV_viewport_swizzle,
PipelineViewportSwizzleStateCreateInfoNV,
ViewportCoordinateSwizzleNV,
cmdSetViewportSwizzleNV
Constructors
| ViewportSwizzleNV | |
Fields
| |
Instances
data ColorBlendEquationEXT Source #
VkColorBlendEquationEXT - Structure specifying the color blend factors and operations for an attachment
Valid Usage
- If the
dualSrcBlend
feature is not enabled,
srcColorBlendFactormust not beBLEND_FACTOR_SRC1_COLOR,BLEND_FACTOR_ONE_MINUS_SRC1_COLOR,BLEND_FACTOR_SRC1_ALPHA, orBLEND_FACTOR_ONE_MINUS_SRC1_ALPHA
- If the
dualSrcBlend
feature is not enabled,
dstColorBlendFactormust not beBLEND_FACTOR_SRC1_COLOR,BLEND_FACTOR_ONE_MINUS_SRC1_COLOR,BLEND_FACTOR_SRC1_ALPHA, orBLEND_FACTOR_ONE_MINUS_SRC1_ALPHA - If the
dualSrcBlend
feature is not enabled,
srcAlphaBlendFactormust not beBLEND_FACTOR_SRC1_COLOR,BLEND_FACTOR_ONE_MINUS_SRC1_COLOR,BLEND_FACTOR_SRC1_ALPHA, orBLEND_FACTOR_ONE_MINUS_SRC1_ALPHA - If the
dualSrcBlend
feature is not enabled,
dstAlphaBlendFactormust not beBLEND_FACTOR_SRC1_COLOR,BLEND_FACTOR_ONE_MINUS_SRC1_COLOR,BLEND_FACTOR_SRC1_ALPHA, orBLEND_FACTOR_ONE_MINUS_SRC1_ALPHA -
colorBlendOpandalphaBlendOpmust not beBLEND_OP_ZERO_EXT,BLEND_OP_SRC_EXT,BLEND_OP_DST_EXT,BLEND_OP_SRC_OVER_EXT,BLEND_OP_DST_OVER_EXT,BLEND_OP_SRC_IN_EXT,BLEND_OP_DST_IN_EXT,BLEND_OP_SRC_OUT_EXT,BLEND_OP_DST_OUT_EXT,BLEND_OP_SRC_ATOP_EXT,BLEND_OP_DST_ATOP_EXT,BLEND_OP_XOR_EXT,BLEND_OP_MULTIPLY_EXT,BLEND_OP_SCREEN_EXT,BLEND_OP_OVERLAY_EXT,BLEND_OP_DARKEN_EXT,BLEND_OP_LIGHTEN_EXT,BLEND_OP_COLORDODGE_EXT,BLEND_OP_COLORBURN_EXT,BLEND_OP_HARDLIGHT_EXT,BLEND_OP_SOFTLIGHT_EXT,BLEND_OP_DIFFERENCE_EXT,BLEND_OP_EXCLUSION_EXT,BLEND_OP_INVERT_EXT,BLEND_OP_INVERT_RGB_EXT,BLEND_OP_LINEARDODGE_EXT,BLEND_OP_LINEARBURN_EXT,BLEND_OP_VIVIDLIGHT_EXT,BLEND_OP_LINEARLIGHT_EXT,BLEND_OP_PINLIGHT_EXT,BLEND_OP_HARDMIX_EXT,BLEND_OP_HSL_HUE_EXT,BLEND_OP_HSL_SATURATION_EXT,BLEND_OP_HSL_COLOR_EXT,BLEND_OP_HSL_LUMINOSITY_EXT,BLEND_OP_PLUS_EXT,BLEND_OP_PLUS_CLAMPED_EXT,BLEND_OP_PLUS_CLAMPED_ALPHA_EXT,BLEND_OP_PLUS_DARKER_EXT,BLEND_OP_MINUS_EXT,BLEND_OP_MINUS_CLAMPED_EXT,BLEND_OP_CONTRAST_EXT,BLEND_OP_INVERT_OVG_EXT,BLEND_OP_RED_EXT,BLEND_OP_GREEN_EXT, orBLEND_OP_BLUE_EXT -
If the
VK_KHR_portability_subsetextension is enabled, andPhysicalDevicePortabilitySubsetFeaturesKHR::constantAlphaColorBlendFactorsisFALSE,srcColorBlendFactormust not beBLEND_FACTOR_CONSTANT_ALPHAorBLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA -
If the
VK_KHR_portability_subsetextension is enabled, andPhysicalDevicePortabilitySubsetFeaturesKHR::constantAlphaColorBlendFactorsisFALSE,dstColorBlendFactormust not beBLEND_FACTOR_CONSTANT_ALPHAorBLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA
Valid Usage (Implicit)
-
srcColorBlendFactormust be a validBlendFactorvalue
-
dstColorBlendFactormust be a validBlendFactorvalue -
colorBlendOpmust be a validBlendOpvalue -
srcAlphaBlendFactormust be a validBlendFactorvalue -
dstAlphaBlendFactormust be a validBlendFactorvalue -
alphaBlendOpmust be a validBlendOpvalue
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
BlendFactor,
BlendOp, cmdSetColorBlendEquationEXT
Constructors
| ColorBlendEquationEXT | |
Fields
| |
Instances
data ColorBlendAdvancedEXT Source #
VkColorBlendAdvancedEXT - Structure specifying the advanced blend operation parameters for an attachment
Valid Usage
- If the
non-premultiplied source color
property is not supported,
srcPremultipliedmust beTRUE
- If the
non-premultiplied destination color
property is not supported,
dstPremultipliedmust beTRUE - If the
correlated overlap
property is not supported,
blendOverlapmust beBLEND_OVERLAP_UNCORRELATED_EXT
Valid Usage (Implicit)
-
advancedBlendOpmust be a validBlendOpvalue
-
blendOverlapmust be a validBlendOverlapEXTvalue
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
BlendOp,
BlendOverlapEXT,
Bool32, cmdSetColorBlendAdvancedEXT
Constructors
| ColorBlendAdvancedEXT | |
Fields
| |
Instances
data VertexInputBindingDescription2EXT Source #
VkVertexInputBindingDescription2EXT - Structure specifying the extended vertex input binding description
Valid Usage
-
bindingmust be less thanPhysicalDeviceLimits::maxVertexInputBindings
-
stridemust be less than or equal toPhysicalDeviceLimits::maxVertexInputBindingStride - If the
vertexAttributeInstanceRateZeroDivisor
feature is not enabled,
divisormust not be0 - If the
vertexAttributeInstanceRateDivisor
feature is not enabled,
divisormust be1 -
divisormust be a value between0andPhysicalDeviceVertexAttributeDivisorPropertiesEXT::maxVertexAttribDivisor, inclusive - If
divisoris not1theninputRatemust be of typeVERTEX_INPUT_RATE_INSTANCE
Valid Usage (Implicit)
-
sTypemust beSTRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT
-
inputRatemust be a validVertexInputRatevalue
See Also
VK_EXT_shader_object,
VK_EXT_vertex_input_dynamic_state,
StructureType,
VertexInputRate,
cmdSetVertexInputEXT
Constructors
| VertexInputBindingDescription2EXT | |
Fields
| |
Instances
data VertexInputAttributeDescription2EXT Source #
VkVertexInputAttributeDescription2EXT - Structure specifying the extended vertex input attribute description
Valid Usage
-
locationmust be less thanPhysicalDeviceLimits::maxVertexInputAttributes
-
bindingmust be less thanPhysicalDeviceLimits::maxVertexInputBindings -
offsetmust be less than or equal toPhysicalDeviceLimits::maxVertexInputAttributeOffset - The
format features
of
formatmust containFORMAT_FEATURE_VERTEX_BUFFER_BIT -
If the
VK_KHR_portability_subsetextension is enabled, andPhysicalDevicePortabilitySubsetFeaturesKHR::vertexAttributeAccessBeyondStrideisFALSE, the sum ofoffsetplus the size of the vertex attribute data described byformatmust not be greater thanstridein theVertexInputBindingDescription2EXTreferenced inbinding
Valid Usage (Implicit)
-
sTypemust beSTRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT
-
formatmust be a validFormatvalue
See Also
VK_EXT_shader_object,
VK_EXT_vertex_input_dynamic_state,
Format,
StructureType,
cmdSetVertexInputEXT
Constructors
| VertexInputAttributeDescription2EXT | |
Fields
| |
Instances
cmdSetPatchControlPointsEXT Source #
Arguments
| :: 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
At least one of the following must be true:
- The extendedDynamicState2PatchControlPoints feature is enabled
- The shaderObject feature is enabled
-
patchControlPointsmust be greater than zero and less than or equal toPhysicalDeviceLimits::maxTessellationPatchSize
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must support graphics operations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | Graphics | State |
See Also
VK_EXT_extended_dynamic_state2,
VK_EXT_shader_object,
CommandBuffer
Arguments
| :: 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
At least one of the following must be true:
- The extendedDynamicState2LogicOp feature is enabled
- The shaderObject feature is enabled
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
logicOpmust be a validLogicOpvalue -
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must support graphics operations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | Graphics | State |
See Also
VK_EXT_extended_dynamic_state2,
VK_EXT_shader_object,
CommandBuffer,
LogicOp
cmdSetTessellationDomainOriginEXT Source #
Arguments
| :: 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
At least one of the following must be true:
- The extendedDynamicState3TessellationDomainOrigin feature is enabled
- The shaderObject feature is enabled
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
domainOriginmust be a validTessellationDomainOriginvalue -
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must support graphics operations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | Graphics | State |
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
CommandBuffer,
TessellationDomainOrigin
cmdSetDepthClampEnableEXT Source #
Arguments
| :: 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
At least one of the following must be true:
- The extendedDynamicState3DepthClampEnable feature is enabled
- The shaderObject feature is enabled
- If the
depthClamp
feature is not enabled,
depthClampEnablemust beFALSE
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must support graphics operations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | Graphics | State |
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
Bool32,
CommandBuffer
Arguments
| :: 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
At least one of the following must be true:
- The extendedDynamicState3PolygonMode feature is enabled
- The shaderObject feature is enabled
- If the
fillModeNonSolid
feature is not enabled,
polygonModemust bePOLYGON_MODE_FILLorPOLYGON_MODE_FILL_RECTANGLE_NV - If the
VK_NV_fill_rectangleextension is not enabled,polygonModemust not bePOLYGON_MODE_FILL_RECTANGLE_NV
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
polygonModemust be a validPolygonModevalue -
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must support graphics operations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | Graphics | State |
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
CommandBuffer,
PolygonMode
cmdSetRasterizationSamplesEXT Source #
Arguments
| :: 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
At least one of the following must be true:
- The extendedDynamicState3RasterizationSamples feature is enabled
- The shaderObject feature is enabled
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
rasterizationSamplesmust be a validSampleCountFlagBitsvalue -
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must support graphics operations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | Graphics | State |
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
CommandBuffer,
SampleCountFlagBits
Arguments
| :: 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
At least one of the following must be true:
- The extendedDynamicState3SampleMask feature is enabled
- The shaderObject feature is enabled
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
samplesmust be a validSampleCountFlagBitsvalue -
pSampleMaskmust be a valid pointer to an array of \(\lceil{\mathit{samples} \over 32}\rceil\)SampleMaskvalues -
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must support graphics operations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | Graphics | State |
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
CommandBuffer,
SampleCountFlagBits,
SampleMask
cmdSetAlphaToCoverageEnableEXT Source #
Arguments
| :: 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
At least one of the following must be true:
- The extendedDynamicState3AlphaToCoverageEnable feature is enabled
- The shaderObject feature is enabled
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must support graphics operations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | Graphics | State |
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
Bool32,
CommandBuffer
cmdSetAlphaToOneEnableEXT Source #
Arguments
| :: 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
At least one of the following must be true:
- The extendedDynamicState3AlphaToOneEnable feature is enabled
- The shaderObject feature is enabled
- If the
alphaToOne
feature is not enabled,
alphaToOneEnablemust beFALSE
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must support graphics operations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | Graphics | State |
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
Bool32,
CommandBuffer
cmdSetLogicOpEnableEXT Source #
Arguments
| :: 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
At least one of the following must be true:
- The extendedDynamicState3LogicOpEnable feature is enabled
- The shaderObject feature is enabled
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must support graphics operations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | Graphics | State |
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
Bool32,
CommandBuffer
cmdSetColorBlendEnableEXT Source #
Arguments
| :: 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
At least one of the following must be true:
- The extendedDynamicState3ColorBlendEnable feature is enabled
- The shaderObject feature is enabled
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
pColorBlendEnablesmust be a valid pointer to an array ofattachmentCountBool32values -
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must support graphics operations - This command must only be called outside of a video coding scope
-
attachmentCountmust be greater than0
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | Graphics | State |
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
Bool32,
CommandBuffer
cmdSetColorBlendEquationEXT Source #
Arguments
| :: 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
At least one of the following must be true:
- The extendedDynamicState3ColorBlendEquation feature is enabled
- The shaderObject feature is enabled
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
pColorBlendEquationsmust be a valid pointer to an array ofattachmentCountvalidColorBlendEquationEXTstructures -
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must support graphics operations - This command must only be called outside of a video coding scope
-
attachmentCountmust be greater than0
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | Graphics | State |
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
ColorBlendEquationEXT, CommandBuffer
cmdSetColorWriteMaskEXT Source #
Arguments
| :: 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
At least one of the following must be true:
- The extendedDynamicState3ColorWriteMask feature is enabled
- The shaderObject feature is enabled
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
pColorWriteMasksmust be a valid pointer to an array ofattachmentCountvalid combinations ofColorComponentFlagBitsvalues -
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must support graphics operations - This command must only be called outside of a video coding scope
-
attachmentCountmust be greater than0
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | Graphics | State |
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
ColorComponentFlags,
CommandBuffer
cmdSetRasterizationStreamEXT Source #
Arguments
| :: 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
At least one of the following must be true:
- The extendedDynamicState3RasterizationStream feature is enabled
- The shaderObject feature is enabled
- The transformFeedback feature must be enabled
-
rasterizationStreammust be less thanPhysicalDeviceTransformFeedbackPropertiesEXT::maxTransformFeedbackStreams -
rasterizationStreammust be zero ifPhysicalDeviceTransformFeedbackPropertiesEXT::transformFeedbackRasterizationStreamSelectisFALSE
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must support graphics operations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | Graphics | State |
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
CommandBuffer
cmdSetConservativeRasterizationModeEXT Source #
Arguments
| :: 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
At least one of the following must be true:
- The extendedDynamicState3ConservativeRasterizationMode feature is enabled
- The shaderObject feature is enabled
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
conservativeRasterizationModemust be a validConservativeRasterizationModeEXTvalue -
commandBuffermust be in the recording state -
The
CommandPoolthatcommandBufferwas allocated from must support graphics operations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | Graphics | State |
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
CommandBuffer,
ConservativeRasterizationModeEXT
cmdSetExtraPrimitiveOverestimationSizeEXT Source #
Arguments
| :: 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
At least one of the following must be true:
- The extendedDynamicState3ExtraPrimitiveOverestimationSize feature is enabled
- The shaderObject feature is enabled
-
extraPrimitiveOverestimationSizemust be in the range of0.0toPhysicalDeviceConservativeRasterizationPropertiesEXT::maxExtraPrimitiveOverestimationSizeinclusive
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
commandBuffermust be in the recording state -
The
CommandPoolthatcommandBufferwas allocated from must support graphics operations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | Graphics | State |
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
CommandBuffer
cmdSetDepthClipEnableEXT Source #
Arguments
| :: 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
At least one of the following must be true:
- The extendedDynamicState3DepthClipEnable feature is enabled
- The shaderObject feature is enabled
- The depthClipEnable feature must be enabled
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must support graphics operations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | Graphics | State |
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
Bool32,
CommandBuffer
cmdSetSampleLocationsEnableEXT Source #
Arguments
| :: 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
At least one of the following must be true:
- The extendedDynamicState3SampleLocationsEnable feature is enabled
- The shaderObject feature is enabled
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must support graphics operations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | Graphics | State |
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
Bool32,
CommandBuffer
cmdSetColorBlendAdvancedEXT Source #
Arguments
| :: 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
At least one of the following must be true:
- The extendedDynamicState3ColorBlendAdvanced feature is enabled
- The shaderObject feature is enabled
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
pColorBlendAdvancedmust be a valid pointer to an array ofattachmentCountvalidColorBlendAdvancedEXTstructures -
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must support graphics operations - This command must only be called outside of a video coding scope
-
attachmentCountmust be greater than0
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | Graphics | State |
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
ColorBlendAdvancedEXT, CommandBuffer
cmdSetProvokingVertexModeEXT Source #
Arguments
| :: 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
At least one of the following must be true:
- The extendedDynamicState3ProvokingVertexMode feature is enabled
- The shaderObject feature is enabled
- If
provokingVertexModeisPROVOKING_VERTEX_MODE_LAST_VERTEX_EXT, then the provokingVertexLast feature must be enabled
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
provokingVertexModemust be a validProvokingVertexModeEXTvalue -
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must support graphics operations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | Graphics | State |
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
CommandBuffer,
ProvokingVertexModeEXT
cmdSetLineRasterizationModeEXT Source #
Arguments
| :: 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
At least one of the following must be true:
- The extendedDynamicState3LineRasterizationMode feature is enabled
- The shaderObject feature is enabled
-
If
lineRasterizationModeisLINE_RASTERIZATION_MODE_RECTANGULAR_EXT, then the rectangularLines feature must be enabled -
If
lineRasterizationModeisLINE_RASTERIZATION_MODE_BRESENHAM_EXT, then the bresenhamLines feature must be enabled -
If
lineRasterizationModeisLINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT, then the smoothLines feature must be enabled
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
lineRasterizationModemust be a validLineRasterizationModeEXTvalue -
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must support graphics operations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | Graphics | State |
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
CommandBuffer,
LineRasterizationModeEXT
cmdSetLineStippleEnableEXT Source #
Arguments
| :: 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
At least one of the following must be true:
- The extendedDynamicState3LineStippleEnable feature is enabled
- The shaderObject feature is enabled
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must support graphics operations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | Graphics | State |
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
Bool32,
CommandBuffer
cmdSetDepthClipNegativeOneToOneEXT Source #
Arguments
| :: 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
At least one of the following must be true:
- The extendedDynamicState3DepthClipNegativeOneToOne feature is enabled
- The shaderObject feature is enabled
- The depthClipControl feature must be enabled
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
commandBuffermust be in the recording state -
The
CommandPoolthatcommandBufferwas allocated from must support graphics operations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | Graphics | State |
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
Bool32,
CommandBuffer
cmdSetViewportWScalingEnableNV Source #
Arguments
| :: 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
At least one of the following must be true:
- The extendedDynamicState3ViewportWScalingEnable feature is enabled
- The shaderObject feature is enabled
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must support graphics operations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | Graphics | State |
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
VK_NV_clip_space_w_scaling,
Bool32,
CommandBuffer
cmdSetViewportSwizzleNV Source #
Arguments
| :: 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
At least one of the following must be true:
- The extendedDynamicState3ViewportSwizzle feature is enabled
- The shaderObject feature is enabled
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
pViewportSwizzlesmust be a valid pointer to an array ofviewportCountvalidViewportSwizzleNVstructures -
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must support graphics operations - This command must only be called outside of a video coding scope
-
viewportCountmust be greater than0
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | Graphics | State |
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
VK_NV_viewport_swizzle,
CommandBuffer,
ViewportSwizzleNV
cmdSetCoverageToColorEnableNV Source #
Arguments
| :: 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
At least one of the following must be true:
- The extendedDynamicState3CoverageToColorEnable feature is enabled
- The shaderObject feature is enabled
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must support graphics operations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | Graphics | State |
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
VK_NV_fragment_coverage_to_color,
Bool32,
CommandBuffer
cmdSetCoverageToColorLocationNV Source #
Arguments
| :: 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
At least one of the following must be true:
- The extendedDynamicState3CoverageToColorLocation feature is enabled
- The shaderObject feature is enabled
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must support graphics operations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | Graphics | State |
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
VK_NV_fragment_coverage_to_color,
CommandBuffer
cmdSetCoverageModulationModeNV Source #
Arguments
| :: 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
At least one of the following must be true:
- The extendedDynamicState3CoverageModulationMode feature is enabled
- The shaderObject feature is enabled
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
coverageModulationModemust be a validCoverageModulationModeNVvalue -
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must support graphics operations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | Graphics | State |
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
VK_NV_framebuffer_mixed_samples,
CommandBuffer,
CoverageModulationModeNV
cmdSetCoverageModulationTableEnableNV Source #
Arguments
| :: 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
At least one of the following must be true:
- The extendedDynamicState3CoverageModulationTableEnable feature is enabled
- The shaderObject feature is enabled
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
commandBuffermust be in the recording state -
The
CommandPoolthatcommandBufferwas allocated from must support graphics operations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | Graphics | State |
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
VK_NV_framebuffer_mixed_samples,
Bool32,
CommandBuffer
cmdSetCoverageModulationTableNV Source #
Arguments
| :: 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
At least one of the following must be true:
- The extendedDynamicState3CoverageModulationTable feature is enabled
- The shaderObject feature is enabled
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
pCoverageModulationTablemust be a valid pointer to an array ofcoverageModulationTableCountfloatvalues -
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must support graphics operations - This command must only be called outside of a video coding scope
-
coverageModulationTableCountmust be greater than0
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | Graphics | State |
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
VK_NV_framebuffer_mixed_samples,
CommandBuffer
cmdSetShadingRateImageEnableNV Source #
Arguments
| :: 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
At least one of the following must be true:
- The extendedDynamicState3ShadingRateImageEnable feature is enabled
- The shaderObject feature is enabled
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must support graphics operations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | Graphics | State |
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
VK_NV_shading_rate_image,
Bool32,
CommandBuffer
cmdSetCoverageReductionModeNV Source #
Arguments
| :: 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
At least one of the following must be true:
- The extendedDynamicState3CoverageReductionMode feature is enabled
- The shaderObject feature is enabled
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
coverageReductionModemust be a validCoverageReductionModeNVvalue -
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must support graphics operations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | Graphics | State |
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
VK_NV_coverage_reduction_mode,
CommandBuffer,
CoverageReductionModeNV
cmdSetRepresentativeFragmentTestEnableNV Source #
Arguments
| :: 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
At least one of the following must be true:
- The extendedDynamicState3RepresentativeFragmentTestEnable feature is enabled
- The shaderObject feature is enabled
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
commandBuffermust be in the recording state -
The
CommandPoolthatcommandBufferwas allocated from must support graphics operations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | Graphics | State |
See Also
VK_EXT_extended_dynamic_state3,
VK_EXT_shader_object,
VK_NV_representative_fragment_test,
Bool32,
CommandBuffer
Arguments
| :: 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
-
vertexBindingDescriptionCountmust be less than or equal toPhysicalDeviceLimits::maxVertexInputBindings -
vertexAttributeDescriptionCountmust be less than or equal toPhysicalDeviceLimits::maxVertexInputAttributes - For every
bindingspecified by each element ofpVertexAttributeDescriptions, aVertexInputBindingDescription2EXTmust exist inpVertexBindingDescriptionswith the same value ofbinding - All
elements of
pVertexBindingDescriptionsmust describe distinct binding numbers - All
elements of
pVertexAttributeDescriptionsmust describe distinct attribute locations
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
If
vertexBindingDescriptionCountis not0,pVertexBindingDescriptionsmust be a valid pointer to an array ofvertexBindingDescriptionCountvalidVertexInputBindingDescription2EXTstructures -
If
vertexAttributeDescriptionCountis not0,pVertexAttributeDescriptionsmust be a valid pointer to an array ofvertexAttributeDescriptionCountvalidVertexInputAttributeDescription2EXTstructures -
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must support graphics operations - This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | 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
Constructors
| ViewportCoordinateSwizzleNV Int32 |
Bundled Patterns
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
Constructors
| BlendOverlapEXT Int32 |
Bundled Patterns
| 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
Constructors
| CoverageModulationModeNV Int32 |
Bundled Patterns
| 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
Constructors
| CoverageReductionModeNV Int32 |
Bundled Patterns
| pattern COVERAGE_REDUCTION_MODE_MERGE_NV :: CoverageReductionModeNV |
|
| pattern COVERAGE_REDUCTION_MODE_TRUNCATE_NV :: CoverageReductionModeNV |
|
Instances
newtype ConservativeRasterizationModeEXT Source #
VkConservativeRasterizationModeEXT - Specify the conservative rasterization mode
See Also
VK_EXT_conservative_rasterization,
PipelineRasterizationConservativeStateCreateInfoEXT,
cmdSetConservativeRasterizationModeEXT
Constructors
| ConservativeRasterizationModeEXT Int32 |
Bundled Patterns
| 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
Constructors
| LineRasterizationModeEXT Int32 |
Bundled Patterns
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
Constructors
| ProvokingVertexModeEXT Int32 |
Bundled Patterns
| 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 #