mirror of
https://github.com/status-im/Vulkan-Docs.git
synced 2025-02-25 12:35:11 +00:00
* Update release number to 124. Github Issues: * Fix Makefile SPECREMARK macro to work when not building in a git tree (public issue 992). * Ignore pname:aspectMask for unused attachments in slink:VkSubpassDescription2KHR valid usage statements (public pull request 1028). * Minor markup / spelling fixes (public pull requests 1035, 1045). Internal Issues: * Fix markup in Valid Usage statement for slink:VkCreateFramebuffer (internal issue 1823). * Add a new <<synchronization-signal-operation-order, _signal operation order_>> section to the synchronization chapter which describes in detail the ordering guarantees provided by the API between fence and semaphore signal operations (internal merge request 3368). * Move generated `appendix/meta/` files into the Makefile GENERATED directory (internal merge request 3381). New Extensions * `<<VK_KHR_shader_clock>>` * `<<VK_KHR_timeline_semaphore>>`
109 lines
3.3 KiB
Plaintext
109 lines
3.3 KiB
Plaintext
include::{generated}/meta/VK_EXT_vertex_attribute_divisor.txt[]
|
|
|
|
*Last Modified Date*::
|
|
2018-08-03
|
|
*IP Status*::
|
|
No known IP claims.
|
|
*Contributors*::
|
|
- Vikram Kushwaha, NVIDIA
|
|
- Jason Ekstrand, Intel
|
|
|
|
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 Object Types
|
|
|
|
None.
|
|
|
|
=== New Enum Constants
|
|
|
|
Extending elink:VkStructureType:
|
|
|
|
** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT
|
|
** ename:VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT
|
|
** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT
|
|
|
|
=== New Enums
|
|
|
|
None.
|
|
|
|
=== New Structures
|
|
|
|
* Extending slink:VkPipelineVertexInputStateCreateInfo:
|
|
** slink:VkPipelineVertexInputDivisorStateCreateInfoEXT
|
|
* slink:VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT
|
|
* slink:VkVertexInputBindingDivisorDescriptionEXT
|
|
* Extending slink:VkPhysicalDeviceFeatures2:
|
|
** slink:VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT
|
|
|
|
=== New Functions
|
|
|
|
None.
|
|
|
|
=== Issues
|
|
|
|
1) What is the effect of a non-zero value for pname:firstInstance?
|
|
|
|
*RESOLVED*: The Vulkan API should follow the OpenGL convention and offset
|
|
attribute fetching by pname: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:
|
|
|
|
|
|
[source,c++]
|
|
----------------------------------------
|
|
|
|
const VkVertexInputBindingDivisorDescriptionEXT divisorDesc =
|
|
{
|
|
0,
|
|
4
|
|
};
|
|
|
|
const VkPipelineVertexInputDivisorStateCreateInfoEXT divisorInfo =
|
|
{
|
|
VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT, // sType
|
|
NULL, // pNext
|
|
1, // vertexBindingDivisorCount
|
|
&divisorDesc // pVertexBindingDivisors
|
|
}
|
|
|
|
const VkVertexInputBindingDescription binding =
|
|
{
|
|
0, // binding
|
|
sizeof(Vertex), // stride
|
|
VK_VERTEX_INPUT_RATE_INSTANCE // inputRate
|
|
};
|
|
|
|
const VkPipelineVertexInputStateCreateInfo viInfo =
|
|
{
|
|
VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_CREATE_INFO, // sType
|
|
&divisorInfo, // pNext
|
|
...
|
|
};
|
|
//...
|
|
----------------------------------------
|
|
|
|
=== Version History
|
|
|
|
* Revision 1, 2017-12-04 (Vikram Kushwaha)
|
|
- First Version
|
|
* Revision 2, 2018-07-16 (Jason Ekstrand)
|
|
- Adjust the interaction between pname:divisor and pname: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.
|