mirror of
https://github.com/status-im/Vulkan-Docs.git
synced 2025-02-03 01:53:40 +00:00
e24e42dcff
* Update release number to 91. Public Issues: * Update Ubuntu subsystem build instructions in `BUILD.adoc` (public pull request 624). * Delete the `VK_KHR_mir_surface` extension from the Specification and XML, due to EOL of the only driver known to have supported it, and near-EOL of Mir itself (public issue 814). * Fix options for some figures that were using old ones (public pull request 841). * Fix various accidentally repeated words (public pull request 843). * Use `time.process_time()`, introduced in Python 3.3, in the scripts instead of `time.clock()`, which will be removed in Python 3.8 (public pull request 844). Internal Issues: * Update valid usage statements for `VK_ANDROID_external_memory_android_hardware_buffer` in slink:VkMemoryAllocateInfo, slink:VkImportAndroidHardwareBufferInfoANDROID, and flink:vkGetAndroidHardwareBufferPropertiesANDROID to actually be verifiable (internal issue 1419). * Update valid usage statements for `VK_ANDROID_external_memory_android_hardware_buffer` in slink:VkMemoryAllocateInfo, slink:VkImageCreateInfo, and slink:VkImageViewCreateInfo to move valid usage statements in doubly-nested bullet points up one level, accomodating limitations of the valid usage extraction script that creates `validusage.json` (internal issue 1434). * Fix typo etext:VK_ACCESS_SHADING_RATE_IMAGE_BIT_NV to the correct ename:VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV. * Add missing etext:VK_STRUCTURE_TYPE_* tokens to appendices for extensions missing them. New Extensions: * `VK_AMD_memory_overallocation_behavior` * `VK_NV_ray_tracing`, replacing `VK_NVX_raytracing`
109 lines
3.3 KiB
Plaintext
109 lines
3.3 KiB
Plaintext
include::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 fname: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.
|