vulkan-3.26: Bindings to the Vulkan graphics API.
Safe HaskellSafe-Inferred
LanguageHaskell2010

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

VK_KHR_dynamic_rendering      or

Version 1.3

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
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

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

New Enums

New Bitmasks

New Enum Constants

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:

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

Documentation

createShadersEXT Source #

Arguments

:: forall io. MonadIO io 
=> Device

device is the logical device that creates the shader objects.

-> ("createInfos" ::: Vector (SomeStruct ShaderCreateInfoEXT))

pCreateInfos is a pointer to an array of ShaderCreateInfoEXT structures.

-> ("allocator" ::: Maybe AllocationCallbacks)

pAllocator controls host memory allocation as described in the Memory Allocation chapter.

-> 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

Valid Usage (Implicit)

  • device must be a valid Device handle
  • pCreateInfos must be a valid pointer to an array of createInfoCount valid ShaderCreateInfoEXT structures
  • If pAllocator is not NULL, pAllocator must be a valid pointer to a valid AllocationCallbacks structure
  • pShaders must be a valid pointer to an array of createInfoCount ShaderEXT handles
  • createInfoCount must be greater than 0

Return Codes

Success
Failure

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.

destroyShaderEXT Source #

Arguments

:: forall io. MonadIO io 
=> Device

device is the logical device that destroys the shader object.

-> ShaderEXT

shader is the handle of the shader object to destroy.

-> ("allocator" ::: Maybe AllocationCallbacks)

pAllocator controls host memory allocation as described in the Memory Allocation chapter.

-> 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

  • All submitted commands that refer to shader must have completed execution
  • If AllocationCallbacks were provided when shader was created, a compatible set of callbacks must be provided here
  • If no AllocationCallbacks were provided when shader was created, pAllocator must be NULL

Valid Usage (Implicit)

  • device must be a valid Device handle
  • shader must be a valid ShaderEXT handle
  • If pAllocator is not NULL, pAllocator must be a valid pointer to a valid AllocationCallbacks structure
  • shader must have been created, allocated, or retrieved from device

Host Synchronization

  • Host access to shader must be externally synchronized

See Also

VK_EXT_shader_object, AllocationCallbacks, Device, ShaderEXT

getShaderBinaryDataEXT Source #

Arguments

:: forall io. MonadIO io 
=> Device

device is the logical device that shader object was created from.

-> ShaderEXT

shader is the shader object to retrieve binary shader code from.

-> 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

  • If pData is not NULL, it must be aligned to 16 bytes

Valid Usage (Implicit)

  • device must be a valid Device handle
  • shader must be a valid ShaderEXT handle
  • pDataSize must be a valid pointer to a size_t value
  • If the value referenced by pDataSize is not 0, and pData is not NULL, pData must be a valid pointer to an array of pDataSize bytes
  • shader must have been created, allocated, or retrieved from device

Return Codes

Success
Failure

See Also

VK_EXT_shader_object, Device, ShaderEXT

cmdBindShadersEXT Source #

Arguments

:: forall io. MonadIO io 
=> CommandBuffer

commandBuffer is the command buffer that the shader object will be bound to.

-> ("stages" ::: Vector ShaderStageFlagBits)

pStages is a pointer to an array of ShaderStageFlagBits values specifying one stage per array index that is affected by the corresponding value in the pShaders array.

-> ("shaders" ::: Vector ShaderEXT)

pShaders is a pointer to an array of ShaderEXT handles and/or NULL_HANDLE values describing the shader binding operations to be performed on each stage in pStages.

-> 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

Valid Usage (Implicit)

  • pStages must be a valid pointer to an array of stageCount valid ShaderStageFlagBits values
  • If pShaders is not NULL, pShaders must be a valid pointer to an array of stageCount valid or NULL_HANDLE ShaderEXT handles
  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support graphics, or compute operations
  • This command must only be called outside of a video coding scope
  • stageCount must be greater than 0
  • Both of commandBuffer, and the elements of pShaders that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same Device

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
Primary SecondaryBoth Outside Graphics ComputeState

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

VK_EXT_shader_object, Bool32, StructureType

Constructors

PhysicalDeviceShaderObjectFeaturesEXT 

Fields

Instances

Instances details
Storable PhysicalDeviceShaderObjectFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_shader_object

Show PhysicalDeviceShaderObjectFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_shader_object

Eq PhysicalDeviceShaderObjectFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_shader_object

FromCStruct PhysicalDeviceShaderObjectFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_shader_object

ToCStruct PhysicalDeviceShaderObjectFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_shader_object

Zero PhysicalDeviceShaderObjectFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_shader_object

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

VK_EXT_shader_object, StructureType

Constructors

PhysicalDeviceShaderObjectPropertiesEXT 

Fields

  • shaderBinaryUUID :: ByteString

    shaderBinaryUUID is an array of UUID_SIZE uint8_t values representing a universally unique identifier for one or more implementations whose shader binaries are guaranteed to be compatible with each other.

  • shaderBinaryVersion :: Word32

    shaderBinaryVersion is an unsigned integer incremented to represent backwards compatible differences between implementations with the same shaderBinaryUUID.

Instances

Instances details
Storable PhysicalDeviceShaderObjectPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_shader_object

Show PhysicalDeviceShaderObjectPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_shader_object

FromCStruct PhysicalDeviceShaderObjectPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_shader_object

ToCStruct PhysicalDeviceShaderObjectPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_shader_object

Zero PhysicalDeviceShaderObjectPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_shader_object

data ShaderCreateInfoEXT (es :: [Type]) Source #

VkShaderCreateInfoEXT - Structure specifying parameters of a newly created shader

Valid Usage

Valid Usage (Implicit)

  • pNext must be NULL or a pointer to a valid instance of PipelineShaderStageRequiredSubgroupSizeCreateInfo
  • The sType value of each struct in the pNext chain must be unique
  • flags must be a valid combination of ShaderCreateFlagBitsEXT values
  • stage must be a valid ShaderStageFlagBits value
  • nextStage must be a valid combination of ShaderStageFlagBits values
  • codeType must be a valid ShaderCodeTypeEXT value
  • pCode must be a valid pointer to an array of codeSize bytes
  • If pName is not NULL, pName must be a null-terminated UTF-8 string
  • If setLayoutCount is not 0, and pSetLayouts is not NULL, pSetLayouts must be a valid pointer to an array of setLayoutCount valid DescriptorSetLayout handles
  • If pushConstantRangeCount is not 0, and pPushConstantRanges is not NULL, pPushConstantRanges must be a valid pointer to an array of pushConstantRangeCount valid PushConstantRange structures
  • If pSpecializationInfo is not NULL, pSpecializationInfo must be a valid pointer to a valid SpecializationInfo structure
  • codeSize must be greater than 0

See Also

VK_EXT_shader_object, DescriptorSetLayout, PushConstantRange, ShaderCodeTypeEXT, ShaderCreateFlagsEXT, ShaderStageFlagBits, ShaderStageFlags, SpecializationInfo, StructureType, createShadersEXT

Constructors

ShaderCreateInfoEXT 

Fields

Instances

Instances details
Extensible ShaderCreateInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_shader_object

Methods

extensibleTypeName :: String Source #

getNext :: forall (es :: [Type]). ShaderCreateInfoEXT es -> Chain es Source #

setNext :: forall (ds :: [Type]) (es :: [TYPE LiftedRep]). ShaderCreateInfoEXT ds -> Chain es -> ShaderCreateInfoEXT es Source #

extends :: forall e b proxy. Typeable e => proxy e -> (Extends ShaderCreateInfoEXT e => b) -> Maybe b Source #

Show (Chain es) => Show (ShaderCreateInfoEXT es) Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_shader_object

(Extendss ShaderCreateInfoEXT es, PeekChain es) => FromCStruct (ShaderCreateInfoEXT es) Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_shader_object

(Extendss ShaderCreateInfoEXT es, PokeChain es) => ToCStruct (ShaderCreateInfoEXT es) Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_shader_object

es ~ ('[] :: [Type]) => Zero (ShaderCreateInfoEXT es) Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_shader_object

newtype ShaderCreateFlagBitsEXT Source #

VkShaderCreateFlagBitsEXT - Bitmask controlling how a shader object is created

See Also

VK_EXT_shader_object, ShaderCreateFlagsEXT

Bundled Patterns

pattern SHADER_CREATE_LINK_STAGE_BIT_EXT :: ShaderCreateFlagBitsEXT

SHADER_CREATE_LINK_STAGE_BIT_EXT specifies that a shader is linked to all other shaders created in the same createShadersEXT call whose ShaderCreateInfoEXT structures' flags include SHADER_CREATE_LINK_STAGE_BIT_EXT.

pattern SHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT :: ShaderCreateFlagBitsEXT

SHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT specifies that a fragment shader can be used with a fragment density map attachment.

pattern SHADER_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_EXT :: ShaderCreateFlagBitsEXT

SHADER_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_EXT specifies that a fragment shader can be used with a fragment shading rate attachment.

pattern SHADER_CREATE_DISPATCH_BASE_BIT_EXT :: ShaderCreateFlagBitsEXT

SHADER_CREATE_DISPATCH_BASE_BIT_EXT specifies that a compute shader can be used with cmdDispatchBase with a non-zero base workgroup.

pattern SHADER_CREATE_NO_TASK_SHADER_BIT_EXT :: ShaderCreateFlagBitsEXT

SHADER_CREATE_NO_TASK_SHADER_BIT_EXT specifies that a mesh shader must only be used without a task shader. Otherwise, the mesh shader must only be used with a task shader.

pattern SHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT :: ShaderCreateFlagBitsEXT

SHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT specifies that the subgroup sizes must be launched with all invocations active in a task, mesh, or compute shader.

pattern SHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT :: ShaderCreateFlagBitsEXT

SHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT specifies that the SubgroupSize may vary in a task, mesh, or compute shader.

Instances

Instances details
Storable ShaderCreateFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_shader_object

Bits ShaderCreateFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_shader_object

FiniteBits ShaderCreateFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_shader_object

Read ShaderCreateFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_shader_object

Show ShaderCreateFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_shader_object

Eq ShaderCreateFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_shader_object

Ord ShaderCreateFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_shader_object

Zero ShaderCreateFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_shader_object

newtype ShaderCodeTypeEXT Source #

VkShaderCodeTypeEXT - Indicate a shader code type

See Also

VK_EXT_shader_object, ShaderCreateInfoEXT

Constructors

ShaderCodeTypeEXT Int32 

Bundled Patterns

pattern SHADER_CODE_TYPE_BINARY_EXT :: ShaderCodeTypeEXT

SHADER_CODE_TYPE_BINARY_EXT specifies shader code in an opaque, implementation-defined binary format specific to the physical device.

pattern SHADER_CODE_TYPE_SPIRV_EXT :: ShaderCodeTypeEXT

SHADER_CODE_TYPE_SPIRV_EXT specifies shader code in SPIR-V format.

Instances

Instances details
Storable ShaderCodeTypeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_shader_object

Read ShaderCodeTypeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_shader_object

Show ShaderCodeTypeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_shader_object

Eq ShaderCodeTypeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_shader_object

Ord ShaderCodeTypeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_shader_object

Zero ShaderCodeTypeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_shader_object

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 #

newtype ShaderEXT Source #

VkShaderEXT - Opaque handle to a shader object

See Also

VK_EXT_shader_object, cmdBindShadersEXT, createShadersEXT, destroyShaderEXT, getShaderBinaryDataEXT

Constructors

ShaderEXT Word64 

Instances

Instances details
Storable ShaderEXT Source # 
Instance details

Defined in Vulkan.Extensions.Handles

Show ShaderEXT Source # 
Instance details

Defined in Vulkan.Extensions.Handles

Eq ShaderEXT Source # 
Instance details

Defined in Vulkan.Extensions.Handles

Ord ShaderEXT Source # 
Instance details

Defined in Vulkan.Extensions.Handles

HasObjectType ShaderEXT Source # 
Instance details

Defined in Vulkan.Extensions.Handles

IsHandle ShaderEXT Source # 
Instance details

Defined in Vulkan.Extensions.Handles

Zero ShaderEXT Source # 
Instance details

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

Instances details
Storable ViewportSwizzleNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_viewport_swizzle

Show ViewportSwizzleNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_viewport_swizzle

Eq ViewportSwizzleNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_viewport_swizzle

FromCStruct ViewportSwizzleNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_viewport_swizzle

ToCStruct ViewportSwizzleNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_viewport_swizzle

Zero ViewportSwizzleNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_viewport_swizzle

data ColorBlendEquationEXT Source #

VkColorBlendEquationEXT - Structure specifying the color blend factors and operations for an attachment

Valid Usage

Valid Usage (Implicit)

  • dstColorBlendFactor must be a valid BlendFactor value
  • colorBlendOp must be a valid BlendOp value
  • srcAlphaBlendFactor must be a valid BlendFactor value
  • dstAlphaBlendFactor must be a valid BlendFactor value
  • alphaBlendOp must be a valid BlendOp value

See Also

VK_EXT_extended_dynamic_state3, VK_EXT_shader_object, BlendFactor, BlendOp, cmdSetColorBlendEquationEXT

Constructors

ColorBlendEquationEXT 

Fields

  • srcColorBlendFactor :: BlendFactor

    srcColorBlendFactor selects which blend factor is used to determine the source factors (Sr,Sg,Sb).

  • dstColorBlendFactor :: BlendFactor

    dstColorBlendFactor selects which blend factor is used to determine the destination factors (Dr,Dg,Db).

  • colorBlendOp :: BlendOp

    colorBlendOp selects which blend operation is used to calculate the RGB values to write to the color attachment.

  • srcAlphaBlendFactor :: BlendFactor

    srcAlphaBlendFactor selects which blend factor is used to determine the source factor Sa.

  • dstAlphaBlendFactor :: BlendFactor

    dstAlphaBlendFactor selects which blend factor is used to determine the destination factor Da.

  • alphaBlendOp :: BlendOp

    alphaBlendOp selects which blend operation is use to calculate the alpha values to write to the color attachment.

Instances

Instances details
Storable ColorBlendEquationEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_extended_dynamic_state3

Show ColorBlendEquationEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_extended_dynamic_state3

Eq ColorBlendEquationEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_extended_dynamic_state3

FromCStruct ColorBlendEquationEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_extended_dynamic_state3

ToCStruct ColorBlendEquationEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_extended_dynamic_state3

Zero ColorBlendEquationEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_extended_dynamic_state3

data ColorBlendAdvancedEXT Source #

VkColorBlendAdvancedEXT - Structure specifying the advanced blend operation parameters for an attachment

Valid Usage

Valid Usage (Implicit)

  • advancedBlendOp must be a valid BlendOp value

See Also

VK_EXT_extended_dynamic_state3, VK_EXT_shader_object, BlendOp, BlendOverlapEXT, Bool32, cmdSetColorBlendAdvancedEXT

Constructors

ColorBlendAdvancedEXT 

Fields

  • advancedBlendOp :: BlendOp

    advancedBlendOp selects which blend operation is used to calculate the RGB values to write to the color attachment.

  • srcPremultiplied :: Bool

    srcPremultiplied specifies whether the source color of the blend operation is treated as premultiplied.

  • dstPremultiplied :: Bool

    dstPremultiplied specifies whether the destination color of the blend operation is treated as premultiplied.

  • blendOverlap :: BlendOverlapEXT

    blendOverlap is a BlendOverlapEXT value specifying how the source and destination sample’s coverage is correlated.

  • clampResults :: Bool

    clampResults specifies the results must be clamped to the [0,1] range before writing to the attachment, which is useful when the attachment format is not normalized fixed-point.

Instances

Instances details
Storable ColorBlendAdvancedEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_extended_dynamic_state3

Show ColorBlendAdvancedEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_extended_dynamic_state3

Eq ColorBlendAdvancedEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_extended_dynamic_state3

FromCStruct ColorBlendAdvancedEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_extended_dynamic_state3

ToCStruct ColorBlendAdvancedEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_extended_dynamic_state3

Zero ColorBlendAdvancedEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_extended_dynamic_state3

data VertexInputBindingDescription2EXT Source #

VkVertexInputBindingDescription2EXT - Structure specifying the extended vertex input binding description

Valid Usage

Valid Usage (Implicit)

See Also

VK_EXT_shader_object, VK_EXT_vertex_input_dynamic_state, StructureType, VertexInputRate, cmdSetVertexInputEXT

Constructors

VertexInputBindingDescription2EXT 

Fields

  • binding :: Word32

    binding is the binding number that this structure describes.

  • stride :: Word32

    stride is the byte stride between consecutive elements within the buffer.

  • inputRate :: VertexInputRate

    inputRate is a VertexInputRate value specifying whether vertex attribute addressing is a function of the vertex index or of the instance index.

  • divisor :: Word32

    divisor is the number of successive instances that will use the same value of the vertex attribute when instanced rendering is enabled. This member can be set to a value other than 1 if the vertexAttributeInstanceRateDivisor feature is enabled. For example, if the divisor is N, the same vertex attribute will be applied to N successive instances before moving on to the next vertex attribute. The maximum value of divisor is implementation-dependent and can be queried using PhysicalDeviceVertexAttributeDivisorPropertiesEXT::maxVertexAttribDivisor. A value of 0 can be used for the divisor if the vertexAttributeInstanceRateZeroDivisor feature is enabled. In this case, the same vertex attribute will be applied to all instances.

Instances

Instances details
Storable VertexInputBindingDescription2EXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state

Show VertexInputBindingDescription2EXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state

Eq VertexInputBindingDescription2EXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state

FromCStruct VertexInputBindingDescription2EXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state

ToCStruct VertexInputBindingDescription2EXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state

Zero VertexInputBindingDescription2EXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state

data VertexInputAttributeDescription2EXT Source #

VkVertexInputAttributeDescription2EXT - Structure specifying the extended vertex input attribute description

Valid Usage

Valid Usage (Implicit)

  • format must be a valid Format value

See Also

VK_EXT_shader_object, VK_EXT_vertex_input_dynamic_state, Format, StructureType, cmdSetVertexInputEXT

Constructors

VertexInputAttributeDescription2EXT 

Fields

  • location :: Word32

    location is the shader input location number for this attribute.

  • binding :: Word32

    binding is the binding number which this attribute takes its data from.

  • format :: Format

    format is the size and type of the vertex attribute data.

  • offset :: Word32

    offset is a byte offset of this attribute relative to the start of an element in the vertex input binding.

Instances

Instances details
Storable VertexInputAttributeDescription2EXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state

Show VertexInputAttributeDescription2EXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state

Eq VertexInputAttributeDescription2EXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state

FromCStruct VertexInputAttributeDescription2EXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state

ToCStruct VertexInputAttributeDescription2EXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state

Zero VertexInputAttributeDescription2EXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state

cmdSetPatchControlPointsEXT Source #

Arguments

:: forall io. MonadIO io 
=> CommandBuffer

commandBuffer is the command buffer into which the command will be recorded.

-> ("patchControlPoints" ::: Word32)

patchControlPoints specifies the number of control points per patch.

-> 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

  • patchControlPoints must be greater than zero and less than or equal to PhysicalDeviceLimits::maxTessellationPatchSize

Valid Usage (Implicit)

  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support graphics operations
  • This command must only be called outside of a video coding scope

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
Primary SecondaryBoth Outside Graphics State

See Also

VK_EXT_extended_dynamic_state2, VK_EXT_shader_object, CommandBuffer

cmdSetLogicOpEXT Source #

Arguments

:: forall io. MonadIO io 
=> CommandBuffer

commandBuffer is the command buffer into which the command will be recorded.

-> LogicOp

logicOp specifies the logical operation to apply for blend state.

-> 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

Valid Usage (Implicit)

  • logicOp must be a valid LogicOp value
  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support graphics operations
  • This command must only be called outside of a video coding scope

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
Primary SecondaryBoth Outside Graphics State

See Also

VK_EXT_extended_dynamic_state2, VK_EXT_shader_object, CommandBuffer, LogicOp

cmdSetTessellationDomainOriginEXT Source #

Arguments

:: forall io. MonadIO io 
=> CommandBuffer

commandBuffer is the command buffer into which the command will be recorded.

-> TessellationDomainOrigin

domainOrigin specifies the origin of the tessellation domain space.

-> 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

Valid Usage (Implicit)

  • domainOrigin must be a valid TessellationDomainOrigin value
  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support graphics operations
  • This command must only be called outside of a video coding scope

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
Primary SecondaryBoth Outside Graphics State

See Also

VK_EXT_extended_dynamic_state3, VK_EXT_shader_object, CommandBuffer, TessellationDomainOrigin

cmdSetDepthClampEnableEXT Source #

Arguments

:: forall io. MonadIO io 
=> CommandBuffer

commandBuffer is the command buffer into which the command will be recorded.

-> ("depthClampEnable" ::: Bool)

depthClampEnable specifies whether depth clamping is enabled.

-> 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

Valid Usage (Implicit)

  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support graphics operations
  • This command must only be called outside of a video coding scope

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
Primary SecondaryBoth Outside Graphics State

See Also

VK_EXT_extended_dynamic_state3, VK_EXT_shader_object, Bool32, CommandBuffer

cmdSetPolygonModeEXT Source #

Arguments

:: forall io. MonadIO io 
=> CommandBuffer

commandBuffer is the command buffer into which the command will be recorded.

-> PolygonMode

polygonMode specifies polygon mode.

-> 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

Valid Usage (Implicit)

  • polygonMode must be a valid PolygonMode value
  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support graphics operations
  • This command must only be called outside of a video coding scope

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
Primary SecondaryBoth Outside Graphics State

See Also

VK_EXT_extended_dynamic_state3, VK_EXT_shader_object, CommandBuffer, PolygonMode

cmdSetRasterizationSamplesEXT Source #

Arguments

:: forall io. MonadIO io 
=> CommandBuffer

commandBuffer is the command buffer into which the command will be recorded.

-> ("rasterizationSamples" ::: SampleCountFlagBits)

rasterizationSamples specifies rasterizationSamples.

-> 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

Valid Usage (Implicit)

  • rasterizationSamples must be a valid SampleCountFlagBits value
  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support graphics operations
  • This command must only be called outside of a video coding scope

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
Primary SecondaryBoth Outside Graphics State

See Also

VK_EXT_extended_dynamic_state3, VK_EXT_shader_object, CommandBuffer, SampleCountFlagBits

cmdSetSampleMaskEXT Source #

Arguments

:: forall io. MonadIO io 
=> CommandBuffer

commandBuffer is the command buffer into which the command will be recorded.

-> ("samples" ::: SampleCountFlagBits)

samples specifies the number of sample bits in the pSampleMask.

-> ("sampleMask" ::: Vector SampleMask)

pSampleMask is a pointer to an array of SampleMask values, where the array size is based on the samples parameter.

-> 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

Valid Usage (Implicit)

  • samples must be a valid SampleCountFlagBits value
  • pSampleMask must be a valid pointer to an array of \(\lceil{\mathit{samples} \over 32}\rceil\) SampleMask values
  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support graphics operations
  • This command must only be called outside of a video coding scope

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
Primary SecondaryBoth 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

commandBuffer is the command buffer into which the command will be recorded.

-> ("alphaToCoverageEnable" ::: Bool)

alphaToCoverageEnable specifies the alphaToCoverageEnable state.

-> 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

Valid Usage (Implicit)

  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support graphics operations
  • This command must only be called outside of a video coding scope

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
Primary SecondaryBoth Outside Graphics State

See Also

VK_EXT_extended_dynamic_state3, VK_EXT_shader_object, Bool32, CommandBuffer

cmdSetAlphaToOneEnableEXT Source #

Arguments

:: forall io. MonadIO io 
=> CommandBuffer

commandBuffer is the command buffer into which the command will be recorded.

-> ("alphaToOneEnable" ::: Bool)

alphaToOneEnable specifies the alphaToOneEnable state.

-> 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

Valid Usage (Implicit)

  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support graphics operations
  • This command must only be called outside of a video coding scope

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
Primary SecondaryBoth Outside Graphics State

See Also

VK_EXT_extended_dynamic_state3, VK_EXT_shader_object, Bool32, CommandBuffer

cmdSetLogicOpEnableEXT Source #

Arguments

:: forall io. MonadIO io 
=> CommandBuffer

commandBuffer is the command buffer into which the command will be recorded.

-> ("logicOpEnable" ::: Bool)

logicOpEnable specifies whether logical operations are enabled.

-> 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

  • If the logicOp feature is not enabled, logicOpEnable must be FALSE

Valid Usage (Implicit)

  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support graphics operations
  • This command must only be called outside of a video coding scope

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
Primary SecondaryBoth Outside Graphics State

See Also

VK_EXT_extended_dynamic_state3, VK_EXT_shader_object, Bool32, CommandBuffer

cmdSetColorBlendEnableEXT Source #

Arguments

:: forall io. MonadIO io 
=> CommandBuffer

commandBuffer is the command buffer into which the command will be recorded.

-> ("firstAttachment" ::: Word32)

firstAttachment the first color attachment the color blending enable applies.

-> ("colorBlendEnables" ::: Vector Bool)

pColorBlendEnables an array of booleans to indicate whether color blending is enabled for the corresponding attachment.

-> 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

Valid Usage (Implicit)

  • pColorBlendEnables must be a valid pointer to an array of attachmentCount Bool32 values
  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support graphics operations
  • This command must only be called outside of a video coding scope
  • attachmentCount must be greater than 0

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
Primary SecondaryBoth Outside Graphics State

See Also

VK_EXT_extended_dynamic_state3, VK_EXT_shader_object, Bool32, CommandBuffer

cmdSetColorBlendEquationEXT Source #

Arguments

:: forall io. MonadIO io 
=> CommandBuffer

commandBuffer is the command buffer into which the command will be recorded.

-> ("firstAttachment" ::: Word32)

firstAttachment the first color attachment the color blend factors and operations apply to.

-> ("colorBlendEquations" ::: Vector ColorBlendEquationEXT)

pColorBlendEquations an array of ColorBlendEquationEXT structs that specify the color blend factors and operations for the corresponding attachments.

-> 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

Valid Usage (Implicit)

  • pColorBlendEquations must be a valid pointer to an array of attachmentCount valid ColorBlendEquationEXT structures
  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support graphics operations
  • This command must only be called outside of a video coding scope
  • attachmentCount must be greater than 0

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
Primary SecondaryBoth Outside Graphics State

See Also

VK_EXT_extended_dynamic_state3, VK_EXT_shader_object, ColorBlendEquationEXT, CommandBuffer

cmdSetColorWriteMaskEXT Source #

Arguments

:: forall io. MonadIO io 
=> CommandBuffer

commandBuffer is the command buffer into which the command will be recorded.

-> ("firstAttachment" ::: Word32)

firstAttachment the first color attachment the color write masks apply to.

-> ("colorWriteMasks" ::: Vector ColorComponentFlags)

pColorWriteMasks an array of ColorComponentFlags values that specify the color write masks of the corresponding attachments.

-> 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

Valid Usage (Implicit)

  • pColorWriteMasks must be a valid pointer to an array of attachmentCount valid combinations of ColorComponentFlagBits values
  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support graphics operations
  • This command must only be called outside of a video coding scope
  • attachmentCount must be greater than 0

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
Primary SecondaryBoth Outside Graphics State

See Also

VK_EXT_extended_dynamic_state3, VK_EXT_shader_object, ColorComponentFlags, CommandBuffer

cmdSetRasterizationStreamEXT Source #

Arguments

:: forall io. MonadIO io 
=> CommandBuffer

commandBuffer is the command buffer into which the command will be recorded.

-> ("rasterizationStream" ::: Word32)

rasterizationStream specifies the rasterizationStream state.

-> 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

Valid Usage (Implicit)

  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support graphics operations
  • This command must only be called outside of a video coding scope

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
Primary SecondaryBoth Outside Graphics State

See Also

VK_EXT_extended_dynamic_state3, VK_EXT_shader_object, CommandBuffer

cmdSetConservativeRasterizationModeEXT Source #

Arguments

:: forall io. MonadIO io 
=> CommandBuffer

commandBuffer is the command buffer into which the command will be recorded.

-> ConservativeRasterizationModeEXT

conservativeRasterizationMode specifies the conservativeRasterizationMode state.

-> 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

Valid Usage (Implicit)

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
Primary SecondaryBoth Outside Graphics State

See Also

VK_EXT_extended_dynamic_state3, VK_EXT_shader_object, CommandBuffer, ConservativeRasterizationModeEXT

cmdSetExtraPrimitiveOverestimationSizeEXT Source #

Arguments

:: forall io. MonadIO io 
=> CommandBuffer

commandBuffer is the command buffer into which the command will be recorded.

-> ("extraPrimitiveOverestimationSize" ::: Float)

extraPrimitiveOverestimationSize specifies the extraPrimitiveOverestimationSize.

-> 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

Valid Usage (Implicit)

  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support graphics operations
  • This command must only be called outside of a video coding scope

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
Primary SecondaryBoth Outside Graphics State

See Also

VK_EXT_extended_dynamic_state3, VK_EXT_shader_object, CommandBuffer

cmdSetDepthClipEnableEXT Source #

Arguments

:: forall io. MonadIO io 
=> CommandBuffer

commandBuffer is the command buffer into which the command will be recorded.

-> ("depthClipEnable" ::: Bool)

depthClipEnable specifies whether depth clipping is enabled.

-> 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

Valid Usage (Implicit)

  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support graphics operations
  • This command must only be called outside of a video coding scope

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
Primary SecondaryBoth Outside Graphics State

See Also

VK_EXT_extended_dynamic_state3, VK_EXT_shader_object, Bool32, CommandBuffer

cmdSetSampleLocationsEnableEXT Source #

Arguments

:: forall io. MonadIO io 
=> CommandBuffer

commandBuffer is the command buffer into which the command will be recorded.

-> ("sampleLocationsEnable" ::: Bool)

sampleLocationsEnable specifies the sampleLocationsEnable state.

-> 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

Valid Usage (Implicit)

  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support graphics operations
  • This command must only be called outside of a video coding scope

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
Primary SecondaryBoth Outside Graphics State

See Also

VK_EXT_extended_dynamic_state3, VK_EXT_shader_object, Bool32, CommandBuffer

cmdSetColorBlendAdvancedEXT Source #

Arguments

:: forall io. MonadIO io 
=> CommandBuffer

commandBuffer is the command buffer into which the command will be recorded.

-> ("firstAttachment" ::: Word32)

firstAttachment the first color attachment the advanced blend parameters apply to.

-> ("colorBlendAdvanced" ::: Vector ColorBlendAdvancedEXT)

pColorBlendAdvanced an array of ColorBlendAdvancedEXT structs that specify the advanced color blend parameters for the corresponding attachments.

-> 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

Valid Usage (Implicit)

  • pColorBlendAdvanced must be a valid pointer to an array of attachmentCount valid ColorBlendAdvancedEXT structures
  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support graphics operations
  • This command must only be called outside of a video coding scope
  • attachmentCount must be greater than 0

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
Primary SecondaryBoth Outside Graphics State

See Also

VK_EXT_extended_dynamic_state3, VK_EXT_shader_object, ColorBlendAdvancedEXT, CommandBuffer

cmdSetProvokingVertexModeEXT Source #

Arguments

:: forall io. MonadIO io 
=> CommandBuffer

commandBuffer is the command buffer into which the command will be recorded.

-> ProvokingVertexModeEXT

provokingVertexMode specifies the provokingVertexMode state.

-> 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

Valid Usage (Implicit)

  • provokingVertexMode must be a valid ProvokingVertexModeEXT value
  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support graphics operations
  • This command must only be called outside of a video coding scope

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
Primary SecondaryBoth Outside Graphics State

See Also

VK_EXT_extended_dynamic_state3, VK_EXT_shader_object, CommandBuffer, ProvokingVertexModeEXT

cmdSetLineRasterizationModeEXT Source #

Arguments

:: forall io. MonadIO io 
=> CommandBuffer

commandBuffer is the command buffer into which the command will be recorded.

-> LineRasterizationModeEXT

lineRasterizationMode specifies the lineRasterizationMode state.

-> 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

Valid Usage (Implicit)

  • lineRasterizationMode must be a valid LineRasterizationModeEXT value
  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support graphics operations
  • This command must only be called outside of a video coding scope

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
Primary SecondaryBoth Outside Graphics State

See Also

VK_EXT_extended_dynamic_state3, VK_EXT_shader_object, CommandBuffer, LineRasterizationModeEXT

cmdSetLineStippleEnableEXT Source #

Arguments

:: forall io. MonadIO io 
=> CommandBuffer

commandBuffer is the command buffer into which the command will be recorded.

-> ("stippledLineEnable" ::: Bool)

stippledLineEnable specifies the stippledLineEnable state.

-> 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

Valid Usage (Implicit)

  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support graphics operations
  • This command must only be called outside of a video coding scope

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
Primary SecondaryBoth Outside Graphics State

See Also

VK_EXT_extended_dynamic_state3, VK_EXT_shader_object, Bool32, CommandBuffer

cmdSetDepthClipNegativeOneToOneEXT Source #

Arguments

:: forall io. MonadIO io 
=> CommandBuffer

commandBuffer is the command buffer into which the command will be recorded.

-> ("negativeOneToOne" ::: Bool)

negativeOneToOne specifies the negativeOneToOne state.

-> 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

Valid Usage (Implicit)

  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support graphics operations
  • This command must only be called outside of a video coding scope

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
Primary SecondaryBoth Outside Graphics State

See Also

VK_EXT_extended_dynamic_state3, VK_EXT_shader_object, Bool32, CommandBuffer

cmdSetViewportWScalingEnableNV Source #

Arguments

:: forall io. MonadIO io 
=> CommandBuffer

commandBuffer is the command buffer into which the command will be recorded.

-> ("viewportWScalingEnable" ::: Bool)

viewportWScalingEnable specifies the viewportWScalingEnable state.

-> 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

Valid Usage (Implicit)

  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support graphics operations
  • This command must only be called outside of a video coding scope

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
Primary SecondaryBoth 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

commandBuffer is the command buffer into which the command will be recorded.

-> ("firstViewport" ::: Word32)

firstViewport is the index of the first viewport whose parameters are updated by the command.

-> ("viewportSwizzles" ::: Vector ViewportSwizzleNV)

pViewportSwizzles is a pointer to an array of ViewportSwizzleNV structures specifying viewport swizzles.

-> 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

Valid Usage (Implicit)

  • pViewportSwizzles must be a valid pointer to an array of viewportCount valid ViewportSwizzleNV structures
  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support graphics operations
  • This command must only be called outside of a video coding scope
  • viewportCount must be greater than 0

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
Primary SecondaryBoth 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

commandBuffer is the command buffer into which the command will be recorded.

-> ("coverageToColorEnable" ::: Bool)

coverageToColorEnable specifies the coverageToColorEnable state.

-> 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

Valid Usage (Implicit)

  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support graphics operations
  • This command must only be called outside of a video coding scope

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
Primary SecondaryBoth 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

commandBuffer is the command buffer into which the command will be recorded.

-> ("coverageToColorLocation" ::: Word32)

coverageToColorLocation specifies the coverageToColorLocation state.

-> 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

Valid Usage (Implicit)

  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support graphics operations
  • This command must only be called outside of a video coding scope

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
Primary SecondaryBoth 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

commandBuffer is the command buffer into which the command will be recorded.

-> CoverageModulationModeNV

coverageModulationMode specifies the coverageModulationMode state.

-> 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

Valid Usage (Implicit)

  • coverageModulationMode must be a valid CoverageModulationModeNV value
  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support graphics operations
  • This command must only be called outside of a video coding scope

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
Primary SecondaryBoth 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

commandBuffer is the command buffer into which the command will be recorded.

-> ("coverageModulationTableEnable" ::: Bool)

coverageModulationTableEnable specifies the coverageModulationTableEnable state.

-> 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

Valid Usage (Implicit)

  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support graphics operations
  • This command must only be called outside of a video coding scope

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
Primary SecondaryBoth 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

commandBuffer is the command buffer into which the command will be recorded.

-> ("coverageModulationTable" ::: Vector Float)

pCoverageModulationTable specifies the table of modulation factors containing a value for each number of covered samples.

-> 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

Valid Usage (Implicit)

  • pCoverageModulationTable must be a valid pointer to an array of coverageModulationTableCount float values
  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support graphics operations
  • This command must only be called outside of a video coding scope
  • coverageModulationTableCount must be greater than 0

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
Primary SecondaryBoth 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

commandBuffer is the command buffer into which the command will be recorded.

-> ("shadingRateImageEnable" ::: Bool)

shadingRateImageEnable specifies the shadingRateImageEnable state.

-> 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

Valid Usage (Implicit)

  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support graphics operations
  • This command must only be called outside of a video coding scope

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
Primary SecondaryBoth 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

commandBuffer is the command buffer into which the command will be recorded.

-> CoverageReductionModeNV

coverageReductionMode specifies the coverageReductionMode state.

-> 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

Valid Usage (Implicit)

  • coverageReductionMode must be a valid CoverageReductionModeNV value
  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support graphics operations
  • This command must only be called outside of a video coding scope

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
Primary SecondaryBoth 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

commandBuffer is the command buffer into which the command will be recorded.

-> ("representativeFragmentTestEnable" ::: Bool)

representativeFragmentTestEnable specifies the representativeFragmentTestEnable state.

-> 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

Valid Usage (Implicit)

  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support graphics operations
  • This command must only be called outside of a video coding scope

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
Primary SecondaryBoth Outside Graphics State

See Also

VK_EXT_extended_dynamic_state3, VK_EXT_shader_object, VK_NV_representative_fragment_test, Bool32, CommandBuffer

cmdSetVertexInputEXT Source #

Arguments

:: forall io. MonadIO io 
=> CommandBuffer

commandBuffer is the command buffer into which the command will be recorded.

-> ("vertexBindingDescriptions" ::: Vector VertexInputBindingDescription2EXT)

pVertexBindingDescriptions is a pointer to an array of VertexInputBindingDescription2EXT structures.

-> ("vertexAttributeDescriptions" ::: Vector VertexInputAttributeDescription2EXT)

pVertexAttributeDescriptions is a pointer to an array of VertexInputAttributeDescription2EXT structures.

-> 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

  • vertexBindingDescriptionCount must be less than or equal to PhysicalDeviceLimits::maxVertexInputBindings
  • vertexAttributeDescriptionCount must be less than or equal to PhysicalDeviceLimits::maxVertexInputAttributes
  • For every binding specified by each element of pVertexAttributeDescriptions, a VertexInputBindingDescription2EXT must exist in pVertexBindingDescriptions with the same value of binding
  • All elements of pVertexBindingDescriptions must describe distinct binding numbers
  • All elements of pVertexAttributeDescriptions must describe distinct attribute locations

Valid Usage (Implicit)

  • If vertexBindingDescriptionCount is not 0, pVertexBindingDescriptions must be a valid pointer to an array of vertexBindingDescriptionCount valid VertexInputBindingDescription2EXT structures
  • If vertexAttributeDescriptionCount is not 0, pVertexAttributeDescriptions must be a valid pointer to an array of vertexAttributeDescriptionCount valid VertexInputAttributeDescription2EXT structures
  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support graphics operations
  • This command must only be called outside of a video coding scope

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
Primary SecondaryBoth 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

VK_NV_viewport_swizzle, ViewportSwizzleNV

Instances

Instances details
Storable ViewportCoordinateSwizzleNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_viewport_swizzle

Read ViewportCoordinateSwizzleNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_viewport_swizzle

Show ViewportCoordinateSwizzleNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_viewport_swizzle

Eq ViewportCoordinateSwizzleNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_viewport_swizzle

Ord ViewportCoordinateSwizzleNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_viewport_swizzle

Zero ViewportCoordinateSwizzleNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_viewport_swizzle

newtype BlendOverlapEXT Source #

VkBlendOverlapEXT - Enumerant specifying the blend overlap parameter

Description

'

Overlap ModeWeighting 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

BLEND_OVERLAP_UNCORRELATED_EXT specifies that there is no correlation between the source and destination coverage.

pattern BLEND_OVERLAP_DISJOINT_EXT :: BlendOverlapEXT

BLEND_OVERLAP_DISJOINT_EXT specifies that the source and destination coverage are considered to have minimal overlap.

pattern BLEND_OVERLAP_CONJOINT_EXT :: BlendOverlapEXT

BLEND_OVERLAP_CONJOINT_EXT specifies that the source and destination coverage are considered to have maximal overlap.

Instances

Instances details
Storable BlendOverlapEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_blend_operation_advanced

Read BlendOverlapEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_blend_operation_advanced

Show BlendOverlapEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_blend_operation_advanced

Eq BlendOverlapEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_blend_operation_advanced

Ord BlendOverlapEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_blend_operation_advanced

Zero BlendOverlapEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_blend_operation_advanced

newtype CoverageModulationModeNV Source #

VkCoverageModulationModeNV - Specify the coverage modulation mode

See Also

VK_NV_framebuffer_mixed_samples, PipelineCoverageModulationStateCreateInfoNV, cmdSetCoverageModulationModeNV

Bundled Patterns

pattern COVERAGE_MODULATION_MODE_NONE_NV :: CoverageModulationModeNV

COVERAGE_MODULATION_MODE_NONE_NV specifies that no components are multiplied by the modulation factor.

pattern COVERAGE_MODULATION_MODE_RGB_NV :: CoverageModulationModeNV

COVERAGE_MODULATION_MODE_RGB_NV specifies that the red, green, and blue components are multiplied by the modulation factor.

pattern COVERAGE_MODULATION_MODE_ALPHA_NV :: CoverageModulationModeNV

COVERAGE_MODULATION_MODE_ALPHA_NV specifies that the alpha component is multiplied by the modulation factor.

pattern COVERAGE_MODULATION_MODE_RGBA_NV :: CoverageModulationModeNV

COVERAGE_MODULATION_MODE_RGBA_NV specifies that all components are multiplied by the modulation factor.

Instances

Instances details
Storable CoverageModulationModeNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_framebuffer_mixed_samples

Read CoverageModulationModeNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_framebuffer_mixed_samples

Show CoverageModulationModeNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_framebuffer_mixed_samples

Eq CoverageModulationModeNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_framebuffer_mixed_samples

Ord CoverageModulationModeNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_framebuffer_mixed_samples

Zero CoverageModulationModeNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_framebuffer_mixed_samples

newtype CoverageReductionModeNV Source #

Bundled Patterns

pattern COVERAGE_REDUCTION_MODE_MERGE_NV :: CoverageReductionModeNV

COVERAGE_REDUCTION_MODE_MERGE_NV specifies that each color sample will be associated with an implementation-dependent subset of samples in the pixel coverage. If any of those associated samples are covered, the color sample is covered.

pattern COVERAGE_REDUCTION_MODE_TRUNCATE_NV :: CoverageReductionModeNV

COVERAGE_REDUCTION_MODE_TRUNCATE_NV specifies that for color samples present in the color attachments, a color sample is covered if the pixel coverage sample with the same sample index i is covered; other pixel coverage samples are discarded.

Instances

Instances details
Storable CoverageReductionModeNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_coverage_reduction_mode

Read CoverageReductionModeNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_coverage_reduction_mode

Show CoverageReductionModeNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_coverage_reduction_mode

Eq CoverageReductionModeNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_coverage_reduction_mode

Ord CoverageReductionModeNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_coverage_reduction_mode

Zero CoverageReductionModeNV Source # 
Instance details

Defined in Vulkan.Extensions.VK_NV_coverage_reduction_mode

newtype ConservativeRasterizationModeEXT Source #

VkConservativeRasterizationModeEXT - Specify the conservative rasterization mode

See Also

VK_EXT_conservative_rasterization, PipelineRasterizationConservativeStateCreateInfoEXT, cmdSetConservativeRasterizationModeEXT

Bundled Patterns

pattern CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT :: ConservativeRasterizationModeEXT

CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT specifies that conservative rasterization is disabled and rasterization proceeds as normal.

pattern CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT :: ConservativeRasterizationModeEXT

CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT specifies that conservative rasterization is enabled in overestimation mode.

pattern CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT :: ConservativeRasterizationModeEXT

CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT specifies that conservative rasterization is enabled in underestimation mode.

Instances

Instances details
Storable ConservativeRasterizationModeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_conservative_rasterization

Read ConservativeRasterizationModeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_conservative_rasterization

Show ConservativeRasterizationModeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_conservative_rasterization

Eq ConservativeRasterizationModeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_conservative_rasterization

Ord ConservativeRasterizationModeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_conservative_rasterization

Zero ConservativeRasterizationModeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_conservative_rasterization

newtype LineRasterizationModeEXT Source #

Bundled Patterns

pattern LINE_RASTERIZATION_MODE_DEFAULT_EXT :: LineRasterizationModeEXT

LINE_RASTERIZATION_MODE_DEFAULT_EXT is equivalent to LINE_RASTERIZATION_MODE_RECTANGULAR_EXT if PhysicalDeviceLimits::strictLines is TRUE, otherwise lines are drawn as non-strictLines parallelograms. Both of these modes are defined in Basic Line Segment Rasterization.

pattern LINE_RASTERIZATION_MODE_RECTANGULAR_EXT :: LineRasterizationModeEXT

LINE_RASTERIZATION_MODE_RECTANGULAR_EXT specifies lines drawn as if they were rectangles extruded from the line

pattern LINE_RASTERIZATION_MODE_BRESENHAM_EXT :: LineRasterizationModeEXT

LINE_RASTERIZATION_MODE_BRESENHAM_EXT specifies lines drawn by determining which pixel diamonds the line intersects and exits, as defined in Bresenham Line Segment Rasterization.

pattern LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT :: LineRasterizationModeEXT

LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT specifies lines drawn if they were rectangles extruded from the line, with alpha falloff, as defined in Smooth Lines.

Instances

Instances details
Storable LineRasterizationModeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_line_rasterization

Read LineRasterizationModeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_line_rasterization

Show LineRasterizationModeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_line_rasterization

Eq LineRasterizationModeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_line_rasterization

Ord LineRasterizationModeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_line_rasterization

Zero LineRasterizationModeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_line_rasterization

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

Bundled Patterns

pattern PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT :: ProvokingVertexModeEXT

PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT specifies that the provoking vertex is the first non-adjacency vertex in the list of vertices used by a primitive.

pattern PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT :: ProvokingVertexModeEXT

PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT specifies that the provoking vertex is the last non-adjacency vertex in the list of vertices used by a primitive.

Instances

Instances details
Storable ProvokingVertexModeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_provoking_vertex

Read ProvokingVertexModeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_provoking_vertex

Show ProvokingVertexModeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_provoking_vertex

Eq ProvokingVertexModeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_provoking_vertex

Ord ProvokingVertexModeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_provoking_vertex

Zero ProvokingVertexModeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_provoking_vertex

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 #