vulkan
Safe HaskellSafe-Inferred
LanguageHaskell2010

Vulkan.Extensions.VK_EXT_vertex_attribute_divisor

Description

Name

VK_EXT_vertex_attribute_divisor - device extension

VK_EXT_vertex_attribute_divisor

Name String
VK_EXT_vertex_attribute_divisor
Extension Type
Device extension
Registered Extension Number
191
Revision
3
Ratification Status
Not ratified
Extension and Version Dependencies
VK_KHR_get_physical_device_properties2 or Version 1.1
Deprecation State
Contact

Other Extension Metadata

Last Modified Date
2018-08-03
IP Status
No known IP claims.
Contributors
  • Vikram Kushwaha, NVIDIA
  • Faith Ekstrand, Intel

Description

This extension allows instance-rate vertex attributes to be repeated for certain number of instances instead of advancing for every instance when instanced rendering is enabled.

New Structures

New Enum Constants

Issues

1) What is the effect of a non-zero value for firstInstance?

RESOLVED: The Vulkan API should follow the OpenGL convention and offset attribute fetching by firstInstance while computing vertex attribute offsets.

2) Should zero be an allowed divisor?

RESOLVED: Yes. A zero divisor means the vertex attribute is repeated for all instances.

Examples

To create a vertex binding such that the first binding uses instanced rendering and the same attribute is used for every 4 draw instances, an application could use the following set of structures:

    const VkVertexInputBindingDivisorDescriptionEXT divisorDesc =
    {
        .binding = 0,
        .divisor = 4
    };

    const VkPipelineVertexInputDivisorStateCreateInfoEXT divisorInfo =
    {
        .sType = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT,
        .pNext = NULL,
        .vertexBindingDivisorCount = 1,
        .pVertexBindingDivisors = &divisorDesc
    }

    const VkVertexInputBindingDescription binding =
    {
        .binding = 0,
        .stride = sizeof(Vertex),
        .inputRate = VK_VERTEX_INPUT_RATE_INSTANCE
    };

    const VkPipelineVertexInputStateCreateInfo viInfo =
    {
        .sType = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_CREATE_INFO,
        .pNext = &divisorInfo,
        ...
    };
    //...

Version History

  • Revision 1, 2017-12-04 (Vikram Kushwaha)

    • First Version
  • Revision 2, 2018-07-16 (Faith Ekstrand)

    • Adjust the interaction between divisor and firstInstance to match the OpenGL convention.
    • Disallow divisors of zero.
  • Revision 3, 2018-08-03 (Vikram Kushwaha)

    • Allow a zero divisor.
    • Add a physical device features structure to query/enable this feature.

See Also

PhysicalDeviceVertexAttributeDivisorFeaturesEXT, PhysicalDeviceVertexAttributeDivisorPropertiesEXT, PipelineVertexInputDivisorStateCreateInfoEXT, VertexInputBindingDivisorDescriptionEXT

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

data PhysicalDeviceVertexAttributeDivisorPropertiesEXT Source #

VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT - Structure describing max value of vertex attribute divisor that can be supported by an implementation

Description

If the PhysicalDeviceVertexAttributeDivisorPropertiesEXT 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_vertex_attribute_divisor, StructureType

Constructors

PhysicalDeviceVertexAttributeDivisorPropertiesEXT 

Fields

  • maxVertexAttribDivisor :: Word32

    maxVertexAttribDivisor is the maximum value of the number of instances that will repeat the value of vertex attribute data when instanced rendering is enabled.

Instances

Instances details
Storable PhysicalDeviceVertexAttributeDivisorPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_vertex_attribute_divisor

Show PhysicalDeviceVertexAttributeDivisorPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_vertex_attribute_divisor

Eq PhysicalDeviceVertexAttributeDivisorPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_vertex_attribute_divisor

FromCStruct PhysicalDeviceVertexAttributeDivisorPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_vertex_attribute_divisor

ToCStruct PhysicalDeviceVertexAttributeDivisorPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_vertex_attribute_divisor

Zero PhysicalDeviceVertexAttributeDivisorPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_vertex_attribute_divisor

type EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME = "VK_EXT_vertex_attribute_divisor" Source #

data VertexInputBindingDivisorDescriptionKHR Source #

VkVertexInputBindingDivisorDescriptionKHR - Structure specifying a divisor used in instanced rendering

Description

If this structure is not used to define a divisor value for an attribute, then the divisor has a logical default value of 1.

Valid Usage

See Also

VK_EXT_vertex_attribute_divisor, VK_KHR_vertex_attribute_divisor, PipelineVertexInputDivisorStateCreateInfoKHR

Constructors

VertexInputBindingDivisorDescriptionKHR 

Fields

  • binding :: Word32

    binding is the binding number for which the divisor is specified.

  • divisor :: Word32

    divisor is the number of successive instances that will use the same value of the vertex attribute when instanced rendering 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 PhysicalDeviceVertexAttributeDivisorPropertiesKHR::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 VertexInputBindingDivisorDescriptionKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_vertex_attribute_divisor

Show VertexInputBindingDivisorDescriptionKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_vertex_attribute_divisor

Eq VertexInputBindingDivisorDescriptionKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_vertex_attribute_divisor

FromCStruct VertexInputBindingDivisorDescriptionKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_vertex_attribute_divisor

ToCStruct VertexInputBindingDivisorDescriptionKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_vertex_attribute_divisor

Zero VertexInputBindingDivisorDescriptionKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_vertex_attribute_divisor

data PipelineVertexInputDivisorStateCreateInfoKHR Source #

VkPipelineVertexInputDivisorStateCreateInfoKHR - Structure specifying vertex attributes assignment during instanced rendering

Valid Usage (Implicit)

See Also

VK_EXT_vertex_attribute_divisor, VK_KHR_vertex_attribute_divisor, StructureType, VertexInputBindingDivisorDescriptionKHR

Constructors

PipelineVertexInputDivisorStateCreateInfoKHR 

Fields

Instances

Instances details
Show PipelineVertexInputDivisorStateCreateInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_vertex_attribute_divisor

FromCStruct PipelineVertexInputDivisorStateCreateInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_vertex_attribute_divisor

ToCStruct PipelineVertexInputDivisorStateCreateInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_vertex_attribute_divisor

Zero PipelineVertexInputDivisorStateCreateInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_vertex_attribute_divisor

data PhysicalDeviceVertexAttributeDivisorFeaturesKHR Source #

VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR - Structure describing if fetching of vertex attribute may be repeated for instanced rendering

Members

This structure describes the following features:

Description

If the PhysicalDeviceVertexAttributeDivisorFeaturesKHR 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. PhysicalDeviceVertexAttributeDivisorFeaturesKHR can also be used in the pNext chain of DeviceCreateInfo to selectively enable these features.

Valid Usage (Implicit)

See Also

VK_EXT_vertex_attribute_divisor, VK_KHR_vertex_attribute_divisor, Bool32, StructureType

Constructors

PhysicalDeviceVertexAttributeDivisorFeaturesKHR 

Fields

Instances

Instances details
Storable PhysicalDeviceVertexAttributeDivisorFeaturesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_vertex_attribute_divisor

Show PhysicalDeviceVertexAttributeDivisorFeaturesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_vertex_attribute_divisor

Eq PhysicalDeviceVertexAttributeDivisorFeaturesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_vertex_attribute_divisor

FromCStruct PhysicalDeviceVertexAttributeDivisorFeaturesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_vertex_attribute_divisor

ToCStruct PhysicalDeviceVertexAttributeDivisorFeaturesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_vertex_attribute_divisor

Zero PhysicalDeviceVertexAttributeDivisorFeaturesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_vertex_attribute_divisor