## C Specification

The individual divisor values per binding are specified using the VkVertexInputBindingDivisorDescriptionEXT structure which is defined as:

typedef struct VkVertexInputBindingDivisorDescriptionEXT {
uint32_t    binding;
uint32_t    divisor;
} VkVertexInputBindingDivisorDescriptionEXT;

## Members

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

• 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 VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT::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.

## 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
• binding must be less than VkPhysicalDeviceLimits::maxVertexInputBindings

• If the vertexAttributeInstanceRateZeroDivisor feature is not enabled, divisor must not be 0

• If the vertexAttributeInstanceRateDivisor feature is not enabled, divisor must be 1

• divisor must be a value between 0 and VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT::maxVertexAttribDivisor, inclusive.

• VkVertexInputBindingDescription::inputRate must be of type VK_VERTEX_INPUT_RATE_INSTANCE for this binding.