mirror of
https://github.com/status-im/Vulkan-Docs.git
synced 2025-02-25 04:25:12 +00:00
Change log for August 25, 2019 Vulkan 1.1.121 spec update:
* Update release number to 121. Github Issues: * Add missing `structextends` attribute in `vk.xml` for slink:VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR (public issue 1018). * Change attributes of flink:vkCmdCopyAccelerationStructureNV, flink:vkCmdWriteAccelerationStructuresPropertiesNV, flink:vkCmdBuildAccelerationStructureNV, and flink:vkCmdTraceRaysNV to require that these commands execute outside renderpasses (public issue 1021). * Add an issue to the `<<VK_EXT_buffer_device_address>>` appendix discussing the introduction of new names and aliasing by equivalent old names (public pull request 1024). Internal Issues: * Protect the `VK_KHR_sampler_mirror_clamp_to_edge` extension with asciidoctor conditionals, and remove it from the core-only specification builds, where it had previously been force-included in the Makefile. It is now treated like any other extension (internal issue 1776). * Edit some asciidoctor anchor names starting with `features-features-` to just start with `features-`, since the old chapters was split into 3 pieces. There are still some mild naming inconsistencies with anchors which may be addressed in the future (internal issue 1792). * Add `KHR` alias for the non-suffixed extension token ename:VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE, for compatibility with naming rules for extensions (internal issue 1796). * Clarify requirements for external memory in NOTEs for sname:VkExternalMemoryBufferCreateInfo, and valid usage statements for flink:vkBindBufferMemory, slink:VkBindBufferMemoryInfo, flink:vkBindImageMemory, and slink:VkBindImageMemoryInfo (internal merge request 3301). * Make extension version numbers in `vk.xml` and extension appendices consistent. In a few cases, we could not recover history at this granularity, and left the summary of a version's change undefined (internal merge request 3323). * Fix invocation of `CodeInlineMacro` in the Ruby extension backing the `code:` macro, which was delegating to the wrong base class (internal merge request 3331). * Modify `reg.py` to do a better job of recognizing equivalent <enum> definitions. * Add a `sortorder` attribute to XML feature and extension tags. New Extensions * `<<VK_AMD_device_coherent_memory>>`
This commit is contained in:
parent
042faea828
commit
59750fe4c7
@ -25,12 +25,12 @@ no MRs in flight that modify behavior defined by the extension and its
|
||||
dependencies. Delete any of the following preconditions that are not relevant to
|
||||
the extension in question_
|
||||
|
||||
|
||||
- [ ] VAP consulted to the extent the WG considers appropriate
|
||||
- [ ] CTS tests approved with three passing implementations
|
||||
- [ ] Vulkan API specification merged and stable in devel
|
||||
- [ ] SPIR-V specification merged and stable
|
||||
- [ ] GLSL specification merged and stable
|
||||
- [ ] Vulkan API specification merged and stable in devel (_MR_)
|
||||
- [ ] API spec naming review complete
|
||||
- [ ] CTS tests approved with three passing implementations (_gerrit cl_)
|
||||
- [ ] SPIR-V specification merged and stable (_MR_)
|
||||
- [ ] GLSL specification merged and stable (_MR_)
|
||||
|
||||
## Preconditions for submission to Promoters
|
||||
|
||||
@ -47,7 +47,6 @@ where indicated. Note that these are targets and may slip._
|
||||
- [ ] SPIR-V specification ratified by Promoters
|
||||
- [ ] GLSL specification ratified by Promoters
|
||||
- [ ] GLSLang implementation release schedule agreed: target _target-date_
|
||||
- [ ] Marketing summary written and approved by Vulkan WG and PR team
|
||||
- [ ] Validation layer implementation approved to merge
|
||||
- [ ] Loader support approved to merge (for instance extensions)
|
||||
- [ ] HLSL mapping defined
|
||||
|
@ -8,6 +8,59 @@ public pull requests that have been accepted.
|
||||
|
||||
-----------------------------------------------------
|
||||
|
||||
Change log for August 25, 2019 Vulkan 1.1.121 spec update:
|
||||
|
||||
* Update release number to 121.
|
||||
|
||||
Github Issues:
|
||||
|
||||
* Add missing `structextends` attribute in `vk.xml` for
|
||||
slink:VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR (public
|
||||
issue 1018).
|
||||
* Change attributes of flink:vkCmdCopyAccelerationStructureNV,
|
||||
flink:vkCmdWriteAccelerationStructuresPropertiesNV,
|
||||
flink:vkCmdBuildAccelerationStructureNV, and flink:vkCmdTraceRaysNV to
|
||||
require that these commands execute outside renderpasses (public issue
|
||||
1021).
|
||||
* Add an issue to the `<<VK_EXT_buffer_device_address>>` appendix
|
||||
discussing the introduction of new names and aliasing by equivalent old
|
||||
names (public pull request 1024).
|
||||
|
||||
Internal Issues:
|
||||
|
||||
* Protect the `VK_KHR_sampler_mirror_clamp_to_edge` extension with
|
||||
asciidoctor conditionals, and remove it from the core-only specification
|
||||
builds, where it had previously been force-included in the Makefile. It
|
||||
is now treated like any other extension (internal issue 1776).
|
||||
* Edit some asciidoctor anchor names starting with `features-features-` to
|
||||
just start with `features-`, since the old chapters was split into 3
|
||||
pieces. There are still some mild naming inconsistencies with anchors
|
||||
which may be addressed in the future (internal issue 1792).
|
||||
* Add `KHR` alias for the non-suffixed extension token
|
||||
ename:VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE, for compatibility
|
||||
with naming rules for extensions (internal issue 1796).
|
||||
* Clarify requirements for external memory in NOTEs for
|
||||
sname:VkExternalMemoryBufferCreateInfo, and valid usage statements for
|
||||
flink:vkBindBufferMemory, slink:VkBindBufferMemoryInfo,
|
||||
flink:vkBindImageMemory, and slink:VkBindImageMemoryInfo (internal merge
|
||||
request 3301).
|
||||
* Make extension version numbers in `vk.xml` and extension appendices
|
||||
consistent. In a few cases, we could not recover history at this
|
||||
granularity, and left the summary of a version's change undefined
|
||||
(internal merge request 3323).
|
||||
* Fix invocation of `CodeInlineMacro` in the Ruby extension backing the
|
||||
`code:` macro, which was delegating to the wrong base class (internal
|
||||
merge request 3331).
|
||||
* Modify `reg.py` to do a better job of recognizing equivalent <enum>
|
||||
definitions.
|
||||
* Add a `sortorder` attribute to XML feature and extension tags.
|
||||
|
||||
New Extensions
|
||||
|
||||
* `<<VK_AMD_device_coherent_memory>>`
|
||||
|
||||
-----------------------------------------------------
|
||||
|
||||
Change log for August 17, 2019 Vulkan 1.1.120 spec update:
|
||||
|
||||
* Update release number to 120.
|
||||
|
12
Makefile
12
Makefile
@ -23,11 +23,9 @@
|
||||
#
|
||||
# To build the specification and reference pages with optional
|
||||
# extensions included, set the $(EXTENSIONS) variable on the make
|
||||
# command line to a space-separated list of extension names. The
|
||||
# VK_KHR_sampler_mirror_clamp_to_edge extension which is a required part
|
||||
# of Vulkan 1.0, is always included. $(EXTENSIONS) is converted into
|
||||
# asciidoc and generator script arguments $(EXTATTRIBS) and
|
||||
# $(EXTOPTIONS).
|
||||
# command line to a space-separated list of extension names.
|
||||
# $(EXTENSIONS) is converted into asciidoc and generator script
|
||||
# arguments $(EXTATTRIBS) and $(EXTOPTIONS).
|
||||
|
||||
# If a recipe fails, delete its target file. Without this cleanup, the leftover
|
||||
# file from the failed recipe can falsely satisfy dependencies on subsequent
|
||||
@ -38,7 +36,7 @@ VERSIONS := VK_VERSION_1_0 VK_VERSION_1_1
|
||||
VERSIONATTRIBS := $(foreach version,$(VERSIONS),-a $(version))
|
||||
VERSIONOPTIONS := $(foreach version,$(VERSIONS),-feature $(version))
|
||||
|
||||
EXTS := $(sort VK_KHR_sampler_mirror_clamp_to_edge $(EXTENSIONS) $(DIFFEXTENSIONS))
|
||||
EXTS := $(sort $(EXTENSIONS) $(DIFFEXTENSIONS))
|
||||
EXTATTRIBS := $(foreach ext,$(EXTS),-a $(ext))
|
||||
EXTOPTIONS := $(foreach ext,$(EXTS),-extension $(ext))
|
||||
|
||||
@ -121,7 +119,7 @@ VERBOSE =
|
||||
# ADOCOPTS options for asciidoc->HTML5 output
|
||||
|
||||
NOTEOPTS = -a editing-notes -a implementation-guide
|
||||
PATCHVERSION = 120
|
||||
PATCHVERSION = 121
|
||||
ifneq (,$(findstring VK_VERSION_1_1,$(VERSIONS)))
|
||||
SPECREVISION = 1.1.$(PATCHVERSION)
|
||||
else
|
||||
|
32
appendices/VK_AMD_device_coherent_memory.txt
Normal file
32
appendices/VK_AMD_device_coherent_memory.txt
Normal file
@ -0,0 +1,32 @@
|
||||
include::meta/VK_AMD_device_coherent_memory.txt[]
|
||||
|
||||
*Last Modified Date*::
|
||||
2019-02-04
|
||||
*Contributors*::
|
||||
- Ping Fu, AMD
|
||||
- Timothy Lottes, AMD
|
||||
- Tobias Hector, AMD
|
||||
|
||||
This extension adds the device coherent and device uncached memory types.
|
||||
Any device accesses to device coherent memory are automatically made visible
|
||||
to any other device access.
|
||||
Device uncached memory indicates to applications that caches are disabled
|
||||
for a particular memory type, which guarantees device coherence.
|
||||
|
||||
Device coherent and uncached memory are expected to have lower performance
|
||||
for general access than non-device coherent memory, but can be useful in
|
||||
certain scenarios; particularly so for debugging.
|
||||
|
||||
=== New Enum Constants
|
||||
|
||||
* Extending elink:VkStructureType:
|
||||
** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD
|
||||
|
||||
* Extending elink:VkMemoryPropertyFlagBits:
|
||||
** ename:VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD
|
||||
** ename:VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD
|
||||
|
||||
=== Version History
|
||||
|
||||
* Revision 1, 2019-02-04 (Tobias Hector)
|
||||
- Initial revision
|
@ -156,3 +156,8 @@ In essence, these are new features added to a new Android API level, rather
|
||||
than new Vulkan features.
|
||||
The extension will only document how existing Vulkan features map to that
|
||||
new Android feature.
|
||||
|
||||
=== Version History
|
||||
|
||||
* Revision 1, 2018-03-04 (Jesse Hall)
|
||||
- Initial version
|
||||
|
@ -170,5 +170,7 @@ None.
|
||||
|
||||
=== Version History
|
||||
|
||||
* Revisions 1-2, 2017-06-12 (Jeff Bolz)
|
||||
* Revision 1, 2017-06-12 (Jeff Bolz)
|
||||
- Internal revisions
|
||||
* Revision 2, 2017-06-12 (Jeff Bolz)
|
||||
- Internal revisions
|
||||
|
@ -66,11 +66,19 @@ None
|
||||
|
||||
=== Issues
|
||||
|
||||
1) Where is VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT and VkPhysicalDeviceBufferAddressFeaturesEXT?
|
||||
1) Where is VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT
|
||||
and VkPhysicalDeviceBufferAddressFeaturesEXT?
|
||||
|
||||
*RESOLVED*: They were renamed as ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT and slink:VkPhysicalDeviceBufferDeviceAddressFeaturesEXT accordingly for consistency. Even though, the old names can still be found in the generated header files for compatibility.
|
||||
*RESOLVED*: They were renamed as
|
||||
ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT
|
||||
and slink:VkPhysicalDeviceBufferDeviceAddressFeaturesEXT accordingly for
|
||||
consistency.
|
||||
Even though, the old names can still be found in the generated header files
|
||||
for compatibility.
|
||||
|
||||
=== Version History
|
||||
|
||||
* Revision 1, 2018-11-01 (Jeff Bolz)
|
||||
- Internal revisions
|
||||
* Revision 2, 2019-01-06 (Jon Leech)
|
||||
- Minor updates to appendix for publication
|
||||
|
@ -98,3 +98,5 @@ None.
|
||||
|
||||
* Revision 1, 2017-07-26 (Jeff Bolz)
|
||||
- Internal revisions
|
||||
* Revision 2, 2017-10-02 (Jeff Bolz)
|
||||
- ???
|
||||
|
@ -1,7 +1,7 @@
|
||||
include::meta/VK_EXT_hdr_metadata.txt[]
|
||||
|
||||
*Last Modified Date*::
|
||||
2017-03-04
|
||||
2018-12-19
|
||||
*IP Status*::
|
||||
No known IP claims.
|
||||
*Contributors*::
|
||||
@ -59,6 +59,5 @@ application can track on its own.
|
||||
|
||||
* Revision 1, 2016-12-27 (Courtney Goeltzenleuchter)
|
||||
- Initial version
|
||||
|
||||
* Revision 2, 2018-12-19 (Courtney Goeltzenleuchter)
|
||||
- Correct implicit validity for VkHdrMetadataEXT structure
|
||||
|
@ -58,5 +58,5 @@ None
|
||||
|
||||
=== Version History
|
||||
|
||||
* Revision 1
|
||||
* Revision 1, 2019-03-21 (Ray Smith)
|
||||
- Initial draft
|
||||
|
@ -456,5 +456,5 @@ _requires_ the application to set pname:size to 0.
|
||||
|
||||
==== Version History
|
||||
|
||||
* Revision 1.0, 2018-08-29 (Chad Versace)
|
||||
* Revision 1, 2018-08-29 (Chad Versace)
|
||||
- First stable revision
|
||||
|
@ -5,7 +5,7 @@
|
||||
include::meta/VK_KHR_device_group.txt[]
|
||||
|
||||
*Last Modified Date*::
|
||||
2017-10-06
|
||||
2017-10-10
|
||||
*IP Status*::
|
||||
No known IP claims.
|
||||
*Interactions and External Dependencies*::
|
||||
|
@ -55,3 +55,8 @@ the core functionality.
|
||||
This extension borrows concepts, semantics, and language from
|
||||
`<<VK_KHR_external_semaphore>>`.
|
||||
That extension's issues apply equally to this extension.
|
||||
|
||||
=== Version History
|
||||
|
||||
* Revision 1, 2017-05-08 (Jesse Hall)
|
||||
- Initial revision
|
||||
|
@ -60,3 +60,8 @@ the core functionality.
|
||||
=== Issues
|
||||
|
||||
None.
|
||||
|
||||
=== Version History
|
||||
|
||||
* Revision 1, 2017-05-08 (Jesse Hall)
|
||||
- Initial version
|
||||
|
@ -48,3 +48,8 @@ None.
|
||||
This extension borrows concepts, semantics, and language from
|
||||
`<<VK_KHR_external_semaphore_fd>>`.
|
||||
That extension's issues apply equally to this extension.
|
||||
|
||||
=== Version History
|
||||
|
||||
* Revision 1, 2017-05-08 (Jesse Hall)
|
||||
- Initial revision
|
||||
|
@ -63,3 +63,8 @@ instead of a slink:VkFence, and applications can check status or wait on the
|
||||
D3D12 fence using non-Vulkan APIs.
|
||||
The convenience of being able to do these operations on sname:VkFence
|
||||
objects doesn't justify the extra API complexity.
|
||||
|
||||
=== Version History
|
||||
|
||||
* Revision 1, 2017-05-08 (Jesse Hall)
|
||||
- Initial revision
|
||||
|
@ -260,3 +260,8 @@ provided memory handle cannot be used to complete the requested import
|
||||
operation.
|
||||
However, implementations need not validate handles are of the exact type
|
||||
specified by the application.
|
||||
|
||||
=== Version History
|
||||
|
||||
* Revision 1, 2016-10-20 (James Jones)
|
||||
- Initial version
|
||||
|
@ -125,3 +125,8 @@ versions are not a currently supported configuration on the Windows OS.
|
||||
Should support for such configurations be introduced at the OS level,
|
||||
further Vulkan extensions would be needed to correlate userspace component
|
||||
builds.
|
||||
|
||||
=== Version History
|
||||
|
||||
* Revision 1, 2016-10-17 (James Jones)
|
||||
- Initial version
|
||||
|
@ -71,3 +71,8 @@ memory handles created outside of Vulkan be specified?
|
||||
handle.
|
||||
The size will be specified by future extensions that introduce such external
|
||||
memory handle types.
|
||||
|
||||
=== Version History
|
||||
|
||||
* Revision 1, 2016-10-21 (James Jones)
|
||||
- Initial revision
|
||||
|
@ -86,3 +86,8 @@ The size is determined by the associated image or buffer memory requirements
|
||||
for external handle types that require dedicated allocations, and by the
|
||||
size specified when creating the object from which the handle was exported
|
||||
for other external handle types.
|
||||
|
||||
=== Version History
|
||||
|
||||
* Revision 1, 2016-10-21 (James Jones)
|
||||
- Initial revision
|
||||
|
@ -76,3 +76,8 @@ provided semaphore state handle cannot be used to complete the requested
|
||||
import operation.
|
||||
However, implementations need not validate handles are of the exact type
|
||||
specified by the application.
|
||||
|
||||
=== Version History
|
||||
|
||||
* Revision 1, 2016-10-21 (James Jones)
|
||||
- Initial revision
|
||||
|
@ -56,3 +56,8 @@ The original type, enum and command names are still available as aliases of
|
||||
the core functionality.
|
||||
|
||||
=== Issues
|
||||
|
||||
=== Version History
|
||||
|
||||
* Revision 1, 2016-10-20 (James Jones)
|
||||
- Initial revision
|
||||
|
@ -54,3 +54,8 @@ application, and a successful import transfers it back to the driver.
|
||||
Destroying the original semaphore object will not close the file descriptor
|
||||
or remove its reference to the underlying semaphore resource associated with
|
||||
it.
|
||||
|
||||
=== Version History
|
||||
|
||||
* Revision 1, 2016-10-21 (Jesse Hall)
|
||||
- Initial revision
|
||||
|
@ -86,3 +86,8 @@ the former is a much simpler API.
|
||||
Since Vulkan tends to favor flexibility and consistency over simplicity, a
|
||||
new structure specifying D3D12 fence acquire and release values is added to
|
||||
the flink:vkQueueSubmit function.
|
||||
|
||||
=== Version History
|
||||
|
||||
* Revision 1, 2016-10-21 (James Jones)
|
||||
- Initial revision
|
||||
|
@ -46,3 +46,8 @@ None.
|
||||
None.
|
||||
|
||||
=== Issues
|
||||
|
||||
=== Version History
|
||||
|
||||
* Revision 1, 2017-03-20 (Jason Ekstrand)
|
||||
- Initial revision
|
||||
|
@ -5,9 +5,10 @@
|
||||
include::meta/VK_KHR_sampler_mirror_clamp_to_edge.txt[]
|
||||
|
||||
*Last Modified Date*::
|
||||
2016-02-16
|
||||
2019-08-17
|
||||
*Contributors*::
|
||||
- Tobias Hector, Imagination Technologies
|
||||
- Jon Leech, Khronos
|
||||
|
||||
`VK_KHR_sampler_mirror_clamp_to_edge` extends the set of sampler address
|
||||
modes to include an additional mode
|
||||
@ -49,7 +50,29 @@ Creating a sampler with the new address mode in each dimension
|
||||
&sampler);
|
||||
----------------------------------------
|
||||
|
||||
=== Issues
|
||||
|
||||
1) Why are both KHR and core versions of the
|
||||
ename:VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE token present?
|
||||
|
||||
*RESOLVED*: This functionality was intended to be required in Vulkan 1.0.
|
||||
We realized shortly before public release that not all implementations could
|
||||
support it, and moved the functionality into an optional extension, but did
|
||||
not apply the KHR extension suffix.
|
||||
Adding a KHR-suffixed alias of the non-suffixed enum has been done to comply
|
||||
with our own naming rules.
|
||||
|
||||
In a related change, before spec revision 1.1.121 this extension was
|
||||
hardwiring into the spec Makefile so it was always included with the
|
||||
Specification, even in the core-only versions.
|
||||
This has now been reverted, and it is treated as any other extension.
|
||||
|
||||
=== Version History
|
||||
|
||||
* Revision 1, 2016-02-16 (Tobias Hector)
|
||||
- Initial draft
|
||||
* Revision 2, 2019-08-14 (Jon Leech)
|
||||
- Add KHR-suffixed alias of non-suffixed enum.
|
||||
* Revision 3, 2019-08-17 (Jon Leech)
|
||||
- Add an issue explaining the reason for the extension API not being
|
||||
suffixed with KHR.
|
||||
|
@ -135,22 +135,22 @@ the core functionality.
|
||||
- Added query function, formats as RGB, clarifications
|
||||
* Revision 5, 2017-04 (Andrew Garrard)
|
||||
- Simplified query and removed output conversions
|
||||
* Version 6, 2017-4-24 (Andrew Garrard)
|
||||
* Revision 6, 2017-4-24 (Andrew Garrard)
|
||||
- Tidying, incorporated new image query, restored transfer functions
|
||||
* Version 7, 2017-04-25 (Andrew Garrard)
|
||||
* Revision 7, 2017-04-25 (Andrew Garrard)
|
||||
- Added cosited option/midpoint requirement for formats,
|
||||
"bypassConversion"
|
||||
* Version 8, 2017-04-25 (Andrew Garrard)
|
||||
* Revision 8, 2017-04-25 (Andrew Garrard)
|
||||
- Simplified further
|
||||
* Version 9, 2017-04-27 (Andrew Garrard)
|
||||
* Revision 9, 2017-04-27 (Andrew Garrard)
|
||||
- Disjoint no more
|
||||
* Version 10, 2017-04-28 (Andrew Garrard)
|
||||
* Revision 10, 2017-04-28 (Andrew Garrard)
|
||||
- Restored disjoint
|
||||
* Version 11, 2017-04-29 (Andrew Garrard)
|
||||
* Revision 11, 2017-04-29 (Andrew Garrard)
|
||||
- Now Ycbcr conversion, and KHR
|
||||
* Version 12, 2017-06-06 (Andrew Garrard)
|
||||
* Revision 12, 2017-06-06 (Andrew Garrard)
|
||||
- Added conversion to image view creation
|
||||
* Version 13, 2017-07-13 (Andrew Garrard)
|
||||
* Revision 13, 2017-07-13 (Andrew Garrard)
|
||||
- Allowed cosited-only chroma samples for formats
|
||||
* Version 14, 2017-08-11 (Andrew Garrard)
|
||||
* Revision 14, 2017-08-11 (Andrew Garrard)
|
||||
- Reflected quantization changes in BT.2100-1
|
||||
|
@ -52,3 +52,6 @@ change from version 2.
|
||||
|
||||
* Revision 1, 2018-06-24 (Jeff Bolz)
|
||||
- Initial draft
|
||||
* Revision 3, 2018-12-10 (Jeff Bolz)
|
||||
- Add vulkanMemoryModelAvailabilityVisibilityChains member to the
|
||||
VkPhysicalDeviceVulkanMemoryModelFeaturesKHR structure.
|
||||
|
@ -43,3 +43,8 @@ None.
|
||||
=== Issues
|
||||
|
||||
None.
|
||||
|
||||
=== Version History
|
||||
|
||||
* Revision 1, 2016-10-21 (James Jones)
|
||||
- Initial revision
|
||||
|
@ -113,3 +113,5 @@ UNRESOLVED: Probaby, but later.
|
||||
|
||||
* Revision 1, 2018-08-14 (Daniel Koch)
|
||||
- Internal revisions
|
||||
* Revision 2, 2018-08-14 (Daniel Koch)
|
||||
- ???
|
||||
|
@ -53,3 +53,5 @@ None yet!
|
||||
|
||||
* Revision 1, 2018-07-16 (Nuno Subtil)
|
||||
- Internal revisions
|
||||
* Revision 2, 2018-07-16 (Nuno Subtil)
|
||||
- ???
|
||||
|
@ -69,3 +69,8 @@ bitmask values in a single extension for now.
|
||||
Presumably more handle types could be added by separate extensions though,
|
||||
and it would be midly weird to have some platform-specific ones defined in
|
||||
the core spec and some in extensions
|
||||
|
||||
=== Version History
|
||||
|
||||
* Revision 1, 2016-08-19 (James Jones)
|
||||
- Initial version
|
||||
|
@ -1,7 +1,7 @@
|
||||
include::meta/VK_NV_shading_rate_image.txt[]
|
||||
|
||||
*Last Modified Date*::
|
||||
2018-09-13
|
||||
2019-07-18
|
||||
*Contributors*::
|
||||
- Pat Brown, NVIDIA
|
||||
- Carsten Rohde, NVIDIA
|
||||
@ -192,8 +192,9 @@ don't have a similar problem.
|
||||
|
||||
=== Version History
|
||||
|
||||
* Revision 3, 2019-07-18 (Mathias Schott)
|
||||
- Fully list extension interfaces in this appendix.
|
||||
* Revision 2, 2018-09-13 (Pat Brown)
|
||||
- Miscellaneous edits preparing the specification for publication.
|
||||
|
||||
* Revision 1, 2018-08-08 (Pat Brown)
|
||||
- Internal revisions
|
||||
|
@ -280,19 +280,19 @@ ifdef::VK_INTEL_shader_integer_functions2[]
|
||||
endif::VK_INTEL_shader_integer_functions2[]
|
||||
ifdef::VK_NV_shader_sm_builtins[]
|
||||
[[spirvenv-capabilities-table-shadersmbuiltins]]
|
||||
| code:ShaderSMBuiltinsNV | <<features-features-shadersmbuiltins,shaderSMBuiltins>>
|
||||
| code:ShaderSMBuiltinsNV | <<features-shadersmbuiltins,shaderSMBuiltins>>
|
||||
endif::VK_NV_shader_sm_builtins[]
|
||||
ifdef::VK_EXT_fragment_shader_interlock[]
|
||||
[[spirvenv-capabilities-table-fragmentShaderInterlock]]
|
||||
| code:FragmentShaderSampleInterlockEXT | <<features-features-fragmentShaderSampleInterlock,fragmentShaderSampleInterlock>>
|
||||
| code:FragmentShaderPixelInterlockEXT | <<features-features-fragmentShaderPixelInterlock,fragmentShaderPixelInterlock>>
|
||||
| code:FragmentShaderSampleInterlockEXT | <<features-fragmentShaderSampleInterlock,fragmentShaderSampleInterlock>>
|
||||
| code:FragmentShaderPixelInterlockEXT | <<features-fragmentShaderPixelInterlock,fragmentShaderPixelInterlock>>
|
||||
ifdef::VK_NV_shading_rate_image[]
|
||||
| code:FragmentShaderShadingRateInterlockEXT | <<features-features-fragmentShaderShadingRateInterlock,fragmentShaderShadingRateInterlock>>, <<features-shadingRateImage,shadingRateImage>>
|
||||
| code:FragmentShaderShadingRateInterlockEXT | <<features-fragmentShaderShadingRateInterlock,fragmentShaderShadingRateInterlock>>, <<features-shadingRateImage,shadingRateImage>>
|
||||
endif::VK_NV_shading_rate_image[]
|
||||
endif::VK_EXT_fragment_shader_interlock[]
|
||||
ifdef::VK_EXT_shader_demote_to_helper_invocation[]
|
||||
[[spirvenv-capabilities-table-demote]]
|
||||
| code:DemoteToHelperInvocationEXT | <<features-features-shaderDemoteToHelperInvocation,shaderDemoteToHelperInvocation>>
|
||||
| code:DemoteToHelperInvocationEXT | <<features-shaderDemoteToHelperInvocation,shaderDemoteToHelperInvocation>>
|
||||
endif::VK_EXT_shader_demote_to_helper_invocation[]
|
||||
|====
|
||||
|
||||
|
@ -421,17 +421,17 @@ called.
|
||||
The process to determine if the user's pname:pfnUserCallback is triggered
|
||||
when an event occurs is as follows:
|
||||
|
||||
. The implementation will perform a bitwise AND of the event's
|
||||
elink:VkDebugUtilsMessageSeverityFlagBitsEXT with the
|
||||
pname:messageSeverity provided during creation of the
|
||||
slink:VkDebugUtilsMessengerEXT object.
|
||||
.. If the value is 0, the message is skipped.
|
||||
. The implementation will perform bitwise AND of the event's
|
||||
elink:VkDebugUtilsMessageTypeFlagBitsEXT with the pname:messageType
|
||||
provided during the creation of the slink:VkDebugUtilsMessengerEXT
|
||||
object.
|
||||
.. If the value is 0, the message is skipped.
|
||||
. The callback will trigger a debug message for the current event
|
||||
. The implementation will perform a bitwise AND of the event's
|
||||
elink:VkDebugUtilsMessageSeverityFlagBitsEXT with the
|
||||
pname:messageSeverity provided during creation of the
|
||||
slink:VkDebugUtilsMessengerEXT object.
|
||||
.. If the value is 0, the message is skipped.
|
||||
. The implementation will perform bitwise AND of the event's
|
||||
elink:VkDebugUtilsMessageTypeFlagBitsEXT with the pname:messageType
|
||||
provided during the creation of the slink:VkDebugUtilsMessengerEXT
|
||||
object.
|
||||
.. If the value is 0, the message is skipped.
|
||||
. The callback will trigger a debug message for the current event
|
||||
|
||||
The callback will come directly from the component that detected the event,
|
||||
unless some other layer intercepts the calls for its own purposes (filter
|
||||
|
@ -1068,8 +1068,8 @@ The sname:VkPhysicalDeviceProtectedMemoryFeatures structure is defined as:
|
||||
|
||||
include::{generated}/api/structs/VkPhysicalDeviceProtectedMemoryFeatures.txt[]
|
||||
|
||||
* [[features-features-protectedMemory]] pname:protectedMemory specifies
|
||||
whether protected memory is supported.
|
||||
* [[features-protectedMemory]] pname:protectedMemory specifies whether
|
||||
protected memory is supported.
|
||||
|
||||
If the sname:VkPhysicalDeviceProtectedMemoryFeatures structure is included
|
||||
in the pname:pNext chain of slink:VkPhysicalDeviceFeatures2, it is filled
|
||||
@ -2036,15 +2036,15 @@ include::{generated}/api/structs/VkPhysicalDeviceFragmentShaderInterlockFeatures
|
||||
The members of the sname:VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT
|
||||
structure describe the following features:
|
||||
|
||||
* [[features-features-fragmentShaderSampleInterlock]]
|
||||
* [[features-fragmentShaderSampleInterlock]]
|
||||
pname:fragmentShaderSampleInterlock indicates that the implementation
|
||||
supports the code:FragmentShaderSampleInterlockEXT SPIR-V capability.
|
||||
|
||||
* [[features-features-fragmentShaderPixelInterlock]]
|
||||
* [[features-fragmentShaderPixelInterlock]]
|
||||
pname:fragmentShaderPixelInterlock indicates that the implementation
|
||||
supports the code:FragmentShaderPixelInterlockEXT SPIR-V capability.
|
||||
|
||||
* [[features-features-fragmentShaderShadingRateInterlock]]
|
||||
* [[features-fragmentShaderShadingRateInterlock]]
|
||||
pname:fragmentShaderShadingRateInterlock indicates that the
|
||||
implementation supports the code:FragmentShaderShadingRateInterlockEXT
|
||||
SPIR-V capability.
|
||||
@ -2186,8 +2186,8 @@ include::{generated}/api/structs/VkPhysicalDeviceCoverageReductionModeFeaturesNV
|
||||
The members of the sname:VkPhysicalDeviceCoverageReductionModeFeaturesNV
|
||||
structure describe the following features:
|
||||
|
||||
* [[features-features-coverageReductionMode]] pname:coverageReductionMode
|
||||
indicates whether the implementation supports coverage reduction modes.
|
||||
* [[features-coverageReductionMode]] pname:coverageReductionMode indicates
|
||||
whether the implementation supports coverage reduction modes.
|
||||
See <<fragops-coverage-reduction, Coverage Reduction>>.
|
||||
|
||||
If the sname:VkPhysicalDeviceCoverageReductionModeFeaturesNV structure is
|
||||
@ -2237,8 +2237,8 @@ include::{generated}/api/structs/VkPhysicalDeviceShaderSMBuiltinsFeaturesNV.txt[
|
||||
The members of the sname:VkPhysicalDeviceShaderSMBuiltinsFeaturesNV
|
||||
structure describe the following features:
|
||||
|
||||
* [[features-features-shadersmbuiltins]] pname:shaderSMBuiltins indicates
|
||||
whether the implementation supports the SPIR-V code:ShaderSMBuiltinsNV
|
||||
* [[features-shadersmbuiltins]] pname:shaderSMBuiltins indicates whether
|
||||
the implementation supports the SPIR-V code:ShaderSMBuiltinsNV
|
||||
capability.
|
||||
|
||||
If the sname:VkPhysicalDeviceShaderSMBuiltinsFeaturesNV structure is
|
||||
@ -2295,7 +2295,7 @@ The members of the
|
||||
sname:VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT structure
|
||||
describe the following features:
|
||||
|
||||
* [[features-features-shaderDemoteToHelperInvocation]]
|
||||
* [[features-shaderDemoteToHelperInvocation]]
|
||||
pname:shaderDemoteToHelperInvocation indicates whether the
|
||||
implementation supports the SPIR-V code:DemoteToHelperInvocationEXT
|
||||
capability.
|
||||
@ -2324,10 +2324,10 @@ include::{generated}/api/structs/VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT
|
||||
The members of the sname:VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT
|
||||
structure describe the following features:
|
||||
|
||||
* [[features-features-texelBufferAlignment]] pname:texelBufferAlignment
|
||||
indicates whether the implementation uses more specific alignment
|
||||
requirements advertised in
|
||||
slink:VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT rather than
|
||||
* [[features-texelBufferAlignment]] pname:texelBufferAlignment indicates
|
||||
whether the implementation uses more specific alignment requirements
|
||||
advertised in slink:VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT
|
||||
rather than
|
||||
slink:VkPhysicalDeviceLimits::pname:minTexelBufferOffsetAlignment.
|
||||
|
||||
If the sname:VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT structure is
|
||||
@ -2354,9 +2354,9 @@ The members of the
|
||||
sname:VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT structure
|
||||
describe the following features:
|
||||
|
||||
* [[features-features-textureCompressionASTC_HDR]]
|
||||
pname:textureCompressionASTC_HDR indicates whether all of the ASTC HDR
|
||||
compressed texture formats are supported.
|
||||
* [[features-textureCompressionASTC_HDR]] pname:textureCompressionASTC_HDR
|
||||
indicates whether all of the ASTC HDR compressed texture formats are
|
||||
supported.
|
||||
If this feature is enabled, then the
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT,
|
||||
ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT and
|
||||
@ -2404,28 +2404,28 @@ include::{generated}/api/structs/VkPhysicalDeviceLineRasterizationFeaturesEXT.tx
|
||||
The members of the sname:VkPhysicalDeviceLineRasterizationFeaturesEXT
|
||||
structure describe the following features:
|
||||
|
||||
* [[features-features-rectangularLines]] pname:rectangularLines indicates
|
||||
whether the implementation supports <<primsrast-lines,rectangular line
|
||||
* [[features-rectangularLines]] pname:rectangularLines indicates whether
|
||||
the implementation supports <<primsrast-lines,rectangular line
|
||||
rasterization>>.
|
||||
* [[features-features-bresenhamLines]] pname:bresenhamLines indicates
|
||||
whether the implementation supports
|
||||
<<primsrast-lines-bresenham,Bresenham-style line rasterization>>.
|
||||
* [[features-features-smoothLines]] pname:smoothLines indicates whether
|
||||
the implementation supports <<primsrast-lines-smooth,smooth line
|
||||
* [[features-bresenhamLines]] pname:bresenhamLines indicates whether the
|
||||
implementation supports <<primsrast-lines-bresenham,Bresenham-style line
|
||||
rasterization>>.
|
||||
* [[features-features-stippledRectangularLines]]
|
||||
pname:stippledRectangularLines indicates whether the implementation
|
||||
supports <<primsrast-lines-stipple,stippled line rasterization>> with
|
||||
* [[features-smoothLines]] pname:smoothLines indicates whether the
|
||||
implementation supports <<primsrast-lines-smooth,smooth line
|
||||
rasterization>>.
|
||||
* [[features-stippledRectangularLines]] pname:stippledRectangularLines
|
||||
indicates whether the implementation supports
|
||||
<<primsrast-lines-stipple,stippled line rasterization>> with
|
||||
ename:VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT lines, or with
|
||||
ename:VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT lines if
|
||||
slink:VkPhysicalDeviceLimits::pname:strictLines is ename:VK_TRUE.
|
||||
* [[features-features-stippledBresenhamLines]]
|
||||
pname:stippledBresenhamLines indicates whether the implementation
|
||||
supports <<primsrast-lines-stipple,stippled line rasterization>> with
|
||||
ename:VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT lines.
|
||||
* [[features-features-stippledSmoothLines]] pname:stippledSmoothLines
|
||||
* [[features-stippledBresenhamLines]] pname:stippledBresenhamLines
|
||||
indicates whether the implementation supports
|
||||
<<primsrast-lines-stipple,stippled line rasterization>> with
|
||||
ename:VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT lines.
|
||||
* [[features-stippledSmoothLines]] pname:stippledSmoothLines indicates
|
||||
whether the implementation supports <<primsrast-lines-stipple,stippled
|
||||
line rasterization>> with
|
||||
ename:VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT lines.
|
||||
|
||||
If the sname:VkPhysicalDeviceLineRasterizationFeaturesEXT structure is
|
||||
@ -2449,15 +2449,15 @@ include::{generated}/api/structs/VkPhysicalDeviceSubgroupSizeControlFeaturesEXT.
|
||||
The members of the sname:VkPhysicalDeviceSubgroupSizeControlFeaturesEXT
|
||||
structure describe the following features:
|
||||
|
||||
* [[features-features-subgroupSizeControl]] pname:subgroupSizeControl
|
||||
indicates whether the implementation supports controlling shader
|
||||
subgroup sizes via the
|
||||
* [[features-subgroupSizeControl]] pname:subgroupSizeControl indicates
|
||||
whether the implementation supports controlling shader subgroup sizes
|
||||
via the
|
||||
ename:VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT
|
||||
flag and the
|
||||
slink:VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT structure.
|
||||
* [[features-features-computeFullSubgroups]] pname:computeFullSubgroups
|
||||
indicates whether the implementation supports requiring full subgroups
|
||||
in compute shaders via the
|
||||
* [[features-computeFullSubgroups]] pname:computeFullSubgroups indicates
|
||||
whether the implementation supports requiring full subgroups in compute
|
||||
shaders via the
|
||||
ename:VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT
|
||||
flag.
|
||||
|
||||
@ -2489,6 +2489,27 @@ include::{generated}/validity/structs/VkPhysicalDeviceSubgroupSizeControlFeature
|
||||
endif::VK_EXT_subgroup_size_control[]
|
||||
|
||||
|
||||
ifdef::VK_AMD_device_coherent_memory[]
|
||||
|
||||
[open,refpage='VkPhysicalDeviceCoherentMemoryFeaturesAMD',desc='Structure describing whether device coherent memory can be supported by an implementation',type='structs']
|
||||
--
|
||||
The sname:VkPhysicalDeviceCoherentMemoryFeaturesAMD structure is defined as:
|
||||
|
||||
include::{generated}/api/structs/VkPhysicalDeviceCoherentMemoryFeaturesAMD.txt[]
|
||||
|
||||
The members of the sname:VkPhysicalDeviceCoherentMemoryFeaturesAMD structure
|
||||
describe the following features:
|
||||
|
||||
* [[features-deviceCoherentMemory]] pname:deviceCoherentMemory indicates
|
||||
that the implementation supports <<VkMemoryPropertyFlagBits,device
|
||||
coherent memory>>.
|
||||
|
||||
include::{generated}/validity/structs/VkPhysicalDeviceCoherentMemoryFeaturesAMD.txt[]
|
||||
--
|
||||
|
||||
endif::VK_AMD_device_coherent_memory[]
|
||||
|
||||
|
||||
[[features-requirements]]
|
||||
== Feature Requirements
|
||||
|
||||
@ -2563,10 +2584,10 @@ ifdef::VK_EXT_scalar_block_layout[]
|
||||
`<<VK_EXT_scalar_block_layout>>` extension is supported.
|
||||
endif::VK_EXT_scalar_block_layout[]
|
||||
ifdef::VK_EXT_subgroup_size_control[]
|
||||
* <<features-features-subgroupSizeControl, pname:subgroupSizeControl>>, if
|
||||
the `<<VK_EXT_subgroup_size_control>>` extension is supported.
|
||||
* <<features-features-computeFullSubgroups, pname:computeFullSubgroups>>,
|
||||
if the `<<VK_EXT_subgroup_size_control>>` extension is supported.
|
||||
* <<features-subgroupSizeControl, pname:subgroupSizeControl>>, if the
|
||||
`<<VK_EXT_subgroup_size_control>>` extension is supported.
|
||||
* <<features-computeFullSubgroups, pname:computeFullSubgroups>>, if the
|
||||
`<<VK_EXT_subgroup_size_control>>` extension is supported.
|
||||
endif::VK_EXT_subgroup_size_control[]
|
||||
|
||||
All other features defined in the Specification are optional:.
|
||||
|
@ -722,10 +722,10 @@ device memory.
|
||||
====
|
||||
|
||||
ifdef::VK_VERSION_1_1[]
|
||||
If the <<features-features-protectedMemory, protected memory>> feature is
|
||||
supported, the implementation provides additional guarantees when invalid
|
||||
usage occurs to prevent values in protected memory from being accessed or
|
||||
inferred outside of protected operations, as described in
|
||||
If the <<features-protectedMemory, protected memory>> feature is supported,
|
||||
the implementation provides additional guarantees when invalid usage occurs
|
||||
to prevent values in protected memory from being accessed or inferred
|
||||
outside of protected operations, as described in
|
||||
<<memory-protected-access-rules>>.
|
||||
endif::VK_VERSION_1_1[]
|
||||
|
||||
|
@ -560,8 +560,8 @@ range.
|
||||
in bytes, for the pname:offset member of the
|
||||
sname:VkBufferViewCreateInfo structure for texel buffers.
|
||||
ifdef::VK_EXT_texel_buffer_alignment[]
|
||||
If <<features-features-texelBufferAlignment,texelBufferAlignment>> is
|
||||
enabled, this limit is equivalent to the maximum of the
|
||||
If <<features-texelBufferAlignment,texelBufferAlignment>> is enabled,
|
||||
this limit is equivalent to the maximum of the
|
||||
<<limits-uniformTexelBufferOffsetAlignmentBytes,
|
||||
pname:uniformTexelBufferOffsetAlignmentBytes>> and
|
||||
<<limits-storageTexelBufferOffsetAlignmentBytes,
|
||||
@ -572,8 +572,8 @@ ifdef::VK_EXT_texel_buffer_alignment[]
|
||||
pname:storageTexelBufferOffsetSingleTexelAlignment>> and
|
||||
<<limits-uniformTexelBufferOffsetSingleTexelAlignment,
|
||||
pname:uniformTexelBufferOffsetSingleTexelAlignment>>.
|
||||
If <<features-features-texelBufferAlignment,texelBufferAlignment>> is
|
||||
not enabled,
|
||||
If <<features-texelBufferAlignment,texelBufferAlignment>> is not
|
||||
enabled,
|
||||
endif::VK_EXT_texel_buffer_alignment[]
|
||||
slink:VkBufferViewCreateInfo::pname:offset must: be a multiple of this
|
||||
value.
|
||||
|
@ -556,6 +556,49 @@ ifdef::VK_VERSION_1_1[]
|
||||
* ename:VK_MEMORY_PROPERTY_PROTECTED_BIT |
|
||||
ename:VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT
|
||||
endif::VK_VERSION_1_1[]
|
||||
ifdef::VK_AMD_device_coherent_memory[]
|
||||
* ename:VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | +
|
||||
ename:VK_MEMORY_PROPERTY_HOST_COHERENT_BIT | +
|
||||
ename:VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD
|
||||
* ename:VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | +
|
||||
ename:VK_MEMORY_PROPERTY_HOST_CACHED_BIT | +
|
||||
ename:VK_MEMORY_PROPERTY_HOST_COHERENT_BIT | +
|
||||
ename:VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD
|
||||
* ename:VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT | +
|
||||
ename:VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD
|
||||
* ename:VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT | +
|
||||
ename:VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | +
|
||||
ename:VK_MEMORY_PROPERTY_HOST_COHERENT_BIT | +
|
||||
ename:VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD
|
||||
* ename:VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT | +
|
||||
ename:VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | +
|
||||
ename:VK_MEMORY_PROPERTY_HOST_CACHED_BIT | +
|
||||
ename:VK_MEMORY_PROPERTY_HOST_COHERENT_BIT | +
|
||||
ename:VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD
|
||||
* ename:VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | +
|
||||
ename:VK_MEMORY_PROPERTY_HOST_COHERENT_BIT | +
|
||||
ename:VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD | +
|
||||
ename:VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD
|
||||
* ename:VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | +
|
||||
ename:VK_MEMORY_PROPERTY_HOST_CACHED_BIT | +
|
||||
ename:VK_MEMORY_PROPERTY_HOST_COHERENT_BIT | +
|
||||
ename:VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD | +
|
||||
ename:VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD
|
||||
* ename:VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT | +
|
||||
ename:VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD | +
|
||||
ename:VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD
|
||||
* ename:VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT | +
|
||||
ename:VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | +
|
||||
ename:VK_MEMORY_PROPERTY_HOST_COHERENT_BIT | +
|
||||
ename:VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD | +
|
||||
ename:VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD
|
||||
* ename:VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT | +
|
||||
ename:VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | +
|
||||
ename:VK_MEMORY_PROPERTY_HOST_CACHED_BIT | +
|
||||
ename:VK_MEMORY_PROPERTY_HOST_COHERENT_BIT | +
|
||||
ename:VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD | +
|
||||
ename:VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD
|
||||
endif::VK_AMD_device_coherent_memory[]
|
||||
|
||||
There must: be at least one memory type with both the
|
||||
ename:VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT and
|
||||
@ -564,16 +607,28 @@ pname:propertyFlags.
|
||||
There must: be at least one memory type with the
|
||||
ename:VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT bit set in its
|
||||
pname:propertyFlags.
|
||||
ifdef::VK_AMD_device_coherent_memory[]
|
||||
If the <<features-deviceCoherentMemory, pname:deviceCoherentMemory>> feature
|
||||
is enabled, there must: be at least one memory type with the
|
||||
ename:VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD bit set in its
|
||||
pname:propertyFlags.
|
||||
endif::VK_AMD_device_coherent_memory[]
|
||||
|
||||
For each pair of elements *X* and *Y* returned in pname:memoryTypes, *X*
|
||||
must: be placed at a lower index position than *Y* if:
|
||||
|
||||
* either the set of bit flags returned in the pname:propertyFlags member
|
||||
of *X* is a strict subset of the set of bit flags returned in the
|
||||
pname:propertyFlags member of *Y*.
|
||||
* or the pname:propertyFlags members of *X* and *Y* are equal, and *X*
|
||||
pname:propertyFlags member of *Y*; or
|
||||
* the pname:propertyFlags members of *X* and *Y* are equal, and *X*
|
||||
belongs to a memory heap with greater performance (as determined in an
|
||||
implementation-specific manner).
|
||||
implementation-specific manner)
|
||||
ifdef::VK_AMD_device_coherent_memory[]
|
||||
; or
|
||||
* or the pname:propertyFlags members of *X* includes
|
||||
ename:VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD or
|
||||
ename:VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD and *Y* does not
|
||||
endif::VK_AMD_device_coherent_memory[]
|
||||
|
||||
[NOTE]
|
||||
.Note
|
||||
@ -588,6 +643,13 @@ But if instead ename:VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT was before
|
||||
ename:VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT |
|
||||
ename:VK_MEMORY_PROPERTY_HOST_COHERENT_BIT, the list would still be in a
|
||||
valid order.
|
||||
ifdef::VK_AMD_device_coherent_memory[]
|
||||
|
||||
There may be a performance penalty for using device coherent or uncached
|
||||
device memory types, and using these accidentally is undesirable.
|
||||
In order to avoid this, memory types with these properties always appear at
|
||||
the end of the list; but are subject to the same rules otherwise.
|
||||
endif::VK_AMD_device_coherent_memory[]
|
||||
====
|
||||
|
||||
This ordering requirement enables applications to use a simple search loop
|
||||
@ -790,9 +852,41 @@ ifdef::VK_VERSION_1_1[]
|
||||
ename:VK_MEMORY_PROPERTY_HOST_COHERENT_BIT set, or
|
||||
ename:VK_MEMORY_PROPERTY_HOST_CACHED_BIT set.
|
||||
endif::VK_VERSION_1_1[]
|
||||
ifdef::VK_AMD_device_coherent_memory[]
|
||||
* ename:VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD bit specifies that
|
||||
device accesses to allocations of this memory type are automatically
|
||||
made available and visible.
|
||||
* ename:VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD bit specifies that
|
||||
memory allocated with this type is not cached on the device.
|
||||
Uncached device memory is always device coherent.
|
||||
endif::VK_AMD_device_coherent_memory[]
|
||||
|
||||
ifdef::VK_AMD_device_coherent_memory[]
|
||||
For any memory allocated with both the
|
||||
ename:VK_MEMORY_PROPERTY_HOST_COHERENT_BIT and the
|
||||
ename:VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD, host or device accesses
|
||||
also perform automatic memory domain transfer operations, such that writes
|
||||
are always automatically available and visible to both host and device
|
||||
memory domains.
|
||||
|
||||
[NOTE]
|
||||
.Note
|
||||
====
|
||||
Device coherence is a useful property for certain debugging use cases (e.g.
|
||||
crash analysis, where performing separate coherence actions could mean
|
||||
values are not reported correctly).
|
||||
However, device coherent accesses may be slower than equivalent accesses
|
||||
without device coherence, particularly if they are also device uncached.
|
||||
For device uncached memory in particular, repeated accesses to the same or
|
||||
neighbouring memory locations over a short time period (e.g. within a frame)
|
||||
may be slower than it would be for the equivalent cached memory type.
|
||||
As such, it's generally inadvisable to use device coherent or device
|
||||
uncached memory except when really needed.
|
||||
====
|
||||
endif::VK_AMD_device_coherent_memory[]
|
||||
--
|
||||
|
||||
|
||||
[open,refpage='VkMemoryPropertyFlags',desc='Bitmask of VkMemoryPropertyFlagBits',type='flags']
|
||||
--
|
||||
include::{generated}/api/flags/VkMemoryPropertyFlags.txt[]
|
||||
@ -945,6 +1039,13 @@ endif::VK_AMD_memory_overallocation_behavior[]
|
||||
slink:VkPhysicalDeviceMemoryProperties::pname:memoryTypeCount as
|
||||
returned by flink:vkGetPhysicalDeviceMemoryProperties for the
|
||||
slink:VkPhysicalDevice that pname:device was created from.
|
||||
ifdef::VK_AMD_device_coherent_memory[]
|
||||
* [[VUID-vkAllocateMemory-deviceCoherentMemory-02790]]
|
||||
If the <<features-deviceCoherentMemory,pname:deviceCoherentMemory>>
|
||||
feature is not enabled, pname:pAllocateInfo\->pname:memoryTypeIndex
|
||||
must: not identify a memory type supporting
|
||||
ename:VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD
|
||||
endif::VK_AMD_device_coherent_memory[]
|
||||
****
|
||||
|
||||
include::{generated}/validity/protos/vkAllocateMemory.txt[]
|
||||
|
@ -387,12 +387,12 @@ ifdef::VK_EXT_subgroup_size_control[]
|
||||
* [[VUID-VkPipelineShaderStageCreateInfo-flags-02784]]
|
||||
If pname:flags has the
|
||||
ename:VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT
|
||||
flag set, the <<features-features-subgroupSizeControl,
|
||||
flag set, the <<features-subgroupSizeControl,
|
||||
pname:subgroupSizeControl>> feature must: be enabled.
|
||||
* [[VUID-VkPipelineShaderStageCreateInfo-flags-02785]]
|
||||
If pname:flags has the
|
||||
ename:VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT
|
||||
flag set, the <<features-features-computeFullSubgroups,
|
||||
flag set, the <<features-computeFullSubgroups,
|
||||
pname:computeFullSubgroups>> feature must: be enabled.
|
||||
* [[VUID-VkPipelineShaderStageCreateInfo-pNext-02754]]
|
||||
If a slink:VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT
|
||||
@ -401,10 +401,10 @@ ifdef::VK_EXT_subgroup_size_control[]
|
||||
flag set.
|
||||
* [[VUID-VkPipelineShaderStageCreateInfo-pNext-02755]]
|
||||
If a slink:VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT
|
||||
structure is chained to pname:pNext, the
|
||||
<<features-features-subgroupSizeControl, pname:subgroupSizeControl>>
|
||||
feature must: be enabled, and pname:stage must: be a valid bit specified
|
||||
in <<limits-required-subgroup-size-stages,
|
||||
structure is chained to pname:pNext, the <<features-subgroupSizeControl,
|
||||
pname:subgroupSizeControl>> feature must: be enabled, and pname:stage
|
||||
must: be a valid bit specified in
|
||||
<<limits-required-subgroup-size-stages,
|
||||
pname:requiredSubgroupSizeStages>>.
|
||||
* [[VUID-VkPipelineShaderStageCreateInfo-pNext-02756]]
|
||||
If a slink:VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT
|
||||
|
@ -359,6 +359,14 @@ or the equivalent
|
||||
include::{generated}/api/structs/VkExternalMemoryBufferCreateInfoKHR.txt[]
|
||||
endif::VK_KHR_external_memory[]
|
||||
|
||||
[NOTE]
|
||||
.Note
|
||||
====
|
||||
An instance of sname:VkExternalMemoryBufferCreateInfo must be included in
|
||||
the creation parameters for a buffer that will be bound to memory that is
|
||||
either exported or imported.
|
||||
====
|
||||
|
||||
* pname:sType is the type of this structure.
|
||||
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
|
||||
* pname:handleTypes is a bitmask of
|
||||
@ -521,8 +529,8 @@ include::{generated}/api/structs/VkBufferViewCreateInfo.txt[]
|
||||
* [[VUID-VkBufferViewCreateInfo-offset-00925]]
|
||||
pname:offset must: be less than the size of pname:buffer
|
||||
* [[VUID-VkBufferViewCreateInfo-offset-02749]]
|
||||
If the <<features-features-texelBufferAlignment,texelBufferAlignment>>
|
||||
feature is not enabled, pname:offset must: be a multiple of
|
||||
If the <<features-texelBufferAlignment,texelBufferAlignment>> feature is
|
||||
not enabled, pname:offset must: be a multiple of
|
||||
sname:VkPhysicalDeviceLimits::pname:minTexelBufferOffsetAlignment
|
||||
* [[VUID-VkBufferViewCreateInfo-range-00928]]
|
||||
If pname:range is not equal to ename:VK_WHOLE_SIZE, pname:range must: be
|
||||
@ -563,10 +571,10 @@ include::{generated}/api/structs/VkBufferViewCreateInfo.txt[]
|
||||
contiguously to a single sname:VkDeviceMemory object
|
||||
ifdef::VK_EXT_texel_buffer_alignment[]
|
||||
* [[VUID-VkBufferViewCreateInfo-buffer-02750]]
|
||||
If the <<features-features-texelBufferAlignment,texelBufferAlignment>>
|
||||
feature is enabled and if pname:buffer was created with pname:usage
|
||||
containing ename:VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT, pname:offset
|
||||
must: be a multiple of the lesser of
|
||||
If the <<features-texelBufferAlignment,texelBufferAlignment>> feature is
|
||||
enabled and if pname:buffer was created with pname:usage containing
|
||||
ename:VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT, pname:offset must: be a
|
||||
multiple of the lesser of
|
||||
slink:VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT::pname:storageTexelBufferOffsetAlignmentBytes
|
||||
or, if
|
||||
slink:VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT::pname:storageTexelBufferOffsetSingleTexelAlignment
|
||||
@ -574,10 +582,10 @@ ifdef::VK_EXT_texel_buffer_alignment[]
|
||||
If the size of a texel is a multiple of three bytes, then the size of a
|
||||
single component of pname:format is used instead
|
||||
* [[VUID-VkBufferViewCreateInfo-buffer-02751]]
|
||||
If the <<features-features-texelBufferAlignment,texelBufferAlignment>>
|
||||
feature is enabled and if pname:buffer was created with pname:usage
|
||||
containing ename:VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT, pname:offset
|
||||
must: be a multiple of the lesser of
|
||||
If the <<features-texelBufferAlignment,texelBufferAlignment>> feature is
|
||||
enabled and if pname:buffer was created with pname:usage containing
|
||||
ename:VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT, pname:offset must: be a
|
||||
multiple of the lesser of
|
||||
slink:VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT::pname:uniformTexelBufferOffsetAlignmentBytes
|
||||
or, if
|
||||
slink:VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT::pname:uniformTexelBufferOffsetSingleTexelAlignment
|
||||
@ -1570,6 +1578,14 @@ or the equivalent
|
||||
include::{generated}/api/structs/VkExternalMemoryImageCreateInfoKHR.txt[]
|
||||
endif::VK_KHR_external_memory[]
|
||||
|
||||
[NOTE]
|
||||
.Note
|
||||
====
|
||||
An instance of sname:VkExternalMemoryImageCreateInfo must be included in the
|
||||
creation parameters for an image that will be bound to memory that is either
|
||||
exported or imported.
|
||||
====
|
||||
|
||||
* pname:sType is the type of this structure.
|
||||
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
|
||||
* pname:handleTypes is a bitmask of
|
||||
@ -4646,16 +4662,16 @@ endif::VK_VERSION_1_1,VK_KHR_dedicated_allocation[]
|
||||
endif::VK_NV_dedicated_allocation[]
|
||||
ifdef::VK_VERSION_1_1,VK_KHR_external_memory[]
|
||||
* [[VUID-vkBindBufferMemory-memory-02726]]
|
||||
If pname:memory was allocated with
|
||||
slink:VkExportMemoryAllocateInfo::pname:handleTypes not equal to `0`, at
|
||||
least one handle type it contained must also have been set in
|
||||
If the value of slink:VkExportMemoryAllocateInfo::pname:handleTypes used
|
||||
to allocate pname:memory is not `0`, it must: include at least one of
|
||||
the handles set in
|
||||
slink:VkExternalMemoryBufferCreateInfo::pname:handleTypes when
|
||||
pname:buffer was created.
|
||||
pname:buffer was created
|
||||
* [[VUID-vkBindBufferMemory-memory-02727]]
|
||||
If pname:memory was created by a memory import operation, the external
|
||||
handle type of the imported memory must also have been set in
|
||||
handle type of the imported memory must: also have been set in
|
||||
slink:VkExternalMemoryBufferCreateInfo::pname:handleTypes when
|
||||
pname:buffer was created.
|
||||
pname:buffer was created
|
||||
endif::VK_VERSION_1_1,VK_KHR_external_memory[]
|
||||
****
|
||||
|
||||
@ -4780,6 +4796,19 @@ ifdef::VK_VERSION_1_1,VK_KHR_device_group[]
|
||||
slink:VkBindBufferMemoryDeviceGroupInfo::pname:pDeviceIndices must: have
|
||||
been allocated
|
||||
endif::VK_VERSION_1_1,VK_KHR_device_group[]
|
||||
ifdef::VK_VERSION_1_1,VK_KHR_external_memory[]
|
||||
* [[VUID-VkBindBufferMemoryInfo-handleTypes-02791]]
|
||||
If the value of slink:VkExportMemoryAllocateInfo::pname:handleTypes used
|
||||
to allocate pname:memory is not `0`, it must: include at least one of
|
||||
the handles set in
|
||||
slink:VkExternalMemoryImageCreateInfo::pname:handleTypes when
|
||||
pname:image was created
|
||||
* [[VUID-VkBindBufferMemoryInfo-memory-02792]]
|
||||
If pname:memory was created by a memory import operation, the external
|
||||
handle type of the imported memory must: also have been set in
|
||||
slink:VkExternalMemoryBufferCreateInfo::pname:handleTypes when
|
||||
pname:buffer was created
|
||||
endif::VK_VERSION_1_1,VK_KHR_external_memory[]
|
||||
****
|
||||
|
||||
include::{generated}/validity/structs/VkBindBufferMemoryInfo.txt[]
|
||||
@ -4918,7 +4947,7 @@ ifndef::VK_NV_dedicated_allocation_image_aliasing[]
|
||||
slink:VkMemoryDedicatedAllocateInfo::pname:image was not
|
||||
dlink:VK_NULL_HANDLE, then pname:image must: equal
|
||||
slink:VkMemoryDedicatedAllocateInfo::pname:image and pname:memoryOffset
|
||||
must: be zero.
|
||||
must: be zero
|
||||
endif::VK_NV_dedicated_allocation_image_aliasing[]
|
||||
ifdef::VK_NV_dedicated_allocation_image_aliasing[]
|
||||
* [[VUID-vkBindImageMemory-memory-02628]]
|
||||
@ -4976,16 +5005,16 @@ endif::VK_VERSION_1_1,VK_KHR_dedicated_allocation[]
|
||||
endif::VK_NV_dedicated_allocation[]
|
||||
ifdef::VK_VERSION_1_1,VK_KHR_external_memory[]
|
||||
* [[VUID-vkBindImageMemory-memory-02728]]
|
||||
If pname:memory was allocated with
|
||||
slink:VkExportMemoryAllocateInfo::pname:handleTypes not equal to `0`, at
|
||||
least one handle type it contained must also have been set in
|
||||
If the value of slink:VkExportMemoryAllocateInfo::pname:handleTypes used
|
||||
to allocate pname:memory is not `0`, it must: include at least one of
|
||||
the handles set in
|
||||
slink:VkExternalMemoryImageCreateInfo::pname:handleTypes when
|
||||
pname:image was created.
|
||||
pname:image was created
|
||||
* [[VUID-vkBindImageMemory-memory-02729]]
|
||||
If pname:memory was created by a memory import operation, the external
|
||||
handle type of the imported memory must also have been set in
|
||||
handle type of the imported memory must: also have been set in
|
||||
slink:VkExternalMemoryImageCreateInfo::pname:handleTypes when
|
||||
pname:image was created.
|
||||
pname:image was created
|
||||
endif::VK_VERSION_1_1,VK_KHR_external_memory[]
|
||||
****
|
||||
|
||||
@ -5233,6 +5262,19 @@ ifdef::VK_KHR_swapchain[]
|
||||
slink:VkDeviceMemory handle
|
||||
endif::VK_KHR_swapchain[]
|
||||
endif::VK_VERSION_1_1,VK_KHR_device_group[]
|
||||
ifdef::VK_VERSION_1_1,VK_KHR_external_memory[]
|
||||
* [[VUID-VkBindImageMemoryInfo-handleTypes-02793]]
|
||||
If the value of slink:VkExportMemoryAllocateInfo::pname:handleTypes used
|
||||
to allocate pname:memory is not `0`, it must: include at least one of
|
||||
the handles set in
|
||||
slink:VkExternalMemoryImageCreateInfo::pname:handleTypes when
|
||||
pname:image was created
|
||||
* [[VUID-VkBindImageMemoryInfo-memory-02794]]
|
||||
If pname:memory was created by a memory import operation, the external
|
||||
handle type of the imported memory must: also have been set in
|
||||
slink:VkExternalMemoryImageCreateInfo::pname:handleTypes when
|
||||
pname:image was created
|
||||
endif::VK_VERSION_1_1,VK_KHR_external_memory[]
|
||||
****
|
||||
|
||||
include::{generated}/validity/structs/VkBindImageMemoryInfo.txt[]
|
||||
|
@ -404,11 +404,12 @@ include::{generated}/api/enums/VkSamplerAddressMode.txt[]
|
||||
edge wrap mode will be used.
|
||||
* ename:VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER specifies that the clamp
|
||||
to border wrap mode will be used.
|
||||
ifdef::VK_KHR_sampler_mirror_clamp_to_edge[]
|
||||
* ename:VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE specifies that the
|
||||
mirror clamp to edge wrap mode will be used.
|
||||
This is only valid if the `<<VK_KHR_sampler_mirror_clamp_to_edge>>`
|
||||
extension is enabled.
|
||||
|
||||
endif::VK_KHR_sampler_mirror_clamp_to_edge[]
|
||||
--
|
||||
|
||||
[open,refpage='VkBorderColor',desc='Specify border color used for texture lookups',type='enums']
|
||||
|
@ -668,11 +668,10 @@ ifdef::VK_EXT_fragment_shader_interlock[]
|
||||
In normal operation, it is possible for more than one fragment shader
|
||||
invocation to be executed simultaneously for the same pixel if there are
|
||||
overlapping primitives.
|
||||
If the <<features-features-fragmentShaderSampleInterlock,
|
||||
fragmentShaderSampleInterlock>>,
|
||||
<<features-features-fragmentShaderPixelInterlock,
|
||||
If the <<features-fragmentShaderSampleInterlock,
|
||||
fragmentShaderSampleInterlock>>, <<features-fragmentShaderPixelInterlock,
|
||||
fragmentShaderPixelInterlock>>, or
|
||||
<<features-features-fragmentShaderShadingRateInterlock,
|
||||
<<features-fragmentShaderShadingRateInterlock,
|
||||
fragmentShaderShadingRateInterlock>> features are enabled, it is possible to
|
||||
define a critical section within the fragment shader that is guaranteed to
|
||||
not run simultaneously with another fragment shader invocation for the same
|
||||
|
@ -207,7 +207,7 @@ class BasetypeInlineMacro < CodeInlineMacroBase
|
||||
match /basetype:(\w+)/
|
||||
end
|
||||
|
||||
class CodeInlineMacro < StrongInlineMacroBase
|
||||
class CodeInlineMacro < CodeInlineMacroBase
|
||||
named :code
|
||||
match /code:(\w+(\.\w+)*)/
|
||||
end
|
||||
|
10
registry.txt
10
registry.txt
@ -988,6 +988,10 @@ version.
|
||||
inclusion. Example: `"VK_VERSION_1_0"`.
|
||||
* attr:number - required. Feature version number, usually a string
|
||||
interpreted as `majorNumber.minorNumber`. Example: `4.2`.
|
||||
* attr:sortorder - optional. A decimal number which specifies an order
|
||||
relative to other tag:feature tags when calling output generators.
|
||||
Defaults to `0`. Rarely used, for when ordering by attr:name is
|
||||
insufficient.
|
||||
* attr:protect - optional. An additional preprocessor token used to
|
||||
protect a feature definition. Usually another feature or extension
|
||||
attr:name. Rarely used, for odd circumstances where the definition
|
||||
@ -1082,6 +1086,10 @@ be implemented against.
|
||||
the Vulkan Specification. Example: `name="VK_VERSION_1_0"`.
|
||||
* attr:number - required. A decimal number which is the registered,
|
||||
unique extension number for attr:name.
|
||||
* attr:sortorder - optional. A decimal number which specifies an order
|
||||
relative to other tag:extension tags when calling output generators.
|
||||
Defaults to `0`. Rarely used, for when ordering by attr:number is
|
||||
insufficient.
|
||||
* attr:author - optional. The author name, such as a full company
|
||||
name. If not present, this can be taken from the corresponding
|
||||
tag:tag attribute. However, `EXT` and other multi-vendor extensions
|
||||
@ -2021,6 +2029,8 @@ files and Python scripts are logged in Github history.
|
||||
[[changelog]]
|
||||
= Change Log
|
||||
|
||||
* 2019-08-25 - Add attr:sortorder attribute to tag:feature and
|
||||
tag:extension tags.
|
||||
* 2018-12-06 - Specify that command aliases are not guaranteed to resolve
|
||||
to the same entry point in the underlying layer stack, matching a
|
||||
related clarification in the Vulkan Specification.
|
||||
|
@ -121,14 +121,16 @@ class DocOutputGenerator(OutputGenerator):
|
||||
def beginFeature(self, interface, emit):
|
||||
# Start processing in superclass
|
||||
OutputGenerator.beginFeature(self, interface, emit)
|
||||
# Verify that each extension has a unique number during doc generation
|
||||
extension_number = interface.get('number')
|
||||
if extension_number is not None and extension_number != "0":
|
||||
if extension_number in self.extension_numbers:
|
||||
self.logMsg('error', 'Duplicate extension number ', extension_number, ' detected in feature ', interface.get('name'), '\n')
|
||||
exit(1)
|
||||
else:
|
||||
self.extension_numbers.add(extension_number)
|
||||
# Verify that each <extension> has a unique number during doc
|
||||
# generation
|
||||
if interface.tag == 'extension':
|
||||
extension_number = interface.get('number')
|
||||
if extension_number is not None and extension_number != "0":
|
||||
if extension_number in self.extension_numbers:
|
||||
self.logMsg('error', 'Duplicate extension number ', extension_number, ' detected in feature ', interface.get('name'), '\n')
|
||||
exit(1)
|
||||
else:
|
||||
self.extension_numbers.add(extension_number)
|
||||
|
||||
def endFeature(self):
|
||||
# Finish processing in superclass
|
||||
|
@ -43,6 +43,17 @@ def noneStr(s):
|
||||
return s
|
||||
return ""
|
||||
|
||||
# noneInt - returns string argument as an integer, or default if argument is
|
||||
# None.
|
||||
# Used in converting etree Elements into integers.
|
||||
# s - string to convert
|
||||
# default - default value
|
||||
def noneInt(s, default = 0):
|
||||
if s:
|
||||
return int(s)
|
||||
else:
|
||||
return default
|
||||
|
||||
# enquote - returns string argument with surrounding quotes,
|
||||
# for serialization into Python code.
|
||||
def enquote(s):
|
||||
@ -50,7 +61,7 @@ def enquote(s):
|
||||
return "'{}'".format(s)
|
||||
return None
|
||||
|
||||
# Primary sort key for regSortFeatures.
|
||||
# 1st sort key for regSortFeatures.
|
||||
# Sorts by category of the feature name string:
|
||||
# Core API features (those defined with a <feature> tag)
|
||||
# ARB/KHR/OES (Khronos extensions)
|
||||
@ -66,31 +77,32 @@ def regSortCategoryKey(feature):
|
||||
|
||||
return 2
|
||||
|
||||
# Secondary sort key for regSortFeatures.
|
||||
# Sorts by extension name.
|
||||
def regSortNameKey(feature):
|
||||
return feature.name
|
||||
# 2nd sort key for regSortFeatures.
|
||||
# Sorts by sortorder attribute
|
||||
def regSortOrderKey(feature):
|
||||
return feature.sortorder
|
||||
|
||||
# Second sort key for regSortFeatures.
|
||||
# 3rd sort key for regSortFeatures.
|
||||
# Sorts by feature version. <extension> elements all have version number "0"
|
||||
def regSortFeatureVersionKey(feature):
|
||||
return float(feature.versionNumber)
|
||||
|
||||
# Tertiary sort key for regSortFeatures.
|
||||
# 4th sort key for regSortFeatures.
|
||||
# Sorts by extension number. <feature> elements all have extension number 0.
|
||||
def regSortExtensionNumberKey(feature):
|
||||
return int(feature.number)
|
||||
|
||||
# regSortFeatures - default sort procedure for features.
|
||||
# Sorts by primary key of feature category ('feature' or 'extension')
|
||||
# Sorts by primary key of feature category ('feature', or extension tag)
|
||||
# then by sort order within the category
|
||||
# then by version number (for features)
|
||||
# then by extension number (for extensions)
|
||||
def regSortFeatures(featureList):
|
||||
featureList.sort(key=regSortExtensionNumberKey)
|
||||
featureList.sort(key=regSortFeatureVersionKey)
|
||||
featureList.sort(key=regSortOrderKey)
|
||||
featureList.sort(key=regSortCategoryKey)
|
||||
|
||||
|
||||
# GeneratorOptions - base class for options used during header production
|
||||
# These options are target language independent, and used by
|
||||
# Registry.apiGen() and by base OutputGenerator objects.
|
||||
@ -121,8 +133,9 @@ def regSortFeatures(featureList):
|
||||
# deciding which interfaces to generate).
|
||||
# sortProcedure - takes a list of FeatureInfo objects and sorts
|
||||
# them in place to a preferred order in the generated output.
|
||||
# Default is core API versions, ARB/KHR/OES extensions, all
|
||||
# other extensions, alphabetically within each group.
|
||||
# Default is core API versions, ARB/KHR/OES extensions, all other
|
||||
# extensions, by core API version number or extension number in
|
||||
# each group.
|
||||
# The regex patterns can be None or empty, in which case they match
|
||||
# nothing.
|
||||
class GeneratorOptions:
|
||||
|
@ -1,2 +1,2 @@
|
||||
# The value to start tagging VU statements at, unless overridden by -nextvu
|
||||
startVUID = 2790
|
||||
startVUID = 2795
|
||||
|
@ -19,7 +19,8 @@ import re
|
||||
import sys
|
||||
import xml.etree.ElementTree as etree
|
||||
from collections import defaultdict, namedtuple
|
||||
from generator import OutputGenerator, write
|
||||
from generator import OutputGenerator, write, noneInt
|
||||
import pdb
|
||||
|
||||
# matchAPIProfile - returns whether an API and profile
|
||||
# being generated matches an element's profile
|
||||
@ -70,6 +71,12 @@ def matchAPIProfile(api, profile, elem):
|
||||
return False
|
||||
return True
|
||||
|
||||
# Print all the keys in an Element - only for diagnostics
|
||||
# def printKeys(msg, elem):
|
||||
# print('printKeys:', msg, file=sys.stderr)
|
||||
# for key in elem.keys():
|
||||
# print(' {} -> {}'.format(key, elem.get(key)), file=sys.stderr)
|
||||
|
||||
# BaseInfo - base class for information about a registry feature
|
||||
# (type/group/enum/command/API/extension).
|
||||
# required - should this feature be defined during header generation
|
||||
@ -89,26 +96,41 @@ class BaseInfo:
|
||||
def resetState(self):
|
||||
self.required = False
|
||||
self.declared = False
|
||||
def compareElem(self, info):
|
||||
# Just compares the tag and attributes.
|
||||
# @@ This should be virtualized. In particular, comparing <enum>
|
||||
# tags requires special-casing on the attributes, as 'extnumber' is
|
||||
# only relevant when 'offset' is present.
|
||||
selfKeys = sorted(self.elem.keys())
|
||||
infoKeys = sorted(info.elem.keys())
|
||||
|
||||
if selfKeys != infoKeys:
|
||||
def compareKeys(self, info, key, required = False):
|
||||
# Return True if self.elem and info.elem have the same attribute
|
||||
# value for key.
|
||||
# If 'required' is not True, also returns True if neither element
|
||||
# has an attribute value for key.
|
||||
if required and key not in self.elem.keys():
|
||||
return False
|
||||
return self.elem.get(key) == info.elem.get(key)
|
||||
def compareElem(self, info, infoName):
|
||||
# Return True if self.elem and info.elem have the same definition
|
||||
# info - the other object
|
||||
# infoName - 'type' / 'group' / 'enum' / 'command' / 'feature' / 'extension'
|
||||
|
||||
# Ignore value of 'extname' and 'extnumber', as these will inherently
|
||||
# be different when redefining the same interface in different feature
|
||||
# and/or extension blocks.
|
||||
for key in selfKeys:
|
||||
if key not in ('extname', 'extnumber') and \
|
||||
(self.elem.get(key) != info.elem.get(key)):
|
||||
if infoName == 'enum':
|
||||
if self.compareKeys(info, 'extends'):
|
||||
# Either both extend the same type, or no type
|
||||
if (self.compareKeys(info, 'value', required = True) or
|
||||
self.compareKeys(info, 'bitpos', required = True)):
|
||||
# If both specify the same value or bit position,
|
||||
# they're equal
|
||||
return True
|
||||
elif (self.compareKeys(info, 'extends') and
|
||||
self.compareKeys(info, 'extnumber') and
|
||||
self.compareKeys(info, 'offset') and
|
||||
self.compareKeys(info, 'dir')):
|
||||
# If both specify the same relative offset, they're equal
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
else:
|
||||
# The same enum can't extend two different types
|
||||
return False
|
||||
|
||||
return True
|
||||
else:
|
||||
# Non-<enum>s should never be redefined
|
||||
return False
|
||||
|
||||
# TypeInfo - registry information about a type. No additional state
|
||||
# beyond BaseInfo is required.
|
||||
@ -164,29 +186,34 @@ class CmdInfo(BaseInfo):
|
||||
# FeatureInfo - registry information about an API <feature>
|
||||
# or <extension>
|
||||
# name - feature name string (e.g. 'VK_KHR_surface')
|
||||
# version - feature version number (e.g. 1.2). <extension>
|
||||
# category - category, e.g. VERSION or khr/vendor tag
|
||||
# version - feature name string
|
||||
# features are unversioned and assigned version number 0.
|
||||
# ** This is confusingly taken from the 'number' attribute of <feature>.
|
||||
# Needs fixing.
|
||||
# versionNumber - API version number, taken from the 'number' attribute
|
||||
# of <feature>. Extensions do not have API version numbers and are
|
||||
# assigned number 0.
|
||||
# number - extension number, used for ordering and for
|
||||
# assigning enumerant offsets. <feature> features do
|
||||
# not have extension numbers and are assigned number 0.
|
||||
# category - category, e.g. VERSION or khr/vendor tag
|
||||
# emit - has this feature been defined already?
|
||||
class FeatureInfo(BaseInfo):
|
||||
"""Represents the state of an API feature (version/extension)"""
|
||||
def __init__(self, elem):
|
||||
BaseInfo.__init__(self, elem)
|
||||
self.name = elem.get('name')
|
||||
# Determine element category (vendor). Only works
|
||||
# for <extension> elements.
|
||||
self.sortorder = noneInt(elem.get('sortorder'), 0)
|
||||
|
||||
if elem.tag == 'feature':
|
||||
# Element category (vendor) is meaningless for <feature>
|
||||
self.category = 'VERSION'
|
||||
self.version = elem.get('name')
|
||||
self.versionNumber = elem.get('number')
|
||||
self.number = "0"
|
||||
self.supported = None
|
||||
else:
|
||||
# Extract vendor portion of VK_<vendor>_<name>
|
||||
self.category = self.name.split('_', 2)[1]
|
||||
self.version = "0"
|
||||
self.versionNumber = "0"
|
||||
@ -295,12 +322,14 @@ class Registry:
|
||||
else:
|
||||
key = elem.get('name')
|
||||
if key in dictionary:
|
||||
if not dictionary[key].compareElem(info):
|
||||
if not dictionary[key].compareElem(info, infoName):
|
||||
self.gen.logMsg('warn', 'Attempt to redefine', key,
|
||||
'with different value (this may be benign)')
|
||||
#else:
|
||||
# self.gen.logMsg('warn', 'Benign redefinition of', key,
|
||||
# 'with identical value')
|
||||
'(this should not happen)')
|
||||
# printKeys('old element', dictionary[key].elem)
|
||||
# printKeys('new element', info.elem)
|
||||
else:
|
||||
# Benign redefinition - intentional cases exist.
|
||||
True
|
||||
else:
|
||||
dictionary[key] = info
|
||||
|
||||
@ -1053,7 +1082,7 @@ class Registry:
|
||||
self.gen.logMsg('diag', 'NOT including extension',
|
||||
extName, '(does not match api attribute or explicitly requested extensions)')
|
||||
|
||||
# Sort the extension features list, if a sort procedure is defined
|
||||
# Sort the features list, if a sort procedure is defined
|
||||
if self.genOpts.sortProcedure:
|
||||
self.genOpts.sortProcedure(features)
|
||||
|
||||
|
@ -349,6 +349,7 @@ Command = element command {
|
||||
# name - version name (C preprocessor name, e.g. GL_VERSION_4_2)
|
||||
# number - version number, e.g. 4.2
|
||||
# protect - additional #ifdef symbol to place around the feature
|
||||
# sortorder - order relative to other features, default 0
|
||||
# <require> / <remove> contains features to require or remove in
|
||||
# this version
|
||||
# profile - only require/remove when generated profile matches
|
||||
@ -358,6 +359,7 @@ Feature = element feature {
|
||||
Name ,
|
||||
attribute number { xsd:float } ,
|
||||
attribute protect { text } ? ,
|
||||
attribute sortorder { xsd:integer } ?,
|
||||
Comment ? ,
|
||||
(
|
||||
element require {
|
||||
@ -393,6 +395,7 @@ Extensions = element extensions {
|
||||
# exactly match an API being generated (implicit ^$ surrounding).
|
||||
# name - extension name string
|
||||
# number - extension number (positive integer, should be unique)
|
||||
# sortorder - order relative to other extensions, default 0
|
||||
# protect - C preprocessor symbol to conditionally define the interface
|
||||
# platform - should be one of the platform names defined in the
|
||||
# <platform> tag. Currently unused.
|
||||
@ -421,6 +424,7 @@ Extensions = element extensions {
|
||||
Extension = element extension {
|
||||
Name ,
|
||||
attribute number { Integer } ? ,
|
||||
attribute sortorder { xsd:integer } ?,
|
||||
attribute protect { text } ? ,
|
||||
attribute platform { text } ? ,
|
||||
attribute author { text } ? ,
|
||||
|
58
xml/vk.xml
58
xml/vk.xml
@ -154,7 +154,7 @@ server.
|
||||
<type category="define">// Vulkan 1.1 version number
|
||||
#define <name>VK_API_VERSION_1_1</name> <type>VK_MAKE_VERSION</type>(1, 1, 0)// Patch version should always be set to 0</type>
|
||||
<type category="define">// Version of this file
|
||||
#define <name>VK_HEADER_VERSION</name> 120</type>
|
||||
#define <name>VK_HEADER_VERSION</name> 121</type>
|
||||
|
||||
<type category="define">
|
||||
#define <name>VK_DEFINE_HANDLE</name>(object) typedef struct object##_T* object;</type>
|
||||
@ -4036,7 +4036,7 @@ typedef void <name>CAMetalLayer</name>;
|
||||
<member><type>VkBool32</type> <name>fragmentShaderPixelInterlock</name></member>
|
||||
<member><type>VkBool32</type> <name>fragmentShaderShadingRateInterlock</name></member>
|
||||
</type>
|
||||
<type category="struct" name="VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR">
|
||||
<type category="struct" name="VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
|
||||
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member><type>void</type>* <name>pNext</name></member>
|
||||
<member><type>VkBool32</type> <name>pipelineExecutableInfo</name></member>
|
||||
@ -4148,6 +4148,11 @@ typedef void <name>CAMetalLayer</name>;
|
||||
<member>const <type>void</type>* <name>pNext</name></member>
|
||||
<member optional="true"><type>VkPipelineCompilerControlFlagsAMD</type> <name>compilerControlFlags</name></member>
|
||||
</type>
|
||||
<type category="struct" name="VkPhysicalDeviceCoherentMemoryFeaturesAMD" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
|
||||
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member noautovalidity="true"><type>void</type>* <name>pNext</name></member>
|
||||
<member><type>VkBool32</type> <name>deviceCoherentMemory</name></member>
|
||||
</type>
|
||||
</types>
|
||||
|
||||
<comment>Vulkan enumerant (token) definitions</comment>
|
||||
@ -7562,14 +7567,14 @@ typedef void <name>CAMetalLayer</name>;
|
||||
<param><type>uint32_t</type> <name>bindInfoCount</name></param>
|
||||
<param len="bindInfoCount">const <type>VkBindAccelerationStructureMemoryInfoNV</type>* <name>pBindInfos</name></param>
|
||||
</command>
|
||||
<command queues="compute" renderpass="both" cmdbufferlevel="primary,secondary">
|
||||
<command queues="compute" renderpass="outside" cmdbufferlevel="primary,secondary">
|
||||
<proto><type>void</type> <name>vkCmdCopyAccelerationStructureNV</name></proto>
|
||||
<param><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
|
||||
<param><type>VkAccelerationStructureNV</type> <name>dst</name></param>
|
||||
<param><type>VkAccelerationStructureNV</type> <name>src</name></param>
|
||||
<param><type>VkCopyAccelerationStructureModeNV</type> <name>mode</name></param>
|
||||
</command>
|
||||
<command queues="compute" renderpass="both" cmdbufferlevel="primary,secondary">
|
||||
<command queues="compute" renderpass="outside" cmdbufferlevel="primary,secondary">
|
||||
<proto><type>void</type> <name>vkCmdWriteAccelerationStructuresPropertiesNV</name></proto>
|
||||
<param><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
|
||||
<param><type>uint32_t</type> <name>accelerationStructureCount</name></param>
|
||||
@ -7578,7 +7583,7 @@ typedef void <name>CAMetalLayer</name>;
|
||||
<param><type>VkQueryPool</type> <name>queryPool</name></param>
|
||||
<param><type>uint32_t</type> <name>firstQuery</name></param>
|
||||
</command>
|
||||
<command queues="compute" renderpass="both" cmdbufferlevel="primary,secondary">
|
||||
<command queues="compute" renderpass="outside" cmdbufferlevel="primary,secondary">
|
||||
<proto><type>void</type> <name>vkCmdBuildAccelerationStructureNV</name></proto>
|
||||
<param><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
|
||||
<param>const <type>VkAccelerationStructureInfoNV</type>* <name>pInfo</name></param>
|
||||
@ -7590,7 +7595,7 @@ typedef void <name>CAMetalLayer</name>;
|
||||
<param><type>VkBuffer</type> <name>scratch</name></param>
|
||||
<param><type>VkDeviceSize</type> <name>scratchOffset</name></param>
|
||||
</command>
|
||||
<command queues="compute" renderpass="both" cmdbufferlevel="primary,secondary">
|
||||
<command queues="compute" renderpass="outside" cmdbufferlevel="primary,secondary">
|
||||
<proto><type>void</type> <name>vkCmdTraceRaysNV</name></proto>
|
||||
<param><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
|
||||
<param><type>VkBuffer</type> <name>raygenShaderBindingTableBuffer</name></param>
|
||||
@ -8383,7 +8388,7 @@ typedef void <name>CAMetalLayer</name>;
|
||||
</extension>
|
||||
<extension name="VK_KHR_display" number="3" type="instance" requires="VK_KHR_surface" author="KHR" contact="James Jones @cubanismo,Norbert Nopper @FslNopper" supported="vulkan">
|
||||
<require>
|
||||
<enum value="21" name="VK_KHR_DISPLAY_SPEC_VERSION"/>
|
||||
<enum value="23" name="VK_KHR_DISPLAY_SPEC_VERSION"/>
|
||||
<enum value=""VK_KHR_display"" name="VK_KHR_DISPLAY_EXTENSION_NAME"/>
|
||||
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR"/>
|
||||
<enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR"/>
|
||||
@ -8409,7 +8414,7 @@ typedef void <name>CAMetalLayer</name>;
|
||||
</extension>
|
||||
<extension name="VK_KHR_display_swapchain" number="4" type="device" requires="VK_KHR_swapchain,VK_KHR_display" author="KHR" contact="James Jones @cubanismo" supported="vulkan">
|
||||
<require>
|
||||
<enum value="9" name="VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION"/>
|
||||
<enum value="10" name="VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION"/>
|
||||
<enum value=""VK_KHR_display_swapchain"" name="VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME"/>
|
||||
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR"/>
|
||||
<enum offset="1" extends="VkResult" dir="-" name="VK_ERROR_INCOMPATIBLE_DISPLAY_KHR"/>
|
||||
@ -8535,9 +8540,10 @@ typedef void <name>CAMetalLayer</name>;
|
||||
</extension>
|
||||
<extension name="VK_KHR_sampler_mirror_clamp_to_edge" type="device" number="15" author="KHR" contact="Tobias Hector @tobski" supported="vulkan">
|
||||
<require>
|
||||
<enum value="1" name="VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION"/>
|
||||
<enum value="3" name="VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION"/>
|
||||
<enum value=""VK_KHR_sampler_mirror_clamp_to_edge"" name="VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME"/>
|
||||
<enum value="4" extends="VkSamplerAddressMode" name="VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE" comment="Note that this defines what was previously a core enum, and so uses the 'value' attribute rather than 'offset', and does not have a suffix. This is a special case, and should not be repeated"/>
|
||||
<enum extends="VkSamplerAddressMode" name="VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE_KHR" alias="VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE" comment="Alias introduced for consistency with extension suffixing rules"/>
|
||||
</require>
|
||||
</extension>
|
||||
<extension name="VK_IMG_filter_cubic" number="16" type="device" author="IMG" contact="Tobias Hector @tobski" supported="vulkan">
|
||||
@ -8727,7 +8733,7 @@ typedef void <name>CAMetalLayer</name>;
|
||||
</extension>
|
||||
<extension name="VK_AMD_draw_indirect_count" number="34" type="device" author="AMD" contact="Daniel Rakos @drakos-amd" supported="vulkan" promotedto="VK_KHR_draw_indirect_count">
|
||||
<require>
|
||||
<enum value="1" name="VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION"/>
|
||||
<enum value="2" name="VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION"/>
|
||||
<enum value=""VK_AMD_draw_indirect_count"" name="VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME"/>
|
||||
<command name="vkCmdDrawIndirectCountAMD"/>
|
||||
<command name="vkCmdDrawIndexedIndirectCountAMD"/>
|
||||
@ -8924,7 +8930,7 @@ typedef void <name>CAMetalLayer</name>;
|
||||
</extension>
|
||||
<extension name="VK_NV_win32_keyed_mutex" number="59" type="device" requires="VK_NV_external_memory_win32" author="NV" contact="Carsten Rohde @crohde" platform="win32" supported="vulkan" promotedto="VK_KHR_win32_keyed_mutex">
|
||||
<require>
|
||||
<enum value="1" name="VK_NV_WIN32_KEYED_MUTEX_SPEC_VERSION"/>
|
||||
<enum value="2" name="VK_NV_WIN32_KEYED_MUTEX_SPEC_VERSION"/>
|
||||
<enum value=""VK_NV_win32_keyed_mutex"" name="VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME"/>
|
||||
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV"/>
|
||||
<type name="VkWin32KeyedMutexAcquireReleaseInfoNV"/>
|
||||
@ -8932,7 +8938,7 @@ typedef void <name>CAMetalLayer</name>;
|
||||
</extension>
|
||||
<extension name="VK_KHR_get_physical_device_properties2" number="60" type="instance" author="KHR" contact="Jeff Bolz @jeffbolznv" supported="vulkan" promotedto="VK_VERSION_1_1">
|
||||
<require>
|
||||
<enum value="1" name="VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION"/>
|
||||
<enum value="2" name="VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION"/>
|
||||
<enum value=""VK_KHR_get_physical_device_properties2"" name="VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME"/>
|
||||
<enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2"/>
|
||||
<enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2"/>
|
||||
@ -8963,7 +8969,7 @@ typedef void <name>CAMetalLayer</name>;
|
||||
</extension>
|
||||
<extension name="VK_KHR_device_group" number="61" type="device" author="KHR" requires="VK_KHR_device_group_creation" contact="Jeff Bolz @jeffbolznv" supported="vulkan" promotedto="VK_VERSION_1_1">
|
||||
<require>
|
||||
<enum value="3" name="VK_KHR_DEVICE_GROUP_SPEC_VERSION"/>
|
||||
<enum value="4" name="VK_KHR_DEVICE_GROUP_SPEC_VERSION"/>
|
||||
<enum value=""VK_KHR_device_group"" name="VK_KHR_DEVICE_GROUP_EXTENSION_NAME"/>
|
||||
<enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR" alias="VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO"/>
|
||||
<enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR" alias="VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO"/>
|
||||
@ -9285,7 +9291,7 @@ typedef void <name>CAMetalLayer</name>;
|
||||
</extension>
|
||||
<extension name="VK_EXT_conditional_rendering" number="82" type="device" author="NV" contact="Vikram Kushwaha @vkushwaha" supported="vulkan">
|
||||
<require>
|
||||
<enum value="1" name="VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION"/>
|
||||
<enum value="2" name="VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION"/>
|
||||
<enum value=""VK_EXT_conditional_rendering"" name="VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME"/>
|
||||
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT"/>
|
||||
<enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT"/>
|
||||
@ -9592,7 +9598,7 @@ typedef void <name>CAMetalLayer</name>;
|
||||
</extension>
|
||||
<extension name="VK_EXT_hdr_metadata" number="106" type="device" requires="VK_KHR_swapchain" author="GOOGLE" contact="Courtney Goeltzenleuchter @courtney-g" supported="vulkan">
|
||||
<require>
|
||||
<enum value="1" name="VK_EXT_HDR_METADATA_SPEC_VERSION"/>
|
||||
<enum value="2" name="VK_EXT_HDR_METADATA_SPEC_VERSION"/>
|
||||
<enum value=""VK_EXT_hdr_metadata"" name="VK_EXT_HDR_METADATA_EXTENSION_NAME"/>
|
||||
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_HDR_METADATA_EXT"/>
|
||||
<type name="VkHdrMetadataEXT"/>
|
||||
@ -9903,7 +9909,7 @@ typedef void <name>CAMetalLayer</name>;
|
||||
</extension>
|
||||
<extension name="VK_EXT_sampler_filter_minmax" number="131" type="device" author="NV" requires="VK_KHR_get_physical_device_properties2" contact="Jeff Bolz @jeffbolznv" supported="vulkan">
|
||||
<require>
|
||||
<enum value="1" name="VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION"/>
|
||||
<enum value="2" name="VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION"/>
|
||||
<enum value=""VK_EXT_sampler_filter_minmax"" name="VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME"/>
|
||||
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT"/>
|
||||
<enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT"/>
|
||||
@ -10168,7 +10174,7 @@ typedef void <name>CAMetalLayer</name>;
|
||||
</extension>
|
||||
<extension name="VK_KHR_sampler_ycbcr_conversion" number="157" type="device" requires="VK_KHR_maintenance1,VK_KHR_bind_memory2,VK_KHR_get_memory_requirements2,VK_KHR_get_physical_device_properties2" author="KHR" contact="Andrew Garrard @fluppeteer" supported="vulkan" promotedto="VK_VERSION_1_1">
|
||||
<require>
|
||||
<enum value="1" name="VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION"/>
|
||||
<enum value="14" name="VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION"/>
|
||||
<enum value=""VK_KHR_sampler_ycbcr_conversion"" name="VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME"/>
|
||||
<enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR" alias="VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO"/>
|
||||
<enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR" alias="VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO"/>
|
||||
@ -10451,7 +10457,7 @@ typedef void <name>CAMetalLayer</name>;
|
||||
</extension>
|
||||
<extension name="VK_NV_representative_fragment_test" number="167" type="device" author="NV" contact="Kedarnath Thangudu @kthangudu" supported="vulkan">
|
||||
<require>
|
||||
<enum value="1" name="VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION"/>
|
||||
<enum value="2" name="VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION"/>
|
||||
<enum value=""VK_NV_representative_fragment_test"" name="VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME"/>
|
||||
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV"/>
|
||||
<enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV"/>
|
||||
@ -10613,7 +10619,7 @@ typedef void <name>CAMetalLayer</name>;
|
||||
</extension>
|
||||
<extension name="VK_AMD_shader_core_properties" number="186" type="device" author="AMD" requires="VK_KHR_get_physical_device_properties2" contact="Martin Dinkov @mdinkov" supported="vulkan">
|
||||
<require>
|
||||
<enum value="1" name="VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION"/>
|
||||
<enum value="2" name="VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION"/>
|
||||
<enum value=""VK_AMD_shader_core_properties"" name="VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME"/>
|
||||
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD"/>
|
||||
<type name="VkPhysicalDeviceShaderCorePropertiesAMD"/>
|
||||
@ -10778,7 +10784,7 @@ typedef void <name>CAMetalLayer</name>;
|
||||
</extension>
|
||||
<extension name="VK_NV_shader_image_footprint" number="205" type="device" requires="VK_KHR_get_physical_device_properties2" author="NV" contact="Pat Brown @nvpbrown" supported="vulkan">
|
||||
<require>
|
||||
<enum value="1" name="VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION"/>
|
||||
<enum value="2" name="VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION"/>
|
||||
<enum value=""VK_NV_shader_image_footprint"" name="VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME"/>
|
||||
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV"/>
|
||||
<type name="VkPhysicalDeviceShaderImageFootprintFeaturesNV"/>
|
||||
@ -11021,10 +11027,14 @@ typedef void <name>CAMetalLayer</name>;
|
||||
<enum value=""VK_AMD_extension_229"" name="VK_AMD_EXTENSION_229_EXTENSION_NAME"/>
|
||||
</require>
|
||||
</extension>
|
||||
<extension name="VK_AMD_extension_230" number="230" author="AMD" contact="Martin Dinkov @mdinkov" supported="disabled">
|
||||
<extension name="VK_AMD_device_coherent_memory" number="230" type="device" author="AMD" contact="Tobias Hector @tobski" supported="vulkan">
|
||||
<require>
|
||||
<enum value="0" name="VK_AMD_EXTENSION_230_SPEC_VERSION"/>
|
||||
<enum value=""VK_AMD_extension_230"" name="VK_AMD_EXTENSION_230_EXTENSION_NAME"/>
|
||||
<enum value="1" name="VK_AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION"/>
|
||||
<enum value=""VK_AMD_device_coherent_memory"" name="VK_AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME"/>
|
||||
<enum bitpos="6" extends="VkMemoryPropertyFlagBits" name="VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD"/>
|
||||
<enum bitpos="7" extends="VkMemoryPropertyFlagBits" name="VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD"/>
|
||||
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD"/>
|
||||
<type name="VkPhysicalDeviceCoherentMemoryFeaturesAMD"/>
|
||||
</require>
|
||||
</extension>
|
||||
<extension name="VK_AMD_extension_231" number="231" author="AMD" contact="Martin Dinkov @mdinkov" supported="disabled">
|
||||
@ -11229,7 +11239,7 @@ typedef void <name>CAMetalLayer</name>;
|
||||
</extension>
|
||||
<extension name="VK_EXT_full_screen_exclusive" number="256" type="device" author="EXT" requires="VK_KHR_get_physical_device_properties2,VK_KHR_surface,VK_KHR_get_surface_capabilities2,VK_KHR_swapchain" platform="win32" contact="James Jones @cubanismo" supported="vulkan">
|
||||
<require>
|
||||
<enum value="3" name="VK_EXT_FULL_SCREEN_EXCLUSIVE_SPEC_VERSION"/>
|
||||
<enum value="4" name="VK_EXT_FULL_SCREEN_EXCLUSIVE_SPEC_VERSION"/>
|
||||
<enum value=""VK_EXT_full_screen_exclusive"" name="VK_EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME"/>
|
||||
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT"/>
|
||||
<enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT"/>
|
||||
|
Loading…
x
Reference in New Issue
Block a user