Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Change log for May 5, 2024 Vulkan 1.3.284 spec update:
Public Issues * Refactor "`proposals`" into a separate Antora component "`features`" and refer to published proposals more consistently as "`feature descriptions`" (public PR 2361). Internal Issues * Partial synchronization with OpenXR scripts (internal MR 6419). * Refactor extensionmetadocgenerator.py to simplify adding new sections (internal MR 6624). * Restore structextends="VkPhysicalDeviceProperties2" back for VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT (internal MR 6631). New Extensions * VK_EXT_legacy_vertex_attributes
- Loading branch information
Showing
32 changed files
with
609 additions
and
233 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
// Copyright 2023-2024 The Khronos Group Inc. | ||
// | ||
// SPDX-License-Identifier: CC-BY-4.0 | ||
|
||
include::{generated}/meta/{refprefix}VK_EXT_legacy_vertex_attributes.adoc[] | ||
|
||
=== Other Extension Metadata | ||
|
||
*Last Modified Date*:: | ||
2024-02-23 | ||
*IP Status*:: | ||
No known IP claims. | ||
*Contributors*:: | ||
- Mike Blumenkrantz, Valve | ||
- Piers Daniell, NVIDIA | ||
- Spencer Fricke, LunarG | ||
- Alyssa Rosenzweig, Valve | ||
|
||
=== Description | ||
|
||
This extension adds support for legacy features of (non-64-bit) vertex | ||
attributes as found in OpenGL: | ||
|
||
- Vertex attributes loaded from arbitrary buffer alignments | ||
- Vertex attributes using arbitrary strides | ||
- Vertex attributes where the component data type of the binding does not | ||
match the component numeric type of the shader input | ||
|
||
These features are only usable with dynamic vertex input. | ||
Unaligned loads of vertex attributes may incur performance penalties, | ||
indicated with a property. | ||
|
||
include::{generated}/interfaces/VK_EXT_legacy_vertex_attributes.adoc[] | ||
|
||
=== Issues | ||
|
||
1.) Should implementations convert float/integer values? | ||
|
||
*RESOLVED*: No. | ||
When fetching an integer data type from float values or float data types | ||
from integer values, the resulting shader values are | ||
implementation-dependent. | ||
|
||
=== Version History | ||
|
||
* Revision 1, 2024-02-16 (Mike Blumenkrantz) | ||
** Initial revision |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
// Copyright 2024 The Khronos Group Inc. | ||
// | ||
// SPDX-License-Identifier: CC-BY-4.0 | ||
|
||
# VK_EXT_legacy_vertex_attributes | ||
:toc: left | ||
:refpage: https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/ | ||
:sectnums: | ||
|
||
This document proposes adding legacy features for vertex attributes as found in OpenGL. | ||
|
||
## Problem Statement | ||
|
||
OpenGL allows three features that Vulkan explicitly prohibits: | ||
|
||
- Vertex attributes loaded from arbitrary buffer alignments | ||
- Vertex attributes using arbitrary strides | ||
- Vertex attributes where the component data type of the binding does not match the component numeric type of the shader input | ||
|
||
This proposal aims to provide this legacy functionality for non-64-bit attributes. | ||
|
||
|
||
## Solution Space | ||
|
||
These legacy features can be emulated by rewriting vertex buffers and generating shader variants. Neither option | ||
is as optimal as having the underlying driver handle the functionality, where it may be a no-op. | ||
|
||
## Proposal | ||
|
||
### API Features | ||
|
||
The following features are exposed by this extension: | ||
|
||
[source,c] | ||
---- | ||
typedef struct VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT { | ||
VkStructureType sType; | ||
void* pNext; | ||
VkBool32 legacyVertexAttributes; | ||
} VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT; | ||
---- | ||
|
||
`legacyVertexAttributes` is the core feature enabling this extension's functionality. | ||
|
||
The following properties are exposed by this extension: | ||
|
||
[source,c] | ||
---- | ||
typedef struct VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT { | ||
VkStructureType sType; | ||
void* pNext; | ||
VkBool32 nativeUnalignedPerformance; | ||
} VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT; | ||
---- | ||
|
||
`nativeUnalignedPerformance` indicates that using unaligned vertex fetches on this implementation will not incur significant performance penalties. | ||
|
||
## Examples | ||
|
||
Enabling this feature allows the following example scenarios for a user with dynamic vertex input active: | ||
|
||
- Binding a vertex buffer at offset=7 | ||
- Binding a VK_FORMAT_R32_UINT attribute with stride=1 | ||
- Binding a VK_FORMAT_R8_UINT attribute and reading it as signed `int` in a shader | ||
|
||
## Issues | ||
|
||
|
||
### RESOLVED: Should implementations convert float/integer values? | ||
|
||
No. When fetching an integer data type from float values or float | ||
data types from integer values, the resulting shader values are | ||
implementation-dependent. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.