summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Android.bp17
-rw-r--r--CMakeLists.txt4
-rw-r--r--LICENSE667
-rw-r--r--METADATA15
-rw-r--r--MODULE_LICENSE_APACHE20
-rw-r--r--OWNERS12
-rwxr-xr-xcodegen/scripts/generate-vulkan-sources.sh119
-rw-r--r--codegen/vulkan/BUILD.adoc459
-rw-r--r--codegen/vulkan/CODE_OF_CONDUCT.adoc10
-rw-r--r--codegen/vulkan/CONTRIBUTING.adoc38
-rw-r--r--codegen/vulkan/COPYING.adoc91
-rw-r--r--codegen/vulkan/ChangeLog.txt9691
-rw-r--r--codegen/vulkan/LICENSE.adoc34
-rw-r--r--codegen/vulkan/LICENSES/Apache-2.0.txt208
-rw-r--r--codegen/vulkan/LICENSES/CC-BY-4.0.txt324
-rw-r--r--codegen/vulkan/LICENSES/LicenseRef-KhronosSpecCopyright.txt83
-rw-r--r--codegen/vulkan/LICENSES/LicenseRef-MPLUS.txt7
-rw-r--r--codegen/vulkan/LICENSES/MIT.txt19
-rw-r--r--codegen/vulkan/Makefile614
-rw-r--r--codegen/vulkan/README.adoc111
-rw-r--r--codegen/vulkan/copyright-spec.txt83
-rw-r--r--codegen/vulkan/include/vk_video/vulkan_video_codec_h264std.h312
-rw-r--r--codegen/vulkan/include/vk_video/vulkan_video_codec_h264std_decode.h97
-rw-r--r--codegen/vulkan/include/vk_video/vulkan_video_codec_h264std_encode.h94
-rw-r--r--codegen/vulkan/include/vk_video/vulkan_video_codec_h265std.h371
-rw-r--r--codegen/vulkan/include/vk_video/vulkan_video_codec_h265std_decode.h64
-rw-r--r--codegen/vulkan/include/vk_video/vulkan_video_codec_h265std_encode.h122
-rw-r--r--codegen/vulkan/include/vk_video/vulkan_video_codecs_common.h21
-rw-r--r--codegen/vulkan/include/vulkan/vk_platform.h84
-rw-r--r--codegen/vulkan/include/vulkan/vulkan.h92
-rw-r--r--codegen/vulkan/package-lock.json24
-rw-r--r--codegen/vulkan/package.json8
-rw-r--r--codegen/vulkan/registry.txt2575
-rw-r--r--codegen/vulkan/scripts/README.adoc74
-rwxr-xr-xcodegen/vulkan/scripts/Retired/checkLinks.py353
-rw-r--r--codegen/vulkan/scripts/Retired/extensionStubSource.py327
-rwxr-xr-xcodegen/vulkan/scripts/Retired/findBalance.py162
-rwxr-xr-xcodegen/vulkan/scripts/Retired/fixupRef.py202
-rwxr-xr-xcodegen/vulkan/scripts/Retired/insertTags.py102
-rwxr-xr-xcodegen/vulkan/scripts/Retired/realign.py48
-rw-r--r--codegen/vulkan/scripts/Retired/refDesc.py356
-rw-r--r--codegen/vulkan/scripts/__init__.py.docs36
-rw-r--r--codegen/vulkan/scripts/asciidoctor-chunker/LICENSE21
-rw-r--r--codegen/vulkan/scripts/asciidoctor-chunker/README.md123
-rwxr-xr-xcodegen/vulkan/scripts/asciidoctor-chunker/asciidoctor-chunker.js4
-rw-r--r--codegen/vulkan/scripts/cereal/__init__.py20
-rw-r--r--codegen/vulkan/scripts/cereal/api_log_decoder.py338
-rw-r--r--codegen/vulkan/scripts/cereal/common/__init__.py2
-rw-r--r--codegen/vulkan/scripts/cereal/common/codegen.py1061
-rw-r--r--codegen/vulkan/scripts/cereal/common/vulkantypes.py1216
-rw-r--r--codegen/vulkan/scripts/cereal/counting.py698
-rw-r--r--codegen/vulkan/scripts/cereal/decoder.py912
-rw-r--r--codegen/vulkan/scripts/cereal/decodersnapshot.py267
-rw-r--r--codegen/vulkan/scripts/cereal/deepcopy.py383
-rw-r--r--codegen/vulkan/scripts/cereal/dispatch.py499
-rw-r--r--codegen/vulkan/scripts/cereal/encoder.py717
-rw-r--r--codegen/vulkan/scripts/cereal/extensionstructs.py125
-rw-r--r--codegen/vulkan/scripts/cereal/frontend.py102
-rw-r--r--codegen/vulkan/scripts/cereal/functable.py360
-rw-r--r--codegen/vulkan/scripts/cereal/handlemap.py264
-rw-r--r--codegen/vulkan/scripts/cereal/marshaling.py1037
-rw-r--r--codegen/vulkan/scripts/cereal/marshalingdefs.py528
-rw-r--r--codegen/vulkan/scripts/cereal/reservedmarshaling.py1055
-rw-r--r--codegen/vulkan/scripts/cereal/subdecode.py395
-rw-r--r--codegen/vulkan/scripts/cereal/testing.py399
-rw-r--r--codegen/vulkan/scripts/cereal/transform.py348
-rw-r--r--codegen/vulkan/scripts/cereal/unbox.py81
-rw-r--r--codegen/vulkan/scripts/cereal/vkextensionstructuretype.py46
-rw-r--r--codegen/vulkan/scripts/cereal/wrapperdefs.py108
-rw-r--r--codegen/vulkan/scripts/cerealgenerator.py802
-rw-r--r--codegen/vulkan/scripts/cgenerator.py420
-rwxr-xr-xcodegen/vulkan/scripts/checkXrefs26
-rwxr-xr-xcodegen/vulkan/scripts/check_html_xrefs.py93
-rwxr-xr-xcodegen/vulkan/scripts/check_spec_links.py164
-rwxr-xr-xcodegen/vulkan/scripts/ci/check_undefined22
-rwxr-xr-xcodegen/vulkan/scripts/comment_convert.py203
-rwxr-xr-xcodegen/vulkan/scripts/compImages.sh127
-rw-r--r--codegen/vulkan/scripts/conventions.py358
-rwxr-xr-xcodegen/vulkan/scripts/deperiodize_vuids.py40
-rw-r--r--codegen/vulkan/scripts/docgenerator.py482
-rw-r--r--codegen/vulkan/scripts/extensionmetadocgenerator.py665
-rwxr-xr-xcodegen/vulkan/scripts/genRef.py1087
-rwxr-xr-xcodegen/vulkan/scripts/genRelease211
-rw-r--r--codegen/vulkan/scripts/genanchorlinks.py26
-rw-r--r--codegen/vulkan/scripts/generator.py1204
-rw-r--r--codegen/vulkan/scripts/genspec.py164
-rwxr-xr-xcodegen/vulkan/scripts/genvk.py854
-rwxr-xr-xcodegen/vulkan/scripts/globalizeIncludes22
-rw-r--r--codegen/vulkan/scripts/hostsyncgenerator.py154
-rwxr-xr-xcodegen/vulkan/scripts/htmldiff/htmldiff135
-rwxr-xr-xcodegen/vulkan/scripts/htmldiff/htmldiff.pl581
-rwxr-xr-xcodegen/vulkan/scripts/indexExt.py90
-rw-r--r--codegen/vulkan/scripts/interfacedocgenerator.py118
-rwxr-xr-xcodegen/vulkan/scripts/linkcheck.py84
-rwxr-xr-xcodegen/vulkan/scripts/make_ext_dependency.py243
-rwxr-xr-xcodegen/vulkan/scripts/makemanaliases.py57
-rwxr-xr-xcodegen/vulkan/scripts/promote.py173
-rw-r--r--codegen/vulkan/scripts/pygenerator.py94
-rw-r--r--codegen/vulkan/scripts/reflib.py666
-rwxr-xr-xcodegen/vulkan/scripts/reflow.py912
-rw-r--r--codegen/vulkan/scripts/reg.py1466
-rw-r--r--codegen/vulkan/scripts/rubygenerator.py120
-rw-r--r--codegen/vulkan/scripts/scriptgenerator.py380
-rw-r--r--codegen/vulkan/scripts/spec_tools/__init__.py7
-rw-r--r--codegen/vulkan/scripts/spec_tools/algo.py69
-rw-r--r--codegen/vulkan/scripts/spec_tools/attributes.py114
-rw-r--r--codegen/vulkan/scripts/spec_tools/base_printer.py213
-rw-r--r--codegen/vulkan/scripts/spec_tools/consistency_tools.py697
-rw-r--r--codegen/vulkan/scripts/spec_tools/console_printer.py274
-rw-r--r--codegen/vulkan/scripts/spec_tools/data_structures.py58
-rw-r--r--codegen/vulkan/scripts/spec_tools/entity_db.py659
-rw-r--r--codegen/vulkan/scripts/spec_tools/file_process.py119
-rw-r--r--codegen/vulkan/scripts/spec_tools/html_printer.py436
-rw-r--r--codegen/vulkan/scripts/spec_tools/macro_checker.py220
-rw-r--r--codegen/vulkan/scripts/spec_tools/macro_checker_file.py1592
-rw-r--r--codegen/vulkan/scripts/spec_tools/main.py244
-rw-r--r--codegen/vulkan/scripts/spec_tools/shared.py257
-rw-r--r--codegen/vulkan/scripts/spec_tools/util.py58
-rw-r--r--codegen/vulkan/scripts/spec_tools/validity.py216
-rw-r--r--codegen/vulkan/scripts/spirvcapgenerator.py308
-rwxr-xr-xcodegen/vulkan/scripts/testSpecVersion.py75
-rw-r--r--codegen/vulkan/scripts/test_check_spec_links.py643
-rw-r--r--codegen/vulkan/scripts/test_check_spec_links_api_specific.py122
-rw-r--r--codegen/vulkan/scripts/test_entity_db.py32
-rw-r--r--codegen/vulkan/scripts/translate_math.js33
-rwxr-xr-xcodegen/vulkan/scripts/validitygenerator.py1497
-rw-r--r--codegen/vulkan/scripts/vkconventions.py274
-rwxr-xr-xcodegen/vulkan/scripts/xml_consistency.py390
-rw-r--r--codegen/vulkan/src/ext_loader/README.md34
-rw-r--r--codegen/vulkan/styleguide.txt381
-rw-r--r--codegen/vulkan/tests/README.adoc22
-rw-r--r--codegen/vulkan/tests/X11/Xlib.h14
-rw-r--r--codegen/vulkan/tests/X11/extensions/Xrandr.h12
-rw-r--r--codegen/vulkan/tests/ggp_c/vulkan_types.h8
-rw-r--r--codegen/vulkan/tests/hpptest.cpp11
-rw-r--r--codegen/vulkan/tests/htest.c71
-rw-r--r--codegen/vulkan/tests/screen/screen.h8
-rw-r--r--codegen/vulkan/tests/wayland-client.h0
-rw-r--r--codegen/vulkan/tests/windows.h13
-rw-r--r--codegen/vulkan/tests/xcb/xcb.h9
-rw-r--r--codegen/vulkan/tests/zircon/types.h7
-rwxr-xr-xcodegen/vulkan/update_valid_usage_ids.sh11
-rw-r--r--codegen/vulkan/xml/Makefile158
-rw-r--r--codegen/vulkan/xml/README.adoc184
-rw-r--r--codegen/vulkan/xml/generate-core-block.rb125
-rw-r--r--codegen/vulkan/xml/registry.rnc610
-rw-r--r--codegen/vulkan/xml/vk.xml18299
-rw-r--r--common/CMakeLists.txt1
-rw-r--r--common/vulkan/Android.bp9
-rw-r--r--common/vulkan/CMakeLists.txt5
-rw-r--r--common/vulkan/include/vk_video/vulkan_video_codec_h264std.h312
-rw-r--r--common/vulkan/include/vk_video/vulkan_video_codec_h264std_decode.h97
-rw-r--r--common/vulkan/include/vk_video/vulkan_video_codec_h264std_encode.h94
-rw-r--r--common/vulkan/include/vk_video/vulkan_video_codec_h265std.h371
-rw-r--r--common/vulkan/include/vk_video/vulkan_video_codec_h265std_decode.h64
-rw-r--r--common/vulkan/include/vk_video/vulkan_video_codec_h265std_encode.h122
-rw-r--r--common/vulkan/include/vk_video/vulkan_video_codecs_common.h21
-rw-r--r--common/vulkan/include/vulkan/vk_platform.h84
-rw-r--r--common/vulkan/include/vulkan/vulkan.h92
-rw-r--r--common/vulkan/include/vulkan/vulkan_android.h125
-rw-r--r--common/vulkan/include/vulkan/vulkan_beta.h833
-rw-r--r--common/vulkan/include/vulkan/vulkan_core.h13625
-rw-r--r--common/vulkan/include/vulkan/vulkan_directfb.h54
-rw-r--r--common/vulkan/include/vulkan/vulkan_fuchsia.h258
-rw-r--r--common/vulkan/include/vulkan/vulkan_ggp.h58
-rw-r--r--common/vulkan/include/vulkan/vulkan_ios.h47
-rw-r--r--common/vulkan/include/vulkan/vulkan_macos.h47
-rw-r--r--common/vulkan/include/vulkan/vulkan_metal.h54
-rw-r--r--common/vulkan/include/vulkan/vulkan_screen.h54
-rw-r--r--common/vulkan/include/vulkan/vulkan_vi.h47
-rw-r--r--common/vulkan/include/vulkan/vulkan_wayland.h54
-rw-r--r--common/vulkan/include/vulkan/vulkan_win32.h315
-rw-r--r--common/vulkan/include/vulkan/vulkan_xcb.h55
-rw-r--r--common/vulkan/include/vulkan/vulkan_xlib.h55
-rw-r--r--common/vulkan/include/vulkan/vulkan_xlib_xrandr.h45
175 files changed, 0 insertions, 87064 deletions
diff --git a/Android.bp b/Android.bp
deleted file mode 100644
index dac09de4..00000000
--- a/Android.bp
+++ /dev/null
@@ -1,17 +0,0 @@
-package {
- default_applicable_licenses: ["external_gfxstream-protocols_license"],
-}
-
-license {
- name: "external_gfxstream-protocols_license",
- visibility: [":__subpackages__"],
- license_kinds: [
- "SPDX-license-identifier-Apache-2.0",
- "SPDX-license-identifier-BSD",
- "SPDX-license-identifier-CC-BY-4.0",
- "SPDX-license-identifier-MIT",
- ],
- license_text: [
- "LICENSE",
- ],
-}
diff --git a/CMakeLists.txt b/CMakeLists.txt
deleted file mode 100644
index 79f15d77..00000000
--- a/CMakeLists.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-project(gfxstream-protocols)
-cmake_minimum_required(VERSION 3.11)
-
-add_subdirectory(common) \ No newline at end of file
diff --git a/LICENSE b/LICENSE
deleted file mode 100644
index 74890bf6..00000000
--- a/LICENSE
+++ /dev/null
@@ -1,667 +0,0 @@
-// Copyright 2020-2021 The Khronos Group Inc.
-// SPDX-License-Identifier: CC-BY-4.0
-
-= LICENSE file for the KhronosGroup/Vulkan-Docs project
-
-Files in this repository fall under one of these licenses:
-
- * SPDX license identifier: "`Apache-2.0 OR MIT`"
- ** Apache License 2.0 OR MIT License
- ** For scripts and XML which need to be usable in GPL-licensed projects.
-
- * SPDX license identifier: "`Apache-2.0`"
- ** Apache License 2.0
- ** For other scripts
-
- * SPDX license identifier: "`CC-BY-4.0`"
- ** Creative Commons Attribution 4.0 International
- ** For specification source documents
-
- * SPDX license identifier: "`MIT`"
- ** MIT License
- ** For files copied from other MIT-licensed projects
-
- * SPDX license identifier: "`LicenseRef-MPLUS`"
- ** M+ Font License
- ** For fonts derived from the M+ Font Project
- ** This license is open source, but not OSI approved
-
-Full license text of these licenses is available at:
-
- * Apache-2.0: https://opensource.org/licenses/Apache-2.0
-
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
-
- * MIT: https://opensource.org/licenses/MIT
-
-MIT License
-
-Copyright (c) 2020-2021 The Khronos Group Inc.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-
- * CC-BY-4.0: https://creativecommons.org/licenses/by/4.0/legalcode
-
-Attribution 4.0 International
-
-=======================================================================
-
-Creative Commons Corporation ("Creative Commons") is not a law firm and
-does not provide legal services or legal advice. Distribution of
-Creative Commons public licenses does not create a lawyer-client or
-other relationship. Creative Commons makes its licenses and related
-information available on an "as-is" basis. Creative Commons gives no
-warranties regarding its licenses, any material licensed under their
-terms and conditions, or any related information. Creative Commons
-disclaims all liability for damages resulting from their use to the
-fullest extent possible.
-
-Using Creative Commons Public Licenses
-
-Creative Commons public licenses provide a standard set of terms and
-conditions that creators and other rights holders may use to share
-original works of authorship and other material subject to copyright
-and certain other rights specified in the public license below. The
-following considerations are for informational purposes only, are not
-exhaustive, and do not form part of our licenses.
-
- Considerations for licensors: Our public licenses are
- intended for use by those authorized to give the public
- permission to use material in ways otherwise restricted by
- copyright and certain other rights. Our licenses are
- irrevocable. Licensors should read and understand the terms
- and conditions of the license they choose before applying it.
- Licensors should also secure all rights necessary before
- applying our licenses so that the public can reuse the
- material as expected. Licensors should clearly mark any
- material not subject to the license. This includes other CC-
- licensed material, or material used under an exception or
- limitation to copyright. More considerations for licensors:
- wiki.creativecommons.org/Considerations_for_licensors
-
- Considerations for the public: By using one of our public
- licenses, a licensor grants the public permission to use the
- licensed material under specified terms and conditions. If
- the licensor's permission is not necessary for any reason--for
- example, because of any applicable exception or limitation to
- copyright--then that use is not regulated by the license. Our
- licenses grant only permissions under copyright and certain
- other rights that a licensor has authority to grant. Use of
- the licensed material may still be restricted for other
- reasons, including because others have copyright or other
- rights in the material. A licensor may make special requests,
- such as asking that all changes be marked or described.
- Although not required by our licenses, you are encouraged to
- respect those requests where reasonable. More considerations
- for the public:
- wiki.creativecommons.org/Considerations_for_licensees
-
-=======================================================================
-
-Creative Commons Attribution 4.0 International Public License
-
-By exercising the Licensed Rights (defined below), You accept and agree
-to be bound by the terms and conditions of this Creative Commons
-Attribution 4.0 International Public License ("Public License"). To the
-extent this Public License may be interpreted as a contract, You are
-granted the Licensed Rights in consideration of Your acceptance of
-these terms and conditions, and the Licensor grants You such rights in
-consideration of benefits the Licensor receives from making the
-Licensed Material available under these terms and conditions.
-
-
-Section 1 -- Definitions.
-
- a. Adapted Material means material subject to Copyright and Similar
- Rights that is derived from or based upon the Licensed Material
- and in which the Licensed Material is translated, altered,
- arranged, transformed, or otherwise modified in a manner requiring
- permission under the Copyright and Similar Rights held by the
- Licensor. For purposes of this Public License, where the Licensed
- Material is a musical work, performance, or sound recording,
- Adapted Material is always produced where the Licensed Material is
- synched in timed relation with a moving image.
-
- b. Adapter's License means the license You apply to Your Copyright
- and Similar Rights in Your contributions to Adapted Material in
- accordance with the terms and conditions of this Public License.
-
- c. Copyright and Similar Rights means copyright and/or similar rights
- closely related to copyright including, without limitation,
- performance, broadcast, sound recording, and Sui Generis Database
- Rights, without regard to how the rights are labeled or
- categorized. For purposes of this Public License, the rights
- specified in Section 2(b)(1)-(2) are not Copyright and Similar
- Rights.
-
- d. Effective Technological Measures means those measures that, in the
- absence of proper authority, may not be circumvented under laws
- fulfilling obligations under Article 11 of the WIPO Copyright
- Treaty adopted on December 20, 1996, and/or similar international
- agreements.
-
- e. Exceptions and Limitations means fair use, fair dealing, and/or
- any other exception or limitation to Copyright and Similar Rights
- that applies to Your use of the Licensed Material.
-
- f. Licensed Material means the artistic or literary work, database,
- or other material to which the Licensor applied this Public
- License.
-
- g. Licensed Rights means the rights granted to You subject to the
- terms and conditions of this Public License, which are limited to
- all Copyright and Similar Rights that apply to Your use of the
- Licensed Material and that the Licensor has authority to license.
-
- h. Licensor means the individual(s) or entity(ies) granting rights
- under this Public License.
-
- i. Share means to provide material to the public by any means or
- process that requires permission under the Licensed Rights, such
- as reproduction, public display, public performance, distribution,
- dissemination, communication, or importation, and to make material
- available to the public including in ways that members of the
- public may access the material from a place and at a time
- individually chosen by them.
-
- j. Sui Generis Database Rights means rights other than copyright
- resulting from Directive 96/9/EC of the European Parliament and of
- the Council of 11 March 1996 on the legal protection of databases,
- as amended and/or succeeded, as well as other essentially
- equivalent rights anywhere in the world.
-
- k. You means the individual or entity exercising the Licensed Rights
- under this Public License. Your has a corresponding meaning.
-
-
-Section 2 -- Scope.
-
- a. License grant.
-
- 1. Subject to the terms and conditions of this Public License,
- the Licensor hereby grants You a worldwide, royalty-free,
- non-sublicensable, non-exclusive, irrevocable license to
- exercise the Licensed Rights in the Licensed Material to:
-
- a. reproduce and Share the Licensed Material, in whole or
- in part; and
-
- b. produce, reproduce, and Share Adapted Material.
-
- 2. Exceptions and Limitations. For the avoidance of doubt, where
- Exceptions and Limitations apply to Your use, this Public
- License does not apply, and You do not need to comply with
- its terms and conditions.
-
- 3. Term. The term of this Public License is specified in Section
- 6(a).
-
- 4. Media and formats; technical modifications allowed. The
- Licensor authorizes You to exercise the Licensed Rights in
- all media and formats whether now known or hereafter created,
- and to make technical modifications necessary to do so. The
- Licensor waives and/or agrees not to assert any right or
- authority to forbid You from making technical modifications
- necessary to exercise the Licensed Rights, including
- technical modifications necessary to circumvent Effective
- Technological Measures. For purposes of this Public License,
- simply making modifications authorized by this Section 2(a)
- (4) never produces Adapted Material.
-
- 5. Downstream recipients.
-
- a. Offer from the Licensor -- Licensed Material. Every
- recipient of the Licensed Material automatically
- receives an offer from the Licensor to exercise the
- Licensed Rights under the terms and conditions of this
- Public License.
-
- b. No downstream restrictions. You may not offer or impose
- any additional or different terms or conditions on, or
- apply any Effective Technological Measures to, the
- Licensed Material if doing so restricts exercise of the
- Licensed Rights by any recipient of the Licensed
- Material.
-
- 6. No endorsement. Nothing in this Public License constitutes or
- may be construed as permission to assert or imply that You
- are, or that Your use of the Licensed Material is, connected
- with, or sponsored, endorsed, or granted official status by,
- the Licensor or others designated to receive attribution as
- provided in Section 3(a)(1)(A)(i).
-
- b. Other rights.
-
- 1. Moral rights, such as the right of integrity, are not
- licensed under this Public License, nor are publicity,
- privacy, and/or other similar personality rights; however, to
- the extent possible, the Licensor waives and/or agrees not to
- assert any such rights held by the Licensor to the limited
- extent necessary to allow You to exercise the Licensed
- Rights, but not otherwise.
-
- 2. Patent and trademark rights are not licensed under this
- Public License.
-
- 3. To the extent possible, the Licensor waives any right to
- collect royalties from You for the exercise of the Licensed
- Rights, whether directly or through a collecting society
- under any voluntary or waivable statutory or compulsory
- licensing scheme. In all other cases the Licensor expressly
- reserves any right to collect such royalties.
-
-
-Section 3 -- License Conditions.
-
-Your exercise of the Licensed Rights is expressly made subject to the
-following conditions.
-
- a. Attribution.
-
- 1. If You Share the Licensed Material (including in modified
- form), You must:
-
- a. retain the following if it is supplied by the Licensor
- with the Licensed Material:
-
- i. identification of the creator(s) of the Licensed
- Material and any others designated to receive
- attribution, in any reasonable manner requested by
- the Licensor (including by pseudonym if
- designated);
-
- ii. a copyright notice;
-
- iii. a notice that refers to this Public License;
-
- iv. a notice that refers to the disclaimer of
- warranties;
-
- v. a URI or hyperlink to the Licensed Material to the
- extent reasonably practicable;
-
- b. indicate if You modified the Licensed Material and
- retain an indication of any previous modifications; and
-
- c. indicate the Licensed Material is licensed under this
- Public License, and include the text of, or the URI or
- hyperlink to, this Public License.
-
- 2. You may satisfy the conditions in Section 3(a)(1) in any
- reasonable manner based on the medium, means, and context in
- which You Share the Licensed Material. For example, it may be
- reasonable to satisfy the conditions by providing a URI or
- hyperlink to a resource that includes the required
- information.
-
- 3. If requested by the Licensor, You must remove any of the
- information required by Section 3(a)(1)(A) to the extent
- reasonably practicable.
-
- 4. If You Share Adapted Material You produce, the Adapter's
- License You apply must not prevent recipients of the Adapted
- Material from complying with this Public License.
-
-
-Section 4 -- Sui Generis Database Rights.
-
-Where the Licensed Rights include Sui Generis Database Rights that
-apply to Your use of the Licensed Material:
-
- a. for the avoidance of doubt, Section 2(a)(1) grants You the right
- to extract, reuse, reproduce, and Share all or a substantial
- portion of the contents of the database;
-
- b. if You include all or a substantial portion of the database
- contents in a database in which You have Sui Generis Database
- Rights, then the database in which You have Sui Generis Database
- Rights (but not its individual contents) is Adapted Material; and
-
- c. You must comply with the conditions in Section 3(a) if You Share
- all or a substantial portion of the contents of the database.
-
-For the avoidance of doubt, this Section 4 supplements and does not
-replace Your obligations under this Public License where the Licensed
-Rights include other Copyright and Similar Rights.
-
-
-Section 5 -- Disclaimer of Warranties and Limitation of Liability.
-
- a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
- EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
- AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
- ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
- IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
- WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
- PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
- ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
- KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
- ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
-
- b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
- TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
- NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
- INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
- COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
- USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
- ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
- DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
- IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
-
- c. The disclaimer of warranties and limitation of liability provided
- above shall be interpreted in a manner that, to the extent
- possible, most closely approximates an absolute disclaimer and
- waiver of all liability.
-
-
-Section 6 -- Term and Termination.
-
- a. This Public License applies for the term of the Copyright and
- Similar Rights licensed here. However, if You fail to comply with
- this Public License, then Your rights under this Public License
- terminate automatically.
-
- b. Where Your right to use the Licensed Material has terminated under
- Section 6(a), it reinstates:
-
- 1. automatically as of the date the violation is cured, provided
- it is cured within 30 days of Your discovery of the
- violation; or
-
- 2. upon express reinstatement by the Licensor.
-
- For the avoidance of doubt, this Section 6(b) does not affect any
- right the Licensor may have to seek remedies for Your violations
- of this Public License.
-
- c. For the avoidance of doubt, the Licensor may also offer the
- Licensed Material under separate terms or conditions or stop
- distributing the Licensed Material at any time; however, doing so
- will not terminate this Public License.
-
- d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
- License.
-
-
-Section 7 -- Other Terms and Conditions.
-
- a. The Licensor shall not be bound by any additional or different
- terms or conditions communicated by You unless expressly agreed.
-
- b. Any arrangements, understandings, or agreements regarding the
- Licensed Material not stated herein are separate from and
- independent of the terms and conditions of this Public License.
-
-
-Section 8 -- Interpretation.
-
- a. For the avoidance of doubt, this Public License does not, and
- shall not be interpreted to, reduce, limit, restrict, or impose
- conditions on any use of the Licensed Material that could lawfully
- be made without permission under this Public License.
-
- b. To the extent possible, if any provision of this Public License is
- deemed unenforceable, it shall be automatically reformed to the
- minimum extent necessary to make it enforceable. If the provision
- cannot be reformed, it shall be severed from this Public License
- without affecting the enforceability of the remaining terms and
- conditions.
-
- c. No term or condition of this Public License will be waived and no
- failure to comply consented to unless expressly agreed to by the
- Licensor.
-
- d. Nothing in this Public License constitutes or may be interpreted
- as a limitation upon, or waiver of, any privileges and immunities
- that apply to the Licensor or You, including from the legal
- processes of any jurisdiction or authority.
-
-
-=======================================================================
-
-Creative Commons is not a party to its public
-licenses. Notwithstanding, Creative Commons may elect to apply one of
-its public licenses to material it publishes and in those instances
-will be considered the “Licensor.” The text of the Creative Commons
-public licenses is dedicated to the public domain under the CC0 Public
-Domain Dedication. Except for the limited purpose of indicating that
-material is shared under a Creative Commons public license or as
-otherwise permitted by the Creative Commons policies published at
-creativecommons.org/policies, Creative Commons does not authorize the
-use of the trademark "Creative Commons" or any other trademark or logo
-of Creative Commons without its prior written consent including,
-without limitation, in connection with any unauthorized modifications
-to any of its public licenses or any other arrangements,
-understandings, or agreements concerning use of licensed material. For
-the avoidance of doubt, this paragraph does not form part of the
-public licenses.
-
-Creative Commons may be contacted at creativecommons.org.
-
-
- * LicenseRef-MPLUS: https://osdn.net/softwaremap/trove_list.php?form_cat=370
-
-M+ Font License
-
-These fonts are free softwares.
-Unlimited permission is granted to use, copy, and distribute it,
-with or without modification, either commercially and noncommercially.
-THESE FONTS ARE PROVIDED "AS IS" WITHOUT WARRANTY.
diff --git a/METADATA b/METADATA
deleted file mode 100644
index 1e279294..00000000
--- a/METADATA
+++ /dev/null
@@ -1,15 +0,0 @@
-name: "gfxstream-protocols"
-description:
- "gfxstream-protocols is a package containing Vulkan specifications and "
- "Vulkan encoder/decoder generator scripts used for gfxstream "
- "(https://android.googlesource.com/device/generic/vulkan-cereal/)."
-
-third_party {
- url {
- type: GIT
- value: "https://github.com/KhronosGroup/Vulkan-Docs.git"
- }
- version: "v1.2.198"
- last_upgrade_date { year: 2022 month: 2 day: 3 }
- license_type: NOTICE
-}
diff --git a/MODULE_LICENSE_APACHE2 b/MODULE_LICENSE_APACHE2
deleted file mode 100644
index e69de29b..00000000
--- a/MODULE_LICENSE_APACHE2
+++ /dev/null
diff --git a/OWNERS b/OWNERS
deleted file mode 100644
index f3f3c2b3..00000000
--- a/OWNERS
+++ /dev/null
@@ -1,12 +0,0 @@
-bohu@google.com
-cstout@google.com
-doughorn@google.com
-gurchetansingh@google.com
-kaiyili@google.com
-lfy@google.com
-liyl@google.com
-natsu@google.com
-reveman@google.com
-rkir@google.com
-yahan@google.com
-
diff --git a/codegen/scripts/generate-vulkan-sources.sh b/codegen/scripts/generate-vulkan-sources.sh
deleted file mode 100755
index 3f3da706..00000000
--- a/codegen/scripts/generate-vulkan-sources.sh
+++ /dev/null
@@ -1,119 +0,0 @@
-#!/bin/bash
-
-# Copyright 2022 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-PROJECT_ROOT=$(pwd)
-
-WHICH=which
-if [[ "$OSTYPE" == "msys" ]]; then
- WHICH=where
-fi
-
-if [ -z "$1" ] || [ -z "$2" ];
-then
- AOSP_DIR=$(pwd)/../..
- export GOLDFISH_OPENGL_DIR=$AOSP_DIR/device/generic/goldfish-opengl
- export VULKAN_CEREAL_DIR=$AOSP_DIR/device/generic/vulkan-cereal
- export VULKAN_REGISTRY_DIR=$AOSP_DIR/external/gfxstream-protocols/codegen/vulkan
-else
- export GOLDFISH_OPENGL_DIR=$1
- export VULKAN_CEREAL_DIR=$2
- export VULKAN_REGISTRY_DIR=codegen/vulkan
-fi
-
-# Detect clang-format
-if ! $WHICH clang-format > /dev/null; then
- echo "Failed to find clang-format." 1>&2
- exit 1
-fi
-
-# Generate Vulkan headers
-VULKAN_HEADERS_ROOT=$PROJECT_ROOT/common/vulkan
-rm -rf $VULKAN_HEADERS_ROOT && mkdir -p $VULKAN_HEADERS_ROOT
-if [ $? -ne 0 ]; then
- echo "Failed to clear the old Vulkan headers." 1>&2
- exit 1
-fi
-
-cd $VULKAN_REGISTRY_DIR/xml && make GENOPTS="-removeExtensions VK_GOOGLE_gfxstream" GENERATED=$VULKAN_HEADERS_ROOT
-if [ $? -ne 0 ]; then
- echo "Failed to generate Vulkan headers." 1>&2
- exit 1
-fi
-
-cd $PROJECT_ROOT
-
-export VK_CEREAL_GUEST_ENCODER_DIR=$GOLDFISH_OPENGL_DIR/system/vulkan_enc
-export VK_CEREAL_GUEST_HAL_DIR=$GOLDFISH_OPENGL_DIR/system/vulkan
-export VK_CEREAL_HOST_DECODER_DIR=$VULKAN_CEREAL_DIR/host/vulkan
-export VK_CEREAL_HOST_INCLUDE_DIR=$VULKAN_CEREAL_DIR/host
-export VK_CEREAL_HOST_SCRIPTS_DIR=$VULKAN_CEREAL_DIR/scripts
-export VK_CEREAL_BASELIB_PREFIX=aemu/base
-export VK_CEREAL_BASELIB_LINKNAME=aemu-base.headers
-export VK_CEREAL_VK_HEADER_TARGET=gfxstream_vulkan_headers
-export VK_CEREAL_UTILS_LINKNAME=gfxstream_utils.headers
-export VK_CEREAL_UTILS_PREFIX=utils
-
-VK_CEREAL_OUTPUT_DIR=$VK_CEREAL_HOST_DECODER_DIR/cereal
-if [ -d "$VK_CEREAL_GUEST_DIR" ]; then
- mkdir -p $VK_CEREAL_GUEST_ENCODER_DIR
- mkdir -p $VK_CEREAL_GUEST_HAL_DIR
-fi
-if [ -d "$VK_CEREAL_HOST_DIR" ]; then
- mkdir -p $VK_CEREAL_HOST_DECODER_DIR
- mkdir -p $VK_CEREAL_OUTPUT_DIR
-fi
-
-VULKAN_REGISTRY_XML_DIR=$VULKAN_REGISTRY_DIR/xml
-VULKAN_REGISTRY_SCRIPTS_DIR=$VULKAN_REGISTRY_DIR/scripts
-
-python3 $VULKAN_REGISTRY_SCRIPTS_DIR/genvk.py -registry $VULKAN_REGISTRY_XML_DIR/vk.xml cereal -o $VK_CEREAL_OUTPUT_DIR
-
-
-# Generate VK_ANDROID_native_buffer specific Vulkan definitions.
-if [ -d $VK_CEREAL_HOST_DECODER_DIR ]; then
- OUT_DIR=$VK_CEREAL_HOST_DECODER_DIR
- OUT_FILE_BASENAME="vk_android_native_buffer.h"
-
- python3 registry/vulkan/scripts/genvk.py -registry registry/vulkan/xml/vk.xml -o $OUT_DIR \
- $OUT_FILE_BASENAME
-
- if [ $? -ne 0 ]; then
- echo "Failed to generate vk_android_native_buffer.h" 1>&2
- exit 1
- fi
- if ! clang-format -i $OUT_DIR/$OUT_FILE_BASENAME; then
- echo "Failed to reformat vk_android_native_buffer.h" 1>&2
- exit 1
- fi
-fi
-
-# Generate gfxstream specific Vulkan definitions.
-for OUT_DIR in $VK_CEREAL_HOST_DECODER_DIR $VK_CEREAL_GUEST_ENCODER_DIR; do
- if [ -d "$OUT_DIR" ]; then
- OUT_FILE_BASENAME=vulkan_gfxstream.h
- python3 registry/vulkan/scripts/genvk.py -registry registry/vulkan/xml/vk.xml -o $OUT_DIR \
- $OUT_FILE_BASENAME
-
- if [ $? -ne 0 ]; then
- echo "Failed to generate gfxstream specific vulkan headers." 1>&2
- exit 1
- fi
- if ! clang-format -i $OUT_DIR/$OUT_FILE_BASENAME; then
- echo "Failed to reformat gfxstream specific vulkan headers." 1>&2
- exit 1
- fi
- fi
-done
diff --git a/codegen/vulkan/BUILD.adoc b/codegen/vulkan/BUILD.adoc
deleted file mode 100644
index 855b7d33..00000000
--- a/codegen/vulkan/BUILD.adoc
+++ /dev/null
@@ -1,459 +0,0 @@
-// Copyright 2014-2021 The Khronos Group Inc.
-// SPDX-License-Identifier: CC-BY-4.0
-
-= Vulkan^(R)^ Specification Build Instructions and Notes
-:toc2:
-:toclevels: 2
-
-ifdef::env-github[]
-:note-caption: :information_source:
-endif::[]
-
-[[intro]]
-== Introduction
-
-This README describes how to build the Vulkan API specification, reference
-pages, and/or other related targets.
-
-It documents how to set up your build environment, build steps and targets,
-and contains some troubleshooting advice.
-
-[[building]]
-== Building The Spec
-
-First, clone the Khronos Github repository containing the Vulkan
-specification to your local Linux, Windows, or Mac PC.
-The repository is located at https://github.com/KhronosGroup/Vulkan-Docs/.
-
-Next, install all the necessary build tools (see <<depends,Software
-Dependencies>> below).
-If you are using the <<depends-docker, Khronos-Provided Docker Image>>,
-which we strongly recommend, then one way to build using the image (assuming
-a Linux docker host) is:
-
- $ docker run --user `id -u`:`id -g` -it --rm \
- -v <vulkan-path>:/vulkan \
- khronosgroup/docker-images:asciidoctor-spec /bin/bash
-
-where <vulkan-path> is the path to the cloned repository. This runs the
-image with the cloned repository under /vulkan and accesses it as a
-specified user (set to your own user and group ID above), so that it doesn't
-get filled with files owned by another user.
-
-Then in the running image,
-
- $ cd /vulkan
- $ ./makeSpec -spec core html
-
-which builds an HTML5 specification output for the core Vulkan 1.2
-specification, with no extensions included, or
-
- $ ./makeSpec -spec all all
-
-which builds the spec targets `html`, `pdf`, `styleguide`, `registry`,
-`manhtmlpages`, and `allchecks`, with *all* registered extensions included.
-
-There are many other ways of using the image, including inside a Continuous
-Integration pipeline; locally with persistent Docker volume storage of the
-repository; and so on.
-
-If you are not using our Docker image to build with, and you have a
-<<depends-nondocker, Non-Docker Build Environment>> with the entire
-toolchain installed, you can go to <vulkan-path> and invoke the same `make`
-commands there.
-
-[NOTE]
-.Note
-====
- * While it's possible to invoke `make` directly, this is rarely
- appropriate or useful.
- Usually dozens to hundreds of build options must be set to specify the
- desired set of extensions to include in the specification.
- The `makeSpec` python script, which is discussed in more detail
- <<building-extensions, below>>, simplifies this process for common
- cases.
- * The `all` target takes a long time to run, and generates outputs that
- are irrelevant for most users.
- The `html` target just generates the HTML output, which is often all
- that's needed for spec bugfixes not involving extensions.
- * The default `make` options build a Vulkan 1.2 specification with no
- optional extensions.
- * The `validusage` target is not built as part of the `all` target, due to
- it needing to be built with all extensions enabled (`-spec all`).
- Building the `validusage` target will fail otherwise.
-====
-
-These targets generate a variety of output documents in the directory
-specified by the Makefile variable `$(OUTDIR)` (by default, `out/`).
-The checked-in file `out/index.html` links to all these
-targets, or they can individually be found as follows:
-
-Vulkan Specification::
- * `html` -- Single-file HTML5 in `$(OUTDIR)/html/vkspec.html`, and KaTeX
- dependency in $(OUTDIR)/katex
- * `chunked` -- Chunked HTML5 in `$(OUTDIR)/html/chap?.html`
- * `pdf` -- PDF in `$(OUTDIR)/pdf/vkspec.pdf`
-"`styleguide`" (Vulkan Documentation and Extensions: Procedures and Conventions)::
- * `styleguide` -- Single-file HTML5 in `$(OUTDIR)/styleguide.html`
-XML Registry schema document::
- * `registry` -- Single-file HTML5 in `$(OUTDIR)/registry.html`
-<<building-diff,Diff spec>>::
- * `diff_html` -- Single-file HTML5 in `$(OUTDIR)/html/diff.html`
-<<refpages,Reference pages>>::
- * `manhtmlpages` -- File-per-entry-point HTML in `$(OUTDIR)/man/html/*`.
- Must be built with all extensions enabled (using `makeSpec -spec all`).
-<<validation-scripts,Validator output>>::
- * None at present. The `allchecks` target writes to standard output unless
- the underlying script is given additional options.
-Valid usage database::
- * `validusage` - json database of all valid usage statements in the
- specification. Must be built with `./makeAllExts` (for now).
- Output in `$(OUTDIR)/validation/validusage.json`.
- A validated schema for the output of this is stored in
- `$(CURDIR)/config/vu-to-json/vu_schema.json`
-
-Once you have the basic build working, an appropriate parallelization
-option, such as `-j 8`, should significantly speed up the reference page
-builds.
-
-If you encounter problems refer to the <<troubleshooting>> section.
-
-
-[[building-versions]]
-=== Building Specifications For Different API Versions
-
-The `Makefile` defaults to building a Vulkan 1.2 specification.
-This is controlled by Asciidoctor attributes passed in the Makefile variable
-`$(VERSIONS)`
-To instead build a Vulkan 1.1 specification, pass
-
-----
-VERSIONS="VK_VERSION_1_0 VK_VERSION_1_1"
-----
-
-on the `makeSpec` command line.
-
-
-[[building-extensions]]
-=== Building With Extensions Included
-
-Extensions are defined in the same source as the core Specification, but
-are only conditionally included in the output.
-http://asciidoctor.org/docs/user-manual/#attributes[Asciidoctor attributes]
-of the same name as the extension are used to define whether the extension
-is included or not -- defining such an attribute will cause the output to
-include the text for that extension.
-
-When building the specification, the extensions included are those specified
-as a space-separated list of extension names (e.g. `VK_KHR_surface`) in the
-Makefile variable `$(EXTENSIONS)`, usually set on the make command line.
-When changing the list of extensions, it is critical to remove all generated
-files using the `clean_generated` Makefile target, as the contents of
-generated files depends on `$(EXTENSIONS)`.
-
-The `makeSpec` wrapper script can clean generated files and then build one
-or more specification targets for a set of explicitly specified extensions,
-including all implicit extension dependencies of that set.
-It accepts these options:
-
- * -clean - remove generated targets before building
- * -v - print actions as well as executing them
- * -n - print actions without executing them
- * -genpath *path* - specify path to generated files (default `gen`)
- * -spec *type* - build with sepcified sets of extensions.
- *type* may be
- ** *core* - no extensions added (default if not specified)
- ** *khr* - all KHR extensions added
- ** *all* - all registered extensions added
- * -extension *extname* - build with specified extension included,
- as well as the set specified by `-spec`.
- Can be given multiple times.
- * All remaining targets are arbitrary `make` options or
- targets in the Makefile.
-
-The `target(s)` passed to these scripts are arbitrary `make` options, and
-can be used to set Makefile variables and options discussed above, as well
-as specify actual build targets.
-For example, to build the HTML specification with all KHR extensions
-included as well as a single vendor extension:
-
-----
-$ ./makeSpec -clean -spec khr -extension VK_EXT_debug_report html
-----
-
-The scripts `makeAllExts`, `makeKHR`, and `makeExt` set appropriate options
-and invoke `makeSpec`, for backwards compatibility, but are no longer used
-by Khronos.
-
-The Makefile variable `$(APITITLE)` defines an additional string which is
-appended to the specification title.
-When building with extensions enabled, this should be set to something like
-`(with extension VK_extension_name)`.
-The `makeSpec` script already does this.
-
-The reference pages (the `manhtmlpages` target) must be built using the
-`-spec all` option; there are markup and scripting issues which will
-probably cause any more restricted set of refpages to fail to build.
-
-
-[[building-diff]]
-==== Building A Highlighted Extension Diff
-
-The `diff_html` target in the Makefile can be used to generate a version of
-the specification which highlights changes made to the specification by the
-inclusion of a particular set of extensions.
-
-Extensions in the Makefile variable `$(EXTENSIONS)` define the base
-extensions to be enabled by the specification, and these will not be
-highlighted in the output.
-Extensions in the Makefile variable `$(DIFFEXTENSIONS)` define the set of
-extensions whose changes to the text will be highlighted when they are
-enabled.
-Any extensions in both variables will be treated as if they were only
-included in `$(DIFFEXTENSIONS)`.
-`$(DIFFEXTENSIONS)` can be set when using the `makeSpec` script described
-above.
-
-In the resulting HTML document, content that has been added by one of the
-extensions will be highlighted with a lime background, and content that was
-removed will be highlighted with a pink background.
-Each section has an anchor of `#differenceN`, with an arrow (=>) at the end
-of each section which links to the next difference section.
-The first diff section is `#difference1`.
-
-[NOTE]
-.Note
-====
-This output is not without errors.
-It may instead result in visible `+++[.added]##content##+++` and
-`+++[.removed]##content##+++`, and so also highlights not being rendered.
-But such visible markup still correctly encapsulates the modified content.
-====
-
-[[building-test]]
-=== Alternate and Test Builds
-
-If you are just testing Asciidoctor formatting, macros, stylesheets, etc.,
-you may want to edit `vkspec.txt` to just include your test code.
-The asciidoctor HTML build is very fast, even for the whole Specification,
-but PDF builds take several minutes.
-
-
-=== Images Used In The Specification
-
-All images used in the specification are in the `images/` directory in the
-SVG format, and were created with Inkscape.
-We recommend using Inkscape to modify or create new images, as we've had
-problems using SVG files created by some other tools; especially in the PDF
-builds.
-
-
-[[validation-scripts]]
-=== Validation Scripts
-
-The `allchecks` Makefile target runs a Python script that looks for markup
-errors, missing interfaces, macro misuse, and inconsistencies in the
-specification text.
-This script is necessarily heuristic, since it's dealing with lots of
-hand-written material, but it identifies many problems and can suggest
-solutions.
-This script is also run as part of the CI tests in the internal Khronos
-gitlab repository.
-
-
-[[macros]]
-== Our Asciidoctor Macros
-
-We use many custom Ruby macros in the reference pages and API spec
-Asciidoctor sources.
-The validator scripts rely on these macros as part of their sanity checks,
-and you should use the macros whenever referring to an API command, struct,
-token, or enum name, so the documents are semantically tagged and more
-easily verifiable.
-
-The supported macros are defined in the `config/spec-macros/extension.rb`
-asciidoctor extension script.
-
-The tags used are described in the
-link:https://www.khronos.org/registry/vulkan/specs/1.1/styleguide.html[style
-guide] (generated from `styleguide.txt`).
-
-We (may) eventually tool up the spec and reference pages to the point that
-anywhere there's a type or token referred to, clicking on (or perhaps
-hovering over) it in the HTML view will take reader to the definition of
-that type/token.
-That will take some more plumbing work to tag the stuff in the autogenerated
-include files, and do something sensible in the spec (e.g. resolve links to
-internal references).
-
-Most of these macros deeply need more intuitive names.
-
-
-[[refpages]]
-== Reference Pages
-
-The reference pages are extracted from the API Specification source, which
-has been tagged to help identify boundaries of language talking about
-different commands, structures, enumerants, and other types.
-A set of Python scripts extract and lightly massage the relevant tagged
-language into corresponding reference page sources.
-
-To regenerate the reference page sources from scratch yourself, execute:
-
-----
-./makeSpec -spec all refpages
-----
-
-The `genRef.py` script will generate many warnings, but most are just
-reminders that some pages are automatically generated.
-If everything is working correctly, all the `$(GENERATED)/refpage/*.txt`
-files will be regenerated, but their contents will not change.
-
-If you add new API features to the Specification in a branch, make sure that
-the commands have the required tagging and that reference pages are
-generated for them, and build properly.
-
-When executing the `manhtmlpages` target in the Makefile, after building
-HTML versions of all reference pages extracted from the spec, symbolic links
-from aliases to the reference page for the API they alias will also be
-created.
-
-
-[[styles]]
-== Our stylesheets
-
-We use an HTML stylesheet `config/khronos.css` derived from the
-http://asciidoctor.org/docs/produce-custom-themes-using-asciidoctor-stylesheet-factory/[Asciidoctor
-stylesheet factory] "`colony`" theme, with the default Arial font family
-replaced by the sans-serif https://en.wikipedia.org/wiki/Noto_fonts[Noto
-font family].
-
-
-[[styleguide]]
-== Vulkan Style Guide
-
-
-If you're writing new spec language or modifying existing language, see the
-link:https://www.khronos.org/registry/vulkan/specs/1.2/styleguide.html["`style
-guide`"] (formally titled "`Vulkan Documentation and Extensions: Procedures
-and Conventions`") document for details of our asciidoctor macros,
-extensions, mathematical equation markup, writing style, etc.
-
-
-[[depends]]
-== Software Dependencies
-
-This section describes the software components used by the Vulkan spec
-toolchain.
-
-In the past, we previously specified package versions and instructions for
-installing the toolchain in multiple desktop environments including Linux,
-MacOS X, and Microsoft Windows.
-The underlying components evolve rapidly, and we have not kept those
-instructions up to date.
-
-
-[[depends-docker]]
-=== Khronos-Provided Docker Image
-
-Khronos has published a Docker image containing a Debian Linux distribution
-with the entire toolchain preinstalled.
-
-We will occasionally update this image if needed, and we recommend people
-needing to build from this repository use the Docker image.
-
-Docker installation is beyond the scope of this document.
-Refer to link:https://docs.docker.com/get-docker/[the Docker website] for
-information about installing Docker on Linux, Windows, and MacOS X.
-
-The name of the build image is
-
- khronosgroup/docker-images:asciidoctor-spec
-
-It can be pulled from the
-link:https://hub.docker.com/repository/docker/khronosgroup/docker-images[Dockerhub
-repository] with the command
-
- docker pull khronosgroup/docker-images:asciidoctor-spec
-
-Once docker is installed and the image is available, it can be executed as
-described above under <<building, Building the Spec>> to generate
-Specification output documents or other Makefile targets.
-
-[NOTE]
-.Note
-====
-The old `vulkan-docs-base` and `vulkan-docs` images continue to be hosted,
-but the new `asciidoctor-spec` image is preferred - the added functionality
-of `vulkan-docs`, to set the user/group inside Docker based on environment
-variables passed into Docker, is no longer needed with the Docker `--user`
-option.
-====
-
-
-[[depends-nondocker]]
-=== Non-Docker Build Environments
-
-We do not actively support building outside of our Docker image, but it is
-straightforward to reproduce our toolchain in a Debian (or similar APT-based
-Linux) distribution by executing the same steps as the
-link:https://github.com/KhronosGroup/DockerContainers/blob/master/asciidoctor-spec.dockerfile[Dockerfile]
-used to build our Docker image.
-
-It should be possible to apply the same steps in a Windows Subsystem for
-Linux (WSL2) environment on Windows 10, as well.
-
-For other native environments, such as MacOS X and older Unix-like
-environments for Windows such as MinGW and Cygwin, we provided instructions
-in older versions of this document.
-While those instructions are out of date and have been removed from current
-versions of this document, you may be able to make use of
-link:https://github.com/KhronosGroup/Vulkan-Docs/blob/v1.2.135/BUILD.adoc#depends[the
-version of BUILD.adoc in the v1.2.135 repository tag]
-
-[NOTE]
-.Note
-====
-While we have no intention of forcing people to use our Docker image, we
-cannot support every possible environment.
-The Docker image is a straightforward way to use the Vulkan-Docs repository
-with almost all modern desktop environments.
-====
-
-
-[[history]]
-== Revision History
-
- * 2021-03-12 - Use the new Docker image.
- * 2020-07-15 - Update to use `makeSpec` instead of `makeAllExts`.
- * 2020-03-23 - Document Khronos' published Docker image for building the
- spec, and remove all platform-specific instructions.
- * 2018-12-04 - Update Rbenv and ruby gem installation instructions and
- package dependencies for Linux and Ubuntu/Windows 10.
- * 2018-10-25 - Update Troubleshooting, and Windows and Linux build. Plus
- random editing.
- * 2018-03-13 - Rename to BUILD.adoc and update for new directory
- structure.
- * 2018-03-05 - Update README for Vulkan 1.1 release.
- * 2017-03-20 - Add description of prawn versioning problem and how to fix
- it.
- * 2017-03-06 - Add description of ruby-enum versioning problem and how to
- fix it.
- * 2017-02-13 - Move some comments here from ../../../README.md. Tweak
- asciidoctor markup to more clearly delineate shell command blocks.
- * 2017-02-10 - Add more Ruby installation guidelines and reflow the
- document in accordance with the style guide.
- * 2017-01-31 - Add rbenv instructions and update the README elsewhere.
- * 2017-01-16 - Modified dependencies for Asciidoctor
- * 2017-01-06 - Replace MathJax with KaTeX.
- * 2016-08-25 - Update for the single-branch model.
- * 2016-07-10 - Update for current state of spec and ref page generation.
- * 2015-11-11 - Add new can: etc.
- macros and DBLATEXPREFIX variable.
- * 2015-09-21 - Convert document to asciidoc and rename to README.md in the
- hope the gitlab browser will render it in some fashion.
- * 2015-09-21 - Add descriptions of LaTeX and MathJax math support for all
- output formats.
- * 2015-09-02 - Added Cygwin package info.
- * 2015-09-02 - Initial version documenting macros, required toolchain
- components and versions, etc.
diff --git a/codegen/vulkan/CODE_OF_CONDUCT.adoc b/codegen/vulkan/CODE_OF_CONDUCT.adoc
deleted file mode 100644
index d8c25465..00000000
--- a/codegen/vulkan/CODE_OF_CONDUCT.adoc
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright 2018-2021 The Khronos Group Inc.
-// SPDX-License-Identifier: CC-BY-4.0
-
-= Code of Conduct
-
-A reminder that this issue tracker is managed by the Khronos Group.
-Interactions here should follow the
-https://www.khronos.org/developers/code-of-conduct[Khronos Code of Conduct],
-which prohibits aggressive or derogatory language. Please keep the
-discussion friendly and civil.
diff --git a/codegen/vulkan/CONTRIBUTING.adoc b/codegen/vulkan/CONTRIBUTING.adoc
deleted file mode 100644
index 9551984a..00000000
--- a/codegen/vulkan/CONTRIBUTING.adoc
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2020-2021 The Khronos Group Inc.
-// SPDX-License-Identifier: CC-BY-4.0
-
-= Contributing
-
-Contributions to the Vulkan-Docs repository are welcome.
-
-Contributions may be in the form of Issues proposing a change, or Pull
-Requests containing fixes for, or additions to:
-
- * Specification text and other documentation
- * XML API Registry
- * Specification scripting / build toolchains and related infrastructure
-
-Please keep contributions focused on solving a single issue or bug.
-
-== Copyright Notice and License Template
-
-If you are adding a new file, it must be under one of the following
-licenses:
-
- * Creative Commons Attribution 4.0 International, for specification text
- (for example, link:vkspec.txt[`vkspec.txt`])
- * Apache 2.0, for all other changes (for example,
- link:scripts/reg.py[`reg.py`])
- * Apache 2.0 OR MIT, for source-like files that may need to used in GPL
- projects (for example, link:xml/vk.xml[`vk.xml`])
-
-We use a short license in each file consisting of just the copyright
-statement and the SPDX license identifier of the license applying to that
-file, and link to the full license text from link:LICENSE.adoc.
-
-== Contributor License Agreement
-
-When you propose a pull request on Vulkan-Docs you must execute the Khronos
-Mixed Repository Contributor License Agreement, to confirm you own your work
-and are granting Khronos the necessary permissions to redistribute it under
-our licenses.
diff --git a/codegen/vulkan/COPYING.adoc b/codegen/vulkan/COPYING.adoc
deleted file mode 100644
index 8aafada3..00000000
--- a/codegen/vulkan/COPYING.adoc
+++ /dev/null
@@ -1,91 +0,0 @@
-// Copyright 2020-2021 The Khronos Group Inc.
-// SPDX-License-Identifier: CC-BY-4.0
-
-= COPYING file for the KhronosGroup/Vulkan-Docs project
-
-== Licenses
-
-The Vulkan-Docs project uses several licenses.
-
-* The source files (in asciidoctor and other formats) for the Vulkan
- Specification, reference pages, and supporting documentation are licensed
- under the Creative Commons Attribution 4.0 International License (SPDX
- license identifier "`CC-BY-4.0`").
-* Header files, scripts, programs, XML files, and other tooling used or
- generated as part of the build process are typically licensed under the
- Apache License, Version 2.0 (SPDX license identifier "`Apache-2.0`").
-* For compatibility with external developers working in GPLed projects who
- have requested it, link:xml/vk.xml[`vk.xml`] is licensed under a dual
- (SPDX license identifier "`Apache-2.0 OR MIT`" License).
-* Fonts derived from the M+ Font Project, found in
- link:config/fonts/[`config/fonts/`] are licensed under the M+ Font License
- (SPDX license identifier "`LicenseRef-MPLUS`"). This is an open source
- license but is not OSI-approved, and is found at
- https://osdn.net/softwaremap/trove_list.php?form_cat=370
-* Code which converts the single-file HTML specification to a chunked
- HTML document, kept in
- link:scripts/asciidoctor-chunker[`scripts/asciidoctor-chunker`], is
- licensed under the MIT license. The home of the
- link:https://github.com/wshito/asciidoctor-chunker[chunker project] is
- found on github.
-* There are a few remaining files adopted from other open source projects,
- such as a copy of the KaTeX distribution. Such files continue under their
- original MIT licenses, or in a few cases, like
- link:scripts/htmldiff/htmldiff[`scripts/htmldiff/htmldiff`], had no
- license statement. We have not added SPDX license identifiers to such
- externally originated files.
-* Some generated, transient files produced during the course of building the
- specification, headers, or other targets may not have copyrights. These
- are typically very short asciidoc fragments describing parts of the Vulkan
- API, and are incorporated by reference into specification or reference
- page builds.
-
-Users outside Khronos who create and post Vulkan Specifications, whether
-modified or not, should use the CC-BY-4.0 license on the *output* documents
-(HTML, PDF, etc.) they generate. This is the default when building the
-Specification.
-
-
-== Frequently Asked Questions
-
-Q: Why are the HTML and PDF Specifications posted on Khronos' website under
-a license which is neither CC-BY nor Apache-2.0?
-
-A: The Specifications posted by Khronos in the Vulkan Registry are licensed
-under the proprietary Khronos Specification License. Only these
-Specifications are Ratified by the Khronos Board of Promoters, and therefore
-they are the only Specifications covered by the Khronos Intellectual
-Property Rights Policy.
-
-
-Q: Does Khronos allow the creation and distribution of modified versions of
-the Vulkan Specification, such as translations to other languages?
-
-A: Yes. Such modified Specifications, since they are not created by Khronos,
-should be placed under the CC-BY license. If you believe your modifications
-are of general interest, consider contributing them back by making a pull
-request (PR) on the Vulkan-Docs project.
-
-
-Q: Can I contribute changes to the Vulkan Specification?
-
-A: Yes, by opening an Issue or Pull Request (PR) on the
-link:https://github.com/KhronosGroup/Vulkan-Docs/[Vulkan-Docs] Github
-project.
-You must execute a click-through Contributor License Agreement, which brings
-your changes under the umbrella of the Khronos IP policy.
-
-
-Q: Can you change the license on your files so they're compatible with my
-license?
-
-A: We are using a dual license license on `vk.xml`, to make it compatible
-with GPL-licensed projects such as externally-generated language bindings.
-This replaces an earlier Apache 2.0 + "Exception Clause" license on the file
-with a more standard methodology, and allows use of the SPDX license
-identifier "`Apache-2.0 OR MIT`" to denote the license.
-
-If you *require* GPL compatibility for use of other Apache-2.0 licensed
-files in our repository, please raise an issue identifying the files and we
-will consider changing those specific files to the dual license as well.
-
diff --git a/codegen/vulkan/ChangeLog.txt b/codegen/vulkan/ChangeLog.txt
deleted file mode 100644
index aecdfa01..00000000
--- a/codegen/vulkan/ChangeLog.txt
+++ /dev/null
@@ -1,9691 +0,0 @@
-Copyright 2016-2021 The Khronos Group Inc.
-SPDX-License-Identifier: CC-BY-4.0
-
-Update Log for the Vulkan-Docs repository on Github. Updates are in reverse
-chronological order starting with the latest public release.
-
-This summarizes the periodic public updates, not individual commits. Updates
-on Github are done as single large patches at the release point, collecting
-together the resolution of many Khronos internal issues, along with any
-public pull requests that have been accepted.
-
------------------------------------------------------
-
-Change log for November 9, 2021 Vulkan 1.2.198 spec update:
-
- * Update release number to 198 for this update.
-
-Github Issues:
-
- * Sort dependencies of "`Provided by`" comments in generated API includes,
- and remove duplicates (public issue 1483, internal issue 2620).
- * Remove max-width attribute from document headers, causing CSS to limit
- page width in wide windows (public pull request 1660).
-
-Internal Issues:
-
- * Filter out `VK_VERSION_1_x` pages when generating refpage sources for a
- build that does not include the corresponding core version (internal
- issue 1971).
- * Adjust section header level for extension appendix refpages to match
- other refpages (internal issue 2151).
- * Add and fix protected memory valid usage statements to require queues be
- protected if any batch if a protected batch, and restrict indirect
- operations when pname:protectedNoFault is supported (internal issues
- 2169, 2841)
- * Generate refpages to SPIR-V builtins, which were marked up in the spec
- source but not being extracted and built (internal issue 2395).
- * Clarify VUID 04918 regarding use of code:Location decorations (internal
- issue 2737).
- * Remove redundant nested VK_VERSION_1_1 conditional markup from the
- <<initialization>> chapter (internal issue 2851).
- * Add code:IdrPicFlag to code:StdVideoDecodeH264PictureInfoFlags for
- provisional video extensions (internal issue 2901).
- * Fix incorrect example code in apiext:VK_HUAWEI_subpass_shading appendix
- sample code (internal merge request 4889).
- * Promote ename:VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT and
- ename:VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT in a few
- places where the etext:KHR suffixes had not been removed (internal merge
- request 4902).
- * Add missing format properties consistency checks for
- slink:VkDrmFormatModifierPropertiesList2EXT and
- slink:VkAndroidHardwareBufferFormatProperties2ANDROID.
- * Minor editorial markup fixes.
-
------------------------------------------------------
-
-Change log for November 2, 2021 Vulkan 1.2.197 spec update:
-
- * Update release number to 197 for this update.
-
-Github Issues:
-
- * Align some of the provisional video standard headers enums and bitfields
- to have predictable sizes (public issue 1571).
- * Remove exporting of D3D memory handles from
- slink:VkExportMemoryWin32HandleInfoKHR (public pull request 1612).
- * Add language to slink:VkAccelerationStructureBuildGeometryInfoKHR
- explicitly stating that source and target acceleration structures are
- allowed to be the same or different during an update (public issue
- 1641).
- * Fix typos (public pull request 1662).
- * Register remaining newly introduced `vk_video` types in `vk.xml` (public
- pull request 1663).
-
-Internal Issues:
-
- * Clarify <<resources-external-sharing, ownership transfers on external
- resources>> (internal issue 2692).
- * Changes to (nearly) eliminate dead internal links and improve scripts:
- ** Correctly generate API dependencies on extensions and core versions in
- cases where "`spelling aliases`" were present
- ** Clean up a few incorrectly marked up links, anchors, and refpage block
- alias= attributes
- ** Use an API alias map to substitute promoted API names for promoted-to
- APIs when an older or restricted spec is being generated and the
- promoted-to API is not included
- * Tag sname:VkVideo{Encode,Decode}H26{4,5}ProfileEXT structures as
- extending slink:VkQueryPoolCreateInfo in `vk.xml` (internal issue 2861).
- * Grammar edits to slink:VkAccelerationStructureKHR (internal issue 2887).
- * Change the cited title of the <<LoaderInterfaceArchitecture>> document
- to "`Architecture of the Vulkan Loader Interfaces`" matching a recent
- change in https://github.com/KhronosGroup/Vulkan-Loader/pull/685
- (internal merge request 4823).
- * Re-remove etext:VkVideoEncodeH265CapabilityFlagBitsEXT, which was
- accidentally reintroduced but is still unused (internal merge request
- 4885).
- * Update wording for
- ename:VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR since it no
- longer contains `"update`" (internal merge request 4886).
- * Consistency edits to remove "`instance of`" when referring to a specific
- structure, and use "`render pass`" instead of "`renderpass`" as a noun
- (internal merge request 4896).
- * Add -version option to 'makeSpec' frontend build script.
-
-New Extensions
-
- * `<<VK_KHR_dynamic_rendering>>`
-
------------------------------------------------------
-
-Change log for October 13, 2021 Vulkan 1.2.196 spec update:
-
- * Update release number to 196 for this update.
-
-Github Issues:
-
- * Clarify normative language for
- ename:VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT in
- elink:VkImageUsageFlagBits, allowing two styles of implementation
- (public issue 1616).
- * Fix typo in flink:vkCmdSetScissor (public pull request 1659).
- * Reorder attributes of elink:VkFormatFeatureFlags2KHR in `vk.xml` for
- consistency (public pull request 1653).
-
-Internal Issues:
-
- * More cleanup of internal broken links in various builds of the specs.
- Fix typos on xrefs and anchors, add stub pages for missing Flags and
- FlagBits types, update `spirvcapgenerator.py` to put anchors with the
- same table row they belong to, validate `apiext:` macro targets at build
- time, and don't generate API requirements for `<type>` tags with no
- `category`, eliminating spurious warnings for external types (internal
- issues 2864, 2866).
- * Update `htmldiff` scripts for Python3.
- * Add subsection titles and anchors in the <<fxvertex, Fixed-Function
- Vertex Processing>> chapter to make thematic breaks more clear (internal
- merge request 4867).
-
-New Extensions
-
- * `<<VK_EXT_border_color_swizzle>>`
- * `<<VK_EXT_video_encode_h265>>` *provisional* H.265 video encode codec extension
-
------------------------------------------------------
-
-Change log for October 5, 2021 Vulkan 1.2.195 spec update:
-
- * Update release number to 195 for this update.
-
-Github Issues:
-
- * Add a NOTE to flink:vkDestroyQueryPool clarifying when a query pool can
- be destroyed (public issue 1647).
-
-Internal Issues:
-
- * Begin cleanup of internal broken links in various builds of the specs,
- including generating a Ruby API map to be used by the asciidoctor macros
- to validate their API name arguments; using "nofollow" on github issue
- opening links to avoid link-checkers being interpreted as DOS attacks;
- improved checker scripts; minor markup fixes; and using the `apiext:`
- macro to replace `<<VK_KHR_extension_name>>`-style extension links
- everywhere (internal issue 2831).
- * Minor editorial cleanups to descriptions of
- `apiext:VK_FUCHSIA_buffer_collection` APIs (internal issue 2836).
- * Match `Cull Mask` SPIR-V name to pname:mask parameter name in the
- <<acceleration-structure, Acceleration Structures>> chapter (internal
- merge request 4844).
- * Add pname:minTexelOffset and pname:maxTexelOffset limit valid usage
- statements for code:OpImageSample* and code:OpImageFetch* in the
- <<spirvenv-module-validation-runtime, Runtime SPIR-V Validation>>
- section (internal merge request 4845).
- * Add pname:maxFragmentDualSrcAttachments and
- pname:maxFragmentCombinedOutputResources limit valid usage statements
- for output and color attachments in the
- <<spirvenv-module-validation-runtime, Runtime SPIR-V Validation>>
- section (internal merge request 4847).
-
-New Extensions
-
- * `<<VK_KHR_format_feature_flags2>>`
- * `<<VK_KHR_maintenance4>>`
- * `<<VK_EXT_rgba10x6_formats>>`
-
------------------------------------------------------
-
-Change log for September 28, 2021 Vulkan 1.2.194 spec update:
-
- * Update release number to 194 for this update.
-
-Github Issues:
-
- * Add missing `len` attribute to
- slink:VkCuModuleCreateInfoNVX::pname:pData (public merge request 1646).
- * Refer to dynamic state consistently from ftext:vkCmdSet* commands, and
- link to the definition of dynamic state (public issue 1428, but with
- expanded scope beyond the actual ask in that issue).
-
-Internal Issues:
-
- * Fix incorrect member name in slink:VkRenderPassCreateInfo valid usage
- statement 02515 (internal issue 2824).
- * Fix XML dependency for `<<VK_NV_device_generated_commands>>` (internal
- issue 2818).
- * Add packed formats from `<<VK_KHR_sampler_ycbcr_conversion>>`` to the
- <<formats-packed, table of packed formats>> and improve description of
- packed format naming conventions (internal merge request 4798).
-
-New Extensions
-
- * `<<VK_FUCHSIA_buffer_collection>>`
-
------------------------------------------------------
-
-Change log for September 21, 2021 Vulkan 1.2.193 spec update:
-
- * Update release number to 193 for this update.
-
-Github Issues:
-
- * Use consistent `implicitexternsync` language in XML for
- flink:vkDestroyDevice (public issue 1482).
- * Clarify requirements of flink:vkGetInstanceProcAddr to match that of the
- Android loader when attempting to retrieve a global function with a
- non-NULL instance parameter (public issue 1605).
- * Add new elink:VK_DRIVER_ID reservations for upcoming Mesa drivers
- (public pull request 1642).
-
-Internal Issues:
-
- * Fix flink:vkCmdEndDebugUtilsLabelEXT to clarify command buffer recording
- interactions with debug labels (internal issue 2777).
- * Improve NOTE for acceleration structure capture / replay in
- slink:VkAccelerationStructureCreateInfoKHR (internal issue 2769).
- * Add "`See Also`" crosslinks to extension refpages providing aliased APIs
- in API refpages (internal issue 2819).
- * Fix markup for core version (`VK_VERSION_1_0`, etc.) refpages -
- asciidoctor doesn't allow section headers here and this affected the
- specification appendix rendering (internal issue 2826).
- * Use open range notation for slink:VkSamplerCreateInfo
- ptext:addressMode[UVW] descriptions (internal issue 2829).
- * Replace term "`channel`" with "`component`" when discussing formats, and
- update glossary to help clarify formats such as
- ename:VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 and
- ename:VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 (internal merge
- request 4799).
- * Fix some primitive_topology_list_restart VUIDs to only apply if
- pname:primitiveRestartEnable is ename:VK_TRUE (internal merge request
- 4818).
- * Fix slink:VkPhysicalDeviceShaderCorePropertiesAMD `limittype` attributes
- in XML (internal merge request 4819).
- * Fix accidentally duplicated VUIDs 06256 due to missing {accessMaskName}
- in VUID markup (internal merge request 4829).
- * Miscellaneous minor formatting and style fixes (internal merge requests
- 4832, 4838).
-
------------------------------------------------------
-
-Change log for September 14, 2021 Vulkan 1.2.192 spec update:
-
- * Update release number to 192 for this update.
-
-Github Issues:
-
- * Correctly describe slink:VkDeviceQueueInfo2::pname:pNext (public issue
- 1622).
- * Improve behavior of contact links from extension metadata generator
- (public merge request 1635).
- * Require slink:VkDeviceAddress in 1.0 spec conditional markup, matching
- XML (public issue 1636).
-
-Internal Issues:
-
- * Turn <<spirvenv-module-validation-runtime, Runtime SPIR-V Validation>>
- section into formal Valid Usage statements with assigned valid usage IDs
- (internal issue 1598).
- * Use `pass:[~~~~]` delimiters for `[source]` blocks inside reference page
- `[open]` blocks to bypass logic problem with VUID assignment script
- (internal issue 2040).
- * Update style guide to incorporate Khronos Inclusive Language document by
- reference. Followon changes will apply the suggestions as needed
- (internal issue 2293).
- * Add clarifications about ray tracing transform matrices to
- slink:VkAccelerationStructureGeometryTrianglesDataKHR,
- slink:VkAccelerationStructureBuildOffsetInfoKHR, and the
- <<ray-intersection-candidate-determination, Ray Intersection Candidate
- Determination>> section (internal issue 2709).
- * Clarify descriptor requirements for code:Buffer and code:Subpassdata in
- the <<interfaces-resources-correspondence, Shader Resource and
- Descriptor Type Correspondence>> table (internal issue 2751).
- * Add aliases for versioned extensions which don't treat the trailing
- version number as a separate word, such as
- ename:VK_KHR_MAINTENANCE1_SPEC_VERSION ->
- ename:VK_KHR_MAINTENANCE_1_SPEC_VERSION, and add a CI test in
- `scripts/xml_consistency.py` to try and detect future occurrences
- (internal issue 2810).
- * Add missing pname:sType and pname:pNext boilerplate descriptions to spec
- language for several elink:*Features structures that were missing it
- (though they did have them in the XML definition of the structures)
- (internal issue 2815).
- * Add extension and version crosslinks to generated reference pages,
- expressing the same information in the `Provided by` comments in
- generated API includes (internal issue 2816).
- * Move the old "`Fragment Shader Execution`" section from the <<shaders>>
- chapter to the <<fragops-shader, Fragment Shading>> section of the
- <<fragops>> chapter, change anchor names accordingly, and factor out
- common related language from several parts of the spec into this section
- (internal merge request 4765).
- * Allow access to the code:PrimitiveId builtin from shaders declared with
- the code:MeshShadingNV capability (internal merge request 4767).
- * Make the <<features-primitiveTopologyListRestart,
- pname:primitiveTopologyListRestart>> feature mandatory for
- `<<VK_EXT_primitive_topology_list_restart>>` (internal merge request
- 4790).
- * Edit <<limits-types, Required Limit Types>> table to add Vulkan 1.2
- interactions for pname:filterMinmaxSingleComponentFormats and
- pname:filterMinmaxImageComponentMapping limits (internal merge request
- 4802).
- * Add ename:VK_FORMAT_R10X6_UNORM_PACK16 and
- ename:VK_FORMAT_R12X4_UNORM_PACK16 to the list of 16-bit packed formats,
- and fix formatting of "`wildcard`" enums containing a placeholder _i_
- tag corresponding to supported integers (internal merge request 4803).
- * Refactor CI scripts to use the Makefile `allchecks` target as part of CI
- instead of multiple separate steps, allowing a quick local check
- equivalent to that part of CI, and update that target accordingly
- (internal merge request 4807).
- * Make slink:VkImageCreateInfo valid usage statement 01572 apply to all
- compressed formats (internal merge request 4812).
-
-
------------------------------------------------------
-
-Change log for September 7, 2021 Vulkan 1.2.191 spec update:
-
- * Update release number to 191 for this update.
-
-Internal Issues:
-
- * Update checker scripts to detect extension number conflicts in `vk.xml`,
- and run the check in CI (internal issue 2612).
- * Minor cleanup for the provisional video extensions, including
- documenting a few undocumented enums and structure members and some
- language cleanup (internal issue 2705).
- * Add a NOTE to flink:vkAllocateMemory.txt about protected memory
- allocation count limits (internal issue 2791).
- * Use "`cube map`" rather than "`cubemap`" spelling, and add this case to
- the style guide (internal merge request 4794).
-
-New Extensions:
-
- * `<<VK_EXT_pageable_device_local_memory>>`
-
------------------------------------------------------
-
-Change log for August 29, 2021 Vulkan 1.2.190 spec update:
-
- * Update release number to 190 for this update.
- * Released a few days in advance of the usual Tuesday spec updates due to
- holiday meeting schedule.
-
-Github Issues:
-
- * Make treatment of empty etext:Vk*FlagBits types consistent in `vk.xml`
- (public issue 1601 and merge request 1609)
-
-Internal Issues:
-
- * Add more descriptive language for transforms in the
- <<ray-intersection-candidate-determination, Ray Intersection Candidate
- Determination>> section (internal issue 2709).
- * Update `-validate` logic in registry scripts to validate the `limittype`
- attribute presence and values where required (internal issue 2606).
- * Update common validity statements for access masks to allow shader
- pipeline bits to be use with ename:VK_ACCELERATION_STRUCTURE_READ_BIT
- (internal issue 2782).
- * Fix typo in the description of code:CullDistancePerViewNV (internal
- merge request 4769).
- * Various fixes and simplifications for
- <<spirvenv-module-validation-runtime, Runtime SPIR-V Validation>> valid
- usage statements:
- ** Flatten markup for VK_KHR_shader_subgroup_extended_types valid usage
- statements (internal issue 1598)
- ** Flatten markup for VK_EXT_shader_atomic_float valid usage statements
- (internal issue 1598).
- ** Remove asciidoctor conditional check for
- `VK_KHR_storage_buffer_storage_class`, not needed because the SPIR-V
- specification is unified and `spirv-val` will throw an error if trying
- to use code:StorageBuffer without the proper extension / version being
- set (internal merge request 4779).
-
-New Extensions:
-
- * `<<VK_KHR_shader_integer_dot_product>>`
- * `<<VK_EXT_primitive_topology_list_restart>>`
-
------------------------------------------------------
-
-Change log for August 17, 2021 Vulkan 1.2.189 spec update:
-
- * Update release number to 189 for this update.
-
-Github Issues:
-
- * Add parent check valid usage statements to flink:vkUpdateDescriptors
- (public issue 1581).
- * Document the feature requirement for separate depth/stencil layouts in
- the <<resources-image-layouts, Image Layouts>> section (public issue
- 1583).
- * Revert a valid usage statement constraining
- slink:VkMemoryAllocateInfo::pname:allocationSize (public issue 1595).
- * Remove misleading reference to `z` from the description of image
- coordinates for slink:VkSamplerCreateInfo::pname:unnormalizedCoordinates
- (public issue 1602).
- * Fix typo in <<fxvertex-input-extraction>> section (public pull request
- 1604).
- * Fix comment in example for `<<VK_EXT_debug_utils>>` appendix to
- correctly reference pname:objectHandle, not ptext:object (public pull
- request 1606).
- * Revert `vk_platform.h` path change in `vk.xml` from public pull request
- 1538, which was causing build issues for some projects. We will revisit
- this in the future but did not want to put a problematic change into the
- next SDK update (public pull request 1610).
-
-Internal Issues:
-
- * Use `hexapdf` for PDF optimization, rather than Ghostscript. This
- improves overall PDF generation time about 15-20%, and final PDF size by
- about 1/3 (internal issue 2422).
- * Improve contrast for better accessibility of HTML outputs, based on
- feedback from the ANDI tool. This includes updating the specification
- CSS in `config/khronos.css`, switching to the rouge source code
- highlighter instead of coderay, and overriding some of the rouge theme
- CSS (internal issue 2784).
- * Clarify that transforms are consumed only if transformData is non-null
- for slink:VkAccelerationStructureBuildRangeInfoKHR.txt (internal issue
- 2787).
- * Make spec language describing bitmasks consistent as 'Bits which can: be
- set' (internal merge request 4762).
- * Support `optional` attribute in the valid usage statement generator for
- union types (internal merge request 4772).
-
------------------------------------------------------
-
-Change log for August 10, 2021 Vulkan 1.2.188 spec update:
-
- * Update release number to 188 for this update.
-
-Github Issues:
-
- * Add missing `optional="true"` attributes to pname:pNext members. Enable
- `scripts/xml_consistency.py` in CI, and add check for this case (public
- pull request 1597).
- * Add missing markup (setting `refpage` attributes where they were needed
- for commonvalidity statements) to fix some broken valid usage ID link
- names (public issue 1598).
- * Update valid usage statement 02650 to use "`potential format features`"
- consistently with other recent changes (discussion on public
- Vulkan-ValidationLayers pull request 3139).
-
-Internal Issues:
-
- * Clarify the role of <<ray-traversal-culling-face, face winding>> in the
- context of ray intersection candidate determination and alias
- ename:VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR to
- ename:VK_GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR, corresponding
- to the clarifications (internal issue 2780).
- * Add valid usage statement for flink:vkCmdBeginTransformFeedbackEXT
- requiring a valid graphics pipeline be bound (internal issue 2785).
- * Use the term <<acceleration-structure-def, "`constructed`">> to refer to
- an acceleration structure that was previously built or created by
- copying or deserialization of a built acceleration structure (internal
- merge request 4727).
- * Add explicit valid usage statements to flink:vkWaitForPresentKHR and
- slink:VkPresentInfoKHR requiring the corresponding features be enabled
- (internal merge request 4754).
- * Remove extraneous trailing periods from some valid usage statements
- (internal merge request 4759).
-
-New Extensions:
-
- * `<<VK_EXT_load_store_op_none>>`
-
------------------------------------------------------
-
-Change log for August 3, 2021 Vulkan 1.2.187 spec update:
-
- * Update release number to 187 for this update.
-
-Github Issues:
-
- * Add glossary terms for "`pipeline ray tracing instructions`" and "`ray
- tracing commands`" (public issue 1578).
- * Limit the code:OpTypeImage code:Unknown format restriction to storage
- images in the <<spirvenv-module-validation-runtime, Runtime SPIR-V
- Validation>> section (public issue 1588).
- * Fix slink:VkRect2D::pname:extent in a few places where it was
- misreferenced as pname:offset (public pull request 1590).
-
-Internal Issues:
-
- * Clarify that depth values outside the range [0,1] become undefined
- following the depthClamp stage of the pipeline, by rearranging the
- <<fragops-depth, Depth Test>> section and adding a new "`Depth Clamping
- and Range Adjustment`" subsection (internal issues 2445, 2753).
- * Clarify valid usage statement 01843 for slink:VkDeviceQueueInfo2 to
- match similar statement for flink:vkGetDeviceQueue, and split off part
- of it into a new VU statement (internal issue 2645).
- * Fix a few enumerant and member names in the provisional video extensions
- to comply with the spec style guidelinse (internal issue 2710).
- * Update the descriptions of flink:vkCmdDrawMultiEXT and
- flink:vkCmdDrawMultiIndexedEXT to clarify how they are equivalent to
- calling underlying drawing commands multiple times with different
- parameters (internal issue 2757).
- * Renumber VUIDs which duplicated the numeric portion of another
- non-common VUID, and add a duplicate number detection test to CI to
- prevent recurrences (internal issue 2764).
- * Make code:SubgroupSize command scope uniform in compute dispatches
- (internal issue 2773).
- * Expand the list of valid image layouts for
- <<attachment-type-imagelayout, input attachments>>,
- <<descriptorsets-sampleimage, sampled images>>, and
- <<descriptorsets-combinedimagesampler, combined image samplers>> to
- include DEPTH_READ_ONLY_OPTIMAL and STENCIL_READ_ONLY_OPTIMAL (internal
- issue 2774).
- * Remove `flowRoot` SVG elements from a few recent image updates, as they
- are not supported by the current PDF toolchain (internal issue 2778).
- * Update to asciidoctor-chunker 1.0.4, adding support for `aria-label`
- accessibility tags on the chunked specification forward/back section
- navigation arrows (internal issue 2784).
- * Clean up description of flink:vkCmdClearAttachments and remove redundant
- information (internal merge request 4717).
- * Add a description of each of the
- flink:vkCmdWriteAccelerationStructuresPropertiesKHR::pname:queryPool
- query types (internal merge request 4728).
- * Add new valid usage statement to slink:VkMemoryAllocateInfo when
- allocating a memory object larger than the reported limit (internal
- merge request 4737).
- * Add missing description of pname:layerCount member of
- slink:VkFramebufferAttachmentImageInfo (internal merge request 4744).
-
-
------------------------------------------------------
-
-Change log for July 27, 2021 Vulkan 1.2.186 spec update:
-
- * Update release number to 186 for this update.
-
-Github Issues:
-
- * Reduce size and increase clarity of some SVG images for the provisional
- video extensions (public issue 1537).
- * Use a consistent description of pname:stride as "`byte stride`" rather
- than "`distance in bytes`" in a few places (public issue 1575)
- * Clarify the equivalence of flink:vkQueueWaitIdle to
- fence submission (public issue 1579).
- * Fix XML capabilities for new code:*Float*Atomic* SPIR-V capabilities to
- require slink:VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT rather than
- slink:VkPhysicalDeviceShaderAtomicFloatFeaturesEXT (public pull request
- 1587, although fixed internally first).
-
-Internal Issues:
-
- * Refactor asciidoctor conditionals imbedded within valid usage statements
- so they are extracted properly to `validusage.json`, and add a CI check
- to prevent this happening in the future (internal issues 1529, 2439).
- * Clarify that dynamic vertex buffer object stride of 0 is allowed in
- valid usage statement for flink:vkCmdBindVertexBuffers2EXT
- (internal issue 2742)
- * Add valid usage statement to
- ftext:vkGetPhysicalDeviceSurfaceCapabilities{KHR,2EXT,2KHR},
- ftext:vkGetPhysicalDeviceSurfacePresentModes{KHR,2EXT}, and
- ftext:vkGetDeviceGroupSurfacePresentModes{KHR,2EXT} requiring surface /
- device compatibility (internal issue 2744).
- * Clarify the requirements on code:OpTypeImage for input attachments in
- the <<spirvenv-module-validation, Validation Rules within a Module>> and
- <<interfaces-inputattachment, Fragment Input Attachment Interface>>
- sections (internal issue 2752)
- * Clarify that stipple parameters are ignored when line stipple is
- disabled in slink:VkPipelineRasterizationLineStateCreateInfoEXT
- (internal issue 2763)
- * Improve wording for the shader interface code:Location limit in the
- <<spirvenv-module-validation-runtime, Runtime SPIR-V Validation>>
- section (internal merge request 4693)
-
------------------------------------------------------
-
-Change log for July 20, 2021 Vulkan 1.2.185 spec update:
-
- * Update release number to 185 for this update.
- * Going forward we will probably be moving the default day for spec
- updates to Tuesday (Pacific time) rather than Monday.
-
-Github Issues:
-
- * Clarify that only *device* extensions are required to be specified in
- valid usage statement for flink:vkCreateDevice (public issue 1567).
- * Fix extension dependencies for `<<VK_EXT_calibrated_timestamps>>` to
- include `<<VK_KHR_get_physical_device_properties2>>` (public issue
- 1568).
- * Conditionalize xref to VkPhysicalDeviceSubgroupProperties in
- `<<VK_KHR_spirv_1_4>>` appendix so it does not show up in a 1.0 spec
- build (public issue 1574).
- * Relax portability usage of the identity swizzle in
- slink:VkImageViewCreateInfo valid usage statement 04465 (public
- KhronosGroup/Vulkan-Portability issue 27).
-
-Internal Issues:
-
- * Document in the <<extendingvulkan-extensions-extensiondependencies,
- Extension Dependencies>> section that instance extensions do not have
- dependencies on device extensions, and add a similar requirement to the
- description of the `requires` attribute of extension tags in the
- registry schema document (internal issue 2387).
- * Fix `optional` attribute in XML for
- flink:vkCmdBindVertexBuffers2EXT::pname:pBuffers (internal issue 2574).
- * Remove redundant valid usage statements from flink:vkCmdPipelineBarrier,
- flink:vkCmdSetEvent, and flink:vkCmdResetEvent. Add missing VUs for
- slink:VkSubpassDependency and slink:VkSubpassDependency2 (internal issue
- 2583).
- * Clarify that
- ename:VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR
- must be supported in pname:bufferFeatures (internal issue 2686).
- * Clarify that a valid function pointer pname:fp returned from
- flink:vkGetInstanceProcAddr must not be `NULL` (internal issue 2720).
- * Relax code:Flat, code:NoPerspective, code:Sample, and code:Centroid
- storage class restriction in the
- <<spirvenv-module-validation-standalone, Standalone SPIR-V Validation>>
- section (internal issue 2721).
- * Clarify forward progress behavior of flink:vkAcquireNextImageKHR and
- flink:vkQueuePresentKHR (internal issue 2729).
- * Remove duplicated language describing queue submission in the
- <<fundamentals-execmodel, Execution Model>> and
- <<fundamentals-queueoperation, Queue Operation>> sections (internal
- issue 2736).
- * Describe the new pipeline stage
- ename:VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI in several sections
- of the <<synchronization>> chapter where it was missing (internal issue
- 2745).
- * Improve formatting in the <<limits>> chapter, add support for the
- missing optionally: normative word macro, and replace most use of
- (non-normative) "`optionally`" with normative "`can:`". Update style
- guide to add more contractions and remove contractions from the spec.
- add a better description of the pname:shaderDrawParameters feature
- (internal merge requests 4699, 4708).
- * Fix name of parameter
- flink:vkGetMemoryRemoteAddressNV::pname:pMemoryGetRemoteAddressInfo to
- follow Vulkan conventions (internal merge request 4704).
- * Minor fixes for the <<resources-image-views-compatibility, image view
- compatibility table>> and related minor spec language fixes elsewhere
- (internal merge request 4709).
-
-New Extensions:
-
- * `<<VK_EXT_shader_atomic_float2>>`
- * `<<VK_HUAWEI_invocation_mask>>`
- * `<<VK_KHR_present_id>>`
- * `<<VK_KHR_present_wait>>`
-
-Miscellany:
-
- * Happy Lunar Landing Day!
-
------------------------------------------------------
-
-Change log for July 5, 2021 Vulkan 1.2.184 spec update:
-
- * Update release number to 184 for this update.
-
-Github Issues:
-
- * Make description of
- slink:VkSparseImageMemoryRequirements::pname:formatProperties.imageGranularity
- consistent by replacing the nested structure descriptions with a simple
- description of pname:formatProperties (public issue 1444).
- * Update `<<VK_HUAWEI_subpass_shading>>` extension to rename
- flink:vkGetSubpassShadingMaxWorkgroupSizeHUAWEI to
- flink:vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI and give it a
- dispatchable slink:VkDevice parameter (public issue 1564).
- * Fix labelling of "`Resource`" reference block in pipeline block
- diagrams (public issue 1582).
-
-Internal Issues:
-
- * Replace the old <<resources-image-views-compatibility>> table with a
- simplified image type / image view type compatibility table, and move
- the parameter compatibility portions of the table into explicit valid
- usage statements (internal issue 2586).
- * Define the slink:VkPipelinCacheHeaderVersionOne structure in `vk.xml`
- instead of the previous "`Layout for pipeline cache header version one`"
- table (internal merge request 4011).
- * Make the `requires` attribute of the `spirvcapability` XML tag required
- when specifying a structure, even if what's required is
- `"VK_VERSION_1_0"`, to address a problem in the generated table from
- these tags (internal merge request 4689).
-
-New Extensions:
-
- * `<<VK_NV_extermal_memory_rdma>>`
-
------------------------------------------------------
-
-Change log for June 28, 2021 Vulkan 1.2.183 spec update:
-
- * Update release number to 183 for this update.
-
-Github Issues:
-
- * Rewrite and simplify the <<interfaces-iointerfaces-matching, Interface
- Matching>> section. Clarify that results are undefined if the size of a
- vector mismatches (public issue 666; internal issues 1269, 2059, 2323).
- * Remove inappropriate `const` from `void *pNext` members of
- `returnedonly` structures in `vk.xml` (public issue 1482, internal issue
- 2644).
- * Add a NOTE to the <<interfaces, Shader Interfaces>> chapter that SPIR-V
- execution model keywords with extension suffixes will always be present
- in spec builds, even in a build not supporting any extensions, since
- these keywords appear in the unified SPIR-V specification without such
- qualifiers (public issue 1483, internal issue 2621).
- * Modify `vk.xml` to include the Vulkan platform header via the path
- `vulkan/vk_platform.h` rather than just `vk_platform.h`
- (public pull request 1538).
- * Add length annotations for slink:VkCuLaunchInfoNVX (public issue 1548).
- * Describe slink:VkSubpassDescription::pname:pDepthStencilAttachment
- correctly as a pointer to a structure, not a pointer to an array of
- structures (public issue 1561).
- * Fix `structextends` attribute of
- slink:VkPhysicalDeviceRayTracingMotionBlurFeaturesNV, declare its
- pname:pNext member correctly, and fix some typos in the related
- extension language (public issue 1565, internal issue 2724).
-
-Internal Issues:
-
- * Add explicit valid usage statements for
- flink:vkCmdClearColorImage::slink:VkClearColorValue and
- slink:VkRenderPassBeginInfo::slink:VkClearValue (internal issue 2490).
- * Change the term "`vertex processing {shader} stage`" to
- "`pre-rasterization shader stage`" throughout the specification, link to
- a single definition, and add "`pre-rasterization`" to the glossary
- (internal issue 2634).
- * Add an `<implicitexternsync>` constraint for
- flink:vkResetCommandBuffers::pname:pool (internal issue 2646).
- * Fix typo `vkCmdResetEvent` -> `vkResetEvent` in flink:vkResetEvent valid
- usage statements (internal issue 2651).
- * Fix wording of scope dependencies for slink:VkMemoryBarrier2KHR,
- slink:VkBufferMemoryBarrier2KHR, and slink:VkImageMemoryBarrier2KHR
- members pname:srcAccessMask and pname:dstAccessMask (internal issue
- 2654).
- * Require support for pname:shaderInt64 in the <<features-requirements,
- Feature Requirements>> section when pname:atomicInt64 features are
- supported (internal issue 2660).
- * Clarify ray tracing valid usage statements for cases where a parameter
- refers to an acceleration structure that must have been built (internal
- issue 2715).
- * Add a NOTE clarifying shader record buffer uniformity in the
- <<shader-binding-table, Shader Binding Table>> section (internal issue
- 2719).
- * Minor clarifications and typo fixes to `<<VK_HUAWEI_subpass_shading>>`
- (internal issue 2722).
- * Add missing <spirvextension> entry in `vk.xml` to enable
- `SPV_KHR_subgroup_uniform_control_flow`
- (internal issue 2733).
- * Move SPIR-V valid usage statement from the
- <<spirvenv-module-validation-runtime, Runtime SPIR-V Validation>>
- section to <<spirvenv-module-validation-standalone]] Standalone SPIR-V
- Validation>> (internal merge request 4637).
- * Add a new <<spirvenv-image-signedness, Signedness of SPIR-V Image
- Accesses>> section to allow the use of unsigned Sampled Types with
- code:SignExtend and signed code:Format decorations (internal merge
- request 4638).
- * Add missing slink:VkDeviceCreateInfo to `structextends` attribute of
- slink:VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT (internal merge
- request 4652).
- * Remove nonexistent pname:minFragmentSize from the <<limits-minmax, Limit
- Requirements>> table (internal merge request 4655).
- * Fix markup typo for `<<VK_NV_fragment_shader_barycentric>>` ifdef
- (internal merge request 4663).
-
------------------------------------------------------
-
-Change log for June 21, 2021 Vulkan 1.2.182 spec update:
-
- * Update release number to 182 for this update.
-
-Github Issues:
-
- * Add XML attributes & schema updates to link untyped Vulkan object handle
- values to corresponding object types (public issue 1536).
-
-Internal Issues:
-
- * Automatically generate links to extension proposal documents from
- extension appendices (internal issue 2713).
- * Clean up wording of flink:vkCmdWriteTimestamp and
- flink:vkCmdWriteTimestamp2KHR (internal issue 2425).
- * Fix hpp-compile CI stage after recent changes to Vulkan-Headers
- repository which generate additional header files.
-
-New Extensions:
-
- * `<<VK_EXT_acquire_drm_display>>` (public pull request 1529).
- * `<<VK_EXT_multi_draw>>`
- * `<<VK_EXT_physical_device_drm>>` (public pull request 1356).
- * `<<VK_HUAWEI_subpass_shading>>`
- * `<<VK_NV_ray_tracing_motion_blur>>`
-
------------------------------------------------------
-
-Change log for June 14, 2021 Vulkan 1.2.181 spec update:
-
- * Update release number to 181 for this update.
-
-Github Issues:
-
- * Add stub slink:VkPipelineLayoutCreateFlagBits <enum> type in `vk.xml` to
- reduce spurious warnings from XML processing scripts that don't respect
- the `supported="disabled"` attribute, and update the registry schema
- documentation to make more clear that `extension` tags with this
- attribute should not be processed (public issue 1549).
-
-Internal Issues:
-
- * Clarify implicit conversions between the vertex input attribute
- description format and the shader vertex attribute input type in the
- <<fxvertex-attrib-location, Attribute Location and Component
- Assignment>> and <<fxvertex-input-extraction>> sections (internal issue
- 902).
- * Add text about the <<interfaces-alignment-requirements, base alignment
- of empty structures>> (internal issue 2174).
- * Clarify the use of rasterization order <<primsrast-order,
- "`operations`">> (internal merge request 4582).
- * Allow any pipeline barrier command for queue transfers in the
- <<synchronization-queue-transfers, Queue Family Ownership Transfer>>
- section (internal merge request 4596).
- * Remove potentially confusing reference to
- ename:VK_ERROR_INVALID_SHADER_NV in the description of
- flink:vkCreateShaderModule (internal merge request 4602).
- * Improve visibility of instance creation callbacks by migrating some
- language from the `<<VK_EXT_debug_report>>` and `<<VK_EXT_debug_utils>>`
- appendix examples to the description of slink:VkInstanceCreateInfo
- (internal merge request 4614).
- * Fix markup for sparse image atomic requirements in the
- <<features-requirements, Feature Requirements>> section and for
- slink:VkDeviceCreateInfo valid usage statements (internal merge request
- 4618).
- * Correct the definition of
- ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT
- to constrain pname:chromaFilter, not pname:minFilter / pname:magFilter
- (internal merge request 4623).
- * Add level 3 headings in <<pipelines-cache, Pipeline Cache>> section
- (internal merge request 4627).
- * Clarify flink:vkCmdCopyAccelerationStructureKHR to add details on the
- copy command itself, as well as the etext:CLONE and etext:COMPACT copy
- modes (internal merge request 4631).
- * Remove `<mask>` tags from some SVG images in the provisional video
- extensions. These tags are not supported by components of the PDF
- toolchain. Removing them removes many warnings from the PDF build and is
- a workaround for editing the SVGs to use alternate constructs for the
- intended purpose, although it also make these images in the HTML output
- show the same artifacts as the PDF output.
-
------------------------------------------------------
-
-Change log for June 7, 2021 Vulkan 1.2.180 spec update:
-
- * Update release number to 180 for this update.
-
-Github Issues:
-
- * Add more details about zero shader group handles and draw linkage to
- etext:VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL* flags (public issue 1487).
- * Clarify that semaphore operations don't do work in a specific pipeline
- stage in slink:VkSemaphoreSubmitInfoKHR::pname:stageMask (public issue
- 1501).
- * Fix markup in shared valid usage statements 03766 / 03767 (public issue
- 1528).
-
-Internal Issues:
-
- * Grammatical improvements for various ray tracing sections. Add statement
- that AABB intersections may be false-positives (internal issue 2597).
- * Disambiguate ASTC HDR block error handling in
- <<appendix-compressedtex-astc, ASTC Compressed Image Formats>> and the
- following "`ASTC decode mode`" section (internal issue 2603).
- * Fix some holes in `<<VK_EXT_vertex_input_dynamic_state>>`, including
- adding some missing common draw validity statements; an interaction
- with VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT; an interaction
- with code:nullDescriptor to flink:vkCmdBindVertexBuffers2EXT; and
- language to
- slink:VkGraphicsPipelineCreateInfo::pname:pVertexInputState (internal
- issue 2637, 2684).
- * Make elink:VkAccessFlagBits and elink:VkAccessFlagBits2KHR descriptions
- consistent and reorganize them in matching order (internal issue 2650).
- * Add slink:VkSpecializationInfo::pname:pMapEntries valid usage
- statement requiring the pname:constantID values be unique (internal
- issue 2668).
- * Clarify <<[[queries-wait-bit-not-set, the cases in which
- flink:vkGetQueryPoolResults returns VK_NOT_READY>> (internal issue
- 2676).
- * Add spec language and refpages for API constants. With this change all
- APIs should be defined in the spec (internal issue 2698).
- * Move some restrictions in the <<interfaces, Shader Interfaces>> chapter
- into the <<spirvenv-module-validation-standalone, Standalone SPIR-V
- Validation>> section (internal merge request 4537).
- * Add missing member descriptions to slink:VkSurfaceCapabilities2EXT
- (internal merge request 4544).
- * Update glossary definition of "`Aspect`" to accomodate copy commands
- which can operate on multiple aspects (internal merge request 4586).
- * Add ename:VK_VALIDATION_FEATURE_DISABLE_SHADER_VALIDATION_CACHING_EXT
- enum to provide a standard way to disable caching of shader validation
- results (internal merge request 4589).
- * Remove the `pipeline` attribute from `vk.xml`, and the corresponding
- "`Pipeline Types`" column from the generated command properties tables.
- The `queues` attribute should be used instead (internal merge request
- 4594).
- * Fix typos and improve consistency in the provisional video extension
- language (internal merge request 4598).
- * Use "`implementation-dependent`" spelling consistently, and update the
- style guide to match (internal merge request 4611).
- * Update <<ray-intersection-candidate-determination, ray tracing
- intersection equation>> for triangles to match other API. This cannot be
- distinguished in practice (internal vk-gl-cts issue 2846).
-
-New Extensions:
-
- * `<<VK_KHR_shader_subgroup_uniform_control_flow>>`
- * `<<VK_EXT_global_priority_query>>`
-
------------------------------------------------------
-
-Change log for May 24, 2021 Vulkan 1.2.179 spec update:
-
- * Update release number to 179 for this update.
-
-Github Issues:
-
- * Require that the queried
- slink:VkPhysicalDeviceExternalMemoryHostPropertiesEXT::pname:minImportedHostPointerAlignment
- is a power of two (public issue 1442).
- * Fix direction of enum aliasing for fragment shading rate extensions,
- so NV tokens don't show up in a KHR-only specification build
- (public issue 1482).
- * Split the new <<fundamentals-validusage, Valid Usage>> section off from
- its previous location within the <<fundamentals-errors, Errors>> section
- (public pull request 1503).
- * Correct some typos in stage parameter names (public pull request 1507).
- * Fix minor markup issues (public pull request 1508).
- * Add missiong `optional` attribute to
- flink:vkGetPhysicalDeviceVideoFormatPropertiesKHR::pname:pVideoFormatPropertyCount
- in `vk.xml` (public pull request 1514).
- * Add additional header dependecies for external code:Std* types in the
- provisional video extensions (public pull request 1515).
- * Tagged slink:VkCuModuleCreateInfoNVX::pname:pName as
- `len="null-terminated"` in `vk.xml` (public issue 1526).
- * Fix `:anchor-prefix:` markup showing up in spec outputs due to
- overzealous whitespace removal (public issue 1530).
- * Protect use of `__cplusplus` macro in a preprocessor test in the headers
- (public Vulkan-Headers issue 4).
-
-Internal Issues:
-
- * Rephrase the language describing lifetime of EDID query results for
- slink:VkDisplayPropertiesKHR to be more precise (internal issue 695).
- * Clarify descriptor pool size aggregation behavior for
- slink:VkDescriptorPoolCreateInfo.txt (internal issue 2577).
- * Make valid usage statements for slink:VkImportMemoryFdInfoKHR and
- slink:VkMemoryGetFdInfoKHR properly enforce the relationship between
- pname:fd and pname:handleType (internal issue 2607).
- * Add missing common, non-indirect shared valid usage statements for
- flink:vkCmdDispatchBase (internal issue 2625).
- * Call out precision of pname:subPixelPrecisionBits clearly in the
- <<vertexpostproc-viewport, Controlling the Viewport>> section (internal
- issue 2635)
- * Do not allow code:RayPayloadKHR on any-hit shaders in the
- <<spirvenv-module-validation-standalone, Standalone SPIR-V Validation>>
- section (internal issue 2640).
- * Simplify specification language for sname:VkMemoryDedicatedRequirements
- (internal issue 2661).
- * Remove `optional="true"` attributes from XML for
- slink:VkSurfaceCapabilities* members pname:supportedTransforms,
- pname:supportedCompositeAlpha, and pname:supportedUsageFlags, matching
- descriptions in the specification (internal issue 2666).
- * Add a concurrent deferred host operation example to the
- `<<VK_KHR_deferred_host_operations>>` appendix (internal issue 2677).
- * Add a NOTE to slink:VkAccelerationStructureCompatibilityKHR encouraging
- host-cachable memory for host acceleration structure builds (internal
- issue 2682).
- * Remove redundant language in basetype:VkSampleMask duplicating valid
- usage statements for slink:VkGraphicsPipelineCreateInfo (internal issue
- 2624).
- * Allow `<<VK_EXT_shader_image_atomic_int64>>` to enable the
- code:shaderImageInt64Atomics SPIR-V feature in `vk.xml` (internal SPIR-V
- issue 644).
- * Add valid usage statement to fname:vkCmdWriteTimestamp* for the
- pname:query index in pname:queryPool (internal merge request 4528).
- * Add valid usage statements to flink:vkQueueSubmit2KHR for pname:fence
- (internal merge request 4530).
- * Add *GlCompute* to the disallowed *Output* storage classes in shared valid
- usage statement 04644 for ray tracing functionality (internal merge
- request 4532).
- * Remove redundant code:Patch decoration shared valid usage statement 04671
- (internal merge request 4530).
- * Make the code:sparseImage*Atomics features a superset of the corresponding
- code:shaderImage*Atomics features, in the slink:VkDeviceCreateInfo valid
- usage statements and the <<features-requirements, Feature Requirements>>
- section (internal merge request 4561).
- * Add `specialuse="glemulation,d3demulation"` attribute to XML for
- `<<VK_EXT_custom_border_color>>` (internal merge request 4564).
- * Make array count and pointer-to-array parameter / member descriptions
- more consistent (internal merge request 4566).
- * Add third-level section headings to the <<memory-device, Device Memory>>
- section for clarity (internal merge request 4567).
- * Use the terminology "`drawing/dispatching command`" consistently, add it
- to the style guide, and remove occasional use of "`record`" or "`perform`"
- in refpage summaries of ftext:vkCmd* (internal merge request 4569).
- * Use asciidoctor attributes to genericize more instances of header file
- names, to enable future variant APIs (internal merge request 4581).
- * Fix SVG for some images that render incorrectly in Chrome on MacOS
- (internal merge request 4583).
- * Move some valid usage statements for
- `<<VK_QCOM_render_pass_shader_resolve>>` into
- slink:VkGraphicsPipelineCreateInfo, slink:VkRenderPassCreateInfo2, and
- the <<spirvenv-module-validation-standalone, Standalone SPIR-V
- Validation>> section (internal merge request 4584).
-
------------------------------------------------------
-
-Change log for May 10, 2021 Vulkan 1.2.178 spec update:
-
- * Update release number to 178 for this update.
-
-Github Issues:
-
- * Add `optional` attribute to pname:pFragmentShadingRateAttachment member
- of slink:VkFragmentShadingRateAttachmentInfoKHR, to match specification
- text (public issue 1482).
- * Lots of minor markup and phrasing fixes (public issue 1482).
- * Additional fixes specific to ray tracing extensions, including a few
- duplicate valid usage statements, incorrect descriptions of structure
- members, and incorrect SPIR-V opcodes (public issue 1483).
- * Fix formatting around "`Special Use`" sections in generated refpages
- (public issue 1518).
-
-Internal Issues:
-
- * Language cleanup including removing contractions, and some wording in
- more egregious violation of the style guide.
- * Make parameter handling text in the
- <<deferred-host-operations-requesting, Requesting Deferral>> section
- consistent with the <<fundamentals>> chapter (internal issue 2018).
- * Relax slink:VkCopyDescriptorSet valid usage statements to remove some
- constraints on copying descriptors from sets residing in host memory
- other kinds of sets (internal issue 2610).
- * Clarify the definition of "`intersection`" in the
- <<ray-intersection-candidate-determination, Ray Intersection Candidate
- Determination>> section (internal issue 2623).
- * Allow pname:stride to equal buffer size in
- slink:VkStridedDeviceAddressRegionKHR (internal issue 2631).
- * Fix the ray tracing shader interface table in the
- <<interfaces-raypipeline, Ray Tracing Pipeline Interface>> section
- (internal issue 2640).
- * Try to use consistently-phrased descriptions of etext:*FlagBits* members
- and parameters everywhere (internal issue 2656).
- * Replace "`optional pointer`" terminology with "`NULL or a pointer`" (and
- similar uses), and update the style guide accordingly (internal issue
- 2662).
- * Modify wording of some pipeline creation valid usage statements to tidy
- up cases where certain state isn't required (internal merge request
- 4496).
- * Clarify consistent <<descriptorsets-updates-consecutive, consecutive
- binding updates>> (internal merge request 4500).
- * Clarify that code:scalarBlockLayout is supported on the
- code:ShaderRecordBufferKHR storage class in the
- <<interfaces-resources-standard-layout, Standard Buffer Layout>> section
- (internal merge request 4525).
- * Hide boilerplate Features and Properties text where it incorrectly
- appeared outside the descriptions of feature and property structures,
- respectively (internal merge request 4541).
- * Add missing section headers to the
- `<<VK_KHR_zero_initialize_workgroup_memory>> appendix (internal merge
- request 4553).
- * Add missing `R64ui` and `R64i` entries to the SPIR-V
- <<spirvenv-format-type-matching tables, image format matching tables>>
- for `<<VK_EXT_shader_image_atomic_int64>>` (internal
- Tracker/vk-gl-cts#2885).
-
-New Extensions:
-
- * `<<VK_NVX_binary_import>>` (only appendix and XML - no spec language
- yet).
-
------------------------------------------------------
-
-Change log for April 26, 2021 Vulkan 1.2.177 spec update:
-
- * Update release number to 177 for this update.
-
-Github Issues:
-
- * Add valid usage statement to flink:vkDestroyImage to prevent destruction
- of presentable images acquired from flink:vkGetSwapchainImagesKHR
- (public Vulkan-ValidationLayers issue 2718).
-
-Internal Issues:
-
- * Add proposal template for new feature development (internal issue 2529).
- * Remove valid usage statement 03361 from flink:vkCmdBindVertexBuffers2EXT
- (internal issue 2600).
- * Finish fixing refpage formatting issues for the new video extensions
- (internal issue 2611).
- * Invert direction of ray space matrix to correct the
- <<ray-intersection-candidate-determination, ray/triangle sidedness
- test>> (internal merge request 4480).
- * Fix capitalization of etext:*_EXTENSION_NAME and etext:*_SPEC_VERSION
- tokens for `<<VK_QCOM_render_pass_store_ops>>` (internal merge request
- 4490).
- * Don't generate etext:*_MAX_ENUM tokens for 64-bit flag types. Note that
- these tokens are *explicitly* not part of the Vulkan API and are not
- included in the Specification, only in generated headers. They are added
- to enumerated types to ensure padding to 32 bits, but are completely
- pointless for the 64-bit flag types, which are defined as integer
- constants rather than enumerants (internal merge request 4493).
- * Remove empty VK_ENABLE_BETA_EXTENSION guards from headers when disabling
- extensions (internal merge request 4498).
- * Reproduce valid usage statement constraining pname:query from
- flink:vkCmdBeginQuery to
- flink:vkCmdWriteAccelerationStructuresPropertiesKHR (internal merge
- request 4520).
-
-New Extensions:
-
- * `<<VK_EXT_provoking_vertex>>`
-
------------------------------------------------------
-
-Change log for April 19, 2021 Vulkan 1.2.176 spec update:
-
- * Update release number to 176 for this update.
-
-Github Issues:
-
- * Fix many typos (based on public issues 1483 & 1484).
- * Fix an error in the definition of dname:VK_NULL_HANDLE which caused a
- compilation error with one version of MSVC (public issue 1502).
- * Remove duplicate requirement for elink:VkStructureType from
- dname:VK_VERSION_1_0 block of `vk.xml` (public merge request 1504).
-
-Internal Issues:
-
- * Modify extension metadoc generator to include Contact information in
- extension reference pages (internal issue 2611).
- * Fix XML consistency checker script to add exceptions to naming patterns
- for new extensions (internal merge request 4491).
- * Clean up latest revision numbers in some video extension appendices to
- be integers, for compatibility with the consistency checker script
- (internal merge request 4492).
- * Mark slink:VkIndirectCommandsLayoutCreateInfoNV pname:flags member as
- `optional` in `vk.xml` (internal merge request 4501).
-
-New Extensions:
-
- * `<<VK_EXT_extended_dynamic_state2>>`
-
------------------------------------------------------
-
-Change log for April 13, 2021 Vulkan 1.2.175 spec update:
-
- * Update release number to 175 for this update.
-
-Github Issues:
-
- * Specify that fragment shader invocations in the same quad scope are also
- in the same primitive scope (public issue 1465).
- * Fix an incorrect reference to ename:VK_SHARING_MODE_CONCURRENT to the
- correct ename:VK_SHARING_MODE_EXCLUSIVE in the queue transfer wording
- for slink:VkBufferMemoryBarrier2KHR (public issue 1479).
- * Fix description of <<vertexpostproc-clipping, Primitive Clipping>>
- (public issues 1480 and 1481).
-
-Internal Issues:
-
- * Use consistent language in describing <<features, feature>> and
- <<limits, property (limit)>> queries. In particular, a few structures
- were described as being usable to query feature support, but not to set
- it. This was incorrect. All feature structures which can appear in the
- pname:pNext chain of slink:VkPhysicalDeviceFeatures2 can be used to both
- query and set (internal issue 2310).
- * Add `limittype` attributes to the XML schema and to `vk.xml` for
- structure members which are part of physical device property queries, to
- annotate how the resulting properties are interpreted and replace some
- manual interpretation of these properties (internal issue 2427).
- * Improve slink:VkAttachmentDescription2 wording around the use of
- slink:VkAttachmentDescriptionStencilLayout for specifying the stencil
- aspect layout (internal issue 2496).
- * Split the <<extendingvulkan-coreversions-versionnumbers, major version
- field>> of a packed pname:apiVersion value, introducing a new `variant`
- field. This field allows identification of APIs based on Vulkan, but not
- fully compatible with Vulkan applications. Vulkan is variant 0, making
- the change backwards compatible with the previous definition of
- pname:apiVersion. This change was introduced to enable variants of the
- Vulkan API that Khronos may release in the future, in particular the
- in-development Vulkan SC API. It is purely a future-proofing measure and
- no near-term further use is planned. To support this split, a set of new
- macros is introduced: dname:VK_API_VERSION_VARIANT,
- dname:VK_API_VERSION_MAJOR, dname:VK_API_VERSION_MINOR, and
- dname:VK_API_VERSION_PATCH (internal issue 2531).
- * Clarify that the slink:VkRectLayerKHR members of a
- slink:VkPresentRegionKHR structure must not be transformed to align with
- the swapchain's pname:pTransform. The presentation engine must do this
- transform (internal issue 2571).
- * Fix minor issues with exposed asciidoctor markup in spec outputs
- (internal issue 2576).
- * Tighten up wording around pool entries of mutable descriptor types. for
- slink:VkDescriptorPoolCreateInfo (internal issue 2578).
- * Expand on wording of code:FPRoundingMode valid usage statement in the
- <<spirvenv-module-validation-standalone, Standalone SPIR-V Validation>>
- section (internal merge request 4298).
- * Document interaction with `<<VK_KHR_fragment_shading_rate>>` for
- `<<VK_QCOM_render_pass_transform>>` (internal merge request 4221).
- * Require compile-time constants be explicitly tagged as unsigned or float
- in `vk.xml`. Modify the generator scripts and schema documentation to
- require `type` attributes for such constants. This allows generating
- headers compliant with MISRA section 10.4 requirements, where needed
- (internal merge request 4451).
- * Minor editorial fixes (internal merge request 4454).
- * Disallow code:*Offset* decorations on storage images
- in the <<spirvenv-module-validation-standalone, Standalone SPIR-V
- Validation>> section (internal merge request 4465).
- * Improve the code: macro used in spec markup to allow imbedded wildcards
- separating words and a trailing wildcard (internal merge request 4466).
- * Modify `vk.xml` `requires` attributes to reorder definitions of
- dname:VK_DEFINE_NON_DISPATCHABLE_HANDLE and dname:VK_NULL_HANDLE. This
- prevents a corner case where the app overriding the first macro
- explicitly would prevent definition of dname:VK_NULL_HANDLE (internal
- merge request 4476).
-
-New Extensions:
-
- * `<<VK_EXT_color_write_enable>>`
- * `<<VK_EXT_vertex_input_dynamic_state>>`
- * `<<VK_EXT_ycbcr_2plane_444_format>>`
- * `<<VK_NV_inherited_viewport_scissor>>`
- * Vulkan video core & codecs provisional extension package, including
- ** `<<VK_KHR_video_queue>>`
- ** `<<VK_KHR_video_decode_queue>>`
- ** `<<VK_KHR_video_encode_queue>>`
- ** `<<VK_EXT_video_decode_h264>>`
- ** `<<VK_EXT_video_decode_h265>>`
- ** `<<VK_EXT_video_encode_h264>>`
-
------------------------------------------------------
-
-Change log for March 29, 2021 Vulkan 1.2.174 spec update:
-
- * Update release number to 174 for this update.
-
-Github Issues:
-
- * Add a common header macro dname:VK_USE_64_BIT_PTR_DEFINES to specify at
- compile time whether non-dispatchable handles are declared using a
- 64-bit pointer type, or a 64-bit unsigned interger type. NOTE: it is
- possible that the complex platform-dependent C preprocessor block will
- move from vk.xml into the static (non-generated) vk_platform.h header in
- the near future (partially addresses public issue 1431, in addition to
- internal needs).
- * Clarify code:PatchVertices documentation for tessellation shaders
- (public pull request 1475).
-
-Internal Issues:
-
- * Add valid usage statements restricting bitfield operations to 32-bit
- types in the <<spirvenv-module-validation-standalone, Standalone SPIR-V
- Validation>> section (internal issue 2561).
- * Update registry documentation to require providing the `type` attribute
- of `enum` tags when they are specifying compile-time constants, and
- change the accepted values of the attribute to a small set of C scalar
- type names, instead of schema-specific names. The XML schema itself
- would ideally be updated to match, but we don't know how to do that yet
- (internal issue 2564). NOTE: it is possible this will affect downstream
- consumers of `vk.xml`, although we consider this unlikely.
- * Document in the style guide that bits reserved in corresponding 32- and
- 64-bit bitmasks should be reserved in both types (internal merge issue
- 2565).
- * Add output generator options to generate MISRA-friendly headers, and
- check generator scripts to avoid generating etext:RESERVED 64-bit
- bitflag names specified by `disabled` extensions in `vk.xml` (internal
- merge request 4239, internal issue 2572).
- * Clarify that compressed copies need to round up division in the
- computation `rowLength` and `imageHeight` in the sample code for the
- <<copies-buffers-images-addressing, Buffer and Image Addressing>>
- section (internal merge request 4439).
-
------------------------------------------------------
-
-Change log for March 21, 2021 Vulkan 1.2.173 spec update:
-
- * Update release number to 173 for this update.
-
-Github Issues:
-
- * Fix valid usage statement for flink:vkCmdBeginQueryIndexedEXT to allow
- multiple active queries of the same type, as long as their index values
- are different (public issue 1357).
- * Fix tagging for slink:VkPhysicalDeviceVulkan11Features in `vk.xml`
- (public issue 1437).
- * Update the <<WSI Swapchain>> chapter's use of "`release`" and
- "`present`" terminology (public pull request 1470).
- * Migrate from Azure Pipelines to Github Actions for CI, and use updated
- Khronos Docker image to build (public pull request 1473).
-
-Internal Issues:
-
- * Document requirements for extension <<extensions-feature-structures,
- Feature Structures>> (internal issue 2503).
- * Add missing valid usage statements for slink:VkAttachmentReference2 and
- separate depth/stencil layouts (internal issue 2509).
- * Clarify interactions between `<<VK_EXT_buffer_device_address>>` and
- Vulkan 1.2 in slink:VkDeviceCreateInfo valid usage (internal issue
- 2530).
- * Allow variation in number of acceleration structure handles following a
- top-level acceleration structures for
- flink:vkCmdCopyAccelerationStructureToMemoryKHR (internal issue 2538).
- * Specify implementation requirement for device timestamps in the
- description of elink:VkTimeDomainEXT (internal issue 2551).
- * Update valid usage ID assignment and extraction scripts to handle IDs
- containing function pointer names (internal issue 2557).
- * Move some runtime restrictions to
- <<spirvenv-module-validation-standalone Standalone SPIR-V>> valid usage
- statements (internal merge request 4286).
- * Use new version of the HTML asciidoctor-chunker, which runs much faster,
- and a new Docker image which omits the old implementation of the chunker
- (internal merge request 4391).
- * Fix <<devsandqueues-devices, logical device creation language>> for
- Vulkan 1.1 (internal merge request 4405).
- * Modify scripts to enable platform extensions to be filtered by the
- `"supported"` attribute in `vk.xml` (internal merge request 4411).
- * Add common valid usage statement for draw/dispatch commands on format
- support for mip filters (internal merge request 4413).
- * Fix valid usage statement extractor (vu-to-json) to add padding after
- inserted list items, so they don't absorb other markup that might come
- after in the document (internal merge request 4423).
- * Disallow shadow lookups on 3D images in the
- <<spirvenv-module-validation-standalone, Standalone SPIR-V Validation>>
- section. This is not supported on all hardware, and should not have been
- allowed (internal merge request 4424).
-
-New Extensions:
-
- * `<<VK_FUCHSIA_external_memory>>`
- * `<<VK_FUCHSIA_external_semaphore>>`
-
------------------------------------------------------
-
-Change log for March 8, 2021 Vulkan 1.2.172 spec update:
-
- * Update release number to 172 for this update.
-
-Internal Issues:
-
- * Remove asciidoctor conditional markup for extensions from
- <<spirvenv-module-validation-standalone, Standalone SPIR-V valid usage
- statements>>, and add a note to this effect for future additions
- (internal issue 2512).
- * Update the descriptions (and related validation rules) of
- code:uniformAndStorageBuffer8BitAccess and
- code:uniformAndStorageBuffer16BitAccess to only refer to the
- code:Uniform storage class; and update the 16-bit storage feature
- validation rules to refer to 16-bit floating-point, similarly to the
- feature descriptions. These changes are in the
- <<spirvenv-module-validation-runtime, Runtime SPIR-V Validation>>
- <<features-requirements, Feature Requirements>> sections (internal issue
- 2535).
- * Ban recursion in tlink:PFN_vkDebugUtilsMessengerCallbackEXT callbacks,
- for consistency of `<<VK_EXT_debug_utils_callbacks>>` with
- `<<VK_EXT_device_memory_report>>` and the rules for
- slink:VkAllocationCallbacks (internal issue 2537).
- * Remove dependency on `<<VK_KHR_create_renderpass2>>` from `vk.xml` for
- `<<VK_KHR_synchronization2>>` (internal issue 2539).
- * Add the transform feedback pipeline stage as valid for
- ename:VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT access (internal
- merge request 4355).
- * Fix typo in `<<VK_EXT_debug_utils>>` examples (internal merge request
- 4395).
- * Fix typo to refer to "`buffer view`" rather than "`image view`" in the
- valid usage statements for code:OpImageWrite (internal merge request
- 4398).
- * Fix typo in the mandatory features section related to
- `<<VK_KHR_ray_tracing_pipeline>>` (internal merge request 4406).
-
------------------------------------------------------
-
-Change log for March 1, 2021 Vulkan 1.2.171 spec update:
-
- * Update release number to 171 for this update.
-
-Github Issues:
-
- * Use `strictly increasing` rather than `monotonically increasing` in the
- definition of <<glossary, timeline semaphores>> (public issue 1424).
- * Add missing raytracing pipeline creation information from
- `<<VK_KHR_pipeline_executable_properties>>` to
- flink:vkGetPipelineExecutableStatisticsKHR and
- flink:vkGetPipelineExecutableInternalRepresentationsKHR valid usage
- statements (public issue 1433).
- * Add missing `SPV_EXT_shader_atomic_float` to `vk.xml` (public issue
- 1447).
- * Fix ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL to
- ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT in synchronization
- valid usage statement 03938 (public issue 1458).
- * Correct the <<interfaces-resources-setandbinding, DescriptorSet and
- Binding Assignment>> "`noteworthy example`" to refer to code:OpTypeImage
- code:Samplerd=1, not code:OpTypeSampler code:Sampled=1 (public pull
- request 1459).
- * Clarify that the value of slink:VkViewport::pname:minDepth is not
- restricted relative to pname:maxDepth (Vulkan-Headers public issue 180).
- * Add valid usage statement to <<spirvenv-module-validation-standalone,
- Standalone SPIR-V Validation>> specifying that push constant array
- members must only be accessed with dynamically uniform indices
- (SPIRV-Tools public issue 2909)
- * Add valid usage statement to <<spirvenv-module-validation-standalone,
- Standalone SPIR-V Validation>> specifying when the code:Flat decoration
- must be used (SPIRV-Tools public issue 3154)
-
-Internal Issues:
-
- * Specifiy the maximum allowed pname:depthBias unit for
- flink:vkCmdSetDepthBias (internal issue 2455).
- * Add `"protect"` attribute to provisional extension enumerants, and emit
- them with that symbol for runtime conditional inclusion from
- `vulkan_core.h`. Update description of ename:VK_ENABLE_BETA_EXTENSIONS
- to match (internal issue 2481).
- * Add valid usage statement to slink:VkImageViewCreateInfo to ban 3D image
- views when the ename:VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT is
- set (internal issue 2501).
- * Add explicit language for the zero hit group intersection shader to the
- <<ray-intersection-confirmation, Ray Intersection Confirmation>> section
- (internal issue 2505).
- * Add a new <<raytraversal-ray-intersection-candidate-diagram, basic ray
- diagram>> (internal issue 2518).
- * Clarify that acceptable fragment shading rates are less than *or equal*
- to, not just less than, in the description of the
- <<primsrast-fragment-shading-rate-combining final combined shading
- rate>> (internal issue 2524)
- * Refer to correct barycentric coordinates for
- <<ray-intersection-candidate-determination, triangle intersection
- coordinates>> (internal issue 2525).
- * Add valid usage statements to drawing commands to match
- pname:rasterizationSamples in the pipeline state and the current
- attachments (internal merge request 4332).
- * Make use of ename:VK_WHOLE_SIZE consistent with sized flush in valid
- usage statement for slink:VkMappedMemoryRange (internal merge request
- 4373).
- * Fix asciidoctor ifdef markup around
- ename:VK_MEMORY_HEAP_MULTI_INSTANCE_BIT (internal merge request 4383).
- * Move improperly placed valid usage statements from
- slink:VkImageViewCreateInfo to slink:VkImageCreateInfo (internal merge
- request 4390).
- * Add valid usage statements to <<spirvenv-module-validation-standalone,
- Standalone SPIR-V Validation>> for pname:minTexelGatherOffset and
- pname:minTexelGatherOffset.
- * Make <<spirvenv-module-validation-standalone, Standalone SPIR-V
- Validation>> valid usage statement 04681 unconditional, rather than
- having two versions when a relevant Vulkan extension is or is not
- enabled, since this is *standalone* validation.
-
-New Extensions
-
- * `<<VK_QNX_screen_surface>>` (public pull request 1449).
-
------------------------------------------------------
-
-Change log for February 15, 2021 Vulkan 1.2.170 spec update:
-
- * Update release number to 170 for this update.
-
-Internal Issues:
-
- * Add missing language for zero hit groups to the <<shader-binding-table,
- Shader Binding Table>> section and related valid usage statements
- (internal issue 2505).
-
-New Extensions:
-
- * `<<VK_KHR_synchronization2>>`
-
------------------------------------------------------
-
-Change log for February 2, 2021 Vulkan 1.2.169 spec update:
-
- * Update release number to 169 for this update.
-
-Github Issues:
-
- * Fix typos in language in the <<vertexpostproc-renderpass-transform,
- Render Pass Transform>> section (public issue 1406).
- * Fix case of etext:EXTENSION_NAME and etext:SPEC_VERSION enums in
- `vk.xml` for the `<<VK_QCOM_rotated_copy>>` extension (public issue
- 1427).
- * Fix equations in the <<ray-intersection-candidate-determination, Ray
- Intersection Candidate Determination>> section (public issue 1427).
- * Modify examples in the `<<VK_EXT_debug_utils>>` appendix to use
- flink:vkGetInstanceProcAddr (public issue 1432).
- * Various typo fixes (public pull request 1434).
-
-Internal Issues:
-
- * Add missing query types to the the introduction of the <<queries>>
- chapter (internal issue 2488).
- * Tag use of union types in `vk.xml` as `noautovalidity`, since we don't
- generate meaningful valid usage statements or validation layer code at
- present. This removes a few nonsensical, and unimplemented valid usage
- statements of form 'ptext:param must: be a valid stext:VkUnionType union
- (internal issue 2490).
- * Flatten inline lists in valid usage statements in the
- <<spirvenv-module-validation-standalone, Standalone SPIR-V Validation>>
- section so the VU extraction script can process them properly (internal
- issue 2502).
- * Move some common copy buffer / copy image valid usage statements to
- `copy_bufferimage_to_imagebuffer_common.txt` so they can be shared
- (internal merge request 4344).
- * Update copyright dates to 2021 (internal merge request 4345),
- * Fix typos in asciidoctor conditional markup in the
- <<spirvenv-module-validation-standalone, Standalone SPIR-V Validation>>
- section (internal issue 4349).
- * Fix typos in SPIR-V capability names
- code:WorkgroupMemoryExplicitLayout8BitAccessKHR and
- code:WorkgroupMemoryExplicitLayout16BitAccessKHR (internal merge request
- 4359).
- * Fix typo in description of
- slink:VkCoarseSampleLocationNV::pname:pSampleLocations (internal merge
- request 4365).
-
-
------------------------------------------------------
-
-Change log for January 25, 2021 Vulkan 1.2.168 spec update:
-
- * Update release number to 168 for this update.
-
-Internal Issues:
-
- * Change slink:VkAccelerationStructureNV resource classification to
- non-linear, and slink:VkAccelerationStructureKHR is neither linear nor
- non-linear. This affects the memory classification for purposes of
- <<resources-bufferimagegranularity,bufferImageGranularity>> (internal
- issue 2289).
- * Specify which storage classes are affected by code:scalarBlockLayout in
- the <<interfaces-resources-standard-layout, Standard Buffer Layout>>
- section (internal merge request 4280).
- * Flatten valid usage statements in the
- <<spirvenv-module-validation-runtime, Runtime SPIR-V Validation>>
- section so they are correctly processed by the VU extractor script
- (internal merge request 4285).
-
-New Extensions:
-
- * `<<VK_KHR_workgroup_memory_explicit_layout>>`
- * `<<VK_KHR_zero_initialize_workgroup_memory>>`
-
------------------------------------------------------
-
-Change log for January 19, 2021 Vulkan 1.2.167 spec update:
-
- * Update release number to 167 for this update.
-
-Github Issues:
-
- * Clarify valid usage statements for slink:VkGraphicsPipelineCreateInfo
- interaction with potential format features (public issue 1392).
- * Use default PDF theme with a local fallback font, to provide
- floor/ceiling symbols (public issue 1400).
- * Fix valid usage statements to clarify that
- flink:vkCmdWriteAccelerationStructuresPropertiesNV only accepts
- ename:VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV (public
- Vulkan-ValidationLayers issue 2448).
- * Add missing `SPV_KHR_multiview` SPIR-V extension to `vk.xml` (public
- Vulkan-ValidationLayers issue 2456).
-
-Internal Issues:
-
- * Move Acceleration Structure chapter before Ray Traversal and Ray Tracing
- chapters and reorganize asciidoctor source markup, including inlining
- ray tracing sub-chapters (internal issue 2249).
- * Clarify the definition of the `optional='true'` XML attribute to allow
- its use with scalar types, and use it consistently in the specification
- and XML; this removes a few uses of the attribute and simplifies some
- valid usage statements (internal issue 2435).
- * Clarify that it is not valid to create an image view using a format that
- requires YCbCr conversion without passing a
- slink:VkSamplerYcbcrConversion in valid usage for
- slink:VkImageViewCreateInfo (internal issue 2458).
- * Clarify that pipeline flags do not cause the corresponding flags to
- appear in code:IncomingRayFlagsKHR variables (internal issue 2470).
- * Require that pname:supportedAlpha is never zero in text and valid usage
- statements for slink:VkDisplayPlaneCapabilitiesKHR and
- slink:VkDisplaySurfaceCreateInfoKHR (internal issue 2471).
- * Clarify that Dref values are supposed to be clamped for fixed-point
- accesses in the <<textures-depth-compare-operation, Depth Compare
- Operation>> section (internal issue 2474).
- * Fix typo for a destination stage in an issue in the
- `<<VK_EXT_transform_feedback>>` extension appendix (internal issue
- 2477).
- * Restrict code:OpImageQueryLod, code:OpImageQuerySizeLod, and
- code:OpImageQueryLevels to require a sampler (not storage image) in the
- <<spirvenv-module-validation-standalone, Standalone SPIR-V Validation>>
- section (internal issue 2478).
- * Allow
- flink:vkGetAccelerationStructureBuildSizesKHR::pname:pMaxPrimitiveCounts
- to be zero by setting the `optional` attribute in the XML (internal
- issue 2480).
- * Update description of
- slink:VkDeviceMemoryReportCallbackDataEXT::pname:objectType for
- consistency with description of other parameters (internal issue 2485).
- * Add a valid usage statement to slink:VkRayTracingPipelineCreateInfoKHR
- requiring that all linked pipelines have the same set of flags specified
- from the etext:VK_PIPELINE_CREATE_RAY_TRACING_* bits (internal issue
- 2489).
- * Add valid usage statements to flink:vkCmdBeginQuery /
- flink:vkCmdBeginQueryIndexedEXT to disallow use with pools created with
- ename:VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR /
- ename:VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR types
- (internal issue 2493).
- * Fix normative language for valid usage statements in the <<spirvenv,
- Vulkan Environment for SPIR-V>> appendix (internal merge request 4265).
- * Remove a few cases where `_KHR` suffixes were left on promoted
- extensions in valid usage statements (internal merge request 4293)
- * Update and futureproof a previously hardwired reference to Vulkan 1.1 in
- the <<introduction-conventions, Document Conventions>> section (internal
- merge request 4295).
- * Add code:PhysicalStorageBuffer as a valid atomic storage class in the
- <<spirvenv-module-validation-standalone, Standalone SPIR-V Validation>>
- section (internal merge request 4296).
- * Clean up phrasing of valid usage statements in the
- <<spirvenv-module-validation-standalone, Standalone SPIR-V Validation>>
- section (internal merge request 4297).
- * Add shared valid usage statement for buffer copy commands requiring
- pname:bufferRowLength to fit in a signed 32-bit integer (internal merge
- request 4302).
- * Add dname:VK_NO_STDDEF_H to allow apps to prevent including
- `<stddef.h>`, and document it in the <<boilerplate, API Boilerplate>>
- appendix (internal merge request 4312).
- * Fix typo `SkipTrianglesKHR` -> `SkipAABBsKHR` in the
- <<ray-traversal-culling-primitive, Ray Primitive Culling>> section
- (internal merge request 4315).
-
------------------------------------------------------
-
-Change log for January 4, 2021 Vulkan 1.2.166 spec update:
-
- * Update release number to 166 for this update.
-
-Github Issues:
-
- * Add an Issue to the appendix for `<<VK_EXT_debug_report>>` discussing
- how to compare handles returned by the debug report callback to
- application handles (public issue 368).
- * Specify the purpose of ename:VK_LOD_CLAMP_NONE in the description of
- slink:VkSamplerCreateInfo::pname:maxLod (public issue 663).
- * Clarify in the <<extendingvulkan-extensions-extensiondependencies,
- Extension Dependencies>> section that extensions may depend on both
- other extensions, and specific core API versions. Together with previous
- changes to this section, this should close out the original issue
- (public issue 865).
-
-Internal Issues:
-
- * Add descriptions of image queries to the <<textures, Image Operations
- Overview>> and <<textures-queries, Image Query Instructions>> sections
- (internal issues 2416 and 2423).
- * Allow axis swapping to be carried through clamping in the
- <<primsrast-fragment-shading-rate-combining, Combining the Fragment
- Shading Rates>> section (internal issue 2420).
- * Move even-size requirements for planar formats to valid usage statements
- for slink:VkImageCreateInfo and slink:VkImageViewCreateInfo, and tweak
- descriptions of <<formats-definition, the corresponding formats>>
- accordingly (internal issue 2434).
- * Remove asciidoctor conditional macros from markup for
- slink:VkSamplerCreateInfo valid usage statement 01079 (internal issue
- 2440).
- * Clarify behavior of the <<features-alphaToOne, pname:alphaToOne>>
- feature by linking the enable to the corresponding <<fragops-covg,
- Multisample Coverage>> fragment operation language, and specifying in
- the introduction to the <<fragops, Fragment Operations>> chapter that
- "`replacing`" a fragment shader output occurs whether or not the shader
- actually wrote that output (internal issue 2448).
- * Modify XML for
- slink:VkPipelineViewportShadingRateImageStateCreateInfoNV::pname:viewportCount
- to allow pname:viewportCount == 0 (internal issue 2449).
- * Remove "`built as`" requirement from valid usage statement 03579 for
- slink:VkWriteDescriptorSetAccelerationStructureKHR (internal issue
- 2466).
- * Remove incorrect valid usage statement 03655 for
- slink:VkAccelerationStructureGeometryTrianglesDataKHR (internal issue
- 2467).
- * Add location limits for mesh shaders to the
- <<interfaces-iointerfaces-limits, Shader Input and Output Locations>>
- table (internal merge request 3428).
-
------------------------------------------------------
-
-Change log for December 14, 2020 Vulkan 1.2.165 spec update:
-
- * Update release number to 165 for this update.
-
-Github Issues:
-
- * Fix interaction between imageless framebuffers and
- slink:VkImageViewUsageCreateInfo for slink:VkRenderPassBeginInfo,
- elink:VkImageUsageFlagBits, and in the
- <<resources-image-inherited-usage>> section (public issue 1391).
- * Fix `vk.xml` `optional` / `noautovalidity` attributes and corresponding
- explicit valid usage statements for
- slink:VkBuildAccelerationStructureModeKHR (public issue 1405).
- * Remove redundant / incomplete handle comments from `vk.xml` for
- elink:VkObjectType enumerants (public merge request 1412).
-
-Internal Issues:
-
- * Create valid usage statements from constraints in the
- <<spirvenv-module-validation-standalone, Standalone SPIR-V Validation>>
- section (internal issue 2394).
- * Fix valid usage staement 01256 for slink:VkDisplaySurfaceCreateInfoKHR
- (internal issue 2404).
- * Expand and clarify the event race condition warning for
- flink:vkCmdWaitEvents to include two additional scenarios in which the
- effect and/or state of an event becomes undefined without additional
- synchronization operations (internal issue 2411).
- * Update valid usage statement for flink:vkSetLocalDimmingAMD (internal
- issue 2446).
- * Recast slink:VkStridedDeviceAddressRegionKHR valid usage statements in
- terms of size being non-zero, instead of pname:deviceAddress (internal
- issue 2450).
- * Add missing ename:VK_SHARING_MODE_CONCURRENT valid usage statement for
- flink:vkQueueSubmit (internal merge request 4244).
- * Add limits related to local size to the
- <<spirvenv-module-validation-runtime, Runtime SPIR-V Validation>>
- section (internal merge request 4255).
- * Fix typo in description of
- slink:VkDescriptorUpdateTemplateEntry::pname:dstArrayElement (internal
- merge request 4260).
- * Remove repeated "`all`" from slink:VkGraphicsPipelineCreateInfo valid
- usage statements (internal merge request 4266).
- * Fix internal xrefs to the SPIR-V capabilities tables, which broke as a
- side effect of generating the table instead of handcoding it (internal
- merge request 4270).
- * Fix normative language for code:WorkgroupSize (internal merge request
- 4272).
- * Restore `len` attribute to `vk.xml` after its recent accidental removal
- from slink:VkDescriptorSetAllocateInfo::pname:pSetLayouts (internal
- merge request 4275).
- * Remove trailing periods from SPIR-V valid usage statements (internal
- merge request 4284).
- * Base PDF theme on builtin fallback theme, simplifying it and adding
- support for some math characters not found in the default theme
- (internal merge request 4287).
-
------------------------------------------------------
-
-Change log for December 7, 2020 Vulkan 1.2.164 spec update:
-
- * Update release number to 164 for this update.
-
-Github Issues:
-
- * Reserve vendor ID for PoCL (public pull request 1411).
-
-Internal Issues:
-
- * Add valid usage statements to ray tracing commands requiring they be
- given a ray tracing pipeline, and removing support for
- ename:ACCELERATION_STRUCTURE_TYPE_GENERIC in
- flink:vkCmdBuildAccelerationStructureNV (internal issue 2271).
- * Add valid usage statements disallowing the use of protected command
- buffers with Ray Tracing Pipelines and Ray Query instructions (internal
- issue 2409).
- * Move the un-numbered glossary / abbreviations / prefixes pseudo-chapters
- into a single appendix, so the table of contents looks cleaner (internal
- issue 2437).
- * Remove redundant valid usage statement from
- slink:VkCommandBufferAllocateInfo (internal merge request 4229).
- * Add missing <<features-inlineUniformBlock>> valid usage statement to
- slink:VkDescriptorSetLayoutBinding (internal merge request 4246).
- * Tweak example of Docker image invocation in `BUILD.adoc` (internal merge
- request 4249).
- * Capitalize code:LaunchIdKHR the same as in SPIR-V. code:LaunchSizeKHR
- and code:LaunchIdKHR are accessible in the code:CallableKHR shader stage
- (internal merge request 4252).
- * Remove unreachable (redundant) valid usage statements from
- flink:vkCmdBeginRenderPass and flink:vkCmdBeginRenderPass2 (internal
- merge request 4254).
- * Add missing `objtypeenum` attribute to `vk.xml` for slink:VkInstance
- (internal merge request 4263).
- * Change the chunked HTML target to use a more robust method of inserting
- additional Javascript and HTML to support the searchbox.
-
-New Extensions:
-
- * `<<VK_NV_acquire_winrt_display>>`
- * `<<VK_VALVE_mutable_descriptor_type>>`
-
------------------------------------------------------
-
-Change log for November 30, 2020 Vulkan 1.2.163 spec update:
-
- * Update release number to 163 for this update.
-
-Github Issues:
-
- * Add XML mapping between VK_OBJECT_TYPE_* names and object type names
- (public issue 1379).
- * Remove *_READ_BIT from .srcAccessMask in code samples (public issue
- 1389).
- * Fix example code for slink:VkPushConstantRange to take
- elink:VkShaderStageFlags, not elink:VkPipelineStageFlags (public pull
- request 1393).
- * Add missing :refpage: attribute to slink:VkBlitImageInfo2KHR (public
- issue 1407).
- * Remove extraneous newline from texel block size table (public issue
- 1409).
-
-Internal Issues:
-
- * Update style guide to require `optional="true"` be set on pname:pNext
- structure members (internal issue 2428).
- * Sort conditionals in ifdef:: output of spirvcapgenerator for stability
- (internal issue 2430).
- * Fix slink:VkGraphicsPipelineShaderGroupsCreateInfoNV VU 02886
- (internal merge request 4225).
-
-
------------------------------------------------------
-
-Change log for November 23, 2020 Vulkan 1.2.162 spec update:
-
- * Update release number to 162 for this update.
-
-Github Issues:
-
- * Mark pname:pNext pointers as `optional="true"` in `vk.xml` (public pull
- request 1396).
- * Make a formerly implicit slink:VkSubpassDescriptionDepthStencilResolve
- valid usage statement explicit (public Vulkan-ValidationLayers issue
- 2311).
-
-Internal Issues:
-
- * Clarify lifetime of push constants in the flink:vkCmdPushConstants
- description (internal issue 2168).
- * Clarify that flink:vkGetDeviceProcAddr is not intended to return
- physical device-level commands (internal issue 2344).
- * Tweak CI test for SPEC_VERSION to always succeed when the branch name
- exists, but the extension is disabled (internal merge request 4219).
-
-New Extensions:
-
- * Add final (non-provisional) versions of the Vulkan Ray Tracing
- extensions (internal merge request 4143):
- ** `<<VK_KHR_acceleration_structure>>`
- ** `<<VK_KHR_ray_tracing_pipeline>>`
- ** `<<VK_KHR_ray_query>>`
- ** `<<VK_KHR_pipeline_library>>`
- ** `<<VK_KHR_deferred_host_operations>>`
-
------------------------------------------------------
-
-Change log for November 16, 2020 Vulkan 1.2.161 spec update:
-
- * Update release number to 161 for this update.
-
-Github Issues:
-
- * Add some missing types to the table of handle type <->
- etext:VK_OBJECT_TYPE_* enums in the debugging chapter (in response to a
- comment on public issue 1379).
-
-Internal Issues:
-
- * Move copyright statement into its own "`Preamble`" chapter to simplify
- preprocessing for chunked HTML target and make PDF / single-page HTML
- consistent with the chunked output (internal issue 2384).
- * Clarify that slink:VkExternalMemoryBufferCreateInfo::pname:handleTypes
- and slink:VkExternalMemoryImageCreateInfo::pname:handleTypes can be
- zero, and fix missing `optional` attribute in `vk.xml` for the latter
- case (internal issue 2388).
- * Make `specialuse` attributes in source markup expand properly in
- extension refpages (internal issue 2412).
- * Remove as yet unused slink:VkSemaphoreCreateFlagBits type from `vk.xml`
- (internal issue 2413).
- * Remove unreachable valid usage statements for
- slink:VkRenderPassMultiviewCreateInfo::pname:pViewMask in the
- slink:VkRenderPassCreateInfo pname:pNext chain, and for
- slink:VkRenderPassCreateInfo2::pname:viewMask. These statements cannot
- ever be violated given that view masks cannot exceed index 31 and
- pname:maxFramebufferLayers exceeds this value (internal merge request
- 4204).
- * Only allow forward pointers for physical storage buffers in the
- <<spirvenv-module-validation>> section (internal merge request 4206).
- * Fix a variety of minor valid usage statement issues with the
- `<<VK_KHR_fragment_shading_rate>>` extension (internal merge request
- 4207).
-
------------------------------------------------------
-
-Change log for November 9, 2020 Vulkan 1.2.160 spec update:
-
- * Update release number to 160 for this update.
-
-Github Issues:
-
- * Remove redundant input attachment valid usage statements from
- slink:VkAttachmentReference2 (public issue 1378).
-
-Internal Issues:
-
- * Restore "`Preamble`" section containing the copyright statement to the
- proper place in the chunked specification index (internal issue 2384).
- * Add missing valid usage statements for
- flink:vkCmdDrawIndirectByteCountEXT (internal issue 2400).
- * Move vertex input example from the <<fxvertex>> chapter to the Vulkan
- Guide (internal merge request 4162).
- * Clarify update-after-bind limits for dynamic buffers in the
- <<limits-maxDescriptorSetUpdateAfterBindUniformBuffersDynamic>> and
- <<limits-maxDescriptorSetUpdateAfterBindStorageBuffersDynamic>> sections
- (internal merge request 4186).
- * Clarify slink:VkFramebufferCreateInfo to allow read-only use of depth
- images as attachments and non-attachments (internal merge request 4191).
- * Remove redundant valid usage statement from slink:VkWriteDescriptorSet
- (internal merge request 4196).
- * Remove redundant valid usage statement from flink:vkFreeDescriptorSets
- (internal merge request 4198).
- * Fix typo in slink:VkDisplaySurfaceCreateInfoKHR valid usage statement
- (internal merge request 4199).
- * Remove redundant pname:firstViewport / pname:firstScissor limit checks
- in valid usage statements for flink:vkCmdSetViewportWScalingNV,
- flink:vkCmdSetScissor, flink:vkCmdSetExclusiveScissorNV,
- flink:vkCmdSetViewportShadingRatePaletteNV, and flink:vkCmdSetViewport
- (internal merge request 4200).
-
-New Extensions:
-
- * `<<VK_NV_fragment_shading_rate_enums>>`
-
------------------------------------------------------
-
-Change log for November 1, 2020 Vulkan 1.2.159 spec update:
-
- * Update release number to 159 for this update.
-
-Github Issues:
-
- * Clarify handle uniqueness with private data in the
- <<fundamentals-objectmodel-overview, Object Model>> section (public
- issue 1349).
- * Make ename:VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR
- an alias of
- ename:VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR
- and ename:VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR
- an alias of
- ename:VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR,
- for backwards compatibility while complying with naming conventions
- (public issue 1367).
- * Make ename:VK_SURFACE_COUNTER_VBLANK_EXT an alias of
- ename:VK_SURFACE_COUNTER_VBLANK_BIT_EXT for backwards compatibility
- while complying with naming conventions (public issue 1368).
- * Add a note to the <<memory-model-synchronizes-with, Synchronizes-With>>
- section that fragment shader interlock instructions don't perform
- implicit availability or visibility operations (public issue 1383).
-
-Internal Issues:
-
- * Dynamically generate SPIR-V <<spirvenv-capabilities-table,
- Capabilities>> and <<spirvenv-extensions-table, Extensions>> tables from
- new tags in `vk.xml`, exposing this information for other projects
- downstream (internal issue 2156).
- * Clarify when a <<renderpass-feedbackloop, feedback loop>> creates a data
- race (internal issue 2296).
- * Remove un-needed `noautovalidity` attributes on pname:pNext structure
- members, including a few cases where they were actually suppressing
- appropriate autogenerated validity statements (internal issue 2335;
- similar purpose to closed public PR 1339).
- * Clarify treatment of most-negative signed normalized fixed-point values
- in the <<fundamentals-fixedfpconv, Conversion from Normalized
- Fixed-Point to Floating-Point>> section (internal issue 2367).
- * Clarify that enabling an extension cannot change existing implementation
- behavior in the introduction to the <<extendingvulkan-extensions,
- Extensions>> chapter (internal issue 2375).
- * Add missing valid usage statement to flink:vkCreatePrivateDataSlotEXT
- (internal issue 2379).
- * Fix a misplaced asciidoctor `endif::` for flink:vkCreateSwapchainKHR
- (internal merge request 4177).
- * Add missing pname:aspectMask valid usage statement to
- slink:VkSubpassDescription2, matching
- slink:VkInputAttachmentAspectReference (internal merge request 4177).
- * Clarify <<interfaces, SPIR-V rules on decorations>> (internal
- spirv/SPIR-V issue 444).
- * Add missing `<<VK_VERSION_1_2>>` to all
- `<<VK_EXT_separate_stencil_usage>>` conditional markup (internal
- vulkansc/vulkansc issue 58).
-
-New Extensions:
-
- * `<<VK_QCOM_rotated_copy_commands>>` (internal merge request 4132).
-
------------------------------------------------------
-
-Change log for October 19, 2020 Vulkan 1.2.158 spec update:
-
- * Update release number to 158 for this update.
-
-Internal Issues:
-
- * Clarify that linear filtering can be used with comparison sampling
- in valid usage statements for dispatched draw commands
- (internal issue 2365).
- * Add valid usage statement for flink:vkGetQueryPoolResults requiring
- pname:stride to be large enough for a single performance query result
- (internal issue 2380).
- * Move input attachment imageLayout to valid usage reference section,
- and refer to the <<attachment-type-imagelayout>> section
- to reduce complexity of valid usage statement
- (internal merge request 4117).
- * Update issues list for `<<VK_QCOM_render_pass_transform>>`
- (internal merge request 4175).
- * Add valid usage statement for
- slink:VkPipelineColorBlendStateCreateInfo::pname:attachmentCount (public
- Vulkan-ValidationLayers issue 2197).
-
-New Extensions:
-
- * `<<VK_KHR_fragment_shading_rate>>`
- * `<<VK_KHR_shader_terminate_invocation>>`
-
------------------------------------------------------
-
-Change log for October 12, 2020 Vulkan 1.2.157 spec update:
-
- * Update release number to 157 for this update.
-
-Github Issues:
-
- * Fix `<<VK_KHR_shader_draw_parameters>>` missing as a feature alias
- (based on public pull request 1310).
- * Remove unnecessary sentence about device extensions implemented by
- layers in the flink:vkCreateDevice description (based on public pull
- request 1350).
- * Fix parenthesis in equation in the
- <<textures-texel-anisotropic-filtering, Texel Anisotropic Filtering>>
- section (public merge request 1365).
- * Add missing types to `vk.xml` for `<<VK_EXT_device_memory_report>>`
- (public issue 1374).
- * Add slink:VkBufferImageCopy valid usage statement for
- ename:VK_IMAGE_ASPECT_DEPTH_BIT and ename:VK_IMAGE_ASPECT_STENCIL_BIT
- pname:aspectMask values (public Vulkan-ValidationLayers issue 2113).
-
-Internal Issues:
-
- * Remove unused etext:VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT
- token
- (internal issue 2275).
- * Clarify the specific stage requirement for synchronization
- between flink:vkCmdResetEvent and flink:vkCmdWaitEvents
- (internal merge request 4152).
-
------------------------------------------------------
-
-Change log for October 5, 2020 Vulkan 1.2.156 spec update:
-
- * Update release number to 156 for this update.
-
-Github Issues:
-
- * Define memory import/export using the glossary term _payload_, rather
- than "`the same underlying memory`", for slink:VkFence,
- <<synchronization-semaphores-payloads, the semaphore payload section>>,
- and many places in the <<memory, Memory Allocation>> chapter (public
- issue 1145).
-
-New Extensions:
-
- * `<<VK_EXT_device_memory_report>>`
-
------------------------------------------------------
-
-Change log for September 28, 2020 Vulkan 1.2.155 spec update:
-
- * Update release number to 155 for this update.
-
-New Extensions:
-
- * `<<VK_EXT_shader_image_atomic_int64>>`
-
------------------------------------------------------
-
-Change log for September 7, 2020 Vulkan 1.2.153 spec update:
-
- * Update release number to 153 for this update.
-
-Github Issues:
-
- * Specification default branch for updates and PRs is now `main` instead
- of `master`. `master` branch still exists, but is frozen at the 1.2.152
- level. If you are pulling content from this repository, please switch
- from `master` to `main` branch (internal issue 1351).
- * Fix slink:VkSubpassDependency2 link from slink:VkRenderPassCreateInfo2
- (public issue 1358).
-
-Internal Issues:
-
- * Add developer documentation to the appendices for
- `<<VK_EXT_memory_budget>>`, `<<VK_KHR_buffer_device_address>>`,
- `<<VK_KHR_depth_stencil_resolve>>`, `<<VK_KHR_draw_indirect_count>>`,
- `<<VK_KHR_multiview>>`, `<<VK_KHR_sampler_ycbcr_conversion>>` (internal
- issue 2109).
- * Implement VUID expander treeprocessor plugin to make VUID text visible
- and searchable in generated outputs (internal issue 2253, 2258).
- * Clarify when acceleration structures can be indexed dynamically in the
- <<interfaces-resources-descset, Descriptor Set Interface>> section
- (internal issue 2316).
- * Add missing valid usage statement for flink:vkImportFenceWin32HandleKHR
- (internal merge request 4087).
- * Replace badly formatted VUID for `<<VK_AMD_display_native_hdr>>`
- (internal merge request 4096).
- * Add ray tracing acceleration structures to the lists of objects where
- appropriate in the <<fundamentals-objectmodel-lifetime, Object
- Lifetime>> section (internal merge request 4100).
- * Move GLSL and SPIR-V extension references in the extension appendices
- into the "`Interactions and External Dependencies`" sections (internal
- merge request 3969).
-
------------------------------------------------------
-
-Change log for August 26, 2020 Vulkan 1.2.152 spec update:
-
- * Update release number to 152 for this update.
-
-Github Issues:
-
- * Add attachment image layout valid usage statements for
- slink:VkSubpassDescription and slink:VkSubpassDescription2 (public issue
- 1316).
- * Clarify and generalize use of "`graphics commands`" in the
- <<descriptorsets>> and <<pipelines>> chapters (public issue 1322).
- * Fix description of handle returned in slink:VkDeviceQueueInfo2 (public
- pull request 1347).
-
-Internal Issues:
-
- * Promote valid usage statements requiring multiple parameters of a copy
- command from the structure parameter descriptions to the command itself,
- significantly restructuring some of the common validity files (internal
- issue 2034).
- * Add details of clamping and quantization behavior for border colors that
- are outside the normal range for slink:VkSamplerCreateInfo and in the
- <<textures-operation-validation, Instruction/Sampler/Image View
- Validation>> and <<textures-texel-replacement, Texel Replacement>>
- sections (internal issue 2281).
- * Clarify in the <<spirvenv-module-validation-standalone, Standalone
- SPIR-V Validation>> section that the value of code:XfbBuffer cannot
- differ for members of the same block (internal issue 2307).
- * Add valid usage blocks to the <<interfaces>> chapter where discussing
- allowed uses of built-in SPIR-V variables (internal merge requests 3933,
- 4090).
- * Refactor <<spirvenv-module-validation-standalone, Standalone SPIR-V
- Validation>> constraints to single statement phrases not using ifdef::ed
- asciidoctor markup, and move some of them down to the
- <<spirvenv-module-validation-runtime, Runtime SPIR-V Validation>>
- section (internal merge request 4054).
- * Fix XML attributes for some `<<VK_INTEL_performance_query>>` interfaces
- (internal merge request 4061).
- * Fix the "`Differences relative to `VK_KHR_shader_float16_int8``"
- paragraph in the <<versions-1.2, Version 1.2>> appendix (internal merge
- request 4062).
- * Fix several valid usage statements for
- flink:vkCmdBindTransformFeedbackBuffersEXT (public
- KhronosGroup/Vulkan-ValidationLayers issue 2105).
- * Clarify `shader_read_only` layout restrictions for
- slink:VkWriteDescriptorSet and elink:VkImageLayout (internal merge
- request 4060).
- * Clarify wording for required 4444 and {YCbCr} formats in the
- <<formats-mandatory-features-subbyte, Mandatory format support: sub-byte
- channels>> and <<formats-requiring-sampler-ycbcr-conversion, Formats
- requiring sampler {YCbCr} conversion for ename:VK_IMAGE_ASPECT_COLOR_BIT
- image views>> tables (internal merge request 4066).
- * Move a feature valid usage statement from flink:vkCmdDrawIndexedIndirect
- to its proper home in flink:vkCmdDrawIndexedIndirectCount, matching what
- the validation layer already does (internal merge request 4070).
- * Split valid usage statement for slink:VkWriteDescriptorSet into one
- statement for each descriptor type for image layout requirements
- (internal merge request 4071).
- * Add the a <<valid-imageview-imageusage>> definition to capture which
- elink:VkImageUsageFlagBits must be set when creating a
- sname:VkImageView, and use that definition to simplify
- slink:VkImageViewCreateInfo valid usage statements (internal merge
- request 4073).
- * Remove redundant valid usage statement 03269 for slink:VkPresentInfoKHR
- (internal merge request 4084).
- * Move valid usage statement from slink:VkProtectedSubmitInfo to
- slink:VkSubmitInfo (internal merge request 4085).
- * Update reference to pname:framebufferIntegerColorSampleCounts from the
- description of the <<limits-framebufferColorSampleCounts>> feature if
- Vulkan 1.2 is supported (internal merge request 4088).
-
------------------------------------------------------
-
-Change log for August 17, 2020 Vulkan 1.2.151 spec update:
-
- * Update release number to 151 for this update.
-
-Github Issues:
-
- * Clarify that the <<memory-protected-memory,Protected Memory>> is not
- cross-physical device (public issue 1335).
-
-Internal Issues:
-
- * Improve the layout of the <<Standard sample locations>> table to avoid
- overflow in the HTML output (internal issue 1354).
- * Also build core-only HTML spec in internal CI, to try and catch
- extension ifdef errors (should probably also do this in Azure CI on
- github) (internal issue 1770).
- * Add internal CI test for un-tagged uses of "`undefined`", to help make
- sure we've carefully considered all such uses (internal issue 2270).
- * Add style guide section "`Commands which Return Error Codes`" to give
- guidance on assigning error codes and when to use
- ename:VK_ERROR_OUT_OF_HOST_MEMORY (internal issue 2290).
- * Use the term "`reference monitor`" instead of "`mastering display`" for
- the `<<VK_EXT_hdr_metadata>>` extension (internal issue 2291).
- * Explicitly state that SPIR-V modules must be valid after specialization
- in slink:VkPipelineShaderStageCreateInfo and the
- <<spirvenv-module-validation-runtime, Runtime SPIR-V Validation>>
- section (internal issue 2302).
- * Add slink:VkShaderModuleCreateInfo valid usage statements to match the
- SPIR-V capabilities (internal merge request 4047).
- * Add missing features to the <<[spirvenv-module-validation-runtime,
- Runtime SPIR-V Validation>> section (internal merge request 4048).
- * Update slink:VkPhysicalDeviceVulkan11Properties to follow the same
- renaming of "`subgroups`" to "`groups`" previously done for
- slink:VkPhysicalDeviceSubgroupProperties (internal merge request 4050).
-
------------------------------------------------------
-
-Change log for August 10, 2020 Vulkan 1.2.150 spec update:
-
- * Update release number to 150 for this update.
-
-Github Issues:
-
- * Remove ename:VK_ERROR_TOO_MANY_OBJECTS as a required error code for
- flink:vkAllocateMemory and and flink:vkCreateSampler, and note that
- while it may still occur as a historical artifact, exceeding
- implementation limits will result in undefined behavior (public issue
- 1295).
- * Allow duplicate slink:VkDebugUtilsMessengerCreateInfoEXT structs in
- pname:pNext chain (public issue 1329)
- * Fix typo in slink:VkSubmitInfo valid usage statement 04120 (public merge
- request 1336).
- * Remove `KHR` suffix from some names promoted to core, in the
- <<renderpass, Render Pass>> chapter (public merge request 1341).
-
-Internal Issues:
-
- * Add ename:VK_ERROR_OUT_OF_HOST_MEMORY to `vk.xml` as a possible error
- code for some additional commands returing elink:VkResult, and add a
- note to the description of elink:VkResult giving some guidance on which
- commands may and may not return that error code (internal issue 2063).
- * Make a handful of terminology changes which move this repository closer
- to the conventions of the AOSP
- https://source.android.com/setup/contribute/respectful-code[Coding with
- Respect] document (internal issue 2282).
- * Update `<<VK_MVK_ios_surface>>` and `<<VK_MVK_macos_surface>>`
- documentation and mark them as deprecated and replaced by
- `<<VK_EXT_metal_surface>>` (internal merge request 4024).
- * Add a section to the style guide on markup for the copyright and license
- block on files in the repository (internal merge request 4036).
- * Add ename:VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT to
- `<<VK_EXT_validation_features>>` to enable synchronization validation
- (internal merge request 4037).
-
------------------------------------------------------
-
-Change log for August 3, 2020 Vulkan 1.2.149 spec update:
-
- * Update release number to 149 for this update.
-
-Github Issues:
-
- * Fix valid usage statements to clarify interactions between
- `<<VK_EXT_extended_dynamic_state>>` and the old viewport related
- extensions `<<VK_NV_clip_space_w_scaling>>`,
- `<<VK_NV_shading_rate_image>>` (for the palettes),
- `<<VK_NV_viewport_swizzle>>`, and `<<VK_NV_scissor_exclusive>>` (public
- issue 1296).
-
-Internal Issues:
-
- * Clarify wording around non-uniform and non-constant descriptor access in
- <<interfaces-resources-descset, Descriptor Set Interface>> (internal
- issue 2163).
- * Add a missing code:StorageBuffer reference in the <<interface-resources,
- Shader Resource Interface>> section (internal issue 2191).
- * Refactor common valid usage statements for flink:vkBindBufferMemory,
- slink:VkBindBufferMemoryInfo, flink:vkBindImageMemory, and
- slink:VkBindImageMemoryInfo (internal issue 2260).
- * Copy over import/export behavior for sync file descriptor value `-1`
- from slink:VkImportFenceFdInfoKHR to slink:VkImportSemaphoreFdInfoKHR
- (internal issue 2274).
- * State that a deriviative group is a quad scope instance in the
- <<shaders-derivative-operations, Derivative Operations>> section
- (internal merge request 4025)
-
-New Extensions:
-
- * `<<VK_EXT_4444_formats>>`
-
------------------------------------------------------
-
-Change log for July 19, 2020 Vulkan 1.2.148 spec update:
-
- * Update release number to 148 for this update.
-
-Github Issues:
-
- * Move description of slink:VkPhysicalDevicePerformanceQueryFeaturesKHR to
- the <<features>> chapter (public merge request 1312).
- * Fix a few broken internal and external links, and add stub description
- of empty elink:VkPipelineCompilerControlFlagsAMD type (public merge
- request 1313).
-
-Internal Issues:
-
- * Fix a few new places where "`undefined`" was used imprecisely, by
- clarifying the difference between undefined results and undefined
- behavior (internal issue 543).
- * Add valid usage statement to common indirect draw valid usage statements
- requiring that the pname:countBufferOffset to the count being used lie
- within the pname:countBuffer (internal issue 1309).
- * Add <<interfaces-raypipeline, Ray Tracing Pipeline Interface>> section
- (internal issues 2094, 2237).
- * Add valid usage statement to flink:vkCmdBeginTransformFeedbackEXT to
- require that the last vertex processing stage of the bound graphics
- pipeline be declared with the code:Xfb execution mode (internal issue
- 2124).
- * Do not allow flink:vkWaitForFences or flink:kWaitSemaphores to return
- timeouts before the period has expired, even though this is valid in
- some other synchronisation APIs (internal issue 2146).
- * Add elink:VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_FENCE_BIT as an alias
- of elink:VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT for clarity
- when interacting with D3D11 fences (internal issue 2175).
- * Ignore slink:VkMemoryAllocateInfo::pname:allocationSize when importing
- D3D resources (internal issue 2176).
- * Clarify the definition of flink:vkCmdBindVertexBuffers2EXT::pname:pSizes
- (internal issue 2262).
- * Fix markup error in slink:VkDescriptorSetLayoutBindingFlagsCreateInfo
- (internal merge request 3998).
- * Remove un-needed dependency of `<<VK_EXT_filter_cubic>>` on
- `<<VK_IMG_filter_cubic>>` (internal merge request 4000).
- * Minor textual clarifications in ray tracing extensions (internal merge
- request 4017).
- * Modify the validity generator so that, when generating valid usage for
- array lengths with a chain of parameters (e.g. pname:pFoo->bar), don'
- non-zero values are not required if any parameter in the chain is
- optional, and consider the last parameter only when deciding the type of
- the parameter (internal merge request 4021).
- * Fix a typo in the `<<VK_EXT_fragment_density_map2>>` extension appendix
- markup that caused refpage build warnings, and modify CI and
- `BUILD.adoc` to use `makeSpec` instead of the old `makeAllExts` script
- (internal merge request 4023).
-
-New Extensions:
-
- * `<<VK_EXT_image_robustness>>`
- * `<<VK_EXT_shader_atomic_float>>`
-
------------------------------------------------------
-
-Change log for July 13, 2020 Vulkan 1.2.147 spec update:
-
- * Update release number to 147 for this update.
-
-Github Issues:
-
- * Allow physical-device-level structures in pname:pNext chains (public
- merge request 1303).
- * Remove elink:VkRenderPassCreateFlags from dependencies of
- `<<VK_QCOM_render_pass_transform>>` (public merge request 1311)
-
-Internal Issues:
-
- * Require that variables with code:HitAttributeKHR storage class must:
- <<spirvenv-module-validation-standalone, only be written in intersection
- shaders>> (internal issue 2103).
- * Specify that acceleration structure scratch buffer accesses from
- acceleration structure build should be synchronized with the
- ename:VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR pipeline
- stage and an access mask of
- ename:VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR or
- ename:VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR (internal issue
- 2173).
- * Improve description of 3D blitting in flink:vkCmdBlitImage (internal
- issue 2212).
- * Split <<fragops-coverage-reduction, Coverage Reduction>> section into
- multiple steps when multi-pixel fragments are involved: first per-pixel
- coverage is separated out, then per-sample coverage is generated for
- each color sample from per-pixel coverage. dditionally, the definition
- of "`color sample mask`" and discussions of it have been removed in
- favour of the per-color-sample coverage. (internal merge request 3951).
- * Modify slink:VkSamplerYcbcrConversionCreateInfo valid usage statements,
- as well as the <<textures-chroma-reconstruction, Chroma Reconstruction>>
- section, to make it clear the values of pname:xChromaOffset and
- pname:yChromaOffset are only validated when chroma channels are
- downsampled (internal merge request 3959).
- * Allow flink:vkGetBufferMemoryRequrements and
- flink:vkGetBufferMemoryRequrements2 to be called for an Android Hardware
- Buffer backed slink:VkBuffer, before it is been bound to memory
- (internal merge request 3982).
- * Remove *Draft* status from `<<VK_EXT_private_data>>` (internal merge
- request 3982).
- * Move valid usage statement from slink:VkProtectedSubmitInfo to
- slink:VkSubmitInfo (internal merge request 3987).
- * Add valid usage statements for protected buffers to
- slink:VkBindBufferMemoryInfo and slink:VkBindImageMemoryInfo
- (internal merge request 3988).
- * Add valid usage statement to slink:VkImageCreateInfo requiring that
- images with linear tiling cannot have sparse residency (internal merge
- request 3988).
- * Clarify that the ptext:maxPerStageDesciptorUpdateAfterBind*
- <<limits-required, Required Limits>> must be at least the corresponding
- non- ptext:UpdateAfterBind limits (internal merge request 3992).
-
------------------------------------------------------
-
-Change log for July 3, 2020 Vulkan 1.2.146 spec update:
-
- * Update release number to 146 for this update.
-
-Github Issues:
-
- * Fix valid usage generation script for optional bitmasks in a
- non-optional array (public pull request 1228).
- * Add lunr to `package.json` and update the locally cached copy (public
- pull request 1238).
- * Require that newly released extensions have etext:*_SPEC_VERSION `1`
- (public issue 1263).
- * Add to the NOTE in slink:VkPhysicalDeviceIDProperties, advising
- implementations on returning unique pname:deviceUUID values and avoiding
- hardwired values, especially 0 (public issue 1273).
- * Add noscript fallback for HTML output (public pull request 1289).
- * Fix duplicated VUIDs in flink:vkCmdExecuteGeneratedCommandsNV (public
- pull request 1304).
- * Fix link markup in <<ray-traversal, Ray Traversal>> chapter, nested link
- markup, and linear equation markup in
- <<textures-unnormalized-to-integer>> (public pull requests 1305, 1306,
- 1307).
-
-Internal Issues:
-
- * Add comments to extending enums in the generated API interfaces showing
- which core version and/or extensions provide the enum, matching recent
- changes to show this information for commands and structures (internal
- issue 1431).
- * Only allow code:Invocation memory scope in the
- <<spirvenv-module-validation-standalone, Standalone SPIR-V Validation>>
- section when memory semantics is *None* (internal issue 1782).
- * Make reflow script handle literal block delimiters and lines containing
- only whitespace properly (internal issues 2039, 2042).
- * Clarify definition of <<limits-maxFragmentCombinedOutputResources,
- pname:maxFragmentCombinedOutputResources>> (internal issue 2236).
- * Add missing `errorcodes=` XML attributes for some
- `<<VK_EXT_display_control>>` commands.
- * Clarify <<features-extentperimagetype, allowed extent values based on
- image type>> and the related <<limits-maxImageDimension1D>>,
- <<limits-maxImageDimension2D>>, <<limits-maxImageDimension3D>>,
- <<limits-maxImageDimensionCube>> limits (internal merge request 3922).
- * Remove redundant valid usage statement
- VUID-VkFramebufferCreateInfo-flags-03188 (internal merge request 3934).
- * Update style guide to recommend new extension spec language be contained
- in existing asciidoctor files, unless it's of enough scope to create a
- and new chapter (internal merge request 3955).
-
-New Extensions:
-
- * `<<VK_EXT_directfb_surface>>` (public pull requests 1292, 1294).
- * `<<VK_EXT_fragment_density_map2>>` (internal merge request 3914).
-
------------------------------------------------------
-
-Change log for June 20, 2020 Vulkan 1.2.145 spec update:
-
- * Update release number to 145 for this update.
-
-Github Issues:
-
- * Fix `<<VK_EXT_conservative_rasterization>>` interactions with external
- SPIR-V and GLSL functionality in the extension appendix (public issue
- 1288).
-
-Internal Issues:
-
- * Break SPIR-V validation into two sections,
- <<spirvenv-module-validation-standalone, Standalone SPIR-V Validation>>
- and <<spirvenv-module-validation-runtime, Runtime SPIR-V Validation>>
- (internal issue 1598).
- * Add VkFormat enums for ASTC 3D formats to `vk.xml`. These values are
- slotted into the reserved, and still disabled extension 289. They will
- not appear in the published `vulkan_core.h` header and there is no
- published extension utilizing them, but this allows external projects
- such as KTX2 to use these values as part of their internal cross-API
- formats by generating a header including this disabled extension
- (internal merge requests 1662, 2216).
- * Synchronize that shader binding table accesses from ray tracing
- pipelines should be synchronized with the
- ename:VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR pipeline stage and an
- access mask of ename:VK_ACCESS_SHADER_READ_BIT (internal issue 1749).
- * Validate that 3D image views are not used as attachments in
- slink:VkFramebufferCreateInfo and slink:VkRenderPassAttachmentBeginInfo
- (internal issue 2142).
- * Increase the number of conditions recognized as build errors by the
- valid usage extraction plugin (internal issue 2215).
- * Relax slink:VkImportAndroidHardwareBufferInfoANDROID valid usage
- statement 01881 to support external formats (internal issue 2220).
- * Clearly define what "`optional capabilities`" means in the
- <<spirvenv-capabilities, Capabilities>> section, and specify that if
- *any* of the required core versions and/or extensions for a capability
- is enabled, then it is valid to use that capability (internal merge
- request 3827).
- * Add ename:VK_FORMAT_B5G5R5_UNORM_PACK16 and
- ename:VK_FORMAT_B5G5R5A1_UNORM_PACK16 to
- `<<VK_EXT_custom_border_color>>` as exceptions when
- <features-customBorderColorWithoutFormat>> is enabled (internal merge
- request 3833).
- * Add new <<spirvenv-format-type-matching, Image Format and Type
- Matching>> section and refer to it from elsewhere in the spec,
- clarifying rules regarding types for image operations (internal merge
- request 3916).
- * Fix typo sname:VkImageFormatProperties -> slink:VkFormatProperties
- (internal merge request 3921).
- * Move <<sparsememory-examples, sparse image examples>> to the Vulkan
- Guide (internal merge request 3930).
- * Fix typo in slink:VkAccelerationStructureBuildOffsetInfoKHR valid usage
- statement 03553 (internal merge request 3938).
- * Support <remove> tags for extending enumerants in XML (internal merge
- request 3942).
-
-New Extensions:
-
- * `<<VK_EXT_extended_dynamic_state>>`
-
------------------------------------------------------
-
-Change log for June 8, 2020 Vulkan 1.2.144 spec update:
-
- * Update release number to 144 for this update.
-
-Internal Issues:
-
- * Require `volatile` semantics for loading <<builtin-volatile-semantics,
- certain variables used in ray pipeline stages>> in the
- <<spirvenv-module-validation, Validation Rules within a Module>> and
- also the <<ray-tracing-shader-call, Shader Call Instructions>> section
- (internal issue 1924).
- * Created new <<potential-format-features, Potential Format Features>>
- section and corresponding glossary term, use the new term where
- appropriate, and add some related valid usage statements to
- flink:vkCmdBeginRenderPass, flink:vkCmdBeginRenderPass2,
- slink:VkSubpassDescription, and slink:VkSubpassDescription2 (internal
- issue 2031).
- * Add interaction with `<<VK_KHR_ray_tracing>>` and corresponding `NV`
- extension to flink:vkUpdateDescriptorSetWithTemplate (internal issue
- 2193).
- * Resolve collisions in common VUID names using `{stageMaskName}`
- qualifiers as part of the name and make fixes to
- `config/vu-to-json/extension.rb` to match (internal issue 2215).
- * Replace `shutil.move` operations with `copy` / `remove` in the base
- `generator.py` code, working around a problem with bind mounts while
- using the Khronos docker build image with `podman` instead of `docker`
- (internal merge request 3872).
- * Add a new <<spirvenv-extensions, SPIR-V Extensions>> subsection
- containing a table showing the corresponding Vulkan extension or core
- API required to support each of the SPIR-V extensions, replacing a
- harder-to-read list of extensions (internal merge request 3876).
- * Remove two redundant valid usage statements from flik:vkCmdResolveImage
- (internal merge request 3878).
- * Make repository REUSE-compliant, and run the `reuse` license checker as
- part of internal CI. While most files now have SPDX license identifier
- tags, some licenses are recorded in `.reuse/dep5` instead. Note that
- this does not change licenses in the repository (aside from adding some
- to files missing them), just insures that every file *has* an explicit
- license (internal merge request 3904).
- * Clarify that code:ImageMSArray is supported as part of the
- <<features-shaderStorageImageMultisample>> feature (internal merge
- request 3905).
- * Reorganize some valid usage statements for flink:vkCmdBlitImage,
- flink:vkCmdCopyBuffer, flink:vkCmdCopyBufferToImage,
- flink:vkCmdCopyImage, flink:vkCmdCopyImageToBuffer, and
- flink:vkCmdResolveImage as common valid usage statements, for
- future-proofing (internal merge requests 3906, 3907, 3908, 3909, 3910).
- * Add two valid usage statements to flink:vkAllocateMemory and
- flink:vkCreateSampler for allocation limits of slink:VkDeviceMemory and
- elink:VkSamplers, respectively (internal merge request 3923).
-
------------------------------------------------------
-
-Change log for June 8, 2020 Vulkan 1.2.143 spec update:
-
- * Update release number to 143 for this update.
- * Reorganize some valid usage statements for slink:VkBufferMemoryBarrier,
- and for commands with elink:VkPipelineStageFlags parameters, as common
- valid usage statements, for future-proofing (internal merge requests
- 3863, 3867).
-
-Github Issues:
-
- * Move `translate_math.js` to the `scripts/` directory (public pull
- request 1286).
- * Minor cleanup of math markup (public pull request 1287).
-
-Internal Issues:
-
- * Misc. licensing updates (internal issue 1017):
- ** Replace the "`Exceptions`" clause on `vk.xml` with a dual Apache-2.0 OR
- MIT license, with agreement of downstream developers known to be
- affected by it. This enables use of `vk.xml` in GPLed projects under a
- more widely used licensing scheme.
- ** Use `SPDX-License-Identifier` tags in place of longer license text.
- This does not change the license terms on files other than `vk.xml`,
- but makes license statements in most files more compact.
- ** Reorganize repository documentation (README.adoc, COPYING.adoc,
- LICENSE.adoc, CONTRIBUTING.adoc, CODE_OF_CONDUCT.adoc, and BUILD.adoc)
- with a more widely used split of information; make all of these files
- Asciidoctor instead of Markdown format for consistency with the rest of
- the repository; describe use of SPDX identifiers; and point to full
- license text of the various OSS licenses used in the repository.
- * Add new <<resources-image-views-identity-mappings, text describing the
- identity swizzle>> incorporating the existing "`Component Mappings
- Equivalent To ename:VK_COMPONENT_SWIZZLE_IDENTITY`" table, and refer to
- this text in place of explicit references to
- ename:VK_COMPONENT_SWIZZLE_IDENTITY in many places (internal merge
- request 3399).
- * Require code:storageBuffer16BitAccess capability if
- `<<VK_KHR_16bit_storage>>` is enabled (internal merge request 3709).
- * Added XML schema and generator script extensions to support 64-bit flags
- and corresponding bitmasks (internal merge request 3718).
- * Correct <<interfaces-resources-standard-layout, Standard Buffer Layout>>
- alignment rules (internal merge request 3750).
- * Relax non-strict line constraints in the <<primsrast-lines-basic>> and
- <<primsrast-lines-bresenham>> sections (internal merge request 3792).
- * Add missing `structextends` attribute to the
- slink:VkPhysicalDevicePrivateDataFeaturesEXT definition in `vk.xml`
- (internal merge request 3873).
- * Move slink:VkImageFormatListCreateInfo valid usage statements to
- flink:vkCreateImageView (internal merge request 3879).
- * Update valid usage statements for slink:VkImageViewASTCDecodeModeEXT to
- allow ASTC HDR formats (internal merge request 3881).
- * Add missing extension dependency to
- `<<VK_KHR_pipeline_executable_properties>>` definition in `vk.xml`
- (internal merge request 3882).
- * Require the <<features-customBorderColors>> feature be enabled when
- using etext:VK_BORDER_COLOR_* in slink:VkSamplerCreateInfo (internal
- merge request 3884).
-
------------------------------------------------------
-
-Change log for June 1, 2020 Vulkan 1.2.142 spec update:
-
- * Update release number to 142 for this update.
-
-Github Issues:
-
- * Add boilerplate descriptions of reserved bitmask types (public pull
- request 1265).
- * Move dynamic state valid usage statements from
- slink:VkPipelineViewportExclusiveScissorStateCreateInfoNV and
- VkPipelineViewportShadingRateImageStateCreateInfoNV to
- slink:VkGraphicsPipelineCreateInfo, where they are testable, and make
- corresponding tweaks in `vk.xml` (public pull request 1268).
- * Add missing flink:vkDestroyPrivateDataSlotEXT explicit valid usage
- statement (public pull request 1269).
- * Cast arguments of dlink:VK_MAKE_VERSION macro to code:uint32_t to avoid
- compiler warnings (public pull request 1279).
-
-Internal Issues:
-
- * Update <<fundamentals-validusage-pNext, description of pname:pNext
- chains>> to allow structures in the chain to be defined by either core
- versions or extensions. Add the new term "`extending structure`" to the
- glossary to describe such structures, and use it in place of "`extension
- structure`". Update the style guide accordingly (internal issue 1083).
- * Add a comment to the beginning of generated API includes showing which
- combinations of API core versions and extensions provide that API, based
- on the explicit requirements in the API XML. This does not yet document
- enumerants introduced by extending a base enum type (internal issue
- 1431).
- * Relax the restriction that slink:VkBufferImageCopy::pname:bufferOffset
- must be a multiple of 4 for flink:vkCmdCopyBufferToImage and
- flink:vkCmdCopyImageToBuffer when run on graphics or compute queues, but
- not on transfer queues (internal issue 1701).
- * Document the types of "`special use`" extensions in the new
- <<extendingvulkan-compatibility-specialuse, Special Use Extensions>>
- section, summarize special uses in the generated metadata for extension
- appendices, and link back to the new section from each special use
- extension (internal issue 1938).
- * Clarify behavior of flink:vkGetDeferredOperationMaxConcurrencyKHR,
- allowing it to return zero for competed operations (internal issue 2036).
- * Allow flink:vkGetInstanceProcAddr to resolve itself with a `NULL`
- pname:instance (internal issue 2057).
- * Modify the valid usage statement ID assignment script to track a range
- of unused IDs for each extension branch under development, instead of
- only allowing VUID assignment in `master` and `devel` branches (internal
- issue 2100).
- * Add `selector` and `selection` attributes for unions in XML, to enable
- automatic generation of validation code (internal issue 2140).
- * Fix validity generator for stext:Vk*Flags types that are aliases,
- correcting generation of implicit valid usage for
- slink:VkAccelerationStructureInfoNV::pname:flags. Remove
- `noautovalidity` attribute for this member, as well as the previously
- written explicit valid usage (internal issue 2140).
- * Fix description of slink:VkTextureLODGatherFormatPropertiesAMD (internal
- issue 2189).
- * Remove redundant text about variables being explicitly laid out in the
- <<interfaces-resources-layout, Offset and Stride Assignment>> section
- (internal merge request 3691).
- * Fix conflicting slink:VkSamplerYcbcrConversionCreateInfo valid usage
- statements (internal merge request 3716).
- * Fix use of code:AHARDWAREBUFFER_USAGE_GPU_COLOR_OUTPUT to
- code:AHARDWAREBUFFER_USAGE_GPU_FRAMEBUFFER in valid usage statement
- 02386 for slink:VkMemoryAllocateInfo (internal merge request 3808).
- * Add missing `externsync` XML attributes for ftext:vkCmd* commands
- (internal merge request 3825).
- * Add missing `extends` attribute to
- slink:VkDevicePrivateDataCreateInfoEXT XML (internal merge request
- 3834).
- * Add code:RayGeometryIndexKHR to the `<<VK_KHR_ray_tracing>>` list of
- built-in variables (internal merge request 3853).
- * Restrict slink:VkBufferViewCreateInfo with ename:VK_WHOLE_SIZE, and
- round down results of division in calculating the test in the
- corresponding valid usage statements (internal merge request 3858).
- * Miscellaneous cleanup and reorganization of synchronization language in
- multiple places, and add the
- <<synchronization-image-barrier-layout-transition-order>> section
- (internal merge request 3861).
- * Redefine ename:VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT and
- ename:VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT as pseudo-stages in multiple
- places (internal merge request 3862).
- * Reorganize some valid usage statements, especially but not limited to
- stage mask parameters for slink:VkImageMemoryBarrier,
- slink:VkPipelineStageFlags, flink:vkCmdPipelineBarrier,
- flink:vkCmdResetEvent, flink:vkCmdSetEvent, flink:vkCmdWaitEvents,
- flink:vkCmdWriteBufferMarkerAMD, and flink:vkCmdWriteTimestamp as common
- valid usage statements, for future-proofing (internal merge requests
- 3864, 3865, 3866, 3867, 3868).
-
------------------------------------------------------
-
-Change log for May 15, 2020 Vulkan 1.2.141 spec update:
-
- * Update release number to 141 for this update.
- * *Note*: Using the default build options, specification outputs will now
- be created in `gen/out/` instead of `out/`, and header files will be
- created in `gen/include/vulkan` instead of `include/vulkan`. This can be
- overridden using the `-genpath` option to the frontend scripts like
- `makeAllExts` and `makeSpec`, or by specifying `GENERATED=*path*` on the
- make command line when invoking it directly.
-
-Github Issues:
-
- * Assign new elink:VkDriverId and elink:VkVendorId enums for Mesa (public
- issue 1256).
-
-Internal Issues:
-
- * Fix a typo in the <<fragops-stencil, Stencil Test>> section, removing a
- sentence fragment accidentally left over from an earlier merge conflict
- resolution (internal issue 2158).
- * Typo fixes for flink:vkGetRayTracingShaderGroupHandlesKHR and
- flink:vkGetRayTracingCaptureReplayShaderGroupHandlesKHR valid usage
- statements (internal merge request 3831).
- * Add a `requiredBy` dictionary to the generated `vkapi.py` showing which
- core versions or extensions require each API (internal merge request
- 3832).
- * Allow specifying multiple API names for and tags in registry processing
- scripts. Update the registry schema documentation accordingly, and
- remove the redundant `xml_supported_name_of_api` method from the
- VulkanConventions object (internal merge request 3836).
- * Consolidate generated intermediate files and output documents into
- $(GENERATED) directory, add -genpath option to scripts requiring them,
- and modify Makefile accordingly. Add a new `makeSpec` script which
- combines and extends the functionality of the `makeExt`, `makeKHR`, and
- `makeAllExts` scripts (internal merge requests 3837, 3838, 3840, 3841).
- * Add "`runtime`" to style guide and use that spelling consistently
- (internal merge request 3843).
-
------------------------------------------------------
-
-Change log for May 3, 2020 Vulkan 1.2.140 spec update:
-
- * Update release number to 140 for this update.
-
-Github Issues:
-
- * Add `vk.xml` `noautovalidity` attribute to
- flink:vkCmdBindTransformFeedbackBuffersEXT::pname:pSizes to cause change
- in the generation of implicit valid usage statement for
- pname:bindingCount (public issue 1227).
- * Remove the special tokens (not part of the Vulkan API) suffixed with
- etext:*_BEGIN_RANGE etext:*_END_RANGE, and etext:*_RANGE_SIZE from the
- generated C headers, after consultation with downstream components and
- ISVs and advanced warning to the developer community (public issue 1230,
- internal issue 872).
-
- *Note* if you absolutely require these tokens for some reason, you can
- still build a version of the header which restores them. Edit
- `scripts/genvk.py` to add the parameter `genEnumBeginEndRange = True` to
- the `CGeneratorOptions` objects for the header file targets you want to
- restore. See the version of `genvk.py` in the 1.2.139 spec update for an
- example.
- * Add valid usage statement to slink:VkApplicationInfo requiring that
- pname:apiVersion be greater than or equal to dlink:VK_API_VERSION_1_0
- (public pull request 1252).
- * Add \<implicitexternsync> tags to `vk.xml` for flink:vkDestroyDevice
- slink:VkQueue objects received from pname:device (public pull request
- 1255).
- * Fix typo in slink:VkBufferMemoryBarrier language (public pull request
- 1257).
-
-Internal Issues:
-
- * Automatically generate interface lists for extension appendices from
- `vk.xml` using a new interface generator script, and update the style
- guide's description of these appendices accordingly (internal issue
- 977, internal merge request 3819).
- * Add transitive language to the <<formats-compatible-planes, Compatible
- formats of planes of multi-planar formats>> section to pull in format
- compatibility classes as well (internal issue 1615).
- * Add valid usage statements to ftext:vkCmdBuildAccelerationStructure*KHR,
- flink:vkCmdCopyAccelerationStructureToMemoryKHR, and
- flink:vkCmdCopyMemoryToAccelerationStructureKHR for structure builds
- bound to device memory (internal issue 2033).
- * Don't generate etext:*_MAX_ENUM values in documentation generators,
- since they're not part of the API, and only meaningful on compiled
- headers (internal issue 2056).
- * Remove special lifetime rules for pipelines in the
- <<fundamentals-objectmodel-lifetime-cmdbuffers>> section (internal issue
- 2068).
- * Improve valid usage statements for ftext:vkCmdTraceRays*, share more
- common VUs between ftext:vkTraceRays*, and add ftext:vkCmdTracerays* VUs
- for bound buffers. Improve documentation for the
- pname:raygenShaderBindingOffset parameters and fork `NV` and `KHR` valid
- usage statements, since the shader binding table is described
- differently (internal issues 2075, 2136).
- * Clarify lifetime of acceleration structure build inputs for
- flink:vkCreateAccelerationStructureKHR (internal issue 2077).
- * Add a Note to the <<framebuffer-blending, Blending>> section to stop
- claiming that blending is ignored for all integer formats (internal
- issue 2098).
- * Mark handle parameters of some ftext:vkDestroy* commands as `optional`
- and `externsync="true"` in `vk.xml` (internal issue 2129).
- * Add missing `:refpage:` attributes for ray tracing common valid usage
- statements (internal issue 2141).
- * Redefine fragment to include the possibility of it covering multiple
- pixels. This affects many parts of the specification including the
- <<pipelines, Pipelines>>, <<primsrast, Rasterization>>, and <<fragops,
- Fragment Operations>> chapters, the `<<VK_EXT_post_depth_coverage>>`
- appendix, the `Coverage*` and `Sample Index` glossary entries, the
- code:SampleId and code:SampleMask definitions in the
- <<interfaces-builtin-variables, Built-In Variables>> section, and the
- <<shaders-fragment-execution, Fragment Shader Execution>>,
- <<shaders-fragment-earlytest, Early Fragment Tests>>, and
- <<textures-texel-coordinate-systems, Texel Coordinate Systems>> sections
- (internal merge request 3568).
- * Refactor `scripts/genvk.py` script to specify generator and generator
- options to the `Registry` object before loading XML. This allows
- generator options to influence behavior such as reparenting enum
- elements from feature/extension elmements to the enums they are being
- added to, which is desirable for generating complete feature lists for
- an extension or core version (internal merge request 3789).
- * Raise a fatal error (instead of a warning) in `scripts/generator.py`
- when two enumerants that are not aliased have the same value, so that CI
- will fail (internal merge request 3807).
- * Remove accidentally duplicated slink:VkSubpassDependency2 valid usage
- statement 03093 (internal merge request 3826).
-
-New Extensions:
-
- * `<<VK_EXT_private_data>>`
- * `<<VK_EXT_custom_border_color>>`
-
------------------------------------------------------
-
-Change log for April 26, 2020 Vulkan 1.2.139 spec update:
-
- * Update release number to 139 for this update.
-
-Github Issues:
-
- * Configure Github CI with Azure pipelines and the Khronos Docker build
- image (public pull request 1141).
- * Move NOTE in flink:vkEnumerateInstanceVersion prior to valid usage
- statements (public pull request 1237).
- * Add `implicitexternsyncparams` to flink:vkDestroyInstance for
- slink:VkPhysicalDevice objects (public pull request 1244).
- * Note in the style guide that extension names are used as preprocessor
- symbols in all the generated Vulkan headers (public pull request 1245).
- * Move NOTE about app use of `switch` statements and Vulkan API enums from
- the style guide into the <<fundamentals-validusage-enums, Valid Usage
- for Enumerated Types>> section (public pull request 1246).
- * Modify generator script to use Unix newlines on all platforms (public
- pull request 1250).
-
-Internal Issues:
-
- * Allow ename:VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT error to be
- generated by flink:vkQueuePresentKHR (internal issue 1932).
- * Update references to the SPIR-V Specification to version 1.5.3 (internal
- issue 1957).
- * Add a \<comment> explaining why the bitfields defined for
- slink:VkAccelerationStructureInstanceKHR in `vk.xml` are non-normative
- (internal issue 1975).
- * Add valid usage statement for flink:vkBindImageMemory2::pname:pBindInfos
- to prevent binding disjoint memory twice (internal merge request 3696).
- * Add valid usage statements to flink:vkGetBufferMemoryRequirements,
- flink:vkGetImageMemoryRequirements, and
- slink:VkBufferMemoryRequirementsInfo2 requiring that external Android
- hardware buffers be bound to memory (internal merge request 3717).
- * Fix implicit valid usage statement generation script for handle
- parameters with `optional="false,true"` XML attributes (internal merge
- request 3753).
-
-New Extensions:
-
- * `<<VK_EXT_robustness2>>`
- * `<<VK_QCOM_render_pass_shader_resolve>>`
-
------------------------------------------------------
-
-Change log for April 16, 2020 Vulkan 1.2.138 spec update:
-
- * Update release number to 138 for this update.
-
-Github Issues:
-
- * Use correctly tagged normative term macros in various places (public
- pull request 1217).
- * Fix C arrow markup in parameter descriptions (public pull request 1222).
-
-Internal Issues:
-
- * Add language to the <<features-requirements, Feature Requirements>>
- section, the <<versions, Core Revisions>> appendix, and the applicable
- extensions to require major feature bits if the corresponding extension
- is supported (internal issue 1961).
- * Allow slink:VkAccelerationStructureCreateInfoKHR::pname:maxGeometryCount
- = 0, and clarify that exactly one of pname:compactedSize and
- pname:maxGeometryCount must: be zero. (internal issue 2079).
- * Add `allowduplicate` attribute to XML `type` tags to enable future
- structures which can allow multiple copies of a structure in their
- pname:pNext chain (internal issue 2090).
- * Add the glossary term "`format features`", and make minor clarifications
- to uses of this term in several places in the <<resources, Resource
- Creation>> chapter and the
- <<resources-sampler-ycbcr-conversion-format-features, Sampler Ycbcr
- Conversion Format Features>> section (internal merge request 3727).
- * Add a constraint to the <<memory-external-android-hardware-buffer,
- Android Hardware Buffer>> section requiring that bound slink:VkImage or
- slink:VkBuffer objects be created with the
- ename:VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID
- flag set, and corresponding valid usage statements to
- flink:vkBindBufferMemory, slink:VkBindBufferMemoryInfo,
- flink:vkBindImageMemory, and slink:VkBindImageMemoryInfo (internal merge
- request 3732).
- * Fix pname:memoryTypes ordering description for device coherent memory
- (ename:VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD) in the
- <<memory-device-bitmask-list>> section (internal merge request 3738).
- * Replace code:AHARDWAREBUFFER_USAGE_GPU_COLOR_OUTPUT with
- code:AHARDWAREBUFFER_USAGE_GPU_FRAMEBUFFER in the
- <<memory-external-android-hardware-buffer-usage, AHardwareBuffer Usage
- Equivalence>> table, and add
- ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT flag for this case
- (internal merge request 3741).
- * Add more references to `NV` and `KHR` ray tracing pipelines in
- discussions of creating pipelines, or generalize text so they need not
- all be mentioned by name (internal merge request 3743).
- * Allow *ShaderCallKHR* memory scope in ray tracing shaders, in the
- <<spirvenv-module-validation, Validation Rules within a Module>>
- appendix (internal merge request 3744).
- * Use Khronos Dockerhub image for spec builds in internal CI (internal
- merge request 3748).
- * Add the `<<VK_KHR_dedicated_allocation>>` extension as a dependency of
- `<<VK_ANDROID_external_memory_android_hardware_buffer>>` (internal merge
- request 3751).
-
------------------------------------------------------
-
-Change log for April 06, 2020 Vulkan 1.2.137 spec update:
-
- * Update release number to 137 for this update.
-
-Github Issues:
-
- * Incorporate several changes to the specification build process and HTML
- load-time scripts which pre-render KaTeX math, pre-fetch fonts, and
- perform several other optimizations which can significantly improve load
- time for the single-page HTML specification. In our internal evaluation
- these changes appear to primarily help when using Chrome or Chromium,
- with smaller improvements for Firefox and Safari. Speedups seem more
- significant on Linux, Windows, and Android platforms, while MacOS
- browsers may benefit less (public pull requests 702, 704, and 708).
- * Clarify that code:OpVariable is decorated with code:Location, not
- code:OpTypeStruct in the <<interfaces-iointerfaces-locations, Location
- Assignment>> section (public issue 1203).
- * Add a NOTE about the WSI origin location in the description of
- flink:vkQueuePresentKHR (public pull request 1208).
- * Add the `null-terminated` attribute to
- slink:VkPerformanceValueDataINTEL::pname:valueString in `vk.xml` (public
- pull request 1209).
- * Mark slink:VkPhysicalDeviceVulkan11Properties and
- slink:VkPhysicalDeviceVulkan12Properties structures as `returnedonly` in
- `vk.xml` (public pull request 1210).
- * Create explicit valid usage statements from text in the description of
- slink:VkValidationFeaturesEXT (public pull request 1212).
- * Update style guide to add "`user`" to the list of words *not* to use,
- instead recommending "`application`" (public pull request 1213).
- * Fix typos where `ext:` was used in the style guide instead of the new
- `apiext:` asciidoctor macro (public pull request 1214).
- * Miscellaneous minor markup and editing fixes (public pull request 1215).
- * Remove etext:KHR from promoted ename:VK_MAX_DRIVER_NAME_SIZE in the
- description of slink:VkPhysicalDeviceDriverProperties (public pull
- request 1218).
- * Correct use of `NULL` to dlink:VK_NULL_HANDLE in the
- <<acceleration-structure-inactive-prims, Inactive Primitives and
- Instances>> section (public pull request 1219).
- * Remove trailing periods on valid usage statement text, as required by
- the style guide, and add `scripts/deperiodize_vuids.py` to do this in
- the future if needed (public pull request 1220).
-
-Internal Issues:
-
- * Provide a warning in the repository `README.adoc` of pending header
- changes to remove etext:VK_*_BEGIN_RANGE, etext:VK_*_END_RANGE, and
- etext:VK_*_RANGE_SIZE tokens (internal issue 872).
- * Describe the meaning of code:Device for the `<<VK_KHR_shader_clock>>`
- extension in the <<shaders-scope-device, Device>>,
- <<shaders-scope-queue-family, Queue Family>>, and
- <<shaders-scope-command, Command>> sections of the shader
- <<shaders-scope, Scope>> section (internal issue 1955).
- * Allow slink:VkDebugUtilsObjectNameInfoEXT::pname:pObjectName to be
- either NULL or an empty string to remove a previously set name (internal
- issue #2019).
- * Add missing VK_ERROR_OUT_OF_HOST_MEMORY error code in `vk.xml` for
- flink:vkEnumerateInstanceVersion (internal issue 2029).
- * Require code:R32i or code:R32ui image format for
- code:OpImageTexelPointer atomic operations in the
- <<spirvenv-module-validation, Validation Rules within a Module>> section
- (internal issue 2049).
- * Remove the `<pattern>` element from images used in the specification, to
- avoid complaints from prawn-svg during PDF spec builds (internal issue
- 2053).
- * Clarify usable sample counts for empty subpasses in the
- <<features-variableMultisampleRate>> section and the related
- flink:vkCmdBindPipeline valid usage statement, as well as in the
- <<limits-framebufferNoAttachmentsSampleCounts>>
- <<renderpass-noattachments>> sections (internal issue 2066).
- * Clarify pname:aspectMask usage in render passes in
- slink:VkGraphicsPipelineCreateInfo valid usage statement 01565 and in
- slink:VkAttachmentReference2 (internal merge request 3664).
- * Remove unused etext:VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_KHR
- token from `vk.xml` and the `<<VK_KHR_ray_tracing>>` appendix
- (internal merge request 3680).
- * Require <<features-subgroup-extended-types,
- pname:shaderSubgroupExtendedTypes>> for Vulkan 1.2 (internal merge
- request 3680).
- * Generate symlinks from refpage aliases to the API they're aliasing
- (internal merge request 3694).
- * Add an alias from the old ename:VK_ANDROID_NATIVE_BUFFER_EXTENSION_NAME
- token (internal merge request 3697).
- * Add `scripts/compImages.sh` to compare all images in two git branches of
- the specification (internal merge request 3699).
- * Improve valid usage statements for `<<VK_NV_device_generated_commands>>`
- in flink:vkCmdExecuteGeneratedCommandsNV,
- slink:VkGeneratedCommandsInfoNV,
- flink:vkCmdPreprocessGeneratedCommandsNV,
- slink:VkIndirectCommandsStreamNV, slink:VkIndirectCommandsLayoutTokenNV
- and slink:VkGraphicsPipelineCreateInfo (internal merge request 3702).
- * Clarify differences between `<<VK_NV_ray_tracing>>` and
- `<<VK_KHR_ray_tracing>>` for
- slink:VkPipelineCreationFeedbackCreateInfoEXT pipeline creation,
- pname:shaderGroupHandleSize and pname:maxRecursionDepth limit
- requirement differences, and detangle `SPV_KHR/NV_ray_tracing` in the
- <<spirvenv-capabilities-table, List of SPIR-V Capabilities and enabling
- features or extensions>> (internal merge request 3710).
- * Add flink:vkGetImageViewAddressNVX and
- slink:VkImageViewAddressPropertiesNVX to `<<VK_NVX_image_view_handle>>`
- (internal merge request 3710).
- * Shorten 'make' output by reducing redundant logging output from refpage
- build targets (internal merge request 3729).
- * Replace sname: macro with slink: everywhere except language actually
- describing the structure in the macro argument (internal merge request
- 3728).
- * Add flink:vkGetBufferMemoryRequirements2 and
- flink:vkGetImageMemoryRequirements2 to the commands for which the
- implementation makes guarantees about certain properties of the memory
- requirements in the <<resources-association, Resource Memory
- Association>> section, following the description of
- slink:VkMemoryRequirements (internal merge request 3730).
- * Add valid usage statements for
- `<<VK_ANDROID_external_memory_android_hardware_buffer>>` (internal merge
- request 3731).
- * Add requirements on the
- slink:VkAccelerationStructureMemoryRequirementsInfoKHR acceleration
- structure for which memory type bits must be exposed (internal
- advisorypanel issue 28).
-
-New Extensions:
-
- * `<<VK_QCOM_render_pass_store_ops>>`
-
------------------------------------------------------
-
-Change log for March 24, 2020 Vulkan 1.2.136 spec update:
-
- * Update release number to 136 for this update.
-
-Github Issues:
-
- * Generate per-extension refpages from the extension appendices in the
- specification instead of the old, minimal generated refpages, and update
- the registry index to point to these refpages instead of the
- specification (public issue 1195, internal issue 1999).
- * Rename ename:VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL to
- ename:VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL
- to match the similar renaming of sname:VkQueryPoolCreateInfoINTEL to
- slink:VkQueryPoolPerformanceQueryCreateInfoINTEL (public issue 1207,
- internal issue 2048).
-
-Internal Issues:
-
- * Add a new <<resources-sampler-ycbcr-conversion-format-features, Sampler
- Ycbcr Conversion Format Features>> section, and update
- elink:VkFormatFeatureFlagBits and valid usage statements for
- slink:VkSamplerCreateInfo and slink:VkSamplerYcbcrConversionCreateInfo
- to refer to it (internal issue 1963).
- * Comment out reserved but unused ename:VK_ACCESS_RESERVED_31_BIT_KHR to
- avoid generator script warnings (internal issue 2016).
- * Fix some `<<VK_KHR_ray_tracing>>` valid usage IDs that were broken in
- the 1.2.135 update (internal issue 2044).
- * Remove `const` qualifier from
- sname:VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV::pname:pNext
- in `vk.xml` (internal issue 2047).
- * Remove `flowRoot` elements supported only by Inkscape from some of the
- images, and update a couple to 96 DPI from 90 DPI due to current
- Inkscape's insistence. This reduces warnings from prawn-svg during PDF
- builds (internal issue 2053).
- * Remove reference in the <<devsandqueues-lost-device, Lost Device>>
- section to a non-existent list of functions returning
- ename:VK_ERROR_DEVICE_LOST (internal merge request 3667).
- * Add valid usage statements to slink:VkImageViewCreateInfo for cube and
- cube array image view (internal merge request 3682).
- * Remove redundant valid usage statement 00228 from flink:vkCmdBlitImage
- (internal merge request 3684).
- * Document the Khronos-provided Docker image, whose use is recommended
- when building documents and generated files from this repository
- (internal merge request 3686).
- * Rename ename:VK_PIPELINE_COMPILE_REQUIRED_EXT from
- ename:VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT and add an alias from the
- old name, since it is not actually an error code. Add it to the
- `successcodes` attributes of appropriate commands in `vk.xml` (internal
- merge request 3687).
-
------------------------------------------------------
-
-Change log for March 17, 2020 Vulkan 1.2.135 spec update:
-
- * Update release number to 135 for this update.
-
-Github Issues:
-
- * Add missing dependencies of slink:VkExportMemoryWin32HandleInfoKHR on
- slink:VkExportMemoryAllocateInfo in the slink:VkMemoryAllocateInfo
- pname:pNext chain; slink:VkExportFenceWin32HandleInfoKHR on
- slink:VkExportFenceCreateInfo in the slink:VkFenceCreateInfo pname:pNext
- chain; and slink:VkExportSemaphoreWin32HandleInfoKHR on
- slink:VkExportSemaphoreCreateInfo in the slink:VkSemaphoreCreateInfo
- pname:pNext chain (public issue 1095).
- * Update the <<spirvenv-module-validation, Validation Rules within a
- Module>> section of the SPIR-V environment appendix to allow the
- code:PhysicalStorageBuffer64 addressing model (public issue 1199).
- * Fix markup in parameters section of
- flink:vkGetPhysicalDeviceXcbPresentationSupportKHR (public pull request
- 1201).
- * Amend rules in the <<extensions-vendor-id, Registering a Vendor ID with
- Khronos>> section of the style guide to allow other Khronos APIs such as
- OpenCL to reserve vendor IDs here so they can be shared with those APIs
- (public KhronosGroup/OpenCL-Docs pull request 203).
-
-Internal Issues:
-
- * Clarify layer loading order for slink:VkInstanceCreateInfo and in the
- <<extendingvulkan-layers, Layers>> chapter following the specification
- of slink:VkLayerProperties (internal issue 1986).
- * Simplify markup for SPIR-V versions required by different Vulkan
- versions in the <<spirvenv, Vulkan Environment for SPIR-V>> appendix
- (internal issue 2011).
- * Rename sname:VkQueryPoolCreateInfoINTEL to
- slink:VkQueryPoolPerformanceQueryCreateInfoINTEL in the
- `<<VK_INTEL_performance_query>>` extension (internal issue 2022).
- * Add ename:VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT to
- elink:VkValidationFeatureEnableEXT to specify that layers will process
- code:debugPrintfEXT operations (internal issue 2023).
- * Fix conflicting language in slink:VkSamplerYcbcrConversionCreateInfo
- valid usage statement 01653 (internal merge request 3629).
- * Add missing valid usage statement for slink:VkSparseImageMemoryBindInfo
- to require slink:VkImage objects created with the
- ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT flag set (internal merge
- request 3633).
- * Remove redundant valid usage statement 00122 from flink:vkCmdCopyImage
- (internal merge request 3643).
- * Fix several places where `VULKAN_1_1` was used in asciidoctor
- conditional markup instead of `VK_VULKAN_1_1` (internal merge request
- 3654).
- * Fix conditional markup around slink:VkImageViewCreateInfo valid usage
- statement 01018 to ensure it doesn't overlap a similar valid usage
- statement written for another combination of enabled extensions and
- versions (internal merge request 3655).
- * Remove redundant valid usage statement from flink:vkCmdCopyImage that
- was already covered by statements for slink:VkImageCopy. Eventually this
- will be inverted so the statements are located with flink:vkCmdCopyImage
- but that requires more work and is deferred (internal merge request
- 3656).
- * Clarify wording of slink:VkImageMemoryBarrier valid usage statement
- 01671 and add a missing statement (internal merge request 3657).
- * Minor fixes to the style guide to bring it up to date with respect to
- the asciidoctor client, assignment of valid usage ID tags, and proper
- placement of valid usage statements (internal merge request 3662).
- * Add missing valid usage statements to slink:VkSubpassDescription2 based
- on comparable statements for slink:VkSubpassDescription (internal merge
- request 3663).
-
-New Extensions
-
- * Ray Tracing package of extensions, including
- ** `<<VK_KHR_deferred_host_operations>>`
- ** `<<VK_KHR_pipeline_library>>`
- ** `<<VK_KHR_ray_tracing>>`
- * `<<VK_EXT_pipeline_creation_cache_control>>`
- * `<<VK_NV_device_diagnostics_config>>`
- * `<<VK_NV_device_generated_commands>>` (replacing
- `VK_NVX_device_generated_commands`, which was an experimental vendor
- extension and has been removed from the Specification and `vk.xml`).
-
------------------------------------------------------
-
-Change log for March 6, 2020 Vulkan 1.2.134 spec update:
-
- * Update release number to 134 for this update.
-
-Github Issues:
-
- * Fix flink:vkGetPhysicalDeviceToolPropertiesEXT implicit array valid
- usage statements, rewrite for consistency, and explicitly state lifetime
- of retrieved results (public pull request 1148).
- * Change use of "`happens before`" to glossary term "`happens-before`"
- (public pull request 1170).
- * Use glossary terms "`release operation`" / "`acquire operation`" instead
- of similar colloquial language (public pull request 1171).
- * Fix minor spelling errors and duplicated words (public pull request
- 1174).
- * Remove duplicate "`to`" word (public pull request 1176).
- * Rephrase description of signaling / unsignaling for slink:VkEvent
- (public pull request 1179).
- * Update asciidoctor extension handling of C arrow operator to avoid need
- for escaping it in custom macros, and corresponding fixes to markup in
- the spec and to the style guide (public pull request 1186).
- * Move layout transition NOTE in the
- <<synchronization-image-layout-transitions, Image Layout Transitions>>
- section below the corresponding normative paragraph (public pull request
- 1190).
- * Change the parent handle types of slink:VkDisplayKHR and
- slink:VkDisplayModeKHR in `vk.xml` (public pull request 1194).
- * Add missing `len` attribute for
- flink:vkQueueSignalReleaseImageANDROID::pname:pWaitSemaphores parameter
- in `vk.xml` (public pull request 1196).
-
-Internal Issues:
-
- * Link to HTML preview of `SPV_KHR_non_semantic_info` link in the
- `<<VK_KHR_shader_non_semantic_info>>` appendix, instead of asciidoctor
- source document (internal merge request 3614).
- * Improve registry schema documentation description of allowed <enum> tags
- inside <remove> tags (internal merge request 3614).
-
- * Clarify behavior when reading or writing image formats with padding
- ("`X`" components) in the "`Common Operation`" section of the <<copies>>
- chapter, and that padding components are unused in the elink:VkFormat
- description of such formats (internal issue 1122).
- * Clarify that flink:vkGetDeviceProcAddr can be used for device-level
- commands from instance extensions (internal issue 1960).
- * Add a note to the <<primsrast-lines-bresenham, Bresenham Line Segment
- Rasterization>> section clarifying that line rasterization does not
- depend on sample locations (internal issue 1855).
- * Add a new header macro dlink:VK_HEADER_VERSION_COMPLETE which provides
- the complete version (major, minor, and patch/release) of the Vulkan
- headers at compile time, and document the intended use cases for this
- macro (internal issue 1990).
- * Remove `optional` attribute from
- slink:VkDebugUtilsObjectNameInfoEXT::pname:pObjectName in `vk.xml`,
- making the string required (internal issue 2002).
- * Add a missing `structextends` attribute for
- slink:VkQueryPoolCreateInfoINTEL in `vk.xml` (internal merge request
- 3599).
- * Clarify when implicit subpass dependencies are introduced in the
- definition of slink:VkSubpassDependency (internal merge request 3603).
- * Update several valid usage statements for flink:vkCmdResetQueryPool,
- flink:vkCmdBeginQuery, and flink:vkCmdBeginQueryIndexedEXT which
- interact with the presence of flink:vkCmdResetQueryPool commands in a
- command buffer, and restrict the VUs to performance queries (internal
- merge request 3604).
- * Simplify a hard-to-parse sentence in the <<textures-RGB-sexp, RGB to
- Shared Exponent Conversion>> section (internal merge request 3606).
- * Add a `pdfwidth` attribute to markup for images inside tables, to work
- around a crash occurring in recent versions of asciidoctor-pdf (internal
- merge request 3626).
-
-New Extensions
-
- * `<<VK_QCOM_render_pass_transform>>`
-
------------------------------------------------------
-
-Change log for February 15, 2020 Vulkan 1.2.133 spec update:
-
- * Update release number to 133 for this update.
-
-Github Issues:
-
- * Clarify language describing the <<commandbuffers-lifecycle, command
- buffer lifecycle>> (public pull request 1152).
- * Add anchor handles to chapters and VUID statements in the HTML outputs
- (public pull request 1157).
- * Update declaration of flink:vkCmdDrawIndexedIndirectCountAMD to alias
- the core function rather than the KHR extension function (public pull
- request 1165).
- * Remove redundant NOTE discussing
- ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT after the description
- of slink:VkCommandBufferInheritanceInfo.txt (public pull request 1167).
- * Reserved vendor ID for Codeplay (public pull request #1167).
-
-Internal Issues:
-
- * Restrict flag bits to bit positions 0..30. Add language to the
- <<fundamentals-validusage-flags, Valid Usage for Flags>> section
- expressing the restriction; to the registry documentation where the
- `bitpos` attribute is defined; and finally, add a test to the generator
- scripts that warns of bits 31 and higher being used (internal issue
- 1945).
- * Clarify dynamic indexing of sampler objects in the
- <<interfaces-resources-descset, Descriptor Set Interface>> section, to
- be controlled by the same feature as sampled images (internal issue
- 1951).
- * Make the effect of query reset commands requiring multiple passes to
- complete explicit, by disallowing resets of the same query from the same
- primary command buffer in the description of flink:vkCmdResetQueryPool
- and the valid usage statements for ftext:vkCmdBeginQuery* (internal
- issue 1965).
- * Update interaction between elink:VkFormatFeatureFlagBits affecting
- slink:VkSamplerYcbcrConversionCreateInfo::pname:forceExplicitReconstruction
- (internal merge request 3533).
- * Generate implicit pname:sType-unique valid usage statements from
- `validitygenerator.py` even for pname:pNext chains with only a single
- valid structure type, to enable validation layers work (internal merge
- request 3534).
- * Clean up wording of some flink:vkBindImageMemory valid usage statements
- (internal merge request 3547).
- * Mark the `VK_EXT_shader_subgroup_vote` and
- `VK_EXT_shader_subgroup_ballot` as deprecated in `vk.xml` (internal
- merge request 3558).
- * Tighten slink:VkSamplerYcbcrConversionCreateInfo::pname:chromaFilter
- valid usage restriction to be ename:VK_FILTER_NEAREST instead of
- ename:VK_FILTER_LINAER, now that other filters exist (internal merge
- request 3561).
- * Add valid usage statements to slink:VkCommandPoolCreateInfo and
- slink:VkDeviceQueueCreateInfo requiring that the corresponding
- ename:VK_COMMAND_POOL_CREATE_PROTECTED_BIT and
- ename:VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT not be set if the protected
- memory feature is not enabled. Previously this restriction was described
- for the elink:VkCommandPoolCreateFlagBits and
- elink:VkDeviceQueueCreateFlagBits types containing those flags, but not
- in valid usage statements (internal merge request 3563).
- * Fix conditional markup in the <<shaders-scope-device>> and
- <<shaders-scope-queue-family>> sections to apply to Vulkan 1.2, as well
- as `VK_KHR_vulkan_memory_model` (internal merge request 3570).
- * Add performance queries to the list in the introduction of the
- <<supported query types, queries>> chapter (internal merge request
- 3577).
-
-New Extensions
-
- * `<<VK_KHR_shader_non_semantic_info>>`
-
------------------------------------------------------
-
-Change log for January 20, 2020 Vulkan 1.2.132 spec update:
-
- * Update release number to 132 for this update.
-
-Github Issues:
-
- * Move and reword a NOTE in the <<extendingvulkan-extensions, Extensions>>
- section (public pull request 1131).
- * Change redundant description of application error when using
- flink:vkMapMemory into a non-normative NOTE (public pull request 1143).
- * Remove redundant valid usage statement for flink:vkCmdExecuteCommands
- (public pull request 1151).
- * Remove redundant command buffer
- ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT language in
- flink:vkCmdExecuteCommands valid usage statements (public pull request
- 1153).
- * Add flink:vkBeginCommandBuffer valid usage statement to prevent using a
- primary command buffer with both the
- ename:VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT and
- ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT flags (public pull
- request 1154).
- * Add slink:VkRenderPassBeginInfo valid usage statements for
- pname:renderArea (public pull request 1159).
- * Add missing valid usage statements for flink:vkCmdBeginRenderPass when
- `VK_KHR_separate_depth_stencil_layouts` is enabled (public
- KhronosGroup/Vulkan-ValidationLayers issue 1470).
-
-Internal Issues:
-
- * Clarify the definition of "`transfer commands`" for
- <<synchronization-pipeline-stages-transfer,
- ename:VK_PIPELINE_STAGE_TRANSFER_BIT>> (internal issue 816).
- * Clarify VK_ATTACHMENT_STORE_OP_DONT_CARE and reorder render pass chapter
- (internal issue 1098).
- * Clarify that <<pipelines-dynamic-state, Dynamic State>> can be set
- before pipeline bind, and update valid usage statements accordingly
- (internal issue 1624).
- * Clarify the behavior of floating-point divide by zero in the
- <<spirvenv-precision-operation, Precision and Operation of SPIR-V
- Instructions>> section (internal issue 1669).
- * Add a valid usage statement to flink:vkCmdResetQueryPool which allows
- not calling flink:vkCmdEndQuery if a prior flink:vmCmdResetQuery command
- was called (internal issue 1700).
- * Refactor specification of shader scopes into the new <<shaders-scope,
- Scope>> section, and modify other references to this language
- accordingly. Also describe quad invocation groups properly, with
- derivative and quad group operations referencing the description, and
- call out helper invocations as being able to become spontaneously
- inactive. Simplify parts of the texturing chapter accordingly (internal
- issues 1824, 1884, 1885, 1911).
- * Stop claiming that semaphore signals are ordered between different queue
- commands in the <<synchronization-signal-operation-order>> section
- (internal merge request 3542).
- * Move a valid usage statement from slink:VkBindImagePlaneMemoryInfo to
- flink:vkBindImageMemory2, where it can be determined (internal merge
- request 3548).
-
------------------------------------------------------
-
-Change log for January 15, 2020 Vulkan 1.2.131 spec update:
-
- * Vulkan 1.2 initial release. Update release number to 131 for this
- update. The patch number will be used for all Vulkan 1.x spec updates,
- and continue to increment continuously from the previous Vulkan 1.1.130
- update.
-
-Github Issues:
-
- * Use the attributes {prime}, {YCbCr}, and {RGBprime} for better markup of
- prime symbols, and ease of changing the markup for the commonly used
- color format names (public issue 636).
- * Expand the <<extendingvulkan-extensions-extensiondependencies, Extension
- Dependencies>> section to acknowledge that extension dependencies are
- usually, but not always satisfied by promoted versions of the
- dependencies, and point to the extension and version appendices for more
- information (public issue 1085).
- * Clarify the <<features-shaderStorageImageExtendedFormats,
- pname:shaderStorageImageExtendedFormats>> feature and add corresponding
- formats to the <<formats-mandatory-features-2byte>>,
- <<formats-mandatory-features-10bit>>,
- <<formats-mandatory-features-16bit>>, and
- <<formats-mandatory-features-64bit>> tables (public pull request 1098).
- * Fix issue 2 wording in the `<<VK_KHR_surface>>` appendix (public pull
- request 1100).
- * Fix valid usage statements for
- slink:VkSwapchainCreateInfoKhr::pname:minImageCount interactions with
- `<<VK_KHR_shared_presentable_image>>` (public pull request 1101).
- * Change the etext:VK_QUERY_SCOPE_* tokens in the
- slink:VkPerformanceCounterScopeKHR to aliases of new
- etext:VK_PERFORMANCE_COUNTER_SCOPE_* tokens, following the naming
- conventions for enumerants (public issue 1130).
- * Move `NV` extension pipe stages in elink:VkShaderStageFlagBits so they
- are not included in enmae:VK_SHADER_STAGE_ALL_GRAPHICS (public pull
- request 1133).
- * Clarify the introduction of the "`Surface Queries`" section of the
- <<wsi, Window System Integration>> chapter (public pull request 1135).
- * Fix macros that consume codelike text like pname:foo\->bar (public pull
- request 1149).
-
-Internal Issues:
-
- * Add a new <<fundamentals-errorcodes, error code>>,
- ename:VK_ERROR_UNKNOWN, that can be returned by any function that has
- error returns (internal issue 1654).
- * Remove the `<<VK_EXT_filter_cubic>>` requirement to cubic filter the
- formats etext:*USCALED_PACKED32, etext:*SSCALED_PACKED32,
- etext:*UINT_PACK32, and etext:*SINT_PACK32 in the
- <<features-required-format-support, Required Format Support>> section
- (internal issue 1934).
- * Add a missing valid usage statement for
- `<<VK_KHR_buffer_device_address>>` to slink:VkBindBufferMemoryInfo,
- based on a similar statement for flink:vkBindBufferMemory (internal
- merge request 3512).
- * Fix some 'name:' macros to the correct 'pname:' (internal merge request
- 3529).
- * Changes to script tools to stay relatively aligned with OpenXR scripts
- (internal merge request 3530).
-
------------------------------------------------------
-
-Change log for December 9, 2019 Vulkan 1.1.130 spec update:
-
- * Update release number to 130
-
-Github Issues:
-
- * Mark slink:VkPipelineExecutableInternalRepresentationKHR as
- `returnedonly` in `vk.xml` (public pull request 1092).
- * Use 'slink:' in autogenerated valid usage statements instead of 'sname:'
- (public pull request 1093).
- * Split flink:vkGetQueryPoolResults VU statement 00815, which had
- disallowed internal asciidoctor conditionals into two (public issue
- 1094).
- * Minor markup and editing fixes (public pull request 1099).
- * Hide outdated valid usage statement when not building with timeline
- semaphore extension (public pull request 1121).
- * Add `<<VK_NV_glsl_shader>>` deprecation note (public pull request 1125).
- * Add SPV and GLSL links to `<<VK_KHR_multiview>>` (public pull request
- 1128).
-
-Internal Issues:
-
- * Clarify and consistently refer to the shader interface matching rules in
- the <<interfaces, Shader Interfaces>> chapter (internal issue 1067).
- * Clarify that inner array dimensions can't be sized with specialization
- constants in the <<spirvenv-module-validation, Validation Rules within a
- Module>> section (internal issue 1739).
- * Use consistent markup for nested access (members, array references,
- pointers) to structure members and function parameters (internal issues
- 503, 1765).
- * Make slink:VkDeviceQueueInfo2::flags optional in `vk.xml` to remove an
- inappropriate valid usage statement (internal issue 1805).
- * Fix API name assignment for valid usage blocks in `scripts/reflow.py`
- (internal issue 1809).
- * Make spec language more internally consistent by fixing remaining cases
- where the term "`an instance of (structurename)`" was used, and
- expanding the style guide rules for describing pname:pNext chains along
- with corresponding edits it (internal issue 1814).
- * Disallow code:Workgroup memory and execution scope and code:Workgroup
- storage class in all but compute, mesh, and task shaders in the
- <<spirvenv-module-validation, Validation Rules within a Module>>
- section. There is an exception for code:Workgroup execution scope in
- tessellation control shaders because we do not have a more appropriate
- scope for patch barriers (internal issue 1905).
- * Restore 'Promoted to Vulkan 1.1 Core' comments in extension appendices,
- which were accidentally removed in spec revision 1.1.129 (internal issue
- 1914).
- * Add some minor markup fixes as well as new valid usage statements for
- slink:VkAttachmentDescription, slink:VkAttachmentDescription2KHR, and
- slink:VkAttachmentReference2KHR (internal merge request 3493).
-
-New Extensions
-
- * `<<VK_EXT_tooling_info>>`
-
------------------------------------------------------
-
-Change log for November 25, 2019 Vulkan 1.1.129 spec update:
-
- * Update release number to 129
-
-Github Issues:
-
- * Rename "`pixel shaders`" to "`fragment shaders`" (public issue 1082).
- * Fix some markup in external semaphore extension (public pull request
- 1083).
- * Fix styleguide em-dash example (public pull request 1088).
- * Update `.gitignore` to include some additional static refpages (public
- pull request 1089).
- * Restructure query language in <<wsi, Window System Integration (WSI)>>
- chapter - split into sections, reordered orphaned paragraphs, simplify
- language (public pull request 1090).
-
-Internal Issues:
-
- * Remove NVIDIA contributors from `<<VK_KHR_performance_query>>` (internal
- merge request 3481).
-
-New Extensions
-
- * `<<VK_KHR_buffer_device_address>>`
-
------------------------------------------------------
-
-Change log for November 18, 2019 Vulkan 1.1.128 spec update:
-
- * Update release number to 128
-
-Github Issues:
-
- * Fix valid usage condition for
- flink:vkAllocationMemory::pname:pAllocateInfo (public issue 1032).
- * Change explicit valid usage statements for queue transfer operations in
- flink:vkCmdWaitEvents and flink:vkCmdPipelineBarrier, and corresponding
- language in the <<synchronization-queue-transfers-release>> section, to
- incorporate access masks and clarify when queue transfer ops occur
- (public pull request 1046).
- * Ignore disabled bits in valid usage statements (public pull request
- 1062).
- * Fix some broken HTML links (public pull request 1063).
- * Change ename:VK_PIPELINE_CREATE_DISPATCH_BASE to an alias of new token
- ename:VK_PIPELINE_CREATE_DISPATCH_BASE_BIT, to follow the naming
- conventions for bitmasks (public issue 1075).
-
-Internal Issues:
-
- * Add valid usage statement to flink:vkQueueSubmit for attempted use of a
- resource currently not available for use (internal issue 1751).
- * Make it invalid for an implementation to return anything but
- ename:VK_SUCCESS for the flink:vkFreeDescriptorSets and
- flink:vkResetDescriptorPool commands (internal issue 1781).
- * Add a note clarifying the relationship between
- code:SubgroupLocalInvocationId and code:LocalInvocationId or
- code:LocalInvocationIndex to the <<interfaces-builtin-variables-sgli,
- code:SubgroupLocalInvocationId>> description (internal issue 1810).
- * Add valid usage statements for scissor regions to
- slink:VkPipelineViewportStateCreateInfo based on similar statements for
- flink:vkCmdSetScissor, and generalize all these VUs to cover each
- element of the pname:pScissors array (internal issue 1861).
- * Fix the basis matrix for <<textures-texel-cubic-filtering, Texel Cubic
- Filtering>> (internal issue 1878).
- * Make the
- slink:VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT::pname:pNext
- member non-const, like other feature structures (internal issue 1880).
- * Document that aggregate load/store may access padding bytes in the
- <<memory-model-memory-location, Memory Location>> appendix (internal
- cross-api/memory-model issue 113).
- * Clarify in the description of elink:VkDescriptorBindingFlagBitsEXT that
- ename:VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT descriptors allow
- for updating different descriptors in the same set at the same time on
- multiple threads (internal merge request 3419).
- * Clarify that resolve attachments don't need to be compatible in the
- <<renderpass-compatibility, Render Pass Compatibility>> section
- (internal merge request 3422).
- * Add Visual Studio folders to `.gitignore` (internal merge request 3450).
- * Add language to
- slink:sname:VkPipelineCoverageModulationStateCreateInfoNV documenting
- that coverage modulation has no effect when using the
- ename:VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV reduction mode, clarifying
- an interaction with `<<VK_NV_coverage_reduction_mode>>` (internal merge
- request 3456).
-
-New Extensions
-
- * `<<VK_KHR_performance_query>>`
-
------------------------------------------------------
-
-Change log for November 4, 2019 Vulkan 1.1.127 spec update:
-
- * Update release number to 127
-
-Github Issues:
-
- * Consistently use the feature name pname:pipelineExecutableInfo as found
- in `vk.xml` and the generated header files, instead of
- pname:pipelineExecutableProperties as sometimes used in the
- specification text (public issue 1061).
- * Clarify the definition of the code:PrimitiveId returned by a
- `<<VK_NV_ray_tracing>>` shader (public issue 1068).
-
-Internal Issues:
-
- * Remove unused `draw_renderpass_validation.txt` valid usage text
- (internal issue 1869).
- * Require <<features-features-timelineSemaphore, pname:timelineSemaphore>>
- if the `<<VK_KHR_timeline_semaphore>>` extension is supported (internal
- issue 1873).
- * Fix typos in slink:VkBindBufferMemoryInfo valid usage statement 02791
- and various slink:VkSparseMemoryBind VUs (internal merge request 3411).
- * Minor non-semantic markup and diagram fixes (internal merge request
- 3417).
- * Clarify that <<interfaces-iointerfaces-locations, Location>> values are
- physical slots, not a virtual table that just imposes an overall maximum
- on the number of locations that can be used (internal merge request
- 3426).
- * Add links to GLSL specs from the `<<VK_KHR_shader_clock>>` appendix, as
- well as expected mappings for GLSL builtins (internal merge request
- 3429).
-
-New Extensions
-
- * `<<VK_KHR_separate_depth_stencil_layouts>>`
-
------------------------------------------------------
-
-Change log for October 21, 2019 Vulkan 1.1.126 spec update:
-
- * Update release number to 126
-
-Github Issues:
-
- * Update the elink:VkAccessFlagBits etext:VK_ACCESS_MEMORY_* flags
- definition to make clear that ename:VK_ACCESS_MEMORY_READ_BIT and
- ename:VK_ACCESS_MEMORY_WRITE_BIT are meant to be equivalent to setting
- all applicable etext:READ and etext:WRITE access flags, and update the
- <<synchronization-access-types-supported, supported access types>> table
- accordingly (public pull request 1014).
- * Remove misleading NOTE in the <<synchronization-dependencies-chains>>
- section (public pull request 1048).
- * Clarify the memory mapping NOTE about invalidation described for
- flink:vkInvalidateMappedMemoryRanges (public pull request 1049).
- * Fix label for flink:vkCmdWaitEvents VUID 02803 (public pull request
- 1056).
- * Styleguide fixes to several NOTES in the <<synchronization>> chapter
- (public pull request 1057).
- * Markup fix to <<features-features-timelineSemaphore>> section (public
- pull request 1058).
- * Convert some external links to `https` protocol (public pull request
- 1064).
- * Remove unsupported nested links inside table captions (public pull
- request 1067 + followon tweak to make 'allchecks' target pass).
-
-Internal Issues:
-
- * Restrict the SPIR-V code:Invariant decoration to only be used with
- code:Output variables in the <<spirvenv-module-validation, Validation
- Rules within a Module>> section (internal issue 1832).
- * Clarify that the <<features-independentResolve, independentResolve>>
- feature implies support for the <<features-independentResolveNone,
- independentResolveNone>> feature (internal issue 1848).
- * Clarify self-contradictory language for slink:VkSubpassDescription to
- say that resolves only happen within the render area (internal issue
- 1850).
- * Add valid usage statements for slink:VkMemoryAllocateInfo and
- corresponding language to elink:VkExternalMemoryFeatureFlagBitsKHR to
- restrict implementations and applications from using both an external
- host memory allocation and dedicated allocation (internal merge request
- 3375).
-
------------------------------------------------------
-
-Change log for October 13, 2019 Vulkan 1.1.125 spec update:
-
- * Update release number to 125.
-
-Github Issues:
-
- * Allow slink:VkRenderPassFragmentDensityMapCreateInfoEXT to extend
- slink:VkRenderPassCreateInfo2KHR in `vk.xml` (public issue 1027).
- * Fix markup in `<<VK_EXT_external_memory_dma_buf>>` appendix (public pull
- request 1051).
- * Update .gitignore (public pull request 1052).
-
-Internal Issues:
-
- * Disallowed slink:VkEvent from participating in queue family ownership
- transfers in the <<devsandqueues-index, Queue Family Index>> section
- (internal issue 1691).
- * Relax language describing default NT handle access rights for
- slink:VkExportMemoryWin32HandleInfoKHR and
- slink:VkExportSemaphoreWin32HandleInfoKHR (internal issue 1838).
- * Fix markup for slink:VkDeviceCreateInfo valid usage statement 00372 to
- remove imbedded asciidoctor conditionals by splitting it into two VUs
- (internal issue 1846).
- * Clarify lifetime of samplers used as immutable samplers in
- slink:VkDescriptorSetLayoutBinding (internal issue 1849).
- * Add a valid usage statement prohibiting flink:vkCmdBeginQuery on
- timestamp queries (internal issue 1851).
- * Correct some <<Precision of GLSL.std.450 Instructions, SPIR-V
- instruction precisions>> (internal merge request 3391).
- * Fix a typo in flink:vkQueueBindSparse valid usage statement 03245
- (internal merge request 3394).
-
-New Extensions
-
- * `<<VK_KHR_spirv_1_4>>`
-
------------------------------------------------------
-
-Change log for October 6, 2019 Vulkan 1.1.124 spec update:
-
- * Update release number to 124.
-
-Github Issues:
-
- * Fix Makefile SPECREMARK macro to work when not building in a git tree
- (public issue 992).
- * Ignore pname:aspectMask for unused attachments in
- slink:VkSubpassDescription2KHR valid usage statements (public pull
- request 1028).
- * Minor markup / spelling fixes (public pull requests 1035, 1045).
-
-Internal Issues:
-
- * Fix markup in Valid Usage statement for slink:VkCreateFramebuffer
- (internal issue 1823).
- * Add a new <<synchronization-signal-operation-order, _signal operation
- order_>> section to the synchronization chapter which describes in
- detail the ordering guarantees provided by the API between fence and
- semaphore signal operations (internal merge request 3368).
- * Move generated `appendix/meta/` files into the Makefile GENERATED
- directory (internal merge request 3381).
-
-New Extensions
-
- * `<<VK_KHR_shader_clock>>`
- * `<<VK_KHR_timeline_semaphore>>`
-
------------------------------------------------------
-
-Change log for September 15, 2019 Vulkan 1.1.123 spec update:
-
- * Update release number to 123.
-
-Github Issues:
-
- * Add missing aspect mask descriptions to elink:VkImageAspectFlagBits
- (public pull request 1029).
- * Modify validity generator script to not check validity of ignored values
- in same-parent valid usage statements (public pull request 1030).
- * Make slink:VkDescriptorUpdateTemplateCreateInfo::pname:descriptorSetLayout
- `noautovalidity` in `vk.xml` (public pull request 1031).
- * Fix footnote markup in the <<vkGetDeviceProcAddr behavior>> table
- (public pull request 1034).
-
-Internal Issues:
-
- * Require that <<interfaces-builtin-variables-sgs, code:SubgroupSize>> be
- a power of two (internal issue 1499).
- * Clarify that shaderFloat64 and shaderInt64 enable all storage classes,
- while shaderFloat16, shaderInt8, and shaderInt16 only enable
- non-interface storage classes. in the <<features-shaderFloat64>>,
- <<features-shaderInt64>>, and <<features-shaderInt16>> descriptions and
- for slink:VkPhysicalDeviceShaderFloat16Int8FeaturesKHR (internal issue
- 1582).
- * Fix broken asciidoctor conditional logic in the
- <<spirvenv-module-validation, Validation Rules within a Module>>
- section, and add style guide language to help avoid this problem in the
- future (internal issue 1808).
- * Modify VUID assignment script to use the first API include in a block as
- part of the VUID name rather than the last one, so the VUID is based on
- the promoted API name (internal issue 1809).
- * Cleanup string descriptions to consistently refer to "`null-terminated
- UTF-8`" strings (internal issue 1813).
- * Clarify the purpose of the
- slink:VkPhysicalDeviceLimits::ptext:maxDescriptorSet* limits (internal
- merge request 3357).
- * Fix the slink:VkPhysicalDeviceRayTracingPropertiesNV limits for
- pname:maxGeometryCount, pname:maxInstanceCount, and
- pname:maxTriangleCount in the <<limits-required, Required Limits>>
- section (internal issue 3372).
- * Update SPIR-V image op sign-matching rules in the
- <<spirvenv-module-validation, Validation Rules within a Module>>
- section, the <<formats-numericformat>> table, and the
- <<interfaces-resources-descset, Descriptor Set Interface>> section
- (internal spirv/SPIR-V issue 332).
-
-New Extensions
-
- * `<<VK_KHR_shader_subgroup_extended_types>>`
- * `<<VK_GOOGLE_user_type>>`
-
------------------------------------------------------
-
-Change log for September 8, 2019 Vulkan 1.1.122 spec update:
-
- * Update release number to 122.
-
-Internal Issues:
-
- * Add style guide language on not using standalone `+` signs (internal
- issue 736); not using leading whitespace for markup (internal issue
- 747); and on keeping descriptions of a single API in a contiguous block
- of markup (internal issue 949), and apply them to the specification.
- * Add a glossary definition of "`constant integral expression`", pointing
- to the SPIR-V "`constant instruction`" definition (internal issue 1225).
- * Many minor edits to improve writing style consistency and capture
- additional style guidelines (internal issue 1553).
- * Clarify that <<fragops-depth-write, depth writes are not performed>> if
- there is no depth framebuffer attachment (internal issue 1771).
- * Allow implementations to use rectangular line style of interpolation for
- <<primsrast-lines-bresenham, wide Bresenham lines>>, though replicating
- attributes is still preferred. Clarify that code:FragCoord is not
- replicated (internal issue 1772).
- * Resolve a contradiction in valid usage statements for
- slink:VkImageCreateInfo and slink:VkImageStencilUsageCreateInfoEXT
- (internal issue 1773).
- * Add style guide discussion of markup for indented equations, and use
- markup workaround for asciidoctor 2 compatibility (internal issue 1793).
- * Deprecate the `<<VK_EXT_validation_flags>>` extension in `vk.xml` and
- the extension appendix (internal issue 1801).
- * Add a new checker script `scripts/xml_consistency.py`. This is not
- currently run as part of internal CI (internal merge request 3285).
- * Correct "`an`" -> "`a`" prepositions where needed (internal merge
- request 3334).
- * Clarify that the <<features-uniformBufferStandardLayout,
- pname:uniformBufferStandardLayout>> feature is only required when the
- extension defining it is supported (internal merge request 3341).
- * Bring scripts into closer sync with OpenXR, mainly through conversion of
- comments to docstrings where appropriate, and add gen-scripts-docs.sh
- (internal merge request 3324).
- * Correct pname:maxDrawMeshTasksCount to 2^16^-1 in the <<limits-required,
- Required Limits>> table (internal merge requests 3361).
-
-New Extensions
-
- * `<<VK_IMG_format_pvrtc>>` (public issue 512).
-
------------------------------------------------------
-
-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.
-
-Github Issues:
-
- * Add slink:VkAccelerationStructureTypeNV explicitly to extension XML for
- `<<VK_NV_ray_tracing>>` (public issue 848).
- * Add missing valid usage statements for feature flags in
- slink:VkCommandBufferInheritanceInfo (public pull request 1017).
-
-Internal Issues:
-
- * Clarify behavior of non-premultiplied destination colors for
- `<<VK_EXT_blend_operation_advanced>>` prior to the definition of
- slink:VkBlendOverlapEXT (internal issue 1766).
- * Fix the confusing phrasing "`no other queue must: be (doing something)`"
- for flink:vkQueuePresentKHR, flink:vkQueueSubmit, and
- flink:vkQueueBindSparse (internal issue 1774).
- * Add `<<VK_EXT_validation_features>>` flag to enable best practices
- checks, which will soon be available in the validation layer (internal
- issue 1779).
- * Specify allowed characters for VUID tag name components in the style
- guide (internal issue 1788).
- * Update links to SPIR-V extension specifications, and parameterize their
- markup in case the URLs change in the future (internal issue 1797).
- * Fix an off-by-one error in the valid usage statement for
- slink:VkPipelineExecutableInfoKHR (internal merge request 3303).
- * Clean up markup indentation not matching the style guide (internal merge
- request 3314).
- * Minor script updates to allow refpage aliases, generate a dynamic TOC
- for refpages, generate Apache rewrite rules for aliases, open external
- links from refpages in a new window, and synchronize with the OpenCL
- scripts. This will shortly enable a paned navigation setup for refpages,
- similar to the OpenCL 2.2 refpages (internal merge request 3322).
- * Script updates to add tests to the checker, refactor and reformat code,
- generate better text for some valid usage statements, use more Pythonic
- idioms, and synchronize with the OpenXR scripts (internal merge request
- 3239).
- * Script updates and minor fixes in spec language to not raise checker
- errors for refpage markup of pages not existing in the API, such as
- VKAPI_NO_STDINT_H. Remove corresponding suppression of some
- check_spec_links.py tests from .gitlab-ci.yml and 'allchecks' target
- (internal merge request 3315).
-
------------------------------------------------------
-
-Change log for August 11, 2019 Vulkan 1.1.119 spec update:
-
- * Update release number to 119.
- * A new extension was accidentally left out of the 1.1.118 spec update.
- This update corrects that oversight.
-
-New Extensions:
-
- * `<<VK_KHR_pipeline_executable_properties>>`
-
------------------------------------------------------
-
-Change log for August 11, 2019 Vulkan 1.1.118 spec update:
-
- * Update release number to 118.
-
-Github Issues:
-
- * Update `BUILD.adoc` to specifically require asciidoctor 1.5.8, and make
- that change to the gitlab CI script (public issue 968).
- * Remove redundant slink:VkSubpassDependency and
- slink:VkSubpassDependency2KHR valid usage statements
- (public pull request 995).
- * Clarify the <<vkGetInstanceProcAddr behavior>> and <<vkGetDeviceProcAddr
- behavior>> tables (public pull request 1004).
- * Fix use of nonexistent
- slink:VkSamplerYcbcrConversionImageFormatProperties::pname:maxCombinedImageSamplerDescriptorCount
- (public pull request 1010).
- * Use compatible pathlib for python2 (public pull request 1012).
-
-Internal Issues:
-
- * Mark the <<VK_KHR_vulkan_memory_model>> extension as no longer
- provisional in `vk.xml` (internal issue 1369).
- * Clarify that use-defined code:Input and code:Output variables cannot be
- code:Boolean in the <<interfaces-iointerfaces-user, User-defined
- Variable Interface>> section (internal issue 1663).
- * Fix naming inconsistencies in
- slink:VkPhysicalDevicePerformanceQueryFeaturesKHR,
- slink:VkPhysicalDevicePerformanceQueryPropertiesKHR,
- slink:VkQueryPoolPerformanceCreateInfoKHR, and associated enumerants
- (internal issue 1746).
- * Use ACM reference style for normative references (internal merge request
- 3256).
- * Explicitly list the features changed in Vulkan 1.1 in the
- <<features-requirements, Feature Requirements>> section and the
- <<versions, Core Revisions (Informative)>> appendix (internal merge
- request 3274).
- * Add the slink:VkPhysicalDeviceSubgroupSizeControlFeaturesEXT structure
- to the <<VK_EXT_subgroup_size_control>> extension, which was
- accidentally omitted in the initial release of the extension (internal
- merge request 3287).
- * Add missing slink:VkImageUsageFlag description for
- ename:VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT (internal merge
- request 3292).
- * Add valid usage statements to slink:VkAccelerationStructureInfoNV and
- flink:vkGetAccelerationStructureHandleNV to clarify usage of
- acceleration structure handle and geometries (internal merge request
- 3292).
-
-New Extensions:
-
- * `<<VK_AMD_shader_core_properties2>>`
- * `<<VK_AMD_pipeline_compiler_control>>`
-
------------------------------------------------------
-
-Change log for July 28, 2019 Vulkan 1.1.117 spec update:
-
- * Update release number to 117.
-
-Github Issues:
-
- * Add ename:VK_STENCIL_FACE_FRONT_AND_BACK for naming consistency, and
- alias the old ename:VK_STENCIL_FRONT_AND_BACK for backwards
- compatibility (public issue 991).
- * Fix minor issues with valid usage statements for
- flink:vkCreateFramebuffer, slink:VkFramebufferCreateInfo, and
- slink:VkRenderPassBeginInfo when the `<<VK_KHR_imageless_framebuffer>>`
- extension is enabled (public issue 998).
- * Clarify the subpass dependency requirement in the
- <<renderpass-layout-transitions>> section to eliminate the need for a
- subpass dependency for either the same or different layouts as long as
- they're both read-only (relates to
- https://github.com/KhronosGroup/Vulkan-ValidationLayers/issues/948).
-
-Internal Issues:
-
- * Document that <<extendingvulkan-compatibility-promotion, backwards
- compatibility aliases are not promoted>> as part of promoting an
- extension (internal issue 1677).
- * Update VK_ANDROID_native_buffer extension to spec version 8 (internal
- issue 1753).
- * Add missing section to the <<VK_KHR_shader_controls_v4_incompatibility,
- VK_KHR_shader_float_controls>> extension appendix describing
- the reason for the breaking API change in version 4 of the extension,
- and correct the version to 4 in `vk.xml` (internal merge request
- 3275).
- * Add valid usage statements to slink:VkAccelerationStructureInfoNV
- requiring the ename:VK_BUFFER_USAGE_RAY_TRACING_BIT_NV usage flag for
- buffers used in acceleration structure building.
-
-New Extensions:
-
- * `<<VK_EXT_line_rasterization>>`
- * `<<VK_EXT_texture_compression_astc_hdr>>`
- * `<<VK_EXT_index_type_uint8>>`
-
------------------------------------------------------
-
-Change log for July 20, 2019 Vulkan 1.1.116 spec update:
-
- * Happy 50th Lunar Landing Day!
- * Update release number to 116.
-
-Internal Issues:
-
- * Clarify that flink:vkCmdBeginQuery is the same as
- flink:vkCmdBeginQueryIndexEXT with index = 0, and that
- flink:vkCmdEndQuery is the same as flink:vkCmdEndQueryIndexEXT with
- index = 0 (internal issue 1735).
- * Clarify that when copying the depth aspect between buffers and images
- via slink:VkBufferImage Copy, the depth values in buffer memory must be
- in range if the `<<VK_EXT_depth_range_unrestricted>>` extension is not
- enabled (internal issue 1737).
- * Minor language tweaks in the <<spirvenv-module-validation, Validation
- Rules within a Module>> section (internal issue 1744).
- * Change the slink:VkPhysicalDeviceFloatControlsPropertiesKHR structure in
- the `<<VK_KHR_shader_controls>>` extension. This is a rare case of
- breaking the interface of an existing extension to acknowledge the
- reality of divergent vendor implementations that could not be described
- properly otherwise, and the breaking change is considered acceptable
- given the expected low use of the extension (internal issue 1734).
- Specific changes:
- ** Added the slink:VkShaderFloatControlsIndependenceKHR enumeration to
- describe the three possible behaviors.
- ** Renamed pname:separateDenormSettings to
- pname:denormBehaviorIndependence.
- ** Renamed pname:separateRoundingModeSettings to
- pname:roundingModeIndependence
- * Add a missing valid usage statement for
- slink:VkQueryPoolCreateInfo::pname:queryCount (internal issue 1742).
- * Update the `<<VK_NV_shading_rate_image>>` appendix to list all
- interfaces defined by the extension.
- * Add a valid usage statement to
- slink:VkWriteDescriptorSetAccelerationStructureNV to clarify that
- acceleration structure descriptors must be top level structures.
-
-New Extensions:
-
- * `<<VK_EXT_subgroup_size_control>>`
-
------------------------------------------------------
-
-Change log for July 14, 2019 Vulkan 1.1.115 spec update:
-
- * Update release number to 115.
-
-GitHub issues:
-
- * Add valid usage statements to slink:VkWriteDescriptorSet and
- slink:VkCopyDescriptorSet specifying that updating immutable descriptors
- with ename:VK_DESCRIPTOR_TYPE_SAMPLER is invalid, and that updating
- ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER ignores the update's
- samplers (public issue 985).
- * Document that the `manhtmlpages` target requires building with all
- extensions enabled, in `BUILD.adoc` (public issue 992).
- * Fix reference to the wrong subpass in valid usage statement for
- slink:VkRenderPassCreateInfo (public pull request 994).
-
-Internal Issues:
-
- * Rename slink:VkPhysicalDeviceShaderIntegerFunctions2INTEL and
- ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS2_FEATURES_INTEL
- for consistency with global naming conventions, and to help code
- generation in other projects (internal issue 1685).
- * Update valid usage statements for image code:Offset / code:ConstOffset
- usage in the <<textures-gather, Texel Gathering>> and
- <<spirvenv-module-validation, Validation Rules within a Module>>
- sections, and for the <<limits-minTexelGatherOffset>> and
- <<limits-maxTexelGatherOffset>> limits (internal issue 1723).
- * Require code:code:OpGroupNonUniformBroadcast to take a constant `Id`
- operand in the <<spirvenv-module-validation, Validation Rules within a
- Module>> sections (internal issue 1726).
- * Note that the swapchain specified in slink:VkImageSwapchainCreateInfoKHR
- when creating an image must match the one specified in
- slink:VkBindImageMemorySwapchainInfoKHR when binding memory to the image
- (internal issue 1729).
- * Remove stext:KHR suffix from some structure cross-references that were
- promoted to Vulkan 1.1 (internal issue 1730).
- * Fix structure name in `structextends` attribute for
- slink:VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT in `vk.xml`
- (internal issue 1740).
- * Fix an error in the code:ClipColor() pseudocode for
- <<VK_EXT_blend_operation_advanced>> (internal issue 1741).
- * Add a row for
- ename:VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV to the
- description of elink:VkQueryType, and make a few related minor text
- cleanups.
- * Rename slink:VkPhysicalDeviceFloat16Int8FeaturesKHR to
- slink:VkPhysicalDeviceShaderFloat16Int8FeaturesKHR for consistency,
- retaining aliases of the old structure name and structure type enum for
- backwards compatibility.
-
------------------------------------------------------
-
-Change log for July 7, 2019 Vulkan 1.1.114 spec update:
-
- * Update release number to 114.
-
-Internal Issues:
-
- * Fix extension appendix for `<<VK_INTEL_performance_query>>` to remove
- duplicate citation of ename:VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL
- (internal merge request 3234).
-
-New Extensions:
-
- * `<<VK_KHR_imageless_framebuffer>>`
-
------------------------------------------------------
-
-Change log for June 30, 2019 Vulkan 1.1.113 spec update:
-
- * Update release number to 113.
-
-Github Issues:
-
- * Fix typo in `<<VK_EXT_global_priority>>` appendix (public issue 979).
-
-Internal Issues:
-
- * Expand the explanation of
- slink:VkSamplerYcbcrConversionImageFormatPropertiesKHR::pname:combinedImageSamplerDescriptorCount,
- and explain how it interacts with slink:VkWriteDescriptorSet,
- slink:VkDescriptorSetLayoutBinding::pname:descriptorCount, and
- slink:VkDescriptorPoolSize::pname:descriptorCount (internal issue 1643).
- * Clarify restrictions on components for code:OpImageGather in the
- <<spirvenv-module-validation, Validation Rules within a Module>> section
- (internal issue 1707).
- * Clarify the descriptions of <<limits-computeUnitsPerShaderArray,
- pname:computeUnitsPerShaderArray>> and <<limits-wavefrontSize,
- pname:wavefrontSize>> fields in
- slink:VkPhysicalDeviceShaderCorePropertiesAMD.
-
-New Extensions:
-
- * `<<VK_EXT_texel_buffer_alignment>>`
- * `<<VK_EXT_shader_demote_to_helper_invocation>>`
-
------------------------------------------------------
-
-Change log for June 23, 2019 Vulkan 1.1.112 spec update:
-
- * Update release number to 112.
-
-Github Issues:
-
- * Clarify that it is possible to use the <<memory-host, Host Memory>>
- pname:pfnReallocation callback to free memory in any case that
- pname:pfnFree could be used (public issue 973).
-
-Internal Issues:
-
- * Clarify range and precision of code:OpImageQueryLod in the discussion of
- scale factor and level-of-detail operation in the
- <<textures-normalized-operations, Normalized Texel Coordinate
- Operations>> section (internal issues 926, 1719).
- * Fix framebuffer layer valid usage statements for
- slink:VkRenderPassCreateInfo, slink:VkRenderPassCreateInfo2KHR, and
- slink:VkFramebufferCreateInfo (internal issue 1670).
- * Refactor common valid usage statements for flink:vkCmdBeginQuery and
- flink:vkCmdBeginQueryIndexedEXT (internal issue 1682).
- * Prohibit the ename:ename:VK_SAMPLER_YCBCR_RANGE_ITU_NARROW range from
- being used in slink:VkSamplerYcbcrConversionCreateInfo for formats with
- a bit depth less than 8 (internal issue 1688).
- * Add missing interactions with `<<VK_EXT_host_query_reset_usage>>` in the
- <<queries, Queries>> chapter (internal issue 1692).
- * Clean up error output from the `optimize-pdf` build script on success.
- * Fix an internal link to the <<spirvenv-correctly-rounded, Correctly
- Rounded>> section in the SPIR-V appendix by adding and referring to that
- anchor.
- * Fix extension version numbers in `vk.xml` for `VK_EXT_filter_cubic` and
- `VK_IMG_filter_cubic`.
- * Specify division precision for negative numbers, and remove statement
- that trigonometric functions have undefined precision, in the
- <<spirvenv-precision-operation, Precision and Operation of SPIR-V
- Instructions>> appendix.
-
------------------------------------------------------
-
-Change log for June 10, 2019 Vulkan 1.1.111 spec update:
-
- * Update release number to 111.
-
-Github Issues:
-
- * Clean up flink:vkGetPhysicalDeviceSurfaceFormatsKHR and
- flink:vkGetPhysicalDeviceSurfaceFormats2KHR to drop the
- ename:VK_FORMAT_UNDEFINED case, require callers pass a supported
- surface, and rearrange some validation-related language (public issue
- 207).
- * Allow dynamic and nonuniform indexing of acceleration structures in the
- <<interfaces-resources-descset, Descriptor Set Interface>> section
- (public KhronosGroup/glslang issue 1766).
-
-Internal Issues:
-
- * Clarify when images require the use of YCbCr samplers for
- slink:VkWriteDescriptorSet and slink:VkImageViewCreateInfo (internal
- issue 1639).
- * Remove the "`block`" language around <<features-robustBufferAccess,
- vectorizing and robust buffer access>> (internal issue 1642).
- * Allow code:OpTypeImageFormat == code:Unknown for input attachments in
- the <<interfaces-resources-descset, Descriptor Set Interface>> section
- (internal issue 1645).
- * Fix asciidoctor conditionals around
- ename:VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT in the
- <<fundamentals-errorcodes>> section (internal issue 1679).
- * Remove error codes from `vk.xml` for
- flink:vkUninitializePerformanceApiINTEL, which has a `void` return type
- (internal issue 1704).
- * Various subgroup-related fixes in the <<spirvenv-capabilities,
- Capabilities>>, <<shaders-subgroup-arithmetic, Arithmetic Subgroup
- Operations>>, <<shaders-subgroup-clustered, Clustered Subgroup
- Operations>>, and <<shaders-subgroup-partitioned, Partitioned Subgroup
- Operations>> sections (internal merge request 3164).
- * Fix asciidoctor markup affecting math rendering in the <<Precision of
- core SPIR-V Instructions>> table (internal merge request 3166).
- * Fix incorrect reference to flink:vkGetPhysicalDeviceFeatures2KHR in the
- description of slink:VkPhysicalDeviceASTCDecodeFeaturesEXT (internal
- merge request 3169).
- * Fix a non-sentence in the introduction to the <<textures, Image
- Operations Overview>> section (internal merge request 3184).
- * Minor markup, grammar, and typo fixes for the
- `<<NV_shader_sm_builtins>>` extension spec language (internal merge
- request 3189).
- * Clarify that 1D and 1D array format support is optional for cubic
- filters, immediately following the <<formats-mandatory-features-astc,
- Mandatory ASTC LDR format support>> table (internal merge request 3194).
-
------------------------------------------------------
-
-Change log for June 2, 2019 Vulkan 1.1.110 spec update:
-
- * Update release number to 110.
-
-Github Issues:
-
- * Fix typo (public pull request 972).
- * Rename Pastel driver ID to SwiftShader (public pull request 974).
-
-New Extensions:
-
- * `<<VK_EXT_fragment_shader_interlock>>`
- * `<<VK_NV_shader_sm_builtins>>`
-
------------------------------------------------------
-
-Change log for May 24, 2019 Vulkan 1.1.109 spec update:
-
- * Update release number to 109.
-
-Github Issues:
-
- * Require matching for physical devices to be in a device group in the
- <<devsandqueues-devices, Devices>> section (public issue 695).
- * Fix typo in an equation in the <<fragmentdensitymap-fetch-density-value,
- Fetch Density Value>> section (public issue 954).
- * Fix styleguide links (public pull request 965).
-
-Internal Issues:
-
- * Allow <<renderpass-compatibility, compatibility of single-subpass
- renderpasses>> with different resolve attachments (internal issue 1464).
- * Add some missing empty flags types to API spec so custom refpage
- generation doesn't break (internal issue 1607).
- * Add a "`SPIR-V Sampled Type`" column to the <<formats-numericformat,
- Interpretation of Numeric Formats>> table, and clarify the requirement
- that the code:OpTypeImage sampled type match the bound image's numeric
- format for slink:VkClearColorValue and in the
- <<interfaces-resources-descset, Descriptor Set Interface>> section
- (internal issue 1646).
- * Fix a typo in the <<tessellation-quad-tessellation, Quad Tessellation>>
- section which should refer to rectangles, not triangles (internal issue
- 1667).
- * Clarify the definition of time domains in elink:VkTimeDomainEXT
- (internal merge request 3110).
- * Add R10X6 and R12X4 formats to the <<formats-mandatory-features-10bit>>
- table (internal merge request 3137).
- * Don't require extern sync on wait/signal semaphores in `vk.xml` for
- flink:vkQueueSubmit and flink:vkQueueBindSparse (internal merge request
- 3116).
- * Improve phrasing of compute and mesh shader size related to
- code:LocalSize and code:WorkgroupSize in
- slink:VkPhysicalDeviceMeshShaderPropertiesNV and
- slink:VkPhysicalDeviceMaintenance3Properties (internal merge request
- 3156).
- * Make the flink:vkCmdBindShadingRateImageNV pname:imageView parameter
- optional in `vk.xml` (internal merge request 3157).
-
-New Extensions:
-
- * `<<VK_INTEL_performance_query>>`
- * `<<VK_INTEL_shader_integer_functions2>>`
-
------------------------------------------------------
-
-Change log for May 13, 2019 Vulkan 1.1.108 spec update:
-
- * Update release number to 108.
-
-Internal Issues:
-
- * Clarify that only external resources can be bound to external memory in
- valid usage statements for flink:vkBindBufferMemory,
- flink:vkBindImageMemory, slink:VkSparseMemoryBind, and
- slink:VkSparseImageMemoryBind (internal issue 1496).
- * Move all `vk.xml`requirements for
- flink:vkGetDeviceGroupSurfacePresentModes2EXT into
- `<<VK_EXT_full_screen_exclusive>>` (internal issue 1622).
- * Add some missing valid usage statements for
- flink:vkCmdEndQueryIndexedEXT (internal issue 1638).
- * Specify rules for defining "`New Flags and Bitmask Types`" in that
- section of the style guide (internal issue 1649).
- * Add a comment to the `vk.xml` extension block for
- `VK_ANDROID_native_buffer` explaining why the extension is tagged
- `"disabled"` (internal issue 1657).
- * Fix typos in the description of slink:VkImageViewCreateInfo (internal
- issue 1661).
- * Modify valid usage statements for slink:VkImageViewCreateInfo to fix the
- description about the restriction for pname:baseArrayLayer and
- pname:layerCount from pname:extent.depth to the depth of mipmap level
- while creating a 2D array image view on a 3D image.
- * Forbid structures that contain opaque types (images or samplers) in the
- SPIR-V <<spirvenv-module-validation, Validation Rules within a Module>>
- section.
- * Minor editorial changes for the `VK_EXT_swapchain_colorspace` extension
- in the description of slink:VkColorSpace KHR and `vk.xml`, including:
- ** Consistently specify which function (OETF or Inverse-EOTF) is being
- defined;
- ** Remove the Display P3 EOTF, since no other EOTFs are defined;
- ** Include luminance range for the HLG OETF;
- ** Remove a duplicated paragraph; and,
- ** Rename ename:VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT, leaving the old
- ename:VK_COLOR_SPACE_DCI_P3_LINEAR_EXT token as an alias.
-
-New Extensions:
-
- * `<<VK_NV_framebuffer_mixed_samples_coverage_reduction_mode>>`
- * `<<VK_KHR_uniform_buffer_standard_layout>>`
-
------------------------------------------------------
-
-Change log for April 16, 2019 Vulkan 1.1.107 spec update:
-
- * Update release number to 107.
-
-Public Issues:
-
- * Fix revision date for the `<<VK_AMD_gpu_shader_half_float>>` appendix
- (public issue 617).
- * Make <<synchronization-pipeline-barriers-subpass-self-dependencies,
- subpass self-dependencies>> less restrictive (public issue 777).
- * Fix the `<<VK_EXT_full_screen_exclusive>>` dependency on
- `<<VK_KHR_win32_surface>>` in `vk.xml` (public pull request 849).
- * Remove single-page (`apispec.html`) refpage sub-targets from the
- Makefile `allman` target and the build instructions. The target is still
- present in the Makefile, but we have not been actively maintaining the
- single-page document and do not promise it will work. The full
- Specification and the individual API reference pages are what we support
- and publish at present (public issue 949).
-
-Internal Issues:
-
- * De-duplicate common valid usage statements shared by multiple commands
- or structures by using asciidoctor includes and dynamically assigning
- part of the valid usage ID based on which command or structure they're
- being applied to (internal issue 779).
- * Add reference pages for constructs not part of the formal API, such as
- platform calling convention macros, and script changes supporting them
- This required suppressing some check_spec_links warning classes in order
- to pass CI, until a more sophisticated fix can be done (internal issue
- 888).
- * Change math notation for the elink:VkPrimitiveTopology descriptions to
- use short forms `v` and `p` instead of `vertex` and `primitive`,
- increasing legibility (internal issue 1611).
- * Rewrite generated file includes relative to a globally specified path,
- fixing some issues with refpage generation (internal issue 1630).
- * Update contributor list for `<<VK_EXT_calibrated_timestamps>>`.
- * Fix use of pathlin in `scripts/generator.py` so the script will work on
- Windows under Python 3.5 (internal merge request 3107).
- * Add missing conditionals around the
- <<descriptorsets-accelerationstructure, Acceleration Structure>>
- section (internal merge request 3108).
- * More script synchronization with OpenXR spec repository (internal merge
- request 3109).
- * Mark the `<<VK_AMD_gpu_shader_half_float>>` and
- `<<VK_AMD_gpu_shader_int16>>` extensions as deprecated in `vk.xml` and
- the corresponding extension appendices (internal merge request 3112).
-
-New Extensions:
-
- * `<<VK_EXT_headless_surface>>`
-
------------------------------------------------------
-
-Change log for April 7, 2019 Vulkan 1.1.106 spec update:
-
- * Update release number to 106.
-
-Public Issues:
-
- * Add searchbox and generate search index for the chunked HTML target.
- Note that doing this requires several new toolchain components to build
- the `chunked` target (public issue 578 / internal issue 1352).
- * Remove descriptions of flink:vkCreateSampler sampler constraints which
- were repeated in the valid usage statements (public pull request 648).
- * Fix sense of conditional around a valid usage statement in the
- <<copies>> chapter (public issue 942).
-
-Internal Issues:
-
- * Add missing pname:extent.width and pname:extent.height valid usage
- statements for flink:vkCmdClearAttachments (internal issue 1583).
- * Fix some inconsistencies in structures and corresponding pname:sType
- enumerant names by renaming
- sname:VkPhysicalDeviceShaderDrawParameterFeatures ->
- slink:slink:VkPhysicalDeviceShaderDrawParametersFeatures;
- sname:VkPhysicalDeviceVariablePointerFeatures ->
- slink:VkPhysicalDeviceVariablePointerFeatures;
- sname:VkPhysicalDeviceVariablePointerFeaturesKHR ->
- slink:VkPhysicalDeviceVariablePointerFeaturesKHR;
- sname:VkPhysicalDeviceBufferAddressFeaturesEXT ->
- slink:VkPhysicalDeviceBufferDeviceAddressFeaturesEXT;
- etext:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES
- ->
- ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES;
- etext:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES ->
- ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES;
- etext:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR ->
- ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR;
- and etext:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT
- ->
- ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT.
- The old names are still available as aliases for backwards
- compatibility. This change required introducing valid XML markup which
- externally written XML processing scripts may need to be modified to
- accomodate, to support multiple aliases of a single command or token
- name (internal issue 1592).
- * Add slink:VkDevice as the first parameter to flink:vkSetLocalDimmingAMD
- (internal issue 1618).
- * Improve CI header compilation tests to test all Vulkan platform
- includes, using fake platform headers where needed, and change the
- `allchecks` Makefile target to use the more comprehensive
- `check_spec_links.py` script instead of the retired `checkinc` and
- `checklinks` targets.
- * Move descriptions of the ASTC compressed texture decode mode from the
- <<appendix-compressedtex-astc,appendix>> to the recently updated
- external Khronos Data Format Specification.
- * Fix minor markup and spelling issues in the `VK_NV_ray_tracing`
- extension.
-
------------------------------------------------------
-
-Change log for March 19, 2019 Vulkan 1.1.105 spec update (GDC edition):
-
- * Update release number to 105.
-
-Public Issues:
-
- * Fix contractions and other markup issues (public pull request 935).
-
-New Extensions:
-
- * Google Games Platform
- ** New `ggp` platform and associated header file `vulkan_ggp.h`
- ** `VK_GGP_frame_token`
- ** `VK_GGP_stream_descriptor_surface`
-
------------------------------------------------------
-
-Change log for March 18, 2019 Vulkan 1.1.104 spec update:
-
- * Update release number to 104.
-
-Public Issues:
-
- * Remove the incorrect line from "`Initial`" to "`Invalid`" state in the
- <<commandbuffer-lifecycle-diagram, Lifecycle of a command buffer>>
- diagram (public issue 881).
- * Add Fuchsia platform to <<boilerplate-wsi-header-table, Window System
- Extensions and Headers>> table (public pull request 933).
- * Change the type of
- slink:VkBufferDeviceAddressCreateInfoEXT::pname:deviceAddress from
- basetype:VkDeviceSize to basetype:VkDeviceAddress. These are both
- typedefs of code:uint64_t, so it is an ABI-compatible change (public
- issue 934).
-
-Internal Issues:
-
- * Remove generated header files and update the CI tests to build a copy of
- the headers for use by the hpp-generate / hpp-compile CI stages. Targets
- to generate the headers will not be removed, but keeping these generated
- files in the repository increased the frequency of conflicts between
- branches when merging to master (internal issue 745).
- * Reword "`undefined: behavior if *action*" to "`must: not do *action*`"
- in the places the old terminology was used, and add a new
- <<writing-undefined, Describing Undefined Behavior>> section of the
- style guide to explain how to write such language in the future
- (internal issue 1579).
- * Move almost all Python scripts into the toplevel `scripts/` directory.
- Apply extensive internal edits to clean up and simplify the scripts, and
- try to follow PEP8 guidelines. Generalize the scripts with the use of a
- Conventions object controlling many aspects of output generation, to
- enable their use in other Khronos projects with similar requirements.
- Autogenerate extension interface refpages (these are experimental and
- may be retired going forward).
-
-New Extensions:
-
- * `VK_AMD_display_native_hdr`
- * `VK_EXT_full_screen_exclusive` (internal issue 1439)
- * `VK_EXT_host_query_reset`
- * `VK_EXT_pipeline_creation_feedback` (internal issue 1560)
- * `VK_KHR_surface_protected_capabilities` (internal issue 1520)
-
------------------------------------------------------
-
-Change log for March 11, 2019 Vulkan 1.1.103 spec update:
-
- * Update release number to 103.
-
-Public Issues:
-
- * Remove (unnecessary) scoped modification order case from the memory
- model <<memory-model-location-ordered, location-ordered>> definition
- (public pull request 924).
- * Add an <<memory-model-acyclicity, acyclicity>> axiom to the memory model
- (public pull request 927).
-
-Internal Issues:
-
- * Fix reversed logic of slink:VkFormatProperties discussion of multi-plane
- formats and ename:VK_FORMAT_FEATURE_DISJOINT_BIT (internal issue 1493).
- * Clarify how slink:VkImageStencilUsageCreateInfoEXT works, including new
- valid usage statements for flink:vkCmdClearDepthStencilImage, and the
- <<copies, Common Operation>> section of the Copy Commands chapter
- (internal issue 1565).
- * Update <<spirvenv-precision-operation, Precision and Operation of SPIR-V
- Instructions>> section to require that denorms be preserved by several
- instructions that don't perform any mathematical operations (internal
- issue 1584).
- * Remove duplicate valid usage statement from flink:vkAcquireNextImageKHR
- (internal merge request 3062).
-
------------------------------------------------------
-
-Change log for March 3, 2019 Vulkan 1.1.102 spec update:
-
- * Update release number to 102.
-
-Public Issues:
-
- * Simplify flink:vkGetImageMemoryRequirements constraint for
- ename:VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT (public pull request 817).
- * Fix typo in markup of the <<textures-texel-coordinate-systems-diagrams,
- Texel Coordinate Systems, Corner Sampling>> image that was generating
- complaints from chunked HTML output generation (public pull request
- 928).
-
-Internal Issues:
-
- * Split the old <<features, Features>> chapter into four chapters:
- <<features, Features>>, <<limits, Limits>>, <<formats, Formats>>, and
- <<capabilities, Capabilities>>, with minor edits to the introductory
- paragraph of each chapter. Anchor names in these chapters were changed,
- with corresponding effects to xrefs to these anchors elsewhere in spec
- markup . The purpose is to make the chunked HTML spec output load faster
- on what was previously a single, gigantic chapter (internal issue 1554).
- * Add ename:VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV, to the supported
- pipeline stages for ename:VK_ACCESS_UNIFORM_READ,
- ename:VK_ACCESS_SHADER_READ, and ename:VK_ACCESS_SHADER_WRITE in the
- <<synchronization-access-types-supported>> table.
- * Correct legal name of Google, LLC in vk.xml <tags> section and a
- copyright statement.
- * Clarify that Vulkan treats the Android
- code:AHARDWAREBUFFER_FORMAT_R8G8B8X8_UNORM format as RGBA, and the
- application is responsible for forcing the X/A component to be read as
- 1.0, in the <<memory-external-android-hardware-buffer-formats>> table.
- * Clarify the vertex order of various primitive topologies, and define the
- order of transform feedback vertex capture based on that. This involves
- a lot of refactoring and cleanup in the <<drawing-primitive-topologies,
- Primitive Topologies>>, <<geometry-input, Geometry Shader Input
- Primitives>> sections, and <<vertexpostproc-transform-feedback Transform
- Feedback>> sections, and numerous places in the <<tessellation>>
- chapter,
-
-New Extensions:
-
- * `VK_EXT_metal_surface`
- * `VK_EXT_ycbcr_image_arrays` (internal issue 1361).
- * `VK_NVX_image_view_handle`
-
------------------------------------------------------
-
-Change log for February 17, 2019 Vulkan 1.1.101 spec update:
-
- * Update release number to 101.
-
-Public Issues:
-
- * Make clear that memory types for imported host memory must be host
- visible in slink:VkMemoryHostPointerPropertiesEXT.txt (public issue
- 897).
- * Make <<interfaces-resources-layout, WARNING block>> into a NOTE block,
- per the styleguide (public pull request 916).
-
-Internal Issues:
-
- * Make <<textures-output-format-conversion, computation of derivatives in
- non-uniform flow control>> have undefined behavior (internal issue
- 1367).
- * Make behavior, not just values, undefined for
- <<textures-layout-validation, reads from inconsistent YCbCr layouts>>
- (internal issue 1366).
- * Consolidate version and extension behavior documentation in the
- <<extended-functionality, Extended Functionality>> appendix, While a
- great deal of text was moved from other parts of the Specification into
- the appendix, this just serves to simplify and make consistent
- discussions of versions and extensions (internal issue 1473).
- * Add limits for slink:VkPhysicalDeviceRayTracingPropertiesNV in the
- <<features-limits-types, Required Limit Types>> and
- <<features-limits-required, Required Limits>> tables (internal issue
- 1511).
- * Disallow <<memory-protected-memory, indirect calls within protected
- command buffers>> by adding valid usage statements for the related
- indirect dispatch and draw commands (internal issue 1513).
- * Add valid usage stataements to slink:VkGraphicsPipelineCreateInfo,
- slink:VkSubpassDescription, slink:VkSubpassDescription2KHR,
- slink:VkSubpassDescriptionDepthStencilResolveKHR, and
- slink:VkImageViewCreateInfo preventing the creation of a renderpass with
- attachments in formats that are not supported for rendering (internal
- issue 1552).
- * Qualify valid usage statements for
- slink:VkAttachmentReference::pname:layout parameter so restrictions only
- apply if an attachment is ename:VK_ATTACHMENT_UNUSED (internal issue
- 1561).
- * Add valid usage statement for flink:vkCmdDrawIndirectByteCountEXT
- restricting pname:vertexStride to be positive (internal issue 1566).
- * Make the `VK_EXT_sample_locations` extension depend on
- `VK_KHR_get_physical_device_properties2` in `vk.xml`.
- * Rearrange and simplify the <<interfaces-resources-layout, block layout
- rules>>.
-
-New Extensions:
-
- * `VK_NV_cooperative_matrix`
- * `VK_EXT_depth_clip_enable` (internal issue 1485).
-
------------------------------------------------------
-
-Change log for February 10, 2019 Vulkan 1.1.100 spec update:
-
- * Update release number to 100.
-
-Public Issues:
-
- * Clarify that scoped modification order only relates to
- <<memory-model-atomic-operation, atomic writes>> (public pull request
- 906).
- * Remove `readme.txt` reference from `xml/README.adoc` (public pull
- request 907).
- * Add missing slink:VkShaderResourceUsageAMD to the <<VK_AMD_shader_info>>
- appendix (public pull request 908).
- * Fix markup for <<VK_EXT_filter_cubic>> appendix (public pull request
- 911).
- * Fix typo "`attachment`" (public pull request 914).
- * Alias the enums for `VK_IMG_filter_cubic` properly to the corresponding
- `VK_EXT_filter_cubic` enums, so they appear in the corresponding
- enumerated types, instead of as #defines (Vulkan-Headers issue 40).
-
-Internal Issues:
-
- * Remove nested conditionals in valid usage statements for
- slink:VkFramebufferCreateInfo and flink:vkCmdPipelineBarrier by
- duplicating statements along ifdef/ifndef paths for
- VK_KHR_depth_stencil_resolve (internal issue 1527).
- * Clarify allowed values of <<spirv-precision-operation, SPIR-V operations
- near infinity>>. For very large results of operations the allowed range
- of return values as defined in the spec didn't include the largest
- finite number. In some rounding modes (eg. RTZ) the largest finite
- number is the correctly rounded result, so it should be allowed.
- * Require descriptor types to match in slink:VkCopyDescriptorSet.
-
------------------------------------------------------
-
-Change log for February 3, 2019 Vulkan 1.1.99 spec update:
-
- * Update release number to 99.
-
-Public Issues:
-
- * Add missing pname:pMemoryHostPointerProperties description to
- flink:vkGetMemoryHostPointerPropertiesEXT.txt (public pull request 896).
- * Minor markup fixes (public pull request 900).
- * Minor update to `khronos.css` and markup fixes (originally proposed in
- public pull request 901, but done via an internal MR).
-
-Internal Issues:
-
- * Document restrictions on image queries for {YCbCr} formats in the
- <<formats-requiring-sampler-ycbcr-conversion>> table as well as
- for slink:sname:VkImageFormatProperties and slink:VkImageCreateInfo
- (internal issue 1361).
- * Correct type of the code:FragSizeEXT built-in in the
- <<interfaces-builtin-variables, Built-In Variables>> section (internal
- issue 1526).
- * Clean up math in the <<textures, Image Operations>> chapter by
- refactoring, using better naming conventions, updating diagrams to use
- the correct orientation, etc. (internal merge request 2968).
- * Fix minor typos for slink:VkImageCreateInfo and
- slink:VkImageStencilUsageCreateInfoEXT.
- * Add missing documentation for tlink:VkResolveModeFlagsKHR.
- * Fix extension dependency of pname:scalarBlockLayout in the
- <<features-features-requirements, Feature Requirements>> section.
- * Fix indexing math for shader binding table calculations in the
- <<shader-binding-table-indexing-rules, Indexing Rules>> section, and use
- spelling "`any-hit`" consistently.
- * Reconcile valid usage statement and text for sampled image layouts in
- slink:VkWriteDescriptorSet
- (https://github.com/KhronosGroup/Vulkan-ValidationLayers/issues/551).
- * Make SPIR-V code:OpConvertUToPtr and code:OpConvertPtrToU operations
- require a 64-bit integer for physical storage buffer pointers in the
- <<spirvenv-module-validation, Validation Rules within a Module>>
- section.
- * Update to KaTeX 10.0.
-
-New Extensions:
-
- * `VK_EXT_filter_cubic`
- * `VK_NV_dedicated_allocation_image_aliasing`
-
------------------------------------------------------
-
-Change log for January 13, 2019 Vulkan 1.1.98 spec update:
-
- * Update release number to 98.
-
-Public Issues:
-
- * Fix missing markup in flink:vkDestroyPipelineLayout valid usage
- statement (pull request 882).
- * Add missing contributors for `<<VK_EXT_buffer_device_address>>` (public
- pull request 891).
-
-Internal Issues:
-
- * Detect nested bullet points in valid usage blocks and warn about them
- during VUID assignment (internal issue 1382).
- * Update the style guide to document the process for reserving new bits in
- bitmask types (internal issue 1411).
- * Clarify for slink:VkApplicationInfo::pname:apiVersion and in the
- <<fundamentals-validusage-versions, Valid Usage for Newer Core
- Versions>> section when it is valid for an application to use a certain
- version of Vulkan API functionality (for an instance and for a
- device/physical device); and when the validation layers must generate an
- error (internal issue 1412).
- * Add optional <<memory-model-availability-visibility, transitive
- availability/visibility operations to the memory model, including a new
- pname:vulkanMemoryModelAvailabilityVisibilityChains feature for
- slink:VkPhysicalDeviceVulkanMemoryModelFeaturesKHR (internal issue
- 1460).
- * Add the code:StorageBuffer storage class to those in the
- <<interfaces-resources-descset, Descriptor Set Interface>> (internal
- issue 1480).
- * Add missing `returnedonly` tags for a number of returned extension
- structures that can be passed in pname:pNext chains (internal issue
- 1515).
- * Clean up and rearrange some spec language for
- slink:VkRenderPassCreateInfo and slink:VkAttachmentReference.txt
- (internal issue 1522).
- * Correctly round the code:OpVectorTimesScalar and
- code:OpMatrixTimesScalar SPIR-V operations in the <<Precision of core
- SPIR-V Instructions>> table (internal merge request 2996).
- * Work around cases in flink:vkCmdBeginTransformFeedbackEXT,
- flink:vkCmdEndTransformFeedbackEXT, and
- slink:VkPipelineCoverageModulationStateCreateInfoNV where an array
- parameter is `optional` but the length is not in `vk.xml`. This is an
- interim fix using `noautovalidity` + handcoded VU replacing those that
- should be autogenerated (internal issue 2944 and
- https://github.com/KhronosGroup/Vulkan-ValidationLayers/issues/480).
- * Remove redundant capability validation of the code:float16 and code:int8
- SPIR-V capabilities from the <<spirvenv-capabilities, Capabilities>>
- section, since they are already covered in the preceding table.
- * Update check_spec_links script, including validation for reference page
- open blocks. Fix errors identified by the script.
-
------------------------------------------------------
-
-Change log for January 05, 2019 Vulkan 1.1.97 spec update:
-
- * Update release number to 97.
-
-Public Issues:
-
- * Add a special case to the <<renderpass-compatibility, Render Pass
- Compatibility>> rules allowing single-subpass renderpasses to be
- compatible even if they have different resolve attachment references
- (public issue 835).
- * Fix the miss shader binding table record address rule in the
- <<shader-binding-table-indexing-rules, Miss Shaders>> section to index
- by code:missIndex, not code:sbtOffset (public issue 875).
-
-Internal Issues:
-
- * Add a missing anchor to the elink:VkSamplerCreateFlagBits language
- (internal issue 1483).
- * Add missing implicit valid usage include for slink:VkHdrMetadataEXT and
- corresponding `noautovalidity` attributes in `vk.xml` for the
- externally-defined metadata properties (internal issue 1514).
- * Remove restrictions on the `mask` parameter of SPIR-V's
- code:OpGroupNonUniformXor in the <<spirvenv-module-validation,
- Validation Rules within a Module>> appendix (internal merge request
- 2971).
- * Restore `noautovalidity` attribute for
- slink:VkPipelineViewportWScalingStateCreateInfoNV::pname:pViewportWScalings
- in `vk.xml` (internal merge request 2975).
- * Update copyright dates on Khronos-copyrighted files to 2019 (internal
- merge request 2980).
-
-New Extensions:
-
- * `VK_KHR_depth_stencil_resolve`
- * `VK_EXT_buffer_device_address`
- * `VK_EXT_memory_budget`
- * `VK_EXT_memory_priority`
- * `VK_EXT_validation_features`
-
------------------------------------------------------
-
-Change log for December 16, 2018 Vulkan 1.1.96 spec update:
-
- * Update release number to 96.
-
-Public Issues:
-
- * Fix typo in `vk.xml` for `structextends` attribute of
- slink:VkPhysicalDeviceShadingRateImagePropertiesNV (public PR 870).
- * Fix links in optimized PDF output (public PR 879).
-
-Internal Issues:
-
- * Add a link to GitHub contributors in the <<credits, Other Credits>>
- section (internal issue 808).
- * Clarify the behavior of command aliases described in the <<versions,
- Core Revisions>> and <<initialization-functionpointers, Command Function
- Pointers>> sections and the registry schema document with respect to
- whether they are or are not the same entry point, and what the behaviour
- of the ftext:vkGet*ProcAddr commands is for each alias (internal issue
- 1462).
- * Update slink:VkPipelineShaderStageCreateInfo valid usage statements for
- writing to code:Layer and code:viewportIndex to apply to any vertex
- processing stage (internal issue 1475).
- * Make sparse image creation optional for {YCbCr} formats in the
- <<features-required-format-support, Required Format Support>> section
- and the <<formats-requiring-sampler-ycbcr-conversion, Formats
- requiring sampler {YCbCr} conversion for
- ename:VK_IMAGE_ASPECT_COLOR_BIT image views>> table (internal issue
- 1476).
- * Modify the valid usage statement for
- flink:vkCmdDrawIndirectByteCountEXT::pname:vertexStride to use the
- pname:maxTransformFeedbackBufferDataStride limit rather than the
- pname:maxVertexInputBindingStride limit, which is a better match for
- transform feedback related operations (internal issue 1487).
- * Changed all members of slink:VkPhysicalDevicePCIBusInfoPropertiesEXT to
- have the `uint32_t` type. This is an imcompatible change to an EXT
- that's very recently released; although this is against usual Vulkan WG
- policy, we discussed and consider this an acceptable risk, but have
- polled the mesa-dev list in case there are use cases we missed (internal
- issue 1492).
- * Set spec vetsion to 1 for `VK_GOOGLE_hlsl_functionality1` and
- `VK_GOOGLE_decorate_string` in `vk.xml` (internal MR 2948).
- * Remove redundant valid usage statement `VkImageCreateInfo-pNext-02395`
- (internal MR 2950).
- * Add `check_spec_links.py` script, use it in Gitlab CI, and fix many
- minor markup issues discovered by the script (internal MR 2955).
- * Update `BUILD.md` to the current Ruby version (2.5.3), and make some
- corresponding updates to per-platform build instructions (internal MR
- 2956).
- * Fix binding numbers and other details in
- flink:vkUpdateDescriptorSetWithTemplate.txt example code blocks
- (internal MR 2960).
- * Remove some nautovalidity="true" in `vk.xml` for NV extensions where
- it's clearly wrong (internal MR 2970).
-
------------------------------------------------------
-
-Change log for December 3, 2018 Vulkan 1.1.95 spec update:
-
- * Update release number to 95.
-
-Public Issues:
-
- * Fix valid usage and XML issues found in public issues 789 and 790 for
- the `VK_EXT_debug_utils` extension (public pull request 794).
- * Replace references to `VK_NV_dedicated_allocation` with links to the
- corresponding slink:slink:VkMemoryDedicatedRequirements and
- slink:slink:VkMemoryDedicatedAllocateInfo structures in the description
- of elink:VkExternalMemoryFeatureFlagBits (public issue 801).
- * Fix miscellaneous minor markup and spelling issues in
- `VK_NV_ray_tracing` extension (public pull request 860).
- * Remove "returnedonly" from XML for
- slink:VkPhysicalDeviceInlineUniformBlockFeaturesEXT and
- slink:VkPhysicalDeviceVulkanMemoryModelFeaturesKHR (public issue 862).
-
-Internal Issues:
-
- * Add to the description of the
- <<features-limits-maxComputeSharedMemorySize,
- pname:maxCompureSharedMemorySize>> feature to state the shared variables
- should be packed at least as tightly as std430 (internal issue 1386).
- * Fix and clarify various references to image and image view usage in
- flink:vkCmdBindShadingRateImageNV, flink:vkCmdBeginRenderPass, and
- slink:VkImageStencilUsageCreateInfoEXT (internal issue 1432).
- * Require that the slink:VkImage mipmap chain match the Android hardware
- buffer mipmap chain for slink:VkMemoryAllocateInfo (internal issue
- 1479).
- * Fix the definition of slink:VkSwapchainCreateInfoKHR valid usage
- statement 01778 (Vulkan-ValidationLayers!15)
- * Fix descriptions of <<interfaces-builtin-variables-launchid,
- code:LaunchIDNV>> and <<interfaces-builtin-variables-launchsize,
- code:LaunchSizeNV>> to code:uvec3.
-
-New Extensions:
-
- * `VK_KHR_shader_float16_int8`
- * `VK_KHR_shader_float_controls`
-
------------------------------------------------------
-
-Change log for November 25, 2018 Vulkan 1.1.94 spec update:
-
- * Update release number to 94.
-
-Public Issues:
-
- * Use the terms "`texel block`" and "`texel block size`" instead of "`data
- element`" and "`element size`", and define "`element`" as an array slot.
- In addition to the terminology changes, retitled the <<texel-block-size,
- Representation and Texel Block Size>> section and added texel block size
- / no. of texels/block information to the
- <<features-formats-compatibility, Compatible Formats>> table. There is
- some additional work underway to make sure the compatibility language
- makes sense for all of uncompressed, compressed, and multiplanar formats
- (public issue 763).
- * Cleanup `VK_NV_ray_tracing` language (public issues 858, 859).
-
-Internal Issues:
-
- * Specify in <<shaders-invocationgroups, Invocation and Derivative
- Groups>> and <<textures-output-format-conversion, Texel Output Format
- Conversion>> that derivative groups are quads when code:SubgroupSize >=
- 4 (internal issue 1390).
- * Make the type of slink:VkDescriptorUpdateTemplateCreateInfo::pNext
- `const` following pattern for the other stext:Vk*CreateInfo structures
- (internal issue 1459).
- * Specify that flink:vkCmdClearAttachments executes as a drawing command,
- rather than a transfer command (internal issue 1463).
- * Update `VK_NV_ray_tracing` to use code:InstanceId instead of
- code:InstanceIndex.
-
-New Extensions:
-
- * `VK_KHR_swapchain_mutable_format`
- * `VK_EXT_fragment_density_map`
-
------------------------------------------------------
-
-Change log for November 18, 2018 Vulkan 1.1.93 spec update:
-
- * Update release number to 93.
-
-Public Issues:
-
- * Add spec language for ename:VK_INDEX_TYPE_NONE_NV and fix up
- slink:VkAccelerationStructureTypeNV (public issue 848).
- * Add missing suffix in description of slink:VkSubpassDescription2KHR
- parameters (public pull request 851).
- * Fix miscellaneous typos (public pull request 855).
- * Add driver ID for Pastel (public pull request 856).
- * Add missing include directive for slink:VkMemoryWin32HandlePropertiesKHR
- implicit valid usage statements (public pull request 857).
-
-Internal Issues:
-
- * Restrict the storage classes permitted for SPIR-V atomics to what is
- actually supported, in the <<spirvenv-module-validation, Validation
- Rules within a Module>> section (internal issue 1123).
- * Add a missing Valid Usage statement to slink:VkRenderPassCreateInfo for
- the case pname:stencilLoadOp == ename:VK_LOAD_OP_CLEAR, pname:layout ==
- ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL (internal issue
- 1408).
- * Modify optimize-pdf script and Makefile to retain non-optimized original
- PDF on errors (internal issue 1435).
- * Add <<spirvenv-module-validation, SPIR-V validation rules>> stating that
- only the listed code:BuiltIn decorations are permitted, and only when
- relevante features and extensions are enabled (internal issue 1449).
- * Remove some duplicated Valid Usage IDs created via cut & paste error
- (internal issue 1455).
- * Build HTML output for extension reference pages (internal issue 1461).
- ** Improve genRef.py handling of aliases defined inside other refpages.
- ** Emit aliases in pygenerator.py.
- ** Add XML noautovalidity flag for VkRenderPassCreateFlags until there
- are some corresponding FlagBits defined.
- ** Corrected types= attribute on some refpage blocks to 'flags'
- ** Added refpage blocks for some missing types detected by CI tests.
- * Fixed many Valid Usage statement issues in slink:VkRenderPassCreateInfo,
- slink:VkSubpassDescription, slink:VkSubpassDescription2KHR,
- slink:VkSubpassDependency2KHR, flink:vkCmdBeginRenderPass,
- flink:vkCmdBeginRenderPass2KHR, and slink:VkRenderPassBeginInfo
- discovered while adding `VK_KHR_create_renderpass2` to the validation
- layers.
-
-New Extensions:
-
- * `VK_EXT_scalar_block_layout`
- * `VK_EXT_separate_stencil_usage`
-
------------------------------------------------------
-
-Change log for November 12, 2018 Vulkan 1.1.92 spec update:
-
- * Update release number to 92.
-
-Public Issues:
-
- * Move and modify valid usage statements dealing with pname:aspectMask in
- flink:vkCmdClearColorImage, flink:vkCmdClearDepthStencilImage, and
- slink:VkClearAttachment, so they are in places where all necessary
- information is available (public issue 529).
- * Fix math markup in <<textures-texel-anisotropic-filtering, Texel
- Anisotropic Filtering>> (public pull request 840).
- * Fix misspellings (public pull request 845).
-
-Internal Issues:
-
- * Add installation instructions and a Makefile "`chunked`" target for
- chunked HTML generation (internal issue 1352).
- * Fix pipeline mesh diagram style; also fix a minor bug in the classic
- pipeline diagram where vertex/index buffers wrongly fed into the vertex
- shader (internal issue 1436).
- * Make asciidoctor ERROR output raise an error, and don't suppress
- executed command output from CI make invocation (internal issue 1454).
- * Minor typo fixes and clarifications for `VK_NV_raytracing`.
- * Cleanup extension-specific properties
- ** Remove duplicated documentation for pname:maxDiscardRectangles,
- pname:pointClippingBehavior, and pname:maxVertexAttribDivisor (they
- shouldn't be documented with the other members of
- slink:VkPhysicalDeviceLimits at all).
- ** Remove duplicate anchor for pname:maxVertexAttribDivisor
- ** Consistently document stext:VkPhysicalDevice<Extension>PropertiesKHR
- *** Always document pname:sType/pname:pNext (was inconsistent before)
- *** Always mention chaining to slink:VkPhysicalDeviceProperties2 (and not
- as slink:VkPhysicalDeviceProperties2KHR)
- *** Always include Valid Usage statements last
- * Update Makefile 'checklinks' target and associated scripts, and fix
- markup problems identified by checkLinks.py, so that we can rely on the
- checklinks script as part of Gitlab CI.
-
------------------------------------------------------
-
-Change log for November 4, 2018 Vulkan 1.1.91 spec update:
-
- * Update release number to 91.
-
-Public Issues:
-
- * Update Ubuntu subsystem build instructions in `BUILD.adoc` (public pull
- request 624).
- * Delete the `VK_KHR_mir_surface` extension from the Specification and
- XML, due to EOL of the only driver known to have supported it, and
- near-EOL of Mir itself (public issue 814).
- * Fix options for some figures that were using old ones (public pull
- request 841).
- * Fix various accidentally repeated words (public pull request 843).
- * Use `time.process_time()`, introduced in Python 3.3, in the scripts
- instead of `time.clock()`, which will be removed in Python 3.8 (public
- pull request 844).
-
-Internal Issues:
-
- * Update valid usage statements for
- `VK_ANDROID_external_memory_android_hardware_buffer` in
- slink:VkMemoryAllocateInfo,
- slink:VkImportAndroidHardwareBufferInfoANDROID, and
- flink:vkGetAndroidHardwareBufferPropertiesANDROID to actually be
- verifiable (internal issue 1419).
- * Update valid usage statements for
- `VK_ANDROID_external_memory_android_hardware_buffer` in
- slink:VkMemoryAllocateInfo, slink:VkImageCreateInfo, and
- slink:VkImageViewCreateInfo to move valid usage statements in
- doubly-nested bullet points up one level, accomodating limitations of
- the valid usage extraction script that creates `validusage.json`
- (internal issue 1434).
- * Fix typo etext:VK_ACCESS_SHADING_RATE_IMAGE_BIT_NV to the correct
- ename:VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV.
- * Add missing etext:VK_STRUCTURE_TYPE_* tokens to appendices for
- extensions missing them.
-
-New Extensions:
-
- * `VK_AMD_memory_overallocation_behavior`
- * `VK_NV_ray_tracing`, replacing `VK_NVX_raytracing`
-
------------------------------------------------------
-
-Change log for October 28, 2018 Vulkan 1.1.90 spec update:
-
- * Update release number to 90.
-
-Public Issues:
-
- * Tag flink:vkQueueWaitIdle as `externsync` in `vk.xml` (public pull
- request 815).
- * Update README (public pull request 834).
- * `VK_NV_framebuffer_mixed_samples` and `VK_AMD_mixed_attachment_samples`
- had confusing and contradictory valid usage statements when read in the
- all-extensions spec build. Change them to explicitly mention which
- extension each is for (public issue Vulkan-ValidationLayers/issues/353).
-
-Internal Issues:
-
- * Update `COPYING.md` to clarify how externally generated Vulkan
- Specifications (for translations, annotations, or other reasons) must be
- copyrighted, and acknowledge the Exception Clause on the `vk.xml`
- license (internal issue 1079).
- * Specify that flink:vkGetPhysicalDeviceImageFormatProperties may: return
- pname:maxMipLevels 1 if the format is ycbcr (internal issue 1361).
- * Clarify previously underspecified language for
- flink:vkCmdPushConstants::pname:pStageFlags regarding use of push
- constants across multiple pipelines (internal issue 1403).
- * Fix typo in XML/headers for
- ename:VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT,
- which was previously
- etext:VK_STRUCTURE_TYPE_IMAGE_EXCPLICIT_DRM_FORMAT_MODIFIER_CREATE_INFO_EXT
- (internal issue 1428).
- * Fix markup of equations that were sporadically breaking the
- `optimize-pdf` step of PDF generation, due (apparently) to inconsistent
- treatment of unwrapped multicharacter terms by different LaTeX parsers
- (internal issue 1435).
- * For the <<memory-model-synchronizes-with synchronizes-with>> memory
- model relation cases involving a release barrier plus relaxed atomic
- write, treat the atomic as if it were a release atomic and allow the
- acquire side to read from its hypothetical release sequence. This is
- more consistent with how C++ defines synchronization for release fences
- (internal issue cross-api/memory-model#72).
- * Minor editorial changes to the <<memory-model, memory model>> appendix
- based on external feedback.
-
------------------------------------------------------
-
-Change log for October 21, 2018 Vulkan 1.1.89 spec update:
-
- * Update release number to 89.
-
-Public Issues:
-
- * Clarify the reference to <<features-limits-mipmapPrecisionBits, mipmap
- precision bits>> in the <<textures-image-level-selection, Image Level(s)
- Selection>> section (public issue 660).
- * Update <<debugging-object-types,VkObjectType and Vulkan Handle
- Relationship>> table with missing types (public pull request 820).
- * Miscellaneous minor markup cleanup (public pull request 822).
- * Fix copy/paste bugs in the description of how implicit
- availability/visibility operations for atomics/barriers are ordered in
- the <<memory-model-availability-visibility-semantics, Availability and
- Visibility Semantics>> section (public issue 823).
- * Add ename:VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV bit missing from
- the mesh shading list of the <<synchronization-pipeline-graphics,
- graphics pipeline>> (public issue 824).
-
-Internal Issues:
-
- * Clarify that only statically used members of a push constant block need
- to be in the push constant range, and stop referring to block members as
- "`variables`" in the <<interfaces-resources-pushconst, Push Constant
- Interface>> section. This is related to
- https://github.com/KhronosGroup/Vulkan-ValidationLayers/issues/340
- (internal issue 1401).
- * Clarify interaction between flink:vkCmdSetDeviceMask and render pass
- control commands in the slink:VkDeviceGroupRenderPassBeginInfo section
- (internal issue 1416).
- * Miscellaneous minor markup cleanup.
- * Remove types defined by `"disabled"` extensions from
- validextensionstructs in the XML processing scripts, so downstream code
- generators don't emit them.
-
------------------------------------------------------
-
-Change log for October 13, 2018 Vulkan 1.1.88 spec update:
-
- * Update release number to 88.
-
-Public Issues:
-
- * Make clear that
- tname:PFN_vkDebugUtilsMessengerCallbackEXT::pname:messageTypes is a
- bitmask, and correct a typo in the spelling of
- slink:VkDebugUtilsMessengerCreateInfoEXT.txt::pname:messageType (public
- pull request 800).
- * Make an ABI-compatible change of the type of
- slink:VkPhysicalDeviceDriverPropertiesKHR::pname:driverID to use the new
- elink:VkDriverIdKHR type (public issue 811).
-
-Internal Issues:
-
- * Clarify for the <<features-features-shaderStorageImageExtendedFormats>>
- feature and in the <<spirvenv-capabilities-table>> that the feature
- means that all of the formats are supported, and that otherwise the
- features can be queried per-format (internal issue 1273).
- * Clarified interactions of `VK_EXT_external_memory_host` with host cache
- management commands and structures flink:vkMapMemory,
- flink:vkFlushMappedMemoryRanges, slink:VkMappedMemoryRange, and
- flink:vkUnmapMemory using the new glossary term "`Host Mapped Device
- Memory`" (internal issue 1385).
- * Update the language for flink:vkCreateViSurfaceNN.txt describing the
- pname:currentExtent of a VI surface to more accurately reflect current
- capabilities, replacing "`undefined`" with more explicit behavior
- (internal issue 1410).
-
-New Extensions:
-
- * `VK_EXT_calibrated_timestamps`
- * `VK_EXT_image_drm_format_modifier` (this extension was previously
- disabled in vk.xml, and has now been enabled after some changes to fix
- performance issues).
- * `VK_EXT_pci_bus_info`
- * `VK_EXT_transform_feedback`
- * `VK_GOOGLE_hlsl_functionality1`, exposing support for
- `SPV_GOOGLE_hlsl_functionality1`.
- * `VK_GOOGLE_decorate_string`, exposing support for
- `SPV_GOOGLE_decorate_string`.
-
------------------------------------------------------
-
-Change log for October 7, 2018 Vulkan 1.1.87 spec update:
-
- * Update release number to 87.
-
-Public Issues:
-
- * Merge flink:vkCmdPipelineBarrier self-dependency barrier VUs referring
- to the same subpass dependency (public pull request 756).
- * Describe default value of `"optional"` attribute in the registry schema
- document (public issue 769)
- * Fix links in <<VK_NVX_raytracing>> extension (public pull request 805).
- * Mark the <<VK_KHR_mir_surface>> extension obsolete (see public issue 814
- - does not close this, however).
- * Fix missing endif in Image Creation block (public issue 817).
-
-Internal Issues:
-
- * Clarify that the compressed texture formats corresponding to
- <<features-features-textureCompressionETC2>>,
- <<features-features-textureCompressionASTC_LDR>>, and
- <<features-features-textureCompressionBC>> is not contingent on the
- feature bits, and may be supported even if the features are not enabled
- (internal issue 663).
- * Clarify that code:FragStencilRefEXT is output only in the
- <<interfaces-builtin-variables, Built-In Variables>> section (internal
- issue 1173).
- * Identify and correct many overly-aggressive uses of "`undefined`", and
- narrow them down, where straightforward to do so. Mark such resolved
- uses of "`undefined`" with the custom undefined: macro. Add a new
- <<writing-undefined, Describing Undefined Behavior>> section (internal
- issue 1267).
- * Don't require code:inline_uniform_block descriptors to be populated
- before use in the flink:vkAllocateDescriptorSets section (internal issue
- 1380).
- * Allow suppressing inline SVG images by controlling this with an
- attribute set in the Makefile, rather than the explicit [%inline]
- directive (internal issue 1391).
- * Mark 'Khronos' as a registered trademark in several places, now that it
- is one.
- * Fix typo in the <<VK_KHR_shader_atomic_int64>> appendix using the GLSL
- naming of the compare exchange op when referring to the SPIR-V op.
- * Specify in the flink:vkGetPhysicalDeviceQueueFamilyProperties section
- that all implementations must support at least one queue family, and
- that every queue family must contain at least one queue.
- * Make slink:VkPipelineDynamicStateCreateInfo::pname:dynamicStateCount,
- slink:VkSampleLocationsInfoEXT::pname:sampleLocationsPerPixel, and
- slink:VkSampleLocationsInfoEXT::pname:sampleLocationsCount optional, to
- fix bogus implicit valid usage checks that were causing failures in the
- conformance tests.
- * Fix vendor tag in reserved extension 237 constants. Does not affect
- anything since it's just a placeholder, but this should avoid further
- comments.
- * Minor markup fixes in some extension appendices.
-
-New Extensions:
-
- * `<<VK_FUCHSIA_imagepipe_surface>>`
-
------------------------------------------------------
-
-Change log for September 29, 2018 Vulkan 1.1.86 spec update:
-
- * Update release number to 86.
-
-Internal Issues:
-
- * Add new <<resources-image-creation-limits, Image Creation Limits>>
- section and reference that from valid usage statements, reducing
- combinatorial complexity of extension-dependent VUs. Also fixes some
- underspecified limits (such as pname:maxMipLevels) in the VUs for
- slink:VkImageCreateInfo when
- slink:VkExternalMemoryImageCreateInfo::pname:externalMemoryHandles
- contains multiple bits, and fixes incorrectly (and underspecified)
- limits when an Android external format is used (internal issue 1370).
- * Remove unused "`Fragment Area Granularity`" glossary entry accidentally
- introduced in the 1.1.85 update.
-
-New Extensions:
-
- * `VK_KHR_driver_properties`
- * `VK_KHR_shader_atomic_int64`
- * The specification sources contain text for another extension,
- `VK_EXT_image_drm_format_modifier`, but this extension is not yet
- complete, and is marked disabled in `vk.xml`. The extension will be
- enabled, and become part of the spec, only when the authors decide it is
- ready.
-
------------------------------------------------------
-
-Change log for September 19, 2018 Vulkan 1.1.85 spec update:
-
- * Update release number to 85.
-
-Public Issues:
-
- * Add self-dependency ename:VK_DEPENDENCY_BY_REGION_BIT valid usage
- statements for slink:VkSubpassDependency(public pull request 778).
- * Apply fix from pull request 742 to slink:VkSubpassDependency and
- slink:VkSubpassDependency2 (public pull request 779).
- * Specify the units of slink:VkBufferImageCopy::pname:bufferRowLength and
- pname:bufferImageHeight as texels (public pull request 781).
- * Better specify promoted parameter mapping in the
- `<<VK_KHR_create_renderpass2>>` appendix (public pull request 782).
-
-Internal Issues:
-
- * Only include the <<fundamentals-validusage-versions, Valid Usage for
- Newer Core Versions>> section in Vulkan 1.1 or later (internal issue
- 1381).
-
-Other Issues:
-
- * Clean up redundant valid usage language for the
- `VK_ANDROID_external_memory_android_hardware_buffer` extension
- interaction with slink:VkImageCreateInfo.
- * Fix error in a flag name within valid usage statements for
- slink:VkMemoryAllocateInfo.
- * Clarify that memory types are not totally ordered in
- slink:VkPhysicalDeviceMemoryProperties.
- * For slink:VkWriteDescriptorSetInlineUniformBlockEXT, set
- structextends="VkWriteDescriptorSet" in `vk.xml`, and make
- slink:VkDescriptorSetLayoutBindingFlagsCreateInfoEXT::pname:pBindingFlags
- optional.
- * Add documentation of 'provisional' XML attribute to registry.txt.
-
-New Extensions:
-
- * `VK_NV_compute_shader_derivatives`
- * `VK_NV_corner_sampled_image`
- * `VK_NV_fragment_shader_barycentric`
- * `VK_NV_mesh_shader`
- * `VK_NV_representative_fragment_test`
- * `VK_NV_scissor_exclusive`
- * `VK_NV_shader_image_footprint`
- * `VK_NV_shading_rate_image`
- * `VK_NVX_raytracing`
-
------------------------------------------------------
-
-Change log for September 8, 2018 Vulkan 1.1.84 spec update:
-
- * Update release number to 84.
-
-Public Issues:
-
- * Fix code sample in the `<<VK_EXT_debug_utils>>` extension (public issue
- 751).
- * Fix misleading comment in `vk.xml` for
- slink:VkDescriptorBufferInfo::pname:buffer (public pull request 762).
- * Fix formatting of deprecation attributes in schema doc (public pull
- request 767).
- * Change `can` to `may` in the description of
- elink:VkSparseImageFormatFlagBits, which are return values from queries
- (public pull request 768).
- * Prettify generated contact list in extension appendices, adding logos
- and a New Issue link (public pull request 770).
- * Enable sRGB conversion based on the image view format, not the image
- format, in the <<textures-format-conversion, Format Conversion>> section
- (public pull request 773).
- * Fix typo in equation in the <<primsrast-lines-basic, Basic Line Segment
- Rasterization>> section (public pull request 780).
- * Fix special characters in GitHub contacts links (public pull request
- 783).
- * Make clean_pdf target remove pdf folder (public pull request 784).
- * Fix styleguide bad markup of block continuation (public pull request
- 792).
-
-Other Issues:
-
- * Allow a zero vertex attribute divisor in the
- `<<VK_EXT_vertex_attribute_divisor>>` extension, exposed via the
- slink:VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT feature.
- * Add missing `structextends="VkDeviceCreateInfo"` to
- slink:VkPhysicalDeviceShaderDrawParameterFeatures and
- slink:VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT.
-
-New Extensions:
-
- * `VK_KHR_memory_model`
- * `VK_EXT_astc_decode_mode`
- * `VK_EXT_inline_uniform_block`
-
------------------------------------------------------
-
-Change log for August 13, 2018 Vulkan 1.1.83 spec update:
-
- * Update release number to 83.
-
-Public Issues:
-
- * Use [%inline] directive for all SVGs to reduce file size (public pull
- request 734).
- * Convert XML `value` aliases into <alias> tags (public pull request
- 747).
- * Fix metadoc script showing non-selected extensions (public pull request
- 748).
- * Reapply public pull request 742 to make
- ename:VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT part of the
- graphices pipeline (public pull request 749).
- * Fix numerous typos related to accidental duplication of words (public
- pull request 760).
- * Fix `vk.xml` contact typos (public pull request 761).
-
-
-Internal Issues:
-
- * Add images to the <<Standard sample locations>> table (internal issue
- 1115).
- * Add a definition of "`Inherited from`" precision in the
- <<spirvenv-precision-operation, Precision and Operation of SPIR-V
- Instructions>> section (internal issue 1314).
- * Clarify that both built-in and user-defined variables count against the
- location limits for shader interfaces in the
- <<interfaces-iointerfaces-locations, Location Assignment>> section
- (internal issue 1316).
- * Merge "`required`" capabilities into the <<spirvenv-capabilities-table,
- list of optional: SPIR-V capabilities>> (internal issue 1320).
- * Relax the layout matching rules of descriptors referring to only a
- single aspect of a depth/stencil image, by reference to the new
- <<resources-image-layouts-matching-rule, Image Layout Matching Rules>>
- section (internal issue 1346).
- * Revert extension metadoc generator warning about name mismatches to a
- diagnostic, due to annoying warnings in build output for conscious
- choices we've made (internal issue 1351).
-
-Other Issues:
-
- * Reserve bits for pending vendor extensions.
- * Make Vulkan consistent with SPIR-V regarding code:DepthReplacing and
- code:FragDepth in the <<interfaces-builtin-variables, Built-In
- Variables>> section.
- * Add missing ChangeLog entries for the previous three spec updates.
-
------------------------------------------------------
-
-Change log for July 30, 2018 Vulkan 1.1.82 spec update:
-
- * Update release number to 82.
-
-Public Issues:
-
- * Add flink:vkDestroyPipelineLayout valid usage statement that the layout
- must not have been used with command buffers still in the recording
- state (public issue 730).
- * Correct <unused> tag for elink:VkResult in `vk.xml` (public merge
- request 746).
-
-Internal Issues:
-
- * Add a valid usage statement to flink:vkQueueSubmit, and similar language
- to the definitions of <<synchronization-queue-transfers-acquire, acquire
- operations>> requiring that an acquire operation follow a previous
- release of the same subresource (internal issue 1290).
- * Add <<resources-image-format-features,Image Format Features>> and
- <<resources-image-view-format-features,Image View Format Features>>
- sections that precisely define the slink:VkFormatFeatures supported by
- images and image views, and rewrite valid usage statements to reference
- these sections instead of duplicating language (internal issue 1310).
- * Reword and consolidate synchronization valid usage statements for
- flink:vkCmdPipelineBarrier such that they correctly account for mutiple
- possible self-dependencies (internal issue 1322).
- * Change order of <<Standard sample locations>> for 2xMSAA (internal issue
- 1347).
- * Add definitions of "`<<Correctly Rounded>>`" and "`<<ULP>>`" in the
- SPIR-V environment appendix, and "`Units in the Last Place (ULP)`" in
- the glossary.
-
-New Extensions:
-
- * `VK_NV_device_diagnostic_checkpoints`
-
------------------------------------------------------
-
-Change log for July 23, 2018 Vulkan 1.1.81 spec update:
-
- * Update release number to 81.
-
-Public Issues:
-
- * Fix missing "`valid`" phrasing in some obscure cases (public pull
- request 605).
- * Replace improper use of cannot: referring to the implementation in the
- description of the
- <<features-limits-maxUpdateAfterBindDescriptorsInAllPools,
- pname:maxUpdateAfterBindDescriptorsInAllPools>> limit (public pull
- request 738).
- * Reorder description of bits in elink:VkPipelineStageFlagBits and the
- <<synchronization-pipeline-stages-supported, Supported pipeline stage
- flags>> table to match their definition order (public pull request 740).
- * Add description of ename:VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT
- to elink:VkBufferUsageFlagBits (public pull request 741).
- * Fix value usage statement for slink:VkSubpassDependency stage mask
- parameters (public pull request 742).
- * Fix visible markup in registry schema document (public pull request
- #745).
-
-Internal Issues:
-
- * Make the <<geometry-invocations, geometry shader invocation
- description>> and <<shaders-geometry-execution, Geometry Shader
- Execution>> descriptions consistent with other pipeline stages (internal
- issue 1325).
- * Mark the `VK_NV_glsl_shader` extension as deprecated.
- * Adjust the per-instance vertex attribute offset formula specified by
- `VK_EXT_vertex_attribute_divisor` for
- slink:VkVertexInputBindingDivisorDescriptionEXT so that the interaction
- between pname:firstInstance and pname:divisor matches the OpenGL
- convention (internal issue 1333).
-
------------------------------------------------------
-
-Change log for July 7, 2018 Vulkan 1.1.80 spec update:
-
- * Update release number to 80.
-
-Public Issues:
-
- * Remove unused "`API Order`" term from glossary (public issue 657).
- * Dynamically generate the extension appendix includes based on
- information in `vk.xml`, including new metadata tags describing
- deprecated, obsoleted, and promoted extensions (public pull request
- 690).
-
-Internal Issues:
-
- * Add valid usage statements to flink:vkCmdBindDescriptorSets to keep
- offsets + range less than or equal to the buffer size (internal issue
- 1174).
-
-New Extensions:
-
- * `VK_EXT_conditional_render`
- * `VK_KHR_create_renderpass2` (public issue 736)
- * `VK_KHR_8bit_storage` (public issue 737)
-
------------------------------------------------------
-
-Change log for July 1, 2018 Vulkan 1.1.79 spec update:
-
- * Update release number to 79.
-
-Public Issues:
-
- * Add a note to the <<features-required-format-support, Required Format
- Support>> section clarifying that the required formats don't depend on
- the used flags (public issue 671).
- * Add a valid usage statement for flink:vkUpdateDescriptors that was
- previously described for slink:VkImageSubresourceRange, but not as a
- valid usage statement (public issue 713).
- * Modify implicit valid usage generator script to not emit 'must: not be
- 0' for a parameter that is a pointer to a flags field, such as
- pname:pPeerMemoryFeatures (public issue 729).
-
-Internal Issues:
-
- * Add definitions of "`obsoleted`" and "`deprecated`", and modify the
- definition of "`promoted`" in the <<glossary, Glossary>> (internal issue
- 988).
- * Add language for integer texel output conversions (the conversion is
- undefined) to the <<textures-output-format-conversion]] Texel Output
- Format Conversion>> section. Simplify and clarify the floating-point
- conversion language in the <<fundamentals-general, General
- Requirements>> section and the new <<fundamentals-fp-conversion,
- Floating-Point Format Conversions>> section, and remove obsolete
- language in the format-specific floating-point sections (internal issue
- 1275).
- * Add the elink:VkVendorId enumerated type to the Vulkan API / XML /
- header, so reserved Khronos vendor IDs can be referred to symbolically
- by clients. Note that only Khronos vendor IDs (e.g. non-PCI vendor IDs)
- are defined (internal issue 1299).
- * Fix typo in the <<fig-non-strict-lines, Non strict lines>> table
- (internal issue 1315).
- * Clean up and simplify the
- <<formats-requiring-sampler-ycbcr-conversion, YCbCr format
- properties>> table and use symbols consistently with other tables. Add a
- column for the number of planes.
- * Add code:Float16 to the <<spirvenv-capabilities-table, List of optional
- SPIR-V capabilities>> for the `VK_AMD_gpu_shader_half_float` extension.
-
------------------------------------------------------
-
-Change log for June 18, 2018 Vulkan 1.1.78 spec update:
-
- * Update release number to 78.
-
-Public Issues:
-
- * Change markup so parameter descriptions include links to structures,
- instead of just their names (public issue 697).
- * Resume publishing updated Vulkan 1.0 + KHR extensions and Vulkan 1.0 +
- all extensions versions of the specification (public issue 722).
- * Reapply fixes from public pull request 698 for
- `VK_ANDROID_external_memory_android_hardware_buffer`, which accidentally
- were reverted at some point (public pull request 724).
- * Fix undefined format valid usage statements for slink:VkImageCreateInfo
- in the presence of the
- `VK_ANDROID_external_memory_android_hardware_buffer` extension (public
- pull request 725).
- * Miscellaneous markup consistency fixes (public pull request 728).
-
-Internal Issues:
-
- * When building specifications containing vendor extensions, add terms to
- the Khronos spec copyright specifying that the result is not a ratified
- specification (internal issue 739).
- * Change the value of the
- pname:maxDescriptorSetUpdateAfterBindUniformBuffers minimum limit to 72
- (6 times pname:maxPerStageDescriptorUpdateAfterBindUniformBuffers) in
- the <<features-limits-required, Required Limits>> table (internal issue
- 1300).
-
-Other Issues:
-
- * Fix link to resource image view compatibility table in the valid usage
- statements for slink:VkImageFormatListCreateInfoKHR (internal pull
- request 2711).
-
------------------------------------------------------
-
-Change log for June 10, 2018 Vulkan 1.1.77 spec update:
-
- * Update release number to 77.
-
-Public Issues:
-
- * Remove redundant asciidoctor ifdef in slink:VkDeviceCreateInfo valid
- usage statement (public pull request 718).
-
-Internal Issues:
-
- * Require that the returned slink:VkMemoryRequirements::pname:alignment
- reflect the minimum alignment requirements for the buffer's usages, and
- make dynamic offset alignment valid usage more explicit for
- flink:vkBindBufferMemory and flink:vkCmdBindDescriptorSets (internal
- issue 1170).
- * Explicitly state that objects of type code:OpTypeImage,
- code:OpTypeSampler, and code:OpTypeSampledImage must not be stored to in
- the <<spirvenv-module-validation, Validation Rules within a Module>>
- section (internal issue 1262).
- * Clarify rules about validating descriptor set/binding against storage
- class and descriptor type in the <<spirvenv-module-validation,
- Validation Rules within a Module>> section, and add an anchor for and
- references to the <<interfaces-resources-storage-class-correspondence,
- Shader Resource and Storage Class Correspondence>> table (internal issue
- 1266).
- * Use correct spelling of SPIR-V decoration code:NonWritable in several
- places (internal issue 1298).
-
-Other Issues:
-
- * Update specification links to files in the old
- KhronosGroup/Vulkan-LoaderAndValidationLayers repository with
- corresponding links into the new repositories that replace it.
- * Move validity requirement for slink:VkSamplerCreateInfo into the valid
- usage block instead of the body text, and give it a VUID.
- * Use the full name of the "`style guide`" in a reference in the
- description of slink:vkGetPhysicalDeviceProperties, update the
- <<vulkan-styleguide, link to that document>>, and use the full name
- in the registry index page.
-
------------------------------------------------------
-
-Change log for May 25, 2018 Vulkan 1.1.76 spec update:
-
- * Update release number to 76.
-
-Internal Issues:
-
- * Add an exception clause to the license on `vk.xml`, enabling its use
- with GPL-based projects (internal issue 1017).
- * Remove the generated `vulkan_ext.[ch]` files, which are no longer
- supported. Add `src/ext_loader/README.md` explaining why, and update
- files in `xml/` to not generate them by default (internal issue 1268)
-
-Other Issues:
-
- * Fix typos in valid usage statements for the
- ftext:vkDrawIndexedIndirectCount* commands, replacing
- sizeof(VkDrawIndirectComment) with sizeof(VkDrawIndexedIndirectCommand).
- * Modify the <<spirvenv-module-validation, Validation Rules within a
- Module>> section to require code:NonReadable or code:NonWriteable in
- SPIR-V code for images with an image format of code:Unknown if one of
- the requisite code:shaderImageReadWithoutFormat or
- code:shaderImageWriteWithoutFormat features is disabled.
-
-New Extensions:
-
- * `VK_KHR_get_display_properties2`
- * `VK_KHR_draw_indirect_count`
-
------------------------------------------------------
-
-Change log for May 16, 2018 Vulkan 1.1.75 spec update:
-
- * Update release number to 75.
-
-Github Issues:
-
- * Use Github handles (e.g. @handle) for contact information in vk.xml,
- when available (partial fix for public issue 630).
- * Add size invariance guarantee to slink:VkMemoryRequirements for
- buffer/image memory requirements (public issue 661).
- * Correct scope (conditional constructs) in valid usage statement for
- slink:VkBindImageMemoryInfo (public pull request 684).
- * Clean up minor markup issues and typos in the
- `VK_ANDROID_external_memory_android_hardware_buffer` extension appendix
- (public pull request 698).
- * Modify registry processing script to avoid irrelevant warnings of benign
- enumerant redefinitions (public pull request 705).
- * Fix some duplicate words and some misspelled "`stagess`" (public pull
- request 712)
-
-Internal Issues:
-
- * Enable continuous integration tests on the internal Khronos gitlab
- server by adding a .gitlab-ci.yml file. Note: this does not implement CI
- on the public Github repository (internal issue 408).
- * Add link from description of depth clamping in the <<fragops-depth,
- depth test>> section to the
- slink:VkPipelineRasterizationStateCreateInfo::pname:depthClampEnable
- parameter which enables it, making it easily searchable / findable
- (internal issue 1125).
- * Clarify that arrays of arrays of descriptors are not allowed in the
- <<interfaces-resources-descset, Descriptor Set Interface>> and
- <<interfaces-resources-setandbinding, DescriptorSet and Binding
- Assignment>> sections (internal issue 1192).
- * Comment out some redundant nested asciidoctor conditionals in the
- slink:VkImageViewCreateInfo valid usage block, and explain in all cases
- why the redundant conditional exist and are commented out (internal
- issue 1231).
- * Move a valid usage statement from slink:VkCommandPoolCreateInfo to the
- parent flink:vkCreateCommandPool, where the device queue is known
- (internal issue 1233).
- * Add new slink:VkBaseInStructure and slink:VkBaseOutStructure types which
- can be used by extensions and implementations for handling Vulkan
- sType/pNext style structures in a more generic way (internal issue
- 1265).
- * Clarify that
- slink:VkAndroidHardwareBufferFormatPropertiesANDROID::pname:formatFeatures
- only applies to external-format images. Add references to this in valid
- usage statements that previously only referred to
- slink:VkFormatProperties (internal issue 1244).
- * Fix the description of elink:VkPipelineCreateFlagBits enumerant
- ename:VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT to match the
- name (internal issue 1279).
- * Add a NOTE to the <<interfaces-resources-setandbinding, DescriptorSet
- and Binding Assignment>> section making it clear that variables sharing
- a storage class may use identical descriptor set and bindings.
- Specifically state the sometimes misunderstood ability to have one or
- more differently typed image descriptors sharing a descriptor set and
- binding (internal SPIR-V issue 264).
- * Make DynamicIndexing features and capabilities also control the
- uniformity of the descriptor used in memory access instructions in the
- <<interfaces-resources-descset, Descriptor Set Interface>> section. This
- makes them also apply to variable_pointer usage, which can bypass the
- array indexing operation (internal SPIR-V issue 289).
-
-Other Issues:
-
- * Correct flink:vkCmdBlitImage limitations on cubic blits to be 2D only,
- not 3D.
- * Update valid usage statements for slink:VkRenderPassCreateInfo and
- slink:VkInputAttachmentAspectReference.
- * Move YCbCr-related VU statements from slink:VkDescriptorImageInfo to
- slink:VkWriteDescriptorSet, where all needed information is known, and
- remove redundant statements.
- * Move SPIR-V restriction that images be of either sampled or storage
- types from the <<interfaces-resources-descset, Descriptor Set
- Interface>> section to the <<spirvenv-module-validation, Validation
- Rules within a Module>> section of the SPIR-V appendix.
-
------------------------------------------------------
-
-Change log for April 21, 2018 Vulkan 1.1.74 spec update:
-
- * Update release number to 74.
-
-Github Issues:
-
- * Clarify which buffer locations are accessed in
- flink:vkCmdCopyBufferToImage valid usage statements (public issue 676).
- * Refine description of <<extended-functionality-extensions-dependencies,
- extension dependencies>>, related NOTE in the
- <<extended-functionality-extensions, Extensions>> section, and
- "`Required Extensions`" glossary term (public pull request 693).
- * Add support for specifying required Vulkan core version in `vk.xml` and
- the extension metadoc generator (public issue 696).
- * Update .gitignore for directory reorganization (public pull request
- 699).
- * Fix typo (public pull request 703).
-
-Internal Issues:
-
- * Update valid usage of slink:VkClearRect::pname:layerCount (internal
- issue 1241).
-
-Other Issues:
-
- * Fix typo in <<NV_geometry_shader_passthrough>> issues list.
-
------------------------------------------------------
-
-Change log for April 15, 2018 Vulkan 1.1.73 spec update:
-
- * Update release number to 73.
-
-Github Issues:
-
- * Refine swapchain association with surface for slink:VkSwapchainKHR, with
- matching valid usage statements for slink:VkSwapchainCreateInfoKHR and
- discussion following the <<swapchain-wsi-image-create-info>> table
- (public issue 637).
- * Re-remove several valid usage statements from slink:VkImageCreateInfo
- that had previously been removed at the time that
- ename:VK_IMAGE_CREATE_EXTENDED_USAGE_BIT was introduced. These
- statements had incorrectly been restored due to an glitch while merging
- from the old `1.0` branch to the current `master` branch (public issue
- 683).
-
-Internal Issues:
-
- * Fix reference page generation and configure build to generate reference
- pages 1.1 with all extensions, rather than core only, as was the case
- for the 1.0 ref pages (internal issues 484, 1056, 1205).
- * Require that
- slink:VkMemoryDedicatedRequirements::pname:prefersDedicateAllocation is
- ename:VK_TRUE when
- slink:VkMemoryDedicatedRequirements::pname:requiresDedicateAllocation is
- ename:VK_TRUE (internal issue 1222).
- * Fix Ruby extension code so `diff_html` Makefile target works (internal
- issue 1230).
- * Update `genRelease` script to generate 1.1 + all extensions reference
- pages - but not the single-page HTML / PDF versions, which are even
- larger than the API spec (internal issue 1245).
-
-Other Issues:
-
- * Add missing attributes to `vk.xml` for `VK_ANDROID_native_buffer`.
- * Specify that the slink:VkAttachmentDescription::pname:format member is
- the format of the image *view* that will be used for the attachment.
- * Use core sname:VkPhysicalDeviceFeatures2 in the `structextends` `vk.xml`
- attribute for sname:VkPhysicalDeviceDescriptorIndexingFeaturesEXT and
- sname:VkPhysicalDeviceDescriptorIndexingPropertiesEXT, rather than the
- KHR equivalent it was promoted from.
- * Fix the "`Fragment Input Attachment Interface`" glossary entry to match
- the specification body.
- * Clarify the interaction of sRGB images used as storage or texel buffers
- with <<textures-output-format-conversion, Texel Output Format
- Conversion>>.
- * Moved three valid usage statements from
- slink:VkRenderPassMultiviewCreateInfo up to
- slink:VkRenderPassCreateInfo, and added a new valid usage statement for
- slink:VkRenderPassInputAttachmentAspectCreateInfo.
- * Added valid usage statements for slink:VkBufferMemoryBarrier and
- slink:VkImageMemoryBarrier reflecting the global requirement that
- "`non-sparse resources must be bound to memory before being recorded to
- command`".
-
------------------------------------------------------
-
-Change log for April 5, 2018 Vulkan 1.1.72 spec update:
-
- * Update release number to 72.
-
-Github Issues:
-
- * Restructure the repository to put the specification `Makefile` and
- associated spec source material at the top level, `vk.xml` and
- associated scripts material in `xml/`, and generated include and source
- files in `include/vulkan/` and `src/ext_loader/`, respectively (public
- issue 436).
- * Add missing bullet point markup to flink:vkCmdCopyImage valid usage
- statement, so it gets a VUID assigned (public issue 627).
- * Fix broken links in a couple of extension appendices (public pull
- request 665).
- * Add the <platform> tag to the index in section 4.1 of the registry
- schema documentation, and add the protect= attribute of <extension>
- tags to the comments in `registry.rnc` (public issues 673, 678).
- * Add missing valid usage statements for sparse image interactions to
- flink:VkImageCreateInfo (public pull request 675).
- * Fix improper usage and grammar of "`can: not`" (public pull request
- 681).
- * Remove duplicate spec language and NOTE on present layout between the
- flink:vkAcquireNextImageKHR and flink:vkAcquireNextImage2KHR commands
- (public pull request 685).
- * Fix some typos and markup issues (public pull request 689; public issues
- 642, 667, 687).
- * Fix typo etext:VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FENCE_FD_BIT ->
- ename:VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT in the
- <<external-semaphore-handle-types-compatibility, External semaphore
- handle types compatibility>> table (public pull request 691).
-
-Internal Issues:
-
- * Remove the need for the "`noautovalidity`" attribute on extension
- structures in `vk.xml`. It is now implied by the "`structextends`"
- attribute instead (internal issue 942).
- * Replace uses of "`currently bound`" with "`bound`", since "`currently`"
- is redundant and distracting, and add a corresponding rule to the style
- guide (internal issue 993).
- * Fixed subtle issues with the last updates to flink:vkAcquireNextImageKHR
- language that had resulted in ambiguities (internal issue 1178).
- * Make it clear that only one query of a given type is allowed at a time
- by reordering valid usage statements for flink:vkCmdBeginQuery and
- flink:vkCmdEndQuery, and removing redundant ones (internal issue 1213).
- * Swapped OL1 and OL3 in `tessparamUL.svg` to match previous version, and
- fixed where "`(no edge)`" appears (internal issue 1215).
-
-Other Issues:
-
- * Fixed a minor problem with the valid usage statement extraction script,
- and corresponding markup in the spec source.
-
-New Extensions:
-
- * `VK_AMD_shader_core_properties`
- * `VK_EXT_descriptor_indexing`
- * `VK_NV_shader_subgroup_partitioned`
-
------------------------------------------------------
-
-Change log for March 16, 2018 Vulkan 1.1.71 spec update:
-
- * First public update for Vulkan 1.1.
-
-Github Issues:
-
- * Refer to standard sparse image block shape format tables explicitly in
- the <<sparsememory-standard-shapes, Standard Sparse Image Block Shapes>>
- section (public issue 93).
- * Add the missing definition of the code:LocalInvocationIndex decoration
- in the <<interfaces-builtin-variables, Built-In Variables>> section
- (public issue 532).
- * Clarify dynamic state definition in the introduction to the <<pipelines,
- Pipelines>> section and the new <<pipelines-dynamic-state, Dynamic
- State>> subsection (public issue 620).
- * Clarified deprecation statement in the `VK_AMD_negative_viewport_height`
- appendix (public issue 674).
- * Fix parameter descriptions for flink:vkCreateIndirectCommandsLayoutNVX
- (public issue 677).
-
-Internal Issues:
-
- * Remove description of <<primsrast-points, rasterization point size>>
- being taken from the tessellation control shader, since there are no
- circumstances under which you can have TCS without TES (internal issue
- 522).
- * Define <<copies-images-format-size-compatibility, _size-compatible_
- image formats>> for flink:vkCmdCopyImage, add it to the glossary, and
- use that definition for slink:VkImageViewCreateInfo (internal issue
- 771).
- * Change brief descriptions of enumerant names, and of parameters which
- are enumerants, from "`enum *indicates*`" to "`enum *specifies*`" for
- consistency, and add a markup style guide rule (internal issue 862).
- * Clarify how execution dependencies interact with
- <<synchronization-submission-order, submission order>> at numerous
- places in the <<renderpass, Render Pass>> and <<synchronization,
- Synchronization>> chapters (internal issue 1062).
- * Clarify statement in the <<interfaces-resources-setandbinding,
- DescriptorSet and Binding Assignment>> section that only interface
- variables statically used by the entry point used in a pipeline must be
- present in the descriptor set layout (internal issue 1172).
- * Flip sparse image diagrams with partially full mip levels vertically, to
- match graph origins of other image diagrams (internal issue 1176).
- * Update new SVG diagrams to have consistent style and base font size,
- increase consistency of primitive topology diagrams, and add a section
- to the style guide on creating and editing images in a consistent style
- (internal issue 1177).
- * Resolve problems with valid usage statement extraction by fixing
- existing VUID tags for interfaces promoted to version 1.1 and fixing
- conditional directives around
- VUID-VkMemoryDedicatedAllocateInfo-image-01797 (internal issue 1184).
- * Strip `KHR` suffixes from a few interfaces promoted to Vulkan 1.1 that
- were missed previously (internal issue 1185).
- * Restrict code:OpImageQuerySizeLod and code:OpImageQueryLevels to only
- work on code:Image operands with their code:Sampled operand set to 1. In
- other words, these operations are not defined to work with storage
- images (internal issue 1193).
- * Recycle extension slot for extension #82 in `vk.xml`. This extension was
- never published (internal issue 1195).
- * Add an issue to the `VK_KHR_maintenance1` appendix noting that zero
- height viewports are allowed when this extension is enabled (internal
- issue 1202).
- * Fix slink:VkDescriptorSetLayoutBinding description so that shader stages
- always use descriptor bindings, not the other way around (internal issue
- 1206).
- * Fix field name for
- slink:VkInputAttachmentAspectReference::pname:inputAttachmentIndex
- (internal issue 1210).
-
-Other Issues:
-
- * Fix a few broken links in the <<versions-1.1, Version 1.1>> appendix.
- * Replace a few old refBegin/refEnd tags with open block markup around
- interfaces, and remove old KHX VUID tags that were breaking the valid
- usage statement extraction.
- * Fix error codes accidentally tagged as success codes in `vk.xml` for
- flink:vkGetSwapchainCounterEXT.
- * Added valid usage statements for ftext:vkBind*Memory2 input structures
- stext:VkBind*MemoryInfo, and fix a pname:image -> pname:buffer typo in a
- couple of places.
- * Fix swapped descriptions of elink:VkDescriptorType enums
- ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE and
- ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE (reported via tweet).
-
-New Extensions:
-
- * `VK_ANDROID_external_memory_android_hardware_buffer`
-
------------------------------------------------------
-
-Change log for March 7, 2018 Vulkan 1.1.70 spec update:
-
- * Vulkan 1.1 initial release. Bump API patch number and header version
- number to 70 for this update. The patch number will be used for both
- Vulkan 1.1 and Vulkan 1.0 updates, and continues to increment
- continuously from the previous Vulkan 1.0.69 update.
-
- NOTE: We are not publishing an updated 1.0.70 specification, or 1.1
- reference pages, along with 1.1.70. There are still minor issues to work
- out with those build targets. However, we will soon generate all three
- types of documents as part of the regular spec update cycle.
-
- NOTE: The GitHub KhronosGroup/Vulkan-Docs repository now maintains the
- current specification in the `master` branch. The `1.0` branch is out of
- date and will not be maintained, since we will be generating both 1.1
- and 1.0 specifications from the `master` branch in the future.
-
-Github Issues:
-
- * Clarify how mapped memory ranges are flushed in
- flink:vkFlushMappedMemoryRanges (public issue 127).
- * Specify that <<synchronization-pipeline-stages, Pipeline Stages>> are a
- list of tasks that each command performs, rather than necessarily being
- discrete pieces of hardware that one task flows through. Add a
- "`synchronization command`" pipeline type which all synchronization
- command execute (it's just TOP + BOTTOM), with an explanatory note
- (public issue 554).
-
-Internal Issues:
-
- * Regenerate all images used in the spec in Inkscape with a consistent
- look-and-feel, and adjust image size attributes so they're all legible,
- and not too large with respect to the spec body text (internal issue
- 701).
- * Document in the <<extensions,extensions>> appendix and in the style
- guide that `KHX` extensions are no longer supported or used in the
- Vulkan 1.1 timeframe (internal issue 714).
- * Remove the leftover equations_temp directory after PDF build completes
- (internal issue 925).
- * Update the <<credits, Credits (Informative)>> appendix to include
- contributors to Vulkan 1.1, and to list them according to the API
- version(s) they contributed to (internal issue 987).
- * Add a NOTE to the introduction explaining that interfaces defined by
- extensions which were promoted to Vulkan 1.1 are now expressed as
- aliases of the Vulkan 1.1 type (internal issue 991).
- * Instrument spec source conditionals so spec can be built with 1.1
- features, extensions promoted to 1.1, or both (internal issues 992,
- 998).
- * Modify the XML schema and tools to support explicit aliasing of types,
- structures, and commands, and use this to express the promotion of 1.0
- extensions to 1.1 core features, by making the extension interfaces
- aliases of the core features they were promoted to. Mark up promoted
- interfaces to allow still generating 1.0 + extension specifications
- (internal issue 991).
- * Platform names, along with corresponding preprocessor symbols to enable
- extensions specific to those platforms, are now reserved in vk.xml using
- the <platform> tag. Update the registry schema and schema specification
- to match (internal issue 1011).
- * Updated the <<textures-texel-replacement, Texel Replacement>> section to
- clarify that reads from invalid texels for image resources result in
- undefined values (internal issue 1014).
- * Modify description of patch version so it continues to increment across
- minor version changes (internal issue 1033).
- * Clarify and unify language describing physical device-level core and
- extension functionality in the <<fundamentals-validusage-extensions,
- Valid Usage for Extensions>>, <<fundamentals-validusage-versions, Valid
- Usage for Newer Core Versions>>, <<initialization-functionpointers
- Command Function Pointers>>, <<initialization-phys-dev-extensions,
- Extending Physical Device From Device Extensions>>
- <<extended-functionality-instance-extensions-and-devices, Instance
- Extensions and Device Extensions>> sections and for
- flink:vkGetPhysicalDeviceImageFormatProperties2. This documents that
- instance-level functionality is tied to the loader, and independent of
- the ICD; physical device-level functionality is tied to the ICD, and
- associated with device extensions; physical devices are treated more
- uniformly between core and extensions; and instance and physical
- versions can be different (internal issue 1048).
- * Updated the <<commandbuffers-lifecycle, Command Buffer Lifecycle>>
- section to clarify the ability for pending command buffers to transition
- to the invalid state after submission, and add a command buffer
- lifecycle diagram (internal issue 1050).
- * Clarify that some flink:VkDescriptorUpdateTemplateCreateInfo parameters
- are ignored when push descriptors are not supported (internal issue
- 1054).
- * Specify that flink:vkCreateImage will return an error if the image is
- too large, in a NOTE in the slink:VkImageFormatProperties description
- (internal issue 1078).
- * Remove near-duplicate NOTEs about when to query function pointers
- dynamically in the <<initialization, Initialization>> chapter and
- replace by extending the NOTE in the <<fundamentals-abi, Application
- Binary Interface>> section (internal issue 1085).
- * Restore missing references to "`Sparse Resource Features`" in the
- flink:VkBufferCreateFlagBits description (internal issue 1086).
- * Tidy up definitions of descriptor types in the `GL_KHR_vulkan_glsl`
- specification, the <<descriptorsets, Resource Descriptors>> section and
- its subsections, and the <<interfaces-resources-descset, Descriptor Set
- Interface>> for consistency, reduction of duplicate information, and
- removal of GLSL correspondance/examples (internal issue 1090).
- * Correctly describe code:PrimitiveId as an Input for tessellation control
- and evaluation shaders, not an Output (internal issue 1109).
- * Relax the requirements on chroma offsets for nearest filtering in
- <<textures-implict-reconstruction, Implicit Reconstruction>> (internal
- issue 1116).
-
-Other Issues:
-
- * Clarify the intended relationship between specification language and
- certain terms defined in the Khronos Intellectual Property Rights
- policy. Specific changes include:
- ** Rewrote IP/Copyright preamble and introduction to better agree with
- normative language both as laid out in the introduction, and the
- Khronos IPR policy.
- ** Added notion of fully informative sections, which are now tagged with
- "`(Informative)`" in their titles.
- ** Removed non-normative uses of the phrase "`not required`"
- ** Clarified the distinction between terms "`optional`" and "`not
- required:`" as they relate to the IPR Policy, and updated specification
- text to use terms consistent with the intent.
- ** Reduced additions to RFC 2119, and ensured the specification agreed
- with the leaner language.
- ** Removed the terms "`hardware`", "`software`", "`CPU`", and "`GPU`" from
- normative text.
- ** Moved several paragraphs that should not have been normative to
- informative notes.
- ** Clarified a number of definitions in the Glossary.
- ** Updated the document writing guide to match new terminology changes.
- * Explicitly state in the <<fundamentals-objectmodel-lifetime-acquire,
- application memory lifetime>> language that for objects other than
- descriptor sets, a slink:VkDescriptorSetLayout object used in the
- creation of another object (such as slink:VkPipelineLayout or
- slink:VkDescriptorUpdateTemplateKHR) is only in use during the creation
- of that object and can be safely destroyed afterwards.
- * Updated the <<textures-scale-factor, Scale Factor Operation>> section to
- use the ratio of anisotropy, rather than the integer sample rate, to
- perform the LOD calculation. The spec still allows use of the sample
- rate as the value used to calculate the LOD, but no longer requires it.
- * Update `vulkan_ext.c` to include all platform-related definitions from
- the Vulkan platform headers, following the split of the headers into
- platform-specific and non-platform-specific files.
- * Fix bogus anchor name in the <<commandbuffers, Command Buffers>> chapter
- which accidentally duplicated an anchor in the pipelines chapter. There
- were no reference to this anchor, fortunately.
- * Add valid usage statement for slink:VkWriteDescriptorSet and
- slink:VkCopyDescriptorSet requiring that the slink:VkDescriptorSetLayout
- used to allocate the source and destination sets must not have been
- destroyed at the time flink:vkUpdateDescriptorSets is called.
- * Document mapping of subgroup barrier functions to SPIR-V, and clarify a
- place where subgroupBarrier sounds like it's execution-only in the
- standalone `GL_KHR_shader_subgroup` specification.
- * Use an HTML stylesheet derived from the Asciidoctor `colony` theme, with
- the default Arial font family replaced by the sans-serif Noto font
- family.
- * Numerous minor updates to README.adoc, build scripts, Makefiles, and
- registry and style guide specifications to support Vulkan 1.1 outputs,
- use them as defaults, and remove mention of `KHX` extensions, which are
- no longer supported.
-
-
-New Extensions:
-
- * `VK_EXT_vertex_attrib_divisor`
-
------------------------------------------------------
-
-Change log for February 19, 2018 Vulkan 1.0.69 spec update:
-
- * Bump API patch number and header version number to 69 for this update.
-
-Github Issues:
-
- * Clean up description of synchronization for flink:vkAcquireNextImageKHR
- (public issue 626).
- * Move valid usage statements requiring offset and extent to respect image
- transfer granularity requirements of the queue family they are submitted
- against from slink:VkImageCopy and slink:VkBufferImageCopy to the
- corresponding flink:vkCmdCopyImage, flink:vkCmdCopyBufferToImage, and
- flink:vkCmdCopyImageToBuffer commands, where are relevant information is
- known (public issue 654).
- * Clarify that flink:vkGetDeviceProcAddr only supports device-level
- commands (public issue 655).
-
-Internal Issues:
-
- * Associate each elink:VkDescriptorType with a type of descriptor, and
- link to descriptions of those types (internal issue 860).
- * Rework valid usage extraction script to better utilize and respond to
- spec markup, and fix some spec markup accordingly (internal issues 846,
- 909, 945).
- * Rephrase flink:vkCmdPushConstants valid usage to allow overlapping push
- constant ranges in different shader stages (internal issue 1103).
- * Fix problem with diff_html target in extension.rb (internal issue 1104).
- * Modify valid usage statements for slink:VkClearDepthStencilValue,
- slink:VkGraphicsPipelineCreateInfo, slink:VkViewport, and
- flink:vkCmdSetDepthBounds, and the description of vkCmdSetDepthBias, to
- clarify that clamping is applied if and only if the
- `VK_EXT_depth_range_unrestricted` is not enabled (internal issue 1124),
- in versions of the specification built with that extension included.
- * Resolve contradictions and use of undefined "`per-sample shading`" term
- in the <<primsrast-sampleshading, Sample Shading>> and
- <<shaders-fragment-execution, Fragment Shader Execution>> sections; for
- the <<features-features-sampleRateShading, sampleRateShading feature>>;
- for code:FragCoord, code:SampleId, and code:SamplePosition; and for
- slink:sname:VkPipelineMultisampleStateCreateInfo (internal issue 1134).
- * Clarify the meaning of the ptext:maxDescriptorSet* limits in footnote 8
- of the <<features-limits-required,Required Limits>> table (internal
- issue 1139).
- * Fix broken NOTE markup in slink:VkSamplerCreateInfo.txt (internal issue
- 1140).
- * Remove extend comparison language from valid usage statement for
- slink:VkImageCreateInfo, turning it into a simple validation of
- pname:mipLevels against pname:maxMipLevels (internal issue 1151).
- * Update valid usage statements for slink:VkImageCopy when the
- `VK_KHR_maintenance1` extension is enabled to allow multi-slice 2D <->
- 3D copies when the pnaem:extent.depth parameter specifies the number of
- layers being copied, and matches the
- slink:VkImageSubresourceLayers.layerCount of the 2D image (internal
- issue 1152).
- * Rephrase memory / control barrier rules in the
- <<spirvenv-module-validation, Validation Rules within a Module>> section
- to avoid "`not use none`", which could be misconstrued to allow no
- synchronization semantics, and only storage class semantics (internal
- issue 1154).
-
-Other Issues:
-
- * Move GLSL extension specifications to the KhronosGroup/GLSL repository
- on Github.
- * Add missing description of ename:VK_FILTER_CUBIC_IMG enum to
- slink:VkFilter.
- * Update description of code:PrimitiveId in the
- <<interfaces-builtin-variables,Built-In Variables>> section to clarify
- its behavior.
- * Disallow disjoint images from being used with dedicated-memory images in
- slink:VkMemoryDedicatedAllocateInfoKHR.
- * Update README to suggest older versions of "mathematical" and
- "ruby-gems" packages for use on Cygwin.
- * Fix typos
-
-New Extensions:
-
- * `VK_AMD_buffer_marker`
-
------------------------------------------------------
-
-Change log for January 15, 2018 Vulkan 1.0.68 spec update:
-
- * Bump API patch number and header version number to 68 for this update.
-
-Github Issues:
-
- * Added more details in the
- <<extended-functionality-extensions-compatibility, Extension
- Compatibility>> section, allowing explicit incompatibilities, and
- simplify corresponding language in the style guide, which now defers to
- the API Specification on this point (public issue 638).
- * Fix typo in description of slink:VkCommandBufferLevel::pname:level
- (public issue 651).
- * Only include extension-dependent valid usage statement for
- slink:VkImageSubresourceRange, and note that the extension names for
- header files described in the <<boilerplate-wsi-header, Window
- System-Specific Header Control>> section are only valid links, when the
- specification being viewed is built with the corresponding extensions
- enabled (public issue 652).
-
-Internal Issues:
-
- * Add language to elink:VkResult specifying that when commands return an
- error, output parameter contents are undefined instead of unmodified
- (except for pname:sType and pname:pNext). Note that this is a behavior
- change. Add notes calling out slink:VkImageFormatProperties as an
- exception (internal issue 1118).
- * Add "`general-purpose`" to the style guide, and correct existing uses of
- "`general purpose`" as an adjective (internal issue 1121).
- * Add the ename:VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT token
- for the `VK_EXT_validation_cache` extension, following the same naming
- pattern as other tokens in the extension, but keep the old
- ename:VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT token around for
- backwards compatibility (internal issue 1126).
-
-Other Issues:
-
- * Specify that flink:vkCmdSetDiscardRectangleEXT does not affect copies or
- clears, matching existing language for the scissor rectangle test.
- * Move the <<boilerplate-sType, pname:sType>> definition from the
- boilerplate appendix to the Fundamentals chapter, putting it together
- with the valid usage of pname:sType rather than having the definition
- split across two places.
- * Inline all of the etext:Vk*Flags definitions, moving each one from the
- boilerplate appendix to appear either after the corresponding
- etext:Vk*FlagBits value if one is defined, or after the first structure
- that includes them if not.
-
------------------------------------------------------
-
-Change log for January 5, 2018 Vulkan 1.0.67 spec update:
-
- * Bump API patch number and header version number to 67 for this update.
- * Update copyright dates to 2018
-
-Github Issues:
-
- * Fix texture lookup functions in `GL_KHR_vulkan_glsl` specification
- (public pull request 363).
- * Clarify the state waited semaphores are left in when a call to
- flink:vkQueuePresentKHR fails (public issue 572).
- * Cleanup descriptions of slink:VkObjectTablePushConstantEntryNVX and
- slink:VkObjectTableDescriptorSetEntryNVX (public issue 583)
- * Remove redundant flink:vkCmdSetDiscardRectangleEXT valid usage
- statements (public pull 586).
- * Make dynamic state array length valid usage statements implicit for
- flink:vkCmdSetViewportWScalingNV, flink:vkCmdSetDiscardRectangleEXT, and
- flink:vkCmdSetViewport (public pull 589).
- * Clarify meaning of window extent (0,0) in slink:VkSwapchainKHR for the
- Windows and X11 platforms, in their respective extensions (public issue
- 590).
- * Allow flink:vkGetPastPresentationTimingGOOGLE to return
- ename:VK_INCOMPLETE (public issue 604).
- * Add synchronization valid usage statements to flink:vkAcquireNextImage
- (public pull 611).
- * Fix some broken external links and internal xrefs (public pull 613).
- * Clean up slink:VkViewport valid usage statements in the presence or
- absence of relevant extensions (public pull 623).
- * Remove
- ename:VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR
- token from VK_KHR_maintenance2 from the non-extension VU path for
- slink:VkGraphicsPipelineCreateInfo (public issue 628).
- * Miscellaneous minor markup fixes - extension name strings (public pull
- 631), Notes (pull 633), queue names emitted by generator scripts (pull
- 634), block formatting in slink:VkDescriptorUpdateTemplateEntryKHR (pull
- 635), ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG (pull
- 641), quotes and apostrophes (pull 643),
- * Miscellaneous minor grammar fixes (public pull 644).
- * Fix markup macros so usage like ptext:*Src* works (public pull 647).
-
-Internal Issues:
-
- * Clarify in the `VK_KHR_surface` and `VK_KHR_swapchain` extensions that
- parameter combinations which aren't supported for normal images are also
- unsupported for presentable images, even if the parameter values are
- individually supported as reported by the surface capability queries
- (internal issue 1029).
- * Fixed XML typo in the valid value field of the pname:sType member of
- slink:VkPhysicalDeviceExternalMemoryHostPropertiesEXT (internal issue
- 1100).
-
-Other Issues:
-
- * Add memory semantics validity rules to the <<spirvenv-module-validation,
- Validation Rules within a Module>> section of the SPIR-V environment
- appendix, and specify that sequentiality consistency is not supported.
- This forbids certain cases like "`Load+Release`" that we don't expect to
- ever be meaningful.
- * Document mapping of OpenGL Shading Language barriers to SPIR-V scope and
- semantics in the `GL_KHR_vulkan_glsl` specification.
-
-New Extensions:
-
- * `VK_EXT_conservative_rasterization`
-
------------------------------------------------------
-
-Change log for November 27, 2017 Vulkan 1.0.66 spec update:
-
- * Bump API patch number and header version number to 66 for this update.
-
-Github Issues:
-
- * Clarified how and when ename:VK_ERROR_TOO_MANY_OBJECTS is generated in
- flink:vkAllocate Memory, and remove incorrect valid usage statement
- about exceeding the API limit (public issue 356).
- * Minor clarification of the description of
- flink:vkUpdateDescriptorSetWithTemplateKHR::pname:descriptorUpdateTemplate
- (public issue 564).
- * Minor fixes for flink:vkCmdSetViewportWScalingNV (public pull request
- 588).
- * Fix random name markup issues (public pull request 603).
- * Fix code:BuiltIn decoration typo in the <<fxvertex-attrib, Vertex
- Attributes>> section (public pull request 606).
- * Fix synchronization language following the definition of
- flink:vkAcquireNextImageKHR (public issue 607).
- * Restore descriptions of several commands and structures missing from the
- generated spec due to a mistyped asciidoctor conditional (public issue
- 612).
- * Fix 1.0.41 changelog to refer to public issues 403/404 (public issue
- 618).
-
-Internal Issues:
-
- * Refactor valid usage statements with internal conditionals in
- `copies.txt`, `pipelines.txt`, `renderpass.txt`, and `resources.txt` so
- each branch of the conditional appears as a standalone statement which
- can contain a separate VUID. This should have no impact on the generated
- specs, but is necessary given the present state of the VU extractor and
- the validation layer code that consumes them (internal issue 1043).
- * Fix VkQueueGlobalPriorityEXT enum values missing _EXT suffix (internal
- issue 1045).
- * Clarified initial ownership of resources bound to shared memory objects,
- (internal issue 1068).
- * Fix duplicated valid usage ID tag for flink:vkCmdCopyImage, and make the
- required layouts include ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL in
- both cases (internal issue 1084).
-
-Other Issues:
-
- * Remove the noise functions from GLSL for SPIR-V for Vulkan in the
- `GL_KHR_vulkan_glsl.txt` extension.
-
-New Extensions:
-
- * `VK_EXT_external_memory_host`
- * `VK_EXT_external_memory_dma_buf`
- * `VK_EXT_queue_family_foreign`
-
------------------------------------------------------
-
-Change log for October 27, 2017 Vulkan 1.0.65 spec update:
-
- * Bump API patch number and header version number to 65 for this update.
-
-Github Issues:
-
- * Replaced inaccurate "`pixel`" with "`texel`" or "`compressed texel
- block`" as appropriate in the <<sparsememory, Sparse Resources>> chapter
- (public issue 86).
- * Attempt to clarify security/integrity guarantees in the
- <<fundamentals-errors, Errors>> section (public issue 147).
- * Update the <<memory-device,Device Memory>> section with clarifications
- and markup fixes (public pull request 194).
- * Fix typo VkDeviceCreateInfo -> slink:VkDebugMarkerObjectNameInfoEXT in
- sample code for `VK_EXT_debug_marker` extension (public pull request
- 227).
- * Clarified slink:VkFramebufferCreateInfo language regarding concurrent
- use of attachment resources during a render pass instance (public issue
- 299).
- * Added overlap rules for destination regions in <<copies,copy commands>>.
- Also unified the sparse and non-sparse source-destination overlap rules,
- since the non-sparse rules were technically inaccurate in the face of
- aliasing in flink:vkBindMemory2 - the new rules are true regardless
- (public issue 317).
- * Clarified the <<features-features-samplerAnisotropy,
- pname:samplerAnisotropy feature>> to only affect the
- slink:VkSamplerCreateInfo::pname:anisotropyEnable value, and that
- pname:maxAnisotropy is ignored when pname:anisotropyEnable is VK_FALSE
- (public issue 503).
- * Clarify pointer valid usage statements to use "`valid pointer to valid
- _object_`" terminology and update the
- <<fundamentals-validusage-pointers,Valid Usage for Pointers>> section
- accordingly (public pull request 547).
- * Some operations that use integer coordinates can also accept a LOD to
- sample from. Add a description of that selection and the validity
- conditions in the new <<textures-integer-coordinate-operations, Integer
- Texel Coordinate Operations>> section (public issue 548).
- * Update stext:VkImageSubresource* valid usage statements (public pull
- request 550).
- * Added text tying ename:VK_OUT_OF_POOL_MEMORY error for
- flink:vkAllocateDescriptorSets to the number of descriptor types in the
- allocating pool. Removed redundant "`length`" text about number of
- descriptors returned (public issue 582).
- * Update slink:VkSwapchainCreateInfoKHR descriptions (public pull request
- 585).
- * Update slink:VkPipelineViewportWScalingStateCreateInfoNV and related
- structures' valid usage statements (public pull request 587).
- * Change some dates to conform to ISO 8601 as specified in the style guide
- (public pull request 601).
- * Fix some math markup problems and be more consistent in use of asciidoc
- math markup (public pull request 602).
-
-Internal Issues:
-
- * Clarified that attribute reads from incomplete vertex buffer elements
- are considered out of bounds accesses, in the
- slink:VkPhysicalDeviceFeatures and flink:vkCmdBindVertexBuffers.txt
- sections (internal issue 842).
-
------------------------------------------------------
-
-Change log for October 20, 2017 Vulkan 1.0.64 spec update:
-
- * Bump API patch number and header version number to 64 for this update.
-
-Github Issues:
-
- * Add chapter name to the PDF page footer (public pull request 458).
- * Fix several mistaken references to the nonexistent etext:VK_DEVICE_LOST
- status to etext:VK_ERROR_DEVICE_LOST (public pull request 502).
- * Fix description of the tlink:PFN_vkDebugReportCallbackEXT debug report
- callback function pointer to match the validation layer behavior (public
- issue 534).
- * Document experimental KHX extensions and alternate vendor author IDs
- also ending in X in more detail in the <<extensions, Layers &
- Extensions>> appendix, the extensions section of the style guide, and
- the registry schema description document (public issues 536, 580).
- * Fix references to ptext:pDepthStencil to properly refer to
- pname:pDepthStencilState or pname:pRasterizationState as appropriate in
- the slink:VkGraphicsPipelineCreateInfo description (public issue 542).
- * Fix wrong parameter name in slink:VkPipelineMultisampleStateCreateInfo
- valid usage (public pull request 571).
-
-Internal Issues:
-
- * Update the style guide to describe how to write LaTeX math expressions
- in table cells (internal issue 908).
- * Define how framebuffer-local dependencies work between subpasses with
- the same or different numbers of samples, in the
- slink:VkSubpassDescription and <<synchronization-framebuffer-regions,
- Framebuffer Region Dependencies>> sections. This clarifies which samples
- in an input attachment you are allowed to access after a
- framebuffer-local dependency (internal issue 915).
- * Specify which storage classes can have an initializer in the
- <<spirvenv-module-validation, Validation Rules within a Module>> section
- (internal issue 1023).
- * Use "LOD" consistently for "level-of-detail", to eliminate spelling
- inconsistencies. The term is already standardized in the Glossary
- (internal issue 1027).
-
-Other Issues:
-
- * Fix false positives in Makefile dependencies when rules fail, by
- deleting partially-made targets.
-
-New Extensions:
-
- * `VK_AMD_shader_info`
-
------------------------------------------------------
-
-Change log for October 13, 2017 Vulkan 1.0.63 spec update:
-
- * Bump API patch number and header version number to 63 for this update.
-
-Github Issues:
-
- * Add missing valid usage statements for ptext:maxDescriptorSets*,
- ptext:maxPerStageDescriptorInputAttachments, and
- ptext:maxPerStageResources to slink:VkPipelineLayoutCreateInfo.txt,
- flink:VkComputePipelineCreateInfo, and
- flink:VkGraphicsPipelineCreateInfo (public issue 546).
- * Fix typos in ftext:vkCmdDraw*AMD descriptions (public pull request 549).
- * Fixed flink:vkCmdWriteTimestamp so it is not unnecessarily restricted to
- queues supporting graphics or compute operations (public issue 558).
- * Improvements to valid usage generator for output `*Flags` pointer
- parameters and for some `void *` parameters (public pull requests 560,
- 562).
- * Document `altlen` attribute in XML schema as valid C99 syntax and tweak
- `vk.xml` to match (public pull request 566).
- * Clarify when pname:fence is signaled by flink:vkQueueSubmit in a more
- obvious place (public issue 577).
-
-Internal Issues:
-
- * Specify a list of supported SPIR-V Storage Classes in the
- <<spirvenv-module-validation, Validation Rules within a Module>>
- appendix (internal SPIR-V issue 166).
- * Relax the shared semaphore wait timeout requirement in the
- <<synchronization-semaphores-importing, Importing Semaphore Payloads>>
- section (internal issue 820).
- * Update the <<textures-image-level-selection, Image Level(s) Selection>>
- equations so that the parameters returned by the level-of-detail query
- appear explicitly, also fixing the issue that linear filtering would
- select a level below the base level for magnification (internal issue
- 926).
- * Disallow creation of a swapchain with zero pname:imageExtent in
- slink:VkSurfaceCapabilitiesKHR and slink:VkSwapchainCreateInfoKHR
- (internal issue 1020).
-
-Other Issues:
-
- * Clarify in <<textures-operation-validation,Image View Validation>> that
- the layout of subresources in an image view must have a layout that
- matches that written into the descriptor, and that this section is about
- validating image views, not images.
-
-New Extensions:
-
- * `VK_EXT_global_priority`
-
------------------------------------------------------
-
-Change log for October 6, 2017 Vulkan 1.0.62 spec update:
-
- * Bump API patch number and header version number to 62 for this update.
-
-Github Issues:
-
- * Move asciidoc conditionals for `VK_KHR_maintenance1` in
- slink:VkDescriptorSetAllocateInfo so valid usage statements for
- `VK_KHR_push_descriptor` aren't accidentally removed when the first
- extension isn't enabled (public issue 573).
-
-Internal Issues:
-
- * Specify constraints on concurrent access to fences that share payload in
- the <<synchronization-fences-importing, Importing Fence Payloads>> and
- <<synchronization-semaphores-waiting-state, Semaphore State Requirements
- For Wait Operations>> sections (internal issue 820).
- * Define the term "`retired swapchain`", reorganize some swapchain
- language, and improve language for pname:oldSwapchain in
- flink:VkSwapchainCreateInfoKHR, the <<swapchain-wsi-image-create-info>>
- table, flink:vkDestroySwapchainKHR, and flink:vkAcquireNextImage2KHX
- (internal issue 869).
- * Describe in the <<writing-arrays, Describing Properties of Array
- Elements>> section of the style guide how and when to use "`each`" and
- "`any`" to refer to properties of array elements, and make those uses in
- the specification consistent (internal issue 884).
- * Clarified that events cannot be used for cross-queue synchronization in
- the <<synchronization-events, Events>> section and for
- flink:vkCmdWaitEvents (internal issue 970).
- * Add success and error codes to +vk.xml+ for
- flink:vkCreateValidationCacheEXT (internal issue 995).
- * Clarify aspect mask usage for image memory barriers of multi-plane
- images in slink:VkImageSubresourceRange, slink:VkImageMemoryBarrier, and
- the <<textures-layout-validation, Layout Validation>> section (internal
- issue 996).
-
-Other Issues:
-
- * Fixed typo in flink:VkRenderPassSampleLocationsBeginInfoEXT (renamed
- field pname:pSubpassSampleLocations to
- pname:pPostSubpassSampleLocations).
- * Add missing buffer usage requirements for indirect draws in
- flink:vkCmdDrawIndirect, flink:vkCmdDrawIndirectCountAMD,
- flink:vkCmdDrawIndexedIndirect, and
- flink:vkCmdDrawIndexedIndirectCountAMD.
- * Modify Makefile to allow specification to build in git "`detached HEAD`"
- state.
- * Update valid usage ID generation script to allow recursively operating
- on all `.txt` files in a specified directory, and move the `startVUID`
- tracking information into a separate python file that is automatically
- updated by the script.
- * Fixed errors in API example code for
- flink:vkUpdateDescriptorSetWithTemplateKHR and
- flink:vkCmdPushDescriptorSetWithTemplateKHR.
-
-New Extensions:
-
- * Add +vk.xml+ entries for pending `VK_ANDROID_native_buffer` extension
- (note, this extension is not yet enabled).
- * `VK_AMD_shader_image_load_store_lod`
-
------------------------------------------------------
-
-Change log for September 15, 2017 Vulkan 1.0.61 spec update:
-
- * Bump API patch number and header version number to 61 for this update.
-
-Github Issues:
-
- * Provide alternate length attributes (altlen=) in the XML schema, for
- those using length attributes to generate code instead of documentation
- (public issue 555).
- * Fix erroneous references to `latex:` being used for asciidoc math
- markup, rather than `latexmath:` (public pull request 556).
- * Add author ID to XML for Kazan software renderer (public pull request
- 557).
-
-Internal Issues:
-
- * Add the <<fundamentals-abi,Application Binary Interface>> section
- describing platform ABI requirements and recommendations, add examples
- of function and function pointer declarations to the
- <<boilerplate-platform-specific-calling-conventions, Platform-Specific
- Calling Conventions>> section, and remove related language that existed
- elsewhere in the specification (internal issue 64).
- * Describe where to document valid usage interactions of chained
- structures in the style guide, and fix one case now appearing in
- slink:VkBufferCreateInfo instead of the child
- slink:VkDedicatedAllocationBufferCreateInfoNV structure (internal issue
- 715).
- * Add example to the style guide of describing enumerated types which are
- empty when the spec is built without relevant extensions enabled, and
- apply it to existing examples for
- elink:VkDescriptorSetLayoutCreateFlagBits and
- elink:VkSubpassDescriptionFlagBits (internal issue 864).
- * Add a note to the <<fundamentals-validusage-enums, Valid Usage for
- Enumerated Types>> section that the special values suffixed with
- etext:_BEGIN_RANGE, etext:_END_RANGE, etext:_RANGE_SIZE and
- etext:_MAX_ENUM are not part of the API and should: not be used by
- applications (internal issue 872).
- * Added note to flink:vkCmdUpdateBuffers explaining the performance
- penalty for copies done in this way, and why the upper copy limit is
- what it is (internal issue 952).
- * Update `VK_KHX_device_group` to split some functionality into the new
- `VK_KHR_bind_memory2` extension, and rename that functionality (internal
- issue 969).
- * Remove *Status* fields from extension appendices, since they are by
- definition published and complete by the time they reach the public
- github repository (internal issue 973).
-
-Other Issues:
-
- * Update Data Format specification dependency to version 1.2 and change
- references to DF sections accordingly.
- * Update XML to make the pname:pAllocator parameter of
- flink:vkRegisterDeviceEventEXT and flink:vkRegisterDisplayEventEXT in
- the `VK_EXT_display_control` extension as optional.
-
-New Extensions:
-
- * `VK_KHR_bind_memory2`
- * `VK_KHR_image_format_list`
- * `VK_KHR_maintenance2`
- * `VK_KHR_sampler_ycbcr_conversion`
-
------------------------------------------------------
-
-Change log for September 5, 2017 Vulkan 1.0.60 spec update:
-
- * Bump API patch number and header version number to 60 for this update.
-
-Github Issues:
-
- * Document that <<queries-timestamps, Timestamp Queries>> can only be
- meaningfully compared when they are written from the same queue (public
- issue 216).
- * Document that the `<extension>` tag `type` attribute is required for
- non-disabled extensions (derived from, but does not close public issue
- 354).
- * Clean up registry schema length attribute descriptions to be consistent
- and correct (public issue 555).
-
-Internal Issues:
-
- * Replace as much of the hand-written extension appendix metadata as
- possible with asciidoc includes generated from corresponding attributes
- of +vk.xml+, and enhance the style guide to match. This avoids
- inconsistencies between +vk.xml+ and the appendices, and produces a more
- uniform style (internal issue 137).
- * Remove the generated extDependency.{py,sh} files from the tree and
- create them dynamically on demand instead, reducing merge conflicts
- (internal issue 713).
- * Add a prototype tool for generating in-place difference markup for
- sections guarded by asciidoc conditionals, and new syntax for open
- blocks to support it (internal issue 833).
- * Remove unnecessary restriction of etext:*SYNC_FD_BIT_KHR external handle
- types to the same physical device in the
- slink:VkPhysicalDeviceIDPropertiesKHR,
- flink:VkImportMemoryWin32HandleInfoKHR,
- slink:VkImportFenceWin32HandleInfoKHR, slink:VkImportFenceFdInfoKHR,
- slink:VkImportSemaphoreWin32HandleInfoKHR,
- slink:VkImportSemaphoreFdInfoKHR
- <<external-memory-handle-types-compatibility, External memory handle
- types compatibility>>, <<external-semaphore-handle-types-compatibility,
- External semaphore handle types compatibility>>, and
- <<external-fence-handle-types-compatibility, External fence handle types
- compatibility>> sections (internal issue 956).
-
-Other Issues:
-
- * Remove dependency of +VK_KHX_device_group+ on +VK_KHR_swapchain+ (there
- is an interaction, but not a strict dependency), and add a new
- `extension` attribute to the `<require` XML tag to allow classifying a
- subset of interfaces of an extension as requiring another extension.
- Update the registry schema and documentation accordingly.
-
-New Extensions:
-
- * `VK_AMD_shader_fragment_mask` (and related `GL_AMD_shader_fragment_mask`
- GLSL extension)
- * `VK_EXT_sample_locations`
- * `VK_EXT_validation_cache`
-
------------------------------------------------------
-
-Change log for August 19, 2017 Vulkan 1.0.59 spec update:
-
- * Bump API patch number and header version number to 59 for this update.
-
-Github Issues:
-
- * Fix a few missing Implicit Valid Usage statements to indicate that a
- common parent of two objects is required (public issue 497).
- * Clarify render pass synchronization language for
- slink:VkSubpassDependency and <<renderpass,render passes>> (public
- issue 531).
- * Rename ename:VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT to
- ename:VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT for consistency, and
- add an alias for backwards compatibility (public issue 539).
-
-Internal Issues:
-
- * Add an explanation to the <<interfaces-builtin-variables-layer,
- code:Layer>> description explaining that writing to invalid layers
- results may or may not result in primitives being processed and fragment
- shaders being run, and gives undefined results in the framebuffer
- (internal issue 614)
- * Add valid usage statement for slink:VkDescriptorSetLayoutBinding
- requiring that input attachment descriptor bindings must not use
- non-fragment stages (internal issue 933).
-
-Other Issues:
-
- * Makes description of pname:loadOp and pname:storeOp easier to read in
- the <<renderpass-load-store-ops>> section.
-
-New Extensions:
-
- * `VK_EXT_shader_stencil_export`
-
------------------------------------------------------
-
-Change log for August 14, 2017 Vulkan 1.0.58 spec update:
-
- * Bump API patch number and header version number to 58 for this update.
-
-Github Issues:
-
- * Update the <<interfaces-resources-descset,Descriptor Set Interface>>
- section to allow multiple variables with the same descriptor set/binding
- decorations, and require that all variables that are statically used
- must be consistent with the pipeline layout. Allow
- ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER to be used with texture
- and sampler variables (public issues 522, 524).
-
-Internal Issues:
-
- * Replace networkx package used for extension dependency generation with a
- homegrown network dependency traverser (internal issue 713).
- * Specify in the <<interfaces-fragmentoutput, Fragment Output Interface>>
- section that if a fragment shader writes integers that cannot be
- represented in the format of the colour attachment, then the result is
- undefined (internal issue 893).
- * Separate malformed valid usage statement for
- slink:VkPipelineRasterizationStateCreateInfo into two (internal issue
- 918).
- * Fix cases where the term 'pNext chain' is incorrectly used in reference
- to functions, rather than their parameters. Replace 'pNext list' with
- 'pNext chain'. Fixed typo in the example code of
- +VK_KHR_dedicated_allocation+ (internal issue 944).
- * Fix typo in elink:VkExternalSemaphoreHandleTypeFlagBitsKHR enum
- descriptions, replacing
- etext:VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FENCE_FD_BIT_KHR with
- ename:VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR, and make the
- description more consistent with
- VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR (internal issue 950).
-
-Other Issues:
-
- * Clarify how pipeline stage masks affect
- <<synchronization-pipeline-stages-masks, access and synchronization
- scopes>>.
- * Clarify that dedicated allocations do not allow aliasing in the
- flink:vkBindBufferMemory and flink:vkBindImageMemory valid usage
- statements.
- * Correct specification of pname:dynamicCount for push_constant token in
- slink:VkIndirectCommandsLayoutNVX.
-
-New Extensions:
-
- * `VK_EXT_shader_viewport_index_layer`
-
------------------------------------------------------
-
-Change log for August 1, 2017 Vulkan 1.0.57 spec update:
-
- * Bump API patch number and header version number to 57 for this update.
-
-Github Issues:
-
- * Fix error in description of ename:VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK
- block size (public issue 342).
- * Update documentation of ename:VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT
- to explicitly mention both graphics and compute pipelines (public issue
- 525).
-
-Internal Issues:
-
- * Document that
- slink:VkPhysicalDeviceLimits::pname:framebufferColorSampleCounts does
- not cover integer formats (internal issue 550).
- * Add a note under slink:VkImageViewCreateInfo describing how values meant
- for one format can be sanitized when used via another format (internal
- issue 927).
- * Add valid usage statements to ftext:vkCmd* documenting that image
- subresources used as attachments must not be accessed as non-attachments
- in a render pass (internal issue 929).
- * Remove obsolete 'validextensionstructs' attribute from +vk.xml+, the XML
- schema, and the schema documentation (internal issue 946).
-
-New Extensions:
-
- * `VK_AMD_mixed_attachment_samples`
- * `VK_EXT_post_depth_coverage`
- * `VK_KHR_relaxed_block_layout`
-
------------------------------------------------------
-
-Change log for July 21, 2017 Vulkan 1.0.56 spec update:
-
- * Bump API patch number and header version number to 56 for this update.
-
-Github Issues:
-
- * Add valid usage statements for commands introduced by
- `VK_EXT_debug_report` and `VK_EXT_debug_marker` extensions, regarding
- the valid pname:object and pname:objectType values (public issue 495).
- * Modify `GL_KHR_vulkan_glsl` specification to document that uniform and
- buffer block arrays each take only a single binding (public issue 514).
- * Add `KHX` author tag to +vk.xml+ (public issue 526).
-
-Internal Issues:
-
- * Document use of code: macro for non-Vulkan APIs in the style guide
- (internal issue 863).
- * Document that reference page open block delimiters must not contain
- asciidoc section markup in the style guide (internal issue 898).
- * Fix <<spirvenv,SPIR-V appendix>> to say
- code:VariablePointersStorageBuffer instead of
- code:VariablePointersUniformBufferBlock (internal issue 928).
-
-Other Commits:
-
- * Add missing extension structures to dependency attributes in +vk.xml+.
-
-New Extenions:
-
- * `VK_EXT_depth_range_unrestricted`
-
------------------------------------------------------
-
-Change log for July 15, 2017 Vulkan 1.0.55 spec update:
-
- * Bump API patch number and header version number to 55 for this update.
-
-Github Issues:
-
- * Removed unintended optional parameter in +vk.xml+ from the
- pname:pWaitSemaphores member of slink:VkPresentInfoKHR, which resulted
- in the generation of an incorrect implicit valid usage clause allowing
- pname:pWaitSemaphores to be NULL even when pname:waitSemaphoreCount is
- non-zero (public issue 491).
- * Add missing attribute to +vk.xml+ documenting that
- slink:VkSwapchainCounterCreateInfoEXT extends
- slink:VkSwapchainCreateInfo (public issue 510).
- * Add const qualifier for some `VK_EXT_debug_market` extension command
- parameters that were missing it (public issue 513).
- * Fix definition of q and level~base~ in
- <<textures-image-level-selection,Image Level(s) Selection>> (public
- issue 515).
- * Clarify lifetime requirement for slink:VkRenderPass objects used in
- object creation (public issue 516).
- * Fix link to floating/normalized fixed-point conversion from
- <<interfaces-fragmentoutput,Fragment Output Interface>> (public issue
- 521).
-
-Internal Issues:
-
- * Update the style guide to include the general structure of a Vulkan
- command name, the specific rule for using "`Get`" vs. "`Enumerate`" in
- names, and a table of verbs commonly used in command names (spinoff of
- internal issue 753).
- * Clarified the behavior of automatic layout transitions in case of
- attachment views that are 2D or 2D array views of 3D images. In
- addition, restructured the valid usage clauses corresponding to the
- members of the slink:VkImageSubresourceRange structure and added missing
- valid usage clauses for its pname:baseMipLevel and pname:baseArrayLayer
- members (internal issues 803, 849).
- * Modify `GL_KHR_vulkan_glsl` specification to allow explicit std430 on a
- push_constant declaration (internal issue 919).
-
-Other Commits:
-
- * Modify <<synchronization-framebuffer-regions, Framebuffer Region
- Dependencies>> to use synchronization scope terminology.
- * Add ename:VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT to the
- `VK_EXT_swapchain_colorspace` extension.
- * Replace XML comments with `comment` attributes and/or tags, to enable
- tools which transform the XML without loss of information.
- * Replace `validextensionstructs` with `structextends`, which is tagged in
- the child structure instead of the parent. This makes it slightly
- simpler to add new structs to the XML, causes fewer merge conflicts, and
- the information is kept localized to the extension structures where it
- belongs. The old `validextensionstructs` attributes will be retained
- until we're certain this doesn't cause problems with known consumers of
- +vk.xml+.
-
------------------------------------------------------
-
-Change log for July 13, 2017 Vulkan 1.0.54 spec update:
-
- * Bump API patch number and header version number to 54 for this update.
-
-Github Issues:
-
-Internal Issues:
-
- * Fix tessellation domain to have an upper-left origin in the
- <<img-tessellation-topology-ul, tessellation toplogy image>> and related
- language. CTS and all implementations were already doing this, it was
- just a documentation bug that it was flipped to lower-left (internal
- issue 603).
- * Add a section to the style guide describing how VUID tags are changed
- and removed when the corresponding Valid Usage statements are modified
- (internal issue 829).
- * Add explicit Valid Usage statement to
- slink:VkPipelineDynamicStateCreateInfo to require that members of
- pname:pDynamicStates must be unique (internal issue 851).
-
-New Extensions:
-
- * `VK_KHR_16bit_storage`
- * `VK_KHR_dedicated_allocation`
- * `VK_KHR_external_fence`
- * `VK_KHR_external_fence_capabilities`
- * `VK_KHR_external_fence_fd`
- * `VK_KHR_external_fence_win32`
- * `VK_KHR_get_memory_requirements2`
- * `VK_KHR_storage_buffer_storage_class`
- * `VK_KHR_variable_pointers`
-
-Extensions Promoted From KHX To KHR Status:
-
- * `VK_KHR_external_memory`
- * `VK_KHR_external_memory_capabilities`
- * `VK_KHR_external_memory_fd`
- * `VK_KHR_external_memory_win32`
- * `VK_KHR_external_semaphore`
- * `VK_KHR_external_semaphore_capabilities`
- * `VK_KHR_external_semaphore_fd`
- * `VK_KHR_external_semaphore_win32`
- * `VK_KHR_win32_keyed_mutex`
-
------------------------------------------------------
-
-Change log for June 24, 2017 Vulkan 1.0.53 spec update:
-
- * Bump API patch number and header version number to 53 for this update.
-
-Github Issues:
-
-Internal Issues:
-
- * Clarify mappings of coordinates for mutable, compatible image views in
- slink:VkImageViewCreateInfo (internal issue 815).
- * Make ename:VK_BIND_SFR_BIT require a logical device with multiple
- physical devices, so that standard sparse image block dimensions are
- only required on systems that support multi-GPU (internal issue 835).
- * Convert all files from use of // refBegin .. // refEnd comments to
- delimit ref pages, to use of open blocks, and update style guide
- accordingly (internal issue 839).
- * Add valid usage for slink:VkWriteDescriptorSet when performing updates
- to a ename:VK_STORAGE_IMAGE descriptor with layout
- ename:VK_IMAGE_LAYOUT_GENERAL.
- * Add a hack to the validity generator script to support an odd
- interaction between flink:vkCmdFillBuffer and an extension (internal
- issue 853).
- * Remove redundant text describing slink:VkBufferCreateInfo::pname:usage,
- which was already covered by implicit valid usage (internal issue 854).
- * Update implicit validity generator script to properly handle the
- pname:sType and pname:pNext members of "returnedonly" structures
- (internal issue 874).
- * Note that slink:VkApplicationInfo::pname:pApplicationName &
- slink:VkApplicationInfo::pname:pEngineName are optional, and add missing
- implicit valid usage statements for flink:vkDestroyInstance.
- * Added missing valid usage for flink:vkCmdWriteTimestamp to require a
- timestamp query pool.
- * Simplify and/or split "`non-atomic`" valid usage statements.
-
-New Extensions:
-
- * `VK_AMD_gpu_shader_int16`
- * `VK_EXT_blend_operation_advanced`
- * `VK_EXT_sampler_filter_minmax`
- * `VK_NV_framebuffer_mixed_samples`
-
------------------------------------------------------
-
-Change log for June 13, 2017 Vulkan 1.0.52 spec update:
-
- * Bump API patch number and header version number to 52 for this update.
-
-Github Issues:
-
-Internal Issues:
-
- * Clarify behavior when non-coherent memory has
- <<memory-device-unmap-does-not-flush, not been flushed before being
- unmapped>> (internal issue 819).
- * Fix description of code:WorkgroupSize builtin to note it decorates an
- object, not a variable (internal issue 836).
- * Fix asciidoc attributes so that trailing '{plus}' symbols in [eq] style
- equations are rendered properly (internal issue 845).
- * Add language to the "`Extension Handles, Objects, Enums, and Typedefs`"
- section of the Procedures and Conventions document stating that any new
- handle type requires a corresponding entry in the elink:VkObjectType
- enumerated type (internal issue 856).
- * Update style guide to use slink macro for Vulkan handle type names, and
- define narrow conditions under which to use the *name and *text macros
- instead of *link (internal issue 886).
- * Add a dependency of the <<VK_KHX_device_group,VK_KHX_device_group>>
- extension on VK_KHX_device_group_creation to +vk.xml+ and the extension
- appendix.
- * Change the copyright on Vulkan specification asciidoc *source* files to
- CC-BY 4.0, and update the proprietary Khronos copyright applied to the
- generated *output* formats (internal issue 327). This enables broader
- re-use and modification of the Vulkan specification sources, while not
- affecting the Reciprocal IP License between Vulkan Adopters and Working
- Group Members.
-
-New Extensions:
-
- * `VK_NV_fill_rectangle`
- * `VK_NV_fragment_coverage_to_color`
-
------------------------------------------------------
-
-Change log for June 4, 2017 Vulkan 1.0.51 spec update:
-
- * Bump API patch number and header version number to 51 for this update.
-
-Github Issues:
-
- * Add Valid Usage statement to flink:vkCmdResolveImage to require that
- source and destination image formats match (public issue 492).
- * Specify that a code:char* parameter must: be a valid null-terminated
- string in the <<fundamentals-implicit-validity, implicit valid usage>>
- section (public issue 494).
- * Removed unnecessary VU for slink:VkPhysicalDeviceFeatures which is
- covered by ename:VK_ERROR_FEATURE_NOT_PRESENT already (public issue
- 496).
- * Clarify valid usage of pname:pQueueFamilyIndices in
- slink:VkBufferCreateInfo, slink:VkImageCreateInfo, and
- slink:VkSwapchainCreateInfoKHR (public issue 501).
- * Document that dependencies of enabled extensions must also be enabled in
- the <<extended-functionality-extensions-dependencies, Extension
- Dependencies>> section (public issue 507).
-
-Internal Issues:
-
- * Change slink:VkMappedMemoryRange valid usage to allow pname:offset +
- pname:size == size of the allocation. Also, if ename:VK_WHOLE_SIZE is
- used, require the end of the mapping to be aligned to a multiple of
- pname:nonCoherentAtomSize (internal issue 611).
- * Add issue to `VK_KHR_win32_surface` about reusing window objects from a
- different graphics API or Vulkan ICD (internal issue 639).
- * Require locations on user in/out in `GL_KHR_vulkan_glsl` (internal issue
- 783).
- * Added version info to the json validation output, and updated the schema
- to match (internal issue 838).
- * Restructure enumerated type descriptions separately from the command or
- structure they are used in, allowing better reference page generation
- (internal issue 841).
- * Re-sort extension appendices to be in alphabetical order within each
- author ID section.
- * Fix enum naming and clarify behavior for
- `VK_NVX_device_generated_commands` extension.
-
------------------------------------------------------
-
-Change log for May 20, 2017 Vulkan 1.0.50 spec update:
-
- * Bump API patch number and header version number to 50 for this update.
-
-Github Issues:
-
- * Fix numerous minor issues with the VK_EXT_debug_report extension (public
- issues 478, 483, 486, 489, 490).
-
-Internal Issues:
-
- * Update flink:vkAllocateDescriptorSets to specify conditions under which
- to return ename:VK_ERROR_FRAGMENTED_POOL or
- ename:VK_ERROR_OUT_OF_POOL_MEMORY instead of
- out-of-host/out-of-device-memory, and improve the
- <<fundamentals-errorcodes, description of those errors (internal issue
- 654).
- * Add a NOTE documenting that flink:vkAcquireNextImageKHR can only signal
- a single semaphore, and how to deal with that when multiple physical
- devices in a logical device need to wait on it (internal issue 730).
- * Improve description of pname:pNext chains of
- slink:VkPhysicalDeviceImageFormatInfo2KHR and
- slink:VkImageFormatProperties2KHR (internal issue 814).
- * Clean up math markup issues in the <<textures, Image Operations>>
- chapter (internal issue 818).
- * Update validusage target to use more robust code for preprocessing, by
- making direct use of Asciidoctor's preprocessor. Added uniqueItems check
- to JSON vu schema and add clean_validusage target (internal issue 826).
- * Update style guide to prohibit writing non-self-contained (on a single
- bullet point) Valid Usage statements, and modify offending Valid Usage
- statements in the Specification to match, to assist with automatic
- extraction for the validation layers (internal issue 828).
- * Add ename:VK_VALIDATION_CHECK_SHADERS_EXT to elink:VkValidationCheckEXT
- of the `VK_EXT_validation_flags` extension, to selectively disable
- shader validation.
- * Remove duplicate valid usage statement for slink:VkImageMemoryBarrier.
- * Modify reflow.py script to place VUID tag anchors standalone on a line
- following their corresponding bullet point, and reflow the spec text
- accordingly (this had been pending since the initial tag deployment).
-
-New Extensions:
-
- * `VK_AMD_texture_gather_bias_lod`
-
------------------------------------------------------
-
-Change log for May 12, 2017 Vulkan 1.0.49 spec update:
-
- * Bump API patch number and header version number to 49 for this update.
-
-Github Issues:
-
- * Modify reference page extraction script to make internal links to spec
- anchors refer to the core specification instead of being dangling links
- (public issue 455).
- * Fix GL_KHR_vulkan_glsl typo and add a nor-normative mapping to the newly
- published StorageBuffer class (public issue 466).
- * Both flink:vkEnumerateInstanceExtensionProperties and
- flink:vkEnumerateDeviceExtensionProperties return
- ename:VK_ERROR_LAYER_NOT_PRESENT, which covers the error case of an
- application providing a layer name that wasn't returned by
- ftext:vkEnumerate{Instance|Device}LayerProperties (public issue 487).
- * The specification for flink:VkApplicationInfo::apiVersion says that the
- driver must return ename:VK_ERROR_INCOMPATIBLE_DRIVER in the case that
- pname:apiVersion specifies a non-supported version. That means that the
- valid usage should not also state that, and so the VU statement is
- removed. The VU had language about "`an effective substitute`" that
- would have been lost, and so it was moved to the pname:apiVersion
- description (public issue 488).
-
-Internal Issues:
-
- * Modify implicit validity generator script to assign asciidoc anchors to
- all valid usage statements it generates, and reflow.py script to insert
- Valid Usage ID (VUID) tags into the specification source files for
- explicit valid usage statements. This has no semantic effects on the
- specification, but will support the validation layer's detection of
- valid usage violations and allow it to link into the corresponding part
- of the specification (internal issue 583).
- * Assign VUID tags to all explicit VU statements and document
- the process and tag format in the style guide (internal issue 583).
- * Clarify the rules of whether to structure new functionality as instance
- extensions, device extensions, or both in the
- <<extended-functionality-instance-extensions-and-devices, Instance
- Extensions and Device Extensions>> section (internal issue 749).
- * Require that SPIR-V run-time arrays are only used with the
- code:BufferBlock decoration (internal issue 750).
- * Fix implicit and explicit valid usage statements for
- slink:VkWriteDescriptorSet::pname:dstSet (internal issue 767)
- * Fix SPIR-V code sample for ename:VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER
- in the <<descriptorsets-uniformtexelbuffer, Uniform Texel Buffer>>
- section (internal issue 770).
- * Clarify that disabling depth testing also disables depth writes in the
- <<fragops-ds-state, Depth and Stencil Operations>> section (internal
- issue 775).
- * flink:VkDescriptorImageInfo::pname:imageLayout must match the actual
- imageLayout at the time the image is accessed. This was in the spec
- text, but needed an associated valid usage statement.
- * Note that only 32-bit atomic operations are supported in the
- <<spirvenv-module-validation, Validation Rules within a Module>>
- section.
- * Note that code:UniformConstant variables must not have initializers in
- the <<spirvenv-module-validation, Validation Rules within a Module>>
- section.
- * Add a new elink:VkObjectType enumeration to the core API, promoted from
- elink:VkDebugObjectTypeEXT, since it is used for much more than just the
- debug_report extension.
-
-New Extensions:
-
- * `VK_KHR_get_surface_capabilities2`
- * `VK_KHR_shared_presentable_image`
-
------------------------------------------------------
-
-Change log for April 15, 2017 Vulkan 1.0.48 spec update:
-
- * Bump API patch number and header version number to 48 for this update.
-
-Internal Issues:
-
- * Add missing VU statements for flink:vkUpdateDescriptorSets (internal
- issue 333).
- * Correct swapped ifdef/ifndef blocks for `VK_KHR_maintenance1` extension
- (internal issue 776).
-
------------------------------------------------------
-
-Change log for April 8, 2017 Vulkan 1.0.47 spec update:
-
- * Bump API patch number and header version number to 47 for this update.
-
-Github Issues:
-
- * Allow <<synchronization-pipeline-barriers-subpass-self-dependencies,
- self-dependencies>> (also described for slink:VkSubpassDependency) to
- have earlier stages depend on later stages if all stages are
- framebuffer-space (public issue 125).
- * Clarify when pipeline state structures are ignored in the
- slink:VkGraphicsPipelineCreateInfo strucure, when the tessellation
- structure must be valid, and remove 'if `NULL`' descriptions from the
- valid usage statements (public issue 445).
- * Remove the obsolete "validextensionstructs" attribute for
- flink:VkPresentRegionsKHR. This caused a pname:pNext valid usage
- statement to be generated which wasn't consistent with what is stated in
- the spec (public issue 481).
-
-Internal Issues:
-
- * Clarify facingness of non-polygon fragments for slink:VkStencilOpState
- and in the code:FrontFacing <<interfaces-builtin-variables,built-in
- variable description>>. Define 'facingness' of a fragment as a distinct
- term from facingness of a polygon (internal issue 662).
- * Clarify that the texture compression features (e.g.
- pname:textureCompressionBC) means that all formats of that type
- (<<features-features-textureCompressionASTC_LDR,ASTC>>,
- <<features-features-textureCompressionETC2,ETC2>>,
- <<features-features-textureCompressionBC,BC>>) are supported, and that
- support for individual formats may: queried separately (internal issue
- 663).
- * Clarify in the valid usage for slink:VkBindImageMemoryInfoKHX that each
- SFR rectangle must be a multiple of the sparse block size for each
- aspect, e.g. in a depth/stencil image using separate depth/stencil
- planes (internal issue 721).
- * Re-remove KHX variants of KHR structure types after promotion (internal
- issue 762).
-
------------------------------------------------------
-
-Change log for March 31, 2017 Vulkan 1.0.46 spec update:
-
- * Bump API patch number and header version number to 46 for this update.
-
-Github Issues:
-
- * Add language to the <<fundamentals-validusage-enums, Valid Usage for
- Enumerated Types>> section allowing values to be returned from Vulkan
- that are not present in extensions explicitly enabled by the
- application, similar to existing language for bit flags in the
- <<fundamentals-validusage-flags, Valid Usage for Flags>> section (public
- issue 442).
- * *Important*: run `gem update --pre asciidoctor-pdf` before trying to
- build this version of the spec - 1.5.0.alpha15 is required for this
- change. Removes the monkey patch currently used to draw valid usage
- blocks across multiple pages which had numerous issues. A fixed version
- was incorporated into Asciidoctor-PDF for the latest release, so the
- monkey patch or any variant thereof is no longer required (public issue
- 465).
-
-Internal Issues:
-
- * Add ename:VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT
- to `VK_EXT_debug_report` extension
- * Fix ptext:pNext member of
- slink:VkPhysicalDeviceDiscardRectanglePropertiesEXT to be a non-const
- pointer. Properties structures return values, so the chain should be
- non-const.
- * Explicitly remove gl_NumSamples from the `GL_KHR_vulkan_glsl` extension,
- against 1.0 (internal issue 612).
- * Add Valid Usage statements requiring that each structure type valid in a
- ptext:pNext chain must: not appear more than once in a chain (internal
- issue 752).
- * Use ename:VK_USE_PLATFORM_WIN32_KHX in the
- `VK_KHX_external_memory_win32` extension, rather than etext:_KHR
- (internal issue 754).
-
-New Extensions:
-
- * `VK_KHR_incremental_present`
-
------------------------------------------------------
-
-Change log for March 24, 2017 Vulkan 1.0.45 spec update:
-
- * Bump API patch number and header version number to 45 for this update.
-
-Github Issues:
-
- * Defined the lifetime of the memory pointed to by
- slink:VkDisplayPropertiesKHR::pname:displayName to be equal to that of
- its associated display handle (public issue 460).
- * Correct several cases where the sparse memory feature name
- pname:residencyNonResidentStrict was written as
- pname:sparseResidencyNonResidentStrict (public issue 475).
-
-Internal Issues:
-
- * Fix ptext:pNext member of slink:VkPhysicalDeviceGroupPropertiesKHX to be
- a non-const pointer. Properties structures return values, so the chain
- should be non-const.
- * Clarify definition of memory aliasing to consistently use the terms
- "linear" and "non-linear" when referring to resources, and define what
- those terms mean.
- * Modified XML schema and implicit validity scripts to generate language
- for all ptext:pNext values in a ptext:pNext chain instead of just the
- top level struct, and made `noautovalidity` functional for ptext:sType
- and ptext:pNext (internal issue 535).
- * Add more detail for BT2020 and scRGB color spaces in
- `VK_EXT_swapchain_colorspace` extension (internal issue 632).
- * Add naming rules for Extension Structure Names (structures added to the
- ptext:pNext chain of a base structure) to the style guide (internal
- issue 706).
- * Define the glossary term "ptext:pNext chain", and use it consistently in
- the spec (internal issue 744).
-
------------------------------------------------------
-
-Change log for March 17, 2017 Vulkan 1.0.44 spec update:
-
- * Bump API patch number and header version number to 44 for this update.
-
-Github Issues:
-
- * Fix description of <<features-extentperimagetype, Allowed Extent Values
- Based On Image Type>> (public issue 290).
- * Better specify VK_DEVICE_LOST behavior around flink:vkQueueSubmit,
- flink:vkWaitForFences, and flink:vkGetFenceStatus (public issue 423).
- * Clarify definition of flink:vkGetQueryPoolResults::pname:queryCount
- (public issue 441).
- * Simplify and clean up normative language. Remove shall and replace
- recommend and variants with should wherever possible (public issue 448).
- * Fix all dangling internal cross-references in the 1.0-extensions
- specification, and add scripts/checkXrefs to find these in the future
- (public issue 456).
- * Reverse order of ChangeLog.txt entries so the most recent version is
- documented first (public issue 463)
- * Removes "become invalid" which clashes with invalid state for command
- buffers. (public issue 467)
- * Disallowed pending state in spec text for vkResetCommandBuffer, matching
- valid usage (public issue 468)
- * Removes sentence describing invalid state "like initial state". (public
- issue 469)
- * Disallows begin command buffer from resetting command buffers in the
- "recording" state. (public issue 470)
- * Removes mention of state from description of
- VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT (public issue 471)
- * Removed extra valid usage statement in VkSubmitInfo (public issue 472)
-
-Internal Issues:
-
- * Clarify description of the pname:imageLayout member of
- sname:VkDescriptorImageInfo.
- * Fix typos where etext:VK_VIEW_TYPE* was used instead of
- etext:VK_IMAGE_VIEW_TYPE.
- * Removed the <<VK_KHR_display>> and <<VK_KHR_display_swapchain>> example
- code from the specification and noted it has been moved to the Vulkan
- SDK cube demo (internal issue 179).
- * Reorder VkExternalMemoryHandleTypeFlagBitsNV description (internal issue
- 480).
- * Clarify than an implementation is
- <<fundamentals-validusage-flags,permitted to return 'undefined' bit
- flags>> in a bitfield (internal issue 640).
- * Break Valid Usage statements describing unrelated parameters into
- separate statements, and add a style guide entry to follow this approach
- (internal issue 685).
- * Move valid usage statement for slink:VkImageCreateInfo from spec body to
- the explicit valid usage block (internal issue 693).
- * Fix typos in the descriptions of slink:VkDisplaySurfaceCreateInfoKHR,
- flink:vkCreateDisplayModeKHR, and
- flink:vkGetDisplayPlaneSupportedDisplaysKHR in the <<display,Presenting
- Directly to Display Devices>> section (internal issue 698, 704, 716).
- * Clarified that mandatory depth/stencil formats are only a requirement
- for 2D images (internal issue 719).
- * Clarify that variables decorated with DeviceIndex/ViewIndex must be in
- the Input storage class (internal issue 733).
- * Work around generator script problem with removal of Unicode literals
- from Python 3.0-3.2 using `future` package (internal issue 737).
- * Remove nonexistent structure type enums from vk.xml (internal issue
- 738).
- * Fix validextensionstructs attributes for structures in the pname:pNext
- chain for VkPresentInfoKHR, fixing implicit valid usage statements for
- those structures (internal issue 740).
-
------------------------------------------------------
-
-Change log for March 10, 2017 Vulkan 1.0.43 spec update:
-
- * Bump API patch number and header version number to 43 for this update.
-
-Github Issues:
-
- * Make clearer that color write mask is applied regardless of whether
- blending is enabled, by referring to the
- <<framebuffer-color-write-mask,Color Write Mask>> section (public issue
- 241).
- * Fix public issue 414:
- ** Added two new command buffer states (invalid, pending), and an explicit
- "command buffer lifecycle" section to explain them.
- ** Replaced "pending execution" with "in the pending state".
- ** Replaced a bunch of "this will invalidate the command buffer" language
- with "this will move the command buffer to the invalid state", and added
- validation language for what state those command buffers should be in.
- ** Added additional validation language about what state a command buffer
- should be in for various commands that affect it.
- ** Added invalidation language to destroy commands in the lifetimes section
- of fundamentals.
- ** Added command buffers to list of objects which must not be deleted
- whilst a (primary) command buffer is in the recording or pending state.
- * Update `GL_KHR_vulkan_glsl` extension to allow anonymous push constant
- blocks (public issue 428).
-
-Internal Issues:
-
- * Document rules about extension interactions in the style guide (internal
- issue 579).
- * Require ename:VK_PRESENT_MODE_MAILBOX_KHR support in queries of surfaces
- created with flink:vkCreateWaylandSurfaceKHR using the
- VK_KHR_wayland_surface extension (internal issue 666).
- * Remove Valid Usage constraints for flink:vkAllocateDescriptorSets when
- the `VK_KHR_maintainance1` extension is present (internal issue 686).
- * Remove undocumented KHX-variants of vkGetPhysicalDeviceProperties2KHR
- and vkGetPhysicalDeviceImageFormatProperties2KHR from the
- <<VK_KHX_external_memory_capabilities>> and
- <<VK_KHX_external_semaphore_capabilities>> extensions.
-
-New Extensions:
-
- * `VK_EXT_hdr_metadata`
- * `VK_GOOGLE_display_timing`
-
------------------------------------------------------
-
-Change log for February 27, 2017 Vulkan 1.0.42 spec update:
-
- * Bump API patch number and header version number to 42 for this update
- (the first anniversary edition).
-
-Github Issues:
-
- * Changed asciidoctor macros so cross-page links in the standalone
- reference pages function properly (public issue 462).
-
-Internal Issues:
-
- * Clarified host visibility discussion for slink:VkMemoryType,
- flink:vkInvalidateMappedMemoryRanges, elink:VkAccessFlagBits, and the
- <<synchronization-framebuffer-regions,Framebuffer Region Dependencies>>
- section, removing duplicated information and adding a central definition
- in the access types section (internal issue 552).
- * Change description of
- slink:vkGetPhysicalDeviceSurfacePresentModesKHR::pname:pPresentModes to
- return an array of values, not structures (internal issue 699).
-
-New Extensions:
-
- * Add a NOTE to the <<extensions,Layers & Extensions>> chapter describing
- the experimental status of `KHX` extensions.
- * Add new Khronos, Khronos Experimental, and vendor Vulkan extensions for
- release at GDC:
- ** VK_KHR_descriptor_update_template
- ** VK_KHR_push_descriptor
- ** VK_KHX_device_group
- ** VK_KHX_device_group_creation
- ** VK_KHX_external_memory
- ** VK_KHX_external_memory_capabilities
- ** VK_KHX_external_memory_fd
- ** VK_KHX_external_memory_win32
- ** VK_KHX_external_semaphore
- ** VK_KHX_external_semaphore_capabilities
- ** VK_KHX_external_semaphore_fd
- ** VK_KHX_external_semaphore_win32
- ** VK_KHX_multiview
- ** VK_KHX_win32_keyed_mutex
- ** VK_EXT_discard_rectangles
- ** VK_MVK_ios_surface
- ** VK_MVK_macos_surface
- ** VK_NVX_multiview_per_view_attributes
- ** VK_NV_clip_space_w_scaling
- ** VK_NV_geometry_shader_passthrough
- ** VK_NV_sample_mask_override_coverage
- ** VK_NV_viewport_array2
- ** VK_NV_viewport_swizzle
- * Add new GLSL vendor extensions to support new builtin variables:
- ** GL_EXT_device_group
- ** GL_EXT_multiview
-
------------------------------------------------------
-
-Change log for February 17, 2017 Vulkan 1.0.41 spec update:
-
- * Bump API patch number and header version number to 41 for this update.
-
-Github Issues:
-
- * Made all uses of `NULL` vs. code:VK_NULL_HANDLE consistent (public issue
- 276).
- * Clarify render pass compatibility in different usage scenarios (public
- issues 403 and 404).
- * Add valid usage statements to slink:VkFramebufferCreateInfo requiring
- that the width, height, and number of layers of the framebuffer all be
- nonzero (public issue 432).
- * Allow `offset` and `align` in any GLSL version for the
- `GL_KHR_vulkan_glsl` extension (public issue 435).
- * Specify lifetime of string objects passed to the
- tlink:PFN_vkDebugReportCallbackEXT user callback in the
- +VK_EXT_debug_report+ extension (public issue 446).
- * Fix inter-page links in multi-file reference pages (public issue 454).
-
-Internal Issues:
-
- * Update valid usage language for slink:VkImageCreateInfo to disallow
- creating images that have ename:VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT
- set without other attachment usage bits
- (ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT,
- ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, or
- ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT) (internal issue 540).
- * Disable `VK_EXT_swapchain_colorspace` extension until internal issues
- 640 and 661 are mutually resolved.
- * Allow alternative mipmap level selection when [eq]#lambda == 0.5# during
- texture <<textures-image-level-selection,Image Level(s) Selection>>
- (internal issue 680).
-
-Other Issues:
-
- * Add a clarification to the style guide that the extension revision
- number is treated as a patch number, so that changes to published
- extensions should only include bug fixes and spec clarifications.
-
------------------------------------------------------
-
-Change log for February 10, 2017 Vulkan 1.0.40 spec update:
-
- * Bump API patch number and header version number to 40 for this update.
- * There is a major build change in this release. We are now using the
- Ruby-based ``asciidoctor'' implementation, rather than the Python-based
- ``asciidoc'' implementation, to process the specification. While the
- actual specification markup changes were minimal, this requires a new
- set of build tools and a very different installation process, especially
- because we now use an experimental direct-to-PDF backend for Asciidoctor
- instead of Docbook->dblatex->PDF. It is no longer possible to build the
- Specification using asciidoc. See doc/specs/vulkan/README.adoc
- for some guidance on installing the new toolchain components.
- * There are some minor rendering issues in the PDF output due to teething
- problems with the asciidoctor toolchain, especially with mathematical
- equations. We are aware of these and working on them.
-
-Github Issues:
-
- * Updated sample code for the <<sparsememory-examples-basic,sparse
- resource binding example>> (public issue 97).
- * Modify line and point clipping behavior in the
- <<vertexpostproc-clipping, Primitive Clipping>> section to allow for
- pop-free behavior. The ability to check for which behavior is
- implemented may be added a future feature or extension (public issue
- 113).
- * Unify the discussions of implicit ordering throughout the spec, in
- particular in the new sections <<drawing-primitive-order, Primitive
- Order>>, <<primsrast-order, Rasterization Order>>, and
- <<synchronization-implicit, Implicit Synchronization Guarantees>>; the
- discussion of <<synchronization-submission-order, submission order>>;
- and references elsewhere to these sections (public issue 133).
- * Clarify <<descriptorsets-compatibility,Pipeline Layout Compatibility>>
- language and introduce the term ``identically defined'' (public issue
- 164).
- * Add a dependency to the +VK_EXT_debug_marker+ extension that's needed to
- reuse the object type enum from +VK_EXT_debug_report+, and moves the
- definition of that enum into +VK_EXT_debug_report+ where it should be
- (public issue 409).
- * Remove redundant valid usage statement from slink:VkImageBlit (public
- issue 421).
- * Update GL_KHR_vulkan_glsl to allow the ternary operator to result in a
- specialization constant (public issue 424).
- * Fix valid usage for flink:VkPipelineShaderStageCreateInfo (public issue
- 426).
- * Correct typo in New Objects list for <<VK_EXT_debug_report>> (public
- issue 447).
-
-Internal Issues:
-
- * Moved to asciidoctor for spec builds (internal issue 121).
- * Update style guide to describe where to put new extensions-specific
- asciidoc files, and what to name them (internal issue 626).
- * Add src/spec/indexExt.py to autogenerate registry index entries linking
- into the 1.0-extensions specification, instead of maintaining the index
- manually. (internal issue 642).
- * Autogenerate extension dependencies and lists of all extensions and all
- KHR extensions from the "supported" attributes in +vk.xml+. Execute
- +make config/extDependency.sh+ from +doc/specs/vulkan+ when a supported
- extension is added to vk.xml, to regenerate the dependency script. The
- consequence is that specifying a single extension to the +makeExt+
- script will automatically enable all extensions it depends on as well,
- and that the +makeAllExts+ and +makeKHR+ scripts do not need to be
- updated when a new extension is supported (internal issue 648).
- * Put extension appendices all at the same asciidoc section level, so KHR
- WSI extensions show up in the HTML index (internal issue 648).
-
-Other Issues:
-
- * Imbed images in the generated HTML specs instead of loading them from
- the images/ directory.
- * Fix missing EXT in extension name
- (ename:VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME).
- * Add new +VK_EXT_SMPTE_2086_metadata+ extension.
- * In the <<platformCreateSurface_xlib,Xlib Surface>> section of the
- `VK_KHR_xlib_surface` specification, add language warning users that
- they always need to call code:XinitThreads.
- * Use the term "presentable image" (rather than "swapchain image")
- consistently in `VK_KHR_swapchain` and related extensions, and add a
- glossary term defining it.
- * Relocate the valid usage for samples of
- flink:vkGetPhysicalDeviceSparseImageFormatProperties2KHR::pname:pFormatInfo
- to be below the flink:VkPhysicalDeviceSparseImageFormatInfo2KHR
- structure.
-
------------------------------------------------------
-
-Change log for January 23, 2017 Vulkan 1.0.39 spec update:
-
- * Bump API patch number and header version number to 39 for this update.
-
-Github Issues:
-
- * Clarified that only accesses via the specified buffer/image subresource
- ranges are included in the access scopes (public issue 306).
- * Add missing valid usage statements for flink:vkCreateComputePipelines
- and flink:vkCreateGraphicsPipelines (public issue 427).
-
-Internal Issues:
-
- * Add a Note to the <<invariance,Invariance>> appendix about a difference
- between OpenGL and Vulkan with regards to how primitives derived from
- offsets are handled (internal issue 355).
- * Add the +<<VK_KHR_get_physical_device_properties2>>+,
- +<<VK_KHR_maintenance1>>+, and +<<VK_KHR_shader_draw_parameters>>+
- extensions (internal issue 448).
- * Add the +<<VK_EXT_shader_subgroup_vote>>+ and
- +<<VK_EXT_shader_subgroup_ballot>>+ extensions (internal issue 449).
- * Update the texture level-of-detail equation in the
- <<textures-scale-factor,Scale Factor Operation>> section to better
- approximate the ellipse major and minor axes (internal issue 547).
- * Forbid non-explicitly allowed uses of interface decorations in the
- introduction to the <<interfaces,Shader Interfaces>> chapter (internal
- issue 607).
- * Replace use of MathJax with KaTeX, for improved load-time performance as
- well as avoiding the scrolling-and-scrolling behavior due to MathJax
- asynchronous rendering when loading at an anchor inside the spec. This
- change also requires moving to HTML5 output for the spec instead of
- XHTML, and there is a visible difference in that the chapter navigation
- index is now in a scrollable sidebar instead of at the top of the
- document. We may or may not retain the nav sidebar based on feedback
- (internal issue 613).
- * Improve consistency of markup and formatting in extension appendices
- (internal issue 631).
-
-Other Issues:
-
- * Add explicit valid usage statements to slink:VkImageCopy requiring that
- the source and destination layer ranges be contained in their respective
- source and destination images.
- * Add valid usage language for swapchain of flink:vkAcquireNextImage. If
- the swapchain has been replaced, then it should not be passed to
- flink:vkAcquireNextImage.
- * Add a valid usage statement to flink:vkCreateImageView, that the image
- must have been created with an appropriate usage bit set.
- * Noted that slink:VkDisplayPresentInfoKHR is a valid extension of
- slink:VkPresentInfoKHR in the <<wsi_swapchain,WSI Swapchain>> section.
- * Update valid usage for flink:vkCmdSetViewport and flink:vkCmdSetScissor
- to account for the multiple viewport feature. If the feature is not
- enabled, the parameters for these functions have required values that
- are defined in the <<features-features-multiViewport,multiple
- viewports>> section of the spec but were not reflected in the valid
- usage text for these functions.
- * Add the +<<VK_EXT_swapchain_colorspace>>+ extension defining common
- color spaces.
-
------------------------------------------------------
-
-Change log for December 16, 2016 Vulkan 1.0.38 spec update:
-
- * Bump API patch number and header version number to 38 for this update.
-
-Github Issues:
-
- * Make ename:VK_PIPELINE_STAGE_HOST_BIT invalid for all stage masks,
- except for flink:vkCmdWaitEvents (public issue 261).
-
-Internal Issues:
-
- * Added validation language for flink:vkQueueBindSparse,
- slink:VkPresentInfoKHR, and slink:VkSubmitInfo, and a note to the
- <<synchronization-semaphores-waiting,Semaphore Waiting and Unsignaling>>
- section to clarify that semaphores must be signaled and waited on in a
- 1:1 fashion (internal issue 546).
- * Modify valid usage for slink:VkBufferImageCopy to only require
- pname:bufferOffset to be a multiple of the image format's element size
- when the format is not depth/stencil (internal issue 594).
-
-Other Issues:
-
- * Vulkan is now a registered trademark symbol, and this is reflected in
- documents and copyright statements.
-
------------------------------------------------------
-
-Change log for December 10, 2016 Vulkan 1.0.37 spec update:
-
- * Bump API patch number and header version number to 37 for this update.
-
-Github Issues:
-
- * Add usability guarantees on the values returned by
- flink:vkGetPhysicalDeviceSurfaceCapabilitiesKHR in the
- slink:VkSurfaceCapabilitiesKHR structure and by
- flink:vkGetPhysicalDeviceSurfaceFormatsKHR in the
- pname:pSurfaceFormatCount parameter (public issue 385).
- * Add elink:VkDebugReportObjectTypeEXT enumerants for new object types
- introduced by new extensions (public issue 408).
- * Add +VK_NVX_device_generated_commands+ etext:ACCESS bits and define how
- they are used (public issue 415).
- * Fix indentation for slink:VkDebugReportCallbackCreateInfoEXT member
- descriptions (public issue 419).
-
-Internal Issues:
-
- * Expand requirements memory binding of non-sparse images and buffers from
- the <<resources-association,Resource Memory Association>> section into
- valid usage statements for all of the applicable API calls (internal
- issue 508).
- * Explicitly state that valid usage of flink:vkCreateImage requires that
- flink:vkGetPhysicalDeviceImageFormatProperties would return
- ename:VK_SUCCESS for the requested image configuration (internal issue
- 598).
-
------------------------------------------------------
-
-Change log for December 1, 2016 Vulkan 1.0.36 spec update:
-
- * Bump API patch number and header version number to 36 for this update.
-
-Github Issues:
-
- * Fix "recorded with" terminology in the valid usage language for the
- flink:vkCmdExecuteCommands::pname:pCommandBuffers parameter (public
- issue 390).
- * Modify +genvk.py+ to support specifying extensions to remove from output
- generators, allowing the extension loader +vulkan_ext.c+ to be created
- without WSI extensions which are statically exported by the Vulkan
- loader (public issue 412).
- * Added validation language for slink:VkSubpassDependency and in the
- <<synchronization-access-types-supported,supported access types>>
- section to catch access masks that include bits which are not supported
- by pipeline stages in the stage masks (partially addresses
- github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/issues/1006 ).
-
-Internal Issues:
-
- * Added validation language for flink:vkCmdWaitEvents,
- flink:vkQueueSubmit, flink:VkRenderPassCreateInfo, and in the
- <<synchronization-pipeline-stages-supported>> section to prevent
- recording stage dependencies that aren't supported on the queue
- (internal issue 516).
- * Make a few changes that generalize spec language for use with possible
- future extensions by adding glossary terms and generalizing ``feature''
- to ``feature or extension'' where relevant (internal issues 448, 590).
- * Added "pipeline type" attribute to +vk.xml+ for relevant commands and
- utilize it in automatic generation of the Command Properties table
- (internal issue 517).
- * Specify that WSI implementations must provide both UNORM and sRGB
- formats in the description of slink:VkColorSpaceKHR (internal issue
- 529).
- * Remove nesting of explicit valid usage statements where it is not
- meaningful (internal issue 583).
-
-Other Issues:
-
- * Add validity language requiring that
- slink:VkPushConstantRange::pname:offset be a multiple of 4, as stated in
- the spec language.
-
------------------------------------------------------
-
-Change log for November 25, 2016 Vulkan 1.0.35 spec update:
-
- * Bump API patch number and header version number to 35 for this update.
-
-Github Issues:
-
- * Document in the <<memory-device-hostaccess,Host Access>> section that
- mapping and unmapping does not invalidate or flush the mapped memory
- (public issues 27, 126).
- * Redefine the entire <<synchronization>> chapter in terms of consistent
- and well defined terminology, that's called out at the start of the
- chapter. This terminology is applied equally to all synchronization
- types, including subpass dependencies, submissions, and much of the
- implicit ordering stuff dotted around the spec. Key terms are laid out
- in the <<synchronization-dependencies,Execution and Memory
- Dependencies>> section at the top of the rewritten chapter (public
- issues 128, 131, 132, 217, 299, 300, 302, 306, 322, 346, 347, 371, 407).
- * Specify order of submission for batches in the
- <<vkQueueSubmit,vkQueueSubmit>> and
- <<vkQueueBindSparse,vkQueueBindSparse>> commands (public issue 371).
- * Add valid usage statements to each of the WSI extension sections
- indicating that the WSI-specific structure parameters must be valid, and
- remove automatically generated valid usage statements now covered by the
- manual sections (public issue 383).
- * Clarify render pass compatibility for flink:vkCmdExecuteCommands (public
- issue 390).
-
-Internal Issues:
-
- * Update +vk.xml+ to make previously explicit valid usage statements for
- <<vkDebugReportMessageEXT,vkDebugReportMessageEXT>> implicit instead
- (internal issue 553).
- * Add valid usage statement for slink:VkCreateImageInfo preventing
- creation of 1D sparse images (internal issue 573).
- * Fix Python scripts to always read/write files in utf-8 encoding, and a
- logic error in reflib.py which could cause a fatal error for
- malstructured asciidoc (internal issues 578, 586).
-
------------------------------------------------------
-
-Change log for November 18, 2016 Vulkan 1.0.34 spec update:
-
- * Bump API patch number and header version number to 34 for this update.
-
-Github Issues:
-
- * Allow vkUpdateDescriptorSets overflow to skip empty bindings. Clarify
- that unused bindings have a descriptorCount of zero. Improve some valid
- usage for vkUpdateDescriptorSets (public issue 256).
- * Require that slink:VkImageSubresourceRange always define a non-empty
- range of the resource (public issue 303).
- * Added valid usage for slink:VkPresentInfoKHR on the layout of presented
- images (public issue 397).
-
-Internal Issues:
-
- * Add dependency in src/spec/Makefile so specversion.txt is regenerated
- when needed (internal issue 462).
- * Shorten the table of contents in the single-page ref page HTML output.
- Still working on the PDF (internal issue 536).
-
------------------------------------------------------
-
-Change log for November 11, 2016 Vulkan 1.0.33 spec update:
-
- * Bump API patch number and header version number to 33 for this update.
-
-Github Issues:
-
- * Added implicit external synchronization parameters to
- vkBegin/EndCommandBuffer, and fixed missing command pool host
- synchronization from per-command lists (public issue 398).
- * Started using git tags including the spec release number, such as
- 'v1.0.32-core', instead of tags including the date of release, such as
- 'v1.0-core-20161025' (public issue 405).
-
-Internal Issues:
-
- * Add validity constraint for
- slink:VkImportMemoryWin32HandleInfoNV::pname:handle (internal issue
- #480).
- * Add scripts to compare two Vulkan HTML specifications, derived from W3
- htmldiff service (internal issue 525).
- * Relax requirement that memoryTypeBits can't depend on format, to allow
- it to differ only for depth/stencil formats (internal issue 544).
- * Add a new generator script to create a simple extension loader for
- Vulkan based on +vk.xml+ (internal issue 558).
- * Add the overlooked requirement that buffer and image memory
- alignment requirements must be a power of two in the
- <<resources-association,Resource Memory Association>> section
- (internal issue 569).
-
-Other Issues:
-
- * Add a naming rule to the style guide for members of extension structures
- defining array lengths which are the same as array lengths of the core
- structure they are chained from.
- * Add a new generator to create a simple extension loader in
- +src/ext_loader/vulkan_ext.[ch]+ from +vk.xml+. This code can be
- included in your project, and is expected to be packaged in the Vulkan
- SDK provided by LunarG in the future.
-
------------------------------------------------------
-
-Change log for October 25, 2016 Vulkan 1.0.32 spec update:
-
- * Bump API patch number and header version number to 32 for this update.
-
-Github Issues:
-
- * Add automatic visibility operations to the presentation engineE when
- doing a queue present in flink:vkAcquireNextImageKHR. Removed all
- references to MEMORY_READ that referenced WSI - they no longer make
- sense (some aspects of public issues 128, 131, 132, 261, and 298).
- * Document valid non-boolean +externsync+ attribute values for <param>
- tags in +vk.xml+ (public issue 265).
- * Add valid usage to slink:VkImageCreateInfo requiring that
- pname:arrayLayers be 1 for images of type ename:VK_IMAGE_TYPE_3D
- (public issue 319).
- * Add missing captions to figures in the <<textures,Image Operations>>
- chapter (public issue 334).
- * Clarify WSI interaction with exclusive sharing mode (public issue
- 344).
- * Added explicit language clarifying the allowed queue usage of
- resources created with ename:VK_SHARING_MODE_CONCURRENT (public
- issue 386).
- * Require that the
- slink:VkDescriptorSetLayoutCreateInfo::pname:binding members of the
- pname:pBindings array passed to
- flink:vkDescriptorSetLayoutCreateInfo all be distinct (public issue
- 391).
-
-Internal Issues:
-
- * Remove empty validity blocks from +vk.xml+ and suppressed broken
- validity statements and added missing statements to explicit
- validity. Doesn't affect output, other than some statements
- appearing in another block now (internal issue 513).
-
------------------------------------------------------
-
-Change log for October 14, 2016 Vulkan 1.0.31 spec update:
-
- * Bump API patch number and header version number to 31 for this update.
-
-Github Issues:
-
- * Clarifying wording of slink:VkGraphicsPipelineCreateInfo parameters and
- adding Valid Usage statements on render pass compatibility to the
- <<drawing,drawing commands>> (public issue 375).
- * Replace 'texel size' with 'element size', and add a definition to the
- glossary (public issue 382).
- * Clarify the description of ename:VK_ERROR_NATIVE_WINDOW_IN_USE_KHR to
- make it accurate, but still generic (non-exhaustive). Remove two Valid
- Usage statements describing error situations that will return
- ename:VK_ERROR_NATIVE_WINDOW_IN_USE_KHR (public issue 387).
- * Fix refBegin tag for elink:VkDebugReportFlagBitsEXT (public issue 392).
- * The <<interfaces-builtin-variables,built-in variable>> code:PrimitiveId
- in a fragment shader needs the code:Input storage class (public issue
- 393).
-
-Internal Issues:
-
- * Unused ({y,z} and {height,depth} for 1D, z and depth for 2D) offsets
- must be 0 and unused extents must be 1. Added basic offset and extent
- valid usage for slink:VkImageResolve to match that of slink:VkImageCopy
- (internal issue 413).
- * Describe what flink:vkGetPhysicalDeviceImageFormatProperties returns for
- pname:sampleCounts when for pname:usage only includes transfer-related
- flags (internal issue 478).
- * Remove mention of
- slink:VkPhysicalDeviceLimits::pname:maxImageArrayLayers from the valid
- usage for slink:VkImageCreateInfo::pname:arrayLayers (internal issue
- 520).
- * Tag usages of ``dynamically uniform'' as glossary terms and add a
- glossary entry pointing to the SPIR-V Specification's definition of the
- term (internal issue 531).
-
------------------------------------------------------
-
-Change log for October 7, 2016 Vulkan 1.0.30 spec update:
-
- * Bump API patch number and header version number to 30 for this update.
-
-Github Issues:
-
- * Document missing pname:sType and pname:pNext parameters for
- slink:VkCommandBufferInheritanceInfo (public issue 224).
- * As promised, we are removing the example code, from the appendix, for
- the VK_KHR_surface and VK_KHR_swapchain extensions. The cube demo
- (shipped in the official Khronos SDK) has been updated, and is the
- example code that we want people to look at for how to use these two
- extensions (public issues 279, 308, and 311).
- * Clarify the formats for which the slink:VkClearColorValue pname:float32
- member is used. Also clean up related language for flink:vkCmdBlitImage
- (public issue 369).
- * Reword the <<invariance, Invariance>> appendix chapter to better match
- Vulkan terminology (public issue 372).
-
-Internal Issues:
-
- * Update slink:VkMemoryRequirements to not require a host_visible memory
- type exists that can be bound to sparse buffers (internal issue 494).
- * Modify the <<features-supported-sample-counts,Supported Sample Counts>>
- language to allow multisampled depth-stencil images (internal issue
- 521).
-
------------------------------------------------------
-
-Change log for September 30, 2016 Vulkan 1.0.29 spec update:
-
- * Bump API patch number and header version number to 29 for this update.
-
-Github Issues:
-
- * Remove redundant constraint on
- slink:VkCommandBufferInheritanceInfo::pname:queryFlags (public issue
- 224).
- * Fix typo and remove link in Note in the
- <<extended-functionality-instance-extensions-and-devices, Instance
- Extensions and Device Extensions>> section (public issue 359).
- * Fix erroneous validation statement for the pname:layout member of
- slink:VkComputePipelineCreateInfo (public issue 362).
-
-Internal Issues:
-
- * Restore long figure captions using asciidoc sidebar blocks, due to
- restrictions of asciidoc syntax (internal issue 101).
- * Replace most latexmath equations with comparable markup in straight
- asciidoc, which significantly improves time required to fully load and
- process the HTML forms of the Specification. There are known minor font
- and alignment inconsistencies with MathJax and PDF rendering of
- latexmath equations. Please do not file github issues about these. We
- are aware of the inconsistencies and will make refinements over time,
- while the performance improvements are compelling in at least some major
- browsers (internal issue 313).
- * Move handcoded validity statements from +vk.xml+ into the Specification
- body, easing work in the single-branch model. Specify the distinction
- between these explicit statements, and the implicit validity statements
- inferred from vk.xml. Validity statements now appear in two blocks for
- each command and structure - handcoded "Valid Usage" and the implicit
- "Valid Usage (Implicit)" (internal issue 392).
- * Add the +returnedonly="false"+ attribute to WSI output structures,
- removing incorrectly generated implicit validity statements for
- slink:VkDisplayPropertiesKHR, slink:VkDisplayPlanePropertiesKHR,
- slink:VkDisplayModePropertiesKHR, slink:VkDisplayPlaneCapabilitiesKHR,
- slink:VkSurfaceCapabilitiesKHR, and slink:VkSurfaceFormatKHR structures
- (internal issue 486).
- * Update slink:VkImageLayout to require the
- ename:VK_IMAGE_USAGE_SAMPLED_BIT be set for sampled depth/stencil images
- (internal issue 487).
- * Use an explicit format specifier string for the date command invocation
- in the +Makefile+ instead of the shorthand -R option, which doesn't work
- on BSD and MaxOS X date commands (internal issue 500).
-
-Other Issues:
-
- * Use the terms ``allocation scope'' and ``extension scope'' instead of
- just ``scope'', and add them to the glossary.
-
------------------------------------------------------
-
-Change log for September 23, 2016 Vulkan 1.0.28 spec update:
-
- * Bump API patch number and header version number to 28 for this update.
-
-Github Issues:
-
- * Minor spelling and typography cleanup, add definitions of
- ename:VK_FALSE and ename:VK_TRUE as just what their names say
- (public issues 220, 318, 325, 365; internal issues 451, 496)
- * Clarify that the pname:maxDescriptorSet limits in the
- <<features-limits-required,Required Limits>> table are n *
- maxPerStage limit (where n=number of supported stages) (public issue
- 254).
- * Minor cleanup to <<boilerplate-platform-macros,Platform-Specific
- Macro Definitions>> appendix (public issue 314).
- * Add valid usage statement to slink:VkPipelineLayoutCreateInfo
- disallowing multiple push constant ranges for the same shader stage
- (public issue 340).
- * Clarify the elink:VkSharingMode description of what executing the
- "same" barriers means in case of ownership transfer (public issue
- 347).
- * Rename copyright.txt and add COPYING.md to try and reduce confusion
- about applicable copyrights (public issue 350).
- * Extend the table in the <<boilerplate-wsi-header, Window System-Specific
- Header Control>> section to describe the external headers included when
- each etext:VK_USE_PLATFORM_* macro is defined (public issue 376).
-
-Internal Issues:
-
- * Add "Revision History" to the PDF outputs following the table of
- contents, to match HTML outputs (internal issue 43).
- * Clarified that flink:vkMapMemory may fail due to virtual address
- space limitations (internal issue 346).
- * Add +refBody+ comment markup for ref page autoextraction when required
- (internal issue 400).
- * Document proper use of "mipmap" and "mip" in the style guide API
- naming rules, matching the spelling rules (internal issue 471).
- * Tweak the <<extensions,Layers and Extensions>> appendix to note that
- the Specification may be built with arbitrary combinations of
- extensions (internal issue 483).
- * Remove incorrect statement allowing
- slink:VkClearAttachment::pname:colorAttachment to be >=
- slink:VkSubpassDescription::pname:colorAttachmentCount (internal
- issue 488).
- * The <<features-limits-viewportboundsrange,viewportBoundsRange>> is
- expressed in terms of the pname:maxViewportDimensions but this is
- actually two values. Clarify that it's based on the larger of the two
- (if they differ) (internal issue 499).
-
-Other Issues:
-
- * Reflowed text of the entire spec using the 'reflow' Makefile target, to
- (hopefully) reduce future internal git churn as edits are made and
- extensions added in return for one-time pain. This has no perceptible
- effect on the spec outputs, but considerable changes on the asciidoc
- source (internal issue 367).
-
------------------------------------------------------
-
-Change log for September 16, 2016 Vulkan 1.0.27 spec update:
-
- * Bump API patch number and header version number to 27 for this update.
-
-Github Issues:
-
- * Weaken flink:vkGetPipelineCacheData invariance conditions; previous
- conditions were stronger than agreed and can't be guaranteed (public
- issue 280).
- * Add link to "Vulkan Loader Specification and Architecture Overview"
- document to Normative References section (public issue 359).
-
-Internal Issues:
-
- * Be more clear in the <<interfaces-resources-layout-std140, uniform
- buffer layout>> section that block offsets can be out of order
- (internal issue 396).
- * Document that extension authors should add support for their extensions
- to the validation layers (internal issue 398).
- * Clarify that the valid range of depth clear values should be limited
- to the 0..1 range and that copies to depth aspect must also be in this
- range (internal issue 412).
- * Specify ``a'' vs. ``an'' use in the style guide (internal issue 432).
- * Increase the maximum pname:nonCoherentAtomSize value in the
- <<features-limits-required,Required Limits>> section from 128 to 256
- (internal issue 435).
- * Fix vk_platform.h for compiler errors on some Android platforms
- (internal issue 441).
- * Clarify that slink:VkPhysicalDeviceFeatures::pname:pEnabledFeatures ==
- `NULL` disables all features, including the "required" feature
- pname:robustBufferAccess (internal issue 479).
-
-Other Issues:
-
- * Expand style guide and make it more self-consistent.
- * Use ISO 8601 date format everywhere.
- * Emphasise the correct way of using
- slink:VkSurfaceCapabilitiesKHR::pname:maxImageCount.
- * Added +VK_EXT_validation_flags+ extension for validation flag mechanism.
- * Fix an <<credits,author credit>> to include their current employer.
-
------------------------------------------------------
-
-Change log for September 6, 2016 Vulkan 1.0.26 spec update:
-
- * Bump API patch number and header version number to 26 for this update.
-
-Github Issues:
-
- * Bring sample code in the `VK_KHR_surface` and `VK_KHR_swapchain`
- extension summary appendices up to date, and note they will be replaced
- with pointers to the LunarG SDK examples in the future (public issue
- 279).
- * Add a new <<fundamentals-commandsyntax-results-lifetime,Lifetime of
- Retrieved Results>> section specifying that ftext:vkGet* and
- ftext:VkEnumerate* results are invariant unless otherwise specified, and
- specify behavior for individual commands which are not invariant (public
- issue 280).
- * Remove conflicting definition of
- slink:VkDisplayPlaneCapabilitiesKHR::pname:maxSrcPosition and clean up
- language of the remaining definition (public issue 351).
- * Fix many minor spelling errors and add rules to the style guide to
- prevent recurrences (public issue 352).
-
-Internal Issues:
-
- * Remove redundant descriptions of the etext:VK_USE_PLATFORM_* macros from
- the <<wsi,Window System Integration>> chapter in favor of the
- description in the <<boilerplate-wsi-header,Window System-Specific
- Header Control>> appendix (internal issue 6).
- * Replace misleading 'can: be destroyed when not X' with more correct
- 'must: not be destroyed while X' in the
- <<fundamentals-objectmodel-lifetime,Object Lifetime>> section. Disallow
- destroying a pipeline layout while a command buffer using it is
- recording (internal issue 241).
- * Clarify that ename:VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT is valid for
- all images used as attachments in elink:VkImageUsageFlagBits and the
- slink:VkImageLayout validity language (internal issue 320).
- * Note that <<extended-functionality-layers,Layers>> may wrap object
- handles, but that this is a generally discouraged. A link to additional
- information in the documentation for layer authors is provided (issue
- 398)
- * Replace the mustnot: and shouldnot: macros with equivalent must: not and
- should: not to get rid of non-English words while still highlighting
- normative language (internal issue 407).
- * Disallow creating multisampled images with
- ename:VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT in the slink:VkImageLayout
- validity language and the <<features-supported-sample-counts,Supported
- Sample Counts>> section (internal issue 445).
- * Fix typo so that flink:vkCmdDrawIndexedIndirect is defined in terms of
- flink:vkCmdDrawIndexed rather than flink:vkCmdDrawIndirect (internal
- issue 446).
- * Reorganize the per-extension information sections to all be in the
- <<extensions,Layers & Extensions>> appendix. Also fix a typo in
- +VK_IMG_filter_cubic+ which incorrectly identified it as a +KHR+
- extension (internal issue 461).
-
-Other Issues:
-
- * Use asciidoc markup instead of latexmath to simplify diagrams in the
- <<features-formats-non-packed,byte mapping tables>> for color formats.
- * Fix a markup problem with the wildcarded enumerant names in a NOTE in
- the <<textures-texel-replacement,Texel Replacement>> section.
- * Fix missing attributes in the XML interface for
- elink:VkExternalMemoryHandleTypeFlagBitsNV and
- elink:VkExternalMemoryFeatureFlagBitsNV (KhronosGroup/Vulkan-Hpp issue
- 25)
- * Cleanup reference page builds so only core pages are built for releases.
-
------------------------------------------------------
-
-Change log for August 26, 2016 Vulkan 1.0.25 spec update:
-
- * Bump API patch number and header version number to 25 for this update.
- * Structurally change the specification so that multiple extensions are
- included in the +1.0+ git branch, and specifications will include or not
- include those extensions at build time based on options passed to the
- Makefile. See +doc/specs/vulkan/README.html+ and the ``Layers and
- Extensions'' section of the ``Vulkan Documentation and Extensions''
- document for more information on this change.
- * Register and publish new extensions in the single-branch form:
- ** +VK_NV_external_memory_capabilities+
- ** +VK_NV_external_memory+
- ** +VK_NV_external_memory_win32+
- ** +VK_NV_win32_keyed_mutex+
-
-Github Issues:
-
- * Clarify description of GetInstanceProcAddr and GetDeviceProcAddr (public
- issue 212).
- * Add SPIR-V <<textures-operation-validation, instruction validation>> for
- single-sampled images (public issue 316).
- * Fix spelling of ``tesselation'' in a few places and note it as an
- exception to the American spelling rules convention (public issue
- 327).
- * Fix Makefile to create output directory for ``styleguide''
- target (public issue 329).
- * Fix numerous minor issues with incorrectly tags on enumerant names and
- table titles (public issue 330).
- * Generate specversion.txt date in UTC time and RFC 2822 format
- (public issue 335).
- * Convert link to the SPIR-V Specification for
- flink:VkShaderModuleCreateInfo into an internal link to the normative
- reference (public issue 336).
- * Add ename:VK_ERROR_OUT_OF_MEMORY error code to
- flink:vkCreateDebugReportCallbackEXT (public issue 337).
-
-Internal Issues:
-
- * Update style guide regarding use of code:NULL and dname:VK_NULL_HANDLE
- (internal issue 393).
- * Change the definition of latexmath:[$q$] in the
- <<textures-image-level-selection,texture image level selection>> section
- to be the index of the maximum defined level for the view, not the
- number of levels in the view (internal issue 406).
- * Allow developers to override dname:VK_DEFINE_NON_DISPATCHABLE_HANDLE
- with their own binary-compatible definition (internal issue 439).
- * Fix +vk_platform.h+ conditional logic causing compile failure with some
- Android compilers (internal issue 441).
- * Implement the single-branch model as described above (internal issue
- 461).
-
------------------------------------------------------
-
-Change log for August 12, 2016 Vulkan 1.0.24 spec update:
-
- * Bump API patch number and header version number to 24 for this update.
-
-Github Issues:
-
- * Fix type mismatch in swapchain image equivalency table (public issue
- 289).
- * Fix a copy-and-paste error in the description of
- flink:vkGetSwapchainImagesKHR::pname:pSwapchainImages, that said it
- was an array of ``sname:VkSwapchainImageKHR structures'' instead of
- an array of ``sname:VkImage handles'' (public issue 292).
- * Specify that ename:VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT is only valid
- for ename:VK_IMAGE_TYPE_2D images (public issue 293).
- * Add a valid usage statement to flink:vkCmdExecuteCommands saying
- that when called outside a render pass instance, the secondary
- command buffers must not have been created with the
- ename:VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT (public issue
- 297).
- * Fix description of +VK_NO_STDINT_H+ in the
- <<boilerplate-platform-macros,platform macros>> section (public
- issue 314).
-
-Internal Issues:
-
- * Normalize the language for the remaining built-in variables in the
- <<interfaces-builtin-variables,Built-In Variables>> section. Fix
- code:FrontFacing and code:HelperInvocation, as they should be of
- code:boolean type rather than code:integer (internal issue 323).
- * Clarify that when ename:VK_WHOLE_SIZE is used for a buffer
- descriptor range, the effective range must still be within the max
- buffer range (internal issue 426).
- * Clarify that command buffers and descriptor sets are allocated
- rather than created. Also clarify when the recording state of a
- command buffer is relevant (internal issue 434).
-
------------------------------------------------------
-
-Change log for August 5, 2016 Vulkan 1.0.23 spec update:
-
- * Bump API patch number and header version number to 23 for this update.
-
-Github Issues:
-
- * Add explicit valid value attributes to pname:sType members in vk.xml
- (public issue 34).
- * Clarify usage of flink:vkGetInstanceProcAddr and
- flink:vkGetDeviceProcAddr (public issue 225).
- * Fix a copy-and-paste error in the description of
- pname:pSwapchainImageCount saying that it was the count of ``format
- pairs'' instead of ``swapchain images'' (public issue 292).
- * flink:vkCmdExecuteCommandBuffers requires all command buffers to be
- allocated from command pools created for the same queue family (public
- issue 296).
- * Remove bogus +optional+ attribute for
- flink:vkEnumerateDeviceLayerProperties::pname:physicalDevice from vk.xml
- (public issue 301).
- * Clean up the <<resources-image-views-compatibility,image and image view
- compatibility table>> reference and contents. Use full enumerant names.
- Refer to pname:layerCount in the ``view parameters'' column instead of
- pname:arrayLayers. Require N >= 1 for the cube array subview row, not
- just arrayLayers >= 6 N (public issue 304).
- * Modify description of <<resources-memory-aliasing,memory aliasing>> to
- be consistent with the description of
- <<resources-bufferimagegranularity,buffer image granularity>> (public
- issue 307).
-
-Internal Issues:
-
- * Describe remaining +vk_platform.h+ macros in the <<boilerplate,API
- Boilerplate>> appendix (internal issue 6).
- * Clarify
- <<features-features-robustBufferAccess,pname:robustBufferAccess>>
- feature behavior; what memory can be accessed, how bounds checking is
- performed, and allowing for vectorization (internal issue 332).
- * Document markup for automatic extraction of reference pages from the
- spec sources in the style guide (internal issue 395).
- * Allow flink:vkCreateDisplayModeKHR to return
- ename:VK_ERROR_INITIALIZAION_FAILED_KHR if the user requests mode
- parameters that the specified display does not support (internal issue
- 411).
- * Remove atomic counters (atomic_uint style) from KHR_vulkan_glsl, and
- more clearly remove the subroutine keyword alongside it (internal issue
- 421).
- * Clarify behavior of flink:vkCmdBindDescriptorSets for descriptor sets
- not contained in the layout (internal issue 427).
-
-Other Commits:
-
- * Change the order in which members of sname:VkAttachmentDescription and
- sname:VkPipelineInputAssemblyStateCreateInfo are described to match
- their order in the structures.
-
------------------------------------------------------
-
-Change log for July 22, 2016 Vulkan 1.0.22 spec update:
-
- * Bump API patch number and header version number to 22 for this update.
-
-Github Issues:
-
- * Translate the subpass self-dependency language into concrete
- validity statements, and added a validity statement about the
- restrictions on layout parameters (public issue 267).
- * Add validity requirement that
- slink:VkAttachmentDescription::pname:finalLayout and
- slink:VkAttachmentReference::pname:layout must not be
- ename:VK_IMAGE_LAYOUT_UNDEFINED or
- ename:VK_IMAGE_LAYOUT_PREINITIALIZED (public issue 268).
- * Clarify that slink:VkSubpassDescription::pname:pResolveAttachments
- layouts are used. Make language consistent with other attachment
- arrays (public issue 270).
- * Changed 64-bit definition for
- dname:VK_DEFINE_NON_DISPATCHABLE_HANDLE to work for x32 platform in
- +vk.xml+ and the resulting +vulkan.h+ (public issue 282).
- * Add missing error return code for
- flink:vkEnumerateInstanceExtensionProperties and
- flink:vkEnumerateDeviceExtensionProperties (public issue 285)
- * Fix several cases of stext::VkStructName.memberName markup to
- stext::VkStructName::pname:memberName, to match other usage in the
- spec, and describe this markup in the style guide (public issue
- 286).
- * Modified validity language generation script to avoid redundant
- common ancestor language if covered by generic parent language, and
- used `Both' instead of `Each' when appropriate (public issue 288).
-
-Internal Issues:
-
- * Add language about behavior of flink:vkAllocateDescriptorSets when
- allocation fails due to fragmentation, a new error
- ename:VK_ERROR_FRAGMENTED_POOL, and a Note explaining the situation
- (internal issue 309).
- * For the features of code:PointSize, code:ClipDistance, and
- code:CullDistance, the SPIR-V capability is required to be declared
- on use (read or write) rather than on decoration (internal issue
- 359).
- * Have desktop versions of GLSL respect precision qualification
- (code:mediump and code:lowp) when compiling for Vulkan. These will
- get translated to SPIR-V's code:RelaxedPrecision decoration as they
- do with OpenGL ES versions of GLSL (ESSL). The default precision of
- all types is code:highp when using a desktop version (internal issue
- 360).
- * Add validity statement for slink:VkImageCreateInfo specifying that
- multisampled images must be two-dimensional, optimally tiled, and
- with a single mipmap level (internal issue 369).
- * Add validity statements to slink:VkImageViewCreateInfo disallowing
- creation of images or image views with no supported features. Made
- some slink:VkImageViewCreateInfo validity statements more precise
- and consistent. Added a Note to the <<features,features>> chapter
- about formats with no features (internal issue 371).
- * Remove +manpages+ from default build targets. Nroff outputs
- containing imbedded latexmath will not render properly. Fixing this
- is a lot of work for limited use cases (internal issue 401).
-
-Other Commits:
-
- * Fix flink:vkRenderPassBeginInfo::pname:clearValueCount validity
- statement to be based on attachment indices rather than the number
- of cleared attachments
- (Vulkan-LoaderAndValidationLayers/issues/601).
- * Convert registry documentation from LaTeX to asciidoc source and
- rename from +src/spec/readme.tex+ to +src/spec/registry.txt+.
- * Fix lack of Oxford commas in validity language.
- * Lots of cleanup of generator scripts and Makefiles to move extension
- list for generator into the script arguments instead of the body of
- genvk.py, and express better dependencies between XML, scripts, and
- generated files.
-
------------------------------------------------------
-
-Change log for July 15, 2016 Vulkan 1.0.21 spec update:
-
- * Bump API patch number and header version number to 21 for this update.
-
-Github Issues:
-
- * Clarify how <<features-supported-sample-counts,sample count queries>>
- relate to the limits in slink:VkPhysicalDeviceLimits. (public issue
- 185).
- * Clarify in the <<interfaces-iointerfaces,Shader Input and Output
- Interfaces>> section that shader output variables have undefined values
- until the shader writes to them (public issue 240).
- * Specify the implicit value of image parameters that cannot be set in
- slink:VkSwapchainCreateInfo::pname:flags, pname:imageType,
- pname:mipLevels, pname:samples, pname:tiling, and pname:initialLayout
- (public issue 243).
- * Make use of code:NULL and code:VK_NULL_HANDLE consistent in the
- VK_KHR_swapchain extension (public issue 276).
-
-Internal Issues:
-
- * Clarify that presenting an image to a display surface swapchain applies
- the display surface's mode, and that destroying a display surface
- swapchain may reset the display's mode, in the VK_KHR_display_swapchain
- extension (internal issue 247).
- * Better describe what a slink:VkSurfaceKHR is, and that creating one does
- not set a mode, in the VK_KHR_display extension. This is a round-about
- way of pointing out that mode setting is not covered by the extension,
- but rather is performed as a side effect of presentation (internal issue
- 247).
- * Add more valid usage statements to flink:vkQueuePresentKHR command when
- the VK_KHR_display_swapchain extension is present (internal issue
- 247).
- * Add more includes to the VK_KHR_swapchain extension to better document
- interactions with VK_KHR_display_swapchain (internal issue 247).
- * Clarify restrictions on location aliasing in the
- <<fxvertex,Fixed-Function Vertex Processing>> section (internal issue
- 370).
- * Add mathematical description of blitting to flink:vkCmdBlitImage, and
- link it to the <<textures,Image Operations>> chapter. Use mathematical
- notation for ranges of texel coordinates in the <<textures,Image
- Operations>> chapter. Fixed miscellaneous validity statements for
- flink:vkCmdBlit and slink:VkImageBlit (internal issue 382).
-
-Other Commits:
-
- * Added a valid usage rule to flink:VkGraphicsPipelineCreateInfo that the
- ename:VK_PRIMITIVE_TOPOLOGY_PATCH_LIST topology must only be used when
- tessellation shaders are used.
- * Expand the style guide into a formal "Procedures and Conventions"
- document. Add a API Naming Conventions section, move most of the API
- Specification Appendix C (Layers and Extensions) content into the new
- document, and define the resulting procedures as mandatory (where
- relevant). This more clearly separates use vs. specification of Vulkan
- APIs.
- * Update vk_platform.h to handle 32-bit ARMv8 binaries.
- * Various minor cleanups to the Makefile and build process.
-
------------------------------------------------------
-
-Change log for July 8, 2016 Vulkan 1.0.20 spec update:
-
- * Bump API patch number and header version number to 20 for this
- update.
-
-Github Issues:
-
- * Replaced existing reference pages by text automatically extracted from
- the specification source, or generated from vk.xml in some cases. This
- is not a complete solution for the reference pages, but puts them in a
- much better state. The ref pages (only) are now placed under a CC BY
- open source license, which is more current than the obsolete license
- previously used. Various minor tweaks to the Specification sources were
- made to enable this, and a new ``API Boilerplate'' chapter added to
- include definitions of all the entities in the API and +vulkan.h+ which
- were not already described in some form in the document.
-
- Further improvements to the pages should not edit them directly, but
- instead concentrate on the specification source from which the ref pages
- are being extracted (public issues 44, 55, 160; internal issue 389).
-
------------------------------------------------------
-
-Change log for July 1, 2016 Vulkan 1.0.19 spec update:
-
- * Bump API patch number and header version number to 19 for this
- update.
-
-Github Issues:
-
- * Clarified how flink:vkGetImageSubresourceLayout interacts with image
- layouts (public issue 247).
- * Remove ename:VK_IMAGE_LAYOUT_PREINITIALIZED from valid usage rule for
- slink:VkImageMemoryBarrier::pname:oldLayout. It is only valid if it is
- the current layout (public issue 248).
- * Modify valid usage for flink:vkBindBufferMemory so implementations are
- free to require a different backing memory size than the buffer size
- (public issue 251).
- * Clarify that filtering rules for flink:vkCmdBlitImage always apply, and
- are usually no-ops if the formats are the same (public issue 253).
- * Remove 'non-sparse' from description of
- flink:vkGetBufferMemoryRequirements and
- flink:vkGetImageMemoryRequirements (public issue 257).
- * Remove ename:VK_ERROR_LAYER_NOT_PRESENT error code from
- flink:vkCreateDevice (public issue 259).
- * Change "must: not" to "should: not" in constraint on when
- flink:vkAcquireNextImageKHR is called in the VK_KHR_swapchain branch
- (public issue 262).
- * Change type of flink:vkCmdUpdateBuffer::pname:pData from
- basetype:uint32_t* to basetype:void* (public issue 263).
- * Change should: to must: in description of where additional segments are
- placed in the <<[tessellation-tessellator-spacing,Tessellator Spacing>>
- section (public issue 264).
-
-Internal Issues:
-
- * Normalize the language of all the compute shader built-ins in the
- <<interfaces-builtin-variables,Built-in Variables>> section (internal
- issue 323).
- * Remove definition of presentation engine internal queue lengths
- associated with ename:VK_PRESENT_MODE_FIFO_KHR and
- ename:VK_PRESENT_MODE_FIFO_RELAXED_KHR in the <<Window System
- Integration,wsi>> chapter (internal issue 374).
- * The language of a Note was too broad, and implied that loaders for a
- given OS would statically export functions for WSI extensions that
- were not relevant to (or supported on) the OS. Also, removed
- "Khronos-provided" since the Android loader is not (internal issue 380)
-
-Other Commits:
-
- * Add ename:VK_INCOMPLETE to list of return values for
- flink:vkGetPipelineCacheData. Spec says this value is returnable, but it
- was not listed in the error codes.
- * Fix "correponds" typo in member definitions for
- slink:VkSubpassDescription.
-
------------------------------------------------------
-
-Change log for June 24, 2016 Vulkan 1.0.18 spec update:
-
- * Bump API patch number and header version number to 18 for this
- update.
-
-Github Issues:
-
- * Added "queue operation" terminology, and modified spec to actually
- use this terminology (public issue 155). The act of submitting a
- piece of work to a queue now generates "operations" for the queue to
- execute, including operations to wait on/signal semaphores and
- fences. Synchronization waits on these operations, making execution
- dependency chains more obvious for semaphores and fences (though
- additional work is still needed here). These changes include:
- ** Overview of "queue submission" commands in chapter
- <<devsandqueues-submission>>.
- ** Updated descriptions for fence and semaphore waits and signals in
- the synchronization chapter <<synchronization-semaphores-waiting>>,
- <<synchronization-semaphores-signaling>> and
- <<synchronization-fences-waiting>>.
- ** Clarifications to semaphore and fence operation within queue
- submission functions.
- ** New glossary terms.
- ** Moved device idle and queue wait idle to synchronization chapter in
- order to describe them in terms of other synchronization
- primitives.
- ** Clarifications to semaphore and fence operation allowed removal of
- the "implicit ordering guarantees" section, as this information is
- now wholly covered where these primitives are described.
- *** The "host writes" section of this is still there for now - in its
- own section. This could probably be merged into other sections
- later.
- *** Modified fundamentals chapter on queue ordering to make sense in
- context of the new changes, and avoid duplication.
- <<fundamentals-queueoperation>>
- * Added "aspect" and "component" definitions to the glossary, and made
- sure these terms are referenced correctly (public issue 163).
- * Update valid usage for ftext:vkGet*ProcAddr to only include
- conditions that must be met to get a valid result. In particular,
- it is okay to call flink:vkGetDeviceProcAddr with any string and will
- get a code:NULL if that string is not a core Vulkan function or an
- enabled extension function (addresses but does not fully close
- public issue 214).
- * Change the WSI extension dependencies to refer to version 1.0 of the
- Vulkan API, instead of the pre-1.0-release internal revisions
- numbers (public issue 238).
- * Specified that <<interfaces-fragmentoutput,undeclared fragment
- shader outputs>> result in undefined values input to the blending
- unit or color attachment (public issue 240).
- * Fix latexmath:[$\leq$] operators turning into Unicode left arrow symbols
- (public issue 245).
-
-Internal Issues:
-
- * Better documented that the registry XML "optional" tag for values
- only applies when that value is the size of an array (internal issue
- 335).
- * Add a stronger definition for the valid usages of
- VkSpecializationMapEntry.size in the
- <<pipelines-specialization-constants,Specialization Constants>>
- section (internal issue 345).
- * Change code:OpName to code:OpDecorate (along with appropriate
- syntax) for vertex shader built-ins (internal issue 368).
- * Add missing ref pages (those which are not currently stubs) to
- apispec.txt for the single-page version of the ref pages (internal
- issue 378).
-
-Other Commits:
-
- * Fix example in the <<descriptorsets,Descriptor Sets>> section to use
- M, N, and I, describing set, binding, and index, consistently
- throughout the example code.
-
------------------------------------------------------
-
-Change log for June 17, 2016 Vulkan 1.0.17 spec update:
-
- * Bump API patch number and header version number to 17 for this
- update.
-
-Github Issues:
-
- * Update description of vertex shader reuse in
- <<shaders-vertex-execution>> (public issue 106).
- * Simplify validity language around pname:ppEnabledExtensionNames and
- pname:ppEnabledLayerNames (in the <<initialization-instances>> and
- <<devsandqueues-device-creation>> sections) (public issue 214).
- * Add missing validity rule to flink:vkCmdBeginRenderPass requiring
- compatibility between slink:VkAttachmentDescription pname:initalLayout
- members and the corresponding attached framebuffer images (public issue
- 233).
- * Fix Unicode arrows appearing in output instead of relational operators
- (public issue 239).
- * Correctly describe the required number of elements for
- code:TessLevelInner and code:TessLevelOuter arrays in the
- <<interfaces-builtin-variables,Built-In Variables>> section as two and
- four, respectively, instead of the other way around, and refer to this
- section from the <<tessellation,Tessellation>> chapter (public issue
- 246).
-
-Internal Issues:
-
- * Document deprecation of ename:VK_COLORSPACE_SRGB_NONLINEAR_KHR in the
- VK_KHR_surface extension, and of
- ename:VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT in the
- VK_EXT_debug_report extension (internal issue 328).
- * Added language to define what a valid usage statement is and should be,
- with a note about some apparent weirdnesses this might entail (internal
- issue 357).
-
-Other Commits:
-
- * Added missing ename:VK_ERROR_DEVICE_LOST error to
- flink:vkQueueBindSparse.
-
------------------------------------------------------
-
-Change log for June 10, 2016 Vulkan 1.0.16 spec update:
-
- * Bump API patch number and header version number to 16 for this
- update.
-
-Github Issues:
-
- * Clarify that integer border values are meant to be 0/1, and that
- integer texture lookups are sign-extended in the
- <<textures-format-conversion,Format Conversion>> and
- <<textures-texel-replacement,Texel Replacement>> sections (public
- issue 52).
- * Add logic to generate spec boilerplate without using the 'git'
- command-line client, needed when building from a tarball or another
- source of the Vulkan tree rather than a cloned git repo. Remove
- boilerplate as part of 'clean' target (public issue 195).
- * Document that color writes and clears to unused attachments have no
- effect for slink:VkClearAttachment and
- elink:VkColorComponentFlagBits (public issue 198).
- * Fixed flink:vkCmdExecuteCommands validity statement for
- sname:VkCommandBufferInheritanceInfo::pname:framebuffer. If used, it
- must match the framebuffer in the current renderpass instance
- (public issue 226).
- * Added valid usage language to require for all functions that set
- dynamic state that the currently bound graphics pipeline has the
- corresponding dynamic state enabled (public issue 235).
-
-Internal Issues:
-
- * Clarify for flink:vkEnumerateInstanceExtensionProperties, in the
- <<extended-functionality-instance-extensions-and-devices, Instance
- Extensions and Device Extensions>> section, and in the
- <<glossary,Glossary>> section when functionality should be exposed
- as an instance extension, as a device extension, or as both
- (internal issue 109).
- * Place WorkgroupSize in alphabetical order in the
- <<interfaces-builtin-variables,Built-in Variables>> section
- (internal issue 323).
- * Corrects valid usage in vkEndRenderPass to only affect primary
- render passes, as secondaries may be entirely within a render pass,
- and should be able to be ended (previous language disallowed that)
- (internal issue 338).
- * Fix relational operator from <= to >= in the
- <<features-extentperimagetype,Allowed Extent Values>> section
- (internal issue 343).
- * Disallow recursion under SPIR-V entry points in the
- <<spirvenv-module-validation,Validation Rules within a Module>>
- section (internal SPIR-V issue 37).
-
-Other Commits:
-
- * Use standard Python ElementTree package instead of lxml.etree in
- header / validation layer / include autogeneration from XML,
- reducing platform dependencies.
-
------------------------------------------------------
-
-Change log for May 27, 2016 Vulkan 1.0.15 spec update:
-
- * Bump API patch number and header version number to 15 for this
- update.
-
-Github Issues:
-
- * Fixed the <<glossary,Glossary>> entry for Fragment Input Attachment
- Interface to specify code:UniformConstant storage class (public issue
- 156).
- * Disallow lazily allocated memory for buffers in the description of
- slink:VkMemoryRequirements::pname:memoryTypeBits (public issue 196).
- * Add numbered figure captions (public issue 219).
- * Fix output variable names in the <<fundamentals-fpfixedconv,Conversion
- from Floating-Point to Normalized Fixed-Point>> section and related
- minor normative language and markup cleanup (public issue 220).
-
-Internal Issues:
-
- * Fix reference to nonexistent etext:VK_IMAGE_LAYOUT_TRANSFER_{SRC,DST}BIT
- to the actual etext:VK_IMAGE_LAYOUT{SRC,DST}_OPTIMAL (internal issue
- 296).
- * Update the <<sparsememory-sparse-memory-aliasing,Sparse Resource
- Implementation Guidelines>> to refer to the correct feature names
- (internal issue 305).
-
------------------------------------------------------
-
-Change log for May 20, 2016 Vulkan 1.0.14 spec update:
-
- * Bump API patch number and header version number to 14 for this
- update.
-
-Github Issues:
-
- * Fix validity language for sname:VkCommandBufferAllocateInfo to
- impose range limits on pname:commandBufferCount (public issue 178).
- * Fix validity language for flink:vkCmdExecuteCommands to refer to the
- correct structure names (public issue 179).
- * Fix two copy-and-paste errors in the WSI queries, where the wrong
- term was used for what was being returned (public issue 206).
- * Add a note in the documentation of
- flink:vkGetPhysicalDeviceSurfaceFormatsKHR, about what it means if
- ename:VK_FORMAT_UNDEFINED is returned (public issue 207).
-
-Internal Issues:
-
- * Clarify the usage and correct the name for the bitmask referenced in
- <<queries-pipestats,Pipeline Statistics Queries>> (internal issue
- 334).
-
-Other Commits:
-
- * Fix the names of decorations listed in the
- <<interfaces-builtin-variables,Built-in Variables>> section such
- that they match the SPIR-V specification.
-
------------------------------------------------------
-
-Change log for May 13, 2016 Vulkan 1.0.13 spec update:
-
- * Bump API patch number and header version number to 13 for this
- update.
-
-Github Issues:
-
- * Improve the description of ename:VK_PRESENT_MODE_FIFO_RELAXED_KHR in the
- VK_KHR_surface extension (public issue 174).
- * Clarify use of etext:*_SIMULTANEOUS_USE_BIT for secondary command
- buffers (public issue 182).
- * Fix typos in VK_KHR_wayland_surface extension where code:wl_device was
- used instead of code:wl_display (public issue 193).
- * Replaced {apiname} with ``Vulkan'' in XML validity statements (public
- issue 199).
- * Fix dead links for WSI handle types (public issue 200).
- * Use "signaled" instead of "signalled" spelling everywhere (public issue
- 201).
- * Move readme.pdf target directory for XML schema documentation into the
- target generation directory, instead of leaving it checked into the spec
- source tree (public issue 203).
- * Fix duplicate 'which which' typo in description of
- elink:VkCommandPoolResetFlagBits (public issue 204).
- * Move the <<Programmable Primitive Shading>> section up one level, out of
- the <<drawing-primitive-topologies,Primitive Topologies>> section
- (public issue 209).
-
-Internal Issues:
-
- * Clarify in the <<pipelines-cache,Pipeline Cache>> section that
- implementations should not manage the size of pipeline cache (internal
- issue 192).
- * Deprecate the concept of device layers and associated commands (internal
- issue 255).
- * Remove ename:VK_INCOMPLETE from the list of possible result codes of
- flink:vkGetPhysicalDeviceSurfaceCapabilitiesKHR (internal issue 314).
- * Add missing std140/std430 rule: the base alignment of a member following
- a structure is a multiple of the structure's base alignment (internal
- issue 321).
- * Fixes naming of the single elink:VkColorSpaceKHR enum from
- ename:VK_COLORSPACE_SRGB_NONLINEAR_KHR to
- ename:VK_COLOR_SPACE_SRGB_NONLINEAR_KHR in XML/header and the
- VK_KHR_swapchain and VK_KHR_surface extensions to match the style of the
- typename (space and color are two words, not one) (internal issue 322).
- * Make it clear that code:LocalInvocationID should only be applied to an
- input variable and normalize the language describing
- code:LocalInvocationID to the language for other compute shader
- variables in the <<interfaces-builtin-variables,Built-in Variables>>
- section, and add normative language (internal issue 323).
- * Clarify in the <<fundamentals-returncodes,Return Codes>> section that
- the result pointer may be modified for specific commands, even if a
- runtime error is returned (internal issue 324).
-
------------------------------------------------------
-
-Change log for April 29, 2016 Vulkan 1.0.12 spec update:
-
- * Bump API patch number and header version number to 12 for this
- update.
-
-Github Issues:
-
- * Change valid usage statements intended to be "sub-points" to
- be actual sub-points (public issue 66).
- * Replace double negation in description of
- slink:VkRenderPassBeginInfo::pname:pClearValues (based on public
- merge 142).
- * Cleanup minor typos in spec, ref pages and XML, including those
- proposed in public pull requests 144, 150, 151, 167, 168, 181, and
- 186.
- * Use *strict subset* in describing the partial order of memory
- property types for slink:VkMemoryType, and update the style guide
- accordingly (public issue 190).
- * Fix various "a image" -> "an image" typos (public issue 191).
- * Note in the <<fundamentals-validusage,Valid Usage>> and
- <<extensions-interactions,Extension Interactions>> sections that
- structures defined by extensions which may be passed in structure
- chains using the ptext:pNext member must include initial
- ptext:sType and ptext:pNext members (public issue 192).
-
-Internal Issues:
-
- * Remove duplicate language from the description of the pname:fence
- parameter to flink:vkQueueSubmit and improve validity language
- (internal issue 91).
- * Added documentation for "optional" attribute to XML readme.tex/pdf
- (internal issue 149).
- * Clarify the host-side data validity rules and behavior of
- flink:vkFlushMappedMemoryRanges and
- flink:vkInvalidateMappedMemoryRanges (internal issue 266).
-
-Other Commits:
-
- * Added clarification to flink:vkCmdFillBuffer regarding the use of
- ename:VK_WHOLE_SIZE.
- * Fixed and documented implementation of "validextensionstructs"
- attribute. in XML processing scripts and readme.tex/pdf.
- * Add missing validity statements to flink:vkResetEvent and
- flink:vkCmdResetEvent.
- * Fix validity for the
- ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag.
- Correct all the draw/dispatch commands to mention optimally tiled
- images as well as linear tiled images, and say image VIEWS instead
- of images. Add validity statement to flink:vkCmdBlitImage
- * Replace the {apiname} macro with hardcoded "Vulkan", now that we have
- committed to that name.
- * Add the VK_AMD_rasterization_order extension to vk.xml.
-
------------------------------------------------------
-
-Change log for April 22, 2016 Vulkan 1.0.11 spec update:
-
- * Bump API patch number and header version number to 11 for this
- update.
-
-Github Issues:
-
- * Clarify the WSI extension language by switching from the fuzzier
- "ownership" language to more-consistent "acquire" language (public
- issue 117).
- * Clarify that memory barriers apply to all commands in the dependency
- chains in the flink:vkGetRenderAreaGranularity command and the
- <<synchronization-execution-and-memory-dependencies,Execution And
- Memory Dependencies>> section (public issue 132).
- * Clarify that a queue family is a set of queues in the
- <<fundamentals-execmodel,Execution Model>> section (public issue
- 166).
- * Removed requirement from valid usage language that
- VkPresentInfoKHR::waitSemaphoreCount must be greater than 0 (public
- issue 171).
- * Fix broken internal links, describe structures consistently, use
- consistent style for SPIR-V codewords, and tag normative terms that
- were missing asciidoc tags (public issue 183 and ancillary
- markup/normative language fixes).
- * Fix typos for slink:VkPhysicalDeviceLimits member names in
- slink:VkImageCreateInfo validity language (public issue 184).
-
-Internal Issues:
-
- * Document that the requested patch version number specified as part
- of slink:VkApplicationInfo::pname:apiVersion is ignored when
- creating an instance (internal issue 176).
- * Clarify handling of extension structs in the
- <<fundamentals-validusageValid Usage>> section (internal issue 254).
- * Update required slink:VkImageFormatProperties::pname:maxMipLevels to
- be limited to the maximum allowed mipmap pyramid size corresponding
- to the actual maximum supported size for the format (internal issue
- 256).
- * Modify the <<features-extentperimagetype,Allowed Extent Values Based
- On Image Type>> section so the allowed maximum extent is the maximum
- image dimension supported for each dimension of the type of texture
- being queried (internal issue 257).
- * Clarify in the <<spirvenv-module-validation,Validation Rules within
- a Module>> section that at least one of the code:LocalSize execution
- mode or code:WorkgroupSize decoration is required for each compute
- shader entry point in a shader module (internal issue 279).
- * Add validity rules for formats in flink:vkCmdClearColorImage and
- flink:vkCmdClearDepthStencilImage (internal issue 283).
- * Clarify that slink:VkImageFormatProperties::pname:maxResourceSize is
- an upper bound, and that it may not be possible to create an image
- anywhere near that size (internal issue 284).
-
-Other Commits:
-
- * Fix various minor markup errors reported by validation scripts.
- * Change copyright from Khronos Free Use License to Apache 2.0 license
- on relevant script/XML/header files. This does not affect the
- specification source copyright.
-
------------------------------------------------------
-
-Change log for April 15, 2016 Vulkan 1.0.10 spec update:
-
- * Bump API patch number and header version number to 10 for this
- update.
-
-Github Issues:
-
- * Slightly tweak the <<memory-allocation,Host Memory>> allocator language
- so that an application wrapping the standard C alloc/free/realloc
- functions is still correct - the previous language was too strong with
- regards to freeing memory. Also made certain scenarios clearer - an
- implementation may now continue without error if an allocation failed
- and it is able to continue correctly (public issue 21).
- * Require that etext:VK_*_CREATE_SPARSE_BINDING_BIT is set when the
- corresponding etext:VK_*_CREATE_SPARSE_RESIDENCY_BIT is used, in the
- <<sparsememory-miptail,Mip Tail Regions>> section and related commands
- flink:vkCreateBuffer and flink:vkCreateImage (public issue 84).
- * Update the <<features,Features, Limits, and Formats>> chapter to clarify
- interactions between optional features and dynamic state for the
- pname:depthBiasClamp and pname:wideLines features (public issue 89).
- * Describe the code:WorkgroupSize builtin in the
- <<interfaces-builtin-variables,Built-In Variables>> section, and update
- the <<compute-shaders,Compute Shaders>> section to further clarify how
- to set the number of workgroups to execute in a compute shader (public
- issue 145).
- * Use the term *image subresource* everywhere instead of *subresource*,
- except for the special case of *host-accessible subresource*, which may
- be either an image subresource or buffer range (public issue 120)
- * Add a note to the <<features,Features, Limits, and Formats>> section
- about extensibility of structures (Public issue 165).
- * Fix return code flink:vkAcquireNextImageKHR when the timeout parameter
- is 0 to ename:VK_NOT_READY instead of ename:VK_TIMEOUT (public issue
- 170).
- * Fix typo in slink:VkLayerProperties::pname:apiVersion field (public
- issue 172).
-
-Internal Issues:
-
- * Fix a few minor internally-detected typos.
- * Minor formatting tweaks to pseudocode in the <<resources,Resource
- Creation>> chapter (internal issue 179).
- * Fix typo in the definition of point sampling for
- elink:VkCullModeFlagBits (internal issue 268).
-
------------------------------------------------------
-
-Change log for April 8, 2016 Vulkan 1.0.9 spec update:
-
- * Bump API patch number and header version number to 9 for this
- update.
-
-Github Issues:
-
- * Fix memory type preorder definition and clarify example list and source
- code for slink:VkMemoryRequirements and slink:VkMemoryHeap (public issue
- 26).
- * Ensure slink:VkAllocationCallbacks are properly defined (public issue
- 73).
- * Clarify the WSI extension language by switching from the fuzzier
- "ownership" language to more-consistent "acquire" language (public issue
- 117).
- * Add language allowing allocation and freeing of memory scoped to the
- duration of any API command in the <<memory-allocation,Memory
- Allocation>> section (public issue 136).
- * Clarify the explicit location assignment always overrides the inherited
- location in the <<interfaces-iointerfaces-locations,Location
- Assignment>> section, even for the first member of a block (public issue
- 141).
- * Fixed references to
- slink:VkCommandBufferInheritanceInfo::pname:pipelineStatistics (public
- issue 158).
- * Fix name of slink:VkBufferCopy::pname:size field in validity language
- for flink:vkCmdCopyBuffer (public issue 162).
-
-Internal Issues:
-
- * Update GL_KHR_vulkan_glsl specification to clarify disallowance of
- spec-const arrays in initializers (internal issue 248).
- * Clarify <<interfaces-iointerfaces-matching,Interface Matching>> section
- to state that user-defined variable interface must match too (internal
- issue 250).
-
------------------------------------------------------
-
-Change log for April 1, 2016 Vulkan 1.0.8 spec update:
-
- * Bump API patch number and header version number to 8 for this
- update.
-
-Github Issues:
-
- * Specify in the validity language for flink:vkBeginCommandBuffer that
- pname:commandBuffer must not currently be pending execution (public
- issue 96).
- * Describe depth comparison using the correct temporary variable names
- in the <<textures-depth-compare-operation,Depth Compare Operation>>
- section (public issue 100).
- * Clarify the order of descriptor update operations in the
- flink:vkUpdateDescriptorSets command (public issue 115).
- * Specify in the VK_KHR_swapchain extension that
- flink:vkAcquireNextImageKHR's pname:semaphore and pname:fence
- parameters cannot both be sname:VK_NULL_HANDLE (partly addresses,
- but does not fully close, public issue 117 / internal issue 246).
- * Change reference to the "lifetime" of a Vulkan command to
- "duration", and define the "duration" term (public issue 135).
- * Added valid usage language for slink:VkImageLayout to require both
- pname:height and pname:depth to be 1 for 1D images and pname:depth
- to be 1 for 2D images (public issue 137).
- * Fix SPIR-V example code in the
- <<descriptorsets-inputattachment,Input Attachment>> section to
- properly decorate the code:InputAttachmentIndex (public issue 139).
- * Fix reference to nonexistent pname:imageInfo in the description of
- flink:VkWriteDescriptorSet to refer to pname:pImageInfo (public
- issue 140).
-
-Internal Issues:
-
- * Link to the fixed-function vertex chapter from the drawing chapter
- (internal issue 110)
- * Fix typo in slink:VkImageCreateInfo validity language:
- ptext:maxExtent.sampleCounts -> pname:sampleCounts (internal issue
- 249).
- * Explain why the non-core token etext:VK_IMAGE_LAYOUT_PRESENT_SRC_KHR
- is used in the example in the
- <<synchronization-semaphores,Semaphores>> section (internal issue
- 251).
- * Attempt to clarify in the VK_KHR_android_surface extension's
- <<platformQuerySupport_android,Android Platform Support>> section
- that there is no Android-specific WSI query, and why (internal issue
- 252).
-
-Other Commits:
-
- * Add missing language about ename:VK_INCOMPLETE being returned from
- array queries when the passed array is too short, in the
- VK_KHR_display, VK_KHR_swapchain, and VK_KHR_surface extensions.
-
------------------------------------------------------
-
-Change log for March 25, 2016 Vulkan 1.0.7 spec update:
-
- * Bump API patch number and header version number to 7 for this
- update.
-
-Github Issues:
-
- * Fix slink:VkSpecializationMapEntry example to avoid C/C++ strict
- aliasing issues (public issue 14).
- * Clarify the meaning of "matching" in flink:vkCmdBindDescriptorSets
- validity language (public issue 33).
- * Add stub reference pages so xrefs to not-yet-written pages do not
- generate 404 errors. However, the actual content of these pages
- still needs to be filled in as time allows (public issue 44, but
- does not close that issue out).
- * Remove incorrect validity statement for
- flink:vkGetImageSparseMemoryRequirements (public issue 85).
- * Reword the
- <<features-limits-bufferImageGranularity,bufferImageGranularity>>
- feature in terms of "aliasing", and clarify that it applies to
- bindings in the same memory object (public issue 90).
- * Clarify the relationship of the slink:VkPhysicalDeviceLimits
- pname:maxViewportDimensions and pname:viewportBoundsRange limits
- (public issue 92).
- * Specify sparse unbound texture replacement in the
- <<textures-texel-replacement,Texel Replacement>> section
- independently of robust buffer access language (public issue 100).
- * Add the <<fundamentals-architecture-model,Architecture Model>>
- section to explain architecture constraints Vulkan has chosen to
- accept in order to enable portable and performant code (public issue
- 122).
- * State that an object must not be destroyed until *all* (not *any*)
- uses of that object have completed (public issue 123).
- * Minor editorial cleanup (public issues 129, 134, 146, 148).
- * Add validity language for layer and extension names to
- slink:VkDeviceCreateInfo matching that used for
- slink:VkInstanceCreateInfo (public issue 130).
- * Clean up terminology for the case when the bits set in one bitmask
- are a subset of the bits set in another bitmask (public issue 138).
- * Document that input attachments are UniformConstant not Input, in
- the <<interfaces-inputattachment,Fragment Input Attachment
- Interface>> section (public glslang bug 169).
-
-Internal Issues:
-
- * Add max enum values to "flag bits" enums (internal issue 136).
- * Clarify language around the various uses of the term "block" in the
- <<appendix-compressedtex-bc,Block Compressed Image Formats>> section
- (internal issue 202).
- * Removed "expand" dependency from <enums> groups in vk.xml and added
- auto-generation code in the scripts to infer it instead, to ensure
- consistency. This caused renaming of sname:VkColorSpaceKHR and
- sname:VkPresentModeKHR etext:BEGIN_RANGE (etc.) tokens, but those
- tokens are metadata, not part of the API, and the Vulkan WG is OK
- with this change. This change adds ranges to two additional enums
- that were missing them due to not defining the "expand" attribute
- (internal issue 217).
- * Tweak makefile to generate ref page nroff (.3) files in the right
- output directory, working around an a2x limitation (internal issue
- 223).
-
-Other Commits:
-
- * Add validity requirements for flink:vkCmdCopyQueryPoolResults
- pname:dstBuffer parameter.
- * Fix ref page build to generate .3 targets in the right output
- directory.
-
------------------------------------------------------
-
-Change log for March 10, 2016 Vulkan 1.0.6 spec update:
-
- * Bump API patch number and header version number to 6 for this
- update.
-
-Github Issues:
-
- * Define 'invocation group' for compute and graphics shaders. Cleanup
- definition and use of 'workgroup', and add glossary entries (public
- issue 1).
- * Various minor editorial fixes (public issue 33).
- * Clarify locations for block members in the
- <<interfaces-iointerfaces-locations,Location Assignment>>
- section (public issue 45).
- * Editorial fixes for <<commandbuffer-allocation,Command Buffer
- Allocation>> section (public issues 54, 59).
- * Clarify behavior of depth test in the <<fragops-depth,Depth Test>>
- section (public issues 80, 81).
- * Remove discussion of return codes from
- flink:vkGetPhysicalDeviceSparseImageFormatProperties and
- flink:vkGetImageSparseMemoryRequirements, which do not return values
- (public issue 82).
- * Allow flink:vkCmdDrawIndirect and flink:vkCmdDrawIndexedIndirect
- pname:drawCount of 0, as well as 1, when the multiDrawIndirect
- feature is not supported (public issue 88).
- * Remove confusing wording in the <<features-limits,Limits>>
- section describing the slink:VkPhysicalDeviceLimits
- pname:minTexelBufferOffsetAlignment,
- pname:minUniformBufferOffsetAlignment, and
- pname:minStorageBufferOffsetAlignment members as both minimums and
- maximums (public issue 91).
- * Clarified that only the RGB components should be affected in places
- where sRGB is referred to in the spec, such as ASTC formats. Minor
- re-wording to avoid "color space" when actively incorrect, now that
- we refer to the Data Format Spec which actually makes a distinction
- between color space and transfer function (public issue 94).
- * Treat pname:pPropertyCount == 0 consistently in
- flink:vkEnumerateInstanceLayerProperties and
- flink:vkEnumerateDeviceLayerProperties (public issue 99)
- * Cleanup minor editorial issues in chapters 14-17 (public issue 100).
- * Clarify definition of flink:vkEnumerateInstanceExtensionProperties
- and flink:vkEnumerateDeviceExtensionProperties (public issue 101).
- * Define the flink:vkEnumerateInstanceExtensionProperties and
- flink:vkEnumerateDeviceExtensionProperties pname:pLayerName
- parameter to be a pointer to a null-terminated UTF-8 string (public
- issue 101).
- * Rearrange "Missing information" references in mandatory format
- tables (public issue 101).
- * Clarify that the enumerated extensions returned by
- flink:vkEnumerateInstanceExtensionProperties and
- flink:vkEnumerateDeviceExtensionProperties will only include
- extensions provided by the platform or extensions implemented in
- implicitly enabled layers (public issue 101).
- * Miscellaneous editorial fixes. Include the Vulkan spec patch number
- in the PDF title. Fix label on <<fig-non-strict-lines,Non
- strict lines>> diagram. Use more easily distinguished symbols in
- tables in the <<features-required-format-support,Required
- Format Support>> section. Do not require FQDNs used as layer names be
- encoded in lower case if not possible, in the
- <<extensions-naming-conventions, Extension and Layer Naming
- Conventions>> section (public issues 101, 119, 121).
-
-Internal Issues:
-
- * Fixed excessive spacing in tables in XHTML (internal issue 18).
- * Clarify that ename:VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT
- applies to secondary command buffers. Previously spec only referred
- to the members of pname:pCommandBuffers being affected by this bit.
- Added a separate slink:VkSubmitInfo Valid Usage restriction
- specifying that ename:VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT
- also applies to any secondary command buffers that are recorded into
- the primary command buffers in pname:pCommandBuffers (internal issue
- 106).
- * Clarify that slink:VkDeviceCreateInfo::pname:pEnabledFeatures can be
- NULL (internal issue 117).
- * Remove "the value of" where it is redundant (e.g. speaking of an API
- parameter, struct member, or SPIR-V variable, but not when speaking
- of color components) (internal issue 175).
- * Forced patch version to always be 0 in the header. Add a
- "VK_API_VERSION_<major>_<minor>" macro for people to use to do the
- right thing. Add a VK_HEADER_VERSION which captures the header
- release number independent of the spec patch number (internal issue
- 176).
- * Correct description of
- slink:VkPipelineShaderStageCreateInfo::pname:pName to "a pointer to
- a null-terminated UTF-8 string" (internal issue 197).
-
-Other Commits:
-
- * Updated DataFormat spec reference to the new date for revision 5 of
- that spec.
- * Fixed KEEP option (to retain LaTeX intermediate files) in the
- Makefile to be included when edited there, as well as set on the
- command line.
- * Reserve and add "VK_IMG_filter_cubic" to the registry, and implement
- script functionality to add and remove validity from existing
- functions. Includes schema and readme changes.
- * Update GL_KHR_vulkan_glsl so push_constants do not have descriptor
- sets.
-
------------------------------------------------------
-
-Change log for March 4, 2016 Vulkan 1.0.5 spec update:
-
- * Bump API patch number to 5 for this update.
-
-Github Issues:
-
- * Correctly describe slink:VkPhysicalDeviceProperties pname:deviceName
- member as a string, not a pointer to a string. Also one typo fix for
- "hetereogeneous" (public issue 4).
- * Replace maynot: macro with may: not, and "may: or maynot:" with
- "may:" (public issue 4).
- * Clarify that redundantly setting the state of a fence or event has
- no effect (public issue 4).
- * Minor fixes to ref pages to track descriptions of memory bits that
- changed in the core spec. Fix name of a member in the description of
- sname:sname:VkPipelineMultisampleStateCreateInfo (public issues 8,
- 13).
- * Remove redundant validity statement for
- sname:VkGraphicsPipelineCreateInfo::pname:stageCount (public issue
- 14).
- * Fix typos in chapters 7-9 (public issue 14).
- * Clarify the example demonstrating the behavior of
- code:OpMemoryBarrier in the
- <<shaders-execution-memory-ordering,shader memory acces
- ordering>> section (public issue 16).
- * Specify that freeing mapped memory implicitly unmaps the memory in
- the description of flink:vkFreeMemory (public issue 17).
- * Forbid allocation callbacks from calling into the API in the
- <<memory-allocation,memory allocation>> section (public issue
- 20).
- * Add missing validity rules about size being greater than 0 and
- offset being less than size of object. Fix
- flink:VkMappedMemoryRange's misinterpretation of offset (public
- issues 27, 31).
- * Add validity rule disallowing overlapping source/destination
- descriptors in flink:VkCopyDescriptorSet (public issue 32).
- * Clarify that array and matrix stride has to be a multiple of the
- base alignment of the array or matrix in the
- <<interfaces-resources-layout,Offset and Stride Assignment>>
- section (public issue 38).
- * Correct parenthesis floor nesting error in equation for
- <<textures-RGB-sexp,RGB to shared exponent conversion>>.
- Clarify case of when exp' is forced to 0, avoiding log2(0) undefined
- problem (public issue 40).
- * Remove redundant statement from the code:FragDepth description in
- the <<interfaces-builtin-variables,Built-In Variables>>
- section (public issue 47).
- * Define the clamping of the
- <<textures-level-of-detail-operation,bias added to the scale
- factor>> by linking to the slink:VkPhysicalDevice feature
- pname:maxSamplerLodBias (public issue 64).
- * Fix typo "optimal linear resources" and clarify the set of resources
- <<features-limits-bufferImageGranularity,the
- pname:bufferImageGranularity resource>> applies to (public issue
- 67).
- * Replace 'descriptor accessed by a pipeline' language for
- sname:VkDescriptorSetAllocateInfo with more precise phrasing about
- binding a descriptor set before a command that invokes work using
- that set (public issue 69).
- * tstripadj.svg contained an Inkscape tag which caused Firefox and IE
- 11 to fail to render it, and was illegal SVG. Generating Plain SVG
- from the Inkscape SVG source fixes this (public issue 70).
- * Fix validity for sname:VkVertexInputBindingDescription and
- sname:VkVertexInputAttributeDescription numbers (public issue 72).
-
-Internal Issues:
-
- * Clarify the meaning of
- ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT in
- elink:VkFormatFeatureFlagBits with respect to depth compare
- (internal issue 107).
- * Added a note explaining that ename:VK_QUEUE_TRANSFER_BIT may or may
- not be reported for a queue family that already supports
- ename:VK_QUEUE_GRAPHICS_BIT or ename:VK_QUEUE_COMPUTE_BIT as the
- former is a strict subset of the latter ones (internal issue 116).
- * Add validity language for sname:VkDescriptorSetAllocateInfo about
- exceeding the descriptor pool capacity (internal issue 140).
- * Add ename:VK_INCOMPLETE success code for
- flink:vkEnumeratePhysicalDevices query (internal issue 163).
-
-Other Commits:
-
- * Add the VK_NV_glsl_shader extension definitions to the API.
- * Update GL_KHR_vulkan_glsl with 1) origin_upper_left as default 2)
- specialization array constant semantics.
- * Corrected/updated Data Format Specification date.
-
------------------------------------------------------
-
-Change log for February 25, 2015 Vulkan 1.0.4 spec update:
-
- * Bump API patch number from 3 to 4 for the first public update to the
- spec. Add patch number to the spec title (this will be done
- automatically from XML, later).
- * Fixes for numerous editorial issues. Regularize descriptions of
- variable-length array queries. Properly tag enumerants so they come
- out in the right font (many were mislabeled in usage tags in vk.xml,
- or not tagged). Spelling and markup corrections (public issue 4).
- * Fix typos and clearly separate description of different types of
- memory areas (public issue 5).
- * Use standards-compliant preprocessor guard symbols on headers
- (public issue 7).
- * Note that Github users cannot currently set labels on issues, and
- recommend a fallback approach (public issue 15).
- * Use latexmath prefix on len= attributes (public issue 29).
- * Make flink:vkCmdUpdateBuffer pname:dataSize limit consistent (public
- issue 65).
- * Add VK_KHR_mirror_clamp_to_edge extension to core API branch, as an
- optional feature not introducing new commands or enums (internal
- issue 104).
- * Cleanup invariance language inherited from the GL specification to
- not refer to nonexistent (GL-specific) state (internal issue 111).
- * Modify the flink:vkCmdDrawIndexed pname:vertexOffset definition to
- not be the "base offset within the index buffer" but rather the
- "value added to the vertex index before indexing into the vertex
- buffer" (internal issue 118).
- * Fix drawing chapter in the "Programmable Primitive Shading" section
- where it described categories of drawing commands. It referenced
- flink:vkCmdDrawIndexed twice. Replace the second reference with
- flink:vkCmdDrawIndexedIndirect (internal issue 119).
- * Typo fixed in <<sparsememory-examples-advanced,Advanced Sparse
- Resources>> sparse memory example (internal issue 122).
- * Add flink:VkDisplayPlaneAlphaFlagsKHR to <require> section of
- VK_KHR_display extension (internal issue 125)
- * Add missing optional="false,true" to
- flink:vkGetImageSparseMemoryRequirements
- pname:pSparseMemoryRequirementCount parameter (internal issue 132)
- * Rename ename:VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT to
- ename:VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT
- (internal issue 133)
- * Fix a handful of broken cross-references in the
- <<samplers,Samplers>> chapter (internal issue 134).
- * Fix "Input Attachement" GLSL example to use correct syntax (internal
- issue 135).
- * Update XML schema and documentation to accommodate recently added
- attributes for validity. Add some introductory material describing
- design choices and pointing to the public repository to file issues.
- * Put include of validity in the core spec extensions chapter on its
- own line, so that asciidoc is happy.
- * Fix vertexOffset language to specify that it is the value added to
- the vertex index before indexing into the vertex buffer, not the
- base offset within the index buffer.
- * Fix error in the description of flink:vkCmdNextSubpass.
-
------------------------------------------------------
-
-February 16, 2016 - Vulkan 1.0 initial public release
-
diff --git a/codegen/vulkan/LICENSE.adoc b/codegen/vulkan/LICENSE.adoc
deleted file mode 100644
index cb7c4042..00000000
--- a/codegen/vulkan/LICENSE.adoc
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2020-2021 The Khronos Group Inc.
-// SPDX-License-Identifier: CC-BY-4.0
-
-= LICENSE file for the KhronosGroup/Vulkan-Docs project
-
-Files in this repository fall under one of these licenses:
-
- * SPDX license identifier: "`Apache-2.0 OR MIT`"
- ** Apache License 2.0 OR MIT License
- ** For scripts and XML which need to be usable in GPL-licensed projects.
-
- * SPDX license identifier: "`Apache-2.0`"
- ** Apache License 2.0
- ** For other scripts
-
- * SPDX license identifier: "`CC-BY-4.0`"
- ** Creative Commons Attribution 4.0 International
- ** For specification source documents
-
- * SPDX license identifier: "`MIT`"
- ** MIT License
- ** For files copied from other MIT-licensed projects
-
- * SPDX license identifier: "`LicenseRef-MPLUS`"
- ** M+ Font License
- ** For fonts derived from the M+ Font Project
- ** This license is open source, but not OSI approved
-
-Full license text of these licenses is available at:
-
- * Apache-2.0: https://opensource.org/licenses/Apache-2.0
- * MIT: https://opensource.org/licenses/MIT
- * CC-BY-4.0: https://creativecommons.org/licenses/by/4.0/legalcode
- * LicenseRef-MPLUS: https://osdn.net/softwaremap/trove_list.php?form_cat=370
diff --git a/codegen/vulkan/LICENSES/Apache-2.0.txt b/codegen/vulkan/LICENSES/Apache-2.0.txt
deleted file mode 100644
index 4ed90b95..00000000
--- a/codegen/vulkan/LICENSES/Apache-2.0.txt
+++ /dev/null
@@ -1,208 +0,0 @@
-Apache License
-
-Version 2.0, January 2004
-
-http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION,
-AND DISTRIBUTION
-
- 1. Definitions.
-
-
-
-"License" shall mean the terms and conditions for use, reproduction, and distribution
-as defined by Sections 1 through 9 of this document.
-
-
-
-"Licensor" shall mean the copyright owner or entity authorized by the copyright
-owner that is granting the License.
-
-
-
-"Legal Entity" shall mean the union of the acting entity and all other entities
-that control, are controlled by, or are under common control with that entity.
-For the purposes of this definition, "control" means (i) the power, direct
-or indirect, to cause the direction or management of such entity, whether
-by contract or otherwise, or (ii) ownership of fifty percent (50%) or more
-of the outstanding shares, or (iii) beneficial ownership of such entity.
-
-
-
-"You" (or "Your") shall mean an individual or Legal Entity exercising permissions
-granted by this License.
-
-
-
-"Source" form shall mean the preferred form for making modifications, including
-but not limited to software source code, documentation source, and configuration
-files.
-
-
-
-"Object" form shall mean any form resulting from mechanical transformation
-or translation of a Source form, including but not limited to compiled object
-code, generated documentation, and conversions to other media types.
-
-
-
-"Work" shall mean the work of authorship, whether in Source or Object form,
-made available under the License, as indicated by a copyright notice that
-is included in or attached to the work (an example is provided in the Appendix
-below).
-
-
-
-"Derivative Works" shall mean any work, whether in Source or Object form,
-that is based on (or derived from) the Work and for which the editorial revisions,
-annotations, elaborations, or other modifications represent, as a whole, an
-original work of authorship. For the purposes of this License, Derivative
-Works shall not include works that remain separable from, or merely link (or
-bind by name) to the interfaces of, the Work and Derivative Works thereof.
-
-
-
-"Contribution" shall mean any work of authorship, including the original version
-of the Work and any modifications or additions to that Work or Derivative
-Works thereof, that is intentionally submitted to Licensor for inclusion in
-the Work by the copyright owner or by an individual or Legal Entity authorized
-to submit on behalf of the copyright owner. For the purposes of this definition,
-"submitted" means any form of electronic, verbal, or written communication
-sent to the Licensor or its representatives, including but not limited to
-communication on electronic mailing lists, source code control systems, and
-issue tracking systems that are managed by, or on behalf of, the Licensor
-for the purpose of discussing and improving the Work, but excluding communication
-that is conspicuously marked or otherwise designated in writing by the copyright
-owner as "Not a Contribution."
-
-
-
-"Contributor" shall mean Licensor and any individual or Legal Entity on behalf
-of whom a Contribution has been received by Licensor and subsequently incorporated
-within the Work.
-
-2. Grant of Copyright License. Subject to the terms and conditions of this
-License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive,
-no-charge, royalty-free, irrevocable copyright license to reproduce, prepare
-Derivative Works of, publicly display, publicly perform, sublicense, and distribute
-the Work and such Derivative Works in Source or Object form.
-
-3. Grant of Patent License. Subject to the terms and conditions of this License,
-each Contributor hereby grants to You a perpetual, worldwide, non-exclusive,
-no-charge, royalty-free, irrevocable (except as stated in this section) patent
-license to make, have made, use, offer to sell, sell, import, and otherwise
-transfer the Work, where such license applies only to those patent claims
-licensable by such Contributor that are necessarily infringed by their Contribution(s)
-alone or by combination of their Contribution(s) with the Work to which such
-Contribution(s) was submitted. If You institute patent litigation against
-any entity (including a cross-claim or counterclaim in a lawsuit) alleging
-that the Work or a Contribution incorporated within the Work constitutes direct
-or contributory patent infringement, then any patent licenses granted to You
-under this License for that Work shall terminate as of the date such litigation
-is filed.
-
-4. Redistribution. You may reproduce and distribute copies of the Work or
-Derivative Works thereof in any medium, with or without modifications, and
-in Source or Object form, provided that You meet the following conditions:
-
-(a) You must give any other recipients of the Work or Derivative Works a copy
-of this License; and
-
-(b) You must cause any modified files to carry prominent notices stating that
-You changed the files; and
-
-(c) You must retain, in the Source form of any Derivative Works that You distribute,
-all copyright, patent, trademark, and attribution notices from the Source
-form of the Work, excluding those notices that do not pertain to any part
-of the Derivative Works; and
-
-(d) If the Work includes a "NOTICE" text file as part of its distribution,
-then any Derivative Works that You distribute must include a readable copy
-of the attribution notices contained within such NOTICE file, excluding those
-notices that do not pertain to any part of the Derivative Works, in at least
-one of the following places: within a NOTICE text file distributed as part
-of the Derivative Works; within the Source form or documentation, if provided
-along with the Derivative Works; or, within a display generated by the Derivative
-Works, if and wherever such third-party notices normally appear. The contents
-of the NOTICE file are for informational purposes only and do not modify the
-License. You may add Your own attribution notices within Derivative Works
-that You distribute, alongside or as an addendum to the NOTICE text from the
-Work, provided that such additional attribution notices cannot be construed
-as modifying the License.
-
-You may add Your own copyright statement to Your modifications and may provide
-additional or different license terms and conditions for use, reproduction,
-or distribution of Your modifications, or for any such Derivative Works as
-a whole, provided Your use, reproduction, and distribution of the Work otherwise
-complies with the conditions stated in this License.
-
-5. Submission of Contributions. Unless You explicitly state otherwise, any
-Contribution intentionally submitted for inclusion in the Work by You to the
-Licensor shall be under the terms and conditions of this License, without
-any additional terms or conditions. Notwithstanding the above, nothing herein
-shall supersede or modify the terms of any separate license agreement you
-may have executed with Licensor regarding such Contributions.
-
-6. Trademarks. This License does not grant permission to use the trade names,
-trademarks, service marks, or product names of the Licensor, except as required
-for reasonable and customary use in describing the origin of the Work and
-reproducing the content of the NOTICE file.
-
-7. Disclaimer of Warranty. Unless required by applicable law or agreed to
-in writing, Licensor provides the Work (and each Contributor provides its
-Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied, including, without limitation, any warranties
-or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR
-A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness
-of using or redistributing the Work and assume any risks associated with Your
-exercise of permissions under this License.
-
-8. Limitation of Liability. In no event and under no legal theory, whether
-in tort (including negligence), contract, or otherwise, unless required by
-applicable law (such as deliberate and grossly negligent acts) or agreed to
-in writing, shall any Contributor be liable to You for damages, including
-any direct, indirect, special, incidental, or consequential damages of any
-character arising as a result of this License or out of the use or inability
-to use the Work (including but not limited to damages for loss of goodwill,
-work stoppage, computer failure or malfunction, or any and all other commercial
-damages or losses), even if such Contributor has been advised of the possibility
-of such damages.
-
-9. Accepting Warranty or Additional Liability. While redistributing the Work
-or Derivative Works thereof, You may choose to offer, and charge a fee for,
-acceptance of support, warranty, indemnity, or other liability obligations
-and/or rights consistent with this License. However, in accepting such obligations,
-You may act only on Your own behalf and on Your sole responsibility, not on
-behalf of any other Contributor, and only if You agree to indemnify, defend,
-and hold each Contributor harmless for any liability incurred by, or claims
-asserted against, such Contributor by reason of your accepting any such warranty
-or additional liability. END OF TERMS AND CONDITIONS
-
-APPENDIX: How to apply the Apache License to your work.
-
-To apply the Apache License to your work, attach the following boilerplate
-notice, with the fields enclosed by brackets "[]" replaced with your own identifying
-information. (Don't include the brackets!) The text should be enclosed in
-the appropriate comment syntax for the file format. We also recommend that
-a file or class name and description of purpose be included on the same "printed
-page" as the copyright notice for easier identification within third-party
-archives.
-
-Copyright [yyyy] [name of copyright owner]
-
-Licensed under the Apache License, Version 2.0 (the "License");
-
-you may not use this file except in compliance with the License.
-
-You may obtain a copy of the License at
-
-http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-
-distributed under the License is distributed on an "AS IS" BASIS,
-
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-
-See the License for the specific language governing permissions and
-
-limitations under the License.
diff --git a/codegen/vulkan/LICENSES/CC-BY-4.0.txt b/codegen/vulkan/LICENSES/CC-BY-4.0.txt
deleted file mode 100644
index 3f92dfc5..00000000
--- a/codegen/vulkan/LICENSES/CC-BY-4.0.txt
+++ /dev/null
@@ -1,324 +0,0 @@
-Creative Commons Attribution 4.0 International Creative Commons Corporation
-("Creative Commons") is not a law firm and does not provide legal services
-or legal advice. Distribution of Creative Commons public licenses does not
-create a lawyer-client or other relationship. Creative Commons makes its licenses
-and related information available on an "as-is" basis. Creative Commons gives
-no warranties regarding its licenses, any material licensed under their terms
-and conditions, or any related information. Creative Commons disclaims all
-liability for damages resulting from their use to the fullest extent possible.
-
-Using Creative Commons Public Licenses
-
-Creative Commons public licenses provide a standard set of terms and conditions
-that creators and other rights holders may use to share original works of
-authorship and other material subject to copyright and certain other rights
-specified in the public license below. The following considerations are for
-informational purposes only, are not exhaustive, and do not form part of our
-licenses.
-
-Considerations for licensors: Our public licenses are intended for use by
-those authorized to give the public permission to use material in ways otherwise
-restricted by copyright and certain other rights. Our licenses are irrevocable.
-Licensors should read and understand the terms and conditions of the license
-they choose before applying it. Licensors should also secure all rights necessary
-before applying our licenses so that the public can reuse the material as
-expected. Licensors should clearly mark any material not subject to the license.
-This includes other CC-licensed material, or material used under an exception
-or limitation to copyright. More considerations for licensors : wiki.creativecommons.org/Considerations_for_licensors
-
-Considerations for the public: By using one of our public licenses, a licensor
-grants the public permission to use the licensed material under specified
-terms and conditions. If the licensor's permission is not necessary for any
-reason–for example, because of any applicable exception or limitation to copyright–then
-that use is not regulated by the license. Our licenses grant only permissions
-under copyright and certain other rights that a licensor has authority to
-grant. Use of the licensed material may still be restricted for other reasons,
-including because others have copyright or other rights in the material. A
-licensor may make special requests, such as asking that all changes be marked
-or described. Although not required by our licenses, you are encouraged to
-respect those requests where reasonable. More considerations for the public
-: wiki.creativecommons.org/Considerations_for_licensees Creative Commons Attribution
-4.0 International Public License
-
-By exercising the Licensed Rights (defined below), You accept and agree to
-be bound by the terms and conditions of this Creative Commons Attribution
-4.0 International Public License ("Public License"). To the extent this Public
-License may be interpreted as a contract, You are granted the Licensed Rights
-in consideration of Your acceptance of these terms and conditions, and the
-Licensor grants You such rights in consideration of benefits the Licensor
-receives from making the Licensed Material available under these terms and
-conditions.
-
-Section 1 – Definitions.
-
-a. Adapted Material means material subject to Copyright and Similar Rights
-that is derived from or based upon the Licensed Material and in which the
-Licensed Material is translated, altered, arranged, transformed, or otherwise
-modified in a manner requiring permission under the Copyright and Similar
-Rights held by the Licensor. For purposes of this Public License, where the
-Licensed Material is a musical work, performance, or sound recording, Adapted
-Material is always produced where the Licensed Material is synched in timed
-relation with a moving image.
-
-b. Adapter's License means the license You apply to Your Copyright and Similar
-Rights in Your contributions to Adapted Material in accordance with the terms
-and conditions of this Public License.
-
-c. Copyright and Similar Rights means copyright and/or similar rights closely
-related to copyright including, without limitation, performance, broadcast,
-sound recording, and Sui Generis Database Rights, without regard to how the
-rights are labeled or categorized. For purposes of this Public License, the
-rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights.
-
-d. Effective Technological Measures means those measures that, in the absence
-of proper authority, may not be circumvented under laws fulfilling obligations
-under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996,
-and/or similar international agreements.
-
-e. Exceptions and Limitations means fair use, fair dealing, and/or any other
-exception or limitation to Copyright and Similar Rights that applies to Your
-use of the Licensed Material.
-
-f. Licensed Material means the artistic or literary work, database, or other
-material to which the Licensor applied this Public License.
-
-g. Licensed Rights means the rights granted to You subject to the terms and
-conditions of this Public License, which are limited to all Copyright and
-Similar Rights that apply to Your use of the Licensed Material and that the
-Licensor has authority to license.
-
-h. Licensor means the individual(s) or entity(ies) granting rights under this
-Public License.
-
-i. Share means to provide material to the public by any means or process that
-requires permission under the Licensed Rights, such as reproduction, public
-display, public performance, distribution, dissemination, communication, or
-importation, and to make material available to the public including in ways
-that members of the public may access the material from a place and at a time
-individually chosen by them.
-
-j. Sui Generis Database Rights means rights other than copyright resulting
-from Directive 96/9/EC of the European Parliament and of the Council of 11
-March 1996 on the legal protection of databases, as amended and/or succeeded,
-as well as other essentially equivalent rights anywhere in the world.
-
-k. You means the individual or entity exercising the Licensed Rights under
-this Public License. Your has a corresponding meaning.
-
-Section 2 – Scope.
-
- a. License grant.
-
-1. Subject to the terms and conditions of this Public License, the Licensor
-hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive,
-irrevocable license to exercise the Licensed Rights in the Licensed Material
-to:
-
- A. reproduce and Share the Licensed Material, in whole or in part; and
-
- B. produce, reproduce, and Share Adapted Material.
-
-2. Exceptions and Limitations. For the avoidance of doubt, where Exceptions
-and Limitations apply to Your use, this Public License does not apply, and
-You do not need to comply with its terms and conditions.
-
- 3. Term. The term of this Public License is specified in Section 6(a).
-
-4. Media and formats; technical modifications allowed. The Licensor authorizes
-You to exercise the Licensed Rights in all media and formats whether now known
-or hereafter created, and to make technical modifications necessary to do
-so. The Licensor waives and/or agrees not to assert any right or authority
-to forbid You from making technical modifications necessary to exercise the
-Licensed Rights, including technical modifications necessary to circumvent
-Effective Technological Measures. For purposes of this Public License, simply
-making modifications authorized by this Section 2(a)(4) never produces Adapted
-Material.
-
- 5. Downstream recipients.
-
-A. Offer from the Licensor – Licensed Material. Every recipient of the Licensed
-Material automatically receives an offer from the Licensor to exercise the
-Licensed Rights under the terms and conditions of this Public License.
-
-B. No downstream restrictions. You may not offer or impose any additional
-or different terms or conditions on, or apply any Effective Technological
-Measures to, the Licensed Material if doing so restricts exercise of the Licensed
-Rights by any recipient of the Licensed Material.
-
-6. No endorsement. Nothing in this Public License constitutes or may be construed
-as permission to assert or imply that You are, or that Your use of the Licensed
-Material is, connected with, or sponsored, endorsed, or granted official status
-by, the Licensor or others designated to receive attribution as provided in
-Section 3(a)(1)(A)(i).
-
- b. Other rights.
-
-1. Moral rights, such as the right of integrity, are not licensed under this
-Public License, nor are publicity, privacy, and/or other similar personality
-rights; however, to the extent possible, the Licensor waives and/or agrees
-not to assert any such rights held by the Licensor to the limited extent necessary
-to allow You to exercise the Licensed Rights, but not otherwise.
-
-2. Patent and trademark rights are not licensed under this Public License.
-
-3. To the extent possible, the Licensor waives any right to collect royalties
-from You for the exercise of the Licensed Rights, whether directly or through
-a collecting society under any voluntary or waivable statutory or compulsory
-licensing scheme. In all other cases the Licensor expressly reserves any right
-to collect such royalties.
-
-Section 3 – License Conditions.
-
-Your exercise of the Licensed Rights is expressly made subject to the following
-conditions.
-
- a. Attribution.
-
-1. If You Share the Licensed Material (including in modified form), You must:
-
-A. retain the following if it is supplied by the Licensor with the Licensed
-Material:
-
-i. identification of the creator(s) of the Licensed Material and any others
-designated to receive attribution, in any reasonable manner requested by the
-Licensor (including by pseudonym if designated);
-
- ii. a copyright notice;
-
- iii. a notice that refers to this Public License;
-
- iv. a notice that refers to the disclaimer of warranties;
-
-v. a URI or hyperlink to the Licensed Material to the extent reasonably practicable;
-
-B. indicate if You modified the Licensed Material and retain an indication
-of any previous modifications; and
-
-C. indicate the Licensed Material is licensed under this Public License, and
-include the text of, or the URI or hyperlink to, this Public License.
-
-2. You may satisfy the conditions in Section 3(a)(1) in any reasonable manner
-based on the medium, means, and context in which You Share the Licensed Material.
-For example, it may be reasonable to satisfy the conditions by providing a
-URI or hyperlink to a resource that includes the required information.
-
-3. If requested by the Licensor, You must remove any of the information required
-by Section 3(a)(1)(A) to the extent reasonably practicable.
-
-4. If You Share Adapted Material You produce, the Adapter's License You apply
-must not prevent recipients of the Adapted Material from complying with this
-Public License.
-
-Section 4 – Sui Generis Database Rights.
-
-Where the Licensed Rights include Sui Generis Database Rights that apply to
-Your use of the Licensed Material:
-
-a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract,
-reuse, reproduce, and Share all or a substantial portion of the contents of
-the database;
-
-b. if You include all or a substantial portion of the database contents in
-a database in which You have Sui Generis Database Rights, then the database
-in which You have Sui Generis Database Rights (but not its individual contents)
-is Adapted Material; and
-
-c. You must comply with the conditions in Section 3(a) if You Share all or
-a substantial portion of the contents of the database.
-
-For the avoidance of doubt, this Section 4 supplements and does not replace
-Your obligations under this Public License where the Licensed Rights include
-other Copyright and Similar Rights.
-
-Section 5 – Disclaimer of Warranties and Limitation of Liability.
-
-a. Unless otherwise separately undertaken by the Licensor, to the extent possible,
-the Licensor offers the Licensed Material as-is and as-available, and makes
-no representations or warranties of any kind concerning the Licensed Material,
-whether express, implied, statutory, or other. This includes, without limitation,
-warranties of title, merchantability, fitness for a particular purpose, non-infringement,
-absence of latent or other defects, accuracy, or the presence or absence of
-errors, whether or not known or discoverable. Where disclaimers of warranties
-are not allowed in full or in part, this disclaimer may not apply to You.
-
-b. To the extent possible, in no event will the Licensor be liable to You
-on any legal theory (including, without limitation, negligence) or otherwise
-for any direct, special, indirect, incidental, consequential, punitive, exemplary,
-or other losses, costs, expenses, or damages arising out of this Public License
-or use of the Licensed Material, even if the Licensor has been advised of
-the possibility of such losses, costs, expenses, or damages. Where a limitation
-of liability is not allowed in full or in part, this limitation may not apply
-to You.
-
-c. The disclaimer of warranties and limitation of liability provided above
-shall be interpreted in a manner that, to the extent possible, most closely
-approximates an absolute disclaimer and waiver of all liability.
-
-Section 6 – Term and Termination.
-
-a. This Public License applies for the term of the Copyright and Similar Rights
-licensed here. However, if You fail to comply with this Public License, then
-Your rights under this Public License terminate automatically.
-
-b. Where Your right to use the Licensed Material has terminated under Section
-6(a), it reinstates:
-
-1. automatically as of the date the violation is cured, provided it is cured
-within 30 days of Your discovery of the violation; or
-
- 2. upon express reinstatement by the Licensor.
-
-c. For the avoidance of doubt, this Section 6(b) does not affect any right
-the Licensor may have to seek remedies for Your violations of this Public
-License.
-
-d. For the avoidance of doubt, the Licensor may also offer the Licensed Material
-under separate terms or conditions or stop distributing the Licensed Material
-at any time; however, doing so will not terminate this Public License.
-
- e. Sections 1, 5, 6, 7, and 8 survive termination of this Public License.
-
-Section 7 – Other Terms and Conditions.
-
-a. The Licensor shall not be bound by any additional or different terms or
-conditions communicated by You unless expressly agreed.
-
-b. Any arrangements, understandings, or agreements regarding the Licensed
-Material not stated herein are separate from and independent of the terms
-and conditions of this Public License.
-
-Section 8 – Interpretation.
-
-a. For the avoidance of doubt, this Public License does not, and shall not
-be interpreted to, reduce, limit, restrict, or impose conditions on any use
-of the Licensed Material that could lawfully be made without permission under
-this Public License.
-
-b. To the extent possible, if any provision of this Public License is deemed
-unenforceable, it shall be automatically reformed to the minimum extent necessary
-to make it enforceable. If the provision cannot be reformed, it shall be severed
-from this Public License without affecting the enforceability of the remaining
-terms and conditions.
-
-c. No term or condition of this Public License will be waived and no failure
-to comply consented to unless expressly agreed to by the Licensor.
-
-d. Nothing in this Public License constitutes or may be interpreted as a limitation
-upon, or waiver of, any privileges and immunities that apply to the Licensor
-or You, including from the legal processes of any jurisdiction or authority.
-
-Creative Commons is not a party to its public licenses. Notwithstanding, Creative
-Commons may elect to apply one of its public licenses to material it publishes
-and in those instances will be considered the "Licensor." The text of the
-Creative Commons public licenses is dedicated to the public domain under the
-CC0 Public Domain Dedication. Except for the limited purpose of indicating
-that material is shared under a Creative Commons public license or as otherwise
-permitted by the Creative Commons policies published at creativecommons.org/policies,
-Creative Commons does not authorize the use of the trademark "Creative Commons"
-or any other trademark or logo of Creative Commons without its prior written
-consent including, without limitation, in connection with any unauthorized
-modifications to any of its public licenses or any other arrangements, understandings,
-or agreements concerning use of licensed material. For the avoidance of doubt,
-this paragraph does not form part of the public licenses.
-
-Creative Commons may be contacted at creativecommons.org.
diff --git a/codegen/vulkan/LICENSES/LicenseRef-KhronosSpecCopyright.txt b/codegen/vulkan/LICENSES/LicenseRef-KhronosSpecCopyright.txt
deleted file mode 100644
index a39ec49e..00000000
--- a/codegen/vulkan/LICENSES/LicenseRef-KhronosSpecCopyright.txt
+++ /dev/null
@@ -1,83 +0,0 @@
-Copyright 2014-2021 The Khronos Group Inc.
-
-This Specification is protected by copyright laws and contains material
-proprietary to Khronos. Except as described by these terms, it or any
-components may not be reproduced, republished, distributed, transmitted,
-displayed, broadcast or otherwise exploited in any manner without the
-express prior written permission of Khronos.
-Khronos grants a conditional copyright license to use and reproduce the
-unmodified Specification for any purpose, without fee or royalty, EXCEPT no
-licenses to any patent, trademark or other intellectual property rights are
-granted under these terms.
-
-Khronos makes no, and expressly disclaims any, representations or
-warranties, express or implied, regarding this Specification, including,
-without limitation: merchantability, fitness for a particular purpose,
-non-infringement of any intellectual property, correctness, accuracy,
-completeness, timeliness, and reliability.
-Under no circumstances will Khronos, or any of its Promoters, Contributors
-or Members, or their respective partners, officers, directors, employees,
-agents or representatives be liable for any damages, whether direct,
-indirect, special or consequential damages for lost revenues, lost profits,
-or otherwise, arising from or in connection with these materials.
-
-This Specification has been created under the Khronos Intellectual Property
-Rights Policy, which is Attachment A of the Khronos Group Membership
-Agreement available at https://www.khronos.org/files/member_agreement.pdf, and which
-defines the terms 'Scope', 'Compliant Portion', and 'Necessary Patent Claims'.
-Parties desiring to implement the Specification and make use of Khronos trademarks
-in relation to that implementation, and receive reciprocal patent license protection
-under the Khronos Intellectual Property Rights Policy must become Adopters and
-confirm the implementation as conformant under the process defined by Khronos for
-this Specification; see https://www.khronos.org/adopters.
-
-This Specification contains substantially unmodified functionality from, and is a
-successor to, Khronos specifications including OpenGL, OpenGL ES and OpenCL.
-
-Some parts of this Specification are purely informative and so are EXCLUDED from
-the Scope of this Specification. The <<introduction-conventions>> section of the
-<<introduction>> defines how these parts of the Specification are identified.
-
-Where this Specification uses <<introduction-technical-terminology,technical
-terminology>>, defined in the <<glossary>> or otherwise, that refer to
-enabling technologies that are not expressly set forth in this
-Specification, those enabling technologies are EXCLUDED from the Scope of
-this Specification.
-For clarity, enabling technologies not disclosed with particularity in this
-Specification (e.g. semiconductor manufacturing technology, hardware
-architecture, processor architecture or microarchitecture, memory
-architecture, compiler technology, object oriented technology, basic
-operating system technology, compression technology, algorithms, and so on)
-are NOT to be considered expressly set forth; only those application program
-interfaces and data structures disclosed with particularity are included in
-the Scope of this Specification.
-
-For purposes of the Khronos Intellectual Property Rights Policy as it relates
-to the definition of Necessary Patent Claims, all recommended or optional
-features, behaviors and functionality set forth in this Specification, if
-implemented, are considered to be included as Compliant Portions.
-
-Where this Specification includes <<introduction-normative-references,
-normative references to external documents>>, only the specifically
-identified sections of those external documents are INCLUDED in the Scope of
-this Specification. If not created by Khronos, those external documents may
-contain contributions from non-members of Khronos not covered by the Khronos
-Intellectual Property Rights Policy.
-
-ifndef::ratified_core_spec[]
-This document contains extensions which are not ratified by Khronos, and as
-such is not a ratified Specification, though it contains text from (and is a
-superset of) the ratified Vulkan Specification. The ratified versions of the
-Vulkan Specification can be found at
-https://www.khronos.org/registry/vulkan/specs/1.2/html/vkspec.html (core
-only) and
-https://www.khronos.org/registry/vulkan/specs/1.2-khr-extensions/html/vkspec.html
-(core with KHR extensions).
-endif::ratified_core_spec[]
-
-Vulkan and Khronos are registered trademarks of The Khronos Group Inc.
-ASTC is a trademark of ARM Holdings PLC; OpenCL is a trademark of Apple
-Inc.; and OpenGL and OpenGL ES are registered trademarks of Hewlett Packard
-Enterprise, all used under license by Khronos. All other product names,
-trademarks, and/or company names are used solely for identification and
-belong to their respective owners.
diff --git a/codegen/vulkan/LICENSES/LicenseRef-MPLUS.txt b/codegen/vulkan/LICENSES/LicenseRef-MPLUS.txt
deleted file mode 100644
index 9db1dd87..00000000
--- a/codegen/vulkan/LICENSES/LicenseRef-MPLUS.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-M+ Fonts License
-
-December 16, 2019
-
-M+ FONTS are a font family under the Free license. You can use, copy, and
-distribute it, with or without modification, either commercially and
-noncommercially.
diff --git a/codegen/vulkan/LICENSES/MIT.txt b/codegen/vulkan/LICENSES/MIT.txt
deleted file mode 100644
index 204b93da..00000000
--- a/codegen/vulkan/LICENSES/MIT.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-MIT License Copyright (c) <year> <copyright holders>
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is furnished
-to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice (including the next
-paragraph) shall be included in all copies or substantial portions of the
-Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
-FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
-OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/codegen/vulkan/Makefile b/codegen/vulkan/Makefile
deleted file mode 100644
index b6a5eaf7..00000000
--- a/codegen/vulkan/Makefile
+++ /dev/null
@@ -1,614 +0,0 @@
-# Copyright 2014-2021 The Khronos Group Inc.
-#
-# SPDX-License-Identifier: Apache-2.0
-
-# Vulkan Specification makefile
-#
-# To build the spec with a specific version included, set the
-# $(VERSIONS) variable on the make command line to a space-separated
-# list of version names (e.g. VK_VERSION_1_2) *including all previous
-# versions of the API* (e.g. VK_VERSION_1_1 must also include
-# VK_VERSION_1_0). $(VERSIONS) is converted into asciidoc and generator
-# script arguments $(VERSIONATTRIBS) and $(VERSIONOPTIONS)
-#
-# To build the specification / reference pages (refpages) with optional
-# extensions included, set the $(EXTENSIONS) variable on the make
-# 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
-# runs of `make`.
-.DELETE_ON_ERROR:
-
-VERSIONS := VK_VERSION_1_0 VK_VERSION_1_1 VK_VERSION_1_2
-VERSIONATTRIBS := $(foreach version,$(VERSIONS),-a $(version))
-VERSIONOPTIONS := $(foreach version,$(VERSIONS),-feature $(version))
-
-EXTS := $(sort $(EXTENSIONS) $(DIFFEXTENSIONS))
-EXTATTRIBS := $(foreach ext,$(EXTS),-a $(ext))
-EXTOPTIONS := $(foreach ext,$(EXTS),-extension $(ext))
-
-# APITITLE can be set to extra text to append to the document title,
-# normally used when building with extensions included.
-APITITLE =
-
-# IMAGEOPTS is normally set to generate inline SVG images, but can be
-# overridden to an empty string, since the inline option doesn't work
-# well with our HTML diffs.
-IMAGEOPTS = inline
-
-# The default 'all' target builds the following sub-targets:
-# html - HTML single-page API specification
-# pdf - PDF single-page API specification
-# styleguide - HTML5 single-page "Documentation and Extensions" guide
-# registry - HTML5 single-page XML Registry Schema documentation
-# manhtml - HTML5 single-page reference guide - NOT SUPPORTED
-# manpdf - PDF reference guide - NOT SUPPORTED
-# manhtmlpages - HTML5 separate per-feature refpages
-# allchecks - Python sanity checker for script markup and macro use
-
-all: alldocs allchecks
-
-alldocs: allspecs allman proposals
-
-allspecs: html pdf styleguide registry
-
-allman: manhtmlpages
-
-# check_spec_links.py looks for proper use of custom markup macros
-# --ignore_count 0 can be incremented if there are unfixable errors
-# xml_consistency.py performs various XML consistency checks
-# check_undefined looks for untagged use of 'undefined' in spec sources
-# reflow.py looks for asciidoctor conditionals inside VU statements;
-# and for duplicated VUID numbers, but only in spec sources.
-allchecks:
- $(PYTHON) $(SCRIPTS)/check_spec_links.py -Werror --ignore_count 0
- $(PYTHON) $(SCRIPTS)/xml_consistency.py
- $(SCRIPTS)/ci/check_undefined
- $(PYTHON) $(SCRIPTS)/reflow.py -nowrite -noflow -check FAIL -checkVUID FAIL $(SPECFILES)
-
-# Note that the := assignments below are immediate, not deferred, and
-# are therefore order-dependent in the Makefile
-
-QUIET ?= @
-VERYQUIET?= @
-PYTHON ?= python3
-ASCIIDOC ?= asciidoctor
-RUBY = ruby
-NODEJS = node
-PATCH = patch
-RM = rm -f
-RMRF = rm -rf
-MKDIR = mkdir -p
-CP = cp
-ECHO = echo
-GS_EXISTS := $(shell command -v gs 2> /dev/null)
-
-# Path to scripts used in generation
-SCRIPTS = $(CURDIR)/scripts
-
-# Target directories for output files
-# HTMLDIR - 'html' target
-# PDFDIR - 'pdf' target
-# CHECKDIR - 'allchecks' target
-OUTDIR = $(GENERATED)/out
-HTMLDIR = $(OUTDIR)/html
-VUDIR = $(OUTDIR)/validation
-PDFDIR = $(OUTDIR)/pdf
-CHECKDIR = $(OUTDIR)/checks
-PROPOSALDIR = $(OUTDIR)/proposals
-
-# PDF Equations are written to SVGs, this dictates the location to store those files (temporary)
-PDFMATHDIR:=$(OUTDIR)/equations_temp
-
-# Set VERBOSE to -v to see what asciidoc is doing.
-VERBOSE =
-
-# asciidoc attributes to set (defaults are usually OK)
-# NOTEOPTS sets options controlling which NOTEs are generated
-# PATCHVERSION must equal VK_HEADER_VERSION from vk.xml
-# ATTRIBOPTS sets the API revision and enables KaTeX generation
-# VERSIONATTRIBS sets attributes for enabled API versions (set above
-# based on $(VERSIONS))
-# EXTATTRIBS sets attributes for enabled extensions (set above based on
-# $(EXTENSIONS))
-# EXTRAATTRIBS sets additional attributes, if passed to make
-# ADOCMISCOPTS miscellaneous options controlling error behavior, etc.
-# ADOCEXTS asciidoctor extensions to load
-# ADOCOPTS options for asciidoc->HTML5 output
-
-NOTEOPTS = -a editing-notes -a implementation-guide
-PATCHVERSION = 198
-
-ifneq (,$(findstring VK_VERSION_1_2,$(VERSIONS)))
-SPECMINOR = 2
-else
-ifneq (,$(findstring VK_VERSION_1_1,$(VERSIONS)))
-SPECMINOR = 1
-else
-SPECMINOR = 0
-endif
-endif
-
-SPECREVISION = 1.$(SPECMINOR).$(PATCHVERSION)
-
-# Spell out ISO 8601 format as not all date commands support --rfc-3339
-SPECDATE = $(shell echo `date -u "+%Y-%m-%d %TZ"`)
-
-# Generate Asciidoc attributes for spec remark
-# Could use `git log -1 --format="%cd"` to get branch commit date
-# This used to be a dependency in the spec html/pdf targets,
-# but that's likely to lead to merge conflicts. Just regenerate
-# when pushing a new spec for review to the sandbox.
-# The dependency on HEAD is per the suggestion in
-# http://neugierig.org/software/blog/2014/11/binary-revisions.html
-SPECREMARK = from git branch: $(shell echo `git symbolic-ref --short HEAD 2> /dev/null || echo Git branch not available`) \
- commit: $(shell echo `git log -1 --format="%H" 2> /dev/null || echo Git commit not available`)
-
-# Base path to SPIR-V extensions on the web.
-SPIRVPATH = https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions
-
-# Some of the attributes used in building all spec documents:
-# chapters - absolute path to chapter sources
-# appendices - absolute path to appendix sources
-# images - absolute path to images
-# generated - absolute path to generated sources
-# refprefix - controls which generated extension metafiles are
-# included at build time. Must be empty for specification,
-# 'refprefix.' for refpages (see ADOCREFOPTS below).
-ATTRIBOPTS = -a revnumber="$(SPECREVISION)" \
- -a revdate="$(SPECDATE)" \
- -a revremark="$(SPECREMARK)" \
- -a apititle="$(APITITLE)" \
- -a stem=latexmath \
- -a imageopts="$(IMAGEOPTS)" \
- -a config=$(CURDIR)/config \
- -a appendices=$(CURDIR)/appendices \
- -a chapters=$(CURDIR)/chapters \
- -a images=$(IMAGEPATH) \
- -a generated=$(GENERATED) \
- -a spirv="$(SPIRVPATH)" \
- -a refprefix \
- $(VERSIONATTRIBS) \
- $(EXTATTRIBS) \
- $(EXTRAATTRIBS)
-ADOCMISCOPTS = --failure-level ERROR
-# Non target-specific Asciidoctor extensions and options
-# Look in $(GENERATED) for explicitly required non-extension Ruby, such
-# as api.rb
-ADOCEXTS = -I$(GENERATED) -r $(CURDIR)/config/spec-macros.rb -r $(CURDIR)/config/tilde_open_block.rb
-ADOCOPTS = -d book $(ADOCMISCOPTS) $(ATTRIBOPTS) $(NOTEOPTS) $(VERBOSE) $(ADOCEXTS)
-
-# HTML target-specific Asciidoctor extensions and options
-ADOCHTMLEXTS = -r $(CURDIR)/config/katex_replace.rb \
- -r $(CURDIR)/config/loadable_html.rb \
- -r $(CURDIR)/config/vuid-expander.rb \
- -r $(CURDIR)/config/rouge-extend-css.rb
-
-# ADOCHTMLOPTS relies on the relative runtime path from the output HTML
-# file to the katex scripts being set with KATEXDIR. This is overridden
-# by some targets.
-# ADOCHTMLOPTS also relies on the absolute build-time path to the
-# 'stylesdir' containing our custom CSS.
-KATEXSRCDIR = $(CURDIR)/katex
-KATEXDIR = katex
-ADOCHTMLOPTS = $(ADOCHTMLEXTS) -a katexpath=$(KATEXDIR) \
- -a stylesheet=khronos.css \
- -a stylesdir=$(CURDIR)/config \
- -a sectanchors
-
-# PDF target-specific Asciidoctor extensions and options
-ADOCPDFEXTS = -r asciidoctor-pdf \
- -r asciidoctor-mathematical \
- -r $(CURDIR)/config/asciidoctor-mathematical-ext.rb \
- -r $(CURDIR)/config/vuid-expander.rb
-ADOCPDFOPTS = $(ADOCPDFEXTS) -a mathematical-format=svg \
- -a imagesoutdir=$(PDFMATHDIR) \
- -a pdf-fontsdir=config/fonts,GEM_FONTS_DIR \
- -a pdf-stylesdir=config/themes -a pdf-style=pdf
-
-# Valid usage-specific Asciidoctor extensions and options
-ADOCVUEXTS = -r $(CURDIR)/config/vu-to-json.rb
-ADOCVUOPTS = $(ADOCVUEXTS)
-
-.PHONY: directories
-
-# Images used by the spec. These are included in generated HTML now.
-IMAGEPATH = $(CURDIR)/images
-SVGFILES = $(wildcard $(IMAGEPATH)/*.svg)
-
-# Top-level spec source file
-SPECSRC := vkspec.txt
-# Static files making up sections of the API spec.
-SPECFILES = $(wildcard chapters/[A-Za-z]*.txt chapters/*/[A-Za-z]*.txt appendices/[A-Za-z]*.txt)
-# Shorthand for where different types generated files go.
-# All can be relocated by overriding GENERATED in the make invocation.
-GENERATED = $(CURDIR)/gen
-REFPATH = $(GENERATED)/refpage
-APIPATH = $(GENERATED)/api
-VALIDITYPATH = $(GENERATED)/validity
-HOSTSYNCPATH = $(GENERATED)/hostsynctable
-METAPATH = $(GENERATED)/meta
-INTERFACEPATH = $(GENERATED)/interfaces
-SPIRVCAPPATH = $(GENERATED)/spirvcap
-PROPOSALPATH = $(CURDIR)/proposals
-# timeMarker is a proxy target created when many generated files are
-# made at once
-APIDEPEND = $(APIPATH)/timeMarker
-VALIDITYDEPEND = $(VALIDITYPATH)/timeMarker
-HOSTSYNCDEPEND = $(HOSTSYNCPATH)/timeMarker
-METADEPEND = $(METAPATH)/timeMarker
-INTERFACEDEPEND = $(INTERFACEPATH)/timeMarker
-SPIRVCAPDEPEND = $(SPIRVCAPPATH)/timeMarker
-RUBYDEPEND = $(GENERATED)/api.rb
-# All generated dependencies
-GENDEPENDS = $(APIDEPEND) $(VALIDITYDEPEND) $(HOSTSYNCDEPEND) $(METADEPEND) $(INTERFACEDEPEND) $(SPIRVCAPDEPEND) $(RUBYDEPEND)
-# All non-format-specific dependencies
-COMMONDOCS = $(SPECFILES) $(GENDEPENDS)
-
-# Script to add href to anchors
-GENANCHORLINKS = $(SCRIPTS)/genanchorlinks.py
-# Script to translate math on build time
-TRANSLATEMATH = $(NODEJS) $(SCRIPTS)/translate_math.js $(KATEXSRCDIR)/katex.min.js
-
-# Install katex in $(OUTDIR)/katex for reference by all HTML targets
-katexinst: KATEXDIR = katex
-katexinst: $(OUTDIR)/$(KATEXDIR)
-
-$(OUTDIR)/$(KATEXDIR): $(KATEXSRCDIR)
- $(QUIET)$(MKDIR) $(OUTDIR)
- $(QUIET)$(RMRF) $(OUTDIR)/$(KATEXDIR)
-# We currently only need the css and fonts, but copy it whole anyway
- $(QUIET)$(CP) -rf $(KATEXSRCDIR) $(OUTDIR)
-
-# Spec targets
-# There is some complexity to try and avoid short virtual targets like 'html'
-# causing specs to *always* be regenerated.
-
-CHUNKER = $(CURDIR)/scripts/asciidoctor-chunker/asciidoctor-chunker.js
-CHUNKINDEX = $(CURDIR)/config/chunkindex
-# Only the $(CHUNKER) step is required unless the search index is to be
-# generated and incorporated into the chunked spec.
-#
-# Dropped $(QUIET) for now
-# Should set NODE_PATH=/usr/local/lib/node_modules or wherever, outside Makefile
-# Copying chunked.js into target avoids a warning from the chunker
-chunked: $(HTMLDIR)/vkspec.html $(SPECSRC) $(COMMONDOCS)
- $(QUIET)$(CHUNKINDEX)/addscripts.sh $(HTMLDIR)/vkspec.html $(HTMLDIR)/prechunked.html
- $(QUIET)$(CP) $(CHUNKINDEX)/chunked.css $(CHUNKINDEX)/chunked.js \
- $(CHUNKINDEX)/lunr.js $(HTMLDIR)
- $(QUIET)$(NODEJS) $(CHUNKER) $(HTMLDIR)/prechunked.html -o $(HTMLDIR)
- $(QUIET)$(RM) $(HTMLDIR)/prechunked.html
- $(QUIET)$(RUBY) $(CHUNKINDEX)/generate-index.rb $(HTMLDIR)/chap*html | \
- $(NODEJS) $(CHUNKINDEX)/build-index.js > $(HTMLDIR)/search.index.js
-
-# This is a temporary target while the new chunker is pre-release.
-# Eventually we will either pull the chunker into CI, or permanently
-# store a copy of the short JavaScript chunker in this repository.
-CHUNKERVERSION = asciidoctor-chunker_v1.0.0
-CHUNKURL = https://github.com/wshito/asciidoctor-chunker/releases/download/v1.0.0/$(CHUNKERVERSION).zip
-getchunker:
- wget $(CHUNKURL) -O $(CHUNKERVERSION).zip
- unzip $(CHUNKERVERSION).zip
- mv $(CHUNKERVERSION)/* scripts/asciidoctor-chunker/
- rm -rf $(CHUNKERVERSION).zip $(CHUNKERVERSION)
-
-html: $(HTMLDIR)/vkspec.html $(SPECSRC) $(COMMONDOCS)
-
-$(HTMLDIR)/vkspec.html: KATEXDIR = ../katex
-$(HTMLDIR)/vkspec.html: $(SPECSRC) $(COMMONDOCS) katexinst
- $(QUIET)$(ASCIIDOC) -b html5 $(ADOCOPTS) $(ADOCHTMLOPTS) -o $@ $(SPECSRC)
- $(QUIET)$(PYTHON) $(GENANCHORLINKS) $@ $@
- $(QUIET)$(TRANSLATEMATH) $@
-
-diff_html: $(HTMLDIR)/diff.html $(SPECSRC) $(COMMONDOCS)
-
-$(HTMLDIR)/diff.html: KATEXDIR = ../katex
-$(HTMLDIR)/diff.html: $(SPECSRC) $(COMMONDOCS) katexinst
- $(QUIET)$(ASCIIDOC) -b html5 $(ADOCOPTS) $(ADOCHTMLOPTS) \
- -a diff_extensions="$(DIFFEXTENSIONS)" \
- -r $(CURDIR)/config/extension-highlighter.rb --trace \
- -o $@ $(SPECSRC)
- $(QUIET)$(TRANSLATEMATH) $@
-
-# PDF optimizer - usage $(OPTIMIZEPDF) in.pdf out.pdf
-# OPTIMIZEPDFOPTS=--compress-pages is slightly better, but much slower
-OPTIMIZEPDF = hexapdf optimize $(OPTIMIZEPDFOPTS)
-
-pdf: $(PDFDIR)/vkspec.pdf $(SPECSRC) $(COMMONDOCS)
-
-$(PDFDIR)/vkspec.pdf: $(SPECSRC) $(COMMONDOCS)
- $(QUIET)$(MKDIR) $(PDFDIR)
- $(QUIET)$(MKDIR) $(PDFMATHDIR)
- $(QUIET)$(ASCIIDOC) -b pdf $(ADOCOPTS) $(ADOCPDFOPTS) -o $@ $(SPECSRC)
- $(QUIET)$(OPTIMIZEPDF) $@ $@.out.pdf && mv $@.out.pdf $@
- $(QUIET)rm -rf $(PDFMATHDIR)
-
-validusage: $(VUDIR)/validusage.json $(SPECSRC) $(COMMONDOCS)
-
-$(VUDIR)/validusage.json: $(SPECSRC) $(COMMONDOCS)
- $(QUIET)$(MKDIR) $(VUDIR)
- $(QUIET)$(ASCIIDOC) $(ADOCOPTS) $(ADOCVUOPTS) --trace \
- -a json_output=$@ -o $@ $(SPECSRC)
-
-# Vulkan Documentation and Extensions, a.k.a. "Style Guide" documentation
-
-STYLESRC = styleguide.txt
-STYLEFILES = $(wildcard style/[A-Za-z]*.txt)
-
-styleguide: $(OUTDIR)/styleguide.html
-
-$(OUTDIR)/styleguide.html: KATEXDIR = katex
-$(OUTDIR)/styleguide.html: $(STYLESRC) $(STYLEFILES) $(GENDEPENDS) katexinst
- $(QUIET)$(MKDIR) $(OUTDIR)
- $(QUIET)$(ASCIIDOC) -b html5 $(ADOCOPTS) $(ADOCHTMLOPTS) -o $@ $(STYLESRC)
- $(QUIET)$(TRANSLATEMATH) $@
-
-
-# Vulkan API Registry (XML Schema) documentation
-# Currently does not use latexmath / KaTeX
-
-REGSRC = registry.txt
-
-registry: $(OUTDIR)/registry.html
-
-$(OUTDIR)/registry.html: $(REGSRC) $(GENDEPENDS)
- $(QUIET)$(MKDIR) $(OUTDIR)
- $(QUIET)$(ASCIIDOC) -b html5 $(ADOCOPTS) $(ADOCHTMLOPTS) -o $@ $(REGSRC)
- $(QUIET)$(TRANSLATEMATH) $@
-
-# Build proposal documents
-PROPOSALSOURCES = $(filter-out $(PROPOSALPATH)/template.asciidoc, $(wildcard $(PROPOSALPATH)/*.asciidoc))
-PROPOSALDOCS = $(PROPOSALSOURCES:$(PROPOSALPATH)/%.asciidoc=$(PROPOSALDIR)/%.html)
-proposals: $(PROPOSALDOCS) $(PROPOSALSOURCES)
-
-# Proposal documents are built outside of the main specification
-$(PROPOSALDIR)/%.html: $(PROPOSALPATH)/%.asciidoc
- $(QUIET)$(ASCIIDOC) --failure-level ERROR -b html5 -o $@ $<
- $(QUIET) if egrep -q '\\[([]' $@ ; then \
- $(TRANSLATEMATH) $@ ; \
- fi
-
-# Reflow text in spec sources
-REFLOW = $(SCRIPTS)/reflow.py
-REFLOWOPTS = -overwrite
-
-reflow:
- $(QUIET) echo "Warning: please verify the spec outputs build without changes!"
- $(PYTHON) $(REFLOW) $(REFLOWOPTS) $(SPECSRC) $(SPECFILES) $(STYLESRC) $(STYLEFILES)
-
-# Clean generated and output files
-
-clean: clean_html clean_pdf clean_man clean_checks clean_generated clean_validusage
-
-clean_html:
- $(QUIET)$(RMRF) $(HTMLDIR) $(OUTDIR)/katex
- $(QUIET)$(RM) $(OUTDIR)/apispec.html $(OUTDIR)/styleguide.html \
- $(OUTDIR)/registry.html
-
-clean_pdf:
- $(QUIET)$(RMRF) $(PDFDIR) $(OUTDIR)/apispec.pdf
-
-clean_man:
- $(QUIET)$(RMRF) $(MANHTMLDIR)
-
-clean_checks:
- $(QUIET)$(RMRF) $(CHECKDIR)
-
-# Generated directories and files to remove
-CLEAN_GEN_PATHS = \
- $(APIPATH) \
- $(HOSTSYNCPATH) \
- $(VALIDITYPATH) \
- $(METAPATH) \
- $(INTERFACEPATH) \
- $(SPIRVCAPPATH) \
- $(REFPATH) \
- $(GENERATED)/include \
- $(GENERATED)/__pycache__ \
- $(PDFMATHDIR) \
- $(GENERATED)/api.py \
- $(GENERATED)/api.rb \
- $(GENERATED)/extDependency.*
-
-clean_generated:
- $(QUIET)$(RMRF) $(CLEAN_GEN_PATHS)
-
-clean_validusage:
- $(QUIET)$(RM) $(VUDIR)/validusage.json
-
-
-# Generated refpage sources. For now, always build all refpages.
-MANSOURCES = $(filter-out $(REFPATH)/apispec.txt, $(wildcard $(REFPATH)/*.txt))
-
-# Generation of refpage asciidoctor sources by extraction from the
-# specification.
-#
-# Should have a proper dependency causing the man page sources to be
-# generated by running genRef (once), but adding $(MANSOURCES) to the
-# targets causes genRef to run once/target.
-#
-# Should pass in $(EXTOPTIONS) to determine which pages to generate.
-# For now, all core and extension refpages are extracted by genRef.py.
-GENREF = $(SCRIPTS)/genRef.py
-LOGFILE = $(REFPATH)/refpage.log
-refpages: $(REFPATH)/apispec.txt
-$(REFPATH)/apispec.txt: $(SPECFILES) $(GENREF) $(SCRIPTS)/reflib.py $(GENERATED)/api.py
- $(QUIET)$(MKDIR) $(REFPATH)
- $(PYTHON) $(GENREF) -genpath $(GENERATED) -basedir $(REFPATH) \
- -log $(LOGFILE) -extpath $(CURDIR)/appendices \
- $(EXTOPTIONS) $(SPECFILES)
-
-# These targets are HTML5 refpages
-#
-# The recursive $(MAKE) is an apparently unavoidable hack, since the
-# actual list of man page sources isn't known until after
-# $(REFPATH)/apispec.txt is generated. $(GENDEPENDS) is generated before
-# running the recursive make, so it doesn't trigger twice
-# $(SUBMAKEOPTIONS) suppresses the redundant "Entering / leaving"
-# messages make normally prints out, similarly to suppressing make
-# command output logging in the individual refpage actions below.
-SUBMAKEOPTIONS = --no-print-directory
-manhtmlpages: $(REFPATH)/apispec.txt $(GENDEPENDS)
- $(QUIET) echo "manhtmlpages: building HTML refpages with these options:"
- $(QUIET) echo $(ASCIIDOC) -b html5 $(ADOCOPTS) $(ADOCHTMLOPTS) \
- $(ADOCREFOPTS) -d manpage -o REFPAGE.html REFPAGE.txt
- $(MAKE) $(SUBMAKEOPTIONS) -e buildmanpages
-
-# Build the individual refpages, then the symbolic links from aliases
-MANHTMLDIR = $(OUTDIR)/man/html
-MANHTML = $(MANSOURCES:$(REFPATH)/%.txt=$(MANHTMLDIR)/%.html)
-buildmanpages: $(MANHTML)
- $(MAKE) $(SUBMAKEOPTIONS) -e manaliases
-
-# Asciidoctor options to build refpages
-#
-# ADOCREFOPTS *must* be placed after ADOCOPTS in the command line, so
-# that it can override spec attribute values.
-#
-# cross-file-links makes custom macros link to other refpages
-# refprefix includes the refpage (not spec) extension metadata.
-# isrefpage is for refpage-specific content
-# html_spec_relative is where to find the full specification
-ADOCREFOPTS = -a cross-file-links -a refprefix='refpage.' -a isrefpage \
- -a html_spec_relative='../../html/vkspec.html'
-
-# The refpage build process normally generates far too much output, so
-# use VERYQUIET instead of QUIET
-# Running translate_math.js on every refpage is slow and most of them
-# don't contain math, so do a quick search for latexmath delimiters.
-$(MANHTMLDIR)/%.html: KATEXDIR = ../../katex
-$(MANHTMLDIR)/%.html: $(REFPATH)/%.txt $(GENDEPENDS) katexinst
- $(VERYQUIET)echo "Building $@ from $< using default options"
- $(VERYQUIET)$(MKDIR) $(MANHTMLDIR)
- $(VERYQUIET)$(ASCIIDOC) -b html5 $(ADOCOPTS) $(ADOCHTMLOPTS) $(ADOCREFOPTS) \
- -d manpage -o $@ $<
- $(VERYQUIET)if egrep -q '\\[([]' $@ ; then \
- $(TRANSLATEMATH) $@ ; \
- fi
-
-# The 'manhtml' and 'manpdf' targets are NO LONGER SUPPORTED by Khronos.
-# They generate HTML5 and PDF single-file versions of the refpages.
-# The generated refpage sources are included by $(REFPATH)/apispec.txt,
-# and are always generated along with that file. Therefore there's no
-# need for a recursive $(MAKE) or a $(MANHTML) dependency, unlike the
-# manhtmlpages target.
-
-manpdf: $(OUTDIR)/apispec.pdf
-
-$(OUTDIR)/apispec.pdf: $(SPECVERSION) $(REFPATH)/apispec.txt $(SVGFILES) $(GENDEPENDS)
- $(QUIET)$(MKDIR) $(OUTDIR)
- $(QUIET)$(MKDIR) $(PDFMATHDIR)
- $(QUIET)$(ASCIIDOC) -b pdf -a html_spec_relative='html/vkspec.html' \
- $(ADOCOPTS) $(ADOCPDFOPTS) -o $@ $(REFPATH)/apispec.txt
- $(QUIET)$(OPTIMIZEPDF) $@ $@.out.pdf && mv $@.out.pdf $@
-
-manhtml: $(OUTDIR)/apispec.html
-
-$(OUTDIR)/apispec.html: KATEXDIR = katex
-$(OUTDIR)/apispec.html: ADOCMISCOPTS =
-$(OUTDIR)/apispec.html: $(SPECVERSION) $(REFPATH)/apispec.txt $(SVGFILES) $(GENDEPENDS) katexinst
- $(QUIET)$(MKDIR) $(OUTDIR)
- $(QUIET)$(ASCIIDOC) -b html5 -a html_spec_relative='html/vkspec.html' \
- $(ADOCOPTS) $(ADOCHTMLOPTS) -o $@ $(REFPATH)/apispec.txt
- $(QUIET)$(TRANSLATEMATH) $@
-
-# Create links for refpage aliases
-
-MAKEMANALIASES = $(SCRIPTS)/makemanaliases.py
-manaliases: $(GENERATED)/api.py
- $(PYTHON) $(MAKEMANALIASES) -genpath $(GENERATED) -refdir $(MANHTMLDIR)
-
-# Targets generated from the XML and registry processing scripts
-# $(GENERATED)/api.py - Python encoding of the registry
-# The $(...DEPEND) targets are files named 'timeMarker' in generated
-# target directories. They serve as proxies for the multiple generated
-# files written for each target:
-# apiinc / proxy $(APIDEPEND) - API interface include files in $(APIPATH)
-# hostsyncinc / proxy $(HOSTSYNCDEPEND) - host sync table include files in $(HOSTSYNCPATH)
-# validinc / proxy $(VALIDITYDEPEND) - API validity include files in $(VALIDITYPATH)
-# extinc / proxy $(METADEPEND) - extension appendix metadata include files in $(METAPATH)
-#
-# $(VERSIONOPTIONS) specifies the core API versions which are included
-# in these targets, and is set above based on $(VERSIONS)
-#
-# $(EXTOPTIONS) specifies the extensions which are included in these
-# targets, and is set above based on $(EXTENSIONS).
-#
-# $(GENVKEXTRA) are extra options that can be passed to genvk.py, e.g.
-# '-diag diag'
-
-REGISTRY = xml
-VKXML = $(REGISTRY)/vk.xml
-GENVK = $(SCRIPTS)/genvk.py
-GENVKOPTS = $(VERSIONOPTIONS) $(EXTOPTIONS) $(GENVKEXTRA) -registry $(VKXML)
-GENVKEXTRA =
-
-scriptapi: pyapi rubyapi
-
-pyapi $(GENERATED)/api.py: $(VKXML) $(GENVK)
- $(PYTHON) $(GENVK) $(GENVKOPTS) -o $(GENERATED) api.py
-
-rubyapi $(GENERATED)/api.rb: $(VKXML) $(GENVK)
- $(PYTHON) $(GENVK) $(GENVKOPTS) -o $(GENERATED) api.rb
-
-apiinc: $(APIDEPEND)
-
-$(APIDEPEND): $(VKXML) $(GENVK) $(GENERATED)/api.py
- $(QUIET)$(MKDIR) $(APIPATH)
- $(QUIET)$(PYTHON) $(GENVK) $(GENVKOPTS) -o $(APIPATH) -genpath $(GENERATED) apiinc
-
-hostsyncinc: $(HOSTSYNCDEPEND)
-
-$(HOSTSYNCDEPEND): $(VKXML) $(GENVK)
- $(QUIET)$(MKDIR) $(HOSTSYNCPATH)
- $(QUIET)$(PYTHON) $(GENVK) $(GENVKOPTS) -o $(HOSTSYNCPATH) hostsyncinc
-
-validinc: $(VALIDITYDEPEND)
-
-$(VALIDITYDEPEND): $(VKXML) $(GENVK)
- $(QUIET)$(MKDIR) $(VALIDITYPATH)
- $(QUIET)$(PYTHON) $(GENVK) $(GENVKOPTS) -o $(VALIDITYPATH) validinc
-
-extinc: $(METAPATH)/timeMarker
-
-$(METADEPEND): $(VKXML) $(GENVK)
- $(QUIET)$(MKDIR) $(METAPATH)
- $(QUIET)$(PYTHON) $(GENVK) $(GENVKOPTS) -o $(METAPATH) extinc
-
-interfaceinc: $(INTERFACEPATH)/timeMarker
-
-$(INTERFACEDEPEND): $(VKXML) $(GENVK)
- $(QUIET)$(MKDIR) $(INTERFACEPATH)
- $(QUIET)$(PYTHON) $(GENVK) $(GENVKOPTS) -o $(INTERFACEPATH) interfaceinc
-
-# This generates a single file, so SPIRVCAPDEPEND is the full path to
-# the file, rather than to a timeMarker in the same directory.
-spirvcapinc: $(SPIRVCAPDEPEND)
-
-$(SPIRVCAPDEPEND): $(VKXML) $(GENVK)
- $(QUIET)$(MKDIR) $(SPIRVCAPPATH)
- $(QUIET)$(PYTHON) $(GENVK) $(GENVKOPTS) -o $(SPIRVCAPPATH) spirvcapinc
-
-# Debugging aid - generate all files from registry XML
-# This leaves out $(GENERATED)/extDependency.sh intentionally as it only
-# needs to be updated when the extension dependencies in vk.xml change.
-
-generated: $(GENERATED)/api.py $(GENDEPENDS)
-
-# Extension dependencies derived from vk.xml
-# Both Bash and Python versions are generated
-
-extDependency: $(GENERATED)/extDependency.stamp
-$(GENERATED)/extDependency.sh: $(GENERATED)/extDependency.stamp
-$(GENERATED)/extDependency.py: $(GENERATED)/extDependency.stamp
-
-DEPSCRIPT = $(SCRIPTS)/make_ext_dependency.py
-$(GENERATED)/extDependency.stamp: $(VKXML) $(DEPSCRIPT)
- $(QUIET)$(PYTHON) $(DEPSCRIPT) \
- -registry $(VKXML) \
- -outscript $(GENERATED)/extDependency.sh \
- -outpy $(GENERATED)/extDependency.py
- $(QUIET)touch $@
diff --git a/codegen/vulkan/README.adoc b/codegen/vulkan/README.adoc
deleted file mode 100644
index 6826917a..00000000
--- a/codegen/vulkan/README.adoc
+++ /dev/null
@@ -1,111 +0,0 @@
-// Copyright 2017-2021 The Khronos Group Inc.
-// SPDX-License-Identifier: CC-BY-4.0
-
-ifdef::env-github[]
-:note-caption: :information_source:
-endif::[]
-
-= Vulkan^(R)^ API Documentation Project
-
-This repository contains sources for the formal documentation of the Vulkan
-API. This includes:
-
-[options="compact"]
- * The Vulkan API Specification
- * Specification of Vulkan extensions
- * API reference ("`man`") pages
- * The XML API Registry (also mirrored at
- link:https://github.com/KhronosGroup/Vulkan-Headers[Vulkan-Headers])
- * Vulkan header files (also mirrored at
- link:https://github.com/KhronosGroup/Vulkan-Headers[Vulkan-Headers])
- * Related tools and scripts.
-
-The authoritative public repository is located at
-link:https://github.com/KhronosGroup/Vulkan-Docs/[Vulkan-Docs].
-It hosts a public Issue tracker, and outside developers can file proposed
-changes (Pull Requests) against the Specification, subject to approval by
-Khronos.
-
-If in doubt where to submit your Issue, consult the
-link:https://github.com/KhronosGroup/Vulkan-Web-Registry/blob/main/Vulkan-Projects.adoc[Vulkan-Projects] list on the link:https://github.com/KhronosGroup/Vulkan-Web-Registry[Vulkan-Web-Registry]
-repository.
-
-
-== External Contributions
-
-Khronos welcomes feedback in Github Issues, and proposed changes in Github
-Pull Requests (PRs), but will not necessarily accept all such changes.
-
-Please keep your issues and pull requests focused on solving a single
-problem. Broader feedback that tries to solve multiple problems, or touches
-many parts of the Specification at once, is difficult for the Vulkan Working
-Group to review in a timely fashion.
-
-
-== Branch Structure
-
-The current Specification is maintained in the default branch (currently
-`main`) of the repository.
-From this branch it is possible to generate Specifications for any published
-version of Vulkan (1.2, 1.1, and 1.0), and incorporating any desired set of
-extensions.
-Each published update is tagged in the form `1.2.*release*` where *release*
-is a constantly incrementing release number and `1.2` is the latest
-published version of the API.
-The last public spec update prior to Vulkan 1.2 is tagged `v1.1.130`.
-
-The last state of the default branch in Khronos' internal gitlab server,
-before 1.2 content was merged into it, is tagged `1.1-archive` (this tag is
-not in github).
-
-
-== Directory Structure
-
-The directory structure is as follows:
-
-```
-README.adoc This file
-BUILD.adoc Documents how to build the specifications and reference pages
-CONTRIBUTING.adoc Requirements for external contributions to the repository
-COPYING.adoc Copyright and licensing information
-CODE_OF_CONDUCT.adoc Code of Conduct
-LICENSE.adoc Summary of licenses used by files in the repository
-ChangeLog.txt Change log summary for each public spec update
-Makefile, make* Makefile and helper build scripts (see BUILD.adoc)
-appendices/ Specification appendices
-chapters/ Specification chapters
-proposals/ Design documents for extensions
-config/ Asciidoctor configuration, CSS, and index generator
-images/ Images (figures, diagrams, icons)
-gen/out/ Default directory for the generated documents
-scripts/ Helper scripts used in specification, header, and reference page generation
-style/ Sources for "styleguide" (Vulkan Documentation and Extensions: Procedures and Conventions)
-xml/ XML API Registry (vk.xml)
-registry.txt Sources for documentation of the vk.xml format
-```
-
-
-== Building the Specification and Reference Pages
-
-The document sources are marked up in Asciidoctor format, and we use
-`asciidoctor` and related toolchain components to generate output documents.
-See link:BUILD.adoc[BUILD.adoc] for more information on installing the
-toolchain and building the Specification.
-
-
-== Generating Headers and Related Files
-
-See link:xml/README.adoc[xml/README.adoc].
-
-The header files (`include/vulkan/vulkan*.h`) and many parts of the
-specification and reference page documents are generated from descriptions
-in the XML API Registry (link:xml/vk.xml[`xml/vk.xml`]).
-The generated files are not checked into the repository.
-If you change `vk.xml`, you can regenerate the headers by going into
-`xml/` and running:
-
- $ make clean install
-
-The other generated files are built as required via dependencies in
-the top-level `Makefile`.
-
diff --git a/codegen/vulkan/copyright-spec.txt b/codegen/vulkan/copyright-spec.txt
deleted file mode 100644
index a39ec49e..00000000
--- a/codegen/vulkan/copyright-spec.txt
+++ /dev/null
@@ -1,83 +0,0 @@
-Copyright 2014-2021 The Khronos Group Inc.
-
-This Specification is protected by copyright laws and contains material
-proprietary to Khronos. Except as described by these terms, it or any
-components may not be reproduced, republished, distributed, transmitted,
-displayed, broadcast or otherwise exploited in any manner without the
-express prior written permission of Khronos.
-Khronos grants a conditional copyright license to use and reproduce the
-unmodified Specification for any purpose, without fee or royalty, EXCEPT no
-licenses to any patent, trademark or other intellectual property rights are
-granted under these terms.
-
-Khronos makes no, and expressly disclaims any, representations or
-warranties, express or implied, regarding this Specification, including,
-without limitation: merchantability, fitness for a particular purpose,
-non-infringement of any intellectual property, correctness, accuracy,
-completeness, timeliness, and reliability.
-Under no circumstances will Khronos, or any of its Promoters, Contributors
-or Members, or their respective partners, officers, directors, employees,
-agents or representatives be liable for any damages, whether direct,
-indirect, special or consequential damages for lost revenues, lost profits,
-or otherwise, arising from or in connection with these materials.
-
-This Specification has been created under the Khronos Intellectual Property
-Rights Policy, which is Attachment A of the Khronos Group Membership
-Agreement available at https://www.khronos.org/files/member_agreement.pdf, and which
-defines the terms 'Scope', 'Compliant Portion', and 'Necessary Patent Claims'.
-Parties desiring to implement the Specification and make use of Khronos trademarks
-in relation to that implementation, and receive reciprocal patent license protection
-under the Khronos Intellectual Property Rights Policy must become Adopters and
-confirm the implementation as conformant under the process defined by Khronos for
-this Specification; see https://www.khronos.org/adopters.
-
-This Specification contains substantially unmodified functionality from, and is a
-successor to, Khronos specifications including OpenGL, OpenGL ES and OpenCL.
-
-Some parts of this Specification are purely informative and so are EXCLUDED from
-the Scope of this Specification. The <<introduction-conventions>> section of the
-<<introduction>> defines how these parts of the Specification are identified.
-
-Where this Specification uses <<introduction-technical-terminology,technical
-terminology>>, defined in the <<glossary>> or otherwise, that refer to
-enabling technologies that are not expressly set forth in this
-Specification, those enabling technologies are EXCLUDED from the Scope of
-this Specification.
-For clarity, enabling technologies not disclosed with particularity in this
-Specification (e.g. semiconductor manufacturing technology, hardware
-architecture, processor architecture or microarchitecture, memory
-architecture, compiler technology, object oriented technology, basic
-operating system technology, compression technology, algorithms, and so on)
-are NOT to be considered expressly set forth; only those application program
-interfaces and data structures disclosed with particularity are included in
-the Scope of this Specification.
-
-For purposes of the Khronos Intellectual Property Rights Policy as it relates
-to the definition of Necessary Patent Claims, all recommended or optional
-features, behaviors and functionality set forth in this Specification, if
-implemented, are considered to be included as Compliant Portions.
-
-Where this Specification includes <<introduction-normative-references,
-normative references to external documents>>, only the specifically
-identified sections of those external documents are INCLUDED in the Scope of
-this Specification. If not created by Khronos, those external documents may
-contain contributions from non-members of Khronos not covered by the Khronos
-Intellectual Property Rights Policy.
-
-ifndef::ratified_core_spec[]
-This document contains extensions which are not ratified by Khronos, and as
-such is not a ratified Specification, though it contains text from (and is a
-superset of) the ratified Vulkan Specification. The ratified versions of the
-Vulkan Specification can be found at
-https://www.khronos.org/registry/vulkan/specs/1.2/html/vkspec.html (core
-only) and
-https://www.khronos.org/registry/vulkan/specs/1.2-khr-extensions/html/vkspec.html
-(core with KHR extensions).
-endif::ratified_core_spec[]
-
-Vulkan and Khronos are registered trademarks of The Khronos Group Inc.
-ASTC is a trademark of ARM Holdings PLC; OpenCL is a trademark of Apple
-Inc.; and OpenGL and OpenGL ES are registered trademarks of Hewlett Packard
-Enterprise, all used under license by Khronos. All other product names,
-trademarks, and/or company names are used solely for identification and
-belong to their respective owners.
diff --git a/codegen/vulkan/include/vk_video/vulkan_video_codec_h264std.h b/codegen/vulkan/include/vk_video/vulkan_video_codec_h264std.h
deleted file mode 100644
index 3338fe14..00000000
--- a/codegen/vulkan/include/vk_video/vulkan_video_codec_h264std.h
+++ /dev/null
@@ -1,312 +0,0 @@
-/*
-** Copyright (c) 2019-2021 The Khronos Group Inc.
-**
-** SPDX-License-Identifier: Apache-2.0
-*/
-
-#ifndef VULKAN_VIDEO_CODEC_H264STD_H_
-#define VULKAN_VIDEO_CODEC_H264STD_H_ 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "vk_video/vulkan_video_codecs_common.h"
-
-// Vulkan 0.9 provisional Vulkan video H.264 encode and decode std specification version number
-#define VK_STD_VULKAN_VIDEO_CODEC_H264_API_VERSION_0_9_5 VK_MAKE_VIDEO_STD_VERSION(0, 9, 5) // Patch version should always be set to 0
-
-// Format must be in the form XX.XX where the first two digits are the major and the second two, the minor.
-#define VK_STD_VULKAN_VIDEO_CODEC_H264_SPEC_VERSION VK_STD_VULKAN_VIDEO_CODEC_H264_API_VERSION_0_9_5
-#define VK_STD_VULKAN_VIDEO_CODEC_H264_EXTENSION_NAME "VK_STD_vulkan_video_codec_h264"
-
-// *************************************************
-// Video H.264 common definitions:
-// *************************************************
-
-#define STD_VIDEO_H264_CPB_CNT_LIST_SIZE 32
-#define STD_VIDEO_H264_SCALING_LIST_4X4_NUM_LISTS 6
-#define STD_VIDEO_H264_SCALING_LIST_4X4_NUM_ELEMENTS 16
-#define STD_VIDEO_H264_SCALING_LIST_8X8_NUM_LISTS 2
-#define STD_VIDEO_H264_SCALING_LIST_8X8_NUM_ELEMENTS 64
-
-typedef enum StdVideoH264ChromaFormatIdc {
- STD_VIDEO_H264_CHROMA_FORMAT_IDC_MONOCHROME = 0,
- STD_VIDEO_H264_CHROMA_FORMAT_IDC_420 = 1,
- STD_VIDEO_H264_CHROMA_FORMAT_IDC_422 = 2,
- STD_VIDEO_H264_CHROMA_FORMAT_IDC_444 = 3,
- STD_VIDEO_H264_CHROMA_FORMAT_IDC_INVALID = 0x7FFFFFFF
-} StdVideoH264ChromaFormatIdc;
-
-typedef enum StdVideoH264ProfileIdc {
- STD_VIDEO_H264_PROFILE_IDC_BASELINE = 66, /* Only constrained baseline is supported */
- STD_VIDEO_H264_PROFILE_IDC_MAIN = 77,
- STD_VIDEO_H264_PROFILE_IDC_HIGH = 100,
- STD_VIDEO_H264_PROFILE_IDC_HIGH_444_PREDICTIVE = 244,
- STD_VIDEO_H264_PROFILE_IDC_INVALID = 0x7FFFFFFF
-} StdVideoH264ProfileIdc;
-
-typedef enum StdVideoH264Level {
- STD_VIDEO_H264_LEVEL_1_0 = 0,
- STD_VIDEO_H264_LEVEL_1_1 = 1,
- STD_VIDEO_H264_LEVEL_1_2 = 2,
- STD_VIDEO_H264_LEVEL_1_3 = 3,
- STD_VIDEO_H264_LEVEL_2_0 = 4,
- STD_VIDEO_H264_LEVEL_2_1 = 5,
- STD_VIDEO_H264_LEVEL_2_2 = 6,
- STD_VIDEO_H264_LEVEL_3_0 = 7,
- STD_VIDEO_H264_LEVEL_3_1 = 8,
- STD_VIDEO_H264_LEVEL_3_2 = 9,
- STD_VIDEO_H264_LEVEL_4_0 = 10,
- STD_VIDEO_H264_LEVEL_4_1 = 11,
- STD_VIDEO_H264_LEVEL_4_2 = 12,
- STD_VIDEO_H264_LEVEL_5_0 = 13,
- STD_VIDEO_H264_LEVEL_5_1 = 14,
- STD_VIDEO_H264_LEVEL_5_2 = 15,
- STD_VIDEO_H264_LEVEL_6_0 = 16,
- STD_VIDEO_H264_LEVEL_6_1 = 17,
- STD_VIDEO_H264_LEVEL_6_2 = 18,
- STD_VIDEO_H264_LEVEL_INVALID = 0x7FFFFFFF
-} StdVideoH264Level;
-
-typedef enum StdVideoH264PocType {
- STD_VIDEO_H264_POC_TYPE_0 = 0,
- STD_VIDEO_H264_POC_TYPE_1 = 1,
- STD_VIDEO_H264_POC_TYPE_2 = 2,
- STD_VIDEO_H264_POC_TYPE_INVALID = 0x7FFFFFFF
-} StdVideoH264PocType;
-
-typedef enum StdVideoH264AspectRatioIdc {
- STD_VIDEO_H264_ASPECT_RATIO_IDC_UNSPECIFIED = 0,
- STD_VIDEO_H264_ASPECT_RATIO_IDC_SQUARE = 1,
- STD_VIDEO_H264_ASPECT_RATIO_IDC_12_11 = 2,
- STD_VIDEO_H264_ASPECT_RATIO_IDC_10_11 = 3,
- STD_VIDEO_H264_ASPECT_RATIO_IDC_16_11 = 4,
- STD_VIDEO_H264_ASPECT_RATIO_IDC_40_33 = 5,
- STD_VIDEO_H264_ASPECT_RATIO_IDC_24_11 = 6,
- STD_VIDEO_H264_ASPECT_RATIO_IDC_20_11 = 7,
- STD_VIDEO_H264_ASPECT_RATIO_IDC_32_11 = 8,
- STD_VIDEO_H264_ASPECT_RATIO_IDC_80_33 = 9,
- STD_VIDEO_H264_ASPECT_RATIO_IDC_18_11 = 10,
- STD_VIDEO_H264_ASPECT_RATIO_IDC_15_11 = 11,
- STD_VIDEO_H264_ASPECT_RATIO_IDC_64_33 = 12,
- STD_VIDEO_H264_ASPECT_RATIO_IDC_160_99 = 13,
- STD_VIDEO_H264_ASPECT_RATIO_IDC_4_3 = 14,
- STD_VIDEO_H264_ASPECT_RATIO_IDC_3_2 = 15,
- STD_VIDEO_H264_ASPECT_RATIO_IDC_2_1 = 16,
- STD_VIDEO_H264_ASPECT_RATIO_IDC_EXTENDED_SAR = 255,
- STD_VIDEO_H264_ASPECT_RATIO_IDC_INVALID = 0x7FFFFFFF
-} StdVideoH264AspectRatioIdc;
-
-typedef enum StdVideoH264WeightedBipredIdc {
- STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_DEFAULT = 0,
- STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_EXPLICIT = 1,
- STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_IMPLICIT = 2,
- STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_INVALID = 0x7FFFFFFF
-} StdVideoH264WeightedBipredIdc;
-
-typedef enum StdVideoH264ModificationOfPicNumsIdc {
- STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_SHORT_TERM_SUBTRACT = 0,
- STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_SHORT_TERM_ADD = 1,
- STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_LONG_TERM = 2,
- STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_END = 3,
- STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_INVALID = 0x7FFFFFFF
-} StdVideoH264ModificationOfPicNumsIdc;
-
-typedef enum StdVideoH264MemMgmtControlOp {
- STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_END = 0,
- STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_UNMARK_SHORT_TERM = 1,
- STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_UNMARK_LONG_TERM = 2,
- STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_MARK_LONG_TERM = 3,
- STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_SET_MAX_LONG_TERM_INDEX = 4,
- STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_UNMARK_ALL = 5,
- STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_MARK_CURRENT_AS_LONG_TERM = 6,
- STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_INVALID = 0x7FFFFFFF
-} StdVideoH264MemMgmtControlOp;
-
-typedef enum StdVideoH264CabacInitIdc {
- STD_VIDEO_H264_CABAC_INIT_IDC_0 = 0,
- STD_VIDEO_H264_CABAC_INIT_IDC_1 = 1,
- STD_VIDEO_H264_CABAC_INIT_IDC_2 = 2,
- STD_VIDEO_H264_CABAC_INIT_IDC_INVALID = 0x7FFFFFFF
-} StdVideoH264CabacInitIdc;
-
-typedef enum StdVideoH264DisableDeblockingFilterIdc {
- STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_DISABLED = 0,
- STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_ENABLED = 1,
- STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_PARTIAL = 2,
- STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_INVALID = 0x7FFFFFFF
-} StdVideoH264DisableDeblockingFilterIdc;
-
-typedef enum StdVideoH264SliceType {
- STD_VIDEO_H264_SLICE_TYPE_P = 0,
- STD_VIDEO_H264_SLICE_TYPE_B = 1,
- STD_VIDEO_H264_SLICE_TYPE_I = 2,
- // reserved STD_VIDEO_H264_SLICE_TYPE_SP = 3,
- // reserved STD_VIDEO_H264_SLICE_TYPE_SI = 4,
- STD_VIDEO_H264_SLICE_TYPE_INVALID = 0x7FFFFFFF
-} StdVideoH264SliceType;
-
-typedef enum StdVideoH264PictureType {
- STD_VIDEO_H264_PICTURE_TYPE_P = 0,
- STD_VIDEO_H264_PICTURE_TYPE_B = 1,
- STD_VIDEO_H264_PICTURE_TYPE_I = 2,
- // reserved STD_VIDEO_H264_PICTURE_TYPE_SP = 3,
- // reserved STD_VIDEO_H264_PICTURE_TYPE_SI = 4,
- STD_VIDEO_H264_PICTURE_TYPE_IDR = 5,
- STD_VIDEO_H264_PICTURE_TYPE_INVALID = 0x7FFFFFFF
-} StdVideoH264PictureType;
-
-typedef enum StdVideoH264NonVclNaluType {
- STD_VIDEO_H264_NON_VCL_NALU_TYPE_SPS = 0,
- STD_VIDEO_H264_NON_VCL_NALU_TYPE_PPS = 1,
- STD_VIDEO_H264_NON_VCL_NALU_TYPE_AUD = 2,
- STD_VIDEO_H264_NON_VCL_NALU_TYPE_PREFIX = 3,
- STD_VIDEO_H264_NON_VCL_NALU_TYPE_END_OF_SEQUENCE = 4,
- STD_VIDEO_H264_NON_VCL_NALU_TYPE_END_OF_STREAM = 5,
- STD_VIDEO_H264_NON_VCL_NALU_TYPE_PRECODED = 6,
- STD_VIDEO_H264_NON_VCL_NALU_TYPE_INVALID = 0x7FFFFFFF
-} StdVideoH264NonVclNaluType;
-
-typedef struct StdVideoH264SpsVuiFlags {
- uint32_t aspect_ratio_info_present_flag : 1;
- uint32_t overscan_info_present_flag : 1;
- uint32_t overscan_appropriate_flag : 1;
- uint32_t video_signal_type_present_flag : 1;
- uint32_t video_full_range_flag : 1;
- uint32_t color_description_present_flag : 1;
- uint32_t chroma_loc_info_present_flag : 1;
- uint32_t timing_info_present_flag : 1;
- uint32_t fixed_frame_rate_flag : 1;
- uint32_t bitstream_restriction_flag : 1;
- uint32_t nal_hrd_parameters_present_flag : 1;
- uint32_t vcl_hrd_parameters_present_flag : 1;
-} StdVideoH264SpsVuiFlags;
-
-typedef struct StdVideoH264HrdParameters { // hrd_parameters
- uint8_t cpb_cnt_minus1;
- uint8_t bit_rate_scale;
- uint8_t cpb_size_scale;
- uint32_t bit_rate_value_minus1[STD_VIDEO_H264_CPB_CNT_LIST_SIZE]; // cpb_cnt_minus1 number of valid elements
- uint32_t cpb_size_value_minus1[STD_VIDEO_H264_CPB_CNT_LIST_SIZE]; // cpb_cnt_minus1 number of valid elements
- uint8_t cbr_flag[STD_VIDEO_H264_CPB_CNT_LIST_SIZE]; // cpb_cnt_minus1 number of valid elements
- uint32_t initial_cpb_removal_delay_length_minus1;
- uint32_t cpb_removal_delay_length_minus1;
- uint32_t dpb_output_delay_length_minus1;
- uint32_t time_offset_length;
-} StdVideoH264HrdParameters;
-
-typedef struct StdVideoH264SequenceParameterSetVui {
- StdVideoH264AspectRatioIdc aspect_ratio_idc;
- uint16_t sar_width;
- uint16_t sar_height;
- uint8_t video_format;
- uint8_t color_primaries;
- uint8_t transfer_characteristics;
- uint8_t matrix_coefficients;
- uint32_t num_units_in_tick;
- uint32_t time_scale;
- StdVideoH264HrdParameters* pHrdParameters; // must be a valid ptr to hrd_parameters, if nal_hrd_parameters_present_flag or vcl_hrd_parameters_present_flag are set
- uint8_t max_num_reorder_frames;
- uint8_t max_dec_frame_buffering;
- StdVideoH264SpsVuiFlags flags;
-} StdVideoH264SequenceParameterSetVui;
-
-typedef struct StdVideoH264SpsFlags {
- uint32_t constraint_set0_flag : 1;
- uint32_t constraint_set1_flag : 1;
- uint32_t constraint_set2_flag : 1;
- uint32_t constraint_set3_flag : 1;
- uint32_t constraint_set4_flag : 1;
- uint32_t constraint_set5_flag : 1;
- uint32_t direct_8x8_inference_flag : 1;
- uint32_t mb_adaptive_frame_field_flag : 1;
- uint32_t frame_mbs_only_flag : 1;
- uint32_t delta_pic_order_always_zero_flag : 1;
- uint32_t separate_colour_plane_flag : 1;
- uint32_t gaps_in_frame_num_value_allowed_flag : 1;
- uint32_t qpprime_y_zero_transform_bypass_flag : 1;
- uint32_t frame_cropping_flag : 1;
- uint32_t seq_scaling_matrix_present_flag : 1;
- uint32_t vui_parameters_present_flag : 1;
-} StdVideoH264SpsFlags;
-
-typedef struct StdVideoH264ScalingLists
-{
- // scaling_list_present_mask has one bit for each
- // seq_scaling_list_present_flag[i] for SPS OR
- // pic_scaling_list_present_flag[i] for PPS,
- // bit 0 - 5 are for each entry of ScalingList4x4
- // bit 6 - 7 are for each entry plus 6 for ScalingList8x8
- uint8_t scaling_list_present_mask;
- // use_default_scaling_matrix_mask has one bit for each
- // UseDefaultScalingMatrix4x4Flag[ i ] and
- // UseDefaultScalingMatrix8x8Flag[ i - 6 ] for SPS OR PPS
- // bit 0 - 5 are for each entry of ScalingList4x4
- // bit 6 - 7 are for each entry plus 6 for ScalingList8x8
- uint8_t use_default_scaling_matrix_mask;
- uint8_t ScalingList4x4[STD_VIDEO_H264_SCALING_LIST_4X4_NUM_LISTS][STD_VIDEO_H264_SCALING_LIST_4X4_NUM_ELEMENTS];
- uint8_t ScalingList8x8[STD_VIDEO_H264_SCALING_LIST_8X8_NUM_LISTS][STD_VIDEO_H264_SCALING_LIST_8X8_NUM_ELEMENTS];
-} StdVideoH264ScalingLists;
-
-typedef struct StdVideoH264SequenceParameterSet
-{
- StdVideoH264ProfileIdc profile_idc;
- StdVideoH264Level level_idc;
- uint8_t seq_parameter_set_id;
- StdVideoH264ChromaFormatIdc chroma_format_idc;
- uint8_t bit_depth_luma_minus8;
- uint8_t bit_depth_chroma_minus8;
- uint8_t log2_max_frame_num_minus4;
- StdVideoH264PocType pic_order_cnt_type;
- uint8_t log2_max_pic_order_cnt_lsb_minus4;
- int32_t offset_for_non_ref_pic;
- int32_t offset_for_top_to_bottom_field;
- uint8_t num_ref_frames_in_pic_order_cnt_cycle;
- uint8_t max_num_ref_frames;
- uint32_t pic_width_in_mbs_minus1;
- uint32_t pic_height_in_map_units_minus1;
- uint32_t frame_crop_left_offset;
- uint32_t frame_crop_right_offset;
- uint32_t frame_crop_top_offset;
- uint32_t frame_crop_bottom_offset;
- StdVideoH264SpsFlags flags;
- // pOffsetForRefFrame is a pointer representing the offset_for_ref_frame array with num_ref_frames_in_pic_order_cnt_cycle number of elements
- // If pOffsetForRefFrame has nullptr value, then num_ref_frames_in_pic_order_cnt_cycle must also be "0".
- int32_t* pOffsetForRefFrame;
- StdVideoH264ScalingLists* pScalingLists; // Must be a valid pointer if seq_scaling_matrix_present_flag is set
- StdVideoH264SequenceParameterSetVui* pSequenceParameterSetVui; // Must be a valid pointer if StdVideoH264SpsFlags:vui_parameters_present_flag is set
-} StdVideoH264SequenceParameterSet;
-
-typedef struct StdVideoH264PpsFlags {
- uint32_t transform_8x8_mode_flag : 1;
- uint32_t redundant_pic_cnt_present_flag : 1;
- uint32_t constrained_intra_pred_flag : 1;
- uint32_t deblocking_filter_control_present_flag : 1;
- uint32_t weighted_bipred_idc_flag : 1;
- uint32_t weighted_pred_flag : 1;
- uint32_t pic_order_present_flag : 1;
- uint32_t entropy_coding_mode_flag : 1;
- uint32_t pic_scaling_matrix_present_flag : 1;
-} StdVideoH264PpsFlags;
-
-typedef struct StdVideoH264PictureParameterSet
-{
- uint8_t seq_parameter_set_id;
- uint8_t pic_parameter_set_id;
- uint8_t num_ref_idx_l0_default_active_minus1;
- uint8_t num_ref_idx_l1_default_active_minus1;
- StdVideoH264WeightedBipredIdc weighted_bipred_idc;
- int8_t pic_init_qp_minus26;
- int8_t pic_init_qs_minus26;
- int8_t chroma_qp_index_offset;
- int8_t second_chroma_qp_index_offset;
- StdVideoH264PpsFlags flags;
- StdVideoH264ScalingLists* pScalingLists; // Must be a valid pointer if StdVideoH264PpsFlags::pic_scaling_matrix_present_flag is set.
-} StdVideoH264PictureParameterSet;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // VULKAN_VIDEO_CODEC_H264STD_H_
diff --git a/codegen/vulkan/include/vk_video/vulkan_video_codec_h264std_decode.h b/codegen/vulkan/include/vk_video/vulkan_video_codec_h264std_decode.h
deleted file mode 100644
index cb0d1df5..00000000
--- a/codegen/vulkan/include/vk_video/vulkan_video_codec_h264std_decode.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
-** Copyright (c) 2019-2020 The Khronos Group Inc.
-**
-** SPDX-License-Identifier: Apache-2.0
-*/
-
-#ifndef VULKAN_VIDEO_CODEC_H264STD_DECODE_H_
-#define VULKAN_VIDEO_CODEC_H264STD_DECODE_H_ 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "vk_video/vulkan_video_codec_h264std.h"
-
-// *************************************************
-// Video H.264 Decode related parameters:
-// *************************************************
-
-#define STD_VIDEO_DECODE_H264_MVC_REF_LIST_SIZE 15
-
-typedef enum StdVideoDecodeH264FieldOrderCount {
- STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_TOP = 0,
- STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_BOTTOM = 1,
- STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_LIST_SIZE = 2,
- STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_INVALID = 0x7FFFFFFF
-} StdVideoDecodeH264FieldOrderCnt;
-
-typedef struct StdVideoDecodeH264PictureInfoFlags {
- uint32_t field_pic_flag : 1; // Is field picture
- uint32_t is_intra : 1; // Is intra picture
- uint32_t IdrPicFlag : 1; // instantaneous decoding refresh (IDR) picture
- uint32_t bottom_field_flag : 1; // bottom (true) or top (false) field if field_pic_flag is set.
- uint32_t is_reference : 1; // This only applies to picture info, and not to the DPB lists.
- uint32_t complementary_field_pair : 1; // complementary field pair, complementary non-reference field pair, complementary reference field pair
-} StdVideoDecodeH264PictureInfoFlags;
-
-typedef struct StdVideoDecodeH264PictureInfo {
- uint8_t seq_parameter_set_id; // Selecting SPS from the Picture Parameters
- uint8_t pic_parameter_set_id; // Selecting PPS from the Picture Parameters and the SPS
- uint16_t reserved; // for structure members 32-bit packing/alignment
- uint16_t frame_num; // 7.4.3 Slice header semantics
- uint16_t idr_pic_id; // 7.4.3 Slice header semantics
- // PicOrderCnt is based on TopFieldOrderCnt and BottomFieldOrderCnt. See 8.2.1 Decoding process for picture order count type 0 - 2
- int32_t PicOrderCnt[STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_LIST_SIZE]; // TopFieldOrderCnt and BottomFieldOrderCnt fields.
- StdVideoDecodeH264PictureInfoFlags flags;
-} StdVideoDecodeH264PictureInfo;
-
-typedef struct StdVideoDecodeH264ReferenceInfoFlags {
- uint32_t top_field_flag : 1; // Reference is used for top field reference.
- uint32_t bottom_field_flag : 1; // Reference is used for bottom field reference.
- uint32_t is_long_term : 1; // this is a long term reference
- uint32_t is_non_existing : 1; // Must be handled in accordance with 8.2.5.2: Decoding process for gaps in frame_num
-} StdVideoDecodeH264ReferenceInfoFlags;
-
-typedef struct StdVideoDecodeH264ReferenceInfo {
- // FrameNum = is_long_term ? long_term_frame_idx : frame_num
- uint16_t FrameNum; // 7.4.3.3 Decoded reference picture marking semantics
- uint16_t reserved; // for structure members 32-bit packing/alignment
- int32_t PicOrderCnt[2]; // TopFieldOrderCnt and BottomFieldOrderCnt fields.
- StdVideoDecodeH264ReferenceInfoFlags flags;
-} StdVideoDecodeH264ReferenceInfo;
-
-typedef struct StdVideoDecodeH264MvcElementFlags {
- uint32_t non_idr : 1;
- uint32_t anchor_pic : 1;
- uint32_t inter_view : 1;
-} StdVideoDecodeH264MvcElementFlags;
-
-typedef struct StdVideoDecodeH264MvcElement {
- StdVideoDecodeH264MvcElementFlags flags;
- uint16_t viewOrderIndex;
- uint16_t viewId;
- uint16_t temporalId; // move out?
- uint16_t priorityId; // move out?
- uint16_t numOfAnchorRefsInL0;
- uint16_t viewIdOfAnchorRefsInL0[STD_VIDEO_DECODE_H264_MVC_REF_LIST_SIZE];
- uint16_t numOfAnchorRefsInL1;
- uint16_t viewIdOfAnchorRefsInL1[STD_VIDEO_DECODE_H264_MVC_REF_LIST_SIZE];
- uint16_t numOfNonAnchorRefsInL0;
- uint16_t viewIdOfNonAnchorRefsInL0[STD_VIDEO_DECODE_H264_MVC_REF_LIST_SIZE];
- uint16_t numOfNonAnchorRefsInL1;
- uint16_t viewIdOfNonAnchorRefsInL1[STD_VIDEO_DECODE_H264_MVC_REF_LIST_SIZE];
-} StdVideoDecodeH264MvcElement;
-
-typedef struct StdVideoDecodeH264Mvc {
- uint32_t viewId0;
- uint32_t mvcElementCount;
- StdVideoDecodeH264MvcElement* pMvcElements;
-} StdVideoDecodeH264Mvc;
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // VULKAN_VIDEO_CODEC_H264STD_DECODE_H_
diff --git a/codegen/vulkan/include/vk_video/vulkan_video_codec_h264std_encode.h b/codegen/vulkan/include/vk_video/vulkan_video_codec_h264std_encode.h
deleted file mode 100644
index f3a0d3ad..00000000
--- a/codegen/vulkan/include/vk_video/vulkan_video_codec_h264std_encode.h
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
-** Copyright (c) 2019-2021 The Khronos Group Inc.
-**
-** SPDX-License-Identifier: Apache-2.0
-*/
-
-#ifndef VULKAN_VIDEO_CODEC_H264STD_ENCODE_H_
-#define VULKAN_VIDEO_CODEC_H264STD_ENCODE_H_ 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "vk_video/vulkan_video_codec_h264std.h"
-
-// *************************************************
-// Video H.264 Encode related parameters:
-// *************************************************
-
-typedef struct StdVideoEncodeH264SliceHeaderFlags {
- uint32_t idr_flag : 1;
- uint32_t is_reference_flag : 1;
- uint32_t num_ref_idx_active_override_flag : 1;
- uint32_t no_output_of_prior_pics_flag : 1;
- uint32_t long_term_reference_flag : 1;
- uint32_t adaptive_ref_pic_marking_mode_flag : 1;
- uint32_t no_prior_references_available_flag : 1;
-} StdVideoEncodeH264SliceHeaderFlags;
-
-typedef struct StdVideoEncodeH264PictureInfoFlags {
- uint32_t idr_flag : 1;
- uint32_t is_reference_flag : 1;
- uint32_t long_term_reference_flag : 1;
-} StdVideoEncodeH264PictureInfoFlags;
-
-typedef struct StdVideoEncodeH264RefMgmtFlags {
- uint32_t ref_pic_list_modification_l0_flag : 1;
- uint32_t ref_pic_list_modification_l1_flag : 1;
-} StdVideoEncodeH264RefMgmtFlags;
-
-typedef struct StdVideoEncodeH264RefListModEntry {
- StdVideoH264ModificationOfPicNumsIdc modification_of_pic_nums_idc;
- uint16_t abs_diff_pic_num_minus1;
- uint16_t long_term_pic_num;
-} StdVideoEncodeH264RefListModEntry;
-
-typedef struct StdVideoEncodeH264RefPicMarkingEntry {
- StdVideoH264MemMgmtControlOp operation;
- uint16_t difference_of_pic_nums_minus1;
- uint16_t long_term_pic_num;
- uint16_t long_term_frame_idx;
- uint16_t max_long_term_frame_idx_plus1;
-} StdVideoEncodeH264RefPicMarkingEntry;
-
-typedef struct StdVideoEncodeH264RefMemMgmtCtrlOperations {
- StdVideoEncodeH264RefMgmtFlags flags;
- uint8_t refList0ModOpCount;
- StdVideoEncodeH264RefListModEntry* pRefList0ModOperations;
- uint8_t refList1ModOpCount;
- StdVideoEncodeH264RefListModEntry* pRefList1ModOperations;
- uint8_t refPicMarkingOpCount;
- StdVideoEncodeH264RefPicMarkingEntry* pRefPicMarkingOperations;
-} StdVideoEncodeH264RefMemMgmtCtrlOperations;
-
-typedef struct StdVideoEncodeH264PictureInfo {
- StdVideoEncodeH264PictureInfoFlags flags;
- StdVideoH264PictureType pictureType;
- uint32_t frameNum;
- uint32_t pictureOrderCount;
- uint16_t long_term_pic_num;
- uint16_t long_term_frame_idx;
-} StdVideoEncodeH264PictureInfo;
-
-typedef struct StdVideoEncodeH264SliceHeader {
- StdVideoEncodeH264SliceHeaderFlags flags;
- StdVideoH264SliceType slice_type;
- uint8_t seq_parameter_set_id;
- uint8_t pic_parameter_set_id;
- uint16_t idr_pic_id;
- uint8_t num_ref_idx_l0_active_minus1;
- uint8_t num_ref_idx_l1_active_minus1;
- StdVideoH264CabacInitIdc cabac_init_idc;
- StdVideoH264DisableDeblockingFilterIdc disable_deblocking_filter_idc;
- int8_t slice_alpha_c0_offset_div2;
- int8_t slice_beta_offset_div2;
- StdVideoEncodeH264RefMemMgmtCtrlOperations* pMemMgmtCtrlOperations;
-} StdVideoEncodeH264SliceHeader;
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // VULKAN_VIDEO_CODEC_H264STD_ENCODE_H_
diff --git a/codegen/vulkan/include/vk_video/vulkan_video_codec_h265std.h b/codegen/vulkan/include/vk_video/vulkan_video_codec_h265std.h
deleted file mode 100644
index 179c6b70..00000000
--- a/codegen/vulkan/include/vk_video/vulkan_video_codec_h265std.h
+++ /dev/null
@@ -1,371 +0,0 @@
-/*
-** Copyright (c) 2019-2021 The Khronos Group Inc.
-**
-** SPDX-License-Identifier: Apache-2.0
-*/
-
-#ifndef VULKAN_VIDEO_CODEC_H265STD_H_
-#define VULKAN_VIDEO_CODEC_H265STD_H_ 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "vk_video/vulkan_video_codecs_common.h"
-
-// Vulkan 0.5 version number WIP
-#define VK_STD_VULKAN_VIDEO_CODEC_H265_API_VERSION_0_9_5 VK_MAKE_VIDEO_STD_VERSION(0, 9, 5) // Patch version should always be set to 0
-
-// Format must be in the form XX.XX where the first two digits are the major and the second two, the minor.
-#define VK_STD_VULKAN_VIDEO_CODEC_H265_SPEC_VERSION VK_STD_VULKAN_VIDEO_CODEC_H265_API_VERSION_0_9_5
-#define VK_STD_VULKAN_VIDEO_CODEC_H265_EXTENSION_NAME "VK_STD_vulkan_video_codec_h265"
-
-#define STD_VIDEO_H265_CPB_CNT_LIST_SIZE 32
-#define STD_VIDEO_H265_SUBLAYERS_MINUS1_LIST_SIZE 7
-#define STD_VIDEO_H265_SCALING_LIST_4X4_NUM_LISTS 6
-#define STD_VIDEO_H265_SCALING_LIST_4X4_NUM_ELEMENTS 16
-#define STD_VIDEO_H265_SCALING_LIST_8X8_NUM_LISTS 6
-#define STD_VIDEO_H265_SCALING_LIST_8X8_NUM_ELEMENTS 64
-#define STD_VIDEO_H265_SCALING_LIST_16X16_NUM_LISTS 6
-#define STD_VIDEO_H265_SCALING_LIST_16X16_NUM_ELEMENTS 64
-#define STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS 2
-#define STD_VIDEO_H265_SCALING_LIST_32X32_NUM_ELEMENTS 64
-#define STD_VIDEO_H265_CHROMA_QP_OFFSET_LIST_SIZE 6
-#define STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_COLS_LIST_SIZE 19
-#define STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_ROWS_LIST_SIZE 21
-#define STD_VIDEO_H265_PREDICTOR_PALETTE_COMPONENTS_LIST_SIZE 3
-#define STD_VIDEO_H265_PREDICTOR_PALETTE_COMP_ENTRIES_LIST_SIZE 128
-
-typedef enum StdVideoH265ChromaFormatIdc {
- STD_VIDEO_H265_CHROMA_FORMAT_IDC_MONOCHROME = 0,
- STD_VIDEO_H265_CHROMA_FORMAT_IDC_420 = 1,
- STD_VIDEO_H265_CHROMA_FORMAT_IDC_422 = 2,
- STD_VIDEO_H265_CHROMA_FORMAT_IDC_444 = 3,
- STD_VIDEO_H265_CHROMA_FORMAT_IDC_INVALID = 0x7FFFFFFF
-} StdVideoH265ChromaFormatIdc;
-
-typedef enum StdVideoH265ProfileIdc {
- STD_VIDEO_H265_PROFILE_IDC_MAIN = 1,
- STD_VIDEO_H265_PROFILE_IDC_MAIN_10 = 2,
- STD_VIDEO_H265_PROFILE_IDC_MAIN_STILL_PICTURE = 3,
- STD_VIDEO_H265_PROFILE_IDC_FORMAT_RANGE_EXTENSIONS = 4,
- STD_VIDEO_H265_PROFILE_IDC_SCC_EXTENSIONS = 9,
- STD_VIDEO_H265_PROFILE_IDC_INVALID = 0x7FFFFFFF
-} StdVideoH265ProfileIdc;
-
-typedef enum StdVideoH265Level {
- STD_VIDEO_H265_LEVEL_1_0 = 0,
- STD_VIDEO_H265_LEVEL_2_0 = 1,
- STD_VIDEO_H265_LEVEL_2_1 = 2,
- STD_VIDEO_H265_LEVEL_3_0 = 3,
- STD_VIDEO_H265_LEVEL_3_1 = 4,
- STD_VIDEO_H265_LEVEL_4_0 = 5,
- STD_VIDEO_H265_LEVEL_4_1 = 6,
- STD_VIDEO_H265_LEVEL_5_0 = 7,
- STD_VIDEO_H265_LEVEL_5_1 = 8,
- STD_VIDEO_H265_LEVEL_5_2 = 9,
- STD_VIDEO_H265_LEVEL_6_0 = 10,
- STD_VIDEO_H265_LEVEL_6_1 = 11,
- STD_VIDEO_H265_LEVEL_6_2 = 12,
- STD_VIDEO_H265_LEVEL_INVALID = 0x7FFFFFFF
-} StdVideoH265Level;
-
-typedef enum StdVideoH265SliceType {
- STD_VIDEO_H265_SLICE_TYPE_B = 0,
- STD_VIDEO_H265_SLICE_TYPE_P = 1,
- STD_VIDEO_H265_SLICE_TYPE_I = 2,
- STD_VIDEO_H265_SLICE_TYPE_INVALID = 0x7FFFFFFF
-} StdVideoH265SliceType;
-
-typedef enum StdVideoH265PictureType {
- STD_VIDEO_H265_PICTURE_TYPE_P = 0,
- STD_VIDEO_H265_PICTURE_TYPE_B = 1,
- STD_VIDEO_H265_PICTURE_TYPE_I = 2,
- STD_VIDEO_H265_PICTURE_TYPE_IDR = 3,
- STD_VIDEO_H265_PICTURE_TYPE_INVALID = 0x7FFFFFFF
-} StdVideoH265PictureType;
-
-typedef struct StdVideoH265DecPicBufMgr
-{
- uint32_t max_latency_increase_plus1[STD_VIDEO_H265_SUBLAYERS_MINUS1_LIST_SIZE];
- uint8_t max_dec_pic_buffering_minus1[STD_VIDEO_H265_SUBLAYERS_MINUS1_LIST_SIZE];
- uint8_t max_num_reorder_pics[STD_VIDEO_H265_SUBLAYERS_MINUS1_LIST_SIZE];
-} StdVideoH265DecPicBufMgr;
-
-typedef struct StdVideoH265SubLayerHrdParameters { // sub_layer_hrd_parameters
- uint32_t bit_rate_value_minus1[STD_VIDEO_H265_CPB_CNT_LIST_SIZE];
- uint32_t cpb_size_value_minus1[STD_VIDEO_H265_CPB_CNT_LIST_SIZE];
- uint32_t cpb_size_du_value_minus1[STD_VIDEO_H265_CPB_CNT_LIST_SIZE];
- uint32_t bit_rate_du_value_minus1[STD_VIDEO_H265_CPB_CNT_LIST_SIZE];
- uint32_t cbr_flag; // each bit represents a range of CpbCounts (bit 0 - cpb_cnt_minus1) per sub-layer
-} StdVideoH265SubLayerHrdParameters;
-
-typedef struct StdVideoH265HrdFlags {
- uint32_t nal_hrd_parameters_present_flag : 1;
- uint32_t vcl_hrd_parameters_present_flag : 1;
- uint32_t sub_pic_hrd_params_present_flag : 1;
- uint32_t sub_pic_cpb_params_in_pic_timing_sei_flag : 1;
- uint32_t fixed_pic_rate_general_flag : 8; // each bit represents a sublayer, bit 0 - vps_max_sub_layers_minus1
- uint32_t fixed_pic_rate_within_cvs_flag : 8; // each bit represents a sublayer, bit 0 - vps_max_sub_layers_minus1
- uint32_t low_delay_hrd_flag : 8; // each bit represents a sublayer, bit 0 - vps_max_sub_layers_minus1
-} StdVideoH265HrdFlags;
-
-typedef struct StdVideoH265HrdParameters {
- uint8_t tick_divisor_minus2;
- uint8_t du_cpb_removal_delay_increment_length_minus1;
- uint8_t dpb_output_delay_du_length_minus1;
- uint8_t bit_rate_scale;
- uint8_t cpb_size_scale;
- uint8_t cpb_size_du_scale;
- uint8_t initial_cpb_removal_delay_length_minus1;
- uint8_t au_cpb_removal_delay_length_minus1;
- uint8_t dpb_output_delay_length_minus1;
- uint8_t cpb_cnt_minus1[STD_VIDEO_H265_SUBLAYERS_MINUS1_LIST_SIZE];
- uint16_t elemental_duration_in_tc_minus1[STD_VIDEO_H265_SUBLAYERS_MINUS1_LIST_SIZE];
- StdVideoH265SubLayerHrdParameters* pSubLayerHrdParametersNal[STD_VIDEO_H265_SUBLAYERS_MINUS1_LIST_SIZE]; // NAL per layer ptr to sub_layer_hrd_parameters
- StdVideoH265SubLayerHrdParameters* pSubLayerHrdParametersVcl[STD_VIDEO_H265_SUBLAYERS_MINUS1_LIST_SIZE]; // VCL per layer ptr to sub_layer_hrd_parameters
- StdVideoH265HrdFlags flags;
-} StdVideoH265HrdParameters;
-
-typedef struct StdVideoH265VpsFlags {
- uint32_t vps_temporal_id_nesting_flag : 1;
- uint32_t vps_sub_layer_ordering_info_present_flag : 1;
- uint32_t vps_timing_info_present_flag : 1;
- uint32_t vps_poc_proportional_to_timing_flag : 1;
-} StdVideoH265VpsFlags;
-
-typedef struct StdVideoH265VideoParameterSet
-{
- uint8_t vps_video_parameter_set_id;
- uint8_t vps_max_sub_layers_minus1;
- uint32_t vps_num_units_in_tick;
- uint32_t vps_time_scale;
- uint32_t vps_num_ticks_poc_diff_one_minus1;
- StdVideoH265DecPicBufMgr* pDecPicBufMgr;
- StdVideoH265HrdParameters* pHrdParameters;
- StdVideoH265VpsFlags flags;
-} StdVideoH265VideoParameterSet;
-
-typedef struct StdVideoH265ScalingLists
-{
- uint8_t ScalingList4x4[STD_VIDEO_H265_SCALING_LIST_4X4_NUM_LISTS][STD_VIDEO_H265_SCALING_LIST_4X4_NUM_ELEMENTS]; // ScalingList[ 0 ][ MatrixID ][ i ] (sizeID = 0)
- uint8_t ScalingList8x8[STD_VIDEO_H265_SCALING_LIST_8X8_NUM_LISTS][STD_VIDEO_H265_SCALING_LIST_8X8_NUM_ELEMENTS]; // ScalingList[ 1 ][ MatrixID ][ i ] (sizeID = 1)
- uint8_t ScalingList16x16[STD_VIDEO_H265_SCALING_LIST_16X16_NUM_LISTS][STD_VIDEO_H265_SCALING_LIST_16X16_NUM_ELEMENTS]; // ScalingList[ 2 ][ MatrixID ][ i ] (sizeID = 2)
- uint8_t ScalingList32x32[STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS][STD_VIDEO_H265_SCALING_LIST_32X32_NUM_ELEMENTS]; // ScalingList[ 3 ][ MatrixID ][ i ] (sizeID = 3)
- uint8_t ScalingListDCCoef16x16[STD_VIDEO_H265_SCALING_LIST_16X16_NUM_LISTS]; // scaling_list_dc_coef_minus8[ sizeID - 2 ][ matrixID ] + 8, sizeID = 2
- uint8_t ScalingListDCCoef32x32[STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS]; // scaling_list_dc_coef_minus8[ sizeID - 2 ][ matrixID ] + 8. sizeID = 3
-} StdVideoH265ScalingLists;
-
-typedef struct StdVideoH265SpsVuiFlags {
- uint32_t aspect_ratio_info_present_flag : 1;
- uint32_t overscan_info_present_flag : 1;
- uint32_t overscan_appropriate_flag : 1;
- uint32_t video_signal_type_present_flag : 1;
- uint32_t video_full_range_flag : 1;
- uint32_t colour_description_present_flag : 1;
- uint32_t chroma_loc_info_present_flag : 1;
- uint32_t neutral_chroma_indication_flag : 1;
- uint32_t field_seq_flag : 1;
- uint32_t frame_field_info_present_flag : 1;
- uint32_t default_display_window_flag : 1;
- uint32_t vui_timing_info_present_flag : 1;
- uint32_t vui_poc_proportional_to_timing_flag : 1;
- uint32_t vui_hrd_parameters_present_flag : 1;
- uint32_t bitstream_restriction_flag : 1;
- uint32_t tiles_fixed_structure_flag : 1;
- uint32_t motion_vectors_over_pic_boundaries_flag : 1;
- uint32_t restricted_ref_pic_lists_flag : 1;
-} StdVideoH265SpsVuiFlags;
-
-typedef struct StdVideoH265SequenceParameterSetVui {
- uint8_t aspect_ratio_idc;
- uint16_t sar_width;
- uint16_t sar_height;
- uint8_t video_format;
- uint8_t colour_primaries;
- uint8_t transfer_characteristics;
- uint8_t matrix_coeffs;
- uint8_t chroma_sample_loc_type_top_field;
- uint8_t chroma_sample_loc_type_bottom_field;
- uint16_t def_disp_win_left_offset;
- uint16_t def_disp_win_right_offset;
- uint16_t def_disp_win_top_offset;
- uint16_t def_disp_win_bottom_offset;
- uint32_t vui_num_units_in_tick;
- uint32_t vui_time_scale;
- uint32_t vui_num_ticks_poc_diff_one_minus1;
- StdVideoH265HrdParameters* pHrdParameters;
- uint16_t min_spatial_segmentation_idc;
- uint8_t max_bytes_per_pic_denom;
- uint8_t max_bits_per_min_cu_denom;
- uint8_t log2_max_mv_length_horizontal;
- uint8_t log2_max_mv_length_vertical;
- StdVideoH265SpsVuiFlags flags;
-} StdVideoH265SequenceParameterSetVui;
-
-typedef struct StdVideoH265PredictorPaletteEntries
-{
- uint16_t PredictorPaletteEntries[STD_VIDEO_H265_PREDICTOR_PALETTE_COMPONENTS_LIST_SIZE][STD_VIDEO_H265_PREDICTOR_PALETTE_COMP_ENTRIES_LIST_SIZE];
-} StdVideoH265PredictorPaletteEntries;
-
-typedef struct StdVideoH265SpsFlags {
- uint32_t sps_temporal_id_nesting_flag : 1;
- uint32_t separate_colour_plane_flag : 1;
- uint32_t scaling_list_enabled_flag : 1;
- uint32_t sps_scaling_list_data_present_flag : 1;
- uint32_t amp_enabled_flag : 1;
- uint32_t sample_adaptive_offset_enabled_flag : 1;
- uint32_t pcm_enabled_flag : 1;
- uint32_t pcm_loop_filter_disabled_flag : 1;
- uint32_t long_term_ref_pics_present_flag : 1;
- uint32_t sps_temporal_mvp_enabled_flag : 1;
- uint32_t strong_intra_smoothing_enabled_flag : 1;
- uint32_t vui_parameters_present_flag : 1;
- uint32_t sps_extension_present_flag : 1;
- uint32_t sps_range_extension_flag : 1;
-
- // extension SPS flags, valid when STD_VIDEO_H265_PROFILE_IDC_FORMAT_RANGE_EXTENSIONS is set
- uint32_t transform_skip_rotation_enabled_flag : 1;
- uint32_t transform_skip_context_enabled_flag : 1;
- uint32_t implicit_rdpcm_enabled_flag : 1;
- uint32_t explicit_rdpcm_enabled_flag : 1;
- uint32_t extended_precision_processing_flag : 1;
- uint32_t intra_smoothing_disabled_flag : 1;
- uint32_t high_precision_offsets_enabled_flag : 1;
- uint32_t persistent_rice_adaptation_enabled_flag : 1;
- uint32_t cabac_bypass_alignment_enabled_flag : 1;
-
- // extension SPS flags, valid when STD_VIDEO_H265_PROFILE_IDC_SCC_EXTENSIONS is set
- uint32_t sps_curr_pic_ref_enabled_flag : 1;
- uint32_t palette_mode_enabled_flag : 1;
- uint32_t sps_palette_predictor_initializer_present_flag : 1;
- uint32_t intra_boundary_filtering_disabled_flag : 1;
-} StdVideoH265SpsFlags;
-
-typedef struct StdVideoH265SequenceParameterSet
-{
- StdVideoH265ProfileIdc profile_idc;
- StdVideoH265Level level_idc;
- uint32_t pic_width_in_luma_samples;
- uint32_t pic_height_in_luma_samples;
- uint8_t sps_video_parameter_set_id;
- uint8_t sps_max_sub_layers_minus1;
- uint8_t sps_seq_parameter_set_id;
- uint8_t chroma_format_idc;
- uint8_t bit_depth_luma_minus8;
- uint8_t bit_depth_chroma_minus8;
- uint8_t log2_max_pic_order_cnt_lsb_minus4;
- uint8_t sps_max_dec_pic_buffering_minus1;
- uint8_t log2_min_luma_coding_block_size_minus3;
- uint8_t log2_diff_max_min_luma_coding_block_size;
- uint8_t log2_min_luma_transform_block_size_minus2;
- uint8_t log2_diff_max_min_luma_transform_block_size;
- uint8_t max_transform_hierarchy_depth_inter;
- uint8_t max_transform_hierarchy_depth_intra;
- uint8_t num_short_term_ref_pic_sets;
- uint8_t num_long_term_ref_pics_sps;
- uint8_t pcm_sample_bit_depth_luma_minus1;
- uint8_t pcm_sample_bit_depth_chroma_minus1;
- uint8_t log2_min_pcm_luma_coding_block_size_minus3;
- uint8_t log2_diff_max_min_pcm_luma_coding_block_size;
- uint32_t conf_win_left_offset;
- uint32_t conf_win_right_offset;
- uint32_t conf_win_top_offset;
- uint32_t conf_win_bottom_offset;
- StdVideoH265DecPicBufMgr* pDecPicBufMgr;
- StdVideoH265SpsFlags flags;
- StdVideoH265ScalingLists* pScalingLists; // Must be a valid pointer if sps_scaling_list_data_present_flag is set
- StdVideoH265SequenceParameterSetVui* pSequenceParameterSetVui; // Must be a valid pointer if StdVideoH265SpsFlags:vui_parameters_present_flag is set palette_max_size;
-
- // extension SPS flags, valid when STD_VIDEO_H265_PROFILE_IDC_SCC_EXTENSIONS is set
- uint8_t palette_max_size;
- uint8_t delta_palette_max_predictor_size;
- uint8_t motion_vector_resolution_control_idc;
- uint8_t sps_num_palette_predictor_initializer_minus1;
- StdVideoH265PredictorPaletteEntries* pPredictorPaletteEntries; // Must be a valid pointer if sps_palette_predictor_initializer_present_flag is set
-} StdVideoH265SequenceParameterSet;
-
-
-typedef struct StdVideoH265PpsFlags {
- uint32_t dependent_slice_segments_enabled_flag : 1;
- uint32_t output_flag_present_flag : 1;
- uint32_t sign_data_hiding_enabled_flag : 1;
- uint32_t cabac_init_present_flag : 1;
- uint32_t constrained_intra_pred_flag : 1;
- uint32_t transform_skip_enabled_flag : 1;
- uint32_t cu_qp_delta_enabled_flag : 1;
- uint32_t pps_slice_chroma_qp_offsets_present_flag : 1;
- uint32_t weighted_pred_flag : 1;
- uint32_t weighted_bipred_flag : 1;
- uint32_t transquant_bypass_enabled_flag : 1;
- uint32_t tiles_enabled_flag : 1;
- uint32_t entropy_coding_sync_enabled_flag : 1;
- uint32_t uniform_spacing_flag : 1;
- uint32_t loop_filter_across_tiles_enabled_flag : 1;
- uint32_t pps_loop_filter_across_slices_enabled_flag : 1;
- uint32_t deblocking_filter_control_present_flag : 1;
- uint32_t deblocking_filter_override_enabled_flag : 1;
- uint32_t pps_deblocking_filter_disabled_flag : 1;
- uint32_t pps_scaling_list_data_present_flag : 1;
- uint32_t lists_modification_present_flag : 1;
- uint32_t slice_segment_header_extension_present_flag : 1;
- uint32_t pps_extension_present_flag : 1;
-
- // extension PPS flags, valid when STD_VIDEO_H265_PROFILE_IDC_FORMAT_RANGE_EXTENSIONS is set
- uint32_t cross_component_prediction_enabled_flag : 1;
- uint32_t chroma_qp_offset_list_enabled_flag : 1;
-
- // extension PPS flags, valid when STD_VIDEO_H265_PROFILE_IDC_SCC_EXTENSIONS is set
- uint32_t pps_curr_pic_ref_enabled_flag : 1;
- uint32_t residual_adaptive_colour_transform_enabled_flag : 1;
- uint32_t pps_slice_act_qp_offsets_present_flag : 1;
- uint32_t pps_palette_predictor_initializer_present_flag : 1;
- uint32_t monochrome_palette_flag : 1;
- uint32_t pps_range_extension_flag : 1;
-} StdVideoH265PpsFlags;
-
-typedef struct StdVideoH265PictureParameterSet
-{
- uint8_t pps_pic_parameter_set_id;
- uint8_t pps_seq_parameter_set_id;
- uint8_t num_extra_slice_header_bits;
- uint8_t num_ref_idx_l0_default_active_minus1;
- uint8_t num_ref_idx_l1_default_active_minus1;
- int8_t init_qp_minus26;
- uint8_t diff_cu_qp_delta_depth;
- int8_t pps_cb_qp_offset;
- int8_t pps_cr_qp_offset;
- uint8_t num_tile_columns_minus1;
- uint8_t num_tile_rows_minus1;
- uint16_t column_width_minus1[STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_COLS_LIST_SIZE];
- uint16_t row_height_minus1[STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_ROWS_LIST_SIZE];
- int8_t pps_beta_offset_div2;
- int8_t pps_tc_offset_div2;
- uint8_t log2_parallel_merge_level_minus2;
- StdVideoH265PpsFlags flags;
- StdVideoH265ScalingLists* pScalingLists; // Must be a valid pointer if pps_scaling_list_data_present_flag is set
-
- // extension PPS, valid when STD_VIDEO_H265_PROFILE_IDC_FORMAT_RANGE_EXTENSIONS is set
- uint8_t log2_max_transform_skip_block_size_minus2;
- uint8_t diff_cu_chroma_qp_offset_depth;
- uint8_t chroma_qp_offset_list_len_minus1;
- int8_t cb_qp_offset_list[STD_VIDEO_H265_CHROMA_QP_OFFSET_LIST_SIZE];
- int8_t cr_qp_offset_list[STD_VIDEO_H265_CHROMA_QP_OFFSET_LIST_SIZE];
- uint8_t log2_sao_offset_scale_luma;
- uint8_t log2_sao_offset_scale_chroma;
-
- // extension PPS, valid when STD_VIDEO_H265_PROFILE_IDC_SCC_EXTENSIONS is set
- int8_t pps_act_y_qp_offset_plus5;
- int8_t pps_act_cb_qp_offset_plus5;
- int8_t pps_act_cr_qp_offset_plus5;
- uint8_t pps_num_palette_predictor_initializer;
- uint8_t luma_bit_depth_entry_minus8;
- uint8_t chroma_bit_depth_entry_minus8;
- StdVideoH265PredictorPaletteEntries* pPredictorPaletteEntries; // Must be a valid pointer if pps_palette_predictor_initializer_present_flag is set
-} StdVideoH265PictureParameterSet;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // VULKAN_VIDEO_CODEC_H265STD_H_
diff --git a/codegen/vulkan/include/vk_video/vulkan_video_codec_h265std_decode.h b/codegen/vulkan/include/vk_video/vulkan_video_codec_h265std_decode.h
deleted file mode 100644
index a1efa055..00000000
--- a/codegen/vulkan/include/vk_video/vulkan_video_codec_h265std_decode.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
-** Copyright (c) 2019-2021 The Khronos Group Inc.
-**
-** SPDX-License-Identifier: Apache-2.0
-*/
-
-#ifndef VULKAN_VIDEO_CODEC_H265STD_DECODE_H_
-#define VULKAN_VIDEO_CODEC_H265STD_DECODE_H_ 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "vk_video/vulkan_video_codec_h265std.h"
-
-// *************************************************
-// Video h265 Decode related parameters:
-// *************************************************
-
-#define STD_VIDEO_DECODE_H265_REF_PIC_SET_LIST_SIZE 8
-
-typedef struct StdVideoDecodeH265PictureInfoFlags {
- uint32_t IrapPicFlag : 1;
- uint32_t IdrPicFlag : 1;
- uint32_t IsReference : 1;
- uint32_t short_term_ref_pic_set_sps_flag : 1;
-} StdVideoDecodeH265PictureInfoFlags;
-
-typedef struct StdVideoDecodeH265PictureInfo {
- uint8_t vps_video_parameter_set_id;
- uint8_t sps_seq_parameter_set_id;
- uint8_t pps_pic_parameter_set_id;
- uint8_t num_short_term_ref_pic_sets;
- int32_t PicOrderCntVal;
- uint16_t NumBitsForSTRefPicSetInSlice; // number of bits used in st_ref_pic_set()
- //when short_term_ref_pic_set_sps_flag is 0; otherwise set to 0.
- uint8_t NumDeltaPocsOfRefRpsIdx; // NumDeltaPocs[ RefRpsIdx ] when short_term_ref_pic_set_sps_flag = 1, otherwise 0
- uint8_t RefPicSetStCurrBefore[STD_VIDEO_DECODE_H265_REF_PIC_SET_LIST_SIZE]; // slotIndex as used in
- // VkVideoReferenceSlotKHR structures representing
- //pReferenceSlots in VkVideoDecodeInfoKHR, 0xff for invalid slotIndex
- uint8_t RefPicSetStCurrAfter[STD_VIDEO_DECODE_H265_REF_PIC_SET_LIST_SIZE]; // slotIndex as used in
- // VkVideoReferenceSlotKHR structures representing
- //pReferenceSlots in VkVideoDecodeInfoKHR, 0xff for invalid slotIndex
- uint8_t RefPicSetLtCurr[STD_VIDEO_DECODE_H265_REF_PIC_SET_LIST_SIZE]; // slotIndex as used in
- // VkVideoReferenceSlotKHR structures representing
- //pReferenceSlots in VkVideoDecodeInfoKHR, 0xff for invalid slotIndex
- StdVideoDecodeH265PictureInfoFlags flags;
-} StdVideoDecodeH265PictureInfo;
-
-typedef struct StdVideoDecodeH265ReferenceInfoFlags {
- uint32_t is_long_term : 1;
- uint32_t is_non_existing : 1;
-} StdVideoDecodeH265ReferenceInfoFlags;
-
-typedef struct StdVideoDecodeH265ReferenceInfo {
- int32_t PicOrderCntVal;
- StdVideoDecodeH265ReferenceInfoFlags flags;
-} StdVideoDecodeH265ReferenceInfo;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // VULKAN_VIDEO_CODEC_H265STD_DECODE_H_
diff --git a/codegen/vulkan/include/vk_video/vulkan_video_codec_h265std_encode.h b/codegen/vulkan/include/vk_video/vulkan_video_codec_h265std_encode.h
deleted file mode 100644
index ffffef20..00000000
--- a/codegen/vulkan/include/vk_video/vulkan_video_codec_h265std_encode.h
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
-** Copyright (c) 2019-2021 The Khronos Group Inc.
-**
-** SPDX-License-Identifier: Apache-2.0
-*/
-
-#ifndef VULKAN_VIDEO_CODEC_H265STD_ENCODE_H_
-#define VULKAN_VIDEO_CODEC_H265STD_ENCODE_H_ 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "vk_video/vulkan_video_codec_h265std.h"
-
-// *************************************************
-// Video h265 Encode related parameters:
-// *************************************************
-
-#define STD_VIDEO_ENCODE_H265_LUMA_LIST_SIZE 15
-#define STD_VIDEO_ENCODE_H265_CHROMA_LIST_SIZE 15
-#define STD_VIDEO_ENCODE_H265_CHROMA_LISTS_NUM 2
-
-typedef struct StdVideoEncodeH265SliceHeaderFlags {
- uint32_t first_slice_segment_in_pic_flag : 1;
- uint32_t no_output_of_prior_pics_flag : 1;
- uint32_t dependent_slice_segment_flag : 1;
- uint32_t short_term_ref_pic_set_sps_flag : 1;
- uint32_t slice_temporal_mvp_enable_flag : 1;
- uint32_t slice_sao_luma_flag : 1;
- uint32_t slice_sao_chroma_flag : 1;
- uint32_t num_ref_idx_active_override_flag : 1;
- uint32_t mvd_l1_zero_flag : 1;
- uint32_t cabac_init_flag : 1;
- uint32_t slice_deblocking_filter_disable_flag : 1;
- uint32_t collocated_from_l0_flag : 1;
- uint32_t slice_loop_filter_across_slices_enabled_flag : 1;
- uint32_t bLastSliceInPic : 1;
- uint32_t reservedBits : 18;
- uint16_t luma_weight_l0_flag; // bit 0 - num_ref_idx_l0_active_minus1
- uint16_t chroma_weight_l0_flag; // bit 0 - num_ref_idx_l0_active_minus1
- uint16_t luma_weight_l1_flag; // bit 0 - num_ref_idx_l1_active_minus1
- uint16_t chroma_weight_l1_flag; // bit 0 - num_ref_idx_l1_active_minus1
-} StdVideoEncodeH265SliceHeaderFlags;
-
-typedef struct StdVideoEncodeH265SliceHeader {
- StdVideoH265SliceType slice_type;
- uint8_t slice_pic_parameter_set_id;
- uint8_t num_short_term_ref_pic_sets;
- uint32_t slice_segment_address;
- uint8_t short_term_ref_pic_set_idx;
- uint8_t num_long_term_sps;
- uint8_t num_long_term_pics;
- uint8_t collocated_ref_idx;
- uint8_t num_ref_idx_l0_active_minus1; // [0, 14]
- uint8_t num_ref_idx_l1_active_minus1; // [0, 14]
- uint8_t luma_log2_weight_denom; // [0, 7]
- int8_t delta_chroma_log2_weight_denom;
- int8_t delta_luma_weight_l0[STD_VIDEO_ENCODE_H265_LUMA_LIST_SIZE];
- int8_t luma_offset_l0[STD_VIDEO_ENCODE_H265_LUMA_LIST_SIZE];
- int8_t delta_chroma_weight_l0[STD_VIDEO_ENCODE_H265_CHROMA_LIST_SIZE][STD_VIDEO_ENCODE_H265_CHROMA_LISTS_NUM];
- int8_t delta_chroma_offset_l0[STD_VIDEO_ENCODE_H265_CHROMA_LIST_SIZE][STD_VIDEO_ENCODE_H265_CHROMA_LISTS_NUM];
- int8_t delta_luma_weight_l1[STD_VIDEO_ENCODE_H265_LUMA_LIST_SIZE];
- int8_t luma_offset_l1[STD_VIDEO_ENCODE_H265_LUMA_LIST_SIZE];
- int8_t delta_chroma_weight_l1[STD_VIDEO_ENCODE_H265_CHROMA_LIST_SIZE][STD_VIDEO_ENCODE_H265_CHROMA_LISTS_NUM];
- int8_t delta_chroma_offset_l1[STD_VIDEO_ENCODE_H265_CHROMA_LIST_SIZE][STD_VIDEO_ENCODE_H265_CHROMA_LISTS_NUM];
- uint8_t MaxNumMergeCand;
- int8_t slice_qp_delta;
- int8_t slice_cb_qp_offset; // [-12, 12]
- int8_t slice_cr_qp_offset; // [-12, 12]
- int8_t slice_beta_offset_div2; // [-6, 6]
- int8_t slice_tc_offset_div2; // [-6, 6]
- int8_t slice_act_y_qp_offset;
- int8_t slice_act_cb_qp_offset;
- int8_t slice_act_cr_qp_offset;
- StdVideoEncodeH265SliceHeaderFlags flags;
-} StdVideoEncodeH265SliceHeader;
-
-typedef struct StdVideoEncodeH265ReferenceModificationFlags {
- uint32_t ref_pic_list_modification_flag_l0 : 1;
- uint32_t ref_pic_list_modification_flag_l1 : 1;
-} StdVideoEncodeH265ReferenceModificationFlags;
-
-typedef struct StdVideoEncodeH265ReferenceModifications {
- StdVideoEncodeH265ReferenceModificationFlags flags;
- uint8_t referenceList0ModificationsCount; // num_ref_idx_l0_active_minus1
- uint8_t* pReferenceList0Modifications; // list_entry_l0
- uint8_t referenceList1ModificationsCount; // num_ref_idx_l1_active_minus1
- uint8_t* pReferenceList1Modifications; // list_entry_l1
-} StdVideoEncodeH265ReferenceModifications;
-
-typedef struct StdVideoEncodeH265PictureInfoFlags {
- uint32_t is_reference_flag : 1;
- uint32_t IrapPicFlag : 1;
- uint32_t long_term_flag : 1;
-} StdVideoEncodeH265PictureInfoFlags;
-
-typedef struct StdVideoEncodeH265PictureInfo {
- StdVideoH265PictureType PictureType;
- uint8_t sps_video_parameter_set_id;
- uint8_t pps_seq_parameter_set_id;
- int32_t PicOrderCntVal;
- uint8_t TemporalId;
- StdVideoEncodeH265PictureInfoFlags flags;
-} StdVideoEncodeH265PictureInfo;
-
-typedef struct StdVideoEncodeH265ReferenceInfoFlags {
- uint32_t is_long_term : 1;
- uint32_t isUsedFlag : 1;
-} StdVideoEncodeH265ReferenceInfoFlags;
-
-typedef struct StdVideoEncodeH265ReferenceInfo {
- int32_t PicOrderCntVal;
- uint8_t TemporalId;
- StdVideoEncodeH265ReferenceInfoFlags flags;
-} StdVideoEncodeH265ReferenceInfo;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // VULKAN_VIDEO_CODEC_H265STD_ENCODE_H_
diff --git a/codegen/vulkan/include/vk_video/vulkan_video_codecs_common.h b/codegen/vulkan/include/vk_video/vulkan_video_codecs_common.h
deleted file mode 100644
index 8cc227a6..00000000
--- a/codegen/vulkan/include/vk_video/vulkan_video_codecs_common.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
-** Copyright (c) 2019-2021 The Khronos Group Inc.
-**
-** SPDX-License-Identifier: Apache-2.0
-*/
-
-#ifndef VULKAN_VIDEO_CODEC_COMMON_H_
-#define VULKAN_VIDEO_CODEC_COMMON_H_ 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define VK_MAKE_VIDEO_STD_VERSION(major, minor, patch) \
- ((((uint32_t)(major)) << 22) | (((uint32_t)(minor)) << 12) | ((uint32_t)(patch)))
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // VULKAN_VIDEO_CODEC_COMMON_H_
diff --git a/codegen/vulkan/include/vulkan/vk_platform.h b/codegen/vulkan/include/vulkan/vk_platform.h
deleted file mode 100644
index 18b913ab..00000000
--- a/codegen/vulkan/include/vulkan/vk_platform.h
+++ /dev/null
@@ -1,84 +0,0 @@
-//
-// File: vk_platform.h
-//
-/*
-** Copyright 2014-2021 The Khronos Group Inc.
-**
-** SPDX-License-Identifier: Apache-2.0
-*/
-
-
-#ifndef VK_PLATFORM_H_
-#define VK_PLATFORM_H_
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif // __cplusplus
-
-/*
-***************************************************************************************************
-* Platform-specific directives and type declarations
-***************************************************************************************************
-*/
-
-/* Platform-specific calling convention macros.
- *
- * Platforms should define these so that Vulkan clients call Vulkan commands
- * with the same calling conventions that the Vulkan implementation expects.
- *
- * VKAPI_ATTR - Placed before the return type in function declarations.
- * Useful for C++11 and GCC/Clang-style function attribute syntax.
- * VKAPI_CALL - Placed after the return type in function declarations.
- * Useful for MSVC-style calling convention syntax.
- * VKAPI_PTR - Placed between the '(' and '*' in function pointer types.
- *
- * Function declaration: VKAPI_ATTR void VKAPI_CALL vkCommand(void);
- * Function pointer type: typedef void (VKAPI_PTR *PFN_vkCommand)(void);
- */
-#if defined(_WIN32)
- // On Windows, Vulkan commands use the stdcall convention
- #define VKAPI_ATTR
- #define VKAPI_CALL __stdcall
- #define VKAPI_PTR VKAPI_CALL
-#elif defined(__ANDROID__) && defined(__ARM_ARCH) && __ARM_ARCH < 7
- #error "Vulkan isn't supported for the 'armeabi' NDK ABI"
-#elif defined(__ANDROID__) && defined(__ARM_ARCH) && __ARM_ARCH >= 7 && defined(__ARM_32BIT_STATE)
- // On Android 32-bit ARM targets, Vulkan functions use the "hardfloat"
- // calling convention, i.e. float parameters are passed in registers. This
- // is true even if the rest of the application passes floats on the stack,
- // as it does by default when compiling for the armeabi-v7a NDK ABI.
- #define VKAPI_ATTR __attribute__((pcs("aapcs-vfp")))
- #define VKAPI_CALL
- #define VKAPI_PTR VKAPI_ATTR
-#else
- // On other platforms, use the default calling convention
- #define VKAPI_ATTR
- #define VKAPI_CALL
- #define VKAPI_PTR
-#endif
-
-#if !defined(VK_NO_STDDEF_H)
- #include <stddef.h>
-#endif // !defined(VK_NO_STDDEF_H)
-
-#if !defined(VK_NO_STDINT_H)
- #if defined(_MSC_VER) && (_MSC_VER < 1600)
- typedef signed __int8 int8_t;
- typedef unsigned __int8 uint8_t;
- typedef signed __int16 int16_t;
- typedef unsigned __int16 uint16_t;
- typedef signed __int32 int32_t;
- typedef unsigned __int32 uint32_t;
- typedef signed __int64 int64_t;
- typedef unsigned __int64 uint64_t;
- #else
- #include <stdint.h>
- #endif
-#endif // !defined(VK_NO_STDINT_H)
-
-#ifdef __cplusplus
-} // extern "C"
-#endif // __cplusplus
-
-#endif
diff --git a/codegen/vulkan/include/vulkan/vulkan.h b/codegen/vulkan/include/vulkan/vulkan.h
deleted file mode 100644
index 3f7cdba5..00000000
--- a/codegen/vulkan/include/vulkan/vulkan.h
+++ /dev/null
@@ -1,92 +0,0 @@
-#ifndef VULKAN_H_
-#define VULKAN_H_ 1
-
-/*
-** Copyright 2015-2021 The Khronos Group Inc.
-**
-** SPDX-License-Identifier: Apache-2.0
-*/
-
-#include "vk_platform.h"
-#include "vulkan_core.h"
-
-#ifdef VK_USE_PLATFORM_ANDROID_KHR
-#include "vulkan_android.h"
-#endif
-
-#ifdef VK_USE_PLATFORM_FUCHSIA
-#include <zircon/types.h>
-#include "vulkan_fuchsia.h"
-#endif
-
-#ifdef VK_USE_PLATFORM_IOS_MVK
-#include "vulkan_ios.h"
-#endif
-
-
-#ifdef VK_USE_PLATFORM_MACOS_MVK
-#include "vulkan_macos.h"
-#endif
-
-#ifdef VK_USE_PLATFORM_METAL_EXT
-#include "vulkan_metal.h"
-#endif
-
-#ifdef VK_USE_PLATFORM_VI_NN
-#include "vulkan_vi.h"
-#endif
-
-
-#ifdef VK_USE_PLATFORM_WAYLAND_KHR
-#include <wayland-client.h>
-#include "vulkan_wayland.h"
-#endif
-
-
-#ifdef VK_USE_PLATFORM_WIN32_KHR
-#include <windows.h>
-#include "vulkan_win32.h"
-#endif
-
-
-#ifdef VK_USE_PLATFORM_XCB_KHR
-#include <xcb/xcb.h>
-#include "vulkan_xcb.h"
-#endif
-
-
-#ifdef VK_USE_PLATFORM_XLIB_KHR
-#include <X11/Xlib.h>
-#include "vulkan_xlib.h"
-#endif
-
-
-#ifdef VK_USE_PLATFORM_DIRECTFB_EXT
-#include <directfb.h>
-#include "vulkan_directfb.h"
-#endif
-
-
-#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
-#include <X11/Xlib.h>
-#include <X11/extensions/Xrandr.h>
-#include "vulkan_xlib_xrandr.h"
-#endif
-
-
-#ifdef VK_USE_PLATFORM_GGP
-#include <ggp_c/vulkan_types.h>
-#include "vulkan_ggp.h"
-#endif
-
-
-#ifdef VK_USE_PLATFORM_SCREEN_QNX
-#include <screen/screen.h>
-#include "vulkan_screen.h"
-#endif
-
-#ifdef VK_ENABLE_BETA_EXTENSIONS
-#include "vulkan_beta.h"
-#endif
-
-#endif // VULKAN_H_
diff --git a/codegen/vulkan/package-lock.json b/codegen/vulkan/package-lock.json
deleted file mode 100644
index ead9d523..00000000
--- a/codegen/vulkan/package-lock.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- "requires": true,
- "lockfileVersion": 1,
- "dependencies": {
- "escape-string-regexp": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
- "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
- "dev": true
- },
- "he": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
- "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
- "dev": true
- },
- "lunr": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.8.tgz",
- "integrity": "sha512-oxMeX/Y35PNFuZoHp+jUj5OSEmLCaIH4KTFJh7a93cHBoFmpw2IoPs22VIz7vyO2YUnx2Tn9dzIwO2P/4quIRg==",
- "dev": true
- }
- }
-}
diff --git a/codegen/vulkan/package.json b/codegen/vulkan/package.json
deleted file mode 100644
index 9aa37e16..00000000
--- a/codegen/vulkan/package.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "private": true,
- "devDependencies": {
- "escape-string-regexp": "^2.0.0",
- "he": "^1.2.0",
- "lunr": "2.3.8"
- }
-}
diff --git a/codegen/vulkan/registry.txt b/codegen/vulkan/registry.txt
deleted file mode 100644
index baa49141..00000000
--- a/codegen/vulkan/registry.txt
+++ /dev/null
@@ -1,2575 +0,0 @@
-// Copyright 2013-2021 The Khronos Group Inc.
-//
-// SPDX-License-Identifier: CC-BY-4.0
-
-= The Khronos^®^ Vulkan^®^ API Registry
-Jon Leech
-:data-uri:
-:icons: font
-:toc2:
-:toclevels: 3
-:numbered:
-:source-highlighter: rouge
-:rouge-style: github
-:doctype: book
-:imagewidth: 800
-:fullimagewidth: width="800"
-:cl: &#x3a;
-
-// Various special / math symbols. This is easier to edit with than Unicode.
-include::{config}/attribs.txt[]
-
-:leveloffset: 1
-
-<<<<
-
-include::{config}/copyright-ccby.txt[]
-
-<<<<
-
-[[introduction]]
-= Introduction
-
-This document describes the Khronos Vulkan API Registry schema, and provides
-some additional information about using the registry and scripts to generate
-a variety of outputs, including C header files as well as several types of
-asciidoc include files used in the Vulkan API specification and reference
-pages.
-The underlying XML files and scripts are located on the Khronos public
-Github server at URL
-
-https://github.com/KhronosGroup/Vulkan-Docs
-
-The authoritative copy of the Registry is maintained in the default branch,
-currently `main`.
-
-The registry uses an XML representation of the Vulkan API, together with a
-set of Python scripts to manipulate the registry once loaded.
-The scripts rely on the Python `etree` package to parse and operate on XML.
-An XML schema and validator target are included.
-
-The schema is based on, but not identical to that used for the previously
-published OpenGL, OpenGL ES and EGL API registries.
-It was extended to represent additional types and concepts not needed for
-those APIs, such as structure and enumerant types, as well as additional
-types of registered information specific to Vulkan.
-
-The Vulkan C header files generated from the registry are checked into a
-separate repository under
-
-https://github.com/KhronosGroup/Vulkan-Headers/
-
-
-== Schema Choices
-
-The XML schema is not pure XML all the way down.
-In particular, command return types/names and parameters, and structure
-members, are described in mixed-mode tag containing C declarations of the
-appropriate information, with some XML nodes annotating particular parts of
-the declaration such as its base type and name.
-This choice is based on prior experience with the SGI `.spec` file format
-used to describe OpenGL, and greatly eases human reading and writing the
-XML, and generating C-oriented output.
-The cost is that people writing output generators for other languages will
-have to include enough logic to parse the C declarations and extract the
-relevant information.
-
-People who do not find the supplied Python scripts to suit their needs are
-likely to write their own parsers, interpreters, and/or converters operating
-on the registry XML.
-We hope that we have provided enough information in this document, the RNC
-schema (`registry.rnc`), and comments in the Registry (`vk.xml`) itself to
-enable such projects.
-If not and you need clarifications; if you have other problems using the
-registry; or if you have proposed changes and enhancements, then please file
-issues on Khronos' public Github project at
-
-https://github.com/KhronosGroup/Vulkan-Docs/issues
-
-Please tag your issues with `[Registry]` in the subject line to help us
-categorize them.
-We have considered separating the registry from the specification source
-into a separate repository, but since there is so much specification valid
-usage language imbedded in the registry XML, this is unlikely to happen.
-
-
-[[starting]]
-= Getting Started
-
-See
-https://gitlab.khronos.org/vulkan/vulkan/blob/main/xml/README.adoc[`xml/README.adoc`]
-in the `Vulkan-Docs` repository for information on required toolchain
-components such as Python 3, pass:[g++], and GNU make.
-
-Once you have the right tools installed, perform the following steps:
-
- * Check out the `Vulkan-Docs` repository linked above from Khronos Github
- (there are instructions at the link)
- * `cd` to the root directory in your checked-out repo
- * Switch to the default branch (`main`).
- * Invoke `make clean ; make install ; make test`
-
-This should regenerate `vulkan_core.h` and a variety of platform-specific
-headers, install them in `../include/vulkan/`, and verify that the headers
-build properly.
-If you build at the latest repository tag, the resulting headers should be
-identical to the latest versions in the
-link:https://github.com/KhronosGroup/Vulkan-Headers/[Vulkan-Headers
-repository].
-
-The `install` target also generates source code for a simple extension
-loader library in `../src/ext_loader/`.
-
-Other Makefile targets in `xml/` include:
-
- * `validate` - validate `vk.xml` against the XML schema.
- Recommended if you are making nontrivial changes.
- * The asciidoc includes used by the Specification and Reference Pages are
- built using the 'make generated' target in the parent directory
- Makefile, although they use the scripts and XML in this directory.
- These files are generated dynamically when building the specs, since
- their contents depend on the exact set of extensions the Specification
- is being built to include.
-
-If you just want to modify the API, changing `vk.xml` and running `make`
-should be all that is needed.
-See <<examples>> for some examples of modifying the XML.
-
-If you want to use the registry for reasons other than generating the header
-file, extension loader, and asciidoc includes, or to generate headers for
-languages other than C, start with the Makefile rules and the files
-`vk.xml` and scripts `genvk.py`, `reg.py`, and `generator.py`.
-The scripts are described below and are all located in the `scripts`
-directory under the repository root.
-
-== Header Generation Script - `genvk.py`
-
-When generating header files using the `genvk.py` script, an API name and
-profile name are required, as shown in the Makefile examples.
-Additionally, specific API versions and extensions can be required or
-excluded.
-Based on this information, the generator script extracts the relevant
-interfaces and creates a C-language header file for them.
-`genvk.py` contains predefined generator options for the current Vulkan
-Specification release.
-
-The generator script is intended to be generalizable to other languages by
-writing new generator classes.
-Such generators would have to rewrite the C types and definitions in the XML
-to something appropriate to their language.
-
-
-== Registry Processing Script - `reg.py`
-
-XML processing is done in `reg.py`, which contains several objects and
-methods for loading registries and extracting interfaces and extensions for
-use in header generation.
-There is some internal documentation in the form of comments, although
-nothing more extensive exists yet.
-
-
-== Output Generator Script - `generator.py`
-
-Once the registry is loaded, the `COutputGenerator` class defined in
-`generator.py` is used to create a header file.
-The `DocOutputGenerator` class is used to create the asciidoc include files.
-Output generators for other purposes can be added as needed.
-There are a variety of output generators included:
-
- * `cgenerator.py` - generate C header file
- * `docgenerator.py` - generate asciidoc includes for APIs
- * `hostsyncgenerator.py` - generate host sync table includes for APIs
- * `validitygenerator.py` - generate validity language includes
- * `pygenerator.py` - generate a Python dictionary-based encoding of
- portions of the registry, used during spec generation
- * `extensionStubSource.py` - generate a simple C extension loader.
-
-
-[[schema]]
-= Vulkan Registry Schema
-
-The format of the Vulkan registry is a top level tag:registry tag containing
-tag:types, tag:enums, tag:commands, tag:feature, and tag:extension tags
-describing the different elements of an API, as explained below.
-This description corresponds to a formal Relax NG schema file,
-`registry.rnc`, against which the XML registry files can be validated.
-
-At present the only registry in this schema is the core Vulkan API registry,
-`vk.xml`.
-
-
-[[schema:profile]]
-== Profiles
-
-Types and enumerants can have different definitions depending on the API
-profile requested.
-This capability is not used in the current Vulkan API but may be in the
-future.
-Features and extensions can include some elements conditionally depending on
-the API profile requested.
-
-
-[[schema:apiname]]
-== API Names
-
-Specific API versions features and extensions can be tagged as belonging to
-to classes of features with the use of _API names_.
-This is intended to allow multiple closely-related API specifications in the
-same family - such as desktop and mobile specifications - to share the same
-XML.
-An API name is an arbitrary alphanumeric string, although it should be
-chosen to match the corresponding API.
-For example, Vulkan and OpenXR use `vulkan` and `openxr` as their API names,
-respectively.
-
-The attr:api attribute of the tag:feature tag and the attr:supported
-attribute of the tag:extensions tag must be comma-separated lists of one or
-more API names, all of which match that feature or extension.
-When generating headers and other artifacts from the XML, an API name may be
-specified to the processing scripts, causing the selection of only those
-features and extensions whose API names match the specified name.
-
-Several other tags for defining types and groups of types also support
-attr:api attributes.
-If present, the attribute value must be a comma-separated list of one or
-more API names.
-This allows specializing a definition for different, closely related APIs.
-
-
-[[schema:root]]
-= Registry Root (tag:registry tag)
-
-A tag:registry contains the entire definition of one or more related APIs.
-
-== Attributes of tag:registry tags
-
-None.
-
-== Contents of tag:registry tags
-
-Zero or more of each of the following tags, normally in this order (although
-order should not be important):
-
- * tag:comment - Contains arbitrary text, such as a copyright statement.
- * <<tag-platforms,tag:platforms>> - defines platform names corresponding
- to platform-specific <<tag-extension,API extensions>>.
- * <<tag-tags,tag:tags>> - defines author IDs used for extensions and
- layers.
- Author IDs are described in detail in the "`Layers & Extensions`"
- section of the "`Vulkan Documentation and Extensions: Procedures and
- Conventions`" document.
- * <<tag-types,tag:types>> - defines API types.
- Usually only one tag is used.
- * <<tag-enums,tag:enums>> - defines API token names and values.
- Usually multiple tags are used.
- Related groups may be tagged as an enumerated type corresponding to a
- tag:type tag, and resulting in a C `enum` declaration.
- This ability is heavily used in the Vulkan API.
- * <<tag-commands,tag:commands>> - defines API commands (functions).
- Usually only one tag is used.
- * <<tag-feature,tag:feature>> - defines API feature interfaces (API
- versions, more or less).
- One tag per feature set.
- * <<tag-extensions,tag:extensions>> - defines API extension interfaces.
- Usually only one tag is used, wrapping many extensions.
-
-
-[[tag-comment]]
-=== Comment Tags (tag:comment tag)
-
-A tag:comment tag contains an arbitrary string, and is unused.
-Comment tags may appear in multiple places in the schema, as described
-below.
-Comment tags are removed by output generators if they would otherwise appear
-in generated headers, asciidoc include files, etc.
-
-
-[[tag-platforms]]
-= Platform Name Blocks (tag:platforms tag)
-
-A tag:platforms contains descriptions of platform IDs for platforms
-supported by window system-specific extensions to Vulkan.
-
-== Attributes of tag:platforms tags
-
- * attr:comment - optional.
- Arbitrary string (unused).
-
-== Contents of tag:platforms tags
-
-Zero or more tag:platform tags, in arbitrary order (though they are
-typically ordered by sorting on the platform name).
-
-
-[[tag-platform]]
-= Platform Names (tag:platform tag)
-
-A tag:platform tag describes a single platform name.
-
-== Attributes of tag:platform tags
-
- * attr:name - required.
- The platform name.
- This must be a short alphanumeric string corresponding to the platform
- name, valid as part of a C99 identifier.
- Lower-case is preferred.
- In some cases, it may be desirable to distinguish a subset of platform
- functionality from the entire platform.
- In these cases, the platform name should begin with the entire platform
- name, followed by `_` and the subset name.
-+
---
-[NOTE]
-.Note
-====
-For example,
-
-`name="xlib"`
-
-is used for the X Window System, Xlib client library platform.
-
-`name="xlib_xrandr"`
-
-is used for the XRandR functionality within the `xlib` platform.
-====
---
- * attr:protect - required.
- This must be a C99 preprocessor token beginning with `VK_USE_PLATFORM_`
- followed by the platform name, converted to upper case, followed by `_`
- and the extension suffix of the corresponding window system-specific
- extension supporting the platform.
-+
---
-[NOTE]
-.Note
-====
-For example,
-
-`protect="VK_USE_PLATFORM_XLIB_XRANDR_EXT"`
-
-is used for the `xlib_xrandr` platform name.
-====
---
- * attr:comment - optional.
- Arbitrary string (unused).
-
-== Contents of tag:platform tags
-
-No contents are allowed.
-All information is contained in the attributes.
-
-
-[[tag-tags]]
-= Author ID Blocks (tag:tags tag)
-
-A tag:tags tag contains tag:authorid tags describing reserved author IDs
-used by extension and layer authors.
-
-== Attributes of tag:tags tags
-
- * attr:comment - optional.
- Arbitrary string (unused).
-
-== Contents of tag:tags tags
-
-Zero or more tag:tag tags, in arbitrary order (though they are typically
-ordered by sorting on the author ID).
-
-
-[[tag-tag]]
-= Author IDs (tag:tag tag)
-
-A tag:tag tag contains information defining a single author ID.
-
-== Attributes of tag:tag tags
-
- * attr:name - required.
- The author ID, as registered with Khronos.
- A short, upper-case string, usually an abbreviation of an author,
- project or company name.
- * attr:author - required.
- The author name, such as a full company or project name.
- * attr:contact - required.
- The contact who registered or is currently responsible for extensions
- and layers using the ID, including sufficient contact information to
- reach the contact such as individual name together with email address,
- Github username, or other contact information.
-
-== Contents of tag:tag tags
-
-No contents are allowed.
-All information is contained in the attributes.
-
-
-[[tag-types]]
-= API Type Blocks (tag:types tag)
-
-A tag:types tag contains definitions of derived types used in the API.
-
-== Attributes of tag:types tags
-
- * attr:comment - optional.
- Arbitrary string (unused).
-
-== Contents of tag:types tags
-
-Zero or more tag:type and tag:comment tags, in arbitrary order (though they
-are typically ordered by putting dependencies of other types earlier in the
-list).
-The tag:comment tags are used mostly to indicate grouping of related types.
-
-
-[[tag-type]]
-= API Type (tag:type tag)
-
-A tag:type tag contains information which can be used to generate C code
-corresponding to the type.
-In many cases, this is simply legal C code, with attributes or embedded tags
-denoting the type name and other types used in defining this type.
-In some cases, additional attribute and embedded type information is used to
-generate more complicated C types.
-
-== Attributes of tag:type tags
-
- * attr:requires - optional.
- Another type name this type requires to complete its definition.
- * attr:name - optional.
- Name of this type (if not defined in the tag body).
- * attr:alias - optional.
- Another type name which this type is an alias of.
- Must match the name of another tag:type element.
- This is typically used when promoting a type defined by an extension to
- a new core version of the API.
- The old extension type is still defined, but as an alias of the new
- type.
- * attr:api - optional <<schema:apiname, API names>> for which this
- definition is specialized, so that different APIs may have different
- definitions for the same type.
- This definition is only used if the requested API name matches the
- attribute.
- May be used to address subtle incompatibilities.
- * attr:category - optional.
- A string which indicates that this type contains a more complex
- structured definition.
- At present the only accepted categories are `basetype`, `bitmask`,
- `define`, `enum`, `funcpointer`, `group`, `handle`, `include`, `struct`,
- and `union`, as described below.
- * attr:comment - optional.
- Arbitrary string (unused).
- * attr:parent - only applicable if `"category"` is `handle`.
- Notes another type with the `handle` category that acts as a parent
- object for this type.
- * attr:returnedonly - only applicable if `"category"` is `struct` or
- `union`.
- Notes that this struct/union is going to be filled in by the API, rather
- than an application filling it out and passing it to the API.
- * attr:structextends only applicable if category is `struct` or `union`.
- This is a comma-separated list of structures whose `pNext` can include
- this type.
- This should usually only list the top-level structure that is extended,
- for all possible extending structures.
- This will generate a validity statement on the top level structure that
- validates the entire chain in one go, rather than each extending
- structure repeating the list of valid structs.
- There is no need to set the attr:noautovalidity attribute on the `pNext`
- members of extending structures.
- * attr:allowduplicate - only applicable if attr:category is `"struct"`.
- If `"true"`, then structures whose `pNext` chains include this structure
- may include more than one instance of it.
- * attr:objtypeenum - only applicable at present if attr:category is
- `"handle"`.
- Specifies the name of a `VkObjectType` enumerant which corresponds to
- this type.
- The enumerant must be defined.
-
-== Contents of tag:type tags
-
-The valid contents depend on the attr:category attribute.
-
-=== Enumerated types - attr:category `"enum"`
-
-If the attr:category tag has the value `enum`, the type is a C enumeration.
-The body of the tag is ignored in this case.
-The value of the attr:name attribute must be provided and must match the
-attr:name attribute of a <<tag-enums,tag:enums>> tag.
-The enumerant values defined within the tag:enums tag are used to generate a
-C `enum` type declaration.
-
-=== Structure types - attr:category `"struct"` or `"union"`
-
-If the attr:category tag has the values `struct` or `union`, the type is a C
-structure or union, respectively.
-In this case, the attr:name attribute must be provided, and the contents of
-the tag:type tag are a series of tag:member tags defining the members of the
-aggregate type, in order, interleaved with any number of tag:comment tags.
-
-==== Structure member (tag:member) tags
-
-The tag:member tag defines the type and name of a structure or union member.
-
-==== Attributes of tag:member tags
-
- * attr:values - only valid on the `sType` member of a struct.
- This is a comma-separated list of enumerant values that are valid for
- the structure type; usually there is only a single value.
- * attr:len - if the member is an array, len may be one or more of the
- following things, separated by commas (one for each array indirection):
- another member of that struct; `"null-terminated"` for a string; `"1"`
- to indicate it is just a pointer (used for nested pointers); or an
- equation in math markup for incorporation in the specification (a LaTeX
- math expression delimited by `latexmath:[` and `]`.
- The only variables in the equation should be the names of members of the
- structure.
- * attr:altlen - if the attr:len attribute is specified, and contains a
- `latexmath:` equation, this attribute should be specified with an
- equivalent equation using only C builtin operators, C math library
- function names, and variables as allowed for attr:len.
- It must be a valid C99 expression whose result is equal to attr:len for
- all possible inputs.
- It is a comma separated list that has size equal to only the `latexmath`
- item count in attr:len list.
- This attribute is intended to support consumers of the XML who need to
- generate validation code from the allowed length.
- * attr:externsync - denotes that the member should be externally
- synchronized when accessed by Vulkan
- * attr:optional - optional.
- A value of `"true"` or `"false"` determines whether this member can be
- omitted by providing `NULL` (for pointers), `VK_NULL_HANDLE` (for
- handles), or 0 (for other scalar types).
- If the member is a pointer to one of those types, multiple values may be
- provided, separated by commas - one for each pointer indirection.
- If not present, the value is assumed to be `"false"` (the member must
- not be omitted).
- Structure members with name `pNext` must always be specified with
- `optional="true"`, since there is no requirement that any member of a
- `pNext` chain have a following member in the chain.
-+
---
-[NOTE]
-.Note
-====
-While the attr:optional attribute can be used for scalar types such as
-integers, it does not affect the output generators included with the Vulkan
-Specification.
-In this case, the attribute serves only as an indicator to human readers of
-the XML.
-====
---
- * attr:selector - optional.
- If the member is a union, attr:selector identifies another member of the
- struct that is used to select which of that union's members are valid.
- * attr:selection - optional.
- For a member of a union, attr:selection identifies a value of the
- attr:selector that indicates this member is valid.
- * attr:noautovalidity - prevents automatic validity language being
- generated for the tagged item.
- Only suppresses item-specific validity - parenting issues etc.
- are still captured.
- It must also be used for structures that have no implicit validity when
- such structure has explicit validity.
- * attr:limittype - only applicable for members of
- VkPhysicalDeviceProperties and VkPhysicalDeviceProperties2, their
- substrucutres, and extensions.
- Specifies the type of a device limit.
- This type describes how a value might be compared with the value of a
- member in order to check whether it fits the limit.
- Valid values:
- ** `"min"` and `"max"` denote minimum and maximum limits.
- They may also apply to arrays and `VkExtent*D`.
- ** `"bitmask"` corresponds to bitmasks and `VkBool32`, where set bits
- indicate the presence of a capability
- ** `"range"` specifies a [min, max] range
- ** `"struct"` means that the member's fields should be compared.
- ** `"noauto"` limits cannot be trivially compared.
- This is the default value, if unspecified.
- * attr:objecttype - only applicable for members which are `uint64_t`
- values representing a Vulkan obejct handle.
- Specifies the name of another member which must be a `VkObjectType` or
- `VkDebugReportObjectTypeEXT` value specifying the type of object the
- handle refers to.
-
-==== Contents of tag:member tags
-
-The text elements of a tag:member tag, with all other tags removed, is a
-legal C declaration of a struct or union member.
-In addition it may contain several semantic tags:
-
- * The tag:type tag is optional.
- It contains text which is a valid type name found in another tag:type
- tag, and indicates that this type must be previously defined for the
- definition of the command to succeed.
- Builtin C types should not be wrapped in tag:type tags.
- * The tag:name tag is required, and contains the struct/union member name
- being described.
- * The tag:enum tag is optional.
- It contains text which is a valid enumerant name found in another
- tag:type tag, and indicates that this enumerant must be previously
- defined for the definition of the command to succeed.
- Typically this is used to semantically tag static array lengths.
- * The tag:comment tag is optional.
- It contains an arbitrary string (unused).
-
-
-=== All other types
-
-If the attr:category attribute is one of `basetype`, `bitmask`, `define`,
-`funcpointer`, `group`, `handle` or `include`, or is not specified, tag:type
-contains text which is legal C code for a type declaration.
-It may also contain embedded tags:
-
- * tag:type - nested type tags contain other type names which are required
- by the definition of this type.
- * tag:apientry/ - insert a platform calling convention macro here during
- header generation, used mostly for function pointer types.
- * tag:name - contains the name of this type (if not defined in the tag
- attributes).
- * tag:bitvalues - contains the name of the enumeration defining flag
- values for a `bitmask` type.
- Ignored for other types.
-
-There is no restriction on which sorts of definitions may be made in a given
-category, although the contents of tags with attr:category `enum`, `struct`
-or `union` are interpreted specially as described above.
-
-However, when generating the header, types within each category are grouped
-together, and categories are generated in the order given by the following
-list.
-Therefore, types in a category should correspond to the intended purpose
-given for that category.
-If this recommendation is not followed, it is possible that the resulting
-header file will not compile due to out-of-order type dependencies.
-The intended purpose of each category is:
-
- * `include` (`#include`) directives)
- * `define` (macro `#define` directives)
- * `basetype` (built-in C language types; scalar API typedefs, such as the
- definition of `VkFlags`; and types defined by external APIs, such as an
- underlying OS or window system
- * `handle` (invocations of macros defining scalar types such as
- `VkInstance`)
- * `enum` (enumeration types and `#define` for constant values)
- * `group` (currently unused)
- * `bitmask` (enumeration types whose members are bitmasks)
- * `funcpointer` (function pointer typedefs)
- * `struct` and `union` together (struct and union types)
-
-
-[[tag-types:example]]
-== Example of a tag:types tag
-
-[source,xml]
---------------------------------------
-<types>
- <type name="stddef">#include &lt;stddef.h&gt;</type>
- <type requires="stddef">typedef ptrdiff_t <name>VKlongint</name>;</type>
- <type name="VkEnum" category="enum"/>
- <type category="struct" name="VkStruct">
- <member><type>VkEnum</type> <name>srcEnum</name></member>
- <member><type>VkEnum</type> <name>dstEnum</name></member>
- </type>
-</types>
-
-<enums name="VkEnum" type="enum">
- <enum value="0" name="VK_ENUM_ZERO"/>
- <enum value="42" name="VK_ENUM_FORTY_TWO"/>
-</enums>
---------------------------------------
-
-The `VkStruct` type is defined to require the types `VkEnum` and `VKlongint`
-as well.
-If `VkStruct` is in turn required by a command or another type during header
-generation, it will result in the following declarations:
-
-[source,c]
---------------------------------------
-#include <stddef.h>
-typedef ptrdiff_t VKlongint.
-
-typedef enum {
- VK_ENUM_ZERO = 0,
- VK_ENUM_FORTY_TWO = 42
-} VkEnum;
-
-typedef struct {
- VkEnum dstEnum;
- VkLongint dstVal;
-} VkStruct;
---------------------------------------
-
-Note that the angle brackets around `stddef.h` are represented as XML
-entities in the registry.
-This could also be done using a CDATA block but unless there are many
-characters requiring special representation in XML, using entities is
-preferred.
-
-
-[[tag-enums]]
-= Enumerant Blocks (tag:enums tag)
-
-The tag:enums tags contain individual tag:enum tags describing each of the
-token names used in the API.
-In some cases these correspond to a C `enum`, and in some cases they are
-simply compile time constants (e.g. `#define`).
-
-[NOTE]
-.Note
-====
-It would make more sense to call these `const` or `define` tags.
-This is a historical hangover from the OpenGL XML format which this schema
-was based on.
-====
-
-
-== Attributes of tag:enums tags
-
- * attr:name - optional.
- String naming the C `enum` type whose members are defined by this enum
- group.
- If present, this attribute should match the attr:name attribute of a
- corresponding tag:type tag.
- * attr:type - optional.
- String describing the data type of the values of this group of enums.
- At present the only accepted categories are `enum` and `bitmask`, as
- described below.
- * attr:start, attr:end - optional.
- Integers defining the start and end of a reserved range of enumerants
- for a particular vendor or purpose.
- attr:start must be less than or equal to attr:end.
- These fields define formal enumerant allocations, and are made by the
- Khronos Registrar on request from implementors following the enum
- allocation policy.
- * attr:vendor - optional.
- String describing the vendor or purpose to whom a reserved range of
- enumerants is allocated.
- * attr:comment - optional.
- Arbitrary string (unused).
- * attr:bitwidth - optional.
- Bit width required for the generated enum value type.
- If omitted, a default value of 32 is used.
-
-== Contents of tag:enums tags
-
-Each tag:enums block contains zero or more tag:enum, tag:unused, and
-tag:comment tags, in arbitrary order (although they are typically ordered by
-sorting on enumerant values, to improve human readability).
-
-== Example of tag:enums tags
-
-<<tag-types:example,An example>> showing a tag with attribute
-attr:type`="enum"` is given above.
-The following example is for non-enumerated tokens.
-
-[source,xml]
---------------------------------------
-<enums>
- <enum value="256" name="VK_MAX_EXTENSION_NAME"/>
- <enum value="MAX_FLOAT" name="VK_LOD_CLAMP_NONE"/>
-</enums>
---------------------------------------
-
-When processed into a C header, and assuming all these tokens were required,
-this results in
-
-[source,c]
---------------------------------------
-#define VK_MAX_EXTENSION_NAME 256
-#define VK_LOD_CLAMP_NONE MAX_FLOAT
---------------------------------------
-
-
-[[tag-enum]]
-= Enumerants (tag:enum tag)
-
-Each tag:enum tag defines a single Vulkan (or other API) token.
-
-== Attributes of tag:enum tags
-
- * attr:value is a numeric value in the form of a legal C expression when
- evaluated at compile time in the generated header files.
- This is usually either a literal integer value or the name of an alias
- for a previously defined value, though more complex expressions are
- sometimes employed for <<compile-time-constants, compile time
- constants>>.
- * attr:bitpos is a literal integer bit position in a bitmask.
- The bit position must be in the range [0,30] when used as a flag bit in
- a `Vk*FlagBits` data type.
- Bit positions 31 and up may be used for values that are not flag bits,
- or for <<adding-bitflags, flag bits used with 64-bit flag types>>.
- Exactly one of attr:value and attr:bitpos must be present in an tag:enum
- tag.
- * attr:name - required.
- Enumerant name, a legal C preprocessor token name.
- * attr:api - optional <<schema:apiname, API names>> for which this
- definition is specialized, so that different APIs may have different
- values for the same token.
- This definition is only used if the requested API name matches the
- attribute.
- May be used to address subtle incompatibilities.
- * attr:type - may be used only when attr:value is specified.
- In this case, attr:type is optional except when defining a
- <<compile-time-constants, compile time constant>>, in which case it is
- required when using some output generator paths.
- If present the attribute must be a C scalar type corresponding to the
- type of attr:value, although only `uint32_t`, `uint64_t`, and `float`
- are currently meaningful.
- attr:type is used by some output generators to generate constant
- declarations, although the default behavior is to use C `#define` for
- compile-time constants.
- * attr:alias - optional.
- Name of another enumerant this is an alias of, used where token names
- have been changed as a result of profile changes or for consistency
- purposes.
- An enumerant alias is simply a different attr:name for the exact same
- attr:value or attr:bitpos.
- * attr:protect - optional.
- An additional preprocessor token used to protect an enum definition.
-
-[NOTE]
-.Note
-====
-In older versions of the schema, attr:type was described as allowing only
-the C integer suffix types `u` and `ull`, which is inconsistent with the
-current definition.
-However, attr:type was not actually used in the registry processing scripts
-or `vk.xml` at the time the current definition was introduced, so this is
-expected to be a benign change.
-====
-
-
-== Contents of tag:enum tags
-
-tag:enum tags have no allowed contents.
-All information is contained in the attributes.
-
-
-[[tag-unused]]
-= Unused Enumerants (tag:unused tag)
-
-Each tag:unused tag defines a range of enumerants which is allocated, but
-not yet assigned to specific enums.
-This just tracks the unused values for the Registrar's use, and is not used
-for header generation.
-
-[NOTE]
-.Note
-====
-tag:unused tags could be generated and inserted automatically, which would
-be a good way to avoid the attributes becoming out of date.
-However, they are rarely used in the Vulkan XML schema, unlike the OpenGL
-XML schema it was based on.
-====
-
-== Attributes of tag:unused tags
-
- * attr:start - required, attr:end - optional.
- Integers defining the start and end of an unused range of enumerants.
- attr:start must be {leq} attr:end.
- If attr:end is not present, then attr:start defines a single unused
- enumerant.
- This range should not exceed the range reserved by the surrounding
- tag:enums tag.
- * attr:vendor - optional.
- String describing the vendor or purposes to whom a reserved range of
- enumerants is allocated.
- Usually identical to the attr:vendor attribute of the surrounding
- attr:enums block.
- * attr:comment - optional.
- Arbitrary string (unused).
-
-== Contents of tag:unused tags
-
-None.
-
-
-[[tag-commands]]
-= Command Blocks (tag:commands tag)
-
-The tag:commands tag contains definitions of each of the functions
-(commands) used in the API.
-
-== Attributes of tag:commands tags
-
- * attr:comment - optional.
- Arbitrary string (unused).
-
-== Contents of tag:commands tags
-
-Each tag:commands block contains zero or more tag:command tags, in arbitrary
-order (although they are typically ordered by sorting on the command name,
-to improve human readability).
-
-
-[[tag-command]]
-= Commands (tag:command tag)
-
-The tag:command tag contains a structured definition of a single API command
-(function).
-
-== Attributes of tag:command tags
-
-There are two ways to define a command.
-The first uses a set of attributes to the tag:command tag defining
-properties of the command used for constructing automatic validation rules,
-and the contents of the tag:command tag define the name, signature, and
-parameters of the command.
-In this case the allowed attributes include:
-
- * attr:queues - optional.
- A string identifying the command queues this command can be placed on.
- The format of the string is one or more of the terms `"compute"`,
- `"transfer"`, and `"graphics"`, with multiple terms separated by commas
- (`","`).
- * attr:successcodes - optional.
- A string describing possible successful return codes from the command,
- as a comma-separated list of Vulkan result code names.
- * attr:errorcodes - optional.
- A string describing possible error return codes from the command, as a
- comma-separated list of Vulkan result code names.
- * attr:renderpass - optional.
- A string identifying whether the command can be issued only inside a
- render pass (`"inside"`), only outside a render pass (`"outside"`), or
- both (`"both"`).
- * attr:cmdbufferlevel - optional.
- A string identifying the command buffer levels that this command can be
- called by.
- The format of the string is one or more of the terms `"primary"` and
- `"secondary"`, with multiple terms separated by commas (`","`).
- * attr:comment - optional.
- Arbitrary string (unused).
-
-The second way of defining a command is as an alias of another command.
-For example when an extension is promoted from extension to core status, the
-commands defined by that extensions become aliases of the corresponding new
-core commands.
-In this case, only two attributes are allowed:
-
- * attr:name - required.
- A string naming the command defined by the tag.
- * attr:alias - required.
- A string naming the command that attr:name is an alias of.
- The string must be the same as the attr:name value of another
- tag:command defining another command.
-
-== Contents of tag:command tags
-
- * tag:proto is required and must be the first element.
- It is a tag defining the C function prototype of a command as described
- below, up to the function name and return type but not including
- function parameters.
- * tag:param elements for each command parameter follow, defining its name
- and type, as described below.
- If a command takes no arguments, it has no tag:param tags.
-
-Following these elements, the remaining elements in a tag:command tag are
-optional and may be in any order:
-
- * tag:alias - optional.
- Has no attributes and contains a string which is the name of another
- command this command is an alias of, used when promoting a function from
- vendor to Khronos extension or Khronos extension to core API status.
- A command alias describes the case where there are two function names
- which implement the same behavior.
- * tag:description - optional.
- Unused text.
- * tag:implicitexternsyncparams - optional.
- Contains a list of tag:param tags, each containing asciidoc source text
- describing an object which is not a parameter of the command but is
- related to one, and which also <<tag-command:param:attr,requires
- external synchronization>>.
- The text is intended to be incorporated into the API specification.
-
-[NOTE]
-.Note
-====
-Versions of the registry documentation prior to 1.1.93 asserted that command
-aliases "`resolve to the _same_ entry point in the underlying layer stack.`"
-Whilst this may be true on many implementations, it is not required - each
-command alias must be queried separately through flink:vkGetInstanceProcAddr
-or flink:vkGetDeviceProcAddr.
-====
-
-
-[[tag-command:proto]]
-== Command prototype (tag:proto tags)
-
-The tag:proto tag defines the return type and name of a command.
-
-=== Attributes of tag:proto tags
-
-None.
-
-// attr:group - group name, an arbitrary string.
-//
-// If the group name is defined, it may be interpreted as described in
-// <<tag-group:meaning>>.
-
-=== Contents of tag:proto tags
-
-The text elements of a tag:proto tag, with all other tags removed, is legal
-C code describing the return type and name of a command.
-In addition to text, it may contain two semantic tags:
-
- * The tag:type tag is optional, and contains text which is a valid type
- name found in a tag:type tag.
- It indicates that this type must be previously defined for the
- definition of the command to succeed.
- Builtin C types, and any derived types which are expected to be found in
- other header files, should not be wrapped in tag:type tags.
- * The tag:name tag is required, and contains the command name being
- described.
-
-
-[[tag-command:param]]
-== Command parameter (tag:param tags)
-
-The tag:param tag defines the type and name of a parameter.
-Its contents are very similar to the tag:member tag used to define struct
-and union members.
-
-
-[[tag-command:param:attr]]
-=== Attributes of tag:param tags
-
- * attr:len - if the param is an array, len may be one or more of the
- following things, separated by commas (one for each array indirection):
- another param of that command; `"null-terminated"` for a string; `"1"`
- to indicate it is just a pointer (used for nested pointers); or an
- equation in math markup for incorporation in the specification (a LaTeX
- math expression delimited by `latexmath:[` and `]`.
- The only variables in the equation should be the names of this or other
- parameters.
- * attr:altlen - if the attr:len attribute is specified, and contains a
- `latexmath:` equation, this attribute should be specified with an
- equivalent equation using only C builtin operators, C math library
- function names, and variables as allowed for attr:len.
- It must be a valid C99 expression whose result is equal to attr:len for
- all possible inputs.
- It is a comma separated list that has size equal to only the `latexmath`
- item count in attr:len list.
- This attribute is intended to support consumers of the XML who need to
- generate validation code from the allowed length.
- * attr:optional - optional.
- A value of `"true"` or `"false"` determines whether this parameter can
- be omitted by providing `NULL` (for pointers), `VK_NULL_HANDLE` (for
- handles), or 0 (for other scalar types).
- If the parameter is a pointer to one of those types, multiple values may
- be provided, separated by commas - one for each pointer indirection.
- If not present, the value is assumed to be `"false"` (the parameter must
- not be omitted).
-+
---
-[NOTE]
-.Note
-====
-While the attr:optional attribute can be used for scalar types such as
-integers, it does not affect the output generators included with the Vulkan
-Specification.
-In this case, the attribute serves only as an indicator to human readers of
-the XML.
-====
---
- * attr:selector - optional.
- If the parameter is a union, attr:selector identifies another parameter
- of the command that is used to select which of that union's members are
- valid.
- * attr:noautovalidity - prevents automatic validity language being
- generated for the tagged item.
- Only suppresses item-specific validity - parenting issues etc.
- are still captured.
- * attr:externsync - optional.
- A value of `"true"` indicates that this parameter (e.g. the object a
- handle refers to, or the contents of an array a pointer refers to) is
- modified by the command, and is not protected against modification in
- multiple app threads.
- If only certain members of an object or elements of an array are
- modified, multiple strings may be provided, separated by commas.
- Each string describes a member which is modified.
- For example, the `vkQueueSubmit` command includes attr:externsync
- attributes for the `pSubmits` array indicating that only specific
- members of each element of the array are modified:
-+
---
-[source,xml]
---------------------------------------
-<param len="submitCount" externsync="pSubmits[].pWaitSemaphores[],pSubmits[].pSignalSemaphores[]">const <type>VkSubmitInfo</type>* <name>pSubmits</name></param>
---------------------------------------
-
-Parameters which do not have an attr:externsync attribute are assumed to not
-require external synchronization.
---
- * attr:objecttype - only applicable for parameters which are `uint64_t`
- values representing a Vulkan obejct handle.
- Specifies the name of another parameter which must be a `VkObjectType`
- or `VkDebugReportObjectTypeEXT` value specifying the type of object the
- handle refers to.
-
-=== Contents of tag:param tags
-
-The text elements of a tag:param tag, with all other tags removed, is legal
-C code describing the type and name of a function parameter.
-In addition it may contain two semantic tags:
-
- * The tag:type tag is optional, and contains text which is a valid type
- name found in tag:type tag, and indicates that this type must be
- previously defined for the definition of the command to succeed.
- Builtin C types, and any derived types which are expected to be found in
- other header files, should not be wrapped in tag:type tags.
- * The tag:name tag is required, and contains the parameter name being
- described.
-
-== Example of a tag:commands tag
-
-[source,xml]
---------------------------------------
-<commands>
- <command>
- <proto><type>VkResult</type> <name>vkCreateInstance</name></proto>
- <param>const <type>VkInstanceCreateInfo</type>* <name>pCreateInfo</name></param>
- <param><type>VkInstance</type>* <name>pInstance</name></param>
- </command>
-</commands>
---------------------------------------
-
-When processed into a C header, this results in
-
-[source,c]
---------------------------------------
-VkResult vkCreateInstance(
- const VkInstanceCreateInfo* pCreateInfo,
- VkInstance* pInstance);
---------------------------------------
-
-
-[[tag-feature]]
-= API Features and Versions (tag:feature tag)
-
-API features are described in individual tag:feature tags.
-A feature is the set of interfaces (enumerants and commands) defined by a
-particular API and version, such as Vulkan 1.0, and includes all profiles of
-that API and version.
-
-== Attributes of tag:feature tags
-
- * attr:api - required <<schema:apiname, API names>> this feature is
- defined for, such as `vulkan`.
- * attr:name - required.
- Version name, used as the C preprocessor token under which the version's
- interfaces are protected against multiple 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 of a feature or
- extension requires another to be defined first.
- * attr:comment - optional.
- Arbitrary string (unused).
-
-[NOTE]
-.Note
-====
-The attr:name attribute used for Vulkan core versions, such as
-`"VK_VERSION_1_0"`, is not an API construct.
-It is used only as a preprocessor guard in the headers, and an asciidoctor
-conditional in the specification sources.
-The similar `"VK_API_VERSION_1_0"` symbols are part of the API and their
-values are packed integers containing Vulkan core version numbers.
-====
-
-== Contents of tag:feature tags
-
-Zero or more <<tag-required,tag:require and tag:remove tags>>, in arbitrary
-order.
-Each tag describes a set of interfaces that is respectively required for, or
-removed from, this feature, as described below.
-
-== Example of a tag:feature tag
-
-[source,xml]
---------------------------------------
-<feature api="vulkan" name="VK_VERSION_1_0" number="1.0">
- <require comment="Header boilerplate">
- <type name="vk_platform"/>
- </require>
- <require comment="API constants">
- <enum name="VK_MAX_PHYSICAL_DEVICE_NAME"/>
- <enum name="VK_LOD_CLAMP_NONE"/>
- </require>
- <require comment="Device initialization">
- <command name="vkCreateInstance"/>
- </require>
-</feature>
---------------------------------------
-
-When processed into a C header for Vulkan, this results in:
-
-[source,c]
---------------------------------------
-#ifndef VK_VERSION_1_0
-#define VK_VERSION_1_0 1
-#define VK_MAX_EXTENSION_NAME 256
-#define VK_LOD_CLAMP_NONE MAX_FLOAT
-typedef VkResult (VKAPI_PTR *PFN_vkCreateInstance)(const VkInstanceCreateInfo* pCreateInfo, VkInstance* pInstance);
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateInstance(
- const VkInstanceCreateInfo* pCreateInfo,
- VkInstance* pInstance);
-#endif
-#endif /* VK_VERSION_1_0 */
---------------------------------------
-
-
-[[tag-extensions]]
-= Extension Blocks (tag:extensions tag)
-
-The tag:extensions tag contains definitions of each of the extenions which
-are defined for the API.
-
-== Attributes of tag:extensions tags
-
- * attr:comment - optional.
- Arbitrary string (unused).
-
-== Contents of tag:extensions tags
-
-Each tag:extensions block contains zero or more tag:extension tags, each
-describing an API extension, in arbitrary order (although they are typically
-ordered by sorting on the extension name, to improve human readability).
-
-
-[[tag-extension]]
-= API Extensions (tag:extension tag)
-
-API extensions are described in individual tag:extension tags.
-An extension is the set of interfaces defined by a particular API extension
-specification, such as `ARB_multitexture`.
-tag:extension is similar to tag:feature, but instead of having attr:version
-and attr:profile attributes, instead has a attr:supported attribute, which
-describes the set of API names which the extension can potentially be
-implemented against.
-
-== Attributes of tag:extension tags
-
- * attr:name - required.
- Extension name, following the conventions in 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 may not have a
- well-defined author or contact in the tag.
- This attribute is not used in processing the XML.
- It is just metadata, mostly used to track the original author of an
- extension (which may have since been promoted to use a different author
- ID).
- * attr:contact - optional.
- The contact who registered or is currently responsible for extensions
- and layers using the tag, including sufficient contact information to
- reach the contact such as individual name together with Github username
- (`@username`), Khronos internal Gitlab username (`gitlab:@username`) if
- no public Github contact is available, or other contact information.
- If not present, this can be taken from the corresponding tag:tag
- attribute just like attr:author.
- * attr:type - required if the attr:supported attribute is not
- `'disabled'`.
- Must be either `'device'` or `'instance'`, if present.
- * attr:requires - optional.
- Comma-separated list of extension names this extension requires to be
- supported.
- Extensions whose attr:type is `'instance'` must not require extensions
- whose attr:type is `'device'`.
- * attr:requiresCore - optional.
- Core version of Vulkan required by the extension, e.g. "1.1".
- Defaults to "1.0".
- * attr:protect - optional.
- An additional preprocessor token used to protect an extension
- definition.
- Usually another feature or extension attr:name.
- Rarely used, for odd circumstances where the definition of an extension
- requires another extension or a header file to be defined first.
- * attr:platform - optional.
- Indicates that the extension is specific to the platform identified by
- the attribute value, and should be emitted conditional on that platform
- being available, in a platform-specific header, etc.
- The attribute value must be the same as one of the tag:platform tag:name
- attribute values.
- * attr:supported - required <<schema:apiname, API names>> this extension
- is defined for.
- When the extension tag is just reserving an extension number, use
- `supported="disabled"` to indicate this extension should never be
- processed.
- Interfaces defined in a `disabled` extension block are tentative at best
- and must: not be generated or otherwise used by scripts processing the
- XML.
- The only exception to this rule is for scripts used solely for
- reserving, or checking for reserved bitflag values.
- * attr:promotedto - optional.
- A Vulkan version or a name of an extension that this extension was
- _promoted_ to.
- E.g. `"VK_VERSION_1_1"`, or `"VK_KHR_draw_indirect_count"`.
- * attr:deprecatedby - optional.
- A Vulkan version or a name of an extension that _deprecates_ this
- extension.
- It may be an empty string.
- E.g. `"VK_VERSION_1_1"`, or `"VK_EXT_debug_utils"`, or `""`.
- * attr:obsoletedby - optional.
- A Vulkan version or a name of an extension that _obsoletes_ this
- extension.
- It may be an empty string.
- E.g. `"VK_VERSION_1_1"`, or `"VK_KHR_maintenance1"`, or `""`.
- * attr:provisional - optional.
- 'true' if this extension is released provisionally.
- * attr:specialuse - optional.
- If present, must contain one or more tokens separated by commas,
- indicating a special purpose of the extension.
- Tokens may include:
- ** 'cadsupport' - for support of CAD software.
- ** 'd3demulation' - for support of Direct3D emulation layers or libraries,
- or applications porting from Direct3D.
- ** 'debugging' - for debugging an application.
- ** 'devtools' - for support of developer tools, such as capture-replay
- libraries.
- ** 'glemulation' - for support of OpenGL and/or OpenGL ES emulation layers
- or libraries, or applications porting from those APIs.
- * attr:comment - optional.
- Arbitrary string (unused).
-
-
-[NOTE]
-.Note
-====
-The attr:requires attribute is used to specify other extensions that *must*
-be enabled for an extension to be enabled.
-
-In some cases, an extension may include functionality which is only defined
-*if* another extension is enabled.
-Such functionality should be specified within a tag:require, using the
-attr:extension attribute to specify that extension.
-====
-
-== Contents of tag:extension tags
-
-Zero or more <<tag-required,tag:require and tag:remove tags>>, in arbitrary
-order.
-Each tag describes a set of interfaces that is respectively required for, or
-removed from, this extension, as described below.
-
-== Example of an tag:extensions tag
-
-[source,xml]
---------------------------------------
-<extension name="VK_KHR_display_swapchain" number="4" supported="vulkan">
- <require>
- <enum value="9" name="VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION"/>
- <enum value="4" name="VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NUMBER"/>
- <enum value="&quot;VK_KHR_display_swapchain&quot;"
- name="VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME"/>
- <type name="VkDisplayPresentInfoKHR"/>
- <command name="vkCreateSharedSwapchainsKHR"/>
- </require>
-</extension>
---------------------------------------
-
-The attr:supported attribute says that the extension is defined for the
-default profile (`vulkan`).
-When processed into a C header for the `vulkan` profile, this results in
-header contents something like (assuming corresponding definitions of the
-specified tag:type and tag:command elsewhere in the XML):
-
-[source,c]
---------------------------------------
-#define VK_KHR_display_swapchain 1
-#define VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION 9
-#define VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NUMBER 4
-#define VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME "VK_KHR_display_swapchain"
-
-typedef struct VkDisplayPresentInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkRect2D srcRect;
- VkRect2D dstRect;
- VkBool32 persistent;
-} VkDisplayPresentInfoKHR;
-
-typedef VkResult (VKAPI_PTR *PFN_vkCreateSharedSwapchainsKHR)(
- VkDevice device, uint32_t swapchainCount,
- const VkSwapchainCreateInfoKHR* pCreateInfos,
- const VkAllocationCallbacks* pAllocator,
- VkSwapchainKHR* pSwapchains);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateSharedSwapchainsKHR(
- VkDevice device,
- uint32_t swapchainCount,
- const VkSwapchainCreateInfoKHR* pCreateInfos,
- const VkAllocationCallbacks* pAllocator,
- VkSwapchainKHR* pSwapchains);
-#endif
---------------------------------------
-
-
-[[tag-required]]
-= Required and Removed Interfaces (tag:require and tag:remove tags)
-
-A tag:require block defines a set of interfaces (types, enumerants and
-commands) 'required' by a tag:feature or tag:extension.
-A tag:remove block defines a set of interfaces 'removed' by a tag:feature.
-This is primarily for future profiles of an API which may choose to
-deprecate and/or remove some interfaces.
-Extensions should never remove interfaces, although this usage is allowed by
-the schema).
-Except for the tag name and behavior, the contents of tag:require and
-tag:remove tags are identical.
-
-== Attributes of tag:require and tag:remove tags
-
- * attr:profile - optional.
- String name of an API profile.
- Interfaces in the tag are only required (or removed) if the specified
- profile is being generated.
- If not specified, interfaces are required (or removed) for all API
- profiles.
- * attr:comment - optional.
- Arbitrary string (unused).
- * attr:api - optional <<schema:apiname, API names>> requiring or removing
- these interfaces.
- Interfaces in the tag are only required (or removed) if the requested
- API name matches the attribute.
- If not specified, interfaces are required (or removed) for all APIs.
-
-[NOTE]
-.Note
-====
-The attr:api attribute is only supported inside tag:extension tags, since
-tag:feature tags already define a specific API.
-====
-
-== Attributes of tag:require tags
-
-These attribues are allowed only for a tag:require tag.
-
- * attr:extension - optional, and only for tag:require tags.
- String containing an API extension name.
- Interfaces in the tag are only required if the string matches the
- attr:name of an tag:extension tag, and that extension is enabled.
- * attr:feature - optional, and only for tag:require tags.
- String containing an API feature name.
- Interfaces in the tag are only required if the string matches the
- attr:name of a tag:feature tag, and that feature is enabled.
-
-[NOTE]
-.Note
-====
-The attr:extension attribute currently does not affect output generators in
-any way, and is simply metadata.
-This will be addressed as we better define different types of dependencies
-between extensions.
-====
-
-== Contents of tag:require and tag:remove tags
-
-Zero or more of the following tags, in any order:
-
-=== Comment Tags
-
-<<tag-comment, tag:comment>> (as described above).
-
-=== Command Tags
-
-tag:command specifies an required (or removed) command defined in a
-tag:commands block.
-The tag has no content, but contains attributes:
-
- * attr:name - required.
- Name of the command.
- * attr:comment - optional.
- Arbitrary string (unused).
-
-=== Enum tags
-
-tag:enum specifies an required (or removed) enumerant defined in a tag:enums
-block.
-All forms of this tag support the following attributes:
-
- * attr:name - required.
- Name of the enumerant.
- * attr:comment - optional.
- Arbitrary string (unused).
- * attr:api - optional <<schema:apiname, API names>> for which this
- definition is specialized, so that different APIs may have different
- values for the same token.
- This definition is only used if the requested API name matches the
- attribute.
- May be used to address subtle incompatibilities.
-
-There are two forms of tag:enum tags:
-
-_Reference enums_ simply pull in the definition of an enumerant given in a
-separate tag:enums block.
-No attributes other than attr:name and attr:comment are supported for them.
-tag:enum tags appearing inside tag:remove tags should always be reference
-enums.
-Reference enums may also be used inside tag:require tags, if the
-corresponding value is defined in a tag:enums block.
-This is typically used for constants not part of an enumerated type.
-
-_Extension enums_ define the value of an enumerant inline in an tag:feature
-or tag:extensions block.
-Typically these are used to add additional values specified by an extension
-or core feature to an existing enumerated type.
-There are a variety of attributes which are used to specify the value of the
-enumerant:
-
- * attr:value and attr:type - define a constant value in the same fashion
- as an tag:enum tag in an <<tag-enum,tag:enums>> block.
- * attr:bitpos - define a constant bitmask value in the same fashion as an
- <<tag-enum,tag:enum>> tag in an tag:enums block.
- attr:bitpos is a literal integer bit position in a bitmask.
- The same value and usage constraints apply to this bit position as are
- applied to the <<tag-enum, attr:bitpos attribute of an tag:enum tag.
- * attr:extends - the name of a separately defined enumerated type (e.g. a
- tag:type tag with attr:category``="enum"``) to which the extension
- enumerant is added.
- The enumerated type is required to complete the definition of the
- enumerant, in the same fashion as the attr:requires attribute of a
- tag:type tag.
- If not present, the enumerant is treated as a global constant value.
- * attr:extnumber - an extension number.
- The extension number in turn specifies the starting value of a block
- (range) of values reserved for enumerants defined by or associated with
- the corresponding tag:extension tag with the same attr:number.
- This is used when an extension or core feature needs to extend an
- enumerated type in a block defined by a different extension.
- * Attribute attr:offset - the offset within an extension block.
- If attr:extnumber is not present, the extension number defining that
- block is given by the attr:number attribute of the surrounding
- tag:extension tag.
- The actual numeric value of the enumerant is computed as defined in the
- "`Layers and Extensions`" appendix of the Vulkan Specification.
- * Attribute attr:dir - if present, the calculated enumerant value will be
- negative, instead of positive.
- Negative enumerant values are normally used only for Vulkan error codes.
- The attribute value must be specified as `dir="-"`.
- * attr:alias - the name of another enumerant this is an alias of.
- An enumerant alias is simply a different name for the same enumerant
- value.
- This is typically used when promoting an enumerant defined by an
- extension to a new core version of the API.
- The old extension enumerant is still defined, but as an alias of the new
- core enumerant.
- It may also be used when token names have been changed as a result of
- profile changes, or for consistency purposes.
- * attr:protect - define a preprocessor protection symbol for the enum in
- the same fashion as a tag:enum tag in an <<tag-enum,tag:enums>> block.
-
-Not all combinations of attributes are either meaningful or supported.
-The attr:protect attribute may always be present.
-For other attributes, the allowed combinations are:
-
-.Valid Combinations of attr:enum Attributes for Extension Enums
-|====
-| attr:value | attr:bitpos | attr:alias | attr:offset | attr:extnumber | attr:dir | attr:extends | Description
-| {yes} | {no} | {no} | {no} | {no} | {no} | {opt}^2^ | Numeric value
-| {no} | {yes} | {no} | {no} | {no} | {no} | {opt}^2^ | Bitmask value
-| {no} | {no} | {yes} | {no} | {no} | {no} | {opt}^2^ | Alias of another enumerant
-| {no} | {no} | {no} | {yes} | {opt}^1^ | {opt} | {yes} | Value added to an enumeration
-| {no} | {no} | {no} | {yes} | {opt}^1^ | {opt} | {yes} | Value added to an enumeration
-|====
-
-[1]: If attr:extnumber is not present, the tag:enum tag may only be within a
-tag:extension.
-Otherwise, the tag:enum tag may also be within a tag:feature.
-
-[2]: If attr:extends is not present, the enumerant value is a global
-constant.
-Otherwise, the value is added to the specified enumeration.
-
-Examples of <<tag-required-examples,various types of extension enumerants>>
-are given below.
-
-
-=== Type tags
-
-tag:type specifies a required (or removed) type defined in a tag:types
-block.
-Most types are picked up implicitly by using the tag:type tags of commands,
-but in a few cases, additional types need to be specified explicitly.
-It is unlikely that a type would ever be removed, although this usage is
-allowed by the schema.
-The tag has no content, but contains elements:
-
- * attr:name - required.
- Name of the type.
- * attr:comment - optional.
- Arbitrary string (unused).
-
-
-[[tag-required-examples]]
-== Examples of Extension Enumerants
-
-Examples of some of the supported extension enumerant tag:enum tags are
-given below.
-
-[source,xml]
---------------------------------------
-<extensions>
- <extension name="VK_KHR_test_extension" number="1" supported="vulkan">
- <require>
- <enum value="42" name="VK_KHR_TEST_ANSWER"/>
- <enum bitpos="29" name="VK_KHR_TEST_BITMASK"/>
- <enum offset="0" dir="-" extends="VkResult"
- name="VK_ERROR_SURFACE_LOST_KHR"/>
- <enum offset="1" extends="VkResult"
- name="VK_SUBOPTIMAL_KHR"/>
- <enum bitpos="30" extends="VkCullModeFlagBits"
- name="VK_KHR_TEST_CULL_MODE_BIT"/>
- </require>
- </extension>
-</extensions>
---------------------------------------
-
-The corresponding header file will include definitions like this:
-
-[source,c]
---------------------------------------
-typedef enum VkResult {
- <previously defined VkResult enumerant values},
- VK_ERROR_SURFACE_LOST_KHR = -1000000000,
- VK_SUBOPTIMAL_KHR = 1000000001,
- VK_KHR_EXTENSION_BIT = 0x80000000,
-};
-
-#define VK_KHR_test_extension 1
-#define VK_KHR_theanswer 42
-#define VK_KHR_bitmask 0x20000000
---------------------------------------
-
-
-[[examples]]
-= Examples / FAQ / How Do I?
-
-For people new to the Registry, it will not be immediately obvious how to
-make changes.
-This section includes some tips and examples that will help you make changes
-to the Vulkan headers by changing the Registry XML description.
-
-First, follow the steps described to <<starting,get the Vulkan Github
-repository>> containing the registry and assemble the tools necessary to
-work with the XML registry.
-Once you are able to regenerate the Vulkan headers from `vk.xml`, you can
-start making changes.
-
-
-== General Strategy
-
-If you are _adding_ to the API, perform the following steps to _create_ the
-description of that API element:
-
- * For each type, enum group, compile time constant, and command being
- added, create appropriate new tag:type, tag:enums, tag:enum, or
- tag:command tags defining the interface in question.
- * Make sure that all added types and commands appropriately tag their
- dependencies on other types by adding nested tag:type tags.
- * Make sure that each new tag defines the name of the corresponding type,
- enum group, constant, or command, and that structure/union types and
- commands tag the types and names of all their members and parameters.
- This is essential for the automatic dependency process to work.
-
-If you are _modifying_ existing APIs, just make appropriate changes in the
-existing tags.
-
-Once the definition is added, proceed to the next section to create
-dependencies on the changed feature.
-
-
-== API Feature Dependencies
-
-When you add new API elements, they will not result in corresponding changes
-in the generated header unless they are _required_ by the interface being
-generated.
-This makes it possible to include different API versions and extensions in a
-single registry and pull them out as needed.
-So you must introduce a dependency on new features in the corresponding
-tag:feature tag.
-
-Initially, the only API feature is Vulkan 1.0, so there is only one
-tag:feature tag in `vk.xml`.
-You can find it by searching for the following block of `vk.xml`:
-
-[source,xml]
---------------------------------------
-<comment>
-<feature api="vulkan" name="VK_VERSION_1_0" number="1.0"
- comment="Vulkan core API interface definitions">
---------------------------------------
-
-Inside the tag:feature tag are nested multiple tag:require tags.
-These are just being used as a logical grouping mechanism for related parts
-of Vulkan 1.0 at present, though they may have more meaningful roles in the
-future if different API profiles are defined.
-
-
-=== API Feature Walkthrough
-
-This section walks through the first few required API features in the
-`vk.xml` tag:feature tag, showing how each requirement pulls in type, token,
-and command definitions and turns those into definitions in the C header
-file `vulkan_core.h`.
-
-Consider the first few lines of the tag:feature:
-
-[source,xml]
---------------------------------------
-<require comment="Header boilerplate">
- <type name="vk_platform"/>
-</require>
-<require comment="API constants">
- <enum name="VK_MAX_PHYSICAL_DEVICE_NAME"/>
- <enum name="VK_MAX_EXTENSION_NAME"/>
- ...
-</require>
-<require comment="Device initialization">
- <command name="vkCreateInstance"/>
- ...
---------------------------------------
-
-The first tag:require block says to require a type named `vk_platform`.
-If you look at the beginning of the tag:types section, there is a
-corresponding definition section:
-
-[source,xml]
---------------------------------------
-<type name="vk_platform">#include "vk_platform.h"
-#define VK_MAKE_VERSION(major, minor, patch) \
- ((major &lt;&lt; 22) | (minor &lt;&lt; 12) | patch)
- ...
---------------------------------------
-
-This section is invoked by the requirement and emits a bunch of boilerplate
-C code.
-The explicit dependency is not strictly required since `vk_platform` will be
-required by many other types, but placing it first causes this to appear
-first in the output file.
-
-Note that `vk_platform` does not correspond to an actual C type, but instead
-to a collection of freeform preprocessor includes and macros and comments.
-Most other tag:type tags do define a specific type and are much simpler, but
-this approach can be used to inject arbitrary C into the Vulkan headers
-*when there is no other way*.
-In general inserting arbitrary C is strongly discouraged outside of specific
-special cases like this.
-
-The next tag:require block pulls in some compile time constants.
-These correspond to the definitions found in the first tag:enums section of
-`vk.xml`:
-
-[source,xml]
---------------------------------------
-<enums name="API Constants"
- comment="Vulkan hardcoded constants - not an enumerated type, part of the header boilerplate">
- <enum value="256" name="VK_MAX_PHYSICAL_DEVICE_NAME"/>
- <enum value="256" name="VK_MAX_EXTENSION_NAME"/>
- ...
---------------------------------------
-
-The third tag:require block starts pulling in some Vulkan commands.
-The first command corresponds to the following definition found in the
-tag:commands section of `vk.xml`:
-
-[source,xml]
---------------------------------------
-<commands>
- <command>
- <proto><type>VkResult</type> <name>vkCreateInstance</name></proto>
- <param>const <type>VkInstanceCreateInfo</type>* <name>pCreateInfo</name></param>
- <param><type>VkInstance</type>* <name>pInstance</name></param>
- </command>
- ...
---------------------------------------
-
-In turn, the tag:command tag requires the tag:types `VkResult`,
-`VkInstanceCreateInfo`, and `VkInstance` as part of its definition.
-The definitions of these types are determined as follows:
-
-For `VkResult`, the corresponding required tag:type is:
-
-[source,xml]
---------------------------------------
-<type name="VkResult" category="enum"/>
---------------------------------------
-
-Since this is an enumeration type, it simply links to an tag:enums tag with
-the same name:
-
-[source,xml]
---------------------------------------
-<enums name="VkResult" type="enum" comment="API result codes">
- <comment>Return codes (positive values)</comment>
- <enum value="0" name="VK_SUCCESS"/>
- <enum value="1" name="VK_UNSUPPORTED"/>
- <enum value="2" name="VK_NOT_READY"/>
- ...
- <comment>Error codes (negative values)</comment>
- <enum value="-1" name="VK_ERROR_OUT_OF_HOST_MEMORY" comment="A host memory allocation has failed"/>
- ...
---------------------------------------
-
-For `VkInstanceCreateInfo`, the required tag:type is:
-
-[source,xml]
---------------------------------------
-<type category="struct" name="VkInstanceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member>const void* <name>pNext</name></member>
- <member>const <type>VkApplicationInfo</type>* <name>pAppInfo</name></member>
- <member>const <type>VkAllocCallbacks</type>* <name>pAllocCb</name></member>
- <member><type>uint32_t</type> <name>extensionCount</name></member>
- <member>const <type>char</type>*const* <name>ppEnabledExtensionNames</name></member>
-</type>
---------------------------------------
-
-This is a structure type, defining a C `struct` with all the members defined
-in each tag:member tag in order.
-In addition, it requires some other types, whose definitions are located by
-name in exactly the same fashion.
-
-For the final direct dependency of the command, `VkInstance`, the required
-tag:type is:
-
-[source,xml]
---------------------------------------
- <comment>Types which can be void pointers or class pointers, selected at compile time</comment>
-<type>VK_DEFINE_BASE_HANDLE(<name>VkObject</name>)</type>
-<type>VK_DEFINE_DISP_SUBCLASS_HANDLE(<name>VkInstance</name>, <type>VkObject</type>)</type>
---------------------------------------
-
-In this case, the type `VkInstance` is defined by a special compile time
-macro which defines it as a derived class of `VkObject` (for `C```) or a
-less typesafe definition (for C).
-This macro is not part of the type dependency analysis, just the boilerplate
-used in the header.
-
-If these are the only tag:feature dependencies in `vk.xml`, the resulting
-`vulkan_core.h` header will look like this:
-
-[source,c]
---------------------------------------
-#ifndef VULKAN_H_
-#define VULKAN_H_ 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
-** Copyright 2015-2021 The Khronos Group Inc.
- ...
-*/
-
-/*
-** This header is generated from the Khronos Vulkan XML API Registry.
-**
-** Generated on date 20170208
-*/
-
-
-#define VK_VERSION_1_0 1
-#include "vk_platform.h"
-#define VK_MAKE_VERSION(major, minor, patch) \
- ((major << 22) | (minor << 12) | patch)
-
-// Vulkan API version supported by this file
-#define VK_API_VERSION VK_MAKE_VERSION(0, 104, 0)
-
-#if defined (__cplusplus) && (VK_UINTPTRLEAST64_MAX == UINTPTR_MAX)
- #define VK_TYPE_SAFE_COMPATIBLE_HANDLES 1
-#endif
-
-#if defined(VK_TYPE_SAFE_COMPATIBLE_HANDLES) && !defined(VK_DISABLE_TYPE_SAFE_HANDLES)
- #define VK_DEFINE_PTR_HANDLE(_obj) struct _obj##_T { char _placeholder; }; typedef _obj##_T* _obj;
- #define VK_DEFINE_PTR_SUBCLASS_HANDLE(_obj, _base) struct _obj##_T : public _base##_T {}; typedef _obj##_T* _obj;
-
- #define VK_DEFINE_BASE_HANDLE(_obj) VK_DEFINE_PTR_HANDLE(_obj)
- #define VK_DEFINE_DISP_SUBCLASS_HANDLE(_obj, _base) VK_DEFINE_PTR_SUBCLASS_HANDLE(_obj, _base)
- #define VK_DEFINE_NONDISP_SUBCLASS_HANDLE(_obj, _base) VK_DEFINE_PTR_SUBCLASS_HANDLE(_obj, _base)
-#else
- #define VK_DEFINE_BASE_HANDLE(_obj) typedef VkUintPtrLeast64 _obj;
- #define VK_DEFINE_DISP_SUBCLASS_HANDLE(_obj, _base) typedef uintptr_t _obj;
- #define VK_DEFINE_NONDISP_SUBCLASS_HANDLE(_obj, _base) typedef VkUintPtrLeast64 _obj;
-#endif
-
-typedef enum {
- VK_SUCCESS = 0,
- VK_UNSUPPORTED = 1,
- VK_NOT_READY = 2,
- ...
-} VkResult;
-typedef enum {
- VK_STRUCTURE_TYPE_APPLICATION_INFO = 0,
- ...
-} VKStructureType;
-typedef struct {
- VkStructureType sType;
- const void* pNext;
- const char* pAppName;
- uint32_t appVersion;
- const char* pEngineName;
- uint32_t engineVersion;
- uint32_t apiVersion;
-} VkApplicationInfo;
-typedef enum {
- VK_SYSTEM_ALLOC_TYPE_API_OBJECT = 0,
- ...
-} VkSystemAllocType;
-typedef void* (VKAPI_PTR *PFN_vkAllocFunction)(
- void* pUserData,
- size_t size,
- size_t alignment,
- VkSystemAllocType allocType);
-typedef void (VKAPI_PTR *PFN_vkFreeFunction)(
- void* pUserData,
- void* pMem);
-typedef struct {
- void* pUserData;
- PFN_vkAllocFunction pfnAlloc;
- PFN_vkFreeFunction pfnFree;
-} VkAllocCallbacks;
-typedef struct {
- VkStructureType sType;
- const void* pNext;
- const VkApplicationInfo* pAppInfo;
- const VkAllocCallbacks* pAllocCb;
- uint32_t extensionCount;
- const char*const* ppEnabledExtensionNames;
-} VkInstanceCreateInfo;
-VK_DEFINE_BASE_HANDLE(VkObject)
-VK_DEFINE_DISP_SUBCLASS_HANDLE(VkInstance, VkObject)
-#define VK_MAX_PHYSICAL_DEVICE_NAME 256
-#define VK_MAX_EXTENSION_NAME 256
-typedef VkResult (VKAPI_PTR *PFN_vkCreateInstance)(const VkInstanceCreateInfo* pCreateInfo, VkInstance* pInstance);
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateInstance(
- const VkInstanceCreateInfo* pCreateInfo,
- VkInstance* pInstance);
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
---------------------------------------
-
-Note that several additional types are pulled in by the type dependency
-analysis, but only those types, commands, and tokens required by the
-specified features are generated.
-
-
-[[compile-time-constants]]
-== How To Add A Compile Time Constant
-
-Go to the desired tag:feature or tag:extension tag.
-Add (if not present) a nested tag:require block labelled
-
-[source,xml]
---------------------------------------
-<require comment="API constants">
---------------------------------------
-
-In this block, add an (appropriately indented) tag like
-
-[source,xml]
---------------------------------------
- <enum name="VK_THE_ANSWER"/>
---------------------------------------
-
-Then go to the tag:enums block labelled
-
-[source,xml]
---------------------------------------
-<enums comment="Misc. hardcoded constants - not an enumerated type">
---------------------------------------
-
-In this block, add a tag whose attr:name attribute matches the attr:name you
-defined above and whose attr:value attribute is the value to give the
-constant:
-
-[source,xml]
---------------------------------------
- <enum value="42" type="uint32_t" name="VK_THE_ANSWER"/>
---------------------------------------
-
-The attr:type attribute must be present, and must have one of the allowed
-values `uint32_t`, `uint64_t`, or `float`.
-
-
-[[compile-time-constants-format]]
-== Allowed Format of Compile Time Constants
-
-The attr:value attribute must be a legal C99 constant scalar expression when
-evaluated at compilation time.
-Allowed expressions are additionally restricted to the following syntax:
-
- * a single C decimal integer or floating-point value
- * optionally prefixed with `~`
- * optionally suffixed with `U`, `UL`, `ULL`, or `F`
- * and the entire expression optionally surrounded by paired `(` and `)`.
-
-
-== How To Add A Struct or Union Type
-
-For this example, assume we want to define a type corresponding to a C
-`struct` defined as follows:
-
-[source,c]
---------------------------------------
-typedef struct {
- VkStructureType sType;
- const void* pNext;
- const VkApplicationInfo* pAppInfo;
- const VkAllocCallbacks* pAllocCb;
- uint32_t extensionCount;
- const char*const* ppEnabledExtensionNames;
-} VkInstanceCreateInfo;
---------------------------------------
-
-If `VkInstanceCreateInfo` is the type of a parameter of a command in the
-API, make sure that command's definition (see below for how to add a
-command) puts `VkInstanceCreateInfo` in nested tag:type tags where it is
-used.
-
-Otherwise, if the struct type is not used directly by a command in the API,
-nor required by a chain of type dependencies for other commands, an explicit
-tag:type dependency should be added to the tag:feature tag.
-Go to the tag:types tag and search for the nested block labelled
-
-[source,xml]
---------------------------------------
-<require comment="Types not directly used by the API. Include e.g. structs that are not parameter types of commands, but still defined by the API.">
- ...
---------------------------------------
-
-In this block, add a tag whose attr:name attribute matches the attr:name of
-the struct type being defined:
-
-[source,xml]
---------------------------------------
-<require comment="API types not used by commands">
- <type name="VkInstanceCreateInfo"/>
- ...
---------------------------------------
-
-Then go to the tag:types tag and add a new tag:type tag defining the struct
-names and members, somewhere below the corresponding comment, like this:
-
-[source,xml]
---------------------------------------
-<types>
- ...
- <comment>Struct types</comment>
- <type category="struct" name="VkInstanceCreateInfo">
- <member><type>VkStructureType</type>
- <name>sType</name></member>
- <member>const void*
- <name>pNext</name></member>
- <member>const <type>VkApplicationInfo</type>*
- <name>pAppInfo</name></member>
- <member>const <type>VkAllocCallbacks</type>*
- <name>pAllocCb</name></member>
- <member><type>uint32_t</type>
- <name>extensionCount</name></member>
- <member>const <type>char</type>*const*
- <name>ppEnabledExtensionNames</name></member>
- </type>
- ...
---------------------------------------
-
-If any of the member types are types also defined in the header, make sure
-to enclose those type names in nested tag:type tags, as shown above.
-Basic C types should not be tagged.
-
-If the type is a C `union`, rather than a `struct`, then set the value of
-the attr:category attribute to `"union"` instead of `"struct"`.
-
-
-== How To Add An Enumerated Type
-
-For this example, assume we want to define a type corresponding to a C
-`enum` defined as follows:
-
-[source,c]
---------------------------------------
-typedef enum {
- VK_DEVICE_CREATE_VALIDATION_BIT = 0x00000001,
- VK_DEVICE_CREATE_MULTI_DEVICE_IQ_MATCH_BIT = 0x00000002;
-} VkDeviceCreateFlagBits.
---------------------------------------
-
-If `VkDeviceCreateFlagBits` is the type of a parameter to a command in the
-API, or of a member in a structure or union, make sure that command
-parameter or struct member's definition puts `VkDeviceCreateFlagBits` in
-nested tag:type tags where it is used.
-
-Otherwise, if the enumerated type is not used directly by a command in the
-API, nor required by a chain of type dependencies for commands and structs,
-an explicit tag:type dependency should be added to the tag:feature tag in
-exactly the same fashion as described above for `struct` types.
-
-Next, go to the line labelled
-
-[source,xml]
---------------------------------------
-<comment>Vulkan enumerant (token) definitions</comment>
---------------------------------------
-
-At an appropriate point below this line, add an tag:enums tag whose
-attr:name attribute matches the tag:type name `VkDeviceCreateFlagBits`, and
-whose contents correspond to the individual fields of the enumerated type:
-
-[source,xml]
---------------------------------------
-<enums name="VkDeviceCreateFlagBits" type="bitmask">
- <enum bitpos="0" name="VK_DEVICE_CREATE_VALIDATION_BIT"/>
- <enum bitpos="1" name="VK_DEVICE_CREATE_MULTI_DEVICE_IQ_MATCH_BIT"/>
-</enums>
---------------------------------------
-
-Several other attributes of the tag:enums tag can be set.
-In this case, the attr:type attribute is set to `"bitmask"`, indicating that
-the individual enumerants represent elements of a bitmask.
-
-The individual tag:enum tags define the enumerants, just like the definition
-for compile time constants described above.
-In this case, because the enumerants are bits in a bitmask, their values are
-specified using the attr:bitpos attribute.
-The value of this attribute must be an integer in the range [0,30]
-specifying a single bit number, and the resulting value is printed as a
-hexadecimal constant corresponding to that bit.
-
-It is also possible to specify enumerant values using the attr:value
-attribute, in which case the specified numeric value is passed through to
-the C header unchanged.
-
-
-[[adding-bitflags]]
-== How To Add Bit Flags
-
-Bit masks are defined by two types in the xml - the type of the mask itself,
-and the type of the valid flags.
-
-For this example, assume we want to define bit flags that can handle up to
-64 independent values as follows:
-
-[source,c]
---------------------------------------
-// Flag bits for VkExampleFlagBits
-typedef VkFlags64 VkExampleFlagBits;
-static const VkExampleFlagBits VK_EXAMPLE_NONE = 0;
-static const VkExampleFlagBits VK_EXAMPLE_FIRST_BIT = 0x00000001;
-static const VkExampleFlagBits VK_EXAMPLE_SECOND_BIT = 0x00000002;
-
-typedef VkFlags64 VkExampleFlags;
---------------------------------------
-
-An explicit tag:type dependency should be added to the tag:feature tag in
-exactly the same fashion as described above for `struct` types.
-
-Firstly, a definition is needed for the flags type used as a parameter to
-commands or member of functions.
-Go to the line labelled:
-
-[source,xml]
---------------------------------------
-<comment>Bitmask types</comment>
---------------------------------------
-
-At the end of the list of `VkFlags` and `VkFlags64` types, add a definition
-of the flags type like so:
-
-[source,xml]
---------------------------------------
-<type bitvalues="VkExampleFlagBits" category="bitmask">typedef <type>VkFlags64</type> <name>VkExampleFlags</name>;</type>
---------------------------------------
-
-The attr:category defines this as a `"bitmask"` type.
-The attr:bitvalues attribute identifies the `*FlagBits` entry defining the
-flag bits associated with this type.
-
-Next, go to the line labelled:
-
-[source,xml]
---------------------------------------
-<comment>Types generated from corresponding enums tags below</comment>
---------------------------------------
-
-At an appropriate point in the list of enum types after this comment, add
-the following line:
-
-[source,xml]
---------------------------------------
-<type name="VkExampleFlagBits" category="enum"/>
---------------------------------------
-
-This defines a type for the flag bits for generators that need it.
-The attr:category attribute of `"enum"` identifies that this is an
-enumerated type.
-
-Finally, go to the line labelled:
-
-[source,xml]
---------------------------------------
-<comment>Vulkan enumerant (token) definitions</comment>
---------------------------------------
-
-At the end of the list of enum definitions below this line, add an tag:enums
-tag whose attr:name attribute matches the tag:type name `VkExampleFlagBits`,
-and whose contents correspond to the individual fields of the enumerated
-type:
-
-[source,xml]
---------------------------------------
-<enums name="VkExampleFlagBits" type="bitmask" bitwidth="64">
- <enum value="0" name="VK_EXAMPLE_NONE"/>
- <enum bitpos="0" name="VK_EXAMPLE_FIRST_BIT"/>
- <enum bitpos="1" name="VK_EXAMPLE_SECOND_BIT"/>
-</enums>
---------------------------------------
-
-The attr:type attribute is set to `"bitmask"`, indicating that the
-individual enumerants represent elements of a bitmask.
-The attr:bitwidth attribute is set to `"64"` indicating that this is a
-64-bit flag type.
-
-The individual tag:enum tags define the enumerants, just like the definition
-for compile time constants described above.
-In this case, a "no flags" type is defined in `VK_EXAMPLE_NONE` with the
-attr:value attribute defining it to have a hard value of 0.
-The other types have their values are specified using the attr:bitpos
-attribute, as these are actual bit flag values.
-The value of this attribute must be an integer in the range [0,63]
-specifying a single bit number, and the resulting value is printed as a
-hexadecimal constant corresponding to that bit.
-
-
-=== 32-bit Flags
-
-Bit flags can also be defined using 32-bit C enum types.
-Doing so is broadly similar to 64-bit bit flags, but with a few key
-differences.
-For this example, assume we want to define the same type as above, but
-corresponding to a C `enum` and flags type defined as follows:
-
-[source,c]
---------------------------------------
-typedef enum VkExampleFlagBits {
- VK_EXAMPLE_NONE
- VK_DEVICE_CREATE_VALIDATION_BIT = 0x00000001,
- VK_DEVICE_CREATE_MULTI_DEVICE_IQ_MATCH_BIT = 0x00000002;
-} VkExampleFlagBits;
-
-typedef VkFlags VkExampleFlags;
---------------------------------------
-
-To add this to the xml, entries need to be added to the XML in the same way
-as above, but with slightly different attributes:
-
-For the flag type definition, the entry should use `VkFlags` instead of
-`VkFlags64`, and require the flag bits type, instead of specifying the
-attr:bitvalues attribute:
-
-[source,xml]
---------------------------------------
-<type requires="VkExampleFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkExampleFlags</name>;</type>
---------------------------------------
-
-For the definition of the enumerated flag values themselves, the bitwidth
-needs to either be changed to `"32"`, or omitted entirely (which defaults to
-a bitwidth of 32) as follows:
-
-[source,xml]
---------------------------------------
-<enums name="VkExampleFlagBits" type="bitmask">
---------------------------------------
-
-Note that 32-bit bitmasks must use an integer in the range [0,30] - C enums
-are only guaranteed to support signed 32-bit integer values, and defining an
-unsigned value for the 31st bit could change the size of the enum type.
-The generator scripts will warn about values exceeding this range.
-
-
-== How to Add A Command
-
-For this example, assume we want to define the command:
-
-[source,c]
---------------------------------------
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateInstance(
- const VkInstanceCreateInfo* pCreateInfo,
- VkInstance* pInstance);
---------------------------------------
-
-Commands must always be explicitly required in the tag:feature tag.
-In that tag, you can use an existing tag:require block including API
-features which the new command should be grouped with, or define a new
-block.
-For this example, add a new block, and require the command by using the
-tag:command tag inside that block:
-
-[source,xml]
---------------------------------------
-<feature api="vulkan" name="VK_VERSION_1_0" number="1.0" comment="Vulkan core API interface definitions">
- ...
- <require comment="Device initialization">
- <command name="vkCreateInstance"/>
- </require>
- ...
-</feature>
---------------------------------------
-
-The tag:require block may include a attr:comment attribute whose value is a
-descriptive comment of the contents required within that block.
-The comment is not currently used in header generation, but might be in the
-future, so use comments which are polite and meaningful to users of the
-generated header files.
-
-Then go to the tag:commands tag and add a new tag:command tag defining the
-command, preferably sorted into alphabetic order with other commands for
-ease of reading, as follows:
-
-[source,xml]
---------------------------------------
-<commands comment="Vulkan command definitions">
- ...
- <command>
- <proto><type>VkResult</type>
- <name>vkCreateInstance</name></proto>
- <param>const <type>VkInstanceCreateInfo</type>*
- <name>pCreateInfo</name></param>
- <param><type>VkInstance</type>*
- <name>pInstance</name></param>
- </command>
- ...
-</commands>
---------------------------------------
-
-The tag:proto tag defines the return type and function name of the command.
-The tag:param tags define the command's parameters in the order in which
-they are passed, including the parameter type and name.
-The contents are laid out in the same way as the structure tag:member tags
-described previously.
-
-
-== More Complicated API Representations
-
-The registry schema can represent a good deal of additional information, for
-example by creating multiple tag:feature tags defining different API
-versions and extensions.
-This capability is not yet relevant to Vulkan.
-Those capabilities will be documented as they are needed.
-
-
-== More Complicated Output Formats And Other Languages
-
-The registry schema is oriented towards C-language APIs.
-Types and commands are defined using syntax which is a subset of C,
-especially for structure members and command parameters.
-It would be possible to use a language-independent syntax for representing
-such information, but since we are writing a C API, any such representation
-would have to be converted into C anyway at some stage.
-
-The `vulkan.h` header is written using an _output generator_ object in the
-Python scripts.
-This output generator is specialized for C, but the design of the scripts is
-intended to support writing output generators for other languages as well as
-purposes such as documentation (e.g. generating asciidoc fragments
-corresponding to types and commands for use in the API specification and
-reference pages).
-When targeting other languages, the amount of parsing required to convert
-type declarations into other languages is small.
-However, it will probably be necessary to modify some of the boilerplate C
-text, or specialize the tags by language, to support such generators.
-
-
-== Additional Semantic Tagging
-
-The schema is being extended to support semantic tags describing various
-properties of API features, such as:
-
- * constraints on allowed scalar values to function parameters (non-`NULL`,
- normalized floating-point, etc.)
- * length of arrays corresponding to function pointer parameters
- * miscellaneous properties of commands such as whether the application or
- system is responsible for threadsafe use; which queues they may be
- issued on; whether they are aliases or otherwise related to other
- commands; etc.
-
-These tags will be used by other tools for purposes such as helping create
-validation layers, generating serialization code, and so on.
-We would like to eventually represent everything about the API that is
-amenable to automatic processing within the registry schema.
-Please make suggestions on the Github issue tracker.
-
-
-[[general:stability]]
-== Stability of the XML Database and Schema
-
-The Vulkan XML schema is evolving in response to corresponding changes in
-the Vulkan API and ecosystem.
-Most such change will probably be confined to adding attributes to existing
-tags and properly expressing the relationships to them, and making API
-changes corresponding to accepted feature requests.
-Changes to the schema should be described in the <<changelog,change log>> of
-this document.
-Changes to the `.xml` files and Python scripts are logged in Github history.
-
-
-[[changelog]]
-= Change Log
-
- * 2021-08-22 - Update introductory descriptions of toolchain and scripts.
- * 2021-08-15 - Add an explicit description of the tag:enum attr:extends
- attribute as introducing a requirement for the enumerated type being
- extended.
- * 2021-07-12 - Note that tag:extension tags describing instance extensions
- must not have dependencies on device extensions (internal issue 2387).
- * 2021-06-14 - Add an `objecttype` attribute which specifies the
- relationship between a Vulkan handle and another member or parameter
- specifying the type of object that handle refers to (public issue 1536).
- * 2021-06-06 - Update description of the attr:supported attribute of
- <<tag-extension, tag:extension tags>> to mandate that `disabled`
- extensions are not processed (public issue 1549).
- * 2021-04-21 - Add the attr:limittype attribute to <<tag-type, structure
- tag:member tags>>, to describe how queried limits are interpreted
- (internal issue 2427).
- * 2021-03-30 - Add a description of the <<compile-time-constants-format,
- allowed format of compile time constants>> (internal merge request
- 4451).
- * 2021-03-22 - Update allowed values for the attr:type attribute of
- tag:enum tags and make it mandatory (internal issue 2564).
- * 2021-01-11 - Expand the scope of the attr:optional attribute tag:member
- and tag:param tags to specify that the member or parameter may be 0 for
- all scalar types, not just bitmasks and array sizes (internal issue
- 2435).
- * 2020-11-23 - Add `objtypeenum` attribute to <<tag:type, tag:type>> tags
- to link the object name to the corresponding `VK_OBJECT_TYPE_*`
- enumerant, if any (internal issue 2393).
- * 2020-11-22 - Add requirement that `pNext` members have the
- `optional="true"` attribute set (internal issue 2428).
- * 2020-10-14 - Remove advice to set the attr:noautovalidity attribute on
- the `pNext` member of extending structures in the <<tag:type, tag:type
- tag>>, since the validity generator scripts now take care of this
- (internal issue 2335).
- * 2020-06-02 - Add description of how to switch between 64- and 32-bit
- flags.
- * 2020-05-07 - Update description of <<schema:apiname, API Names>> to
- current usage, including allowing specifying multiple API names for a
- given feature or extension.
- * 2020-04-29 - Expand use of attr:category `basetype` in tag:type tags to
- include external API types.
- * 2020-02-20 - Clarify that tag:enum tags inside tag:remove tags must be
- reference enums, not containing attributes defining values.
- * 2020-01-13 - Restrict attr:bitpos to [0,30] to avoid poorly defined
- compiler behavior.
- * 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.
- * 2018-10-01 - Add description of the default value of attr:optional
- member and parameter attributes, if not specified.
- * 2018-08-28 - Add optional attr:provisional attribute to tag:extension
- tags.
- * 2018-07-07 - Add optional attr:promotedto, attr:deprecatedby, and
- attr:obsoletedby attributes to tag:extension tags.
- * 2018-06-25 - Remove attr:vendorids tags for Khronos vendor IDs.
- * 2018-05-08 - Add tag:driverids and tag:driverid tags for describing
- Vulkan driver implementation identification information.
- * 2018-04-15 - Add attr:requiresCore.
- * 2018-03-07 - Updated for Vulkan 1.1 release.
- * 2018-02-21 - Add descriptions of the attr:extnumber and attr:alias
- attributes used for defining tag:enum attributes, the attr:alias
- attribute used for defining tag:type aliases, the attr:name and
- attr:alias attributes used for defining tag:command aliases, the
- attr:platform attribute of tag:extension tags, and the attr:feature
- attribute of tag:require tags; and update the document to the header
- naming and grouping scheme used starting in Vulkan 1.1.
- * 2018-01-07 - Add tag:platforms and tag:platform tags for describing
- Vulkan platform names and preprocessor symbols.
- * 2017-09-10 - Define syntax of member and parameter attr:altlen
- attributes, for use by code generators.
- * 2017-09-01 - Define syntax of member and parameter attr:len attributes
- consistently and correctly for current uses of latexmath:
- * 2017-08-24 - Note that the tag:extension attribute attr:type must be
- specified if the extension is not disabled.
- * 2017-07-27 - Finish removing validextensionstructs attribute and
- replacing it with structextends.
- * 2017-07-14 - Add comment attributes or tags as valid content in several
- places, replacing XML comments which could not be preserved by XML
- transformation tools.
- * 2017-02-20 - Change to asciidoctor markup and move into the
- specification source directory for ease of building.
- * 2016-09-27 - Remove tag:validity and tag:usage tags, since these
- explicit usage statements have been moved to the specification source.
- * 2016-08-26 - Update for the single-branch model.
- * 2016-07-28 - Add attr:type and attr:requires attributes to tag:extension
- tags.
- * 2016-02-22 - Change math markup in attr:len attributes to use asciidoc
- `latexmath:[$` and `$]` delimiters.
- * 2016-02-19 - Add attr:successcodes and attr:errorcodes attributes of
- tag:command tags.
- Add a subsection to the introduction describing the schema choices and
- how to file issues against the registry.
- * 2016-02-07 - Add attr:vendorids tags for Khronos vendor IDs.
- * 2015-12-10 - Add attr:author and attr:contact attributes for
- tag:extension tags.
- * 2015-12-07 - Move `vulkan/vulkan.h` to a subdirectory.
- * 2015-12-01 - Add tag:tags tags for author tags.
- * 2015-11-18 - Bring documentation and schema up to date for extension
- enumerants.
- * 2015-11-02 - Bring documentation and schema up to date with several
- recent merges, including tag:validity tags.
- Still out of date WRT extension enumerants, but that will change soon.
- * 2015-09-08 - Rename `threadsafe` attribute to attr:externsync, and
- `implicitunsafeparams` tag to attr:implicitexternsync.
- * 2015-09-07 - Update tag:command tag description to remove the
- attr:threadsafe attribute and replace it with a combination of
- attr:threadunsafe attributes on individual parameters, and
- tag:implicitunsafeparams tags describing additional unsafe objects for
- the command.
- * 2015-08-04 - Add `basetype` and `funcpointer` attr:category values for
- type tags, and explain the intended use and order in which types in each
- category are emitted.
- * 2015-07-02 - Update description of Makefile targets.
- Add descriptions of attr:threadsafe, attr:queues, and attr:renderpass
- attributes of <<tag-command,tag:command>> tags, and of attr:modified
- attributes of <<tag-command:param,tag:param>> tags.
- * 2015-06-17 - add descriptions of allowed attr:category attribute values
- of tag:type tags, used to group and sort related categories of
- declarations together in the generated header.
- * 2015-06-04 - Add <<examples,examples of making changes and additions>>
- to the registry.
- * 2015-06-03 - Move location to new `vulkan` Git repository.
- Add definition of tag:type tags for C struct/unions.
- Start adding <<examples,examples of making changes>>.
- * 2015-06-02 - Branch from OpenGL specfile documentation and bring up to
- date with current Vulkan schema.
- * 2015-07-10 - Remove contractions to match the style guide.
- * 2015-07-19 - Move this document from LaTeX to asciidoc source format and
- make minor changes to markup.
diff --git a/codegen/vulkan/scripts/README.adoc b/codegen/vulkan/scripts/README.adoc
deleted file mode 100644
index 0a60629a..00000000
--- a/codegen/vulkan/scripts/README.adoc
+++ /dev/null
@@ -1,74 +0,0 @@
-// Copyright 2014-2021 The Khronos Group Inc.
-//
-// SPDX-License-Identifier: CC-BY-4.0
-
-= Vulkan^(R)^ Specification Repository Scripts
-
-This directory contains scripts used in building the Vulkan API
-specification and related artifacts. For the most part, these scripts are
-invoked from the top-level directory or from the API Registry in
-../xml to build generated components of the specification.
-
-Scripts in this directory include:
-
- * `genvk.py` - Python script to generate Vulkan headers and some other
- targets, using the generators described below.
- * `reg.py` - Python tools to read a registry XML file and call into
- generators to create headers and other types of output.
- * `conventions.py`, `vkconventions.py` - API-specific parameters and
- formatting / style conventions used by generators.
- * `generator.py` - output generator base class.
- ** `cgenerator.py` - C header output generator.
- ** `docgenerator.py` - Asciidoc interface language include generator.
- ** `extensionmetadocgenerator.py` - Generator for Asciidoc extension
- descriptions in spec appendices.
- ** `hostsyncgenerator.py` - Asciidoc host sync table generator.
- ** `pygenerator.py` - Generates python encoding of the API description.
- ** `validitygenerator.py` - Asciidoc validity language generator.
-
- * `check_spec_links.py` - validates a variety of markup and content in the
- Asciidoctor specification source.
- * `make_ext_dependency.py` - generate extension dependencies in Bash and
- Python form for use when building the specification.
- * `genRelease`, `genspec.py` - build HTML and PDF Specifications with a
- variety of options to control target directories, extensions included
- while building, etc.
- * `genRef.py`, `reflib.py` - extract API reference pages from specification
- source into single-page source documents.
- * `indexExt.py` - generate HTML index of all extensions for inclusion into
- the Vulkan registry index page.
- * `reflow.py`, `reflow_count.py` - reflow specification source text to follow
- style guidelines, and insert Valid Usage statements where they're
- needed.
- * `test_check_spec_links.py`, `test_check_spec_links_api_specific.py`,
- `test_entity_db.py` - these are from another Khronos WG repository and
- are unused by Vulkan at present.
-
- * `compImages.sh` - compare images in two branches.
- * `htmldiff/htmldiff` - HTML diff script (see below).
- * `Retired/` - contains obsolete, unused, or single-purpose scripts. Not
- maintained.
-
-HTML Diff Script for Vulkan
-===========================
-
-This is a first cut at a script to compare Vulkan HTML specifications. Usage
-is simply 'htmldiff file1.html file2.html > diff.html'. The script does not
-copy CSS and images required by the input specs, so it's best to generate
-the output in the same directory as one of the inputs. However, the script
-must be invoked from the directory it is located within.
-
-The scripts used require Python and Perl. Additionally, the python
-'utidylib' module and the underlying libtidy C library are required.
-On Debian Linux, it may be necessary to install the 'python-utidylib' and
-'libtidy' packages if they are not already present.
-
-The scripts are taken from the code backing the
-
- http://services.w3.org/htmldiff
-
-website. `htmldiff` is the Python driver script. `htmldiff.pl` is the
-Perl script which generates the diff after preprocessing of the input
-HTML by `htmldiff`. `htmldiff.orig` is the original Python script from
-the website, modified to run at the command line instead of as a CGI
-script.
diff --git a/codegen/vulkan/scripts/Retired/checkLinks.py b/codegen/vulkan/scripts/Retired/checkLinks.py
deleted file mode 100755
index 35103a80..00000000
--- a/codegen/vulkan/scripts/Retired/checkLinks.py
+++ /dev/null
@@ -1,353 +0,0 @@
-#!/usr/bin/python3
-#
-# Copyright 2015-2021 The Khronos Group Inc.
-#
-# SPDX-License-Identifier: Apache-2.0
-
-# checkLinks.py - validate link/reference API constructs in files
-#
-# Usage: checkLinks.py [options] files > logfile
-#
-# Options:
-# -follow attempt to follow include:: directives. This script isn't # an
-# Asciidoctor processor, so only literal relative paths can # be followed.
-# -info print some internal diagnostics.
-# -paramcheck attempt to validate param: names against the surrounding
-# context (the current structure/function being validated, for example).
-# This generates many false positives, so is not enabled by default.
-# -fatal unvalidatable links cause immediate error exit from the script.
-# Otherwise, errors are accumulated and summarized at the end.
-#
-# Depends on vkapi.py, which is a Python representation of relevant parts
-# of the Vulkan API. Only works when vkapi.py is generated for the full
-# API, e.g. 'makeAllExts checklinks'; otherwise many false-flagged errors
-# will occur.
-
-import copy, os, pdb, re, string, sys
-from vkapi import *
-
-global curFile, curLine, sectionDepth
-global errCount, warnCount, emittedPrefix, printInfo
-
-curFile = '???'
-curLine = -1
-sectionDepth = 0
-emittedPrefix = {}
-printInfo = False
-
-# Called before printing a warning or error. Only prints once prior
-# to output for a given file.
-def emitPrefix():
- global curFile, curLine, emittedPrefix
- if (curFile not in emittedPrefix.keys()):
- emittedPrefix[curFile] = None
- print('Checking file:', curFile)
- print('-------------------------------')
-
-def info(*args, **kwargs):
- global curFile, curLine, printInfo
- if (printInfo):
-
- emitPrefix()
- print('INFO: %s line %d:' % (curFile, curLine),
- ' '.join([str(arg) for arg in args]))
-
-# Print a validation warning found in a file
-def warning(*args, **kwargs):
- global curFile, curLine, warnCount
-
- warnCount = warnCount + 1
- emitPrefix()
- print('WARNING: %s line %d:' % (curFile, curLine),
- ' '.join([str(arg) for arg in args]))
-
-# Print a validation error found in a file
-def error(*args, **kwargs):
- global curFile, curLine, errCount
-
- errCount = errCount + 1
- emitPrefix()
- print('ERROR: %s line %d:' % (curFile, curLine),
- ' '.join([str(arg) for arg in args]))
-
-# See if a tag value exists in the specified dictionary and
-# suggest it as an alternative if so.
-def checkTag(tag, value, dict, dictName, tagName):
- if (value in dict.keys()):
- warning(value, 'exists in the API but not as a',
- tag + ': .', 'Try using the', tagName + ': tag.')
-
-# Report an error due to an asciidoc tag which doesn't match
-# a corresponding API entity.
-def foundError(errType, tag, value, fatal):
- global curFile, curLine
- error('no such', errType, tag + ':' + value)
- # Try some heuristics to detect likely problems such as missing vk
- # prefixes or the wrong tag.
-
- # Look in all the dictionaries in vkapi.py to see if the tag
- # is just wrong but the API entity actually exists.
- checkTag(tag, value, flags, 'flags', 'tlink/tname')
- checkTag(tag, value, enums, 'enums', 'elink')
- checkTag(tag, value, structs, 'structs', 'slink/sname')
- checkTag(tag, value, handles, 'handles', 'slink/sname')
- checkTag(tag, value, defines, 'defines', 'slink/sname')
- checkTag(tag, value, consts, 'consts', 'ename')
- checkTag(tag, value, protos, 'protos', 'flink/fname')
- checkTag(tag, value, funcpointers, 'funcpointers', 'tlink/tname')
-
- # Look for missing vk prefixes (quirky since it's case-dependent)
- # NOT DONE YET
-
- if fatal:
- print('ERROR: %s line %d:' % (curFile, curLine),
- ' '.join(['no such', errType, tag + ':' + value]), file=sys.stderr)
- sys.exit(1)
-
-# Look for param in the list of all parameters of the specified functions
-# Returns True if found, False otherwise
-def findParam(param, funclist):
- for f in funclist:
- if (param in protos[f]):
- info('parameter:', param, 'found in function:', f)
- return True
- return False
-
-# Initialize tracking state for checking links/includes
-def initChecks():
- global curFile, curLine, curFuncs, curStruct, accumFunc, sectionDepth
- global errCount, warnCount
- global incPat, linkPat, pathPat, sectionPat
-
- # Matches asciidoc single-line section tags
- sectionPat = re.compile('^(=+) ')
-
- # Matches any asciidoc include:: directive
- pathPat = re.compile('^include::([\w./_]+)\[\]')
-
- # Matches asciidoc include:: directives used in spec/ref pages (and also
- # others such as validity). This is specific to the layout of the api/
- # includes and allows any path precding 'api/' followed by the category
- # (protos, structs, enums, etc.) followed by the name of the proto,
- # struct, etc. file.
- incPat = re.compile('^.*api/(\w+)/(\w+)\.txt')
-
- # Lists of current /protos/ (functions) and /structs/ includes. There
- # can be several protos contiguously for different forms of a command
- curFuncs = []
- curStruct = None
-
- # Tag if we should accumulate funcs or start a new list. Any intervening
- # pname: tags or struct includes will restart the list.
- accumFunc = False
-
- # Matches all link names in the current spec/man pages. Assumes these
- # macro names are not trailing subsets of other macros. Used to
- # precede the regexp with [^A-Za-z], but this didn't catch macros
- # at start of line.
- linkPat = re.compile('([efpst](name|link)):(\w*)')
-
- # Total error/warning counters
- errCount = 0
- warnCount = 0
-
-# Validate asciidoc internal links in specified file.
-# infile - filename to validate
-# follow - if True, recursively follow include:: directives
-# paramCheck - if True, try to verify pname: refers to valid
-# parameter/member names. This generates many false flags currently
-# included - if True, function was called recursively
-# fatalExit - if True, validation errors cause an error exit immediately
-# Links checked are:
-# fname:vkBlah - Vulkan command name (generates internal link)
-# flink:vkBlah - Vulkan command name
-# sname:VkBlah - Vulkan struct name (generates internal link)
-# slink:VkBlah - Vulkan struct name
-# elink:VkEnumName - Vulkan enumeration ('enum') type name (generates internal link)
-# ename:VK_BLAH - Vulkan enumerant token name
-# pname:name - parameter name to a command or a struct member
-# tlink:name - Other Vulkan type name (generates internal link)
-# tname:name - Other Vulkan type name
-def checkLinks(infile, follow = False, paramCheck = True, included = False, fatalExit = False):
- global curFile, curLine, curFuncs, curStruct, accumFunc, sectionDepth
- global errCount, warnCount
- global incPat, linkPat, pathPat, sectionPat
-
- # Global state which gets saved and restored by this function
- oldCurFile = curFile
- oldCurLine = curLine
- curFile = infile
- curLine = 0
-
- # N.b. dirname() returns an empty string for a path with no directories,
- # unlike the shell dirname(1).
- if (not os.path.exists(curFile)):
- error('No such file', curFile, '- skipping check')
- # Restore global state before exiting the function
- curFile = oldCurFile
- curLine = oldCurLine
- return
-
- inPath = os.path.dirname(curFile)
- fp = open(curFile, 'r', encoding='utf-8')
-
- for line in fp:
- curLine = curLine + 1
-
- # Track changes up and down section headers, and forget
- # the current functions/structure when popping up a level
- match = sectionPat.search(line)
- if (match):
- info('Match sectionPat for line:', line)
- depth = len(match.group(1))
- if (depth < sectionDepth):
- info('Resetting current function/structure for section:', line)
- curFuncs = []
- curStruct = None
- sectionDepth = depth
-
- match = pathPat.search(line)
- if (match):
- incpath = match.group(1)
- info('Match pathPat for line:', line)
- info(' incpath =', incpath)
- # An include:: directive. First check if it looks like a
- # function or struct include file, and modify the corresponding
- # current function or struct state accordingly.
- match = incPat.search(incpath)
- if (match):
- info('Match incPat for line:', line)
- # For prototypes, if it is preceded by
- # another include:: directive with no intervening link: tags,
- # add to the current function list. Otherwise start a new list.
- # There is only one current structure.
- category = match.group(1)
- tag = match.group(2)
- # @ Validate tag!
- # @ Arguably, any intervening text should shift to accumFuncs = False,
- # e.g. only back-to-back includes separated by blank lines would be
- # accumulated.
- if (category == 'protos'):
- if (tag in protos.keys()):
- if (accumFunc):
- curFuncs.append(tag)
- else:
- curFuncs = [ tag ]
- # Restart accumulating functions
- accumFunc = True
- info('curFuncs =', curFuncs, 'accumFunc =', accumFunc)
- else:
- error('include of nonexistent function', tag)
- elif (category == 'structs'):
- if (tag in structs.keys()):
- curStruct = tag
- # Any /structs/ include means to stop accumulating /protos/
- accumFunc = False
- info('curStruct =', curStruct)
- else:
- error('include of nonexistent struct', tag)
- if (follow):
- # Actually process the included file now, recursively
- newpath = os.path.normpath(os.path.join(inPath, incpath))
- info(curFile, ': including file:', newpath)
- checkLinks(newpath, follow, paramCheck, included = True, fatalExit = fatalExit)
-
- matches = linkPat.findall(line)
- for match in matches:
- # Start actual validation work. Depending on what the
- # asciidoc tag name is, look up the value in the corresponding
- # dictionary.
- tag = match[0]
- value = match[2]
- if (tag == 'fname' or tag == 'flink'):
- if (value not in protos.keys()):
- foundError('function', tag, value, False)
- elif (tag == 'sname' or tag == 'slink'):
- if (value not in structs.keys() and
- value not in handles.keys()):
- foundError('aggregate/scalar/handle/define type', tag, value, False)
- elif (tag == 'ename'):
- if (value not in consts.keys() and value not in defines.keys()):
- foundError('enumerant/constant', tag, value, False)
- elif (tag == 'elink'):
- if (value not in enums.keys() and value not in flags.keys()):
- foundError('enum/bitflag type', tag, value, fatalExit)
- # tname and tlink are the same except if the errors are treated as fatal
- # They can be recombined once both are error-clean
- elif (tag == 'tname'):
- if (value not in funcpointers.keys() and value not in flags.keys()):
- foundError('function pointer/other type', tag, value, fatalExit)
- elif (tag == 'tlink'):
- if (value not in funcpointers.keys() and value not in flags.keys()):
- foundError('function pointer/other type', tag, value, False)
- elif (tag == 'pname'):
- # Any pname: tag means to stop accumulating /protos/
- accumFunc = False
- # See if this parameter is in the current proto(s) and struct
- foundParam = False
- if (curStruct and value in structs[curStruct]):
- info('parameter', value, 'found in struct', curStruct)
- elif (curFuncs and findParam(value, curFuncs)):
- True
- else:
- if paramCheck:
- warning('parameter', value, 'not found. curStruct =',
- curStruct, 'curFuncs =', curFuncs)
- else:
- # This is a logic error
- error('unknown tag', tag + ':' + value)
- fp.close()
-
- if (errCount > 0 or warnCount > 0):
- if (not included):
- print('Errors found:', errCount, 'Warnings found:', warnCount)
- print('')
-
- if (included):
- info('----- returning from:', infile, 'to parent file', '-----')
-
- # Don't generate any output for files without errors
- # else:
- # print(curFile + ': No errors found')
-
- # Restore global state before exiting the function
- curFile = oldCurFile
- curLine = oldCurLine
-
-if __name__ == '__main__':
- follow = False
- paramCheck = False
- included = False
- fatalExit = False
-
- totalErrCount = 0
- totalWarnCount = 0
-
- if (len(sys.argv) > 1):
- for file in sys.argv[1:]:
- if (file == '-follow'):
- follow = True
- elif (file == '-info'):
- printInfo = True
- elif file == '-paramcheck':
- paramCheck = True
- elif (file == '-fatal'):
- fatalExit = True
- else:
- initChecks()
- checkLinks(file,
- follow,
- paramCheck = paramCheck,
- included = included,
- fatalExit = fatalExit)
- totalErrCount = totalErrCount + errCount
- totalWarnCount = totalWarnCount + warnCount
- else:
- print('Need arguments: [-follow] [-info] [-paramcheck] [-fatal] infile [infile...]', file=sys.stderr)
-
- if (totalErrCount > 0 or totalWarnCount > 0):
- if (not included):
- print('TOTAL Errors found:', totalErrCount, 'Warnings found:',
- totalWarnCount)
- if totalErrCount > 0:
- sys.exit(1)
diff --git a/codegen/vulkan/scripts/Retired/extensionStubSource.py b/codegen/vulkan/scripts/Retired/extensionStubSource.py
deleted file mode 100644
index b9ff837e..00000000
--- a/codegen/vulkan/scripts/Retired/extensionStubSource.py
+++ /dev/null
@@ -1,327 +0,0 @@
-#!/usr/bin/python3 -i
-#
-# Copyright 2013-2021 The Khronos Group Inc.
-#
-# SPDX-License-Identifier: Apache-2.0
-
-import os,re,sys
-from generator import *
-
-doc = """
-/*
-** This target is no longer maintained and supported.
-** See README.adoc for discussion.
-**
-** This is a simple extension loader which provides the implementations for the
-** extension prototypes declared in vulkan header. It supports loading extensions either
-** for a single instance or a single device. Multiple instances are not yet supported.
-**
-** To use the loader add vulkan_ext.c to your solution and include <vulkan/vulkan_ext.h>.
-**
-** If your application is using a single instance, but multiple devices callParam
-**
-** vkExtInitInstance(instance);
-**
-** after initializing the instance. This way the extension loader will use the loaders
-** trampoline functions to call the correct driver for each call. This method is safe
-** if your application might use more than one device at the cost of one additional
-** indirection, the dispatch table of each dispatchable object.
-**
-** If your application uses only a single device it's better to use
-**
-** vkExtInitDevice(device);
-**
-** once the device has been initialized. This will resolve the function pointers
-** upfront and thus removes one indirection for each call into the driver. This *can*
-** result in slightly more performance for calling overhead limited cases.
-*/
-"""
-
-# StubExtGeneratorOptions - subclass of GeneratorOptions.
-#
-# Adds options used by COutputGenerator objects during C language header
-# generation.
-#
-# Additional members
-# prefixText - list of strings to prefix generated header with
-# (usually a copyright statement + calling convention macros).
-# alignFuncParam - if nonzero and parameters are being put on a
-# separate line, align parameter names at the specified column
-class StubExtGeneratorOptions(GeneratorOptions):
- """Represents options during C interface generation for headers"""
- def __init__(self,
- filename = None,
- directory = '.',
- apiname = None,
- profile = None,
- versions = '.*',
- emitversions = '.*',
- defaultExtensions = None,
- addExtensions = None,
- removeExtensions = None,
- emitExtensions = None,
- sortProcedure = regSortFeatures,
- prefixText = "",
- alignFuncParam = 0):
- GeneratorOptions.__init__(self, filename, directory, apiname, profile,
- versions, emitversions, defaultExtensions,
- addExtensions, removeExtensions,
- emitExtensions, sortProcedure)
- self.prefixText = prefixText
- self.alignFuncParam = alignFuncParam
-
-# ExtensionStubSourceOutputGenerator - subclass of OutputGenerator.
-# Generates C-language extension wrapper interface sources.
-#
-# ---- methods ----
-# ExtensionStubSourceOutputGenerator(errFile, warnFile, diagFile) - args as for
-# OutputGenerator. Defines additional internal state.
-# ---- methods overriding base class ----
-# beginFile(genOpts)
-# endFile()
-# beginFeature(interface, emit)
-# endFeature()
-# genType(typeinfo,name)
-# genStruct(typeinfo,name)
-# genGroup(groupinfo,name)
-# genEnum(enuminfo, name)
-# genCmd(cmdinfo)
-class ExtensionStubSourceOutputGenerator(OutputGenerator):
- """Generate specified API interfaces in a specific style, such as a C header"""
- # This is an ordered list of sections in the header file.
- TYPE_SECTIONS = ['include', 'define', 'basetype', 'handle', 'enum',
- 'group', 'bitmask', 'funcpointer', 'struct']
- ALL_SECTIONS = TYPE_SECTIONS + ['commandPointer', 'command']
- def __init__(self,
- errFile = sys.stderr,
- warnFile = sys.stderr,
- diagFile = sys.stdout):
- OutputGenerator.__init__(self, errFile, warnFile, diagFile)
- #
- def beginFile(self, genOpts):
- OutputGenerator.beginFile(self, genOpts)
- # C-specific
- #
- # Multiple inclusion protection & C++ wrappers.
-
- # Internal state - accumulators for function pointers and function
- # pointer initializatoin
- self.pointers = [];
- self.pointerInitializersInstance = [];
- self.pointerInitializersDevice = [];
-
- #
- # Write header protection
- filename = self.genOpts.directory + '/' + 'vulkan_ext.h'
- self.outFileHeader = open(filename, 'w', encoding='utf-8')
-
- write('#ifndef VULKAN_EXT_H', file=self.outFileHeader)
- write('#define VULKAN_EXT_H', file=self.outFileHeader)
- write('', file=self.outFileHeader)
- write('#ifdef __cplusplus', file=self.outFileHeader)
- write('extern "C" {', file=self.outFileHeader)
- write('#endif', file=self.outFileHeader)
-
- #
- # User-supplied prefix text, if any (list of strings)
- if (genOpts.prefixText):
- for s in genOpts.prefixText:
- write(s, file=self.outFile)
- write(s, file=self.outFileHeader)
-
- write(doc, file=self.outFileHeader)
-
- write('#include <vulkan/vulkan.h>', file=self.outFile)
- self.newline()
-
- write('#include <vulkan/vulkan_core.h>', file=self.outFileHeader)
- write('', file=self.outFileHeader)
-
- write('void vkExtInitInstance(VkInstance instance);', file=self.outFileHeader)
- write('void vkExtInitDevice(VkDevice device);', file=self.outFileHeader)
- write('', file=self.outFileHeader)
-
- def endFile(self):
- for pointer in self.pointers:
- write(pointer, file=self.outFile)
-
- self.newline()
-
- write('void vkExtInitInstance(VkInstance instance)\n{', file=self.outFile)
- for pointerInitializer in self.pointerInitializersInstance:
- write(pointerInitializer, file=self.outFile)
- write('}', file=self.outFile)
-
- self.newline()
-
- write('void vkExtInitDevice(VkDevice device)\n{', file=self.outFile)
- for pointerInitializer in self.pointerInitializersDevice:
- write(pointerInitializer, file=self.outFile)
- write('}', file=self.outFile)
-
- self.newline()
-
- #Finish header file
- write('#ifdef __cplusplus', file=self.outFileHeader)
- write('}', file=self.outFileHeader)
- write('#endif', file=self.outFileHeader)
- write('', file=self.outFileHeader)
- write('#endif', file=self.outFileHeader)
- self.outFileHeader.close()
-
- # Finish processing in superclass
- OutputGenerator.endFile(self)
-
- def beginFeature(self, interface, emit):
- # Start processing in superclass
- OutputGenerator.beginFeature(self, interface, emit)
-
- # Accumulate function pointers and function pointer initialization
- self.featurePointers = []
- self.featurePointerInitializersInstance = []
- self.featurePointerInitializersDevice = []
-
- def endFeature(self):
- # Add feature to global list with protectFeature
- if (self.emit and self.featurePointers):
- if (self.genOpts.protectFeature):
- self.pointers.append('#ifdef ' + self.featureName)
- self.pointerInitializersInstance.append('#ifdef ' + self.featureName)
- self.pointerInitializersDevice.append('#ifdef ' + self.featureName)
-
- if (self.featureExtraProtect != None):
- self.pointers.append('#ifdef ' + self.featureExtraProtect)
- self.pointerInitializersInstance.append('#ifndef ' + self.featureName)
- self.pointerInitializersDevice.append('#ifndef ' + self.featureName)
-
- self.pointers += self.featurePointers;
- self.pointerInitializersInstance += self.featurePointerInitializersInstance;
- self.pointerInitializersDevice += self.featurePointerInitializersDevice;
-
- if (self.featureExtraProtect != None):
- self.pointers.append('#endif /* ' + self.featureExtraProtect + ' */')
- self.pointerInitializersInstance.append('#endif /* ' + self.featureExtraProtect + ' */')
- self.pointerInitializersDevice.append('#endif /* ' + self.featureExtraProtect + ' */')
- if (self.genOpts.protectFeature):
- self.pointers.append('#endif /* ' + self.featureName + ' */')
- self.pointerInitializersInstance.append('#endif /* ' + self.featureName + ' */')
- self.pointerInitializersDevice.append('#endif /* ' + self.featureName + ' */')
-
- # Finish processing in superclass
- OutputGenerator.endFeature(self)
- #
- # Type generation
- def genType(self, typeinfo, name, alias):
- pass
-
- def genStruct(self, typeinfo, typeName, alias):
- pass
-
- def genGroup(self, groupinfo, groupName, alias):
- pass
-
- def genEnum(self, enuminfo, name, alias):
- pass
-
- #
- # Command generation
- def genCmd(self, cmdinfo, name, alias):
- OutputGenerator.genCmd(self, cmdinfo, name, alias)
-
- #
- decls = self.makeStub(cmdinfo.elem)
- self.featurePointerInitializersInstance.append(decls[0])
- self.featurePointerInitializersDevice.append(decls[1])
- self.featurePointers.append(decls[2])
-
- #
- # makeStub - return static declaration for function pointer and initialization of function pointer
- # as a two-element list of strings.
- # cmd - Element containing a <command> tag
- def makeStub(self, cmd):
- """Generate a stub function pointer <command> Element"""
- proto = cmd.find('proto')
- params = cmd.findall('param')
- name = cmd.find('name')
-
- # Begin accumulating prototype and typedef strings
- pfnDecl = 'static '
- pfnDecl += noneStr(proto.text)
-
- # Find the name tag and generate the function pointer and function pointer initialization code
- nameTag = proto.find('name')
- tail = noneStr(nameTag.tail)
- returnType = noneStr(proto.find('type').text)
-
- type = self.makeFunctionPointerType(nameTag.text, tail)
-
- # For each child element, if it's a <name> wrap in appropriate
- # declaration. Otherwise append its contents and tail con#tents.
- stubDecl = ''
- for elem in proto:
- text = noneStr(elem.text)
- tail = noneStr(elem.tail)
- if (elem.tag == 'name'):
- name = self.makeProtoName(text, tail)
- stubDecl += name
- else:
- stubDecl += text + tail
-
- pfnName = self.makeFunctionPointerName(nameTag.text, noneStr(tail));
- pfnDecl += type + ' ' + pfnName + ';'
-
- # Now generate the stub function
- pfnDecl += '\n'
-
- # Now add the parameter declaration list, which is identical
- # for prototypes and typedefs. Concatenate all the text from
- # a <param> node without the tags. No tree walking required
- # since all tags are ignored.
- n = len(params)
- paramdecl = '(\n'
-
- pfnCall = '\n{\n ' + ('return ', '')[returnType == 'void'] + pfnName + '(\n'
- # Indented parameters
- if n > 0:
- indentCallParam = '(\n'
- indentdecl = '(\n'
- for i in range(0,n):
- callParam = ''
-
- paramdecl += self.makeCParamDecl(params[i], self.genOpts.alignFuncParam)
- pfnCall += self.makeCCallParam(params[i], self.genOpts.alignFuncParam)
- if (i < n - 1):
- paramdecl += ',\n'
- pfnCall += ',\n'
- else:
- paramdecl += ')'
- pfnCall += '\n );\n'
- indentdecl += paramdecl
- indentCallParam += pfnCall
- else:
- indentdecl = '(void);'
-
- pfnCall += '}\n'
-
- featureInstance = ' ' + pfnName + ' = ('+type+')vkGetInstanceProcAddr(instance, "' + name + '");'
- featureDevice = ' ' + pfnName + ' = ('+type+')vkGetDeviceProcAddr(device, "' + name + '");'
- return [featureInstance, featureDevice , pfnDecl + stubDecl + paramdecl + pfnCall]
-
- # Return function pointer type for given function
- def makeFunctionPointerType(self, name, tail):
- return 'PFN_' + name + tail
-
- # Return name of static variable which stores the function pointer for the given function
- def makeFunctionPointerName(self, name, tail):
- return 'pfn_' + name + tail
-
- #
- # makeCParamDecl - return a string which is an indented, formatted
- # declaration for a <param> or <member> block (e.g. function parameter
- # or structure/union member).
- # param - Element (<param> or <member>) to format
- # aligncol - if non-zero, attempt to align the nested <name> element
- # at this column
- def makeCCallParam(self, param, aligncol):
- return ' ' + param.find('name').text
-
diff --git a/codegen/vulkan/scripts/Retired/findBalance.py b/codegen/vulkan/scripts/Retired/findBalance.py
deleted file mode 100755
index 2a9efe1f..00000000
--- a/codegen/vulkan/scripts/Retired/findBalance.py
+++ /dev/null
@@ -1,162 +0,0 @@
-#!/usr/bin/python3
-#
-# Copyright 2016-2021 The Khronos Group Inc.
-#
-# SPDX-License-Identifier: Apache-2.0
-
-# fixupRef.py - replace old // refBegin .. // refEnd syntax with new
-# open block syntax
-#
-# Usage: fixupRef.py [-outdir path] [-overwrite] files
-
-from reflib import *
-import argparse, copy, io, os, pdb, re, string, sys
-
-def prefix(depth):
- return ' ' * depth
-
-openPat = re.compile('^\[open,(?P<attribs>refpage=.*)\]')
-ifdefPat = re.compile('^if(n|)def::(?P<condition>.*)\[(?P<text>.*)\]')
-endifPat = re.compile('^endif::(?P<condition>.*)\[\]')
-
-# Look for imbalanced block delimiters and conditionals
-# specFile - filename to examine
-def findBalance(specFile):
- file = loadFile(specFile)
- if file == None:
- return
-
- # blocks[] is a stack of nesting constructs, each of which is
- # [ '--', line, None ] for a -- delimiter on line
- # [ 'ifdef', line, condition] for an ifdef or ifndef on line
- blocks = []
-
- line = 1
-
- for str in file:
- blockDepth = len(blocks)
- if blockDepth > 0:
- thisBlock = blocks[blockDepth-1]
- blockType = thisBlock[0]
- blockLine = thisBlock[1]
- blockCondition = thisBlock[2]
- else:
- thisBlock = None
- blockType = None
- blockLine = None
- blockCondition = None
-
- if str.rstrip() == '--':
- if (blockDepth > 0 and blockType == '--'):
- print(prefix(blockDepth - 1) +
- 'Closing -- block opened @', blockLine,
- '-> new block depth =', blockDepth - 1)
- blocks.pop()
- else:
- print(prefix(blockDepth) +
- 'Opening -- block @', line,
- '-> new block depth:', blockDepth + 1)
- blocks.append([ '--', line, None ])
- line = line + 1
- continue
-
- matches = beginPat.search(str)
- if matches != None:
- # print('Matched [open pattern @', line, ':', str.rstrip())
- line = line + 1
- continue
-
- matches = ifdefPat.search(str)
- if matches != None:
- condition = matches.group('condition')
- text = matches.group('text')
-
- if text != '':
- print('Matched self-closing if(n)def pattern @', line,
- 'condition:', condition, 'text:', text)
- else:
- print(prefix(blockDepth) +
- 'Opening if(n)def block @', line,
- '-> new block depth =', blockDepth + 1,
- 'condition:', condition)
- blocks.append([ 'ifdef', line, condition ])
-
- line = line + 1
- continue
-
- matches = endifPat.search(str)
- if matches != None:
- condition = matches.group('condition')
-
- if (blockDepth > 0):
- if blockType == 'ifdef':
- # Try closing an ifdef/ifndef block
- if blockCondition != condition:
- print('** WARNING:', specFile,
- 'endif @', blockLine,
- 'block depth:', blockDepth,
- 'condition', condition,
- 'does not match ifdef/ifndef @',
- blockLine, 'condition', blockCondition)
-
- print(prefix(blockDepth - 1) +
- 'Closing endif block @', line,
- '-> new block depth =', blockDepth - 1)
- blocks.pop()
- elif blockType == '--':
- # An overlap!
- print('** ERROR:', specFile, 'endif @', line,
- 'block depth:', blockDepth,
- 'overlaps -- block start @', blockLine)
- else:
- # Should never get here
- print('** ERROR:', specFile,
- 'block depth:', blockDepth,
- 'unknown open block type:', blockType)
- else:
- # Unlikely error condition from bad markup
- print('** ERROR:', specFile,
- 'block depth:', blockDepth,
- 'endif @', line, 'with no matching open block')
-
- line = line + 1
- continue
-
- line = line + 1
-
- blockDepth = len(blocks)
- if blockDepth > 0:
- print('** ERROR:', specFile, 'still in open block at EOF:',
- 'block depth =', blockDepth,
- 'block type:', blocks[blockDepth-1][0])
-
-if __name__ == '__main__':
- global genDict
- genDict = {}
-
- parser = argparse.ArgumentParser()
-
- parser.add_argument('-diag', action='store', dest='diagFile',
- help='Set the diagnostic file')
- parser.add_argument('-warn', action='store', dest='warnFile',
- help='Set the warning file')
- parser.add_argument('-log', action='store', dest='logFile',
- help='Set the log file for both diagnostics and warnings')
- parser.add_argument('files', metavar='filename', nargs='*',
- help='a filename to extract ref pages from')
- parser.add_argument('--version', action='version', version='%(prog)s 1.0')
-
- results = parser.parse_args()
-
- setLogFile(True, True, results.logFile)
- setLogFile(True, False, results.diagFile)
- setLogFile(False, True, results.warnFile)
-
- skipped = set()
- for file in results.files:
- findBalance(file)
-
- if len(skipped) > 0:
- print('Files containing skipped feature blocks:')
- for file in sorted(skipped):
- print('\t' + file)
diff --git a/codegen/vulkan/scripts/Retired/fixupRef.py b/codegen/vulkan/scripts/Retired/fixupRef.py
deleted file mode 100755
index 4a9b792a..00000000
--- a/codegen/vulkan/scripts/Retired/fixupRef.py
+++ /dev/null
@@ -1,202 +0,0 @@
-#!/usr/bin/python3
-#
-# Copyright 2016-2021 The Khronos Group Inc.
-#
-# SPDX-License-Identifier: Apache-2.0
-
-# fixupRef.py - replace old // refBegin .. // refEnd syntax with new
-# open block syntax
-#
-# Usage: fixupRef.py [-outdir path] [-overwrite] files
-
-from reflib import *
-from vkapi import *
-import argparse, copy, io, os, pdb, re, string, sys
-
-# Return 'None' for None, the string otherwise
-def noneStr(str):
- if str == None:
- return '(None)'
- else:
- return str
-
-# Escape single quotes in a string for asciidoc
-def escapeQuote(str):
- return str.replace("'", "\'")
-
-# Start a refpage open block
-def openBlock(pi, fp):
- if pi.refs != '':
- print("[open,refpage='" + pi.name +
- "',desc='" + pi.desc +
- "',type='" + pi.type +
- "',xrefs='" + pi.refs + "']",
- file=fp)
- else:
- print("[open,refpage='" + pi.name +
- "',desc='" + pi.desc +
- "',type='" + pi.type + "']",
- file=fp)
- print('--', file=fp)
-
-# End a refpage open block
-def closeBlock(pi, fp):
- print('--', file=fp)
- # Just for finding block ends while debugging
- # print("// end [open,refpage='" + pi.name + "']", file=fp)
-
-# Replace old // refBegin .. // refEnd references in an asciidoc
-# file with open blocks, per # ??? .
-# specFile - filename to extract from
-# outDir - output directory to write updated file to, if not overwritten
-# overwrite - True if the file should be overwritten in place
-# skipped - set of filenames containing commands which weren't
-# rewritten with open blocks (e.g. enums). Updated in place.
-def replaceRef(specFile, outDir, overwrite = False, skipped = set()):
- file = loadFile(specFile)
- if file == None:
- return
-
- # Save the path to this file for later use in rewriting relative includes
- specDir = os.path.dirname(os.path.abspath(specFile))
-
- pageMap = findRefs(file)
- logDiag(specFile + ': found', len(pageMap.keys()), 'potential pages')
-
- sys.stderr.flush()
-
- # Fix up references in pageMap
- fixupRefs(pageMap, specFile, file)
-
- # Map the page info dictionary into a dictionary of actions
- # keyed by line number they're performed on/after:
- # 'action' : 'begin' or 'end'. What to do on a refBegin or refEnd line
- # 'replace': True if this line needs to be replaced
- # 'name' : Name of the ref page being defined
- # 'desc' : One-line description of the ref page being defined
- # 'type' : Type of the ref page being defined, 'structs', 'protos', etc.
- # 'refs' : Space-separated string of crossreferenced pages
-
- actions = { }
-
- for name in pageMap.keys():
- pi = pageMap[name]
-
- # Cleanup parameters for output
- pi.name = noneStr(pi.name)
- pi.desc = escapeQuote(noneStr(pi.desc))
-
- if pi.extractPage:
- if (file[pi.begin][0:11] == '// refBegin'):
- # Replace line
- actions[pi.begin] = {
- 'action' : 'begin',
- 'replace' : True,
- 'pageinfo' : pi
- }
- else:
- # Insert line
- actions[pi.begin] = {
- 'action' : 'begin',
- 'replace' : False,
- 'pageinfo' : pi
- }
-
- if (file[pi.end][0:9] == '// refEnd'):
- # Replace line
- actions[pi.end] = {
- 'action' : 'end',
- 'replace' : True,
- 'pageinfo' : pi
- }
- else:
- # Insert line
- actions[pi.end] = {
- 'action' : 'end',
- 'replace' : False,
- 'pageinfo' : pi
- }
- else:
- logWarn('Skipping replacement for', pi.name, 'at', specFile,
- 'line', pi.begin)
- print('Skipping replacement for', pi.name, 'at', specFile,
- 'line', pi.begin)
- printPageInfo(pi, file)
- skipped.add(specFile)
-
- if overwrite:
- pageName = specFile
- else:
- pageName = outDir + '/' + os.path.basename(specFile)
-
- fp = open(pageName, 'w', encoding='utf-8')
-
- line = 0
- for text in file:
- if line in actions.keys():
- action = actions[line]['action']
- replace = actions[line]['replace']
- pi = actions[line]['pageinfo']
-
- logDiag('ACTION:', action, 'REPLACE:', replace, 'at line', line)
- logDiag('PageInfo of action:')
- printPageInfo(pi, file)
-
- if action == 'begin':
- openBlock(pi, fp)
- if not replace:
- print(text, file=fp, end='')
- elif action == 'end':
- if not replace:
- print(text, file=fp, end='')
- closeBlock(pi, fp)
- else:
- print('ERROR: unrecognized action:', action, 'in',
- specFile, 'at line', line)
- print(text, file=fp, end='')
- else:
- print(text, file=fp, end='')
- line = line + 1
-
- fp.close()
-
- #for line in sorted(actions.keys()):
- # action = actions[line]
- # print('action at line', line, '\t',
- # action[0], action[1], action[2])
-
-if __name__ == '__main__':
- global genDict
- genDict = {}
-
- parser = argparse.ArgumentParser()
-
- parser.add_argument('-diag', action='store', dest='diagFile',
- help='Set the diagnostic file')
- parser.add_argument('-warn', action='store', dest='warnFile',
- help='Set the warning file')
- parser.add_argument('-log', action='store', dest='logFile',
- help='Set the log file for both diagnostics and warnings')
- parser.add_argument('-outdir', action='store', dest='outDir',
- default='out',
- help='Set the base directory in which pages are generated')
- parser.add_argument('-overwrite', action='store_true',
- help='Overwrite input filenames instead of writing different output filenames')
- parser.add_argument('files', metavar='filename', nargs='*',
- help='a filename to extract ref pages from')
- parser.add_argument('--version', action='version', version='%(prog)s 1.0')
-
- results = parser.parse_args()
-
- setLogFile(True, True, results.logFile)
- setLogFile(True, False, results.diagFile)
- setLogFile(False, True, results.warnFile)
-
- skipped = set()
- for file in results.files:
- replaceRef(file, results.outDir, results.overwrite, skipped)
-
- if len(skipped) > 0:
- print('Files containing skipped feature blocks:')
- for file in sorted(skipped):
- print('\t' + file)
diff --git a/codegen/vulkan/scripts/Retired/insertTags.py b/codegen/vulkan/scripts/Retired/insertTags.py
deleted file mode 100755
index a8c494c1..00000000
--- a/codegen/vulkan/scripts/Retired/insertTags.py
+++ /dev/null
@@ -1,102 +0,0 @@
-#!/usr/bin/python3
-#
-# Copyright 2016-2021 The Khronos Group Inc.
-#
-# SPDX-License-Identifier: Apache-2.0
-
-# insertTags.py - insert // refBegin and // refEnd tags in Vulkan
-# spec source files.
-#
-# Usage: insertTags.py output-dir files
-
-# Short descriptions of ref pages, if not found
-from refDesc import *
-
-# Utility functions
-from reflib import *
-import copy, os, pdb, re, string, sys
-
-# Insert informative tags in a spec asciidoc source file
-# specFile - filename to add tags to
-# baseDir - output directory to generate page in
-def insertTags(specFile, baseDir):
- file = loadFile(specFile)
- if (file == None):
- return
- pageMap = findRefs(file)
- logDiag(specFile + ': found', len(pageMap.keys()), 'potential pages')
-
- # Fix up references in pageMap
- fixupRefs(pageMap, specFile, file)
-
- # Proceed backwards through the file, inserting
- # // refBegin name desc
- # lines where they're meaningful
-
- logDiag('Table of pages found:')
- logDiag('---------------------')
- for name in pageMap.keys():
- printPageInfo(pageMap[name], file)
-
- line = len(file) - 1
- while (line >= 0):
- # If this is a valid begin line without a description, and a
- # description exists in refDesc, add it.
- for name in pageMap.keys():
- pi = pageMap[name]
- if (pi.begin == line):
- if (not name in refDesc.keys()):
- if (pi.desc != None):
- logDiag('Description already exists, but no refDesc found for', name, 'at', specFile + ':' + str(line))
- else:
- if (pi.embed):
- logDiag('No refDesc found (this is OK) for embedded', name, 'at', specFile + ':' + str(line))
- else:
- logWarn('No refDesc found for', name, 'at', specFile + ':' + str(line))
- continue
-
- # New or replacement refBegin line, with short description
- newLine = '// refBegin ' + name + ' - ' + refDesc[name] + '\n'
-
- if (pi.desc == None):
- logDiag('Adding description for', name, 'at', specFile + ':' + str(line))
-
- # If there's already a refBegin on this line, replace it.
- # Otherwise, insert one.
- if (file[line].find('// refBegin') == 0):
- logDiag('Replacing existing refBegin without description for', name, 'at', specFile + ':' + str(line))
- file[line] = newLine
- else:
- logDiag('Inserting new refBegin at', specFile + ':' + str(line))
- # Add a blank line after the comment if it's new
- file.insert(line, newLine)
- file.insert(line, '\n')
- else:
- if (pi.desc[-1] == '.'):
- pi.desc = pi.desc[0:-1]
- if (pi.desc == refDesc[name]):
- logDiag('Not replacing description for', name, 'at', specFile + ':' + str(line), '- MATCHES existing one')
- else:
- logWarn('Replacing existing refBegin WITH description for', name, 'at', specFile + ':' + str(line))
- file[line] = newLine
- # logWarn('\t refDesc: ', refDesc[name])
- # logWarn('\tfile desc: ', pi.desc)
-
- line = line - 1
-
- pageName = baseDir + '/' + os.path.basename(specFile)
- logDiag('Creating output file', pageName)
- fp = open(pageName, 'w', encoding='utf-8')
- fp.writelines(file)
- fp.close()
-
-
-if __name__ == '__main__':
- logDiag('In main!')
-
- baseDir = 'man'
- follow = False
- if (len(sys.argv) > 2):
- baseDir = sys.argv[1]
- for file in sys.argv[2:]:
- insertTags(file, baseDir)
diff --git a/codegen/vulkan/scripts/Retired/realign.py b/codegen/vulkan/scripts/Retired/realign.py
deleted file mode 100755
index c2780d4c..00000000
--- a/codegen/vulkan/scripts/Retired/realign.py
+++ /dev/null
@@ -1,48 +0,0 @@
-#!/usr/bin/python3
-#
-# Copyright 2013-2021 The Khronos Group Inc.
-#
-# SPDX-License-Identifier: Apache-2.0
-
-# Usage: realign [infile] > outfile
-# Used to realign XML tags in the Vulkan registry after it's operated on by
-# some other filter, since whitespace inside a tag isn't part of the
-# internal representation.
-
-import copy, sys, string, re
-
-def realignXML(fp):
- patterns = [
- [ r'(^ *\<type .*)(category=[\'"]bitmask[\'"].*)', 58 ],
- [ r'(^ *\<enum [bv].*)(name=.*)', 28 ],
- [ r'(^ *\<enum [bv].*)(comment=.*)', 85 ]
- ]
-
- # Assemble compiled expressions to match and alignment columns
- numpat = len(patterns)
- regexp = [ re.compile(patterns[i][0]) for i in range(0,numpat)]
- column = [ patterns[i][1] for i in range(0,numpat)]
-
- lines = fp.readlines()
- for line in lines:
- emitted = False
- for i in range(0,len(patterns)):
- match = regexp[i].match(line)
- if (match):
- if (not emitted):
- #print('# While processing line: ' + line, end='')
- emitted = True
- #print('# matched expression: ' + patterns[i][0])
- #print('# clause 1 = ' + match.group(1))
- #print('# clause 2 = ' + match.group(2))
- line = match.group(1).ljust(column[i]) + match.group(2)
- if (emitted):
- print(line)
- else:
- print(line, end='')
-
-if __name__ == '__main__':
- if (len(sys.argv) > 1):
- realignXML(open(sys.argv[1], 'r', encoding='utf-8'))
- else:
- realignXML(sys.stdin)
diff --git a/codegen/vulkan/scripts/Retired/refDesc.py b/codegen/vulkan/scripts/Retired/refDesc.py
deleted file mode 100644
index be05a4bb..00000000
--- a/codegen/vulkan/scripts/Retired/refDesc.py
+++ /dev/null
@@ -1,356 +0,0 @@
-#!/usr/bin/python3
-#
-# Copyright 2016-2021 The Khronos Group Inc.
-#
-# SPDX-License-Identifier: Apache-2.0
-
-refDesc = {}
-
-# These are extracted from the original handwritten ref pages
-# This is a one-time measure to inject // refBegin markup into the spec.
-
-refDesc['vkAcquireNextImageKHR'] = 'Retrieve the index of the next available presentable image'
-refDesc['vkAllocateCommandBuffers'] = 'Allocate command buffers from an existing command pool'
-refDesc['vkAllocateDescriptorSets'] = 'Allocate one or more descriptor sets'
-refDesc['vkAllocateMemory'] = 'Allocate GPU memory'
-refDesc['VkAllocationCallbacks'] = 'Structure containing callback function pointers for memory allocation'
-refDesc['vkBeginCommandBuffer'] = 'Start recording a command buffer'
-refDesc['vkBindBufferMemory'] = 'Bind device memory to a buffer object'
-refDesc['vkBindImageMemory'] = 'Bind device memory to an image object'
-refDesc['VkBufferCreateFlags'] = 'Buffer object creation flags'
-refDesc['VkBufferCreateInfo'] = 'Structure specifying the parameters of a newly created buffer object'
-refDesc['VkBufferMemoryBarrier'] = 'Structure specifying the parameters of a buffer memory barrier'
-refDesc['VkBufferUsageFlags'] = 'Buffer object usage flags'
-refDesc['vkCmdBeginQuery'] = 'Begin a query'
-refDesc['vkCmdBeginRenderPass'] = 'Begin a new render pass'
-refDesc['vkCmdBindDescriptorSets'] = 'Binds descriptor sets to a command buffer'
-refDesc['vkCmdBindIndexBuffer'] = 'Bind an index buffer to a command buffer'
-refDesc['vkCmdBindPipeline'] = 'Bind a pipeline object to a command buffer'
-refDesc['vkCmdBindVertexBuffers'] = 'Bind vertex buffers to a command buffer'
-refDesc['vkCmdBlitImage'] = 'Copy regions of an image, potentially performing format conversion,'
-refDesc['vkCmdClearAttachments'] = 'Clear regions within currently bound framebuffer attachments'
-refDesc['vkCmdClearColorImage'] = 'Clear regions of a color image'
-refDesc['vkCmdClearDepthStencilImage'] = 'Fill regions of a combined depth-stencil image'
-refDesc['vkCmdCopyBufferToImage'] = 'Copy data from a buffer into an image'
-refDesc['vkCmdCopyBuffer'] = 'Copy data between buffer regions'
-refDesc['vkCmdCopyImageToBuffer'] = 'Copy image data into a buffer'
-refDesc['vkCmdCopyImage'] = 'Copy data between images'
-refDesc['vkCmdCopyQueryPoolResults'] = 'Copy the results of queries in a query pool to a buffer object'
-refDesc['vkCmdDispatchIndirect'] = 'Dispatch compute work items using indirect parameters'
-refDesc['vkCmdDispatch'] = 'Dispatch compute work items'
-refDesc['vkCmdDrawIndexedIndirect'] = 'Perform an indexed indirect draw'
-refDesc['vkCmdDrawIndexed'] = 'Issue an indexed draw into a command buffer'
-refDesc['vkCmdDrawIndirect'] = 'Issue an indirect draw into a command buffer'
-refDesc['vkCmdDraw'] = 'Draw primitives'
-refDesc['vkCmdEndQuery'] = 'Ends a query'
-refDesc['vkCmdEndRenderPass'] = 'End the current render pass'
-refDesc['vkCmdExecuteCommands'] = 'Execute a secondary command buffer from a primary command buffer'
-refDesc['vkCmdFillBuffer'] = 'Fill a region of a buffer with a fixed value'
-refDesc['vkCmdNextSubpass'] = 'Transition to the next subpass of a render pass'
-refDesc['vkCmdPipelineBarrier'] = 'Insert a set of execution and memory barriers'
-refDesc['vkCmdPushConstants'] = 'Update the values of push constants'
-refDesc['vkCmdResetEvent'] = 'Reset an event object to non-signaled state'
-refDesc['vkCmdResetQueryPool'] = 'Reset queries in a query pool'
-refDesc['vkCmdResolveImage'] = 'Resolve regions of an image'
-refDesc['vkCmdSetBlendConstants'] = 'Set the values of blend constants'
-refDesc['vkCmdSetDepthBias'] = 'Set the depth bias dynamic state'
-refDesc['vkCmdSetDepthBounds'] = 'Set the depth bounds test values for a command buffer'
-refDesc['vkCmdSetEvent'] = 'Set an event object to signaled state'
-refDesc['vkCmdSetLineWidth'] = 'Set the dynamic line width state'
-refDesc['vkCmdSetScissor'] = 'Set the dynamic scissor rectangles on a command buffer'
-refDesc['vkCmdSetStencilCompareMask'] = 'Set the stencil compare mask dynamic state'
-refDesc['vkCmdSetStencilReference'] = 'Set the stencil reference dynamic state'
-refDesc['vkCmdSetStencilWriteMask'] = 'Set the stencil write mask dynamic state'
-refDesc['vkCmdSetViewport'] = 'Set the viewport on a command buffer'
-refDesc['vkCmdUpdateBuffer'] = 'Update a buffer\'s contents from host memory'
-refDesc['vkCmdWaitEvents'] = 'Wait for one or more events and insert a set of memory'
-refDesc['vkCmdWriteTimestamp'] = 'Write a device timestamp into a query object'
-refDesc['VkCommandBufferAllocateInfo'] = 'Structure specifying the allocation parameters for command buffer object'
-refDesc['vkCreateAndroidSurfaceKHR'] = 'Create a slink:VkSurfaceKHR object for an Android native window'
-refDesc['vkCreateBuffer'] = 'Create a new buffer object'
-refDesc['vkCreateBufferView'] = 'Create a new buffer view object'
-refDesc['vkCreateCommandPool'] = 'Create a new command pool object'
-refDesc['vkCreateComputePipelines'] = 'Creates a new compute pipeline object'
-refDesc['vkCreateDescriptorPool'] = 'Creates a descriptor pool object'
-refDesc['vkCreateDescriptorSetLayout'] = 'Create a new descriptor set layout'
-refDesc['vkCreateDevice'] = 'Create a new device instance'
-refDesc['vkCreateDisplayModeKHR'] = 'Create a display mode'
-refDesc['vkCreateDisplayPlaneSurfaceKHR'] = 'Create a slink:VkSurfaceKHR structure representing a display plane and mode'
-refDesc['vkCreateEvent'] = 'Create a new event object'
-refDesc['vkCreateFence'] = 'Create a new fence object'
-refDesc['vkCreateFramebuffer'] = 'Create a new framebuffer object'
-refDesc['vkCreateGraphicsPipelines'] = 'Create graphics pipelines'
-refDesc['vkCreateImage'] = 'Create a new image object'
-refDesc['vkCreateImageView'] = 'Create an image view from an existing image'
-refDesc['vkCreateInstance'] = 'Create a new Vulkan instance'
-refDesc['vkCreateMirSurfaceKHR'] = 'Create a slink:VkSurfaceKHR object for a Mir window'
-refDesc['vkCreatePipelineCache'] = 'Creates a new pipeline cache'
-refDesc['vkCreatePipelineLayout'] = 'Creates a new pipeline layout object'
-refDesc['vkCreateQueryPool'] = 'Create a new query pool object'
-refDesc['vkCreateRenderPass'] = 'Create a new render pass object'
-refDesc['vkCreateSampler'] = 'Create a new sampler object'
-refDesc['vkCreateSemaphore'] = 'Create a new queue semaphore object'
-refDesc['vkCreateShaderModule'] = 'Creates a new shader module object'
-refDesc['vkCreateSharedSwapchainsKHR'] = 'Create multiple swapchains that share presentable images'
-refDesc['vkCreateSwapchainKHR'] = 'Create a swapchain'
-refDesc['vkCreateWaylandSurfaceKHR'] = 'Create a slink:VkSurfaceKHR object for a Wayland window'
-refDesc['vkCreateXcbSurfaceKHR'] = 'Create a slink:VkSurfaceKHR object for a X11 window, using the XCB client-side library'
-refDesc['vkCreateXlibSurfaceKHR'] = 'Create a slink:VkSurfaceKHR object for an X11 window, using the Xlib client-side library'
-refDesc['VkDescriptorSetAllocateInfo'] = 'Structure specifying the allocation parameters for descriptor sets'
-refDesc['VkDescriptorType'] = 'Specifies the type of a descriptor in a descriptor set'
-refDesc['vkDestroyBuffer'] = 'Destroy a buffer object'
-refDesc['vkDestroyBufferView'] = 'Destroy a buffer view object'
-refDesc['vkDestroyCommandPool'] = 'Destroy a command pool object'
-refDesc['vkDestroyDescriptorPool'] = 'Destroy a descriptor pool object'
-refDesc['vkDestroyDescriptorSetLayout'] = 'Destroy a descriptor set layout object'
-refDesc['vkDestroyDevice'] = 'Destroy a logical device'
-refDesc['vkDestroyEvent'] = 'Destroy an event object'
-refDesc['vkDestroyFence'] = 'Destroy a fence object'
-refDesc['vkDestroyFramebuffer'] = 'Destroy a framebuffer object'
-refDesc['vkDestroyImage'] = 'Destroy an image object'
-refDesc['vkDestroyImageView'] = 'Destroy an image view object'
-refDesc['vkDestroyInstance'] = 'Destroy an instance of Vulkan'
-refDesc['vkDestroyPipelineCache'] = 'Destroy a pipeline cache object'
-refDesc['vkDestroyPipelineLayout'] = 'Destroy a pipeline layout object'
-refDesc['vkDestroyPipeline'] = 'Destroy a pipeline object'
-refDesc['vkDestroyQueryPool'] = 'Destroy a query pool object'
-refDesc['vkDestroyRenderPass'] = 'Destroy a render pass object'
-refDesc['vkDestroySampler'] = 'Destroy a sampler object'
-refDesc['vkDestroySemaphore'] = 'Destroy a semaphore object'
-refDesc['vkDestroyShaderModule'] = 'Destroy a shader module'
-refDesc['vkDestroySurfaceKHR'] = 'Destroy a VkSurfaceKHR object'
-refDesc['vkDestroySwapchainKHR'] = 'Destroy a swapchain object'
-refDesc['vkDeviceWaitIdle'] = 'Wait for a device to become idle'
-refDesc['vkEndCommandBuffer'] = 'Finish recording a command buffer'
-refDesc['vkEnumerateDeviceExtensionProperties'] = 'Returns properties of available physical device extensions'
-refDesc['vkEnumerateDeviceLayerProperties'] = 'Returns properties of available physical device layers'
-refDesc['vkEnumerateInstanceExtensionProperties'] = 'Returns up to requested number of global extension properties'
-refDesc['vkEnumerateInstanceLayerProperties'] = 'Returns up to requested number of global layer properties'
-refDesc['vkEnumeratePhysicalDevices'] = 'Enumerates the physical devices accessible to a Vulkan instance'
-refDesc['vkFlushMappedMemoryRanges'] = 'Flush mapped memory ranges'
-refDesc['VkFormatFeatureFlags'] = 'Capability flags of a particular format'
-refDesc['vkFreeCommandBuffers'] = 'Free command buffers'
-refDesc['vkFreeDescriptorSets'] = 'Free one or more descriptor sets'
-refDesc['vkFreeMemory'] = 'Free GPU memory'
-refDesc['vkGetBufferMemoryRequirements'] = 'Returns the memory requirements for specified Vulkan object'
-refDesc['vkGetDeviceMemoryCommitment'] = 'Query the current commitment for a VkDeviceMemory'
-refDesc['vkGetDeviceProcAddr'] = 'Return a function pointer for a command'
-refDesc['vkGetDeviceQueue'] = 'Get a queue handle from a device'
-refDesc['vkGetDisplayModePropertiesKHR'] = 'Query the set of mode properties supported by the display'
-refDesc['vkGetDisplayPlaneCapabilitiesKHR'] = 'Query capabilities of a mode and plane combination'
-refDesc['vkGetDisplayPlaneSupportedDisplaysKHR'] = 'Query the list of displays a plane supports'
-refDesc['vkGetEventStatus'] = 'Retrieve the status of an event object'
-refDesc['vkGetFenceStatus'] = 'Return the status of a fence'
-refDesc['vkGetImageMemoryRequirements'] = 'Returns the memory requirements for specified Vulkan object'
-refDesc['vkGetImageSparseMemoryRequirements'] = 'Query the memory requirements for a sparse image'
-refDesc['vkGetImageSubresourceLayout'] = 'Retrieve information about an image subresource'
-refDesc['vkGetInstanceProcAddr'] = 'Return a function pointer for a command'
-refDesc['vkGetPhysicalDeviceDisplayPlanePropertiesKHR'] = 'Query the plane properties'
-refDesc['vkGetPhysicalDeviceDisplayPropertiesKHR'] = 'Query information about the available displays'
-refDesc['vkGetPhysicalDeviceFeatures'] = 'Reports capabilities of a physical device'
-refDesc['vkGetPhysicalDeviceFormatProperties'] = 'Lists physical device\'s format capabilities'
-refDesc['vkGetPhysicalDeviceImageFormatProperties'] = 'Lists physical device\'s image format capabilities'
-refDesc['vkGetPhysicalDeviceMemoryProperties'] = 'Reports memory information for the specified physical device'
-refDesc['vkGetPhysicalDeviceMirPresentationSupportKHR'] = 'Query physical device for presentation to Mir'
-refDesc['vkGetPhysicalDeviceProperties'] = 'Returns properties of a physical device'
-refDesc['vkGetPhysicalDeviceQueueFamilyProperties'] = 'Reports properties of the queues of the specified physical device'
-refDesc['vkGetPhysicalDeviceSparseImageFormatProperties'] = 'Retrieve properties of an image format applied to sparse images'
-refDesc['vkGetPhysicalDeviceSurfaceCapabilitiesKHR'] = 'Query surface capabilities'
-refDesc['vkGetPhysicalDeviceSurfaceFormatsKHR'] = 'Query color formats supported by surface'
-refDesc['vkGetPhysicalDeviceSurfacePresentModesKHR'] = 'Query supported presentation modes'
-refDesc['vkGetPhysicalDeviceSurfaceSupportKHR'] = 'Query if presentation is supported'
-refDesc['vkGetPhysicalDeviceWaylandPresentationSupportKHR'] = 'Query physical device for presentation to Wayland'
-refDesc['vkGetPhysicalDeviceXcbPresentationSupportKHR'] = 'Query physical device for presentation to X11 server using XCB'
-refDesc['vkGetPhysicalDeviceXlibPresentationSupportKHR'] = 'Query physical device for presentation to X11 server using Xlib'
-refDesc['vkGetPipelineCacheData'] = 'Get the data store from a pipeline cache'
-refDesc['vkGetQueryPoolResults'] = 'Copy results of queries in a query pool to a host memory region'
-refDesc['vkGetRenderAreaGranularity'] = 'Returns the granularity for optimal render area'
-refDesc['vkGetSwapchainImagesKHR'] = 'Obtain the array of presentable images associated with a swapchain'
-refDesc['VkImageCreateFlags'] = 'Image object creation flags'
-refDesc['VkImageCreateInfo'] = 'Structure specifying the parameters of a newly created image object'
-refDesc['VkImageLayout'] = 'Layout of image and image subresources'
-refDesc['VkImageMemoryBarrier'] = 'Structure specifying the parameters of an image memory barrier'
-refDesc['VkImageType'] = 'Specifies the type of an image object'
-refDesc['VkImageUsageFlags'] = 'Image object usage flags'
-refDesc['VkImageViewType'] = 'Image view types'
-refDesc['vkInvalidateMappedMemoryRanges'] = 'Invalidate ranges of mapped memory objects'
-refDesc['vkMapMemory'] = 'Map a memory object into application address space'
-refDesc['VkMemoryAllocateInfo'] = 'Structure containing parameters of a memory allocation'
-refDesc['VkMemoryPropertyFlags'] = 'Memory pool properties'
-refDesc['vkMergePipelineCaches'] = 'Combine the data stores of pipeline caches'
-refDesc['VkPhysicalDeviceFeatures'] = 'Structure describing the fine-grained features that can be supported by an implementation'
-refDesc['VkPhysicalDeviceLimits'] = 'Structure'
-refDesc['VkPipelineLayoutCreateInfo'] = 'Structure specifying the parameters of a newly created pipeline layout object'
-refDesc['VkPipelineStageFlags'] = 'Pipeline stage identifiers'
-refDesc['VkQueryControlFlags'] = 'Query control flags'
-refDesc['VkQueryResultFlags'] = 'Query result flags'
-refDesc['vkQueueBindSparse'] = 'Bind device memory to a sparse resource object'
-refDesc['VkQueueFamilyProperties'] = 'Structure providing information about a queue family'
-refDesc['VkQueueFlags'] = 'Queue capability flags'
-refDesc['vkQueuePresentKHR'] = 'Queue an image for presentation'
-refDesc['vkQueueSubmit'] = 'Submits a sequence of semaphores or command buffers to a queue'
-refDesc['vkQueueWaitIdle'] = 'Wait for a queue to become idle'
-refDesc['vkResetCommandBuffer'] = 'Reset a command buffer'
-refDesc['vkResetCommandPool'] = 'Reset a command pool'
-refDesc['vkResetDescriptorPool'] = 'Resets a descriptor pool object'
-refDesc['vkResetEvent'] = 'Reset an event to non-signaled state'
-refDesc['vkResetFences'] = 'Resets one or more fence objects'
-refDesc['vkSetEvent'] = 'Set an event to signaled state'
-refDesc['VkSharingMode'] = 'Buffer and image sharing modes'
-refDesc['vkUnmapMemory'] = 'Unmap a previously mapped memory object'
-refDesc['vkUpdateDescriptorSets'] = 'Update the contents of a descriptor set object'
-refDesc['vkWaitForFences'] = 'Wait for one or more fences to become signaled'
-refDesc['VkWriteDescriptorSet'] = 'Structure specifying the parameters of a descriptor set write operation'
-refDesc['VkAndroidSurfaceCreateInfoKHR'] = 'Structure specifying parameters of a newly created Android surface object'
-refDesc['VkDebugReportCallbackCreateInfoEXT'] = 'Structure specifying parameters of a newly created debug report object'
-refDesc['VkDisplayModeCreateInfoKHR'] = 'Structure specifying parameters of a newly created display mode object'
-refDesc['VkDisplayModeParametersKHR'] = 'Structure describing display parameters associated with a display mode'
-refDesc['VkDisplayModePropertiesKHR'] = 'Structure describing display mode properties'
-refDesc['VkDisplayPlaneCapabilitiesKHR'] = 'Structure describing capabilities of a mode and plane combination'
-refDesc['VkDisplayPlanePropertiesKHR'] = 'Structure describing display plane properties'
-refDesc['VkDisplayPresentInfoKHR'] = 'Structure describing parameters of a queue presentation to a swapchain'
-refDesc['VkDisplayPropertiesKHR'] = 'Structure describing an available display device'
-refDesc['VkDisplaySurfaceCreateInfoKHR'] = 'Structure specifying parameters of a newly created display plane surface object'
-refDesc['VkMirSurfaceCreateInfoKHR'] = 'Structure specifying parameters of a newly created Mir surface object'
-refDesc['VkPresentInfoKHR'] = 'Structure describing parameters of a queue presentation'
-refDesc['VkSurfaceCapabilitiesKHR'] = 'Structure describing capabilities of a surface'
-refDesc['VkSurfaceFormatKHR'] = 'Structure describing a supported swapchain format-colorspace pair'
-refDesc['VkSwapchainCreateInfoKHR'] = 'Structure specifying parameters of a newly created swapchain object'
-refDesc['VkWaylandSurfaceCreateInfoKHR'] = 'Structure specifying parameters of a newly created Wayland surface object'
-refDesc['VkWin32SurfaceCreateInfoKHR'] = 'Structure specifying parameters of a newly created Win32 surface object'
-refDesc['VkXcbSurfaceCreateInfoKHR'] = 'Structure specifying parameters of a newly created Xcb surface object'
-refDesc['VkXlibSurfaceCreateInfoKHR'] = 'Structure specifying parameters of a newly created Xlib surface object'
-
-# These are generated based on the structure name
-
-refDesc['VkBufferViewCreateInfo'] = 'Structure specifying parameters of a newly created buffer view'
-refDesc['VkCommandPoolCreateInfo'] = 'Structure specifying parameters of a newly created command pool'
-refDesc['VkComputePipelineCreateInfo'] = 'Structure specifying parameters of a newly created compute pipeline'
-refDesc['VkDescriptorPoolCreateInfo'] = 'Structure specifying parameters of a newly created descriptor pool'
-refDesc['VkDescriptorSetLayoutCreateInfo'] = 'Structure specifying parameters of a newly created descriptor set layout'
-refDesc['VkDeviceCreateInfo'] = 'Structure specifying parameters of a newly created device'
-refDesc['VkDeviceQueueCreateInfo'] = 'Structure specifying parameters of a newly created device queue'
-refDesc['VkEventCreateInfo'] = 'Structure specifying parameters of a newly created event'
-refDesc['VkExtent2D'] = 'Structure specifying a two-dimensional extent'
-refDesc['VkExtent3D'] = 'Structure specifying a three-dimensional extent'
-refDesc['VkFenceCreateInfo'] = 'Structure specifying parameters of a newly created fence'
-refDesc['VkFramebufferCreateInfo'] = 'Structure specifying parameters of a newly created framebuffer'
-refDesc['VkGraphicsPipelineCreateInfo'] = 'Structure specifying parameters of a newly created graphics pipeline'
-refDesc['VkImageViewCreateInfo'] = 'Structure specifying parameters of a newly created image view'
-refDesc['VkInstanceCreateInfo'] = 'Structure specifying parameters of a newly created instance'
-refDesc['VkOffset2D'] = 'Structure specifying a two-dimensional offset'
-refDesc['VkOffset3D'] = 'Structure specifying a three-dimensional offset'
-refDesc['VkPipelineCacheCreateInfo'] = 'Structure specifying parameters of a newly created pipeline cache'
-refDesc['VkPipelineColorBlendStateCreateInfo'] = 'Structure specifying parameters of a newly created pipeline color blend state'
-refDesc['VkPipelineDepthStencilStateCreateInfo'] = 'Structure specifying parameters of a newly created pipeline depth stencil state'
-refDesc['VkPipelineDynamicStateCreateInfo'] = 'Structure specifying parameters of a newly created pipeline dynamic state'
-refDesc['VkPipelineInputAssemblyStateCreateInfo'] = 'Structure specifying parameters of a newly created pipeline input assembly state'
-refDesc['VkPipelineMultisampleStateCreateInfo'] = 'Structure specifying parameters of a newly created pipeline multisample state'
-refDesc['VkPipelineRasterizationStateCreateInfo'] = 'Structure specifying parameters of a newly created pipeline rasterization state'
-refDesc['VkPipelineShaderStageCreateInfo'] = 'Structure specifying parameters of a newly created pipeline shader stage'
-refDesc['VkPipelineTessellationStateCreateInfo'] = 'Structure specifying parameters of a newly created pipeline tessellation state'
-refDesc['VkPipelineVertexInputStateCreateInfo'] = 'Structure specifying parameters of a newly created pipeline vertex input state'
-refDesc['VkPipelineViewportStateCreateInfo'] = 'Structure specifying parameters of a newly created pipeline viewport state'
-refDesc['VkQueryPoolCreateInfo'] = 'Structure specifying parameters of a newly created query pool'
-refDesc['VkRect2D'] = 'Structure specifying a two-dimensional subregion'
-refDesc['VkRenderPassCreateInfo'] = 'Structure specifying parameters of a newly created render pass'
-refDesc['VkSamplerCreateInfo'] = 'Structure specifying parameters of a newly created sampler'
-refDesc['VkSemaphoreCreateInfo'] = 'Structure specifying parameters of a newly created semaphore'
-refDesc['VkShaderModuleCreateInfo'] = 'Structure specifying parameters of a newly created shader module'
-
-# These are TBD
-
-refDesc['VkApplicationInfo'] = 'Structure specifying application info'
-refDesc['VkAttachmentDescription'] = 'Structure specifying an attachment description'
-refDesc['VkAttachmentReference'] = 'Structure specifying an attachment reference'
-refDesc['VkBindSparseInfo'] = 'Structure specifying a sparse binding operation'
-refDesc['VkBufferCopy'] = 'Structure specifying a buffer copy operation'
-refDesc['VkBufferImageCopy'] = 'Structure specifying a buffer image copy operation'
-refDesc['VkClearAttachment'] = 'Structure specifying a clear attachment'
-refDesc['VkClearColorValue'] = 'Structure specifying a clear color value'
-refDesc['VkClearDepthStencilValue'] = 'Structure specifying a clear depth stencil value'
-refDesc['VkClearRect'] = 'Structure specifying a clear rectangle'
-refDesc['VkClearValue'] = 'Structure specifying a clear value'
-refDesc['VkCommandBufferBeginInfo'] = 'Structure specifying a command buffer begin operation'
-refDesc['VkCommandBufferInheritanceInfo'] = 'Structure specifying command buffer inheritance info'
-refDesc['VkCommandBufferLevel'] = 'Structure specifying a command buffer level'
-refDesc['VkComponentMapping'] = 'Structure specifying a color component mapping'
-refDesc['VkCopyDescriptorSet'] = 'Structure specifying a copy descriptor set operation'
-refDesc['VkDescriptorBufferInfo'] = 'Structure specifying descriptor buffer info'
-refDesc['VkDescriptorImageInfo'] = 'Structure specifying descriptor image info'
-refDesc['VkDescriptorPoolSize'] = 'Structure specifying descriptor pool size'
-refDesc['VkDescriptorSetLayoutBinding'] = 'Structure specifying a descriptor set layout binding'
-refDesc['VkDispatchIndirectCommand'] = 'Structure specifying a dispatch indirect command'
-refDesc['VkDrawIndexedIndirectCommand'] = 'Structure specifying a draw indexed indirect command'
-refDesc['VkDrawIndirectCommand'] = 'Structure specifying a draw indirect command'
-refDesc['VkExtensionProperties'] = 'Structure specifying a extension properties'
-refDesc['VkFormatProperties'] = 'Structure specifying image format properties'
-refDesc['VkImageBlit'] = 'Structure specifying an image blit operation'
-refDesc['VkImageCopy'] = 'Structure specifying an image copy operation'
-refDesc['VkImageFormatProperties'] = 'Structure specifying a image format properties'
-refDesc['VkImageResolve'] = 'Structure specifying an image resolve operation'
-refDesc['VkImageSubresource'] = 'Structure specifying a image subresource'
-refDesc['VkImageSubresourceLayers'] = 'Structure specifying a image subresource layers'
-refDesc['VkImageSubresourceRange'] = 'Structure specifying a image subresource range'
-refDesc['VkLayerProperties'] = 'Structure specifying layer properties'
-refDesc['VkMappedMemoryRange'] = 'Structure specifying a mapped memory range'
-refDesc['VkMemoryBarrier'] = 'Structure specifying a memory barrier'
-refDesc['VkMemoryHeap'] = 'Structure specifying a memory heap'
-refDesc['VkMemoryRequirements'] = 'Structure specifying memory requirements'
-refDesc['VkMemoryType'] = 'Structure specifying memory type'
-refDesc['VkPhysicalDeviceMemoryProperties'] = 'Structure specifying physical device memory properties'
-refDesc['VkPhysicalDeviceProperties'] = 'Structure specifying physical device properties'
-refDesc['VkPhysicalDeviceSparseProperties'] = 'Structure specifying physical device sparse memory properties'
-refDesc['VkPipelineColorBlendAttachmentState'] = 'Structure specifying a pipeline color blend attachment state'
-refDesc['VkPushConstantRange'] = 'Structure specifying a push constant range'
-refDesc['VkRenderPassBeginInfo'] = 'Structure specifying render pass begin info'
-refDesc['VkSparseBufferMemoryBindInfo'] = 'Structure specifying a sparse buffer memory bind operation'
-refDesc['VkSparseImageFormatProperties'] = 'Structure specifying sparse image format properties'
-refDesc['VkSparseImageMemoryBind'] = 'Structure specifying sparse image memory bind'
-refDesc['VkSparseImageMemoryBindInfo'] = 'Structure specifying sparse image memory bind info'
-refDesc['VkSparseImageMemoryRequirements'] = 'Structure specifying sparse image memory requirements'
-refDesc['VkSparseImageOpaqueMemoryBindInfo'] = 'Structure specifying sparse image opaque memory bind info'
-refDesc['VkSparseMemoryBind'] = 'Structure specifying a sparse memory bind operation'
-refDesc['VkSpecializationInfo'] = 'Structure specifying specialization info'
-refDesc['VkSpecializationMapEntry'] = 'Structure specifying a specialization map entry'
-refDesc['VkStencilOpState'] = 'Structure specifying stencil operation state'
-refDesc['VkSubmitInfo'] = 'Structure specifying a queue submit operation'
-refDesc['VkSubpassDependency'] = 'Structure specifying a subpass dependency'
-refDesc['VkSubpassDescription'] = 'Structure specifying a subpass description'
-refDesc['VkSubresourceLayout'] = 'Structure specifying subresource layout'
-refDesc['VkVertexInputAttributeDescription'] = 'Structure specifying vertex input attribute description'
-refDesc['VkVertexInputBindingDescription'] = 'Structure specifying vertex input binding description'
-refDesc['VkViewport'] = 'Structure specifying a viewport'
-
-# These are constructed from spec text
-
-refDesc['VkAccessFlagBits'] = 'Bitmask specifying classes of memory access the will participate in a memory barrier dependency'
-refDesc['VkAttachmentDescriptionFlagBits'] = 'Bitmask specifying additional properties of an attachment'
-refDesc['VkBufferCreateFlagBits'] = 'Bitmask specifying additional parameters of a buffer'
-refDesc['VkBufferUsageFlagBits'] = 'Bitmask specifying allowed usage of a buffer'
-refDesc['VkColorComponentFlagBits'] = 'Bitmask controlling which components are written to the framebuffer'
-refDesc['VkCommandBufferResetFlagBits'] = 'Bitmask controlling behavior of a command buffer reset'
-refDesc['VkCommandBufferUsageFlagBits'] = 'Bitmask specifying usage behavior for command buffer'
-refDesc['VkCommandPoolCreateFlagBits'] = 'Bitmask specifying usage behavior for a command pool'
-refDesc['VkCommandPoolResetFlagBits'] = 'Bitmask controlling behavior of a command pool reset'
-refDesc['VkCullModeFlagBits'] = 'Bitmask controlling triangle culling'
-refDesc['VkDependencyFlagBits'] = 'Bitmask specifying dependencies between subpasses'
-refDesc['VkDescriptorPoolCreateFlagBits'] = 'Bitmask specifying certain supported operations on a descriptor pool'
-refDesc['VkFenceCreateFlagBits'] = 'Bitmask specifying initial state and behavior of a fence'
-refDesc['VkFormatFeatureFlagBits'] = 'Bitmask specifying features supported by a buffer'
-refDesc['VkImageAspectFlagBits'] = 'Bitmask specifying which aspects of an image are included in a view'
-refDesc['VkImageCreateFlagBits'] = 'Bitmask specifying additional parameters of an image'
-refDesc['VkImageUsageFlagBits'] = 'Bitmask specifying intended usage of an image'
-refDesc['VkMemoryHeapFlagBits'] = 'Bitmask specifying attribute flags for a heap'
-refDesc['VkMemoryPropertyFlagBits'] = 'Bitmask specifying properties for a memory type'
-refDesc['VkPipelineCreateFlagBits'] = 'Bitmask controlling how a pipeline is generated'
-refDesc['VkPipelineStageFlagBits'] = 'Bitmask specifying pipeline stages'
-refDesc['VkQueryControlFlagBits'] = 'Bitmask specifying constraints on a query'
-refDesc['VkQueryPipelineStatisticFlagBits'] = 'Bitmask specifying queried pipeline statistics'
-refDesc['VkQueryResultFlagBits'] = 'Bitmask specifying how and when query results are returned'
-refDesc['VkQueueFlagBits'] = 'Bitmask specifying capabilities of queues in a queue family'
-refDesc['VkSampleCountFlagBits'] = 'Bitmask specifying sample counts supported for an image used for storage operations'
-refDesc['VkShaderStageFlagBits'] = 'Bitmask specifying a pipeline stage'
-refDesc['VkSparseImageFormatFlagBits'] = 'Bitmask specifying additional information about a sparse image resource'
-refDesc['VkSparseMemoryBindFlagBits'] = 'Bitmask specifying usage of a sparse memory binding operation'
-refDesc['VkStencilFaceFlagBits'] = 'Bitmask specifying sets of stencil state for which to update the compare mask'
diff --git a/codegen/vulkan/scripts/__init__.py.docs b/codegen/vulkan/scripts/__init__.py.docs
deleted file mode 100644
index e4c30759..00000000
--- a/codegen/vulkan/scripts/__init__.py.docs
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright 2019-2021 The Khronos Group Inc.
-#
-# SPDX-License-Identifier: Apache-2.0
-
-"""Scripts for building the Vulkan specification and artifacts."""
-
-# This is only used during doc builds, hence the weird file extension.
-# It messes up scripts at other times.
-
-# __all__ = [
-# "cgenerator",
-# "check_spec_links",
-# "comment_convert",
-# "conventions",
-# "docgenerator",
-# "extensionmetadocgenerator",
-# "generator",
-# "genRef",
-# "genspec",
-# "genvk",
-# "hostsyncgenerator",
-# "indexExt",
-# "make_ext_dependency",
-# "pygenerator",
-# "reflib",
-# "reflow_count",
-# "reflow",
-# "reg",
-# "test_check_spec_links_api_specific",
-# "test_check_spec_links",
-# "test_entity_db",
-# "validitygenerator",
-# "vkconventions",
-# "xml_consistency",
-# "spec_tools",
-# ]
diff --git a/codegen/vulkan/scripts/asciidoctor-chunker/LICENSE b/codegen/vulkan/scripts/asciidoctor-chunker/LICENSE
deleted file mode 100644
index ab602974..00000000
--- a/codegen/vulkan/scripts/asciidoctor-chunker/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2018
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/codegen/vulkan/scripts/asciidoctor-chunker/README.md b/codegen/vulkan/scripts/asciidoctor-chunker/README.md
deleted file mode 100644
index 022c8f1c..00000000
--- a/codegen/vulkan/scripts/asciidoctor-chunker/README.md
+++ /dev/null
@@ -1,123 +0,0 @@
-# asciidoctor-chunker
-
-[![npm version](https://badge.fury.io/js/asciidoctor-chunker.svg)](https://badge.fury.io/js/asciidoctor-chunker)
-[![Node.js CI](https://github.com/wshito/asciidoctor-chunker/actions/workflows/node.js.yml/badge.svg)](https://github.com/wshito/asciidoctor-chunker/actions/workflows/node.js.yml)
-[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
-
-Generates chunked (multi-page) HTML from Asciidoctor's single HTML file with the support of fine-tuned splits by chapters, sections, or any depth of subsections. Here is [the sample output.](http://www.seinan-gu.ac.jp/~shito/asciidoctor/html_chunk/index.html) Each chapter can have different levels of extraction depth. See [What it does](#what-it-does) for details.
-
-## News
-
-- 2021/8/3 [Ver 1.0.4](https://github.com/wshito/asciidoctor-chunker/releases) Added the keyboard shotcuts for the page navigation with arrow keys. Added the accessibility labels on the page navigation for screen readers.
-- 2021/6/25 [Ver 1.0.3](https://github.com/wshito/asciidoctor-chunker/releases) Fixed the security vulnerabilities in the dependencies.
-- 2021/5/9 [Ver 1.0.2](https://github.com/wshito/asciidoctor-chunker/releases) The toc item for the titlepage can be configured with `--titlePage` option (thanks to [@johnthad](https://github.com/johnthad)).
-- 2021/3/17 [Ver 1.0.1](https://github.com/wshito/asciidoctor-chunker/releases) The script contains shebang and can be invoked directly. Published on [npm](https://www.npmjs.com/package/asciidoctor-chunker). You can install via npm. See [Installation](#installation).
-- 2021/2/27 [Ver 1.0.0 Released!](https://github.com/wshito/asciidoctor-chunker/releases)
- - Non opinionated page navigation at the bottom of each page is available.
- - You can insert custom css from the command line with `--css` option.
- - If you have any custom elements inserted in the source html, they are handled in non-strict mode by setting `--no-strictMode` option.
- - Gives warning if no relative links are available in tocs.
- - The current page toc is highlighted and scrolled into view.
-- 2021/2/20 Ver 0.9 is released! This is a complete re-write from the previous Lisp version. **It is re-implemented in JavaScript!** So it is super easy to setup with NodeJS! The fine tuned split options are available. Oh, and it runs a lot faster than the previous version!😊
-- 2021/2/10 Started work on the more enhanced version in `javascript` branch. Please wait a couple of weeks. The new version can control any depth of sections to split. And even more, each chapter can have a different depth extraction level. The new version is written in JavaScript so it will be a lot easier to install!
-- 2018/7/11 Locally linked files with `link` and `script` tags with relative paths are copied to the destination directory keeping the structure of the relative path. So the custom CSS and script files should be properly copied by `asciidoctor-chunker`.
-
-## What it does
-
-Asciidoctor-Chunker generates chunked HTML from a single HTML generated by Asciidoctor.
-
-1. Splits part preambles and chapters (or any depth of section level) into separate files. Each chapter can be configured to have a different depth for extractions.
-1. Extracts css inside the style element into a separate file so the browser can cache and share it among all the pages.
-1. Places footnotes in the file they belong to. This also means that the multiply referred footnotes are placed in every referrer's files and sets the link back to the referrer's id within the page.
-1. Re-writes the relative links in order to point to the appropriate chunked files.
-1. Copies the local images and linked files (with `link`, `script` and `img` tags) whose paths are relative, to the directory relative to the chunked html output. Files are only copied if they are new or modified compared to the previously copied one.
-1. Adds a titlepage link in the toc and page navigation at the bottom of each page.
-1. Adds non-opinionated page navigation.
-1. Highlights the current page toc items and they get scrolled into the viewport.
-
-Here is [the sample output](http://www.seinan-gu.ac.jp/~shito/asciidoctor/html_chunk/index.html) created from the [Asciidoctor User Manual](https://asciidoctor.org/docs/user-manual/). The footer on the sample page is added by setting the asciidoctor attribute and is not added by asciidoctor-chunker.
-
-
-## Installation
-
-Asciidoctor-Chunker is written in JavaScript and runs with NodeJS.
-
-1. Install [Node.js](https://nodejs.org/), the JavaScript runtime. This will install `npm`, the package manager CLI for Node.js.
-1. If you want to install globally, invoke the following;
- ```
- npm install -g asciidoctor-chunker
- ```
- You can install locally under the current directory as;
- ```
- npm install asciidoctor-chunker
- ```
-1. Or alternatively you can download the pre-built program from the [release](https://github.com/wshito/asciidoctor-chunker/releases).
-
-## Usage
-
-If you installed globally:
- ```
- asiidoctor-chunker [single-html-file] -o [output-directory]
- ```
-If you installed locally invoke the following under the directory you installed:
- ```
- npx asciidoctor-chunker [single-html-file] -o [output-directory]
- ```
-If you installed the prebuild program simply run the script as:
- ```
- ./asciidoctor-chunker.js [single-html-file] -o [output-directory]
- ```
-`[single-html-file]` is the single HTML file generated by [Asciidoctor](https://asciidoctor.org) from the book doctype. If the output directory is not specified, the default is `html_chunks` under the current directory.
-
-More discription of usage is available with `--help` option.
-
-## How to Configure the Depth of Extraction
-
-You can list the multiple settings by connecting each specifier with a comma. Each specifier is consisted of either a single number or a collon separated with two numbers.
-
-The single number sets the default level of extraction. Number 1 is the application's default and it extracts the chapter level. Number 2 for section extraction, 3 for subsection, and so on to 6 which is the maximum section level of Asciidoctor.
-
-The list of collon separated numbers, `chap:level`, can change the extraction depth for specific chapters, so `3:2` means chapter 3 is extracted down to 2 levels (ie. section level). You can use a hyphen to specify the range of chapters to set as `chapFrom-chapTo:level`, so `1-3:5` means chapter 1 through 5 should be extracted with the depth level 5.
-
-Example:
-```
- --depth 2 The default level 2, all the chapters and
- sections will be extracted.
- --depth 3,1:2,8:5 The default level 3, level 2 for Chap 1,
- level 5 for Chap 8.
- --depth 1,3-8:2 The default level 1, level 2 for Chap 3 to 8.
- --depth 3-8:3 No default is set so default level is 1, and
- level 3 for chap3 to 8.`
-```
-
-## Custom CSS
-
-By default `asciidoctor-chunker.css` is included in the output directory. It provides the non-opinionated page navigation at the bottom of every chunked page. You can override this by giving a comma separated list of paths to your custom css files. They are copied into the output directory so the paths must be accessible by `asciidoctor-chunker`.
-
-## About Strict Mode
-
-If you have any custom elements inserted under `<div id=#content></div>` in the source single html, `asciidoctor-chunker` ignores it by default. If you want them to be included into the chunked html, set the option `--no-strictMode`.
-The element will be copied to every chunked page.
-
-## Customizing Titlepage
-
-The `index.html` created by `asciidoctor-chunker` is selected by clicking the word **Titlepage** in the table of contents. To change the default value, use the option `--titlePage [string]` where `[string]` is the desired text.
-
-## Example
-
-The project contains the `example` directory where you can generate the chunked html for the [Asciidoctor User Manual](https://asciidoctor.org/docs/user-manual/) by invoking `make`. Simply go into the `example` directory and invoke `make`. This will clone the asciidoctor project from the github for the first time, then the chunked html will be generated under `test/output-chunk/html_chunk/` directory. The `index.html` is the first page.
-
-```
-$ cd example
-$ make
-```
-
-## License
-
-MIT
-
-## Developer's Memo
-
-- Unit test uses `test/resources/output/single/sample.html` generated from `test/resources/sample.adoc`.
-- `npm install cheerio commander`
-- `npm install --save-dev ava webpack webpack-cli webpack-shebang-plugin`
diff --git a/codegen/vulkan/scripts/asciidoctor-chunker/asciidoctor-chunker.js b/codegen/vulkan/scripts/asciidoctor-chunker/asciidoctor-chunker.js
deleted file mode 100755
index dd35f4e9..00000000
--- a/codegen/vulkan/scripts/asciidoctor-chunker/asciidoctor-chunker.js
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/usr/bin/env node
-
-/*! For license information please see asciidoctor-chunker.js.LICENSE.txt */
-(()=>{var e,t,n={1073:e=>{e.exports={trueFunc:function(){return!0},falseFunc:function(){return!1}}},9125:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.groupSelectors=t.getDocumentRoot=void 0;var r=n(2515);t.getDocumentRoot=function(e){for(;e.parent;)e=e.parent;return e},t.groupSelectors=function(e){for(var t=[],n=[],i=0,s=e;i<s.length;i++){var o=s[i];o.some(r.isFilter)?t.push(o):n.push(o)}return[n,t]}},7248:function(e,t,n){"use strict";var r=this&&this.__assign||function(){return(r=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e}).apply(this,arguments)},i=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),s=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&i(t,e,n);return s(t,e),t},a=this&&this.__spreadArray||function(e,t){for(var n=0,r=t.length,i=e.length;n<r;n++,i++)e[i]=t[n];return e};Object.defineProperty(t,"__esModule",{value:!0}),t.select=t.filter=t.some=t.is=t.aliases=t.pseudos=t.filters=void 0;var c=n(9751),l=n(5366),u=o(n(9432)),h=n(9125),p=n(2515),d=n(5366);Object.defineProperty(t,"filters",{enumerable:!0,get:function(){return d.filters}}),Object.defineProperty(t,"pseudos",{enumerable:!0,get:function(){return d.pseudos}}),Object.defineProperty(t,"aliases",{enumerable:!0,get:function(){return d.aliases}});var f={type:"pseudo",name:"scope",data:null},m=r({},f),T={type:"universal",namespace:null};function E(e,t,n){if(void 0===n&&(n={}),"function"==typeof t)return e.some(t);var r=h.groupSelectors(c.parse(t,n)),i=r[0],s=r[1];return i.length>0&&e.some(l._compileToken(i,n))||s.some((function(t){return g(t,e,n).length>0}))}function _(e,t,n){if(0===t.length)return[];var r,i=h.groupSelectors(e),s=i[0],o=i[1];if(s.length){var a=S(t,s,n);if(0===o.length)return a;a.length&&(r=new Set(a))}for(var c=0;c<o.length&&(null==r?void 0:r.size)!==t.length;c++){var l=o[c];if(0===(r?t.filter((function(e){return u.isTag(e)&&!r.has(e)})):t).length)break;if((a=g(l,t,n)).length)if(r)a.forEach((function(e){return r.add(e)}));else{if(c===o.length-1)return a;r=new Set(a)}}return void 0!==r?r.size===t.length?t:t.filter((function(e){return r.has(e)})):[]}function g(e,t,n){var r;return e.some(c.isTraversal)?v(null!==(r=n.root)&&void 0!==r?r:h.getDocumentRoot(t[0]),a(a([],e),[m]),n,!0,t):v(t,e,n,!1)}t.is=function(e,t,n){return void 0===n&&(n={}),E([e],t,n)},t.some=E,t.filter=function(e,t,n){return void 0===n&&(n={}),_(c.parse(e,n),t,n)},t.select=function(e,t,n){if(void 0===n&&(n={}),"function"==typeof e)return b(t,e);var r=h.groupSelectors(c.parse(e,n)),i=r[0],s=r[1].map((function(e){return v(t,e,n,!0)}));return i.length&&s.push(O(t,i,n,1/0)),1===s.length?s[0]:u.uniqueSort(s.reduce((function(e,t){return a(a([],e),t)})))};var A=new Set(["descendant","adjacent"]);function C(e){return e!==f&&"pseudo"===e.type&&("scope"===e.name||Array.isArray(e.data)&&e.data.some((function(e){return e.some(C)})))}function N(e,t,n){return n&&e.some(C)?r(r({},t),{context:n}):t}function v(e,t,n,r,i){var s=t.findIndex(p.isFilter),o=t.slice(0,s),a=t[s],l=p.getLimit(a.name,a.data);if(0===l)return[];var h=N(o,n,i),d=(0!==o.length||Array.isArray(e)?0===o.length||1===o.length&&o[0]===f?(Array.isArray(e)?e:[e]).filter(u.isTag):r||o.some(c.isTraversal)?O(e,[o],h,l):S(e,[o],h):u.getChildren(e).filter(u.isTag)).slice(0,l),m=function(e,t,n,r){var i="string"==typeof n?parseInt(n,10):NaN;switch(e){case"first":case"lt":return t;case"last":return t.length>0?[t[t.length-1]]:t;case"nth":case"eq":return isFinite(i)&&Math.abs(i)<t.length?[i<0?t[t.length+i]:t[i]]:[];case"gt":return isFinite(i)?t.slice(i+1):[];case"even":return t.filter((function(e,t){return t%2==0}));case"odd":return t.filter((function(e,t){return t%2==1}));case"not":var s=new Set(_(n,t,r));return t.filter((function(e){return!s.has(e)}))}}(a.name,d,a.data,n);if(0===m.length||t.length===s+1)return m;var E=t.slice(s+1),g=E.some(c.isTraversal),C=N(E,n,i);return g&&(A.has(E[0].type)&&E.unshift(T),E.unshift(f)),E.some(p.isFilter)?v(m,E,n,!1,i):g?O(m,[E],C,1/0):S(m,[E],C)}function O(e,t,n,r){return 0===r?[]:b(e,l._compileToken(t,n,e),r)}function b(e,t,n){void 0===n&&(n=1/0);var r=l.prepareContext(e,u,t.shouldTestNextSiblings);return u.find((function(e){return u.isTag(e)&&t(e)}),r,!0,n)}function S(e,t,n){var r=(Array.isArray(e)?e:[e]).filter(u.isTag);if(0===r.length)return r;var i=l._compileToken(t,n);return r.filter(i)}},2515:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getLimit=t.isFilter=t.filterNames=void 0,t.filterNames=new Set(["first","last","eq","gt","nth","lt","even","odd"]),t.isFilter=function e(n){return"pseudo"===n.type&&(!!t.filterNames.has(n.name)||!("not"!==n.name||!Array.isArray(n.data))&&n.data.some((function(t){return t.some(e)})))},t.getLimit=function(e,t){var n=null!=t?parseInt(t,10):NaN;switch(e){case"first":return 1;case"nth":case"eq":return isFinite(n)?n>=0?n+1:1/0:0;case"lt":return isFinite(n)?n>=0?n:1/0:0;case"gt":return isFinite(n)?1/0:0;default:return 1/0}}},6451:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.toggleClass=t.removeClass=t.addClass=t.hasClass=t.removeAttr=t.val=t.data=t.prop=t.attr=void 0;var r=n(6634),i=n(5633),s=Object.prototype.hasOwnProperty,o=/\s+/,a="data-",c={null:null,true:!0,false:!1},l=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,u=/^{[^]*}$|^\[[^]*]$/;function h(e,t,n){var o;if(e&&i.isTag(e))return null!==(o=e.attribs)&&void 0!==o||(e.attribs={}),t?s.call(e.attribs,t)?!n&&l.test(t)?t:e.attribs[t]:"option"===e.name&&"value"===t?r.text(e.children):"input"!==e.name||"radio"!==e.attribs.type&&"checkbox"!==e.attribs.type||"value"!==t?void 0:"on":e.attribs}function p(e,t,n){null===n?E(e,t):e.attribs[t]=""+n}function d(e,t,n){if(e&&i.isTag(e))return t in e?e[t]:!n&&l.test(t)?void 0!==h(e,t,!1):h(e,t,n)}function f(e,t,n,r){t in e?e[t]=n:p(e,t,!r&&l.test(t)?n?"":null:""+n)}function m(e,t,n){var r,i=e;null!==(r=i.data)&&void 0!==r||(i.data={}),"object"==typeof t?Object.assign(i.data,t):"string"==typeof t&&void 0!==n&&(i.data[t]=n)}function T(e,t){var n,r,o;null==t?r=(n=Object.keys(e.attribs).filter((function(e){return e.startsWith(a)}))).map((function(e){return i.camelCase(e.slice(a.length))})):(n=[a+i.cssCase(t)],r=[t]);for(var l=0;l<n.length;++l){var h=n[l],p=r[l];if(s.call(e.attribs,h)&&!s.call(e.data,p)){if(o=e.attribs[h],s.call(c,o))o=c[o];else if(o===String(Number(o)))o=Number(o);else if(u.test(o))try{o=JSON.parse(o)}catch(e){}e.data[p]=o}}return null==t?e.data:o}function E(e,t){e.attribs&&s.call(e.attribs,t)&&delete e.attribs[t]}function _(e){return e?e.trim().split(o):[]}t.attr=function(e,t){if("object"==typeof e||void 0!==t){if("function"==typeof t){if("string"!=typeof e)throw new Error("Bad combination of arguments.");return i.domEach(this,(function(n,r){i.isTag(n)&&p(n,e,t.call(n,r,n.attribs[e]))}))}return i.domEach(this,(function(n){i.isTag(n)&&("object"==typeof e?Object.keys(e).forEach((function(t){var r=e[t];p(n,t,r)})):p(n,e,t))}))}return arguments.length>1?this:h(this[0],e,this.options.xmlMode)},t.prop=function(e,t){var n=this;if("string"==typeof e&&void 0===t)switch(e){case"style":var r=this.css(),s=Object.keys(r);return s.forEach((function(e,t){r[t]=e})),r.length=s.length,r;case"tagName":case"nodeName":var o=this[0];return i.isTag(o)?o.name.toUpperCase():void 0;case"outerHTML":return this.clone().wrap("<container />").parent().html();case"innerHTML":return this.html();default:return d(this[0],e,this.options.xmlMode)}if("object"==typeof e||void 0!==t){if("function"==typeof t){if("object"==typeof e)throw new Error("Bad combination of arguments.");return i.domEach(this,(function(r,s){i.isTag(r)&&f(r,e,t.call(r,s,d(r,e,n.options.xmlMode)),n.options.xmlMode)}))}return i.domEach(this,(function(r){i.isTag(r)&&("object"==typeof e?Object.keys(e).forEach((function(t){var i=e[t];f(r,t,i,n.options.xmlMode)})):f(r,e,t,n.options.xmlMode))}))}},t.data=function(e,t){var n,r=this[0];if(r&&i.isTag(r)){var o=r;return null!==(n=o.data)&&void 0!==n||(o.data={}),e?"object"==typeof e||void 0!==t?(i.domEach(this,(function(n){i.isTag(n)&&("object"==typeof e?m(n,e):m(n,e,t))})),this):s.call(o.data,e)?o.data[e]:T(o,e):T(o)}},t.val=function(e){var t=0===arguments.length,n=this[0];if(!n||!i.isTag(n))return t?void 0:this;switch(n.name){case"textarea":return this.text(e);case"select":var s=this.find("option:selected");if(!t){if(null==this.attr("multiple")&&"object"==typeof e)return this;this.find("option").removeAttr("selected");for(var o="object"!=typeof e?[e]:e,a=0;a<o.length;a++)this.find('option[value="'+o[a]+'"]').attr("selected","");return this}return this.attr("multiple")?s.toArray().map((function(e){return r.text(e.children)})):s.attr("value");case"input":case"option":return t?this.attr("value"):this.attr("value",e)}},t.removeAttr=function(e){for(var t=_(e),n=function(e){i.domEach(r,(function(n){i.isTag(n)&&E(n,t[e])}))},r=this,s=0;s<t.length;s++)n(s);return this},t.hasClass=function(e){return this.toArray().some((function(t){var n=i.isTag(t)&&t.attribs.class,r=-1;if(n&&e.length)for(;(r=n.indexOf(e,r+1))>-1;){var s=r+e.length;if((0===r||o.test(n[r-1]))&&(s===n.length||o.test(n[s])))return!0}return!1}))},t.addClass=function e(t){if("function"==typeof t)return i.domEach(this,(function(n,r){if(i.isTag(n)){var s=n.attribs.class||"";e.call([n],t.call(n,r,s))}}));if(!t||"string"!=typeof t)return this;for(var n=t.split(o),r=this.length,s=0;s<r;s++){var a=this[s];if(i.isTag(a)){var c=h(a,"class",!1);if(c){for(var l=" "+c+" ",u=0;u<n.length;u++){var d=n[u]+" ";l.includes(" "+d)||(l+=d)}p(a,"class",l.trim())}else p(a,"class",n.join(" ").trim())}}return this},t.removeClass=function e(t){if("function"==typeof t)return i.domEach(this,(function(n,r){i.isTag(n)&&e.call([n],t.call(n,r,n.attribs.class||""))}));var n=_(t),r=n.length,s=0===arguments.length;return i.domEach(this,(function(e){if(i.isTag(e))if(s)e.attribs.class="";else{for(var t=_(e.attribs.class),o=!1,a=0;a<r;a++){var c=t.indexOf(n[a]);c>=0&&(t.splice(c,1),o=!0,a--)}o&&(e.attribs.class=t.join(" "))}}))},t.toggleClass=function e(t,n){if("function"==typeof t)return i.domEach(this,(function(r,s){i.isTag(r)&&e.call([r],t.call(r,s,r.attribs.class||"",n),n)}));if(!t||"string"!=typeof t)return this;for(var r=t.split(o),s=r.length,a="boolean"==typeof n?n?1:-1:0,c=this.length,l=0;l<c;l++){var u=this[l];if(i.isTag(u)){for(var h=_(u.attribs.class),p=0;p<s;p++){var d=h.indexOf(r[p]);a>=0&&d<0?h.push(r[p]):a<=0&&d>=0&&h.splice(d,1)}u.attribs.class=h.join(" ")}}return this}},9806:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.css=void 0;var r=n(5633);function i(e,t,n,r){if("string"==typeof t){var o=s(e),a="function"==typeof n?n.call(e,r,o[t]):n;""===a?delete o[t]:null!=a&&(o[t]=a),e.attribs.style=(c=o,Object.keys(c).reduce((function(e,t){return e+(e?" ":"")+t+": "+c[t]+";"}),""))}else"object"==typeof t&&Object.keys(t).forEach((function(n,r){i(e,n,t[n],r)}));var c}function s(e,t){if(e&&r.isTag(e)){var n=function(e){return(e=(e||"").trim())?e.split(";").reduce((function(e,t){var n=t.indexOf(":");return n<1||n===t.length-1||(e[t.slice(0,n).trim()]=t.slice(n+1).trim()),e}),{}):{}}(e.attribs.style);if("string"==typeof t)return n[t];if(Array.isArray(t)){var i={};return t.forEach((function(e){null!=n[e]&&(i[e]=n[e])})),i}return n}}t.css=function(e,t){return null!=e&&null!=t||"object"==typeof e&&!Array.isArray(e)?r.domEach(this,(function(n,s){r.isTag(n)&&i(n,e,t,s)})):s(this[0],e)}},3432:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.serializeArray=t.serialize=void 0;var r=n(5633),i="input,select,textarea,keygen",s=/%20/g,o=/\r?\n/g;t.serialize=function(){return this.serializeArray().map((function(e){return encodeURIComponent(e.name)+"="+encodeURIComponent(e.value)})).join("&").replace(s,"+")},t.serializeArray=function(){var e=this;return this.map((function(t,n){var s=e._make(n);return r.isTag(n)&&"form"===n.name?s.find(i).toArray():s.filter(i).toArray()})).filter('[name!=""]:enabled:not(:submit, :button, :image, :reset, :file):matches([checked], :not(:checkbox, :radio))').map((function(t,n){var r,i=e._make(n),s=i.attr("name"),a=null!==(r=i.val())&&void 0!==r?r:"";return Array.isArray(a)?a.map((function(e){return{name:s,value:e.replace(o,"\r\n")}})):{name:s,value:a.replace(o,"\r\n")}})).toArray()}},848:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.clone=t.text=t.toString=t.html=t.empty=t.replaceWith=t.remove=t.insertBefore=t.before=t.insertAfter=t.after=t.wrapAll=t.unwrap=t.wrapInner=t.wrap=t.prepend=t.append=t.prependTo=t.appendTo=t._makeDomArray=void 0;var r=n(9698),i=n(7915),s=n(7915),o=r.__importStar(n(5012)),a=n(6634),c=n(5633),l=n(3719);function u(e){return function(){for(var t=this,n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];var s=this.length-1;return c.domEach(this,(function(r,o){if(i.hasChildren(r)){var c="function"==typeof n[0]?n[0].call(r,o,a.html(r.children)):n,l=t._makeDomArray(c,o<s);e(l,r.children,r)}}))}}function h(e,t,n,i,s){for(var o,a,c=r.__spreadArray([t,n],i),l=e[t-1]||null,u=e[t+n]||null,h=0;h<i.length;++h){var p=i[h],d=p.parent;if(d){var f=d.children.indexOf(i[h]);f>-1&&(d.children.splice(f,1),s===d&&t>f&&c[0]--)}p.parent=s,p.prev&&(p.prev.next=null!==(o=p.next)&&void 0!==o?o:null),p.next&&(p.next.prev=null!==(a=p.prev)&&void 0!==a?a:null),p.prev=i[h-1]||l,p.next=i[h+1]||u}return l&&(l.next=i[0]),u&&(u.prev=i[i.length-1]),e.splice.apply(e,c)}function p(e){return function(t){for(var n=this.length-1,r=this.parents().last(),i=0;i<this.length;i++){var s=this[i],o="function"==typeof t?t.call(s,i,s):"string"!=typeof t||c.isHtml(t)?t:r.find(t).clone(),a=this._makeDomArray(o,i<n)[0];if(a&&l.DomUtils.hasChildren(a)){for(var u=a,h=0;h<u.children.length;){var p=u.children[h];c.isTag(p)?(u=p,h=0):h++}e(s,u,[a])}}return this}}t._makeDomArray=function(e,t){var n=this;return null==e?[]:c.isCheerio(e)?t?c.cloneDom(e.get()):e.get():Array.isArray(e)?e.reduce((function(e,r){return e.concat(n._makeDomArray(r,t))}),[]):"string"==typeof e?o.default(e,this.options,!1).children:t?c.cloneDom([e]):[e]},t.appendTo=function(e){return(c.isCheerio(e)?e:this._make(e)).append(this),this},t.prependTo=function(e){return(c.isCheerio(e)?e:this._make(e)).prepend(this),this},t.append=u((function(e,t,n){h(t,t.length,0,e,n)})),t.prepend=u((function(e,t,n){h(t,0,0,e,n)})),t.wrap=p((function(e,t,n){var r=e.parent;if(r){var i=r.children,s=i.indexOf(e);o.update([e],t),h(i,s,0,n,r)}})),t.wrapInner=p((function(e,t,n){i.hasChildren(e)&&(o.update(e.children,t),o.update(n,e))})),t.unwrap=function(e){var t=this;return this.parent(e).not("body").each((function(e,n){t._make(n).replaceWith(n.children)})),this},t.wrapAll=function(e){var t=this[0];if(t){for(var n=this._make("function"==typeof e?e.call(t,0,t):e).insertBefore(t),r=void 0,i=0;i<n.length;i++)"tag"===n[i].type&&(r=n[i]);for(var s=0;r&&s<r.children.length;){var o=r.children[s];"tag"===o.type?(r=o,s=0):s++}r&&this._make(r).append(this)}return this},t.after=function(){for(var e=this,t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];var r=this.length-1;return c.domEach(this,(function(n,i){var s=n.parent;if(l.DomUtils.hasChildren(n)&&s){var o=s.children,c=o.indexOf(n);if(!(c<0)){var u="function"==typeof t[0]?t[0].call(n,i,a.html(n.children)):t;h(o,c+1,0,e._makeDomArray(u,i<r),s)}}}))},t.insertAfter=function(e){var t=this;"string"==typeof e&&(e=this._make(e)),this.remove();var n=[];return this._makeDomArray(e).forEach((function(e){var r=t.clone().toArray(),i=e.parent;if(i){var s=i.children,o=s.indexOf(e);o<0||(h(s,o+1,0,r,i),n.push.apply(n,r))}})),this._make(n)},t.before=function(){for(var e=this,t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];var r=this.length-1;return c.domEach(this,(function(n,i){var s=n.parent;if(l.DomUtils.hasChildren(n)&&s){var o=s.children,c=o.indexOf(n);if(!(c<0)){var u="function"==typeof t[0]?t[0].call(n,i,a.html(n.children)):t;h(o,c,0,e._makeDomArray(u,i<r),s)}}}))},t.insertBefore=function(e){var t=this,n=this._make(e);this.remove();var r=[];return c.domEach(n,(function(e){var n=t.clone().toArray(),i=e.parent;if(i){var s=i.children,o=s.indexOf(e);o<0||(h(s,o,0,n,i),r.push.apply(r,n))}})),this._make(r)},t.remove=function(e){var t=e?this.filter(e):this;return c.domEach(t,(function(e){l.DomUtils.removeElement(e),e.prev=e.next=e.parent=null})),this},t.replaceWith=function(e){var t=this;return c.domEach(this,(function(n,r){var i=n.parent;if(i){var s=i.children,a="function"==typeof e?e.call(n,r,n):e,c=t._makeDomArray(a);o.update(c,null);var l=s.indexOf(n);h(s,l,1,c,i),c.includes(n)||(n.parent=n.prev=n.next=null)}}))},t.empty=function(){return c.domEach(this,(function(e){l.DomUtils.hasChildren(e)&&(e.children.forEach((function(e){e.next=e.prev=e.parent=null})),e.children.length=0)}))},t.html=function(e){if(void 0===e){var t=this[0];return t&&l.DomUtils.hasChildren(t)?a.html(t.children,this.options):null}var n=r.__assign(r.__assign({},this.options),{context:null});return c.domEach(this,(function(t){if(l.DomUtils.hasChildren(t)){t.children.forEach((function(e){e.next=e.prev=e.parent=null})),n.context=t;var r=c.isCheerio(e)?e.toArray():o.default(""+e,n,!1).children;o.update(r,t)}}))},t.toString=function(){return a.html(this,this.options)},t.text=function e(t){var n=this;return void 0===t?a.text(this):"function"==typeof t?c.domEach(this,(function(r,i){e.call(n._make(r),t.call(r,i,a.text([r])))})):c.domEach(this,(function(e){if(l.DomUtils.hasChildren(e)){e.children.forEach((function(e){e.next=e.prev=e.parent=null}));var n=new s.Text(t);o.update(n,e)}}))},t.clone=function(){return this._make(c.cloneDom(this.get()))}},1042:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.addBack=t.add=t.end=t.slice=t.index=t.toArray=t.get=t.eq=t.last=t.first=t.has=t.not=t.is=t.filterArray=t.filter=t.map=t.each=t.contents=t.children=t.siblings=t.prevUntil=t.prevAll=t.prev=t.nextUntil=t.nextAll=t.next=t.closest=t.parentsUntil=t.parents=t.parent=t.find=void 0;var r=n(9698),i=n(7915),s=r.__importStar(n(7248)),o=n(5633),a=n(6634),c=n(3719),l=c.DomUtils.uniqueSort,u=/^\s*[~+]/;function h(e){return function(t){for(var n=[],r=1;r<arguments.length;r++)n[r-1]=arguments[r];return function(r){var i,s=e(t,this);return r&&(s=E(s,r,this.options.xmlMode,null===(i=this._root)||void 0===i?void 0:i[0])),this._make(this.length>1&&s.length>1?n.reduce((function(e,t){return t(e)}),s):s)}}}t.find=function(e){var t;if(!e)return this._make([]);var n=this.toArray();if("string"!=typeof e){var r=o.isCheerio(e)?e.toArray():[e];return this._make(r.filter((function(e){return n.some((function(t){return a.contains(t,e)}))})))}var i=u.test(e)?n:this.children().toArray(),c={context:n,root:null===(t=this._root)||void 0===t?void 0:t[0],xmlMode:this.options.xmlMode};return this._make(s.select(e,i,c))};var p=h((function(e,t){for(var n,r=[],i=0;i<t.length;i++){var s=e(t[i]);r.push(s)}return(n=new Array).concat.apply(n,r)})),d=h((function(e,t){for(var n=[],r=0;r<t.length;r++){var i=e(t[r]);null!==i&&n.push(i)}return n}));function f(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];var i=null,a=h((function(e,t){var n=[];return o.domEach(t,(function(t){for(var r;(r=e(t))&&!(null==i?void 0:i(r,n.length));t=r)n.push(r)})),n})).apply(void 0,r.__spreadArray([e],t));return function(e,t){var n=this;i="string"==typeof e?function(t){return s.is(t,e,n.options)}:e?T(e):null;var r=a.call(this,t);return i=null,r}}function m(e){return Array.from(new Set(e))}function T(e){return"function"==typeof e?function(t,n){return e.call(t,n,t)}:o.isCheerio(e)?function(t){return Array.prototype.includes.call(e,t)}:function(t){return e===t}}function E(e,t,n,r){return"string"==typeof t?s.filter(t,e,{xmlMode:n,root:r}):e.filter(T(t))}t.parent=d((function(e){var t=e.parent;return t&&!i.isDocument(t)?t:null}),m),t.parents=p((function(e){for(var t=[];e.parent&&!i.isDocument(e.parent);)t.push(e.parent),e=e.parent;return t}),l,(function(e){return e.reverse()})),t.parentsUntil=f((function(e){var t=e.parent;return t&&!i.isDocument(t)?t:null}),l,(function(e){return e.reverse()})),t.closest=function(e){var t=this,n=[];return e?(o.domEach(this,(function(r){for(var i;r&&"root"!==r.type;){if(!e||E([r],e,t.options.xmlMode,null===(i=t._root)||void 0===i?void 0:i[0]).length){r&&!n.includes(r)&&n.push(r);break}r=r.parent}})),this._make(n)):this._make(n)},t.next=d((function(e){return c.DomUtils.nextElementSibling(e)})),t.nextAll=p((function(e){for(var t=[];e.next;)e=e.next,o.isTag(e)&&t.push(e);return t}),m),t.nextUntil=f((function(e){return c.DomUtils.nextElementSibling(e)}),m),t.prev=d((function(e){return c.DomUtils.prevElementSibling(e)})),t.prevAll=p((function(e){for(var t=[];e.prev;)e=e.prev,o.isTag(e)&&t.push(e);return t}),m),t.prevUntil=f((function(e){return c.DomUtils.prevElementSibling(e)}),m),t.siblings=p((function(e){return c.DomUtils.getSiblings(e).filter((function(t){return o.isTag(t)&&t!==e}))}),l),t.children=p((function(e){return c.DomUtils.getChildren(e).filter(o.isTag)}),m),t.contents=function(){var e=this.toArray().reduce((function(e,t){return i.hasChildren(t)?e.concat(t.children):e}),[]);return this._make(e)},t.each=function(e){for(var t=0,n=this.length;t<n&&!1!==e.call(this[t],t,this[t]);)++t;return this},t.map=function(e){for(var t=[],n=0;n<this.length;n++){var r=this[n],i=e.call(r,n,r);null!=i&&(t=t.concat(i))}return this._make(t)},t.filter=function(e){var t;return this._make(E(this.toArray(),e,this.options.xmlMode,null===(t=this._root)||void 0===t?void 0:t[0]))},t.filterArray=E,t.is=function(e){var t=this.toArray();return"string"==typeof e?s.some(t.filter(o.isTag),e,this.options):!!e&&t.some(T(e))},t.not=function(e){var t=this.toArray();if("string"==typeof e){var n=new Set(s.filter(e,t,this.options));t=t.filter((function(e){return!n.has(e)}))}else{var r=T(e);t=t.filter((function(e,t){return!r(e,t)}))}return this._make(t)},t.has=function(e){var t=this;return this.filter("string"==typeof e?":has("+e+")":function(n,r){return t._make(r).find(e).length>0})},t.first=function(){return this.length>1?this._make(this[0]):this},t.last=function(){return this.length>0?this._make(this[this.length-1]):this},t.eq=function(e){var t;return 0==(e=+e)&&this.length<=1?this:(e<0&&(e=this.length+e),this._make(null!==(t=this[e])&&void 0!==t?t:[]))},t.get=function(e){return null==e?this.toArray():this[e<0?this.length+e:e]},t.toArray=function(){return Array.prototype.slice.call(this)},t.index=function(e){var t,n;return null==e?(t=this.parent().children(),n=this[0]):"string"==typeof e?(t=this._make(e),n=this[0]):(t=this,n=o.isCheerio(e)?e[0]:e),Array.prototype.indexOf.call(t,n)},t.slice=function(e,t){return this._make(Array.prototype.slice.call(this,e,t))},t.end=function(){var e;return null!==(e=this.prevObject)&&void 0!==e?e:this._make([])},t.add=function(e,t){var n=this._make(e,t),i=l(r.__spreadArray(r.__spreadArray([],this.get()),n.get()));return this._make(i)},t.addBack=function(e){return this.prevObject?this.add(e?this.prevObject.filter(e):this.prevObject):this}},7911:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Cheerio=void 0;var r=n(9698),i=r.__importDefault(n(5012)),s=r.__importDefault(n(2754)),o=n(5633),a=r.__importStar(n(6451)),c=r.__importStar(n(1042)),l=r.__importStar(n(848)),u=r.__importStar(n(9806)),h=r.__importStar(n(3432)),p=function(){function e(e,t,n,r){var a=this;if(void 0===r&&(r=s.default),this.length=0,this.options=r,!e)return this;if(n&&("string"==typeof n&&(n=i.default(n,this.options,!1)),this._root=new this.constructor(n,null,null,this.options),this._root._root=this._root),o.isCheerio(e))return e;var c,l="string"==typeof e&&o.isHtml(e)?i.default(e,this.options,!1).children:(c=e).name||"root"===c.type||"text"===c.type||"comment"===c.type?[e]:Array.isArray(e)?e:null;if(l)return l.forEach((function(e,t){a[t]=e})),this.length=l.length,this;var u=e,h=t?"string"==typeof t?o.isHtml(t)?this._make(i.default(t,this.options,!1)):(u=t+" "+u,this._root):o.isCheerio(t)?t:this._make(t):this._root;return h?h.find(u):this}return e.prototype._make=function(e,t){var n=new this.constructor(e,t,this._root,this.options);return n.prevObject=this,n},e}();t.Cheerio=p,p.prototype.cheerio="[cheerio object]",p.prototype.splice=Array.prototype.splice,p.prototype[Symbol.iterator]=Array.prototype[Symbol.iterator],Object.assign(p.prototype,a,c,l,u,h)},7503:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.root=t.parseHTML=t.merge=t.contains=void 0;var r=n(9698);r.__exportStar(n(8701),t),r.__exportStar(n(3434),t);var i=n(3434);t.default=i.load([]);var s=r.__importStar(n(6634));t.contains=s.contains,t.merge=s.merge,t.parseHTML=s.parseHTML,t.root=s.root},3434:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.load=void 0;var r=n(9698),i=r.__importStar(n(2754)),s=r.__importStar(n(6634)),o=n(7911),a=r.__importDefault(n(5012));t.load=function e(t,n,c){if(void 0===c&&(c=!0),null==t)throw new Error("cheerio.load() expects a string");var l=r.__assign(r.__assign({},i.default),i.flatten(n)),u=a.default(t,l,c),h=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r.__extends(t,e),t}(o.Cheerio);function p(e,t,n,s){return void 0===n&&(n=u),new h(e,t,n,r.__assign(r.__assign({},l),i.flatten(s)))}return Object.assign(p,s,{load:e,_root:u,_options:l,fn:h.prototype,prototype:h.prototype}),p}},2754:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.flatten=void 0;var r=n(9698);t.default={xml:!1,decodeEntities:!0};var i={_useHtmlParser2:!0,xmlMode:!0};t.flatten=function(e){return(null==e?void 0:e.xml)?"boolean"==typeof e.xml?i:r.__assign(r.__assign({},i),e.xml):null!=e?e:void 0}},5012:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.update=void 0;var r=n(3719),i=n(8585),s=n(7957),o=n(7915);function a(e,t){var n=Array.isArray(e)?e:[e];t?t.children=n:t=null;for(var i=0;i<n.length;i++){var s=n[i];s.parent&&s.parent.children!==n&&r.DomUtils.removeElement(s),t?(s.prev=n[i-1]||null,s.next=n[i+1]||null):s.prev=s.next=null,s.parent=t}return t}t.default=function(e,t,n){if("undefined"!=typeof Buffer&&Buffer.isBuffer(e)&&(e=e.toString()),"string"==typeof e)return t.xmlMode||t._useHtmlParser2?i.parse(e,t):s.parse(e,t,n);var r=e;if(!Array.isArray(r)&&o.isDocument(r))return r;var c=new o.Document([]);return a(r,c),c},t.update=a},8585:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.render=t.parse=void 0;var i=n(3719);Object.defineProperty(t,"parse",{enumerable:!0,get:function(){return i.parseDocument}});var s=n(7220);Object.defineProperty(t,"render",{enumerable:!0,get:function(){return r(s).default}})},7957:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.render=t.parse=void 0;var r=n(9698),i=n(7915),s=n(2394),o=r.__importDefault(n(1906));t.parse=function(e,t,n){var r={scriptingEnabled:"boolean"!=typeof t.scriptingEnabled||t.scriptingEnabled,treeAdapter:o.default,sourceCodeLocationInfo:t.sourceCodeLocationInfo},i=t.context;return n?s.parse(e,r):s.parseFragment(i,e,r)},t.render=function(e){for(var t,n=("length"in e?e:[e]),a=0;a<n.length;a+=1){var c=n[a];i.isDocument(c)&&(t=Array.prototype.splice).call.apply(t,r.__spreadArray([n,a,1],c.children))}return s.serialize({children:n},{treeAdapter:o.default})}},6634:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.merge=t.contains=t.root=t.parseHTML=t.text=t.xml=t.html=void 0;var r=n(9698),i=r.__importStar(n(2754)),s=n(7248),o=n(3719),a=n(7957),c=n(8585);function l(e,t,n){var r,i=t?"string"==typeof t?s.select(t,null!==(r=null==e?void 0:e._root)&&void 0!==r?r:[],n):t:null==e?void 0:e._root.children;return i?n.xmlMode||n._useHtmlParser2?c.render(i,n):a.render(i):""}function u(e){if(Array.isArray(e))return!0;if("object"!=typeof e||!Object.prototype.hasOwnProperty.call(e,"length")||"number"!=typeof e.length||e.length<0)return!1;for(var t=0;t<e.length;t++)if(!(t in e))return!1;return!0}t.html=function(e,t){return!t&&function(e){return"object"==typeof e&&null!=e&&!("length"in e)&&!("type"in e)}(e)&&(t=e,e=void 0),l(this||void 0,e,r.__assign(r.__assign(r.__assign({},i.default),this?this._options:{}),i.flatten(null!=t?t:{})))},t.xml=function(e){return l(this,e,r.__assign(r.__assign({},this._options),{xmlMode:!0}))},t.text=function e(t){for(var n=t||(this?this.root():[]),r="",i=0;i<n.length;i++){var s=n[i];o.DomUtils.isText(s)?r+=s.data:o.DomUtils.hasChildren(s)&&s.type!==o.ElementType.Comment&&s.type!==o.ElementType.Script&&s.type!==o.ElementType.Style&&(r+=e(s.children))}return r},t.parseHTML=function(e,t,n){if(void 0===n&&(n="boolean"==typeof t&&t),!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t);var r=this.load(e,i.default,!1);return n||r("script").remove(),r.root()[0].children.slice()},t.root=function(){return this(this._root)},t.contains=function(e,t){if(t===e)return!1;for(var n=t;n&&n!==n.parent;)if((n=n.parent)===e)return!0;return!1},t.merge=function(e,t){if(u(e)&&u(t)){for(var n=e.length,r=+t.length,i=0;i<r;i++)e[n++]=t[i];return e.length=n,e}}},8701:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},5633:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isHtml=t.cloneDom=t.domEach=t.cssCase=t.camelCase=t.isCheerio=t.isTag=void 0;var r=n(3719),i=n(7915);t.isTag=r.DomUtils.isTag,t.isCheerio=function(e){return null!=e.cheerio},t.camelCase=function(e){return e.replace(/[_.-](\w|$)/g,(function(e,t){return t.toUpperCase()}))},t.cssCase=function(e){return e.replace(/[A-Z]/g,"-$&").toLowerCase()},t.domEach=function(e,t){for(var n=e.length,r=0;r<n;r++)t(e[r],r);return e},t.cloneDom=function(e){var t="length"in e?Array.prototype.map.call(e,(function(e){return i.cloneNode(e,!0)})):[i.cloneNode(e,!0)],n=new i.Document(t);return t.forEach((function(e){e.parent=n})),t};var s=/<[a-zA-Z][^]*>/;t.isHtml=function(e){return s.test(e)}},9698:(e,t,n)=>{"use strict";n.r(t),n.d(t,{__extends:()=>i,__assign:()=>s,__rest:()=>o,__decorate:()=>a,__param:()=>c,__metadata:()=>l,__awaiter:()=>u,__generator:()=>h,__createBinding:()=>p,__exportStar:()=>d,__values:()=>f,__read:()=>m,__spread:()=>T,__spreadArrays:()=>E,__spreadArray:()=>_,__await:()=>g,__asyncGenerator:()=>A,__asyncDelegator:()=>C,__asyncValues:()=>N,__makeTemplateObject:()=>v,__importStar:()=>b,__importDefault:()=>S,__classPrivateFieldGet:()=>y,__classPrivateFieldSet:()=>I});var r=function(e,t){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(e,t)};function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var s=function(){return(s=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e}).apply(this,arguments)};function o(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(e);i<r.length;i++)t.indexOf(r[i])<0&&Object.prototype.propertyIsEnumerable.call(e,r[i])&&(n[r[i]]=e[r[i]])}return n}function a(e,t,n,r){var i,s=arguments.length,o=s<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(o=(s<3?i(o):s>3?i(t,n,o):i(t,n))||o);return s>3&&o&&Object.defineProperty(t,n,o),o}function c(e,t){return function(n,r){t(n,r,e)}}function l(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}function u(e,t,n,r){return new(n||(n=Promise))((function(i,s){function o(e){try{c(r.next(e))}catch(e){s(e)}}function a(e){try{c(r.throw(e))}catch(e){s(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,a)}c((r=r.apply(e,t||[])).next())}))}function h(e,t){var n,r,i,s,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return s={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(s[Symbol.iterator]=function(){return this}),s;function a(s){return function(a){return function(s){if(n)throw new TypeError("Generator is already executing.");for(;o;)try{if(n=1,r&&(i=2&s[0]?r.return:s[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,s[1])).done)return i;switch(r=0,i&&(s=[2&s[0],i.value]),s[0]){case 0:case 1:i=s;break;case 4:return o.label++,{value:s[1],done:!1};case 5:o.label++,r=s[1],s=[0];continue;case 7:s=o.ops.pop(),o.trys.pop();continue;default:if(!((i=(i=o.trys).length>0&&i[i.length-1])||6!==s[0]&&2!==s[0])){o=0;continue}if(3===s[0]&&(!i||s[1]>i[0]&&s[1]<i[3])){o.label=s[1];break}if(6===s[0]&&o.label<i[1]){o.label=i[1],i=s;break}if(i&&o.label<i[2]){o.label=i[2],o.ops.push(s);break}i[2]&&o.ops.pop(),o.trys.pop();continue}s=t.call(e,o)}catch(e){s=[6,e],r=0}finally{n=i=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,a])}}}var p=Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]};function d(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||p(t,e,n)}function f(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function m(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,s=n.call(e),o=[];try{for(;(void 0===t||t-- >0)&&!(r=s.next()).done;)o.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=s.return)&&n.call(s)}finally{if(i)throw i.error}}return o}function T(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(m(arguments[t]));return e}function E(){for(var e=0,t=0,n=arguments.length;t<n;t++)e+=arguments[t].length;var r=Array(e),i=0;for(t=0;t<n;t++)for(var s=arguments[t],o=0,a=s.length;o<a;o++,i++)r[i]=s[o];return r}function _(e,t,n){if(n||2===arguments.length)for(var r,i=0,s=t.length;i<s;i++)!r&&i in t||(r||(r=Array.prototype.slice.call(t,0,i)),r[i]=t[i]);return e.concat(r||t)}function g(e){return this instanceof g?(this.v=e,this):new g(e)}function A(e,t,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var r,i=n.apply(e,t||[]),s=[];return r={},o("next"),o("throw"),o("return"),r[Symbol.asyncIterator]=function(){return this},r;function o(e){i[e]&&(r[e]=function(t){return new Promise((function(n,r){s.push([e,t,n,r])>1||a(e,t)}))})}function a(e,t){try{(n=i[e](t)).value instanceof g?Promise.resolve(n.value.v).then(c,l):u(s[0][2],n)}catch(e){u(s[0][3],e)}var n}function c(e){a("next",e)}function l(e){a("throw",e)}function u(e,t){e(t),s.shift(),s.length&&a(s[0][0],s[0][1])}}function C(e){var t,n;return t={},r("next"),r("throw",(function(e){throw e})),r("return"),t[Symbol.iterator]=function(){return this},t;function r(r,i){t[r]=e[r]?function(t){return(n=!n)?{value:g(e[r](t)),done:"return"===r}:i?i(t):t}:i}}function N(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,n=e[Symbol.asyncIterator];return n?n.call(e):(e=f(e),t={},r("next"),r("throw"),r("return"),t[Symbol.asyncIterator]=function(){return this},t);function r(n){t[n]=e[n]&&function(t){return new Promise((function(r,i){!function(e,t,n,r){Promise.resolve(r).then((function(t){e({value:t,done:n})}),t)}(r,i,(t=e[n](t)).done,t.value)}))}}}function v(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e}var O=Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t};function b(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&p(t,e,n);return O(t,e),t}function S(e){return e&&e.__esModule?e:{default:e}}function y(e,t,n,r){if("a"===n&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?r:"a"===n?r.call(e):r?r.value:t.get(e)}function I(e,t,n,r,i){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!i)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===r?i.call(e,n):i?i.value=n:t.set(e,n),n}},8783:(e,t,n)=>{var r=n(8614).EventEmitter,i=n(3129).spawn,s=n(5622),o=s.dirname,a=s.basename,c=n(5747);function l(e,t){this.flags=e,this.required=e.indexOf("<")>=0,this.optional=e.indexOf("[")>=0,this.bool=-1===e.indexOf("-no-"),(e=e.split(/[ ,|]+/)).length>1&&!/^[[<]/.test(e[1])&&(this.short=e.shift()),this.long=e.shift(),this.description=t||""}function u(e){this.commands=[],this.options=[],this._execs={},this._allowUnknownOption=!1,this._args=[],this._name=e||""}function h(e,t){var n=Math.max(0,t-e.length);return e+Array(n+1).join(" ")}function p(e,t){t=t||[];for(var n=0;n<t.length;n++)"--help"!==t[n]&&"-h"!==t[n]||(e.outputHelp(),process.exit(0))}function d(e){var t=e.name+(!0===e.variadic?"...":"");return e.required?"<"+t+">":"["+t+"]"}function f(e){try{if(c.statSync(e).isFile())return!0}catch(e){return!1}}n(1669).inherits(u,r),(t=e.exports=new u).Command=u,t.Option=l,l.prototype.name=function(){return this.long.replace("--","").replace("no-","")},l.prototype.attributeName=function(){return this.name().split("-").reduce((function(e,t){return e+t[0].toUpperCase()+t.slice(1)}))},l.prototype.is=function(e){return this.short===e||this.long===e},u.prototype.command=function(e,t,n){"object"==typeof t&&null!==t&&(n=t,t=null),n=n||{};var r=e.split(/ +/),i=new u(r.shift());return t&&(i.description(t),this.executables=!0,this._execs[i._name]=!0,n.isDefault&&(this.defaultExecutable=i._name)),i._noHelp=!!n.noHelp,this.commands.push(i),i.parseExpectedArgs(r),i.parent=this,t?this:i},u.prototype.arguments=function(e){return this.parseExpectedArgs(e.split(/ +/))},u.prototype.addImplicitHelpCommand=function(){this.command("help [cmd]","display help for [cmd]")},u.prototype.parseExpectedArgs=function(e){if(e.length){var t=this;return e.forEach((function(e){var n={required:!1,name:"",variadic:!1};switch(e[0]){case"<":n.required=!0,n.name=e.slice(1,-1);break;case"[":n.name=e.slice(1,-1)}n.name.length>3&&"..."===n.name.slice(-3)&&(n.variadic=!0,n.name=n.name.slice(0,-3)),n.name&&t._args.push(n)})),this}},u.prototype.action=function(e){var t=this,n=function(n,r){n=n||[],r=r||[];var i=t.parseOptions(r);p(t,i.unknown),i.unknown.length>0&&t.unknownOption(i.unknown[0]),i.args.length&&(n=i.args.concat(n)),t._args.forEach((function(e,r){e.required&&null==n[r]?t.missingArgument(e.name):e.variadic&&(r!==t._args.length-1&&t.variadicArgNotLast(e.name),n[r]=n.splice(r))})),t._args.length?n[t._args.length]=t:n.push(t),e.apply(t,n)},r=this.parent||this,i=r===this?"*":this._name;return r.on("command:"+i,n),this._alias&&r.on("command:"+this._alias,n),this},u.prototype.option=function(e,t,n,r){var i=this,s=new l(e,t),o=s.name(),a=s.attributeName();if("function"!=typeof n)if(n instanceof RegExp){var c=n;n=function(e,t){var n=c.exec(e);return n?n[0]:t}}else r=n,n=null;return(!s.bool||s.optional||s.required)&&(s.bool||(r=!0),void 0!==r&&(i[a]=r,s.defaultValue=r)),this.options.push(s),this.on("option:"+o,(function(e){null!==e&&n&&(e=n(e,void 0===i[a]?r:i[a])),"boolean"==typeof i[a]||void 0===i[a]?i[a]=null==e?!!s.bool&&(r||!0):e:null!==e&&(i[a]=e)})),this},u.prototype.allowUnknownOption=function(e){return this._allowUnknownOption=0===arguments.length||e,this},u.prototype.parse=function(e){this.executables&&this.addImplicitHelpCommand(),this.rawArgs=e,this._name=this._name||a(e[1],".js"),this.executables&&e.length<3&&!this.defaultExecutable&&e.push("--help");var t=this.parseOptions(this.normalize(e.slice(2))),n=this.args=t.args,r=this.parseArgs(this.args,t.unknown),i=r.args[0],s=null;return i&&(s=this.commands.filter((function(e){return e.alias()===i}))[0]),!0===this._execs[i]?this.executeSubCommand(e,n,t.unknown):s?(n[0]=s._name,this.executeSubCommand(e,n,t.unknown)):this.defaultExecutable?(n.unshift(this.defaultExecutable),this.executeSubCommand(e,n,t.unknown)):r},u.prototype.executeSubCommand=function(e,t,n){(t=t.concat(n)).length||this.help(),"help"===t[0]&&1===t.length&&this.help(),"help"===t[0]&&(t[0]=t[1],t[1]="--help");var r,l=e[1],u=a(l,s.extname(l))+"-"+t[0],h=c.realpathSync(l);r=o(h);var p,d=s.join(r,u),m=!1;f(d+".js")?(u=d+".js",m=!0):f(d+".ts")?(u=d+".ts",m=!0):f(d)&&(u=d),t=t.slice(1),"win32"!==process.platform?m?(t.unshift(u),t=(process.execArgv||[]).concat(t),p=i(process.argv[0],t,{stdio:"inherit",customFds:[0,1,2]})):p=i(u,t,{stdio:"inherit",customFds:[0,1,2]}):(t.unshift(u),p=i(process.execPath,t,{stdio:"inherit"})),["SIGUSR1","SIGUSR2","SIGTERM","SIGINT","SIGHUP"].forEach((function(e){process.on(e,(function(){!1===p.killed&&null===p.exitCode&&p.kill(e)}))})),p.on("close",process.exit.bind(process)),p.on("error",(function(e){"ENOENT"===e.code?console.error("error: %s(1) does not exist, try --help",u):"EACCES"===e.code&&console.error("error: %s(1) not executable. try chmod or run with root",u),process.exit(1)})),this.runningCommand=p},u.prototype.normalize=function(e){for(var t,n,r,i=[],s=0,o=e.length;s<o;++s){if(t=e[s],s>0&&(n=this.optionFor(e[s-1])),"--"===t){i=i.concat(e.slice(s));break}n&&n.required?i.push(t):t.length>1&&"-"===t[0]&&"-"!==t[1]?t.slice(1).split("").forEach((function(e){i.push("-"+e)})):/^--/.test(t)&&~(r=t.indexOf("="))?i.push(t.slice(0,r),t.slice(r+1)):i.push(t)}return i},u.prototype.parseArgs=function(e,t){var n;return e.length?(n=e[0],this.listeners("command:"+n).length?this.emit("command:"+e.shift(),e,t):this.emit("command:*",e)):(p(this,t),t.length>0&&this.unknownOption(t[0]),0===this.commands.length&&0===this._args.filter((function(e){return e.required})).length&&this.emit("command:*")),this},u.prototype.optionFor=function(e){for(var t=0,n=this.options.length;t<n;++t)if(this.options[t].is(e))return this.options[t]},u.prototype.parseOptions=function(e){for(var t,n,r,i=[],s=e.length,o=[],a=0;a<s;++a)if(r=e[a],t)i.push(r);else if("--"!==r)if(n=this.optionFor(r))if(n.required){if(null==(r=e[++a]))return this.optionMissingArgument(n);this.emit("option:"+n.name(),r)}else n.optional?(null==(r=e[a+1])||"-"===r[0]&&"-"!==r?r=null:++a,this.emit("option:"+n.name(),r)):this.emit("option:"+n.name());else r.length>1&&"-"===r[0]?(o.push(r),a+1<e.length&&"-"!==e[a+1][0]&&o.push(e[++a])):i.push(r);else t=!0;return{args:i,unknown:o}},u.prototype.opts=function(){for(var e={},t=this.options.length,n=0;n<t;n++){var r=this.options[n].attributeName();e[r]=r===this._versionOptionName?this._version:this[r]}return e},u.prototype.missingArgument=function(e){console.error("error: missing required argument `%s'",e),process.exit(1)},u.prototype.optionMissingArgument=function(e,t){t?console.error("error: option `%s' argument missing, got `%s'",e.flags,t):console.error("error: option `%s' argument missing",e.flags),process.exit(1)},u.prototype.unknownOption=function(e){this._allowUnknownOption||(console.error("error: unknown option `%s'",e),process.exit(1))},u.prototype.variadicArgNotLast=function(e){console.error("error: variadic arguments must be last `%s'",e),process.exit(1)},u.prototype.version=function(e,t){if(0===arguments.length)return this._version;this._version=e;var n=new l(t=t||"-V, --version","output the version number");return this._versionOptionName=n.long.substr(2)||"version",this.options.push(n),this.on("option:"+this._versionOptionName,(function(){process.stdout.write(e+"\n"),process.exit(0)})),this},u.prototype.description=function(e,t){return 0===arguments.length?this._description:(this._description=e,this._argsDescription=t,this)},u.prototype.alias=function(e){var t=this;if(0!==this.commands.length&&(t=this.commands[this.commands.length-1]),0===arguments.length)return t._alias;if(e===t._name)throw new Error("Command alias can't be the same as its name");return t._alias=e,this},u.prototype.usage=function(e){var t=this._args.map((function(e){return d(e)})),n="[options]"+(this.commands.length?" [command]":"")+(this._args.length?" "+t.join(" "):"");return 0===arguments.length?this._usage||n:(this._usage=e,this)},u.prototype.name=function(e){return 0===arguments.length?this._name:(this._name=e,this)},u.prototype.prepareCommands=function(){return this.commands.filter((function(e){return!e._noHelp})).map((function(e){var t=e._args.map((function(e){return d(e)})).join(" ");return[e._name+(e._alias?"|"+e._alias:"")+(e.options.length?" [options]":"")+(t?" "+t:""),e._description]}))},u.prototype.largestCommandLength=function(){return this.prepareCommands().reduce((function(e,t){return Math.max(e,t[0].length)}),0)},u.prototype.largestOptionLength=function(){var e=[].slice.call(this.options);return e.push({flags:"-h, --help"}),e.reduce((function(e,t){return Math.max(e,t.flags.length)}),0)},u.prototype.largestArgLength=function(){return this._args.reduce((function(e,t){return Math.max(e,t.name.length)}),0)},u.prototype.padWidth=function(){var e=this.largestOptionLength();return this._argsDescription&&this._args.length&&this.largestArgLength()>e&&(e=this.largestArgLength()),this.commands&&this.commands.length&&this.largestCommandLength()>e&&(e=this.largestCommandLength()),e},u.prototype.optionHelp=function(){var e=this.padWidth();return this.options.map((function(t){return h(t.flags,e)+" "+t.description+(t.bool&&void 0!==t.defaultValue?" (default: "+JSON.stringify(t.defaultValue)+")":"")})).concat([h("-h, --help",e)+" output usage information"]).join("\n")},u.prototype.commandHelp=function(){if(!this.commands.length)return"";var e=this.prepareCommands(),t=this.padWidth();return["Commands:",e.map((function(e){var n=e[1]?" "+e[1]:"";return(n?h(e[0],t):e[0])+n})).join("\n").replace(/^/gm," "),""].join("\n")},u.prototype.helpInformation=function(){var e=[];if(this._description){e=[this._description,""];var t=this._argsDescription;if(t&&this._args.length){var n=this.padWidth();e.push("Arguments:"),e.push(""),this._args.forEach((function(r){e.push(" "+h(r.name,n)+" "+t[r.name])})),e.push("")}}var r=this._name;this._alias&&(r=r+"|"+this._alias);var i=["Usage: "+r+" "+this.usage(),""],s=[],o=this.commandHelp();o&&(s=[o]);var a=["Options:",""+this.optionHelp().replace(/^/gm," "),""];return i.concat(e).concat(a).concat(s).join("\n")},u.prototype.outputHelp=function(e){e||(e=function(e){return e}),process.stdout.write(e(this.helpInformation())),this.emit("--help")},u.prototype.help=function(e){this.outputHelp(e),process.exit()}},996:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.attributeRules=void 0;var r=n(1073),i=/[-[\]{}()*+?.,\\^$|#\s]/g;function s(e){return e.replace(i,"\\$&")}t.attributeRules={equals:function(e,t,n){var r=n.adapter,i=t.name,s=t.value;return t.ignoreCase?(s=s.toLowerCase(),function(t){var n=r.getAttributeValue(t,i);return null!=n&&n.length===s.length&&n.toLowerCase()===s&&e(t)}):function(t){return r.getAttributeValue(t,i)===s&&e(t)}},hyphen:function(e,t,n){var r=n.adapter,i=t.name,s=t.value,o=s.length;return t.ignoreCase?(s=s.toLowerCase(),function(t){var n=r.getAttributeValue(t,i);return null!=n&&(n.length===o||"-"===n.charAt(o))&&n.substr(0,o).toLowerCase()===s&&e(t)}):function(t){var n=r.getAttributeValue(t,i);return null!=n&&(n.length===o||"-"===n.charAt(o))&&n.substr(0,o)===s&&e(t)}},element:function(e,t,n){var i=t.name,o=t.value,a=t.ignoreCase,c=n.adapter;if(/\s/.test(o))return r.falseFunc;var l=new RegExp("(?:^|\\s)"+s(o)+"(?:$|\\s)",a?"i":"");return function(t){var n=c.getAttributeValue(t,i);return null!=n&&n.length>=o.length&&l.test(n)&&e(t)}},exists:function(e,t,n){var r=t.name,i=n.adapter;return function(t){return i.hasAttrib(t,r)&&e(t)}},start:function(e,t,n){var i=n.adapter,s=t.name,o=t.value,a=o.length;return 0===a?r.falseFunc:t.ignoreCase?(o=o.toLowerCase(),function(t){var n=i.getAttributeValue(t,s);return null!=n&&n.length>=a&&n.substr(0,a).toLowerCase()===o&&e(t)}):function(t){var n;return!!(null===(n=i.getAttributeValue(t,s))||void 0===n?void 0:n.startsWith(o))&&e(t)}},end:function(e,t,n){var i=n.adapter,s=t.name,o=t.value,a=-o.length;return 0===a?r.falseFunc:t.ignoreCase?(o=o.toLowerCase(),function(t){var n;return(null===(n=i.getAttributeValue(t,s))||void 0===n?void 0:n.substr(a).toLowerCase())===o&&e(t)}):function(t){var n;return!!(null===(n=i.getAttributeValue(t,s))||void 0===n?void 0:n.endsWith(o))&&e(t)}},any:function(e,t,n){var i=n.adapter,o=t.name,a=t.value;if(""===a)return r.falseFunc;if(t.ignoreCase){var c=new RegExp(s(a),"i");return function(t){var n=i.getAttributeValue(t,o);return null!=n&&n.length>=a.length&&c.test(n)&&e(t)}}return function(t){var n;return!!(null===(n=i.getAttributeValue(t,o))||void 0===n?void 0:n.includes(a))&&e(t)}},not:function(e,t,n){var r=n.adapter,i=t.name,s=t.value;return""===s?function(t){return!!r.getAttributeValue(t,i)&&e(t)}:t.ignoreCase?(s=s.toLowerCase(),function(t){var n=r.getAttributeValue(t,i);return(null==n||n.length!==s.length||n.toLowerCase()!==s)&&e(t)}):function(t){return r.getAttributeValue(t,i)!==s&&e(t)}}}},8866:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.compileToken=t.compileUnsafe=t.compile=void 0;var i=n(9751),s=n(1073),o=r(n(7353)),a=n(7177),c=n(3621),l=n(1768);function u(e,t,n){return m("string"==typeof e?i.parse(e,t):e,t,n)}function h(e){return"pseudo"===e.type&&("scope"===e.name||Array.isArray(e.data)&&e.data.some((function(e){return e.some(h)})))}t.compile=function(e,t,n){var r=u(e,t,n);return l.ensureIsTag(r,t.adapter)},t.compileUnsafe=u;var p={type:"descendant"},d={type:"_flexibleDescendant"},f={type:"pseudo",name:"scope",data:null};function m(e,t,n){var r;(e=e.filter((function(e){return e.length>0}))).forEach(o.default),n=null!==(r=t.context)&&void 0!==r?r:n;var i=Array.isArray(n),u=n&&(Array.isArray(n)?n:[n]);!function(e,t,n){for(var r=t.adapter,i=!!(null==n?void 0:n.every((function(e){var t=r.isTag(e)&&r.getParent(e);return e===l.PLACEHOLDER_ELEMENT||t&&r.isTag(t)}))),s=0,o=e;s<o.length;s++){var c=o[s];if(c.length>0&&a.isTraversal(c[0])&&"descendant"!==c[0].type);else{if(!i||c.some(h))continue;c.unshift(p)}c.unshift(f)}}(e,t,u);var E=!1,_=e.map((function(e){if(e.length>=2){var n=e[0],r=e[1];"pseudo"!==n.type||"scope"!==n.name||(i&&"descendant"===r.type?e[1]=d:"adjacent"!==r.type&&"sibling"!==r.type||(E=!0))}return function(e,t,n){var r;return e.reduce((function(e,r){return e===s.falseFunc?s.falseFunc:c.compileGeneralSelector(e,r,t,n,m)}),null!==(r=t.rootFunc)&&void 0!==r?r:s.trueFunc)}(e,t,u)})).reduce(T,s.falseFunc);return _.shouldTestNextSiblings=E,_}function T(e,t){return t===s.falseFunc||e===s.trueFunc?e:e===s.falseFunc||t===s.trueFunc?t:function(n){return e(n)||t(n)}}t.compileToken=m},3621:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.compileGeneralSelector=void 0;var r=n(996),i=n(8677);t.compileGeneralSelector=function(e,t,n,s,o){var a=n.adapter,c=n.equals;switch(t.type){case"pseudo-element":throw new Error("Pseudo-elements are not supported by css-select");case"attribute":return r.attributeRules[t.action](e,t,n);case"pseudo":return i.compilePseudoSelector(e,t,n,s,o);case"tag":return function(n){return a.getName(n)===t.name&&e(n)};case"descendant":if(!1===n.cacheResults||"undefined"==typeof WeakSet)return function(t){for(var n=t;n=a.getParent(n);)if(a.isTag(n)&&e(n))return!0;return!1};var l=new WeakSet;return function(t){for(var n=t;n=a.getParent(n);)if(!l.has(n)){if(a.isTag(n)&&e(n))return!0;l.add(n)}return!1};case"_flexibleDescendant":return function(t){var n=t;do{if(a.isTag(n)&&e(n))return!0}while(n=a.getParent(n));return!1};case"parent":return function(t){return a.getChildren(t).some((function(t){return a.isTag(t)&&e(t)}))};case"child":return function(t){var n=a.getParent(t);return null!=n&&a.isTag(n)&&e(n)};case"sibling":return function(t){for(var n=a.getSiblings(t),r=0;r<n.length;r++){var i=n[r];if(c(t,i))break;if(a.isTag(i)&&e(i))return!0}return!1};case"adjacent":return function(t){for(var n,r=a.getSiblings(t),i=0;i<r.length;i++){var s=r[i];if(c(t,s))break;a.isTag(s)&&(n=s)}return!!n&&e(n)};case"universal":return e}}},5366:function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&r(t,e,n);return i(t,e),t};Object.defineProperty(t,"__esModule",{value:!0}),t.aliases=t.pseudos=t.filters=t.is=t.selectOne=t.selectAll=t.prepareContext=t._compileToken=t._compileUnsafe=t.compile=void 0;var o=s(n(9432)),a=n(1073),c=n(8866),l=n(1768),u=function(e,t){return e===t},h={adapter:o,equals:u};function p(e){var t,n,r,i,s=null!=e?e:h;return null!==(t=s.adapter)&&void 0!==t||(s.adapter=o),null!==(n=s.equals)&&void 0!==n||(s.equals=null!==(i=null===(r=s.adapter)||void 0===r?void 0:r.equals)&&void 0!==i?i:u),s}function d(e){return function(t,n,r){var i=p(n);return e(t,i,r)}}function f(e){return function(t,n,r){var i=p(r);"function"!=typeof t&&(t=c.compileUnsafe(t,i,n));var s=m(n,i.adapter,t.shouldTestNextSiblings);return e(t,s,i)}}function m(e,t,n){return void 0===n&&(n=!1),n&&(e=function(e,t){for(var n=Array.isArray(e)?e.slice(0):[e],r=0;r<n.length;r++){var i=l.getNextSiblings(n[r],t);n.push.apply(n,i)}return n}(e,t)),Array.isArray(e)?t.removeSubsets(e):t.getChildren(e)}t.compile=d(c.compile),t._compileUnsafe=d(c.compileUnsafe),t._compileToken=d(c.compileToken),t.prepareContext=m,t.selectAll=f((function(e,t,n){return e!==a.falseFunc&&t&&0!==t.length?n.adapter.findAll(e,t):[]})),t.selectOne=f((function(e,t,n){return e!==a.falseFunc&&t&&0!==t.length?n.adapter.findOne(e,t):null})),t.is=function(e,t,n){var r=p(n);return("function"==typeof t?t:c.compile(t,r))(e)},t.default=t.selectAll;var T=n(8677);Object.defineProperty(t,"filters",{enumerable:!0,get:function(){return T.filters}}),Object.defineProperty(t,"pseudos",{enumerable:!0,get:function(){return T.pseudos}}),Object.defineProperty(t,"aliases",{enumerable:!0,get:function(){return T.aliases}})},7177:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isTraversal=t.procedure=void 0,t.procedure={universal:50,tag:30,attribute:1,pseudo:0,"pseudo-element":0,descendant:-1,child:-1,parent:-1,sibling:-1,adjacent:-1,_flexibleDescendant:-1},t.isTraversal=function(e){return t.procedure[e.type]<0}},2968:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.aliases=void 0,t.aliases={"any-link":":is(a, area, link)[href]",link:":any-link:not(:visited)",disabled:":is(\n :is(button, input, select, textarea, optgroup, option)[disabled],\n optgroup[disabled] > option,\n fieldset[disabled]:not(fieldset[disabled] legend:first-of-type *)\n )",enabled:":not(:disabled)",checked:":is(:is(input[type=radio], input[type=checkbox])[checked], option:selected)",required:":is(input, select, textarea)[required]",optional:":is(input, select, textarea):not([required])",selected:"option:is([selected], select:not([multiple]):not(:has(> option[selected])) > :first-of-type)",checkbox:"[type=checkbox]",file:"[type=file]",password:"[type=password]",radio:"[type=radio]",reset:"[type=reset]",image:"[type=image]",submit:"[type=submit]",parent:":not(:empty)",header:":is(h1, h2, h3, h4, h5, h6)",button:":is(button, input[type=button])",input:":is(input, textarea, select, button)",text:"input:is(:not([type!='']), [type=text])"}},7689:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.filters=void 0;var i=r(n(7540)),s=n(1073);function o(e,t){return function(n){var r=t.getParent(n);return null!=r&&t.isTag(r)&&e(n)}}function a(e){return function(t,n,r){var i=r.adapter[e];return"function"!=typeof i?s.falseFunc:function(e){return i(e)&&t(e)}}}t.filters={contains:function(e,t,n){var r=n.adapter;return function(n){return e(n)&&r.getText(n).includes(t)}},icontains:function(e,t,n){var r=n.adapter,i=t.toLowerCase();return function(t){return e(t)&&r.getText(t).toLowerCase().includes(i)}},"nth-child":function(e,t,n){var r=n.adapter,a=n.equals,c=i.default(t);return c===s.falseFunc?s.falseFunc:c===s.trueFunc?o(e,r):function(t){for(var n=r.getSiblings(t),i=0,s=0;s<n.length&&!a(t,n[s]);s++)r.isTag(n[s])&&i++;return c(i)&&e(t)}},"nth-last-child":function(e,t,n){var r=n.adapter,a=n.equals,c=i.default(t);return c===s.falseFunc?s.falseFunc:c===s.trueFunc?o(e,r):function(t){for(var n=r.getSiblings(t),i=0,s=n.length-1;s>=0&&!a(t,n[s]);s--)r.isTag(n[s])&&i++;return c(i)&&e(t)}},"nth-of-type":function(e,t,n){var r=n.adapter,a=n.equals,c=i.default(t);return c===s.falseFunc?s.falseFunc:c===s.trueFunc?o(e,r):function(t){for(var n=r.getSiblings(t),i=0,s=0;s<n.length;s++){var o=n[s];if(a(t,o))break;r.isTag(o)&&r.getName(o)===r.getName(t)&&i++}return c(i)&&e(t)}},"nth-last-of-type":function(e,t,n){var r=n.adapter,a=n.equals,c=i.default(t);return c===s.falseFunc?s.falseFunc:c===s.trueFunc?o(e,r):function(t){for(var n=r.getSiblings(t),i=0,s=n.length-1;s>=0;s--){var o=n[s];if(a(t,o))break;r.isTag(o)&&r.getName(o)===r.getName(t)&&i++}return c(i)&&e(t)}},root:function(e,t,n){var r=n.adapter;return function(t){var n=r.getParent(t);return(null==n||!r.isTag(n))&&e(t)}},scope:function(e,n,r,i){var s=r.equals;return i&&0!==i.length?1===i.length?function(t){return s(i[0],t)&&e(t)}:function(t){return i.includes(t)&&e(t)}:t.filters.root(e,n,r)},hover:a("isHovered"),visited:a("isVisited"),active:a("isActive")}},8677:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.compilePseudoSelector=t.aliases=t.pseudos=t.filters=void 0;var r=n(1073),i=n(9751),s=n(7689);Object.defineProperty(t,"filters",{enumerable:!0,get:function(){return s.filters}});var o=n(7221);Object.defineProperty(t,"pseudos",{enumerable:!0,get:function(){return o.pseudos}});var a=n(2968);Object.defineProperty(t,"aliases",{enumerable:!0,get:function(){return a.aliases}});var c=n(1768);t.compilePseudoSelector=function(e,t,n,l,u){var h=t.name,p=t.data;if(Array.isArray(p))return c.subselects[h](e,p,n,l,u);if(h in a.aliases){if(null!=p)throw new Error("Pseudo "+h+" doesn't have any arguments");var d=i.parse(a.aliases[h],n);return c.subselects.is(e,d,n,l,u)}if(h in s.filters)return s.filters[h](e,p,n,l);if(h in o.pseudos){var f=o.pseudos[h];return o.verifyPseudoArgs(f,h,p),f===r.falseFunc?r.falseFunc:e===r.trueFunc?function(e){return f(e,n,p)}:function(t){return f(t,n,p)&&e(t)}}throw new Error("unmatched pseudo-class :"+h)}},7221:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.verifyPseudoArgs=t.pseudos=void 0,t.pseudos={empty:function(e,t){var n=t.adapter;return!n.getChildren(e).some((function(e){return n.isTag(e)||""!==n.getText(e)}))},"first-child":function(e,t){var n=t.adapter,r=t.equals,i=n.getSiblings(e).find((function(e){return n.isTag(e)}));return null!=i&&r(e,i)},"last-child":function(e,t){for(var n=t.adapter,r=t.equals,i=n.getSiblings(e),s=i.length-1;s>=0;s--){if(r(e,i[s]))return!0;if(n.isTag(i[s]))break}return!1},"first-of-type":function(e,t){for(var n=t.adapter,r=t.equals,i=n.getSiblings(e),s=n.getName(e),o=0;o<i.length;o++){var a=i[o];if(r(e,a))return!0;if(n.isTag(a)&&n.getName(a)===s)break}return!1},"last-of-type":function(e,t){for(var n=t.adapter,r=t.equals,i=n.getSiblings(e),s=n.getName(e),o=i.length-1;o>=0;o--){var a=i[o];if(r(e,a))return!0;if(n.isTag(a)&&n.getName(a)===s)break}return!1},"only-of-type":function(e,t){var n=t.adapter,r=t.equals,i=n.getName(e);return n.getSiblings(e).every((function(t){return r(e,t)||!n.isTag(t)||n.getName(t)!==i}))},"only-child":function(e,t){var n=t.adapter,r=t.equals;return n.getSiblings(e).every((function(t){return r(e,t)||!n.isTag(t)}))}},t.verifyPseudoArgs=function(e,t,n){if(null===n){if(e.length>2)throw new Error("pseudo-selector :"+t+" requires an argument")}else if(2===e.length)throw new Error("pseudo-selector :"+t+" doesn't have any arguments")}},1768:function(e,t,n){"use strict";var r=this&&this.__spreadArray||function(e,t){for(var n=0,r=t.length,i=e.length;n<r;n++,i++)e[i]=t[n];return e};Object.defineProperty(t,"__esModule",{value:!0}),t.subselects=t.getNextSiblings=t.ensureIsTag=t.PLACEHOLDER_ELEMENT=void 0;var i=n(1073),s=n(7177);function o(e,t){return e===i.falseFunc?i.falseFunc:function(n){return t.isTag(n)&&e(n)}}function a(e,t){var n=t.getSiblings(e);if(n.length<=1)return[];var r=n.indexOf(e);return r<0||r===n.length-1?[]:n.slice(r+1).filter(t.isTag)}t.PLACEHOLDER_ELEMENT={},t.ensureIsTag=o,t.getNextSiblings=a;var c=function(e,t,n,r,i){var s=i(t,{xmlMode:!!n.xmlMode,adapter:n.adapter,equals:n.equals},r);return function(t){return s(t)&&e(t)}};t.subselects={is:c,matches:c,not:function(e,t,n,r,s){var o=s(t,{xmlMode:!!n.xmlMode,adapter:n.adapter,equals:n.equals},r);return o===i.falseFunc?e:o===i.trueFunc?i.falseFunc:function(t){return!o(t)&&e(t)}},has:function(e,n,c,l,u){var h=c.adapter,p={xmlMode:!!c.xmlMode,adapter:h,equals:c.equals},d=n.some((function(e){return e.some(s.isTraversal)}))?[t.PLACEHOLDER_ELEMENT]:void 0,f=u(n,p,d);if(f===i.falseFunc)return i.falseFunc;if(f===i.trueFunc)return function(t){return h.getChildren(t).some(h.isTag)&&e(t)};var m=o(f,h),T=f.shouldTestNextSiblings,E=void 0!==T&&T;return d?function(t){d[0]=t;var n=h.getChildren(t),i=E?r(r([],n),a(t,h)):n;return e(t)&&h.existsOne(m,i)}:function(t){return e(t)&&h.existsOne(m,h.getChildren(t))}}}},7353:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(7177),i={exists:10,equals:8,not:7,start:6,end:6,any:5,hyphen:4,element:4};function s(e){var t=r.procedure[e.type];if("attribute"===e.type)(t=i[e.action])===i.equals&&"id"===e.name&&(t=9),e.ignoreCase&&(t>>=1);else if("pseudo"===e.type)if(e.data)if("has"===e.name||"contains"===e.name)t=0;else if(Array.isArray(e.data)){t=0;for(var n=0;n<e.data.length;n++)if(1===e.data[n].length){var o=s(e.data[n][0]);if(0===o){t=0;break}o>t&&(t=o)}e.data.length>1&&t>0&&(t-=1)}else t=1;else t=3;return t}t.default=function(e){for(var t=e.map(s),n=1;n<e.length;n++){var r=t[n];if(!(r<0))for(var i=n-1;i>=0&&r<t[i];i--){var o=e[i+1];e[i+1]=e[i],e[i]=o,t[i+1]=t[i],t[i]=r}}}},9751:function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),i=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||r(t,e,n)},s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.stringify=t.parse=void 0,i(n(675),t);var o=n(675);Object.defineProperty(t,"parse",{enumerable:!0,get:function(){return s(o).default}});var a=n(6868);Object.defineProperty(t,"stringify",{enumerable:!0,get:function(){return s(a).default}})},675:function(e,t){"use strict";var n=this&&this.__spreadArray||function(e,t){for(var n=0,r=t.length,i=e.length;n<r;n++,i++)e[i]=t[n];return e};Object.defineProperty(t,"__esModule",{value:!0}),t.isTraversal=void 0;var r=/^[^\\#]?(?:\\(?:[\da-f]{1,6}\s?|.)|[\w\-\u00b0-\uFFFF])+/,i=/\\([\da-f]{1,6}\s?|(\s)|.)/gi,s=new Map([["~","element"],["^","start"],["$","end"],["*","any"],["!","not"],["|","hyphen"]]),o={">":"child","<":"parent","~":"sibling","+":"adjacent"},a={"#":["id","equals"],".":["class","element"]},c=new Set(["has","not","matches","is","host","host-context"]),l=new Set(n(["descendant"],Object.keys(o).map((function(e){return o[e]})))),u=new Set(["accept","accept-charset","align","alink","axis","bgcolor","charset","checked","clear","codetype","color","compact","declare","defer","dir","direction","disabled","enctype","face","frame","hreflang","http-equiv","lang","language","link","media","method","multiple","nohref","noresize","noshade","nowrap","readonly","rel","rev","rules","scope","scrolling","selected","shape","target","text","type","valign","valuetype","vlink"]);function h(e){return l.has(e.type)}t.isTraversal=h;var p=new Set(["contains","icontains"]),d=new Set(['"',"'"]);function f(e,t,n){var r=parseInt(t,16)-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)}function m(e){return e.replace(i,f)}function T(e){return" "===e||"\n"===e||"\t"===e||"\f"===e||"\r"===e}function E(e,t,n,i){var l,f;void 0===n&&(n={});var g=[],A=!1;function C(e){var n=t.slice(i+e).match(r);if(!n)throw new Error("Expected name, found "+t.slice(i));var s=n[0];return i+=e+s.length,m(s)}function N(e){for(;T(t.charAt(i+e));)e++;i+=e}function v(e){for(var n=0;"\\"===t.charAt(--e);)n++;return 1==(1&n)}function O(){if(g.length>0&&h(g[g.length-1]))throw new Error("Did not expect successive traversals.")}for(N(0);""!==t;){var b=t.charAt(i);if(T(b))A=!0,N(1);else if(b in o)O(),g.push({type:o[b]}),A=!1,N(1);else if(","===b){if(0===g.length)throw new Error("Empty sub-selector");e.push(g),g=[],A=!1,N(1)}else if(t.startsWith("/*",i)){var S=t.indexOf("*/",i+2);if(S<0)throw new Error("Comment was not terminated");i=S+2}else if(A&&(O(),g.push({type:"descendant"}),A=!1),b in a){var y=a[b],I=y[0],R=y[1];g.push({type:"attribute",name:I,action:R,value:C(1),namespace:null,ignoreCase:!!n.xmlMode&&null})}else if("["===b){N(1);var k=void 0,L=null;"|"===t.charAt(i)&&(L="",i+=1),t.startsWith("*|",i)&&(L="*",i+=2),k=C(0),null===L&&"|"===t.charAt(i)&&"="!==t.charAt(i+1)&&(L=k,k=C(1)),(null!==(l=n.lowerCaseAttributeNames)&&void 0!==l?l:!n.xmlMode)&&(k=k.toLowerCase()),N(0),R="exists";var M=s.get(t.charAt(i));if(M){if(R=M,"="!==t.charAt(i+1))throw new Error("Expected `=`");N(2)}else"="===t.charAt(i)&&(R="equals",N(1));var x="",P=null;if("exists"!==R){if(d.has(t.charAt(i))){for(var D=t.charAt(i),w=i+1;w<t.length&&(t.charAt(w)!==D||v(w));)w+=1;if(t.charAt(w)!==D)throw new Error("Attribute value didn't end");x=m(t.slice(i+1,w)),i=w+1}else{for(var H=i;i<t.length&&(!T(t.charAt(i))&&"]"!==t.charAt(i)||v(i));)i+=1;x=m(t.slice(H,i))}N(0);var F=t.charAt(i);"s"===F||"S"===F?(P=!1,N(1)):"i"!==F&&"I"!==F||(P=!0,N(1))}if(n.xmlMode||null!=P||(P=u.has(k)),"]"!==t.charAt(i))throw new Error("Attribute selector didn't terminate");i+=1;var U={type:"attribute",name:k,action:R,value:x,namespace:L,ignoreCase:P};g.push(U)}else if(":"===b){if(":"===t.charAt(i+1)){g.push({type:"pseudo-element",name:C(2).toLowerCase()});continue}var B=C(1).toLowerCase(),G=null;if("("===t.charAt(i))if(c.has(B)){if(d.has(t.charAt(i+1)))throw new Error("Pseudo-selector "+B+" cannot be quoted");if(i=E(G=[],t,n,i+1),")"!==t.charAt(i))throw new Error("Missing closing parenthesis in :"+B+" ("+t+")");i+=1}else{for(var j=i+=1,K=1;K>0&&i<t.length;i++)"("!==t.charAt(i)||v(i)?")"!==t.charAt(i)||v(i)||K--:K++;if(K)throw new Error("Parenthesis not matched");if(G=t.slice(j,i-1),p.has(B)){var q=G.charAt(0);q===G.slice(-1)&&d.has(q)&&(G=G.slice(1,-1)),G=m(G)}}g.push({type:"pseudo",name:B,data:G})}else{L=null;var Y=void 0;if("*"===b)i+=1,Y="*";else{if(!r.test(t.slice(i)))return g.length&&"descendant"===g[g.length-1].type&&g.pop(),_(e,g),i;"|"===t.charAt(i)&&(L="",i+=1),Y=C(0)}"|"===t.charAt(i)&&(L=Y,"*"===t.charAt(i+1)?(Y="*",i+=2):Y=C(1)),"*"===Y?g.push({type:"universal",namespace:L}):((null!==(f=n.lowerCaseTags)&&void 0!==f?f:!n.xmlMode)&&(Y=Y.toLowerCase()),g.push({type:"tag",name:Y,namespace:L}))}}return _(e,g),i}function _(e,t){if(e.length>0&&0===t.length)throw new Error("Empty sub-selector");e.push(t)}t.default=function(e,t){var n=[],r=E(n,""+e,t,0);if(r<e.length)throw new Error("Unmatched selector: "+e.slice(r));return n}},6868:function(e,t){"use strict";var n=this&&this.__spreadArray||function(e,t){for(var n=0,r=t.length,i=e.length;n<r;n++,i++)e[i]=t[n];return e};Object.defineProperty(t,"__esModule",{value:!0});var r={equals:"",element:"~",start:"^",end:"$",any:"*",not:"!",hyphen:"|"},i=new Set(n(n([],Object.keys(r).map((function(e){return r[e]})).filter(Boolean)),[":","[","]"," ","\\","(",")","'"]));function s(e){return e.map(o).join(", ")}function o(e){return e.map(a).join("")}function a(e){switch(e.type){case"child":return" > ";case"parent":return" < ";case"sibling":return" ~ ";case"adjacent":return" + ";case"descendant":return" ";case"universal":return l(e.namespace)+"*";case"tag":return c(e);case"pseudo-element":return"::"+u(e.name);case"pseudo":return null===e.data?":"+u(e.name):"string"==typeof e.data?":"+u(e.name)+"("+u(e.data)+")":":"+u(e.name)+"("+s(e.data)+")";case"attribute":if("id"===e.name&&"equals"===e.action&&!e.ignoreCase&&!e.namespace)return"#"+u(e.value);if("class"===e.name&&"element"===e.action&&!e.ignoreCase&&!e.namespace)return"."+u(e.value);var t=c(e);return"exists"===e.action?"["+t+"]":"["+t+r[e.action]+"='"+u(e.value)+"'"+(e.ignoreCase?"i":!1===e.ignoreCase?"s":"")+"]"}}function c(e){return""+l(e.namespace)+u(e.name)}function l(e){return null!==e?("*"===e?"*":u(e))+"|":""}function u(e){return e.split("").map((function(e){return i.has(e)?"\\"+e:e})).join("")}t.default=s},7837:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.attributeNames=t.elementNames=void 0,t.elementNames=new Map([["altglyph","altGlyph"],["altglyphdef","altGlyphDef"],["altglyphitem","altGlyphItem"],["animatecolor","animateColor"],["animatemotion","animateMotion"],["animatetransform","animateTransform"],["clippath","clipPath"],["feblend","feBlend"],["fecolormatrix","feColorMatrix"],["fecomponenttransfer","feComponentTransfer"],["fecomposite","feComposite"],["feconvolvematrix","feConvolveMatrix"],["fediffuselighting","feDiffuseLighting"],["fedisplacementmap","feDisplacementMap"],["fedistantlight","feDistantLight"],["fedropshadow","feDropShadow"],["feflood","feFlood"],["fefunca","feFuncA"],["fefuncb","feFuncB"],["fefuncg","feFuncG"],["fefuncr","feFuncR"],["fegaussianblur","feGaussianBlur"],["feimage","feImage"],["femerge","feMerge"],["femergenode","feMergeNode"],["femorphology","feMorphology"],["feoffset","feOffset"],["fepointlight","fePointLight"],["fespecularlighting","feSpecularLighting"],["fespotlight","feSpotLight"],["fetile","feTile"],["feturbulence","feTurbulence"],["foreignobject","foreignObject"],["glyphref","glyphRef"],["lineargradient","linearGradient"],["radialgradient","radialGradient"],["textpath","textPath"]]),t.attributeNames=new Map([["definitionurl","definitionURL"],["attributename","attributeName"],["attributetype","attributeType"],["basefrequency","baseFrequency"],["baseprofile","baseProfile"],["calcmode","calcMode"],["clippathunits","clipPathUnits"],["diffuseconstant","diffuseConstant"],["edgemode","edgeMode"],["filterunits","filterUnits"],["glyphref","glyphRef"],["gradienttransform","gradientTransform"],["gradientunits","gradientUnits"],["kernelmatrix","kernelMatrix"],["kernelunitlength","kernelUnitLength"],["keypoints","keyPoints"],["keysplines","keySplines"],["keytimes","keyTimes"],["lengthadjust","lengthAdjust"],["limitingconeangle","limitingConeAngle"],["markerheight","markerHeight"],["markerunits","markerUnits"],["markerwidth","markerWidth"],["maskcontentunits","maskContentUnits"],["maskunits","maskUnits"],["numoctaves","numOctaves"],["pathlength","pathLength"],["patterncontentunits","patternContentUnits"],["patterntransform","patternTransform"],["patternunits","patternUnits"],["pointsatx","pointsAtX"],["pointsaty","pointsAtY"],["pointsatz","pointsAtZ"],["preservealpha","preserveAlpha"],["preserveaspectratio","preserveAspectRatio"],["primitiveunits","primitiveUnits"],["refx","refX"],["refy","refY"],["repeatcount","repeatCount"],["repeatdur","repeatDur"],["requiredextensions","requiredExtensions"],["requiredfeatures","requiredFeatures"],["specularconstant","specularConstant"],["specularexponent","specularExponent"],["spreadmethod","spreadMethod"],["startoffset","startOffset"],["stddeviation","stdDeviation"],["stitchtiles","stitchTiles"],["surfacescale","surfaceScale"],["systemlanguage","systemLanguage"],["tablevalues","tableValues"],["targetx","targetX"],["targety","targetY"],["textlength","textLength"],["viewbox","viewBox"],["viewtarget","viewTarget"],["xchannelselector","xChannelSelector"],["ychannelselector","yChannelSelector"],["zoomandpan","zoomAndPan"]])},7220:function(e,t,n){"use strict";var r=this&&this.__assign||function(){return(r=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e}).apply(this,arguments)},i=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),s=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&i(t,e,n);return s(t,e),t};Object.defineProperty(t,"__esModule",{value:!0});var a=o(n(9960)),c=n(5863),l=n(7837),u=new Set(["style","script","xmp","iframe","noembed","noframes","plaintext","noscript"]),h=new Set(["area","base","basefont","br","col","command","embed","frame","hr","img","input","isindex","keygen","link","meta","param","source","track","wbr"]);function p(e,t){void 0===t&&(t={});for(var n=("length"in e?e:[e]),r="",i=0;i<n.length;i++)r+=d(n[i],t);return r}function d(e,t){switch(e.type){case a.Root:return p(e.children,t);case a.Directive:case a.Doctype:return"<"+e.data+">";case a.Comment:return"\x3c!--"+e.data+"--\x3e";case a.CDATA:return function(e){return"<![CDATA["+e.children[0].data+"]]>"}(e);case a.Script:case a.Style:case a.Tag:return function(e,t){var n;"foreign"===t.xmlMode&&(e.name=null!==(n=l.elementNames.get(e.name))&&void 0!==n?n:e.name,e.parent&&f.has(e.parent.name)&&(t=r(r({},t),{xmlMode:!1}))),!t.xmlMode&&m.has(e.name)&&(t=r(r({},t),{xmlMode:"foreign"}));var i="<"+e.name,s=function(e,t){if(e)return Object.keys(e).map((function(n){var r,i,s=null!==(r=e[n])&&void 0!==r?r:"";return"foreign"===t.xmlMode&&(n=null!==(i=l.attributeNames.get(n))&&void 0!==i?i:n),t.emptyAttrs||t.xmlMode||""!==s?n+'="'+(!1!==t.decodeEntities?c.encodeXML(s):s.replace(/"/g,"&quot;"))+'"':n})).join(" ")}(e.attribs,t);return s&&(i+=" "+s),0===e.children.length&&(t.xmlMode?!1!==t.selfClosingTags:t.selfClosingTags&&h.has(e.name))?(t.xmlMode||(i+=" "),i+="/>"):(i+=">",e.children.length>0&&(i+=p(e.children,t)),!t.xmlMode&&h.has(e.name)||(i+="</"+e.name+">")),i}(e,t);case a.Text:return function(e,t){var n=e.data||"";return!1===t.decodeEntities||!t.xmlMode&&e.parent&&u.has(e.parent.name)||(n=c.encodeXML(n)),n}(e,t)}}t.default=p;var f=new Set(["mi","mo","mn","ms","mtext","annotation-xml","foreignObject","desc","title"]),m=new Set(["svg","math"])},9960:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.Doctype=t.CDATA=t.Tag=t.Style=t.Script=t.Comment=t.Directive=t.Text=t.Root=t.isTag=t.ElementType=void 0,function(e){e.Root="root",e.Text="text",e.Directive="directive",e.Comment="comment",e.Script="script",e.Style="style",e.Tag="tag",e.CDATA="cdata",e.Doctype="doctype"}(n=t.ElementType||(t.ElementType={})),t.isTag=function(e){return e.type===n.Tag||e.type===n.Script||e.type===n.Style},t.Root=n.Root,t.Text=n.Text,t.Directive=n.Directive,t.Comment=n.Comment,t.Script=n.Script,t.Style=n.Style,t.Tag=n.Tag,t.CDATA=n.CDATA,t.Doctype=n.Doctype},7915:function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),i=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||r(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),t.DomHandler=void 0;var s=n(9960),o=n(7790);i(n(7790),t);var a=/\s+/g,c={normalizeWhitespace:!1,withStartIndices:!1,withEndIndices:!1},l=function(){function e(e,t,n){this.dom=[],this.root=new o.Document(this.dom),this.done=!1,this.tagStack=[this.root],this.lastNode=null,this.parser=null,"function"==typeof t&&(n=t,t=c),"object"==typeof e&&(t=e,e=void 0),this.callback=null!=e?e:null,this.options=null!=t?t:c,this.elementCB=null!=n?n:null}return e.prototype.onparserinit=function(e){this.parser=e},e.prototype.onreset=function(){var e;this.dom=[],this.root=new o.Document(this.dom),this.done=!1,this.tagStack=[this.root],this.lastNode=null,this.parser=null!==(e=this.parser)&&void 0!==e?e:null},e.prototype.onend=function(){this.done||(this.done=!0,this.parser=null,this.handleCallback(null))},e.prototype.onerror=function(e){this.handleCallback(e)},e.prototype.onclosetag=function(){this.lastNode=null;var e=this.tagStack.pop();this.options.withEndIndices&&(e.endIndex=this.parser.endIndex),this.elementCB&&this.elementCB(e)},e.prototype.onopentag=function(e,t){var n=this.options.xmlMode?s.ElementType.Tag:void 0,r=new o.Element(e,t,void 0,n);this.addNode(r),this.tagStack.push(r)},e.prototype.ontext=function(e){var t=this.options.normalizeWhitespace,n=this.lastNode;if(n&&n.type===s.ElementType.Text)t?n.data=(n.data+e).replace(a," "):n.data+=e;else{t&&(e=e.replace(a," "));var r=new o.Text(e);this.addNode(r),this.lastNode=r}},e.prototype.oncomment=function(e){if(this.lastNode&&this.lastNode.type===s.ElementType.Comment)this.lastNode.data+=e;else{var t=new o.Comment(e);this.addNode(t),this.lastNode=t}},e.prototype.oncommentend=function(){this.lastNode=null},e.prototype.oncdatastart=function(){var e=new o.Text(""),t=new o.NodeWithChildren(s.ElementType.CDATA,[e]);this.addNode(t),e.parent=t,this.lastNode=e},e.prototype.oncdataend=function(){this.lastNode=null},e.prototype.onprocessinginstruction=function(e,t){var n=new o.ProcessingInstruction(e,t);this.addNode(n)},e.prototype.handleCallback=function(e){if("function"==typeof this.callback)this.callback(e,this.dom);else if(e)throw e},e.prototype.addNode=function(e){var t=this.tagStack[this.tagStack.length-1],n=t.children[t.children.length-1];this.options.withStartIndices&&(e.startIndex=this.parser.startIndex),this.options.withEndIndices&&(e.endIndex=this.parser.endIndex),t.children.push(e),n&&(e.prev=n,n.next=e),e.parent=t,this.lastNode=null},e}();t.DomHandler=l,t.default=l},7790:function(e,t,n){"use strict";var r,i=this&&this.__extends||(r=function(e,t){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),s=this&&this.__assign||function(){return(s=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e}).apply(this,arguments)};Object.defineProperty(t,"__esModule",{value:!0}),t.cloneNode=t.hasChildren=t.isDocument=t.isDirective=t.isComment=t.isText=t.isCDATA=t.isTag=t.Element=t.Document=t.NodeWithChildren=t.ProcessingInstruction=t.Comment=t.Text=t.DataNode=t.Node=void 0;var o=n(9960),a=new Map([[o.ElementType.Tag,1],[o.ElementType.Script,1],[o.ElementType.Style,1],[o.ElementType.Directive,1],[o.ElementType.Text,3],[o.ElementType.CDATA,4],[o.ElementType.Comment,8],[o.ElementType.Root,9]]),c=function(){function e(e){this.type=e,this.parent=null,this.prev=null,this.next=null,this.startIndex=null,this.endIndex=null}return Object.defineProperty(e.prototype,"nodeType",{get:function(){var e;return null!==(e=a.get(this.type))&&void 0!==e?e:1},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"parentNode",{get:function(){return this.parent},set:function(e){this.parent=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"previousSibling",{get:function(){return this.prev},set:function(e){this.prev=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"nextSibling",{get:function(){return this.next},set:function(e){this.next=e},enumerable:!1,configurable:!0}),e.prototype.cloneNode=function(e){return void 0===e&&(e=!1),N(this,e)},e}();t.Node=c;var l=function(e){function t(t,n){var r=e.call(this,t)||this;return r.data=n,r}return i(t,e),Object.defineProperty(t.prototype,"nodeValue",{get:function(){return this.data},set:function(e){this.data=e},enumerable:!1,configurable:!0}),t}(c);t.DataNode=l;var u=function(e){function t(t){return e.call(this,o.ElementType.Text,t)||this}return i(t,e),t}(l);t.Text=u;var h=function(e){function t(t){return e.call(this,o.ElementType.Comment,t)||this}return i(t,e),t}(l);t.Comment=h;var p=function(e){function t(t,n){var r=e.call(this,o.ElementType.Directive,n)||this;return r.name=t,r}return i(t,e),t}(l);t.ProcessingInstruction=p;var d=function(e){function t(t,n){var r=e.call(this,t)||this;return r.children=n,r}return i(t,e),Object.defineProperty(t.prototype,"firstChild",{get:function(){var e;return null!==(e=this.children[0])&&void 0!==e?e:null},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"lastChild",{get:function(){return this.children.length>0?this.children[this.children.length-1]:null},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"childNodes",{get:function(){return this.children},set:function(e){this.children=e},enumerable:!1,configurable:!0}),t}(c);t.NodeWithChildren=d;var f=function(e){function t(t){return e.call(this,o.ElementType.Root,t)||this}return i(t,e),t}(d);t.Document=f;var m=function(e){function t(t,n,r,i){void 0===r&&(r=[]),void 0===i&&(i="script"===t?o.ElementType.Script:"style"===t?o.ElementType.Style:o.ElementType.Tag);var s=e.call(this,i,r)||this;return s.name=t,s.attribs=n,s}return i(t,e),Object.defineProperty(t.prototype,"tagName",{get:function(){return this.name},set:function(e){this.name=e},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"attributes",{get:function(){var e=this;return Object.keys(this.attribs).map((function(t){var n,r;return{name:t,value:e.attribs[t],namespace:null===(n=e["x-attribsNamespace"])||void 0===n?void 0:n[t],prefix:null===(r=e["x-attribsPrefix"])||void 0===r?void 0:r[t]}}))},enumerable:!1,configurable:!0}),t}(d);function T(e){return o.isTag(e)}function E(e){return e.type===o.ElementType.CDATA}function _(e){return e.type===o.ElementType.Text}function g(e){return e.type===o.ElementType.Comment}function A(e){return e.type===o.ElementType.Directive}function C(e){return e.type===o.ElementType.Root}function N(e,t){var n;if(void 0===t&&(t=!1),_(e))n=new u(e.data);else if(g(e))n=new h(e.data);else if(T(e)){var r=t?v(e.children):[],i=new m(e.name,s({},e.attribs),r);r.forEach((function(e){return e.parent=i})),e["x-attribsNamespace"]&&(i["x-attribsNamespace"]=s({},e["x-attribsNamespace"])),e["x-attribsPrefix"]&&(i["x-attribsPrefix"]=s({},e["x-attribsPrefix"])),n=i}else if(E(e)){r=t?v(e.children):[];var a=new d(o.ElementType.CDATA,r);r.forEach((function(e){return e.parent=a})),n=a}else if(C(e)){r=t?v(e.children):[];var c=new f(r);r.forEach((function(e){return e.parent=c})),e["x-mode"]&&(c["x-mode"]=e["x-mode"]),n=c}else{if(!A(e))throw new Error("Not implemented yet: "+e.type);var l=new p(e.name,e.data);null!=e["x-name"]&&(l["x-name"]=e["x-name"],l["x-publicId"]=e["x-publicId"],l["x-systemId"]=e["x-systemId"]),n=l}return n.startIndex=e.startIndex,n.endIndex=e.endIndex,n}function v(e){for(var t=e.map((function(e){return N(e,!0)})),n=1;n<t.length;n++)t[n].prev=t[n-1],t[n-1].next=t[n];return t}t.Element=m,t.isTag=T,t.isCDATA=E,t.isText=_,t.isComment=g,t.isDirective=A,t.isDocument=C,t.hasChildren=function(e){return Object.prototype.hasOwnProperty.call(e,"children")},t.cloneNode=N},4975:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.uniqueSort=t.compareDocumentPosition=t.removeSubsets=void 0;var r=n(7915);function i(e,t){var n=[],i=[];if(e===t)return 0;for(var s=r.hasChildren(e)?e:e.parent;s;)n.unshift(s),s=s.parent;for(s=r.hasChildren(t)?t:t.parent;s;)i.unshift(s),s=s.parent;for(var o=Math.min(n.length,i.length),a=0;a<o&&n[a]===i[a];)a++;if(0===a)return 1;var c=n[a-1],l=c.children,u=n[a],h=i[a];return l.indexOf(u)>l.indexOf(h)?c===t?20:4:c===e?10:2}t.removeSubsets=function(e){for(var t=e.length;--t>=0;){var n=e[t];if(t>0&&e.lastIndexOf(n,t-1)>=0)e.splice(t,1);else for(var r=n.parent;r;r=r.parent)if(e.includes(r)){e.splice(t,1);break}}return e},t.compareDocumentPosition=i,t.uniqueSort=function(e){return(e=e.filter((function(e,t,n){return!n.includes(e,t+1)}))).sort((function(e,t){var n=i(e,t);return 2&n?-1:4&n?1:0})),e}},9432:function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),i=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||r(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),t.hasChildren=t.isDocument=t.isComment=t.isText=t.isCDATA=t.isTag=void 0,i(n(3346),t),i(n(5010),t),i(n(6765),t),i(n(8043),t),i(n(3905),t),i(n(4975),t);var s=n(7915);Object.defineProperty(t,"isTag",{enumerable:!0,get:function(){return s.isTag}}),Object.defineProperty(t,"isCDATA",{enumerable:!0,get:function(){return s.isCDATA}}),Object.defineProperty(t,"isText",{enumerable:!0,get:function(){return s.isText}}),Object.defineProperty(t,"isComment",{enumerable:!0,get:function(){return s.isComment}}),Object.defineProperty(t,"isDocument",{enumerable:!0,get:function(){return s.isDocument}}),Object.defineProperty(t,"hasChildren",{enumerable:!0,get:function(){return s.hasChildren}})},3905:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getElementsByTagType=t.getElementsByTagName=t.getElementById=t.getElements=t.testElement=void 0;var r=n(7915),i=n(8043),s={tag_name:function(e){return"function"==typeof e?function(t){return r.isTag(t)&&e(t.name)}:"*"===e?r.isTag:function(t){return r.isTag(t)&&t.name===e}},tag_type:function(e){return"function"==typeof e?function(t){return e(t.type)}:function(t){return t.type===e}},tag_contains:function(e){return"function"==typeof e?function(t){return r.isText(t)&&e(t.data)}:function(t){return r.isText(t)&&t.data===e}}};function o(e,t){return"function"==typeof t?function(n){return r.isTag(n)&&t(n.attribs[e])}:function(n){return r.isTag(n)&&n.attribs[e]===t}}function a(e,t){return function(n){return e(n)||t(n)}}function c(e){var t=Object.keys(e).map((function(t){var n=e[t];return t in s?s[t](n):o(t,n)}));return 0===t.length?null:t.reduce(a)}t.testElement=function(e,t){var n=c(e);return!n||n(t)},t.getElements=function(e,t,n,r){void 0===r&&(r=1/0);var s=c(e);return s?i.filter(s,t,n,r):[]},t.getElementById=function(e,t,n){return void 0===n&&(n=!0),Array.isArray(t)||(t=[t]),i.findOne(o("id",e),t,n)},t.getElementsByTagName=function(e,t,n,r){return void 0===n&&(n=!0),void 0===r&&(r=1/0),i.filter(s.tag_name(e),t,n,r)},t.getElementsByTagType=function(e,t,n,r){return void 0===n&&(n=!0),void 0===r&&(r=1/0),i.filter(s.tag_type(e),t,n,r)}},6765:(e,t)=>{"use strict";function n(e){if(e.prev&&(e.prev.next=e.next),e.next&&(e.next.prev=e.prev),e.parent){var t=e.parent.children;t.splice(t.lastIndexOf(e),1)}}Object.defineProperty(t,"__esModule",{value:!0}),t.prepend=t.prependChild=t.append=t.appendChild=t.replaceElement=t.removeElement=void 0,t.removeElement=n,t.replaceElement=function(e,t){var n=t.prev=e.prev;n&&(n.next=t);var r=t.next=e.next;r&&(r.prev=t);var i=t.parent=e.parent;if(i){var s=i.children;s[s.lastIndexOf(e)]=t}},t.appendChild=function(e,t){if(n(t),t.next=null,t.parent=e,e.children.push(t)>1){var r=e.children[e.children.length-2];r.next=t,t.prev=r}else t.prev=null},t.append=function(e,t){n(t);var r=e.parent,i=e.next;if(t.next=i,t.prev=e,e.next=t,t.parent=r,i){if(i.prev=t,r){var s=r.children;s.splice(s.lastIndexOf(i),0,t)}}else r&&r.children.push(t)},t.prependChild=function(e,t){if(n(t),t.parent=e,t.prev=null,1!==e.children.unshift(t)){var r=e.children[1];r.prev=t,t.next=r}else t.next=null},t.prepend=function(e,t){n(t);var r=e.parent;if(r){var i=r.children;i.splice(i.indexOf(e),0,t)}e.prev&&(e.prev.next=t),t.parent=r,t.prev=e.prev,t.next=e,e.prev=t}},8043:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.findAll=t.existsOne=t.findOne=t.findOneChild=t.find=t.filter=void 0;var r=n(7915);function i(e,t,n,s){for(var o=[],a=0,c=t;a<c.length;a++){var l=c[a];if(e(l)&&(o.push(l),--s<=0))break;if(n&&r.hasChildren(l)&&l.children.length>0){var u=i(e,l.children,n,s);if(o.push.apply(o,u),(s-=u.length)<=0)break}}return o}t.filter=function(e,t,n,r){return void 0===n&&(n=!0),void 0===r&&(r=1/0),Array.isArray(t)||(t=[t]),i(e,t,n,r)},t.find=i,t.findOneChild=function(e,t){return t.find(e)},t.findOne=function e(t,n,i){void 0===i&&(i=!0);for(var s=null,o=0;o<n.length&&!s;o++){var a=n[o];r.isTag(a)&&(t(a)?s=a:i&&a.children.length>0&&(s=e(t,a.children)))}return s},t.existsOne=function e(t,n){return n.some((function(n){return r.isTag(n)&&(t(n)||n.children.length>0&&e(t,n.children))}))},t.findAll=function(e,t){for(var n,i,s=[],o=t.filter(r.isTag);i=o.shift();){var a=null===(n=i.children)||void 0===n?void 0:n.filter(r.isTag);a&&a.length>0&&o.unshift.apply(o,a),e(i)&&s.push(i)}return s}},3346:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.innerText=t.textContent=t.getText=t.getInnerHTML=t.getOuterHTML=void 0;var i=n(7915),s=r(n(7220)),o=n(9960);function a(e,t){return s.default(e,t)}t.getOuterHTML=a,t.getInnerHTML=function(e,t){return i.hasChildren(e)?e.children.map((function(e){return a(e,t)})).join(""):""},t.getText=function e(t){return Array.isArray(t)?t.map(e).join(""):i.isTag(t)?"br"===t.name?"\n":e(t.children):i.isCDATA(t)?e(t.children):i.isText(t)?t.data:""},t.textContent=function e(t){return Array.isArray(t)?t.map(e).join(""):i.isTag(t)||i.isCDATA(t)?e(t.children):i.isText(t)?t.data:""},t.innerText=function e(t){return Array.isArray(t)?t.map(e).join(""):i.hasChildren(t)&&t.type===o.ElementType.Tag||i.isCDATA(t)?e(t.children):i.isText(t)?t.data:""}},5010:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.prevElementSibling=t.nextElementSibling=t.getName=t.hasAttrib=t.getAttributeValue=t.getSiblings=t.getParent=t.getChildren=void 0;var r=n(7915),i=[];function s(e){var t;return null!==(t=e.children)&&void 0!==t?t:i}function o(e){return e.parent||null}t.getChildren=s,t.getParent=o,t.getSiblings=function(e){var t=o(e);if(null!=t)return s(t);for(var n=[e],r=e.prev,i=e.next;null!=r;)n.unshift(r),r=r.prev;for(;null!=i;)n.push(i),i=i.next;return n},t.getAttributeValue=function(e,t){var n;return null===(n=e.attribs)||void 0===n?void 0:n[t]},t.hasAttrib=function(e,t){return null!=e.attribs&&Object.prototype.hasOwnProperty.call(e.attribs,t)&&null!=e.attribs[t]},t.getName=function(e){return e.name},t.nextElementSibling=function(e){for(var t=e.next;null!==t&&!r.isTag(t);)t=t.next;return t},t.prevElementSibling=function(e){for(var t=e.prev;null!==t&&!r.isTag(t);)t=t.prev;return t}},4076:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.decodeHTML=t.decodeHTMLStrict=t.decodeXML=void 0;var i=r(n(4007)),s=r(n(7802)),o=r(n(2228)),a=r(n(26)),c=/&(?:[a-zA-Z0-9]+|#[xX][\da-fA-F]+|#\d+);/g;function l(e){var t=h(e);return function(e){return String(e).replace(c,t)}}t.decodeXML=l(o.default),t.decodeHTMLStrict=l(i.default);var u=function(e,t){return e<t?1:-1};function h(e){return function(t){if("#"===t.charAt(1)){var n=t.charAt(2);return"X"===n||"x"===n?a.default(parseInt(t.substr(3),16)):a.default(parseInt(t.substr(2),10))}return e[t.slice(1,-1)]||t}}t.decodeHTML=function(){for(var e=Object.keys(s.default).sort(u),t=Object.keys(i.default).sort(u),n=0,r=0;n<t.length;n++)e[r]===t[n]?(t[n]+=";?",r++):t[n]+=";";var o=new RegExp("&(?:"+t.join("|")+"|#[xX][\\da-fA-F]+;?|#\\d+;?)","g"),a=h(i.default);function c(e){return";"!==e.substr(-1)&&(e+=";"),a(e)}return function(e){return String(e).replace(o,c)}}()},26:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var i=r(n(4589)),s=String.fromCodePoint||function(e){var t="";return e>65535&&(e-=65536,t+=String.fromCharCode(e>>>10&1023|55296),e=56320|1023&e),t+String.fromCharCode(e)};t.default=function(e){return e>=55296&&e<=57343||e>1114111?"�":(e in i.default&&(e=i.default[e]),s(e))}},7322:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.escapeUTF8=t.escape=t.encodeNonAsciiHTML=t.encodeHTML=t.encodeXML=void 0;var i=u(r(n(2228)).default),s=h(i);t.encodeXML=T(i);var o,a,c=u(r(n(4007)).default),l=h(c);function u(e){return Object.keys(e).sort().reduce((function(t,n){return t[e[n]]="&"+n+";",t}),{})}function h(e){for(var t=[],n=[],r=0,i=Object.keys(e);r<i.length;r++){var s=i[r];1===s.length?t.push("\\"+s):n.push(s)}t.sort();for(var o=0;o<t.length-1;o++){for(var a=o;a<t.length-1&&t[a].charCodeAt(1)+1===t[a+1].charCodeAt(1);)a+=1;var c=1+a-o;c<3||t.splice(o,c,t[o]+"-"+t[a])}return n.unshift("["+t.join("")+"]"),new RegExp(n.join("|"),"g")}t.encodeHTML=(o=c,a=l,function(e){return e.replace(a,(function(e){return o[e]})).replace(p,f)}),t.encodeNonAsciiHTML=T(c);var p=/(?:[\x80-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])/g,d=null!=String.prototype.codePointAt?function(e){return e.codePointAt(0)}:function(e){return 1024*(e.charCodeAt(0)-55296)+e.charCodeAt(1)-56320+65536};function f(e){return"&#x"+(e.length>1?d(e):e.charCodeAt(0)).toString(16).toUpperCase()+";"}var m=new RegExp(s.source+"|"+p.source,"g");function T(e){return function(t){return t.replace(m,(function(t){return e[t]||f(t)}))}}t.escape=function(e){return e.replace(m,f)},t.escapeUTF8=function(e){return e.replace(s,f)}},5863:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.decodeXMLStrict=t.decodeHTML5Strict=t.decodeHTML4Strict=t.decodeHTML5=t.decodeHTML4=t.decodeHTMLStrict=t.decodeHTML=t.decodeXML=t.encodeHTML5=t.encodeHTML4=t.escapeUTF8=t.escape=t.encodeNonAsciiHTML=t.encodeHTML=t.encodeXML=t.encode=t.decodeStrict=t.decode=void 0;var r=n(4076),i=n(7322);t.decode=function(e,t){return(!t||t<=0?r.decodeXML:r.decodeHTML)(e)},t.decodeStrict=function(e,t){return(!t||t<=0?r.decodeXML:r.decodeHTMLStrict)(e)},t.encode=function(e,t){return(!t||t<=0?i.encodeXML:i.encodeHTML)(e)};var s=n(7322);Object.defineProperty(t,"encodeXML",{enumerable:!0,get:function(){return s.encodeXML}}),Object.defineProperty(t,"encodeHTML",{enumerable:!0,get:function(){return s.encodeHTML}}),Object.defineProperty(t,"encodeNonAsciiHTML",{enumerable:!0,get:function(){return s.encodeNonAsciiHTML}}),Object.defineProperty(t,"escape",{enumerable:!0,get:function(){return s.escape}}),Object.defineProperty(t,"escapeUTF8",{enumerable:!0,get:function(){return s.escapeUTF8}}),Object.defineProperty(t,"encodeHTML4",{enumerable:!0,get:function(){return s.encodeHTML}}),Object.defineProperty(t,"encodeHTML5",{enumerable:!0,get:function(){return s.encodeHTML}});var o=n(4076);Object.defineProperty(t,"decodeXML",{enumerable:!0,get:function(){return o.decodeXML}}),Object.defineProperty(t,"decodeHTML",{enumerable:!0,get:function(){return o.decodeHTML}}),Object.defineProperty(t,"decodeHTMLStrict",{enumerable:!0,get:function(){return o.decodeHTMLStrict}}),Object.defineProperty(t,"decodeHTML4",{enumerable:!0,get:function(){return o.decodeHTML}}),Object.defineProperty(t,"decodeHTML5",{enumerable:!0,get:function(){return o.decodeHTML}}),Object.defineProperty(t,"decodeHTML4Strict",{enumerable:!0,get:function(){return o.decodeHTMLStrict}}),Object.defineProperty(t,"decodeHTML5Strict",{enumerable:!0,get:function(){return o.decodeHTMLStrict}}),Object.defineProperty(t,"decodeXMLStrict",{enumerable:!0,get:function(){return o.decodeXML}})},4589:e=>{"use strict";e.exports=JSON.parse('{"0":65533,"128":8364,"130":8218,"131":402,"132":8222,"133":8230,"134":8224,"135":8225,"136":710,"137":8240,"138":352,"139":8249,"140":338,"142":381,"145":8216,"146":8217,"147":8220,"148":8221,"149":8226,"150":8211,"151":8212,"152":732,"153":8482,"154":353,"155":8250,"156":339,"158":382,"159":376}')},4007:e=>{"use strict";e.exports=JSON.parse('{"Aacute":"Á","aacute":"á","Abreve":"Ă","abreve":"ă","ac":"∾","acd":"∿","acE":"∾̳","Acirc":"Â","acirc":"â","acute":"´","Acy":"А","acy":"а","AElig":"Æ","aelig":"æ","af":"⁡","Afr":"𝔄","afr":"𝔞","Agrave":"À","agrave":"à","alefsym":"ℵ","aleph":"ℵ","Alpha":"Α","alpha":"α","Amacr":"Ā","amacr":"ā","amalg":"⨿","amp":"&","AMP":"&","andand":"⩕","And":"⩓","and":"∧","andd":"⩜","andslope":"⩘","andv":"⩚","ang":"∠","ange":"⦤","angle":"∠","angmsdaa":"⦨","angmsdab":"⦩","angmsdac":"⦪","angmsdad":"⦫","angmsdae":"⦬","angmsdaf":"⦭","angmsdag":"⦮","angmsdah":"⦯","angmsd":"∡","angrt":"∟","angrtvb":"⊾","angrtvbd":"⦝","angsph":"∢","angst":"Å","angzarr":"⍼","Aogon":"Ą","aogon":"ą","Aopf":"𝔸","aopf":"𝕒","apacir":"⩯","ap":"≈","apE":"⩰","ape":"≊","apid":"≋","apos":"\'","ApplyFunction":"⁡","approx":"≈","approxeq":"≊","Aring":"Å","aring":"å","Ascr":"𝒜","ascr":"𝒶","Assign":"≔","ast":"*","asymp":"≈","asympeq":"≍","Atilde":"Ã","atilde":"ã","Auml":"Ä","auml":"ä","awconint":"∳","awint":"⨑","backcong":"≌","backepsilon":"϶","backprime":"‵","backsim":"∽","backsimeq":"⋍","Backslash":"∖","Barv":"⫧","barvee":"⊽","barwed":"⌅","Barwed":"⌆","barwedge":"⌅","bbrk":"⎵","bbrktbrk":"⎶","bcong":"≌","Bcy":"Б","bcy":"б","bdquo":"„","becaus":"∵","because":"∵","Because":"∵","bemptyv":"⦰","bepsi":"϶","bernou":"ℬ","Bernoullis":"ℬ","Beta":"Β","beta":"β","beth":"ℶ","between":"≬","Bfr":"𝔅","bfr":"𝔟","bigcap":"⋂","bigcirc":"◯","bigcup":"⋃","bigodot":"⨀","bigoplus":"⨁","bigotimes":"⨂","bigsqcup":"⨆","bigstar":"★","bigtriangledown":"▽","bigtriangleup":"△","biguplus":"⨄","bigvee":"⋁","bigwedge":"⋀","bkarow":"⤍","blacklozenge":"⧫","blacksquare":"▪","blacktriangle":"▴","blacktriangledown":"▾","blacktriangleleft":"◂","blacktriangleright":"▸","blank":"␣","blk12":"▒","blk14":"░","blk34":"▓","block":"█","bne":"=⃥","bnequiv":"≡⃥","bNot":"⫭","bnot":"⌐","Bopf":"𝔹","bopf":"𝕓","bot":"⊥","bottom":"⊥","bowtie":"⋈","boxbox":"⧉","boxdl":"┐","boxdL":"╕","boxDl":"╖","boxDL":"╗","boxdr":"┌","boxdR":"╒","boxDr":"╓","boxDR":"╔","boxh":"─","boxH":"═","boxhd":"┬","boxHd":"╤","boxhD":"╥","boxHD":"╦","boxhu":"┴","boxHu":"╧","boxhU":"╨","boxHU":"╩","boxminus":"⊟","boxplus":"⊞","boxtimes":"⊠","boxul":"┘","boxuL":"╛","boxUl":"╜","boxUL":"╝","boxur":"└","boxuR":"╘","boxUr":"╙","boxUR":"╚","boxv":"│","boxV":"║","boxvh":"┼","boxvH":"╪","boxVh":"╫","boxVH":"╬","boxvl":"┤","boxvL":"╡","boxVl":"╢","boxVL":"╣","boxvr":"├","boxvR":"╞","boxVr":"╟","boxVR":"╠","bprime":"‵","breve":"˘","Breve":"˘","brvbar":"¦","bscr":"𝒷","Bscr":"ℬ","bsemi":"⁏","bsim":"∽","bsime":"⋍","bsolb":"⧅","bsol":"\\\\","bsolhsub":"⟈","bull":"•","bullet":"•","bump":"≎","bumpE":"⪮","bumpe":"≏","Bumpeq":"≎","bumpeq":"≏","Cacute":"Ć","cacute":"ć","capand":"⩄","capbrcup":"⩉","capcap":"⩋","cap":"∩","Cap":"⋒","capcup":"⩇","capdot":"⩀","CapitalDifferentialD":"ⅅ","caps":"∩︀","caret":"⁁","caron":"ˇ","Cayleys":"ℭ","ccaps":"⩍","Ccaron":"Č","ccaron":"č","Ccedil":"Ç","ccedil":"ç","Ccirc":"Ĉ","ccirc":"ĉ","Cconint":"∰","ccups":"⩌","ccupssm":"⩐","Cdot":"Ċ","cdot":"ċ","cedil":"¸","Cedilla":"¸","cemptyv":"⦲","cent":"¢","centerdot":"·","CenterDot":"·","cfr":"𝔠","Cfr":"ℭ","CHcy":"Ч","chcy":"ч","check":"✓","checkmark":"✓","Chi":"Χ","chi":"χ","circ":"ˆ","circeq":"≗","circlearrowleft":"↺","circlearrowright":"↻","circledast":"⊛","circledcirc":"⊚","circleddash":"⊝","CircleDot":"⊙","circledR":"®","circledS":"Ⓢ","CircleMinus":"⊖","CirclePlus":"⊕","CircleTimes":"⊗","cir":"○","cirE":"⧃","cire":"≗","cirfnint":"⨐","cirmid":"⫯","cirscir":"⧂","ClockwiseContourIntegral":"∲","CloseCurlyDoubleQuote":"”","CloseCurlyQuote":"’","clubs":"♣","clubsuit":"♣","colon":":","Colon":"∷","Colone":"⩴","colone":"≔","coloneq":"≔","comma":",","commat":"@","comp":"∁","compfn":"∘","complement":"∁","complexes":"ℂ","cong":"≅","congdot":"⩭","Congruent":"≡","conint":"∮","Conint":"∯","ContourIntegral":"∮","copf":"𝕔","Copf":"ℂ","coprod":"∐","Coproduct":"∐","copy":"©","COPY":"©","copysr":"℗","CounterClockwiseContourIntegral":"∳","crarr":"↵","cross":"✗","Cross":"⨯","Cscr":"𝒞","cscr":"𝒸","csub":"⫏","csube":"⫑","csup":"⫐","csupe":"⫒","ctdot":"⋯","cudarrl":"⤸","cudarrr":"⤵","cuepr":"⋞","cuesc":"⋟","cularr":"↶","cularrp":"⤽","cupbrcap":"⩈","cupcap":"⩆","CupCap":"≍","cup":"∪","Cup":"⋓","cupcup":"⩊","cupdot":"⊍","cupor":"⩅","cups":"∪︀","curarr":"↷","curarrm":"⤼","curlyeqprec":"⋞","curlyeqsucc":"⋟","curlyvee":"⋎","curlywedge":"⋏","curren":"¤","curvearrowleft":"↶","curvearrowright":"↷","cuvee":"⋎","cuwed":"⋏","cwconint":"∲","cwint":"∱","cylcty":"⌭","dagger":"†","Dagger":"‡","daleth":"ℸ","darr":"↓","Darr":"↡","dArr":"⇓","dash":"‐","Dashv":"⫤","dashv":"⊣","dbkarow":"⤏","dblac":"˝","Dcaron":"Ď","dcaron":"ď","Dcy":"Д","dcy":"д","ddagger":"‡","ddarr":"⇊","DD":"ⅅ","dd":"ⅆ","DDotrahd":"⤑","ddotseq":"⩷","deg":"°","Del":"∇","Delta":"Δ","delta":"δ","demptyv":"⦱","dfisht":"⥿","Dfr":"𝔇","dfr":"𝔡","dHar":"⥥","dharl":"⇃","dharr":"⇂","DiacriticalAcute":"´","DiacriticalDot":"˙","DiacriticalDoubleAcute":"˝","DiacriticalGrave":"`","DiacriticalTilde":"˜","diam":"⋄","diamond":"⋄","Diamond":"⋄","diamondsuit":"♦","diams":"♦","die":"¨","DifferentialD":"ⅆ","digamma":"ϝ","disin":"⋲","div":"÷","divide":"÷","divideontimes":"⋇","divonx":"⋇","DJcy":"Ђ","djcy":"ђ","dlcorn":"⌞","dlcrop":"⌍","dollar":"$","Dopf":"𝔻","dopf":"𝕕","Dot":"¨","dot":"˙","DotDot":"⃜","doteq":"≐","doteqdot":"≑","DotEqual":"≐","dotminus":"∸","dotplus":"∔","dotsquare":"⊡","doublebarwedge":"⌆","DoubleContourIntegral":"∯","DoubleDot":"¨","DoubleDownArrow":"⇓","DoubleLeftArrow":"⇐","DoubleLeftRightArrow":"⇔","DoubleLeftTee":"⫤","DoubleLongLeftArrow":"⟸","DoubleLongLeftRightArrow":"⟺","DoubleLongRightArrow":"⟹","DoubleRightArrow":"⇒","DoubleRightTee":"⊨","DoubleUpArrow":"⇑","DoubleUpDownArrow":"⇕","DoubleVerticalBar":"∥","DownArrowBar":"⤓","downarrow":"↓","DownArrow":"↓","Downarrow":"⇓","DownArrowUpArrow":"⇵","DownBreve":"̑","downdownarrows":"⇊","downharpoonleft":"⇃","downharpoonright":"⇂","DownLeftRightVector":"⥐","DownLeftTeeVector":"⥞","DownLeftVectorBar":"⥖","DownLeftVector":"↽","DownRightTeeVector":"⥟","DownRightVectorBar":"⥗","DownRightVector":"⇁","DownTeeArrow":"↧","DownTee":"⊤","drbkarow":"⤐","drcorn":"⌟","drcrop":"⌌","Dscr":"𝒟","dscr":"𝒹","DScy":"Ѕ","dscy":"ѕ","dsol":"⧶","Dstrok":"Đ","dstrok":"đ","dtdot":"⋱","dtri":"▿","dtrif":"▾","duarr":"⇵","duhar":"⥯","dwangle":"⦦","DZcy":"Џ","dzcy":"џ","dzigrarr":"⟿","Eacute":"É","eacute":"é","easter":"⩮","Ecaron":"Ě","ecaron":"ě","Ecirc":"Ê","ecirc":"ê","ecir":"≖","ecolon":"≕","Ecy":"Э","ecy":"э","eDDot":"⩷","Edot":"Ė","edot":"ė","eDot":"≑","ee":"ⅇ","efDot":"≒","Efr":"𝔈","efr":"𝔢","eg":"⪚","Egrave":"È","egrave":"è","egs":"⪖","egsdot":"⪘","el":"⪙","Element":"∈","elinters":"⏧","ell":"ℓ","els":"⪕","elsdot":"⪗","Emacr":"Ē","emacr":"ē","empty":"∅","emptyset":"∅","EmptySmallSquare":"◻","emptyv":"∅","EmptyVerySmallSquare":"▫","emsp13":" ","emsp14":" ","emsp":" ","ENG":"Ŋ","eng":"ŋ","ensp":" ","Eogon":"Ę","eogon":"ę","Eopf":"𝔼","eopf":"𝕖","epar":"⋕","eparsl":"⧣","eplus":"⩱","epsi":"ε","Epsilon":"Ε","epsilon":"ε","epsiv":"ϵ","eqcirc":"≖","eqcolon":"≕","eqsim":"≂","eqslantgtr":"⪖","eqslantless":"⪕","Equal":"⩵","equals":"=","EqualTilde":"≂","equest":"≟","Equilibrium":"⇌","equiv":"≡","equivDD":"⩸","eqvparsl":"⧥","erarr":"⥱","erDot":"≓","escr":"ℯ","Escr":"ℰ","esdot":"≐","Esim":"⩳","esim":"≂","Eta":"Η","eta":"η","ETH":"Ð","eth":"ð","Euml":"Ë","euml":"ë","euro":"€","excl":"!","exist":"∃","Exists":"∃","expectation":"ℰ","exponentiale":"ⅇ","ExponentialE":"ⅇ","fallingdotseq":"≒","Fcy":"Ф","fcy":"ф","female":"♀","ffilig":"ffi","fflig":"ff","ffllig":"ffl","Ffr":"𝔉","ffr":"𝔣","filig":"fi","FilledSmallSquare":"◼","FilledVerySmallSquare":"▪","fjlig":"fj","flat":"♭","fllig":"fl","fltns":"▱","fnof":"ƒ","Fopf":"𝔽","fopf":"𝕗","forall":"∀","ForAll":"∀","fork":"⋔","forkv":"⫙","Fouriertrf":"ℱ","fpartint":"⨍","frac12":"½","frac13":"⅓","frac14":"¼","frac15":"⅕","frac16":"⅙","frac18":"⅛","frac23":"⅔","frac25":"⅖","frac34":"¾","frac35":"⅗","frac38":"⅜","frac45":"⅘","frac56":"⅚","frac58":"⅝","frac78":"⅞","frasl":"⁄","frown":"⌢","fscr":"𝒻","Fscr":"ℱ","gacute":"ǵ","Gamma":"Γ","gamma":"γ","Gammad":"Ϝ","gammad":"ϝ","gap":"⪆","Gbreve":"Ğ","gbreve":"ğ","Gcedil":"Ģ","Gcirc":"Ĝ","gcirc":"ĝ","Gcy":"Г","gcy":"г","Gdot":"Ġ","gdot":"ġ","ge":"≥","gE":"≧","gEl":"⪌","gel":"⋛","geq":"≥","geqq":"≧","geqslant":"⩾","gescc":"⪩","ges":"⩾","gesdot":"⪀","gesdoto":"⪂","gesdotol":"⪄","gesl":"⋛︀","gesles":"⪔","Gfr":"𝔊","gfr":"𝔤","gg":"≫","Gg":"⋙","ggg":"⋙","gimel":"ℷ","GJcy":"Ѓ","gjcy":"ѓ","gla":"⪥","gl":"≷","glE":"⪒","glj":"⪤","gnap":"⪊","gnapprox":"⪊","gne":"⪈","gnE":"≩","gneq":"⪈","gneqq":"≩","gnsim":"⋧","Gopf":"𝔾","gopf":"𝕘","grave":"`","GreaterEqual":"≥","GreaterEqualLess":"⋛","GreaterFullEqual":"≧","GreaterGreater":"⪢","GreaterLess":"≷","GreaterSlantEqual":"⩾","GreaterTilde":"≳","Gscr":"𝒢","gscr":"ℊ","gsim":"≳","gsime":"⪎","gsiml":"⪐","gtcc":"⪧","gtcir":"⩺","gt":">","GT":">","Gt":"≫","gtdot":"⋗","gtlPar":"⦕","gtquest":"⩼","gtrapprox":"⪆","gtrarr":"⥸","gtrdot":"⋗","gtreqless":"⋛","gtreqqless":"⪌","gtrless":"≷","gtrsim":"≳","gvertneqq":"≩︀","gvnE":"≩︀","Hacek":"ˇ","hairsp":" ","half":"½","hamilt":"ℋ","HARDcy":"Ъ","hardcy":"ъ","harrcir":"⥈","harr":"↔","hArr":"⇔","harrw":"↭","Hat":"^","hbar":"ℏ","Hcirc":"Ĥ","hcirc":"ĥ","hearts":"♥","heartsuit":"♥","hellip":"…","hercon":"⊹","hfr":"𝔥","Hfr":"ℌ","HilbertSpace":"ℋ","hksearow":"⤥","hkswarow":"⤦","hoarr":"⇿","homtht":"∻","hookleftarrow":"↩","hookrightarrow":"↪","hopf":"𝕙","Hopf":"ℍ","horbar":"―","HorizontalLine":"─","hscr":"𝒽","Hscr":"ℋ","hslash":"ℏ","Hstrok":"Ħ","hstrok":"ħ","HumpDownHump":"≎","HumpEqual":"≏","hybull":"⁃","hyphen":"‐","Iacute":"Í","iacute":"í","ic":"⁣","Icirc":"Î","icirc":"î","Icy":"И","icy":"и","Idot":"İ","IEcy":"Е","iecy":"е","iexcl":"¡","iff":"⇔","ifr":"𝔦","Ifr":"ℑ","Igrave":"Ì","igrave":"ì","ii":"ⅈ","iiiint":"⨌","iiint":"∭","iinfin":"⧜","iiota":"℩","IJlig":"IJ","ijlig":"ij","Imacr":"Ī","imacr":"ī","image":"ℑ","ImaginaryI":"ⅈ","imagline":"ℐ","imagpart":"ℑ","imath":"ı","Im":"ℑ","imof":"⊷","imped":"Ƶ","Implies":"⇒","incare":"℅","in":"∈","infin":"∞","infintie":"⧝","inodot":"ı","intcal":"⊺","int":"∫","Int":"∬","integers":"ℤ","Integral":"∫","intercal":"⊺","Intersection":"⋂","intlarhk":"⨗","intprod":"⨼","InvisibleComma":"⁣","InvisibleTimes":"⁢","IOcy":"Ё","iocy":"ё","Iogon":"Į","iogon":"į","Iopf":"𝕀","iopf":"𝕚","Iota":"Ι","iota":"ι","iprod":"⨼","iquest":"¿","iscr":"𝒾","Iscr":"ℐ","isin":"∈","isindot":"⋵","isinE":"⋹","isins":"⋴","isinsv":"⋳","isinv":"∈","it":"⁢","Itilde":"Ĩ","itilde":"ĩ","Iukcy":"І","iukcy":"і","Iuml":"Ï","iuml":"ï","Jcirc":"Ĵ","jcirc":"ĵ","Jcy":"Й","jcy":"й","Jfr":"𝔍","jfr":"𝔧","jmath":"ȷ","Jopf":"𝕁","jopf":"𝕛","Jscr":"𝒥","jscr":"𝒿","Jsercy":"Ј","jsercy":"ј","Jukcy":"Є","jukcy":"є","Kappa":"Κ","kappa":"κ","kappav":"ϰ","Kcedil":"Ķ","kcedil":"ķ","Kcy":"К","kcy":"к","Kfr":"𝔎","kfr":"𝔨","kgreen":"ĸ","KHcy":"Х","khcy":"х","KJcy":"Ќ","kjcy":"ќ","Kopf":"𝕂","kopf":"𝕜","Kscr":"𝒦","kscr":"𝓀","lAarr":"⇚","Lacute":"Ĺ","lacute":"ĺ","laemptyv":"⦴","lagran":"ℒ","Lambda":"Λ","lambda":"λ","lang":"⟨","Lang":"⟪","langd":"⦑","langle":"⟨","lap":"⪅","Laplacetrf":"ℒ","laquo":"«","larrb":"⇤","larrbfs":"⤟","larr":"←","Larr":"↞","lArr":"⇐","larrfs":"⤝","larrhk":"↩","larrlp":"↫","larrpl":"⤹","larrsim":"⥳","larrtl":"↢","latail":"⤙","lAtail":"⤛","lat":"⪫","late":"⪭","lates":"⪭︀","lbarr":"⤌","lBarr":"⤎","lbbrk":"❲","lbrace":"{","lbrack":"[","lbrke":"⦋","lbrksld":"⦏","lbrkslu":"⦍","Lcaron":"Ľ","lcaron":"ľ","Lcedil":"Ļ","lcedil":"ļ","lceil":"⌈","lcub":"{","Lcy":"Л","lcy":"л","ldca":"⤶","ldquo":"“","ldquor":"„","ldrdhar":"⥧","ldrushar":"⥋","ldsh":"↲","le":"≤","lE":"≦","LeftAngleBracket":"⟨","LeftArrowBar":"⇤","leftarrow":"←","LeftArrow":"←","Leftarrow":"⇐","LeftArrowRightArrow":"⇆","leftarrowtail":"↢","LeftCeiling":"⌈","LeftDoubleBracket":"⟦","LeftDownTeeVector":"⥡","LeftDownVectorBar":"⥙","LeftDownVector":"⇃","LeftFloor":"⌊","leftharpoondown":"↽","leftharpoonup":"↼","leftleftarrows":"⇇","leftrightarrow":"↔","LeftRightArrow":"↔","Leftrightarrow":"⇔","leftrightarrows":"⇆","leftrightharpoons":"⇋","leftrightsquigarrow":"↭","LeftRightVector":"⥎","LeftTeeArrow":"↤","LeftTee":"⊣","LeftTeeVector":"⥚","leftthreetimes":"⋋","LeftTriangleBar":"⧏","LeftTriangle":"⊲","LeftTriangleEqual":"⊴","LeftUpDownVector":"⥑","LeftUpTeeVector":"⥠","LeftUpVectorBar":"⥘","LeftUpVector":"↿","LeftVectorBar":"⥒","LeftVector":"↼","lEg":"⪋","leg":"⋚","leq":"≤","leqq":"≦","leqslant":"⩽","lescc":"⪨","les":"⩽","lesdot":"⩿","lesdoto":"⪁","lesdotor":"⪃","lesg":"⋚︀","lesges":"⪓","lessapprox":"⪅","lessdot":"⋖","lesseqgtr":"⋚","lesseqqgtr":"⪋","LessEqualGreater":"⋚","LessFullEqual":"≦","LessGreater":"≶","lessgtr":"≶","LessLess":"⪡","lesssim":"≲","LessSlantEqual":"⩽","LessTilde":"≲","lfisht":"⥼","lfloor":"⌊","Lfr":"𝔏","lfr":"𝔩","lg":"≶","lgE":"⪑","lHar":"⥢","lhard":"↽","lharu":"↼","lharul":"⥪","lhblk":"▄","LJcy":"Љ","ljcy":"љ","llarr":"⇇","ll":"≪","Ll":"⋘","llcorner":"⌞","Lleftarrow":"⇚","llhard":"⥫","lltri":"◺","Lmidot":"Ŀ","lmidot":"ŀ","lmoustache":"⎰","lmoust":"⎰","lnap":"⪉","lnapprox":"⪉","lne":"⪇","lnE":"≨","lneq":"⪇","lneqq":"≨","lnsim":"⋦","loang":"⟬","loarr":"⇽","lobrk":"⟦","longleftarrow":"⟵","LongLeftArrow":"⟵","Longleftarrow":"⟸","longleftrightarrow":"⟷","LongLeftRightArrow":"⟷","Longleftrightarrow":"⟺","longmapsto":"⟼","longrightarrow":"⟶","LongRightArrow":"⟶","Longrightarrow":"⟹","looparrowleft":"↫","looparrowright":"↬","lopar":"⦅","Lopf":"𝕃","lopf":"𝕝","loplus":"⨭","lotimes":"⨴","lowast":"∗","lowbar":"_","LowerLeftArrow":"↙","LowerRightArrow":"↘","loz":"◊","lozenge":"◊","lozf":"⧫","lpar":"(","lparlt":"⦓","lrarr":"⇆","lrcorner":"⌟","lrhar":"⇋","lrhard":"⥭","lrm":"‎","lrtri":"⊿","lsaquo":"‹","lscr":"𝓁","Lscr":"ℒ","lsh":"↰","Lsh":"↰","lsim":"≲","lsime":"⪍","lsimg":"⪏","lsqb":"[","lsquo":"‘","lsquor":"‚","Lstrok":"Ł","lstrok":"ł","ltcc":"⪦","ltcir":"⩹","lt":"<","LT":"<","Lt":"≪","ltdot":"⋖","lthree":"⋋","ltimes":"⋉","ltlarr":"⥶","ltquest":"⩻","ltri":"◃","ltrie":"⊴","ltrif":"◂","ltrPar":"⦖","lurdshar":"⥊","luruhar":"⥦","lvertneqq":"≨︀","lvnE":"≨︀","macr":"¯","male":"♂","malt":"✠","maltese":"✠","Map":"⤅","map":"↦","mapsto":"↦","mapstodown":"↧","mapstoleft":"↤","mapstoup":"↥","marker":"▮","mcomma":"⨩","Mcy":"М","mcy":"м","mdash":"—","mDDot":"∺","measuredangle":"∡","MediumSpace":" ","Mellintrf":"ℳ","Mfr":"𝔐","mfr":"𝔪","mho":"℧","micro":"µ","midast":"*","midcir":"⫰","mid":"∣","middot":"·","minusb":"⊟","minus":"−","minusd":"∸","minusdu":"⨪","MinusPlus":"∓","mlcp":"⫛","mldr":"…","mnplus":"∓","models":"⊧","Mopf":"𝕄","mopf":"𝕞","mp":"∓","mscr":"𝓂","Mscr":"ℳ","mstpos":"∾","Mu":"Μ","mu":"μ","multimap":"⊸","mumap":"⊸","nabla":"∇","Nacute":"Ń","nacute":"ń","nang":"∠⃒","nap":"≉","napE":"⩰̸","napid":"≋̸","napos":"ʼn","napprox":"≉","natural":"♮","naturals":"ℕ","natur":"♮","nbsp":" ","nbump":"≎̸","nbumpe":"≏̸","ncap":"⩃","Ncaron":"Ň","ncaron":"ň","Ncedil":"Ņ","ncedil":"ņ","ncong":"≇","ncongdot":"⩭̸","ncup":"⩂","Ncy":"Н","ncy":"н","ndash":"–","nearhk":"⤤","nearr":"↗","neArr":"⇗","nearrow":"↗","ne":"≠","nedot":"≐̸","NegativeMediumSpace":"​","NegativeThickSpace":"​","NegativeThinSpace":"​","NegativeVeryThinSpace":"​","nequiv":"≢","nesear":"⤨","nesim":"≂̸","NestedGreaterGreater":"≫","NestedLessLess":"≪","NewLine":"\\n","nexist":"∄","nexists":"∄","Nfr":"𝔑","nfr":"𝔫","ngE":"≧̸","nge":"≱","ngeq":"≱","ngeqq":"≧̸","ngeqslant":"⩾̸","nges":"⩾̸","nGg":"⋙̸","ngsim":"≵","nGt":"≫⃒","ngt":"≯","ngtr":"≯","nGtv":"≫̸","nharr":"↮","nhArr":"⇎","nhpar":"⫲","ni":"∋","nis":"⋼","nisd":"⋺","niv":"∋","NJcy":"Њ","njcy":"њ","nlarr":"↚","nlArr":"⇍","nldr":"‥","nlE":"≦̸","nle":"≰","nleftarrow":"↚","nLeftarrow":"⇍","nleftrightarrow":"↮","nLeftrightarrow":"⇎","nleq":"≰","nleqq":"≦̸","nleqslant":"⩽̸","nles":"⩽̸","nless":"≮","nLl":"⋘̸","nlsim":"≴","nLt":"≪⃒","nlt":"≮","nltri":"⋪","nltrie":"⋬","nLtv":"≪̸","nmid":"∤","NoBreak":"⁠","NonBreakingSpace":" ","nopf":"𝕟","Nopf":"ℕ","Not":"⫬","not":"¬","NotCongruent":"≢","NotCupCap":"≭","NotDoubleVerticalBar":"∦","NotElement":"∉","NotEqual":"≠","NotEqualTilde":"≂̸","NotExists":"∄","NotGreater":"≯","NotGreaterEqual":"≱","NotGreaterFullEqual":"≧̸","NotGreaterGreater":"≫̸","NotGreaterLess":"≹","NotGreaterSlantEqual":"⩾̸","NotGreaterTilde":"≵","NotHumpDownHump":"≎̸","NotHumpEqual":"≏̸","notin":"∉","notindot":"⋵̸","notinE":"⋹̸","notinva":"∉","notinvb":"⋷","notinvc":"⋶","NotLeftTriangleBar":"⧏̸","NotLeftTriangle":"⋪","NotLeftTriangleEqual":"⋬","NotLess":"≮","NotLessEqual":"≰","NotLessGreater":"≸","NotLessLess":"≪̸","NotLessSlantEqual":"⩽̸","NotLessTilde":"≴","NotNestedGreaterGreater":"⪢̸","NotNestedLessLess":"⪡̸","notni":"∌","notniva":"∌","notnivb":"⋾","notnivc":"⋽","NotPrecedes":"⊀","NotPrecedesEqual":"⪯̸","NotPrecedesSlantEqual":"⋠","NotReverseElement":"∌","NotRightTriangleBar":"⧐̸","NotRightTriangle":"⋫","NotRightTriangleEqual":"⋭","NotSquareSubset":"⊏̸","NotSquareSubsetEqual":"⋢","NotSquareSuperset":"⊐̸","NotSquareSupersetEqual":"⋣","NotSubset":"⊂⃒","NotSubsetEqual":"⊈","NotSucceeds":"⊁","NotSucceedsEqual":"⪰̸","NotSucceedsSlantEqual":"⋡","NotSucceedsTilde":"≿̸","NotSuperset":"⊃⃒","NotSupersetEqual":"⊉","NotTilde":"≁","NotTildeEqual":"≄","NotTildeFullEqual":"≇","NotTildeTilde":"≉","NotVerticalBar":"∤","nparallel":"∦","npar":"∦","nparsl":"⫽⃥","npart":"∂̸","npolint":"⨔","npr":"⊀","nprcue":"⋠","nprec":"⊀","npreceq":"⪯̸","npre":"⪯̸","nrarrc":"⤳̸","nrarr":"↛","nrArr":"⇏","nrarrw":"↝̸","nrightarrow":"↛","nRightarrow":"⇏","nrtri":"⋫","nrtrie":"⋭","nsc":"⊁","nsccue":"⋡","nsce":"⪰̸","Nscr":"𝒩","nscr":"𝓃","nshortmid":"∤","nshortparallel":"∦","nsim":"≁","nsime":"≄","nsimeq":"≄","nsmid":"∤","nspar":"∦","nsqsube":"⋢","nsqsupe":"⋣","nsub":"⊄","nsubE":"⫅̸","nsube":"⊈","nsubset":"⊂⃒","nsubseteq":"⊈","nsubseteqq":"⫅̸","nsucc":"⊁","nsucceq":"⪰̸","nsup":"⊅","nsupE":"⫆̸","nsupe":"⊉","nsupset":"⊃⃒","nsupseteq":"⊉","nsupseteqq":"⫆̸","ntgl":"≹","Ntilde":"Ñ","ntilde":"ñ","ntlg":"≸","ntriangleleft":"⋪","ntrianglelefteq":"⋬","ntriangleright":"⋫","ntrianglerighteq":"⋭","Nu":"Ν","nu":"ν","num":"#","numero":"№","numsp":" ","nvap":"≍⃒","nvdash":"⊬","nvDash":"⊭","nVdash":"⊮","nVDash":"⊯","nvge":"≥⃒","nvgt":">⃒","nvHarr":"⤄","nvinfin":"⧞","nvlArr":"⤂","nvle":"≤⃒","nvlt":"<⃒","nvltrie":"⊴⃒","nvrArr":"⤃","nvrtrie":"⊵⃒","nvsim":"∼⃒","nwarhk":"⤣","nwarr":"↖","nwArr":"⇖","nwarrow":"↖","nwnear":"⤧","Oacute":"Ó","oacute":"ó","oast":"⊛","Ocirc":"Ô","ocirc":"ô","ocir":"⊚","Ocy":"О","ocy":"о","odash":"⊝","Odblac":"Ő","odblac":"ő","odiv":"⨸","odot":"⊙","odsold":"⦼","OElig":"Œ","oelig":"œ","ofcir":"⦿","Ofr":"𝔒","ofr":"𝔬","ogon":"˛","Ograve":"Ò","ograve":"ò","ogt":"⧁","ohbar":"⦵","ohm":"Ω","oint":"∮","olarr":"↺","olcir":"⦾","olcross":"⦻","oline":"‾","olt":"⧀","Omacr":"Ō","omacr":"ō","Omega":"Ω","omega":"ω","Omicron":"Ο","omicron":"ο","omid":"⦶","ominus":"⊖","Oopf":"𝕆","oopf":"𝕠","opar":"⦷","OpenCurlyDoubleQuote":"“","OpenCurlyQuote":"‘","operp":"⦹","oplus":"⊕","orarr":"↻","Or":"⩔","or":"∨","ord":"⩝","order":"ℴ","orderof":"ℴ","ordf":"ª","ordm":"º","origof":"⊶","oror":"⩖","orslope":"⩗","orv":"⩛","oS":"Ⓢ","Oscr":"𝒪","oscr":"ℴ","Oslash":"Ø","oslash":"ø","osol":"⊘","Otilde":"Õ","otilde":"õ","otimesas":"⨶","Otimes":"⨷","otimes":"⊗","Ouml":"Ö","ouml":"ö","ovbar":"⌽","OverBar":"‾","OverBrace":"⏞","OverBracket":"⎴","OverParenthesis":"⏜","para":"¶","parallel":"∥","par":"∥","parsim":"⫳","parsl":"⫽","part":"∂","PartialD":"∂","Pcy":"П","pcy":"п","percnt":"%","period":".","permil":"‰","perp":"⊥","pertenk":"‱","Pfr":"𝔓","pfr":"𝔭","Phi":"Φ","phi":"φ","phiv":"ϕ","phmmat":"ℳ","phone":"☎","Pi":"Π","pi":"π","pitchfork":"⋔","piv":"ϖ","planck":"ℏ","planckh":"ℎ","plankv":"ℏ","plusacir":"⨣","plusb":"⊞","pluscir":"⨢","plus":"+","plusdo":"∔","plusdu":"⨥","pluse":"⩲","PlusMinus":"±","plusmn":"±","plussim":"⨦","plustwo":"⨧","pm":"±","Poincareplane":"ℌ","pointint":"⨕","popf":"𝕡","Popf":"ℙ","pound":"£","prap":"⪷","Pr":"⪻","pr":"≺","prcue":"≼","precapprox":"⪷","prec":"≺","preccurlyeq":"≼","Precedes":"≺","PrecedesEqual":"⪯","PrecedesSlantEqual":"≼","PrecedesTilde":"≾","preceq":"⪯","precnapprox":"⪹","precneqq":"⪵","precnsim":"⋨","pre":"⪯","prE":"⪳","precsim":"≾","prime":"′","Prime":"″","primes":"ℙ","prnap":"⪹","prnE":"⪵","prnsim":"⋨","prod":"∏","Product":"∏","profalar":"⌮","profline":"⌒","profsurf":"⌓","prop":"∝","Proportional":"∝","Proportion":"∷","propto":"∝","prsim":"≾","prurel":"⊰","Pscr":"𝒫","pscr":"𝓅","Psi":"Ψ","psi":"ψ","puncsp":" ","Qfr":"𝔔","qfr":"𝔮","qint":"⨌","qopf":"𝕢","Qopf":"ℚ","qprime":"⁗","Qscr":"𝒬","qscr":"𝓆","quaternions":"ℍ","quatint":"⨖","quest":"?","questeq":"≟","quot":"\\"","QUOT":"\\"","rAarr":"⇛","race":"∽̱","Racute":"Ŕ","racute":"ŕ","radic":"√","raemptyv":"⦳","rang":"⟩","Rang":"⟫","rangd":"⦒","range":"⦥","rangle":"⟩","raquo":"»","rarrap":"⥵","rarrb":"⇥","rarrbfs":"⤠","rarrc":"⤳","rarr":"→","Rarr":"↠","rArr":"⇒","rarrfs":"⤞","rarrhk":"↪","rarrlp":"↬","rarrpl":"⥅","rarrsim":"⥴","Rarrtl":"⤖","rarrtl":"↣","rarrw":"↝","ratail":"⤚","rAtail":"⤜","ratio":"∶","rationals":"ℚ","rbarr":"⤍","rBarr":"⤏","RBarr":"⤐","rbbrk":"❳","rbrace":"}","rbrack":"]","rbrke":"⦌","rbrksld":"⦎","rbrkslu":"⦐","Rcaron":"Ř","rcaron":"ř","Rcedil":"Ŗ","rcedil":"ŗ","rceil":"⌉","rcub":"}","Rcy":"Р","rcy":"р","rdca":"⤷","rdldhar":"⥩","rdquo":"”","rdquor":"”","rdsh":"↳","real":"ℜ","realine":"ℛ","realpart":"ℜ","reals":"ℝ","Re":"ℜ","rect":"▭","reg":"®","REG":"®","ReverseElement":"∋","ReverseEquilibrium":"⇋","ReverseUpEquilibrium":"⥯","rfisht":"⥽","rfloor":"⌋","rfr":"𝔯","Rfr":"ℜ","rHar":"⥤","rhard":"⇁","rharu":"⇀","rharul":"⥬","Rho":"Ρ","rho":"ρ","rhov":"ϱ","RightAngleBracket":"⟩","RightArrowBar":"⇥","rightarrow":"→","RightArrow":"→","Rightarrow":"⇒","RightArrowLeftArrow":"⇄","rightarrowtail":"↣","RightCeiling":"⌉","RightDoubleBracket":"⟧","RightDownTeeVector":"⥝","RightDownVectorBar":"⥕","RightDownVector":"⇂","RightFloor":"⌋","rightharpoondown":"⇁","rightharpoonup":"⇀","rightleftarrows":"⇄","rightleftharpoons":"⇌","rightrightarrows":"⇉","rightsquigarrow":"↝","RightTeeArrow":"↦","RightTee":"⊢","RightTeeVector":"⥛","rightthreetimes":"⋌","RightTriangleBar":"⧐","RightTriangle":"⊳","RightTriangleEqual":"⊵","RightUpDownVector":"⥏","RightUpTeeVector":"⥜","RightUpVectorBar":"⥔","RightUpVector":"↾","RightVectorBar":"⥓","RightVector":"⇀","ring":"˚","risingdotseq":"≓","rlarr":"⇄","rlhar":"⇌","rlm":"‏","rmoustache":"⎱","rmoust":"⎱","rnmid":"⫮","roang":"⟭","roarr":"⇾","robrk":"⟧","ropar":"⦆","ropf":"𝕣","Ropf":"ℝ","roplus":"⨮","rotimes":"⨵","RoundImplies":"⥰","rpar":")","rpargt":"⦔","rppolint":"⨒","rrarr":"⇉","Rrightarrow":"⇛","rsaquo":"›","rscr":"𝓇","Rscr":"ℛ","rsh":"↱","Rsh":"↱","rsqb":"]","rsquo":"’","rsquor":"’","rthree":"⋌","rtimes":"⋊","rtri":"▹","rtrie":"⊵","rtrif":"▸","rtriltri":"⧎","RuleDelayed":"⧴","ruluhar":"⥨","rx":"℞","Sacute":"Ś","sacute":"ś","sbquo":"‚","scap":"⪸","Scaron":"Š","scaron":"š","Sc":"⪼","sc":"≻","sccue":"≽","sce":"⪰","scE":"⪴","Scedil":"Ş","scedil":"ş","Scirc":"Ŝ","scirc":"ŝ","scnap":"⪺","scnE":"⪶","scnsim":"⋩","scpolint":"⨓","scsim":"≿","Scy":"С","scy":"с","sdotb":"⊡","sdot":"⋅","sdote":"⩦","searhk":"⤥","searr":"↘","seArr":"⇘","searrow":"↘","sect":"§","semi":";","seswar":"⤩","setminus":"∖","setmn":"∖","sext":"✶","Sfr":"𝔖","sfr":"𝔰","sfrown":"⌢","sharp":"♯","SHCHcy":"Щ","shchcy":"щ","SHcy":"Ш","shcy":"ш","ShortDownArrow":"↓","ShortLeftArrow":"←","shortmid":"∣","shortparallel":"∥","ShortRightArrow":"→","ShortUpArrow":"↑","shy":"­","Sigma":"Σ","sigma":"σ","sigmaf":"ς","sigmav":"ς","sim":"∼","simdot":"⩪","sime":"≃","simeq":"≃","simg":"⪞","simgE":"⪠","siml":"⪝","simlE":"⪟","simne":"≆","simplus":"⨤","simrarr":"⥲","slarr":"←","SmallCircle":"∘","smallsetminus":"∖","smashp":"⨳","smeparsl":"⧤","smid":"∣","smile":"⌣","smt":"⪪","smte":"⪬","smtes":"⪬︀","SOFTcy":"Ь","softcy":"ь","solbar":"⌿","solb":"⧄","sol":"/","Sopf":"𝕊","sopf":"𝕤","spades":"♠","spadesuit":"♠","spar":"∥","sqcap":"⊓","sqcaps":"⊓︀","sqcup":"⊔","sqcups":"⊔︀","Sqrt":"√","sqsub":"⊏","sqsube":"⊑","sqsubset":"⊏","sqsubseteq":"⊑","sqsup":"⊐","sqsupe":"⊒","sqsupset":"⊐","sqsupseteq":"⊒","square":"□","Square":"□","SquareIntersection":"⊓","SquareSubset":"⊏","SquareSubsetEqual":"⊑","SquareSuperset":"⊐","SquareSupersetEqual":"⊒","SquareUnion":"⊔","squarf":"▪","squ":"□","squf":"▪","srarr":"→","Sscr":"𝒮","sscr":"𝓈","ssetmn":"∖","ssmile":"⌣","sstarf":"⋆","Star":"⋆","star":"☆","starf":"★","straightepsilon":"ϵ","straightphi":"ϕ","strns":"¯","sub":"⊂","Sub":"⋐","subdot":"⪽","subE":"⫅","sube":"⊆","subedot":"⫃","submult":"⫁","subnE":"⫋","subne":"⊊","subplus":"⪿","subrarr":"⥹","subset":"⊂","Subset":"⋐","subseteq":"⊆","subseteqq":"⫅","SubsetEqual":"⊆","subsetneq":"⊊","subsetneqq":"⫋","subsim":"⫇","subsub":"⫕","subsup":"⫓","succapprox":"⪸","succ":"≻","succcurlyeq":"≽","Succeeds":"≻","SucceedsEqual":"⪰","SucceedsSlantEqual":"≽","SucceedsTilde":"≿","succeq":"⪰","succnapprox":"⪺","succneqq":"⪶","succnsim":"⋩","succsim":"≿","SuchThat":"∋","sum":"∑","Sum":"∑","sung":"♪","sup1":"¹","sup2":"²","sup3":"³","sup":"⊃","Sup":"⋑","supdot":"⪾","supdsub":"⫘","supE":"⫆","supe":"⊇","supedot":"⫄","Superset":"⊃","SupersetEqual":"⊇","suphsol":"⟉","suphsub":"⫗","suplarr":"⥻","supmult":"⫂","supnE":"⫌","supne":"⊋","supplus":"⫀","supset":"⊃","Supset":"⋑","supseteq":"⊇","supseteqq":"⫆","supsetneq":"⊋","supsetneqq":"⫌","supsim":"⫈","supsub":"⫔","supsup":"⫖","swarhk":"⤦","swarr":"↙","swArr":"⇙","swarrow":"↙","swnwar":"⤪","szlig":"ß","Tab":"\\t","target":"⌖","Tau":"Τ","tau":"τ","tbrk":"⎴","Tcaron":"Ť","tcaron":"ť","Tcedil":"Ţ","tcedil":"ţ","Tcy":"Т","tcy":"т","tdot":"⃛","telrec":"⌕","Tfr":"𝔗","tfr":"𝔱","there4":"∴","therefore":"∴","Therefore":"∴","Theta":"Θ","theta":"θ","thetasym":"ϑ","thetav":"ϑ","thickapprox":"≈","thicksim":"∼","ThickSpace":"  ","ThinSpace":" ","thinsp":" ","thkap":"≈","thksim":"∼","THORN":"Þ","thorn":"þ","tilde":"˜","Tilde":"∼","TildeEqual":"≃","TildeFullEqual":"≅","TildeTilde":"≈","timesbar":"⨱","timesb":"⊠","times":"×","timesd":"⨰","tint":"∭","toea":"⤨","topbot":"⌶","topcir":"⫱","top":"⊤","Topf":"𝕋","topf":"𝕥","topfork":"⫚","tosa":"⤩","tprime":"‴","trade":"™","TRADE":"™","triangle":"▵","triangledown":"▿","triangleleft":"◃","trianglelefteq":"⊴","triangleq":"≜","triangleright":"▹","trianglerighteq":"⊵","tridot":"◬","trie":"≜","triminus":"⨺","TripleDot":"⃛","triplus":"⨹","trisb":"⧍","tritime":"⨻","trpezium":"⏢","Tscr":"𝒯","tscr":"𝓉","TScy":"Ц","tscy":"ц","TSHcy":"Ћ","tshcy":"ћ","Tstrok":"Ŧ","tstrok":"ŧ","twixt":"≬","twoheadleftarrow":"↞","twoheadrightarrow":"↠","Uacute":"Ú","uacute":"ú","uarr":"↑","Uarr":"↟","uArr":"⇑","Uarrocir":"⥉","Ubrcy":"Ў","ubrcy":"ў","Ubreve":"Ŭ","ubreve":"ŭ","Ucirc":"Û","ucirc":"û","Ucy":"У","ucy":"у","udarr":"⇅","Udblac":"Ű","udblac":"ű","udhar":"⥮","ufisht":"⥾","Ufr":"𝔘","ufr":"𝔲","Ugrave":"Ù","ugrave":"ù","uHar":"⥣","uharl":"↿","uharr":"↾","uhblk":"▀","ulcorn":"⌜","ulcorner":"⌜","ulcrop":"⌏","ultri":"◸","Umacr":"Ū","umacr":"ū","uml":"¨","UnderBar":"_","UnderBrace":"⏟","UnderBracket":"⎵","UnderParenthesis":"⏝","Union":"⋃","UnionPlus":"⊎","Uogon":"Ų","uogon":"ų","Uopf":"𝕌","uopf":"𝕦","UpArrowBar":"⤒","uparrow":"↑","UpArrow":"↑","Uparrow":"⇑","UpArrowDownArrow":"⇅","updownarrow":"↕","UpDownArrow":"↕","Updownarrow":"⇕","UpEquilibrium":"⥮","upharpoonleft":"↿","upharpoonright":"↾","uplus":"⊎","UpperLeftArrow":"↖","UpperRightArrow":"↗","upsi":"υ","Upsi":"ϒ","upsih":"ϒ","Upsilon":"Υ","upsilon":"υ","UpTeeArrow":"↥","UpTee":"⊥","upuparrows":"⇈","urcorn":"⌝","urcorner":"⌝","urcrop":"⌎","Uring":"Ů","uring":"ů","urtri":"◹","Uscr":"𝒰","uscr":"𝓊","utdot":"⋰","Utilde":"Ũ","utilde":"ũ","utri":"▵","utrif":"▴","uuarr":"⇈","Uuml":"Ü","uuml":"ü","uwangle":"⦧","vangrt":"⦜","varepsilon":"ϵ","varkappa":"ϰ","varnothing":"∅","varphi":"ϕ","varpi":"ϖ","varpropto":"∝","varr":"↕","vArr":"⇕","varrho":"ϱ","varsigma":"ς","varsubsetneq":"⊊︀","varsubsetneqq":"⫋︀","varsupsetneq":"⊋︀","varsupsetneqq":"⫌︀","vartheta":"ϑ","vartriangleleft":"⊲","vartriangleright":"⊳","vBar":"⫨","Vbar":"⫫","vBarv":"⫩","Vcy":"В","vcy":"в","vdash":"⊢","vDash":"⊨","Vdash":"⊩","VDash":"⊫","Vdashl":"⫦","veebar":"⊻","vee":"∨","Vee":"⋁","veeeq":"≚","vellip":"⋮","verbar":"|","Verbar":"‖","vert":"|","Vert":"‖","VerticalBar":"∣","VerticalLine":"|","VerticalSeparator":"❘","VerticalTilde":"≀","VeryThinSpace":" ","Vfr":"𝔙","vfr":"𝔳","vltri":"⊲","vnsub":"⊂⃒","vnsup":"⊃⃒","Vopf":"𝕍","vopf":"𝕧","vprop":"∝","vrtri":"⊳","Vscr":"𝒱","vscr":"𝓋","vsubnE":"⫋︀","vsubne":"⊊︀","vsupnE":"⫌︀","vsupne":"⊋︀","Vvdash":"⊪","vzigzag":"⦚","Wcirc":"Ŵ","wcirc":"ŵ","wedbar":"⩟","wedge":"∧","Wedge":"⋀","wedgeq":"≙","weierp":"℘","Wfr":"𝔚","wfr":"𝔴","Wopf":"𝕎","wopf":"𝕨","wp":"℘","wr":"≀","wreath":"≀","Wscr":"𝒲","wscr":"𝓌","xcap":"⋂","xcirc":"◯","xcup":"⋃","xdtri":"▽","Xfr":"𝔛","xfr":"𝔵","xharr":"⟷","xhArr":"⟺","Xi":"Ξ","xi":"ξ","xlarr":"⟵","xlArr":"⟸","xmap":"⟼","xnis":"⋻","xodot":"⨀","Xopf":"𝕏","xopf":"𝕩","xoplus":"⨁","xotime":"⨂","xrarr":"⟶","xrArr":"⟹","Xscr":"𝒳","xscr":"𝓍","xsqcup":"⨆","xuplus":"⨄","xutri":"△","xvee":"⋁","xwedge":"⋀","Yacute":"Ý","yacute":"ý","YAcy":"Я","yacy":"я","Ycirc":"Ŷ","ycirc":"ŷ","Ycy":"Ы","ycy":"ы","yen":"¥","Yfr":"𝔜","yfr":"𝔶","YIcy":"Ї","yicy":"ї","Yopf":"𝕐","yopf":"𝕪","Yscr":"𝒴","yscr":"𝓎","YUcy":"Ю","yucy":"ю","yuml":"ÿ","Yuml":"Ÿ","Zacute":"Ź","zacute":"ź","Zcaron":"Ž","zcaron":"ž","Zcy":"З","zcy":"з","Zdot":"Ż","zdot":"ż","zeetrf":"ℨ","ZeroWidthSpace":"​","Zeta":"Ζ","zeta":"ζ","zfr":"𝔷","Zfr":"ℨ","ZHcy":"Ж","zhcy":"ж","zigrarr":"⇝","zopf":"𝕫","Zopf":"ℤ","Zscr":"𝒵","zscr":"𝓏","zwj":"‍","zwnj":"‌"}')},7802:e=>{"use strict";e.exports=JSON.parse('{"Aacute":"Á","aacute":"á","Acirc":"Â","acirc":"â","acute":"´","AElig":"Æ","aelig":"æ","Agrave":"À","agrave":"à","amp":"&","AMP":"&","Aring":"Å","aring":"å","Atilde":"Ã","atilde":"ã","Auml":"Ä","auml":"ä","brvbar":"¦","Ccedil":"Ç","ccedil":"ç","cedil":"¸","cent":"¢","copy":"©","COPY":"©","curren":"¤","deg":"°","divide":"÷","Eacute":"É","eacute":"é","Ecirc":"Ê","ecirc":"ê","Egrave":"È","egrave":"è","ETH":"Ð","eth":"ð","Euml":"Ë","euml":"ë","frac12":"½","frac14":"¼","frac34":"¾","gt":">","GT":">","Iacute":"Í","iacute":"í","Icirc":"Î","icirc":"î","iexcl":"¡","Igrave":"Ì","igrave":"ì","iquest":"¿","Iuml":"Ï","iuml":"ï","laquo":"«","lt":"<","LT":"<","macr":"¯","micro":"µ","middot":"·","nbsp":" ","not":"¬","Ntilde":"Ñ","ntilde":"ñ","Oacute":"Ó","oacute":"ó","Ocirc":"Ô","ocirc":"ô","Ograve":"Ò","ograve":"ò","ordf":"ª","ordm":"º","Oslash":"Ø","oslash":"ø","Otilde":"Õ","otilde":"õ","Ouml":"Ö","ouml":"ö","para":"¶","plusmn":"±","pound":"£","quot":"\\"","QUOT":"\\"","raquo":"»","reg":"®","REG":"®","sect":"§","shy":"­","sup1":"¹","sup2":"²","sup3":"³","szlig":"ß","THORN":"Þ","thorn":"þ","times":"×","Uacute":"Ú","uacute":"ú","Ucirc":"Û","ucirc":"û","Ugrave":"Ù","ugrave":"ù","uml":"¨","Uuml":"Ü","uuml":"ü","Yacute":"Ý","yacute":"ý","yen":"¥","yuml":"ÿ"}')},2228:e=>{"use strict";e.exports=JSON.parse('{"amp":"&","apos":"\'","gt":">","lt":"<","quot":"\\""}')},3870:function(e,t,n){"use strict";var r,i=this&&this.__extends||(r=function(e,t){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),s=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&s(t,e,n);return o(t,e),t},c=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.parseFeed=t.FeedHandler=void 0;var l,u,h=c(n(7915)),p=a(n(9432)),d=n(763);!function(e){e[e.image=0]="image",e[e.audio=1]="audio",e[e.video=2]="video",e[e.document=3]="document",e[e.executable=4]="executable"}(l||(l={})),function(e){e[e.sample=0]="sample",e[e.full=1]="full",e[e.nonstop=2]="nonstop"}(u||(u={}));var f=function(e){function t(t,n){return"object"==typeof t&&(n=t=void 0),e.call(this,t,n)||this}return i(t,e),t.prototype.onend=function(){var e,t,n=E(C,this.dom);if(n){var r={};if("feed"===n.name){var i=n.children;r.type="atom",A(r,"id","id",i),A(r,"title","title",i);var s=g("href",E("link",i));s&&(r.link=s),A(r,"description","subtitle",i),(o=_("updated",i))&&(r.updated=new Date(o)),A(r,"author","email",i,!0),r.items=T("entry",i).map((function(e){var t={},n=e.children;A(t,"id","id",n),A(t,"title","title",n);var r=g("href",E("link",n));r&&(t.link=r);var i=_("summary",n)||_("content",n);i&&(t.description=i);var s=_("updated",n);return s&&(t.pubDate=new Date(s)),t.media=m(n),t}))}else{var o;i=null!==(t=null===(e=E("channel",n.children))||void 0===e?void 0:e.children)&&void 0!==t?t:[],r.type=n.name.substr(0,3),r.id="",A(r,"title","title",i),A(r,"link","link",i),A(r,"description","description",i),(o=_("lastBuildDate",i))&&(r.updated=new Date(o)),A(r,"author","managingEditor",i,!0),r.items=T("item",n.children).map((function(e){var t={},n=e.children;A(t,"id","guid",n),A(t,"title","title",n),A(t,"link","link",n),A(t,"description","description",n);var r=_("pubDate",n);return r&&(t.pubDate=new Date(r)),t.media=m(n),t}))}this.feed=r,this.handleCallback(null)}else this.handleCallback(new Error("couldn't find root of feed"))},t}(h.default);function m(e){return T("media:content",e).map((function(e){var t={medium:e.attribs.medium,isDefault:!!e.attribs.isDefault};return e.attribs.url&&(t.url=e.attribs.url),e.attribs.fileSize&&(t.fileSize=parseInt(e.attribs.fileSize,10)),e.attribs.type&&(t.type=e.attribs.type),e.attribs.expression&&(t.expression=e.attribs.expression),e.attribs.bitrate&&(t.bitrate=parseInt(e.attribs.bitrate,10)),e.attribs.framerate&&(t.framerate=parseInt(e.attribs.framerate,10)),e.attribs.samplingrate&&(t.samplingrate=parseInt(e.attribs.samplingrate,10)),e.attribs.channels&&(t.channels=parseInt(e.attribs.channels,10)),e.attribs.duration&&(t.duration=parseInt(e.attribs.duration,10)),e.attribs.height&&(t.height=parseInt(e.attribs.height,10)),e.attribs.width&&(t.width=parseInt(e.attribs.width,10)),e.attribs.lang&&(t.lang=e.attribs.lang),t}))}function T(e,t){return p.getElementsByTagName(e,t,!0)}function E(e,t){return p.getElementsByTagName(e,t,!0,1)[0]}function _(e,t,n){return void 0===n&&(n=!1),p.getText(p.getElementsByTagName(e,t,n,1)).trim()}function g(e,t){return t?t.attribs[e]:null}function A(e,t,n,r,i){void 0===i&&(i=!1);var s=_(n,r,i);s&&(e[t]=s)}function C(e){return"rss"===e||"feed"===e||"rdf:RDF"===e}t.FeedHandler=f,t.parseFeed=function(e,t){void 0===t&&(t={xmlMode:!0});var n=new f(t);return new d.Parser(n,t).end(e),n.feed}},763:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Parser=void 0;var i=r(n(9889)),s=new Set(["input","option","optgroup","select","button","datalist","textarea"]),o=new Set(["p"]),a={tr:new Set(["tr","th","td"]),th:new Set(["th"]),td:new Set(["thead","th","td"]),body:new Set(["head","link","script"]),li:new Set(["li"]),p:o,h1:o,h2:o,h3:o,h4:o,h5:o,h6:o,select:s,input:s,output:s,button:s,datalist:s,textarea:s,option:new Set(["option"]),optgroup:new Set(["optgroup","option"]),dd:new Set(["dt","dd"]),dt:new Set(["dt","dd"]),address:o,article:o,aside:o,blockquote:o,details:o,div:o,dl:o,fieldset:o,figcaption:o,figure:o,footer:o,form:o,header:o,hr:o,main:o,nav:o,ol:o,pre:o,section:o,table:o,ul:o,rt:new Set(["rt","rp"]),rp:new Set(["rt","rp"]),tbody:new Set(["thead","tbody"]),tfoot:new Set(["thead","tbody"])},c=new Set(["area","base","basefont","br","col","command","embed","frame","hr","img","input","isindex","keygen","link","meta","param","source","track","wbr"]),l=new Set(["math","svg"]),u=new Set(["mi","mo","mn","ms","mtext","annotation-xml","foreignObject","desc","title"]),h=/\s|\//,p=function(){function e(e,t){var n,r,s,o,a;void 0===t&&(t={}),this.startIndex=0,this.endIndex=null,this.tagname="",this.attribname="",this.attribvalue="",this.attribs=null,this.stack=[],this.foreignContext=[],this.options=t,this.cbs=null!=e?e:{},this.lowerCaseTagNames=null!==(n=t.lowerCaseTags)&&void 0!==n?n:!t.xmlMode,this.lowerCaseAttributeNames=null!==(r=t.lowerCaseAttributeNames)&&void 0!==r?r:!t.xmlMode,this.tokenizer=new(null!==(s=t.Tokenizer)&&void 0!==s?s:i.default)(this.options,this),null===(a=(o=this.cbs).onparserinit)||void 0===a||a.call(o,this)}return e.prototype.updatePosition=function(e){null===this.endIndex?this.tokenizer.sectionStart<=e?this.startIndex=0:this.startIndex=this.tokenizer.sectionStart-e:this.startIndex=this.endIndex+1,this.endIndex=this.tokenizer.getAbsoluteIndex()},e.prototype.ontext=function(e){var t,n;this.updatePosition(1),this.endIndex--,null===(n=(t=this.cbs).ontext)||void 0===n||n.call(t,e)},e.prototype.onopentagname=function(e){var t,n;if(this.lowerCaseTagNames&&(e=e.toLowerCase()),this.tagname=e,!this.options.xmlMode&&Object.prototype.hasOwnProperty.call(a,e))for(var r=void 0;this.stack.length>0&&a[e].has(r=this.stack[this.stack.length-1]);)this.onclosetag(r);!this.options.xmlMode&&c.has(e)||(this.stack.push(e),l.has(e)?this.foreignContext.push(!0):u.has(e)&&this.foreignContext.push(!1)),null===(n=(t=this.cbs).onopentagname)||void 0===n||n.call(t,e),this.cbs.onopentag&&(this.attribs={})},e.prototype.onopentagend=function(){var e,t;this.updatePosition(1),this.attribs&&(null===(t=(e=this.cbs).onopentag)||void 0===t||t.call(e,this.tagname,this.attribs),this.attribs=null),!this.options.xmlMode&&this.cbs.onclosetag&&c.has(this.tagname)&&this.cbs.onclosetag(this.tagname),this.tagname=""},e.prototype.onclosetag=function(e){if(this.updatePosition(1),this.lowerCaseTagNames&&(e=e.toLowerCase()),(l.has(e)||u.has(e))&&this.foreignContext.pop(),!this.stack.length||!this.options.xmlMode&&c.has(e))this.options.xmlMode||"br"!==e&&"p"!==e||(this.onopentagname(e),this.closeCurrentTag());else{var t=this.stack.lastIndexOf(e);if(-1!==t)if(this.cbs.onclosetag)for(t=this.stack.length-t;t--;)this.cbs.onclosetag(this.stack.pop());else this.stack.length=t;else"p"!==e||this.options.xmlMode||(this.onopentagname(e),this.closeCurrentTag())}},e.prototype.onselfclosingtag=function(){this.options.xmlMode||this.options.recognizeSelfClosing||this.foreignContext[this.foreignContext.length-1]?this.closeCurrentTag():this.onopentagend()},e.prototype.closeCurrentTag=function(){var e,t,n=this.tagname;this.onopentagend(),this.stack[this.stack.length-1]===n&&(null===(t=(e=this.cbs).onclosetag)||void 0===t||t.call(e,n),this.stack.pop())},e.prototype.onattribname=function(e){this.lowerCaseAttributeNames&&(e=e.toLowerCase()),this.attribname=e},e.prototype.onattribdata=function(e){this.attribvalue+=e},e.prototype.onattribend=function(e){var t,n;null===(n=(t=this.cbs).onattribute)||void 0===n||n.call(t,this.attribname,this.attribvalue,e),this.attribs&&!Object.prototype.hasOwnProperty.call(this.attribs,this.attribname)&&(this.attribs[this.attribname]=this.attribvalue),this.attribname="",this.attribvalue=""},e.prototype.getInstructionName=function(e){var t=e.search(h),n=t<0?e:e.substr(0,t);return this.lowerCaseTagNames&&(n=n.toLowerCase()),n},e.prototype.ondeclaration=function(e){if(this.cbs.onprocessinginstruction){var t=this.getInstructionName(e);this.cbs.onprocessinginstruction("!"+t,"!"+e)}},e.prototype.onprocessinginstruction=function(e){if(this.cbs.onprocessinginstruction){var t=this.getInstructionName(e);this.cbs.onprocessinginstruction("?"+t,"?"+e)}},e.prototype.oncomment=function(e){var t,n,r,i;this.updatePosition(4),null===(n=(t=this.cbs).oncomment)||void 0===n||n.call(t,e),null===(i=(r=this.cbs).oncommentend)||void 0===i||i.call(r)},e.prototype.oncdata=function(e){var t,n,r,i,s,o;this.updatePosition(1),this.options.xmlMode||this.options.recognizeCDATA?(null===(n=(t=this.cbs).oncdatastart)||void 0===n||n.call(t),null===(i=(r=this.cbs).ontext)||void 0===i||i.call(r,e),null===(o=(s=this.cbs).oncdataend)||void 0===o||o.call(s)):this.oncomment("[CDATA["+e+"]]")},e.prototype.onerror=function(e){var t,n;null===(n=(t=this.cbs).onerror)||void 0===n||n.call(t,e)},e.prototype.onend=function(){var e,t;if(this.cbs.onclosetag)for(var n=this.stack.length;n>0;this.cbs.onclosetag(this.stack[--n]));null===(t=(e=this.cbs).onend)||void 0===t||t.call(e)},e.prototype.reset=function(){var e,t,n,r;null===(t=(e=this.cbs).onreset)||void 0===t||t.call(e),this.tokenizer.reset(),this.tagname="",this.attribname="",this.attribs=null,this.stack=[],null===(r=(n=this.cbs).onparserinit)||void 0===r||r.call(n,this)},e.prototype.parseComplete=function(e){this.reset(),this.end(e)},e.prototype.write=function(e){this.tokenizer.write(e)},e.prototype.end=function(e){this.tokenizer.end(e)},e.prototype.pause=function(){this.tokenizer.pause()},e.prototype.resume=function(){this.tokenizer.resume()},e.prototype.parseChunk=function(e){this.write(e)},e.prototype.done=function(e){this.end(e)},e}();t.Parser=p},9889:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var i=r(n(26)),s=r(n(4007)),o=r(n(7802)),a=r(n(2228));function c(e){return" "===e||"\n"===e||"\t"===e||"\f"===e||"\r"===e}function l(e){return e>="a"&&e<="z"||e>="A"&&e<="Z"}function u(e,t,n){var r=e.toLowerCase();return e===r?function(e,i){i===r?e._state=t:(e._state=n,e._index--)}:function(i,s){s===r||s===e?i._state=t:(i._state=n,i._index--)}}function h(e,t){var n=e.toLowerCase();return function(r,i){i===n||i===e?r._state=t:(r._state=3,r._index--)}}var p=u("C",24,16),d=u("D",25,16),f=u("A",26,16),m=u("T",27,16),T=u("A",28,16),E=h("R",35),_=h("I",36),g=h("P",37),A=h("T",38),C=u("R",40,1),N=u("I",41,1),v=u("P",42,1),O=u("T",43,1),b=h("Y",45),S=h("L",46),y=h("E",47),I=u("Y",49,1),R=u("L",50,1),k=u("E",51,1),L=h("I",54),M=h("T",55),x=h("L",56),P=h("E",57),D=u("I",58,1),w=u("T",59,1),H=u("L",60,1),F=u("E",61,1),U=u("#",63,64),B=u("X",66,65),G=function(){function e(e,t){var n;this._state=1,this.buffer="",this.sectionStart=0,this._index=0,this.bufferOffset=0,this.baseState=1,this.special=1,this.running=!0,this.ended=!1,this.cbs=t,this.xmlMode=!!(null==e?void 0:e.xmlMode),this.decodeEntities=null===(n=null==e?void 0:e.decodeEntities)||void 0===n||n}return e.prototype.reset=function(){this._state=1,this.buffer="",this.sectionStart=0,this._index=0,this.bufferOffset=0,this.baseState=1,this.special=1,this.running=!0,this.ended=!1},e.prototype.write=function(e){this.ended&&this.cbs.onerror(Error(".write() after done!")),this.buffer+=e,this.parse()},e.prototype.end=function(e){this.ended&&this.cbs.onerror(Error(".end() after done!")),e&&this.write(e),this.ended=!0,this.running&&this.finish()},e.prototype.pause=function(){this.running=!1},e.prototype.resume=function(){this.running=!0,this._index<this.buffer.length&&this.parse(),this.ended&&this.finish()},e.prototype.getAbsoluteIndex=function(){return this.bufferOffset+this._index},e.prototype.stateText=function(e){"<"===e?(this._index>this.sectionStart&&this.cbs.ontext(this.getSection()),this._state=2,this.sectionStart=this._index):!this.decodeEntities||"&"!==e||1!==this.special&&4!==this.special||(this._index>this.sectionStart&&this.cbs.ontext(this.getSection()),this.baseState=1,this._state=62,this.sectionStart=this._index)},e.prototype.isTagStartChar=function(e){return l(e)||this.xmlMode&&!c(e)&&"/"!==e&&">"!==e},e.prototype.stateBeforeTagName=function(e){"/"===e?this._state=5:"<"===e?(this.cbs.ontext(this.getSection()),this.sectionStart=this._index):">"===e||1!==this.special||c(e)?this._state=1:"!"===e?(this._state=15,this.sectionStart=this._index+1):"?"===e?(this._state=17,this.sectionStart=this._index+1):this.isTagStartChar(e)?(this._state=this.xmlMode||"s"!==e&&"S"!==e?this.xmlMode||"t"!==e&&"T"!==e?3:52:32,this.sectionStart=this._index):this._state=1},e.prototype.stateInTagName=function(e){("/"===e||">"===e||c(e))&&(this.emitToken("onopentagname"),this._state=8,this._index--)},e.prototype.stateBeforeClosingTagName=function(e){c(e)||(">"===e?this._state=1:1!==this.special?4===this.special||"s"!==e&&"S"!==e?4!==this.special||"t"!==e&&"T"!==e?(this._state=1,this._index--):this._state=53:this._state=33:this.isTagStartChar(e)?(this._state=6,this.sectionStart=this._index):(this._state=20,this.sectionStart=this._index))},e.prototype.stateInClosingTagName=function(e){(">"===e||c(e))&&(this.emitToken("onclosetag"),this._state=7,this._index--)},e.prototype.stateAfterClosingTagName=function(e){">"===e&&(this._state=1,this.sectionStart=this._index+1)},e.prototype.stateBeforeAttributeName=function(e){">"===e?(this.cbs.onopentagend(),this._state=1,this.sectionStart=this._index+1):"/"===e?this._state=4:c(e)||(this._state=9,this.sectionStart=this._index)},e.prototype.stateInSelfClosingTag=function(e){">"===e?(this.cbs.onselfclosingtag(),this._state=1,this.sectionStart=this._index+1,this.special=1):c(e)||(this._state=8,this._index--)},e.prototype.stateInAttributeName=function(e){("="===e||"/"===e||">"===e||c(e))&&(this.cbs.onattribname(this.getSection()),this.sectionStart=-1,this._state=10,this._index--)},e.prototype.stateAfterAttributeName=function(e){"="===e?this._state=11:"/"===e||">"===e?(this.cbs.onattribend(void 0),this._state=8,this._index--):c(e)||(this.cbs.onattribend(void 0),this._state=9,this.sectionStart=this._index)},e.prototype.stateBeforeAttributeValue=function(e){'"'===e?(this._state=12,this.sectionStart=this._index+1):"'"===e?(this._state=13,this.sectionStart=this._index+1):c(e)||(this._state=14,this.sectionStart=this._index,this._index--)},e.prototype.handleInAttributeValue=function(e,t){e===t?(this.emitToken("onattribdata"),this.cbs.onattribend(t),this._state=8):this.decodeEntities&&"&"===e&&(this.emitToken("onattribdata"),this.baseState=this._state,this._state=62,this.sectionStart=this._index)},e.prototype.stateInAttributeValueDoubleQuotes=function(e){this.handleInAttributeValue(e,'"')},e.prototype.stateInAttributeValueSingleQuotes=function(e){this.handleInAttributeValue(e,"'")},e.prototype.stateInAttributeValueNoQuotes=function(e){c(e)||">"===e?(this.emitToken("onattribdata"),this.cbs.onattribend(null),this._state=8,this._index--):this.decodeEntities&&"&"===e&&(this.emitToken("onattribdata"),this.baseState=this._state,this._state=62,this.sectionStart=this._index)},e.prototype.stateBeforeDeclaration=function(e){this._state="["===e?23:"-"===e?18:16},e.prototype.stateInDeclaration=function(e){">"===e&&(this.cbs.ondeclaration(this.getSection()),this._state=1,this.sectionStart=this._index+1)},e.prototype.stateInProcessingInstruction=function(e){">"===e&&(this.cbs.onprocessinginstruction(this.getSection()),this._state=1,this.sectionStart=this._index+1)},e.prototype.stateBeforeComment=function(e){"-"===e?(this._state=19,this.sectionStart=this._index+1):this._state=16},e.prototype.stateInComment=function(e){"-"===e&&(this._state=21)},e.prototype.stateInSpecialComment=function(e){">"===e&&(this.cbs.oncomment(this.buffer.substring(this.sectionStart,this._index)),this._state=1,this.sectionStart=this._index+1)},e.prototype.stateAfterComment1=function(e){this._state="-"===e?22:19},e.prototype.stateAfterComment2=function(e){">"===e?(this.cbs.oncomment(this.buffer.substring(this.sectionStart,this._index-2)),this._state=1,this.sectionStart=this._index+1):"-"!==e&&(this._state=19)},e.prototype.stateBeforeCdata6=function(e){"["===e?(this._state=29,this.sectionStart=this._index+1):(this._state=16,this._index--)},e.prototype.stateInCdata=function(e){"]"===e&&(this._state=30)},e.prototype.stateAfterCdata1=function(e){this._state="]"===e?31:29},e.prototype.stateAfterCdata2=function(e){">"===e?(this.cbs.oncdata(this.buffer.substring(this.sectionStart,this._index-2)),this._state=1,this.sectionStart=this._index+1):"]"!==e&&(this._state=29)},e.prototype.stateBeforeSpecialS=function(e){"c"===e||"C"===e?this._state=34:"t"===e||"T"===e?this._state=44:(this._state=3,this._index--)},e.prototype.stateBeforeSpecialSEnd=function(e){2!==this.special||"c"!==e&&"C"!==e?3!==this.special||"t"!==e&&"T"!==e?this._state=1:this._state=48:this._state=39},e.prototype.stateBeforeSpecialLast=function(e,t){("/"===e||">"===e||c(e))&&(this.special=t),this._state=3,this._index--},e.prototype.stateAfterSpecialLast=function(e,t){">"===e||c(e)?(this.special=1,this._state=6,this.sectionStart=this._index-t,this._index--):this._state=1},e.prototype.parseFixedEntity=function(e){if(void 0===e&&(e=this.xmlMode?a.default:s.default),this.sectionStart+1<this._index){var t=this.buffer.substring(this.sectionStart+1,this._index);Object.prototype.hasOwnProperty.call(e,t)&&(this.emitPartial(e[t]),this.sectionStart=this._index+1)}},e.prototype.parseLegacyEntity=function(){for(var e=this.sectionStart+1,t=Math.min(this._index-e,6);t>=2;){var n=this.buffer.substr(e,t);if(Object.prototype.hasOwnProperty.call(o.default,n))return this.emitPartial(o.default[n]),void(this.sectionStart+=t+1);t--}},e.prototype.stateInNamedEntity=function(e){";"===e?(this.parseFixedEntity(),1===this.baseState&&this.sectionStart+1<this._index&&!this.xmlMode&&this.parseLegacyEntity(),this._state=this.baseState):(e<"0"||e>"9")&&!l(e)&&(this.xmlMode||this.sectionStart+1===this._index||(1!==this.baseState?"="!==e&&this.parseFixedEntity(o.default):this.parseLegacyEntity()),this._state=this.baseState,this._index--)},e.prototype.decodeNumericEntity=function(e,t,n){var r=this.sectionStart+e;if(r!==this._index){var s=this.buffer.substring(r,this._index),o=parseInt(s,t);this.emitPartial(i.default(o)),this.sectionStart=n?this._index+1:this._index}this._state=this.baseState},e.prototype.stateInNumericEntity=function(e){";"===e?this.decodeNumericEntity(2,10,!0):(e<"0"||e>"9")&&(this.xmlMode?this._state=this.baseState:this.decodeNumericEntity(2,10,!1),this._index--)},e.prototype.stateInHexEntity=function(e){";"===e?this.decodeNumericEntity(3,16,!0):(e<"a"||e>"f")&&(e<"A"||e>"F")&&(e<"0"||e>"9")&&(this.xmlMode?this._state=this.baseState:this.decodeNumericEntity(3,16,!1),this._index--)},e.prototype.cleanup=function(){this.sectionStart<0?(this.buffer="",this.bufferOffset+=this._index,this._index=0):this.running&&(1===this._state?(this.sectionStart!==this._index&&this.cbs.ontext(this.buffer.substr(this.sectionStart)),this.buffer="",this.bufferOffset+=this._index,this._index=0):this.sectionStart===this._index?(this.buffer="",this.bufferOffset+=this._index,this._index=0):(this.buffer=this.buffer.substr(this.sectionStart),this._index-=this.sectionStart,this.bufferOffset+=this.sectionStart),this.sectionStart=0)},e.prototype.parse=function(){for(;this._index<this.buffer.length&&this.running;){var e=this.buffer.charAt(this._index);1===this._state?this.stateText(e):12===this._state?this.stateInAttributeValueDoubleQuotes(e):9===this._state?this.stateInAttributeName(e):19===this._state?this.stateInComment(e):20===this._state?this.stateInSpecialComment(e):8===this._state?this.stateBeforeAttributeName(e):3===this._state?this.stateInTagName(e):6===this._state?this.stateInClosingTagName(e):2===this._state?this.stateBeforeTagName(e):10===this._state?this.stateAfterAttributeName(e):13===this._state?this.stateInAttributeValueSingleQuotes(e):11===this._state?this.stateBeforeAttributeValue(e):5===this._state?this.stateBeforeClosingTagName(e):7===this._state?this.stateAfterClosingTagName(e):32===this._state?this.stateBeforeSpecialS(e):21===this._state?this.stateAfterComment1(e):14===this._state?this.stateInAttributeValueNoQuotes(e):4===this._state?this.stateInSelfClosingTag(e):16===this._state?this.stateInDeclaration(e):15===this._state?this.stateBeforeDeclaration(e):22===this._state?this.stateAfterComment2(e):18===this._state?this.stateBeforeComment(e):33===this._state?this.stateBeforeSpecialSEnd(e):53===this._state?D(this,e):39===this._state?C(this,e):40===this._state?N(this,e):41===this._state?v(this,e):34===this._state?E(this,e):35===this._state?_(this,e):36===this._state?g(this,e):37===this._state?A(this,e):38===this._state?this.stateBeforeSpecialLast(e,2):42===this._state?O(this,e):43===this._state?this.stateAfterSpecialLast(e,6):44===this._state?b(this,e):29===this._state?this.stateInCdata(e):45===this._state?S(this,e):46===this._state?y(this,e):47===this._state?this.stateBeforeSpecialLast(e,3):48===this._state?I(this,e):49===this._state?R(this,e):50===this._state?k(this,e):51===this._state?this.stateAfterSpecialLast(e,5):52===this._state?L(this,e):54===this._state?M(this,e):55===this._state?x(this,e):56===this._state?P(this,e):57===this._state?this.stateBeforeSpecialLast(e,4):58===this._state?w(this,e):59===this._state?H(this,e):60===this._state?F(this,e):61===this._state?this.stateAfterSpecialLast(e,5):17===this._state?this.stateInProcessingInstruction(e):64===this._state?this.stateInNamedEntity(e):23===this._state?p(this,e):62===this._state?U(this,e):24===this._state?d(this,e):25===this._state?f(this,e):30===this._state?this.stateAfterCdata1(e):31===this._state?this.stateAfterCdata2(e):26===this._state?m(this,e):27===this._state?T(this,e):28===this._state?this.stateBeforeCdata6(e):66===this._state?this.stateInHexEntity(e):65===this._state?this.stateInNumericEntity(e):63===this._state?B(this,e):this.cbs.onerror(Error("unknown _state"),this._state),this._index++}this.cleanup()},e.prototype.finish=function(){this.sectionStart<this._index&&this.handleTrailingData(),this.cbs.onend()},e.prototype.handleTrailingData=function(){var e=this.buffer.substr(this.sectionStart);29===this._state||30===this._state||31===this._state?this.cbs.oncdata(e):19===this._state||21===this._state||22===this._state?this.cbs.oncomment(e):64!==this._state||this.xmlMode?65!==this._state||this.xmlMode?66!==this._state||this.xmlMode?3!==this._state&&8!==this._state&&11!==this._state&&10!==this._state&&9!==this._state&&13!==this._state&&12!==this._state&&14!==this._state&&6!==this._state&&this.cbs.ontext(e):(this.decodeNumericEntity(3,16,!1),this.sectionStart<this._index&&(this._state=this.baseState,this.handleTrailingData())):(this.decodeNumericEntity(2,10,!1),this.sectionStart<this._index&&(this._state=this.baseState,this.handleTrailingData())):(this.parseLegacyEntity(),this.sectionStart<this._index&&(this._state=this.baseState,this.handleTrailingData()))},e.prototype.getSection=function(){return this.buffer.substring(this.sectionStart,this._index)},e.prototype.emitToken=function(e){this.cbs[e](this.getSection()),this.sectionStart=-1},e.prototype.emitPartial=function(e){1!==this.baseState?this.cbs.onattribdata(e):this.cbs.ontext(e)},e}();t.default=G},3719:function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&r(t,e,n);return i(t,e),t},o=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||r(t,e,n)},a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.RssHandler=t.DefaultHandler=t.DomUtils=t.ElementType=t.Tokenizer=t.createDomStream=t.parseDOM=t.parseDocument=t.DomHandler=t.Parser=void 0;var c=n(763);Object.defineProperty(t,"Parser",{enumerable:!0,get:function(){return c.Parser}});var l=n(7915);function u(e,t){var n=new l.DomHandler(void 0,t);return new c.Parser(n,t).end(e),n.root}Object.defineProperty(t,"DomHandler",{enumerable:!0,get:function(){return l.DomHandler}}),Object.defineProperty(t,"DefaultHandler",{enumerable:!0,get:function(){return l.DomHandler}}),t.parseDocument=u,t.parseDOM=function(e,t){return u(e,t).children},t.createDomStream=function(e,t,n){var r=new l.DomHandler(e,t,n);return new c.Parser(r,t)};var h=n(9889);Object.defineProperty(t,"Tokenizer",{enumerable:!0,get:function(){return a(h).default}});var p=s(n(9960));t.ElementType=p,o(n(3870),t),t.DomUtils=s(n(9432));var d=n(3870);Object.defineProperty(t,"RssHandler",{enumerable:!0,get:function(){return d.FeedHandler}})},9769:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.compile=void 0;var r=n(1073);t.compile=function(e){var t=e[0],n=e[1]-1;if(n<0&&t<=0)return r.falseFunc;if(-1===t)return function(e){return e<=n};if(0===t)return function(e){return e===n};if(1===t)return n<0?r.trueFunc:function(e){return e>=n};var i=Math.abs(t),s=(n%i+i)%i;return t>1?function(e){return e>=n&&e%i===s}:function(e){return e<=n&&e%i===s}}},7540:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.compile=t.parse=void 0;var r=n(7766);Object.defineProperty(t,"parse",{enumerable:!0,get:function(){return r.parse}});var i=n(9769);Object.defineProperty(t,"compile",{enumerable:!0,get:function(){return i.compile}}),t.default=function(e){return i.compile(r.parse(e))}},7766:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.parse=void 0;var n=/^([+-]?\d*n)?\s*(?:([+-]?)\s*(\d+))?$/;t.parse=function(e){if("even"===(e=e.trim().toLowerCase()))return[2,0];if("odd"===e)return[2,1];var t,r=e.match(n);if(!r)throw new Error("n-th rule couldn't be parsed ('"+e+"')");return r[1]?(t=parseInt(r[1],10),isNaN(t)&&(t=r[1].startsWith("-")?-1:1)):t=0,[t,("-"===r[2]?-1:1)*(r[3]?parseInt(r[3],10):0)]}},1906:(e,t,n)=>{"use strict";const r=n(1515),{DOCUMENT_MODE:i}=n(6152),s={element:1,text:3,cdata:4,comment:8},o={tagName:"name",childNodes:"children",parentNode:"parent",previousSibling:"prev",nextSibling:"next",nodeValue:"data"};class a{constructor(e){for(const t of Object.keys(e))this[t]=e[t]}get firstChild(){const e=this.children;return e&&e[0]||null}get lastChild(){const e=this.children;return e&&e[e.length-1]||null}get nodeType(){return s[this.type]||s.element}}Object.keys(o).forEach((e=>{const t=o[e];Object.defineProperty(a.prototype,e,{get:function(){return this[t]||null},set:function(e){return this[t]=e,e}})})),t.createDocument=function(){return new a({type:"root",name:"root",parent:null,prev:null,next:null,children:[],"x-mode":i.NO_QUIRKS})},t.createDocumentFragment=function(){return new a({type:"root",name:"root",parent:null,prev:null,next:null,children:[]})},t.createElement=function(e,t,n){const r=Object.create(null),i=Object.create(null),s=Object.create(null);for(let e=0;e<n.length;e++){const t=n[e].name;r[t]=n[e].value,i[t]=n[e].namespace,s[t]=n[e].prefix}return new a({type:"script"===e||"style"===e?e:"tag",name:e,namespace:t,attribs:r,"x-attribsNamespace":i,"x-attribsPrefix":s,children:[],parent:null,prev:null,next:null})},t.createCommentNode=function(e){return new a({type:"comment",data:e,parent:null,prev:null,next:null})};const c=function(e){return new a({type:"text",data:e,parent:null,prev:null,next:null})},l=t.appendChild=function(e,t){const n=e.children[e.children.length-1];n&&(n.next=t,t.prev=n),e.children.push(t),t.parent=e},u=t.insertBefore=function(e,t,n){const r=e.children.indexOf(n),i=n.prev;i&&(i.next=t,t.prev=i),n.prev=t,t.next=n,e.children.splice(r,0,t),t.parent=e};t.setTemplateContent=function(e,t){l(e,t)},t.getTemplateContent=function(e){return e.children[0]},t.setDocumentType=function(e,t,n,i){const s=r.serializeContent(t,n,i);let o=null;for(let t=0;t<e.children.length;t++)if("directive"===e.children[t].type&&"!doctype"===e.children[t].name){o=e.children[t];break}o?(o.data=s,o["x-name"]=t,o["x-publicId"]=n,o["x-systemId"]=i):l(e,new a({type:"directive",name:"!doctype",data:s,"x-name":t,"x-publicId":n,"x-systemId":i}))},t.setDocumentMode=function(e,t){e["x-mode"]=t},t.getDocumentMode=function(e){return e["x-mode"]},t.detachNode=function(e){if(e.parent){const t=e.parent.children.indexOf(e),n=e.prev,r=e.next;e.prev=null,e.next=null,n&&(n.next=r),r&&(r.prev=n),e.parent.children.splice(t,1),e.parent=null}},t.insertText=function(e,t){const n=e.children[e.children.length-1];n&&"text"===n.type?n.data+=t:l(e,c(t))},t.insertTextBefore=function(e,t,n){const r=e.children[e.children.indexOf(n)-1];r&&"text"===r.type?r.data+=t:u(e,c(t),n)},t.adoptAttributes=function(e,t){for(let n=0;n<t.length;n++){const r=t[n].name;void 0===e.attribs[r]&&(e.attribs[r]=t[n].value,e["x-attribsNamespace"][r]=t[n].namespace,e["x-attribsPrefix"][r]=t[n].prefix)}},t.getFirstChild=function(e){return e.children[0]},t.getChildNodes=function(e){return e.children},t.getParentNode=function(e){return e.parent},t.getAttrList=function(e){const t=[];for(const n in e.attribs)t.push({name:n,value:e.attribs[n],namespace:e["x-attribsNamespace"][n],prefix:e["x-attribsPrefix"][n]});return t},t.getTagName=function(e){return e.name},t.getNamespaceURI=function(e){return e.namespace},t.getTextNodeContent=function(e){return e.data},t.getCommentNodeContent=function(e){return e.data},t.getDocumentTypeNodeName=function(e){return e["x-name"]},t.getDocumentTypeNodePublicId=function(e){return e["x-publicId"]},t.getDocumentTypeNodeSystemId=function(e){return e["x-systemId"]},t.isTextNode=function(e){return"text"===e.type},t.isCommentNode=function(e){return"comment"===e.type},t.isDocumentTypeNode=function(e){return"directive"===e.type&&"!doctype"===e.name},t.isElementNode=function(e){return!!e.attribs},t.setNodeSourceCodeLocation=function(e,t){e.sourceCodeLocation=t},t.getNodeSourceCodeLocation=function(e){return e.sourceCodeLocation},t.updateNodeSourceCodeLocation=function(e,t){e.sourceCodeLocation=Object.assign(e.sourceCodeLocation,t)}},1515:(e,t,n)=>{"use strict";const{DOCUMENT_MODE:r}=n(6152),i="html",s=["+//silmaril//dtd html pro v0r11 19970101//","-//as//dtd html 3.0 aswedit + extensions//","-//advasoft ltd//dtd html 3.0 aswedit + extensions//","-//ietf//dtd html 2.0 level 1//","-//ietf//dtd html 2.0 level 2//","-//ietf//dtd html 2.0 strict level 1//","-//ietf//dtd html 2.0 strict level 2//","-//ietf//dtd html 2.0 strict//","-//ietf//dtd html 2.0//","-//ietf//dtd html 2.1e//","-//ietf//dtd html 3.0//","-//ietf//dtd html 3.2 final//","-//ietf//dtd html 3.2//","-//ietf//dtd html 3//","-//ietf//dtd html level 0//","-//ietf//dtd html level 1//","-//ietf//dtd html level 2//","-//ietf//dtd html level 3//","-//ietf//dtd html strict level 0//","-//ietf//dtd html strict level 1//","-//ietf//dtd html strict level 2//","-//ietf//dtd html strict level 3//","-//ietf//dtd html strict//","-//ietf//dtd html//","-//metrius//dtd metrius presentational//","-//microsoft//dtd internet explorer 2.0 html strict//","-//microsoft//dtd internet explorer 2.0 html//","-//microsoft//dtd internet explorer 2.0 tables//","-//microsoft//dtd internet explorer 3.0 html strict//","-//microsoft//dtd internet explorer 3.0 html//","-//microsoft//dtd internet explorer 3.0 tables//","-//netscape comm. corp.//dtd html//","-//netscape comm. corp.//dtd strict html//","-//o'reilly and associates//dtd html 2.0//","-//o'reilly and associates//dtd html extended 1.0//","-//o'reilly and associates//dtd html extended relaxed 1.0//","-//sq//dtd html 2.0 hotmetal + extensions//","-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//","-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//","-//spyglass//dtd html 2.0 extended//","-//sun microsystems corp.//dtd hotjava html//","-//sun microsystems corp.//dtd hotjava strict html//","-//w3c//dtd html 3 1995-03-24//","-//w3c//dtd html 3.2 draft//","-//w3c//dtd html 3.2 final//","-//w3c//dtd html 3.2//","-//w3c//dtd html 3.2s draft//","-//w3c//dtd html 4.0 frameset//","-//w3c//dtd html 4.0 transitional//","-//w3c//dtd html experimental 19960712//","-//w3c//dtd html experimental 970421//","-//w3c//dtd w3 html//","-//w3o//dtd w3 html 3.0//","-//webtechs//dtd mozilla html 2.0//","-//webtechs//dtd mozilla html//"],o=s.concat(["-//w3c//dtd html 4.01 frameset//","-//w3c//dtd html 4.01 transitional//"]),a=["-//w3o//dtd w3 html strict 3.0//en//","-/w3c/dtd html 4.0 transitional/en","html"],c=["-//w3c//dtd xhtml 1.0 frameset//","-//w3c//dtd xhtml 1.0 transitional//"],l=c.concat(["-//w3c//dtd html 4.01 frameset//","-//w3c//dtd html 4.01 transitional//"]);function u(e){const t=-1!==e.indexOf('"')?"'":'"';return t+e+t}function h(e,t){for(let n=0;n<t.length;n++)if(0===e.indexOf(t[n]))return!0;return!1}t.isConforming=function(e){return e.name===i&&null===e.publicId&&(null===e.systemId||"about:legacy-compat"===e.systemId)},t.getDocumentMode=function(e){if(e.name!==i)return r.QUIRKS;const t=e.systemId;if(t&&"http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd"===t.toLowerCase())return r.QUIRKS;let n=e.publicId;if(null!==n){if(n=n.toLowerCase(),a.indexOf(n)>-1)return r.QUIRKS;let e=null===t?o:s;if(h(n,e))return r.QUIRKS;if(e=null===t?c:l,h(n,e))return r.LIMITED_QUIRKS}return r.NO_QUIRKS},t.serializeContent=function(e,t,n){let r="!DOCTYPE ";return e&&(r+=e),t?r+=" PUBLIC "+u(t):n&&(r+=" SYSTEM"),null!==n&&(r+=" "+u(n)),r}},1734:e=>{"use strict";e.exports={controlCharacterInInputStream:"control-character-in-input-stream",noncharacterInInputStream:"noncharacter-in-input-stream",surrogateInInputStream:"surrogate-in-input-stream",nonVoidHtmlElementStartTagWithTrailingSolidus:"non-void-html-element-start-tag-with-trailing-solidus",endTagWithAttributes:"end-tag-with-attributes",endTagWithTrailingSolidus:"end-tag-with-trailing-solidus",unexpectedSolidusInTag:"unexpected-solidus-in-tag",unexpectedNullCharacter:"unexpected-null-character",unexpectedQuestionMarkInsteadOfTagName:"unexpected-question-mark-instead-of-tag-name",invalidFirstCharacterOfTagName:"invalid-first-character-of-tag-name",unexpectedEqualsSignBeforeAttributeName:"unexpected-equals-sign-before-attribute-name",missingEndTagName:"missing-end-tag-name",unexpectedCharacterInAttributeName:"unexpected-character-in-attribute-name",unknownNamedCharacterReference:"unknown-named-character-reference",missingSemicolonAfterCharacterReference:"missing-semicolon-after-character-reference",unexpectedCharacterAfterDoctypeSystemIdentifier:"unexpected-character-after-doctype-system-identifier",unexpectedCharacterInUnquotedAttributeValue:"unexpected-character-in-unquoted-attribute-value",eofBeforeTagName:"eof-before-tag-name",eofInTag:"eof-in-tag",missingAttributeValue:"missing-attribute-value",missingWhitespaceBetweenAttributes:"missing-whitespace-between-attributes",missingWhitespaceAfterDoctypePublicKeyword:"missing-whitespace-after-doctype-public-keyword",missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers:"missing-whitespace-between-doctype-public-and-system-identifiers",missingWhitespaceAfterDoctypeSystemKeyword:"missing-whitespace-after-doctype-system-keyword",missingQuoteBeforeDoctypePublicIdentifier:"missing-quote-before-doctype-public-identifier",missingQuoteBeforeDoctypeSystemIdentifier:"missing-quote-before-doctype-system-identifier",missingDoctypePublicIdentifier:"missing-doctype-public-identifier",missingDoctypeSystemIdentifier:"missing-doctype-system-identifier",abruptDoctypePublicIdentifier:"abrupt-doctype-public-identifier",abruptDoctypeSystemIdentifier:"abrupt-doctype-system-identifier",cdataInHtmlContent:"cdata-in-html-content",incorrectlyOpenedComment:"incorrectly-opened-comment",eofInScriptHtmlCommentLikeText:"eof-in-script-html-comment-like-text",eofInDoctype:"eof-in-doctype",nestedComment:"nested-comment",abruptClosingOfEmptyComment:"abrupt-closing-of-empty-comment",eofInComment:"eof-in-comment",incorrectlyClosedComment:"incorrectly-closed-comment",eofInCdata:"eof-in-cdata",absenceOfDigitsInNumericCharacterReference:"absence-of-digits-in-numeric-character-reference",nullCharacterReference:"null-character-reference",surrogateCharacterReference:"surrogate-character-reference",characterReferenceOutsideUnicodeRange:"character-reference-outside-unicode-range",controlCharacterReference:"control-character-reference",noncharacterCharacterReference:"noncharacter-character-reference",missingWhitespaceBeforeDoctypeName:"missing-whitespace-before-doctype-name",missingDoctypeName:"missing-doctype-name",invalidCharacterSequenceAfterDoctypeName:"invalid-character-sequence-after-doctype-name",duplicateAttribute:"duplicate-attribute",nonConformingDoctype:"non-conforming-doctype",missingDoctype:"missing-doctype",misplacedDoctype:"misplaced-doctype",endTagWithoutMatchingOpenElement:"end-tag-without-matching-open-element",closingOfElementWithOpenChildElements:"closing-of-element-with-open-child-elements",disallowedContentInNoscriptInHead:"disallowed-content-in-noscript-in-head",openElementsLeftAfterEof:"open-elements-left-after-eof",abandonedHeadElementChild:"abandoned-head-element-child",misplacedStartTagForHeadElement:"misplaced-start-tag-for-head-element",nestedNoscriptInHead:"nested-noscript-in-head",eofInElementThatCanContainOnlyText:"eof-in-element-that-can-contain-only-text"}},8779:(e,t,n)=>{"use strict";const r=n(5763),i=n(6152),s=i.TAG_NAMES,o=i.NAMESPACES,a=i.ATTRS,c={attributename:"attributeName",attributetype:"attributeType",basefrequency:"baseFrequency",baseprofile:"baseProfile",calcmode:"calcMode",clippathunits:"clipPathUnits",diffuseconstant:"diffuseConstant",edgemode:"edgeMode",filterunits:"filterUnits",glyphref:"glyphRef",gradienttransform:"gradientTransform",gradientunits:"gradientUnits",kernelmatrix:"kernelMatrix",kernelunitlength:"kernelUnitLength",keypoints:"keyPoints",keysplines:"keySplines",keytimes:"keyTimes",lengthadjust:"lengthAdjust",limitingconeangle:"limitingConeAngle",markerheight:"markerHeight",markerunits:"markerUnits",markerwidth:"markerWidth",maskcontentunits:"maskContentUnits",maskunits:"maskUnits",numoctaves:"numOctaves",pathlength:"pathLength",patterncontentunits:"patternContentUnits",patterntransform:"patternTransform",patternunits:"patternUnits",pointsatx:"pointsAtX",pointsaty:"pointsAtY",pointsatz:"pointsAtZ",preservealpha:"preserveAlpha",preserveaspectratio:"preserveAspectRatio",primitiveunits:"primitiveUnits",refx:"refX",refy:"refY",repeatcount:"repeatCount",repeatdur:"repeatDur",requiredextensions:"requiredExtensions",requiredfeatures:"requiredFeatures",specularconstant:"specularConstant",specularexponent:"specularExponent",spreadmethod:"spreadMethod",startoffset:"startOffset",stddeviation:"stdDeviation",stitchtiles:"stitchTiles",surfacescale:"surfaceScale",systemlanguage:"systemLanguage",tablevalues:"tableValues",targetx:"targetX",targety:"targetY",textlength:"textLength",viewbox:"viewBox",viewtarget:"viewTarget",xchannelselector:"xChannelSelector",ychannelselector:"yChannelSelector",zoomandpan:"zoomAndPan"},l={"xlink:actuate":{prefix:"xlink",name:"actuate",namespace:o.XLINK},"xlink:arcrole":{prefix:"xlink",name:"arcrole",namespace:o.XLINK},"xlink:href":{prefix:"xlink",name:"href",namespace:o.XLINK},"xlink:role":{prefix:"xlink",name:"role",namespace:o.XLINK},"xlink:show":{prefix:"xlink",name:"show",namespace:o.XLINK},"xlink:title":{prefix:"xlink",name:"title",namespace:o.XLINK},"xlink:type":{prefix:"xlink",name:"type",namespace:o.XLINK},"xml:base":{prefix:"xml",name:"base",namespace:o.XML},"xml:lang":{prefix:"xml",name:"lang",namespace:o.XML},"xml:space":{prefix:"xml",name:"space",namespace:o.XML},xmlns:{prefix:"",name:"xmlns",namespace:o.XMLNS},"xmlns:xlink":{prefix:"xmlns",name:"xlink",namespace:o.XMLNS}},u=t.SVG_TAG_NAMES_ADJUSTMENT_MAP={altglyph:"altGlyph",altglyphdef:"altGlyphDef",altglyphitem:"altGlyphItem",animatecolor:"animateColor",animatemotion:"animateMotion",animatetransform:"animateTransform",clippath:"clipPath",feblend:"feBlend",fecolormatrix:"feColorMatrix",fecomponenttransfer:"feComponentTransfer",fecomposite:"feComposite",feconvolvematrix:"feConvolveMatrix",fediffuselighting:"feDiffuseLighting",fedisplacementmap:"feDisplacementMap",fedistantlight:"feDistantLight",feflood:"feFlood",fefunca:"feFuncA",fefuncb:"feFuncB",fefuncg:"feFuncG",fefuncr:"feFuncR",fegaussianblur:"feGaussianBlur",feimage:"feImage",femerge:"feMerge",femergenode:"feMergeNode",femorphology:"feMorphology",feoffset:"feOffset",fepointlight:"fePointLight",fespecularlighting:"feSpecularLighting",fespotlight:"feSpotLight",fetile:"feTile",feturbulence:"feTurbulence",foreignobject:"foreignObject",glyphref:"glyphRef",lineargradient:"linearGradient",radialgradient:"radialGradient",textpath:"textPath"},h={[s.B]:!0,[s.BIG]:!0,[s.BLOCKQUOTE]:!0,[s.BODY]:!0,[s.BR]:!0,[s.CENTER]:!0,[s.CODE]:!0,[s.DD]:!0,[s.DIV]:!0,[s.DL]:!0,[s.DT]:!0,[s.EM]:!0,[s.EMBED]:!0,[s.H1]:!0,[s.H2]:!0,[s.H3]:!0,[s.H4]:!0,[s.H5]:!0,[s.H6]:!0,[s.HEAD]:!0,[s.HR]:!0,[s.I]:!0,[s.IMG]:!0,[s.LI]:!0,[s.LISTING]:!0,[s.MENU]:!0,[s.META]:!0,[s.NOBR]:!0,[s.OL]:!0,[s.P]:!0,[s.PRE]:!0,[s.RUBY]:!0,[s.S]:!0,[s.SMALL]:!0,[s.SPAN]:!0,[s.STRONG]:!0,[s.STRIKE]:!0,[s.SUB]:!0,[s.SUP]:!0,[s.TABLE]:!0,[s.TT]:!0,[s.U]:!0,[s.UL]:!0,[s.VAR]:!0};t.causesExit=function(e){const t=e.tagName;return!(t!==s.FONT||null===r.getTokenAttr(e,a.COLOR)&&null===r.getTokenAttr(e,a.SIZE)&&null===r.getTokenAttr(e,a.FACE))||h[t]},t.adjustTokenMathMLAttrs=function(e){for(let t=0;t<e.attrs.length;t++)if("definitionurl"===e.attrs[t].name){e.attrs[t].name="definitionURL";break}},t.adjustTokenSVGAttrs=function(e){for(let t=0;t<e.attrs.length;t++){const n=c[e.attrs[t].name];n&&(e.attrs[t].name=n)}},t.adjustTokenXMLAttrs=function(e){for(let t=0;t<e.attrs.length;t++){const n=l[e.attrs[t].name];n&&(e.attrs[t].prefix=n.prefix,e.attrs[t].name=n.name,e.attrs[t].namespace=n.namespace)}},t.adjustTokenSVGTagName=function(e){const t=u[e.tagName];t&&(e.tagName=t)},t.isIntegrationPoint=function(e,t,n,r){return!(r&&r!==o.HTML||!function(e,t,n){if(t===o.MATHML&&e===s.ANNOTATION_XML)for(let e=0;e<n.length;e++)if(n[e].name===a.ENCODING){const t=n[e].value.toLowerCase();return"text/html"===t||"application/xhtml+xml"===t}return t===o.SVG&&(e===s.FOREIGN_OBJECT||e===s.DESC||e===s.TITLE)}(e,t,n))||!(r&&r!==o.MATHML||!function(e,t){return t===o.MATHML&&(e===s.MI||e===s.MO||e===s.MN||e===s.MS||e===s.MTEXT)}(e,t))}},6152:(e,t)=>{"use strict";const n=t.NAMESPACES={HTML:"http://www.w3.org/1999/xhtml",MATHML:"http://www.w3.org/1998/Math/MathML",SVG:"http://www.w3.org/2000/svg",XLINK:"http://www.w3.org/1999/xlink",XML:"http://www.w3.org/XML/1998/namespace",XMLNS:"http://www.w3.org/2000/xmlns/"};t.ATTRS={TYPE:"type",ACTION:"action",ENCODING:"encoding",PROMPT:"prompt",NAME:"name",COLOR:"color",FACE:"face",SIZE:"size"},t.DOCUMENT_MODE={NO_QUIRKS:"no-quirks",QUIRKS:"quirks",LIMITED_QUIRKS:"limited-quirks"};const r=t.TAG_NAMES={A:"a",ADDRESS:"address",ANNOTATION_XML:"annotation-xml",APPLET:"applet",AREA:"area",ARTICLE:"article",ASIDE:"aside",B:"b",BASE:"base",BASEFONT:"basefont",BGSOUND:"bgsound",BIG:"big",BLOCKQUOTE:"blockquote",BODY:"body",BR:"br",BUTTON:"button",CAPTION:"caption",CENTER:"center",CODE:"code",COL:"col",COLGROUP:"colgroup",DD:"dd",DESC:"desc",DETAILS:"details",DIALOG:"dialog",DIR:"dir",DIV:"div",DL:"dl",DT:"dt",EM:"em",EMBED:"embed",FIELDSET:"fieldset",FIGCAPTION:"figcaption",FIGURE:"figure",FONT:"font",FOOTER:"footer",FOREIGN_OBJECT:"foreignObject",FORM:"form",FRAME:"frame",FRAMESET:"frameset",H1:"h1",H2:"h2",H3:"h3",H4:"h4",H5:"h5",H6:"h6",HEAD:"head",HEADER:"header",HGROUP:"hgroup",HR:"hr",HTML:"html",I:"i",IMG:"img",IMAGE:"image",INPUT:"input",IFRAME:"iframe",KEYGEN:"keygen",LABEL:"label",LI:"li",LINK:"link",LISTING:"listing",MAIN:"main",MALIGNMARK:"malignmark",MARQUEE:"marquee",MATH:"math",MENU:"menu",META:"meta",MGLYPH:"mglyph",MI:"mi",MO:"mo",MN:"mn",MS:"ms",MTEXT:"mtext",NAV:"nav",NOBR:"nobr",NOFRAMES:"noframes",NOEMBED:"noembed",NOSCRIPT:"noscript",OBJECT:"object",OL:"ol",OPTGROUP:"optgroup",OPTION:"option",P:"p",PARAM:"param",PLAINTEXT:"plaintext",PRE:"pre",RB:"rb",RP:"rp",RT:"rt",RTC:"rtc",RUBY:"ruby",S:"s",SCRIPT:"script",SECTION:"section",SELECT:"select",SOURCE:"source",SMALL:"small",SPAN:"span",STRIKE:"strike",STRONG:"strong",STYLE:"style",SUB:"sub",SUMMARY:"summary",SUP:"sup",TABLE:"table",TBODY:"tbody",TEMPLATE:"template",TEXTAREA:"textarea",TFOOT:"tfoot",TD:"td",TH:"th",THEAD:"thead",TITLE:"title",TR:"tr",TRACK:"track",TT:"tt",U:"u",UL:"ul",SVG:"svg",VAR:"var",WBR:"wbr",XMP:"xmp"};t.SPECIAL_ELEMENTS={[n.HTML]:{[r.ADDRESS]:!0,[r.APPLET]:!0,[r.AREA]:!0,[r.ARTICLE]:!0,[r.ASIDE]:!0,[r.BASE]:!0,[r.BASEFONT]:!0,[r.BGSOUND]:!0,[r.BLOCKQUOTE]:!0,[r.BODY]:!0,[r.BR]:!0,[r.BUTTON]:!0,[r.CAPTION]:!0,[r.CENTER]:!0,[r.COL]:!0,[r.COLGROUP]:!0,[r.DD]:!0,[r.DETAILS]:!0,[r.DIR]:!0,[r.DIV]:!0,[r.DL]:!0,[r.DT]:!0,[r.EMBED]:!0,[r.FIELDSET]:!0,[r.FIGCAPTION]:!0,[r.FIGURE]:!0,[r.FOOTER]:!0,[r.FORM]:!0,[r.FRAME]:!0,[r.FRAMESET]:!0,[r.H1]:!0,[r.H2]:!0,[r.H3]:!0,[r.H4]:!0,[r.H5]:!0,[r.H6]:!0,[r.HEAD]:!0,[r.HEADER]:!0,[r.HGROUP]:!0,[r.HR]:!0,[r.HTML]:!0,[r.IFRAME]:!0,[r.IMG]:!0,[r.INPUT]:!0,[r.LI]:!0,[r.LINK]:!0,[r.LISTING]:!0,[r.MAIN]:!0,[r.MARQUEE]:!0,[r.MENU]:!0,[r.META]:!0,[r.NAV]:!0,[r.NOEMBED]:!0,[r.NOFRAMES]:!0,[r.NOSCRIPT]:!0,[r.OBJECT]:!0,[r.OL]:!0,[r.P]:!0,[r.PARAM]:!0,[r.PLAINTEXT]:!0,[r.PRE]:!0,[r.SCRIPT]:!0,[r.SECTION]:!0,[r.SELECT]:!0,[r.SOURCE]:!0,[r.STYLE]:!0,[r.SUMMARY]:!0,[r.TABLE]:!0,[r.TBODY]:!0,[r.TD]:!0,[r.TEMPLATE]:!0,[r.TEXTAREA]:!0,[r.TFOOT]:!0,[r.TH]:!0,[r.THEAD]:!0,[r.TITLE]:!0,[r.TR]:!0,[r.TRACK]:!0,[r.UL]:!0,[r.WBR]:!0,[r.XMP]:!0},[n.MATHML]:{[r.MI]:!0,[r.MO]:!0,[r.MN]:!0,[r.MS]:!0,[r.MTEXT]:!0,[r.ANNOTATION_XML]:!0},[n.SVG]:{[r.TITLE]:!0,[r.FOREIGN_OBJECT]:!0,[r.DESC]:!0}}},4284:(e,t)=>{"use strict";const n=[65534,65535,131070,131071,196606,196607,262142,262143,327678,327679,393214,393215,458750,458751,524286,524287,589822,589823,655358,655359,720894,720895,786430,786431,851966,851967,917502,917503,983038,983039,1048574,1048575,1114110,1114111];t.REPLACEMENT_CHARACTER="�",t.CODE_POINTS={EOF:-1,NULL:0,TABULATION:9,CARRIAGE_RETURN:13,LINE_FEED:10,FORM_FEED:12,SPACE:32,EXCLAMATION_MARK:33,QUOTATION_MARK:34,NUMBER_SIGN:35,AMPERSAND:38,APOSTROPHE:39,HYPHEN_MINUS:45,SOLIDUS:47,DIGIT_0:48,DIGIT_9:57,SEMICOLON:59,LESS_THAN_SIGN:60,EQUALS_SIGN:61,GREATER_THAN_SIGN:62,QUESTION_MARK:63,LATIN_CAPITAL_A:65,LATIN_CAPITAL_F:70,LATIN_CAPITAL_X:88,LATIN_CAPITAL_Z:90,RIGHT_SQUARE_BRACKET:93,GRAVE_ACCENT:96,LATIN_SMALL_A:97,LATIN_SMALL_F:102,LATIN_SMALL_X:120,LATIN_SMALL_Z:122,REPLACEMENT_CHARACTER:65533},t.CODE_POINT_SEQUENCES={DASH_DASH_STRING:[45,45],DOCTYPE_STRING:[68,79,67,84,89,80,69],CDATA_START_STRING:[91,67,68,65,84,65,91],SCRIPT_STRING:[115,99,114,105,112,116],PUBLIC_STRING:[80,85,66,76,73,67],SYSTEM_STRING:[83,89,83,84,69,77]},t.isSurrogate=function(e){return e>=55296&&e<=57343},t.isSurrogatePair=function(e){return e>=56320&&e<=57343},t.getSurrogatePairCodePoint=function(e,t){return 1024*(e-55296)+9216+t},t.isControlCodePoint=function(e){return 32!==e&&10!==e&&13!==e&&9!==e&&12!==e&&e>=1&&e<=31||e>=127&&e<=159},t.isUndefinedCodePoint=function(e){return e>=64976&&e<=65007||n.indexOf(e)>-1}},3843:(e,t,n)=>{"use strict";const r=n(1704);e.exports=class extends r{constructor(e,t){super(e),this.posTracker=null,this.onParseError=t.onParseError}_setErrorLocation(e){e.startLine=e.endLine=this.posTracker.line,e.startCol=e.endCol=this.posTracker.col,e.startOffset=e.endOffset=this.posTracker.offset}_reportError(e){const t={code:e,startLine:-1,startCol:-1,startOffset:-1,endLine:-1,endCol:-1,endOffset:-1};this._setErrorLocation(t),this.onParseError(t)}_getOverriddenMethods(e){return{_err(t){e._reportError(t)}}}}},2232:(e,t,n)=>{"use strict";const r=n(3843),i=n(50),s=n(6110),o=n(1704);e.exports=class extends r{constructor(e,t){super(e,t),this.opts=t,this.ctLoc=null,this.locBeforeToken=!1}_setErrorLocation(e){this.ctLoc&&(e.startLine=this.ctLoc.startLine,e.startCol=this.ctLoc.startCol,e.startOffset=this.ctLoc.startOffset,e.endLine=this.locBeforeToken?this.ctLoc.startLine:this.ctLoc.endLine,e.endCol=this.locBeforeToken?this.ctLoc.startCol:this.ctLoc.endCol,e.endOffset=this.locBeforeToken?this.ctLoc.startOffset:this.ctLoc.endOffset)}_getOverriddenMethods(e,t){return{_bootstrap(n,r){t._bootstrap.call(this,n,r),o.install(this.tokenizer,i,e.opts),o.install(this.tokenizer,s)},_processInputToken(n){e.ctLoc=n.location,t._processInputToken.call(this,n)},_err(t,n){e.locBeforeToken=n&&n.beforeToken,e._reportError(t)}}}}},3288:(e,t,n)=>{"use strict";const r=n(3843),i=n(7930),s=n(1704);e.exports=class extends r{constructor(e,t){super(e,t),this.posTracker=s.install(e,i),this.lastErrOffset=-1}_reportError(e){this.lastErrOffset!==this.posTracker.offset&&(this.lastErrOffset=this.posTracker.offset,super._reportError(e))}}},50:(e,t,n)=>{"use strict";const r=n(3843),i=n(3288),s=n(1704);e.exports=class extends r{constructor(e,t){super(e,t);const n=s.install(e.preprocessor,i,t);this.posTracker=n.posTracker}}},1077:(e,t,n)=>{"use strict";const r=n(1704);e.exports=class extends r{constructor(e,t){super(e),this.onItemPop=t.onItemPop}_getOverriddenMethods(e,t){return{pop(){e.onItemPop(this.current),t.pop.call(this)},popAllUpToHtmlElement(){for(let t=this.stackTop;t>0;t--)e.onItemPop(this.items[t]);t.popAllUpToHtmlElement.call(this)},remove(n){e.onItemPop(this.current),t.remove.call(this,n)}}}}},452:(e,t,n)=>{"use strict";const r=n(1704),i=n(5763),s=n(6110),o=n(1077),a=n(6152).TAG_NAMES;e.exports=class extends r{constructor(e){super(e),this.parser=e,this.treeAdapter=this.parser.treeAdapter,this.posTracker=null,this.lastStartTagToken=null,this.lastFosterParentingLocation=null,this.currentToken=null}_setStartLocation(e){let t=null;this.lastStartTagToken&&(t=Object.assign({},this.lastStartTagToken.location),t.startTag=this.lastStartTagToken.location),this.treeAdapter.setNodeSourceCodeLocation(e,t)}_setEndLocation(e,t){if(this.treeAdapter.getNodeSourceCodeLocation(e)&&t.location){const n=t.location,r=this.treeAdapter.getTagName(e),s={};t.type===i.END_TAG_TOKEN&&r===t.tagName?(s.endTag=Object.assign({},n),s.endLine=n.endLine,s.endCol=n.endCol,s.endOffset=n.endOffset):(s.endLine=n.startLine,s.endCol=n.startCol,s.endOffset=n.startOffset),this.treeAdapter.updateNodeSourceCodeLocation(e,s)}}_getOverriddenMethods(e,t){return{_bootstrap(n,i){t._bootstrap.call(this,n,i),e.lastStartTagToken=null,e.lastFosterParentingLocation=null,e.currentToken=null;const a=r.install(this.tokenizer,s);e.posTracker=a.posTracker,r.install(this.openElements,o,{onItemPop:function(t){e._setEndLocation(t,e.currentToken)}})},_runParsingLoop(n){t._runParsingLoop.call(this,n);for(let t=this.openElements.stackTop;t>=0;t--)e._setEndLocation(this.openElements.items[t],e.currentToken)},_processTokenInForeignContent(n){e.currentToken=n,t._processTokenInForeignContent.call(this,n)},_processToken(n){if(e.currentToken=n,t._processToken.call(this,n),n.type===i.END_TAG_TOKEN&&(n.tagName===a.HTML||n.tagName===a.BODY&&this.openElements.hasInScope(a.BODY)))for(let t=this.openElements.stackTop;t>=0;t--){const r=this.openElements.items[t];if(this.treeAdapter.getTagName(r)===n.tagName){e._setEndLocation(r,n);break}}},_setDocumentType(e){t._setDocumentType.call(this,e);const n=this.treeAdapter.getChildNodes(this.document),r=n.length;for(let t=0;t<r;t++){const r=n[t];if(this.treeAdapter.isDocumentTypeNode(r)){this.treeAdapter.setNodeSourceCodeLocation(r,e.location);break}}},_attachElementToTree(n){e._setStartLocation(n),e.lastStartTagToken=null,t._attachElementToTree.call(this,n)},_appendElement(n,r){e.lastStartTagToken=n,t._appendElement.call(this,n,r)},_insertElement(n,r){e.lastStartTagToken=n,t._insertElement.call(this,n,r)},_insertTemplate(n){e.lastStartTagToken=n,t._insertTemplate.call(this,n);const r=this.treeAdapter.getTemplateContent(this.openElements.current);this.treeAdapter.setNodeSourceCodeLocation(r,null)},_insertFakeRootElement(){t._insertFakeRootElement.call(this),this.treeAdapter.setNodeSourceCodeLocation(this.openElements.current,null)},_appendCommentNode(e,n){t._appendCommentNode.call(this,e,n);const r=this.treeAdapter.getChildNodes(n),i=r[r.length-1];this.treeAdapter.setNodeSourceCodeLocation(i,e.location)},_findFosterParentingLocation(){return e.lastFosterParentingLocation=t._findFosterParentingLocation.call(this),e.lastFosterParentingLocation},_insertCharacters(n){t._insertCharacters.call(this,n);const r=this._shouldFosterParentOnInsertion(),i=r&&e.lastFosterParentingLocation.parent||this.openElements.currentTmplContent||this.openElements.current,s=this.treeAdapter.getChildNodes(i),o=r&&e.lastFosterParentingLocation.beforeElement?s.indexOf(e.lastFosterParentingLocation.beforeElement)-1:s.length-1,a=s[o];if(this.treeAdapter.getNodeSourceCodeLocation(a)){const{endLine:e,endCol:t,endOffset:r}=n.location;this.treeAdapter.updateNodeSourceCodeLocation(a,{endLine:e,endCol:t,endOffset:r})}else this.treeAdapter.setNodeSourceCodeLocation(a,n.location)}}}}},6110:(e,t,n)=>{"use strict";const r=n(1704),i=n(5763),s=n(7930);e.exports=class extends r{constructor(e){super(e),this.tokenizer=e,this.posTracker=r.install(e.preprocessor,s),this.currentAttrLocation=null,this.ctLoc=null}_getCurrentLocation(){return{startLine:this.posTracker.line,startCol:this.posTracker.col,startOffset:this.posTracker.offset,endLine:-1,endCol:-1,endOffset:-1}}_attachCurrentAttrLocationInfo(){this.currentAttrLocation.endLine=this.posTracker.line,this.currentAttrLocation.endCol=this.posTracker.col,this.currentAttrLocation.endOffset=this.posTracker.offset;const e=this.tokenizer.currentToken,t=this.tokenizer.currentAttr;e.location.attrs||(e.location.attrs=Object.create(null)),e.location.attrs[t.name]=this.currentAttrLocation}_getOverriddenMethods(e,t){const n={_createStartTagToken(){t._createStartTagToken.call(this),this.currentToken.location=e.ctLoc},_createEndTagToken(){t._createEndTagToken.call(this),this.currentToken.location=e.ctLoc},_createCommentToken(){t._createCommentToken.call(this),this.currentToken.location=e.ctLoc},_createDoctypeToken(n){t._createDoctypeToken.call(this,n),this.currentToken.location=e.ctLoc},_createCharacterToken(n,r){t._createCharacterToken.call(this,n,r),this.currentCharacterToken.location=e.ctLoc},_createEOFToken(){t._createEOFToken.call(this),this.currentToken.location=e._getCurrentLocation()},_createAttr(n){t._createAttr.call(this,n),e.currentAttrLocation=e._getCurrentLocation()},_leaveAttrName(n){t._leaveAttrName.call(this,n),e._attachCurrentAttrLocationInfo()},_leaveAttrValue(n){t._leaveAttrValue.call(this,n),e._attachCurrentAttrLocationInfo()},_emitCurrentToken(){const n=this.currentToken.location;this.currentCharacterToken&&(this.currentCharacterToken.location.endLine=n.startLine,this.currentCharacterToken.location.endCol=n.startCol,this.currentCharacterToken.location.endOffset=n.startOffset),this.currentToken.type===i.EOF_TOKEN?(n.endLine=n.startLine,n.endCol=n.startCol,n.endOffset=n.startOffset):(n.endLine=e.posTracker.line,n.endCol=e.posTracker.col+1,n.endOffset=e.posTracker.offset+1),t._emitCurrentToken.call(this)},_emitCurrentCharacterToken(){const n=this.currentCharacterToken&&this.currentCharacterToken.location;n&&-1===n.endOffset&&(n.endLine=e.posTracker.line,n.endCol=e.posTracker.col,n.endOffset=e.posTracker.offset),t._emitCurrentCharacterToken.call(this)}};return Object.keys(i.MODE).forEach((r=>{const s=i.MODE[r];n[s]=function(n){e.ctLoc=e._getCurrentLocation(),t[s].call(this,n)}})),n}}},7930:(e,t,n)=>{"use strict";const r=n(1704);e.exports=class extends r{constructor(e){super(e),this.preprocessor=e,this.isEol=!1,this.lineStartPos=0,this.droppedBufferSize=0,this.offset=0,this.col=0,this.line=1}_getOverriddenMethods(e,t){return{advance(){const n=this.pos+1,r=this.html[n];return e.isEol&&(e.isEol=!1,e.line++,e.lineStartPos=n),("\n"===r||"\r"===r&&"\n"!==this.html[n+1])&&(e.isEol=!0),e.col=n-e.lineStartPos+1,e.offset=e.droppedBufferSize+n,t.advance.call(this)},retreat(){t.retreat.call(this),e.isEol=!1,e.col=this.pos-e.lineStartPos+1},dropParsedChunk(){const n=this.pos;t.dropParsedChunk.call(this);const r=n-this.pos;e.lineStartPos-=r,e.droppedBufferSize+=r,e.offset=e.droppedBufferSize+this.pos}}}}},2394:(e,t,n)=>{"use strict";const r=n(7045),i=n(3988);t.parse=function(e,t){return new r(t).parse(e)},t.parseFragment=function(e,t,n){return"string"==typeof e&&(n=t,t=e,e=null),new r(n).parseFragment(t,e)},t.serialize=function(e,t){return new i(e,t).serialize()}},2484:e=>{"use strict";class t{constructor(e){this.length=0,this.entries=[],this.treeAdapter=e,this.bookmark=null}_getNoahArkConditionCandidates(e){const n=[];if(this.length>=3){const r=this.treeAdapter.getAttrList(e).length,i=this.treeAdapter.getTagName(e),s=this.treeAdapter.getNamespaceURI(e);for(let e=this.length-1;e>=0;e--){const o=this.entries[e];if(o.type===t.MARKER_ENTRY)break;const a=o.element,c=this.treeAdapter.getAttrList(a);this.treeAdapter.getTagName(a)===i&&this.treeAdapter.getNamespaceURI(a)===s&&c.length===r&&n.push({idx:e,attrs:c})}}return n.length<3?[]:n}_ensureNoahArkCondition(e){const t=this._getNoahArkConditionCandidates(e);let n=t.length;if(n){const r=this.treeAdapter.getAttrList(e),i=r.length,s=Object.create(null);for(let e=0;e<i;e++){const t=r[e];s[t.name]=t.value}for(let e=0;e<i;e++)for(let r=0;r<n;r++){const i=t[r].attrs[e];if(s[i.name]!==i.value&&(t.splice(r,1),n--),t.length<3)return}for(let e=n-1;e>=2;e--)this.entries.splice(t[e].idx,1),this.length--}}insertMarker(){this.entries.push({type:t.MARKER_ENTRY}),this.length++}pushElement(e,n){this._ensureNoahArkCondition(e),this.entries.push({type:t.ELEMENT_ENTRY,element:e,token:n}),this.length++}insertElementAfterBookmark(e,n){let r=this.length-1;for(;r>=0&&this.entries[r]!==this.bookmark;r--);this.entries.splice(r+1,0,{type:t.ELEMENT_ENTRY,element:e,token:n}),this.length++}removeEntry(e){for(let t=this.length-1;t>=0;t--)if(this.entries[t]===e){this.entries.splice(t,1),this.length--;break}}clearToLastMarker(){for(;this.length;){const e=this.entries.pop();if(this.length--,e.type===t.MARKER_ENTRY)break}}getElementEntryInScopeWithTagName(e){for(let n=this.length-1;n>=0;n--){const r=this.entries[n];if(r.type===t.MARKER_ENTRY)return null;if(this.treeAdapter.getTagName(r.element)===e)return r}return null}getElementEntry(e){for(let n=this.length-1;n>=0;n--){const r=this.entries[n];if(r.type===t.ELEMENT_ENTRY&&r.element===e)return r}return null}}t.MARKER_ENTRY="MARKER_ENTRY",t.ELEMENT_ENTRY="ELEMENT_ENTRY",e.exports=t},7045:(e,t,n)=>{"use strict";const r=n(5763),i=n(6519),s=n(2484),o=n(452),a=n(2232),c=n(1704),l=n(7296),u=n(8904),h=n(1515),p=n(8779),d=n(1734),f=n(4284),m=n(6152),T=m.TAG_NAMES,E=m.NAMESPACES,_=m.ATTRS,g={scriptingEnabled:!0,sourceCodeLocationInfo:!1,onParseError:null,treeAdapter:l},A="hidden",C="INITIAL_MODE",N="BEFORE_HTML_MODE",v="BEFORE_HEAD_MODE",O="IN_HEAD_MODE",b="IN_HEAD_NO_SCRIPT_MODE",S="AFTER_HEAD_MODE",y="IN_BODY_MODE",I="TEXT_MODE",R="IN_TABLE_MODE",k="IN_TABLE_TEXT_MODE",L="IN_CAPTION_MODE",M="IN_COLUMN_GROUP_MODE",x="IN_TABLE_BODY_MODE",P="IN_ROW_MODE",D="IN_CELL_MODE",w="IN_SELECT_MODE",H="IN_SELECT_IN_TABLE_MODE",F="IN_TEMPLATE_MODE",U="AFTER_BODY_MODE",B="IN_FRAMESET_MODE",G="AFTER_FRAMESET_MODE",j="AFTER_AFTER_BODY_MODE",K="AFTER_AFTER_FRAMESET_MODE",q={[T.TR]:P,[T.TBODY]:x,[T.THEAD]:x,[T.TFOOT]:x,[T.CAPTION]:L,[T.COLGROUP]:M,[T.TABLE]:R,[T.BODY]:y,[T.FRAMESET]:B},Y={[T.CAPTION]:R,[T.COLGROUP]:R,[T.TBODY]:R,[T.TFOOT]:R,[T.THEAD]:R,[T.COL]:M,[T.TR]:x,[T.TD]:P,[T.TH]:P},V={[C]:{[r.CHARACTER_TOKEN]:oe,[r.NULL_CHARACTER_TOKEN]:oe,[r.WHITESPACE_CHARACTER_TOKEN]:ee,[r.COMMENT_TOKEN]:ne,[r.DOCTYPE_TOKEN]:function(e,t){e._setDocumentType(t);const n=t.forceQuirks?m.DOCUMENT_MODE.QUIRKS:h.getDocumentMode(t);h.isConforming(t)||e._err(d.nonConformingDoctype),e.treeAdapter.setDocumentMode(e.document,n),e.insertionMode=N},[r.START_TAG_TOKEN]:oe,[r.END_TAG_TOKEN]:oe,[r.EOF_TOKEN]:oe},[N]:{[r.CHARACTER_TOKEN]:ae,[r.NULL_CHARACTER_TOKEN]:ae,[r.WHITESPACE_CHARACTER_TOKEN]:ee,[r.COMMENT_TOKEN]:ne,[r.DOCTYPE_TOKEN]:ee,[r.START_TAG_TOKEN]:function(e,t){t.tagName===T.HTML?(e._insertElement(t,E.HTML),e.insertionMode=v):ae(e,t)},[r.END_TAG_TOKEN]:function(e,t){const n=t.tagName;n!==T.HTML&&n!==T.HEAD&&n!==T.BODY&&n!==T.BR||ae(e,t)},[r.EOF_TOKEN]:ae},[v]:{[r.CHARACTER_TOKEN]:ce,[r.NULL_CHARACTER_TOKEN]:ce,[r.WHITESPACE_CHARACTER_TOKEN]:ee,[r.COMMENT_TOKEN]:ne,[r.DOCTYPE_TOKEN]:te,[r.START_TAG_TOKEN]:function(e,t){const n=t.tagName;n===T.HTML?Se(e,t):n===T.HEAD?(e._insertElement(t,E.HTML),e.headElement=e.openElements.current,e.insertionMode=O):ce(e,t)},[r.END_TAG_TOKEN]:function(e,t){const n=t.tagName;n===T.HEAD||n===T.BODY||n===T.HTML||n===T.BR?ce(e,t):e._err(d.endTagWithoutMatchingOpenElement)},[r.EOF_TOKEN]:ce},[O]:{[r.CHARACTER_TOKEN]:he,[r.NULL_CHARACTER_TOKEN]:he,[r.WHITESPACE_CHARACTER_TOKEN]:ie,[r.COMMENT_TOKEN]:ne,[r.DOCTYPE_TOKEN]:te,[r.START_TAG_TOKEN]:le,[r.END_TAG_TOKEN]:ue,[r.EOF_TOKEN]:he},[b]:{[r.CHARACTER_TOKEN]:pe,[r.NULL_CHARACTER_TOKEN]:pe,[r.WHITESPACE_CHARACTER_TOKEN]:ie,[r.COMMENT_TOKEN]:ne,[r.DOCTYPE_TOKEN]:te,[r.START_TAG_TOKEN]:function(e,t){const n=t.tagName;n===T.HTML?Se(e,t):n===T.BASEFONT||n===T.BGSOUND||n===T.HEAD||n===T.LINK||n===T.META||n===T.NOFRAMES||n===T.STYLE?le(e,t):n===T.NOSCRIPT?e._err(d.nestedNoscriptInHead):pe(e,t)},[r.END_TAG_TOKEN]:function(e,t){const n=t.tagName;n===T.NOSCRIPT?(e.openElements.pop(),e.insertionMode=O):n===T.BR?pe(e,t):e._err(d.endTagWithoutMatchingOpenElement)},[r.EOF_TOKEN]:pe},[S]:{[r.CHARACTER_TOKEN]:de,[r.NULL_CHARACTER_TOKEN]:de,[r.WHITESPACE_CHARACTER_TOKEN]:ie,[r.COMMENT_TOKEN]:ne,[r.DOCTYPE_TOKEN]:te,[r.START_TAG_TOKEN]:function(e,t){const n=t.tagName;n===T.HTML?Se(e,t):n===T.BODY?(e._insertElement(t,E.HTML),e.framesetOk=!1,e.insertionMode=y):n===T.FRAMESET?(e._insertElement(t,E.HTML),e.insertionMode=B):n===T.BASE||n===T.BASEFONT||n===T.BGSOUND||n===T.LINK||n===T.META||n===T.NOFRAMES||n===T.SCRIPT||n===T.STYLE||n===T.TEMPLATE||n===T.TITLE?(e._err(d.abandonedHeadElementChild),e.openElements.push(e.headElement),le(e,t),e.openElements.remove(e.headElement)):n===T.HEAD?e._err(d.misplacedStartTagForHeadElement):de(e,t)},[r.END_TAG_TOKEN]:function(e,t){const n=t.tagName;n===T.BODY||n===T.HTML||n===T.BR?de(e,t):n===T.TEMPLATE?ue(e,t):e._err(d.endTagWithoutMatchingOpenElement)},[r.EOF_TOKEN]:de},[y]:{[r.CHARACTER_TOKEN]:me,[r.NULL_CHARACTER_TOKEN]:ee,[r.WHITESPACE_CHARACTER_TOKEN]:fe,[r.COMMENT_TOKEN]:ne,[r.DOCTYPE_TOKEN]:ee,[r.START_TAG_TOKEN]:Se,[r.END_TAG_TOKEN]:ke,[r.EOF_TOKEN]:Le},[I]:{[r.CHARACTER_TOKEN]:ie,[r.NULL_CHARACTER_TOKEN]:ie,[r.WHITESPACE_CHARACTER_TOKEN]:ie,[r.COMMENT_TOKEN]:ee,[r.DOCTYPE_TOKEN]:ee,[r.START_TAG_TOKEN]:ee,[r.END_TAG_TOKEN]:function(e,t){t.tagName===T.SCRIPT&&(e.pendingScript=e.openElements.current),e.openElements.pop(),e.insertionMode=e.originalInsertionMode},[r.EOF_TOKEN]:function(e,t){e._err(d.eofInElementThatCanContainOnlyText),e.openElements.pop(),e.insertionMode=e.originalInsertionMode,e._processToken(t)}},[R]:{[r.CHARACTER_TOKEN]:Me,[r.NULL_CHARACTER_TOKEN]:Me,[r.WHITESPACE_CHARACTER_TOKEN]:Me,[r.COMMENT_TOKEN]:ne,[r.DOCTYPE_TOKEN]:ee,[r.START_TAG_TOKEN]:xe,[r.END_TAG_TOKEN]:Pe,[r.EOF_TOKEN]:Le},[k]:{[r.CHARACTER_TOKEN]:function(e,t){e.pendingCharacterTokens.push(t),e.hasNonWhitespacePendingCharacterToken=!0},[r.NULL_CHARACTER_TOKEN]:ee,[r.WHITESPACE_CHARACTER_TOKEN]:function(e,t){e.pendingCharacterTokens.push(t)},[r.COMMENT_TOKEN]:we,[r.DOCTYPE_TOKEN]:we,[r.START_TAG_TOKEN]:we,[r.END_TAG_TOKEN]:we,[r.EOF_TOKEN]:we},[L]:{[r.CHARACTER_TOKEN]:me,[r.NULL_CHARACTER_TOKEN]:ee,[r.WHITESPACE_CHARACTER_TOKEN]:fe,[r.COMMENT_TOKEN]:ne,[r.DOCTYPE_TOKEN]:ee,[r.START_TAG_TOKEN]:function(e,t){const n=t.tagName;n===T.CAPTION||n===T.COL||n===T.COLGROUP||n===T.TBODY||n===T.TD||n===T.TFOOT||n===T.TH||n===T.THEAD||n===T.TR?e.openElements.hasInTableScope(T.CAPTION)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(T.CAPTION),e.activeFormattingElements.clearToLastMarker(),e.insertionMode=R,e._processToken(t)):Se(e,t)},[r.END_TAG_TOKEN]:function(e,t){const n=t.tagName;n===T.CAPTION||n===T.TABLE?e.openElements.hasInTableScope(T.CAPTION)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(T.CAPTION),e.activeFormattingElements.clearToLastMarker(),e.insertionMode=R,n===T.TABLE&&e._processToken(t)):n!==T.BODY&&n!==T.COL&&n!==T.COLGROUP&&n!==T.HTML&&n!==T.TBODY&&n!==T.TD&&n!==T.TFOOT&&n!==T.TH&&n!==T.THEAD&&n!==T.TR&&ke(e,t)},[r.EOF_TOKEN]:Le},[M]:{[r.CHARACTER_TOKEN]:He,[r.NULL_CHARACTER_TOKEN]:He,[r.WHITESPACE_CHARACTER_TOKEN]:ie,[r.COMMENT_TOKEN]:ne,[r.DOCTYPE_TOKEN]:ee,[r.START_TAG_TOKEN]:function(e,t){const n=t.tagName;n===T.HTML?Se(e,t):n===T.COL?(e._appendElement(t,E.HTML),t.ackSelfClosing=!0):n===T.TEMPLATE?le(e,t):He(e,t)},[r.END_TAG_TOKEN]:function(e,t){const n=t.tagName;n===T.COLGROUP?e.openElements.currentTagName===T.COLGROUP&&(e.openElements.pop(),e.insertionMode=R):n===T.TEMPLATE?ue(e,t):n!==T.COL&&He(e,t)},[r.EOF_TOKEN]:Le},[x]:{[r.CHARACTER_TOKEN]:Me,[r.NULL_CHARACTER_TOKEN]:Me,[r.WHITESPACE_CHARACTER_TOKEN]:Me,[r.COMMENT_TOKEN]:ne,[r.DOCTYPE_TOKEN]:ee,[r.START_TAG_TOKEN]:function(e,t){const n=t.tagName;n===T.TR?(e.openElements.clearBackToTableBodyContext(),e._insertElement(t,E.HTML),e.insertionMode=P):n===T.TH||n===T.TD?(e.openElements.clearBackToTableBodyContext(),e._insertFakeElement(T.TR),e.insertionMode=P,e._processToken(t)):n===T.CAPTION||n===T.COL||n===T.COLGROUP||n===T.TBODY||n===T.TFOOT||n===T.THEAD?e.openElements.hasTableBodyContextInTableScope()&&(e.openElements.clearBackToTableBodyContext(),e.openElements.pop(),e.insertionMode=R,e._processToken(t)):xe(e,t)},[r.END_TAG_TOKEN]:function(e,t){const n=t.tagName;n===T.TBODY||n===T.TFOOT||n===T.THEAD?e.openElements.hasInTableScope(n)&&(e.openElements.clearBackToTableBodyContext(),e.openElements.pop(),e.insertionMode=R):n===T.TABLE?e.openElements.hasTableBodyContextInTableScope()&&(e.openElements.clearBackToTableBodyContext(),e.openElements.pop(),e.insertionMode=R,e._processToken(t)):(n!==T.BODY&&n!==T.CAPTION&&n!==T.COL&&n!==T.COLGROUP||n!==T.HTML&&n!==T.TD&&n!==T.TH&&n!==T.TR)&&Pe(e,t)},[r.EOF_TOKEN]:Le},[P]:{[r.CHARACTER_TOKEN]:Me,[r.NULL_CHARACTER_TOKEN]:Me,[r.WHITESPACE_CHARACTER_TOKEN]:Me,[r.COMMENT_TOKEN]:ne,[r.DOCTYPE_TOKEN]:ee,[r.START_TAG_TOKEN]:function(e,t){const n=t.tagName;n===T.TH||n===T.TD?(e.openElements.clearBackToTableRowContext(),e._insertElement(t,E.HTML),e.insertionMode=D,e.activeFormattingElements.insertMarker()):n===T.CAPTION||n===T.COL||n===T.COLGROUP||n===T.TBODY||n===T.TFOOT||n===T.THEAD||n===T.TR?e.openElements.hasInTableScope(T.TR)&&(e.openElements.clearBackToTableRowContext(),e.openElements.pop(),e.insertionMode=x,e._processToken(t)):xe(e,t)},[r.END_TAG_TOKEN]:function(e,t){const n=t.tagName;n===T.TR?e.openElements.hasInTableScope(T.TR)&&(e.openElements.clearBackToTableRowContext(),e.openElements.pop(),e.insertionMode=x):n===T.TABLE?e.openElements.hasInTableScope(T.TR)&&(e.openElements.clearBackToTableRowContext(),e.openElements.pop(),e.insertionMode=x,e._processToken(t)):n===T.TBODY||n===T.TFOOT||n===T.THEAD?(e.openElements.hasInTableScope(n)||e.openElements.hasInTableScope(T.TR))&&(e.openElements.clearBackToTableRowContext(),e.openElements.pop(),e.insertionMode=x,e._processToken(t)):(n!==T.BODY&&n!==T.CAPTION&&n!==T.COL&&n!==T.COLGROUP||n!==T.HTML&&n!==T.TD&&n!==T.TH)&&Pe(e,t)},[r.EOF_TOKEN]:Le},[D]:{[r.CHARACTER_TOKEN]:me,[r.NULL_CHARACTER_TOKEN]:ee,[r.WHITESPACE_CHARACTER_TOKEN]:fe,[r.COMMENT_TOKEN]:ne,[r.DOCTYPE_TOKEN]:ee,[r.START_TAG_TOKEN]:function(e,t){const n=t.tagName;n===T.CAPTION||n===T.COL||n===T.COLGROUP||n===T.TBODY||n===T.TD||n===T.TFOOT||n===T.TH||n===T.THEAD||n===T.TR?(e.openElements.hasInTableScope(T.TD)||e.openElements.hasInTableScope(T.TH))&&(e._closeTableCell(),e._processToken(t)):Se(e,t)},[r.END_TAG_TOKEN]:function(e,t){const n=t.tagName;n===T.TD||n===T.TH?e.openElements.hasInTableScope(n)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(n),e.activeFormattingElements.clearToLastMarker(),e.insertionMode=P):n===T.TABLE||n===T.TBODY||n===T.TFOOT||n===T.THEAD||n===T.TR?e.openElements.hasInTableScope(n)&&(e._closeTableCell(),e._processToken(t)):n!==T.BODY&&n!==T.CAPTION&&n!==T.COL&&n!==T.COLGROUP&&n!==T.HTML&&ke(e,t)},[r.EOF_TOKEN]:Le},[w]:{[r.CHARACTER_TOKEN]:ie,[r.NULL_CHARACTER_TOKEN]:ee,[r.WHITESPACE_CHARACTER_TOKEN]:ie,[r.COMMENT_TOKEN]:ne,[r.DOCTYPE_TOKEN]:ee,[r.START_TAG_TOKEN]:Fe,[r.END_TAG_TOKEN]:Ue,[r.EOF_TOKEN]:Le},[H]:{[r.CHARACTER_TOKEN]:ie,[r.NULL_CHARACTER_TOKEN]:ee,[r.WHITESPACE_CHARACTER_TOKEN]:ie,[r.COMMENT_TOKEN]:ne,[r.DOCTYPE_TOKEN]:ee,[r.START_TAG_TOKEN]:function(e,t){const n=t.tagName;n===T.CAPTION||n===T.TABLE||n===T.TBODY||n===T.TFOOT||n===T.THEAD||n===T.TR||n===T.TD||n===T.TH?(e.openElements.popUntilTagNamePopped(T.SELECT),e._resetInsertionMode(),e._processToken(t)):Fe(e,t)},[r.END_TAG_TOKEN]:function(e,t){const n=t.tagName;n===T.CAPTION||n===T.TABLE||n===T.TBODY||n===T.TFOOT||n===T.THEAD||n===T.TR||n===T.TD||n===T.TH?e.openElements.hasInTableScope(n)&&(e.openElements.popUntilTagNamePopped(T.SELECT),e._resetInsertionMode(),e._processToken(t)):Ue(e,t)},[r.EOF_TOKEN]:Le},[F]:{[r.CHARACTER_TOKEN]:me,[r.NULL_CHARACTER_TOKEN]:ee,[r.WHITESPACE_CHARACTER_TOKEN]:fe,[r.COMMENT_TOKEN]:ne,[r.DOCTYPE_TOKEN]:ee,[r.START_TAG_TOKEN]:function(e,t){const n=t.tagName;if(n===T.BASE||n===T.BASEFONT||n===T.BGSOUND||n===T.LINK||n===T.META||n===T.NOFRAMES||n===T.SCRIPT||n===T.STYLE||n===T.TEMPLATE||n===T.TITLE)le(e,t);else{const r=Y[n]||y;e._popTmplInsertionMode(),e._pushTmplInsertionMode(r),e.insertionMode=r,e._processToken(t)}},[r.END_TAG_TOKEN]:function(e,t){t.tagName===T.TEMPLATE&&ue(e,t)},[r.EOF_TOKEN]:Be},[U]:{[r.CHARACTER_TOKEN]:Ge,[r.NULL_CHARACTER_TOKEN]:Ge,[r.WHITESPACE_CHARACTER_TOKEN]:fe,[r.COMMENT_TOKEN]:function(e,t){e._appendCommentNode(t,e.openElements.items[0])},[r.DOCTYPE_TOKEN]:ee,[r.START_TAG_TOKEN]:function(e,t){t.tagName===T.HTML?Se(e,t):Ge(e,t)},[r.END_TAG_TOKEN]:function(e,t){t.tagName===T.HTML?e.fragmentContext||(e.insertionMode=j):Ge(e,t)},[r.EOF_TOKEN]:se},[B]:{[r.CHARACTER_TOKEN]:ee,[r.NULL_CHARACTER_TOKEN]:ee,[r.WHITESPACE_CHARACTER_TOKEN]:ie,[r.COMMENT_TOKEN]:ne,[r.DOCTYPE_TOKEN]:ee,[r.START_TAG_TOKEN]:function(e,t){const n=t.tagName;n===T.HTML?Se(e,t):n===T.FRAMESET?e._insertElement(t,E.HTML):n===T.FRAME?(e._appendElement(t,E.HTML),t.ackSelfClosing=!0):n===T.NOFRAMES&&le(e,t)},[r.END_TAG_TOKEN]:function(e,t){t.tagName!==T.FRAMESET||e.openElements.isRootHtmlElementCurrent()||(e.openElements.pop(),e.fragmentContext||e.openElements.currentTagName===T.FRAMESET||(e.insertionMode=G))},[r.EOF_TOKEN]:se},[G]:{[r.CHARACTER_TOKEN]:ee,[r.NULL_CHARACTER_TOKEN]:ee,[r.WHITESPACE_CHARACTER_TOKEN]:ie,[r.COMMENT_TOKEN]:ne,[r.DOCTYPE_TOKEN]:ee,[r.START_TAG_TOKEN]:function(e,t){const n=t.tagName;n===T.HTML?Se(e,t):n===T.NOFRAMES&&le(e,t)},[r.END_TAG_TOKEN]:function(e,t){t.tagName===T.HTML&&(e.insertionMode=K)},[r.EOF_TOKEN]:se},[j]:{[r.CHARACTER_TOKEN]:je,[r.NULL_CHARACTER_TOKEN]:je,[r.WHITESPACE_CHARACTER_TOKEN]:fe,[r.COMMENT_TOKEN]:re,[r.DOCTYPE_TOKEN]:ee,[r.START_TAG_TOKEN]:function(e,t){t.tagName===T.HTML?Se(e,t):je(e,t)},[r.END_TAG_TOKEN]:je,[r.EOF_TOKEN]:se},[K]:{[r.CHARACTER_TOKEN]:ee,[r.NULL_CHARACTER_TOKEN]:ee,[r.WHITESPACE_CHARACTER_TOKEN]:fe,[r.COMMENT_TOKEN]:re,[r.DOCTYPE_TOKEN]:ee,[r.START_TAG_TOKEN]:function(e,t){const n=t.tagName;n===T.HTML?Se(e,t):n===T.NOFRAMES&&le(e,t)},[r.END_TAG_TOKEN]:ee,[r.EOF_TOKEN]:se}};function W(e,t){let n=e.activeFormattingElements.getElementEntryInScopeWithTagName(t.tagName);return n?e.openElements.contains(n.element)?e.openElements.hasInScope(t.tagName)||(n=null):(e.activeFormattingElements.removeEntry(n),n=null):Re(e,t),n}function Q(e,t){let n=null;for(let r=e.openElements.stackTop;r>=0;r--){const i=e.openElements.items[r];if(i===t.element)break;e._isSpecialElement(i)&&(n=i)}return n||(e.openElements.popUntilElementPopped(t.element),e.activeFormattingElements.removeEntry(t)),n}function z(e,t,n){let r=t,i=e.openElements.getCommonAncestor(t);for(let s=0,o=i;o!==n;s++,o=i){i=e.openElements.getCommonAncestor(o);const n=e.activeFormattingElements.getElementEntry(o),a=n&&s>=3;!n||a?(a&&e.activeFormattingElements.removeEntry(n),e.openElements.remove(o)):(o=X(e,n),r===t&&(e.activeFormattingElements.bookmark=n),e.treeAdapter.detachNode(r),e.treeAdapter.appendChild(o,r),r=o)}return r}function X(e,t){const n=e.treeAdapter.getNamespaceURI(t.element),r=e.treeAdapter.createElement(t.token.tagName,n,t.token.attrs);return e.openElements.replace(t.element,r),t.element=r,r}function $(e,t,n){if(e._isElementCausesFosterParenting(t))e._fosterParentElement(n);else{const r=e.treeAdapter.getTagName(t),i=e.treeAdapter.getNamespaceURI(t);r===T.TEMPLATE&&i===E.HTML&&(t=e.treeAdapter.getTemplateContent(t)),e.treeAdapter.appendChild(t,n)}}function J(e,t,n){const r=e.treeAdapter.getNamespaceURI(n.element),i=n.token,s=e.treeAdapter.createElement(i.tagName,r,i.attrs);e._adoptNodes(t,s),e.treeAdapter.appendChild(t,s),e.activeFormattingElements.insertElementAfterBookmark(s,n.token),e.activeFormattingElements.removeEntry(n),e.openElements.remove(n.element),e.openElements.insertAfter(t,s)}function Z(e,t){let n;for(let r=0;r<8&&(n=W(e,t),n);r++){const t=Q(e,n);if(!t)break;e.activeFormattingElements.bookmark=n;const r=z(e,t,n.element),i=e.openElements.getCommonAncestor(n.element);e.treeAdapter.detachNode(r),$(e,i,r),J(e,t,n)}}function ee(){}function te(e){e._err(d.misplacedDoctype)}function ne(e,t){e._appendCommentNode(t,e.openElements.currentTmplContent||e.openElements.current)}function re(e,t){e._appendCommentNode(t,e.document)}function ie(e,t){e._insertCharacters(t)}function se(e){e.stopped=!0}function oe(e,t){e._err(d.missingDoctype,{beforeToken:!0}),e.treeAdapter.setDocumentMode(e.document,m.DOCUMENT_MODE.QUIRKS),e.insertionMode=N,e._processToken(t)}function ae(e,t){e._insertFakeRootElement(),e.insertionMode=v,e._processToken(t)}function ce(e,t){e._insertFakeElement(T.HEAD),e.headElement=e.openElements.current,e.insertionMode=O,e._processToken(t)}function le(e,t){const n=t.tagName;n===T.HTML?Se(e,t):n===T.BASE||n===T.BASEFONT||n===T.BGSOUND||n===T.LINK||n===T.META?(e._appendElement(t,E.HTML),t.ackSelfClosing=!0):n===T.TITLE?e._switchToTextParsing(t,r.MODE.RCDATA):n===T.NOSCRIPT?e.options.scriptingEnabled?e._switchToTextParsing(t,r.MODE.RAWTEXT):(e._insertElement(t,E.HTML),e.insertionMode=b):n===T.NOFRAMES||n===T.STYLE?e._switchToTextParsing(t,r.MODE.RAWTEXT):n===T.SCRIPT?e._switchToTextParsing(t,r.MODE.SCRIPT_DATA):n===T.TEMPLATE?(e._insertTemplate(t,E.HTML),e.activeFormattingElements.insertMarker(),e.framesetOk=!1,e.insertionMode=F,e._pushTmplInsertionMode(F)):n===T.HEAD?e._err(d.misplacedStartTagForHeadElement):he(e,t)}function ue(e,t){const n=t.tagName;n===T.HEAD?(e.openElements.pop(),e.insertionMode=S):n===T.BODY||n===T.BR||n===T.HTML?he(e,t):n===T.TEMPLATE&&e.openElements.tmplCount>0?(e.openElements.generateImpliedEndTagsThoroughly(),e.openElements.currentTagName!==T.TEMPLATE&&e._err(d.closingOfElementWithOpenChildElements),e.openElements.popUntilTagNamePopped(T.TEMPLATE),e.activeFormattingElements.clearToLastMarker(),e._popTmplInsertionMode(),e._resetInsertionMode()):e._err(d.endTagWithoutMatchingOpenElement)}function he(e,t){e.openElements.pop(),e.insertionMode=S,e._processToken(t)}function pe(e,t){const n=t.type===r.EOF_TOKEN?d.openElementsLeftAfterEof:d.disallowedContentInNoscriptInHead;e._err(n),e.openElements.pop(),e.insertionMode=O,e._processToken(t)}function de(e,t){e._insertFakeElement(T.BODY),e.insertionMode=y,e._processToken(t)}function fe(e,t){e._reconstructActiveFormattingElements(),e._insertCharacters(t)}function me(e,t){e._reconstructActiveFormattingElements(),e._insertCharacters(t),e.framesetOk=!1}function Te(e,t){e.openElements.hasInButtonScope(T.P)&&e._closePElement(),e._insertElement(t,E.HTML)}function Ee(e,t){e.openElements.hasInButtonScope(T.P)&&e._closePElement(),e._insertElement(t,E.HTML),e.skipNextNewLine=!0,e.framesetOk=!1}function _e(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,E.HTML),e.activeFormattingElements.pushElement(e.openElements.current,t)}function ge(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,E.HTML),e.activeFormattingElements.insertMarker(),e.framesetOk=!1}function Ae(e,t){e._reconstructActiveFormattingElements(),e._appendElement(t,E.HTML),e.framesetOk=!1,t.ackSelfClosing=!0}function Ce(e,t){e._appendElement(t,E.HTML),t.ackSelfClosing=!0}function Ne(e,t){e._switchToTextParsing(t,r.MODE.RAWTEXT)}function ve(e,t){e.openElements.currentTagName===T.OPTION&&e.openElements.pop(),e._reconstructActiveFormattingElements(),e._insertElement(t,E.HTML)}function Oe(e,t){e.openElements.hasInScope(T.RUBY)&&e.openElements.generateImpliedEndTags(),e._insertElement(t,E.HTML)}function be(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,E.HTML)}function Se(e,t){const n=t.tagName;switch(n.length){case 1:n===T.I||n===T.S||n===T.B||n===T.U?_e(e,t):n===T.P?Te(e,t):n===T.A?function(e,t){const n=e.activeFormattingElements.getElementEntryInScopeWithTagName(T.A);n&&(Z(e,t),e.openElements.remove(n.element),e.activeFormattingElements.removeEntry(n)),e._reconstructActiveFormattingElements(),e._insertElement(t,E.HTML),e.activeFormattingElements.pushElement(e.openElements.current,t)}(e,t):be(e,t);break;case 2:n===T.DL||n===T.OL||n===T.UL?Te(e,t):n===T.H1||n===T.H2||n===T.H3||n===T.H4||n===T.H5||n===T.H6?function(e,t){e.openElements.hasInButtonScope(T.P)&&e._closePElement();const n=e.openElements.currentTagName;n!==T.H1&&n!==T.H2&&n!==T.H3&&n!==T.H4&&n!==T.H5&&n!==T.H6||e.openElements.pop(),e._insertElement(t,E.HTML)}(e,t):n===T.LI||n===T.DD||n===T.DT?function(e,t){e.framesetOk=!1;const n=t.tagName;for(let t=e.openElements.stackTop;t>=0;t--){const r=e.openElements.items[t],i=e.treeAdapter.getTagName(r);let s=null;if(n===T.LI&&i===T.LI?s=T.LI:n!==T.DD&&n!==T.DT||i!==T.DD&&i!==T.DT||(s=i),s){e.openElements.generateImpliedEndTagsWithExclusion(s),e.openElements.popUntilTagNamePopped(s);break}if(i!==T.ADDRESS&&i!==T.DIV&&i!==T.P&&e._isSpecialElement(r))break}e.openElements.hasInButtonScope(T.P)&&e._closePElement(),e._insertElement(t,E.HTML)}(e,t):n===T.EM||n===T.TT?_e(e,t):n===T.BR?Ae(e,t):n===T.HR?function(e,t){e.openElements.hasInButtonScope(T.P)&&e._closePElement(),e._appendElement(t,E.HTML),e.framesetOk=!1,t.ackSelfClosing=!0}(e,t):n===T.RB?Oe(e,t):n===T.RT||n===T.RP?function(e,t){e.openElements.hasInScope(T.RUBY)&&e.openElements.generateImpliedEndTagsWithExclusion(T.RTC),e._insertElement(t,E.HTML)}(e,t):n!==T.TH&&n!==T.TD&&n!==T.TR&&be(e,t);break;case 3:n===T.DIV||n===T.DIR||n===T.NAV?Te(e,t):n===T.PRE?Ee(e,t):n===T.BIG?_e(e,t):n===T.IMG||n===T.WBR?Ae(e,t):n===T.XMP?function(e,t){e.openElements.hasInButtonScope(T.P)&&e._closePElement(),e._reconstructActiveFormattingElements(),e.framesetOk=!1,e._switchToTextParsing(t,r.MODE.RAWTEXT)}(e,t):n===T.SVG?function(e,t){e._reconstructActiveFormattingElements(),p.adjustTokenSVGAttrs(t),p.adjustTokenXMLAttrs(t),t.selfClosing?e._appendElement(t,E.SVG):e._insertElement(t,E.SVG),t.ackSelfClosing=!0}(e,t):n===T.RTC?Oe(e,t):n!==T.COL&&be(e,t);break;case 4:n===T.HTML?function(e,t){0===e.openElements.tmplCount&&e.treeAdapter.adoptAttributes(e.openElements.items[0],t.attrs)}(e,t):n===T.BASE||n===T.LINK||n===T.META?le(e,t):n===T.BODY?function(e,t){const n=e.openElements.tryPeekProperlyNestedBodyElement();n&&0===e.openElements.tmplCount&&(e.framesetOk=!1,e.treeAdapter.adoptAttributes(n,t.attrs))}(e,t):n===T.MAIN||n===T.MENU?Te(e,t):n===T.FORM?function(e,t){const n=e.openElements.tmplCount>0;e.formElement&&!n||(e.openElements.hasInButtonScope(T.P)&&e._closePElement(),e._insertElement(t,E.HTML),n||(e.formElement=e.openElements.current))}(e,t):n===T.CODE||n===T.FONT?_e(e,t):n===T.NOBR?function(e,t){e._reconstructActiveFormattingElements(),e.openElements.hasInScope(T.NOBR)&&(Z(e,t),e._reconstructActiveFormattingElements()),e._insertElement(t,E.HTML),e.activeFormattingElements.pushElement(e.openElements.current,t)}(e,t):n===T.AREA?Ae(e,t):n===T.MATH?function(e,t){e._reconstructActiveFormattingElements(),p.adjustTokenMathMLAttrs(t),p.adjustTokenXMLAttrs(t),t.selfClosing?e._appendElement(t,E.MATHML):e._insertElement(t,E.MATHML),t.ackSelfClosing=!0}(e,t):n===T.MENU?function(e,t){e.openElements.hasInButtonScope(T.P)&&e._closePElement(),e._insertElement(t,E.HTML)}(e,t):n!==T.HEAD&&be(e,t);break;case 5:n===T.STYLE||n===T.TITLE?le(e,t):n===T.ASIDE?Te(e,t):n===T.SMALL?_e(e,t):n===T.TABLE?function(e,t){e.treeAdapter.getDocumentMode(e.document)!==m.DOCUMENT_MODE.QUIRKS&&e.openElements.hasInButtonScope(T.P)&&e._closePElement(),e._insertElement(t,E.HTML),e.framesetOk=!1,e.insertionMode=R}(e,t):n===T.EMBED?Ae(e,t):n===T.INPUT?function(e,t){e._reconstructActiveFormattingElements(),e._appendElement(t,E.HTML);const n=r.getTokenAttr(t,_.TYPE);n&&n.toLowerCase()===A||(e.framesetOk=!1),t.ackSelfClosing=!0}(e,t):n===T.PARAM||n===T.TRACK?Ce(e,t):n===T.IMAGE?function(e,t){t.tagName=T.IMG,Ae(e,t)}(e,t):n!==T.FRAME&&n!==T.TBODY&&n!==T.TFOOT&&n!==T.THEAD&&be(e,t);break;case 6:n===T.SCRIPT?le(e,t):n===T.CENTER||n===T.FIGURE||n===T.FOOTER||n===T.HEADER||n===T.HGROUP||n===T.DIALOG?Te(e,t):n===T.BUTTON?function(e,t){e.openElements.hasInScope(T.BUTTON)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(T.BUTTON)),e._reconstructActiveFormattingElements(),e._insertElement(t,E.HTML),e.framesetOk=!1}(e,t):n===T.STRIKE||n===T.STRONG?_e(e,t):n===T.APPLET||n===T.OBJECT?ge(e,t):n===T.KEYGEN?Ae(e,t):n===T.SOURCE?Ce(e,t):n===T.IFRAME?function(e,t){e.framesetOk=!1,e._switchToTextParsing(t,r.MODE.RAWTEXT)}(e,t):n===T.SELECT?function(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,E.HTML),e.framesetOk=!1,e.insertionMode===R||e.insertionMode===L||e.insertionMode===x||e.insertionMode===P||e.insertionMode===D?e.insertionMode=H:e.insertionMode=w}(e,t):n===T.OPTION?ve(e,t):be(e,t);break;case 7:n===T.BGSOUND?le(e,t):n===T.DETAILS||n===T.ADDRESS||n===T.ARTICLE||n===T.SECTION||n===T.SUMMARY?Te(e,t):n===T.LISTING?Ee(e,t):n===T.MARQUEE?ge(e,t):n===T.NOEMBED?Ne(e,t):n!==T.CAPTION&&be(e,t);break;case 8:n===T.BASEFONT?le(e,t):n===T.FRAMESET?function(e,t){const n=e.openElements.tryPeekProperlyNestedBodyElement();e.framesetOk&&n&&(e.treeAdapter.detachNode(n),e.openElements.popAllUpToHtmlElement(),e._insertElement(t,E.HTML),e.insertionMode=B)}(e,t):n===T.FIELDSET?Te(e,t):n===T.TEXTAREA?function(e,t){e._insertElement(t,E.HTML),e.skipNextNewLine=!0,e.tokenizer.state=r.MODE.RCDATA,e.originalInsertionMode=e.insertionMode,e.framesetOk=!1,e.insertionMode=I}(e,t):n===T.TEMPLATE?le(e,t):n===T.NOSCRIPT?e.options.scriptingEnabled?Ne(e,t):be(e,t):n===T.OPTGROUP?ve(e,t):n!==T.COLGROUP&&be(e,t);break;case 9:n===T.PLAINTEXT?function(e,t){e.openElements.hasInButtonScope(T.P)&&e._closePElement(),e._insertElement(t,E.HTML),e.tokenizer.state=r.MODE.PLAINTEXT}(e,t):be(e,t);break;case 10:n===T.BLOCKQUOTE||n===T.FIGCAPTION?Te(e,t):be(e,t);break;default:be(e,t)}}function ye(e,t){const n=t.tagName;e.openElements.hasInScope(n)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(n))}function Ie(e,t){const n=t.tagName;e.openElements.hasInScope(n)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(n),e.activeFormattingElements.clearToLastMarker())}function Re(e,t){const n=t.tagName;for(let t=e.openElements.stackTop;t>0;t--){const r=e.openElements.items[t];if(e.treeAdapter.getTagName(r)===n){e.openElements.generateImpliedEndTagsWithExclusion(n),e.openElements.popUntilElementPopped(r);break}if(e._isSpecialElement(r))break}}function ke(e,t){const n=t.tagName;switch(n.length){case 1:n===T.A||n===T.B||n===T.I||n===T.S||n===T.U?Z(e,t):n===T.P?function(e){e.openElements.hasInButtonScope(T.P)||e._insertFakeElement(T.P),e._closePElement()}(e):Re(e,t);break;case 2:n===T.DL||n===T.UL||n===T.OL?ye(e,t):n===T.LI?function(e){e.openElements.hasInListItemScope(T.LI)&&(e.openElements.generateImpliedEndTagsWithExclusion(T.LI),e.openElements.popUntilTagNamePopped(T.LI))}(e):n===T.DD||n===T.DT?function(e,t){const n=t.tagName;e.openElements.hasInScope(n)&&(e.openElements.generateImpliedEndTagsWithExclusion(n),e.openElements.popUntilTagNamePopped(n))}(e,t):n===T.H1||n===T.H2||n===T.H3||n===T.H4||n===T.H5||n===T.H6?function(e){e.openElements.hasNumberedHeaderInScope()&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilNumberedHeaderPopped())}(e):n===T.BR?function(e){e._reconstructActiveFormattingElements(),e._insertFakeElement(T.BR),e.openElements.pop(),e.framesetOk=!1}(e):n===T.EM||n===T.TT?Z(e,t):Re(e,t);break;case 3:n===T.BIG?Z(e,t):n===T.DIR||n===T.DIV||n===T.NAV||n===T.PRE?ye(e,t):Re(e,t);break;case 4:n===T.BODY?function(e){e.openElements.hasInScope(T.BODY)&&(e.insertionMode=U)}(e):n===T.HTML?function(e,t){e.openElements.hasInScope(T.BODY)&&(e.insertionMode=U,e._processToken(t))}(e,t):n===T.FORM?function(e){const t=e.openElements.tmplCount>0,n=e.formElement;t||(e.formElement=null),(n||t)&&e.openElements.hasInScope(T.FORM)&&(e.openElements.generateImpliedEndTags(),t?e.openElements.popUntilTagNamePopped(T.FORM):e.openElements.remove(n))}(e):n===T.CODE||n===T.FONT||n===T.NOBR?Z(e,t):n===T.MAIN||n===T.MENU?ye(e,t):Re(e,t);break;case 5:n===T.ASIDE?ye(e,t):n===T.SMALL?Z(e,t):Re(e,t);break;case 6:n===T.CENTER||n===T.FIGURE||n===T.FOOTER||n===T.HEADER||n===T.HGROUP||n===T.DIALOG?ye(e,t):n===T.APPLET||n===T.OBJECT?Ie(e,t):n===T.STRIKE||n===T.STRONG?Z(e,t):Re(e,t);break;case 7:n===T.ADDRESS||n===T.ARTICLE||n===T.DETAILS||n===T.SECTION||n===T.SUMMARY||n===T.LISTING?ye(e,t):n===T.MARQUEE?Ie(e,t):Re(e,t);break;case 8:n===T.FIELDSET?ye(e,t):n===T.TEMPLATE?ue(e,t):Re(e,t);break;case 10:n===T.BLOCKQUOTE||n===T.FIGCAPTION?ye(e,t):Re(e,t);break;default:Re(e,t)}}function Le(e,t){e.tmplInsertionModeStackTop>-1?Be(e,t):e.stopped=!0}function Me(e,t){const n=e.openElements.currentTagName;n===T.TABLE||n===T.TBODY||n===T.TFOOT||n===T.THEAD||n===T.TR?(e.pendingCharacterTokens=[],e.hasNonWhitespacePendingCharacterToken=!1,e.originalInsertionMode=e.insertionMode,e.insertionMode=k,e._processToken(t)):De(e,t)}function xe(e,t){const n=t.tagName;switch(n.length){case 2:n===T.TD||n===T.TH||n===T.TR?function(e,t){e.openElements.clearBackToTableContext(),e._insertFakeElement(T.TBODY),e.insertionMode=x,e._processToken(t)}(e,t):De(e,t);break;case 3:n===T.COL?function(e,t){e.openElements.clearBackToTableContext(),e._insertFakeElement(T.COLGROUP),e.insertionMode=M,e._processToken(t)}(e,t):De(e,t);break;case 4:n===T.FORM?function(e,t){e.formElement||0!==e.openElements.tmplCount||(e._insertElement(t,E.HTML),e.formElement=e.openElements.current,e.openElements.pop())}(e,t):De(e,t);break;case 5:n===T.TABLE?function(e,t){e.openElements.hasInTableScope(T.TABLE)&&(e.openElements.popUntilTagNamePopped(T.TABLE),e._resetInsertionMode(),e._processToken(t))}(e,t):n===T.STYLE?le(e,t):n===T.TBODY||n===T.TFOOT||n===T.THEAD?function(e,t){e.openElements.clearBackToTableContext(),e._insertElement(t,E.HTML),e.insertionMode=x}(e,t):n===T.INPUT?function(e,t){const n=r.getTokenAttr(t,_.TYPE);n&&n.toLowerCase()===A?e._appendElement(t,E.HTML):De(e,t),t.ackSelfClosing=!0}(e,t):De(e,t);break;case 6:n===T.SCRIPT?le(e,t):De(e,t);break;case 7:n===T.CAPTION?function(e,t){e.openElements.clearBackToTableContext(),e.activeFormattingElements.insertMarker(),e._insertElement(t,E.HTML),e.insertionMode=L}(e,t):De(e,t);break;case 8:n===T.COLGROUP?function(e,t){e.openElements.clearBackToTableContext(),e._insertElement(t,E.HTML),e.insertionMode=M}(e,t):n===T.TEMPLATE?le(e,t):De(e,t);break;default:De(e,t)}}function Pe(e,t){const n=t.tagName;n===T.TABLE?e.openElements.hasInTableScope(T.TABLE)&&(e.openElements.popUntilTagNamePopped(T.TABLE),e._resetInsertionMode()):n===T.TEMPLATE?ue(e,t):n!==T.BODY&&n!==T.CAPTION&&n!==T.COL&&n!==T.COLGROUP&&n!==T.HTML&&n!==T.TBODY&&n!==T.TD&&n!==T.TFOOT&&n!==T.TH&&n!==T.THEAD&&n!==T.TR&&De(e,t)}function De(e,t){const n=e.fosterParentingEnabled;e.fosterParentingEnabled=!0,e._processTokenInBodyMode(t),e.fosterParentingEnabled=n}function we(e,t){let n=0;if(e.hasNonWhitespacePendingCharacterToken)for(;n<e.pendingCharacterTokens.length;n++)De(e,e.pendingCharacterTokens[n]);else for(;n<e.pendingCharacterTokens.length;n++)e._insertCharacters(e.pendingCharacterTokens[n]);e.insertionMode=e.originalInsertionMode,e._processToken(t)}function He(e,t){e.openElements.currentTagName===T.COLGROUP&&(e.openElements.pop(),e.insertionMode=R,e._processToken(t))}function Fe(e,t){const n=t.tagName;n===T.HTML?Se(e,t):n===T.OPTION?(e.openElements.currentTagName===T.OPTION&&e.openElements.pop(),e._insertElement(t,E.HTML)):n===T.OPTGROUP?(e.openElements.currentTagName===T.OPTION&&e.openElements.pop(),e.openElements.currentTagName===T.OPTGROUP&&e.openElements.pop(),e._insertElement(t,E.HTML)):n===T.INPUT||n===T.KEYGEN||n===T.TEXTAREA||n===T.SELECT?e.openElements.hasInSelectScope(T.SELECT)&&(e.openElements.popUntilTagNamePopped(T.SELECT),e._resetInsertionMode(),n!==T.SELECT&&e._processToken(t)):n!==T.SCRIPT&&n!==T.TEMPLATE||le(e,t)}function Ue(e,t){const n=t.tagName;if(n===T.OPTGROUP){const t=e.openElements.items[e.openElements.stackTop-1],n=t&&e.treeAdapter.getTagName(t);e.openElements.currentTagName===T.OPTION&&n===T.OPTGROUP&&e.openElements.pop(),e.openElements.currentTagName===T.OPTGROUP&&e.openElements.pop()}else n===T.OPTION?e.openElements.currentTagName===T.OPTION&&e.openElements.pop():n===T.SELECT&&e.openElements.hasInSelectScope(T.SELECT)?(e.openElements.popUntilTagNamePopped(T.SELECT),e._resetInsertionMode()):n===T.TEMPLATE&&ue(e,t)}function Be(e,t){e.openElements.tmplCount>0?(e.openElements.popUntilTagNamePopped(T.TEMPLATE),e.activeFormattingElements.clearToLastMarker(),e._popTmplInsertionMode(),e._resetInsertionMode(),e._processToken(t)):e.stopped=!0}function Ge(e,t){e.insertionMode=y,e._processToken(t)}function je(e,t){e.insertionMode=y,e._processToken(t)}e.exports=class{constructor(e){this.options=u(g,e),this.treeAdapter=this.options.treeAdapter,this.pendingScript=null,this.options.sourceCodeLocationInfo&&c.install(this,o),this.options.onParseError&&c.install(this,a,{onParseError:this.options.onParseError})}parse(e){const t=this.treeAdapter.createDocument();return this._bootstrap(t,null),this.tokenizer.write(e,!0),this._runParsingLoop(null),t}parseFragment(e,t){t||(t=this.treeAdapter.createElement(T.TEMPLATE,E.HTML,[]));const n=this.treeAdapter.createElement("documentmock",E.HTML,[]);this._bootstrap(n,t),this.treeAdapter.getTagName(t)===T.TEMPLATE&&this._pushTmplInsertionMode(F),this._initTokenizerForFragmentParsing(),this._insertFakeRootElement(),this._resetInsertionMode(),this._findFormInFragmentContext(),this.tokenizer.write(e,!0),this._runParsingLoop(null);const r=this.treeAdapter.getFirstChild(n),i=this.treeAdapter.createDocumentFragment();return this._adoptNodes(r,i),i}_bootstrap(e,t){this.tokenizer=new r(this.options),this.stopped=!1,this.insertionMode=C,this.originalInsertionMode="",this.document=e,this.fragmentContext=t,this.headElement=null,this.formElement=null,this.openElements=new i(this.document,this.treeAdapter),this.activeFormattingElements=new s(this.treeAdapter),this.tmplInsertionModeStack=[],this.tmplInsertionModeStackTop=-1,this.currentTmplInsertionMode=null,this.pendingCharacterTokens=[],this.hasNonWhitespacePendingCharacterToken=!1,this.framesetOk=!0,this.skipNextNewLine=!1,this.fosterParentingEnabled=!1}_err(){}_runParsingLoop(e){for(;!this.stopped;){this._setupTokenizerCDATAMode();const t=this.tokenizer.getNextToken();if(t.type===r.HIBERNATION_TOKEN)break;if(this.skipNextNewLine&&(this.skipNextNewLine=!1,t.type===r.WHITESPACE_CHARACTER_TOKEN&&"\n"===t.chars[0])){if(1===t.chars.length)continue;t.chars=t.chars.substr(1)}if(this._processInputToken(t),e&&this.pendingScript)break}}runParsingLoopForCurrentChunk(e,t){if(this._runParsingLoop(t),t&&this.pendingScript){const e=this.pendingScript;return this.pendingScript=null,void t(e)}e&&e()}_setupTokenizerCDATAMode(){const e=this._getAdjustedCurrentElement();this.tokenizer.allowCDATA=e&&e!==this.document&&this.treeAdapter.getNamespaceURI(e)!==E.HTML&&!this._isIntegrationPoint(e)}_switchToTextParsing(e,t){this._insertElement(e,E.HTML),this.tokenizer.state=t,this.originalInsertionMode=this.insertionMode,this.insertionMode=I}switchToPlaintextParsing(){this.insertionMode=I,this.originalInsertionMode=y,this.tokenizer.state=r.MODE.PLAINTEXT}_getAdjustedCurrentElement(){return 0===this.openElements.stackTop&&this.fragmentContext?this.fragmentContext:this.openElements.current}_findFormInFragmentContext(){let e=this.fragmentContext;do{if(this.treeAdapter.getTagName(e)===T.FORM){this.formElement=e;break}e=this.treeAdapter.getParentNode(e)}while(e)}_initTokenizerForFragmentParsing(){if(this.treeAdapter.getNamespaceURI(this.fragmentContext)===E.HTML){const e=this.treeAdapter.getTagName(this.fragmentContext);e===T.TITLE||e===T.TEXTAREA?this.tokenizer.state=r.MODE.RCDATA:e===T.STYLE||e===T.XMP||e===T.IFRAME||e===T.NOEMBED||e===T.NOFRAMES||e===T.NOSCRIPT?this.tokenizer.state=r.MODE.RAWTEXT:e===T.SCRIPT?this.tokenizer.state=r.MODE.SCRIPT_DATA:e===T.PLAINTEXT&&(this.tokenizer.state=r.MODE.PLAINTEXT)}}_setDocumentType(e){const t=e.name||"",n=e.publicId||"",r=e.systemId||"";this.treeAdapter.setDocumentType(this.document,t,n,r)}_attachElementToTree(e){if(this._shouldFosterParentOnInsertion())this._fosterParentElement(e);else{const t=this.openElements.currentTmplContent||this.openElements.current;this.treeAdapter.appendChild(t,e)}}_appendElement(e,t){const n=this.treeAdapter.createElement(e.tagName,t,e.attrs);this._attachElementToTree(n)}_insertElement(e,t){const n=this.treeAdapter.createElement(e.tagName,t,e.attrs);this._attachElementToTree(n),this.openElements.push(n)}_insertFakeElement(e){const t=this.treeAdapter.createElement(e,E.HTML,[]);this._attachElementToTree(t),this.openElements.push(t)}_insertTemplate(e){const t=this.treeAdapter.createElement(e.tagName,E.HTML,e.attrs),n=this.treeAdapter.createDocumentFragment();this.treeAdapter.setTemplateContent(t,n),this._attachElementToTree(t),this.openElements.push(t)}_insertFakeRootElement(){const e=this.treeAdapter.createElement(T.HTML,E.HTML,[]);this.treeAdapter.appendChild(this.openElements.current,e),this.openElements.push(e)}_appendCommentNode(e,t){const n=this.treeAdapter.createCommentNode(e.data);this.treeAdapter.appendChild(t,n)}_insertCharacters(e){if(this._shouldFosterParentOnInsertion())this._fosterParentText(e.chars);else{const t=this.openElements.currentTmplContent||this.openElements.current;this.treeAdapter.insertText(t,e.chars)}}_adoptNodes(e,t){for(let n=this.treeAdapter.getFirstChild(e);n;n=this.treeAdapter.getFirstChild(e))this.treeAdapter.detachNode(n),this.treeAdapter.appendChild(t,n)}_shouldProcessTokenInForeignContent(e){const t=this._getAdjustedCurrentElement();if(!t||t===this.document)return!1;const n=this.treeAdapter.getNamespaceURI(t);if(n===E.HTML)return!1;if(this.treeAdapter.getTagName(t)===T.ANNOTATION_XML&&n===E.MATHML&&e.type===r.START_TAG_TOKEN&&e.tagName===T.SVG)return!1;const i=e.type===r.CHARACTER_TOKEN||e.type===r.NULL_CHARACTER_TOKEN||e.type===r.WHITESPACE_CHARACTER_TOKEN;return!((e.type===r.START_TAG_TOKEN&&e.tagName!==T.MGLYPH&&e.tagName!==T.MALIGNMARK||i)&&this._isIntegrationPoint(t,E.MATHML)||(e.type===r.START_TAG_TOKEN||i)&&this._isIntegrationPoint(t,E.HTML)||e.type===r.EOF_TOKEN)}_processToken(e){V[this.insertionMode][e.type](this,e)}_processTokenInBodyMode(e){V.IN_BODY_MODE[e.type](this,e)}_processTokenInForeignContent(e){e.type===r.CHARACTER_TOKEN?function(e,t){e._insertCharacters(t),e.framesetOk=!1}(this,e):e.type===r.NULL_CHARACTER_TOKEN?function(e,t){t.chars=f.REPLACEMENT_CHARACTER,e._insertCharacters(t)}(this,e):e.type===r.WHITESPACE_CHARACTER_TOKEN?ie(this,e):e.type===r.COMMENT_TOKEN?ne(this,e):e.type===r.START_TAG_TOKEN?function(e,t){if(p.causesExit(t)&&!e.fragmentContext){for(;e.treeAdapter.getNamespaceURI(e.openElements.current)!==E.HTML&&!e._isIntegrationPoint(e.openElements.current);)e.openElements.pop();e._processToken(t)}else{const n=e._getAdjustedCurrentElement(),r=e.treeAdapter.getNamespaceURI(n);r===E.MATHML?p.adjustTokenMathMLAttrs(t):r===E.SVG&&(p.adjustTokenSVGTagName(t),p.adjustTokenSVGAttrs(t)),p.adjustTokenXMLAttrs(t),t.selfClosing?e._appendElement(t,r):e._insertElement(t,r),t.ackSelfClosing=!0}}(this,e):e.type===r.END_TAG_TOKEN&&function(e,t){for(let n=e.openElements.stackTop;n>0;n--){const r=e.openElements.items[n];if(e.treeAdapter.getNamespaceURI(r)===E.HTML){e._processToken(t);break}if(e.treeAdapter.getTagName(r).toLowerCase()===t.tagName){e.openElements.popUntilElementPopped(r);break}}}(this,e)}_processInputToken(e){this._shouldProcessTokenInForeignContent(e)?this._processTokenInForeignContent(e):this._processToken(e),e.type===r.START_TAG_TOKEN&&e.selfClosing&&!e.ackSelfClosing&&this._err(d.nonVoidHtmlElementStartTagWithTrailingSolidus)}_isIntegrationPoint(e,t){const n=this.treeAdapter.getTagName(e),r=this.treeAdapter.getNamespaceURI(e),i=this.treeAdapter.getAttrList(e);return p.isIntegrationPoint(n,r,i,t)}_reconstructActiveFormattingElements(){const e=this.activeFormattingElements.length;if(e){let t=e,n=null;do{if(t--,n=this.activeFormattingElements.entries[t],n.type===s.MARKER_ENTRY||this.openElements.contains(n.element)){t++;break}}while(t>0);for(let r=t;r<e;r++)n=this.activeFormattingElements.entries[r],this._insertElement(n.token,this.treeAdapter.getNamespaceURI(n.element)),n.element=this.openElements.current}}_closeTableCell(){this.openElements.generateImpliedEndTags(),this.openElements.popUntilTableCellPopped(),this.activeFormattingElements.clearToLastMarker(),this.insertionMode=P}_closePElement(){this.openElements.generateImpliedEndTagsWithExclusion(T.P),this.openElements.popUntilTagNamePopped(T.P)}_resetInsertionMode(){for(let e=this.openElements.stackTop,t=!1;e>=0;e--){let n=this.openElements.items[e];0===e&&(t=!0,this.fragmentContext&&(n=this.fragmentContext));const r=this.treeAdapter.getTagName(n),i=q[r];if(i){this.insertionMode=i;break}if(!(t||r!==T.TD&&r!==T.TH)){this.insertionMode=D;break}if(!t&&r===T.HEAD){this.insertionMode=O;break}if(r===T.SELECT){this._resetInsertionModeForSelect(e);break}if(r===T.TEMPLATE){this.insertionMode=this.currentTmplInsertionMode;break}if(r===T.HTML){this.insertionMode=this.headElement?S:v;break}if(t){this.insertionMode=y;break}}}_resetInsertionModeForSelect(e){if(e>0)for(let t=e-1;t>0;t--){const e=this.openElements.items[t],n=this.treeAdapter.getTagName(e);if(n===T.TEMPLATE)break;if(n===T.TABLE)return void(this.insertionMode=H)}this.insertionMode=w}_pushTmplInsertionMode(e){this.tmplInsertionModeStack.push(e),this.tmplInsertionModeStackTop++,this.currentTmplInsertionMode=e}_popTmplInsertionMode(){this.tmplInsertionModeStack.pop(),this.tmplInsertionModeStackTop--,this.currentTmplInsertionMode=this.tmplInsertionModeStack[this.tmplInsertionModeStackTop]}_isElementCausesFosterParenting(e){const t=this.treeAdapter.getTagName(e);return t===T.TABLE||t===T.TBODY||t===T.TFOOT||t===T.THEAD||t===T.TR}_shouldFosterParentOnInsertion(){return this.fosterParentingEnabled&&this._isElementCausesFosterParenting(this.openElements.current)}_findFosterParentingLocation(){const e={parent:null,beforeElement:null};for(let t=this.openElements.stackTop;t>=0;t--){const n=this.openElements.items[t],r=this.treeAdapter.getTagName(n),i=this.treeAdapter.getNamespaceURI(n);if(r===T.TEMPLATE&&i===E.HTML){e.parent=this.treeAdapter.getTemplateContent(n);break}if(r===T.TABLE){e.parent=this.treeAdapter.getParentNode(n),e.parent?e.beforeElement=n:e.parent=this.openElements.items[t-1];break}}return e.parent||(e.parent=this.openElements.items[0]),e}_fosterParentElement(e){const t=this._findFosterParentingLocation();t.beforeElement?this.treeAdapter.insertBefore(t.parent,e,t.beforeElement):this.treeAdapter.appendChild(t.parent,e)}_fosterParentText(e){const t=this._findFosterParentingLocation();t.beforeElement?this.treeAdapter.insertTextBefore(t.parent,e,t.beforeElement):this.treeAdapter.insertText(t.parent,e)}_isSpecialElement(e){const t=this.treeAdapter.getTagName(e),n=this.treeAdapter.getNamespaceURI(e);return m.SPECIAL_ELEMENTS[n][t]}}},6519:(e,t,n)=>{"use strict";const r=n(6152),i=r.TAG_NAMES,s=r.NAMESPACES;function o(e){switch(e.length){case 1:return e===i.P;case 2:return e===i.RB||e===i.RP||e===i.RT||e===i.DD||e===i.DT||e===i.LI;case 3:return e===i.RTC;case 6:return e===i.OPTION;case 8:return e===i.OPTGROUP}return!1}function a(e){switch(e.length){case 1:return e===i.P;case 2:return e===i.RB||e===i.RP||e===i.RT||e===i.DD||e===i.DT||e===i.LI||e===i.TD||e===i.TH||e===i.TR;case 3:return e===i.RTC;case 5:return e===i.TBODY||e===i.TFOOT||e===i.THEAD;case 6:return e===i.OPTION;case 7:return e===i.CAPTION;case 8:return e===i.OPTGROUP||e===i.COLGROUP}return!1}function c(e,t){switch(e.length){case 2:if(e===i.TD||e===i.TH)return t===s.HTML;if(e===i.MI||e===i.MO||e===i.MN||e===i.MS)return t===s.MATHML;break;case 4:if(e===i.HTML)return t===s.HTML;if(e===i.DESC)return t===s.SVG;break;case 5:if(e===i.TABLE)return t===s.HTML;if(e===i.MTEXT)return t===s.MATHML;if(e===i.TITLE)return t===s.SVG;break;case 6:return(e===i.APPLET||e===i.OBJECT)&&t===s.HTML;case 7:return(e===i.CAPTION||e===i.MARQUEE)&&t===s.HTML;case 8:return e===i.TEMPLATE&&t===s.HTML;case 13:return e===i.FOREIGN_OBJECT&&t===s.SVG;case 14:return e===i.ANNOTATION_XML&&t===s.MATHML}return!1}e.exports=class{constructor(e,t){this.stackTop=-1,this.items=[],this.current=e,this.currentTagName=null,this.currentTmplContent=null,this.tmplCount=0,this.treeAdapter=t}_indexOf(e){let t=-1;for(let n=this.stackTop;n>=0;n--)if(this.items[n]===e){t=n;break}return t}_isInTemplate(){return this.currentTagName===i.TEMPLATE&&this.treeAdapter.getNamespaceURI(this.current)===s.HTML}_updateCurrentElement(){this.current=this.items[this.stackTop],this.currentTagName=this.current&&this.treeAdapter.getTagName(this.current),this.currentTmplContent=this._isInTemplate()?this.treeAdapter.getTemplateContent(this.current):null}push(e){this.items[++this.stackTop]=e,this._updateCurrentElement(),this._isInTemplate()&&this.tmplCount++}pop(){this.stackTop--,this.tmplCount>0&&this._isInTemplate()&&this.tmplCount--,this._updateCurrentElement()}replace(e,t){const n=this._indexOf(e);this.items[n]=t,n===this.stackTop&&this._updateCurrentElement()}insertAfter(e,t){const n=this._indexOf(e)+1;this.items.splice(n,0,t),n===++this.stackTop&&this._updateCurrentElement()}popUntilTagNamePopped(e){for(;this.stackTop>-1;){const t=this.currentTagName,n=this.treeAdapter.getNamespaceURI(this.current);if(this.pop(),t===e&&n===s.HTML)break}}popUntilElementPopped(e){for(;this.stackTop>-1;){const t=this.current;if(this.pop(),t===e)break}}popUntilNumberedHeaderPopped(){for(;this.stackTop>-1;){const e=this.currentTagName,t=this.treeAdapter.getNamespaceURI(this.current);if(this.pop(),e===i.H1||e===i.H2||e===i.H3||e===i.H4||e===i.H5||e===i.H6&&t===s.HTML)break}}popUntilTableCellPopped(){for(;this.stackTop>-1;){const e=this.currentTagName,t=this.treeAdapter.getNamespaceURI(this.current);if(this.pop(),e===i.TD||e===i.TH&&t===s.HTML)break}}popAllUpToHtmlElement(){this.stackTop=0,this._updateCurrentElement()}clearBackToTableContext(){for(;this.currentTagName!==i.TABLE&&this.currentTagName!==i.TEMPLATE&&this.currentTagName!==i.HTML||this.treeAdapter.getNamespaceURI(this.current)!==s.HTML;)this.pop()}clearBackToTableBodyContext(){for(;this.currentTagName!==i.TBODY&&this.currentTagName!==i.TFOOT&&this.currentTagName!==i.THEAD&&this.currentTagName!==i.TEMPLATE&&this.currentTagName!==i.HTML||this.treeAdapter.getNamespaceURI(this.current)!==s.HTML;)this.pop()}clearBackToTableRowContext(){for(;this.currentTagName!==i.TR&&this.currentTagName!==i.TEMPLATE&&this.currentTagName!==i.HTML||this.treeAdapter.getNamespaceURI(this.current)!==s.HTML;)this.pop()}remove(e){for(let t=this.stackTop;t>=0;t--)if(this.items[t]===e){this.items.splice(t,1),this.stackTop--,this._updateCurrentElement();break}}tryPeekProperlyNestedBodyElement(){const e=this.items[1];return e&&this.treeAdapter.getTagName(e)===i.BODY?e:null}contains(e){return this._indexOf(e)>-1}getCommonAncestor(e){let t=this._indexOf(e);return--t>=0?this.items[t]:null}isRootHtmlElementCurrent(){return 0===this.stackTop&&this.currentTagName===i.HTML}hasInScope(e){for(let t=this.stackTop;t>=0;t--){const n=this.treeAdapter.getTagName(this.items[t]),r=this.treeAdapter.getNamespaceURI(this.items[t]);if(n===e&&r===s.HTML)return!0;if(c(n,r))return!1}return!0}hasNumberedHeaderInScope(){for(let e=this.stackTop;e>=0;e--){const t=this.treeAdapter.getTagName(this.items[e]),n=this.treeAdapter.getNamespaceURI(this.items[e]);if((t===i.H1||t===i.H2||t===i.H3||t===i.H4||t===i.H5||t===i.H6)&&n===s.HTML)return!0;if(c(t,n))return!1}return!0}hasInListItemScope(e){for(let t=this.stackTop;t>=0;t--){const n=this.treeAdapter.getTagName(this.items[t]),r=this.treeAdapter.getNamespaceURI(this.items[t]);if(n===e&&r===s.HTML)return!0;if((n===i.UL||n===i.OL)&&r===s.HTML||c(n,r))return!1}return!0}hasInButtonScope(e){for(let t=this.stackTop;t>=0;t--){const n=this.treeAdapter.getTagName(this.items[t]),r=this.treeAdapter.getNamespaceURI(this.items[t]);if(n===e&&r===s.HTML)return!0;if(n===i.BUTTON&&r===s.HTML||c(n,r))return!1}return!0}hasInTableScope(e){for(let t=this.stackTop;t>=0;t--){const n=this.treeAdapter.getTagName(this.items[t]);if(this.treeAdapter.getNamespaceURI(this.items[t])===s.HTML){if(n===e)return!0;if(n===i.TABLE||n===i.TEMPLATE||n===i.HTML)return!1}}return!0}hasTableBodyContextInTableScope(){for(let e=this.stackTop;e>=0;e--){const t=this.treeAdapter.getTagName(this.items[e]);if(this.treeAdapter.getNamespaceURI(this.items[e])===s.HTML){if(t===i.TBODY||t===i.THEAD||t===i.TFOOT)return!0;if(t===i.TABLE||t===i.HTML)return!1}}return!0}hasInSelectScope(e){for(let t=this.stackTop;t>=0;t--){const n=this.treeAdapter.getTagName(this.items[t]);if(this.treeAdapter.getNamespaceURI(this.items[t])===s.HTML){if(n===e)return!0;if(n!==i.OPTION&&n!==i.OPTGROUP)return!1}}return!0}generateImpliedEndTags(){for(;o(this.currentTagName);)this.pop()}generateImpliedEndTagsThoroughly(){for(;a(this.currentTagName);)this.pop()}generateImpliedEndTagsWithExclusion(e){for(;o(this.currentTagName)&&this.currentTagName!==e;)this.pop()}}},3988:(e,t,n)=>{"use strict";const r=n(7296),i=n(8904),s=n(1515),o=n(6152),a=o.TAG_NAMES,c=o.NAMESPACES,l={treeAdapter:r},u=/&/g,h=/\u00a0/g,p=/"/g,d=/</g,f=/>/g;class m{constructor(e,t){this.options=i(l,t),this.treeAdapter=this.options.treeAdapter,this.html="",this.startNode=e}serialize(){return this._serializeChildNodes(this.startNode),this.html}_serializeChildNodes(e){const t=this.treeAdapter.getChildNodes(e);if(t)for(let e=0,n=t.length;e<n;e++){const n=t[e];this.treeAdapter.isElementNode(n)?this._serializeElement(n):this.treeAdapter.isTextNode(n)?this._serializeTextNode(n):this.treeAdapter.isCommentNode(n)?this._serializeCommentNode(n):this.treeAdapter.isDocumentTypeNode(n)&&this._serializeDocumentTypeNode(n)}}_serializeElement(e){const t=this.treeAdapter.getTagName(e),n=this.treeAdapter.getNamespaceURI(e);if(this.html+="<"+t,this._serializeAttributes(e),this.html+=">",t!==a.AREA&&t!==a.BASE&&t!==a.BASEFONT&&t!==a.BGSOUND&&t!==a.BR&&t!==a.COL&&t!==a.EMBED&&t!==a.FRAME&&t!==a.HR&&t!==a.IMG&&t!==a.INPUT&&t!==a.KEYGEN&&t!==a.LINK&&t!==a.META&&t!==a.PARAM&&t!==a.SOURCE&&t!==a.TRACK&&t!==a.WBR){const r=t===a.TEMPLATE&&n===c.HTML?this.treeAdapter.getTemplateContent(e):e;this._serializeChildNodes(r),this.html+="</"+t+">"}}_serializeAttributes(e){const t=this.treeAdapter.getAttrList(e);for(let e=0,n=t.length;e<n;e++){const n=t[e],r=m.escapeString(n.value,!0);this.html+=" ",n.namespace?n.namespace===c.XML?this.html+="xml:"+n.name:n.namespace===c.XMLNS?("xmlns"!==n.name&&(this.html+="xmlns:"),this.html+=n.name):n.namespace===c.XLINK?this.html+="xlink:"+n.name:this.html+=n.prefix+":"+n.name:this.html+=n.name,this.html+='="'+r+'"'}}_serializeTextNode(e){const t=this.treeAdapter.getTextNodeContent(e),n=this.treeAdapter.getParentNode(e);let r;n&&this.treeAdapter.isElementNode(n)&&(r=this.treeAdapter.getTagName(n)),r===a.STYLE||r===a.SCRIPT||r===a.XMP||r===a.IFRAME||r===a.NOEMBED||r===a.NOFRAMES||r===a.PLAINTEXT||r===a.NOSCRIPT?this.html+=t:this.html+=m.escapeString(t,!1)}_serializeCommentNode(e){this.html+="\x3c!--"+this.treeAdapter.getCommentNodeContent(e)+"--\x3e"}_serializeDocumentTypeNode(e){const t=this.treeAdapter.getDocumentTypeNodeName(e);this.html+="<"+s.serializeContent(t,null,null)+">"}}m.escapeString=function(e,t){return e=e.replace(u,"&amp;").replace(h,"&nbsp;"),t?e.replace(p,"&quot;"):e.replace(d,"&lt;").replace(f,"&gt;")},e.exports=m},5763:(e,t,n)=>{"use strict";const r=n(7118),i=n(4284),s=n(5482),o=n(1734),a=i.CODE_POINTS,c=i.CODE_POINT_SEQUENCES,l={128:8364,130:8218,131:402,132:8222,133:8230,134:8224,135:8225,136:710,137:8240,138:352,139:8249,140:338,142:381,145:8216,146:8217,147:8220,148:8221,149:8226,150:8211,151:8212,152:732,153:8482,154:353,155:8250,156:339,158:382,159:376},u="DATA_STATE",h="RCDATA_STATE",p="RAWTEXT_STATE",d="SCRIPT_DATA_STATE",f="PLAINTEXT_STATE",m="TAG_OPEN_STATE",T="END_TAG_OPEN_STATE",E="TAG_NAME_STATE",_="RCDATA_LESS_THAN_SIGN_STATE",g="RCDATA_END_TAG_OPEN_STATE",A="RCDATA_END_TAG_NAME_STATE",C="RAWTEXT_LESS_THAN_SIGN_STATE",N="RAWTEXT_END_TAG_OPEN_STATE",v="RAWTEXT_END_TAG_NAME_STATE",O="SCRIPT_DATA_LESS_THAN_SIGN_STATE",b="SCRIPT_DATA_END_TAG_OPEN_STATE",S="SCRIPT_DATA_END_TAG_NAME_STATE",y="SCRIPT_DATA_ESCAPE_START_STATE",I="SCRIPT_DATA_ESCAPE_START_DASH_STATE",R="SCRIPT_DATA_ESCAPED_STATE",k="SCRIPT_DATA_ESCAPED_DASH_STATE",L="SCRIPT_DATA_ESCAPED_DASH_DASH_STATE",M="SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE",x="SCRIPT_DATA_ESCAPED_END_TAG_OPEN_STATE",P="SCRIPT_DATA_ESCAPED_END_TAG_NAME_STATE",D="SCRIPT_DATA_DOUBLE_ESCAPE_START_STATE",w="SCRIPT_DATA_DOUBLE_ESCAPED_STATE",H="SCRIPT_DATA_DOUBLE_ESCAPED_DASH_STATE",F="SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH_STATE",U="SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE",B="SCRIPT_DATA_DOUBLE_ESCAPE_END_STATE",G="BEFORE_ATTRIBUTE_NAME_STATE",j="ATTRIBUTE_NAME_STATE",K="AFTER_ATTRIBUTE_NAME_STATE",q="BEFORE_ATTRIBUTE_VALUE_STATE",Y="ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE",V="ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE",W="ATTRIBUTE_VALUE_UNQUOTED_STATE",Q="AFTER_ATTRIBUTE_VALUE_QUOTED_STATE",z="SELF_CLOSING_START_TAG_STATE",X="BOGUS_COMMENT_STATE",$="MARKUP_DECLARATION_OPEN_STATE",J="COMMENT_START_STATE",Z="COMMENT_START_DASH_STATE",ee="COMMENT_STATE",te="COMMENT_LESS_THAN_SIGN_STATE",ne="COMMENT_LESS_THAN_SIGN_BANG_STATE",re="COMMENT_LESS_THAN_SIGN_BANG_DASH_STATE",ie="COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH_STATE",se="COMMENT_END_DASH_STATE",oe="COMMENT_END_STATE",ae="COMMENT_END_BANG_STATE",ce="DOCTYPE_STATE",le="BEFORE_DOCTYPE_NAME_STATE",ue="DOCTYPE_NAME_STATE",he="AFTER_DOCTYPE_NAME_STATE",pe="AFTER_DOCTYPE_PUBLIC_KEYWORD_STATE",de="BEFORE_DOCTYPE_PUBLIC_IDENTIFIER_STATE",fe="DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE",me="DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE",Te="AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE",Ee="BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE",_e="AFTER_DOCTYPE_SYSTEM_KEYWORD_STATE",ge="BEFORE_DOCTYPE_SYSTEM_IDENTIFIER_STATE",Ae="DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE",Ce="DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE",Ne="AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE",ve="BOGUS_DOCTYPE_STATE",Oe="CDATA_SECTION_STATE",be="CDATA_SECTION_BRACKET_STATE",Se="CDATA_SECTION_END_STATE",ye="CHARACTER_REFERENCE_STATE",Ie="NAMED_CHARACTER_REFERENCE_STATE",Re="AMBIGUOS_AMPERSAND_STATE",ke="NUMERIC_CHARACTER_REFERENCE_STATE",Le="HEXADEMICAL_CHARACTER_REFERENCE_START_STATE",Me="DECIMAL_CHARACTER_REFERENCE_START_STATE",xe="HEXADEMICAL_CHARACTER_REFERENCE_STATE",Pe="DECIMAL_CHARACTER_REFERENCE_STATE",De="NUMERIC_CHARACTER_REFERENCE_END_STATE";function we(e){return e===a.SPACE||e===a.LINE_FEED||e===a.TABULATION||e===a.FORM_FEED}function He(e){return e>=a.DIGIT_0&&e<=a.DIGIT_9}function Fe(e){return e>=a.LATIN_CAPITAL_A&&e<=a.LATIN_CAPITAL_Z}function Ue(e){return e>=a.LATIN_SMALL_A&&e<=a.LATIN_SMALL_Z}function Be(e){return Ue(e)||Fe(e)}function Ge(e){return Be(e)||He(e)}function je(e){return e>=a.LATIN_CAPITAL_A&&e<=a.LATIN_CAPITAL_F}function Ke(e){return e>=a.LATIN_SMALL_A&&e<=a.LATIN_SMALL_F}function qe(e){return e+32}function Ye(e){return e<=65535?String.fromCharCode(e):(e-=65536,String.fromCharCode(e>>>10&1023|55296)+String.fromCharCode(56320|1023&e))}function Ve(e){return String.fromCharCode(qe(e))}function We(e,t){const n=s[++e];let r=++e,i=r+n-1;for(;r<=i;){const e=r+i>>>1,o=s[e];if(o<t)r=e+1;else{if(!(o>t))return s[e+n];i=e-1}}return-1}class Qe{constructor(){this.preprocessor=new r,this.tokenQueue=[],this.allowCDATA=!1,this.state=u,this.returnState="",this.charRefCode=-1,this.tempBuff=[],this.lastStartTagName="",this.consumedAfterSnapshot=-1,this.active=!1,this.currentCharacterToken=null,this.currentToken=null,this.currentAttr=null}_err(){}_errOnNextCodePoint(e){this._consume(),this._err(e),this._unconsume()}getNextToken(){for(;!this.tokenQueue.length&&this.active;){this.consumedAfterSnapshot=0;const e=this._consume();this._ensureHibernation()||this[this.state](e)}return this.tokenQueue.shift()}write(e,t){this.active=!0,this.preprocessor.write(e,t)}insertHtmlAtCurrentPos(e){this.active=!0,this.preprocessor.insertHtmlAtCurrentPos(e)}_ensureHibernation(){if(this.preprocessor.endOfChunkHit){for(;this.consumedAfterSnapshot>0;this.consumedAfterSnapshot--)this.preprocessor.retreat();return this.active=!1,this.tokenQueue.push({type:Qe.HIBERNATION_TOKEN}),!0}return!1}_consume(){return this.consumedAfterSnapshot++,this.preprocessor.advance()}_unconsume(){this.consumedAfterSnapshot--,this.preprocessor.retreat()}_reconsumeInState(e){this.state=e,this._unconsume()}_consumeSequenceIfMatch(e,t,n){let r=0,i=!0;const s=e.length;let o,c=0,l=t;for(;c<s;c++){if(c>0&&(l=this._consume(),r++),l===a.EOF){i=!1;break}if(o=e[c],l!==o&&(n||l!==qe(o))){i=!1;break}}if(!i)for(;r--;)this._unconsume();return i}_isTempBufferEqualToScriptString(){if(this.tempBuff.length!==c.SCRIPT_STRING.length)return!1;for(let e=0;e<this.tempBuff.length;e++)if(this.tempBuff[e]!==c.SCRIPT_STRING[e])return!1;return!0}_createStartTagToken(){this.currentToken={type:Qe.START_TAG_TOKEN,tagName:"",selfClosing:!1,ackSelfClosing:!1,attrs:[]}}_createEndTagToken(){this.currentToken={type:Qe.END_TAG_TOKEN,tagName:"",selfClosing:!1,attrs:[]}}_createCommentToken(){this.currentToken={type:Qe.COMMENT_TOKEN,data:""}}_createDoctypeToken(e){this.currentToken={type:Qe.DOCTYPE_TOKEN,name:e,forceQuirks:!1,publicId:null,systemId:null}}_createCharacterToken(e,t){this.currentCharacterToken={type:e,chars:t}}_createEOFToken(){this.currentToken={type:Qe.EOF_TOKEN}}_createAttr(e){this.currentAttr={name:e,value:""}}_leaveAttrName(e){null===Qe.getTokenAttr(this.currentToken,this.currentAttr.name)?this.currentToken.attrs.push(this.currentAttr):this._err(o.duplicateAttribute),this.state=e}_leaveAttrValue(e){this.state=e}_emitCurrentToken(){this._emitCurrentCharacterToken();const e=this.currentToken;this.currentToken=null,e.type===Qe.START_TAG_TOKEN?this.lastStartTagName=e.tagName:e.type===Qe.END_TAG_TOKEN&&(e.attrs.length>0&&this._err(o.endTagWithAttributes),e.selfClosing&&this._err(o.endTagWithTrailingSolidus)),this.tokenQueue.push(e)}_emitCurrentCharacterToken(){this.currentCharacterToken&&(this.tokenQueue.push(this.currentCharacterToken),this.currentCharacterToken=null)}_emitEOFToken(){this._createEOFToken(),this._emitCurrentToken()}_appendCharToCurrentCharacterToken(e,t){this.currentCharacterToken&&this.currentCharacterToken.type!==e&&this._emitCurrentCharacterToken(),this.currentCharacterToken?this.currentCharacterToken.chars+=t:this._createCharacterToken(e,t)}_emitCodePoint(e){let t=Qe.CHARACTER_TOKEN;we(e)?t=Qe.WHITESPACE_CHARACTER_TOKEN:e===a.NULL&&(t=Qe.NULL_CHARACTER_TOKEN),this._appendCharToCurrentCharacterToken(t,Ye(e))}_emitSeveralCodePoints(e){for(let t=0;t<e.length;t++)this._emitCodePoint(e[t])}_emitChars(e){this._appendCharToCurrentCharacterToken(Qe.CHARACTER_TOKEN,e)}_matchNamedCharacterReference(e){let t=null,n=1,r=We(0,e);for(this.tempBuff.push(e);r>-1;){const e=s[r],i=e<7;i&&1&e&&(t=2&e?[s[++r],s[++r]]:[s[++r]],n=0);const o=this._consume();if(this.tempBuff.push(o),n++,o===a.EOF)break;r=i?4&e?We(r,o):-1:o===e?++r:-1}for(;n--;)this.tempBuff.pop(),this._unconsume();return t}_isCharacterReferenceInAttribute(){return this.returnState===Y||this.returnState===V||this.returnState===W}_isCharacterReferenceAttributeQuirk(e){if(!e&&this._isCharacterReferenceInAttribute()){const e=this._consume();return this._unconsume(),e===a.EQUALS_SIGN||Ge(e)}return!1}_flushCodePointsConsumedAsCharacterReference(){if(this._isCharacterReferenceInAttribute())for(let e=0;e<this.tempBuff.length;e++)this.currentAttr.value+=Ye(this.tempBuff[e]);else this._emitSeveralCodePoints(this.tempBuff);this.tempBuff=[]}[u](e){this.preprocessor.dropParsedChunk(),e===a.LESS_THAN_SIGN?this.state=m:e===a.AMPERSAND?(this.returnState=u,this.state=ye):e===a.NULL?(this._err(o.unexpectedNullCharacter),this._emitCodePoint(e)):e===a.EOF?this._emitEOFToken():this._emitCodePoint(e)}[h](e){this.preprocessor.dropParsedChunk(),e===a.AMPERSAND?(this.returnState=h,this.state=ye):e===a.LESS_THAN_SIGN?this.state=_:e===a.NULL?(this._err(o.unexpectedNullCharacter),this._emitChars(i.REPLACEMENT_CHARACTER)):e===a.EOF?this._emitEOFToken():this._emitCodePoint(e)}[p](e){this.preprocessor.dropParsedChunk(),e===a.LESS_THAN_SIGN?this.state=C:e===a.NULL?(this._err(o.unexpectedNullCharacter),this._emitChars(i.REPLACEMENT_CHARACTER)):e===a.EOF?this._emitEOFToken():this._emitCodePoint(e)}[d](e){this.preprocessor.dropParsedChunk(),e===a.LESS_THAN_SIGN?this.state=O:e===a.NULL?(this._err(o.unexpectedNullCharacter),this._emitChars(i.REPLACEMENT_CHARACTER)):e===a.EOF?this._emitEOFToken():this._emitCodePoint(e)}[f](e){this.preprocessor.dropParsedChunk(),e===a.NULL?(this._err(o.unexpectedNullCharacter),this._emitChars(i.REPLACEMENT_CHARACTER)):e===a.EOF?this._emitEOFToken():this._emitCodePoint(e)}[m](e){e===a.EXCLAMATION_MARK?this.state=$:e===a.SOLIDUS?this.state=T:Be(e)?(this._createStartTagToken(),this._reconsumeInState(E)):e===a.QUESTION_MARK?(this._err(o.unexpectedQuestionMarkInsteadOfTagName),this._createCommentToken(),this._reconsumeInState(X)):e===a.EOF?(this._err(o.eofBeforeTagName),this._emitChars("<"),this._emitEOFToken()):(this._err(o.invalidFirstCharacterOfTagName),this._emitChars("<"),this._reconsumeInState(u))}[T](e){Be(e)?(this._createEndTagToken(),this._reconsumeInState(E)):e===a.GREATER_THAN_SIGN?(this._err(o.missingEndTagName),this.state=u):e===a.EOF?(this._err(o.eofBeforeTagName),this._emitChars("</"),this._emitEOFToken()):(this._err(o.invalidFirstCharacterOfTagName),this._createCommentToken(),this._reconsumeInState(X))}[E](e){we(e)?this.state=G:e===a.SOLIDUS?this.state=z:e===a.GREATER_THAN_SIGN?(this.state=u,this._emitCurrentToken()):Fe(e)?this.currentToken.tagName+=Ve(e):e===a.NULL?(this._err(o.unexpectedNullCharacter),this.currentToken.tagName+=i.REPLACEMENT_CHARACTER):e===a.EOF?(this._err(o.eofInTag),this._emitEOFToken()):this.currentToken.tagName+=Ye(e)}[_](e){e===a.SOLIDUS?(this.tempBuff=[],this.state=g):(this._emitChars("<"),this._reconsumeInState(h))}[g](e){Be(e)?(this._createEndTagToken(),this._reconsumeInState(A)):(this._emitChars("</"),this._reconsumeInState(h))}[A](e){if(Fe(e))this.currentToken.tagName+=Ve(e),this.tempBuff.push(e);else if(Ue(e))this.currentToken.tagName+=Ye(e),this.tempBuff.push(e);else{if(this.lastStartTagName===this.currentToken.tagName){if(we(e))return void(this.state=G);if(e===a.SOLIDUS)return void(this.state=z);if(e===a.GREATER_THAN_SIGN)return this.state=u,void this._emitCurrentToken()}this._emitChars("</"),this._emitSeveralCodePoints(this.tempBuff),this._reconsumeInState(h)}}[C](e){e===a.SOLIDUS?(this.tempBuff=[],this.state=N):(this._emitChars("<"),this._reconsumeInState(p))}[N](e){Be(e)?(this._createEndTagToken(),this._reconsumeInState(v)):(this._emitChars("</"),this._reconsumeInState(p))}[v](e){if(Fe(e))this.currentToken.tagName+=Ve(e),this.tempBuff.push(e);else if(Ue(e))this.currentToken.tagName+=Ye(e),this.tempBuff.push(e);else{if(this.lastStartTagName===this.currentToken.tagName){if(we(e))return void(this.state=G);if(e===a.SOLIDUS)return void(this.state=z);if(e===a.GREATER_THAN_SIGN)return this._emitCurrentToken(),void(this.state=u)}this._emitChars("</"),this._emitSeveralCodePoints(this.tempBuff),this._reconsumeInState(p)}}[O](e){e===a.SOLIDUS?(this.tempBuff=[],this.state=b):e===a.EXCLAMATION_MARK?(this.state=y,this._emitChars("<!")):(this._emitChars("<"),this._reconsumeInState(d))}[b](e){Be(e)?(this._createEndTagToken(),this._reconsumeInState(S)):(this._emitChars("</"),this._reconsumeInState(d))}[S](e){if(Fe(e))this.currentToken.tagName+=Ve(e),this.tempBuff.push(e);else if(Ue(e))this.currentToken.tagName+=Ye(e),this.tempBuff.push(e);else{if(this.lastStartTagName===this.currentToken.tagName){if(we(e))return void(this.state=G);if(e===a.SOLIDUS)return void(this.state=z);if(e===a.GREATER_THAN_SIGN)return this._emitCurrentToken(),void(this.state=u)}this._emitChars("</"),this._emitSeveralCodePoints(this.tempBuff),this._reconsumeInState(d)}}[y](e){e===a.HYPHEN_MINUS?(this.state=I,this._emitChars("-")):this._reconsumeInState(d)}[I](e){e===a.HYPHEN_MINUS?(this.state=L,this._emitChars("-")):this._reconsumeInState(d)}[R](e){e===a.HYPHEN_MINUS?(this.state=k,this._emitChars("-")):e===a.LESS_THAN_SIGN?this.state=M:e===a.NULL?(this._err(o.unexpectedNullCharacter),this._emitChars(i.REPLACEMENT_CHARACTER)):e===a.EOF?(this._err(o.eofInScriptHtmlCommentLikeText),this._emitEOFToken()):this._emitCodePoint(e)}[k](e){e===a.HYPHEN_MINUS?(this.state=L,this._emitChars("-")):e===a.LESS_THAN_SIGN?this.state=M:e===a.NULL?(this._err(o.unexpectedNullCharacter),this.state=R,this._emitChars(i.REPLACEMENT_CHARACTER)):e===a.EOF?(this._err(o.eofInScriptHtmlCommentLikeText),this._emitEOFToken()):(this.state=R,this._emitCodePoint(e))}[L](e){e===a.HYPHEN_MINUS?this._emitChars("-"):e===a.LESS_THAN_SIGN?this.state=M:e===a.GREATER_THAN_SIGN?(this.state=d,this._emitChars(">")):e===a.NULL?(this._err(o.unexpectedNullCharacter),this.state=R,this._emitChars(i.REPLACEMENT_CHARACTER)):e===a.EOF?(this._err(o.eofInScriptHtmlCommentLikeText),this._emitEOFToken()):(this.state=R,this._emitCodePoint(e))}[M](e){e===a.SOLIDUS?(this.tempBuff=[],this.state=x):Be(e)?(this.tempBuff=[],this._emitChars("<"),this._reconsumeInState(D)):(this._emitChars("<"),this._reconsumeInState(R))}[x](e){Be(e)?(this._createEndTagToken(),this._reconsumeInState(P)):(this._emitChars("</"),this._reconsumeInState(R))}[P](e){if(Fe(e))this.currentToken.tagName+=Ve(e),this.tempBuff.push(e);else if(Ue(e))this.currentToken.tagName+=Ye(e),this.tempBuff.push(e);else{if(this.lastStartTagName===this.currentToken.tagName){if(we(e))return void(this.state=G);if(e===a.SOLIDUS)return void(this.state=z);if(e===a.GREATER_THAN_SIGN)return this._emitCurrentToken(),void(this.state=u)}this._emitChars("</"),this._emitSeveralCodePoints(this.tempBuff),this._reconsumeInState(R)}}[D](e){we(e)||e===a.SOLIDUS||e===a.GREATER_THAN_SIGN?(this.state=this._isTempBufferEqualToScriptString()?w:R,this._emitCodePoint(e)):Fe(e)?(this.tempBuff.push(qe(e)),this._emitCodePoint(e)):Ue(e)?(this.tempBuff.push(e),this._emitCodePoint(e)):this._reconsumeInState(R)}[w](e){e===a.HYPHEN_MINUS?(this.state=H,this._emitChars("-")):e===a.LESS_THAN_SIGN?(this.state=U,this._emitChars("<")):e===a.NULL?(this._err(o.unexpectedNullCharacter),this._emitChars(i.REPLACEMENT_CHARACTER)):e===a.EOF?(this._err(o.eofInScriptHtmlCommentLikeText),this._emitEOFToken()):this._emitCodePoint(e)}[H](e){e===a.HYPHEN_MINUS?(this.state=F,this._emitChars("-")):e===a.LESS_THAN_SIGN?(this.state=U,this._emitChars("<")):e===a.NULL?(this._err(o.unexpectedNullCharacter),this.state=w,this._emitChars(i.REPLACEMENT_CHARACTER)):e===a.EOF?(this._err(o.eofInScriptHtmlCommentLikeText),this._emitEOFToken()):(this.state=w,this._emitCodePoint(e))}[F](e){e===a.HYPHEN_MINUS?this._emitChars("-"):e===a.LESS_THAN_SIGN?(this.state=U,this._emitChars("<")):e===a.GREATER_THAN_SIGN?(this.state=d,this._emitChars(">")):e===a.NULL?(this._err(o.unexpectedNullCharacter),this.state=w,this._emitChars(i.REPLACEMENT_CHARACTER)):e===a.EOF?(this._err(o.eofInScriptHtmlCommentLikeText),this._emitEOFToken()):(this.state=w,this._emitCodePoint(e))}[U](e){e===a.SOLIDUS?(this.tempBuff=[],this.state=B,this._emitChars("/")):this._reconsumeInState(w)}[B](e){we(e)||e===a.SOLIDUS||e===a.GREATER_THAN_SIGN?(this.state=this._isTempBufferEqualToScriptString()?R:w,this._emitCodePoint(e)):Fe(e)?(this.tempBuff.push(qe(e)),this._emitCodePoint(e)):Ue(e)?(this.tempBuff.push(e),this._emitCodePoint(e)):this._reconsumeInState(w)}[G](e){we(e)||(e===a.SOLIDUS||e===a.GREATER_THAN_SIGN||e===a.EOF?this._reconsumeInState(K):e===a.EQUALS_SIGN?(this._err(o.unexpectedEqualsSignBeforeAttributeName),this._createAttr("="),this.state=j):(this._createAttr(""),this._reconsumeInState(j)))}[j](e){we(e)||e===a.SOLIDUS||e===a.GREATER_THAN_SIGN||e===a.EOF?(this._leaveAttrName(K),this._unconsume()):e===a.EQUALS_SIGN?this._leaveAttrName(q):Fe(e)?this.currentAttr.name+=Ve(e):e===a.QUOTATION_MARK||e===a.APOSTROPHE||e===a.LESS_THAN_SIGN?(this._err(o.unexpectedCharacterInAttributeName),this.currentAttr.name+=Ye(e)):e===a.NULL?(this._err(o.unexpectedNullCharacter),this.currentAttr.name+=i.REPLACEMENT_CHARACTER):this.currentAttr.name+=Ye(e)}[K](e){we(e)||(e===a.SOLIDUS?this.state=z:e===a.EQUALS_SIGN?this.state=q:e===a.GREATER_THAN_SIGN?(this.state=u,this._emitCurrentToken()):e===a.EOF?(this._err(o.eofInTag),this._emitEOFToken()):(this._createAttr(""),this._reconsumeInState(j)))}[q](e){we(e)||(e===a.QUOTATION_MARK?this.state=Y:e===a.APOSTROPHE?this.state=V:e===a.GREATER_THAN_SIGN?(this._err(o.missingAttributeValue),this.state=u,this._emitCurrentToken()):this._reconsumeInState(W))}[Y](e){e===a.QUOTATION_MARK?this.state=Q:e===a.AMPERSAND?(this.returnState=Y,this.state=ye):e===a.NULL?(this._err(o.unexpectedNullCharacter),this.currentAttr.value+=i.REPLACEMENT_CHARACTER):e===a.EOF?(this._err(o.eofInTag),this._emitEOFToken()):this.currentAttr.value+=Ye(e)}[V](e){e===a.APOSTROPHE?this.state=Q:e===a.AMPERSAND?(this.returnState=V,this.state=ye):e===a.NULL?(this._err(o.unexpectedNullCharacter),this.currentAttr.value+=i.REPLACEMENT_CHARACTER):e===a.EOF?(this._err(o.eofInTag),this._emitEOFToken()):this.currentAttr.value+=Ye(e)}[W](e){we(e)?this._leaveAttrValue(G):e===a.AMPERSAND?(this.returnState=W,this.state=ye):e===a.GREATER_THAN_SIGN?(this._leaveAttrValue(u),this._emitCurrentToken()):e===a.NULL?(this._err(o.unexpectedNullCharacter),this.currentAttr.value+=i.REPLACEMENT_CHARACTER):e===a.QUOTATION_MARK||e===a.APOSTROPHE||e===a.LESS_THAN_SIGN||e===a.EQUALS_SIGN||e===a.GRAVE_ACCENT?(this._err(o.unexpectedCharacterInUnquotedAttributeValue),this.currentAttr.value+=Ye(e)):e===a.EOF?(this._err(o.eofInTag),this._emitEOFToken()):this.currentAttr.value+=Ye(e)}[Q](e){we(e)?this._leaveAttrValue(G):e===a.SOLIDUS?this._leaveAttrValue(z):e===a.GREATER_THAN_SIGN?(this._leaveAttrValue(u),this._emitCurrentToken()):e===a.EOF?(this._err(o.eofInTag),this._emitEOFToken()):(this._err(o.missingWhitespaceBetweenAttributes),this._reconsumeInState(G))}[z](e){e===a.GREATER_THAN_SIGN?(this.currentToken.selfClosing=!0,this.state=u,this._emitCurrentToken()):e===a.EOF?(this._err(o.eofInTag),this._emitEOFToken()):(this._err(o.unexpectedSolidusInTag),this._reconsumeInState(G))}[X](e){e===a.GREATER_THAN_SIGN?(this.state=u,this._emitCurrentToken()):e===a.EOF?(this._emitCurrentToken(),this._emitEOFToken()):e===a.NULL?(this._err(o.unexpectedNullCharacter),this.currentToken.data+=i.REPLACEMENT_CHARACTER):this.currentToken.data+=Ye(e)}[$](e){this._consumeSequenceIfMatch(c.DASH_DASH_STRING,e,!0)?(this._createCommentToken(),this.state=J):this._consumeSequenceIfMatch(c.DOCTYPE_STRING,e,!1)?this.state=ce:this._consumeSequenceIfMatch(c.CDATA_START_STRING,e,!0)?this.allowCDATA?this.state=Oe:(this._err(o.cdataInHtmlContent),this._createCommentToken(),this.currentToken.data="[CDATA[",this.state=X):this._ensureHibernation()||(this._err(o.incorrectlyOpenedComment),this._createCommentToken(),this._reconsumeInState(X))}[J](e){e===a.HYPHEN_MINUS?this.state=Z:e===a.GREATER_THAN_SIGN?(this._err(o.abruptClosingOfEmptyComment),this.state=u,this._emitCurrentToken()):this._reconsumeInState(ee)}[Z](e){e===a.HYPHEN_MINUS?this.state=oe:e===a.GREATER_THAN_SIGN?(this._err(o.abruptClosingOfEmptyComment),this.state=u,this._emitCurrentToken()):e===a.EOF?(this._err(o.eofInComment),this._emitCurrentToken(),this._emitEOFToken()):(this.currentToken.data+="-",this._reconsumeInState(ee))}[ee](e){e===a.HYPHEN_MINUS?this.state=se:e===a.LESS_THAN_SIGN?(this.currentToken.data+="<",this.state=te):e===a.NULL?(this._err(o.unexpectedNullCharacter),this.currentToken.data+=i.REPLACEMENT_CHARACTER):e===a.EOF?(this._err(o.eofInComment),this._emitCurrentToken(),this._emitEOFToken()):this.currentToken.data+=Ye(e)}[te](e){e===a.EXCLAMATION_MARK?(this.currentToken.data+="!",this.state=ne):e===a.LESS_THAN_SIGN?this.currentToken.data+="!":this._reconsumeInState(ee)}[ne](e){e===a.HYPHEN_MINUS?this.state=re:this._reconsumeInState(ee)}[re](e){e===a.HYPHEN_MINUS?this.state=ie:this._reconsumeInState(se)}[ie](e){e!==a.GREATER_THAN_SIGN&&e!==a.EOF&&this._err(o.nestedComment),this._reconsumeInState(oe)}[se](e){e===a.HYPHEN_MINUS?this.state=oe:e===a.EOF?(this._err(o.eofInComment),this._emitCurrentToken(),this._emitEOFToken()):(this.currentToken.data+="-",this._reconsumeInState(ee))}[oe](e){e===a.GREATER_THAN_SIGN?(this.state=u,this._emitCurrentToken()):e===a.EXCLAMATION_MARK?this.state=ae:e===a.HYPHEN_MINUS?this.currentToken.data+="-":e===a.EOF?(this._err(o.eofInComment),this._emitCurrentToken(),this._emitEOFToken()):(this.currentToken.data+="--",this._reconsumeInState(ee))}[ae](e){e===a.HYPHEN_MINUS?(this.currentToken.data+="--!",this.state=se):e===a.GREATER_THAN_SIGN?(this._err(o.incorrectlyClosedComment),this.state=u,this._emitCurrentToken()):e===a.EOF?(this._err(o.eofInComment),this._emitCurrentToken(),this._emitEOFToken()):(this.currentToken.data+="--!",this._reconsumeInState(ee))}[ce](e){we(e)?this.state=le:e===a.GREATER_THAN_SIGN?this._reconsumeInState(le):e===a.EOF?(this._err(o.eofInDoctype),this._createDoctypeToken(null),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(o.missingWhitespaceBeforeDoctypeName),this._reconsumeInState(le))}[le](e){we(e)||(Fe(e)?(this._createDoctypeToken(Ve(e)),this.state=ue):e===a.NULL?(this._err(o.unexpectedNullCharacter),this._createDoctypeToken(i.REPLACEMENT_CHARACTER),this.state=ue):e===a.GREATER_THAN_SIGN?(this._err(o.missingDoctypeName),this._createDoctypeToken(null),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this.state=u):e===a.EOF?(this._err(o.eofInDoctype),this._createDoctypeToken(null),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._createDoctypeToken(Ye(e)),this.state=ue))}[ue](e){we(e)?this.state=he:e===a.GREATER_THAN_SIGN?(this.state=u,this._emitCurrentToken()):Fe(e)?this.currentToken.name+=Ve(e):e===a.NULL?(this._err(o.unexpectedNullCharacter),this.currentToken.name+=i.REPLACEMENT_CHARACTER):e===a.EOF?(this._err(o.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):this.currentToken.name+=Ye(e)}[he](e){we(e)||(e===a.GREATER_THAN_SIGN?(this.state=u,this._emitCurrentToken()):e===a.EOF?(this._err(o.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):this._consumeSequenceIfMatch(c.PUBLIC_STRING,e,!1)?this.state=pe:this._consumeSequenceIfMatch(c.SYSTEM_STRING,e,!1)?this.state=_e:this._ensureHibernation()||(this._err(o.invalidCharacterSequenceAfterDoctypeName),this.currentToken.forceQuirks=!0,this._reconsumeInState(ve)))}[pe](e){we(e)?this.state=de:e===a.QUOTATION_MARK?(this._err(o.missingWhitespaceAfterDoctypePublicKeyword),this.currentToken.publicId="",this.state=fe):e===a.APOSTROPHE?(this._err(o.missingWhitespaceAfterDoctypePublicKeyword),this.currentToken.publicId="",this.state=me):e===a.GREATER_THAN_SIGN?(this._err(o.missingDoctypePublicIdentifier),this.currentToken.forceQuirks=!0,this.state=u,this._emitCurrentToken()):e===a.EOF?(this._err(o.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(o.missingQuoteBeforeDoctypePublicIdentifier),this.currentToken.forceQuirks=!0,this._reconsumeInState(ve))}[de](e){we(e)||(e===a.QUOTATION_MARK?(this.currentToken.publicId="",this.state=fe):e===a.APOSTROPHE?(this.currentToken.publicId="",this.state=me):e===a.GREATER_THAN_SIGN?(this._err(o.missingDoctypePublicIdentifier),this.currentToken.forceQuirks=!0,this.state=u,this._emitCurrentToken()):e===a.EOF?(this._err(o.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(o.missingQuoteBeforeDoctypePublicIdentifier),this.currentToken.forceQuirks=!0,this._reconsumeInState(ve)))}[fe](e){e===a.QUOTATION_MARK?this.state=Te:e===a.NULL?(this._err(o.unexpectedNullCharacter),this.currentToken.publicId+=i.REPLACEMENT_CHARACTER):e===a.GREATER_THAN_SIGN?(this._err(o.abruptDoctypePublicIdentifier),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this.state=u):e===a.EOF?(this._err(o.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):this.currentToken.publicId+=Ye(e)}[me](e){e===a.APOSTROPHE?this.state=Te:e===a.NULL?(this._err(o.unexpectedNullCharacter),this.currentToken.publicId+=i.REPLACEMENT_CHARACTER):e===a.GREATER_THAN_SIGN?(this._err(o.abruptDoctypePublicIdentifier),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this.state=u):e===a.EOF?(this._err(o.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):this.currentToken.publicId+=Ye(e)}[Te](e){we(e)?this.state=Ee:e===a.GREATER_THAN_SIGN?(this.state=u,this._emitCurrentToken()):e===a.QUOTATION_MARK?(this._err(o.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers),this.currentToken.systemId="",this.state=Ae):e===a.APOSTROPHE?(this._err(o.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers),this.currentToken.systemId="",this.state=Ce):e===a.EOF?(this._err(o.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(o.missingQuoteBeforeDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this._reconsumeInState(ve))}[Ee](e){we(e)||(e===a.GREATER_THAN_SIGN?(this._emitCurrentToken(),this.state=u):e===a.QUOTATION_MARK?(this.currentToken.systemId="",this.state=Ae):e===a.APOSTROPHE?(this.currentToken.systemId="",this.state=Ce):e===a.EOF?(this._err(o.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(o.missingQuoteBeforeDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this._reconsumeInState(ve)))}[_e](e){we(e)?this.state=ge:e===a.QUOTATION_MARK?(this._err(o.missingWhitespaceAfterDoctypeSystemKeyword),this.currentToken.systemId="",this.state=Ae):e===a.APOSTROPHE?(this._err(o.missingWhitespaceAfterDoctypeSystemKeyword),this.currentToken.systemId="",this.state=Ce):e===a.GREATER_THAN_SIGN?(this._err(o.missingDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this.state=u,this._emitCurrentToken()):e===a.EOF?(this._err(o.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(o.missingQuoteBeforeDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this._reconsumeInState(ve))}[ge](e){we(e)||(e===a.QUOTATION_MARK?(this.currentToken.systemId="",this.state=Ae):e===a.APOSTROPHE?(this.currentToken.systemId="",this.state=Ce):e===a.GREATER_THAN_SIGN?(this._err(o.missingDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this.state=u,this._emitCurrentToken()):e===a.EOF?(this._err(o.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(o.missingQuoteBeforeDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this._reconsumeInState(ve)))}[Ae](e){e===a.QUOTATION_MARK?this.state=Ne:e===a.NULL?(this._err(o.unexpectedNullCharacter),this.currentToken.systemId+=i.REPLACEMENT_CHARACTER):e===a.GREATER_THAN_SIGN?(this._err(o.abruptDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this.state=u):e===a.EOF?(this._err(o.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):this.currentToken.systemId+=Ye(e)}[Ce](e){e===a.APOSTROPHE?this.state=Ne:e===a.NULL?(this._err(o.unexpectedNullCharacter),this.currentToken.systemId+=i.REPLACEMENT_CHARACTER):e===a.GREATER_THAN_SIGN?(this._err(o.abruptDoctypeSystemIdentifier),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this.state=u):e===a.EOF?(this._err(o.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):this.currentToken.systemId+=Ye(e)}[Ne](e){we(e)||(e===a.GREATER_THAN_SIGN?(this._emitCurrentToken(),this.state=u):e===a.EOF?(this._err(o.eofInDoctype),this.currentToken.forceQuirks=!0,this._emitCurrentToken(),this._emitEOFToken()):(this._err(o.unexpectedCharacterAfterDoctypeSystemIdentifier),this._reconsumeInState(ve)))}[ve](e){e===a.GREATER_THAN_SIGN?(this._emitCurrentToken(),this.state=u):e===a.NULL?this._err(o.unexpectedNullCharacter):e===a.EOF&&(this._emitCurrentToken(),this._emitEOFToken())}[Oe](e){e===a.RIGHT_SQUARE_BRACKET?this.state=be:e===a.EOF?(this._err(o.eofInCdata),this._emitEOFToken()):this._emitCodePoint(e)}[be](e){e===a.RIGHT_SQUARE_BRACKET?this.state=Se:(this._emitChars("]"),this._reconsumeInState(Oe))}[Se](e){e===a.GREATER_THAN_SIGN?this.state=u:e===a.RIGHT_SQUARE_BRACKET?this._emitChars("]"):(this._emitChars("]]"),this._reconsumeInState(Oe))}[ye](e){this.tempBuff=[a.AMPERSAND],e===a.NUMBER_SIGN?(this.tempBuff.push(e),this.state=ke):Ge(e)?this._reconsumeInState(Ie):(this._flushCodePointsConsumedAsCharacterReference(),this._reconsumeInState(this.returnState))}[Ie](e){const t=this._matchNamedCharacterReference(e);if(this._ensureHibernation())this.tempBuff=[a.AMPERSAND];else if(t){const e=this.tempBuff[this.tempBuff.length-1]===a.SEMICOLON;this._isCharacterReferenceAttributeQuirk(e)||(e||this._errOnNextCodePoint(o.missingSemicolonAfterCharacterReference),this.tempBuff=t),this._flushCodePointsConsumedAsCharacterReference(),this.state=this.returnState}else this._flushCodePointsConsumedAsCharacterReference(),this.state=Re}[Re](e){Ge(e)?this._isCharacterReferenceInAttribute()?this.currentAttr.value+=Ye(e):this._emitCodePoint(e):(e===a.SEMICOLON&&this._err(o.unknownNamedCharacterReference),this._reconsumeInState(this.returnState))}[ke](e){this.charRefCode=0,e===a.LATIN_SMALL_X||e===a.LATIN_CAPITAL_X?(this.tempBuff.push(e),this.state=Le):this._reconsumeInState(Me)}[Le](e){!function(e){return He(e)||je(e)||Ke(e)}(e)?(this._err(o.absenceOfDigitsInNumericCharacterReference),this._flushCodePointsConsumedAsCharacterReference(),this._reconsumeInState(this.returnState)):this._reconsumeInState(xe)}[Me](e){He(e)?this._reconsumeInState(Pe):(this._err(o.absenceOfDigitsInNumericCharacterReference),this._flushCodePointsConsumedAsCharacterReference(),this._reconsumeInState(this.returnState))}[xe](e){je(e)?this.charRefCode=16*this.charRefCode+e-55:Ke(e)?this.charRefCode=16*this.charRefCode+e-87:He(e)?this.charRefCode=16*this.charRefCode+e-48:e===a.SEMICOLON?this.state=De:(this._err(o.missingSemicolonAfterCharacterReference),this._reconsumeInState(De))}[Pe](e){He(e)?this.charRefCode=10*this.charRefCode+e-48:e===a.SEMICOLON?this.state=De:(this._err(o.missingSemicolonAfterCharacterReference),this._reconsumeInState(De))}[De](){if(this.charRefCode===a.NULL)this._err(o.nullCharacterReference),this.charRefCode=a.REPLACEMENT_CHARACTER;else if(this.charRefCode>1114111)this._err(o.characterReferenceOutsideUnicodeRange),this.charRefCode=a.REPLACEMENT_CHARACTER;else if(i.isSurrogate(this.charRefCode))this._err(o.surrogateCharacterReference),this.charRefCode=a.REPLACEMENT_CHARACTER;else if(i.isUndefinedCodePoint(this.charRefCode))this._err(o.noncharacterCharacterReference);else if(i.isControlCodePoint(this.charRefCode)||this.charRefCode===a.CARRIAGE_RETURN){this._err(o.controlCharacterReference);const e=l[this.charRefCode];e&&(this.charRefCode=e)}this.tempBuff=[this.charRefCode],this._flushCodePointsConsumedAsCharacterReference(),this._reconsumeInState(this.returnState)}}Qe.CHARACTER_TOKEN="CHARACTER_TOKEN",Qe.NULL_CHARACTER_TOKEN="NULL_CHARACTER_TOKEN",Qe.WHITESPACE_CHARACTER_TOKEN="WHITESPACE_CHARACTER_TOKEN",Qe.START_TAG_TOKEN="START_TAG_TOKEN",Qe.END_TAG_TOKEN="END_TAG_TOKEN",Qe.COMMENT_TOKEN="COMMENT_TOKEN",Qe.DOCTYPE_TOKEN="DOCTYPE_TOKEN",Qe.EOF_TOKEN="EOF_TOKEN",Qe.HIBERNATION_TOKEN="HIBERNATION_TOKEN",Qe.MODE={DATA:u,RCDATA:h,RAWTEXT:p,SCRIPT_DATA:d,PLAINTEXT:f},Qe.getTokenAttr=function(e,t){for(let n=e.attrs.length-1;n>=0;n--)if(e.attrs[n].name===t)return e.attrs[n].value;return null},e.exports=Qe},5482:e=>{"use strict";e.exports=new Uint16Array([4,52,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,106,303,412,810,1432,1701,1796,1987,2114,2360,2420,2484,3170,3251,4140,4393,4575,4610,5106,5512,5728,6117,6274,6315,6345,6427,6516,7002,7910,8733,9323,9870,10170,10631,10893,11318,11386,11467,12773,13092,14474,14922,15448,15542,16419,17666,18166,18611,19004,19095,19298,19397,4,16,69,77,97,98,99,102,103,108,109,110,111,112,114,115,116,117,140,150,158,169,176,194,199,210,216,222,226,242,256,266,283,294,108,105,103,5,198,1,59,148,1,198,80,5,38,1,59,156,1,38,99,117,116,101,5,193,1,59,167,1,193,114,101,118,101,59,1,258,4,2,105,121,182,191,114,99,5,194,1,59,189,1,194,59,1,1040,114,59,3,55349,56580,114,97,118,101,5,192,1,59,208,1,192,112,104,97,59,1,913,97,99,114,59,1,256,100,59,1,10835,4,2,103,112,232,237,111,110,59,1,260,102,59,3,55349,56632,112,108,121,70,117,110,99,116,105,111,110,59,1,8289,105,110,103,5,197,1,59,264,1,197,4,2,99,115,272,277,114,59,3,55349,56476,105,103,110,59,1,8788,105,108,100,101,5,195,1,59,292,1,195,109,108,5,196,1,59,301,1,196,4,8,97,99,101,102,111,114,115,117,321,350,354,383,388,394,400,405,4,2,99,114,327,336,107,115,108,97,115,104,59,1,8726,4,2,118,119,342,345,59,1,10983,101,100,59,1,8966,121,59,1,1041,4,3,99,114,116,362,369,379,97,117,115,101,59,1,8757,110,111,117,108,108,105,115,59,1,8492,97,59,1,914,114,59,3,55349,56581,112,102,59,3,55349,56633,101,118,101,59,1,728,99,114,59,1,8492,109,112,101,113,59,1,8782,4,14,72,79,97,99,100,101,102,104,105,108,111,114,115,117,442,447,456,504,542,547,569,573,577,616,678,784,790,796,99,121,59,1,1063,80,89,5,169,1,59,454,1,169,4,3,99,112,121,464,470,497,117,116,101,59,1,262,4,2,59,105,476,478,1,8914,116,97,108,68,105,102,102,101,114,101,110,116,105,97,108,68,59,1,8517,108,101,121,115,59,1,8493,4,4,97,101,105,111,514,520,530,535,114,111,110,59,1,268,100,105,108,5,199,1,59,528,1,199,114,99,59,1,264,110,105,110,116,59,1,8752,111,116,59,1,266,4,2,100,110,553,560,105,108,108,97,59,1,184,116,101,114,68,111,116,59,1,183,114,59,1,8493,105,59,1,935,114,99,108,101,4,4,68,77,80,84,591,596,603,609,111,116,59,1,8857,105,110,117,115,59,1,8854,108,117,115,59,1,8853,105,109,101,115,59,1,8855,111,4,2,99,115,623,646,107,119,105,115,101,67,111,110,116,111,117,114,73,110,116,101,103,114,97,108,59,1,8754,101,67,117,114,108,121,4,2,68,81,658,671,111,117,98,108,101,81,117,111,116,101,59,1,8221,117,111,116,101,59,1,8217,4,4,108,110,112,117,688,701,736,753,111,110,4,2,59,101,696,698,1,8759,59,1,10868,4,3,103,105,116,709,717,722,114,117,101,110,116,59,1,8801,110,116,59,1,8751,111,117,114,73,110,116,101,103,114,97,108,59,1,8750,4,2,102,114,742,745,59,1,8450,111,100,117,99,116,59,1,8720,110,116,101,114,67,108,111,99,107,119,105,115,101,67,111,110,116,111,117,114,73,110,116,101,103,114,97,108,59,1,8755,111,115,115,59,1,10799,99,114,59,3,55349,56478,112,4,2,59,67,803,805,1,8915,97,112,59,1,8781,4,11,68,74,83,90,97,99,101,102,105,111,115,834,850,855,860,865,888,903,916,921,1011,1415,4,2,59,111,840,842,1,8517,116,114,97,104,100,59,1,10513,99,121,59,1,1026,99,121,59,1,1029,99,121,59,1,1039,4,3,103,114,115,873,879,883,103,101,114,59,1,8225,114,59,1,8609,104,118,59,1,10980,4,2,97,121,894,900,114,111,110,59,1,270,59,1,1044,108,4,2,59,116,910,912,1,8711,97,59,1,916,114,59,3,55349,56583,4,2,97,102,927,998,4,2,99,109,933,992,114,105,116,105,99,97,108,4,4,65,68,71,84,950,957,978,985,99,117,116,101,59,1,180,111,4,2,116,117,964,967,59,1,729,98,108,101,65,99,117,116,101,59,1,733,114,97,118,101,59,1,96,105,108,100,101,59,1,732,111,110,100,59,1,8900,102,101,114,101,110,116,105,97,108,68,59,1,8518,4,4,112,116,117,119,1021,1026,1048,1249,102,59,3,55349,56635,4,3,59,68,69,1034,1036,1041,1,168,111,116,59,1,8412,113,117,97,108,59,1,8784,98,108,101,4,6,67,68,76,82,85,86,1065,1082,1101,1189,1211,1236,111,110,116,111,117,114,73,110,116,101,103,114,97,108,59,1,8751,111,4,2,116,119,1089,1092,59,1,168,110,65,114,114,111,119,59,1,8659,4,2,101,111,1107,1141,102,116,4,3,65,82,84,1117,1124,1136,114,114,111,119,59,1,8656,105,103,104,116,65,114,114,111,119,59,1,8660,101,101,59,1,10980,110,103,4,2,76,82,1149,1177,101,102,116,4,2,65,82,1158,1165,114,114,111,119,59,1,10232,105,103,104,116,65,114,114,111,119,59,1,10234,105,103,104,116,65,114,114,111,119,59,1,10233,105,103,104,116,4,2,65,84,1199,1206,114,114,111,119,59,1,8658,101,101,59,1,8872,112,4,2,65,68,1218,1225,114,114,111,119,59,1,8657,111,119,110,65,114,114,111,119,59,1,8661,101,114,116,105,99,97,108,66,97,114,59,1,8741,110,4,6,65,66,76,82,84,97,1264,1292,1299,1352,1391,1408,114,114,111,119,4,3,59,66,85,1276,1278,1283,1,8595,97,114,59,1,10515,112,65,114,114,111,119,59,1,8693,114,101,118,101,59,1,785,101,102,116,4,3,82,84,86,1310,1323,1334,105,103,104,116,86,101,99,116,111,114,59,1,10576,101,101,86,101,99,116,111,114,59,1,10590,101,99,116,111,114,4,2,59,66,1345,1347,1,8637,97,114,59,1,10582,105,103,104,116,4,2,84,86,1362,1373,101,101,86,101,99,116,111,114,59,1,10591,101,99,116,111,114,4,2,59,66,1384,1386,1,8641,97,114,59,1,10583,101,101,4,2,59,65,1399,1401,1,8868,114,114,111,119,59,1,8615,114,114,111,119,59,1,8659,4,2,99,116,1421,1426,114,59,3,55349,56479,114,111,107,59,1,272,4,16,78,84,97,99,100,102,103,108,109,111,112,113,115,116,117,120,1466,1470,1478,1489,1515,1520,1525,1536,1544,1593,1609,1617,1650,1664,1668,1677,71,59,1,330,72,5,208,1,59,1476,1,208,99,117,116,101,5,201,1,59,1487,1,201,4,3,97,105,121,1497,1503,1512,114,111,110,59,1,282,114,99,5,202,1,59,1510,1,202,59,1,1069,111,116,59,1,278,114,59,3,55349,56584,114,97,118,101,5,200,1,59,1534,1,200,101,109,101,110,116,59,1,8712,4,2,97,112,1550,1555,99,114,59,1,274,116,121,4,2,83,86,1563,1576,109,97,108,108,83,113,117,97,114,101,59,1,9723,101,114,121,83,109,97,108,108,83,113,117,97,114,101,59,1,9643,4,2,103,112,1599,1604,111,110,59,1,280,102,59,3,55349,56636,115,105,108,111,110,59,1,917,117,4,2,97,105,1624,1640,108,4,2,59,84,1631,1633,1,10869,105,108,100,101,59,1,8770,108,105,98,114,105,117,109,59,1,8652,4,2,99,105,1656,1660,114,59,1,8496,109,59,1,10867,97,59,1,919,109,108,5,203,1,59,1675,1,203,4,2,105,112,1683,1689,115,116,115,59,1,8707,111,110,101,110,116,105,97,108,69,59,1,8519,4,5,99,102,105,111,115,1713,1717,1722,1762,1791,121,59,1,1060,114,59,3,55349,56585,108,108,101,100,4,2,83,86,1732,1745,109,97,108,108,83,113,117,97,114,101,59,1,9724,101,114,121,83,109,97,108,108,83,113,117,97,114,101,59,1,9642,4,3,112,114,117,1770,1775,1781,102,59,3,55349,56637,65,108,108,59,1,8704,114,105,101,114,116,114,102,59,1,8497,99,114,59,1,8497,4,12,74,84,97,98,99,100,102,103,111,114,115,116,1822,1827,1834,1848,1855,1877,1882,1887,1890,1896,1978,1984,99,121,59,1,1027,5,62,1,59,1832,1,62,109,109,97,4,2,59,100,1843,1845,1,915,59,1,988,114,101,118,101,59,1,286,4,3,101,105,121,1863,1869,1874,100,105,108,59,1,290,114,99,59,1,284,59,1,1043,111,116,59,1,288,114,59,3,55349,56586,59,1,8921,112,102,59,3,55349,56638,101,97,116,101,114,4,6,69,70,71,76,83,84,1915,1933,1944,1953,1959,1971,113,117,97,108,4,2,59,76,1925,1927,1,8805,101,115,115,59,1,8923,117,108,108,69,113,117,97,108,59,1,8807,114,101,97,116,101,114,59,1,10914,101,115,115,59,1,8823,108,97,110,116,69,113,117,97,108,59,1,10878,105,108,100,101,59,1,8819,99,114,59,3,55349,56482,59,1,8811,4,8,65,97,99,102,105,111,115,117,2005,2012,2026,2032,2036,2049,2073,2089,82,68,99,121,59,1,1066,4,2,99,116,2018,2023,101,107,59,1,711,59,1,94,105,114,99,59,1,292,114,59,1,8460,108,98,101,114,116,83,112,97,99,101,59,1,8459,4,2,112,114,2055,2059,102,59,1,8461,105,122,111,110,116,97,108,76,105,110,101,59,1,9472,4,2,99,116,2079,2083,114,59,1,8459,114,111,107,59,1,294,109,112,4,2,68,69,2097,2107,111,119,110,72,117,109,112,59,1,8782,113,117,97,108,59,1,8783,4,14,69,74,79,97,99,100,102,103,109,110,111,115,116,117,2144,2149,2155,2160,2171,2189,2194,2198,2209,2245,2307,2329,2334,2341,99,121,59,1,1045,108,105,103,59,1,306,99,121,59,1,1025,99,117,116,101,5,205,1,59,2169,1,205,4,2,105,121,2177,2186,114,99,5,206,1,59,2184,1,206,59,1,1048,111,116,59,1,304,114,59,1,8465,114,97,118,101,5,204,1,59,2207,1,204,4,3,59,97,112,2217,2219,2238,1,8465,4,2,99,103,2225,2229,114,59,1,298,105,110,97,114,121,73,59,1,8520,108,105,101,115,59,1,8658,4,2,116,118,2251,2281,4,2,59,101,2257,2259,1,8748,4,2,103,114,2265,2271,114,97,108,59,1,8747,115,101,99,116,105,111,110,59,1,8898,105,115,105,98,108,101,4,2,67,84,2293,2300,111,109,109,97,59,1,8291,105,109,101,115,59,1,8290,4,3,103,112,116,2315,2320,2325,111,110,59,1,302,102,59,3,55349,56640,97,59,1,921,99,114,59,1,8464,105,108,100,101,59,1,296,4,2,107,109,2347,2352,99,121,59,1,1030,108,5,207,1,59,2358,1,207,4,5,99,102,111,115,117,2372,2386,2391,2397,2414,4,2,105,121,2378,2383,114,99,59,1,308,59,1,1049,114,59,3,55349,56589,112,102,59,3,55349,56641,4,2,99,101,2403,2408,114,59,3,55349,56485,114,99,121,59,1,1032,107,99,121,59,1,1028,4,7,72,74,97,99,102,111,115,2436,2441,2446,2452,2467,2472,2478,99,121,59,1,1061,99,121,59,1,1036,112,112,97,59,1,922,4,2,101,121,2458,2464,100,105,108,59,1,310,59,1,1050,114,59,3,55349,56590,112,102,59,3,55349,56642,99,114,59,3,55349,56486,4,11,74,84,97,99,101,102,108,109,111,115,116,2508,2513,2520,2562,2585,2981,2986,3004,3011,3146,3167,99,121,59,1,1033,5,60,1,59,2518,1,60,4,5,99,109,110,112,114,2532,2538,2544,2548,2558,117,116,101,59,1,313,98,100,97,59,1,923,103,59,1,10218,108,97,99,101,116,114,102,59,1,8466,114,59,1,8606,4,3,97,101,121,2570,2576,2582,114,111,110,59,1,317,100,105,108,59,1,315,59,1,1051,4,2,102,115,2591,2907,116,4,10,65,67,68,70,82,84,85,86,97,114,2614,2663,2672,2728,2735,2760,2820,2870,2888,2895,4,2,110,114,2620,2633,103,108,101,66,114,97,99,107,101,116,59,1,10216,114,111,119,4,3,59,66,82,2644,2646,2651,1,8592,97,114,59,1,8676,105,103,104,116,65,114,114,111,119,59,1,8646,101,105,108,105,110,103,59,1,8968,111,4,2,117,119,2679,2692,98,108,101,66,114,97,99,107,101,116,59,1,10214,110,4,2,84,86,2699,2710,101,101,86,101,99,116,111,114,59,1,10593,101,99,116,111,114,4,2,59,66,2721,2723,1,8643,97,114,59,1,10585,108,111,111,114,59,1,8970,105,103,104,116,4,2,65,86,2745,2752,114,114,111,119,59,1,8596,101,99,116,111,114,59,1,10574,4,2,101,114,2766,2792,101,4,3,59,65,86,2775,2777,2784,1,8867,114,114,111,119,59,1,8612,101,99,116,111,114,59,1,10586,105,97,110,103,108,101,4,3,59,66,69,2806,2808,2813,1,8882,97,114,59,1,10703,113,117,97,108,59,1,8884,112,4,3,68,84,86,2829,2841,2852,111,119,110,86,101,99,116,111,114,59,1,10577,101,101,86,101,99,116,111,114,59,1,10592,101,99,116,111,114,4,2,59,66,2863,2865,1,8639,97,114,59,1,10584,101,99,116,111,114,4,2,59,66,2881,2883,1,8636,97,114,59,1,10578,114,114,111,119,59,1,8656,105,103,104,116,97,114,114,111,119,59,1,8660,115,4,6,69,70,71,76,83,84,2922,2936,2947,2956,2962,2974,113,117,97,108,71,114,101,97,116,101,114,59,1,8922,117,108,108,69,113,117,97,108,59,1,8806,114,101,97,116,101,114,59,1,8822,101,115,115,59,1,10913,108,97,110,116,69,113,117,97,108,59,1,10877,105,108,100,101,59,1,8818,114,59,3,55349,56591,4,2,59,101,2992,2994,1,8920,102,116,97,114,114,111,119,59,1,8666,105,100,111,116,59,1,319,4,3,110,112,119,3019,3110,3115,103,4,4,76,82,108,114,3030,3058,3070,3098,101,102,116,4,2,65,82,3039,3046,114,114,111,119,59,1,10229,105,103,104,116,65,114,114,111,119,59,1,10231,105,103,104,116,65,114,114,111,119,59,1,10230,101,102,116,4,2,97,114,3079,3086,114,114,111,119,59,1,10232,105,103,104,116,97,114,114,111,119,59,1,10234,105,103,104,116,97,114,114,111,119,59,1,10233,102,59,3,55349,56643,101,114,4,2,76,82,3123,3134,101,102,116,65,114,114,111,119,59,1,8601,105,103,104,116,65,114,114,111,119,59,1,8600,4,3,99,104,116,3154,3158,3161,114,59,1,8466,59,1,8624,114,111,107,59,1,321,59,1,8810,4,8,97,99,101,102,105,111,115,117,3188,3192,3196,3222,3227,3237,3243,3248,112,59,1,10501,121,59,1,1052,4,2,100,108,3202,3213,105,117,109,83,112,97,99,101,59,1,8287,108,105,110,116,114,102,59,1,8499,114,59,3,55349,56592,110,117,115,80,108,117,115,59,1,8723,112,102,59,3,55349,56644,99,114,59,1,8499,59,1,924,4,9,74,97,99,101,102,111,115,116,117,3271,3276,3283,3306,3422,3427,4120,4126,4137,99,121,59,1,1034,99,117,116,101,59,1,323,4,3,97,101,121,3291,3297,3303,114,111,110,59,1,327,100,105,108,59,1,325,59,1,1053,4,3,103,115,119,3314,3380,3415,97,116,105,118,101,4,3,77,84,86,3327,3340,3365,101,100,105,117,109,83,112,97,99,101,59,1,8203,104,105,4,2,99,110,3348,3357,107,83,112,97,99,101,59,1,8203,83,112,97,99,101,59,1,8203,101,114,121,84,104,105,110,83,112,97,99,101,59,1,8203,116,101,100,4,2,71,76,3389,3405,114,101,97,116,101,114,71,114,101,97,116,101,114,59,1,8811,101,115,115,76,101,115,115,59,1,8810,76,105,110,101,59,1,10,114,59,3,55349,56593,4,4,66,110,112,116,3437,3444,3460,3464,114,101,97,107,59,1,8288,66,114,101,97,107,105,110,103,83,112,97,99,101,59,1,160,102,59,1,8469,4,13,59,67,68,69,71,72,76,78,80,82,83,84,86,3492,3494,3517,3536,3578,3657,3685,3784,3823,3860,3915,4066,4107,1,10988,4,2,111,117,3500,3510,110,103,114,117,101,110,116,59,1,8802,112,67,97,112,59,1,8813,111,117,98,108,101,86,101,114,116,105,99,97,108,66,97,114,59,1,8742,4,3,108,113,120,3544,3552,3571,101,109,101,110,116,59,1,8713,117,97,108,4,2,59,84,3561,3563,1,8800,105,108,100,101,59,3,8770,824,105,115,116,115,59,1,8708,114,101,97,116,101,114,4,7,59,69,70,71,76,83,84,3600,3602,3609,3621,3631,3637,3650,1,8815,113,117,97,108,59,1,8817,117,108,108,69,113,117,97,108,59,3,8807,824,114,101,97,116,101,114,59,3,8811,824,101,115,115,59,1,8825,108,97,110,116,69,113,117,97,108,59,3,10878,824,105,108,100,101,59,1,8821,117,109,112,4,2,68,69,3666,3677,111,119,110,72,117,109,112,59,3,8782,824,113,117,97,108,59,3,8783,824,101,4,2,102,115,3692,3724,116,84,114,105,97,110,103,108,101,4,3,59,66,69,3709,3711,3717,1,8938,97,114,59,3,10703,824,113,117,97,108,59,1,8940,115,4,6,59,69,71,76,83,84,3739,3741,3748,3757,3764,3777,1,8814,113,117,97,108,59,1,8816,114,101,97,116,101,114,59,1,8824,101,115,115,59,3,8810,824,108,97,110,116,69,113,117,97,108,59,3,10877,824,105,108,100,101,59,1,8820,101,115,116,101,100,4,2,71,76,3795,3812,114,101,97,116,101,114,71,114,101,97,116,101,114,59,3,10914,824,101,115,115,76,101,115,115,59,3,10913,824,114,101,99,101,100,101,115,4,3,59,69,83,3838,3840,3848,1,8832,113,117,97,108,59,3,10927,824,108,97,110,116,69,113,117,97,108,59,1,8928,4,2,101,105,3866,3881,118,101,114,115,101,69,108,101,109,101,110,116,59,1,8716,103,104,116,84,114,105,97,110,103,108,101,4,3,59,66,69,3900,3902,3908,1,8939,97,114,59,3,10704,824,113,117,97,108,59,1,8941,4,2,113,117,3921,3973,117,97,114,101,83,117,4,2,98,112,3933,3952,115,101,116,4,2,59,69,3942,3945,3,8847,824,113,117,97,108,59,1,8930,101,114,115,101,116,4,2,59,69,3963,3966,3,8848,824,113,117,97,108,59,1,8931,4,3,98,99,112,3981,4e3,4045,115,101,116,4,2,59,69,3990,3993,3,8834,8402,113,117,97,108,59,1,8840,99,101,101,100,115,4,4,59,69,83,84,4015,4017,4025,4037,1,8833,113,117,97,108,59,3,10928,824,108,97,110,116,69,113,117,97,108,59,1,8929,105,108,100,101,59,3,8831,824,101,114,115,101,116,4,2,59,69,4056,4059,3,8835,8402,113,117,97,108,59,1,8841,105,108,100,101,4,4,59,69,70,84,4080,4082,4089,4100,1,8769,113,117,97,108,59,1,8772,117,108,108,69,113,117,97,108,59,1,8775,105,108,100,101,59,1,8777,101,114,116,105,99,97,108,66,97,114,59,1,8740,99,114,59,3,55349,56489,105,108,100,101,5,209,1,59,4135,1,209,59,1,925,4,14,69,97,99,100,102,103,109,111,112,114,115,116,117,118,4170,4176,4187,4205,4212,4217,4228,4253,4259,4292,4295,4316,4337,4346,108,105,103,59,1,338,99,117,116,101,5,211,1,59,4185,1,211,4,2,105,121,4193,4202,114,99,5,212,1,59,4200,1,212,59,1,1054,98,108,97,99,59,1,336,114,59,3,55349,56594,114,97,118,101,5,210,1,59,4226,1,210,4,3,97,101,105,4236,4241,4246,99,114,59,1,332,103,97,59,1,937,99,114,111,110,59,1,927,112,102,59,3,55349,56646,101,110,67,117,114,108,121,4,2,68,81,4272,4285,111,117,98,108,101,81,117,111,116,101,59,1,8220,117,111,116,101,59,1,8216,59,1,10836,4,2,99,108,4301,4306,114,59,3,55349,56490,97,115,104,5,216,1,59,4314,1,216,105,4,2,108,109,4323,4332,100,101,5,213,1,59,4330,1,213,101,115,59,1,10807,109,108,5,214,1,59,4344,1,214,101,114,4,2,66,80,4354,4380,4,2,97,114,4360,4364,114,59,1,8254,97,99,4,2,101,107,4372,4375,59,1,9182,101,116,59,1,9140,97,114,101,110,116,104,101,115,105,115,59,1,9180,4,9,97,99,102,104,105,108,111,114,115,4413,4422,4426,4431,4435,4438,4448,4471,4561,114,116,105,97,108,68,59,1,8706,121,59,1,1055,114,59,3,55349,56595,105,59,1,934,59,1,928,117,115,77,105,110,117,115,59,1,177,4,2,105,112,4454,4467,110,99,97,114,101,112,108,97,110,101,59,1,8460,102,59,1,8473,4,4,59,101,105,111,4481,4483,4526,4531,1,10939,99,101,100,101,115,4,4,59,69,83,84,4498,4500,4507,4519,1,8826,113,117,97,108,59,1,10927,108,97,110,116,69,113,117,97,108,59,1,8828,105,108,100,101,59,1,8830,109,101,59,1,8243,4,2,100,112,4537,4543,117,99,116,59,1,8719,111,114,116,105,111,110,4,2,59,97,4555,4557,1,8759,108,59,1,8733,4,2,99,105,4567,4572,114,59,3,55349,56491,59,1,936,4,4,85,102,111,115,4585,4594,4599,4604,79,84,5,34,1,59,4592,1,34,114,59,3,55349,56596,112,102,59,1,8474,99,114,59,3,55349,56492,4,12,66,69,97,99,101,102,104,105,111,114,115,117,4636,4642,4650,4681,4704,4763,4767,4771,5047,5069,5081,5094,97,114,114,59,1,10512,71,5,174,1,59,4648,1,174,4,3,99,110,114,4658,4664,4668,117,116,101,59,1,340,103,59,1,10219,114,4,2,59,116,4675,4677,1,8608,108,59,1,10518,4,3,97,101,121,4689,4695,4701,114,111,110,59,1,344,100,105,108,59,1,342,59,1,1056,4,2,59,118,4710,4712,1,8476,101,114,115,101,4,2,69,85,4722,4748,4,2,108,113,4728,4736,101,109,101,110,116,59,1,8715,117,105,108,105,98,114,105,117,109,59,1,8651,112,69,113,117,105,108,105,98,114,105,117,109,59,1,10607,114,59,1,8476,111,59,1,929,103,104,116,4,8,65,67,68,70,84,85,86,97,4792,4840,4849,4905,4912,4972,5022,5040,4,2,110,114,4798,4811,103,108,101,66,114,97,99,107,101,116,59,1,10217,114,111,119,4,3,59,66,76,4822,4824,4829,1,8594,97,114,59,1,8677,101,102,116,65,114,114,111,119,59,1,8644,101,105,108,105,110,103,59,1,8969,111,4,2,117,119,4856,4869,98,108,101,66,114,97,99,107,101,116,59,1,10215,110,4,2,84,86,4876,4887,101,101,86,101,99,116,111,114,59,1,10589,101,99,116,111,114,4,2,59,66,4898,4900,1,8642,97,114,59,1,10581,108,111,111,114,59,1,8971,4,2,101,114,4918,4944,101,4,3,59,65,86,4927,4929,4936,1,8866,114,114,111,119,59,1,8614,101,99,116,111,114,59,1,10587,105,97,110,103,108,101,4,3,59,66,69,4958,4960,4965,1,8883,97,114,59,1,10704,113,117,97,108,59,1,8885,112,4,3,68,84,86,4981,4993,5004,111,119,110,86,101,99,116,111,114,59,1,10575,101,101,86,101,99,116,111,114,59,1,10588,101,99,116,111,114,4,2,59,66,5015,5017,1,8638,97,114,59,1,10580,101,99,116,111,114,4,2,59,66,5033,5035,1,8640,97,114,59,1,10579,114,114,111,119,59,1,8658,4,2,112,117,5053,5057,102,59,1,8477,110,100,73,109,112,108,105,101,115,59,1,10608,105,103,104,116,97,114,114,111,119,59,1,8667,4,2,99,104,5087,5091,114,59,1,8475,59,1,8625,108,101,68,101,108,97,121,101,100,59,1,10740,4,13,72,79,97,99,102,104,105,109,111,113,115,116,117,5134,5150,5157,5164,5198,5203,5259,5265,5277,5283,5374,5380,5385,4,2,67,99,5140,5146,72,99,121,59,1,1065,121,59,1,1064,70,84,99,121,59,1,1068,99,117,116,101,59,1,346,4,5,59,97,101,105,121,5176,5178,5184,5190,5195,1,10940,114,111,110,59,1,352,100,105,108,59,1,350,114,99,59,1,348,59,1,1057,114,59,3,55349,56598,111,114,116,4,4,68,76,82,85,5216,5227,5238,5250,111,119,110,65,114,114,111,119,59,1,8595,101,102,116,65,114,114,111,119,59,1,8592,105,103,104,116,65,114,114,111,119,59,1,8594,112,65,114,114,111,119,59,1,8593,103,109,97,59,1,931,97,108,108,67,105,114,99,108,101,59,1,8728,112,102,59,3,55349,56650,4,2,114,117,5289,5293,116,59,1,8730,97,114,101,4,4,59,73,83,85,5306,5308,5322,5367,1,9633,110,116,101,114,115,101,99,116,105,111,110,59,1,8851,117,4,2,98,112,5329,5347,115,101,116,4,2,59,69,5338,5340,1,8847,113,117,97,108,59,1,8849,101,114,115,101,116,4,2,59,69,5358,5360,1,8848,113,117,97,108,59,1,8850,110,105,111,110,59,1,8852,99,114,59,3,55349,56494,97,114,59,1,8902,4,4,98,99,109,112,5395,5420,5475,5478,4,2,59,115,5401,5403,1,8912,101,116,4,2,59,69,5411,5413,1,8912,113,117,97,108,59,1,8838,4,2,99,104,5426,5468,101,101,100,115,4,4,59,69,83,84,5440,5442,5449,5461,1,8827,113,117,97,108,59,1,10928,108,97,110,116,69,113,117,97,108,59,1,8829,105,108,100,101,59,1,8831,84,104,97,116,59,1,8715,59,1,8721,4,3,59,101,115,5486,5488,5507,1,8913,114,115,101,116,4,2,59,69,5498,5500,1,8835,113,117,97,108,59,1,8839,101,116,59,1,8913,4,11,72,82,83,97,99,102,104,105,111,114,115,5536,5546,5552,5567,5579,5602,5607,5655,5695,5701,5711,79,82,78,5,222,1,59,5544,1,222,65,68,69,59,1,8482,4,2,72,99,5558,5563,99,121,59,1,1035,121,59,1,1062,4,2,98,117,5573,5576,59,1,9,59,1,932,4,3,97,101,121,5587,5593,5599,114,111,110,59,1,356,100,105,108,59,1,354,59,1,1058,114,59,3,55349,56599,4,2,101,105,5613,5631,4,2,114,116,5619,5627,101,102,111,114,101,59,1,8756,97,59,1,920,4,2,99,110,5637,5647,107,83,112,97,99,101,59,3,8287,8202,83,112,97,99,101,59,1,8201,108,100,101,4,4,59,69,70,84,5668,5670,5677,5688,1,8764,113,117,97,108,59,1,8771,117,108,108,69,113,117,97,108,59,1,8773,105,108,100,101,59,1,8776,112,102,59,3,55349,56651,105,112,108,101,68,111,116,59,1,8411,4,2,99,116,5717,5722,114,59,3,55349,56495,114,111,107,59,1,358,4,14,97,98,99,100,102,103,109,110,111,112,114,115,116,117,5758,5789,5805,5823,5830,5835,5846,5852,5921,5937,6089,6095,6101,6108,4,2,99,114,5764,5774,117,116,101,5,218,1,59,5772,1,218,114,4,2,59,111,5781,5783,1,8607,99,105,114,59,1,10569,114,4,2,99,101,5796,5800,121,59,1,1038,118,101,59,1,364,4,2,105,121,5811,5820,114,99,5,219,1,59,5818,1,219,59,1,1059,98,108,97,99,59,1,368,114,59,3,55349,56600,114,97,118,101,5,217,1,59,5844,1,217,97,99,114,59,1,362,4,2,100,105,5858,5905,101,114,4,2,66,80,5866,5892,4,2,97,114,5872,5876,114,59,1,95,97,99,4,2,101,107,5884,5887,59,1,9183,101,116,59,1,9141,97,114,101,110,116,104,101,115,105,115,59,1,9181,111,110,4,2,59,80,5913,5915,1,8899,108,117,115,59,1,8846,4,2,103,112,5927,5932,111,110,59,1,370,102,59,3,55349,56652,4,8,65,68,69,84,97,100,112,115,5955,5985,5996,6009,6026,6033,6044,6075,114,114,111,119,4,3,59,66,68,5967,5969,5974,1,8593,97,114,59,1,10514,111,119,110,65,114,114,111,119,59,1,8645,111,119,110,65,114,114,111,119,59,1,8597,113,117,105,108,105,98,114,105,117,109,59,1,10606,101,101,4,2,59,65,6017,6019,1,8869,114,114,111,119,59,1,8613,114,114,111,119,59,1,8657,111,119,110,97,114,114,111,119,59,1,8661,101,114,4,2,76,82,6052,6063,101,102,116,65,114,114,111,119,59,1,8598,105,103,104,116,65,114,114,111,119,59,1,8599,105,4,2,59,108,6082,6084,1,978,111,110,59,1,933,105,110,103,59,1,366,99,114,59,3,55349,56496,105,108,100,101,59,1,360,109,108,5,220,1,59,6115,1,220,4,9,68,98,99,100,101,102,111,115,118,6137,6143,6148,6152,6166,6250,6255,6261,6267,97,115,104,59,1,8875,97,114,59,1,10987,121,59,1,1042,97,115,104,4,2,59,108,6161,6163,1,8873,59,1,10982,4,2,101,114,6172,6175,59,1,8897,4,3,98,116,121,6183,6188,6238,97,114,59,1,8214,4,2,59,105,6194,6196,1,8214,99,97,108,4,4,66,76,83,84,6209,6214,6220,6231,97,114,59,1,8739,105,110,101,59,1,124,101,112,97,114,97,116,111,114,59,1,10072,105,108,100,101,59,1,8768,84,104,105,110,83,112,97,99,101,59,1,8202,114,59,3,55349,56601,112,102,59,3,55349,56653,99,114,59,3,55349,56497,100,97,115,104,59,1,8874,4,5,99,101,102,111,115,6286,6292,6298,6303,6309,105,114,99,59,1,372,100,103,101,59,1,8896,114,59,3,55349,56602,112,102,59,3,55349,56654,99,114,59,3,55349,56498,4,4,102,105,111,115,6325,6330,6333,6339,114,59,3,55349,56603,59,1,926,112,102,59,3,55349,56655,99,114,59,3,55349,56499,4,9,65,73,85,97,99,102,111,115,117,6365,6370,6375,6380,6391,6405,6410,6416,6422,99,121,59,1,1071,99,121,59,1,1031,99,121,59,1,1070,99,117,116,101,5,221,1,59,6389,1,221,4,2,105,121,6397,6402,114,99,59,1,374,59,1,1067,114,59,3,55349,56604,112,102,59,3,55349,56656,99,114,59,3,55349,56500,109,108,59,1,376,4,8,72,97,99,100,101,102,111,115,6445,6450,6457,6472,6477,6501,6505,6510,99,121,59,1,1046,99,117,116,101,59,1,377,4,2,97,121,6463,6469,114,111,110,59,1,381,59,1,1047,111,116,59,1,379,4,2,114,116,6483,6497,111,87,105,100,116,104,83,112,97,99,101,59,1,8203,97,59,1,918,114,59,1,8488,112,102,59,1,8484,99,114,59,3,55349,56501,4,16,97,98,99,101,102,103,108,109,110,111,112,114,115,116,117,119,6550,6561,6568,6612,6622,6634,6645,6672,6699,6854,6870,6923,6933,6963,6974,6983,99,117,116,101,5,225,1,59,6559,1,225,114,101,118,101,59,1,259,4,6,59,69,100,105,117,121,6582,6584,6588,6591,6600,6609,1,8766,59,3,8766,819,59,1,8767,114,99,5,226,1,59,6598,1,226,116,101,5,180,1,59,6607,1,180,59,1,1072,108,105,103,5,230,1,59,6620,1,230,4,2,59,114,6628,6630,1,8289,59,3,55349,56606,114,97,118,101,5,224,1,59,6643,1,224,4,2,101,112,6651,6667,4,2,102,112,6657,6663,115,121,109,59,1,8501,104,59,1,8501,104,97,59,1,945,4,2,97,112,6678,6692,4,2,99,108,6684,6688,114,59,1,257,103,59,1,10815,5,38,1,59,6697,1,38,4,2,100,103,6705,6737,4,5,59,97,100,115,118,6717,6719,6724,6727,6734,1,8743,110,100,59,1,10837,59,1,10844,108,111,112,101,59,1,10840,59,1,10842,4,7,59,101,108,109,114,115,122,6753,6755,6758,6762,6814,6835,6848,1,8736,59,1,10660,101,59,1,8736,115,100,4,2,59,97,6770,6772,1,8737,4,8,97,98,99,100,101,102,103,104,6790,6793,6796,6799,6802,6805,6808,6811,59,1,10664,59,1,10665,59,1,10666,59,1,10667,59,1,10668,59,1,10669,59,1,10670,59,1,10671,116,4,2,59,118,6821,6823,1,8735,98,4,2,59,100,6830,6832,1,8894,59,1,10653,4,2,112,116,6841,6845,104,59,1,8738,59,1,197,97,114,114,59,1,9084,4,2,103,112,6860,6865,111,110,59,1,261,102,59,3,55349,56658,4,7,59,69,97,101,105,111,112,6886,6888,6891,6897,6900,6904,6908,1,8776,59,1,10864,99,105,114,59,1,10863,59,1,8778,100,59,1,8779,115,59,1,39,114,111,120,4,2,59,101,6917,6919,1,8776,113,59,1,8778,105,110,103,5,229,1,59,6931,1,229,4,3,99,116,121,6941,6946,6949,114,59,3,55349,56502,59,1,42,109,112,4,2,59,101,6957,6959,1,8776,113,59,1,8781,105,108,100,101,5,227,1,59,6972,1,227,109,108,5,228,1,59,6981,1,228,4,2,99,105,6989,6997,111,110,105,110,116,59,1,8755,110,116,59,1,10769,4,16,78,97,98,99,100,101,102,105,107,108,110,111,112,114,115,117,7036,7041,7119,7135,7149,7155,7219,7224,7347,7354,7463,7489,7786,7793,7814,7866,111,116,59,1,10989,4,2,99,114,7047,7094,107,4,4,99,101,112,115,7058,7064,7073,7080,111,110,103,59,1,8780,112,115,105,108,111,110,59,1,1014,114,105,109,101,59,1,8245,105,109,4,2,59,101,7088,7090,1,8765,113,59,1,8909,4,2,118,119,7100,7105,101,101,59,1,8893,101,100,4,2,59,103,7113,7115,1,8965,101,59,1,8965,114,107,4,2,59,116,7127,7129,1,9141,98,114,107,59,1,9142,4,2,111,121,7141,7146,110,103,59,1,8780,59,1,1073,113,117,111,59,1,8222,4,5,99,109,112,114,116,7167,7181,7188,7193,7199,97,117,115,4,2,59,101,7176,7178,1,8757,59,1,8757,112,116,121,118,59,1,10672,115,105,59,1,1014,110,111,117,59,1,8492,4,3,97,104,119,7207,7210,7213,59,1,946,59,1,8502,101,101,110,59,1,8812,114,59,3,55349,56607,103,4,7,99,111,115,116,117,118,119,7241,7262,7288,7305,7328,7335,7340,4,3,97,105,117,7249,7253,7258,112,59,1,8898,114,99,59,1,9711,112,59,1,8899,4,3,100,112,116,7270,7275,7281,111,116,59,1,10752,108,117,115,59,1,10753,105,109,101,115,59,1,10754,4,2,113,116,7294,7300,99,117,112,59,1,10758,97,114,59,1,9733,114,105,97,110,103,108,101,4,2,100,117,7318,7324,111,119,110,59,1,9661,112,59,1,9651,112,108,117,115,59,1,10756,101,101,59,1,8897,101,100,103,101,59,1,8896,97,114,111,119,59,1,10509,4,3,97,107,111,7362,7436,7458,4,2,99,110,7368,7432,107,4,3,108,115,116,7377,7386,7394,111,122,101,110,103,101,59,1,10731,113,117,97,114,101,59,1,9642,114,105,97,110,103,108,101,4,4,59,100,108,114,7411,7413,7419,7425,1,9652,111,119,110,59,1,9662,101,102,116,59,1,9666,105,103,104,116,59,1,9656,107,59,1,9251,4,2,49,51,7442,7454,4,2,50,52,7448,7451,59,1,9618,59,1,9617,52,59,1,9619,99,107,59,1,9608,4,2,101,111,7469,7485,4,2,59,113,7475,7478,3,61,8421,117,105,118,59,3,8801,8421,116,59,1,8976,4,4,112,116,119,120,7499,7504,7517,7523,102,59,3,55349,56659,4,2,59,116,7510,7512,1,8869,111,109,59,1,8869,116,105,101,59,1,8904,4,12,68,72,85,86,98,100,104,109,112,116,117,118,7549,7571,7597,7619,7655,7660,7682,7708,7715,7721,7728,7750,4,4,76,82,108,114,7559,7562,7565,7568,59,1,9559,59,1,9556,59,1,9558,59,1,9555,4,5,59,68,85,100,117,7583,7585,7588,7591,7594,1,9552,59,1,9574,59,1,9577,59,1,9572,59,1,9575,4,4,76,82,108,114,7607,7610,7613,7616,59,1,9565,59,1,9562,59,1,9564,59,1,9561,4,7,59,72,76,82,104,108,114,7635,7637,7640,7643,7646,7649,7652,1,9553,59,1,9580,59,1,9571,59,1,9568,59,1,9579,59,1,9570,59,1,9567,111,120,59,1,10697,4,4,76,82,108,114,7670,7673,7676,7679,59,1,9557,59,1,9554,59,1,9488,59,1,9484,4,5,59,68,85,100,117,7694,7696,7699,7702,7705,1,9472,59,1,9573,59,1,9576,59,1,9516,59,1,9524,105,110,117,115,59,1,8863,108,117,115,59,1,8862,105,109,101,115,59,1,8864,4,4,76,82,108,114,7738,7741,7744,7747,59,1,9563,59,1,9560,59,1,9496,59,1,9492,4,7,59,72,76,82,104,108,114,7766,7768,7771,7774,7777,7780,7783,1,9474,59,1,9578,59,1,9569,59,1,9566,59,1,9532,59,1,9508,59,1,9500,114,105,109,101,59,1,8245,4,2,101,118,7799,7804,118,101,59,1,728,98,97,114,5,166,1,59,7812,1,166,4,4,99,101,105,111,7824,7829,7834,7846,114,59,3,55349,56503,109,105,59,1,8271,109,4,2,59,101,7841,7843,1,8765,59,1,8909,108,4,3,59,98,104,7855,7857,7860,1,92,59,1,10693,115,117,98,59,1,10184,4,2,108,109,7872,7885,108,4,2,59,101,7879,7881,1,8226,116,59,1,8226,112,4,3,59,69,101,7894,7896,7899,1,8782,59,1,10926,4,2,59,113,7905,7907,1,8783,59,1,8783,4,15,97,99,100,101,102,104,105,108,111,114,115,116,117,119,121,7942,8021,8075,8080,8121,8126,8157,8279,8295,8430,8446,8485,8491,8707,8726,4,3,99,112,114,7950,7956,8007,117,116,101,59,1,263,4,6,59,97,98,99,100,115,7970,7972,7977,7984,7998,8003,1,8745,110,100,59,1,10820,114,99,117,112,59,1,10825,4,2,97,117,7990,7994,112,59,1,10827,112,59,1,10823,111,116,59,1,10816,59,3,8745,65024,4,2,101,111,8013,8017,116,59,1,8257,110,59,1,711,4,4,97,101,105,117,8031,8046,8056,8061,4,2,112,114,8037,8041,115,59,1,10829,111,110,59,1,269,100,105,108,5,231,1,59,8054,1,231,114,99,59,1,265,112,115,4,2,59,115,8069,8071,1,10828,109,59,1,10832,111,116,59,1,267,4,3,100,109,110,8088,8097,8104,105,108,5,184,1,59,8095,1,184,112,116,121,118,59,1,10674,116,5,162,2,59,101,8112,8114,1,162,114,100,111,116,59,1,183,114,59,3,55349,56608,4,3,99,101,105,8134,8138,8154,121,59,1,1095,99,107,4,2,59,109,8146,8148,1,10003,97,114,107,59,1,10003,59,1,967,114,4,7,59,69,99,101,102,109,115,8174,8176,8179,8258,8261,8268,8273,1,9675,59,1,10691,4,3,59,101,108,8187,8189,8193,1,710,113,59,1,8791,101,4,2,97,100,8200,8223,114,114,111,119,4,2,108,114,8210,8216,101,102,116,59,1,8634,105,103,104,116,59,1,8635,4,5,82,83,97,99,100,8235,8238,8241,8246,8252,59,1,174,59,1,9416,115,116,59,1,8859,105,114,99,59,1,8858,97,115,104,59,1,8861,59,1,8791,110,105,110,116,59,1,10768,105,100,59,1,10991,99,105,114,59,1,10690,117,98,115,4,2,59,117,8288,8290,1,9827,105,116,59,1,9827,4,4,108,109,110,112,8305,8326,8376,8400,111,110,4,2,59,101,8313,8315,1,58,4,2,59,113,8321,8323,1,8788,59,1,8788,4,2,109,112,8332,8344,97,4,2,59,116,8339,8341,1,44,59,1,64,4,3,59,102,108,8352,8354,8358,1,8705,110,59,1,8728,101,4,2,109,120,8365,8371,101,110,116,59,1,8705,101,115,59,1,8450,4,2,103,105,8382,8395,4,2,59,100,8388,8390,1,8773,111,116,59,1,10861,110,116,59,1,8750,4,3,102,114,121,8408,8412,8417,59,3,55349,56660,111,100,59,1,8720,5,169,2,59,115,8424,8426,1,169,114,59,1,8471,4,2,97,111,8436,8441,114,114,59,1,8629,115,115,59,1,10007,4,2,99,117,8452,8457,114,59,3,55349,56504,4,2,98,112,8463,8474,4,2,59,101,8469,8471,1,10959,59,1,10961,4,2,59,101,8480,8482,1,10960,59,1,10962,100,111,116,59,1,8943,4,7,100,101,108,112,114,118,119,8507,8522,8536,8550,8600,8697,8702,97,114,114,4,2,108,114,8516,8519,59,1,10552,59,1,10549,4,2,112,115,8528,8532,114,59,1,8926,99,59,1,8927,97,114,114,4,2,59,112,8545,8547,1,8630,59,1,10557,4,6,59,98,99,100,111,115,8564,8566,8573,8587,8592,8596,1,8746,114,99,97,112,59,1,10824,4,2,97,117,8579,8583,112,59,1,10822,112,59,1,10826,111,116,59,1,8845,114,59,1,10821,59,3,8746,65024,4,4,97,108,114,118,8610,8623,8663,8672,114,114,4,2,59,109,8618,8620,1,8631,59,1,10556,121,4,3,101,118,119,8632,8651,8656,113,4,2,112,115,8639,8645,114,101,99,59,1,8926,117,99,99,59,1,8927,101,101,59,1,8910,101,100,103,101,59,1,8911,101,110,5,164,1,59,8670,1,164,101,97,114,114,111,119,4,2,108,114,8684,8690,101,102,116,59,1,8630,105,103,104,116,59,1,8631,101,101,59,1,8910,101,100,59,1,8911,4,2,99,105,8713,8721,111,110,105,110,116,59,1,8754,110,116,59,1,8753,108,99,116,121,59,1,9005,4,19,65,72,97,98,99,100,101,102,104,105,106,108,111,114,115,116,117,119,122,8773,8778,8783,8821,8839,8854,8887,8914,8930,8944,9036,9041,9058,9197,9227,9258,9281,9297,9305,114,114,59,1,8659,97,114,59,1,10597,4,4,103,108,114,115,8793,8799,8805,8809,103,101,114,59,1,8224,101,116,104,59,1,8504,114,59,1,8595,104,4,2,59,118,8816,8818,1,8208,59,1,8867,4,2,107,108,8827,8834,97,114,111,119,59,1,10511,97,99,59,1,733,4,2,97,121,8845,8851,114,111,110,59,1,271,59,1,1076,4,3,59,97,111,8862,8864,8880,1,8518,4,2,103,114,8870,8876,103,101,114,59,1,8225,114,59,1,8650,116,115,101,113,59,1,10871,4,3,103,108,109,8895,8902,8907,5,176,1,59,8900,1,176,116,97,59,1,948,112,116,121,118,59,1,10673,4,2,105,114,8920,8926,115,104,116,59,1,10623,59,3,55349,56609,97,114,4,2,108,114,8938,8941,59,1,8643,59,1,8642,4,5,97,101,103,115,118,8956,8986,8989,8996,9001,109,4,3,59,111,115,8965,8967,8983,1,8900,110,100,4,2,59,115,8975,8977,1,8900,117,105,116,59,1,9830,59,1,9830,59,1,168,97,109,109,97,59,1,989,105,110,59,1,8946,4,3,59,105,111,9009,9011,9031,1,247,100,101,5,247,2,59,111,9020,9022,1,247,110,116,105,109,101,115,59,1,8903,110,120,59,1,8903,99,121,59,1,1106,99,4,2,111,114,9048,9053,114,110,59,1,8990,111,112,59,1,8973,4,5,108,112,116,117,119,9070,9076,9081,9130,9144,108,97,114,59,1,36,102,59,3,55349,56661,4,5,59,101,109,112,115,9093,9095,9109,9116,9122,1,729,113,4,2,59,100,9102,9104,1,8784,111,116,59,1,8785,105,110,117,115,59,1,8760,108,117,115,59,1,8724,113,117,97,114,101,59,1,8865,98,108,101,98,97,114,119,101,100,103,101,59,1,8966,110,4,3,97,100,104,9153,9160,9172,114,114,111,119,59,1,8595,111,119,110,97,114,114,111,119,115,59,1,8650,97,114,112,111,111,110,4,2,108,114,9184,9190,101,102,116,59,1,8643,105,103,104,116,59,1,8642,4,2,98,99,9203,9211,107,97,114,111,119,59,1,10512,4,2,111,114,9217,9222,114,110,59,1,8991,111,112,59,1,8972,4,3,99,111,116,9235,9248,9252,4,2,114,121,9241,9245,59,3,55349,56505,59,1,1109,108,59,1,10742,114,111,107,59,1,273,4,2,100,114,9264,9269,111,116,59,1,8945,105,4,2,59,102,9276,9278,1,9663,59,1,9662,4,2,97,104,9287,9292,114,114,59,1,8693,97,114,59,1,10607,97,110,103,108,101,59,1,10662,4,2,99,105,9311,9315,121,59,1,1119,103,114,97,114,114,59,1,10239,4,18,68,97,99,100,101,102,103,108,109,110,111,112,113,114,115,116,117,120,9361,9376,9398,9439,9444,9447,9462,9495,9531,9585,9598,9614,9659,9755,9771,9792,9808,9826,4,2,68,111,9367,9372,111,116,59,1,10871,116,59,1,8785,4,2,99,115,9382,9392,117,116,101,5,233,1,59,9390,1,233,116,101,114,59,1,10862,4,4,97,105,111,121,9408,9414,9430,9436,114,111,110,59,1,283,114,4,2,59,99,9421,9423,1,8790,5,234,1,59,9428,1,234,108,111,110,59,1,8789,59,1,1101,111,116,59,1,279,59,1,8519,4,2,68,114,9453,9458,111,116,59,1,8786,59,3,55349,56610,4,3,59,114,115,9470,9472,9482,1,10906,97,118,101,5,232,1,59,9480,1,232,4,2,59,100,9488,9490,1,10902,111,116,59,1,10904,4,4,59,105,108,115,9505,9507,9515,9518,1,10905,110,116,101,114,115,59,1,9191,59,1,8467,4,2,59,100,9524,9526,1,10901,111,116,59,1,10903,4,3,97,112,115,9539,9544,9564,99,114,59,1,275,116,121,4,3,59,115,118,9554,9556,9561,1,8709,101,116,59,1,8709,59,1,8709,112,4,2,49,59,9571,9583,4,2,51,52,9577,9580,59,1,8196,59,1,8197,1,8195,4,2,103,115,9591,9594,59,1,331,112,59,1,8194,4,2,103,112,9604,9609,111,110,59,1,281,102,59,3,55349,56662,4,3,97,108,115,9622,9635,9640,114,4,2,59,115,9629,9631,1,8917,108,59,1,10723,117,115,59,1,10865,105,4,3,59,108,118,9649,9651,9656,1,949,111,110,59,1,949,59,1,1013,4,4,99,115,117,118,9669,9686,9716,9747,4,2,105,111,9675,9680,114,99,59,1,8790,108,111,110,59,1,8789,4,2,105,108,9692,9696,109,59,1,8770,97,110,116,4,2,103,108,9705,9710,116,114,59,1,10902,101,115,115,59,1,10901,4,3,97,101,105,9724,9729,9734,108,115,59,1,61,115,116,59,1,8799,118,4,2,59,68,9741,9743,1,8801,68,59,1,10872,112,97,114,115,108,59,1,10725,4,2,68,97,9761,9766,111,116,59,1,8787,114,114,59,1,10609,4,3,99,100,105,9779,9783,9788,114,59,1,8495,111,116,59,1,8784,109,59,1,8770,4,2,97,104,9798,9801,59,1,951,5,240,1,59,9806,1,240,4,2,109,114,9814,9822,108,5,235,1,59,9820,1,235,111,59,1,8364,4,3,99,105,112,9834,9838,9843,108,59,1,33,115,116,59,1,8707,4,2,101,111,9849,9859,99,116,97,116,105,111,110,59,1,8496,110,101,110,116,105,97,108,101,59,1,8519,4,12,97,99,101,102,105,106,108,110,111,112,114,115,9896,9910,9914,9921,9954,9960,9967,9989,9994,10027,10036,10164,108,108,105,110,103,100,111,116,115,101,113,59,1,8786,121,59,1,1092,109,97,108,101,59,1,9792,4,3,105,108,114,9929,9935,9950,108,105,103,59,1,64259,4,2,105,108,9941,9945,103,59,1,64256,105,103,59,1,64260,59,3,55349,56611,108,105,103,59,1,64257,108,105,103,59,3,102,106,4,3,97,108,116,9975,9979,9984,116,59,1,9837,105,103,59,1,64258,110,115,59,1,9649,111,102,59,1,402,4,2,112,114,1e4,10005,102,59,3,55349,56663,4,2,97,107,10011,10016,108,108,59,1,8704,4,2,59,118,10022,10024,1,8916,59,1,10969,97,114,116,105,110,116,59,1,10765,4,2,97,111,10042,10159,4,2,99,115,10048,10155,4,6,49,50,51,52,53,55,10062,10102,10114,10135,10139,10151,4,6,50,51,52,53,54,56,10076,10083,10086,10093,10096,10099,5,189,1,59,10081,1,189,59,1,8531,5,188,1,59,10091,1,188,59,1,8533,59,1,8537,59,1,8539,4,2,51,53,10108,10111,59,1,8532,59,1,8534,4,3,52,53,56,10122,10129,10132,5,190,1,59,10127,1,190,59,1,8535,59,1,8540,53,59,1,8536,4,2,54,56,10145,10148,59,1,8538,59,1,8541,56,59,1,8542,108,59,1,8260,119,110,59,1,8994,99,114,59,3,55349,56507,4,17,69,97,98,99,100,101,102,103,105,106,108,110,111,114,115,116,118,10206,10217,10247,10254,10268,10273,10358,10363,10374,10380,10385,10406,10458,10464,10470,10497,10610,4,2,59,108,10212,10214,1,8807,59,1,10892,4,3,99,109,112,10225,10231,10244,117,116,101,59,1,501,109,97,4,2,59,100,10239,10241,1,947,59,1,989,59,1,10886,114,101,118,101,59,1,287,4,2,105,121,10260,10265,114,99,59,1,285,59,1,1075,111,116,59,1,289,4,4,59,108,113,115,10283,10285,10288,10308,1,8805,59,1,8923,4,3,59,113,115,10296,10298,10301,1,8805,59,1,8807,108,97,110,116,59,1,10878,4,4,59,99,100,108,10318,10320,10324,10345,1,10878,99,59,1,10921,111,116,4,2,59,111,10332,10334,1,10880,4,2,59,108,10340,10342,1,10882,59,1,10884,4,2,59,101,10351,10354,3,8923,65024,115,59,1,10900,114,59,3,55349,56612,4,2,59,103,10369,10371,1,8811,59,1,8921,109,101,108,59,1,8503,99,121,59,1,1107,4,4,59,69,97,106,10395,10397,10400,10403,1,8823,59,1,10898,59,1,10917,59,1,10916,4,4,69,97,101,115,10416,10419,10434,10453,59,1,8809,112,4,2,59,112,10426,10428,1,10890,114,111,120,59,1,10890,4,2,59,113,10440,10442,1,10888,4,2,59,113,10448,10450,1,10888,59,1,8809,105,109,59,1,8935,112,102,59,3,55349,56664,97,118,101,59,1,96,4,2,99,105,10476,10480,114,59,1,8458,109,4,3,59,101,108,10489,10491,10494,1,8819,59,1,10894,59,1,10896,5,62,6,59,99,100,108,113,114,10512,10514,10527,10532,10538,10545,1,62,4,2,99,105,10520,10523,59,1,10919,114,59,1,10874,111,116,59,1,8919,80,97,114,59,1,10645,117,101,115,116,59,1,10876,4,5,97,100,101,108,115,10557,10574,10579,10599,10605,4,2,112,114,10563,10570,112,114,111,120,59,1,10886,114,59,1,10616,111,116,59,1,8919,113,4,2,108,113,10586,10592,101,115,115,59,1,8923,108,101,115,115,59,1,10892,101,115,115,59,1,8823,105,109,59,1,8819,4,2,101,110,10616,10626,114,116,110,101,113,113,59,3,8809,65024,69,59,3,8809,65024,4,10,65,97,98,99,101,102,107,111,115,121,10653,10658,10713,10718,10724,10760,10765,10786,10850,10875,114,114,59,1,8660,4,4,105,108,109,114,10668,10674,10678,10684,114,115,112,59,1,8202,102,59,1,189,105,108,116,59,1,8459,4,2,100,114,10690,10695,99,121,59,1,1098,4,3,59,99,119,10703,10705,10710,1,8596,105,114,59,1,10568,59,1,8621,97,114,59,1,8463,105,114,99,59,1,293,4,3,97,108,114,10732,10748,10754,114,116,115,4,2,59,117,10741,10743,1,9829,105,116,59,1,9829,108,105,112,59,1,8230,99,111,110,59,1,8889,114,59,3,55349,56613,115,4,2,101,119,10772,10779,97,114,111,119,59,1,10533,97,114,111,119,59,1,10534,4,5,97,109,111,112,114,10798,10803,10809,10839,10844,114,114,59,1,8703,116,104,116,59,1,8763,107,4,2,108,114,10816,10827,101,102,116,97,114,114,111,119,59,1,8617,105,103,104,116,97,114,114,111,119,59,1,8618,102,59,3,55349,56665,98,97,114,59,1,8213,4,3,99,108,116,10858,10863,10869,114,59,3,55349,56509,97,115,104,59,1,8463,114,111,107,59,1,295,4,2,98,112,10881,10887,117,108,108,59,1,8259,104,101,110,59,1,8208,4,15,97,99,101,102,103,105,106,109,110,111,112,113,115,116,117,10925,10936,10958,10977,10990,11001,11039,11045,11101,11192,11220,11226,11237,11285,11299,99,117,116,101,5,237,1,59,10934,1,237,4,3,59,105,121,10944,10946,10955,1,8291,114,99,5,238,1,59,10953,1,238,59,1,1080,4,2,99,120,10964,10968,121,59,1,1077,99,108,5,161,1,59,10975,1,161,4,2,102,114,10983,10986,59,1,8660,59,3,55349,56614,114,97,118,101,5,236,1,59,10999,1,236,4,4,59,105,110,111,11011,11013,11028,11034,1,8520,4,2,105,110,11019,11024,110,116,59,1,10764,116,59,1,8749,102,105,110,59,1,10716,116,97,59,1,8489,108,105,103,59,1,307,4,3,97,111,112,11053,11092,11096,4,3,99,103,116,11061,11065,11088,114,59,1,299,4,3,101,108,112,11073,11076,11082,59,1,8465,105,110,101,59,1,8464,97,114,116,59,1,8465,104,59,1,305,102,59,1,8887,101,100,59,1,437,4,5,59,99,102,111,116,11113,11115,11121,11136,11142,1,8712,97,114,101,59,1,8453,105,110,4,2,59,116,11129,11131,1,8734,105,101,59,1,10717,100,111,116,59,1,305,4,5,59,99,101,108,112,11154,11156,11161,11179,11186,1,8747,97,108,59,1,8890,4,2,103,114,11167,11173,101,114,115,59,1,8484,99,97,108,59,1,8890,97,114,104,107,59,1,10775,114,111,100,59,1,10812,4,4,99,103,112,116,11202,11206,11211,11216,121,59,1,1105,111,110,59,1,303,102,59,3,55349,56666,97,59,1,953,114,111,100,59,1,10812,117,101,115,116,5,191,1,59,11235,1,191,4,2,99,105,11243,11248,114,59,3,55349,56510,110,4,5,59,69,100,115,118,11261,11263,11266,11271,11282,1,8712,59,1,8953,111,116,59,1,8949,4,2,59,118,11277,11279,1,8948,59,1,8947,59,1,8712,4,2,59,105,11291,11293,1,8290,108,100,101,59,1,297,4,2,107,109,11305,11310,99,121,59,1,1110,108,5,239,1,59,11316,1,239,4,6,99,102,109,111,115,117,11332,11346,11351,11357,11363,11380,4,2,105,121,11338,11343,114,99,59,1,309,59,1,1081,114,59,3,55349,56615,97,116,104,59,1,567,112,102,59,3,55349,56667,4,2,99,101,11369,11374,114,59,3,55349,56511,114,99,121,59,1,1112,107,99,121,59,1,1108,4,8,97,99,102,103,104,106,111,115,11404,11418,11433,11438,11445,11450,11455,11461,112,112,97,4,2,59,118,11413,11415,1,954,59,1,1008,4,2,101,121,11424,11430,100,105,108,59,1,311,59,1,1082,114,59,3,55349,56616,114,101,101,110,59,1,312,99,121,59,1,1093,99,121,59,1,1116,112,102,59,3,55349,56668,99,114,59,3,55349,56512,4,23,65,66,69,72,97,98,99,100,101,102,103,104,106,108,109,110,111,112,114,115,116,117,118,11515,11538,11544,11555,11560,11721,11780,11818,11868,12136,12160,12171,12203,12208,12246,12275,12327,12509,12523,12569,12641,12732,12752,4,3,97,114,116,11523,11528,11532,114,114,59,1,8666,114,59,1,8656,97,105,108,59,1,10523,97,114,114,59,1,10510,4,2,59,103,11550,11552,1,8806,59,1,10891,97,114,59,1,10594,4,9,99,101,103,109,110,112,113,114,116,11580,11586,11594,11600,11606,11624,11627,11636,11694,117,116,101,59,1,314,109,112,116,121,118,59,1,10676,114,97,110,59,1,8466,98,100,97,59,1,955,103,4,3,59,100,108,11615,11617,11620,1,10216,59,1,10641,101,59,1,10216,59,1,10885,117,111,5,171,1,59,11634,1,171,114,4,8,59,98,102,104,108,112,115,116,11655,11657,11669,11673,11677,11681,11685,11690,1,8592,4,2,59,102,11663,11665,1,8676,115,59,1,10527,115,59,1,10525,107,59,1,8617,112,59,1,8619,108,59,1,10553,105,109,59,1,10611,108,59,1,8610,4,3,59,97,101,11702,11704,11709,1,10923,105,108,59,1,10521,4,2,59,115,11715,11717,1,10925,59,3,10925,65024,4,3,97,98,114,11729,11734,11739,114,114,59,1,10508,114,107,59,1,10098,4,2,97,107,11745,11758,99,4,2,101,107,11752,11755,59,1,123,59,1,91,4,2,101,115,11764,11767,59,1,10635,108,4,2,100,117,11774,11777,59,1,10639,59,1,10637,4,4,97,101,117,121,11790,11796,11811,11815,114,111,110,59,1,318,4,2,100,105,11802,11807,105,108,59,1,316,108,59,1,8968,98,59,1,123,59,1,1083,4,4,99,113,114,115,11828,11832,11845,11864,97,59,1,10550,117,111,4,2,59,114,11840,11842,1,8220,59,1,8222,4,2,100,117,11851,11857,104,97,114,59,1,10599,115,104,97,114,59,1,10571,104,59,1,8626,4,5,59,102,103,113,115,11880,11882,12008,12011,12031,1,8804,116,4,5,97,104,108,114,116,11895,11913,11935,11947,11996,114,114,111,119,4,2,59,116,11905,11907,1,8592,97,105,108,59,1,8610,97,114,112,111,111,110,4,2,100,117,11925,11931,111,119,110,59,1,8637,112,59,1,8636,101,102,116,97,114,114,111,119,115,59,1,8647,105,103,104,116,4,3,97,104,115,11959,11974,11984,114,114,111,119,4,2,59,115,11969,11971,1,8596,59,1,8646,97,114,112,111,111,110,115,59,1,8651,113,117,105,103,97,114,114,111,119,59,1,8621,104,114,101,101,116,105,109,101,115,59,1,8907,59,1,8922,4,3,59,113,115,12019,12021,12024,1,8804,59,1,8806,108,97,110,116,59,1,10877,4,5,59,99,100,103,115,12043,12045,12049,12070,12083,1,10877,99,59,1,10920,111,116,4,2,59,111,12057,12059,1,10879,4,2,59,114,12065,12067,1,10881,59,1,10883,4,2,59,101,12076,12079,3,8922,65024,115,59,1,10899,4,5,97,100,101,103,115,12095,12103,12108,12126,12131,112,112,114,111,120,59,1,10885,111,116,59,1,8918,113,4,2,103,113,12115,12120,116,114,59,1,8922,103,116,114,59,1,10891,116,114,59,1,8822,105,109,59,1,8818,4,3,105,108,114,12144,12150,12156,115,104,116,59,1,10620,111,111,114,59,1,8970,59,3,55349,56617,4,2,59,69,12166,12168,1,8822,59,1,10897,4,2,97,98,12177,12198,114,4,2,100,117,12184,12187,59,1,8637,4,2,59,108,12193,12195,1,8636,59,1,10602,108,107,59,1,9604,99,121,59,1,1113,4,5,59,97,99,104,116,12220,12222,12227,12235,12241,1,8810,114,114,59,1,8647,111,114,110,101,114,59,1,8990,97,114,100,59,1,10603,114,105,59,1,9722,4,2,105,111,12252,12258,100,111,116,59,1,320,117,115,116,4,2,59,97,12267,12269,1,9136,99,104,101,59,1,9136,4,4,69,97,101,115,12285,12288,12303,12322,59,1,8808,112,4,2,59,112,12295,12297,1,10889,114,111,120,59,1,10889,4,2,59,113,12309,12311,1,10887,4,2,59,113,12317,12319,1,10887,59,1,8808,105,109,59,1,8934,4,8,97,98,110,111,112,116,119,122,12345,12359,12364,12421,12446,12467,12474,12490,4,2,110,114,12351,12355,103,59,1,10220,114,59,1,8701,114,107,59,1,10214,103,4,3,108,109,114,12373,12401,12409,101,102,116,4,2,97,114,12382,12389,114,114,111,119,59,1,10229,105,103,104,116,97,114,114,111,119,59,1,10231,97,112,115,116,111,59,1,10236,105,103,104,116,97,114,114,111,119,59,1,10230,112,97,114,114,111,119,4,2,108,114,12433,12439,101,102,116,59,1,8619,105,103,104,116,59,1,8620,4,3,97,102,108,12454,12458,12462,114,59,1,10629,59,3,55349,56669,117,115,59,1,10797,105,109,101,115,59,1,10804,4,2,97,98,12480,12485,115,116,59,1,8727,97,114,59,1,95,4,3,59,101,102,12498,12500,12506,1,9674,110,103,101,59,1,9674,59,1,10731,97,114,4,2,59,108,12517,12519,1,40,116,59,1,10643,4,5,97,99,104,109,116,12535,12540,12548,12561,12564,114,114,59,1,8646,111,114,110,101,114,59,1,8991,97,114,4,2,59,100,12556,12558,1,8651,59,1,10605,59,1,8206,114,105,59,1,8895,4,6,97,99,104,105,113,116,12583,12589,12594,12597,12614,12635,113,117,111,59,1,8249,114,59,3,55349,56513,59,1,8624,109,4,3,59,101,103,12606,12608,12611,1,8818,59,1,10893,59,1,10895,4,2,98,117,12620,12623,59,1,91,111,4,2,59,114,12630,12632,1,8216,59,1,8218,114,111,107,59,1,322,5,60,8,59,99,100,104,105,108,113,114,12660,12662,12675,12680,12686,12692,12698,12705,1,60,4,2,99,105,12668,12671,59,1,10918,114,59,1,10873,111,116,59,1,8918,114,101,101,59,1,8907,109,101,115,59,1,8905,97,114,114,59,1,10614,117,101,115,116,59,1,10875,4,2,80,105,12711,12716,97,114,59,1,10646,4,3,59,101,102,12724,12726,12729,1,9667,59,1,8884,59,1,9666,114,4,2,100,117,12739,12746,115,104,97,114,59,1,10570,104,97,114,59,1,10598,4,2,101,110,12758,12768,114,116,110,101,113,113,59,3,8808,65024,69,59,3,8808,65024,4,14,68,97,99,100,101,102,104,105,108,110,111,112,115,117,12803,12809,12893,12908,12914,12928,12933,12937,13011,13025,13032,13049,13052,13069,68,111,116,59,1,8762,4,4,99,108,112,114,12819,12827,12849,12887,114,5,175,1,59,12825,1,175,4,2,101,116,12833,12836,59,1,9794,4,2,59,101,12842,12844,1,10016,115,101,59,1,10016,4,2,59,115,12855,12857,1,8614,116,111,4,4,59,100,108,117,12869,12871,12877,12883,1,8614,111,119,110,59,1,8615,101,102,116,59,1,8612,112,59,1,8613,107,101,114,59,1,9646,4,2,111,121,12899,12905,109,109,97,59,1,10793,59,1,1084,97,115,104,59,1,8212,97,115,117,114,101,100,97,110,103,108,101,59,1,8737,114,59,3,55349,56618,111,59,1,8487,4,3,99,100,110,12945,12954,12985,114,111,5,181,1,59,12952,1,181,4,4,59,97,99,100,12964,12966,12971,12976,1,8739,115,116,59,1,42,105,114,59,1,10992,111,116,5,183,1,59,12983,1,183,117,115,4,3,59,98,100,12995,12997,13e3,1,8722,59,1,8863,4,2,59,117,13006,13008,1,8760,59,1,10794,4,2,99,100,13017,13021,112,59,1,10971,114,59,1,8230,112,108,117,115,59,1,8723,4,2,100,112,13038,13044,101,108,115,59,1,8871,102,59,3,55349,56670,59,1,8723,4,2,99,116,13058,13063,114,59,3,55349,56514,112,111,115,59,1,8766,4,3,59,108,109,13077,13079,13087,1,956,116,105,109,97,112,59,1,8888,97,112,59,1,8888,4,24,71,76,82,86,97,98,99,100,101,102,103,104,105,106,108,109,111,112,114,115,116,117,118,119,13142,13165,13217,13229,13247,13330,13359,13414,13420,13508,13513,13579,13602,13626,13631,13762,13767,13855,13936,13995,14214,14285,14312,14432,4,2,103,116,13148,13152,59,3,8921,824,4,2,59,118,13158,13161,3,8811,8402,59,3,8811,824,4,3,101,108,116,13173,13200,13204,102,116,4,2,97,114,13181,13188,114,114,111,119,59,1,8653,105,103,104,116,97,114,114,111,119,59,1,8654,59,3,8920,824,4,2,59,118,13210,13213,3,8810,8402,59,3,8810,824,105,103,104,116,97,114,114,111,119,59,1,8655,4,2,68,100,13235,13241,97,115,104,59,1,8879,97,115,104,59,1,8878,4,5,98,99,110,112,116,13259,13264,13270,13275,13308,108,97,59,1,8711,117,116,101,59,1,324,103,59,3,8736,8402,4,5,59,69,105,111,112,13287,13289,13293,13298,13302,1,8777,59,3,10864,824,100,59,3,8779,824,115,59,1,329,114,111,120,59,1,8777,117,114,4,2,59,97,13316,13318,1,9838,108,4,2,59,115,13325,13327,1,9838,59,1,8469,4,2,115,117,13336,13344,112,5,160,1,59,13342,1,160,109,112,4,2,59,101,13352,13355,3,8782,824,59,3,8783,824,4,5,97,101,111,117,121,13371,13385,13391,13407,13411,4,2,112,114,13377,13380,59,1,10819,111,110,59,1,328,100,105,108,59,1,326,110,103,4,2,59,100,13399,13401,1,8775,111,116,59,3,10861,824,112,59,1,10818,59,1,1085,97,115,104,59,1,8211,4,7,59,65,97,100,113,115,120,13436,13438,13443,13466,13472,13478,13494,1,8800,114,114,59,1,8663,114,4,2,104,114,13450,13454,107,59,1,10532,4,2,59,111,13460,13462,1,8599,119,59,1,8599,111,116,59,3,8784,824,117,105,118,59,1,8802,4,2,101,105,13484,13489,97,114,59,1,10536,109,59,3,8770,824,105,115,116,4,2,59,115,13503,13505,1,8708,59,1,8708,114,59,3,55349,56619,4,4,69,101,115,116,13523,13527,13563,13568,59,3,8807,824,4,3,59,113,115,13535,13537,13559,1,8817,4,3,59,113,115,13545,13547,13551,1,8817,59,3,8807,824,108,97,110,116,59,3,10878,824,59,3,10878,824,105,109,59,1,8821,4,2,59,114,13574,13576,1,8815,59,1,8815,4,3,65,97,112,13587,13592,13597,114,114,59,1,8654,114,114,59,1,8622,97,114,59,1,10994,4,3,59,115,118,13610,13612,13623,1,8715,4,2,59,100,13618,13620,1,8956,59,1,8954,59,1,8715,99,121,59,1,1114,4,7,65,69,97,100,101,115,116,13647,13652,13656,13661,13665,13737,13742,114,114,59,1,8653,59,3,8806,824,114,114,59,1,8602,114,59,1,8229,4,4,59,102,113,115,13675,13677,13703,13725,1,8816,116,4,2,97,114,13684,13691,114,114,111,119,59,1,8602,105,103,104,116,97,114,114,111,119,59,1,8622,4,3,59,113,115,13711,13713,13717,1,8816,59,3,8806,824,108,97,110,116,59,3,10877,824,4,2,59,115,13731,13734,3,10877,824,59,1,8814,105,109,59,1,8820,4,2,59,114,13748,13750,1,8814,105,4,2,59,101,13757,13759,1,8938,59,1,8940,105,100,59,1,8740,4,2,112,116,13773,13778,102,59,3,55349,56671,5,172,3,59,105,110,13787,13789,13829,1,172,110,4,4,59,69,100,118,13800,13802,13806,13812,1,8713,59,3,8953,824,111,116,59,3,8949,824,4,3,97,98,99,13820,13823,13826,59,1,8713,59,1,8951,59,1,8950,105,4,2,59,118,13836,13838,1,8716,4,3,97,98,99,13846,13849,13852,59,1,8716,59,1,8958,59,1,8957,4,3,97,111,114,13863,13892,13899,114,4,4,59,97,115,116,13874,13876,13883,13888,1,8742,108,108,101,108,59,1,8742,108,59,3,11005,8421,59,3,8706,824,108,105,110,116,59,1,10772,4,3,59,99,101,13907,13909,13914,1,8832,117,101,59,1,8928,4,2,59,99,13920,13923,3,10927,824,4,2,59,101,13929,13931,1,8832,113,59,3,10927,824,4,4,65,97,105,116,13946,13951,13971,13982,114,114,59,1,8655,114,114,4,3,59,99,119,13961,13963,13967,1,8603,59,3,10547,824,59,3,8605,824,103,104,116,97,114,114,111,119,59,1,8603,114,105,4,2,59,101,13990,13992,1,8939,59,1,8941,4,7,99,104,105,109,112,113,117,14011,14036,14060,14080,14085,14090,14106,4,4,59,99,101,114,14021,14023,14028,14032,1,8833,117,101,59,1,8929,59,3,10928,824,59,3,55349,56515,111,114,116,4,2,109,112,14045,14050,105,100,59,1,8740,97,114,97,108,108,101,108,59,1,8742,109,4,2,59,101,14067,14069,1,8769,4,2,59,113,14075,14077,1,8772,59,1,8772,105,100,59,1,8740,97,114,59,1,8742,115,117,4,2,98,112,14098,14102,101,59,1,8930,101,59,1,8931,4,3,98,99,112,14114,14157,14171,4,4,59,69,101,115,14124,14126,14130,14133,1,8836,59,3,10949,824,59,1,8840,101,116,4,2,59,101,14141,14144,3,8834,8402,113,4,2,59,113,14151,14153,1,8840,59,3,10949,824,99,4,2,59,101,14164,14166,1,8833,113,59,3,10928,824,4,4,59,69,101,115,14181,14183,14187,14190,1,8837,59,3,10950,824,59,1,8841,101,116,4,2,59,101,14198,14201,3,8835,8402,113,4,2,59,113,14208,14210,1,8841,59,3,10950,824,4,4,103,105,108,114,14224,14228,14238,14242,108,59,1,8825,108,100,101,5,241,1,59,14236,1,241,103,59,1,8824,105,97,110,103,108,101,4,2,108,114,14254,14269,101,102,116,4,2,59,101,14263,14265,1,8938,113,59,1,8940,105,103,104,116,4,2,59,101,14279,14281,1,8939,113,59,1,8941,4,2,59,109,14291,14293,1,957,4,3,59,101,115,14301,14303,14308,1,35,114,111,59,1,8470,112,59,1,8199,4,9,68,72,97,100,103,105,108,114,115,14332,14338,14344,14349,14355,14369,14376,14408,14426,97,115,104,59,1,8877,97,114,114,59,1,10500,112,59,3,8781,8402,97,115,104,59,1,8876,4,2,101,116,14361,14365,59,3,8805,8402,59,3,62,8402,110,102,105,110,59,1,10718,4,3,65,101,116,14384,14389,14393,114,114,59,1,10498,59,3,8804,8402,4,2,59,114,14399,14402,3,60,8402,105,101,59,3,8884,8402,4,2,65,116,14414,14419,114,114,59,1,10499,114,105,101,59,3,8885,8402,105,109,59,3,8764,8402,4,3,65,97,110,14440,14445,14468,114,114,59,1,8662,114,4,2,104,114,14452,14456,107,59,1,10531,4,2,59,111,14462,14464,1,8598,119,59,1,8598,101,97,114,59,1,10535,4,18,83,97,99,100,101,102,103,104,105,108,109,111,112,114,115,116,117,118,14512,14515,14535,14560,14597,14603,14618,14643,14657,14662,14701,14741,14747,14769,14851,14877,14907,14916,59,1,9416,4,2,99,115,14521,14531,117,116,101,5,243,1,59,14529,1,243,116,59,1,8859,4,2,105,121,14541,14557,114,4,2,59,99,14548,14550,1,8858,5,244,1,59,14555,1,244,59,1,1086,4,5,97,98,105,111,115,14572,14577,14583,14587,14591,115,104,59,1,8861,108,97,99,59,1,337,118,59,1,10808,116,59,1,8857,111,108,100,59,1,10684,108,105,103,59,1,339,4,2,99,114,14609,14614,105,114,59,1,10687,59,3,55349,56620,4,3,111,114,116,14626,14630,14640,110,59,1,731,97,118,101,5,242,1,59,14638,1,242,59,1,10689,4,2,98,109,14649,14654,97,114,59,1,10677,59,1,937,110,116,59,1,8750,4,4,97,99,105,116,14672,14677,14693,14698,114,114,59,1,8634,4,2,105,114,14683,14687,114,59,1,10686,111,115,115,59,1,10683,110,101,59,1,8254,59,1,10688,4,3,97,101,105,14709,14714,14719,99,114,59,1,333,103,97,59,1,969,4,3,99,100,110,14727,14733,14736,114,111,110,59,1,959,59,1,10678,117,115,59,1,8854,112,102,59,3,55349,56672,4,3,97,101,108,14755,14759,14764,114,59,1,10679,114,112,59,1,10681,117,115,59,1,8853,4,7,59,97,100,105,111,115,118,14785,14787,14792,14831,14837,14841,14848,1,8744,114,114,59,1,8635,4,4,59,101,102,109,14802,14804,14817,14824,1,10845,114,4,2,59,111,14811,14813,1,8500,102,59,1,8500,5,170,1,59,14822,1,170,5,186,1,59,14829,1,186,103,111,102,59,1,8886,114,59,1,10838,108,111,112,101,59,1,10839,59,1,10843,4,3,99,108,111,14859,14863,14873,114,59,1,8500,97,115,104,5,248,1,59,14871,1,248,108,59,1,8856,105,4,2,108,109,14884,14893,100,101,5,245,1,59,14891,1,245,101,115,4,2,59,97,14901,14903,1,8855,115,59,1,10806,109,108,5,246,1,59,14914,1,246,98,97,114,59,1,9021,4,12,97,99,101,102,104,105,108,109,111,114,115,117,14948,14992,14996,15033,15038,15068,15090,15189,15192,15222,15427,15441,114,4,4,59,97,115,116,14959,14961,14976,14989,1,8741,5,182,2,59,108,14968,14970,1,182,108,101,108,59,1,8741,4,2,105,108,14982,14986,109,59,1,10995,59,1,11005,59,1,8706,121,59,1,1087,114,4,5,99,105,109,112,116,15009,15014,15019,15024,15027,110,116,59,1,37,111,100,59,1,46,105,108,59,1,8240,59,1,8869,101,110,107,59,1,8241,114,59,3,55349,56621,4,3,105,109,111,15046,15057,15063,4,2,59,118,15052,15054,1,966,59,1,981,109,97,116,59,1,8499,110,101,59,1,9742,4,3,59,116,118,15076,15078,15087,1,960,99,104,102,111,114,107,59,1,8916,59,1,982,4,2,97,117,15096,15119,110,4,2,99,107,15103,15115,107,4,2,59,104,15110,15112,1,8463,59,1,8462,118,59,1,8463,115,4,9,59,97,98,99,100,101,109,115,116,15140,15142,15148,15151,15156,15168,15171,15179,15184,1,43,99,105,114,59,1,10787,59,1,8862,105,114,59,1,10786,4,2,111,117,15162,15165,59,1,8724,59,1,10789,59,1,10866,110,5,177,1,59,15177,1,177,105,109,59,1,10790,119,111,59,1,10791,59,1,177,4,3,105,112,117,15200,15208,15213,110,116,105,110,116,59,1,10773,102,59,3,55349,56673,110,100,5,163,1,59,15220,1,163,4,10,59,69,97,99,101,105,110,111,115,117,15244,15246,15249,15253,15258,15334,15347,15367,15416,15421,1,8826,59,1,10931,112,59,1,10935,117,101,59,1,8828,4,2,59,99,15264,15266,1,10927,4,6,59,97,99,101,110,115,15280,15282,15290,15299,15303,15329,1,8826,112,112,114,111,120,59,1,10935,117,114,108,121,101,113,59,1,8828,113,59,1,10927,4,3,97,101,115,15311,15319,15324,112,112,114,111,120,59,1,10937,113,113,59,1,10933,105,109,59,1,8936,105,109,59,1,8830,109,101,4,2,59,115,15342,15344,1,8242,59,1,8473,4,3,69,97,115,15355,15358,15362,59,1,10933,112,59,1,10937,105,109,59,1,8936,4,3,100,102,112,15375,15378,15404,59,1,8719,4,3,97,108,115,15386,15392,15398,108,97,114,59,1,9006,105,110,101,59,1,8978,117,114,102,59,1,8979,4,2,59,116,15410,15412,1,8733,111,59,1,8733,105,109,59,1,8830,114,101,108,59,1,8880,4,2,99,105,15433,15438,114,59,3,55349,56517,59,1,968,110,99,115,112,59,1,8200,4,6,102,105,111,112,115,117,15462,15467,15472,15478,15485,15491,114,59,3,55349,56622,110,116,59,1,10764,112,102,59,3,55349,56674,114,105,109,101,59,1,8279,99,114,59,3,55349,56518,4,3,97,101,111,15499,15520,15534,116,4,2,101,105,15506,15515,114,110,105,111,110,115,59,1,8461,110,116,59,1,10774,115,116,4,2,59,101,15528,15530,1,63,113,59,1,8799,116,5,34,1,59,15540,1,34,4,21,65,66,72,97,98,99,100,101,102,104,105,108,109,110,111,112,114,115,116,117,120,15586,15609,15615,15620,15796,15855,15893,15931,15977,16001,16039,16183,16204,16222,16228,16285,16312,16318,16363,16408,16416,4,3,97,114,116,15594,15599,15603,114,114,59,1,8667,114,59,1,8658,97,105,108,59,1,10524,97,114,114,59,1,10511,97,114,59,1,10596,4,7,99,100,101,110,113,114,116,15636,15651,15656,15664,15687,15696,15770,4,2,101,117,15642,15646,59,3,8765,817,116,101,59,1,341,105,99,59,1,8730,109,112,116,121,118,59,1,10675,103,4,4,59,100,101,108,15675,15677,15680,15683,1,10217,59,1,10642,59,1,10661,101,59,1,10217,117,111,5,187,1,59,15694,1,187,114,4,11,59,97,98,99,102,104,108,112,115,116,119,15721,15723,15727,15739,15742,15746,15750,15754,15758,15763,15767,1,8594,112,59,1,10613,4,2,59,102,15733,15735,1,8677,115,59,1,10528,59,1,10547,115,59,1,10526,107,59,1,8618,112,59,1,8620,108,59,1,10565,105,109,59,1,10612,108,59,1,8611,59,1,8605,4,2,97,105,15776,15781,105,108,59,1,10522,111,4,2,59,110,15788,15790,1,8758,97,108,115,59,1,8474,4,3,97,98,114,15804,15809,15814,114,114,59,1,10509,114,107,59,1,10099,4,2,97,107,15820,15833,99,4,2,101,107,15827,15830,59,1,125,59,1,93,4,2,101,115,15839,15842,59,1,10636,108,4,2,100,117,15849,15852,59,1,10638,59,1,10640,4,4,97,101,117,121,15865,15871,15886,15890,114,111,110,59,1,345,4,2,100,105,15877,15882,105,108,59,1,343,108,59,1,8969,98,59,1,125,59,1,1088,4,4,99,108,113,115,15903,15907,15914,15927,97,59,1,10551,100,104,97,114,59,1,10601,117,111,4,2,59,114,15922,15924,1,8221,59,1,8221,104,59,1,8627,4,3,97,99,103,15939,15966,15970,108,4,4,59,105,112,115,15950,15952,15957,15963,1,8476,110,101,59,1,8475,97,114,116,59,1,8476,59,1,8477,116,59,1,9645,5,174,1,59,15975,1,174,4,3,105,108,114,15985,15991,15997,115,104,116,59,1,10621,111,111,114,59,1,8971,59,3,55349,56623,4,2,97,111,16007,16028,114,4,2,100,117,16014,16017,59,1,8641,4,2,59,108,16023,16025,1,8640,59,1,10604,4,2,59,118,16034,16036,1,961,59,1,1009,4,3,103,110,115,16047,16167,16171,104,116,4,6,97,104,108,114,115,116,16063,16081,16103,16130,16143,16155,114,114,111,119,4,2,59,116,16073,16075,1,8594,97,105,108,59,1,8611,97,114,112,111,111,110,4,2,100,117,16093,16099,111,119,110,59,1,8641,112,59,1,8640,101,102,116,4,2,97,104,16112,16120,114,114,111,119,115,59,1,8644,97,114,112,111,111,110,115,59,1,8652,105,103,104,116,97,114,114,111,119,115,59,1,8649,113,117,105,103,97,114,114,111,119,59,1,8605,104,114,101,101,116,105,109,101,115,59,1,8908,103,59,1,730,105,110,103,100,111,116,115,101,113,59,1,8787,4,3,97,104,109,16191,16196,16201,114,114,59,1,8644,97,114,59,1,8652,59,1,8207,111,117,115,116,4,2,59,97,16214,16216,1,9137,99,104,101,59,1,9137,109,105,100,59,1,10990,4,4,97,98,112,116,16238,16252,16257,16278,4,2,110,114,16244,16248,103,59,1,10221,114,59,1,8702,114,107,59,1,10215,4,3,97,102,108,16265,16269,16273,114,59,1,10630,59,3,55349,56675,117,115,59,1,10798,105,109,101,115,59,1,10805,4,2,97,112,16291,16304,114,4,2,59,103,16298,16300,1,41,116,59,1,10644,111,108,105,110,116,59,1,10770,97,114,114,59,1,8649,4,4,97,99,104,113,16328,16334,16339,16342,113,117,111,59,1,8250,114,59,3,55349,56519,59,1,8625,4,2,98,117,16348,16351,59,1,93,111,4,2,59,114,16358,16360,1,8217,59,1,8217,4,3,104,105,114,16371,16377,16383,114,101,101,59,1,8908,109,101,115,59,1,8906,105,4,4,59,101,102,108,16394,16396,16399,16402,1,9657,59,1,8885,59,1,9656,116,114,105,59,1,10702,108,117,104,97,114,59,1,10600,59,1,8478,4,19,97,98,99,100,101,102,104,105,108,109,111,112,113,114,115,116,117,119,122,16459,16466,16472,16572,16590,16672,16687,16746,16844,16850,16924,16963,16988,17115,17121,17154,17206,17614,17656,99,117,116,101,59,1,347,113,117,111,59,1,8218,4,10,59,69,97,99,101,105,110,112,115,121,16494,16496,16499,16513,16518,16531,16536,16556,16564,16569,1,8827,59,1,10932,4,2,112,114,16505,16508,59,1,10936,111,110,59,1,353,117,101,59,1,8829,4,2,59,100,16524,16526,1,10928,105,108,59,1,351,114,99,59,1,349,4,3,69,97,115,16544,16547,16551,59,1,10934,112,59,1,10938,105,109,59,1,8937,111,108,105,110,116,59,1,10771,105,109,59,1,8831,59,1,1089,111,116,4,3,59,98,101,16582,16584,16587,1,8901,59,1,8865,59,1,10854,4,7,65,97,99,109,115,116,120,16606,16611,16634,16642,16646,16652,16668,114,114,59,1,8664,114,4,2,104,114,16618,16622,107,59,1,10533,4,2,59,111,16628,16630,1,8600,119,59,1,8600,116,5,167,1,59,16640,1,167,105,59,1,59,119,97,114,59,1,10537,109,4,2,105,110,16659,16665,110,117,115,59,1,8726,59,1,8726,116,59,1,10038,114,4,2,59,111,16679,16682,3,55349,56624,119,110,59,1,8994,4,4,97,99,111,121,16697,16702,16716,16739,114,112,59,1,9839,4,2,104,121,16708,16713,99,121,59,1,1097,59,1,1096,114,116,4,2,109,112,16724,16729,105,100,59,1,8739,97,114,97,108,108,101,108,59,1,8741,5,173,1,59,16744,1,173,4,2,103,109,16752,16770,109,97,4,3,59,102,118,16762,16764,16767,1,963,59,1,962,59,1,962,4,8,59,100,101,103,108,110,112,114,16788,16790,16795,16806,16817,16828,16832,16838,1,8764,111,116,59,1,10858,4,2,59,113,16801,16803,1,8771,59,1,8771,4,2,59,69,16812,16814,1,10910,59,1,10912,4,2,59,69,16823,16825,1,10909,59,1,10911,101,59,1,8774,108,117,115,59,1,10788,97,114,114,59,1,10610,97,114,114,59,1,8592,4,4,97,101,105,116,16860,16883,16891,16904,4,2,108,115,16866,16878,108,115,101,116,109,105,110,117,115,59,1,8726,104,112,59,1,10803,112,97,114,115,108,59,1,10724,4,2,100,108,16897,16900,59,1,8739,101,59,1,8995,4,2,59,101,16910,16912,1,10922,4,2,59,115,16918,16920,1,10924,59,3,10924,65024,4,3,102,108,112,16932,16938,16958,116,99,121,59,1,1100,4,2,59,98,16944,16946,1,47,4,2,59,97,16952,16954,1,10692,114,59,1,9023,102,59,3,55349,56676,97,4,2,100,114,16970,16985,101,115,4,2,59,117,16978,16980,1,9824,105,116,59,1,9824,59,1,8741,4,3,99,115,117,16996,17028,17089,4,2,97,117,17002,17015,112,4,2,59,115,17009,17011,1,8851,59,3,8851,65024,112,4,2,59,115,17022,17024,1,8852,59,3,8852,65024,117,4,2,98,112,17035,17062,4,3,59,101,115,17043,17045,17048,1,8847,59,1,8849,101,116,4,2,59,101,17056,17058,1,8847,113,59,1,8849,4,3,59,101,115,17070,17072,17075,1,8848,59,1,8850,101,116,4,2,59,101,17083,17085,1,8848,113,59,1,8850,4,3,59,97,102,17097,17099,17112,1,9633,114,4,2,101,102,17106,17109,59,1,9633,59,1,9642,59,1,9642,97,114,114,59,1,8594,4,4,99,101,109,116,17131,17136,17142,17148,114,59,3,55349,56520,116,109,110,59,1,8726,105,108,101,59,1,8995,97,114,102,59,1,8902,4,2,97,114,17160,17172,114,4,2,59,102,17167,17169,1,9734,59,1,9733,4,2,97,110,17178,17202,105,103,104,116,4,2,101,112,17188,17197,112,115,105,108,111,110,59,1,1013,104,105,59,1,981,115,59,1,175,4,5,98,99,109,110,112,17218,17351,17420,17423,17427,4,9,59,69,100,101,109,110,112,114,115,17238,17240,17243,17248,17261,17267,17279,17285,17291,1,8834,59,1,10949,111,116,59,1,10941,4,2,59,100,17254,17256,1,8838,111,116,59,1,10947,117,108,116,59,1,10945,4,2,69,101,17273,17276,59,1,10955,59,1,8842,108,117,115,59,1,10943,97,114,114,59,1,10617,4,3,101,105,117,17299,17335,17339,116,4,3,59,101,110,17308,17310,17322,1,8834,113,4,2,59,113,17317,17319,1,8838,59,1,10949,101,113,4,2,59,113,17330,17332,1,8842,59,1,10955,109,59,1,10951,4,2,98,112,17345,17348,59,1,10965,59,1,10963,99,4,6,59,97,99,101,110,115,17366,17368,17376,17385,17389,17415,1,8827,112,112,114,111,120,59,1,10936,117,114,108,121,101,113,59,1,8829,113,59,1,10928,4,3,97,101,115,17397,17405,17410,112,112,114,111,120,59,1,10938,113,113,59,1,10934,105,109,59,1,8937,105,109,59,1,8831,59,1,8721,103,59,1,9834,4,13,49,50,51,59,69,100,101,104,108,109,110,112,115,17455,17462,17469,17476,17478,17481,17496,17509,17524,17530,17536,17548,17554,5,185,1,59,17460,1,185,5,178,1,59,17467,1,178,5,179,1,59,17474,1,179,1,8835,59,1,10950,4,2,111,115,17487,17491,116,59,1,10942,117,98,59,1,10968,4,2,59,100,17502,17504,1,8839,111,116,59,1,10948,115,4,2,111,117,17516,17520,108,59,1,10185,98,59,1,10967,97,114,114,59,1,10619,117,108,116,59,1,10946,4,2,69,101,17542,17545,59,1,10956,59,1,8843,108,117,115,59,1,10944,4,3,101,105,117,17562,17598,17602,116,4,3,59,101,110,17571,17573,17585,1,8835,113,4,2,59,113,17580,17582,1,8839,59,1,10950,101,113,4,2,59,113,17593,17595,1,8843,59,1,10956,109,59,1,10952,4,2,98,112,17608,17611,59,1,10964,59,1,10966,4,3,65,97,110,17622,17627,17650,114,114,59,1,8665,114,4,2,104,114,17634,17638,107,59,1,10534,4,2,59,111,17644,17646,1,8601,119,59,1,8601,119,97,114,59,1,10538,108,105,103,5,223,1,59,17664,1,223,4,13,97,98,99,100,101,102,104,105,111,112,114,115,119,17694,17709,17714,17737,17742,17749,17754,17860,17905,17957,17964,18090,18122,4,2,114,117,17700,17706,103,101,116,59,1,8982,59,1,964,114,107,59,1,9140,4,3,97,101,121,17722,17728,17734,114,111,110,59,1,357,100,105,108,59,1,355,59,1,1090,111,116,59,1,8411,108,114,101,99,59,1,8981,114,59,3,55349,56625,4,4,101,105,107,111,17764,17805,17836,17851,4,2,114,116,17770,17786,101,4,2,52,102,17777,17780,59,1,8756,111,114,101,59,1,8756,97,4,3,59,115,118,17795,17797,17802,1,952,121,109,59,1,977,59,1,977,4,2,99,110,17811,17831,107,4,2,97,115,17818,17826,112,112,114,111,120,59,1,8776,105,109,59,1,8764,115,112,59,1,8201,4,2,97,115,17842,17846,112,59,1,8776,105,109,59,1,8764,114,110,5,254,1,59,17858,1,254,4,3,108,109,110,17868,17873,17901,100,101,59,1,732,101,115,5,215,3,59,98,100,17884,17886,17898,1,215,4,2,59,97,17892,17894,1,8864,114,59,1,10801,59,1,10800,116,59,1,8749,4,3,101,112,115,17913,17917,17953,97,59,1,10536,4,4,59,98,99,102,17927,17929,17934,17939,1,8868,111,116,59,1,9014,105,114,59,1,10993,4,2,59,111,17945,17948,3,55349,56677,114,107,59,1,10970,97,59,1,10537,114,105,109,101,59,1,8244,4,3,97,105,112,17972,17977,18082,100,101,59,1,8482,4,7,97,100,101,109,112,115,116,17993,18051,18056,18059,18066,18072,18076,110,103,108,101,4,5,59,100,108,113,114,18009,18011,18017,18032,18035,1,9653,111,119,110,59,1,9663,101,102,116,4,2,59,101,18026,18028,1,9667,113,59,1,8884,59,1,8796,105,103,104,116,4,2,59,101,18045,18047,1,9657,113,59,1,8885,111,116,59,1,9708,59,1,8796,105,110,117,115,59,1,10810,108,117,115,59,1,10809,98,59,1,10701,105,109,101,59,1,10811,101,122,105,117,109,59,1,9186,4,3,99,104,116,18098,18111,18116,4,2,114,121,18104,18108,59,3,55349,56521,59,1,1094,99,121,59,1,1115,114,111,107,59,1,359,4,2,105,111,18128,18133,120,116,59,1,8812,104,101,97,100,4,2,108,114,18143,18154,101,102,116,97,114,114,111,119,59,1,8606,105,103,104,116,97,114,114,111,119,59,1,8608,4,18,65,72,97,98,99,100,102,103,104,108,109,111,112,114,115,116,117,119,18204,18209,18214,18234,18250,18268,18292,18308,18319,18343,18379,18397,18413,18504,18547,18553,18584,18603,114,114,59,1,8657,97,114,59,1,10595,4,2,99,114,18220,18230,117,116,101,5,250,1,59,18228,1,250,114,59,1,8593,114,4,2,99,101,18241,18245,121,59,1,1118,118,101,59,1,365,4,2,105,121,18256,18265,114,99,5,251,1,59,18263,1,251,59,1,1091,4,3,97,98,104,18276,18281,18287,114,114,59,1,8645,108,97,99,59,1,369,97,114,59,1,10606,4,2,105,114,18298,18304,115,104,116,59,1,10622,59,3,55349,56626,114,97,118,101,5,249,1,59,18317,1,249,4,2,97,98,18325,18338,114,4,2,108,114,18332,18335,59,1,8639,59,1,8638,108,107,59,1,9600,4,2,99,116,18349,18374,4,2,111,114,18355,18369,114,110,4,2,59,101,18363,18365,1,8988,114,59,1,8988,111,112,59,1,8975,114,105,59,1,9720,4,2,97,108,18385,18390,99,114,59,1,363,5,168,1,59,18395,1,168,4,2,103,112,18403,18408,111,110,59,1,371,102,59,3,55349,56678,4,6,97,100,104,108,115,117,18427,18434,18445,18470,18475,18494,114,114,111,119,59,1,8593,111,119,110,97,114,114,111,119,59,1,8597,97,114,112,111,111,110,4,2,108,114,18457,18463,101,102,116,59,1,8639,105,103,104,116,59,1,8638,117,115,59,1,8846,105,4,3,59,104,108,18484,18486,18489,1,965,59,1,978,111,110,59,1,965,112,97,114,114,111,119,115,59,1,8648,4,3,99,105,116,18512,18537,18542,4,2,111,114,18518,18532,114,110,4,2,59,101,18526,18528,1,8989,114,59,1,8989,111,112,59,1,8974,110,103,59,1,367,114,105,59,1,9721,99,114,59,3,55349,56522,4,3,100,105,114,18561,18566,18572,111,116,59,1,8944,108,100,101,59,1,361,105,4,2,59,102,18579,18581,1,9653,59,1,9652,4,2,97,109,18590,18595,114,114,59,1,8648,108,5,252,1,59,18601,1,252,97,110,103,108,101,59,1,10663,4,15,65,66,68,97,99,100,101,102,108,110,111,112,114,115,122,18643,18648,18661,18667,18847,18851,18857,18904,18909,18915,18931,18937,18943,18949,18996,114,114,59,1,8661,97,114,4,2,59,118,18656,18658,1,10984,59,1,10985,97,115,104,59,1,8872,4,2,110,114,18673,18679,103,114,116,59,1,10652,4,7,101,107,110,112,114,115,116,18695,18704,18711,18720,18742,18754,18810,112,115,105,108,111,110,59,1,1013,97,112,112,97,59,1,1008,111,116,104,105,110,103,59,1,8709,4,3,104,105,114,18728,18732,18735,105,59,1,981,59,1,982,111,112,116,111,59,1,8733,4,2,59,104,18748,18750,1,8597,111,59,1,1009,4,2,105,117,18760,18766,103,109,97,59,1,962,4,2,98,112,18772,18791,115,101,116,110,101,113,4,2,59,113,18784,18787,3,8842,65024,59,3,10955,65024,115,101,116,110,101,113,4,2,59,113,18803,18806,3,8843,65024,59,3,10956,65024,4,2,104,114,18816,18822,101,116,97,59,1,977,105,97,110,103,108,101,4,2,108,114,18834,18840,101,102,116,59,1,8882,105,103,104,116,59,1,8883,121,59,1,1074,97,115,104,59,1,8866,4,3,101,108,114,18865,18884,18890,4,3,59,98,101,18873,18875,18880,1,8744,97,114,59,1,8891,113,59,1,8794,108,105,112,59,1,8942,4,2,98,116,18896,18901,97,114,59,1,124,59,1,124,114,59,3,55349,56627,116,114,105,59,1,8882,115,117,4,2,98,112,18923,18927,59,3,8834,8402,59,3,8835,8402,112,102,59,3,55349,56679,114,111,112,59,1,8733,116,114,105,59,1,8883,4,2,99,117,18955,18960,114,59,3,55349,56523,4,2,98,112,18966,18981,110,4,2,69,101,18973,18977,59,3,10955,65024,59,3,8842,65024,110,4,2,69,101,18988,18992,59,3,10956,65024,59,3,8843,65024,105,103,122,97,103,59,1,10650,4,7,99,101,102,111,112,114,115,19020,19026,19061,19066,19072,19075,19089,105,114,99,59,1,373,4,2,100,105,19032,19055,4,2,98,103,19038,19043,97,114,59,1,10847,101,4,2,59,113,19050,19052,1,8743,59,1,8793,101,114,112,59,1,8472,114,59,3,55349,56628,112,102,59,3,55349,56680,59,1,8472,4,2,59,101,19081,19083,1,8768,97,116,104,59,1,8768,99,114,59,3,55349,56524,4,14,99,100,102,104,105,108,109,110,111,114,115,117,118,119,19125,19146,19152,19157,19173,19176,19192,19197,19202,19236,19252,19269,19286,19291,4,3,97,105,117,19133,19137,19142,112,59,1,8898,114,99,59,1,9711,112,59,1,8899,116,114,105,59,1,9661,114,59,3,55349,56629,4,2,65,97,19163,19168,114,114,59,1,10234,114,114,59,1,10231,59,1,958,4,2,65,97,19182,19187,114,114,59,1,10232,114,114,59,1,10229,97,112,59,1,10236,105,115,59,1,8955,4,3,100,112,116,19210,19215,19230,111,116,59,1,10752,4,2,102,108,19221,19225,59,3,55349,56681,117,115,59,1,10753,105,109,101,59,1,10754,4,2,65,97,19242,19247,114,114,59,1,10233,114,114,59,1,10230,4,2,99,113,19258,19263,114,59,3,55349,56525,99,117,112,59,1,10758,4,2,112,116,19275,19281,108,117,115,59,1,10756,114,105,59,1,9651,101,101,59,1,8897,101,100,103,101,59,1,8896,4,8,97,99,101,102,105,111,115,117,19316,19335,19349,19357,19362,19367,19373,19379,99,4,2,117,121,19323,19332,116,101,5,253,1,59,19330,1,253,59,1,1103,4,2,105,121,19341,19346,114,99,59,1,375,59,1,1099,110,5,165,1,59,19355,1,165,114,59,3,55349,56630,99,121,59,1,1111,112,102,59,3,55349,56682,99,114,59,3,55349,56526,4,2,99,109,19385,19389,121,59,1,1102,108,5,255,1,59,19395,1,255,4,10,97,99,100,101,102,104,105,111,115,119,19419,19426,19441,19446,19462,19467,19472,19480,19486,19492,99,117,116,101,59,1,378,4,2,97,121,19432,19438,114,111,110,59,1,382,59,1,1079,111,116,59,1,380,4,2,101,116,19452,19458,116,114,102,59,1,8488,97,59,1,950,114,59,3,55349,56631,99,121,59,1,1078,103,114,97,114,114,59,1,8669,112,102,59,3,55349,56683,99,114,59,3,55349,56527,4,2,106,110,19498,19501,59,1,8205,106,59,1,8204])},7118:(e,t,n)=>{"use strict";const r=n(4284),i=n(1734),s=r.CODE_POINTS;e.exports=class{constructor(){this.html=null,this.pos=-1,this.lastGapPos=-1,this.lastCharPos=-1,this.gapStack=[],this.skipNextNewLine=!1,this.lastChunkWritten=!1,this.endOfChunkHit=!1,this.bufferWaterline=65536}_err(){}_addGap(){this.gapStack.push(this.lastGapPos),this.lastGapPos=this.pos}_processSurrogate(e){if(this.pos!==this.lastCharPos){const t=this.html.charCodeAt(this.pos+1);if(r.isSurrogatePair(t))return this.pos++,this._addGap(),r.getSurrogatePairCodePoint(e,t)}else if(!this.lastChunkWritten)return this.endOfChunkHit=!0,s.EOF;return this._err(i.surrogateInInputStream),e}dropParsedChunk(){this.pos>this.bufferWaterline&&(this.lastCharPos-=this.pos,this.html=this.html.substring(this.pos),this.pos=0,this.lastGapPos=-1,this.gapStack=[])}write(e,t){this.html?this.html+=e:this.html=e,this.lastCharPos=this.html.length-1,this.endOfChunkHit=!1,this.lastChunkWritten=t}insertHtmlAtCurrentPos(e){this.html=this.html.substring(0,this.pos+1)+e+this.html.substring(this.pos+1,this.html.length),this.lastCharPos=this.html.length-1,this.endOfChunkHit=!1}advance(){if(this.pos++,this.pos>this.lastCharPos)return this.endOfChunkHit=!this.lastChunkWritten,s.EOF;let e=this.html.charCodeAt(this.pos);return this.skipNextNewLine&&e===s.LINE_FEED?(this.skipNextNewLine=!1,this._addGap(),this.advance()):e===s.CARRIAGE_RETURN?(this.skipNextNewLine=!0,s.LINE_FEED):(this.skipNextNewLine=!1,r.isSurrogate(e)&&(e=this._processSurrogate(e)),e>31&&e<127||e===s.LINE_FEED||e===s.CARRIAGE_RETURN||e>159&&e<64976||this._checkForProblematicCharacters(e),e)}_checkForProblematicCharacters(e){r.isControlCodePoint(e)?this._err(i.controlCharacterInInputStream):r.isUndefinedCodePoint(e)&&this._err(i.noncharacterInInputStream)}retreat(){this.pos===this.lastGapPos&&(this.lastGapPos=this.gapStack.pop(),this.pos--),this.pos--}}},7296:(e,t,n)=>{"use strict";const{DOCUMENT_MODE:r}=n(6152);t.createDocument=function(){return{nodeName:"#document",mode:r.NO_QUIRKS,childNodes:[]}},t.createDocumentFragment=function(){return{nodeName:"#document-fragment",childNodes:[]}},t.createElement=function(e,t,n){return{nodeName:e,tagName:e,attrs:n,namespaceURI:t,childNodes:[],parentNode:null}},t.createCommentNode=function(e){return{nodeName:"#comment",data:e,parentNode:null}};const i=function(e){return{nodeName:"#text",value:e,parentNode:null}},s=t.appendChild=function(e,t){e.childNodes.push(t),t.parentNode=e},o=t.insertBefore=function(e,t,n){const r=e.childNodes.indexOf(n);e.childNodes.splice(r,0,t),t.parentNode=e};t.setTemplateContent=function(e,t){e.content=t},t.getTemplateContent=function(e){return e.content},t.setDocumentType=function(e,t,n,r){let i=null;for(let t=0;t<e.childNodes.length;t++)if("#documentType"===e.childNodes[t].nodeName){i=e.childNodes[t];break}i?(i.name=t,i.publicId=n,i.systemId=r):s(e,{nodeName:"#documentType",name:t,publicId:n,systemId:r})},t.setDocumentMode=function(e,t){e.mode=t},t.getDocumentMode=function(e){return e.mode},t.detachNode=function(e){if(e.parentNode){const t=e.parentNode.childNodes.indexOf(e);e.parentNode.childNodes.splice(t,1),e.parentNode=null}},t.insertText=function(e,t){if(e.childNodes.length){const n=e.childNodes[e.childNodes.length-1];if("#text"===n.nodeName)return void(n.value+=t)}s(e,i(t))},t.insertTextBefore=function(e,t,n){const r=e.childNodes[e.childNodes.indexOf(n)-1];r&&"#text"===r.nodeName?r.value+=t:o(e,i(t),n)},t.adoptAttributes=function(e,t){const n=[];for(let t=0;t<e.attrs.length;t++)n.push(e.attrs[t].name);for(let r=0;r<t.length;r++)-1===n.indexOf(t[r].name)&&e.attrs.push(t[r])},t.getFirstChild=function(e){return e.childNodes[0]},t.getChildNodes=function(e){return e.childNodes},t.getParentNode=function(e){return e.parentNode},t.getAttrList=function(e){return e.attrs},t.getTagName=function(e){return e.tagName},t.getNamespaceURI=function(e){return e.namespaceURI},t.getTextNodeContent=function(e){return e.value},t.getCommentNodeContent=function(e){return e.data},t.getDocumentTypeNodeName=function(e){return e.name},t.getDocumentTypeNodePublicId=function(e){return e.publicId},t.getDocumentTypeNodeSystemId=function(e){return e.systemId},t.isTextNode=function(e){return"#text"===e.nodeName},t.isCommentNode=function(e){return"#comment"===e.nodeName},t.isDocumentTypeNode=function(e){return"#documentType"===e.nodeName},t.isElementNode=function(e){return!!e.tagName},t.setNodeSourceCodeLocation=function(e,t){e.sourceCodeLocation=t},t.getNodeSourceCodeLocation=function(e){return e.sourceCodeLocation},t.updateNodeSourceCodeLocation=function(e,t){e.sourceCodeLocation=Object.assign(e.sourceCodeLocation,t)}},8904:e=>{"use strict";e.exports=function(e,t){return[e,t=t||Object.create(null)].reduce(((e,t)=>(Object.keys(t).forEach((n=>{e[n]=t[n]})),e)),Object.create(null))}},1704:e=>{"use strict";class t{constructor(e){const t={},n=this._getOverriddenMethods(this,t);for(const r of Object.keys(n))"function"==typeof n[r]&&(t[r]=e[r],e[r]=n[r])}_getOverriddenMethods(){throw new Error("Not implemented")}}t.install=function(e,t,n){e.__mixins||(e.__mixins=[]);for(let n=0;n<e.__mixins.length;n++)if(e.__mixins[n].constructor===t)return e.__mixins[n];const r=new t(e,n);return e.__mixins.push(r),r},e.exports=t},184:e=>{"use strict";e.exports=".nav {\n margin: 0;\n max-width: 150px;\n min-width: 90px;\n justify-content: center;\n align-content: center;\n font-size: 40px;\n color: #ccc;\n text-align: center;\n text-decoration: none;\n text-rendering: auto;\n -webkit-transition: all 350ms ease;\n -moz-transition: all 350ms ease;\n -o-transition: all 350ms ease;\n transition: all 350ms ease\n}\n\n.nav:hover {\n text-decoration: none;\n color: #444\n}\n\n.nav-next {\n float: right;\n display: block;\n}\n\n.nav-prev {\n float: left;\n display: block;\n}\n\n#toc li {\n padding: 0.07rem;\n}\n\nli.current {\n border-radius: 0.5rem;\n background-color: rgb(226, 231, 235);\n /* rgb(226, 231, 235); */\n /* rgb(255, 247, 229); */\n}\n"},3129:e=>{"use strict";e.exports=require("child_process")},8614:e=>{"use strict";e.exports=require("events")},5747:e=>{"use strict";e.exports=require("fs")},5622:e=>{"use strict";e.exports=require("path")},1669:e=>{"use strict";e.exports=require("util")}},r={};function i(e){if(r[e])return r[e].exports;var t=r[e]={exports:{}};return n[e].call(t.exports,t,t.exports,i),t.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,i.t=function(n,r){if(1&r&&(n=this(n)),8&r)return n;if("object"==typeof n&&n){if(4&r&&n.__esModule)return n;if(16&r&&"function"==typeof n.then)return n}var s=Object.create(null);i.r(s);var o={};e=e||[null,t({}),t([]),t(t)];for(var a=2&r&&n;"object"==typeof a&&!~e.indexOf(a);a=t(a))Object.getOwnPropertyNames(a).forEach((e=>o[e]=()=>n[e]));return o.default=()=>n,i.d(s,o),s},i.d=(e,t)=>{for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{"use strict";var e=i(5747),t=i(5622),n=i(7503),r=i(7911);const s=(...e)=>(...t)=>{let n=t;for(let t=0;t<e.length;t++)n=[e[t].apply(void 0,n)];return n[0]},o=e.promises,a=e=>o.mkdir(e,{recursive:!0}).then((t=>e),(e=>e)),c=e=>async n=>{if(await(e=>t=>Promise.allSettled([o.stat(e),o.stat(t)]).then((([e,t])=>"rejected"===t.status||e.value.atimeMs>t.value.atimeMs)))(e)(n)){const r=t.dirname(n);return await l(r)||await a(r),o.copyFile(e,n).then((e=>n))}return!1},l=t=>o.access(t,e.constants.F_OK).then((e=>!0),(e=>!1)),u=require("url"),h=e.promises,p=e=>("#content",e=>e.find("#content"))(e),d=(e,t)=>(n,r,i,...o)=>{const a=_(t),c=o.map(a),l=i.clone();return s(p,((...e)=>t=>(e.forEach((e=>t.append(e.clone()))),t.end()))(...c),O(e(l.find("#footnotes"))),I(r,t.get("navigation")),b(r),D)(l)},f=e=>{const t=(n,i,s,o,a,c,l)=>{const u=n.depth[c]||n.depth.default,h=l?"index":((e,t,n)=>1===t?`${e}${n}`:2===t?`${e}_sec${n}`:`${e}-${n}`)(a,o,c);if(u===o)return void e(n,h,i,s,l);const p=`div.sect${o+1}`;var d;e(n,h,i,(d=p,e=>e.clone().find(d).remove().end())(s),l);const f=s.find(p);return 0!==f.length?f.each(((e,s)=>t(n,i,new r.Cheerio(s),o+1,h,e+1,!1))):void 0};return t},m=(e,t,n,i,s)=>{const o=i.clone();let a=0,c=0,l=!1,u=!1;o.find("#content").children().each(((i,h)=>{const p=new r.Cheerio(h);if(!p.hasClass("partintro"))return p.hasClass("sect1")?(l||u?u=!1:(u=!0,l=!0),n(s,o,p,1,"chap",++a,u)):p.hasClass("sect0")?(l||u?u=!1:(u=!0,l=!0),t(s,o,p,++c,u)):"preamble"===p.attr("id")?(u=!0,l=!0,e(s,o,p,u)):void 0}))},T=(e,t,n)=>{const i=((e,t)=>{const n=new Map,i={},s=[];let o=0;const a=(e,t)=>{i[t]=o,s[o]=t,o++,e.find("*[id]").each(((e,i)=>{const s=new r.Cheerio(i).attr("id");s.startsWith("_footnotedef_")||n.set(s,`${t}#${s}`)})),e.attr("id")?n.set(e.attr("id"),t):n.set(e.children().first().attr("id"),t)},c=f(((e,t,n,r,i)=>{a(r,i?"index.html":`${t}.html`)}));return m(((e,t,n,r)=>{a(n,r?"index.html":"preamble.html")}),((e,t,n,r,i)=>{a(n,i?"index.html":`part${r}.html`)}),c,e,t),n.set("navigation",{filename2pageNum:i,filenameList:s}),n})(t.root(),n),o=_(i),a=s((e=>t=>{const{strictMode:n}=e,r=t.root().clone().find("#content > #preamble, #content > .partintro, #content > .sect1, #content > .sect0").remove().end(),i=r.find("#content");return n?(i.children().length>0&&(s=i,console.log("INFO: Non-Asciidoc contents encountered under <div id='#content'>.\nINFO: They are ignored and not included in chunked html by default.\nINFO: If you want them to be included, use the '--no-strictMode' command option."),s.html().trim().split(/\n+/).forEach((e=>console.log(`INFO: Found content => ${e}`))),console.log()),i.empty().end()):r;var s})(n),E,o,M(n.outdir),x(n),(e=>t=>(new r.Cheerio(`<li><a href="index.html">${e.titlePage}</a></li>`).insertBefore(t.find("div#toc > ul > li:first-child")),t))(n))(t),c=C(g(t("#footnotes")));m(((e,t,n)=>(r,i,s,o)=>{const a=o?"index":"preamble";e(a,n(r,a,t,s))})(e,a,d(c,i)),((e,t,n)=>(r,i,s,o,a)=>{const c=a?"index":`part${o}`;e(c,((e,t,n,r,i)=>i(e,t,n,...r.next().hasClass("partintro")?[r,r.next()]:[r]))(r,c,t,s,n))})(e,a,d(c,i)),((e,t,n)=>f(((r,i,s,o,a)=>{e(i,n(r,i,t,o))})))(e,a,d(c,i)),t.root(),n)},E=e=>(0===e.find("#toc a[href^=#]").length&&console.log("INFO: Your TOC has no in-document links.\n"),e),_=e=>t=>(t.find("a[href^=#]").each(((t,n)=>{const i=new r.Cheerio(n),s=i.attr("href");if(!s.startsWith("#_footnotedef_")&&!s.startsWith("#_footnoteref_")){const t=s.substring(1);i.attr("href",`${e.get(t)}`)}})),t),g=e=>{const t=new Set;return e.find("div.footnote").each(((e,n)=>{t.add(new r.Cheerio(n).attr("id"))})),t},A=e=>e.find("a.footnote"),C=e=>t=>n=>{if(0===n.length)return t.empty().end(),n;const i=new Set([...e]);return n.each(((e,t)=>{i.delete(new r.Cheerio(t).attr("href").substring(1))})),i.forEach((e=>{t.find(`#${e}`).remove().end()})),n},N=e=>{if(0===e.length)return e;const t=new Set;return e.each(((e,n)=>{const i=new r.Cheerio(n);if(i.attr("id"))return;const s=i.attr("href");if(t.has(s))return;t.add(s);const o=v(s);i.attr("id",o)})),e},v=e=>`_footnoteref${e.substring(e.lastIndexOf("_"))}`,O=e=>t=>(s(p,A,e,N)(t),t),b=e=>t=>(s(S(e),y)(t),t),S=e=>t=>t.find(`#toc a[href^="${e}.html"]`).parent(),y=e=>e.addClass("current"),I=(e,{filename2pageNum:t,filenameList:n})=>i=>{const s=t[`${e}.html`],o=s>0?n[s-1]:null,a=s<n.length-1?n[s+1]:null,c=R(o,a),l=i.find("body > div:last-of-type");return"footer"===l.attr("id")?new r.Cheerio(c).insertBefore(l):new r.Cheerio(c).insertAfter(l),i},R=(e,t)=>`\n<nav>\n ${e?`<a rel="prev" href="${e}" class="nav nav-prev"\n title="Previous page"\n aria-label="Previous page"\n aria-keyshortcuts="Left">\n <i class="fa fa-angle-left"></i>\n </a>`:""}\n ${t?`<a rel="next" href="${t}" class="nav nav-next"\n title="Next page"\n aria-label="Next page"\n aria-keyshortcuts="Right">\n <i class="fa fa-angle-right"></i>\n </a>`:""}\n <div style="clear: both"></div>\n</nav>\n`,k=/^#|https:|http:|file:/,L=(e,n)=>i=>{const s=(e=>n=>{const r=t.dirname(e);return t.join(r,n)})(e);(e=>{const n=[];return e.find("link[href], script[src], img[src]").each(((e,i)=>{const s=new r.Cheerio(i),o=s.attr("href")||s.attr("src");o.match(k)||t.isAbsolute(o)||n.push((e=>{const n=t.basename(e),r=n.indexOf("?");return-1===r?e:t.join(t.dirname(e),n.substring(0,r))})(o))})),n})(i).forEach((e=>{return c(s(e))((r=e,t.join(n,r))).catch((t=>console.log(` Local file linked from the document is missing: ${s(e)}`)));var r}))},M=e=>n=>(n.find("style").each(((n,i)=>{const s=`style${n}.css`,o=new r.Cheerio(i);h.writeFile(t.join(e,s),new r.Cheerio(i).contents().text()),o.replaceWith(new r.Cheerio(`<link rel='stylesheet' href='${s}' type='text/css' />`))})),n),x=e=>t=>{const{css:n,outdir:r}=e;if(!n||0==n.length)return t;const i=t.find("head");return n.forEach((e=>i.append(P(r,e)))),t},P=(e,n)=>{const r=t.basename(n),s=t.join(e,r);return"asciidoctor-chunker.css"===n?Promise.resolve().then(i.t.bind(i,184,17)).then((e=>h.writeFile(s,e.default))).catch((e=>{const n=t.dirname((0,u.fileURLToPath)("file:///Users/shito/Documents/git-repositories/javascript/asciidoctor-chunker/src/DOM.mjs")),r=t.resolve(n,"css","asciidoctor-chunker.css");c(r)(s)})):c(n)(s),`<link rel="stylesheet" href="${r}" type="text/css" />`},D=e=>(e.find("html").append("\n <script>\n function isInViewport(ele) {\n const rect = ele.getBoundingClientRect();\n return (\n rect.top >= 0 &&\n rect.bottom <= (window.innerHeight || document.documentElement.clientHeight)\n );\n }\n function yPosition (ele) {\n const rect = ele.getBoundingClientRect();\n return (rect.top - 20); // 20px above\n }\n let curr = document.getElementsByClassName('current');\n if (!isInViewport(curr[curr.length - 1])) {\n document.getElementById('toc').scrollTo({\n top: yPosition(curr[0]),\n left: 0,\n behavior: 'smooth'\n });\n }\n\n /* For page navigation */\n function gotoPage(selector) {\n const button = document.querySelector(selector);\n if (button)\n window.location.href = button.href;\n }\n document.addEventListener('keydown', e => {\n switch (e.key) {\n case 'ArrowRight':\n e.preventDefault();\n gotoPage('.nav-next');\n break;\n case 'ArrowLeft':\n e.preventDefault();\n gotoPage('.nav-prev');\n break;\n }\n });\n <\/script>\n "),e);var w=i(8783);const H=(e,t)=>e.split(","),F=(e,t)=>{const[n,r]=e.split("-").map((e=>parseInt(e)));return r?new Array(r-n+1).fill(0).reduce(((e,r,i)=>({...e,[i+n]:+t})),{}):{[n]:+t}},U={depth:1,outdir:"html_chunks",css:["asciidoctor-chunker.css"],strictMode:!0,titlePage:"Titlepage"};console.log();const{singleHTML:B,config:G}=(e=>{const t=w.version("1.0.4").name("node asciidoctor-chunker.js").usage("<single.html> [options]").option("-o, --outdir <directory>","The output directory where the chunked html will be written out to.","html_chunks").option("--depth <depth specifier>","See the description above.","1").option("--css <paths>","The comma seprated list of css file paths to include. The paths must be accesible from the current directory.",H).option("--no-strictMode","Turns off the strict mode.").option("--titlePage <title string>","Sets title page toc string.","Titlepage").description("Description:\n Splits an html file generated by Asciidoctor to chunked htmls.\n The default output directory is 'html_chunks'. You can override\n it with the '-o' option.\n\n The default splits are made by preamble, parts, and chapters.\n You can specify the extraction level with the '--depth' option.\n\n If you have any custom elements inserted under <div d=#content>\n in the source single html, asciidoctor-chunker ignores it by\n default. If you want them to be included into the chunked html,\n set the option --no-strictMode. The element will be copied to\n every chunked page.\n\n By default asciidoctor-chunker.css is included in the\n output directory. It provides the non-opinionated page\n navigation at the bottom of every chunked page. You can\n override this by giving a comma separated list of paths\n to your custom css files. They are copied into the output\n directory so the paths must be accessible by\n asciidoctor-chunker.\n\nThe Depth Specifier:\n You can list the multiple settings by connecting each\n specifier with a comma. Each specifier is consisted of\n either a single number or a collon separated with two\n numbers.\n\n The single number sets the default level of extraction.\n Number 1 is the application's default and it extracts the\n chapter level. Number 2 for section extraction, 3 for\n subsection, and so on to 6 which is the maximum section\n level of Asciidoctor.\n\n The list of collon separated numbers, chap:level, can\n change the extraction depth for specific chapters,\n so 3:2 means chapter 3 is extracted down to 2 levels (i.e.\n section level). You can use a hyphen to specify the range\n of chapters to set as chapFrom-chapTo:level, so 1-3:5 means\n chapter 1 through 5 should be extracted with the depth\n level 5.\n\nExample:\n --depth 2 The default level 2, all the chapters and\n sections will be extracted.\n --depth 3,1:2,8:5 The default level 3, level 2 for Chap 1,\n level 5 for Chap 8.\n --depth 1,3-8:2 The default level 1, level 2 for Chap 3 to 8.\n --depth 3-8:3 No default is set so default level is 1, and\n level 3 for chap3 to 8.").parse(e),{args:n,depth:r,outdir:i,strictMode:s,titlePage:o,css:a=["asciidoctor-chunker.css"]}=t;1!==n.length&&t.help();const c=(e=>e.split(",").map((e=>{const[t,n]=e.split(":");return n?F(t,n):{default:+t}})).reduce(((e,t)=>({...e,...t})),{default:1}))(r);return{singleHTML:n[0],config:{depth:c,outdir:i,css:a,strictMode:s,titlePage:o}}})(process.argv);(async(r,i=U)=>{const{outdir:s}=i;await l(s)||await a(s);const o=(c=s,(e,n)=>{const r=t.format({dir:c,base:`${e}.html`});h.writeFile(r,n.html()).catch((e=>console.log("File write error:",r)))});var c;const u=(p=r,n.load(e.readFileSync(p)));var p;L(r,s)(u.root()),T(o,u,i),console.log(`Successfully chunked! => ${t.join(s,"index.html")}\n`)})(B,G)})()})(); \ No newline at end of file
diff --git a/codegen/vulkan/scripts/cereal/__init__.py b/codegen/vulkan/scripts/cereal/__init__.py
deleted file mode 100644
index 1966572f..00000000
--- a/codegen/vulkan/scripts/cereal/__init__.py
+++ /dev/null
@@ -1,20 +0,0 @@
-from .common import *
-from .decoder import *
-from .encoder import *
-from .extensionstructs import *
-from .frontend import *
-from .functable import *
-from .marshaling import *
-from .reservedmarshaling import *
-from .counting import *
-from .testing import *
-from .transform import *
-from .deepcopy import *
-from .handlemap import *
-from .dispatch import *
-from .unbox import *
-from .decodersnapshot import *
-from .subdecode import *
-from .api_log_decoder import *
-from .vkextensionstructuretype import VulkanGfxstreamStructureType, \
- VulkanAndroidNativeBufferStructureType
diff --git a/codegen/vulkan/scripts/cereal/api_log_decoder.py b/codegen/vulkan/scripts/cereal/api_log_decoder.py
deleted file mode 100644
index 97930f5f..00000000
--- a/codegen/vulkan/scripts/cereal/api_log_decoder.py
+++ /dev/null
@@ -1,338 +0,0 @@
-import os
-from typing import List, Set, Dict, Optional
-
-from . import VulkanType, VulkanCompoundType
-from .wrapperdefs import VulkanWrapperGenerator
-
-
-class ApiLogDecoder(VulkanWrapperGenerator):
- """
- This class generates decoding logic for the graphics API logs captured by
- [GfxApiLogger](http://source/play-internal/battlestar/aosp/device/generic/vulkan-cereal/base/GfxApiLogger.h)
-
- This allows developers to see a pretty-printed version of the API log data when using
- print_gfx_logs.py
- """
-
- # List of Vulkan APIs that we will generate decoding logic for
- generated_apis = [
- "vkAcquireImageANDROID",
- "vkAllocateMemory",
- "vkBeginCommandBufferAsyncGOOGLE",
- "vkBindBufferMemory",
- "vkBindImageMemory",
- "vkCmdBeginRenderPass",
- "vkCmdBindDescriptorSets",
- "vkCmdBindIndexBuffer",
- "vkCmdBindPipeline",
- "vkCmdBindVertexBuffers",
- "vkCmdClearAttachments",
- "vkCmdClearColorImage",
- "vkCmdCopyBufferToImage",
- "vkCmdCopyImageToBuffer",
- "vkCmdDraw",
- "vkCmdDrawIndexed",
- "vkCmdEndRenderPass",
- "vkCmdPipelineBarrier",
- "vkCmdSetScissor",
- "vkCmdSetViewport",
- "vkCollectDescriptorPoolIdsGOOGLE",
- "vkCreateBufferWithRequirementsGOOGLE",
- "vkCreateDescriptorPool",
- "vkCreateDescriptorSetLayout",
- "vkCreateFence",
- "vkCreateFramebuffer",
- "vkCreateGraphicsPipelines",
- "vkCreateImageView",
- "vkCreateImageWithRequirementsGOOGLE",
- "vkCreatePipelineCache",
- "vkCreateRenderPass",
- "vkCreateSampler",
- "vkCreateSemaphore",
- "vkCreateShaderModule",
- "vkDestroyBuffer",
- "vkDestroyCommandPool",
- "vkDestroyDescriptorPool",
- "vkDestroyDescriptorSetLayout",
- "vkDestroyDevice",
- "vkDestroyFence",
- "vkDestroyFramebuffer",
- "vkDestroyImage",
- "vkDestroyImageView",
- "vkDestroyInstance",
- "vkDestroyPipeline",
- "vkDestroyPipelineCache",
- "vkDestroyPipelineLayout",
- "vkDestroyRenderPass",
- "vkDestroySemaphore",
- "vkDestroyShaderModule",
- "vkEndCommandBufferAsyncGOOGLE",
- "vkFreeCommandBuffers",
- "vkFreeMemory",
- "vkFreeMemorySyncGOOGLE",
- "vkGetFenceStatus",
- "vkGetMemoryHostAddressInfoGOOGLE",
- "vkGetBlobGOOGLE",
- "vkGetPhysicalDeviceFormatProperties",
- "vkGetPhysicalDeviceProperties2KHR",
- "vkGetPipelineCacheData",
- "vkGetSwapchainGrallocUsageANDROID",
- "vkQueueCommitDescriptorSetUpdatesGOOGLE",
- "vkQueueFlushCommandsGOOGLE",
- "vkQueueSignalReleaseImageANDROIDAsyncGOOGLE",
- "vkQueueSubmitAsyncGOOGLE",
- "vkQueueWaitIdle",
- "vkResetFences",
- "vkWaitForFences",
- ]
-
- def __init__(self, module, typeInfo):
- VulkanWrapperGenerator.__init__(self, module, typeInfo)
- self.typeInfo = typeInfo
-
- # Set of Vulkan structs that we need to write decoding logic for
- self.structs: Set[str] = set()
-
- # Maps enum group names to the list of enums in the group, for all enum groups in the spec
- # E.g.: "VkResult": ["VK_SUCCESS", "VK_NOT_READY", "VK_TIMEOUT", etc...]
- self.all_enums: Dict[str, List[str]] = {}
-
- # Set of Vulkan enums that we need to write decoding logic for
- self.needed_enums: Set[str] = {"VkStructureType"}
-
- def onBegin(self):
- self.module.append("""
-#####################################################################################################
-# Pretty-printer functions for Vulkan data structures
-# THIS FILE IS AUTO-GENERATED - DO NOT EDIT
-#
-# To re-generate this file, run generate-vulkan-sources.sh
-#####################################################################################################
-
-""".lstrip())
-
- def onGenGroup(self, groupinfo, groupName, alias=None):
- """Called for each enum group in the spec"""
- for enum in groupinfo.elem.findall("enum"):
- self.all_enums[groupName] = self.all_enums.get(groupName, []) + [enum.get('name')]
-
- def onEnd(self):
- for api_name in sorted(self.generated_apis):
- self.process_api(api_name)
- self.process_structs()
- self.process_enums()
-
- def process_api(self, api_name):
- """Main entry point to generate decoding logic for each Vulkan API"""
- api = self.typeInfo.apis[api_name]
- self.module.append('def OP_{}(printer, indent: int):\n'.format(api_name))
-
- # Decode the sequence number. All commands have sequence numbers, except those handled
- # by VkSubdecoder.cpp. The logic here is a bit of a hack since it's based on the command
- # name. Ideally, we would detect whether a particular command is part of a subdecode block
- # in the decoding script.
- if not api_name.startswith("vkCmd") and api_name != "vkBeginCommandBufferAsyncGOOGLE":
- self.module.append(' printer.write_int("seqno: ", 4, indent)\n')
-
- for param in api.parameters:
- # Add any structs that this API uses to the list of structs to write decoding logic for
- if self.typeInfo.isCompoundType(param.typeName):
- self.structs.add(param.typeName)
-
- # Don't try to print the pData field of vkQueueFlushCommandsGOOGLE, those are the
- # commands processed as part of the subdecode pass
- if api.name == "vkQueueFlushCommandsGOOGLE" and param.paramName == "pData":
- continue
-
- # Write out decoding logic for that parameter
- self.process_type(param)
-
- # Finally, add a return statement. This is needed in case the API has no parameters.
- self.module.append(' return\n\n')
-
- def process_structs(self):
- """Writes decoding logic for all the structs that we use"""
-
- # self.structs now contains all the structs used directly by the Vulkan APIs we use.
- # Recursively expand this set to add all the structs used by these structs.
- copy = self.structs.copy()
- self.structs.clear()
- for struct_name in copy:
- self.expand_needed_structs(struct_name)
-
- # Now we have the full list of structs that we need to write decoding logic for.
- # Write a decoder for each of them
- for struct_name in sorted(self.structs):
- struct = self.typeInfo.structs[struct_name]
- self.module.append('def struct_{}(printer, indent: int):\n'.format(struct_name))
- for member in self.get_members(struct):
- self.process_type(member)
- self.module.append('\n')
-
- def expand_needed_structs(self, struct_name: str):
- """
- Recursively adds all the structs used by a given struct to the list of structs to process
- """
- if struct_name in self.structs:
- return
- self.structs.add(struct_name)
- struct = self.typeInfo.structs[struct_name]
- for member in self.get_members(struct):
- if self.typeInfo.isCompoundType(member.typeName):
- self.expand_needed_structs(member.typeName)
-
- def get_members(self, struct: VulkanCompoundType):
- """
- Returns the members of a struct/union that we need to process.
- For structs, returns the list of all members
- For unions, returns a list with just the first member.
- """
- return struct.members[0:1] if struct.isUnion else struct.members
-
- def process_type(self, type: VulkanType):
- """
- Writes decoding logic for a single Vulkan type. This could be the parameter in a Vulkan API,
- or a struct member.
- """
- if type.typeName == "VkStructureType":
- self.module.append(
- ' printer.write_stype_and_pnext("{}", indent)\n'.format(
- type.parent.structEnumExpr))
- return
-
- if type.isNextPointer():
- return
-
- if type.paramName == "commandBuffer":
- if type.parent.name != "vkQueueFlushCommandsGOOGLE":
- return
-
- # Enums
- if type.isEnum(self.typeInfo):
- self.needed_enums.add(type.typeName)
- self.module.append(
- ' printer.write_enum("{}", {}, indent)\n'.format(
- type.paramName, type.typeName))
- return
-
- # Bitmasks
- if type.isBitmask(self.typeInfo):
- enum_type = self.typeInfo.bitmasks.get(type.typeName)
- if enum_type:
- self.needed_enums.add(enum_type)
- self.module.append(
- ' printer.write_flags("{}", {}, indent)\n'.format(
- type.paramName, enum_type))
- return
- # else, fall through and let the primitive type logic handle it
-
- # Structs or unions
- if self.typeInfo.isCompoundType(type.typeName):
- self.module.append(
- ' printer.write_struct("{name}", struct_{type}, {optional}, {count}, indent)\n'
- .format(name=type.paramName,
- type=type.typeName,
- optional=type.isOptionalPointer(),
- count=self.get_length_expression(type)))
- return
-
- # Null-terminated strings
- if type.isString():
- self.module.append(' printer.write_string("{}", None, indent)\n'.format(
- type.paramName))
- return
-
- # Arrays of primitive types
- if type.staticArrExpr and type.primitiveEncodingSize and type.primitiveEncodingSize <= 8:
- # Array sizes are specified either as a number, or as an enum value
- array_size = int(type.staticArrExpr) if type.staticArrExpr.isdigit() \
- else self.typeInfo.enumValues.get(type.staticArrExpr)
- assert array_size is not None, type.staticArrExpr
-
- if type.typeName == "char":
- self.module.append(
- ' printer.write_string("{}", {}, indent)\n'.format(
- type.paramName, array_size))
- elif type.typeName == "float":
- self.module.append(
- ' printer.write_float("{}", indent, count={})\n'
- .format(type.paramName, array_size))
- else:
- self.module.append(
- ' printer.write_int("{name}", {int_size}, indent, signed={signed}, count={array_size})\n'
- .format(name=type.paramName,
- array_size=array_size,
- int_size=type.primitiveEncodingSize,
- signed=type.isSigned()))
- return
-
- # Pointers
- if type.pointerIndirectionLevels > 0:
- # Assume that all uint32* are always serialized directly rather than passed by pointers.
- # This is probably not always true (e.g. out params) - fix this as needed.
- size = 4 if type.primitiveEncodingSize == 4 else 8
- self.module.append(
- ' {name} = printer.write_int("{name}", {size}, indent, optional={opt}, count={count}, big_endian={big_endian})\n'
- .format(name=type.paramName,
- size=size,
- opt=type.isOptionalPointer(),
- count=self.get_length_expression(type),
- big_endian=self.using_big_endian(type)))
- return
-
- # Primitive types (ints, floats)
- if type.isSimpleValueType(self.typeInfo) and type.primitiveEncodingSize:
- if type.typeName == "float":
- self.module.append(
- ' printer.write_float("{name}", indent)\n'.format(name=type.paramName))
- else:
- self.module.append(
- ' {name} = printer.write_int("{name}", {size}, indent, signed={signed}, big_endian={big_endian})\n'.format(
- name=type.paramName,
- size=type.primitiveEncodingSize,
- signed=type.isSigned(),
- big_endian=self.using_big_endian(type))
- )
- return
-
- raise NotImplementedError(
- "No decoding logic for {} {}".format(type.typeName, type.paramName))
-
- def using_big_endian(self, type: VulkanType):
- """For some reason gfxstream serializes some types as big endian"""
- return type.typeName == "size_t"
-
- def get_length_expression(self, type: VulkanType) -> Optional[str]:
- """Returns the length expression for a given type"""
- if type.lenExpr is None:
- return None
-
- if type.lenExpr.isalpha():
- return type.lenExpr
-
- # There are a couple of instances in the spec where we use a math expression to express the
- # length (e.g. VkPipelineMultisampleStateCreateInfo). CodeGen().generalLengthAccess() has
- # logic o parse these expressions correctly, but for now,we just use a simple lookup table.
- known_expressions = {
- r"latexmath:[\lceil{\mathit{rasterizationSamples} \over 32}\rceil]":
- "int(rasterizationSamples / 32)",
- r"latexmath:[\textrm{codeSize} \over 4]": "int(codeSize / 4)",
- r"null-terminated": None
- }
- if type.lenExpr in known_expressions:
- return known_expressions[type.lenExpr]
-
- raise NotImplementedError("Unknown length expression: " + type.lenExpr)
-
- def process_enums(self):
- """
- For each Vulkan enum that we use, write out a python dictionary mapping the enum values back
- to the enum name as a string
- """
- for enum_name in sorted(self.needed_enums):
- self.module.append('{} = {{\n'.format(enum_name))
- for identifier in self.all_enums[enum_name]:
- value = self.typeInfo.enumValues.get(identifier)
- if value is not None and isinstance(value, int):
- self.module.append(' {}: "{}",\n'.format(value, identifier))
- self.module.append('}\n\n')
diff --git a/codegen/vulkan/scripts/cereal/common/__init__.py b/codegen/vulkan/scripts/cereal/common/__init__.py
deleted file mode 100644
index dd6cdc99..00000000
--- a/codegen/vulkan/scripts/cereal/common/__init__.py
+++ /dev/null
@@ -1,2 +0,0 @@
-from .vulkantypes import *
-from .codegen import *
diff --git a/codegen/vulkan/scripts/cereal/common/codegen.py b/codegen/vulkan/scripts/cereal/common/codegen.py
deleted file mode 100644
index b6b8a6b3..00000000
--- a/codegen/vulkan/scripts/cereal/common/codegen.py
+++ /dev/null
@@ -1,1061 +0,0 @@
-# Copyright (c) 2018 The Android Open Source Project
-# Copyright (c) 2018 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from .vulkantypes import VulkanType, VulkanTypeInfo, VulkanCompoundType, VulkanAPI
-from collections import OrderedDict
-from copy import copy
-from pathlib import Path, PurePosixPath
-
-import os
-import sys
-import shutil
-import subprocess
-
-# Class capturing a single file
-
-
-class SingleFileModule(object):
- def __init__(self, suffix, directory, basename, customAbsDir=None, suppress=False):
- self.directory = directory
- self.basename = basename
- self.customAbsDir = customAbsDir
- self.suffix = suffix
- self.file = None
-
- self.preamble = ""
- self.postamble = ""
-
- self.suppress = suppress
-
- def begin(self, globalDir):
- if self.suppress:
- return
-
- # Create subdirectory, if needed
- if self.customAbsDir:
- absDir = self.customAbsDir
- else:
- absDir = os.path.join(globalDir, self.directory)
-
- filename = os.path.join(absDir, self.basename)
-
- self.file = open(filename + self.suffix, "w", encoding="utf-8")
- self.file.write(self.preamble)
-
- def append(self, toAppend):
- if self.suppress:
- return
-
- self.file.write(toAppend)
-
- def end(self):
- if self.suppress:
- return
-
- self.file.write(self.postamble)
- self.file.close()
-
- def getMakefileSrcEntry(self):
- return ""
-
- def getCMakeSrcEntry(self):
- return ""
-
-# Class capturing a .cpp file and a .h file (a "C++ module")
-
-
-class Module(object):
-
- def __init__(
- self, directory, basename, customAbsDir=None, suppress=False, implOnly=False,
- headerOnly=False, suppressFeatureGuards=False):
- self._headerFileModule = SingleFileModule(
- ".h", directory, basename, customAbsDir, suppress or implOnly)
- self._implFileModule = SingleFileModule(
- ".cpp", directory, basename, customAbsDir, suppress or headerOnly)
-
- self._headerOnly = headerOnly
- self._implOnly = implOnly
-
- self.directory = directory
- self.basename = basename
- self._customAbsDir = customAbsDir
-
- self.suppressFeatureGuards = suppressFeatureGuards
-
- @property
- def suppress(self):
- raise AttributeError("suppress is write only")
-
- @suppress.setter
- def suppress(self, value: bool):
- self._headerFileModule.suppress = self._implOnly or value
- self._implFileModule.suppress = self._headerOnly or value
-
- @property
- def headerPreamble(self) -> str:
- return self._headerFileModule.preamble
-
- @headerPreamble.setter
- def headerPreamble(self, value: str):
- self._headerFileModule.preamble = value
-
- @property
- def headerPostamble(self) -> str:
- return self._headerFileModule.postamble
-
- @headerPostamble.setter
- def headerPostamble(self, value: str):
- self._headerFileModule.postamble = value
-
- @property
- def implPreamble(self) -> str:
- return self._implFileModule.preamble
-
- @implPreamble.setter
- def implPreamble(self, value: str):
- self._implFileModule.preamble = value
-
- @property
- def implPostamble(self) -> str:
- return self._implFileModule.postamble
-
- @implPostamble.setter
- def implPostamble(self, value: str):
- self._implFileModule.postamble = value
-
- def getMakefileSrcEntry(self):
- if self._customAbsDir:
- return self.basename + ".cpp \\\n"
- dirName = self.directory
- baseName = self.basename
- joined = os.path.join(dirName, baseName)
- return " " + joined + ".cpp \\\n"
-
- def getCMakeSrcEntry(self):
- if self._customAbsDir:
- return "\n" + self.basename + ".cpp "
- dirName = Path(self.directory)
- baseName = Path(self.basename)
- joined = PurePosixPath(dirName / baseName)
- return "\n " + str(joined) + ".cpp "
-
- def begin(self, globalDir):
- self._headerFileModule.begin(globalDir)
- self._implFileModule.begin(globalDir)
-
- def appendHeader(self, toAppend):
- self._headerFileModule.append(toAppend)
-
- def appendImpl(self, toAppend):
- self._implFileModule.append(toAppend)
-
- def end(self):
- self._headerFileModule.end()
- self._implFileModule.end()
-
- clang_format_command = shutil.which('clang-format')
- assert (clang_format_command is not None)
-
- def formatFile(filename: Path):
- assert (subprocess.call([clang_format_command, "-i",
- "--style=file", str(filename.resolve())]) == 0)
-
- if not self._headerFileModule.suppress:
- formatFile(Path(self._headerFileModule.file.name))
-
- if not self._implFileModule.suppress:
- formatFile(Path(self._implFileModule.file.name))
-
-
-class PyScript(SingleFileModule):
- def __init__(self, directory, basename, customAbsDir=None, suppress=False):
- super().__init__(".py", directory, basename, customAbsDir, suppress)
-
-
-# Class capturing a .proto protobuf definition file
-class Proto(SingleFileModule):
-
- def __init__(self, directory, basename, customAbsDir=None, suppress=False):
- super().__init__(".proto", directory, basename, customAbsDir, suppress)
-
- def getMakefileSrcEntry(self):
- super().getMakefileSrcEntry()
- if self.customAbsDir:
- return self.basename + ".proto \\\n"
- dirName = self.directory
- baseName = self.basename
- joined = os.path.join(dirName, baseName)
- return " " + joined + ".proto \\\n"
-
- def getCMakeSrcEntry(self):
- super().getCMakeSrcEntry()
- if self.customAbsDir:
- return "\n" + self.basename + ".proto "
-
- dirName = self.directory
- baseName = self.basename
- joined = os.path.join(dirName, baseName)
- return "\n " + joined + ".proto "
-
-class CodeGen(object):
-
- def __init__(self,):
- self.code = ""
- self.indentLevel = 0
- self.gensymCounter = [-1]
-
- def var(self, prefix="cgen_var"):
- self.gensymCounter[-1] += 1
- res = "%s_%s" % (prefix, '_'.join(str(i) for i in self.gensymCounter if i >= 0))
- return res
-
- def swapCode(self,):
- res = "%s" % self.code
- self.code = ""
- return res
-
- def indent(self,extra=0):
- return "".join(" " * (self.indentLevel + extra))
-
- def incrIndent(self,):
- self.indentLevel += 1
-
- def decrIndent(self,):
- if self.indentLevel > 0:
- self.indentLevel -= 1
-
- def beginBlock(self, bracketPrint=True):
- if bracketPrint:
- self.code += self.indent() + "{\n"
- self.indentLevel += 1
- self.gensymCounter.append(-1)
-
- def endBlock(self,bracketPrint=True):
- self.indentLevel -= 1
- if bracketPrint:
- self.code += self.indent() + "}\n"
- del self.gensymCounter[-1]
-
- def beginIf(self, cond):
- self.code += self.indent() + "if (" + cond + ")\n"
- self.beginBlock()
-
- def beginElse(self, cond = None):
- if cond is not None:
- self.code += \
- self.indent() + \
- "else if (" + cond + ")\n"
- else:
- self.code += self.indent() + "else\n"
- self.beginBlock()
-
- def endElse(self):
- self.endBlock()
-
- def endIf(self):
- self.endBlock()
-
- def beginSwitch(self, switchvar):
- self.code += self.indent() + "switch (" + switchvar + ")\n"
- self.beginBlock()
-
- def switchCase(self, switchval, blocked = False):
- self.code += self.indent() + "case %s:" % switchval
- self.beginBlock(bracketPrint = blocked)
-
- def switchCaseBreak(self, switchval, blocked = False):
- self.code += self.indent() + "case %s:" % switchval
- self.endBlock(bracketPrint = blocked)
-
- def switchCaseDefault(self, blocked = False):
- self.code += self.indent() + "default:" % switchval
- self.beginBlock(bracketPrint = blocked)
-
- def endSwitch(self):
- self.endBlock()
-
- def beginWhile(self, cond):
- self.code += self.indent() + "while (" + cond + ")\n"
- self.beginBlock()
-
- def endWhile(self):
- self.endBlock()
-
- def beginFor(self, initial, condition, increment):
- self.code += \
- self.indent() + "for (" + \
- "; ".join([initial, condition, increment]) + \
- ")\n"
- self.beginBlock()
-
- def endFor(self):
- self.endBlock()
-
- def beginLoop(self, loopVarType, loopVar, loopInit, loopBound):
- self.beginFor(
- "%s %s = %s" % (loopVarType, loopVar, loopInit),
- "%s < %s" % (loopVar, loopBound),
- "++%s" % (loopVar))
-
- def endLoop(self):
- self.endBlock()
-
- def stmt(self, code):
- self.code += self.indent() + code + ";\n"
-
- def line(self, code):
- self.code += self.indent() + code + "\n"
-
- def leftline(self, code):
- self.code += code + "\n"
-
- def makeCallExpr(self, funcName, parameters):
- return funcName + "(%s)" % (", ".join(parameters))
-
- def funcCall(self, lhs, funcName, parameters):
- res = self.indent()
-
- if lhs is not None:
- res += lhs + " = "
-
- res += self.makeCallExpr(funcName, parameters) + ";\n"
- self.code += res
-
- def funcCallRet(self, _lhs, funcName, parameters):
- res = self.indent()
- res += "return " + self.makeCallExpr(funcName, parameters) + ";\n"
- self.code += res
-
- # Given a VulkanType object, generate a C type declaration
- # with optional parameter name:
- # [const] [typename][*][const*] [paramName]
- def makeCTypeDecl(self, vulkanType, useParamName=True):
- constness = "const " if vulkanType.isConst else ""
- typeName = vulkanType.typeName
-
- if vulkanType.pointerIndirectionLevels == 0:
- ptrSpec = ""
- elif vulkanType.isPointerToConstPointer:
- ptrSpec = "* const*" if vulkanType.isConst else "**"
- if vulkanType.pointerIndirectionLevels > 2:
- ptrSpec += "*" * (vulkanType.pointerIndirectionLevels - 2)
- else:
- ptrSpec = "*" * vulkanType.pointerIndirectionLevels
-
- if useParamName and (vulkanType.paramName is not None):
- paramStr = (" " + vulkanType.paramName)
- else:
- paramStr = ""
-
- return "%s%s%s%s" % (constness, typeName, ptrSpec, paramStr)
-
- def makeRichCTypeDecl(self, vulkanType, useParamName=True):
- constness = "const " if vulkanType.isConst else ""
- typeName = vulkanType.typeName
-
- if vulkanType.pointerIndirectionLevels == 0:
- ptrSpec = ""
- elif vulkanType.isPointerToConstPointer:
- ptrSpec = "* const*" if vulkanType.isConst else "**"
- if vulkanType.pointerIndirectionLevels > 2:
- ptrSpec += "*" * (vulkanType.pointerIndirectionLevels - 2)
- else:
- ptrSpec = "*" * vulkanType.pointerIndirectionLevels
-
- if useParamName and (vulkanType.paramName is not None):
- paramStr = (" " + vulkanType.paramName)
- else:
- paramStr = ""
-
- if vulkanType.staticArrExpr:
- staticArrInfo = "[%s]" % vulkanType.staticArrExpr
- else:
- staticArrInfo = ""
-
- return "%s%s%s%s%s" % (constness, typeName, ptrSpec, paramStr, staticArrInfo)
-
- # Given a VulkanAPI object, generate the C function protype:
- # <returntype> <funcname>(<parameters>)
- def makeFuncProto(self, vulkanApi, useParamName=True):
-
- protoBegin = "%s %s" % (self.makeCTypeDecl(
- vulkanApi.retType, useParamName=False), vulkanApi.name)
-
- def getFuncArgDecl(param):
- if param.staticArrExpr:
- return self.makeCTypeDecl(param, useParamName=useParamName) + ("[%s]" % param.staticArrExpr)
- else:
- return self.makeCTypeDecl(param, useParamName=useParamName)
-
- protoParams = "(\n %s)" % ((",\n%s" % self.indent(1)).join(
- list(map(
- getFuncArgDecl,
- vulkanApi.parameters))))
-
- return protoBegin + protoParams
-
- def makeFuncAlias(self, nameDst, nameSrc):
- return "DEFINE_ALIAS_FUNCTION({}, {})\n\n".format(nameSrc, nameDst)
-
- def makeFuncDecl(self, vulkanApi):
- return self.makeFuncProto(vulkanApi) + ";\n\n"
-
- def makeFuncImpl(self, vulkanApi, codegenFunc):
- self.swapCode()
-
- self.line(self.makeFuncProto(vulkanApi))
- self.beginBlock()
- codegenFunc(self)
- self.endBlock()
-
- return self.swapCode() + "\n"
-
- def emitFuncImpl(self, vulkanApi, codegenFunc):
- self.line(self.makeFuncProto(vulkanApi))
- self.beginBlock()
- codegenFunc(self)
- self.endBlock()
-
- def makeStructAccess(self,
- vulkanType,
- structVarName,
- asPtr=True,
- structAsPtr=True,
- accessIndex=None):
-
- deref = "->" if structAsPtr else "."
-
- indexExpr = (" + %s" % accessIndex) if accessIndex else ""
-
- addrOfExpr = "" if vulkanType.accessibleAsPointer() or (
- not asPtr) else "&"
-
- return "%s%s%s%s%s" % (addrOfExpr, structVarName, deref,
- vulkanType.paramName, indexExpr)
-
- def makeRawLengthAccess(self, vulkanType):
- lenExpr = vulkanType.getLengthExpression()
-
- if not lenExpr:
- return None, None
-
- if lenExpr == "null-terminated":
- return "strlen(%s)" % vulkanType.paramName, None
-
- return lenExpr, None
-
- def makeLengthAccessFromStruct(self,
- structInfo,
- vulkanType,
- structVarName,
- asPtr=True):
- # Handle special cases first
- # Mostly when latexmath is involved
- def handleSpecialCases(structInfo, vulkanType, structVarName, asPtr):
- cases = [
- {
- "structName": "VkShaderModuleCreateInfo",
- "field": "pCode",
- "lenExprMember": "codeSize",
- "postprocess": lambda expr: "(%s / 4)" % expr
- },
- {
- "structName": "VkPipelineMultisampleStateCreateInfo",
- "field": "pSampleMask",
- "lenExprMember": "rasterizationSamples",
- "postprocess": lambda expr: "(((%s) + 31) / 32)" % expr
- },
- {
- "structName": "VkAccelerationStructureVersionInfoKHR",
- "field": "pVersionData",
- "lenExprMember": "",
- "postprocess": lambda _: "2*VK_UUID_SIZE"
- },
- ]
-
- for c in cases:
- if (structInfo.name, vulkanType.paramName) == (c["structName"],
- c["field"]):
- deref = "->" if asPtr else "."
- expr = "%s%s%s" % (structVarName, deref,
- c["lenExprMember"])
- lenAccessGuardExpr = "%s" % structVarName
- return c["postprocess"](expr), lenAccessGuardExpr
-
- return None, None
-
- specialCaseAccess = \
- handleSpecialCases(
- structInfo, vulkanType, structVarName, asPtr)
-
- if specialCaseAccess != (None, None):
- return specialCaseAccess
-
- lenExpr = vulkanType.getLengthExpression()
-
- if not lenExpr:
- return None, None
-
- deref = "->" if asPtr else "."
- lenAccessGuardExpr = "%s" % (
-
- structVarName) if deref else None
- if lenExpr == "null-terminated":
- return "strlen(%s%s%s)" % (structVarName, deref,
- vulkanType.paramName), lenAccessGuardExpr
-
- if not structInfo.getMember(lenExpr):
- return self.makeRawLengthAccess(vulkanType)
-
- return "%s%s%s" % (structVarName, deref, lenExpr), lenAccessGuardExpr
-
- def makeLengthAccessFromApi(self, api, vulkanType):
- # Handle special cases first
- # Mostly when :: is involved
- def handleSpecialCases(vulkanType):
- lenExpr = vulkanType.getLengthExpression()
-
- if lenExpr is None:
- return None, None
-
- if "::" in lenExpr:
- structVarName, memberVarName = lenExpr.split("::")
- lenAccessGuardExpr = "%s" % (structVarName)
- return "%s->%s" % (structVarName, memberVarName), lenAccessGuardExpr
- return None, None
-
- specialCaseAccess = handleSpecialCases(vulkanType)
-
- if specialCaseAccess != (None, None):
- return specialCaseAccess
-
- lenExpr = vulkanType.getLengthExpression()
-
- if not lenExpr:
- return None, None
-
- lenExprInfo = api.getParameter(lenExpr)
-
- if not lenExprInfo:
- return self.makeRawLengthAccess(vulkanType)
-
- if lenExpr == "null-terminated":
- return "strlen(%s)" % vulkanType.paramName(), None
- else:
- deref = "*" if lenExprInfo.pointerIndirectionLevels > 0 else ""
- lenAccessGuardExpr = "%s" % lenExpr if deref else None
- return "(%s(%s))" % (deref, lenExpr), lenAccessGuardExpr
-
- def accessParameter(self, param, asPtr=True):
- if asPtr:
- if param.pointerIndirectionLevels > 0:
- return param.paramName
- else:
- return "&%s" % param.paramName
- else:
- return param.paramName
-
- def sizeofExpr(self, vulkanType):
- return "sizeof(%s)" % (
- self.makeCTypeDecl(vulkanType, useParamName=False))
-
- def generalAccess(self,
- vulkanType,
- parentVarName=None,
- asPtr=True,
- structAsPtr=True):
- if vulkanType.parent is None:
- if parentVarName is None:
- return self.accessParameter(vulkanType, asPtr=asPtr)
- else:
- return self.accessParameter(vulkanType.withModifiedName(parentVarName), asPtr=asPtr)
-
- if isinstance(vulkanType.parent, VulkanCompoundType):
- return self.makeStructAccess(
- vulkanType, parentVarName, asPtr=asPtr, structAsPtr=structAsPtr)
-
- if isinstance(vulkanType.parent, VulkanAPI):
- if parentVarName is None:
- return self.accessParameter(vulkanType, asPtr=asPtr)
- else:
- return self.accessParameter(vulkanType.withModifiedName(parentVarName), asPtr=asPtr)
-
- os.abort("Could not find a way to access Vulkan type %s" %
- vulkanType.name)
-
- def makeLengthAccess(self, vulkanType, parentVarName="parent"):
- if vulkanType.parent is None:
- return self.makeRawLengthAccess(vulkanType)
-
- if isinstance(vulkanType.parent, VulkanCompoundType):
- return self.makeLengthAccessFromStruct(
- vulkanType.parent, vulkanType, parentVarName, asPtr=True)
-
- if isinstance(vulkanType.parent, VulkanAPI):
- return self.makeLengthAccessFromApi(vulkanType.parent, vulkanType)
-
- os.abort("Could not find a way to access length of Vulkan type %s" %
- vulkanType.name)
-
- def generalLengthAccess(self, vulkanType, parentVarName="parent"):
- return self.makeLengthAccess(vulkanType, parentVarName)[0]
-
- def generalLengthAccessGuard(self, vulkanType, parentVarName="parent"):
- return self.makeLengthAccess(vulkanType, parentVarName)[1]
-
- def vkApiCall(self, api, customPrefix="", globalStatePrefix="", customParameters=None, checkForDeviceLost=False, checkForOutOfMemory=False):
- callLhs = None
-
- retTypeName = api.getRetTypeExpr()
- retVar = None
-
- if retTypeName != "void":
- retVar = api.getRetVarExpr()
- self.stmt("%s %s = (%s)0" % (retTypeName, retVar, retTypeName))
- callLhs = retVar
-
- if customParameters is None:
- self.funcCall(
- callLhs, customPrefix + api.name, [p.paramName for p in api.parameters])
- else:
- self.funcCall(
- callLhs, customPrefix + api.name, customParameters)
-
- if retTypeName == "VkResult" and checkForDeviceLost:
- self.stmt("if ((%s) == VK_ERROR_DEVICE_LOST) %sDeviceLost()" % (callLhs, globalStatePrefix))
-
- if retTypeName == "VkResult" and checkForOutOfMemory:
- if api.name == "vkAllocateMemory":
- self.stmt(
- "%sCheckOutOfMemory(%s, opcode, context, std::make_optional<uint64_t>(pAllocateInfo->allocationSize))"
- % (globalStatePrefix, callLhs))
- else:
- self.stmt(
- "%sCheckOutOfMemory(%s, opcode, context)"
- % (globalStatePrefix, callLhs))
-
- return (retTypeName, retVar)
-
- def makeCheckVkSuccess(self, expr):
- return "((%s) == VK_SUCCESS)" % expr
-
- def makeReinterpretCast(self, varName, typeName, const=True):
- return "reinterpret_cast<%s%s*>(%s)" % \
- ("const " if const else "", typeName, varName)
-
- def validPrimitive(self, typeInfo, typeName):
- size = typeInfo.getPrimitiveEncodingSize(typeName)
- return size != None
-
- def makePrimitiveStreamMethod(self, typeInfo, typeName, direction="write"):
- if not self.validPrimitive(typeInfo, typeName):
- return None
-
- size = typeInfo.getPrimitiveEncodingSize(typeName)
- prefix = "put" if direction == "write" else "get"
- suffix = None
- if size == 1:
- suffix = "Byte"
- elif size == 2:
- suffix = "Be16"
- elif size == 4:
- suffix = "Be32"
- elif size == 8:
- suffix = "Be64"
-
- if suffix:
- return prefix + suffix
-
- return None
-
- def makePrimitiveStreamMethodInPlace(self, typeInfo, typeName, direction="write"):
- if not self.validPrimitive(typeInfo, typeName):
- return None
-
- size = typeInfo.getPrimitiveEncodingSize(typeName)
- prefix = "to" if direction == "write" else "from"
- suffix = None
- if size == 1:
- suffix = "Byte"
- elif size == 2:
- suffix = "Be16"
- elif size == 4:
- suffix = "Be32"
- elif size == 8:
- suffix = "Be64"
-
- if suffix:
- return prefix + suffix
-
- return None
-
- def streamPrimitive(self, typeInfo, streamVar, accessExpr, accessType, direction="write"):
- accessTypeName = accessType.typeName
-
- if accessType.pointerIndirectionLevels == 0 and not self.validPrimitive(typeInfo, accessTypeName):
- print("Tried to stream a non-primitive type: %s" % accessTypeName)
- os.abort()
-
- needPtrCast = False
-
- if accessType.pointerIndirectionLevels > 0:
- streamSize = 8
- streamStorageVarType = "uint64_t"
- needPtrCast = True
- streamMethod = "putBe64" if direction == "write" else "getBe64"
- else:
- streamSize = typeInfo.getPrimitiveEncodingSize(accessTypeName)
- if streamSize == 1:
- streamStorageVarType = "uint8_t"
- elif streamSize == 2:
- streamStorageVarType = "uint16_t"
- elif streamSize == 4:
- streamStorageVarType = "uint32_t"
- elif streamSize == 8:
- streamStorageVarType = "uint64_t"
- streamMethod = self.makePrimitiveStreamMethod(
- typeInfo, accessTypeName, direction=direction)
-
- streamStorageVar = self.var()
-
- accessCast = self.makeRichCTypeDecl(accessType, useParamName=False)
-
- ptrCast = "(uintptr_t)" if needPtrCast else ""
-
- if direction == "read":
- self.stmt("%s = (%s)%s%s->%s()" %
- (accessExpr,
- accessCast,
- ptrCast,
- streamVar,
- streamMethod))
- else:
- self.stmt("%s %s = (%s)%s%s" %
- (streamStorageVarType, streamStorageVar,
- streamStorageVarType, ptrCast, accessExpr))
- self.stmt("%s->%s(%s)" %
- (streamVar, streamMethod, streamStorageVar))
-
- def memcpyPrimitive(self, typeInfo, streamVar, accessExpr, accessType, direction="write"):
- accessTypeName = accessType.typeName
-
- if accessType.pointerIndirectionLevels == 0 and not self.validPrimitive(typeInfo, accessTypeName):
- print("Tried to stream a non-primitive type: %s" % accessTypeName)
- os.abort()
-
- needPtrCast = False
-
- streamSize = 8
-
- if accessType.pointerIndirectionLevels > 0:
- streamSize = 8
- streamStorageVarType = "uint64_t"
- needPtrCast = True
- streamMethod = "toBe64" if direction == "write" else "fromBe64"
- else:
- streamSize = typeInfo.getPrimitiveEncodingSize(accessTypeName)
- if streamSize == 1:
- streamStorageVarType = "uint8_t"
- elif streamSize == 2:
- streamStorageVarType = "uint16_t"
- elif streamSize == 4:
- streamStorageVarType = "uint32_t"
- elif streamSize == 8:
- streamStorageVarType = "uint64_t"
- streamMethod = self.makePrimitiveStreamMethodInPlace(
- typeInfo, accessTypeName, direction=direction)
-
- streamStorageVar = self.var()
-
- accessCast = self.makeRichCTypeDecl(accessType, useParamName=False)
-
- if direction == "read":
- accessCast = self.makeRichCTypeDecl(
- accessType.getForNonConstAccess(), useParamName=False)
-
- ptrCast = "(uintptr_t)" if needPtrCast else ""
-
- if direction == "read":
- self.stmt("memcpy((%s*)&%s, %s, %s)" %
- (accessCast,
- accessExpr,
- streamVar,
- str(streamSize)))
- self.stmt("android::base::Stream::%s((uint8_t*)&%s)" % (
- streamMethod,
- accessExpr))
- else:
- self.stmt("%s %s = (%s)%s%s" %
- (streamStorageVarType, streamStorageVar,
- streamStorageVarType, ptrCast, accessExpr))
- self.stmt("memcpy(%s, &%s, %s)" %
- (streamVar, streamStorageVar, str(streamSize)))
- self.stmt("android::base::Stream::%s((uint8_t*)%s)" % (
- streamMethod,
- streamVar))
-
- def countPrimitive(self, typeInfo, accessType):
- accessTypeName = accessType.typeName
-
- if accessType.pointerIndirectionLevels == 0 and not self.validPrimitive(typeInfo, accessTypeName):
- print("Tried to count a non-primitive type: %s" % accessTypeName)
- os.abort()
-
- needPtrCast = False
-
- if accessType.pointerIndirectionLevels > 0:
- streamSize = 8
- else:
- streamSize = typeInfo.getPrimitiveEncodingSize(accessTypeName)
-
- return streamSize
-
-# Class to wrap a Vulkan API call.
-#
-# The user gives a generic callback, |codegenDef|,
-# that takes a CodeGen object and a VulkanAPI object as arguments.
-# codegenDef uses CodeGen along with the VulkanAPI object
-# to generate the function body.
-class VulkanAPIWrapper(object):
-
- def __init__(self,
- customApiPrefix,
- extraParameters=None,
- returnTypeOverride=None,
- codegenDef=None):
- self.customApiPrefix = customApiPrefix
- self.extraParameters = extraParameters
- self.returnTypeOverride = returnTypeOverride
-
- self.codegen = CodeGen()
-
- self.definitionFunc = codegenDef
-
- # Private function
-
- def makeApiFunc(self, typeInfo, apiName):
- customApi = copy(typeInfo.apis[apiName])
- customApi.name = self.customApiPrefix + customApi.name
- if self.extraParameters is not None:
- if isinstance(self.extraParameters, list):
- customApi.parameters = \
- self.extraParameters + customApi.parameters
- else:
- os.abort(
- "Type of extra parameters to custom API not valid. Expected list, got %s" % type(
- self.extraParameters))
-
- if self.returnTypeOverride is not None:
- customApi.retType = self.returnTypeOverride
- return customApi
-
- self.makeApi = makeApiFunc
-
- def setCodegenDef(self, codegenDefFunc):
- self.definitionFunc = codegenDefFunc
-
- def makeDecl(self, typeInfo, apiName):
- return self.codegen.makeFuncProto(
- self.makeApi(self, typeInfo, apiName)) + ";\n\n"
-
- def makeDefinition(self, typeInfo, apiName, isStatic=False):
- vulkanApi = self.makeApi(self, typeInfo, apiName)
-
- self.codegen.swapCode()
- self.codegen.beginBlock()
-
- if self.definitionFunc is None:
- print("ERROR: No definition found for (%s, %s)" %
- (vulkanApi.name, self.customApiPrefix))
- sys.exit(1)
-
- self.definitionFunc(self.codegen, vulkanApi)
-
- self.codegen.endBlock()
-
- return ("static " if isStatic else "") + self.codegen.makeFuncProto(
- vulkanApi) + "\n" + self.codegen.swapCode() + "\n"
-
-# Base class for wrapping all Vulkan API objects. These work with Vulkan
-# Registry generators and have gen* triggers. They tend to contain
-# VulkanAPIWrapper objects to make it easier to generate the code.
-class VulkanWrapperGenerator(object):
-
- def __init__(self, module: Module, typeInfo: VulkanTypeInfo):
- self.module: Module = module
- self.typeInfo: VulkanTypeInfo = typeInfo
- self.extensionStructTypes = OrderedDict()
-
- def onBegin(self):
- pass
-
- def onEnd(self):
- pass
-
- def onBeginFeature(self, featureName, featureType):
- pass
-
- def onFeatureNewCmd(self, cmdName):
- pass
-
- def onEndFeature(self):
- pass
-
- def onGenType(self, typeInfo, name, alias):
- category = self.typeInfo.categoryOf(name)
- if category in ["struct", "union"] and not alias:
- structInfo = self.typeInfo.structs[name]
- if structInfo.structExtendsExpr:
- self.extensionStructTypes[name] = structInfo
- pass
-
- def onGenStruct(self, typeInfo, name, alias):
- pass
-
- def onGenGroup(self, groupinfo, groupName, alias=None):
- pass
-
- def onGenEnum(self, enuminfo, name, alias):
- pass
-
- def onGenCmd(self, cmdinfo, name, alias):
- pass
-
- # Below Vulkan structure types may correspond to multiple Vulkan structs
- # due to a conflict between different Vulkan registries. In order to get
- # the correct Vulkan struct type, we need to check the type of its "root"
- # struct as well.
- ROOT_TYPE_MAPPING = {
- "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT": {
- "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2": "VkPhysicalDeviceFragmentDensityMapFeaturesEXT",
- "VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO": "VkPhysicalDeviceFragmentDensityMapFeaturesEXT",
- "VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO": "VkImportColorBufferGOOGLE",
- "default": "VkPhysicalDeviceFragmentDensityMapFeaturesEXT",
- },
- "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT": {
- "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2": "VkPhysicalDeviceFragmentDensityMapPropertiesEXT",
- "VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO": "VkCreateBlobGOOGLE",
- "default": "VkPhysicalDeviceFragmentDensityMapPropertiesEXT",
- },
- "VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT": {
- "VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO": "VkRenderPassFragmentDensityMapCreateInfoEXT",
- "VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2": "VkRenderPassFragmentDensityMapCreateInfoEXT",
- "VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO": "VkImportBufferGOOGLE",
- "default": "VkRenderPassFragmentDensityMapCreateInfoEXT",
- },
- }
-
- def emitForEachStructExtension(self, cgen, retType, triggerVar, forEachFunc, autoBreak=True, defaultEmit=None, nullEmit=None, rootTypeVar=None):
- def readStructType(structTypeName, structVarName, cgen):
- cgen.stmt("uint32_t %s = (uint32_t)%s(%s)" % \
- (structTypeName, "goldfish_vk_struct_type", structVarName))
-
- def castAsStruct(varName, typeName, const=True):
- return "reinterpret_cast<%s%s*>(%s)" % \
- ("const " if const else "", typeName, varName)
-
- def doDefaultReturn(cgen):
- if retType.typeName == "void":
- cgen.stmt("return")
- else:
- cgen.stmt("return (%s)0" % retType.typeName)
-
- cgen.beginIf("!%s" % triggerVar.paramName)
- if nullEmit is None:
- doDefaultReturn(cgen)
- else:
- nullEmit(cgen)
- cgen.endIf()
-
- readStructType("structType", triggerVar.paramName, cgen)
-
- cgen.line("switch(structType)")
- cgen.beginBlock()
-
- currFeature = None
-
- for ext in self.extensionStructTypes.values():
- if not currFeature:
- cgen.leftline("#ifdef %s" % ext.feature)
- currFeature = ext.feature
-
- if currFeature and ext.feature != currFeature:
- cgen.leftline("#endif")
- cgen.leftline("#ifdef %s" % ext.feature)
- currFeature = ext.feature
-
- enum = ext.structEnumExpr
- cgen.line("case %s:" % enum)
- cgen.beginBlock()
-
- if rootTypeVar is not None and enum in VulkanWrapperGenerator.ROOT_TYPE_MAPPING:
- cgen.line("switch(%s)" % rootTypeVar.paramName)
- cgen.beginBlock()
- kv = VulkanWrapperGenerator.ROOT_TYPE_MAPPING[enum]
- for k in kv:
- v = self.extensionStructTypes[kv[k]]
- if k == "default":
- cgen.line("%s:" % k)
- else:
- cgen.line("case %s:" % k)
- cgen.beginBlock()
- castedAccess = castAsStruct(
- triggerVar.paramName, v.name, const=triggerVar.isConst)
- forEachFunc(v, castedAccess, cgen)
- cgen.line("break;")
- cgen.endBlock()
- cgen.endBlock()
- else:
- castedAccess = castAsStruct(
- triggerVar.paramName, ext.name, const=triggerVar.isConst)
- forEachFunc(ext, castedAccess, cgen)
-
- if autoBreak:
- cgen.stmt("break")
- cgen.endBlock()
-
- if currFeature:
- cgen.leftline("#endif")
-
- cgen.line("default:")
- cgen.beginBlock()
- if defaultEmit is None:
- doDefaultReturn(cgen)
- else:
- defaultEmit(cgen)
- cgen.endBlock()
-
- cgen.endBlock()
-
- def emitForEachStructExtensionGeneral(self, cgen, forEachFunc, doFeatureIfdefs=False):
- currFeature = None
-
- for (i, ext) in enumerate(self.extensionStructTypes.values()):
- if doFeatureIfdefs:
- if not currFeature:
- cgen.leftline("#ifdef %s" % ext.feature)
- currFeature = ext.feature
-
- if currFeature and ext.feature != currFeature:
- cgen.leftline("#endif")
- cgen.leftline("#ifdef %s" % ext.feature)
- currFeature = ext.feature
-
- forEachFunc(i, ext, cgen)
-
- if doFeatureIfdefs:
- if currFeature:
- cgen.leftline("#endif")
diff --git a/codegen/vulkan/scripts/cereal/common/vulkantypes.py b/codegen/vulkan/scripts/cereal/common/vulkantypes.py
deleted file mode 100644
index dc3a9072..00000000
--- a/codegen/vulkan/scripts/cereal/common/vulkantypes.py
+++ /dev/null
@@ -1,1216 +0,0 @@
-# Copyright (c) 2018 The Android Open Source Project
-# Copyright (c) 2018 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-from typing import Dict, Optional, List, Set, Union
-from xml.etree.ElementTree import Element
-
-from generator import noneStr
-
-from copy import copy
-from string import whitespace
-
-# Holds information about core Vulkan objects
-# and the API calls that are used to create/destroy each one.
-class HandleInfo(object):
- def __init__(self, name, createApis, destroyApis):
- self.name = name
- self.createApis = createApis
- self.destroyApis = destroyApis
-
- def isCreateApi(self, apiName):
- return apiName == self.createApis or (apiName in self.createApis)
-
- def isDestroyApi(self, apiName):
- if self.destroyApis is None:
- return False
- return apiName == self.destroyApis or (apiName in self.destroyApis)
-
-DISPATCHABLE_HANDLE_TYPES = [
- "VkInstance",
- "VkPhysicalDevice",
- "VkDevice",
- "VkQueue",
- "VkCommandBuffer",
-]
-
-NON_DISPATCHABLE_HANDLE_TYPES = [
- "VkDeviceMemory",
- "VkBuffer",
- "VkBufferView",
- "VkImage",
- "VkImageView",
- "VkShaderModule",
- "VkDescriptorPool",
- "VkDescriptorSetLayout",
- "VkDescriptorSet",
- "VkSampler",
- "VkPipeline",
- "VkPipelineLayout",
- "VkRenderPass",
- "VkFramebuffer",
- "VkPipelineCache",
- "VkCommandPool",
- "VkFence",
- "VkSemaphore",
- "VkEvent",
- "VkQueryPool",
- "VkSamplerYcbcrConversion",
- "VkSamplerYcbcrConversionKHR",
- "VkDescriptorUpdateTemplate",
- "VkSurfaceKHR",
- "VkSwapchainKHR",
- "VkDisplayKHR",
- "VkDisplayModeKHR",
- "VkObjectTableNVX",
- "VkIndirectCommandsLayoutNVX",
- "VkValidationCacheEXT",
- "VkDebugReportCallbackEXT",
- "VkDebugUtilsMessengerEXT",
- "VkAccelerationStructureNV",
- "VkIndirectCommandsLayoutNV",
- "VkAccelerationStructureKHR",
-]
-
-CUSTOM_HANDLE_CREATE_TYPES = [
- "VkPhysicalDevice",
- "VkQueue",
- "VkPipeline",
- "VkDeviceMemory",
- "VkDescriptorSet",
- "VkCommandBuffer",
- "VkRenderPass",
-]
-
-HANDLE_TYPES = list(sorted(list(set(DISPATCHABLE_HANDLE_TYPES +
- NON_DISPATCHABLE_HANDLE_TYPES + CUSTOM_HANDLE_CREATE_TYPES))))
-
-HANDLE_INFO = {}
-
-for h in HANDLE_TYPES:
- if h in CUSTOM_HANDLE_CREATE_TYPES:
- if h == "VkPhysicalDevice":
- HANDLE_INFO[h] = \
- HandleInfo(
- "VkPhysicalDevice",
- "vkEnumeratePhysicalDevices", None)
- if h == "VkQueue":
- HANDLE_INFO[h] = \
- HandleInfo(
- "VkQueue",
- ["vkGetDeviceQueue", "vkGetDeviceQueue2"],
- None)
- if h == "VkPipeline":
- HANDLE_INFO[h] = \
- HandleInfo(
- "VkPipeline",
- ["vkCreateGraphicsPipelines", "vkCreateComputePipelines"],
- "vkDestroyPipeline")
- if h == "VkDeviceMemory":
- HANDLE_INFO[h] = \
- HandleInfo("VkDeviceMemory",
- "vkAllocateMemory", ["vkFreeMemory", "vkFreeMemorySyncGOOGLE"])
- if h == "VkDescriptorSet":
- HANDLE_INFO[h] = \
- HandleInfo("VkDescriptorSet", "vkAllocateDescriptorSets",
- "vkFreeDescriptorSets")
- if h == "VkCommandBuffer":
- HANDLE_INFO[h] = \
- HandleInfo("VkCommandBuffer", "vkAllocateCommandBuffers",
- "vkFreeCommandBuffers")
- if h == "VkRenderPass":
- HANDLE_INFO[h] = \
- HandleInfo(
- "VkRenderPass",
- ["vkCreateRenderPass", "vkCreateRenderPass2", "vkCreateRenderPass2KHR"],
- "vkDestroyRenderPass")
- else:
- HANDLE_INFO[h] = \
- HandleInfo(h, "vkCreate" + h[2:], "vkDestroy" + h[2:])
-
-EXCLUDED_APIS = [
- "vkEnumeratePhysicalDeviceGroups",
-]
-
-EXPLICITLY_ABI_PORTABLE_TYPES = [
- "VkResult",
- "VkBool32",
- "VkSampleMask",
- "VkFlags",
- "VkDeviceSize",
-]
-
-EXPLICITLY_ABI_NON_PORTABLE_TYPES = [
- "size_t"
-]
-
-NON_ABI_PORTABLE_TYPE_CATEGORIES = [
- "handle",
- "funcpointer",
-]
-
-DEVICE_MEMORY_INFO_KEYS = [
- "devicememoryhandle",
- "devicememoryoffset",
- "devicememorysize",
- "devicememorytypeindex",
- "devicememorytypebits",
-]
-
-TRIVIAL_TRANSFORMED_TYPES = [
- "VkPhysicalDeviceExternalImageFormatInfo",
- "VkPhysicalDeviceExternalBufferInfo",
- "VkExternalMemoryImageCreateInfo",
- "VkExternalMemoryBufferCreateInfo",
- "VkExportMemoryAllocateInfo",
- "VkExternalImageFormatProperties",
- "VkExternalBufferProperties",
-]
-
-NON_TRIVIAL_TRANSFORMED_TYPES = [
- "VkExternalMemoryProperties",
- "VkImageCreateInfo",
-]
-
-TRANSFORMED_TYPES = TRIVIAL_TRANSFORMED_TYPES + NON_TRIVIAL_TRANSFORMED_TYPES
-
-# Holds information about a Vulkan type instance (i.e., not a type definition).
-# Type instances are used as struct field definitions or function parameters,
-# to be later fed to code generation.
-# VulkanType instances can be constructed in two ways:
-# 1. From an XML tag with <type> / <param> tags in vk.xml,
-# using makeVulkanTypeFromXMLTag
-# 2. User-defined instances with makeVulkanTypeSimple.
-class VulkanType(object):
-
- def __init__(self):
- self.parent: Optional[VulkanType] = None
- self.typeName: str = ""
-
- self.isTransformed = False
-
- self.paramName: Optional[str] = None
-
- self.lenExpr: Optional[str] = None # Value of the `len` attribute in the spec
- self.isOptional: bool = False
- self.optionalStr: Optional[str] = None # Value of the `optional` attribute in the spec
-
- self.isConst = False
-
- # "" means it's not a static array, otherwise this is the total size of
- # all elements. e.g. staticArrExpr of "x[3][2][8]" will be "((3)*(2)*(8))".
- self.staticArrExpr = ""
- # "" means it's not a static array, otherwise it's the raw expression
- # of static array size, which can be one-dimensional or multi-dimensional.
- self.rawStaticArrExpr = ""
-
- self.pointerIndirectionLevels = 0 # 0 means not pointer
- self.isPointerToConstPointer = False
-
- self.primitiveEncodingSize = None
-
- self.deviceMemoryInfoParameterIndices = None
-
- # Annotations
- # Environment annotation for binding current
- # variables to sub-structures
- self.binds = {}
-
- # Device memory annotations
-
- # self.deviceMemoryAttrib/Val stores
- # device memory info attributes from the XML.
- # devicememoryhandle
- # devicememoryoffset
- # devicememorysize
- # devicememorytypeindex
- # devicememorytypebits
- self.deviceMemoryAttrib = None
- self.deviceMemoryVal = None
-
- # Filter annotations
- self.filterVar = None
- self.filterVals = None
- self.filterFunc = None
- self.filterOtherwise = None
-
- # Stream feature
- self.streamFeature = None
-
- # All other annotations
- self.attribs = {}
-
- self.nonDispatchableHandleCreate = False
- self.nonDispatchableHandleDestroy = False
- self.dispatchHandle = False
- self.dispatchableHandleCreate = False
- self.dispatchableHandleDestroy = False
-
-
- def __str__(self,):
- return ("(vulkantype %s %s paramName %s len %s optional? %s "
- "staticArrExpr %s)") % (
- self.typeName + ("*" * self.pointerIndirectionLevels) +
- ("ptr2constptr" if self.isPointerToConstPointer else ""), "const"
- if self.isConst else "nonconst", self.paramName, self.lenExpr,
- self.isOptional, self.staticArrExpr)
-
- def isString(self):
- return self.pointerIndirectionLevels == 1 and (self.typeName == "char")
-
- def isArrayOfStrings(self):
- return self.isPointerToConstPointer and (self.typeName == "char")
-
- def primEncodingSize(self):
- return self.primitiveEncodingSize
-
- # Utility functions to make codegen life easier.
- # This method derives the correct "count" expression if possible.
- # Otherwise, returns None or "null-terminated" if a string.
- def getLengthExpression(self):
- if self.staticArrExpr != "":
- return self.staticArrExpr
- if self.lenExpr:
- return self.lenExpr
- return None
-
- # Can we just pass this to functions expecting T*
- def accessibleAsPointer(self):
- if self.staticArrExpr != "":
- return True
- if self.pointerIndirectionLevels > 0:
- return True
- return False
-
- # Rough attempt to infer where a type could be an output.
- # Good for inferring which things need to be marshaled in
- # versus marshaled out for Vulkan API calls
- def possiblyOutput(self,):
- return self.pointerIndirectionLevels > 0 and (not self.isConst)
-
- def isVoidWithNoSize(self,):
- return self.typeName == "void" and self.pointerIndirectionLevels == 0
-
- def getCopy(self,):
- return copy(self)
-
- def getTransformed(self, isConstChoice=None, ptrIndirectionChoice=None):
- res = self.getCopy()
-
- if isConstChoice is not None:
- res.isConst = isConstChoice
- if ptrIndirectionChoice is not None:
- res.pointerIndirectionLevels = ptrIndirectionChoice
-
- return res
-
- def getWithCustomName(self):
- return self.getTransformed(
- ptrIndirectionChoice=self.pointerIndirectionLevels + 1)
-
- def getForAddressAccess(self):
- return self.getTransformed(
- ptrIndirectionChoice=self.pointerIndirectionLevels + 1)
-
- def getForValueAccess(self):
- if self.typeName == "void" and self.pointerIndirectionLevels == 1:
- asUint8Type = self.getCopy()
- asUint8Type.typeName = "uint8_t"
- return asUint8Type.getForValueAccess()
- return self.getTransformed(
- ptrIndirectionChoice=self.pointerIndirectionLevels - 1)
-
- def getForNonConstAccess(self):
- return self.getTransformed(isConstChoice=False)
-
- def withModifiedName(self, newName):
- res = self.getCopy()
- res.paramName = newName
- return res
-
- def isNextPointer(self):
- return self.paramName == "pNext"
-
- def isSigned(self):
- return self.typeName in ["int", "int8_t", "int16_t", "int32_t", "int64_t"]
-
- def isEnum(self, typeInfo):
- return typeInfo.categoryOf(self.typeName) == "enum"
-
- def isBitmask(self, typeInfo):
- return typeInfo.categoryOf(self.typeName) == "enum"
-
- # Only deals with 'core' handle types here.
- def isDispatchableHandleType(self):
- return self.typeName in DISPATCHABLE_HANDLE_TYPES
-
- def isNonDispatchableHandleType(self):
- return self.typeName in NON_DISPATCHABLE_HANDLE_TYPES
-
- def isHandleType(self):
- return self.isDispatchableHandleType() or \
- self.isNonDispatchableHandleType()
-
- def isCreatedBy(self, api):
- if self.typeName in HANDLE_INFO.keys():
- nonKhrRes = HANDLE_INFO[self.typeName].isCreateApi(api.name)
- if nonKhrRes:
- return True
- if len(api.name) > 3 and "KHR" == api.name[-3:]:
- return HANDLE_INFO[self.typeName].isCreateApi(api.name[:-3])
-
- if self.typeName == "VkImage" and api.name == "vkCreateImageWithRequirementsGOOGLE":
- return True
-
- if self.typeName == "VkBuffer" and api.name == "vkCreateBufferWithRequirementsGOOGLE":
- return True
-
- return False
-
- def isDestroyedBy(self, api):
- if self.typeName in HANDLE_INFO.keys():
- nonKhrRes = HANDLE_INFO[self.typeName].isDestroyApi(api.name)
- if nonKhrRes:
- return True
- if len(api.name) > 3 and "KHR" == api.name[-3:]:
- return HANDLE_INFO[self.typeName].isDestroyApi(api.name[:-3])
-
- return False
-
- def isSimpleValueType(self, typeInfo):
- if typeInfo.isCompoundType(self.typeName):
- return False
- if self.isString() or self.isArrayOfStrings():
- return False
- if self.staticArrExpr or self.pointerIndirectionLevels > 0:
- return False
- return True
-
- def getStructEnumExpr(self,):
- return None
-
- def getPrintFormatSpecifier(self):
- kKnownTypePrintFormatSpecifiers = {
- 'float': '%f',
- 'int': '%d',
- 'int32_t': '%d',
- 'size_t': '%ld',
- 'uint16_t': '%d',
- 'uint32_t': '%d',
- 'uint64_t': '%ld',
- 'VkBool32': '%d',
- 'VkDeviceSize': '%ld',
- 'VkFormat': '%d',
- 'VkImageLayout': '%d',
- }
-
- if self.pointerIndirectionLevels > 0 or self.isHandleType():
- return '%p'
-
- if self.typeName in kKnownTypePrintFormatSpecifiers:
- return kKnownTypePrintFormatSpecifiers[self.typeName]
-
- if self.typeName.endswith('Flags'):
- # Based on `typedef uint32_t VkFlags;`
- return '%d'
-
- return None
- def isOptionalPointer(self) -> bool:
- return self.isOptional and \
- self.pointerIndirectionLevels > 0 and \
- (not self.isNextPointer())
-
-
-# Is an S-expression w/ the following spec:
-# From https://gist.github.com/pib/240957
-class Atom(object):
- def __init__(self, name):
- self.name = name
- def __repr__(self,):
- return self.name
-
-def parse_sexp(sexp):
- atom_end = set('()"\'') | set(whitespace)
- stack, i, length = [[]], 0, len(sexp)
- while i < length:
- c = sexp[i]
-
- reading = type(stack[-1])
- if reading == list:
- if c == '(': stack.append([])
- elif c == ')':
- stack[-2].append(stack.pop())
- if stack[-1][0] == ('quote',): stack[-2].append(stack.pop())
- elif c == '"': stack.append('')
- elif c == "'": stack.append([('quote',)])
- elif c in whitespace: pass
- else: stack.append(Atom(c))
- elif reading == str:
- if c == '"':
- stack[-2].append(stack.pop())
- if stack[-1][0] == ('quote',): stack[-2].append(stack.pop())
- elif c == '\\':
- i += 1
- stack[-1] += sexp[i]
- else: stack[-1] += c
- elif reading == Atom:
- if c in atom_end:
- atom = stack.pop()
- if atom.name[0].isdigit(): stack[-1].append(eval(atom.name))
- else: stack[-1].append(atom)
- if stack[-1][0] == ('quote',): stack[-2].append(stack.pop())
- continue
- else: stack[-1] = Atom(stack[-1].name + c)
- i += 1
-
- return stack.pop()
-
-class FuncExprVal(object):
- def __init__(self, val):
- self.val = val
- def __repr__(self,):
- return self.val.__repr__()
-
-class FuncExpr(object):
- def __init__(self, name, args):
- self.name = name
- self.args = args
- def __repr__(self,):
- if len(self.args) == 0:
- return "(%s)" % (self.name.__repr__())
- else:
- return "(%s %s)" % (self.name.__repr__(), " ".join(map(lambda x: x.__repr__(), self.args)))
-
-class FuncLambda(object):
- def __init__(self, vs, body):
- self.vs = vs
- self.body = body
- def __repr__(self,):
- return "(L (%s) %s)" % (" ".join(map(lambda x: x.__repr__(), self.vs)), self.body.__repr__())
-
-class FuncLambdaParam(object):
- def __init__(self, name, typ):
- self.name = name
- self.typ = typ
- def __repr__(self,):
- return "%s : %s" % (self.name, self.typ)
-
-def parse_func_expr(parsed_sexp):
- if len(parsed_sexp) != 1:
- print("Error: parsed # expressions != 1: %d" % (len(parsed_sexp)))
- raise
-
- e = parsed_sexp[0]
-
- def parse_lambda_param(e):
- return FuncLambdaParam(e[0].name, e[1].name)
-
- def parse_one(exp):
- if list == type(exp):
- if "lambda" == exp[0].__repr__():
- return FuncLambda(list(map(parse_lambda_param, exp[1])), parse_one(exp[2]))
- else:
- return FuncExpr(exp[0], list(map(parse_one, exp[1:])))
- else:
- return FuncExprVal(exp)
-
- return parse_one(e)
-
-def parseFilterFuncExpr(expr):
- res = parse_func_expr(parse_sexp(expr))
- print("parseFilterFuncExpr: parsed %s" % res)
- return res
-
-def parseLetBodyExpr(expr):
- res = parse_func_expr(parse_sexp(expr))
- print("parseLetBodyExpr: parsed %s" % res)
- return res
-
-
-def makeVulkanTypeFromXMLTag(typeInfo, tag: Element) -> VulkanType:
- res = VulkanType()
-
- # Process the length expression
-
- if tag.attrib.get("len") is not None:
- lengths = tag.attrib.get("len").split(",")
- res.lenExpr = lengths[0]
-
- # Calculate static array expression
-
- nametag = tag.find("name")
- enumtag = tag.find("enum")
-
- if enumtag is not None:
- res.staticArrExpr = enumtag.text
- elif nametag is not None:
- res.rawStaticArrExpr = noneStr(nametag.tail)
-
- dimensions = res.rawStaticArrExpr.count('[')
- if dimensions == 1:
- res.staticArrExpr = res.rawStaticArrExpr[1:-1]
- elif dimensions > 1:
- arraySizes = res.rawStaticArrExpr[1:-1].split('][')
- res.staticArrExpr = '(' + \
- '*'.join(f'({size})' for size in arraySizes) + ')'
-
- # Determine const
-
- beforeTypePart = noneStr(tag.text)
-
- if "const" in beforeTypePart:
- res.isConst = True
-
- # Calculate type and pointer info
- for elem in tag:
- if elem.tag == "name":
- res.paramName = elem.text
- if elem.tag == "type":
- duringTypePart = noneStr(elem.text)
- afterTypePart = noneStr(elem.tail)
- # Now we know enough to fill some stuff in
- res.typeName = duringTypePart
-
- if res.typeName in TRANSFORMED_TYPES:
- res.isTransformed = True
-
- # This only handles pointerIndirectionLevels == 2
- # along with optional constant pointer for the inner part.
- for c in afterTypePart:
- if c == "*":
- res.pointerIndirectionLevels += 1
- if "const" in afterTypePart and res.pointerIndirectionLevels == 2:
- res.isPointerToConstPointer = True
-
- # If void*, treat like it's not a pointer
- # if duringTypePart == "void":
- # res.pointerIndirectionLevels -= 1
-
- # Calculate optionality (based on validitygenerator.py)
- if tag.attrib.get("optional") is not None:
- res.isOptional = True
- res.optionalStr = tag.attrib.get("optional")
-
- # If no validity is being generated, it usually means that
- # validity is complex and not absolute, so let's say yes.
- if tag.attrib.get("noautovalidity") is not None:
- res.isOptional = True
-
- # If this is a structure extension, it is optional.
- if tag.attrib.get("structextends") is not None:
- res.isOptional = True
-
- # If this is a pNext pointer, it is optional.
- if res.paramName == "pNext":
- res.isOptional = True
-
- res.primitiveEncodingSize = typeInfo.getPrimitiveEncodingSize(res.typeName)
-
- # Annotations: Environment binds
- if tag.attrib.get("binds") is not None:
- bindPairs = map(lambda x: x.strip(), tag.attrib.get("binds").split(","))
- bindPairsSplit = map(lambda p: p.split(":"), bindPairs)
- res.binds = dict(map(lambda sp: (sp[0].strip(), sp[1].strip()), bindPairsSplit))
-
- # Annotations: Device memory
- for k in DEVICE_MEMORY_INFO_KEYS:
- if tag.attrib.get(k) is not None:
- res.deviceMemoryAttrib = k
- res.deviceMemoryVal = tag.attrib.get(k)
- break
-
- # Annotations: Filters
- if tag.attrib.get("filterVar") is not None:
- res.filterVar = tag.attrib.get("filterVar").strip()
-
- if tag.attrib.get("filterVals") is not None:
- res.filterVals = \
- list(map(lambda v: v.strip(),
- tag.attrib.get("filterVals").strip().split(",")))
- print("Filtervals: %s" % res.filterVals)
-
- if tag.attrib.get("filterFunc") is not None:
- res.filterFunc = parseFilterFuncExpr(tag.attrib.get("filterFunc"))
-
- if tag.attrib.get("filterOtherwise") is not None:
- res.Otherwise = tag.attrib.get("filterOtherwise")
-
- # store all other attribs here
- res.attribs = dict(tag.attrib)
-
- return res
-
-
-def makeVulkanTypeSimple(isConst,
- typeName,
- ptrIndirectionLevels,
- paramName=None):
- res = VulkanType()
-
- res.typeName = typeName
- res.isConst = isConst
- res.pointerIndirectionLevels = ptrIndirectionLevels
- res.isPointerToConstPointer = False
- res.paramName = paramName
- res.primitiveEncodingSize = None
-
- return res
-
-# A class for holding the parameter indices corresponding to various
-# attributes about a VkDeviceMemory, such as the handle, size, offset, etc.
-class DeviceMemoryInfoParameterIndices(object):
- def __init__(self, handle, offset, size, typeIndex, typeBits):
- self.handle = handle
- self.offset = offset
- self.size = size
- self.typeIndex = typeIndex
- self.typeBits = typeBits
-
-# initializes DeviceMemoryInfoParameterIndices for each
-# abstract VkDeviceMemory encountered over |parameters|
-def initDeviceMemoryInfoParameterIndices(parameters):
-
- use = False
- deviceMemoryInfoById = {}
-
- for (i, p) in enumerate(parameters):
- a = p.deviceMemoryAttrib
- if not a:
- continue
-
- if a in DEVICE_MEMORY_INFO_KEYS:
- use = True
- deviceMemoryInfoById[p.deviceMemoryVal] = DeviceMemoryInfoParameterIndices(
- None, None, None, None, None)
-
- for (i, p) in enumerate(parameters):
- a = p.deviceMemoryAttrib
- if not a:
- continue
-
- info = deviceMemoryInfoById[p.deviceMemoryVal]
-
- if a == "devicememoryhandle":
- info.handle = i
- if a == "devicememoryoffset":
- info.offset = i
- if a == "devicememorysize":
- info.size = i
- if a == "devicememorytypeindex":
- info.typeIndex = i
- if a == "devicememorytypebits":
- info.typeBits = i
-
- if not use:
- return None
-
- return deviceMemoryInfoById
-
-# Classes for describing aggregate types (unions, structs) and API calls.
-class VulkanCompoundType(object):
-
- def __init__(self, name: str, members: List[VulkanType], isUnion=False, structEnumExpr=None, structExtendsExpr=None, feature=None, initialEnv={}, optional=None):
- self.name: str = name
- self.typeName: str = name
- self.members: List[VulkanType] = members
- self.environment = initialEnv
- self.isUnion = isUnion
- self.structEnumExpr = structEnumExpr
- self.structExtendsExpr = structExtendsExpr
- self.feature = feature
- self.deviceMemoryInfoParameterIndices = initDeviceMemoryInfoParameterIndices(self.members)
- self.isTransformed = name in TRANSFORMED_TYPES
- self.copy = None
- self.optionalStr = optional
-
- def initCopies(self):
- self.copy = self
-
- for m in self.members:
- m.parent = self.copy
-
- def getMember(self, memberName) -> Optional[VulkanType]:
- for m in self.members:
- if m.paramName == memberName:
- return m
- return None
-
- def getStructEnumExpr(self,):
- return self.structEnumExpr
-
-class VulkanAPI(object):
-
- def __init__(self, name: str, retType: VulkanType, parameters, origName=None):
- self.name: str = name
- self.origName = name
- self.retType: VulkanType = retType
- self.parameters: List[VulkanType] = parameters
-
- self.deviceMemoryInfoParameterIndices = initDeviceMemoryInfoParameterIndices(self.parameters)
-
- self.copy = None
-
- self.isTransformed = name in TRANSFORMED_TYPES
-
- if origName:
- self.origName = origName
-
- def initCopies(self):
- self.copy = self
-
- for m in self.parameters:
- m.parent = self.copy
-
- def getCopy(self,):
- return copy(self)
-
- def getParameter(self, parameterName):
- for p in self.parameters:
- if p.paramName == parameterName:
- return p
- return None
-
- def withModifiedName(self, newName):
- res = VulkanAPI(newName, self.retType, self.parameters)
- return res
-
- def getRetVarExpr(self):
- if self.retType.typeName == "void":
- return None
- return "%s_%s_return" % (self.name, self.retType.typeName)
-
- def getRetTypeExpr(self):
- return self.retType.typeName
-
- def withCustomParameters(self, customParams):
- res = self.getCopy()
- res.parameters = customParams
- return res
-
- def withCustomReturnType(self, retType):
- res = self.getCopy()
- res.retType = retType
- return res
-
-# Whether or not special handling of virtual elements
-# such as VkDeviceMemory is needed.
-def vulkanTypeNeedsTransform(structOrApi):
- return structOrApi.deviceMemoryInfoParameterIndices != None
-
-def vulkanTypeGetNeededTransformTypes(structOrApi):
- res = []
- if structOrApi.deviceMemoryInfoParameterIndices != None:
- res.append("devicememory")
- return res
-
-def vulkanTypeforEachSubType(structOrApi, f):
- toLoop = None
- if type(structOrApi) == VulkanCompoundType:
- toLoop = structOrApi.members
- if type(structOrApi) == VulkanAPI:
- toLoop = structOrApi.parameters
-
- for (i, x) in enumerate(toLoop):
- f(i, x)
-
-# Parses everything about Vulkan types into a Python readable format.
-class VulkanTypeInfo(object):
-
- def __init__(self, generator):
- self.generator = generator
- self.categories: Set[str] = set([])
-
- # Tracks what Vulkan type is part of what category.
- self.typeCategories: Dict[str, str] = {}
-
- # Tracks the primitive encoding size for each type, if applicable.
- self.encodingSizes: Dict[str, Optional[int]] = {}
-
- self.structs: Dict[str, VulkanCompoundType] = {}
- self.apis: Dict[str, VulkanAPI] = {}
-
- # Maps bitmask types to the enum type used for the flags
- # E.g. "VkImageAspectFlags" -> "VkImageAspectFlagBits"
- self.bitmasks: Dict[str, str] = {}
-
- # Maps all enum names to their values.
- # For aliases, the value is the name of the canonical enum
- self.enumValues: Dict[str, Union[int, str]] = {}
-
- self.feature = None
-
- def initType(self, name: str, category: str):
- self.categories.add(category)
- self.typeCategories[name] = category
- self.encodingSizes[name] = self.setPrimitiveEncodingSize(name)
-
- def categoryOf(self, name):
- return self.typeCategories[name]
-
- def getPrimitiveEncodingSize(self, name):
- return self.encodingSizes[name]
-
- # Queries relating to categories of Vulkan types.
- def isHandleType(self, name):
- return self.typeCategories.get(name) == "handle"
-
- def isCompoundType(self, name: str):
- return self.typeCategories.get(name) in ["struct", "union"]
-
- # Gets the best size in bytes
- # for encoding/decoding a particular Vulkan type.
- # If not applicable, returns None.
- def setPrimitiveEncodingSize(self, name: str) -> Optional[int]:
- baseEncodingSizes = {
- "void": 8,
- "char": 1,
- "float": 4,
- "uint8_t": 1,
- "uint16_t": 2,
- "uint32_t": 4,
- "uint64_t": 8,
- "int": 4,
- "int8_t": 1,
- "int16_t": 2,
- "int32_t": 4,
- "int64_t": 8,
- "size_t": 8,
- "ssize_t": 8,
- "VkBool32": 4,
- }
-
- if name in baseEncodingSizes:
- return baseEncodingSizes[name]
-
- category = self.typeCategories[name]
-
- if category in [None, "api", "include", "define", "struct", "union"]:
- return None
-
- # Handles are pointers so they must be 8 bytes. Basetype includes VkDeviceSize which is 8 bytes.
- if category in ["handle", "basetype", "funcpointer"]:
- return 8
-
- if category in ["enum", "bitmask"]:
- return 4
-
- def isNonAbiPortableType(self, typeName):
- if typeName in EXPLICITLY_ABI_PORTABLE_TYPES:
- return False
-
- if typeName in EXPLICITLY_ABI_NON_PORTABLE_TYPES:
- return True
-
- category = self.typeCategories[typeName]
- return category in NON_ABI_PORTABLE_TYPE_CATEGORIES
-
- def onBeginFeature(self, featureName, featureType):
- self.feature = featureName
-
- def onEndFeature(self):
- self.feature = None
-
- def onGenType(self, typeinfo, name, alias):
- category = typeinfo.elem.get("category")
- self.initType(name, category)
-
- if category in ["struct", "union"]:
- self.onGenStruct(typeinfo, name, alias)
-
- if category == "bitmask":
- self.bitmasks[name] = typeinfo.elem.get("requires")
-
- def onGenStruct(self, typeinfo, typeName, alias):
- if not alias:
- members: List[VulkanType] = []
-
- structExtendsExpr = typeinfo.elem.get("structextends")
-
- structEnumExpr = None
-
- initialEnv = {}
- envStr = typeinfo.elem.get("exists")
- if envStr != None:
- comma_separated = envStr.split(",")
- name_type_pairs = map(lambda cs: tuple(map(lambda t: t.strip(), cs.split(":"))), comma_separated)
- for (name, typ) in name_type_pairs:
- initialEnv[name] = {
- "type" : typ,
- "binding" : None,
- "structmember" : False,
- "body" : None,
- }
-
- letenvStr = typeinfo.elem.get("let")
- if letenvStr != None:
- comma_separated = letenvStr.split(",")
- name_body_pairs = map(lambda cs: tuple(map(lambda t: t.strip(), cs.split(":"))), comma_separated)
- for (name, body) in name_body_pairs:
- initialEnv[name] = {
- "type" : "uint32_t",
- "binding" : name,
- "structmember" : False,
- "body" : parseLetBodyExpr(body)
- }
-
- for member in typeinfo.elem.findall(".//member"):
- vulkanType = makeVulkanTypeFromXMLTag(self, member)
- initialEnv[vulkanType.paramName] = {
- "type": vulkanType.typeName,
- "binding": vulkanType.paramName,
- "structmember": True,
- "body": None,
- }
- members.append(vulkanType)
- if vulkanType.typeName == "VkStructureType" and \
- member.get("values"):
- structEnumExpr = member.get("values")
-
- self.structs[typeName] = \
- VulkanCompoundType(
- typeName,
- members,
- isUnion = self.categoryOf(typeName) == "union",
- structEnumExpr = structEnumExpr,
- structExtendsExpr = structExtendsExpr,
- feature = self.feature,
- initialEnv = initialEnv,
- optional = typeinfo.elem.get("optional", None))
- self.structs[typeName].initCopies()
-
- def onGenGroup(self, groupinfo, groupName, _alias=None):
- self.initType(groupName, "enum")
- enums = groupinfo.elem.findall("enum")
- for enum in enums:
- intVal, strVal = self.generator.enumToValue(enum, True)
- self.enumValues[enum.get('name')] = intVal if intVal is not None else strVal
-
-
- def onGenEnum(self, enuminfo, name: str, alias):
- self.initType(name, "enum")
- value: str = enuminfo.elem.get("value")
- if value and value.isdigit():
- self.enumValues[name] = int(value)
- elif value and value[0] == '"' and value[-1] == '"':
- self.enumValues[name] = value[1:-1]
- elif alias is not None:
- self.enumValues[name] = alias
- else:
- # There's about a dozen cases of using the bitwise NOT operator (e.g.: `(~0U)`, `(~0ULL)`)
- # to concisely represent large values. Just ignore them for now.
- # In the future, we can add a lookup table to convert these to int
- return
-
- def onGenCmd(self, cmdinfo, name, _alias):
- self.initType(name, "api")
-
- proto = cmdinfo.elem.find("proto")
- params = cmdinfo.elem.findall("param")
-
- self.apis[name] = \
- VulkanAPI(
- name,
- makeVulkanTypeFromXMLTag(self, proto),
- list(map(lambda p: makeVulkanTypeFromXMLTag(self, p),
- params)))
- self.apis[name].initCopies()
-
- def onEnd(self):
- pass
-
-def hasNullOptionalStringFeature(forEachType):
- return (hasattr(forEachType, "onCheckWithNullOptionalStringFeature")) and \
- (hasattr(forEachType, "endCheckWithNullOptionalStringFeature")) and \
- (hasattr(forEachType, "finalCheckWithNullOptionalStringFeature"))
-
-
-# General function to iterate over a vulkan type and call code that processes
-# each of its sub-components, if any.
-def iterateVulkanType(typeInfo: VulkanTypeInfo, vulkanType: VulkanType, forEachType):
- if not vulkanType.isArrayOfStrings():
- if vulkanType.isPointerToConstPointer:
- return False
-
- forEachType.registerTypeInfo(typeInfo)
-
- needCheck = vulkanType.isOptionalPointer()
-
- if typeInfo.isCompoundType(vulkanType.typeName) and not vulkanType.isNextPointer():
-
- if needCheck:
- forEachType.onCheck(vulkanType)
-
- forEachType.onCompoundType(vulkanType)
-
- if needCheck:
- forEachType.endCheck(vulkanType)
-
- else:
- if vulkanType.isString():
- if needCheck and hasNullOptionalStringFeature(forEachType):
- forEachType.onCheckWithNullOptionalStringFeature(vulkanType)
- forEachType.onString(vulkanType)
- forEachType.endCheckWithNullOptionalStringFeature(vulkanType)
- forEachType.onString(vulkanType)
- forEachType.finalCheckWithNullOptionalStringFeature(vulkanType)
- elif needCheck:
- forEachType.onCheck(vulkanType)
- forEachType.onString(vulkanType)
- forEachType.endCheck(vulkanType)
- else:
- forEachType.onString(vulkanType)
-
- elif vulkanType.isArrayOfStrings():
- forEachType.onStringArray(vulkanType)
-
- elif vulkanType.staticArrExpr:
- forEachType.onStaticArr(vulkanType)
-
- elif vulkanType.isNextPointer():
- if needCheck:
- forEachType.onCheck(vulkanType)
- forEachType.onStructExtension(vulkanType)
- if needCheck:
- forEachType.endCheck(vulkanType)
-
- elif vulkanType.pointerIndirectionLevels > 0:
- if needCheck:
- forEachType.onCheck(vulkanType)
- forEachType.onPointer(vulkanType)
- if needCheck:
- forEachType.endCheck(vulkanType)
-
- else:
- forEachType.onValue(vulkanType)
-
- return True
-
-class VulkanTypeIterator(object):
- def __init__(self,):
- self.typeInfo = None
-
- def registerTypeInfo(self, typeInfo):
- self.typeInfo = typeInfo
-
-def vulkanTypeGetStructFieldLengthInfo(structInfo, vulkanType):
- def getSpecialCaseVulkanStructFieldLength(structInfo, vulkanType):
- cases = [
- {
- "structName": "VkShaderModuleCreateInfo",
- "field": "pCode",
- "lenExpr": "codeSize",
- "postprocess": lambda expr: "(%s / 4)" % expr
- },
- {
- "structName": "VkPipelineMultisampleStateCreateInfo",
- "field": "pSampleMask",
- "lenExpr": "rasterizationSamples",
- "postprocess": lambda expr: "(((%s) + 31) / 32)" % expr
- },
- ]
-
- for c in cases:
- if (structInfo.name, vulkanType.paramName) == (c["structName"], c["field"]):
- return c
-
- return None
-
- specialCaseAccess = getSpecialCaseVulkanStructFieldLength(structInfo, vulkanType)
-
- if specialCaseAccess is not None:
- return specialCaseAccess
-
- lenExpr = vulkanType.getLengthExpression()
-
- if lenExpr is None:
- return None
-
- return {
- "structName": structInfo.name,
- "field": vulkanType.typeName,
- "lenExpr": lenExpr,
- "postprocess": lambda expr: expr}
-
-
-class VulkanTypeProtobufInfo(object):
- def __init__(self, typeInfo, structInfo, vulkanType):
- self.needsMessage = typeInfo.isCompoundType(vulkanType.typeName)
- self.isRepeatedString = vulkanType.isArrayOfStrings()
- self.isString = vulkanType.isString() or (
- vulkanType.typeName == "char" and (vulkanType.staticArrExpr != ""))
-
- if structInfo is not None:
- self.lengthInfo = vulkanTypeGetStructFieldLengthInfo(
- structInfo, vulkanType)
- else:
- self.lengthInfo = vulkanType.getLengthExpression()
-
- self.protobufType = None
- self.origTypeCategory = typeInfo.categoryOf(vulkanType.typeName)
-
- self.isExtensionStruct = \
- vulkanType.typeName == "void" and \
- vulkanType.pointerIndirectionLevels > 0 and \
- vulkanType.paramName == "pNext"
-
- if self.needsMessage:
- return
-
- if typeInfo.categoryOf(vulkanType.typeName) in ["enum", "bitmask"]:
- self.protobufType = "uint32"
-
- if typeInfo.categoryOf(vulkanType.typeName) in ["funcpointer", "handle", "define"]:
- self.protobufType = "uint64"
-
- if typeInfo.categoryOf(vulkanType.typeName) in ["basetype"]:
- baseTypeMapping = {
- "VkFlags" : "uint32",
- "VkBool32" : "uint32",
- "VkDeviceSize" : "uint64",
- "VkSampleMask" : "uint32",
- }
- self.protobufType = baseTypeMapping[vulkanType.typeName]
-
- if typeInfo.categoryOf(vulkanType.typeName) == None:
-
- otherTypeMapping = {
- "void" : "uint64",
- "char" : "uint8",
- "size_t" : "uint64",
- "float" : "float",
- "uint8_t" : "uint32",
- "uint16_t" : "uint32",
- "int32_t" : "int32",
- "uint32_t" : "uint32",
- "uint64_t" : "uint64",
- "VkDeviceSize" : "uint64",
- "VkSampleMask" : "uint32",
- }
-
- if vulkanType.typeName in otherTypeMapping:
- self.protobufType = otherTypeMapping[vulkanType.typeName]
- else:
- self.protobufType = "uint64"
-
-
- protobufCTypeMapping = {
- "uint8" : "uint8_t",
- "uint32" : "uint32_t",
- "int32" : "int32_t",
- "uint64" : "uint64_t",
- "float" : "float",
- "string" : "const char*",
- }
-
- self.protobufCType = protobufCTypeMapping[self.protobufType]
-
diff --git a/codegen/vulkan/scripts/cereal/counting.py b/codegen/vulkan/scripts/cereal/counting.py
deleted file mode 100644
index 0557d328..00000000
--- a/codegen/vulkan/scripts/cereal/counting.py
+++ /dev/null
@@ -1,698 +0,0 @@
-# Copyright (c) 2018 The Android Open Source Project
-# Copyright (c) 2018 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from copy import copy
-
-from .common.codegen import CodeGen
-from .common.vulkantypes import \
- VulkanAPI, makeVulkanTypeSimple, iterateVulkanType, VulkanTypeIterator, Atom, FuncExpr, FuncExprVal, FuncLambda
-
-from .wrapperdefs import VulkanWrapperGenerator
-from .wrapperdefs import ROOT_TYPE_VAR_NAME, ROOT_TYPE_PARAM
-from .wrapperdefs import STRUCT_EXTENSION_PARAM, STRUCT_EXTENSION_PARAM_FOR_WRITE, EXTENSION_SIZE_WITH_STREAM_FEATURES_API_NAME
-
-class VulkanCountingCodegen(VulkanTypeIterator):
- def __init__(self, cgen, featureBitsVar, toCountVar, countVar, rootTypeVar, prefix, forApiOutput=False, mapHandles=True, handleMapOverwrites=False, doFiltering=True):
- self.cgen = cgen
- self.featureBitsVar = featureBitsVar
- self.toCountVar = toCountVar
- self.rootTypeVar = rootTypeVar
- self.countVar = countVar
- self.prefix = prefix
- self.forApiOutput = forApiOutput
-
- self.exprAccessor = lambda t: self.cgen.generalAccess(t, parentVarName = self.toCountVar, asPtr = True)
- self.exprValueAccessor = lambda t: self.cgen.generalAccess(t, parentVarName = self.toCountVar, asPtr = False)
- self.exprPrimitiveValueAccessor = lambda t: self.cgen.generalAccess(t, parentVarName = self.toCountVar, asPtr = False)
-
- self.lenAccessor = lambda t: self.cgen.generalLengthAccess(t, parentVarName = self.toCountVar)
- self.lenAccessorGuard = lambda t: self.cgen.generalLengthAccessGuard(t, parentVarName = self.toCountVar)
- self.filterVarAccessor = lambda t: self.cgen.filterVarAccess(t, parentVarName = self.toCountVar)
-
- self.checked = False
-
- self.mapHandles = mapHandles
- self.handleMapOverwrites = handleMapOverwrites
- self.doFiltering = doFiltering
-
- def getTypeForStreaming(self, vulkanType):
- res = copy(vulkanType)
-
- if not vulkanType.accessibleAsPointer():
- res = res.getForAddressAccess()
-
- if vulkanType.staticArrExpr:
- res = res.getForAddressAccess()
-
- return res
-
- def makeCastExpr(self, vulkanType):
- return "(%s)" % (
- self.cgen.makeCTypeDecl(vulkanType, useParamName=False))
-
- def genCount(self, sizeExpr):
- self.cgen.stmt("*%s += %s" % (self.countVar, sizeExpr))
-
- def genPrimitiveStreamCall(self, vulkanType):
- self.genCount(str(self.cgen.countPrimitive(
- self.typeInfo,
- vulkanType)))
-
- def genHandleMappingCall(self, vulkanType, access, lenAccess):
-
- if lenAccess is None:
- lenAccess = "1"
- handle64Bytes = "8"
- else:
- handle64Bytes = "%s * 8" % lenAccess
-
- handle64Var = self.cgen.var()
- if lenAccess != "1":
- self.cgen.beginIf(lenAccess)
- # self.cgen.stmt("uint64_t* %s" % handle64Var)
- # self.cgen.stmt(
- # "%s->alloc((void**)&%s, %s * 8)" % \
- # (self.streamVarName, handle64Var, lenAccess))
- handle64VarAccess = handle64Var
- handle64VarType = \
- makeVulkanTypeSimple(False, "uint64_t", 1, paramName=handle64Var)
- else:
- self.cgen.stmt("uint64_t %s" % handle64Var)
- handle64VarAccess = "&%s" % handle64Var
- handle64VarType = \
- makeVulkanTypeSimple(False, "uint64_t", 0, paramName=handle64Var)
-
- if self.handleMapOverwrites:
- # self.cgen.stmt(
- # "static_assert(8 == sizeof(%s), \"handle map overwrite requres %s to be 8 bytes long\")" % \
- # (vulkanType.typeName, vulkanType.typeName))
- # self.cgen.stmt(
- # "%s->handleMapping()->mapHandles_%s((%s*)%s, %s)" %
- # (self.streamVarName, vulkanType.typeName, vulkanType.typeName,
- # access, lenAccess))
- self.genCount("8 * %s" % lenAccess)
- else:
- # self.cgen.stmt(
- # "%s->handleMapping()->mapHandles_%s_u64(%s, %s, %s)" %
- # (self.streamVarName, vulkanType.typeName,
- # access,
- # handle64VarAccess, lenAccess))
- self.genCount(handle64Bytes)
-
- if lenAccess != "1":
- self.cgen.endIf()
-
- def doAllocSpace(self, vulkanType):
- pass
-
- def getOptionalStringFeatureExpr(self, vulkanType):
- if vulkanType.optionalStr is not None:
- if vulkanType.optionalStr.startswith("streamFeature:"):
- splitted = vulkanType.optionalStr.split(":")
- featureExpr = "%s & %s" % (self.featureBitsVar, splitted[1])
- return featureExpr
- return None
-
- def onCheck(self, vulkanType):
-
- if self.forApiOutput:
- return
-
- featureExpr = self.getOptionalStringFeatureExpr(vulkanType);
-
- self.checked = True
-
- access = self.exprAccessor(vulkanType)
-
- needConsistencyCheck = False
-
- self.cgen.line("// WARNING PTR CHECK")
- checkAccess = self.exprAccessor(vulkanType)
- addrExpr = "&" + checkAccess
- sizeExpr = self.cgen.sizeofExpr(vulkanType)
-
- if featureExpr is not None:
- self.cgen.beginIf(featureExpr)
-
- self.genPrimitiveStreamCall(
- vulkanType)
-
- if featureExpr is not None:
- self.cgen.endIf()
-
- if featureExpr is not None:
- self.cgen.beginIf("(!(%s) || %s)" % (featureExpr, access))
- else:
- self.cgen.beginIf(access)
-
- if needConsistencyCheck and featureExpr is None:
- self.cgen.beginIf("!(%s)" % checkName)
- self.cgen.stmt(
- "fprintf(stderr, \"fatal: %s inconsistent between guest and host\\n\")" % (access))
- self.cgen.endIf()
-
-
- def onCheckWithNullOptionalStringFeature(self, vulkanType):
- self.cgen.beginIf("%s & VULKAN_STREAM_FEATURE_NULL_OPTIONAL_STRINGS_BIT" % self.featureBitsVar)
- self.onCheck(vulkanType)
-
- def endCheckWithNullOptionalStringFeature(self, vulkanType):
- self.endCheck(vulkanType)
- self.cgen.endIf()
- self.cgen.beginElse()
-
- def finalCheckWithNullOptionalStringFeature(self, vulkanType):
- self.cgen.endElse()
-
- def endCheck(self, vulkanType):
-
- if self.checked:
- self.cgen.endIf()
- self.checked = False
-
- def genFilterFunc(self, filterfunc, env):
-
- def loop(expr, lambdaEnv={}):
- def do_func(expr):
- fnamestr = expr.name.name
- if "not" == fnamestr:
- return "!(%s)" % (loop(expr.args[0], lambdaEnv))
- if "eq" == fnamestr:
- return "(%s == %s)" % (loop(expr.args[0], lambdaEnv), loop(expr.args[1], lambdaEnv))
- if "and" == fnamestr:
- return "(%s && %s)" % (loop(expr.args[0], lambdaEnv), loop(expr.args[1], lambdaEnv))
- if "or" == fnamestr:
- return "(%s || %s)" % (loop(expr.args[0], lambdaEnv), loop(expr.args[1], lambdaEnv))
- if "bitwise_and" == fnamestr:
- return "(%s & %s)" % (loop(expr.args[0], lambdaEnv), loop(expr.args[1], lambdaEnv))
- if "getfield" == fnamestr:
- ptrlevels = get_ptrlevels(expr.args[0].val.name)
- if ptrlevels == 0:
- return "%s.%s" % (loop(expr.args[0], lambdaEnv), expr.args[1].val)
- else:
- return "(%s(%s)).%s" % ("*" * ptrlevels, loop(expr.args[0], lambdaEnv), expr.args[1].val)
-
- if "if" == fnamestr:
- return "((%s) ? (%s) : (%s))" % (loop(expr.args[0], lambdaEnv), loop(expr.args[1], lambdaEnv), loop(expr.args[2], lambdaEnv))
-
- return "%s(%s)" % (fnamestr, ", ".join(map(lambda e: loop(e, lambdaEnv), expr.args)))
-
- def do_expratom(atomname, lambdaEnv= {}):
- if lambdaEnv.get(atomname, None) is not None:
- return atomname
-
- enventry = env.get(atomname, None)
- if None != enventry:
- return self.getEnvAccessExpr(atomname)
- return atomname
-
- def get_ptrlevels(atomname, lambdaEnv= {}):
- if lambdaEnv.get(atomname, None) is not None:
- return 0
-
- enventry = env.get(atomname, None)
- if None != enventry:
- return self.getPointerIndirectionLevels(atomname)
-
- return 0
-
- def do_exprval(expr, lambdaEnv= {}):
- expratom = expr.val
-
- if Atom == type(expratom):
- return do_expratom(expratom.name, lambdaEnv)
-
- return "%s" % expratom
-
- def do_lambda(expr, lambdaEnv= {}):
- params = expr.vs
- body = expr.body
- newEnv = {}
-
- for (k, v) in lambdaEnv.items():
- newEnv[k] = v
-
- for p in params:
- newEnv[p.name] = p.typ
-
- return "[](%s) { return %s; }" % (", ".join(list(map(lambda p: "%s %s" % (p.typ, p.name), params))), loop(body, lambdaEnv=newEnv))
-
- if FuncExpr == type(expr):
- return do_func(expr)
- if FuncLambda == type(expr):
- return do_lambda(expr)
- elif FuncExprVal == type(expr):
- return do_exprval(expr)
-
- return loop(filterfunc)
-
- def beginFilterGuard(self, vulkanType):
- if vulkanType.filterVar == None:
- return
-
- if self.doFiltering == False:
- return
-
- filterVarAccess = self.getEnvAccessExpr(vulkanType.filterVar)
-
- filterValsExpr = None
- filterFuncExpr = None
- filterExpr = None
-
- filterFeature = "%s & VULKAN_STREAM_FEATURE_IGNORED_HANDLES_BIT" % self.featureBitsVar
-
- if None != vulkanType.filterVals:
- filterValsExpr = " || ".join(map(lambda filterval: "(%s == %s)" % (filterval, filterVarAccess), vulkanType.filterVals))
-
- if None != vulkanType.filterFunc:
- filterFuncExpr = self.genFilterFunc(vulkanType.filterFunc, self.currentStructInfo.environment)
-
- if None != filterValsExpr and None != filterFuncExpr:
- filterExpr = "%s || %s" % (filterValsExpr, filterFuncExpr)
- elif None == filterValsExpr and None == filterFuncExpr:
- # Assume is bool
- self.cgen.beginIf(filterVarAccess)
- elif None != filterValsExpr:
- self.cgen.beginIf("(!(%s) || (%s))" % (filterFeature, filterValsExpr))
- elif None != filterFuncExpr:
- self.cgen.beginIf("(!(%s) || (%s))" % (filterFeature, filterFuncExpr))
-
- def endFilterGuard(self, vulkanType, cleanupExpr=None):
- if vulkanType.filterVar == None:
- return
-
- if self.doFiltering == False:
- return
-
- if cleanupExpr == None:
- self.cgen.endIf()
- else:
- self.cgen.endIf()
- self.cgen.beginElse()
- self.cgen.stmt(cleanupExpr)
- self.cgen.endElse()
-
- def getEnvAccessExpr(self, varName):
- parentEnvEntry = self.currentStructInfo.environment.get(varName, None)
-
- if parentEnvEntry != None:
- isParentMember = parentEnvEntry["structmember"]
-
- if isParentMember:
- envAccess = self.exprValueAccessor(list(filter(lambda member: member.paramName == varName, self.currentStructInfo.members))[0])
- else:
- envAccess = varName
- return envAccess
-
- return None
-
- def getPointerIndirectionLevels(self, varName):
- parentEnvEntry = self.currentStructInfo.environment.get(varName, None)
-
- if parentEnvEntry != None:
- isParentMember = parentEnvEntry["structmember"]
-
- if isParentMember:
- return list(filter(lambda member: member.paramName == varName, self.currentStructInfo.members))[0].pointerIndirectionLevels
- else:
- return 0
- return 0
-
- return 0
-
-
- def onCompoundType(self, vulkanType):
-
- access = self.exprAccessor(vulkanType)
- lenAccess = self.lenAccessor(vulkanType)
- lenAccessGuard = self.lenAccessorGuard(vulkanType)
-
- self.beginFilterGuard(vulkanType)
-
- if vulkanType.pointerIndirectionLevels > 0:
- self.doAllocSpace(vulkanType)
-
- if lenAccess is not None:
- if lenAccessGuard is not None:
- self.cgen.beginIf(lenAccessGuard)
- loopVar = "i"
- access = "%s + %s" % (access, loopVar)
- forInit = "uint32_t %s = 0" % loopVar
- forCond = "%s < (uint32_t)%s" % (loopVar, lenAccess)
- forIncr = "++%s" % loopVar
- self.cgen.beginFor(forInit, forCond, forIncr)
-
- accessWithCast = "%s(%s)" % (self.makeCastExpr(
- self.getTypeForStreaming(vulkanType)), access)
-
- callParams = [self.featureBitsVar,
- self.rootTypeVar, accessWithCast, self.countVar]
-
- for (bindName, localName) in vulkanType.binds.items():
- callParams.append(self.getEnvAccessExpr(localName))
-
- self.cgen.funcCall(None, self.prefix + vulkanType.typeName,
- callParams)
-
- if lenAccess is not None:
- self.cgen.endFor()
- if lenAccessGuard is not None:
- self.cgen.endIf()
-
- self.endFilterGuard(vulkanType)
-
- def onString(self, vulkanType):
- access = self.exprAccessor(vulkanType)
- self.genCount("sizeof(uint32_t) + (%s ? strlen(%s) : 0)" % (access, access))
-
- def onStringArray(self, vulkanType):
- access = self.exprAccessor(vulkanType)
- lenAccess = self.lenAccessor(vulkanType)
- lenAccessGuard = self.lenAccessorGuard(vulkanType)
-
- self.genCount("sizeof(uint32_t)")
- if lenAccessGuard is not None:
- self.cgen.beginIf(lenAccessGuard)
- self.cgen.beginFor("uint32_t i = 0", "i < %s" % lenAccess, "++i")
- self.cgen.stmt("size_t l = %s[i] ? strlen(%s[i]) : 0" % (access, access))
- self.genCount("sizeof(uint32_t) + (%s[i] ? strlen(%s[i]) : 0)" % (access, access))
- self.cgen.endFor()
- if lenAccessGuard is not None:
- self.cgen.endIf()
-
- def onStaticArr(self, vulkanType):
- access = self.exprValueAccessor(vulkanType)
- lenAccess = self.lenAccessor(vulkanType)
- lenAccessGuard = self.lenAccessorGuard(vulkanType)
-
- if lenAccessGuard is not None:
- self.cgen.beginIf(lenAccessGuard)
- finalLenExpr = "%s * %s" % (lenAccess, self.cgen.sizeofExpr(vulkanType))
- if lenAccessGuard is not None:
- self.cgen.endIf()
- self.genCount(finalLenExpr)
-
- def onStructExtension(self, vulkanType):
- sTypeParam = copy(vulkanType)
- sTypeParam.paramName = "sType"
-
- access = self.exprAccessor(vulkanType)
- sizeVar = "%s_size" % vulkanType.paramName
-
- castedAccessExpr = access
-
- sTypeAccess = self.exprAccessor(sTypeParam)
- self.cgen.beginIf("%s == VK_STRUCTURE_TYPE_MAX_ENUM" %
- self.rootTypeVar)
- self.cgen.stmt("%s = %s" % (self.rootTypeVar, sTypeAccess))
- self.cgen.endIf()
-
- self.cgen.funcCall(None, self.prefix + "extension_struct",
- [self.featureBitsVar, self.rootTypeVar, castedAccessExpr, self.countVar])
-
-
- def onPointer(self, vulkanType):
- access = self.exprAccessor(vulkanType)
-
- lenAccess = self.lenAccessor(vulkanType)
- lenAccessGuard = self.lenAccessorGuard(vulkanType)
-
- self.beginFilterGuard(vulkanType)
- self.doAllocSpace(vulkanType)
-
- if vulkanType.filterVar != None:
- print("onPointer Needs filter: %s filterVar %s" % (access, vulkanType.filterVar))
-
- if vulkanType.isHandleType() and self.mapHandles:
- self.genHandleMappingCall(vulkanType, access, lenAccess)
- else:
- if self.typeInfo.isNonAbiPortableType(vulkanType.typeName):
- if lenAccess is not None:
- if lenAccessGuard is not None:
- self.cgen.beginIf(lenAccessGuard)
- self.cgen.beginFor("uint32_t i = 0", "i < (uint32_t)%s" % lenAccess, "++i")
- self.genPrimitiveStreamCall(vulkanType.getForValueAccess())
- self.cgen.endFor()
- if lenAccessGuard is not None:
- self.cgen.endIf()
- else:
- self.genPrimitiveStreamCall(vulkanType.getForValueAccess())
- else:
- if lenAccess is not None:
- needLenAccessGuard = True
- finalLenExpr = "%s * %s" % (
- lenAccess, self.cgen.sizeofExpr(vulkanType.getForValueAccess()))
- else:
- needLenAccessGuard = False
- finalLenExpr = "%s" % (
- self.cgen.sizeofExpr(vulkanType.getForValueAccess()))
- if needLenAccessGuard and lenAccessGuard is not None:
- self.cgen.beginIf(lenAccessGuard)
- self.genCount(finalLenExpr)
- if needLenAccessGuard and lenAccessGuard is not None:
- self.cgen.endIf()
-
- self.endFilterGuard(vulkanType)
-
- def onValue(self, vulkanType):
- self.beginFilterGuard(vulkanType)
-
- if vulkanType.isHandleType() and self.mapHandles:
- access = self.exprAccessor(vulkanType)
- if vulkanType.filterVar != None:
- print("onValue Needs filter: %s filterVar %s" % (access, vulkanType.filterVar))
- self.genHandleMappingCall(
- vulkanType.getForAddressAccess(), access, "1")
- elif self.typeInfo.isNonAbiPortableType(vulkanType.typeName):
- access = self.exprPrimitiveValueAccessor(vulkanType)
- self.genPrimitiveStreamCall(vulkanType)
- else:
- access = self.exprAccessor(vulkanType)
- self.genCount(self.cgen.sizeofExpr(vulkanType))
-
- self.endFilterGuard(vulkanType)
-
- def streamLetParameter(self, structInfo, letParamInfo):
- filterFeature = "%s & VULKAN_STREAM_FEATURE_IGNORED_HANDLES_BIT" % (self.featureBitsVar)
- self.cgen.stmt("%s %s = 1" % (letParamInfo.typeName, letParamInfo.paramName))
-
- self.cgen.beginIf(filterFeature)
-
- bodyExpr = self.currentStructInfo.environment[letParamInfo.paramName]["body"]
- self.cgen.stmt("%s = %s" % (letParamInfo.paramName, self.genFilterFunc(bodyExpr, self.currentStructInfo.environment)))
-
- self.genPrimitiveStreamCall(letParamInfo)
-
- self.cgen.endIf()
-
-class VulkanCounting(VulkanWrapperGenerator):
-
- def __init__(self, module, typeInfo):
- VulkanWrapperGenerator.__init__(self, module, typeInfo)
-
- self.codegen = CodeGen()
-
- self.featureBitsVar = "featureBits"
- self.featureBitsVarType = makeVulkanTypeSimple(False, "uint32_t", 0, self.featureBitsVar)
- self.countingPrefix = "count_"
- self.countVars = ["toCount", "count"]
- self.countVarType = makeVulkanTypeSimple(False, "size_t", 1, self.countVars[1])
- self.voidType = makeVulkanTypeSimple(False, "void", 0)
- self.rootTypeVar = ROOT_TYPE_VAR_NAME
-
- self.countingCodegen = \
- VulkanCountingCodegen(
- self.codegen,
- self.featureBitsVar,
- self.countVars[0],
- self.countVars[1],
- self.rootTypeVar,
- self.countingPrefix)
-
- self.knownDefs = {}
-
- self.extensionCountingPrototype = \
- VulkanAPI(self.countingPrefix + "extension_struct",
- self.voidType,
- [self.featureBitsVarType,
- ROOT_TYPE_PARAM,
- STRUCT_EXTENSION_PARAM,
- self.countVarType])
-
- def onBegin(self,):
- VulkanWrapperGenerator.onBegin(self)
- self.module.appendImpl(self.codegen.makeFuncDecl(
- self.extensionCountingPrototype))
-
- def onGenType(self, typeXml, name, alias):
- VulkanWrapperGenerator.onGenType(self, typeXml, name, alias)
-
- if name in self.knownDefs:
- return
-
- category = self.typeInfo.categoryOf(name)
-
- if category in ["struct", "union"] and alias:
- # TODO(liyl): might not work if freeParams != []
- self.module.appendHeader(
- self.codegen.makeFuncAlias(self.countingPrefix + name,
- self.countingPrefix + alias))
-
- if category in ["struct", "union"] and not alias:
-
- structInfo = self.typeInfo.structs[name]
-
- freeParams = []
- letParams = []
-
- for (envname, bindingInfo) in list(sorted(structInfo.environment.items(), key = lambda kv: kv[0])):
- if None == bindingInfo["binding"]:
- freeParams.append(makeVulkanTypeSimple(True, bindingInfo["type"], 0, envname))
- else:
- if not bindingInfo["structmember"]:
- letParams.append(makeVulkanTypeSimple(True, bindingInfo["type"], 0, envname))
-
- typeFromName = \
- lambda varname: \
- makeVulkanTypeSimple(True, name, 1, varname)
-
- countingParams = \
- [makeVulkanTypeSimple(False, "uint32_t", 0, self.featureBitsVar),
- ROOT_TYPE_PARAM,
- typeFromName(self.countVars[0]),
- makeVulkanTypeSimple(False, "size_t", 1, self.countVars[1])]
-
- countingPrototype = \
- VulkanAPI(self.countingPrefix + name,
- self.voidType,
- countingParams + freeParams)
-
- countingPrototypeNoFilter = \
- VulkanAPI(self.countingPrefix + name,
- self.voidType,
- countingParams)
-
- def structCountingDef(cgen):
- self.countingCodegen.cgen = cgen
- self.countingCodegen.currentStructInfo = structInfo
- cgen.stmt("(void)%s" % self.featureBitsVar);
- cgen.stmt("(void)%s" % self.rootTypeVar);
- cgen.stmt("(void)%s" % self.countVars[0]);
- cgen.stmt("(void)%s" % self.countVars[1]);
-
- if category == "struct":
- # marshal 'let' parameters first
- for letp in letParams:
- self.countingCodegen.streamLetParameter(self.typeInfo, letp)
-
- for member in structInfo.members:
- iterateVulkanType(self.typeInfo, member, self.countingCodegen)
- if category == "union":
- iterateVulkanType(self.typeInfo, structInfo.members[0], self.countingCodegen)
-
- def structCountingDefNoFilter(cgen):
- self.countingCodegen.cgen = cgen
- self.countingCodegen.currentStructInfo = structInfo
- self.countingCodegen.doFiltering = False
- cgen.stmt("(void)%s" % self.featureBitsVar);
- cgen.stmt("(void)%s" % self.rootTypeVar);
- cgen.stmt("(void)%s" % self.countVars[0]);
- cgen.stmt("(void)%s" % self.countVars[1]);
-
- if category == "struct":
- # marshal 'let' parameters first
- for letp in letParams:
- self.countingCodegen.streamLetParameter(self.typeInfo, letp)
-
- for member in structInfo.members:
- iterateVulkanType(self.typeInfo, member, self.countingCodegen)
- if category == "union":
- iterateVulkanType(self.typeInfo, structInfo.members[0], self.countingCodegen)
-
- self.countingCodegen.doFiltering = True
-
- self.module.appendHeader(
- self.codegen.makeFuncDecl(countingPrototype))
- self.module.appendImpl(
- self.codegen.makeFuncImpl(countingPrototype, structCountingDef))
-
- if freeParams != []:
- self.module.appendHeader(
- self.cgenHeader.makeFuncDecl(countingPrototypeNoFilter))
- self.module.appendImpl(
- self.cgenImpl.makeFuncImpl(
- countingPrototypeNoFilter, structCountingDefNoFilter))
-
- def onGenCmd(self, cmdinfo, name, alias):
- VulkanWrapperGenerator.onGenCmd(self, cmdinfo, name, alias)
-
- def doExtensionStructCountCodegen(self, cgen, extParam, forEach, funcproto):
- accessVar = "structAccess"
- sizeVar = "currExtSize"
- cgen.stmt("VkInstanceCreateInfo* %s = (VkInstanceCreateInfo*)(%s)" % (accessVar, extParam.paramName))
- cgen.stmt("size_t %s = %s(%s, %s, %s)" % (sizeVar, EXTENSION_SIZE_WITH_STREAM_FEATURES_API_NAME,
- self.featureBitsVar, ROOT_TYPE_VAR_NAME, extParam.paramName))
-
- cgen.beginIf("!%s && %s" % (sizeVar, extParam.paramName))
-
- cgen.line("// unknown struct extension; skip and call on its pNext field");
- cgen.funcCall(None, funcproto.name, [
- self.featureBitsVar, ROOT_TYPE_VAR_NAME, "(void*)%s->pNext" % accessVar, self.countVars[1]])
- cgen.stmt("return")
-
- cgen.endIf()
- cgen.beginElse()
-
- cgen.line("// known or null extension struct")
-
- cgen.stmt("*%s += sizeof(uint32_t)" % self.countVars[1])
-
- cgen.beginIf("!%s" % (sizeVar))
- cgen.line("// exit if this was a null extension struct (size == 0 in this branch)")
- cgen.stmt("return")
- cgen.endIf()
-
- cgen.endIf()
-
- cgen.stmt("*%s += sizeof(VkStructureType)" % self.countVars[1])
-
- def fatalDefault(cgen):
- cgen.line("// fatal; the switch is only taken if the extension struct is known");
- cgen.stmt("abort()")
- pass
-
- self.emitForEachStructExtension(
- cgen,
- makeVulkanTypeSimple(False, "void", 0, "void"),
- extParam,
- forEach,
- defaultEmit=fatalDefault,
- rootTypeVar=ROOT_TYPE_PARAM)
-
- def onEnd(self,):
- VulkanWrapperGenerator.onEnd(self)
-
- def forEachExtensionCounting(ext, castedAccess, cgen):
- cgen.funcCall(None, self.countingPrefix + ext.name,
- [self.featureBitsVar, self.rootTypeVar, castedAccess, self.countVars[1]])
-
- self.module.appendImpl(
- self.codegen.makeFuncImpl(
- self.extensionCountingPrototype,
- lambda cgen: self.doExtensionStructCountCodegen(
- cgen,
- STRUCT_EXTENSION_PARAM,
- forEachExtensionCounting,
- self.extensionCountingPrototype)))
diff --git a/codegen/vulkan/scripts/cereal/decoder.py b/codegen/vulkan/scripts/cereal/decoder.py
deleted file mode 100644
index e082db0c..00000000
--- a/codegen/vulkan/scripts/cereal/decoder.py
+++ /dev/null
@@ -1,912 +0,0 @@
-from .common.codegen import CodeGen, VulkanWrapperGenerator
-from .common.vulkantypes import VulkanAPI, makeVulkanTypeSimple, iterateVulkanType, VulkanTypeInfo,\
- VulkanType
-
-from .marshaling import VulkanMarshalingCodegen
-from .reservedmarshaling import VulkanReservedMarshalingCodegen
-from .transform import TransformCodegen
-
-from .wrapperdefs import API_PREFIX_MARSHAL
-from .wrapperdefs import API_PREFIX_RESERVEDUNMARSHAL
-from .wrapperdefs import MAX_PACKET_LENGTH
-from .wrapperdefs import VULKAN_STREAM_TYPE
-from .wrapperdefs import ROOT_TYPE_DEFAULT_VALUE
-from .wrapperdefs import RELAXED_APIS
-
-
-SKIPPED_DECODER_DELETES = [
- "vkFreeDescriptorSets",
-]
-
-DELAYED_DECODER_DELETES = [
- "vkDestroyPipelineLayout",
-]
-
-global_state_prefix = "m_state->on_"
-
-decoder_decl_preamble = """
-
-namespace gfxstream {
-class IOStream;
-class ProcessResources;
-} // namespace gfxstream
-
-namespace gfxstream {
-namespace vk {
-
-class VkDecoder {
-public:
- VkDecoder();
- ~VkDecoder();
- void setForSnapshotLoad(bool forSnapshotLoad);
- size_t decode(void* buf, size_t bufsize, IOStream* stream,
- const ProcessResources* processResources, const VkDecoderContext&);
-private:
- class Impl;
- std::unique_ptr<Impl> mImpl;
-};
-
-} // namespace vk
-} // namespace gfxstream
-
-"""
-
-decoder_impl_preamble ="""
-namespace gfxstream {
-namespace vk {
-
-using android::base::MetricEventBadPacketLength;
-using android::base::MetricEventDuplicateSequenceNum;
-
-class VkDecoder::Impl {
-public:
- Impl() : m_logCalls(android::base::getEnvironmentVariable("ANDROID_EMU_VK_LOG_CALLS") == "1"),
- m_vk(vkDispatch()),
- m_state(VkDecoderGlobalState::get()),
- m_boxedHandleUnwrapMapping(m_state),
- m_boxedHandleCreateMapping(m_state),
- m_boxedHandleDestroyMapping(m_state),
- m_boxedHandleUnwrapAndDeleteMapping(m_state),
- m_boxedHandleUnwrapAndDeletePreserveBoxedMapping(m_state),
- m_prevSeqno(std::nullopt) {}
- %s* stream() { return &m_vkStream; }
- VulkanMemReadingStream* readStream() { return &m_vkMemReadingStream; }
-
- void setForSnapshotLoad(bool forSnapshotLoad) {
- m_forSnapshotLoad = forSnapshotLoad;
- }
-
- size_t decode(void* buf, size_t bufsize, IOStream* stream,
- const ProcessResources* processResources, const VkDecoderContext&);
-
-private:
- bool m_logCalls;
- bool m_forSnapshotLoad = false;
- VulkanDispatch* m_vk;
- VkDecoderGlobalState* m_state;
- %s m_vkStream { nullptr };
- VulkanMemReadingStream m_vkMemReadingStream { nullptr };
- BoxedHandleUnwrapMapping m_boxedHandleUnwrapMapping;
- BoxedHandleCreateMapping m_boxedHandleCreateMapping;
- BoxedHandleDestroyMapping m_boxedHandleDestroyMapping;
- BoxedHandleUnwrapAndDeleteMapping m_boxedHandleUnwrapAndDeleteMapping;
- android::base::BumpPool m_pool;
- BoxedHandleUnwrapAndDeletePreserveBoxedMapping m_boxedHandleUnwrapAndDeletePreserveBoxedMapping;
- std::optional<uint32_t> m_prevSeqno;
-};
-
-VkDecoder::VkDecoder() :
- mImpl(new VkDecoder::Impl()) { }
-
-VkDecoder::~VkDecoder() = default;
-
-void VkDecoder::setForSnapshotLoad(bool forSnapshotLoad) {
- mImpl->setForSnapshotLoad(forSnapshotLoad);
-}
-
-size_t VkDecoder::decode(void* buf, size_t bufsize, IOStream* stream,
- const ProcessResources* processResources,
- const VkDecoderContext& context) {
- return mImpl->decode(buf, bufsize, stream, processResources, context);
-}
-
-// VkDecoder::Impl::decode to follow
-""" % (VULKAN_STREAM_TYPE, VULKAN_STREAM_TYPE)
-
-decoder_impl_postamble = """
-
-} // namespace vk
-} // namespace gfxstream
-
-"""
-
-READ_STREAM = "vkReadStream"
-WRITE_STREAM = "vkStream"
-
-# Driver workarounds for APIs that don't work well multithreaded
-driver_workarounds_global_lock_apis = [ \
- "vkCreatePipelineLayout",
- "vkDestroyPipelineLayout",
-]
-
-def emit_param_decl_for_reading(param, cgen):
- if param.staticArrExpr:
- cgen.stmt(
- cgen.makeRichCTypeDecl(param.getForNonConstAccess()))
- else:
- cgen.stmt(
- cgen.makeRichCTypeDecl(param))
-
-def emit_unmarshal(typeInfo, param, cgen, output = False, destroy = False, noUnbox = False):
- if destroy:
- iterateVulkanType(typeInfo, param, VulkanReservedMarshalingCodegen(
- cgen,
- READ_STREAM,
- ROOT_TYPE_DEFAULT_VALUE,
- param.paramName,
- "readStreamPtrPtr",
- API_PREFIX_RESERVEDUNMARSHAL,
- "",
- direction="read",
- dynAlloc=True))
- lenAccess = cgen.generalLengthAccess(param)
- lenAccessGuard = cgen.generalLengthAccessGuard(param)
- if None == lenAccess or "1" == lenAccess:
- cgen.stmt("boxed_%s_preserve = %s" % (param.paramName, param.paramName))
- cgen.stmt("%s = unbox_%s(%s)" % (param.paramName, param.typeName, param.paramName))
- else:
- if lenAccessGuard is not None:
- cgen.beginIf(lenAccessGuard)
- cgen.beginFor("uint32_t i = 0", "i < %s" % lenAccess, "++i")
- cgen.stmt("boxed_%s_preserve[i] = %s[i]" % (param.paramName, param.paramName))
- cgen.stmt("((%s*)(%s))[i] = unbox_%s(%s[i])" % (param.typeName, param.paramName, param.typeName, param.paramName))
- cgen.endFor()
- if lenAccessGuard is not None:
- cgen.endIf()
- else:
- if noUnbox:
- cgen.line("// No unbox for %s" % (param.paramName))
- iterateVulkanType(typeInfo, param, VulkanReservedMarshalingCodegen(
- cgen,
- READ_STREAM,
- ROOT_TYPE_DEFAULT_VALUE,
- param.paramName,
- "readStreamPtrPtr",
- API_PREFIX_RESERVEDUNMARSHAL,
- "" if (output or noUnbox) else "unbox_",
- direction="read",
- dynAlloc=True))
-
-
-def emit_dispatch_unmarshal(typeInfo: VulkanTypeInfo, param: VulkanType, cgen, globalWrapped):
- cgen.stmt("// Begin {} wrapped dispatchable handle unboxing for {}".format(
- "global" if globalWrapped else "non",
- param.paramName))
-
- iterateVulkanType(typeInfo, param, VulkanReservedMarshalingCodegen(
- cgen,
- READ_STREAM,
- ROOT_TYPE_DEFAULT_VALUE,
- param.paramName,
- "readStreamPtrPtr",
- API_PREFIX_RESERVEDUNMARSHAL,
- "",
- direction="read",
- dynAlloc=True))
-
- if not globalWrapped:
- cgen.stmt("auto unboxed_%s = unbox_%s(%s)" %
- (param.paramName, param.typeName, param.paramName))
- cgen.stmt("auto vk = dispatch_%s(%s)" %
- (param.typeName, param.paramName))
- cgen.stmt("// End manual dispatchable handle unboxing for %s" % param.paramName)
-
-
-def emit_transform(typeInfo, param, cgen, variant="tohost"):
- res = iterateVulkanType(typeInfo, param, TransformCodegen(
- cgen, param.paramName, "m_state", "transform_%s_" % variant, variant))
- if not res:
- cgen.stmt("(void)%s" % param.paramName)
-
-
-def emit_marshal(typeInfo, param, cgen, handleMapOverwrites=False):
- iterateVulkanType(typeInfo, param, VulkanMarshalingCodegen(
- cgen,
- WRITE_STREAM,
- ROOT_TYPE_DEFAULT_VALUE,
- param.paramName,
- API_PREFIX_MARSHAL,
- direction="write",
- handleMapOverwrites=handleMapOverwrites))
-
-
-class DecodingParameters(object):
- def __init__(self, api: VulkanAPI):
- self.params: list[VulkanType] = []
- self.toRead: list[VulkanType] = []
- self.toWrite: list[VulkanType] = []
-
- for i, param in enumerate(api.parameters):
- if i == 0 and param.isDispatchableHandleType():
- param.dispatchHandle = True
-
- if param.isNonDispatchableHandleType() and param.isCreatedBy(api):
- param.nonDispatchableHandleCreate = True
-
- if param.isNonDispatchableHandleType() and param.isDestroyedBy(api):
- param.nonDispatchableHandleDestroy = True
-
- if param.isDispatchableHandleType() and param.isCreatedBy(api):
- param.dispatchableHandleCreate = True
-
- if param.isDispatchableHandleType() and param.isDestroyedBy(api):
- param.dispatchableHandleDestroy = True
-
- self.toRead.append(param)
-
- if param.possiblyOutput():
- self.toWrite.append(param)
-
- self.params.append(param)
-
-
-def emit_call_log(api, cgen):
- decodingParams = DecodingParameters(api)
- paramsToRead = decodingParams.toRead
-
- cgen.beginIf("m_logCalls")
- paramLogFormat = ""
- paramLogArgs = []
- for p in paramsToRead:
- paramLogFormat += "0x%llx "
- for p in paramsToRead:
- paramLogArgs.append("(unsigned long long)%s" % (p.paramName))
- cgen.stmt("fprintf(stderr, \"stream %%p: call %s %s\\n\", ioStream, %s)" % (api.name, paramLogFormat, ", ".join(paramLogArgs)))
- cgen.endIf()
-
-def emit_decode_parameters(typeInfo: VulkanTypeInfo, api: VulkanAPI, cgen, globalWrapped=False):
- decodingParams = DecodingParameters(api)
-
- paramsToRead = decodingParams.toRead
-
- for p in paramsToRead:
- emit_param_decl_for_reading(p, cgen)
-
- for i, p in enumerate(paramsToRead):
- lenAccess = cgen.generalLengthAccess(p)
-
- if p.dispatchHandle:
- emit_dispatch_unmarshal(typeInfo, p, cgen, globalWrapped)
- else:
- destroy = p.nonDispatchableHandleDestroy or p.dispatchableHandleDestroy
- noUnbox = api.name in ["vkQueueFlushCommandsGOOGLE", "vkQueueFlushCommandsFromAuxMemoryGOOGLE"] and p.paramName == "commandBuffer"
-
- if p.nonDispatchableHandleDestroy or p.dispatchableHandleDestroy:
- destroy = True
- cgen.stmt("// Begin manual non dispatchable handle destroy unboxing for %s" % p.paramName)
- if None == lenAccess or "1" == lenAccess:
- cgen.stmt("%s boxed_%s_preserve" % (p.typeName, p.paramName))
- else:
- cgen.stmt("%s* boxed_%s_preserve; %s->alloc((void**)&boxed_%s_preserve, %s * sizeof(%s))" % (p.typeName, p.paramName, READ_STREAM, p.paramName, lenAccess, p.typeName))
-
- if p.possiblyOutput():
- cgen.stmt("// Begin manual dispatchable handle unboxing for %s" % p.paramName)
- cgen.stmt("%s->unsetHandleMapping()" % READ_STREAM)
-
- emit_unmarshal(typeInfo, p, cgen, output = p.possiblyOutput(), destroy = destroy, noUnbox = noUnbox)
-
- for p in paramsToRead:
- emit_transform(typeInfo, p, cgen, variant="tohost")
-
- emit_call_log(api, cgen)
-
-def emit_dispatch_call(api, cgen):
-
- decodingParams = DecodingParameters(api)
-
- customParams = []
-
- delay = api.name in DELAYED_DECODER_DELETES
-
- for i, p in enumerate(api.parameters):
- customParam = p.paramName
- if decodingParams.params[i].dispatchHandle:
- customParam = "unboxed_%s" % p.paramName
- customParams.append(customParam)
-
- if delay:
- cgen.line("std::function<void()> delayed_remove_callback = [vk, %s]() {" % ", ".join(customParams))
-
- if api.name in driver_workarounds_global_lock_apis:
- if delay:
- cgen.stmt("auto state = VkDecoderGlobalState::get()")
- cgen.stmt("// state already locked")
- else:
- cgen.stmt("m_state->lock()")
-
- cgen.vkApiCall(api, customPrefix="vk->", customParameters=customParams, \
- globalStatePrefix=global_state_prefix, checkForDeviceLost=True,
- checkForOutOfMemory=True)
-
- if api.name in driver_workarounds_global_lock_apis:
- if not delay:
- cgen.stmt("m_state->unlock()")
- # for delayed remove, state is already locked, so we do not need to
- # unlock
-
- if delay:
- cgen.line("};")
-
-def emit_global_state_wrapped_call(api, cgen, context):
- if api.name in DELAYED_DECODER_DELETES:
- print("Error: Cannot generate a global state wrapped call that is also a delayed delete (yet)");
- raise
-
- customParams = ["&m_pool"] + list(map(lambda p: p.paramName, api.parameters))
- if context:
- customParams += ["context"]
- cgen.vkApiCall(api, customPrefix=global_state_prefix, \
- customParameters=customParams, globalStatePrefix=global_state_prefix, \
- checkForDeviceLost=True, checkForOutOfMemory=True)
-
-def emit_decode_parameters_writeback(typeInfo, api, cgen, autobox=True):
- decodingParams = DecodingParameters(api)
-
- paramsToWrite = decodingParams.toWrite
-
- cgen.stmt("%s->unsetHandleMapping()" % WRITE_STREAM)
-
- handleMapOverwrites = False
-
- for p in paramsToWrite:
- emit_transform(typeInfo, p, cgen, variant="fromhost")
-
- handleMapOverwrites = False
-
- if p.nonDispatchableHandleCreate or p.dispatchableHandleCreate:
- handleMapOverwrites = True
-
- if autobox and p.nonDispatchableHandleCreate:
- cgen.stmt("// Begin auto non dispatchable handle create for %s" % p.paramName)
- cgen.stmt("if (%s == VK_SUCCESS) %s->setHandleMapping(&m_boxedHandleCreateMapping)" % \
- (api.getRetVarExpr(), WRITE_STREAM))
-
- if (not autobox) and p.nonDispatchableHandleCreate:
- cgen.stmt("// Begin manual non dispatchable handle create for %s" % p.paramName)
- cgen.stmt("%s->unsetHandleMapping()" % WRITE_STREAM)
-
- emit_marshal(typeInfo, p, cgen, handleMapOverwrites=handleMapOverwrites)
-
- if autobox and p.nonDispatchableHandleCreate:
- cgen.stmt("// Begin auto non dispatchable handle create for %s" % p.paramName)
- cgen.stmt("%s->setHandleMapping(&m_boxedHandleUnwrapMapping)" % WRITE_STREAM)
-
- if (not autobox) and p.nonDispatchableHandleCreate:
- cgen.stmt("// Begin manual non dispatchable handle create for %s" % p.paramName)
- cgen.stmt("%s->setHandleMapping(&m_boxedHandleUnwrapMapping)" % WRITE_STREAM)
-
-def emit_decode_return_writeback(api, cgen):
- retTypeName = api.getRetTypeExpr()
- if retTypeName != "void":
- retVar = api.getRetVarExpr()
- cgen.stmt("%s->write(&%s, %s)" %
- (WRITE_STREAM, retVar, cgen.sizeofExpr(api.retType)))
-
-def emit_decode_finish(api, cgen):
- decodingParams = DecodingParameters(api)
- retTypeName = api.getRetTypeExpr()
- paramsToWrite = decodingParams.toWrite
-
- if retTypeName != "void" or len(paramsToWrite) != 0:
- cgen.stmt("%s->commitWrite()" % WRITE_STREAM)
-
-def emit_destroyed_handle_cleanup(api, cgen):
- decodingParams = DecodingParameters(api)
- paramsToRead = decodingParams.toRead
-
- skipDelete = api.name in SKIPPED_DECODER_DELETES
-
- if skipDelete:
- cgen.line("// Skipping handle cleanup for %s" % api.name)
- return
-
- for p in paramsToRead:
- if p.dispatchHandle:
- pass
- else:
- lenAccess = cgen.generalLengthAccess(p)
- lenAccessGuard = cgen.generalLengthAccess(p)
- destroy = p.nonDispatchableHandleDestroy or p.dispatchableHandleDestroy
- if destroy:
- if None == lenAccess or "1" == lenAccess:
- if api.name in DELAYED_DECODER_DELETES:
- cgen.stmt("delayed_delete_%s(boxed_%s_preserve, unboxed_device, delayed_remove_callback)" % (p.typeName, p.paramName))
- else:
- cgen.stmt("delete_%s(boxed_%s_preserve)" % (p.typeName, p.paramName))
- else:
- if lenAccessGuard is not None:
- cgen.beginIf(lenAccessGuard)
- cgen.beginFor("uint32_t i = 0", "i < %s" % lenAccess, "++i")
- if api.name in DELAYED_DECODER_DELETES:
- cgen.stmt("delayed_delete_%s(boxed_%s_preserve[i], unboxed_device, delayed_remove_callback)" % (p.typeName, p.paramName))
- else:
- cgen.stmt("delete_%s(boxed_%s_preserve[i])" % (p.typeName, p.paramName))
- cgen.endFor()
- if lenAccessGuard is not None:
- cgen.endIf()
-
-def emit_pool_free(cgen):
- cgen.stmt("%s->clearPool()" % READ_STREAM)
-
-def emit_seqno_incr(api, cgen):
- cgen.stmt("if (queueSubmitWithCommandsEnabled) seqnoPtr->fetch_add(1, std::memory_order_seq_cst)")
-
-def emit_snapshot(typeInfo, api, cgen):
-
- cgen.stmt("%s->setReadPos((uintptr_t)(*readStreamPtrPtr) - (uintptr_t)snapshotTraceBegin)" % READ_STREAM)
- cgen.stmt("size_t snapshotTraceBytes = %s->endTrace()" % READ_STREAM)
-
- additionalParams = [ \
- makeVulkanTypeSimple(True, "uint8_t", 1, "snapshotTraceBegin"),
- makeVulkanTypeSimple(False, "size_t", 0, "snapshotTraceBytes"),
- makeVulkanTypeSimple(False, "android::base::BumpPool", 1, "&m_pool"),
- ]
-
- retTypeName = api.getRetTypeExpr()
- if retTypeName != "void":
- retVar = api.getRetVarExpr()
- additionalParams.append(makeVulkanTypeSimple(False, retTypeName, 0, retVar))
-
- paramsForSnapshot = []
-
- decodingParams = DecodingParameters(api)
-
- for p in decodingParams.toRead:
- if p.nonDispatchableHandleDestroy or (not p.dispatchHandle and p.dispatchableHandleDestroy):
- paramsForSnapshot.append(p.withModifiedName("boxed_%s_preserve" % p.paramName))
- else:
- paramsForSnapshot.append(p)
-
- customParams = additionalParams + paramsForSnapshot
-
- apiForSnapshot = \
- api.withCustomReturnType(makeVulkanTypeSimple(False, "void", 0, "void")). \
- withCustomParameters(customParams)
-
- cgen.beginIf("m_state->snapshotsEnabled()")
- cgen.vkApiCall(apiForSnapshot, customPrefix="m_state->snapshot()->")
- cgen.endIf()
-
-def emit_decoding(typeInfo, api, cgen, globalWrapped=False, context=False):
- isAcquire = api.name in RELAXED_APIS
- emit_decode_parameters(typeInfo, api, cgen, globalWrapped)
-
- if isAcquire:
- emit_seqno_incr(api, cgen)
-
- if globalWrapped:
- emit_global_state_wrapped_call(api, cgen, context)
- else:
- emit_dispatch_call(api, cgen)
-
- emit_decode_parameters_writeback(typeInfo, api, cgen, autobox=not globalWrapped)
- emit_decode_return_writeback(api, cgen)
- emit_decode_finish(api, cgen)
- emit_snapshot(typeInfo, api, cgen)
- emit_destroyed_handle_cleanup(api, cgen)
- emit_pool_free(cgen)
-
- if not isAcquire:
- emit_seqno_incr(api, cgen)
-
-def emit_default_decoding(typeInfo, api, cgen):
- emit_decoding(typeInfo, api, cgen)
-
-def emit_global_state_wrapped_decoding(typeInfo, api, cgen):
- emit_decoding(typeInfo, api, cgen, globalWrapped=True)
-
-def emit_global_state_wrapped_decoding_with_context(typeInfo, api, cgen):
- emit_decoding(typeInfo, api, cgen, globalWrapped=True, context=True)
-
-## Custom decoding definitions##################################################
-def decode_vkFlushMappedMemoryRanges(typeInfo: VulkanTypeInfo, api, cgen):
- emit_decode_parameters(typeInfo, api, cgen)
-
- cgen.beginIf("!m_state->usingDirectMapping()")
- cgen.beginFor("uint32_t i = 0", "i < memoryRangeCount", "++i")
- cgen.stmt("auto range = pMemoryRanges[i]")
- cgen.stmt("auto memory = pMemoryRanges[i].memory")
- cgen.stmt("auto size = pMemoryRanges[i].size")
- cgen.stmt("auto offset = pMemoryRanges[i].offset")
- cgen.stmt("uint64_t readStream = 0")
- cgen.stmt("memcpy(&readStream, *readStreamPtrPtr, sizeof(uint64_t)); *readStreamPtrPtr += sizeof(uint64_t)")
- cgen.stmt("auto hostPtr = m_state->getMappedHostPointer(memory)")
- cgen.stmt("if (!hostPtr && readStream > 0) GFXSTREAM_ABORT(::emugl::FatalError(::emugl::ABORT_REASON_OTHER))")
- cgen.stmt("if (!hostPtr) continue")
- cgen.stmt("uint8_t* targetRange = hostPtr + offset")
- cgen.stmt("memcpy(targetRange, *readStreamPtrPtr, readStream); *readStreamPtrPtr += readStream")
- cgen.endFor()
- cgen.endIf()
-
- emit_dispatch_call(api, cgen)
- emit_decode_parameters_writeback(typeInfo, api, cgen)
- emit_decode_return_writeback(api, cgen)
- emit_decode_finish(api, cgen)
- emit_snapshot(typeInfo, api, cgen);
- emit_pool_free(cgen)
- emit_seqno_incr(api, cgen)
-
-def decode_vkInvalidateMappedMemoryRanges(typeInfo, api, cgen):
- emit_decode_parameters(typeInfo, api, cgen)
- emit_dispatch_call(api, cgen)
- emit_decode_parameters_writeback(typeInfo, api, cgen)
- emit_decode_return_writeback(api, cgen)
-
- cgen.beginIf("!m_state->usingDirectMapping()")
- cgen.beginFor("uint32_t i = 0", "i < memoryRangeCount", "++i")
- cgen.stmt("auto range = pMemoryRanges[i]")
- cgen.stmt("auto memory = range.memory")
- cgen.stmt("auto size = range.size")
- cgen.stmt("auto offset = range.offset")
- cgen.stmt("auto hostPtr = m_state->getMappedHostPointer(memory)")
- cgen.stmt("auto actualSize = size == VK_WHOLE_SIZE ? m_state->getDeviceMemorySize(memory) : size")
- cgen.stmt("uint64_t writeStream = 0")
- cgen.stmt("if (!hostPtr) { %s->write(&writeStream, sizeof(uint64_t)); continue; }" % WRITE_STREAM)
- cgen.stmt("uint8_t* targetRange = hostPtr + offset")
- cgen.stmt("writeStream = actualSize")
- cgen.stmt("%s->write(&writeStream, sizeof(uint64_t))" % WRITE_STREAM)
- cgen.stmt("%s->write(targetRange, actualSize)" % WRITE_STREAM)
- cgen.endFor()
- cgen.endIf()
-
- emit_decode_finish(api, cgen)
- emit_snapshot(typeInfo, api, cgen);
- emit_pool_free(cgen)
- emit_seqno_incr(api, cgen)
-
-def decode_unsupported_api(typeInfo, api, cgen):
- cgen.line(f"// Decoding {api.name} is not supported. This should not run.")
- cgen.stmt(f"fprintf(stderr, \"stream %p: fatal: decoding unsupported API {api.name}\\n\", ioStream)");
- cgen.stmt("__builtin_trap()")
-
-custom_decodes = {
- "vkEnumerateInstanceVersion" : emit_global_state_wrapped_decoding,
- "vkCreateInstance" : emit_global_state_wrapped_decoding,
- "vkDestroyInstance" : emit_global_state_wrapped_decoding,
- "vkEnumeratePhysicalDevices" : emit_global_state_wrapped_decoding,
-
- "vkGetPhysicalDeviceFeatures" : emit_global_state_wrapped_decoding,
- "vkGetPhysicalDeviceFeatures2" : emit_global_state_wrapped_decoding,
- "vkGetPhysicalDeviceFeatures2KHR" : emit_global_state_wrapped_decoding,
- "vkGetPhysicalDeviceFormatProperties" : emit_global_state_wrapped_decoding,
- "vkGetPhysicalDeviceFormatProperties2" : emit_global_state_wrapped_decoding,
- "vkGetPhysicalDeviceFormatProperties2KHR" : emit_global_state_wrapped_decoding,
- "vkGetPhysicalDeviceImageFormatProperties" : emit_global_state_wrapped_decoding,
- "vkGetPhysicalDeviceImageFormatProperties2" : emit_global_state_wrapped_decoding,
- "vkGetPhysicalDeviceImageFormatProperties2KHR" : emit_global_state_wrapped_decoding,
- "vkGetPhysicalDeviceProperties" : emit_global_state_wrapped_decoding,
- "vkGetPhysicalDeviceProperties2" : emit_global_state_wrapped_decoding,
- "vkGetPhysicalDeviceProperties2KHR" : emit_global_state_wrapped_decoding,
-
- "vkGetPhysicalDeviceMemoryProperties" : emit_global_state_wrapped_decoding,
- "vkGetPhysicalDeviceMemoryProperties2" : emit_global_state_wrapped_decoding,
- "vkGetPhysicalDeviceMemoryProperties2KHR" : emit_global_state_wrapped_decoding,
-
- "vkGetPhysicalDeviceExternalSemaphoreProperties" : emit_global_state_wrapped_decoding,
- "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR" : emit_global_state_wrapped_decoding,
-
- "vkEnumerateDeviceExtensionProperties" : emit_global_state_wrapped_decoding,
-
- "vkCreateBuffer" : emit_global_state_wrapped_decoding,
- "vkDestroyBuffer" : emit_global_state_wrapped_decoding,
-
- "vkBindBufferMemory" : emit_global_state_wrapped_decoding,
- "vkBindBufferMemory2" : emit_global_state_wrapped_decoding,
- "vkBindBufferMemory2KHR" : emit_global_state_wrapped_decoding,
-
- "vkCreateDevice" : emit_global_state_wrapped_decoding,
- "vkGetDeviceQueue" : emit_global_state_wrapped_decoding,
- "vkDestroyDevice" : emit_global_state_wrapped_decoding,
-
- "vkGetDeviceQueue2" : emit_global_state_wrapped_decoding,
-
- "vkBindImageMemory" : emit_global_state_wrapped_decoding,
- "vkBindImageMemory2" : emit_global_state_wrapped_decoding,
- "vkBindImageMemory2KHR" : emit_global_state_wrapped_decoding,
-
- "vkCreateImage" : emit_global_state_wrapped_decoding,
- "vkCreateImageView" : emit_global_state_wrapped_decoding,
- "vkCreateSampler" : emit_global_state_wrapped_decoding,
- "vkDestroyImage" : emit_global_state_wrapped_decoding,
- "vkDestroyImageView" : emit_global_state_wrapped_decoding,
- "vkDestroySampler" : emit_global_state_wrapped_decoding,
- "vkCmdCopyBufferToImage" : emit_global_state_wrapped_decoding_with_context,
- "vkCmdCopyImage" : emit_global_state_wrapped_decoding,
- "vkCmdCopyImageToBuffer" : emit_global_state_wrapped_decoding,
- "vkGetImageMemoryRequirements" : emit_global_state_wrapped_decoding,
- "vkGetImageMemoryRequirements2" : emit_global_state_wrapped_decoding,
- "vkGetImageMemoryRequirements2KHR" : emit_global_state_wrapped_decoding,
- "vkGetBufferMemoryRequirements" : emit_global_state_wrapped_decoding,
- "vkGetBufferMemoryRequirements2": emit_global_state_wrapped_decoding,
- "vkGetBufferMemoryRequirements2KHR": emit_global_state_wrapped_decoding,
-
- "vkCreateDescriptorSetLayout" : emit_global_state_wrapped_decoding,
- "vkDestroyDescriptorSetLayout" : emit_global_state_wrapped_decoding,
- "vkCreateDescriptorPool" : emit_global_state_wrapped_decoding,
- "vkDestroyDescriptorPool" : emit_global_state_wrapped_decoding,
- "vkResetDescriptorPool" : emit_global_state_wrapped_decoding,
- "vkAllocateDescriptorSets" : emit_global_state_wrapped_decoding,
- "vkFreeDescriptorSets" : emit_global_state_wrapped_decoding,
-
- "vkUpdateDescriptorSets" : emit_global_state_wrapped_decoding,
-
- "vkCreateShaderModule": emit_global_state_wrapped_decoding,
- "vkDestroyShaderModule": emit_global_state_wrapped_decoding,
- "vkCreatePipelineCache": emit_global_state_wrapped_decoding,
- "vkDestroyPipelineCache": emit_global_state_wrapped_decoding,
- "vkCreateGraphicsPipelines": emit_global_state_wrapped_decoding,
- "vkDestroyPipeline": emit_global_state_wrapped_decoding,
-
- "vkAllocateMemory" : emit_global_state_wrapped_decoding,
- "vkFreeMemory" : emit_global_state_wrapped_decoding,
- "vkMapMemory" : emit_global_state_wrapped_decoding,
- "vkUnmapMemory" : emit_global_state_wrapped_decoding,
- "vkFlushMappedMemoryRanges" : decode_vkFlushMappedMemoryRanges,
- "vkInvalidateMappedMemoryRanges" : decode_vkInvalidateMappedMemoryRanges,
-
- "vkAllocateCommandBuffers" : emit_global_state_wrapped_decoding,
- "vkCmdExecuteCommands" : emit_global_state_wrapped_decoding,
- "vkQueueSubmit" : emit_global_state_wrapped_decoding,
- "vkQueueWaitIdle" : emit_global_state_wrapped_decoding,
- "vkBeginCommandBuffer" : emit_global_state_wrapped_decoding_with_context,
- "vkEndCommandBuffer" : emit_global_state_wrapped_decoding_with_context,
- "vkResetCommandBuffer" : emit_global_state_wrapped_decoding,
- "vkFreeCommandBuffers" : emit_global_state_wrapped_decoding,
- "vkCreateCommandPool" : emit_global_state_wrapped_decoding,
- "vkDestroyCommandPool" : emit_global_state_wrapped_decoding,
- "vkResetCommandPool" : emit_global_state_wrapped_decoding,
- "vkCmdPipelineBarrier" : emit_global_state_wrapped_decoding,
- "vkCmdBindPipeline" : emit_global_state_wrapped_decoding,
- "vkCmdBindDescriptorSets" : emit_global_state_wrapped_decoding,
-
- "vkCreateRenderPass" : emit_global_state_wrapped_decoding,
- "vkCreateRenderPass2" : emit_global_state_wrapped_decoding,
- "vkCreateRenderPass2KHR" : emit_global_state_wrapped_decoding,
- "vkDestroyRenderPass" : emit_global_state_wrapped_decoding,
- "vkCreateFramebuffer" : emit_global_state_wrapped_decoding,
- "vkDestroyFramebuffer" : emit_global_state_wrapped_decoding,
-
- "vkCreateSamplerYcbcrConversion": emit_global_state_wrapped_decoding,
- "vkDestroySamplerYcbcrConversion": emit_global_state_wrapped_decoding,
-
- # VK_ANDROID_native_buffer
- "vkGetSwapchainGrallocUsageANDROID" : emit_global_state_wrapped_decoding,
- "vkGetSwapchainGrallocUsage2ANDROID" : emit_global_state_wrapped_decoding,
- "vkAcquireImageANDROID" : emit_global_state_wrapped_decoding,
- "vkQueueSignalReleaseImageANDROID" : emit_global_state_wrapped_decoding,
-
- "vkCreateSemaphore" : emit_global_state_wrapped_decoding,
- "vkGetSemaphoreFdKHR" : emit_global_state_wrapped_decoding,
- "vkImportSemaphoreFdKHR" : emit_global_state_wrapped_decoding,
- "vkDestroySemaphore" : emit_global_state_wrapped_decoding,
-
- "vkCreateFence" : emit_global_state_wrapped_decoding,
- "vkResetFences" : emit_global_state_wrapped_decoding,
- "vkDestroyFence" : emit_global_state_wrapped_decoding,
-
- # VK_GOOGLE_gfxstream
- "vkFreeMemorySyncGOOGLE" : emit_global_state_wrapped_decoding,
- "vkMapMemoryIntoAddressSpaceGOOGLE" : emit_global_state_wrapped_decoding,
- "vkGetMemoryHostAddressInfoGOOGLE" : emit_global_state_wrapped_decoding,
- "vkGetBlobGOOGLE" : emit_global_state_wrapped_decoding,
-
- # Descriptor update templates
- "vkCreateDescriptorUpdateTemplate" : emit_global_state_wrapped_decoding,
- "vkCreateDescriptorUpdateTemplateKHR" : emit_global_state_wrapped_decoding,
- "vkDestroyDescriptorUpdateTemplate" : emit_global_state_wrapped_decoding,
- "vkDestroyDescriptorUpdateTemplateKHR" : emit_global_state_wrapped_decoding,
- "vkUpdateDescriptorSetWithTemplateSizedGOOGLE" : emit_global_state_wrapped_decoding,
-
- # VK_GOOGLE_gfxstream
- "vkBeginCommandBufferAsyncGOOGLE" : emit_global_state_wrapped_decoding_with_context,
- "vkEndCommandBufferAsyncGOOGLE" : emit_global_state_wrapped_decoding_with_context,
- "vkResetCommandBufferAsyncGOOGLE" : emit_global_state_wrapped_decoding,
- "vkCommandBufferHostSyncGOOGLE" : emit_global_state_wrapped_decoding,
- "vkCreateImageWithRequirementsGOOGLE" : emit_global_state_wrapped_decoding,
- "vkCreateBufferWithRequirementsGOOGLE" : emit_global_state_wrapped_decoding,
- "vkQueueHostSyncGOOGLE" : emit_global_state_wrapped_decoding,
- "vkQueueSubmitAsyncGOOGLE" : emit_global_state_wrapped_decoding,
- "vkQueueWaitIdleAsyncGOOGLE" : emit_global_state_wrapped_decoding,
- "vkQueueBindSparseAsyncGOOGLE" : emit_global_state_wrapped_decoding,
- "vkGetLinearImageLayoutGOOGLE" : emit_global_state_wrapped_decoding,
- "vkGetLinearImageLayout2GOOGLE" : emit_global_state_wrapped_decoding,
- "vkQueueFlushCommandsGOOGLE" : emit_global_state_wrapped_decoding_with_context,
- "vkQueueFlushCommandsFromAuxMemoryGOOGLE" : emit_global_state_wrapped_decoding_with_context,
- "vkQueueCommitDescriptorSetUpdatesGOOGLE" : emit_global_state_wrapped_decoding,
- "vkCollectDescriptorPoolIdsGOOGLE" : emit_global_state_wrapped_decoding,
- "vkQueueSignalReleaseImageANDROIDAsyncGOOGLE" : emit_global_state_wrapped_decoding,
-
- "vkQueueBindSparse" : emit_global_state_wrapped_decoding,
-
- # VK_KHR_xcb_surface
- "vkCreateXcbSurfaceKHR": decode_unsupported_api,
- "vkGetPhysicalDeviceXcbPresentationSupportKHR": decode_unsupported_api,
-
- # VK_EXT_metal_surface
- "vkCreateMetalSurfaceEXT": decode_unsupported_api,
-
- # VK_KHR_sampler_ycbcr_conversion
- "vkCreateSamplerYcbcrConversionKHR": emit_global_state_wrapped_decoding,
- "vkDestroySamplerYcbcrConversionKHR": emit_global_state_wrapped_decoding,
-}
-
-class VulkanDecoder(VulkanWrapperGenerator):
- def __init__(self, module, typeInfo):
- VulkanWrapperGenerator.__init__(self, module, typeInfo)
- self.typeInfo: VulkanTypeInfo = typeInfo
- self.cgen = CodeGen()
-
- def onBegin(self,):
- self.module.appendImpl(
- "#define MAX_PACKET_LENGTH %s\n" % MAX_PACKET_LENGTH)
- self.module.appendHeader(decoder_decl_preamble)
- self.module.appendImpl(decoder_impl_preamble)
-
- self.module.appendImpl(
- """
-size_t VkDecoder::Impl::decode(void* buf, size_t len, IOStream* ioStream,
- const ProcessResources* processResources,
- const VkDecoderContext& context)
-""")
-
- self.cgen.beginBlock() # function body
-
- self.cgen.stmt("const char* processName = context.processName")
- self.cgen.stmt("auto& gfx_logger = *context.gfxApiLogger")
- self.cgen.stmt("auto* healthMonitor = context.healthMonitor")
- self.cgen.stmt("auto& metricsLogger = *context.metricsLogger")
- self.cgen.stmt("if (len < 8) return 0")
- self.cgen.stmt("bool queueSubmitWithCommandsEnabled = feature_is_enabled(kFeature_VulkanQueueSubmitWithCommands)")
- self.cgen.stmt("unsigned char *ptr = (unsigned char *)buf")
- self.cgen.stmt("const unsigned char* const end = (const unsigned char*)buf + len")
-
- self.cgen.beginIf("m_forSnapshotLoad")
- self.cgen.stmt("ptr += m_state->setCreatedHandlesForSnapshotLoad(ptr)");
- self.cgen.endIf()
- self.cgen.line("while (end - ptr >= 8)")
- self.cgen.beginBlock() # while loop
-
- self.cgen.stmt("uint32_t opcode = *(uint32_t *)ptr")
- self.cgen.stmt("uint32_t packetLen = *(uint32_t *)(ptr + 4)")
- self.cgen.line("""
- // packetLen should be at least 8 (op code and packet length) and should not be excessively large
- if (packetLen < 8 || packetLen > MAX_PACKET_LENGTH) {
- WARN("Bad packet length %d detected, decode may fail", packetLen);
- metricsLogger.logMetricEvent(MetricEventBadPacketLength{ .len = packetLen });
- }
- """)
- self.cgen.stmt("if (end - ptr < packetLen) return ptr - (unsigned char*)buf")
- self.cgen.stmt("gfx_logger.record(ptr, std::min(size_t(packetLen + 8), size_t(end - ptr)))")
-
- self.cgen.stmt("stream()->setStream(ioStream)")
- self.cgen.stmt("VulkanStream* %s = stream()" % WRITE_STREAM)
- self.cgen.stmt("VulkanMemReadingStream* %s = readStream()" % READ_STREAM)
- self.cgen.stmt("%s->setBuf((uint8_t*)(ptr + 8))" % READ_STREAM)
- self.cgen.stmt("uint8_t* readStreamPtr = %s->getBuf(); uint8_t** readStreamPtrPtr = &readStreamPtr" % READ_STREAM)
- self.cgen.stmt("uint8_t* snapshotTraceBegin = %s->beginTrace()" % READ_STREAM)
- self.cgen.stmt("%s->setHandleMapping(&m_boxedHandleUnwrapMapping)" % READ_STREAM)
- self.cgen.line("""
- std::unique_ptr<EventHangMetadata::HangAnnotations> executionData =
- std::make_unique<EventHangMetadata::HangAnnotations>();
- if (healthMonitor) {
- executionData->insert(
- {{"packet_length", std::to_string(packetLen)},
- {"opcode", std::to_string(opcode)}});
- if (processName) {
- executionData->insert(
- {{"renderthread_guest_process", std::string(processName)}});
- }
- if (m_prevSeqno) {
- executionData->insert({{"previous_seqno", std::to_string(m_prevSeqno.value())}});
- }
- }
-
- std::atomic<uint32_t>* seqnoPtr = processResources->getSequenceNumberPtr();
-
- if (queueSubmitWithCommandsEnabled && ((opcode >= OP_vkFirst && opcode < OP_vkLast) || (opcode >= OP_vkFirst_old && opcode < OP_vkLast_old))) {
- uint32_t seqno;
- memcpy(&seqno, *readStreamPtrPtr, sizeof(uint32_t)); *readStreamPtrPtr += sizeof(uint32_t);
- if (healthMonitor) executionData->insert({{"seqno", std::to_string(seqno)}});
- if (m_prevSeqno && seqno == m_prevSeqno.value()) {
- WARN(
- "Seqno %d is the same as previously processed on thread %d. It might be a "
- "duplicate command.",
- seqno, getCurrentThreadId());
- metricsLogger.logMetricEvent(MetricEventDuplicateSequenceNum{ .opcode = opcode });
- }
- if (seqnoPtr && !m_forSnapshotLoad) {
- {
- auto seqnoWatchdog =
- WATCHDOG_BUILDER(healthMonitor,
- "RenderThread seqno loop")
- .setHangType(EventHangMetadata::HangType::kRenderThread)
- .setAnnotations(std::make_unique<EventHangMetadata::HangAnnotations>(*executionData))
- /* Data gathered if this hangs*/
- .setOnHangCallback([=]() {
- auto annotations = std::make_unique<EventHangMetadata::HangAnnotations>();
- annotations->insert({{"seqnoPtr", std::to_string(seqnoPtr->load(std::memory_order_seq_cst))}});
- return annotations;
- })
- .build();
- while ((seqno - seqnoPtr->load(std::memory_order_seq_cst) != 1)) {
- #if (defined(_MSC_VER) && (defined(_M_IX86) || defined(_M_X64)))
- _mm_pause();
- #elif (defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)))
- __asm__ __volatile__("pause;");
- #endif
- }
- m_prevSeqno = seqno;
- }
- }
- }
- """)
-
- self.cgen.line("""
- gfx_logger.recordCommandExecution();
- """)
-
- self.cgen.line("""
- auto executionWatchdog =
- WATCHDOG_BUILDER(healthMonitor, "RenderThread VkDecoder command execution")
- .setHangType(EventHangMetadata::HangType::kRenderThread)
- .setAnnotations(std::move(executionData))
- .build();
- """)
-
- self.cgen.stmt("auto vk = m_vk")
-
- self.cgen.line("switch (opcode)")
- self.cgen.beginBlock() # switch stmt
-
- self.module.appendImpl(self.cgen.swapCode())
-
- def onGenCmd(self, cmdinfo, name, alias):
- typeInfo = self.typeInfo
- cgen = self.cgen
- api: VulkanAPI = typeInfo.apis[name]
-
- cgen.line("case OP_%s:" % name)
- cgen.beginBlock()
- cgen.stmt("android::base::beginTrace(\"%s decode\")" % name)
-
- if api.name in custom_decodes.keys():
- custom_decodes[api.name](typeInfo, api, cgen)
- else:
- emit_default_decoding(typeInfo, api, cgen)
-
- cgen.stmt("android::base::endTrace()")
- cgen.stmt("break")
- cgen.endBlock()
- self.module.appendImpl(self.cgen.swapCode())
-
- def onEnd(self,):
- self.cgen.line("default:")
- self.cgen.beginBlock()
- self.cgen.stmt("m_pool.freeAll()")
- self.cgen.stmt("return ptr - (unsigned char *)buf")
- self.cgen.endBlock()
-
- self.cgen.endBlock() # switch stmt
-
- self.cgen.stmt("ptr += packetLen")
- self.cgen.endBlock() # while loop
-
- self.cgen.beginIf("m_forSnapshotLoad")
- self.cgen.stmt("m_state->clearCreatedHandlesForSnapshotLoad()");
- self.cgen.endIf()
-
- self.cgen.stmt("m_pool.freeAll()")
- self.cgen.stmt("return ptr - (unsigned char*)buf;")
- self.cgen.endBlock() # function body
- self.module.appendImpl(self.cgen.swapCode())
- self.module.appendImpl(decoder_impl_postamble)
diff --git a/codegen/vulkan/scripts/cereal/decodersnapshot.py b/codegen/vulkan/scripts/cereal/decodersnapshot.py
deleted file mode 100644
index 4ff97a1d..00000000
--- a/codegen/vulkan/scripts/cereal/decodersnapshot.py
+++ /dev/null
@@ -1,267 +0,0 @@
-from .common.codegen import CodeGen, VulkanWrapperGenerator, VulkanAPIWrapper
-from .common.vulkantypes import \
- VulkanAPI, makeVulkanTypeSimple, iterateVulkanType, DISPATCHABLE_HANDLE_TYPES, NON_DISPATCHABLE_HANDLE_TYPES
-
-from .transform import TransformCodegen, genTransformsForVulkanType
-
-from .wrapperdefs import API_PREFIX_MARSHAL
-from .wrapperdefs import API_PREFIX_UNMARSHAL
-from .wrapperdefs import VULKAN_STREAM_TYPE
-
-from copy import copy
-
-decoder_snapshot_decl_preamble = """
-
-namespace android {
-namespace base {
-class BumpPool;
-class Stream;
-} // namespace base {
-} // namespace android {
-
-class VkDecoderSnapshot {
-public:
- VkDecoderSnapshot();
- ~VkDecoderSnapshot();
-
- void save(android::base::Stream* stream);
- void load(android::base::Stream* stream, emugl::GfxApiLogger& gfx_logger,
- emugl::HealthMonitor<>* healthMonitor);
-"""
-
-decoder_snapshot_decl_postamble = """
-private:
- class Impl;
- std::unique_ptr<Impl> mImpl;
-
-};
-"""
-
-decoder_snapshot_impl_preamble ="""
-
-using namespace gfxstream::vk;
-using emugl::GfxApiLogger;
-using emugl::HealthMonitor;
-
-class VkDecoderSnapshot::Impl {
-public:
- Impl() { }
-
- void save(android::base::Stream* stream) {
- mReconstruction.save(stream);
- }
-
- void load(android::base::Stream* stream, GfxApiLogger& gfx_logger,
- HealthMonitor<>* healthMonitor) {
- mReconstruction.load(stream, gfx_logger, healthMonitor);
- }
-
-"""
-
-decoder_snapshot_impl_postamble = """
-private:
- android::base::Lock mLock;
- VkReconstruction mReconstruction;
-};
-
-VkDecoderSnapshot::VkDecoderSnapshot() :
- mImpl(new VkDecoderSnapshot::Impl()) { }
-
-void VkDecoderSnapshot::save(android::base::Stream* stream) {
- mImpl->save(stream);
-}
-
-void VkDecoderSnapshot::load(android::base::Stream* stream, GfxApiLogger& gfx_logger,
- HealthMonitor<>* healthMonitor) {
- mImpl->load(stream, gfx_logger, healthMonitor);
-}
-
-VkDecoderSnapshot::~VkDecoderSnapshot() = default;
-"""
-
-AUXILIARY_SNAPSHOT_API_BASE_PARAM_COUNT = 3
-
-AUXILIARY_SNAPSHOT_API_PARAM_NAMES = [
- "input_result",
-]
-
-# Vulkan handle dependencies.
-# (a, b): a depends on b
-SNAPSHOT_HANDLE_DEPENDENCIES = [
- # Dispatchable handle types
- ("VkCommandBuffer", "VkCommandPool"),
- ("VkCommandPool", "VkDevice"),
- ("VkQueue", "VkDevice"),
- ("VkDevice", "VkPhysicalDevice"),
- ("VkPhysicalDevice", "VkInstance")] + \
- list(map(lambda handleType : (handleType, "VkDevice"), NON_DISPATCHABLE_HANDLE_TYPES))
-
-handleDependenciesDict = dict(SNAPSHOT_HANDLE_DEPENDENCIES)
-
-def extract_deps_vkAllocateCommandBuffers(param, access, lenExpr, api, cgen):
- cgen.stmt("mReconstruction.addHandleDependency((const uint64_t*)%s, %s, (uint64_t)(uintptr_t)%s)" % \
- (access, lenExpr, "unboxed_to_boxed_non_dispatchable_VkCommandPool(pAllocateInfo->commandPool)"))
-
-specialCaseDependencyExtractors = {
- "vkAllocateCommandBuffers" : extract_deps_vkAllocateCommandBuffers,
-}
-
-apiSequences = {
- "vkAllocateMemory" : ["vkAllocateMemory", "vkMapMemoryIntoAddressSpaceGOOGLE"]
-}
-
-apiModifies = {
- "vkMapMemoryIntoAddressSpaceGOOGLE" : ["memory"],
-}
-
-def is_modify_operation(api, param):
- if api.name in apiModifies:
- if param.paramName in apiModifies[api.name]:
- return True
- return False
-
-def emit_impl(typeInfo, api, cgen):
-
- cgen.line("// TODO: Implement")
-
- for p in api.parameters:
- if not (p.isHandleType):
- continue
-
- lenExpr = cgen.generalLengthAccess(p)
- lenAccessGuard = cgen.generalLengthAccessGuard(p)
-
- if lenExpr is None:
- lenExpr = "1"
-
- if p.pointerIndirectionLevels > 0:
- access = p.paramName
- else:
- access = "(&%s)" % p.paramName
-
- if p.isCreatedBy(api):
- cgen.stmt("android::base::AutoLock lock(mLock)")
- cgen.line("// %s create" % p.paramName)
- cgen.stmt("mReconstruction.addHandles((const uint64_t*)%s, %s)" % (access, lenExpr));
-
- if p.typeName in handleDependenciesDict:
- dependsOnType = handleDependenciesDict[p.typeName];
- for p2 in api.parameters:
- if p2.typeName == dependsOnType:
- cgen.stmt("mReconstruction.addHandleDependency((const uint64_t*)%s, %s, (uint64_t)(uintptr_t)%s)" % (access, lenExpr, p2.paramName))
- if api.name in specialCaseDependencyExtractors:
- specialCaseDependencyExtractors[api.name](p, access, lenExpr, api, cgen)
-
- cgen.stmt("if (!%s) return" % access)
- cgen.stmt("auto apiHandle = mReconstruction.createApiInfo()")
- cgen.stmt("auto apiInfo = mReconstruction.getApiInfo(apiHandle)")
- cgen.stmt("mReconstruction.setApiTrace(apiInfo, OP_%s, snapshotTraceBegin, snapshotTraceBytes)" % api.name)
- if lenAccessGuard is not None:
- cgen.beginIf(lenAccessGuard)
- cgen.stmt("mReconstruction.forEachHandleAddApi((const uint64_t*)%s, %s, apiHandle)" % (access, lenExpr))
- cgen.stmt("mReconstruction.setCreatedHandlesForApi(apiHandle, (const uint64_t*)%s, %s)" % (access, lenExpr))
- if lenAccessGuard is not None:
- cgen.endIf()
-
- if p.isDestroyedBy(api):
- cgen.stmt("android::base::AutoLock lock(mLock)")
- cgen.line("// %s destroy" % p.paramName)
- if lenAccessGuard is not None:
- cgen.beginIf(lenAccessGuard)
- cgen.stmt("mReconstruction.removeHandles((const uint64_t*)%s, %s)" % (access, lenExpr));
- if lenAccessGuard is not None:
- cgen.endIf()
-
- if is_modify_operation(api, p):
- cgen.stmt("android::base::AutoLock lock(mLock)")
- cgen.line("// %s modify" % p.paramName)
- cgen.stmt("auto apiHandle = mReconstruction.createApiInfo()")
- cgen.stmt("auto apiInfo = mReconstruction.getApiInfo(apiHandle)")
- cgen.stmt("mReconstruction.setApiTrace(apiInfo, OP_%s, snapshotTraceBegin, snapshotTraceBytes)" % api.name)
- if lenAccessGuard is not None:
- cgen.beginIf(lenAccessGuard)
- cgen.beginFor("uint32_t i = 0", "i < %s" % lenExpr, "++i")
- if p.isNonDispatchableHandleType():
- cgen.stmt("%s boxed = unboxed_to_boxed_non_dispatchable_%s(%s[i])" % (p.typeName, p.typeName, access))
- else:
- cgen.stmt("%s boxed = unboxed_to_boxed_%s(%s[i])" % (p.typeName, p.typeName, access))
- cgen.stmt("mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle)")
- cgen.endFor()
- if lenAccessGuard is not None:
- cgen.endIf()
-
-def emit_passthrough_to_impl(typeInfo, api, cgen):
- cgen.vkApiCall(api, customPrefix = "mImpl->")
-
-class VulkanDecoderSnapshot(VulkanWrapperGenerator):
- def __init__(self, module, typeInfo):
- VulkanWrapperGenerator.__init__(self, module, typeInfo)
-
- self.typeInfo = typeInfo
-
- self.cgenHeader = CodeGen()
- self.cgenHeader.incrIndent()
-
- self.cgenImpl = CodeGen()
-
- self.currentFeature = None
-
- self.feature_apis = []
-
- def onBegin(self,):
- self.module.appendHeader(decoder_snapshot_decl_preamble)
- self.module.appendImpl(decoder_snapshot_impl_preamble)
-
- def onBeginFeature(self, featureName, featureType):
- VulkanWrapperGenerator.onBeginFeature(self, featureName, featureType)
- self.currentFeature = featureName
-
- def onGenCmd(self, cmdinfo, name, alias):
- VulkanWrapperGenerator.onGenCmd(self, cmdinfo, name, alias)
-
- api = self.typeInfo.apis[name]
-
- additionalParams = [ \
- makeVulkanTypeSimple(True, "uint8_t", 1, "snapshotTraceBegin"),
- makeVulkanTypeSimple(False, "size_t", 0, "snapshotTraceBytes"),
- makeVulkanTypeSimple(False, "android::base::BumpPool", 1, "pool"),]
-
- if api.retType.typeName != "void":
- additionalParams.append( \
- makeVulkanTypeSimple(False, api.retType.typeName, 0, "input_result"))
-
- apiForSnapshot = \
- api.withCustomParameters( \
- additionalParams + \
- api.parameters).withCustomReturnType( \
- makeVulkanTypeSimple(False, "void", 0, "void"))
-
- self.feature_apis.append((self.currentFeature, apiForSnapshot))
-
- self.cgenHeader.stmt(self.cgenHeader.makeFuncProto(apiForSnapshot))
- self.module.appendHeader(self.cgenHeader.swapCode())
-
- self.cgenImpl.emitFuncImpl( \
- apiForSnapshot, lambda cgen: emit_impl(self.typeInfo, apiForSnapshot, cgen))
- self.module.appendImpl(self.cgenImpl.swapCode())
-
- def onEnd(self,):
- self.module.appendHeader(decoder_snapshot_decl_postamble)
- self.module.appendImpl(decoder_snapshot_impl_postamble)
- self.cgenHeader.decrIndent()
-
- for feature, api in self.feature_apis:
- if feature is not None:
- self.cgenImpl.line("#ifdef %s" % feature)
-
- apiImplShell = \
- api.withModifiedName("VkDecoderSnapshot::" + api.name)
-
- self.cgenImpl.emitFuncImpl( \
- apiImplShell, lambda cgen: emit_passthrough_to_impl(self.typeInfo, api, cgen))
-
- if feature is not None:
- self.cgenImpl.line("#endif")
-
- self.module.appendImpl(self.cgenImpl.swapCode())
-
diff --git a/codegen/vulkan/scripts/cereal/deepcopy.py b/codegen/vulkan/scripts/cereal/deepcopy.py
deleted file mode 100644
index 52842e99..00000000
--- a/codegen/vulkan/scripts/cereal/deepcopy.py
+++ /dev/null
@@ -1,383 +0,0 @@
-# Copyright (c) 2018 The Android Open Source Project
-# Copyright (c) 2018 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from .common.codegen import CodeGen
-from .common.vulkantypes import \
- VulkanAPI, makeVulkanTypeSimple, iterateVulkanType, VulkanTypeIterator
-
-from .wrapperdefs import VulkanWrapperGenerator
-from .wrapperdefs import STRUCT_EXTENSION_PARAM, STRUCT_EXTENSION_PARAM_FOR_WRITE, EXTENSION_SIZE_API_NAME
-
-class DeepcopyCodegen(VulkanTypeIterator):
- def __init__(self, cgen, inputVars, poolVarName, rootVarName, prefix, skipValues=False):
- self.cgen = cgen
- self.inputVars = inputVars
- self.prefix = prefix
- self.poolVarName = poolVarName
- self.rootVarName = rootVarName
- self.skipValues = skipValues
-
- def makeAccess(varName, asPtr = True):
- return lambda t: self.cgen.generalAccess(t, parentVarName = varName, asPtr = asPtr)
-
- def makeLengthAccess(varName):
- return lambda t: self.cgen.generalLengthAccess(t, parentVarName = varName)
-
- def makeLengthAccessGuard(varName):
- return lambda t: self.cgen.generalLengthAccessGuard(t, parentVarName=varName)
-
- self.exprAccessorLhs = makeAccess(self.inputVars[0])
- self.exprAccessorRhs = makeAccess(self.inputVars[1])
-
- self.exprAccessorValueLhs = makeAccess(self.inputVars[0], asPtr = False)
- self.exprAccessorValueRhs = makeAccess(self.inputVars[1], asPtr = False)
-
- self.lenAccessorLhs = makeLengthAccess(self.inputVars[0])
- self.lenAccessorRhs = makeLengthAccess(self.inputVars[1])
-
- self.lenAccessorGuardLhs = makeLengthAccessGuard(self.inputVars[0])
- self.lenAccessorGuardRhs = makeLengthAccessGuard(self.inputVars[1])
-
- self.checked = False
-
- def needSkip(self, vulkanType):
- return False
-
- def makeCastExpr(self, vulkanType):
- return "(%s)" % (
- self.cgen.makeCTypeDecl(vulkanType, useParamName=False))
-
- def makeNonConstCastForCopy(self, access, vulkanType):
- if vulkanType.staticArrExpr:
- casted = "%s(%s)" % (self.makeCastExpr(vulkanType.getForAddressAccess().getForNonConstAccess()), access)
- elif vulkanType.accessibleAsPointer():
- casted = "%s(%s)" % (self.makeCastExpr(vulkanType.getForNonConstAccess()), access)
- else:
- casted = "%s(%s)" % (self.makeCastExpr(vulkanType.getForAddressAccess().getForNonConstAccess()), access)
- return casted
-
- def makeAllocBytesExpr(self, lenAccess, vulkanType):
- sizeof = self.cgen.sizeofExpr( \
- vulkanType.getForValueAccess())
- if lenAccess:
- bytesExpr = "%s * %s" % (lenAccess, sizeof)
- else:
- bytesExpr = sizeof
-
- return bytesExpr
-
- def onCheck(self, vulkanType):
- pass
-
- def endCheck(self, vulkanType):
- pass
-
- def onCompoundType(self, vulkanType):
-
- if self.needSkip(vulkanType):
- self.cgen.line("// TODO: Unsupported : %s" %
- self.cgen.makeCTypeDecl(vulkanType))
- return
-
- accessLhs = self.exprAccessorLhs(vulkanType)
- accessRhs = self.exprAccessorRhs(vulkanType)
-
- lenAccessLhs = self.lenAccessorLhs(vulkanType)
- lenAccessRhs = self.lenAccessorRhs(vulkanType)
-
- lenAccessorGuardLhs = self.lenAccessorGuardLhs(vulkanType)
- lenAccessorGuardRhs = self.lenAccessorGuardRhs(vulkanType)
-
- isPtr = vulkanType.pointerIndirectionLevels > 0
-
- if lenAccessorGuardLhs is not None:
- self.cgen.beginIf(lenAccessorGuardLhs)
-
- if isPtr:
- self.cgen.stmt("%s = nullptr" % accessRhs)
- self.cgen.beginIf(accessLhs)
-
- self.cgen.stmt( \
- "%s = %s%s->alloc(%s)" % \
- (accessRhs, self.makeCastExpr(vulkanType.getForNonConstAccess()),
- self.poolVarName, self.makeAllocBytesExpr(lenAccessLhs, vulkanType)))
-
- if lenAccessLhs is not None:
-
- loopVar = "i"
- accessLhs = "%s + %s" % (accessLhs, loopVar)
- forInit = "uint32_t %s = 0" % loopVar
- forCond = "%s < (uint32_t)%s" % (loopVar, lenAccessLhs)
- forIncr = "++%s" % loopVar
-
- if isPtr:
- # Avoid generating a self-assign.
- if lenAccessRhs != lenAccessLhs:
- self.cgen.stmt("%s = %s" % (lenAccessRhs, lenAccessLhs))
-
- accessRhs = "%s + %s" % (accessRhs, loopVar)
- self.cgen.beginFor(forInit, forCond, forIncr)
-
-
- accessRhsCasted = self.makeNonConstCastForCopy(accessRhs, vulkanType)
-
- self.cgen.funcCall(None, self.prefix + vulkanType.typeName,
- [self.poolVarName, self.rootVarName, accessLhs, accessRhsCasted])
-
- if lenAccessLhs is not None:
- self.cgen.endFor()
-
- if isPtr:
- self.cgen.endIf()
-
- if lenAccessorGuardLhs is not None:
- self.cgen.endIf()
-
- def onString(self, vulkanType):
- accessLhs = self.exprAccessorLhs(vulkanType)
- accessRhs = self.exprAccessorRhs(vulkanType)
-
- self.cgen.stmt("%s = nullptr" % accessRhs)
- self.cgen.beginIf(accessLhs)
-
- self.cgen.stmt( \
- "%s = %s->strDup(%s)" % \
- (accessRhs,
- self.poolVarName,
- accessLhs))
-
- self.cgen.endIf()
-
- def onStringArray(self, vulkanType):
- accessLhs = self.exprAccessorLhs(vulkanType)
- accessRhs = self.exprAccessorRhs(vulkanType)
-
- lenAccessLhs = self.lenAccessorLhs(vulkanType)
-
- self.cgen.stmt("%s = nullptr" % accessRhs)
- self.cgen.beginIf("%s && %s" % (accessLhs, lenAccessLhs))
-
- self.cgen.stmt( \
- "%s = %s->strDupArray(%s, %s)" % \
- (accessRhs,
- self.poolVarName,
- accessLhs,
- lenAccessLhs))
-
- self.cgen.endIf()
-
- def onStaticArr(self, vulkanType):
- accessLhs = self.exprAccessorValueLhs(vulkanType)
- accessRhs = self.exprAccessorValueRhs(vulkanType)
-
- lenAccessLhs = self.lenAccessorLhs(vulkanType)
-
- bytesExpr = self.makeAllocBytesExpr(lenAccessLhs, vulkanType)
- self.cgen.stmt("memcpy(%s, %s, %s)" % (accessRhs, accessLhs, bytesExpr))
-
- def onStructExtension(self, vulkanType):
-
- lhs = self.exprAccessorLhs(vulkanType)
- rhs = self.exprAccessorRhs(vulkanType)
-
- rhsExpr = "(%s)(%s)" % ("void*", rhs)
-
- nextVar = "from_%s" % vulkanType.paramName
- sizeVar = "%s_size" % vulkanType.paramName
-
- self.cgen.beginIf("%s == VK_STRUCTURE_TYPE_MAX_ENUM" %
- self.rootVarName)
- self.cgen.stmt("%s = from->sType" % self.rootVarName)
- self.cgen.endIf()
-
- self.cgen.stmt("const void* %s = %s" % (nextVar, self.inputVars[0]))
- self.cgen.stmt("size_t %s = 0u" % sizeVar)
- self.cgen.beginWhile("!%s && %s" % (sizeVar, nextVar))
- self.cgen.stmt("%s = static_cast<const vk_struct_common*>(%s)->%s" % (
- nextVar, nextVar, vulkanType.paramName
- ))
- self.cgen.stmt("%s = %s(%s, %s)" % (
- sizeVar, EXTENSION_SIZE_API_NAME, self.rootVarName, nextVar))
- self.cgen.endWhile()
-
- self.cgen.stmt("%s = nullptr" % rhs)
-
- self.cgen.beginIf(sizeVar)
-
- self.cgen.stmt( \
- "%s = %s%s->alloc(%s)" % \
- (rhs, self.makeCastExpr(vulkanType.getForNonConstAccess()), self.poolVarName, sizeVar))
-
- self.cgen.funcCall(None, self.prefix + "extension_struct",
- [self.poolVarName, self.rootVarName, nextVar, rhsExpr])
-
- self.cgen.endIf()
-
- def onPointer(self, vulkanType):
-
- accessLhs = self.exprAccessorLhs(vulkanType)
- accessRhs = self.exprAccessorRhs(vulkanType)
-
- if self.needSkip(vulkanType):
- self.cgen.stmt("%s = nullptr" % accessRhs)
- return
-
- lenAccessLhs = self.lenAccessorLhs(vulkanType)
-
- self.cgen.stmt("%s = nullptr" % accessRhs)
- self.cgen.beginIf(accessLhs)
-
- bytesExpr = self.makeAllocBytesExpr(lenAccessLhs, vulkanType)
-
- self.cgen.stmt( \
- "%s = %s%s->dupArray(%s, %s)" % \
- (accessRhs,
- self.makeCastExpr(vulkanType.getForNonConstAccess()),
- self.poolVarName,
- accessLhs,
- bytesExpr))
-
- self.cgen.endIf()
-
- def onValue(self, vulkanType):
- if self.skipValues:
- return
-
- accessLhs = self.exprAccessorValueLhs(vulkanType)
- accessRhs = self.exprAccessorValueRhs(vulkanType)
-
- self.cgen.stmt("%s = %s" % (accessRhs, accessLhs))
-
-class VulkanDeepcopy(VulkanWrapperGenerator):
-
- def __init__(self, module, typeInfo):
- VulkanWrapperGenerator.__init__(self, module, typeInfo)
-
- self.codegen = CodeGen()
-
- self.deepcopyPrefix = "deepcopy_"
- self.deepcopyVars = ["from", "to"]
- self.deepcopyAllocatorVarName = "alloc"
- self.deepcopyAllocatorParam = \
- makeVulkanTypeSimple(False, "Allocator", 1,
- self.deepcopyAllocatorVarName)
- self.deepcopyRootVarName = "rootType"
- self.deepcopyRootParam = \
- makeVulkanTypeSimple(False, "VkStructureType",
- 0, self.deepcopyRootVarName)
- self.voidType = makeVulkanTypeSimple(False, "void", 0)
-
- self.deepcopyCodegen = \
- DeepcopyCodegen(
- None,
- self.deepcopyVars,
- self.deepcopyAllocatorVarName,
- self.deepcopyRootVarName,
- self.deepcopyPrefix,
- skipValues=True)
-
- self.knownDefs = {}
-
- self.extensionDeepcopyPrototype = \
- VulkanAPI(self.deepcopyPrefix + "extension_struct",
- self.voidType,
- [self.deepcopyAllocatorParam,
- self.deepcopyRootParam,
- STRUCT_EXTENSION_PARAM,
- STRUCT_EXTENSION_PARAM_FOR_WRITE])
-
- def onBegin(self,):
- VulkanWrapperGenerator.onBegin(self)
- self.module.appendImpl(self.codegen.makeFuncDecl(
- self.extensionDeepcopyPrototype))
-
- def onGenType(self, typeXml, name, alias):
- VulkanWrapperGenerator.onGenType(self, typeXml, name, alias)
-
- if name in self.knownDefs:
- return
-
- category = self.typeInfo.categoryOf(name)
-
- if category in ["struct", "union"] and alias:
- self.module.appendHeader(
- self.codegen.makeFuncAlias(self.deepcopyPrefix + name,
- self.deepcopyPrefix + alias))
-
- if category in ["struct", "union"] and not alias:
-
- structInfo = self.typeInfo.structs[name]
-
- typeFromName = \
- lambda varname: \
- makeVulkanTypeSimple(varname == "from", name, 1, varname)
-
- deepcopyParams = \
- [self.deepcopyAllocatorParam, self.deepcopyRootParam] + \
- list(map(typeFromName, self.deepcopyVars))
-
- deepcopyPrototype = \
- VulkanAPI(self.deepcopyPrefix + name,
- self.voidType,
- deepcopyParams)
-
- def structDeepcopyDef(cgen):
- self.deepcopyCodegen.cgen = cgen
- canSimplyAssign = True
- for member in structInfo.members:
- if not member.isSimpleValueType(self.typeInfo):
- canSimplyAssign = False
-
- cgen.stmt("(void)%s" % self.deepcopyAllocatorVarName)
- cgen.stmt("(void)%s" % self.deepcopyRootVarName)
- cgen.stmt("*to = *from")
- if canSimplyAssign:
- pass
- else:
- for member in structInfo.members:
- iterateVulkanType(self.typeInfo, member,
- self.deepcopyCodegen)
-
- self.module.appendHeader(
- self.codegen.makeFuncDecl(deepcopyPrototype))
- self.module.appendImpl(
- self.codegen.makeFuncImpl(deepcopyPrototype, structDeepcopyDef))
-
- def onGenCmd(self, cmdinfo, name, alias):
- VulkanWrapperGenerator.onGenCmd(self, cmdinfo, name, alias)
-
- def onEnd(self,):
- VulkanWrapperGenerator.onEnd(self)
-
- def deepcopyDstExpr(cgen, typeName):
- return cgen.makeReinterpretCast( \
- STRUCT_EXTENSION_PARAM_FOR_WRITE.paramName,
- typeName, const=False)
-
- def forEachExtensionDeepcopy(ext, castedAccess, cgen):
- cgen.funcCall(None, self.deepcopyPrefix + ext.name,
- [self.deepcopyAllocatorVarName,
- self.deepcopyRootVarName,
- castedAccess, deepcopyDstExpr(cgen, ext.name)])
-
- self.module.appendImpl(
- self.codegen.makeFuncImpl(
- self.extensionDeepcopyPrototype,
- lambda cgen: self.emitForEachStructExtension(
- cgen,
- self.voidType,
- STRUCT_EXTENSION_PARAM,
- forEachExtensionDeepcopy,
- rootTypeVar=self.deepcopyRootParam)))
diff --git a/codegen/vulkan/scripts/cereal/dispatch.py b/codegen/vulkan/scripts/cereal/dispatch.py
deleted file mode 100644
index 42cba8ca..00000000
--- a/codegen/vulkan/scripts/cereal/dispatch.py
+++ /dev/null
@@ -1,499 +0,0 @@
-# Copyright (c) 2018 The Android Open Source Project
-# Copyright (c) 2018 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from .common.codegen import CodeGen
-from .common.vulkantypes import \
- VulkanAPI, makeVulkanTypeSimple, iterateVulkanType
-
-from .wrapperdefs import VulkanWrapperGenerator
-
-# No real good way to automatically infer the most important Vulkan API
-# functions as it relates to which getProcAddress function to use, plus
-# we might want to control which function to use depending on our
-# performance needs.
-
-# This is based on the minimum set of functions needed to be directly
-# queried with dlsym and not returning null.
-getProcAddrFuncs = [
- "vkGetInstanceProcAddr",
- "vkDestroyInstance",
- "vkEnumeratePhysicalDevices",
- "vkGetPhysicalDeviceFeatures",
- "vkGetPhysicalDeviceFormatProperties",
- "vkGetPhysicalDeviceImageFormatProperties",
- "vkGetPhysicalDeviceProperties",
- "vkGetPhysicalDeviceQueueFamilyProperties",
- "vkGetPhysicalDeviceMemoryProperties",
- "vkCreateDevice",
- "vkDestroyDevice",
- "vkEnumerateDeviceExtensionProperties",
- "vkEnumerateDeviceLayerProperties",
-]
-
-# Some methods can only be found using dlsym() while we cannot get the function
-# address using vkGetInstProcAddr() or vkGetDeviceProcAddr(). These function
-# pointers should only be initialized when setting up the dispatch from system
-# loader.
-getProcAddrOnlyFuncs = [
- "vkGetMTLDeviceMVK",
- "vkSetMTLTextureMVK",
- "vkGetMTLTextureMVK",
- "vkGetMTLBufferMVK",
- "vkUseIOSurfaceMVK",
- "vkGetIOSurfaceMVK",
-]
-
-getInstanceProcAddrNoInstanceFuncs = [
- "vkCreateInstance",
- "vkEnumerateInstanceExtensionProperties",
- "vkEnumerateInstanceLayerProperties",
-]
-
-getInstanceProcAddrFuncs = [
- "vkGetDeviceProcAddr",
- "vkCreateSwapchainKHR",
- "vkDestroySwapchainKHR",
- "vkGetSwapchainImagesKHR",
- "vkAcquireNextImageKHR",
- "vkQueuePresentKHR",
- "vkCreateMacOSSurfaceMVK",
- "vkCreateWin32SurfaceKHR",
- "vkGetPhysicalDeviceWin32PresentationSupportKHR",
- "vkCreateXlibSurfaceKHR",
- "vkGetPhysicalDeviceXlibPresentationSupportKHR",
- "vkCreateXcbSurfaceKHR",
- "vkGetPhysicalDeviceXcbPresentationSupportKHR",
- "vkGetPhysicalDeviceSparseImageFormatProperties",
- "vkEnumerateInstanceVersion",
- "vkEnumeratePhysicalDeviceGroups",
- "vkGetPhysicalDeviceFeatures2",
- "vkGetPhysicalDeviceProperties2",
- "vkGetPhysicalDeviceFormatProperties2",
- "vkGetPhysicalDeviceImageFormatProperties2",
- "vkGetPhysicalDeviceQueueFamilyProperties2",
- "vkGetPhysicalDeviceMemoryProperties2",
- "vkGetPhysicalDeviceSparseImageFormatProperties2",
- "vkGetPhysicalDeviceExternalBufferProperties",
- "vkGetPhysicalDeviceExternalFenceProperties",
- "vkGetPhysicalDeviceExternalSemaphoreProperties",
-]
-
-# Implicitly, everything else is going to be obtained
-# with vkGetDeviceProcAddr,
-# unless it has instance in the arg.
-
-def isGetProcAddressAPI(vulkanApi):
- return vulkanApi.name in getProcAddrFuncs
-
-def isGetProcAddressOnlyAPI(vulkanApi):
- return vulkanApi.name in getProcAddrOnlyFuncs
-
-def isGetInstanceProcAddressNoInstanceAPI(vulkanApi):
- return vulkanApi.name in getInstanceProcAddrNoInstanceFuncs
-
-def isGetInstanceProcAddressAPI(vulkanApi):
- if vulkanApi.name in getInstanceProcAddrFuncs:
- return True
-
- if vulkanApi.parameters[0].typeName == "VkInstance":
- return True
-
- return False
-
-def isGetDeviceProcAddressAPI(vulkanApi):
- if isGetProcAddressAPI(vulkanApi):
- return False
-
- if isGetProcAddressOnlyAPI(vulkanApi):
- return False
-
- if isGetInstanceProcAddressAPI(vulkanApi):
- return False
-
- return True
-
-def inferProcAddressFuncType(vulkanApi):
- if isGetProcAddressAPI(vulkanApi):
- return "global"
- if isGetProcAddressOnlyAPI(vulkanApi):
- return "global-only"
- if isGetInstanceProcAddressNoInstanceAPI(vulkanApi):
- return "global-instance"
- if isGetInstanceProcAddressAPI(vulkanApi):
- return "instance"
- return "device"
-
-# VulkanDispatch defines a struct, VulkanDispatch,
-# that is populated by function pointers from the Vulkan
-# loader. No attempt is made to do something different
-# for instance vs device functions.
-class VulkanDispatch(VulkanWrapperGenerator):
- def __init__(self, module, typeInfo):
- VulkanWrapperGenerator.__init__(self, module, typeInfo)
-
- self.apisToGet = {}
-
- self.cgenHeader = CodeGen()
- self.cgenImpl = CodeGen()
- self.typeInfo = typeInfo
-
- self.currentFeature = ""
- self.featureForCodegen = ""
-
- def onBegin(self):
-
- # The first way is to use just the loader to get symbols. This doesn't
- # necessarily work with extensions because at that point the dispatch
- # table needs to be specific to a particular Vulkan instance or device.
-
- self.cgenHeader.line("""
-void init_vulkan_dispatch_from_system_loader(
- DlOpenFunc dlOpenFunc,
- DlSymFunc dlSymFunc,
- VulkanDispatch* dispatch_out);
-""")
-
- # The second way is to initialize the table from a given Vulkan
- # instance or device. Provided the instance or device was created with
- # the right extensions, we can obtain function pointers to extension
- # functions this way.
-
- self.cgenHeader.line("""
-void init_vulkan_dispatch_from_instance(
- VulkanDispatch* vk,
- VkInstance instance,
- VulkanDispatch* dispatch_out);
-""")
- self.cgenHeader.line("""
-void init_vulkan_dispatch_from_device(
- VulkanDispatch* vk,
- VkDevice device,
- VulkanDispatch* dispatch_out);
-""")
-
- # After populating a VulkanDispatch with the above methods,
- # it can be useful to check whether the Vulkan 1.0 or 1.1 methods
- # are all there.
- def emit_feature_check_decl(cgen, tag, featureToCheck):
- cgen.line("""
-bool vulkan_dispatch_check_%s_%s(
- const VulkanDispatch* vk);
-""" % (tag, featureToCheck))
-
- emit_feature_check_decl(self.cgenHeader, "instance", "VK_VERSION_1_0")
- emit_feature_check_decl(self.cgenHeader, "instance", "VK_VERSION_1_1")
- emit_feature_check_decl(self.cgenHeader, "device", "VK_VERSION_1_0")
- emit_feature_check_decl(self.cgenHeader, "device", "VK_VERSION_1_1")
-
- self.cgenHeader.line("struct VulkanDispatch {")
- self.module.appendHeader(self.cgenHeader.swapCode())
-
- def syncFeatureQuiet(self, cgen, feature):
- if self.featureForCodegen != feature:
- if feature == "":
- self.featureForCodegen = feature
- return
-
- self.featureForCodegen = feature
-
- def syncFeature(self, cgen, feature):
- if self.featureForCodegen != feature:
- if feature == "":
- cgen.leftline("#endif")
- self.featureForCodegen = feature
- return
-
- if self.featureForCodegen != "":
- cgen.leftline("#endif")
-
- cgen.leftline("#ifdef %s" % feature)
- self.featureForCodegen = feature
-
- def makeDlsymCall(self, cgen, apiname, typedecl):
- cgen.stmt( \
- "out->%s = (%s)dlSymFunc(lib, \"%s\")" % \
- (apiname, typedecl, apiname))
-
- def makeGetInstanceProcAddrCall(self, cgen, dispatch, instance, apiname, typedecl):
- cgen.stmt( \
- "out->%s = (%s)%s->vkGetInstanceProcAddr(%s, \"%s\")" % \
- (apiname, typedecl, dispatch, instance, apiname))
-
- def makeGetDeviceProcAddrCall(self, cgen, dispatch, device, apiname, typedecl):
- cgen.stmt( \
- "out->%s = (%s)%s->vkGetDeviceProcAddr(%s, \"%s\")" % \
- (apiname, typedecl, dispatch, device, apiname))
-
- def onEnd(self):
- self.cgenHeader.line("};")
- self.module.appendHeader(self.cgenHeader.swapCode())
-
- # Getting dispatch tables from the loader
- self.cgenImpl.line("""
-void init_vulkan_dispatch_from_system_loader(
- DlOpenFunc dlOpenFunc,
- DlSymFunc dlSymFunc,
- VulkanDispatch* out)""")
-
- self.cgenImpl.beginBlock()
-
- self.cgenImpl.stmt("memset(out, 0x0, sizeof(VulkanDispatch))")
-
- self.cgenImpl.stmt("void* lib = dlOpenFunc()")
- self.cgenImpl.stmt("if (!lib) return")
-
- apis = \
- self.apisToGet["global"] + \
- self.apisToGet["global-instance"] + \
- self.apisToGet["instance"] + \
- self.apisToGet["device"] + \
- self.apisToGet["global-only"]
-
- for vulkanApi, typeDecl, feature in apis:
- self.syncFeature(self.cgenImpl, feature)
- self.makeDlsymCall(self.cgenImpl, vulkanApi.name, typeDecl)
-
- self.syncFeature(self.cgenImpl, "")
- self.cgenImpl.endBlock()
-
- # Getting instance dispatch tables
- self.cgenImpl.line("""
-void init_vulkan_dispatch_from_instance(
- VulkanDispatch* vk,
- VkInstance instance,
- VulkanDispatch* out)""")
-
- self.cgenImpl.beginBlock()
-
- self.cgenImpl.stmt("memset(out, 0x0, sizeof(VulkanDispatch))")
-
- apis = \
- self.apisToGet["global"] + \
- self.apisToGet["global-instance"] + \
- self.apisToGet["instance"] + \
- self.apisToGet["device"]
-
- for vulkanApi, typeDecl, feature in apis:
- self.syncFeature(self.cgenImpl, feature)
- self.makeGetInstanceProcAddrCall(
- self.cgenImpl, "vk", "instance", vulkanApi.name, typeDecl)
-
- self.syncFeature(self.cgenImpl, "")
- self.cgenImpl.endBlock()
-
- # Getting device dispatch tables
- self.cgenImpl.line("""
-void init_vulkan_dispatch_from_device(
- VulkanDispatch* vk,
- VkDevice device,
- VulkanDispatch* out)""")
-
- self.cgenImpl.beginBlock()
-
- self.cgenImpl.stmt("memset(out, 0x0, sizeof(VulkanDispatch))")
-
- apis = \
- self.apisToGet["global"] + \
- self.apisToGet["global-instance"] + \
- self.apisToGet["instance"] + \
- self.apisToGet["device"]
-
- for vulkanApi, typeDecl, feature in apis:
- self.syncFeature(self.cgenImpl, feature)
- self.makeGetDeviceProcAddrCall(
- self.cgenImpl, "vk", "device", vulkanApi.name, typeDecl)
-
- self.syncFeature(self.cgenImpl, "")
- self.cgenImpl.endBlock()
-
- # Check Vulkan 1.0 / 1.1 functions
-
- def emit_check_impl(cgen, dispatchVar, feature, featureToCheck, apiName):
- if feature == featureToCheck:
- cgen.beginIf("!%s->%s" % (dispatchVar, apiName))
- cgen.stmt("fprintf(stderr, \"%s check failed: %s not found\\n\")" % (featureToCheck, apiName))
- cgen.stmt("good = false")
- cgen.endIf()
-
- def emit_feature_check_impl(context, cgen, tag, featureToCheck, apis):
- cgen.line("""
-bool vulkan_dispatch_check_%s_%s(
- const VulkanDispatch* vk)
-""" % (tag, featureToCheck))
-
- cgen.beginBlock()
-
- cgen.stmt("bool good = true")
-
- for vulkanApi, typeDecl, feature in apis:
- context.syncFeatureQuiet(self.cgenImpl, feature)
- emit_check_impl(cgen, "vk", feature, featureToCheck, vulkanApi.name)
-
- context.syncFeatureQuiet(self.cgenImpl, "")
-
- cgen.stmt("return good")
- cgen.endBlock()
-
- instanceApis = self.apisToGet["global-instance"] + self.apisToGet["instance"]
-
- emit_feature_check_impl(self, self.cgenImpl, "instance", "VK_VERSION_1_0", instanceApis)
- emit_feature_check_impl(self, self.cgenImpl, "instance", "VK_VERSION_1_1", instanceApis)
- emit_feature_check_impl(self, self.cgenImpl, "device", "VK_VERSION_1_0", self.apisToGet["device"])
- emit_feature_check_impl(self, self.cgenImpl, "device", "VK_VERSION_1_1", self.apisToGet["device"])
-
- self.module.appendImpl(self.cgenImpl.swapCode())
-
- def onBeginFeature(self, featureName, featureType):
- self.currentFeature = featureName
-
- def onGenType(self, typeXml, name, alias):
- VulkanWrapperGenerator.onGenType(self, typeXml, name, alias)
-
- def onGenCmd(self, cmdinfo, name, alias):
- VulkanWrapperGenerator.onGenCmd(self, cmdinfo, name, alias)
-
- vulkanApi = self.typeInfo.apis[name]
-
- typeDecl = "PFN_%s" % name
-
- procAddressType = inferProcAddressFuncType(vulkanApi)
-
- self.cgenHeader.stmt("%s %s" % (typeDecl, name));
- self.module.appendHeader(self.cgenHeader.swapCode())
-
- current = self.apisToGet.get(procAddressType, [])
- if current == []:
- self.apisToGet[procAddressType] = current
- current.append((vulkanApi, typeDecl, self.currentFeature))
-
-# VulkanDispatchFast allows one to get the optimal function pointers
-# for a given Vulkan API call, in order to improve performance.
-#
-# We can optionally query VkDevices to get function pointers that are
-# closer to the ICD and have fewer levels of indirection from the loader
-# to get there.
-# See
-# https://github.com/KhronosGroup/Vulkan-Loader/blob/master/loader/LoaderAndLayerInterface.md
-# for more info.
-#
-# This requires the calling C++ code to provide functions to
-# generate the desired instances and devices, otherwise we won't know
-# which instance or device to pass to vkGet(Instance|Device)ProcAddr,
-# so it does push more complexity to the user.
-class VulkanDispatchFast(VulkanDispatch):
-
- def __init__(self, module, typeInfo):
- VulkanDispatch.__init__(self, module, typeInfo)
-
- def onBegin(self):
- self.cgenHeader.line("""
-void init_vulkan_dispatch_from_system_loader(
- DlOpenFunc dlOpenFunc,
- DlSymFunc dlSymFunc,
- InstanceGetter instanceGetter,
- DeviceGetter deviceGetter,
- VulkanDispatch* dispatch_out);
-""")
-
- self.cgenHeader.line("struct VulkanDispatch {")
- self.cgenHeader.line("VkInstance instance;")
- self.cgenHeader.line("VkPhysicalDevice physicalDevice;")
- self.cgenHeader.line("uint32_t physicalDeviceQueueFamilyInfoCount;")
- self.cgenHeader.line("VkQueueFamilyProperties* physicalDeviceQueueFamilyInfos;")
- self.cgenHeader.line("VkDevice device;")
- self.cgenHeader.line("bool presentCapable;")
- self.module.appendHeader(self.cgenHeader.swapCode())
-
- def makeGetProcAddr(self, cgen, dispatchLevel, dispatch, apiname, typedecl):
- if dispatchLevel == "instance":
- funcname = "vkGetInstanceProcAddr"
- elif dispatchLevel == "device":
- funcname = "vkGetDeviceProcAddr"
- else:
- raise
-
- cgen.stmt( \
- "out->%s = (%s)out->%s(%s, \"%s\")" % \
- (apiname, typedecl, funcname, dispatch, apiname))
-
- def onEnd(self):
- self.cgenHeader.line("};")
- self.module.appendHeader(self.cgenHeader.swapCode())
-
- self.cgenImpl.line("""
-void init_vulkan_dispatch_from_system_loader(
- DlOpenFunc dlOpenFunc,
- DlSymFunc dlSymFunc,
- InstanceGetter instanceGetter,
- DeviceGetter deviceGetter,
- VulkanDispatch* out)""")
-
- self.cgenImpl.beginBlock()
-
- self.cgenImpl.stmt("out->instance = nullptr")
- self.cgenImpl.stmt("out->physicalDevice = nullptr")
- self.cgenImpl.stmt("out->physicalDeviceQueueFamilyInfoCount = 0")
- self.cgenImpl.stmt("out->physicalDeviceQueueFamilyInfos = nullptr")
- self.cgenImpl.stmt("out->device = nullptr")
- self.cgenImpl.stmt("out->presentCapable = false")
-
- self.cgenImpl.stmt("void* lib = dlOpenFunc()")
- self.cgenImpl.stmt("if (!lib) return")
-
- for vulkanApi, typeDecl, feature in self.apisToGet["global"]:
- self.syncFeature(self.cgenImpl, feature)
- self.makeDlsymCall(self.cgenImpl, vulkanApi.name, typeDecl)
-
- self.syncFeature(self.cgenImpl, "")
- self.cgenImpl.stmt("if (!out->vkGetInstanceProcAddr) return")
-
- for vulkanApi, typeDecl, feature in self.apisToGet["global-instance"]:
- self.syncFeature(self.cgenImpl, feature)
- self.makeGetProcAddr( \
- self.cgenImpl, "instance", "nullptr", vulkanApi.name, typeDecl);
-
- self.syncFeature(self.cgenImpl, "")
- self.cgenImpl.stmt("if (!instanceGetter(out, &out->instance)) return")
-
- for vulkanApi, typeDecl, feature in self.apisToGet["instance"]:
- self.syncFeature(self.cgenImpl, feature)
- self.makeGetProcAddr( \
- self.cgenImpl, "instance", "out->instance", vulkanApi.name, typeDecl);
-
- self.syncFeature(self.cgenImpl, "")
-
- self.cgenImpl.stmt("if (!deviceGetter(out, out->instance, &out->physicalDevice, &out->physicalDeviceQueueFamilyInfoCount, nullptr, &out->device, &out->presentCapable)) return")
- self.cgenImpl.stmt("out->physicalDeviceQueueFamilyInfos = (VkQueueFamilyProperties*)malloc(out->physicalDeviceQueueFamilyInfoCount * sizeof(VkQueueFamilyProperties))");
- self.cgenImpl.stmt("if (!deviceGetter(out, out->instance, &out->physicalDevice, &out->physicalDeviceQueueFamilyInfoCount, out->physicalDeviceQueueFamilyInfos, &out->device, &out->presentCapable)) return")
-
- for vulkanApi, typeDecl, feature in self.apisToGet["device"]:
- self.syncFeature(self.cgenImpl, feature)
- self.makeGetProcAddr( \
- self.cgenImpl, "device", "out->device", vulkanApi.name, typeDecl);
-
- self.syncFeature(self.cgenImpl, "")
-
- self.cgenImpl.endBlock()
-
- self.module.appendImpl(self.cgenImpl.swapCode())
-
- def onBeginFeature(self, featureName, featureType):
- VulkanDispatch.onBeginFeature(self, featureName, featureType);
-
- def onGenType(self, typeXml, name, alias):
- VulkanDispatch.onGenType(self, typeXml, name, alias);
-
- def onGenCmd(self, cmdinfo, name, alias):
- VulkanDispatch.onGenCmd(self, cmdinfo, name, alias);
diff --git a/codegen/vulkan/scripts/cereal/encoder.py b/codegen/vulkan/scripts/cereal/encoder.py
deleted file mode 100644
index d3e39745..00000000
--- a/codegen/vulkan/scripts/cereal/encoder.py
+++ /dev/null
@@ -1,717 +0,0 @@
-import copy
-
-from .common.codegen import CodeGen, VulkanWrapperGenerator
-from .common.vulkantypes import \
- VulkanAPI, makeVulkanTypeSimple, iterateVulkanType
-
-from .marshaling import VulkanMarshalingCodegen
-from .reservedmarshaling import VulkanReservedMarshalingCodegen
-from .counting import VulkanCountingCodegen
-from .handlemap import HandleMapCodegen
-from .deepcopy import DeepcopyCodegen
-from .transform import TransformCodegen, genTransformsForVulkanType
-
-from .wrapperdefs import API_PREFIX_RESERVEDMARSHAL
-from .wrapperdefs import API_PREFIX_MARSHAL
-from .wrapperdefs import API_PREFIX_UNMARSHAL
-from .wrapperdefs import ROOT_TYPE_DEFAULT_VALUE
-from .wrapperdefs import VULKAN_STREAM_TYPE_GUEST
-
-encoder_decl_preamble = """
-using android::base::guest::HealthMonitor;
-
-class VkEncoder {
-public:
- VkEncoder(IOStream* stream, HealthMonitor<>* healthMonitor = nullptr);
- ~VkEncoder();
-
-#include "VkEncoder.h.inl"
-"""
-
-encoder_decl_postamble = """
-private:
- class Impl;
- std::unique_ptr<Impl> mImpl;
- HealthMonitor<>* mHealthMonitor;
-};
-"""
-
-encoder_impl_preamble ="""
-
-using namespace gfxstream::vk;
-
-using android::base::guest::AutoLock;
-using android::base::guest::Lock;
-using android::base::BumpPool;
-
-#include "VkEncoder.cpp.inl"
-
-#define VALIDATE_RET(retType, success, validate) \\
- retType goldfish_vk_validateResult = validate; \\
- if (goldfish_vk_validateResult != success) return goldfish_vk_validateResult; \\
-
-#define VALIDATE_VOID(validate) \\
- VkResult goldfish_vk_validateResult = validate; \\
- if (goldfish_vk_validateResult != VK_SUCCESS) return; \\
-
-"""
-
-STREAM = "stream"
-RESOURCES = "sResourceTracker"
-POOL = "pool"
-
-ENCODER_PREVALIDATED_APIS = [
- "vkFlushMappedMemoryRanges",
- "vkInvalidateMappedMemoryRanges",
-]
-
-ENCODER_CUSTOM_RESOURCE_PREPROCESS = [
- "vkMapMemoryIntoAddressSpaceGOOGLE",
- "vkDestroyDevice",
-]
-
-ENCODER_CUSTOM_RESOURCE_POSTPROCESS = [
- "vkCreateInstance",
- "vkCreateDevice",
- "vkMapMemoryIntoAddressSpaceGOOGLE",
- "vkGetPhysicalDeviceFeatures2",
- "vkGetPhysicalDeviceFeatures2KHR",
- "vkGetPhysicalDeviceProperties",
- "vkGetPhysicalDeviceProperties2",
- "vkGetPhysicalDeviceProperties2KHR",
- "vkCreateDescriptorUpdateTemplate",
- "vkCreateDescriptorUpdateTemplateKHR",
- "vkGetPhysicalDeviceExternalSemaphoreProperties",
- "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR",
- "vkGetDeviceQueue",
- "vkGetDeviceQueue2",
-]
-
-ENCODER_EXPLICIT_FLUSHED_APIS = [
- "vkEndCommandBufferAsyncGOOGLE",
- "vkQueueSubmitAsyncGOOGLE",
- "vkQueueBindSparseAsyncGOOGLE",
- "vkQueueWaitIdleAsyncGOOGLE",
- "vkQueueSignalReleaseImageANDROID",
- "vkDestroyDevice",
-]
-
-SUCCESS_RET_TYPES = {
- "VkResult" : "VK_SUCCESS",
- "void" : None,
- # TODO: Put up success results for other return types here.
-}
-
-ENCODER_THIS_PARAM = makeVulkanTypeSimple(False, "VkEncoder", 1, "this")
-
-# Common components of encoding a Vulkan API call
-def make_event_handler_call(
- handler_access,
- api,
- context_param,
- input_result_param,
- cgen,
- suffix=""):
- extraParams = [context_param.paramName]
- if input_result_param:
- extraParams.append(input_result_param)
- return cgen.makeCallExpr( \
- "%s->on_%s%s" % (handler_access, api.name, suffix),
- extraParams + \
- [p.paramName for p in api.parameters[:-1]])
-
-def emit_custom_pre_validate(typeInfo, api, cgen):
- if api.name in ENCODER_PREVALIDATED_APIS:
- callExpr = \
- make_event_handler_call( \
- "mImpl->validation()", api,
- ENCODER_THIS_PARAM,
- SUCCESS_RET_TYPES[api.getRetTypeExpr()],
- cgen)
-
- if api.getRetTypeExpr() == "void":
- cgen.stmt("VALIDATE_VOID(%s)" % callExpr)
- else:
- cgen.stmt("VALIDATE_RET(%s, %s, %s)" % \
- (api.getRetTypeExpr(),
- SUCCESS_RET_TYPES[api.getRetTypeExpr()],
- callExpr))
-
-def emit_custom_resource_preprocess(typeInfo, api, cgen):
- if api.name in ENCODER_CUSTOM_RESOURCE_PREPROCESS:
- cgen.stmt( \
- make_event_handler_call( \
- "sResourceTracker", api,
- ENCODER_THIS_PARAM,
- SUCCESS_RET_TYPES[api.getRetTypeExpr()],
- cgen, suffix="_pre"))
-
-def emit_custom_resource_postprocess(typeInfo, api, cgen):
- if api.name in ENCODER_CUSTOM_RESOURCE_POSTPROCESS:
- cgen.stmt(make_event_handler_call( \
- "sResourceTracker",
- api,
- ENCODER_THIS_PARAM,
- api.getRetVarExpr(),
- cgen))
-
-def emit_count_marshal(typeInfo, param, cgen):
- res = \
- iterateVulkanType(
- typeInfo, param,
- VulkanCountingCodegen( \
- cgen, "sFeatureBits", param.paramName, "countPtr", ROOT_TYPE_DEFAULT_VALUE,
- "count_"))
- if not res:
- cgen.stmt("(void)%s" % param.paramName)
-
-def emit_marshal(typeInfo, param, cgen):
- forOutput = param.isHandleType() and ("out" in param.inout)
- if forOutput:
- cgen.stmt("/* is handle, possibly out */")
-
- res = \
- iterateVulkanType(
- typeInfo, param,
- VulkanReservedMarshalingCodegen( \
- cgen, STREAM, ROOT_TYPE_DEFAULT_VALUE, param.paramName, "streamPtrPtr",
- API_PREFIX_RESERVEDMARSHAL,
- "" if forOutput else "get_host_u64_",
- direction="write"))
- if not res:
- cgen.stmt("(void)%s" % param.paramName)
-
- if forOutput:
- cgen.stmt("/* is handle, possibly out */")
-
-def emit_unmarshal(typeInfo, param, cgen):
- iterateVulkanType(
- typeInfo, param,
- VulkanMarshalingCodegen( \
- cgen, STREAM, ROOT_TYPE_DEFAULT_VALUE, param.paramName,
- API_PREFIX_UNMARSHAL, direction="read"))
-
-def emit_deepcopy(typeInfo, param, cgen):
- res = \
- iterateVulkanType(typeInfo, param, DeepcopyCodegen(
- cgen, [param.paramName, "local_" + param.paramName], "pool", ROOT_TYPE_DEFAULT_VALUE, "deepcopy_"))
- if not res:
- cgen.stmt("(void)%s" % param.paramName)
-
-def emit_transform(typeInfo, param, cgen, variant="tohost"):
- res = \
- iterateVulkanType(typeInfo, param, TransformCodegen( \
- cgen, param.paramName, "sResourceTracker", "transform_%s_" % variant, variant))
- if not res:
- cgen.stmt("(void)%s" % param.paramName)
-
-def emit_handlemap_create(typeInfo, param, cgen):
- iterateVulkanType(typeInfo, param, HandleMapCodegen(
- cgen, None, "sResourceTracker", "handlemap_",
- lambda vtype: typeInfo.isHandleType(vtype.typeName)
- ))
-
-def custom_encoder_args(api):
- params = ["this"]
- if api.getRetVarExpr() is not None:
- params.append(api.getRetVarExpr())
- return params
-
-def emit_handlemap_destroy(typeInfo, param, cgen):
- iterateVulkanType(typeInfo, param, HandleMapCodegen(
- cgen, None, "sResourceTracker->destroyMapping()", "handlemap_",
- lambda vtype: typeInfo.isHandleType(vtype.typeName)
- ))
-
-class EncodingParameters(object):
- def __init__(self, api):
- self.localCopied = []
- self.toWrite = []
- self.toRead = []
- self.toCreate = []
- self.toDestroy = []
-
- for param in api.parameters:
- param.action = None
- param.inout = "in"
-
- if param.paramName == "doLock":
- continue
-
- if param.possiblyOutput():
- param.inout += "out"
- self.toWrite.append(param)
- self.toRead.append(param)
- if param.isCreatedBy(api):
- self.toCreate.append(param)
- param.action = "create"
- else:
-
- if param.paramName == "doLock":
- continue
-
- if param.isDestroyedBy(api):
- self.toDestroy.append(param)
- param.action = "destroy"
- localCopyParam = \
- param.getForNonConstAccess().withModifiedName( \
- "local_" + param.paramName)
- self.localCopied.append((param, localCopyParam))
- self.toWrite.append(localCopyParam)
-
-def emit_parameter_encode_preamble_write(typeInfo, api, cgen):
- emit_custom_pre_validate(typeInfo, api, cgen);
- emit_custom_resource_preprocess(typeInfo, api, cgen);
-
- cgen.stmt("auto %s = mImpl->stream()" % STREAM)
- cgen.stmt("auto %s = mImpl->pool()" % POOL)
- # cgen.stmt("%s->setHandleMapping(%s->unwrapMapping())" % (STREAM, RESOURCES))
-
- encodingParams = EncodingParameters(api)
- for (_, localCopyParam) in encodingParams.localCopied:
- cgen.stmt(cgen.makeRichCTypeDecl(localCopyParam))
-
-def emit_parameter_encode_copy_unwrap_count(typeInfo, api, cgen, customUnwrap=None):
- encodingParams = EncodingParameters(api)
-
- for (origParam, localCopyParam) in encodingParams.localCopied:
- shouldCustomCopy = \
- customUnwrap and \
- origParam.paramName in customUnwrap and \
- "copyOp" in customUnwrap[origParam.paramName]
-
- shouldCustomMap = \
- customUnwrap and \
- origParam.paramName in customUnwrap and \
- "mapOp" in customUnwrap[origParam.paramName]
-
- if shouldCustomCopy:
- customUnwrap[origParam.paramName]["copyOp"](cgen, origParam, localCopyParam)
- else:
- # if this is a pointer type and we don't do custom copy nor unwrap,
- # and the transform doesn't end up doing anything,
- # don't deepcopy, just cast it.
-
- avoidDeepcopy = False
-
- if origParam.pointerIndirectionLevels > 0:
- testCgen = CodeGen()
- genTransformsForVulkanType("sResourceTracker", origParam, lambda p: testCgen.generalAccess(p, parentVarName = None, asPtr = True), lambda p: testCgen.generalLengthAccess(p, parentVarName = None), testCgen)
- emit_transform(typeInfo, origParam, testCgen, variant="tohost")
- if "" == testCgen.swapCode():
- avoidDeepcopy = True
- if avoidDeepcopy:
- cgen.line("// Avoiding deepcopy for %s" % origParam.paramName)
- cgen.stmt("%s = (%s%s)%s" % (localCopyParam.paramName, localCopyParam.typeName, "*" * origParam.pointerIndirectionLevels, origParam.paramName))
- else:
- emit_deepcopy(typeInfo, origParam, cgen)
-
- for (origParam, localCopyParam) in encodingParams.localCopied:
- shouldCustomMap = \
- customUnwrap and \
- origParam.paramName in customUnwrap and \
- "mapOp" in customUnwrap[origParam.paramName]
-
- if shouldCustomMap:
- customUnwrap[origParam.paramName]["mapOp"](cgen, origParam, localCopyParam)
- else:
- if localCopyParam.typeName == "VkAllocationCallbacks":
- cgen.stmt("%s = nullptr" % localCopyParam.paramName)
-
- apiForTransform = \
- api.withCustomParameters( \
- map(lambda p: p[1], \
- encodingParams.localCopied))
-
- # Apply transforms if applicable.
- # Apply transform to API itself:
- genTransformsForVulkanType(
- "sResourceTracker",
- apiForTransform,
- lambda p: cgen.generalAccess(p, parentVarName = None, asPtr = True),
- lambda p: cgen.generalLengthAccess(p, parentVarName = None),
- cgen)
-
- # For all local copied parameters, run the transforms
- for localParam in apiForTransform.parameters:
- if "doLock" in localParam.paramName:
- continue
- emit_transform(typeInfo, localParam, cgen, variant="tohost")
-
- cgen.stmt("size_t count = 0")
- cgen.stmt("size_t* countPtr = &count")
- cgen.beginBlock()
-
- # Use counting stream to calculate the packet size.
- for p in encodingParams.toWrite:
- emit_count_marshal(typeInfo, p, cgen)
-
- cgen.endBlock()
-
-def is_cmdbuf_dispatch(api):
- return "VkCommandBuffer" == api.parameters[0].typeName
-
-def emit_parameter_encode_write_packet_info(typeInfo, api, cgen):
- # Seqno and skipping dispatch serialize are for use with VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT
- doSeqno = True
- doDispatchSerialize = True
-
- if is_cmdbuf_dispatch(api):
- doSeqno = False
- doDispatchSerialize = False
-
- if doSeqno:
- cgen.stmt("uint32_t packetSize_%s = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count" % (api.name))
- else:
- cgen.stmt("uint32_t packetSize_%s = 4 + 4 + count" % (api.name))
- cgen.stmt("healthMonitorAnnotation_packetSize = std::make_optional(packetSize_%s)" % (api.name))
-
- if not doDispatchSerialize:
- cgen.stmt("if (queueSubmitWithCommandsEnabled) packetSize_%s -= 8" % api.name)
-
- cgen.stmt("uint8_t* streamPtr = %s->reserve(packetSize_%s)" % (STREAM, api.name))
- cgen.stmt("uint8_t* packetBeginPtr = streamPtr")
- cgen.stmt("uint8_t** streamPtrPtr = &streamPtr")
- cgen.stmt("uint32_t opcode_%s = OP_%s" % (api.name, api.name))
-
- if doSeqno:
- cgen.stmt("uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno()")
- cgen.stmt("healthMonitorAnnotation_seqno = std::make_optional(seqno)")
-
- cgen.stmt("memcpy(streamPtr, &opcode_%s, sizeof(uint32_t)); streamPtr += sizeof(uint32_t)" % api.name)
- cgen.stmt("memcpy(streamPtr, &packetSize_%s, sizeof(uint32_t)); streamPtr += sizeof(uint32_t)" % api.name)
-
- if doSeqno:
- cgen.line("if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); }")
-
-def emit_parameter_encode_do_parameter_write(typeInfo, api, cgen):
- encodingParams = EncodingParameters(api)
-
- dispatchDone = False
-
- for p in encodingParams.toWrite:
- if is_cmdbuf_dispatch(api) and not dispatchDone:
- cgen.beginIf("!queueSubmitWithCommandsEnabled")
- emit_marshal(typeInfo, p, cgen)
- cgen.endIf()
- else:
- emit_marshal(typeInfo, p, cgen)
-
- dispatchDone = True
-
- cgen.beginIf("watchdog")
- cgen.stmt("size_t watchdogBufSize = std::min<size_t>(static_cast<size_t>(packetSize_%s), kWatchdogBufferMax)" % (api.name))
- cgen.stmt("healthMonitorAnnotation_packetContents.resize(watchdogBufSize)")
- cgen.stmt("memcpy(&healthMonitorAnnotation_packetContents[0], packetBeginPtr, watchdogBufSize)")
- cgen.endIf()
-
-def emit_parameter_encode_read(typeInfo, api, cgen):
- encodingParams = EncodingParameters(api)
-
- for p in encodingParams.toRead:
- if p.action == "create":
- cgen.stmt(
- "%s->setHandleMapping(%s->createMapping())" % \
- (STREAM, RESOURCES))
- emit_unmarshal(typeInfo, p, cgen)
- if p.action == "create":
- cgen.stmt(
- "%s->unsetHandleMapping()" % STREAM)
- emit_transform(typeInfo, p, cgen, variant="fromhost")
-
-def emit_post(typeInfo, api, cgen):
- encodingParams = EncodingParameters(api)
-
- emit_custom_resource_postprocess(typeInfo, api, cgen)
-
- for p in encodingParams.toDestroy:
- emit_handlemap_destroy(typeInfo, p, cgen)
-
- doSeqno = True
- if is_cmdbuf_dispatch(api):
- doSeqno = False
-
- retType = api.getRetTypeExpr()
-
- if api.name in ENCODER_EXPLICIT_FLUSHED_APIS:
- cgen.stmt("stream->flush()");
- return
-
- if doSeqno:
- if retType == "void":
- encodingParams = EncodingParameters(api)
- if 0 == len(encodingParams.toRead):
- cgen.stmt("stream->flush()");
-
-def emit_pool_free(cgen):
- cgen.stmt("++encodeCount;")
- cgen.beginIf("0 == encodeCount % POOL_CLEAR_INTERVAL")
- cgen.stmt("pool->freeAll()")
- cgen.stmt("%s->clearPool()" % STREAM)
- cgen.endIf()
-
-def emit_return_unmarshal(typeInfo, api, cgen):
-
- retType = api.getRetTypeExpr()
-
- if retType == "void":
- return
-
- retVar = api.getRetVarExpr()
- cgen.stmt("%s %s = (%s)0" % (retType, retVar, retType))
- cgen.stmt("%s->read(&%s, %s)" % \
- (STREAM, retVar, cgen.sizeofExpr(api.retType)))
-
-def emit_return(typeInfo, api, cgen):
- if api.getRetTypeExpr() == "void":
- return
-
- retVar = api.getRetVarExpr()
- cgen.stmt("return %s" % retVar)
-
-def emit_lock(cgen):
- cgen.stmt("(void)doLock");
- cgen.stmt("bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT")
- cgen.stmt("if (!queueSubmitWithCommandsEnabled && doLock) this->lock()")
-
-def emit_unlock(cgen):
- cgen.stmt("if (!queueSubmitWithCommandsEnabled && doLock) this->unlock()")
-
-def emit_debug_log(typeInfo, api, cgen):
- logFormat = []
- logVargs = []
- for param in api.parameters:
- if param.paramName == "doLock":
- continue
-
- paramFormatSpecifier = param.getPrintFormatSpecifier()
- if not paramFormatSpecifier:
- continue
-
- logFormat.append(param.paramName + ":" + paramFormatSpecifier)
- logVargs.append(param.paramName)
-
- logFormatStr = ", ".join(logFormat)
- logVargsStr = ", ".join(logVargs)
-
- cgen.stmt("ENCODER_DEBUG_LOG(\"%s(%s)\", %s)" % (api.name, logFormatStr, logVargsStr))
-
-def emit_health_watchdog(api, cgen):
- cgen.stmt("std::optional<uint32_t> healthMonitorAnnotation_seqno = std::nullopt")
- cgen.stmt("std::optional<uint32_t> healthMonitorAnnotation_packetSize = std::nullopt")
- cgen.stmt("std::vector<uint8_t> healthMonitorAnnotation_packetContents")
- cgen.line("""
- auto watchdog = WATCHDOG_BUILDER(mHealthMonitor, \"%s in VkEncoder\")
- .setOnHangCallback([&]() {
- auto annotations = std::make_unique<EventHangMetadata::HangAnnotations>();
- if (healthMonitorAnnotation_seqno) {
- annotations->insert({{"seqno", std::to_string(healthMonitorAnnotation_seqno.value())}});
- }
- if (healthMonitorAnnotation_packetSize) {
- annotations->insert({{"packetSize", std::to_string(healthMonitorAnnotation_packetSize.value())}});
- }
- if (!healthMonitorAnnotation_packetContents.empty()) {
- annotations->insert(
- {{"packetContents", getPacketContents(
- &healthMonitorAnnotation_packetContents[0], healthMonitorAnnotation_packetContents.size())}});
- }
- return std::move(annotations);
- })
- .build();
- """% (api.name)
- )
-
-def emit_default_encoding(typeInfo, api, cgen):
- emit_debug_log(typeInfo, api, cgen)
- emit_lock(cgen)
- emit_parameter_encode_preamble_write(typeInfo, api, cgen)
- emit_parameter_encode_copy_unwrap_count(typeInfo, api, cgen)
- emit_parameter_encode_write_packet_info(typeInfo, api, cgen)
- emit_parameter_encode_do_parameter_write(typeInfo, api, cgen)
- emit_parameter_encode_read(typeInfo, api, cgen)
- emit_return_unmarshal(typeInfo, api, cgen)
- emit_post(typeInfo, api, cgen)
- emit_pool_free(cgen)
- emit_unlock(cgen)
- emit_return(typeInfo, api, cgen)
-
-## Custom encoding definitions##################################################
-
-def emit_only_goldfish_custom(typeInfo, api, cgen):
- emit_lock(cgen)
- cgen.vkApiCall( \
- api,
- customPrefix="sResourceTracker->on_",
- customParameters=custom_encoder_args(api) + \
- [p.paramName for p in api.parameters[:-1]])
- emit_unlock(cgen)
- emit_return(typeInfo, api, cgen)
-
-def emit_only_resource_event(typeInfo, api, cgen):
- cgen.stmt("(void)doLock");
- input_result = None
- retExpr = api.getRetVarExpr()
-
- if retExpr:
- retType = api.getRetTypeExpr()
- input_result = SUCCESS_RET_TYPES[retType]
- cgen.stmt("%s %s = (%s)0" % (retType, retExpr, retType))
-
- cgen.stmt(
- (("%s = " % retExpr) if retExpr else "") +
- make_event_handler_call(
- "sResourceTracker",
- api,
- ENCODER_THIS_PARAM,
- input_result, cgen))
-
- if retExpr:
- emit_return(typeInfo, api, cgen)
-
-def emit_with_custom_unwrap(custom):
- def call(typeInfo, api, cgen):
- emit_lock(cgen)
- emit_parameter_encode_preamble_write(typeInfo, api, cgen)
- emit_parameter_encode_copy_unwrap_count(
- typeInfo, api, cgen, customUnwrap=custom)
- emit_parameter_encode_write_packet_info(typeInfo, api, cgen)
- emit_parameter_encode_do_parameter_write(typeInfo, api, cgen)
- emit_parameter_encode_read(typeInfo, api, cgen)
- emit_return_unmarshal(typeInfo, api, cgen)
- emit_pool_free(cgen)
- emit_unlock(cgen)
- emit_return(typeInfo, api, cgen)
- return call
-
-def encode_vkFlushMappedMemoryRanges(typeInfo, api, cgen):
- emit_lock(cgen)
- emit_parameter_encode_preamble_write(typeInfo, api, cgen)
- emit_parameter_encode_copy_unwrap_count(typeInfo, api, cgen)
-
- def emit_flush_ranges(streamVar):
- cgen.beginIf("!sResourceTracker->usingDirectMapping()")
- cgen.beginFor("uint32_t i = 0", "i < memoryRangeCount", "++i")
- cgen.stmt("auto range = pMemoryRanges[i]")
- cgen.stmt("auto memory = pMemoryRanges[i].memory")
- cgen.stmt("auto size = pMemoryRanges[i].size")
- cgen.stmt("auto offset = pMemoryRanges[i].offset")
- cgen.stmt("uint64_t streamSize = 0")
- cgen.stmt("if (!memory) { %s->write(&streamSize, sizeof(uint64_t)); continue; }" % streamVar)
- cgen.stmt("auto hostPtr = sResourceTracker->getMappedPointer(memory)")
- cgen.stmt("auto actualSize = size == VK_WHOLE_SIZE ? sResourceTracker->getMappedSize(memory) : size")
- cgen.stmt("if (!hostPtr) { %s->write(&streamSize, sizeof(uint64_t)); continue; }" % streamVar)
- cgen.stmt("streamSize = actualSize")
- cgen.stmt("%s->write(&streamSize, sizeof(uint64_t))" % streamVar)
- cgen.stmt("uint8_t* targetRange = hostPtr + offset")
- cgen.stmt("%s->write(targetRange, actualSize)" % streamVar)
- cgen.endFor()
- cgen.endIf()
-
- emit_parameter_encode_write_packet_info(typeInfo, api, cgen)
- emit_parameter_encode_do_parameter_write(typeInfo, api, cgen)
-
- emit_flush_ranges(STREAM)
-
- emit_parameter_encode_read(typeInfo, api, cgen)
- emit_return_unmarshal(typeInfo, api, cgen)
- emit_pool_free(cgen)
- emit_unlock(cgen)
- emit_return(typeInfo, api, cgen)
-
-def encode_vkInvalidateMappedMemoryRanges(typeInfo, api, cgen):
- emit_lock(cgen)
- emit_parameter_encode_preamble_write(typeInfo, api, cgen)
- emit_parameter_encode_copy_unwrap_count(typeInfo, api, cgen)
- emit_parameter_encode_write_packet_info(typeInfo, api, cgen)
- emit_parameter_encode_do_parameter_write(typeInfo, api, cgen)
- emit_parameter_encode_read(typeInfo, api, cgen)
- emit_return_unmarshal(typeInfo, api, cgen)
-
- def emit_invalidate_ranges(streamVar):
- cgen.beginIf("!sResourceTracker->usingDirectMapping()")
- cgen.beginFor("uint32_t i = 0", "i < memoryRangeCount", "++i")
- cgen.stmt("auto range = pMemoryRanges[i]")
- cgen.stmt("auto memory = pMemoryRanges[i].memory")
- cgen.stmt("auto size = pMemoryRanges[i].size")
- cgen.stmt("auto offset = pMemoryRanges[i].offset")
- cgen.stmt("uint64_t streamSize = 0")
- cgen.stmt("if (!memory) { %s->read(&streamSize, sizeof(uint64_t)); continue; }" % streamVar)
- cgen.stmt("auto hostPtr = sResourceTracker->getMappedPointer(memory)")
- cgen.stmt("auto actualSize = size == VK_WHOLE_SIZE ? sResourceTracker->getMappedSize(memory) : size")
- cgen.stmt("if (!hostPtr) { %s->read(&streamSize, sizeof(uint64_t)); continue; }" % streamVar)
- cgen.stmt("streamSize = actualSize")
- cgen.stmt("%s->read(&streamSize, sizeof(uint64_t))" % streamVar)
- cgen.stmt("uint8_t* targetRange = hostPtr + offset")
- cgen.stmt("%s->read(targetRange, actualSize)" % streamVar)
- cgen.endFor()
- cgen.endIf()
-
- emit_invalidate_ranges(STREAM)
- emit_pool_free(cgen)
- emit_unlock(cgen)
- emit_return(typeInfo, api, cgen)
-
-def emit_manual_inline(typeInfo, api, cgen):
- cgen.line("#include \"%s_encode_impl.cpp.inl\"" % api.name)
-
-def unwrap_VkNativeBufferANDROID():
- def mapOp(cgen, orig, local):
- cgen.stmt("sResourceTracker->unwrap_VkNativeBufferANDROID(%s, %s)" %
- (orig.paramName, local.paramName))
- return { "pCreateInfo" : { "mapOp" : mapOp } }
-
-def unwrap_vkAcquireImageANDROID_nativeFenceFd():
- def mapOp(cgen, orig, local):
- cgen.stmt("sResourceTracker->unwrap_vkAcquireImageANDROID_nativeFenceFd(%s, &%s)" %
- (orig.paramName, local.paramName))
- return { "nativeFenceFd" : { "mapOp" : mapOp } }
-
-custom_encodes = {
- "vkMapMemory" : emit_only_resource_event,
- "vkUnmapMemory" : emit_only_resource_event,
- "vkFlushMappedMemoryRanges" : encode_vkFlushMappedMemoryRanges,
- "vkInvalidateMappedMemoryRanges" : encode_vkInvalidateMappedMemoryRanges,
- "vkCreateImage" : emit_with_custom_unwrap(unwrap_VkNativeBufferANDROID()),
- "vkCreateImageWithRequirementsGOOGLE" : emit_with_custom_unwrap(unwrap_VkNativeBufferANDROID()),
- "vkAcquireImageANDROID" : emit_with_custom_unwrap(unwrap_vkAcquireImageANDROID_nativeFenceFd()),
- "vkQueueFlushCommandsGOOGLE" : emit_manual_inline,
-}
-
-class VulkanEncoder(VulkanWrapperGenerator):
- def __init__(self, module, typeInfo):
- VulkanWrapperGenerator.__init__(self, module, typeInfo)
-
- self.typeInfo = typeInfo
-
- self.cgenHeader = CodeGen()
- self.cgenHeader.incrIndent()
-
- self.cgenImpl = CodeGen()
-
- def onBegin(self,):
- self.module.appendHeader(encoder_decl_preamble)
- self.module.appendImpl(encoder_impl_preamble)
-
- def onGenCmd(self, cmdinfo, name, alias):
- VulkanWrapperGenerator.onGenCmd(self, cmdinfo, name, alias)
-
- api = copy.deepcopy(self.typeInfo.apis[name])
- api.parameters.append(makeVulkanTypeSimple(False, "uint32_t", 0, "doLock"))
-
- self.cgenHeader.stmt(self.cgenHeader.makeFuncProto(api))
- apiImpl = api.withModifiedName("VkEncoder::" + api.name)
-
- self.module.appendHeader(self.cgenHeader.swapCode())
-
- def emit_function_impl(cgen):
- emit_health_watchdog(api, cgen)
- if api.name in custom_encodes.keys():
- custom_encodes[api.name](self.typeInfo, api, cgen)
- else:
- emit_default_encoding(self.typeInfo, api, cgen)
-
- self.module.appendImpl(self.cgenImpl.makeFuncImpl(apiImpl, emit_function_impl))
-
- def onEnd(self,):
- self.module.appendHeader(encoder_decl_postamble)
- self.cgenHeader.decrIndent()
diff --git a/codegen/vulkan/scripts/cereal/extensionstructs.py b/codegen/vulkan/scripts/cereal/extensionstructs.py
deleted file mode 100644
index 95c95237..00000000
--- a/codegen/vulkan/scripts/cereal/extensionstructs.py
+++ /dev/null
@@ -1,125 +0,0 @@
-# Copyright (c) 2018 The Android Open Source Project
-# Copyright (c) 2018 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from .common.codegen import CodeGen
-from .common.vulkantypes import \
- VulkanAPI, makeVulkanTypeSimple, iterateVulkanType
-
-from .wrapperdefs import VulkanWrapperGenerator
-from .wrapperdefs import STRUCT_EXTENSION_PARAM
-from .wrapperdefs import STRUCT_EXTENSION_PARAM_FOR_WRITE
-from .wrapperdefs import EXTENSION_SIZE_API_NAME
-from .wrapperdefs import EXTENSION_SIZE_WITH_STREAM_FEATURES_API_NAME
-from .wrapperdefs import STRUCT_TYPE_API_NAME
-
-class VulkanExtensionStructs(VulkanWrapperGenerator):
-
- def __init__(self, module, typeInfo):
- VulkanWrapperGenerator.__init__(self, module, typeInfo)
-
- self.codegen = CodeGen()
-
- self.structTypeRetType = \
- makeVulkanTypeSimple(False, "uint32_t", 0)
-
- self.rootTypeVarName = "rootType"
- self.rootTypeParam = \
- makeVulkanTypeSimple(False, "VkStructureType",
- 0, self.rootTypeVarName)
- self.structTypePrototype = \
- VulkanAPI(STRUCT_TYPE_API_NAME,
- self.structTypeRetType,
- [STRUCT_EXTENSION_PARAM])
-
- self.extensionStructSizeRetType = \
- makeVulkanTypeSimple(False, "size_t", 0)
- self.extensionStructSizePrototype = \
- VulkanAPI(EXTENSION_SIZE_API_NAME,
- self.extensionStructSizeRetType,
- [self.rootTypeParam, STRUCT_EXTENSION_PARAM])
-
- self.streamFeaturesType = makeVulkanTypeSimple(False, "uint32_t", 0, "streamFeatures")
-
- self.extensionStructSizeWithStreamFeaturesPrototype = \
- VulkanAPI(EXTENSION_SIZE_WITH_STREAM_FEATURES_API_NAME,
- self.extensionStructSizeRetType,
- [self.streamFeaturesType, self.rootTypeParam, STRUCT_EXTENSION_PARAM])
- def onBegin(self,):
- VulkanWrapperGenerator.onBegin(self)
- self.module.appendHeader(self.codegen.makeFuncDecl(
- self.structTypePrototype))
- self.module.appendHeader(self.codegen.makeFuncDecl(
- self.extensionStructSizePrototype))
- self.module.appendHeader(self.codegen.makeFuncDecl(
- self.extensionStructSizeWithStreamFeaturesPrototype))
-
- def onGenType(self, typeXml, name, alias):
- VulkanWrapperGenerator.onGenType(self, typeXml, name, alias)
-
- def onGenCmd(self, cmdinfo, name, alias):
- VulkanWrapperGenerator.onGenCmd(self, cmdinfo, name, alias)
-
- def onEnd(self,):
- VulkanWrapperGenerator.onEnd(self)
-
- def castAsStruct(varName, typeName, const=True):
- return "reinterpret_cast<%s%s*>(%s)" % \
- ("const " if const else "", typeName, varName)
-
- def structTypeImpl(cgen):
- cgen.stmt(
- "const uint32_t asStructType = *(%s)" %
- (castAsStruct(STRUCT_EXTENSION_PARAM.paramName, "uint32_t")))
- cgen.stmt("return asStructType")
-
- self.module.appendImpl(
- self.codegen.makeFuncImpl(
- self.structTypePrototype, structTypeImpl))
-
- def forEachExtensionReturnSize(ext, _, cgen):
- cgen.stmt("return sizeof(%s)" % ext.name)
-
- def forEachExtensionReturnSizeProtectedByFeature(ext, _, cgen):
- featureProtected = (ext.optionalStr is not None) and (ext.optionalStr.startswith("streamFeature:"))
- if featureProtected:
- splitted = ext.optionalStr.split(":")
- cgen.beginIf("%s & %s" % ("streamFeatures", splitted[1]))
- cgen.stmt("return sizeof(%s)" % ext.name)
- cgen.endIf()
- cgen.beginElse()
- cgen.stmt("return 0")
- cgen.endIf()
- else:
- cgen.stmt("return sizeof(%s)" % ext.name)
-
- self.module.appendImpl(
- self.codegen.makeFuncImpl(
- self.extensionStructSizePrototype,
- lambda cgen: self.emitForEachStructExtension(
- cgen,
- self.extensionStructSizeRetType,
- STRUCT_EXTENSION_PARAM,
- forEachExtensionReturnSize, autoBreak=False,
- rootTypeVar=self.rootTypeParam)))
-
- self.module.appendImpl(
- self.codegen.makeFuncImpl(
- self.extensionStructSizeWithStreamFeaturesPrototype,
- lambda cgen: self.emitForEachStructExtension(
- cgen,
- self.extensionStructSizeRetType,
- STRUCT_EXTENSION_PARAM,
- forEachExtensionReturnSizeProtectedByFeature, autoBreak=False,
- rootTypeVar=self.rootTypeParam)))
diff --git a/codegen/vulkan/scripts/cereal/frontend.py b/codegen/vulkan/scripts/cereal/frontend.py
deleted file mode 100644
index b182c0e7..00000000
--- a/codegen/vulkan/scripts/cereal/frontend.py
+++ /dev/null
@@ -1,102 +0,0 @@
-# Copyright (c) 2018 The Android Open Source Project
-# Copyright (c) 2018 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from .common.codegen import CodeGen, VulkanAPIWrapper
-from .common.vulkantypes import \
- VulkanAPI, makeVulkanTypeSimple, iterateVulkanType
-
-from .wrapperdefs import VulkanWrapperGenerator
-
-from .wrapperdefs import API_PREFIX_VALIDATE
-from .wrapperdefs import PARAMETERS_VALIDATE
-from .wrapperdefs import VOID_TYPE
-from .wrapperdefs import VALIDATE_RESULT_TYPE
-from .wrapperdefs import VALIDATE_VAR_NAME
-from .wrapperdefs import VALIDATE_GOOD_RESULT
-
-from .wrapperdefs import VULKAN_STREAM_TYPE
-from .wrapperdefs import VULKAN_STREAM_VAR_NAME
-
-from .wrapperdefs import API_PREFIX_MARSHAL
-from .wrapperdefs import API_PREFIX_FRONTEND
-
-# Frontend
-class VulkanFrontend(VulkanWrapperGenerator):
-
- def __init__(self, module, typeInfo):
- VulkanWrapperGenerator.__init__(self, module, typeInfo)
-
- def validateDefFunc(_codegen, _api):
- # TODO
- pass
-
- self.validateWrapper = \
- VulkanAPIWrapper(
- API_PREFIX_VALIDATE,
- PARAMETERS_VALIDATE,
- VOID_TYPE,
- validateDefFunc)
-
- def frontendDefFunc(codegen, api):
- retTypeName = api.retType.typeName
-
- codegen.stmt(
- "%s %s = %s" % (VALIDATE_RESULT_TYPE, VALIDATE_VAR_NAME,
- VALIDATE_GOOD_RESULT))
- codegen.funcCall(None, API_PREFIX_VALIDATE + api.origName,
- ["&%s" % VALIDATE_VAR_NAME] + list(
- map(lambda p: p.paramName, api.parameters)))
-
- codegen.beginIf(
- "%s != %s" % (VALIDATE_VAR_NAME, VALIDATE_GOOD_RESULT))
- if retTypeName == VALIDATE_RESULT_TYPE:
- codegen.stmt("return %s" % VALIDATE_VAR_NAME)
- elif retTypeName != "void":
- codegen.stmt("return (%s)0" % retTypeName)
- else:
- codegen.stmt("return")
- codegen.endIf()
-
- codegen.stmt("// VULKAN_STREAM_GET()")
- codegen.stmt("%s* %s = nullptr" % (VULKAN_STREAM_TYPE,
- VULKAN_STREAM_VAR_NAME))
-
- retLhs = None
- if retTypeName != "void":
- retLhs = retTypeName + " res"
-
- codegen.funcCall(retLhs, API_PREFIX_MARSHAL + api.origName,
- [VULKAN_STREAM_VAR_NAME] + list(
- map(lambda p: p.paramName, api.parameters)))
-
- if retTypeName != "void":
- codegen.stmt("return res")
-
- self.frontendWrapper = \
- VulkanAPIWrapper(
- API_PREFIX_FRONTEND,
- [],
- None,
- frontendDefFunc)
-
- def onGenCmd(self, cmdinfo, name, alias):
- VulkanWrapperGenerator.onGenCmd(self, cmdinfo, name, alias)
- self.module.appendHeader(
- self.frontendWrapper.makeDecl(self.typeInfo, name))
- self.module.appendImpl(
- self.validateWrapper.makeDefinition(
- self.typeInfo, name, isStatic=True))
- self.module.appendImpl(
- self.frontendWrapper.makeDefinition(self.typeInfo, name))
diff --git a/codegen/vulkan/scripts/cereal/functable.py b/codegen/vulkan/scripts/cereal/functable.py
deleted file mode 100644
index f16735a3..00000000
--- a/codegen/vulkan/scripts/cereal/functable.py
+++ /dev/null
@@ -1,360 +0,0 @@
-from .common.codegen import CodeGen, VulkanWrapperGenerator
-from .common.vulkantypes import \
- VulkanAPI, makeVulkanTypeSimple, iterateVulkanType
-from .common.vulkantypes import EXCLUDED_APIS
-
-RESOURCE_TRACKER_ENTRIES = [
- "vkEnumerateInstanceExtensionProperties",
- "vkEnumerateDeviceExtensionProperties",
- "vkEnumeratePhysicalDevices",
- "vkAllocateMemory",
- "vkFreeMemory",
- "vkCreateImage",
- "vkDestroyImage",
- "vkGetImageMemoryRequirements",
- "vkGetImageMemoryRequirements2",
- "vkGetImageMemoryRequirements2KHR",
- "vkBindImageMemory",
- "vkBindImageMemory2",
- "vkBindImageMemory2KHR",
- "vkCreateBuffer",
- "vkDestroyBuffer",
- "vkGetBufferMemoryRequirements",
- "vkGetBufferMemoryRequirements2",
- "vkGetBufferMemoryRequirements2KHR",
- "vkBindBufferMemory",
- "vkBindBufferMemory2",
- "vkBindBufferMemory2KHR",
- "vkCreateSemaphore",
- "vkDestroySemaphore",
- "vkQueueSubmit",
- "vkQueueWaitIdle",
- "vkImportSemaphoreFdKHR",
- "vkGetSemaphoreFdKHR",
- # Warning: These need to be defined in vk.xml (currently no-op) {
- "vkGetMemoryFuchsiaHandleKHR",
- "vkGetMemoryFuchsiaHandlePropertiesKHR",
- "vkGetSemaphoreFuchsiaHandleKHR",
- "vkImportSemaphoreFuchsiaHandleKHR",
- # } end Warning: These need to be defined in vk.xml (currently no-op)
- "vkGetAndroidHardwareBufferPropertiesANDROID",
- "vkGetMemoryAndroidHardwareBufferANDROID",
- "vkCreateSamplerYcbcrConversion",
- "vkDestroySamplerYcbcrConversion",
- "vkCreateSamplerYcbcrConversionKHR",
- "vkDestroySamplerYcbcrConversionKHR",
- "vkUpdateDescriptorSetWithTemplate",
- "vkGetPhysicalDeviceImageFormatProperties2",
- "vkGetPhysicalDeviceImageFormatProperties2KHR",
- "vkBeginCommandBuffer",
- "vkEndCommandBuffer",
- "vkResetCommandBuffer",
- "vkCreateImageView",
- "vkCreateSampler",
- "vkGetPhysicalDeviceExternalFenceProperties",
- "vkGetPhysicalDeviceExternalFencePropertiesKHR",
- "vkCreateFence",
- "vkResetFences",
- "vkImportFenceFdKHR",
- "vkGetFenceFdKHR",
- "vkWaitForFences",
- "vkCreateDescriptorPool",
- "vkDestroyDescriptorPool",
- "vkResetDescriptorPool",
- "vkAllocateDescriptorSets",
- "vkFreeDescriptorSets",
- "vkCreateDescriptorSetLayout",
- "vkUpdateDescriptorSets",
- "vkCmdExecuteCommands",
- "vkCmdBindDescriptorSets",
- "vkDestroyDescriptorSetLayout",
- "vkAllocateCommandBuffers",
- "vkQueueSignalReleaseImageANDROID",
- "vkCmdPipelineBarrier",
- "vkCreateGraphicsPipelines",
-]
-
-SUCCESS_VAL = {
- "VkResult" : ["VK_SUCCESS"],
-}
-
-POSTPROCESSES = {
- "vkResetCommandPool" : """if (vkResetCommandPool_VkResult_return == VK_SUCCESS) {
- ResourceTracker::get()->resetCommandPoolStagingInfo(commandPool);
- }""",
- "vkAllocateCommandBuffers" : """if (vkAllocateCommandBuffers_VkResult_return == VK_SUCCESS) {
- ResourceTracker::get()->addToCommandPool(pAllocateInfo->commandPool, pAllocateInfo->commandBufferCount, pCommandBuffers);
- }""",
-}
-
-def is_cmdbuf_dispatch(api):
- return "VkCommandBuffer" == api.parameters[0].typeName
-
-def is_queue_dispatch(api):
- return "VkQueue" == api.parameters[0].typeName
-
-class VulkanFuncTable(VulkanWrapperGenerator):
- def __init__(self, module, typeInfo):
- VulkanWrapperGenerator.__init__(self, module, typeInfo)
- self.typeInfo = typeInfo
- self.cgen = CodeGen()
- self.entries = []
- self.entryFeatures = []
- self.cmdToFeatureType = {}
- self.feature = None
- self.featureType = None
-
- def onBegin(self,):
- cgen = self.cgen
- cgen.line("static void sOnInvalidDynamicallyCheckedCall(const char* apiname, const char* neededFeature)")
- cgen.beginBlock()
- cgen.stmt("ALOGE(\"invalid call to %s: %s not supported\", apiname, neededFeature)")
- cgen.stmt("abort()")
- cgen.endBlock()
- self.module.appendImpl(cgen.swapCode())
- pass
-
- def onBeginFeature(self, featureName, featureType):
- self.feature = featureName
- self.featureType = featureType
-
- def onEndFeature(self):
- self.feature = None
- self.featureType = None
-
- def onFeatureNewCmd(self, name):
- self.cmdToFeatureType[name] = self.featureType
-
- def onGenCmd(self, cmdinfo, name, alias):
- typeInfo = self.typeInfo
- cgen = self.cgen
- api = typeInfo.apis[name]
- self.entries.append(api)
- self.entryFeatures.append(self.feature)
-
- def genEncoderOrResourceTrackerCall(cgen, api, declareResources=True):
- cgen.stmt("AEMU_SCOPED_TRACE(\"%s\")" % api.name)
-
- if is_cmdbuf_dispatch(api):
- cgen.stmt("auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer)")
- elif is_queue_dispatch(api):
- cgen.stmt("auto vkEnc = ResourceTracker::getQueueEncoder(queue)")
- else:
- cgen.stmt("auto vkEnc = ResourceTracker::getThreadLocalEncoder()")
- callLhs = None
- retTypeName = api.getRetTypeExpr()
- if retTypeName != "void":
- retVar = api.getRetVarExpr()
- cgen.stmt("%s %s = (%s)0" % (retTypeName, retVar, retTypeName))
- callLhs = retVar
-
- if name in RESOURCE_TRACKER_ENTRIES:
- if declareResources:
- cgen.stmt("auto resources = ResourceTracker::get()")
- cgen.funcCall(
- callLhs, "resources->" + "on_" + api.name,
- ["vkEnc"] + SUCCESS_VAL.get(retTypeName, []) + \
- [p.paramName for p in api.parameters])
- else:
- cgen.funcCall(
- callLhs, "vkEnc->" + api.name, [p.paramName for p in api.parameters] + ["true /* do lock */"])
-
- if name in POSTPROCESSES:
- cgen.line(POSTPROCESSES[name])
-
- if retTypeName != "void":
- cgen.stmt("return %s" % retVar)
-
-
- api_entry = api.withModifiedName("entry_" + api.name)
-
- cgen.line("static " + self.cgen.makeFuncProto(api_entry))
- cgen.beginBlock()
- genEncoderOrResourceTrackerCall(cgen, api)
- cgen.endBlock()
-
- if self.isDeviceDispatch(api) and self.feature != "VK_VERSION_1_0":
- api_entry_dyn_check = api.withModifiedName("dynCheck_entry_" + api.name)
- cgen.line("static " + self.cgen.makeFuncProto(api_entry_dyn_check))
- cgen.beginBlock()
- if self.feature == "VK_VERSION_1_1":
- cgen.stmt("auto resources = ResourceTracker::get()")
- if "VkCommandBuffer" == api.parameters[0].typeName:
- cgen.stmt("VkDevice device = resources->getDevice(commandBuffer)")
- cgen.beginIf("resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1")
- cgen.stmt("sOnInvalidDynamicallyCheckedCall(\"%s\", \"%s\")" % (api.name, self.feature))
- cgen.endIf()
- elif self.feature != "VK_VERSION_1_0":
- cgen.stmt("auto resources = ResourceTracker::get()")
- if "VkCommandBuffer" == api.parameters[0].typeName:
- cgen.stmt("VkDevice device = resources->getDevice(commandBuffer);")
- cgen.beginIf("!resources->hasDeviceExtension(device, \"%s\")" % self.feature)
- cgen.stmt("sOnInvalidDynamicallyCheckedCall(\"%s\", \"%s\")" % (api.name, self.feature))
- cgen.endIf()
- else:
- print("About to generate a frivolous api!: dynCheck entry: %s" % api.name)
- raise
- genEncoderOrResourceTrackerCall(cgen, api, declareResources = False)
- cgen.endBlock()
-
- self.module.appendImpl(cgen.swapCode())
-
- def onEnd(self,):
- getProcAddressDecl = "void* goldfish_vulkan_get_proc_address(const char* name)"
- self.module.appendHeader(getProcAddressDecl + ";\n")
- self.module.appendImpl(getProcAddressDecl)
- self.cgen.beginBlock()
-
- prevFeature = None
- for e, f in zip(self.entries, self.entryFeatures):
- featureEndif = prevFeature is not None and (f != prevFeature)
- featureif = not featureEndif and (f != prevFeature)
-
- if featureEndif:
- self.cgen.leftline("#endif")
- self.cgen.leftline("#ifdef %s" % f)
-
- if featureif:
- self.cgen.leftline("#ifdef %s" % f)
-
- self.cgen.beginIf("!strcmp(name, \"%s\")" % e.name)
- if e.name in EXCLUDED_APIS:
- self.cgen.stmt("return nullptr")
- elif f == "VK_VERSION_1_1":
- self.cgen.stmt("return nullptr")
- elif f != "VK_VERSION_1_0":
- self.cgen.stmt("return nullptr")
- else:
- self.cgen.stmt("return (void*)%s" % ("entry_" + e.name))
- self.cgen.endIf()
- prevFeature = f
-
- self.cgen.leftline("#endif")
-
- self.cgen.stmt("return nullptr")
- self.cgen.endBlock()
- self.module.appendImpl(self.cgen.swapCode())
-
- getInstanceProcAddressDecl = "void* goldfish_vulkan_get_instance_proc_address(VkInstance instance, const char* name)"
- self.module.appendHeader(getInstanceProcAddressDecl + ";\n")
- self.module.appendImpl(getInstanceProcAddressDecl)
- self.cgen.beginBlock()
-
- self.cgen.stmt(
- "auto resources = ResourceTracker::get()")
- self.cgen.stmt(
- "bool has1_1OrHigher = resources->getApiVersionFromInstance(instance) >= VK_API_VERSION_1_1")
- self.cgen.stmt(
- "bool has1_2OrHigher = resources->getApiVersionFromInstance(instance) >= VK_API_VERSION_1_2")
-
- prevFeature = None
- for e, f in zip(self.entries, self.entryFeatures):
- featureEndif = prevFeature is not None and (f != prevFeature)
- featureif = not featureEndif and (f != prevFeature)
-
- if featureEndif:
- self.cgen.leftline("#endif")
- self.cgen.leftline("#ifdef %s" % f)
-
- if featureif:
- self.cgen.leftline("#ifdef %s" % f)
-
- self.cgen.beginIf("!strcmp(name, \"%s\")" % e.name)
-
- entryPointExpr = "(void*)%s" % ("entry_" + e.name)
-
- if e.name in EXCLUDED_APIS:
- self.cgen.stmt("return nullptr")
- elif f == "VK_VERSION_1_2":
- if self.isDeviceDispatch(e):
- self.cgen.stmt("return (void*)dynCheck_entry_%s" % e.name)
- else:
- self.cgen.stmt( \
- "return has1_2OrHigher ? %s : nullptr" % \
- entryPointExpr)
- elif f == "VK_VERSION_1_1":
- if self.isDeviceDispatch(e):
- self.cgen.stmt("return (void*)dynCheck_entry_%s" % e.name)
- else:
- self.cgen.stmt( \
- "return has1_1OrHigher ? %s : nullptr" % \
- entryPointExpr)
- elif f != "VK_VERSION_1_0":
- entryNeedsInstanceExtensionCheck = self.cmdToFeatureType[e.name] == "instance"
-
- entryPrefix = "dynCheck_" if self.isDeviceDispatch(e) else ""
- entryPointExpr = "(void*)%sentry_%s" % (entryPrefix, e.name)
-
- if entryNeedsInstanceExtensionCheck:
- self.cgen.stmt("bool hasExt = resources->hasInstanceExtension(instance, \"%s\")" % f)
- self.cgen.stmt("return hasExt ? %s : nullptr" % entryPointExpr)
- else:
- # TODO(b/236246382): We need to check the device extension support here.
- self.cgen.stmt("// TODO(b/236246382): Check support for device extension");
- self.cgen.stmt("return %s" % entryPointExpr)
-
- else:
- self.cgen.stmt("return %s" % entryPointExpr)
- self.cgen.endIf()
- prevFeature = f
-
- self.cgen.leftline("#endif")
-
- self.cgen.stmt("return nullptr")
- self.cgen.endBlock()
- self.module.appendImpl(self.cgen.swapCode())
-
- getDeviceProcAddressDecl = "void* goldfish_vulkan_get_device_proc_address(VkDevice device, const char* name)"
- self.module.appendHeader(getDeviceProcAddressDecl + ";\n")
- self.module.appendImpl(getDeviceProcAddressDecl)
- self.cgen.beginBlock()
-
- self.cgen.stmt(
- "auto resources = ResourceTracker::get()")
- self.cgen.stmt(
- "bool has1_1OrHigher = resources->getApiVersionFromDevice(device) >= VK_API_VERSION_1_1")
-
- prevFeature = None
- for e, f in zip(self.entries, self.entryFeatures):
- featureEndif = prevFeature is not None and (f != prevFeature)
- featureif = not featureEndif and (f != prevFeature)
-
- if featureEndif:
- self.cgen.leftline("#endif")
- self.cgen.leftline("#ifdef %s" % f)
-
- if featureif:
- self.cgen.leftline("#ifdef %s" % f)
-
- self.cgen.beginIf("!strcmp(name, \"%s\")" % e.name)
-
- entryPointExpr = "(void*)%s" % ("entry_" + e.name)
-
- if e.name in EXCLUDED_APIS:
- self.cgen.stmt("return nullptr")
- elif f == "VK_VERSION_1_1":
- self.cgen.stmt( \
- "return has1_1OrHigher ? %s : nullptr" % \
- entryPointExpr)
- elif f != "VK_VERSION_1_0":
- self.cgen.stmt( \
- "bool hasExt = resources->hasDeviceExtension(device, \"%s\")" % f)
- self.cgen.stmt("return hasExt ? %s : nullptr" % entryPointExpr)
- else:
- self.cgen.stmt("return %s" % entryPointExpr)
- self.cgen.endIf()
- prevFeature = f
-
- self.cgen.leftline("#endif")
-
- self.cgen.stmt("return nullptr")
- self.cgen.endBlock()
-
- self.module.appendImpl(self.cgen.swapCode())
-
- def isDeviceDispatch(self, api):
- # TODO(230793667): improve the heuristic and just use "cmdToFeatureType"
- return (len(api.parameters) > 0 and
- "VkDevice" == api.parameters[0].typeName) or (
- "VkCommandBuffer" == api.parameters[0].typeName and
- self.cmdToFeatureType.get(api.name, "") == "device")
diff --git a/codegen/vulkan/scripts/cereal/handlemap.py b/codegen/vulkan/scripts/cereal/handlemap.py
deleted file mode 100644
index 6360e37e..00000000
--- a/codegen/vulkan/scripts/cereal/handlemap.py
+++ /dev/null
@@ -1,264 +0,0 @@
-# Copyright (c) 2018 The Android Open Source Project
-# Copyright (c) 2018 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from .common.codegen import CodeGen
-from .common.vulkantypes import \
- VulkanAPI, makeVulkanTypeSimple, iterateVulkanType, VulkanTypeIterator
-
-from .wrapperdefs import VulkanWrapperGenerator
-from .wrapperdefs import STRUCT_EXTENSION_PARAM, STRUCT_EXTENSION_PARAM_FOR_WRITE
-
-class HandleMapCodegen(VulkanTypeIterator):
- def __init__(self, cgen, inputVar, handlemapVarName, prefix, isHandleFunc):
- self.cgen = cgen
- self.inputVar = inputVar
- self.prefix = prefix
- self.handlemapVarName = handlemapVarName
-
- def makeAccess(varName, asPtr = True):
- return lambda t: self.cgen.generalAccess(t, parentVarName = varName, asPtr = asPtr)
-
- def makeLengthAccess(varName):
- return lambda t: self.cgen.generalLengthAccess(t, parentVarName = varName)
-
- def makeLengthAccessGuard(varName):
- return lambda t: self.cgen.generalLengthAccessGuard(t, parentVarName=varName)
-
- self.exprAccessor = makeAccess(self.inputVar)
- self.exprAccessorValue = makeAccess(self.inputVar, asPtr = False)
- self.lenAccessor = makeLengthAccess(self.inputVar)
- self.lenAccessorGuard = makeLengthAccessGuard(self.inputVar)
-
- self.checked = False
- self.isHandleFunc = isHandleFunc
-
- def needSkip(self, vulkanType):
- return False
-
- def makeCastExpr(self, vulkanType):
- return "(%s)" % (
- self.cgen.makeCTypeDecl(vulkanType, useParamName=False))
-
- def asNonConstCast(self, access, vulkanType):
- if vulkanType.staticArrExpr:
- casted = "%s(%s)" % (self.makeCastExpr(vulkanType.getForAddressAccess().getForNonConstAccess()), access)
- elif vulkanType.accessibleAsPointer():
- casted = "%s(%s)" % (self.makeCastExpr(vulkanType.getForNonConstAccess()), access)
- else:
- casted = "%s(%s)" % (self.makeCastExpr(vulkanType.getForAddressAccess().getForNonConstAccess()), access)
- return casted
-
- def onCheck(self, vulkanType):
- pass
-
- def endCheck(self, vulkanType):
- pass
-
- def onCompoundType(self, vulkanType):
-
- if self.needSkip(vulkanType):
- self.cgen.line("// TODO: Unsupported : %s" %
- self.cgen.makeCTypeDecl(vulkanType))
- return
- access = self.exprAccessor(vulkanType)
- lenAccess = self.lenAccessor(vulkanType)
- lenAccessGuard = self.lenAccessorGuard(vulkanType)
-
- isPtr = vulkanType.pointerIndirectionLevels > 0
-
- if lenAccessGuard is not None:
- self.cgen.beginIf(lenAccessGuard)
-
- if isPtr:
- self.cgen.beginIf(access)
-
- if lenAccess is not None:
-
- loopVar = "i"
- access = "%s + %s" % (access, loopVar)
- forInit = "uint32_t %s = 0" % loopVar
- forCond = "%s < (uint32_t)%s" % (loopVar, lenAccess)
- forIncr = "++%s" % loopVar
-
- self.cgen.beginFor(forInit, forCond, forIncr)
-
- accessCasted = self.asNonConstCast(access, vulkanType)
- self.cgen.funcCall(None, self.prefix + vulkanType.typeName,
- [self.handlemapVarName, accessCasted])
-
- if lenAccess is not None:
- self.cgen.endFor()
-
- if isPtr:
- self.cgen.endIf()
-
- if lenAccessGuard is not None:
- self.cgen.endIf()
-
- def onString(self, vulkanType):
- pass
-
- def onStringArray(self, vulkanType):
- pass
-
- def onStaticArr(self, vulkanType):
- if not self.isHandleFunc(vulkanType):
- return
-
- accessLhs = self.exprAccessor(vulkanType)
- lenAccess = self.lenAccessor(vulkanType)
-
- self.cgen.stmt("%s->mapHandles_%s(%s%s, %s)" % \
- (self.handlemapVarName, vulkanType.typeName,
- self.makeCastExpr(vulkanType.getForAddressAccess().getForNonConstAccess()),
- accessLhs, lenAccess))
-
- def onStructExtension(self, vulkanType):
- access = self.exprAccessor(vulkanType)
-
- castedAccessExpr = "(%s)(%s)" % ("void*", access)
- self.cgen.beginIf(access)
- self.cgen.funcCall(None, self.prefix + "extension_struct",
- [self.handlemapVarName, castedAccessExpr])
- self.cgen.endIf()
-
- def onPointer(self, vulkanType):
- if self.needSkip(vulkanType):
- return
-
- if not self.isHandleFunc(vulkanType):
- return
-
- access = self.exprAccessor(vulkanType)
- lenAccess = self.lenAccessor(vulkanType)
- lenAccess = "1" if lenAccess is None else lenAccess
-
- self.cgen.beginIf(access)
-
- self.cgen.stmt( \
- "%s->mapHandles_%s(%s%s, %s)" % \
- (self.handlemapVarName,
- vulkanType.typeName,
- self.makeCastExpr(vulkanType.getForNonConstAccess()),
- access,
- lenAccess))
-
- self.cgen.endIf()
-
- def onValue(self, vulkanType):
- if not self.isHandleFunc(vulkanType):
- return
- access = self.exprAccessor(vulkanType)
- self.cgen.stmt(
- "%s->mapHandles_%s(%s%s)" % \
- (self.handlemapVarName, vulkanType.typeName,
- self.makeCastExpr(vulkanType.getForAddressAccess().getForNonConstAccess()),
- access))
-
-class VulkanHandleMap(VulkanWrapperGenerator):
- def __init__(self, module, typeInfo):
- VulkanWrapperGenerator.__init__(self, module, typeInfo)
-
- self.codegen = CodeGen()
-
- self.handlemapPrefix = "handlemap_"
- self.toMapVar = "toMap"
- self.handlemapVarName = "handlemap"
- self.handlemapParam = \
- makeVulkanTypeSimple(False, "VulkanHandleMapping", 1,
- self.handlemapVarName)
- self.voidType = makeVulkanTypeSimple(False, "void", 0)
-
- self.handlemapCodegen = \
- HandleMapCodegen(
- None,
- self.toMapVar,
- self.handlemapVarName,
- self.handlemapPrefix,
- lambda vtype : typeInfo.isHandleType(vtype.typeName))
-
- self.knownDefs = {}
-
- self.extensionHandlemapPrototype = \
- VulkanAPI(self.handlemapPrefix + "extension_struct",
- self.voidType,
- [self.handlemapParam, STRUCT_EXTENSION_PARAM_FOR_WRITE])
-
- def onBegin(self,):
- VulkanWrapperGenerator.onBegin(self)
- self.module.appendImpl(self.codegen.makeFuncDecl(
- self.extensionHandlemapPrototype))
-
- def onGenType(self, typeXml, name, alias):
- VulkanWrapperGenerator.onGenType(self, typeXml, name, alias)
-
- if name in self.knownDefs:
- return
-
- category = self.typeInfo.categoryOf(name)
-
- if category in ["struct", "union"] and alias:
- self.module.appendHeader(
- self.codegen.makeFuncAlias(self.handlemapPrefix + name,
- self.handlemapPrefix + alias))
-
- if category in ["struct", "union"] and not alias:
-
- structInfo = self.typeInfo.structs[name]
-
- typeFromName = \
- lambda varname: \
- makeVulkanTypeSimple(varname == "from", name, 1, varname)
-
- handlemapParams = \
- [self.handlemapParam] + \
- list(map(typeFromName, [self.toMapVar]))
-
- handlemapPrototype = \
- VulkanAPI(self.handlemapPrefix + name,
- self.voidType,
- handlemapParams)
-
- def funcDefGenerator(cgen):
- self.handlemapCodegen.cgen = cgen
- for p in handlemapParams:
- cgen.stmt("(void)%s" % p.paramName)
- for member in structInfo.members:
- iterateVulkanType(self.typeInfo, member,
- self.handlemapCodegen)
-
- self.module.appendHeader(
- self.codegen.makeFuncDecl(handlemapPrototype))
- self.module.appendImpl(
- self.codegen.makeFuncImpl(handlemapPrototype, funcDefGenerator))
-
- def onGenCmd(self, cmdinfo, name, alias):
- VulkanWrapperGenerator.onGenCmd(self, cmdinfo, name, alias)
-
- def onEnd(self,):
- VulkanWrapperGenerator.onEnd(self)
-
- def forEachExtensionHandlemap(ext, castedAccess, cgen):
- cgen.funcCall(None, self.handlemapPrefix + ext.name,
- [self.handlemapVarName, castedAccess])
-
- self.module.appendImpl(
- self.codegen.makeFuncImpl(
- self.extensionHandlemapPrototype,
- lambda cgen: self.emitForEachStructExtension(
- cgen,
- self.voidType,
- STRUCT_EXTENSION_PARAM_FOR_WRITE,
- forEachExtensionHandlemap)))
diff --git a/codegen/vulkan/scripts/cereal/marshaling.py b/codegen/vulkan/scripts/cereal/marshaling.py
deleted file mode 100644
index 3427fed7..00000000
--- a/codegen/vulkan/scripts/cereal/marshaling.py
+++ /dev/null
@@ -1,1037 +0,0 @@
-# Copyright (c) 2018 The Android Open Source Project
-# Copyright (c) 2018 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from copy import copy
-import hashlib, sys
-
-from .common.codegen import CodeGen, VulkanAPIWrapper
-from .common.vulkantypes import \
- VulkanAPI, makeVulkanTypeSimple, iterateVulkanType, VulkanTypeIterator, Atom, FuncExpr, FuncExprVal, FuncLambda
-
-from .wrapperdefs import VulkanWrapperGenerator
-from .wrapperdefs import VULKAN_STREAM_VAR_NAME
-from .wrapperdefs import ROOT_TYPE_VAR_NAME, ROOT_TYPE_PARAM
-from .wrapperdefs import STREAM_RET_TYPE
-from .wrapperdefs import MARSHAL_INPUT_VAR_NAME
-from .wrapperdefs import UNMARSHAL_INPUT_VAR_NAME
-from .wrapperdefs import PARAMETERS_MARSHALING
-from .wrapperdefs import PARAMETERS_MARSHALING_GUEST
-from .wrapperdefs import STYPE_OVERRIDE
-from .wrapperdefs import STRUCT_EXTENSION_PARAM, STRUCT_EXTENSION_PARAM_FOR_WRITE, EXTENSION_SIZE_WITH_STREAM_FEATURES_API_NAME
-from .wrapperdefs import API_PREFIX_MARSHAL
-from .wrapperdefs import API_PREFIX_UNMARSHAL
-
-from .marshalingdefs import KNOWN_FUNCTION_OPCODES, CUSTOM_MARSHAL_TYPES
-
-class VulkanMarshalingCodegen(VulkanTypeIterator):
-
- def __init__(self,
- cgen,
- streamVarName,
- rootTypeVarName,
- inputVarName,
- marshalPrefix,
- direction = "write",
- forApiOutput = False,
- dynAlloc = False,
- mapHandles = True,
- handleMapOverwrites = False,
- doFiltering = True):
- self.cgen = cgen
- self.direction = direction
- self.processSimple = "write" if self.direction == "write" else "read"
- self.forApiOutput = forApiOutput
-
- self.checked = False
-
- self.streamVarName = streamVarName
- self.rootTypeVarName = rootTypeVarName
- self.inputVarName = inputVarName
- self.marshalPrefix = marshalPrefix
-
- self.exprAccessor = lambda t: self.cgen.generalAccess(t, parentVarName = self.inputVarName, asPtr = True)
- self.exprValueAccessor = lambda t: self.cgen.generalAccess(t, parentVarName = self.inputVarName, asPtr = False)
- self.exprPrimitiveValueAccessor = lambda t: self.cgen.generalAccess(t, parentVarName = self.inputVarName, asPtr = False)
- self.lenAccessor = lambda t: self.cgen.generalLengthAccess(t, parentVarName = self.inputVarName)
- self.lenAccessorGuard = lambda t: self.cgen.generalLengthAccessGuard(
- t, parentVarName=self.inputVarName)
- self.filterVarAccessor = lambda t: self.cgen.filterVarAccess(t, parentVarName = self.inputVarName)
-
- self.dynAlloc = dynAlloc
- self.mapHandles = mapHandles
- self.handleMapOverwrites = handleMapOverwrites
- self.doFiltering = doFiltering
-
- def getTypeForStreaming(self, vulkanType):
- res = copy(vulkanType)
-
- if not vulkanType.accessibleAsPointer():
- res = res.getForAddressAccess()
-
- if vulkanType.staticArrExpr:
- res = res.getForAddressAccess()
-
- if self.direction == "write":
- return res
- else:
- return res.getForNonConstAccess()
-
- def makeCastExpr(self, vulkanType):
- return "(%s)" % (
- self.cgen.makeCTypeDecl(vulkanType, useParamName=False))
-
- def genStreamCall(self, vulkanType, toStreamExpr, sizeExpr):
- varname = self.streamVarName
- func = self.processSimple
- cast = self.makeCastExpr(self.getTypeForStreaming(vulkanType))
-
- self.cgen.stmt(
- "%s->%s(%s%s, %s)" % (varname, func, cast, toStreamExpr, sizeExpr))
-
- def genPrimitiveStreamCall(self, vulkanType, access):
- varname = self.streamVarName
-
- self.cgen.streamPrimitive(
- self.typeInfo,
- varname,
- access,
- vulkanType,
- direction=self.direction)
-
- def genHandleMappingCall(self, vulkanType, access, lenAccess):
-
- if lenAccess is None:
- lenAccess = "1"
- handle64Bytes = "8"
- else:
- handle64Bytes = "%s * 8" % lenAccess
-
- handle64Var = self.cgen.var()
- if lenAccess != "1":
- self.cgen.beginIf(lenAccess)
- self.cgen.stmt("uint64_t* %s" % handle64Var)
- self.cgen.stmt(
- "%s->alloc((void**)&%s, %s * 8)" % \
- (self.streamVarName, handle64Var, lenAccess))
- handle64VarAccess = handle64Var
- handle64VarType = \
- makeVulkanTypeSimple(False, "uint64_t", 1, paramName=handle64Var)
- else:
- self.cgen.stmt("uint64_t %s" % handle64Var)
- handle64VarAccess = "&%s" % handle64Var
- handle64VarType = \
- makeVulkanTypeSimple(False, "uint64_t", 0, paramName=handle64Var)
-
- if self.direction == "write":
- if self.handleMapOverwrites:
- self.cgen.stmt(
- "static_assert(8 == sizeof(%s), \"handle map overwrite requires %s to be 8 bytes long\")" % \
- (vulkanType.typeName, vulkanType.typeName))
- self.cgen.stmt(
- "%s->handleMapping()->mapHandles_%s((%s*)%s, %s)" %
- (self.streamVarName, vulkanType.typeName, vulkanType.typeName,
- access, lenAccess))
- self.genStreamCall(vulkanType, access, "8 * %s" % lenAccess)
- else:
- self.cgen.stmt(
- "%s->handleMapping()->mapHandles_%s_u64(%s, %s, %s)" %
- (self.streamVarName, vulkanType.typeName,
- access,
- handle64VarAccess, lenAccess))
- self.genStreamCall(handle64VarType, handle64VarAccess, handle64Bytes)
- else:
- self.genStreamCall(handle64VarType, handle64VarAccess, handle64Bytes)
- self.cgen.stmt(
- "%s->handleMapping()->mapHandles_u64_%s(%s, %s%s, %s)" %
- (self.streamVarName, vulkanType.typeName,
- handle64VarAccess,
- self.makeCastExpr(vulkanType.getForNonConstAccess()), access,
- lenAccess))
-
- if lenAccess != "1":
- self.cgen.endIf()
-
- def doAllocSpace(self, vulkanType):
- if self.dynAlloc and self.direction == "read":
- access = self.exprAccessor(vulkanType)
- lenAccess = self.lenAccessor(vulkanType)
- sizeof = self.cgen.sizeofExpr( \
- vulkanType.getForValueAccess())
- if lenAccess:
- bytesExpr = "%s * %s" % (lenAccess, sizeof)
- else:
- bytesExpr = sizeof
-
- self.cgen.stmt( \
- "%s->alloc((void**)&%s, %s)" %
- (self.streamVarName,
- access, bytesExpr))
-
- def getOptionalStringFeatureExpr(self, vulkanType):
- if vulkanType.optionalStr is not None:
- if vulkanType.optionalStr.startswith("streamFeature:"):
- splitted = vulkanType.optionalStr.split(":")
- featureExpr = "%s->getFeatureBits() & %s" % (self.streamVarName, splitted[1])
- return featureExpr
- return None
-
- def onCheck(self, vulkanType):
-
- if self.forApiOutput:
- return
-
- featureExpr = self.getOptionalStringFeatureExpr(vulkanType);
-
- self.checked = True
-
- access = self.exprAccessor(vulkanType)
-
- needConsistencyCheck = False
-
- self.cgen.line("// WARNING PTR CHECK")
- if (self.dynAlloc and self.direction == "read") or self.direction == "write":
- checkAccess = self.exprAccessor(vulkanType)
- addrExpr = "&" + checkAccess
- sizeExpr = self.cgen.sizeofExpr(vulkanType)
- else:
- checkName = "check_%s" % vulkanType.paramName
- self.cgen.stmt("%s %s" % (
- self.cgen.makeCTypeDecl(vulkanType, useParamName = False), checkName))
- checkAccess = checkName
- addrExpr = "&" + checkAccess
- sizeExpr = self.cgen.sizeofExpr(vulkanType)
- needConsistencyCheck = True
-
- if featureExpr is not None:
- self.cgen.beginIf(featureExpr)
-
- self.genPrimitiveStreamCall(
- vulkanType,
- checkAccess)
-
- if featureExpr is not None:
- self.cgen.endIf()
-
- if featureExpr is not None:
- self.cgen.beginIf("(!(%s) || %s)" % (featureExpr, access))
- else:
- self.cgen.beginIf(access)
-
- if needConsistencyCheck and featureExpr is None:
- self.cgen.beginIf("!(%s)" % checkName)
- self.cgen.stmt(
- "fprintf(stderr, \"fatal: %s inconsistent between guest and host\\n\")" % (access))
- self.cgen.endIf()
-
-
- def onCheckWithNullOptionalStringFeature(self, vulkanType):
- self.cgen.beginIf("%s->getFeatureBits() & VULKAN_STREAM_FEATURE_NULL_OPTIONAL_STRINGS_BIT" % self.streamVarName)
- self.onCheck(vulkanType)
-
- def endCheckWithNullOptionalStringFeature(self, vulkanType):
- self.endCheck(vulkanType)
- self.cgen.endIf()
- self.cgen.beginElse()
-
- def finalCheckWithNullOptionalStringFeature(self, vulkanType):
- self.cgen.endElse()
-
- def endCheck(self, vulkanType):
-
- if self.checked:
- self.cgen.endIf()
- self.checked = False
-
- def genFilterFunc(self, filterfunc, env):
-
- def loop(expr, lambdaEnv={}):
- def do_func(expr):
- fnamestr = expr.name.name
- if "not" == fnamestr:
- return "!(%s)" % (loop(expr.args[0], lambdaEnv))
- if "eq" == fnamestr:
- return "(%s == %s)" % (loop(expr.args[0], lambdaEnv), loop(expr.args[1], lambdaEnv))
- if "and" == fnamestr:
- return "(%s && %s)" % (loop(expr.args[0], lambdaEnv), loop(expr.args[1], lambdaEnv))
- if "or" == fnamestr:
- return "(%s || %s)" % (loop(expr.args[0], lambdaEnv), loop(expr.args[1], lambdaEnv))
- if "bitwise_and" == fnamestr:
- return "(%s & %s)" % (loop(expr.args[0], lambdaEnv), loop(expr.args[1], lambdaEnv))
- if "getfield" == fnamestr:
- ptrlevels = get_ptrlevels(expr.args[0].val.name)
- if ptrlevels == 0:
- return "%s.%s" % (loop(expr.args[0], lambdaEnv), expr.args[1].val)
- else:
- return "(%s(%s)).%s" % ("*" * ptrlevels, loop(expr.args[0], lambdaEnv), expr.args[1].val)
-
- if "if" == fnamestr:
- return "((%s) ? (%s) : (%s))" % (loop(expr.args[0], lambdaEnv), loop(expr.args[1], lambdaEnv), loop(expr.args[2], lambdaEnv))
-
- return "%s(%s)" % (fnamestr, ", ".join(map(lambda e: loop(e, lambdaEnv), expr.args)))
-
- def do_expratom(atomname, lambdaEnv= {}):
- if lambdaEnv.get(atomname, None) is not None:
- return atomname
-
- enventry = env.get(atomname, None)
- if None != enventry:
- return self.getEnvAccessExpr(atomname)
- return atomname
-
- def get_ptrlevels(atomname, lambdaEnv= {}):
- if lambdaEnv.get(atomname, None) is not None:
- return 0
-
- enventry = env.get(atomname, None)
- if None != enventry:
- return self.getPointerIndirectionLevels(atomname)
-
- return 0
-
- def do_exprval(expr, lambdaEnv= {}):
- expratom = expr.val
-
- if Atom == type(expratom):
- return do_expratom(expratom.name, lambdaEnv)
-
- return "%s" % expratom
-
- def do_lambda(expr, lambdaEnv= {}):
- params = expr.vs
- body = expr.body
- newEnv = {}
-
- for (k, v) in lambdaEnv.items():
- newEnv[k] = v
-
- for p in params:
- newEnv[p.name] = p.typ
-
- return "[](%s) { return %s; }" % (", ".join(list(map(lambda p: "%s %s" % (p.typ, p.name), params))), loop(body, lambdaEnv=newEnv))
-
- if FuncExpr == type(expr):
- return do_func(expr)
- if FuncLambda == type(expr):
- return do_lambda(expr)
- elif FuncExprVal == type(expr):
- return do_exprval(expr)
-
- return loop(filterfunc)
-
- def beginFilterGuard(self, vulkanType):
- if vulkanType.filterVar == None:
- return
-
- if self.doFiltering == False:
- return
-
- filterVarAccess = self.getEnvAccessExpr(vulkanType.filterVar)
-
- filterValsExpr = None
- filterFuncExpr = None
- filterExpr = None
-
- filterFeature = "%s->getFeatureBits() & VULKAN_STREAM_FEATURE_IGNORED_HANDLES_BIT" % self.streamVarName
-
- if None != vulkanType.filterVals:
- filterValsExpr = " || ".join(map(lambda filterval: "(%s == %s)" % (filterval, filterVarAccess), vulkanType.filterVals))
-
- if None != vulkanType.filterFunc:
- filterFuncExpr = self.genFilterFunc(vulkanType.filterFunc, self.currentStructInfo.environment)
-
- if None != filterValsExpr and None != filterFuncExpr:
- filterExpr = "%s || %s" % (filterValsExpr, filterFuncExpr)
- elif None == filterValsExpr and None == filterFuncExpr:
- # Assume is bool
- self.cgen.beginIf(filterVarAccess)
- elif None != filterValsExpr:
- self.cgen.beginIf("(!(%s) || (%s))" % (filterFeature, filterValsExpr))
- elif None != filterFuncExpr:
- self.cgen.beginIf("(!(%s) || (%s))" % (filterFeature, filterFuncExpr))
-
- def endFilterGuard(self, vulkanType, cleanupExpr=None):
- if vulkanType.filterVar == None:
- return
-
- if self.doFiltering == False:
- return
-
- if cleanupExpr == None:
- self.cgen.endIf()
- else:
- self.cgen.endIf()
- self.cgen.beginElse()
- self.cgen.stmt(cleanupExpr)
- self.cgen.endElse()
-
- def getEnvAccessExpr(self, varName):
- parentEnvEntry = self.currentStructInfo.environment.get(varName, None)
-
- if parentEnvEntry != None:
- isParentMember = parentEnvEntry["structmember"]
-
- if isParentMember:
- envAccess = self.exprValueAccessor(list(filter(lambda member: member.paramName == varName, self.currentStructInfo.members))[0])
- else:
- envAccess = varName
- return envAccess
-
- return None
-
- def getPointerIndirectionLevels(self, varName):
- parentEnvEntry = self.currentStructInfo.environment.get(varName, None)
-
- if parentEnvEntry != None:
- isParentMember = parentEnvEntry["structmember"]
-
- if isParentMember:
- return list(filter(lambda member: member.paramName == varName, self.currentStructInfo.members))[0].pointerIndirectionLevels
- else:
- return 0
- return 0
-
- return 0
-
-
- def onCompoundType(self, vulkanType):
-
- access = self.exprAccessor(vulkanType)
- lenAccess = self.lenAccessor(vulkanType)
- lenAccessGuard = self.lenAccessorGuard(vulkanType)
-
- self.beginFilterGuard(vulkanType)
-
- if vulkanType.pointerIndirectionLevels > 0:
- self.doAllocSpace(vulkanType)
-
- if lenAccess is not None:
- if lenAccessGuard is not None:
- self.cgen.beginIf(lenAccessGuard)
- loopVar = "i"
- access = "%s + %s" % (access, loopVar)
- forInit = "uint32_t %s = 0" % loopVar
- forCond = "%s < (uint32_t)%s" % (loopVar, lenAccess)
- forIncr = "++%s" % loopVar
- self.cgen.beginFor(forInit, forCond, forIncr)
-
- accessWithCast = "%s(%s)" % (self.makeCastExpr(
- self.getTypeForStreaming(vulkanType)), access)
-
- callParams = [self.streamVarName, self.rootTypeVarName, accessWithCast]
-
- for (bindName, localName) in vulkanType.binds.items():
- callParams.append(self.getEnvAccessExpr(localName))
-
- self.cgen.funcCall(None, self.marshalPrefix + vulkanType.typeName,
- callParams)
-
- if lenAccess is not None:
- self.cgen.endFor()
- if lenAccessGuard is not None:
- self.cgen.endIf()
-
- if self.direction == "read":
- self.endFilterGuard(vulkanType, "%s = 0" % self.exprAccessor(vulkanType))
- else:
- self.endFilterGuard(vulkanType)
-
- def onString(self, vulkanType):
-
- access = self.exprAccessor(vulkanType)
-
- if self.direction == "write":
- self.cgen.stmt("%s->putString(%s)" % (self.streamVarName, access))
- else:
- castExpr = \
- self.makeCastExpr( \
- self.getTypeForStreaming( \
- vulkanType.getForAddressAccess()))
-
- self.cgen.stmt( \
- "%s->loadStringInPlace(%s&%s)" % (self.streamVarName, castExpr, access))
-
- def onStringArray(self, vulkanType):
-
- access = self.exprAccessor(vulkanType)
- lenAccess = self.lenAccessor(vulkanType)
-
- if self.direction == "write":
- self.cgen.stmt("saveStringArray(%s, %s, %s)" % (self.streamVarName,
- access, lenAccess))
- else:
- castExpr = \
- self.makeCastExpr( \
- self.getTypeForStreaming( \
- vulkanType.getForAddressAccess()))
-
- self.cgen.stmt("%s->loadStringArrayInPlace(%s&%s)" % (self.streamVarName, castExpr, access))
-
- def onStaticArr(self, vulkanType):
- access = self.exprValueAccessor(vulkanType)
- lenAccess = self.lenAccessor(vulkanType)
- finalLenExpr = "%s * %s" % (lenAccess, self.cgen.sizeofExpr(vulkanType))
- self.genStreamCall(vulkanType, access, finalLenExpr)
-
- # Old version VkEncoder may have some sType values conflict with VkDecoder
- # of new versions. For host decoder, it should not carry the incorrect old
- # sType values to the |forUnmarshaling| struct. Instead it should overwrite
- # the sType value.
- def overwriteSType(self, vulkanType):
- if self.direction == "read":
- sTypeParam = copy(vulkanType)
- sTypeParam.paramName = "sType"
- sTypeAccess = self.exprAccessor(sTypeParam)
-
- typeName = vulkanType.parent.typeName
- if typeName in STYPE_OVERRIDE:
- self.cgen.stmt("%s = %s" %
- (sTypeAccess, STYPE_OVERRIDE[typeName]))
-
- def onStructExtension(self, vulkanType):
- self.overwriteSType(vulkanType)
-
- sTypeParam = copy(vulkanType)
- sTypeParam.paramName = "sType"
-
- access = self.exprAccessor(vulkanType)
- sizeVar = "%s_size" % vulkanType.paramName
-
- if self.direction == "read":
- castedAccessExpr = "(%s)(%s)" % ("void*", access)
- else:
- castedAccessExpr = access
-
- sTypeAccess = self.exprAccessor(sTypeParam)
- self.cgen.beginIf("%s == VK_STRUCTURE_TYPE_MAX_ENUM" %
- self.rootTypeVarName)
- self.cgen.stmt("%s = %s" % (self.rootTypeVarName, sTypeAccess))
- self.cgen.endIf()
-
- if self.direction == "read" and self.dynAlloc:
- self.cgen.stmt("size_t %s" % sizeVar)
- self.cgen.stmt("%s = %s->getBe32()" % \
- (sizeVar, self.streamVarName))
- self.cgen.stmt("%s = nullptr" % access)
- self.cgen.beginIf(sizeVar)
- self.cgen.stmt( \
- "%s->alloc((void**)&%s, sizeof(VkStructureType))" %
- (self.streamVarName, access))
-
- self.genStreamCall(vulkanType, access, "sizeof(VkStructureType)")
- self.cgen.stmt("VkStructureType extType = *(VkStructureType*)(%s)" % access)
- self.cgen.stmt( \
- "%s->alloc((void**)&%s, %s(%s->getFeatureBits(), %s, %s))" %
- (self.streamVarName, access, EXTENSION_SIZE_WITH_STREAM_FEATURES_API_NAME, self.streamVarName, self.rootTypeVarName, access))
- self.cgen.stmt("*(VkStructureType*)%s = extType" % access)
-
- self.cgen.funcCall(None, self.marshalPrefix + "extension_struct",
- [self.streamVarName, self.rootTypeVarName, castedAccessExpr])
- self.cgen.endIf()
- else:
-
- self.cgen.funcCall(None, self.marshalPrefix + "extension_struct",
- [self.streamVarName, self.rootTypeVarName, castedAccessExpr])
-
-
- def onPointer(self, vulkanType):
- access = self.exprAccessor(vulkanType)
-
- lenAccess = self.lenAccessor(vulkanType)
- lenAccessGuard = self.lenAccessorGuard(vulkanType)
-
- self.beginFilterGuard(vulkanType)
- self.doAllocSpace(vulkanType)
-
- if vulkanType.filterVar != None:
- print("onPointer Needs filter: %s filterVar %s" % (access, vulkanType.filterVar))
-
- if vulkanType.isHandleType() and self.mapHandles:
- self.genHandleMappingCall(vulkanType, access, lenAccess)
- else:
- if self.typeInfo.isNonAbiPortableType(vulkanType.typeName):
- if lenAccess is not None:
- if lenAccessGuard is not None:
- self.cgen.beginIf(lenAccessGuard)
- self.cgen.beginFor("uint32_t i = 0", "i < (uint32_t)%s" % lenAccess, "++i")
- self.genPrimitiveStreamCall(vulkanType.getForValueAccess(), "%s[i]" % access)
- self.cgen.endFor()
- if lenAccessGuard is not None:
- self.cgen.endIf()
- else:
- self.genPrimitiveStreamCall(vulkanType.getForValueAccess(), "(*%s)" % access)
- else:
- if lenAccess is not None:
- finalLenExpr = "%s * %s" % (
- lenAccess, self.cgen.sizeofExpr(vulkanType.getForValueAccess()))
- else:
- finalLenExpr = "%s" % (
- self.cgen.sizeofExpr(vulkanType.getForValueAccess()))
- self.genStreamCall(vulkanType, access, finalLenExpr)
-
- if self.direction == "read":
- self.endFilterGuard(vulkanType, "%s = 0" % access)
- else:
- self.endFilterGuard(vulkanType)
-
- def onValue(self, vulkanType):
- self.beginFilterGuard(vulkanType)
-
- if vulkanType.isHandleType() and self.mapHandles:
- access = self.exprAccessor(vulkanType)
- if vulkanType.filterVar != None:
- print("onValue Needs filter: %s filterVar %s" % (access, vulkanType.filterVar))
- self.genHandleMappingCall(
- vulkanType.getForAddressAccess(), access, "1")
- elif self.typeInfo.isNonAbiPortableType(vulkanType.typeName):
- access = self.exprPrimitiveValueAccessor(vulkanType)
- self.genPrimitiveStreamCall(vulkanType, access)
- else:
- access = self.exprAccessor(vulkanType)
- self.genStreamCall(vulkanType, access, self.cgen.sizeofExpr(vulkanType))
-
- self.endFilterGuard(vulkanType)
-
- def streamLetParameter(self, structInfo, letParamInfo):
- filterFeature = "%s->getFeatureBits() & VULKAN_STREAM_FEATURE_IGNORED_HANDLES_BIT" % self.streamVarName
- self.cgen.stmt("%s %s = 1" % (letParamInfo.typeName, letParamInfo.paramName))
-
- self.cgen.beginIf(filterFeature)
-
- if self.direction == "write":
- bodyExpr = self.currentStructInfo.environment[letParamInfo.paramName]["body"]
- self.cgen.stmt("%s = %s" % (letParamInfo.paramName, self.genFilterFunc(bodyExpr, self.currentStructInfo.environment)))
-
- self.genPrimitiveStreamCall(letParamInfo, letParamInfo.paramName)
-
- self.cgen.endIf()
-
-
-class VulkanMarshaling(VulkanWrapperGenerator):
-
- def __init__(self, module, typeInfo, variant="host"):
- VulkanWrapperGenerator.__init__(self, module, typeInfo)
-
- self.cgenHeader = CodeGen()
- self.cgenImpl = CodeGen()
-
- self.variant = variant
-
- self.currentFeature = None
- self.apiOpcodes = {}
- self.dynAlloc = self.variant != "guest"
-
- if self.variant == "guest":
- self.marshalingParams = PARAMETERS_MARSHALING_GUEST
- else:
- self.marshalingParams = PARAMETERS_MARSHALING
-
- self.writeCodegen = \
- VulkanMarshalingCodegen(
- None,
- VULKAN_STREAM_VAR_NAME,
- ROOT_TYPE_VAR_NAME,
- MARSHAL_INPUT_VAR_NAME,
- API_PREFIX_MARSHAL,
- direction = "write")
-
- self.readCodegen = \
- VulkanMarshalingCodegen(
- None,
- VULKAN_STREAM_VAR_NAME,
- ROOT_TYPE_VAR_NAME,
- UNMARSHAL_INPUT_VAR_NAME,
- API_PREFIX_UNMARSHAL,
- direction = "read",
- dynAlloc=self.dynAlloc)
-
- self.knownDefs = {}
-
- # Begin Vulkan API opcodes from something high
- # that is not going to interfere with renderControl
- # opcodes
- self.beginOpcodeOld = 20000
- self.endOpcodeOld = 30000
-
- self.beginOpcode = 200000000
- self.endOpcode = 300000000
- self.knownOpcodes = set()
-
- self.extensionMarshalPrototype = \
- VulkanAPI(API_PREFIX_MARSHAL + "extension_struct",
- STREAM_RET_TYPE,
- self.marshalingParams +
- [STRUCT_EXTENSION_PARAM])
-
- self.extensionUnmarshalPrototype = \
- VulkanAPI(API_PREFIX_UNMARSHAL + "extension_struct",
- STREAM_RET_TYPE,
- self.marshalingParams +
- [STRUCT_EXTENSION_PARAM_FOR_WRITE])
-
- def onBegin(self,):
- VulkanWrapperGenerator.onBegin(self)
- self.module.appendImpl(self.cgenImpl.makeFuncDecl(self.extensionMarshalPrototype))
- self.module.appendImpl(self.cgenImpl.makeFuncDecl(self.extensionUnmarshalPrototype))
-
- def onBeginFeature(self, featureName, featureType):
- VulkanWrapperGenerator.onBeginFeature(self, featureName, featureType)
- self.currentFeature = featureName
-
- def onGenType(self, typeXml, name, alias):
- VulkanWrapperGenerator.onGenType(self, typeXml, name, alias)
-
- if name in self.knownDefs:
- return
-
- category = self.typeInfo.categoryOf(name)
-
- if category in ["struct", "union"] and alias:
- self.module.appendHeader(
- self.cgenHeader.makeFuncAlias(API_PREFIX_MARSHAL + name,
- API_PREFIX_MARSHAL + alias))
- self.module.appendHeader(
- self.cgenHeader.makeFuncAlias(API_PREFIX_UNMARSHAL + name,
- API_PREFIX_UNMARSHAL + alias))
-
- if category in ["struct", "union"] and not alias:
-
- structInfo = self.typeInfo.structs[name]
-
- marshalParams = self.marshalingParams + \
- [makeVulkanTypeSimple(True, name, 1, MARSHAL_INPUT_VAR_NAME)]
-
- freeParams = []
- letParams = []
-
- for (envname, bindingInfo) in list(sorted(structInfo.environment.items(), key = lambda kv: kv[0])):
- if None == bindingInfo["binding"]:
- freeParams.append(makeVulkanTypeSimple(True, bindingInfo["type"], 0, envname))
- else:
- if not bindingInfo["structmember"]:
- letParams.append(makeVulkanTypeSimple(True, bindingInfo["type"], 0, envname))
-
- marshalPrototype = \
- VulkanAPI(API_PREFIX_MARSHAL + name,
- STREAM_RET_TYPE,
- marshalParams + freeParams)
-
- marshalPrototypeNoFilter = \
- VulkanAPI(API_PREFIX_MARSHAL + name,
- STREAM_RET_TYPE,
- marshalParams)
-
- def structMarshalingCustom(cgen):
- self.writeCodegen.cgen = cgen
- self.writeCodegen.currentStructInfo = structInfo
- self.writeCodegen.cgen.stmt("(void)%s" % ROOT_TYPE_VAR_NAME)
-
- marshalingCode = \
- CUSTOM_MARSHAL_TYPES[name]["common"] + \
- CUSTOM_MARSHAL_TYPES[name]["marshaling"].format(
- streamVarName=self.writeCodegen.streamVarName,
- rootTypeVarName=self.writeCodegen.rootTypeVarName,
- inputVarName=self.writeCodegen.inputVarName,
- newInputVarName=self.writeCodegen.inputVarName + "_new")
- for line in marshalingCode.split('\n'):
- cgen.line(line)
-
- def structMarshalingDef(cgen):
- self.writeCodegen.cgen = cgen
- self.writeCodegen.currentStructInfo = structInfo
- self.writeCodegen.cgen.stmt("(void)%s" % ROOT_TYPE_VAR_NAME)
-
- if category == "struct":
- # marshal 'let' parameters first
- for letp in letParams:
- self.writeCodegen.streamLetParameter(self.typeInfo, letp)
-
- for member in structInfo.members:
- iterateVulkanType(self.typeInfo, member, self.writeCodegen)
- if category == "union":
- iterateVulkanType(self.typeInfo, structInfo.members[0], self.writeCodegen)
-
- def structMarshalingDefNoFilter(cgen):
- self.writeCodegen.cgen = cgen
- self.writeCodegen.currentStructInfo = structInfo
- self.writeCodegen.doFiltering = False
- self.writeCodegen.cgen.stmt("(void)%s" % ROOT_TYPE_VAR_NAME)
-
- if category == "struct":
- # marshal 'let' parameters first
- for letp in letParams:
- self.writeCodegen.streamLetParameter(self.typeInfo, letp)
-
- for member in structInfo.members:
- iterateVulkanType(self.typeInfo, member, self.writeCodegen)
- if category == "union":
- iterateVulkanType(self.typeInfo, structInfo.members[0], self.writeCodegen)
- self.writeCodegen.doFiltering = True
-
- self.module.appendHeader(
- self.cgenHeader.makeFuncDecl(marshalPrototype))
-
- if name in CUSTOM_MARSHAL_TYPES:
- self.module.appendImpl(
- self.cgenImpl.makeFuncImpl(
- marshalPrototype, structMarshalingCustom))
- else:
- self.module.appendImpl(
- self.cgenImpl.makeFuncImpl(
- marshalPrototype, structMarshalingDef))
-
- if freeParams != []:
- self.module.appendHeader(
- self.cgenHeader.makeFuncDecl(marshalPrototypeNoFilter))
- self.module.appendImpl(
- self.cgenImpl.makeFuncImpl(
- marshalPrototypeNoFilter, structMarshalingDefNoFilter))
-
- unmarshalPrototype = \
- VulkanAPI(API_PREFIX_UNMARSHAL + name,
- STREAM_RET_TYPE,
- self.marshalingParams + [makeVulkanTypeSimple(False, name, 1, UNMARSHAL_INPUT_VAR_NAME)] + freeParams)
-
- unmarshalPrototypeNoFilter = \
- VulkanAPI(API_PREFIX_UNMARSHAL + name,
- STREAM_RET_TYPE,
- self.marshalingParams + [makeVulkanTypeSimple(False, name, 1, UNMARSHAL_INPUT_VAR_NAME)])
-
- def structUnmarshalingCustom(cgen):
- self.readCodegen.cgen = cgen
- self.readCodegen.currentStructInfo = structInfo
- self.writeCodegen.cgen.stmt("(void)%s" % ROOT_TYPE_VAR_NAME)
-
- unmarshalingCode = \
- CUSTOM_MARSHAL_TYPES[name]["common"] + \
- CUSTOM_MARSHAL_TYPES[name]["unmarshaling"].format(
- streamVarName=self.readCodegen.streamVarName,
- rootTypeVarName=self.readCodegen.rootTypeVarName,
- inputVarName=self.readCodegen.inputVarName,
- newInputVarName=self.readCodegen.inputVarName + "_new")
- for line in unmarshalingCode.split('\n'):
- cgen.line(line)
-
- def structUnmarshalingDef(cgen):
- self.readCodegen.cgen = cgen
- self.readCodegen.currentStructInfo = structInfo
- self.writeCodegen.cgen.stmt("(void)%s" % ROOT_TYPE_VAR_NAME)
-
- if category == "struct":
- # unmarshal 'let' parameters first
- for letp in letParams:
- self.readCodegen.streamLetParameter(self.typeInfo, letp)
-
- for member in structInfo.members:
- iterateVulkanType(self.typeInfo, member, self.readCodegen)
- if category == "union":
- iterateVulkanType(self.typeInfo, structInfo.members[0], self.readCodegen)
-
- def structUnmarshalingDefNoFilter(cgen):
- self.readCodegen.cgen = cgen
- self.readCodegen.currentStructInfo = structInfo
- self.readCodegen.doFiltering = False
- self.writeCodegen.cgen.stmt("(void)%s" % ROOT_TYPE_VAR_NAME)
-
- if category == "struct":
- # unmarshal 'let' parameters first
- for letp in letParams:
- iterateVulkanType(self.typeInfo, letp, self.readCodegen)
- for member in structInfo.members:
- iterateVulkanType(self.typeInfo, member, self.readCodegen)
- if category == "union":
- iterateVulkanType(self.typeInfo, structInfo.members[0], self.readCodegen)
- self.readCodegen.doFiltering = True
-
- self.module.appendHeader(
- self.cgenHeader.makeFuncDecl(unmarshalPrototype))
-
- if name in CUSTOM_MARSHAL_TYPES:
- self.module.appendImpl(
- self.cgenImpl.makeFuncImpl(
- unmarshalPrototype, structUnmarshalingCustom))
- else:
- self.module.appendImpl(
- self.cgenImpl.makeFuncImpl(
- unmarshalPrototype, structUnmarshalingDef))
-
- if freeParams != []:
- self.module.appendHeader(
- self.cgenHeader.makeFuncDecl(unmarshalPrototypeNoFilter))
- self.module.appendImpl(
- self.cgenImpl.makeFuncImpl(
- unmarshalPrototypeNoFilter, structUnmarshalingDefNoFilter))
-
- def onGenCmd(self, cmdinfo, name, alias):
- VulkanWrapperGenerator.onGenCmd(self, cmdinfo, name, alias)
- if name in KNOWN_FUNCTION_OPCODES:
- opcode = KNOWN_FUNCTION_OPCODES[name]
- else:
- hashCode = hashlib.sha256(name.encode()).hexdigest()[:8]
- hashInt = int(hashCode, 16)
- opcode = self.beginOpcode + hashInt % (self.endOpcode - self.beginOpcode)
- hasHashCollision = False
- while opcode in self.knownOpcodes:
- hasHashCollision = True
- opcode += 1
- if hasHashCollision:
- print("Hash collision occurred on function '{}'. "
- "Please add the following line to marshalingdefs.py:".format(name), file=sys.stderr)
- print("----------------------", file=sys.stderr)
- print(" \"{}\": {},".format(name, opcode), file=sys.stderr)
- print("----------------------", file=sys.stderr)
-
- self.module.appendHeader(
- "#define OP_%s %d\n" % (name, opcode))
- self.apiOpcodes[name] = (opcode, self.currentFeature)
- self.knownOpcodes.add(opcode)
-
- def doExtensionStructMarshalingCodegen(self, cgen, retType, extParam, forEach, funcproto, direction):
- accessVar = "structAccess"
- sizeVar = "currExtSize"
- cgen.stmt("VkInstanceCreateInfo* %s = (VkInstanceCreateInfo*)(%s)" % (accessVar, extParam.paramName))
- cgen.stmt("size_t %s = %s(%s->getFeatureBits(), %s, %s)" % (sizeVar,
- EXTENSION_SIZE_WITH_STREAM_FEATURES_API_NAME, VULKAN_STREAM_VAR_NAME, ROOT_TYPE_VAR_NAME, extParam.paramName))
-
- cgen.beginIf("!%s && %s" % (sizeVar, extParam.paramName))
-
- cgen.line("// unknown struct extension; skip and call on its pNext field");
- cgen.funcCall(None, funcproto.name, [
- "vkStream", ROOT_TYPE_VAR_NAME, "(void*)%s->pNext" % accessVar])
- cgen.stmt("return")
-
- cgen.endIf()
- cgen.beginElse()
-
- cgen.line("// known or null extension struct")
-
- if direction == "write":
- cgen.stmt("vkStream->putBe32(%s)" % sizeVar)
- elif not self.dynAlloc:
- cgen.stmt("vkStream->getBe32()");
-
- cgen.beginIf("!%s" % (sizeVar))
- cgen.line("// exit if this was a null extension struct (size == 0 in this branch)")
- cgen.stmt("return")
- cgen.endIf()
-
- cgen.endIf()
-
- # Now we can do stream stuff
- if direction == "write":
- cgen.stmt("vkStream->write(%s, sizeof(VkStructureType))" % extParam.paramName)
- elif not self.dynAlloc:
- cgen.stmt("uint64_t pNext_placeholder")
- placeholderAccess = "(&pNext_placeholder)"
- cgen.stmt("vkStream->read((void*)(&pNext_placeholder), sizeof(VkStructureType))")
- cgen.stmt("(void)pNext_placeholder")
-
- def fatalDefault(cgen):
- cgen.line("// fatal; the switch is only taken if the extension struct is known");
- cgen.stmt("abort()")
- pass
-
- self.emitForEachStructExtension(
- cgen,
- retType,
- extParam,
- forEach,
- defaultEmit=fatalDefault,
- rootTypeVar=ROOT_TYPE_PARAM)
-
- def onEnd(self,):
- VulkanWrapperGenerator.onEnd(self)
-
- def forEachExtensionMarshal(ext, castedAccess, cgen):
- cgen.funcCall(None, API_PREFIX_MARSHAL + ext.name,
- [VULKAN_STREAM_VAR_NAME, ROOT_TYPE_VAR_NAME, castedAccess])
-
- def forEachExtensionUnmarshal(ext, castedAccess, cgen):
- cgen.funcCall(None, API_PREFIX_UNMARSHAL + ext.name,
- [VULKAN_STREAM_VAR_NAME, ROOT_TYPE_VAR_NAME, castedAccess])
-
- self.module.appendImpl(
- self.cgenImpl.makeFuncImpl(
- self.extensionMarshalPrototype,
- lambda cgen: self.doExtensionStructMarshalingCodegen(
- cgen,
- STREAM_RET_TYPE,
- STRUCT_EXTENSION_PARAM,
- forEachExtensionMarshal,
- self.extensionMarshalPrototype,
- "write")))
-
- self.module.appendImpl(
- self.cgenImpl.makeFuncImpl(
- self.extensionUnmarshalPrototype,
- lambda cgen: self.doExtensionStructMarshalingCodegen(
- cgen,
- STREAM_RET_TYPE,
- STRUCT_EXTENSION_PARAM_FOR_WRITE,
- forEachExtensionUnmarshal,
- self.extensionUnmarshalPrototype,
- "read")))
-
- opcode2stringPrototype = \
- VulkanAPI("api_opcode_to_string",
- makeVulkanTypeSimple(True, "char", 1, "none"),
- [ makeVulkanTypeSimple(True, "uint32_t", 0, "opcode") ])
-
- self.module.appendHeader(
- self.cgenHeader.makeFuncDecl(opcode2stringPrototype))
-
- def emitOpcode2StringImpl(apiOpcodes, cgen):
- cgen.line("switch(opcode)")
- cgen.beginBlock()
-
- currFeature = None
-
- for (name, (opcodeNum, feature)) in sorted(apiOpcodes.items(), key = lambda x : x[1][0]):
- if not currFeature:
- cgen.leftline("#ifdef %s" % feature)
- currFeature = feature
-
- if currFeature and feature != currFeature:
- cgen.leftline("#endif")
- cgen.leftline("#ifdef %s" % feature)
- currFeature = feature
-
- cgen.line("case OP_%s:" % name)
- cgen.beginBlock()
- cgen.stmt("return \"OP_%s\"" % name)
- cgen.endBlock()
-
- if currFeature:
- cgen.leftline("#endif")
-
- cgen.line("default:")
- cgen.beginBlock()
- cgen.stmt("return \"OP_UNKNOWN_API_CALL\"")
- cgen.endBlock()
-
- cgen.endBlock()
-
- self.module.appendImpl(
- self.cgenImpl.makeFuncImpl(
- opcode2stringPrototype,
- lambda cgen: emitOpcode2StringImpl(self.apiOpcodes, cgen)))
-
- self.module.appendHeader(
- "#define OP_vkFirst_old %d\n" % (self.beginOpcodeOld))
- self.module.appendHeader(
- "#define OP_vkLast_old %d\n" % (self.endOpcodeOld))
- self.module.appendHeader(
- "#define OP_vkFirst %d\n" % (self.beginOpcode))
- self.module.appendHeader(
- "#define OP_vkLast %d\n" % (self.endOpcode))
diff --git a/codegen/vulkan/scripts/cereal/marshalingdefs.py b/codegen/vulkan/scripts/cereal/marshalingdefs.py
deleted file mode 100644
index 88791f68..00000000
--- a/codegen/vulkan/scripts/cereal/marshalingdefs.py
+++ /dev/null
@@ -1,528 +0,0 @@
-# Copyright (c) 2021 The Android Open Source Project
-# Copyright (c) 2021 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-KNOWN_FUNCTION_OPCODES = {
- "vkCreateInstance": 20000,
- "vkDestroyInstance": 20001,
- "vkEnumeratePhysicalDevices": 20002,
- "vkGetPhysicalDeviceFeatures": 20003,
- "vkGetPhysicalDeviceFormatProperties": 20004,
- "vkGetPhysicalDeviceImageFormatProperties": 20005,
- "vkGetPhysicalDeviceProperties": 20006,
- "vkGetPhysicalDeviceQueueFamilyProperties": 20007,
- "vkGetPhysicalDeviceMemoryProperties": 20008,
- "vkGetInstanceProcAddr": 20009,
- "vkGetDeviceProcAddr": 20010,
- "vkCreateDevice": 20011,
- "vkDestroyDevice": 20012,
- "vkEnumerateInstanceExtensionProperties": 20013,
- "vkEnumerateDeviceExtensionProperties": 20014,
- "vkEnumerateInstanceLayerProperties": 20015,
- "vkEnumerateDeviceLayerProperties": 20016,
- "vkGetDeviceQueue": 20017,
- "vkQueueSubmit": 20018,
- "vkQueueWaitIdle": 20019,
- "vkDeviceWaitIdle": 20020,
- "vkAllocateMemory": 20021,
- "vkFreeMemory": 20022,
- "vkMapMemory": 20023,
- "vkUnmapMemory": 20024,
- "vkFlushMappedMemoryRanges": 20025,
- "vkInvalidateMappedMemoryRanges": 20026,
- "vkGetDeviceMemoryCommitment": 20027,
- "vkBindBufferMemory": 20028,
- "vkBindImageMemory": 20029,
- "vkGetBufferMemoryRequirements": 20030,
- "vkGetImageMemoryRequirements": 20031,
- "vkGetImageSparseMemoryRequirements": 20032,
- "vkGetPhysicalDeviceSparseImageFormatProperties": 20033,
- "vkQueueBindSparse": 20034,
- "vkCreateFence": 20035,
- "vkDestroyFence": 20036,
- "vkResetFences": 20037,
- "vkGetFenceStatus": 20038,
- "vkWaitForFences": 20039,
- "vkCreateSemaphore": 20040,
- "vkDestroySemaphore": 20041,
- "vkCreateEvent": 20042,
- "vkDestroyEvent": 20043,
- "vkGetEventStatus": 20044,
- "vkSetEvent": 20045,
- "vkResetEvent": 20046,
- "vkCreateQueryPool": 20047,
- "vkDestroyQueryPool": 20048,
- "vkGetQueryPoolResults": 20049,
- "vkCreateBuffer": 20050,
- "vkDestroyBuffer": 20051,
- "vkCreateBufferView": 20052,
- "vkDestroyBufferView": 20053,
- "vkCreateImage": 20054,
- "vkDestroyImage": 20055,
- "vkGetImageSubresourceLayout": 20056,
- "vkCreateImageView": 20057,
- "vkDestroyImageView": 20058,
- "vkCreateShaderModule": 20059,
- "vkDestroyShaderModule": 20060,
- "vkCreatePipelineCache": 20061,
- "vkDestroyPipelineCache": 20062,
- "vkGetPipelineCacheData": 20063,
- "vkMergePipelineCaches": 20064,
- "vkCreateGraphicsPipelines": 20065,
- "vkCreateComputePipelines": 20066,
- "vkDestroyPipeline": 20067,
- "vkCreatePipelineLayout": 20068,
- "vkDestroyPipelineLayout": 20069,
- "vkCreateSampler": 20070,
- "vkDestroySampler": 20071,
- "vkCreateDescriptorSetLayout": 20072,
- "vkDestroyDescriptorSetLayout": 20073,
- "vkCreateDescriptorPool": 20074,
- "vkDestroyDescriptorPool": 20075,
- "vkResetDescriptorPool": 20076,
- "vkAllocateDescriptorSets": 20077,
- "vkFreeDescriptorSets": 20078,
- "vkUpdateDescriptorSets": 20079,
- "vkCreateFramebuffer": 20080,
- "vkDestroyFramebuffer": 20081,
- "vkCreateRenderPass": 20082,
- "vkDestroyRenderPass": 20083,
- "vkGetRenderAreaGranularity": 20084,
- "vkCreateCommandPool": 20085,
- "vkDestroyCommandPool": 20086,
- "vkResetCommandPool": 20087,
- "vkAllocateCommandBuffers": 20088,
- "vkFreeCommandBuffers": 20089,
- "vkBeginCommandBuffer": 20090,
- "vkEndCommandBuffer": 20091,
- "vkResetCommandBuffer": 20092,
- "vkCmdBindPipeline": 20093,
- "vkCmdSetViewport": 20094,
- "vkCmdSetScissor": 20095,
- "vkCmdSetLineWidth": 20096,
- "vkCmdSetDepthBias": 20097,
- "vkCmdSetBlendConstants": 20098,
- "vkCmdSetDepthBounds": 20099,
- "vkCmdSetStencilCompareMask": 20100,
- "vkCmdSetStencilWriteMask": 20101,
- "vkCmdSetStencilReference": 20102,
- "vkCmdBindDescriptorSets": 20103,
- "vkCmdBindIndexBuffer": 20104,
- "vkCmdBindVertexBuffers": 20105,
- "vkCmdDraw": 20106,
- "vkCmdDrawIndexed": 20107,
- "vkCmdDrawIndirect": 20108,
- "vkCmdDrawIndexedIndirect": 20109,
- "vkCmdDispatch": 20110,
- "vkCmdDispatchIndirect": 20111,
- "vkCmdCopyBuffer": 20112,
- "vkCmdCopyImage": 20113,
- "vkCmdBlitImage": 20114,
- "vkCmdCopyBufferToImage": 20115,
- "vkCmdCopyImageToBuffer": 20116,
- "vkCmdUpdateBuffer": 20117,
- "vkCmdFillBuffer": 20118,
- "vkCmdClearColorImage": 20119,
- "vkCmdClearDepthStencilImage": 20120,
- "vkCmdClearAttachments": 20121,
- "vkCmdResolveImage": 20122,
- "vkCmdSetEvent": 20123,
- "vkCmdResetEvent": 20124,
- "vkCmdWaitEvents": 20125,
- "vkCmdPipelineBarrier": 20126,
- "vkCmdBeginQuery": 20127,
- "vkCmdEndQuery": 20128,
- "vkCmdResetQueryPool": 20129,
- "vkCmdWriteTimestamp": 20130,
- "vkCmdCopyQueryPoolResults": 20131,
- "vkCmdPushConstants": 20132,
- "vkCmdBeginRenderPass": 20133,
- "vkCmdNextSubpass": 20134,
- "vkCmdEndRenderPass": 20135,
- "vkCmdExecuteCommands": 20136,
- "vkEnumerateInstanceVersion": 20137,
- "vkBindBufferMemory2": 20138,
- "vkBindImageMemory2": 20139,
- "vkGetDeviceGroupPeerMemoryFeatures": 20140,
- "vkCmdSetDeviceMask": 20141,
- "vkCmdDispatchBase": 20142,
- "vkEnumeratePhysicalDeviceGroups": 20143,
- "vkGetImageMemoryRequirements2": 20144,
- "vkGetBufferMemoryRequirements2": 20145,
- "vkGetImageSparseMemoryRequirements2": 20146,
- "vkGetPhysicalDeviceFeatures2": 20147,
- "vkGetPhysicalDeviceProperties2": 20148,
- "vkGetPhysicalDeviceFormatProperties2": 20149,
- "vkGetPhysicalDeviceImageFormatProperties2": 20150,
- "vkGetPhysicalDeviceQueueFamilyProperties2": 20151,
- "vkGetPhysicalDeviceMemoryProperties2": 20152,
- "vkGetPhysicalDeviceSparseImageFormatProperties2": 20153,
- "vkTrimCommandPool": 20154,
- "vkGetDeviceQueue2": 20155,
- "vkCreateSamplerYcbcrConversion": 20156,
- "vkDestroySamplerYcbcrConversion": 20157,
- "vkCreateDescriptorUpdateTemplate": 20158,
- "vkDestroyDescriptorUpdateTemplate": 20159,
- "vkUpdateDescriptorSetWithTemplate": 20160,
- "vkGetPhysicalDeviceExternalBufferProperties": 20161,
- "vkGetPhysicalDeviceExternalFenceProperties": 20162,
- "vkGetPhysicalDeviceExternalSemaphoreProperties": 20163,
- "vkGetDescriptorSetLayoutSupport": 20164,
- "vkDestroySurfaceKHR": 20165,
- "vkGetPhysicalDeviceSurfaceSupportKHR": 20166,
- "vkGetPhysicalDeviceSurfaceCapabilitiesKHR": 20167,
- "vkGetPhysicalDeviceSurfaceFormatsKHR": 20168,
- "vkGetPhysicalDeviceSurfacePresentModesKHR": 20169,
- "vkCreateSwapchainKHR": 20170,
- "vkDestroySwapchainKHR": 20171,
- "vkGetSwapchainImagesKHR": 20172,
- "vkAcquireNextImageKHR": 20173,
- "vkQueuePresentKHR": 20174,
- "vkGetDeviceGroupPresentCapabilitiesKHR": 20175,
- "vkGetDeviceGroupSurfacePresentModesKHR": 20176,
- "vkGetPhysicalDevicePresentRectanglesKHR": 20177,
- "vkAcquireNextImage2KHR": 20178,
- "vkGetPhysicalDeviceDisplayPropertiesKHR": 20179,
- "vkGetPhysicalDeviceDisplayPlanePropertiesKHR": 20180,
- "vkGetDisplayPlaneSupportedDisplaysKHR": 20181,
- "vkGetDisplayModePropertiesKHR": 20182,
- "vkCreateDisplayModeKHR": 20183,
- "vkGetDisplayPlaneCapabilitiesKHR": 20184,
- "vkCreateDisplayPlaneSurfaceKHR": 20185,
- "vkCreateSharedSwapchainsKHR": 20186,
- "vkCreateXlibSurfaceKHR": 20187,
- "vkGetPhysicalDeviceXlibPresentationSupportKHR": 20188,
- "vkCreateXcbSurfaceKHR": 20189,
- "vkGetPhysicalDeviceXcbPresentationSupportKHR": 20190,
- "vkCreateWaylandSurfaceKHR": 20191,
- "vkGetPhysicalDeviceWaylandPresentationSupportKHR": 20192,
- "vkCreateMirSurfaceKHR": 20193,
- "vkGetPhysicalDeviceMirPresentationSupportKHR": 20194,
- "vkCreateAndroidSurfaceKHR": 20195,
- "vkCreateWin32SurfaceKHR": 20196,
- "vkGetPhysicalDeviceWin32PresentationSupportKHR": 20197,
- "vkGetPhysicalDeviceFeatures2KHR": 20198,
- "vkGetPhysicalDeviceProperties2KHR": 20199,
- "vkGetPhysicalDeviceFormatProperties2KHR": 20200,
- "vkGetPhysicalDeviceImageFormatProperties2KHR": 20201,
- "vkGetPhysicalDeviceQueueFamilyProperties2KHR": 20202,
- "vkGetPhysicalDeviceMemoryProperties2KHR": 20203,
- "vkGetPhysicalDeviceSparseImageFormatProperties2KHR": 20204,
- "vkGetDeviceGroupPeerMemoryFeaturesKHR": 20205,
- "vkCmdSetDeviceMaskKHR": 20206,
- "vkCmdDispatchBaseKHR": 20207,
- "vkTrimCommandPoolKHR": 20208,
- "vkEnumeratePhysicalDeviceGroupsKHR": 20209,
- "vkGetPhysicalDeviceExternalBufferPropertiesKHR": 20210,
- "vkGetMemoryWin32HandleKHR": 20211,
- "vkGetMemoryWin32HandlePropertiesKHR": 20212,
- "vkGetMemoryFdKHR": 20213,
- "vkGetMemoryFdPropertiesKHR": 20214,
- "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR": 20215,
- "vkImportSemaphoreWin32HandleKHR": 20216,
- "vkGetSemaphoreWin32HandleKHR": 20217,
- "vkImportSemaphoreFdKHR": 20218,
- "vkGetSemaphoreFdKHR": 20219,
- "vkCmdPushDescriptorSetKHR": 20220,
- "vkCmdPushDescriptorSetWithTemplateKHR": 20221,
- "vkCreateDescriptorUpdateTemplateKHR": 20222,
- "vkDestroyDescriptorUpdateTemplateKHR": 20223,
- "vkUpdateDescriptorSetWithTemplateKHR": 20224,
- "vkCreateRenderPass2KHR": 20225,
- "vkCmdBeginRenderPass2KHR": 20226,
- "vkCmdNextSubpass2KHR": 20227,
- "vkCmdEndRenderPass2KHR": 20228,
- "vkGetSwapchainStatusKHR": 20229,
- "vkGetPhysicalDeviceExternalFencePropertiesKHR": 20230,
- "vkImportFenceWin32HandleKHR": 20231,
- "vkGetFenceWin32HandleKHR": 20232,
- "vkImportFenceFdKHR": 20233,
- "vkGetFenceFdKHR": 20234,
- "vkGetPhysicalDeviceSurfaceCapabilities2KHR": 20235,
- "vkGetPhysicalDeviceSurfaceFormats2KHR": 20236,
- "vkGetPhysicalDeviceDisplayProperties2KHR": 20237,
- "vkGetPhysicalDeviceDisplayPlaneProperties2KHR": 20238,
- "vkGetDisplayModeProperties2KHR": 20239,
- "vkGetDisplayPlaneCapabilities2KHR": 20240,
- "vkGetImageMemoryRequirements2KHR": 20241,
- "vkGetBufferMemoryRequirements2KHR": 20242,
- "vkGetImageSparseMemoryRequirements2KHR": 20243,
- "vkCreateSamplerYcbcrConversionKHR": 20244,
- "vkDestroySamplerYcbcrConversionKHR": 20245,
- "vkBindBufferMemory2KHR": 20246,
- "vkBindImageMemory2KHR": 20247,
- "vkGetDescriptorSetLayoutSupportKHR": 20248,
- "vkCmdDrawIndirectCountKHR": 20249,
- "vkCmdDrawIndexedIndirectCountKHR": 20250,
- "vkGetSwapchainGrallocUsageANDROID": 20251,
- "vkAcquireImageANDROID": 20252,
- "vkQueueSignalReleaseImageANDROID": 20253,
- "vkCreateDebugReportCallbackEXT": 20254,
- "vkDestroyDebugReportCallbackEXT": 20255,
- "vkDebugReportMessageEXT": 20256,
- "vkDebugMarkerSetObjectTagEXT": 20257,
- "vkDebugMarkerSetObjectNameEXT": 20258,
- "vkCmdDebugMarkerBeginEXT": 20259,
- "vkCmdDebugMarkerEndEXT": 20260,
- "vkCmdDebugMarkerInsertEXT": 20261,
- "vkCmdDrawIndirectCountAMD": 20262,
- "vkCmdDrawIndexedIndirectCountAMD": 20263,
- "vkGetShaderInfoAMD": 20264,
- "vkGetPhysicalDeviceExternalImageFormatPropertiesNV": 20265,
- "vkGetMemoryWin32HandleNV": 20266,
- "vkCreateViSurfaceNN": 20267,
- "vkCmdBeginConditionalRenderingEXT": 20268,
- "vkCmdEndConditionalRenderingEXT": 20269,
- "vkCmdProcessCommandsNVX": 20270,
- "vkCmdReserveSpaceForCommandsNVX": 20271,
- "vkCreateIndirectCommandsLayoutNVX": 20272,
- "vkDestroyIndirectCommandsLayoutNVX": 20273,
- "vkCreateObjectTableNVX": 20274,
- "vkDestroyObjectTableNVX": 20275,
- "vkRegisterObjectsNVX": 20276,
- "vkUnregisterObjectsNVX": 20277,
- "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX": 20278,
- "vkCmdSetViewportWScalingNV": 20279,
- "vkReleaseDisplayEXT": 20280,
- "vkAcquireXlibDisplayEXT": 20281,
- "vkGetRandROutputDisplayEXT": 20282,
- "vkGetPhysicalDeviceSurfaceCapabilities2EXT": 20283,
- "vkDisplayPowerControlEXT": 20284,
- "vkRegisterDeviceEventEXT": 20285,
- "vkRegisterDisplayEventEXT": 20286,
- "vkGetSwapchainCounterEXT": 20287,
- "vkGetRefreshCycleDurationGOOGLE": 20288,
- "vkGetPastPresentationTimingGOOGLE": 20289,
- "vkCmdSetDiscardRectangleEXT": 20290,
- "vkSetHdrMetadataEXT": 20291,
- "vkCreateIOSSurfaceMVK": 20292,
- "vkCreateMacOSSurfaceMVK": 20293,
- "vkSetDebugUtilsObjectNameEXT": 20294,
- "vkSetDebugUtilsObjectTagEXT": 20295,
- "vkQueueBeginDebugUtilsLabelEXT": 20296,
- "vkQueueEndDebugUtilsLabelEXT": 20297,
- "vkQueueInsertDebugUtilsLabelEXT": 20298,
- "vkCmdBeginDebugUtilsLabelEXT": 20299,
- "vkCmdEndDebugUtilsLabelEXT": 20300,
- "vkCmdInsertDebugUtilsLabelEXT": 20301,
- "vkCreateDebugUtilsMessengerEXT": 20302,
- "vkDestroyDebugUtilsMessengerEXT": 20303,
- "vkSubmitDebugUtilsMessageEXT": 20304,
- "vkGetAndroidHardwareBufferPropertiesANDROID": 20305,
- "vkGetMemoryAndroidHardwareBufferANDROID": 20306,
- "vkCmdSetSampleLocationsEXT": 20307,
- "vkGetPhysicalDeviceMultisamplePropertiesEXT": 20308,
- "vkCreateValidationCacheEXT": 20309,
- "vkDestroyValidationCacheEXT": 20310,
- "vkMergeValidationCachesEXT": 20311,
- "vkGetValidationCacheDataEXT": 20312,
- "vkGetMemoryHostPointerPropertiesEXT": 20313,
- "vkCmdWriteBufferMarkerAMD": 20314,
- "vkCmdSetCheckpointNV": 20315,
- "vkGetQueueCheckpointDataNV": 20316,
- "vkMapMemoryIntoAddressSpaceGOOGLE": 20317,
- "vkUpdateDescriptorSetWithTemplateSizedGOOGLE": 20320,
- "vkBeginCommandBufferAsyncGOOGLE": 20321,
- "vkEndCommandBufferAsyncGOOGLE": 20322,
- "vkResetCommandBufferAsyncGOOGLE": 20323,
- "vkCommandBufferHostSyncGOOGLE": 20324,
- "vkCreateImageWithRequirementsGOOGLE": 20325,
- "vkCreateBufferWithRequirementsGOOGLE": 20326,
- "vkGetMemoryHostAddressInfoGOOGLE": 20327,
- "vkFreeMemorySyncGOOGLE": 20328,
- "vkQueueHostSyncGOOGLE": 20329,
- "vkQueueSubmitAsyncGOOGLE": 20330,
- "vkQueueWaitIdleAsyncGOOGLE": 20331,
- "vkQueueBindSparseAsyncGOOGLE": 20332,
- "vkGetLinearImageLayoutGOOGLE": 20333,
- "vkGetMTLDeviceMVK": 20334,
- "vkSetMTLTextureMVK": 20335,
- "vkGetMTLTextureMVK": 20336,
- "vkGetMTLBufferMVK": 20337,
- "vkUseIOSurfaceMVK": 20338,
- "vkGetIOSurfaceMVK": 20339,
- "vkQueueFlushCommandsGOOGLE": 20340,
- "vkGetBlobGOOGLE": 20341,
-}
-
-CUSTOM_MARSHAL_TYPES = {
- "VkAccelerationStructureInstanceKHR": {
- "common": """
-typedef struct VkAccelerationStructureInstanceKHRWithoutBitFields {
- VkTransformMatrixKHR transform;
- uint32_t dwords[2];
- uint64_t accelerationStructureReference;
-} VkAccelerationStructureInstanceKHRWithoutBitFields;
-""",
- "marshaling": """
-const VkAccelerationStructureInstanceKHRWithoutBitFields* {newInputVarName} = (const VkAccelerationStructureInstanceKHRWithoutBitFields*)({inputVarName});
-marshal_VkTransformMatrixKHR({streamVarName}, {rootTypeVarName}, (VkTransformMatrixKHR*)(&{newInputVarName}->transform));
-for (uint32_t i = 0; i < 2; i++) {{
- {streamVarName}->write((uint32_t*)&({newInputVarName}->dwords[i]), sizeof(uint32_t));
-}}
-{streamVarName}->write((uint64_t*)&{newInputVarName}->accelerationStructureReference, sizeof(uint64_t));
-""",
- "unmarshaling": """
-VkAccelerationStructureInstanceKHRWithoutBitFields* {newInputVarName} = (VkAccelerationStructureInstanceKHRWithoutBitFields*)({inputVarName});
-unmarshal_VkTransformMatrixKHR({streamVarName}, {rootTypeVarName}, (VkTransformMatrixKHR*)(&{newInputVarName}->transform));
-for (uint32_t i = 0; i < 2; i++) {{
- {streamVarName}->read((uint32_t*)&({newInputVarName}->dwords[i]), sizeof(uint32_t));
-}}
-{streamVarName}->read((uint64_t*)&{newInputVarName}->accelerationStructureReference, sizeof(uint64_t));
-""",
- "reservedmarshaling": """
-(void)vkStream;
-const VkAccelerationStructureInstanceKHRWithoutBitFields* {newInputVarName} = (const VkAccelerationStructureInstanceKHRWithoutBitFields*)({inputVarName});
-reservedmarshal_VkTransformMatrixKHR({streamVarName}, {rootTypeVarName}, (VkTransformMatrixKHR*)(&{newInputVarName}->transform), ptr);
-for (uint32_t i = 0; i < 2; i++) {{
- memcpy(*ptr, (uint32_t*)&({newInputVarName}->dwords[i]), sizeof(uint32_t));
- *ptr += sizeof(uint32_t);
-}}
-memcpy(*ptr, (uint64_t*)&{newInputVarName}->accelerationStructureReference, sizeof(uint64_t));
-*ptr += sizeof(uint64_t);
-""",
- "reservedunmarshaling": """
-VkAccelerationStructureInstanceKHRWithoutBitFields* {newInputVarName} = (VkAccelerationStructureInstanceKHRWithoutBitFields*)({inputVarName});
-reservedunmarshal_VkTransformMatrixKHR({streamVarName}, {rootTypeVarName}, (VkTransformMatrixKHR*)(&{newInputVarName}->transform), ptr);
-for (uint32_t i = 0; i < 2; i++) {{
- memcpy((uint32_t*)&({newInputVarName}->dwords[i]), *ptr, sizeof(uint32_t));
- *ptr += sizeof(uint32_t);
-}}
-memcpy((uint64_t*)&{newInputVarName}->accelerationStructureReference, *ptr, sizeof(uint64_t));
-*ptr += sizeof(uint64_t);
-""",
- },
- "VkAccelerationStructureMatrixMotionInstanceNV": {
- "common": """
-typedef struct VkAccelerationStructureMatrixMotionInstanceNVWithoutBitFields {
- VkTransformMatrixKHR transformT0;
- VkTransformMatrixKHR transformT1;
- uint32_t dwords[2];
- uint64_t accelerationStructureReference;
-} VkAccelerationStructureMatrixMotionInstanceNVWithoutBitFields;
-""",
- "marshaling": """
-const VkAccelerationStructureMatrixMotionInstanceNVWithoutBitFields* {newInputVarName} = (const VkAccelerationStructureMatrixMotionInstanceNVWithoutBitFields*)({inputVarName});
-marshal_VkTransformMatrixKHR({streamVarName}, {rootTypeVarName}, (VkTransformMatrixKHR*)(&{newInputVarName}->transformT0));
-marshal_VkTransformMatrixKHR({streamVarName}, {rootTypeVarName}, (VkTransformMatrixKHR*)(&{newInputVarName}->transformT1));
-for (uint32_t i = 0; i < 2; i++) {{
- {streamVarName}->write((uint32_t*)&({newInputVarName}->dwords[i]), sizeof(uint32_t));
-}}
-{streamVarName}->write((uint64_t*)&{newInputVarName}->accelerationStructureReference, sizeof(uint64_t));
-""",
- "unmarshaling": """
-VkAccelerationStructureMatrixMotionInstanceNVWithoutBitFields* {newInputVarName} = (VkAccelerationStructureMatrixMotionInstanceNVWithoutBitFields*)({inputVarName});
-unmarshal_VkTransformMatrixKHR({streamVarName}, {rootTypeVarName}, (VkTransformMatrixKHR*)(&{newInputVarName}->transformT0));
-unmarshal_VkTransformMatrixKHR({streamVarName}, {rootTypeVarName}, (VkTransformMatrixKHR*)(&{newInputVarName}->transformT1));
-for (uint32_t i = 0; i < 2; i++) {{
- {streamVarName}->read((uint32_t*)&({newInputVarName}->dwords[i]), sizeof(uint32_t));
-}}
-{streamVarName}->read((uint64_t*)&{newInputVarName}->accelerationStructureReference, sizeof(uint64_t));
-""",
- "reservedmarshaling": """
-(void)vkStream;
-const VkAccelerationStructureMatrixMotionInstanceNVWithoutBitFields* {newInputVarName} = (const VkAccelerationStructureMatrixMotionInstanceNVWithoutBitFields*)({inputVarName});
-reservedmarshal_VkTransformMatrixKHR({streamVarName}, {rootTypeVarName}, (VkTransformMatrixKHR*)(&{newInputVarName}->transformT0), ptr);
-reservedmarshal_VkTransformMatrixKHR({streamVarName}, {rootTypeVarName}, (VkTransformMatrixKHR*)(&{newInputVarName}->transformT1), ptr);
-for (uint32_t i = 0; i < 2; i++) {{
- memcpy(*ptr, (uint32_t*)&({newInputVarName}->dwords[i]), sizeof(uint32_t));
- *ptr += sizeof(uint32_t);
-}}
-memcpy(*ptr, (uint64_t*)&{newInputVarName}->accelerationStructureReference, sizeof(uint64_t));
-*ptr += sizeof(uint64_t);
-""",
- "reservedunmarshaling": """
-VkAccelerationStructureMatrixMotionInstanceNVWithoutBitFields* {newInputVarName} = (VkAccelerationStructureMatrixMotionInstanceNVWithoutBitFields*)({inputVarName});
-reservedunmarshal_VkTransformMatrixKHR({streamVarName}, {rootTypeVarName}, (VkTransformMatrixKHR*)(&{newInputVarName}->transformT0), ptr);
-reservedunmarshal_VkTransformMatrixKHR({streamVarName}, {rootTypeVarName}, (VkTransformMatrixKHR*)(&{newInputVarName}->transformT1), ptr);
-for (uint32_t i = 0; i < 2; i++) {{
- memcpy((uint32_t*)&({newInputVarName}->dwords[i]), *ptr, sizeof(uint32_t));
- *ptr += sizeof(uint32_t);
-}}
-memcpy((uint64_t*)&{newInputVarName}->accelerationStructureReference, *ptr, sizeof(uint64_t));
-*ptr += sizeof(uint64_t);
-""",
- },
- "VkAccelerationStructureSRTMotionInstanceNV": {
- "common": """
-typedef struct VkAccelerationStructureSRTMotionInstanceNVWithoutBitFields {
- VkSRTDataNV transformT0;
- VkSRTDataNV transformT1;
- uint32_t dwords[2];
- uint64_t accelerationStructureReference;
-} VkAccelerationStructureSRTMotionInstanceNVWithoutBitFields;
-""",
- "marshaling": """
-const VkAccelerationStructureSRTMotionInstanceNVWithoutBitFields* {newInputVarName} = (const VkAccelerationStructureSRTMotionInstanceNVWithoutBitFields*)({inputVarName});
-marshal_VkSRTDataNV({streamVarName}, {rootTypeVarName}, (VkSRTDataNV*)(&{newInputVarName}->transformT0));
-marshal_VkSRTDataNV({streamVarName}, {rootTypeVarName}, (VkSRTDataNV*)(&{newInputVarName}->transformT1));
-for (uint32_t i = 0; i < 2; i++) {{
- {streamVarName}->write((uint32_t*)&({newInputVarName}->dwords[i]), sizeof(uint32_t));
-}}
-{streamVarName}->write((uint64_t*)&{newInputVarName}->accelerationStructureReference, sizeof(uint64_t));
-""",
- "unmarshaling": """
-VkAccelerationStructureSRTMotionInstanceNVWithoutBitFields* {newInputVarName} = (VkAccelerationStructureSRTMotionInstanceNVWithoutBitFields*)({inputVarName});
-unmarshal_VkSRTDataNV({streamVarName}, {rootTypeVarName}, (VkSRTDataNV*)(&{newInputVarName}->transformT0));
-unmarshal_VkSRTDataNV({streamVarName}, {rootTypeVarName}, (VkSRTDataNV*)(&{newInputVarName}->transformT1));
-for (uint32_t i = 0; i < 2; i++) {{
- {streamVarName}->read((uint32_t*)&({newInputVarName}->dwords[i]), sizeof(uint32_t));
-}}
-{streamVarName}->read((uint64_t*)&{newInputVarName}->accelerationStructureReference, sizeof(uint64_t));
-""",
- "reservedmarshaling": """
-(void)vkStream;
-const VkAccelerationStructureSRTMotionInstanceNVWithoutBitFields* {newInputVarName} = (const VkAccelerationStructureSRTMotionInstanceNVWithoutBitFields*)({inputVarName});
-reservedmarshal_VkSRTDataNV({streamVarName}, {rootTypeVarName}, (VkSRTDataNV*)(&{newInputVarName}->transformT0), ptr);
-reservedmarshal_VkSRTDataNV({streamVarName}, {rootTypeVarName}, (VkSRTDataNV*)(&{newInputVarName}->transformT1), ptr);
-for (uint32_t i = 0; i < 2; i++) {{
- memcpy(*ptr, (uint32_t*)&({newInputVarName}->dwords[i]), sizeof(uint32_t));
- *ptr += sizeof(uint32_t);
-}}
-memcpy(*ptr, (uint64_t*)&{newInputVarName}->accelerationStructureReference, sizeof(uint64_t));
-*ptr += sizeof(uint64_t);
-""",
- "reservedunmarshaling": """
-VkAccelerationStructureSRTMotionInstanceNVWithoutBitFields* {newInputVarName} = (VkAccelerationStructureSRTMotionInstanceNVWithoutBitFields*)({inputVarName});
-reservedunmarshal_VkSRTDataNV({streamVarName}, {rootTypeVarName}, (VkSRTDataNV*)(&{newInputVarName}->transformT0), ptr);
-reservedunmarshal_VkSRTDataNV({streamVarName}, {rootTypeVarName}, (VkSRTDataNV*)(&{newInputVarName}->transformT1), ptr);
-for (uint32_t i = 0; i < 2; i++) {{
- memcpy((uint32_t*)&({newInputVarName}->dwords[i]), *ptr, sizeof(uint32_t));
- *ptr += sizeof(uint32_t);
-}}
-memcpy((uint64_t*)&{newInputVarName}->accelerationStructureReference, *ptr, sizeof(uint64_t));
-*ptr += sizeof(uint64_t);
-""",
- },
- "VkXcbSurfaceCreateInfoKHR": {
- "common": """
-// This struct should never be marshaled / unmarshaled.
-__builtin_trap();
-""",
- "marshaling": "",
- "unmarshaling": "",
- "reservedmarshaling": "",
- "reservedunmarshaling": "",
- },
- "VkMetalSurfaceCreateInfoEXT": {
- "common": """
-// This struct should never be marshaled / unmarshaled.
-__builtin_trap();
-""",
- "marshaling": "",
- "unmarshaling": "",
- "reservedmarshaling": "",
- "reservedunmarshaling": "",
- },
-}
diff --git a/codegen/vulkan/scripts/cereal/reservedmarshaling.py b/codegen/vulkan/scripts/cereal/reservedmarshaling.py
deleted file mode 100644
index 23ace9d3..00000000
--- a/codegen/vulkan/scripts/cereal/reservedmarshaling.py
+++ /dev/null
@@ -1,1055 +0,0 @@
-# Copyright (c) 2018 The Android Open Source Project
-# Copyright (c) 2018 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-from copy import copy
-
-from .common.codegen import CodeGen, VulkanAPIWrapper
-from .common.vulkantypes import \
- VulkanAPI, makeVulkanTypeSimple, iterateVulkanType, VulkanTypeIterator, Atom, FuncExpr, FuncExprVal, FuncLambda
-
-from .wrapperdefs import VulkanWrapperGenerator
-from .wrapperdefs import VULKAN_STREAM_VAR_NAME
-from .wrapperdefs import ROOT_TYPE_VAR_NAME, ROOT_TYPE_PARAM
-from .wrapperdefs import STREAM_RET_TYPE
-from .wrapperdefs import MARSHAL_INPUT_VAR_NAME
-from .wrapperdefs import UNMARSHAL_INPUT_VAR_NAME
-from .wrapperdefs import PARAMETERS_MARSHALING
-from .wrapperdefs import PARAMETERS_MARSHALING_GUEST
-from .wrapperdefs import STYPE_OVERRIDE
-from .wrapperdefs import STRUCT_EXTENSION_PARAM, STRUCT_EXTENSION_PARAM_FOR_WRITE, EXTENSION_SIZE_WITH_STREAM_FEATURES_API_NAME
-from .wrapperdefs import API_PREFIX_RESERVEDMARSHAL
-from .wrapperdefs import API_PREFIX_RESERVEDUNMARSHAL
-
-from .marshalingdefs import CUSTOM_MARSHAL_TYPES
-class VulkanReservedMarshalingCodegen(VulkanTypeIterator):
- def __init__(self,
- cgen,
- streamVarName,
- rootTypeVarName,
- inputVarName,
- ptrVarName,
- marshalPrefix,
- handlemapPrefix,
- direction = "write",
- forApiOutput = False,
- dynAlloc = False,
- mapHandles = True,
- handleMapOverwrites = False,
- doFiltering = True,
- stackVar=None,
- stackArrSize=None):
- self.cgen = cgen
- self.direction = direction
- self.processSimple = "write" if self.direction == "write" else "read"
- self.forApiOutput = forApiOutput
-
- self.checked = False
-
- self.streamVarName = streamVarName
- self.rootTypeVarName = rootTypeVarName
- self.inputVarName = inputVarName
- self.ptrVar = ptrVarName
- self.marshalPrefix = marshalPrefix
- self.handlemapPrefix = handlemapPrefix
-
- self.exprAccessor = lambda t: self.cgen.generalAccess(t, parentVarName = self.inputVarName, asPtr = True)
- self.exprValueAccessor = lambda t: self.cgen.generalAccess(t, parentVarName = self.inputVarName, asPtr = False)
- self.exprPrimitiveValueAccessor = lambda t: self.cgen.generalAccess(t, parentVarName = self.inputVarName, asPtr = False)
- self.lenAccessor = lambda t: self.cgen.generalLengthAccess(t, parentVarName = self.inputVarName)
- self.lenAccessorGuard = lambda t: self.cgen.generalLengthAccessGuard(
- t, parentVarName=self.inputVarName)
- self.filterVarAccessor = lambda t: self.cgen.filterVarAccess(t, parentVarName = self.inputVarName)
-
- self.dynAlloc = dynAlloc
- self.mapHandles = mapHandles
- self.handleMapOverwrites = handleMapOverwrites
- self.doFiltering = doFiltering
-
- self.stackVar = stackVar
- self.stackArrSize = stackArrSize
-
- def getTypeForStreaming(self, vulkanType):
- res = copy(vulkanType)
-
- if not vulkanType.accessibleAsPointer():
- res = res.getForAddressAccess()
-
- if vulkanType.staticArrExpr:
- res = res.getForAddressAccess()
-
- if self.direction == "write":
- return res
- else:
- return res.getForNonConstAccess()
-
- def makeCastExpr(self, vulkanType):
- return "(%s)" % (
- self.cgen.makeCTypeDecl(vulkanType, useParamName=False))
-
- def genPtrIncr(self, sizeExpr):
- self.cgen.stmt("*%s += %s" % (self.ptrVar, sizeExpr))
-
- def genMemcpyAndIncr(self, varname, cast, toStreamExpr, sizeExpr, toBe = False, actualSize = 4):
- if self.direction == "write":
- self.cgen.stmt("memcpy(*%s, %s%s, %s)" % (varname, cast, toStreamExpr, sizeExpr))
- else:
- self.cgen.stmt("memcpy(%s%s, *%s, %s)" % (cast, toStreamExpr, varname, sizeExpr))
-
- if toBe:
- streamPrefix = "to"
- if "read" == self.direction:
- streamPrefix = "from"
-
- streamMethod = streamPrefix
-
- if 1 == actualSize:
- streamMethod += "Byte"
- elif 2 == actualSize:
- streamMethod += "Be16"
- elif 4 == actualSize:
- streamMethod += "Be32"
- elif 8 == actualSize:
- streamMethod += "Be64"
- else:
- pass
-
- if self.direction == "write":
- self.cgen.stmt("android::base::Stream::%s((uint8_t*)*%s)" % (streamMethod, varname))
- else:
- self.cgen.stmt("android::base::Stream::%s((uint8_t*)%s)" % (streamMethod, toStreamExpr))
-
- self.genPtrIncr(sizeExpr)
-
- def genStreamCall(self, vulkanType, toStreamExpr, sizeExpr):
- varname = self.ptrVar
- cast = self.makeCastExpr(self.getTypeForStreaming(vulkanType))
- self.genMemcpyAndIncr(varname, cast, toStreamExpr, sizeExpr)
-
- def genPrimitiveStreamCall(self, vulkanType, access):
- varname = self.ptrVar
- self.cgen.memcpyPrimitive(
- self.typeInfo,
- "(*" + varname + ")",
- access,
- vulkanType,
- direction=self.direction)
- self.genPtrIncr(str(self.cgen.countPrimitive(
- self.typeInfo,
- vulkanType)))
-
- def genHandleMappingCall(self, vulkanType, access, lenAccess, lenAccessGuard):
-
- if lenAccess is None:
- lenAccess = "1"
- handle64Bytes = "8"
- else:
- handle64Bytes = "%s * 8" % lenAccess
-
- handle64Var = self.cgen.var()
- if lenAccess != "1":
- self.cgen.beginIf(lenAccess)
- self.cgen.stmt("uint8_t* %s_ptr = (uint8_t*)(*%s)" % (handle64Var, self.ptrVar))
- handle64VarAccess = handle64Var
- handle64VarType = \
- makeVulkanTypeSimple(False, "uint64_t", 1, paramName=handle64Var)
- else:
- self.cgen.stmt("uint64_t %s" % handle64Var)
- handle64VarAccess = "&%s" % handle64Var
- handle64VarType = \
- makeVulkanTypeSimple(False, "uint64_t", 0, paramName=handle64Var)
-
- if "" == self.handlemapPrefix:
- mapFunc = ("(%s)" % vulkanType.typeName)
- mapFunc64 = ("(%s)" % "uint64_t")
- else:
- mapFunc = self.handlemapPrefix + vulkanType.typeName
- mapFunc64 = mapFunc
-
- if self.direction == "write":
- if self.handleMapOverwrites:
- self.cgen.stmt(
- "static_assert(8 == sizeof(%s), \"handle map overwrite requres %s to be 8 bytes long\")" % \
- (vulkanType.typeName, vulkanType.typeName))
- if "1" == lenAccess:
- self.cgen.stmt("*%s = (%s)%s(*%s)" % (access, vulkanType.typeName, mapFunc, access))
- self.genStreamCall(vulkanType, access, "8 * %s" % lenAccess)
- else:
- if lenAccessGuard is not None:
- self.cgen.beginIf(lenAccessGuard)
- self.cgen.beginFor("uint32_t k = 0", "k < %s" % lenAccess, "++k")
- self.cgen.stmt("%s[k] = (%s)%s(%s[k])" % (access, vulkanType.typeName, mapFunc, access))
- self.cgen.endFor()
- if lenAccessGuard is not None:
- self.cgen.endIf()
- self.genPtrIncr("8 * %s" % lenAccess)
- else:
- if "1" == lenAccess:
- self.cgen.stmt("*%s = %s((*%s))" % (handle64VarAccess, mapFunc64, access))
- self.genStreamCall(handle64VarType, handle64VarAccess, handle64Bytes)
- else:
- if lenAccessGuard is not None:
- self.cgen.beginIf(lenAccessGuard)
- self.cgen.beginFor("uint32_t k = 0", "k < %s" % lenAccess, "++k")
- self.cgen.stmt("uint64_t tmpval = %s(%s[k])" % (mapFunc64, access))
- self.cgen.stmt("memcpy(%s_ptr + k * 8, &tmpval, sizeof(uint64_t))" % (handle64Var))
- self.cgen.endFor()
- if lenAccessGuard is not None:
- self.cgen.endIf()
- self.genPtrIncr("8 * %s" % lenAccess)
- else:
- if "1" == lenAccess:
- self.genStreamCall(handle64VarType, handle64VarAccess, handle64Bytes)
- self.cgen.stmt("*%s%s = (%s)%s((%s)(*%s))" % (
- self.makeCastExpr(vulkanType.getForNonConstAccess()), access,
- vulkanType.typeName, mapFunc, vulkanType.typeName, handle64VarAccess))
- else:
- self.genPtrIncr("8 * %s" % lenAccess)
- if lenAccessGuard is not None:
- self.cgen.beginIf(lenAccessGuard)
- self.cgen.beginFor("uint32_t k = 0", "k < %s" % lenAccess, "++k")
- self.cgen.stmt("uint64_t tmpval; memcpy(&tmpval, %s_ptr + k * 8, sizeof(uint64_t))" % handle64Var)
- self.cgen.stmt("*((%s%s) + k) = (%s)%s((%s)tmpval)" % (
- self.makeCastExpr(vulkanType.getForNonConstAccess()), access,
- vulkanType.typeName, mapFunc, vulkanType.typeName))
- if lenAccessGuard is not None:
- self.cgen.endIf()
- self.cgen.endFor()
-
- if lenAccess != "1":
- self.cgen.endIf()
-
- def doAllocSpace(self, vulkanType):
- if self.dynAlloc and self.direction == "read":
- access = self.exprAccessor(vulkanType)
- lenAccess = self.lenAccessor(vulkanType)
- sizeof = self.cgen.sizeofExpr(vulkanType.getForValueAccess())
- if lenAccess:
- bytesExpr = "%s * %s" % (lenAccess, sizeof)
- else:
- bytesExpr = sizeof
- lenAccess = "1"
-
- if self.stackVar:
- if self.stackArrSize != lenAccess:
- self.cgen.beginIf("%s <= %s" % (lenAccess, self.stackArrSize))
-
- self.cgen.stmt(
- "%s = %s%s" % (access, self.makeCastExpr(vulkanType.getForNonConstAccess()), self.stackVar))
-
- if self.stackArrSize != lenAccess:
- self.cgen.endIf()
- self.cgen.beginElse()
-
- if self.stackArrSize != lenAccess:
- self.cgen.stmt(
- "%s->alloc((void**)&%s, %s)" %
- (self.streamVarName,
- access, bytesExpr))
-
- if self.stackArrSize != lenAccess:
- self.cgen.endIf()
- else:
- self.cgen.stmt(
- "%s->alloc((void**)&%s, %s)" %
- (self.streamVarName,
- access, bytesExpr))
-
- def getOptionalStringFeatureExpr(self, vulkanType):
- if vulkanType.optionalStr is not None:
- if vulkanType.optionalStr.startswith("streamFeature:"):
- splitted = vulkanType.optionalStr.split(":")
- featureExpr = "%s->getFeatureBits() & %s" % (self.streamVarName, splitted[1])
- return featureExpr
- return None
-
- def onCheck(self, vulkanType):
- if self.forApiOutput:
- return
-
- featureExpr = self.getOptionalStringFeatureExpr(vulkanType)
- self.checked = True
- access = self.exprAccessor(vulkanType)
- needConsistencyCheck = False
-
- self.cgen.line("// WARNING PTR CHECK")
- if (self.dynAlloc and self.direction == "read") or self.direction == "write":
- checkAccess = self.exprAccessor(vulkanType)
- addrExpr = "&" + checkAccess
- sizeExpr = self.cgen.sizeofExpr(vulkanType)
- else:
- checkName = "check_%s" % vulkanType.paramName
- self.cgen.stmt("%s %s" % (
- self.cgen.makeCTypeDecl(vulkanType, useParamName = False), checkName))
- checkAccess = checkName
- addrExpr = "&" + checkAccess
- sizeExpr = self.cgen.sizeofExpr(vulkanType)
- needConsistencyCheck = True
-
- if featureExpr is not None:
- self.cgen.beginIf(featureExpr)
-
- self.genPrimitiveStreamCall(
- vulkanType,
- checkAccess)
-
- if featureExpr is not None:
- self.cgen.endIf()
-
- if featureExpr is not None:
- self.cgen.beginIf("(!(%s) || %s)" % (featureExpr, access))
- else:
- self.cgen.beginIf(access)
-
- if needConsistencyCheck and featureExpr is None:
- self.cgen.beginIf("!(%s)" % checkName)
- self.cgen.stmt(
- "fprintf(stderr, \"fatal: %s inconsistent between guest and host\\n\")" % (access))
- self.cgen.endIf()
-
- def onCheckWithNullOptionalStringFeature(self, vulkanType):
- self.cgen.beginIf("%s->getFeatureBits() & VULKAN_STREAM_FEATURE_NULL_OPTIONAL_STRINGS_BIT" % self.streamVarName)
- self.onCheck(vulkanType)
-
- def endCheckWithNullOptionalStringFeature(self, vulkanType):
- self.endCheck(vulkanType)
- self.cgen.endIf()
- self.cgen.beginElse()
-
- def finalCheckWithNullOptionalStringFeature(self, vulkanType):
- self.cgen.endElse()
-
- def endCheck(self, vulkanType):
-
- if self.checked:
- self.cgen.endIf()
- self.checked = False
-
- def genFilterFunc(self, filterfunc, env):
-
- def loop(expr, lambdaEnv={}):
- def do_func(expr):
- fnamestr = expr.name.name
- if "not" == fnamestr:
- return "!(%s)" % (loop(expr.args[0], lambdaEnv))
- if "eq" == fnamestr:
- return "(%s == %s)" % (loop(expr.args[0], lambdaEnv), loop(expr.args[1], lambdaEnv))
- if "and" == fnamestr:
- return "(%s && %s)" % (loop(expr.args[0], lambdaEnv), loop(expr.args[1], lambdaEnv))
- if "or" == fnamestr:
- return "(%s || %s)" % (loop(expr.args[0], lambdaEnv), loop(expr.args[1], lambdaEnv))
- if "bitwise_and" == fnamestr:
- return "(%s & %s)" % (loop(expr.args[0], lambdaEnv), loop(expr.args[1], lambdaEnv))
- if "getfield" == fnamestr:
- ptrlevels = get_ptrlevels(expr.args[0].val.name)
- if ptrlevels == 0:
- return "%s.%s" % (loop(expr.args[0], lambdaEnv), expr.args[1].val)
- else:
- return "(%s(%s)).%s" % ("*" * ptrlevels, loop(expr.args[0], lambdaEnv), expr.args[1].val)
-
- if "if" == fnamestr:
- return "((%s) ? (%s) : (%s))" % (loop(expr.args[0], lambdaEnv), loop(expr.args[1], lambdaEnv), loop(expr.args[2], lambdaEnv))
-
- return "%s(%s)" % (fnamestr, ", ".join(map(lambda e: loop(e, lambdaEnv), expr.args)))
-
- def do_expratom(atomname, lambdaEnv= {}):
- if lambdaEnv.get(atomname, None) is not None:
- return atomname
-
- enventry = env.get(atomname, None)
- if None != enventry:
- return self.getEnvAccessExpr(atomname)
- return atomname
-
- def get_ptrlevels(atomname, lambdaEnv= {}):
- if lambdaEnv.get(atomname, None) is not None:
- return 0
-
- enventry = env.get(atomname, None)
- if None != enventry:
- return self.getPointerIndirectionLevels(atomname)
-
- return 0
-
- def do_exprval(expr, lambdaEnv= {}):
- expratom = expr.val
-
- if Atom == type(expratom):
- return do_expratom(expratom.name, lambdaEnv)
-
- return "%s" % expratom
-
- def do_lambda(expr, lambdaEnv= {}):
- params = expr.vs
- body = expr.body
- newEnv = {}
-
- for (k, v) in lambdaEnv.items():
- newEnv[k] = v
-
- for p in params:
- newEnv[p.name] = p.typ
-
- return "[](%s) { return %s; }" % (", ".join(list(map(lambda p: "%s %s" % (p.typ, p.name), params))), loop(body, lambdaEnv=newEnv))
-
- if FuncExpr == type(expr):
- return do_func(expr)
- if FuncLambda == type(expr):
- return do_lambda(expr)
- elif FuncExprVal == type(expr):
- return do_exprval(expr)
-
- return loop(filterfunc)
-
- def beginFilterGuard(self, vulkanType):
- if vulkanType.filterVar == None:
- return
-
- if self.doFiltering == False:
- return
-
- filterVarAccess = self.getEnvAccessExpr(vulkanType.filterVar)
-
- filterValsExpr = None
- filterFuncExpr = None
- filterExpr = None
-
- filterFeature = "%s->getFeatureBits() & VULKAN_STREAM_FEATURE_IGNORED_HANDLES_BIT" % self.streamVarName
-
- if None != vulkanType.filterVals:
- filterValsExpr = " || ".join(map(lambda filterval: "(%s == %s)" % (filterval, filterVarAccess), vulkanType.filterVals))
-
- if None != vulkanType.filterFunc:
- filterFuncExpr = self.genFilterFunc(vulkanType.filterFunc, self.currentStructInfo.environment)
-
- if None != filterValsExpr and None != filterFuncExpr:
- filterExpr = "%s || %s" % (filterValsExpr, filterFuncExpr)
- elif None == filterValsExpr and None == filterFuncExpr:
- # Assume is bool
- self.cgen.beginIf(filterVarAccess)
- elif None != filterValsExpr:
- self.cgen.beginIf("(!(%s) || (%s))" % (filterFeature, filterValsExpr))
- elif None != filterFuncExpr:
- self.cgen.beginIf("(!(%s) || (%s))" % (filterFeature, filterFuncExpr))
-
- def endFilterGuard(self, vulkanType, cleanupExpr=None):
- if vulkanType.filterVar == None:
- return
-
- if self.doFiltering == False:
- return
-
- if cleanupExpr == None:
- self.cgen.endIf()
- else:
- self.cgen.endIf()
- self.cgen.beginElse()
- self.cgen.stmt(cleanupExpr)
- self.cgen.endElse()
-
- def getEnvAccessExpr(self, varName):
- parentEnvEntry = self.currentStructInfo.environment.get(varName, None)
-
- if parentEnvEntry != None:
- isParentMember = parentEnvEntry["structmember"]
-
- if isParentMember:
- envAccess = self.exprValueAccessor(list(filter(lambda member: member.paramName == varName, self.currentStructInfo.members))[0])
- else:
- envAccess = varName
- return envAccess
-
- return None
-
- def getPointerIndirectionLevels(self, varName):
- parentEnvEntry = self.currentStructInfo.environment.get(varName, None)
-
- if parentEnvEntry != None:
- isParentMember = parentEnvEntry["structmember"]
-
- if isParentMember:
- return list(filter(lambda member: member.paramName == varName, self.currentStructInfo.members))[0].pointerIndirectionLevels
- else:
- return 0
- return 0
-
- return 0
-
-
- def onCompoundType(self, vulkanType):
-
- access = self.exprAccessor(vulkanType)
- lenAccess = self.lenAccessor(vulkanType)
-
- self.beginFilterGuard(vulkanType)
-
- if vulkanType.pointerIndirectionLevels > 0:
- self.doAllocSpace(vulkanType)
-
- if lenAccess is not None:
- loopVar = "i"
- access = "%s + %s" % (access, loopVar)
- forInit = "uint32_t %s = 0" % loopVar
- forCond = "%s < (uint32_t)%s" % (loopVar, lenAccess)
- forIncr = "++%s" % loopVar
- self.cgen.beginFor(forInit, forCond, forIncr)
-
- accessWithCast = "%s(%s)" % (self.makeCastExpr(
- self.getTypeForStreaming(vulkanType)), access)
-
- callParams = [self.streamVarName, self.rootTypeVarName, accessWithCast, self.ptrVar]
-
- for (bindName, localName) in vulkanType.binds.items():
- callParams.append(self.getEnvAccessExpr(localName))
-
- self.cgen.funcCall(None, self.marshalPrefix + vulkanType.typeName,
- callParams)
-
- if lenAccess is not None:
- self.cgen.endFor()
-
- if self.direction == "read":
- self.endFilterGuard(vulkanType, "%s = 0" % self.exprAccessor(vulkanType))
- else:
- self.endFilterGuard(vulkanType)
-
- def onString(self, vulkanType):
- access = self.exprAccessor(vulkanType)
-
- if self.direction == "write":
- self.cgen.beginBlock()
- self.cgen.stmt("uint32_t l = %s ? strlen(%s): 0" % (access, access))
- self.genMemcpyAndIncr(self.ptrVar, "(uint32_t*)" ,"&l", "sizeof(uint32_t)", toBe = True, actualSize = 4)
- self.genMemcpyAndIncr(self.ptrVar, "(char*)", access, "l")
- self.cgen.endBlock()
- else:
- castExpr = \
- self.makeCastExpr( \
- self.getTypeForStreaming( \
- vulkanType.getForAddressAccess()))
- self.cgen.stmt( \
- "%s->loadStringInPlaceWithStreamPtr(%s&%s, %s)" % (self.streamVarName, castExpr, access, self.ptrVar))
-
- def onStringArray(self, vulkanType):
- access = self.exprAccessor(vulkanType)
- lenAccess = self.lenAccessor(vulkanType)
- lenAccessGuard = self.lenAccessorGuard(vulkanType)
-
- if self.direction == "write":
- self.cgen.beginBlock()
-
- self.cgen.stmt("uint32_t c = 0")
- if lenAccessGuard is not None:
- self.cgen.beginIf(lenAccessGuard)
- self.cgen.stmt("c = %s" % (lenAccess))
- if lenAccessGuard is not None:
- self.cgen.endIf()
- self.genMemcpyAndIncr(self.ptrVar, "(uint32_t*)" ,"&c", "sizeof(uint32_t)", toBe = True, actualSize = 4)
-
- self.cgen.beginFor("uint32_t i = 0", "i < c", "++i")
- self.cgen.stmt("uint32_t l = %s ? strlen(%s[i]): 0" % (access, access))
- self.genMemcpyAndIncr(self.ptrVar, "(uint32_t*)" ,"&l", "sizeof(uint32_t)", toBe = True, actualSize = 4)
- self.cgen.beginIf("l")
- self.genMemcpyAndIncr(self.ptrVar, "(char*)", "(%s[i])" % access, "l")
- self.cgen.endIf()
- self.cgen.endFor()
-
- self.cgen.endBlock()
- else:
- castExpr = \
- self.makeCastExpr( \
- self.getTypeForStreaming( \
- vulkanType.getForAddressAccess()))
-
- self.cgen.stmt("%s->loadStringArrayInPlaceWithStreamPtr(%s&%s, %s)" % (self.streamVarName, castExpr, access, self.ptrVar))
-
- def onStaticArr(self, vulkanType):
- access = self.exprValueAccessor(vulkanType)
- lenAccess = self.lenAccessor(vulkanType)
- finalLenExpr = "%s * %s" % (lenAccess, self.cgen.sizeofExpr(vulkanType))
- self.genStreamCall(vulkanType, access, finalLenExpr)
-
- # Old version VkEncoder may have some sType values conflict with VkDecoder
- # of new versions. For host decoder, it should not carry the incorrect old
- # sType values to the |forUnmarshaling| struct. Instead it should overwrite
- # the sType value.
- def overwriteSType(self, vulkanType):
- if self.direction == "read":
- sTypeParam = copy(vulkanType)
- sTypeParam.paramName = "sType"
- sTypeAccess = self.exprAccessor(sTypeParam)
-
- typeName = vulkanType.parent.typeName
- if typeName in STYPE_OVERRIDE:
- self.cgen.stmt("%s = %s" %
- (sTypeAccess, STYPE_OVERRIDE[typeName]))
-
- def onStructExtension(self, vulkanType):
- self.overwriteSType(vulkanType)
-
- sTypeParam = copy(vulkanType)
- sTypeParam.paramName = "sType"
-
- access = self.exprAccessor(vulkanType)
- sizeVar = "%s_size" % vulkanType.paramName
-
- if self.direction == "read":
- castedAccessExpr = "(%s)(%s)" % ("void*", access)
- else:
- castedAccessExpr = access
-
- sTypeAccess = self.exprAccessor(sTypeParam)
- self.cgen.beginIf("%s == VK_STRUCTURE_TYPE_MAX_ENUM" % self.rootTypeVarName)
- self.cgen.stmt("%s = %s" % (self.rootTypeVarName, sTypeAccess))
- self.cgen.endIf()
-
- if self.direction == "read" and self.dynAlloc:
- self.cgen.stmt("uint32_t %s" % sizeVar)
-
- self.genMemcpyAndIncr(self.ptrVar, "(uint32_t*)", "&" + sizeVar, "sizeof(uint32_t)", toBe = True, actualSize = 4)
-
- self.cgen.stmt("%s = nullptr" % access)
- self.cgen.beginIf(sizeVar)
- self.cgen.stmt( \
- "%s->alloc((void**)&%s, sizeof(VkStructureType))" %
- (self.streamVarName, access))
-
- self.genStreamCall(vulkanType, access, "sizeof(VkStructureType)")
- self.cgen.stmt("VkStructureType extType = *(VkStructureType*)(%s)" % access)
- self.cgen.stmt( \
- "%s->alloc((void**)&%s, %s(%s->getFeatureBits(), %s, %s))" %
- (self.streamVarName, access, EXTENSION_SIZE_WITH_STREAM_FEATURES_API_NAME, self.streamVarName, self.rootTypeVarName, access))
- self.cgen.stmt("*(VkStructureType*)%s = extType" % access)
-
- self.cgen.funcCall(None, self.marshalPrefix + "extension_struct",
- [self.streamVarName, self.rootTypeVarName, castedAccessExpr, self.ptrVar])
- self.cgen.endIf()
- else:
-
- self.cgen.funcCall(None, self.marshalPrefix + "extension_struct",
- [self.streamVarName, self.rootTypeVarName, castedAccessExpr, self.ptrVar])
-
- def onPointer(self, vulkanType):
- access = self.exprAccessor(vulkanType)
-
- lenAccess = self.lenAccessor(vulkanType)
- lenAccessGuard = self.lenAccessorGuard(vulkanType)
-
- self.beginFilterGuard(vulkanType)
- self.doAllocSpace(vulkanType)
-
- if vulkanType.filterVar != None:
- print("onPointer Needs filter: %s filterVar %s" % (access, vulkanType.filterVar))
-
- if vulkanType.isHandleType() and self.mapHandles:
- self.genHandleMappingCall(
- vulkanType, access, lenAccess, lenAccessGuard)
- else:
- if self.typeInfo.isNonAbiPortableType(vulkanType.typeName):
- if lenAccess is not None:
- if lenAccessGuard is not None:
- self.cgen.beginIf(lenAccessGuard)
- self.cgen.beginFor("uint32_t i = 0", "i < (uint32_t)%s" % lenAccess, "++i")
- self.genPrimitiveStreamCall(vulkanType.getForValueAccess(), "%s[i]" % access)
- self.cgen.endFor()
- if lenAccessGuard is not None:
- self.cgen.endIf()
- else:
- self.genPrimitiveStreamCall(vulkanType.getForValueAccess(), "(*%s)" % access)
- else:
- if lenAccess is not None:
- finalLenExpr = "%s * %s" % (
- lenAccess, self.cgen.sizeofExpr(vulkanType.getForValueAccess()))
- else:
- finalLenExpr = "%s" % (
- self.cgen.sizeofExpr(vulkanType.getForValueAccess()))
- self.genStreamCall(vulkanType, access, finalLenExpr)
-
- if self.direction == "read":
- self.endFilterGuard(vulkanType, "%s = 0" % access)
- else:
- self.endFilterGuard(vulkanType)
-
- def onValue(self, vulkanType):
- self.beginFilterGuard(vulkanType)
-
- if vulkanType.isHandleType() and self.mapHandles:
- access = self.exprAccessor(vulkanType)
- if vulkanType.filterVar != None:
- print("onValue Needs filter: %s filterVar %s" % (access, vulkanType.filterVar))
- self.genHandleMappingCall(
- vulkanType.getForAddressAccess(), access, "1", None)
- elif self.typeInfo.isNonAbiPortableType(vulkanType.typeName):
- access = self.exprPrimitiveValueAccessor(vulkanType)
- self.genPrimitiveStreamCall(vulkanType, access)
- else:
- access = self.exprAccessor(vulkanType)
- self.genStreamCall(vulkanType, access, self.cgen.sizeofExpr(vulkanType))
-
- self.endFilterGuard(vulkanType)
-
- def streamLetParameter(self, structInfo, letParamInfo):
- filterFeature = "%s->getFeatureBits() & VULKAN_STREAM_FEATURE_IGNORED_HANDLES_BIT" % self.streamVarName
- self.cgen.stmt("%s %s = 1" % (letParamInfo.typeName, letParamInfo.paramName))
-
- self.cgen.beginIf(filterFeature)
-
- if self.direction == "write":
- bodyExpr = self.currentStructInfo.environment[letParamInfo.paramName]["body"]
- self.cgen.stmt("%s = %s" % (letParamInfo.paramName, self.genFilterFunc(bodyExpr, self.currentStructInfo.environment)))
-
- self.genPrimitiveStreamCall(letParamInfo, letParamInfo.paramName)
-
- self.cgen.endIf()
-
-class VulkanReservedMarshaling(VulkanWrapperGenerator):
-
- def __init__(self, module, typeInfo, variant="host"):
- VulkanWrapperGenerator.__init__(self, module, typeInfo)
-
- self.cgenHeader = CodeGen()
- self.cgenImpl = CodeGen()
-
- self.variant = variant
-
- self.currentFeature = None
- self.apiOpcodes = {}
- self.dynAlloc = self.variant != "guest"
- self.ptrVarName = "ptr"
- self.ptrVarType = makeVulkanTypeSimple(False, "uint8_t", 2, self.ptrVarName)
- self.ptrVarTypeUnmarshal = makeVulkanTypeSimple(False, "uint8_t", 2, self.ptrVarName)
-
- if self.variant == "guest":
- self.marshalingParams = PARAMETERS_MARSHALING_GUEST
- else:
- self.marshalingParams = PARAMETERS_MARSHALING
-
- self.writeCodegen = \
- VulkanReservedMarshalingCodegen(
- None,
- VULKAN_STREAM_VAR_NAME,
- ROOT_TYPE_VAR_NAME,
- MARSHAL_INPUT_VAR_NAME,
- self.ptrVarName,
- API_PREFIX_RESERVEDMARSHAL,
- "get_host_u64_" if "guest" == self.variant else "",
- direction = "write")
-
- self.readCodegen = \
- VulkanReservedMarshalingCodegen(
- None,
- VULKAN_STREAM_VAR_NAME,
- ROOT_TYPE_VAR_NAME,
- UNMARSHAL_INPUT_VAR_NAME,
- self.ptrVarName,
- API_PREFIX_RESERVEDUNMARSHAL,
- "unbox_" if "host" == self.variant else "",
- direction = "read",
- dynAlloc=self.dynAlloc)
-
- self.knownDefs = {}
-
- self.extensionMarshalPrototype = \
- VulkanAPI(API_PREFIX_RESERVEDMARSHAL + "extension_struct",
- STREAM_RET_TYPE,
- self.marshalingParams +
- [STRUCT_EXTENSION_PARAM, self.ptrVarType])
-
- self.extensionUnmarshalPrototype = \
- VulkanAPI(API_PREFIX_RESERVEDUNMARSHAL + "extension_struct",
- STREAM_RET_TYPE,
- self.marshalingParams +
- [STRUCT_EXTENSION_PARAM_FOR_WRITE, self.ptrVarTypeUnmarshal])
-
- def onBegin(self,):
- VulkanWrapperGenerator.onBegin(self)
- self.module.appendImpl(self.cgenImpl.makeFuncDecl(self.extensionMarshalPrototype))
- self.module.appendImpl(self.cgenImpl.makeFuncDecl(self.extensionUnmarshalPrototype))
-
- def onBeginFeature(self, featureName, featureType):
- VulkanWrapperGenerator.onBeginFeature(self, featureName, featureType)
- self.currentFeature = featureName
-
- def onGenType(self, typeXml, name, alias):
- VulkanWrapperGenerator.onGenType(self, typeXml, name, alias)
-
- if name in self.knownDefs:
- return
-
- category = self.typeInfo.categoryOf(name)
-
- if category in ["struct", "union"] and alias:
- if self.variant != "host":
- self.module.appendHeader(
- self.cgenHeader.makeFuncAlias(API_PREFIX_RESERVEDMARSHAL + name,
- API_PREFIX_RESERVEDMARSHAL + alias))
- if self.variant != "guest":
- self.module.appendHeader(
- self.cgenHeader.makeFuncAlias(API_PREFIX_RESERVEDUNMARSHAL + name,
- API_PREFIX_RESERVEDUNMARSHAL + alias))
-
- if category in ["struct", "union"] and not alias:
-
- structInfo = self.typeInfo.structs[name]
-
- marshalParams = self.marshalingParams + \
- [makeVulkanTypeSimple(True, name, 1, MARSHAL_INPUT_VAR_NAME),
- self.ptrVarType]
-
- freeParams = []
- letParams = []
-
- for (envname, bindingInfo) in list(sorted(structInfo.environment.items(), key = lambda kv: kv[0])):
- if None == bindingInfo["binding"]:
- freeParams.append(makeVulkanTypeSimple(True, bindingInfo["type"], 0, envname))
- else:
- if not bindingInfo["structmember"]:
- letParams.append(makeVulkanTypeSimple(True, bindingInfo["type"], 0, envname))
-
- marshalPrototype = \
- VulkanAPI(API_PREFIX_RESERVEDMARSHAL + name,
- STREAM_RET_TYPE,
- marshalParams + freeParams)
-
- marshalPrototypeNoFilter = \
- VulkanAPI(API_PREFIX_RESERVEDMARSHAL + name,
- STREAM_RET_TYPE,
- marshalParams)
-
- def structMarshalingCustom(cgen):
- self.writeCodegen.cgen = cgen
- self.writeCodegen.currentStructInfo = structInfo
- marshalingCode = \
- CUSTOM_MARSHAL_TYPES[name]["common"] + \
- CUSTOM_MARSHAL_TYPES[name]["reservedmarshaling"].format(
- streamVarName=self.writeCodegen.streamVarName,
- rootTypeVarName=self.writeCodegen.rootTypeVarName,
- inputVarName=self.writeCodegen.inputVarName,
- newInputVarName=self.writeCodegen.inputVarName + "_new")
- for line in marshalingCode.split('\n'):
- cgen.line(line)
-
- def structMarshalingDef(cgen):
- self.writeCodegen.cgen = cgen
- self.writeCodegen.currentStructInfo = structInfo
- self.writeCodegen.cgen.stmt("(void)%s" % VULKAN_STREAM_VAR_NAME)
- self.writeCodegen.cgen.stmt("(void)%s" % ROOT_TYPE_VAR_NAME)
-
- if category == "struct":
- # marshal 'let' parameters first
- for letp in letParams:
- self.writeCodegen.streamLetParameter(self.typeInfo, letp)
-
- for member in structInfo.members:
- iterateVulkanType(self.typeInfo, member, self.writeCodegen)
- if category == "union":
- iterateVulkanType(self.typeInfo, structInfo.members[0], self.writeCodegen)
-
- def structMarshalingDefNoFilter(cgen):
- self.writeCodegen.cgen = cgen
- self.writeCodegen.currentStructInfo = structInfo
- self.writeCodegen.doFiltering = False
- self.writeCodegen.cgen.stmt("(void)%s" % VULKAN_STREAM_VAR_NAME)
- self.writeCodegen.cgen.stmt("(void)%s" % ROOT_TYPE_VAR_NAME)
-
- if category == "struct":
- # marshal 'let' parameters first
- for letp in letParams:
- self.writeCodegen.streamLetParameter(self.typeInfo, letp)
-
- for member in structInfo.members:
- iterateVulkanType(self.typeInfo, member, self.writeCodegen)
- if category == "union":
- iterateVulkanType(self.typeInfo, structInfo.members[0], self.writeCodegen)
- self.writeCodegen.doFiltering = True
-
- if self.variant != "host":
- self.module.appendHeader(
- self.cgenHeader.makeFuncDecl(marshalPrototype))
-
- if name in CUSTOM_MARSHAL_TYPES:
- self.module.appendImpl(
- self.cgenImpl.makeFuncImpl(
- marshalPrototype, structMarshalingCustom))
- else:
- self.module.appendImpl(
- self.cgenImpl.makeFuncImpl(
- marshalPrototype, structMarshalingDef))
-
- if freeParams != []:
- self.module.appendHeader(
- self.cgenHeader.makeFuncDecl(marshalPrototypeNoFilter))
- self.module.appendImpl(
- self.cgenImpl.makeFuncImpl(
- marshalPrototypeNoFilter, structMarshalingDefNoFilter))
-
- unmarshalPrototype = \
- VulkanAPI(API_PREFIX_RESERVEDUNMARSHAL + name,
- STREAM_RET_TYPE,
- self.marshalingParams + [makeVulkanTypeSimple(False, name, 1, UNMARSHAL_INPUT_VAR_NAME), self.ptrVarTypeUnmarshal] + freeParams)
-
- unmarshalPrototypeNoFilter = \
- VulkanAPI(API_PREFIX_RESERVEDUNMARSHAL + name,
- STREAM_RET_TYPE,
- self.marshalingParams + [makeVulkanTypeSimple(False, name, 1, UNMARSHAL_INPUT_VAR_NAME), self.ptrVarTypeUnmarshal])
-
- def structUnmarshalingCustom(cgen):
- self.readCodegen.cgen = cgen
- self.readCodegen.currentStructInfo = structInfo
- unmarshalingCode = \
- CUSTOM_MARSHAL_TYPES[name]["common"] + \
- CUSTOM_MARSHAL_TYPES[name]["reservedunmarshaling"].format(
- streamVarName=self.readCodegen.streamVarName,
- rootTypeVarName=self.readCodegen.rootTypeVarName,
- inputVarName=self.readCodegen.inputVarName,
- newInputVarName=self.readCodegen.inputVarName + "_new")
- for line in unmarshalingCode.split('\n'):
- cgen.line(line)
-
- def structUnmarshalingDef(cgen):
- self.readCodegen.cgen = cgen
- self.readCodegen.currentStructInfo = structInfo
- if category == "struct":
- # unmarshal 'let' parameters first
- for letp in letParams:
- self.readCodegen.streamLetParameter(self.typeInfo, letp)
-
- for member in structInfo.members:
- iterateVulkanType(self.typeInfo, member, self.readCodegen)
- if category == "union":
- iterateVulkanType(self.typeInfo, structInfo.members[0], self.readCodegen)
-
- def structUnmarshalingDefNoFilter(cgen):
- self.readCodegen.cgen = cgen
- self.readCodegen.currentStructInfo = structInfo
- self.readCodegen.doFiltering = False
- if category == "struct":
- # unmarshal 'let' parameters first
- for letp in letParams:
- iterateVulkanType(self.typeInfo, letp, self.readCodegen)
- for member in structInfo.members:
- iterateVulkanType(self.typeInfo, member, self.readCodegen)
- if category == "union":
- iterateVulkanType(self.typeInfo, structInfo.members[0], self.readCodegen)
- self.readCodegen.doFiltering = True
-
- if self.variant != "guest":
- self.module.appendHeader(
- self.cgenHeader.makeFuncDecl(unmarshalPrototype))
-
- if name in CUSTOM_MARSHAL_TYPES:
- self.module.appendImpl(
- self.cgenImpl.makeFuncImpl(
- unmarshalPrototype, structUnmarshalingCustom))
- else:
- self.module.appendImpl(
- self.cgenImpl.makeFuncImpl(
- unmarshalPrototype, structUnmarshalingDef))
-
- if freeParams != []:
- self.module.appendHeader(
- self.cgenHeader.makeFuncDecl(unmarshalPrototypeNoFilter))
- self.module.appendImpl(
- self.cgenImpl.makeFuncImpl(
- unmarshalPrototypeNoFilter, structUnmarshalingDefNoFilter))
-
- def onGenCmd(self, cmdinfo, name, alias):
- VulkanWrapperGenerator.onGenCmd(self, cmdinfo, name, alias)
-
- def doExtensionStructMarshalingCodegen(self, cgen, retType, extParam, forEach, funcproto, direction):
- accessVar = "structAccess"
- sizeVar = "currExtSize"
- cgen.stmt("VkInstanceCreateInfo* %s = (VkInstanceCreateInfo*)(%s)" % (accessVar, extParam.paramName))
- cgen.stmt("uint32_t %s = %s(%s->getFeatureBits(), %s, %s)" % (sizeVar, EXTENSION_SIZE_WITH_STREAM_FEATURES_API_NAME, VULKAN_STREAM_VAR_NAME, ROOT_TYPE_VAR_NAME, extParam.paramName))
-
- cgen.beginIf("!%s && %s" % (sizeVar, extParam.paramName))
-
- cgen.line("// unknown struct extension; skip and call on its pNext field");
- cgen.funcCall(None, funcproto.name, ["vkStream", ROOT_TYPE_VAR_NAME, "(void*)%s->pNext" % accessVar, self.ptrVarName])
- cgen.stmt("return")
-
- cgen.endIf()
- cgen.beginElse()
-
- cgen.line("// known or null extension struct")
-
- if direction == "write":
- cgen.stmt("memcpy(*%s, &%s, sizeof(uint32_t));" % (self.ptrVarName, sizeVar))
- cgen.stmt("android::base::Stream::toBe32((uint8_t*)*%s); *%s += sizeof(uint32_t)" % (self.ptrVarName, self.ptrVarName))
- elif not self.dynAlloc:
- cgen.stmt("memcpy(&%s, *%s, sizeof(uint32_t));" % (sizeVar, self.ptrVarName))
- cgen.stmt("android::base::Stream::fromBe32((uint8_t*)&%s); *%s += sizeof(uint32_t)" % (sizeVar, self.ptrVarName))
-
- cgen.beginIf("!%s" % (sizeVar))
- cgen.line("// exit if this was a null extension struct (size == 0 in this branch)")
- cgen.stmt("return")
- cgen.endIf()
-
- cgen.endIf()
-
- # Now we can do stream stuff
- if direction == "write":
- cgen.stmt("memcpy(*%s, %s, sizeof(VkStructureType)); *%s += sizeof(VkStructureType)" % (self.ptrVarName, extParam.paramName, self.ptrVarName))
- elif not self.dynAlloc:
- cgen.stmt("uint64_t pNext_placeholder")
- placeholderAccess = "(&pNext_placeholder)"
- cgen.stmt("memcpy(%s, *%s, sizeof(VkStructureType)); *%s += sizeof(VkStructureType)" % (placeholderAccess, self.ptrVarName, self.ptrVarName))
- cgen.stmt("(void)pNext_placeholder")
-
- def fatalDefault(cgen):
- cgen.line("// fatal; the switch is only taken if the extension struct is known");
- cgen.stmt("abort()")
- pass
-
- self.emitForEachStructExtension(
- cgen,
- retType,
- extParam,
- forEach,
- defaultEmit=fatalDefault,
- rootTypeVar=ROOT_TYPE_PARAM)
-
- def onEnd(self,):
- VulkanWrapperGenerator.onEnd(self)
-
- def forEachExtensionMarshal(ext, castedAccess, cgen):
- cgen.funcCall(None, API_PREFIX_RESERVEDMARSHAL + ext.name,
- [VULKAN_STREAM_VAR_NAME, ROOT_TYPE_VAR_NAME, castedAccess, self.ptrVarName])
-
- def forEachExtensionUnmarshal(ext, castedAccess, cgen):
- cgen.funcCall(None, API_PREFIX_RESERVEDUNMARSHAL + ext.name,
- [VULKAN_STREAM_VAR_NAME, ROOT_TYPE_VAR_NAME, castedAccess, self.ptrVarName])
-
- if self.variant != "host":
- self.module.appendImpl(
- self.cgenImpl.makeFuncImpl(
- self.extensionMarshalPrototype,
- lambda cgen: self.doExtensionStructMarshalingCodegen(
- cgen,
- STREAM_RET_TYPE,
- STRUCT_EXTENSION_PARAM,
- forEachExtensionMarshal,
- self.extensionMarshalPrototype,
- "write")))
-
- if self.variant != "guest":
- self.module.appendImpl(
- self.cgenImpl.makeFuncImpl(
- self.extensionUnmarshalPrototype,
- lambda cgen: self.doExtensionStructMarshalingCodegen(
- cgen,
- STREAM_RET_TYPE,
- STRUCT_EXTENSION_PARAM_FOR_WRITE,
- forEachExtensionUnmarshal,
- self.extensionUnmarshalPrototype,
- "read")))
diff --git a/codegen/vulkan/scripts/cereal/subdecode.py b/codegen/vulkan/scripts/cereal/subdecode.py
deleted file mode 100644
index b77cad77..00000000
--- a/codegen/vulkan/scripts/cereal/subdecode.py
+++ /dev/null
@@ -1,395 +0,0 @@
-from .common.codegen import CodeGen, VulkanWrapperGenerator
-from .common.vulkantypes import VulkanAPI, iterateVulkanType, VulkanType
-
-from .reservedmarshaling import VulkanReservedMarshalingCodegen
-from .transform import TransformCodegen
-
-from .wrapperdefs import API_PREFIX_RESERVEDUNMARSHAL
-from .wrapperdefs import MAX_PACKET_LENGTH
-from .wrapperdefs import ROOT_TYPE_DEFAULT_VALUE
-
-
-decoder_decl_preamble = """
-"""
-
-decoder_impl_preamble = """
-"""
-
-global_state_prefix = "this->on_"
-
-READ_STREAM = "readStream"
-WRITE_STREAM = "vkStream"
-
-# Driver workarounds for APIs that don't work well multithreaded
-driver_workarounds_global_lock_apis = [
- "vkCreatePipelineLayout",
- "vkDestroyPipelineLayout",
-]
-
-MAX_STACK_ITEMS = "16"
-
-
-def emit_param_decl_for_reading(param, cgen):
- if param.staticArrExpr:
- cgen.stmt(
- cgen.makeRichCTypeDecl(param.getForNonConstAccess()))
- else:
- cgen.stmt(
- cgen.makeRichCTypeDecl(param))
-
- if param.pointerIndirectionLevels > 0:
- lenAccess = cgen.generalLengthAccess(param)
- if not lenAccess:
- lenAccess = "1"
- arrSize = "1" if "1" == lenAccess else "MAX_STACK_ITEMS"
-
- typeHere = "uint8_t*" if "void" == param.typeName else param.typeName
- cgen.stmt("%s%s stack_%s[%s]" % (
- typeHere, "*" * (param.pointerIndirectionLevels - 1), param.paramName, arrSize))
-
-
-def emit_unmarshal(typeInfo, param, cgen, output=False, destroy=False, noUnbox=False):
- if destroy:
- iterateVulkanType(typeInfo, param, VulkanReservedMarshalingCodegen(
- cgen,
- READ_STREAM,
- ROOT_TYPE_DEFAULT_VALUE,
- param.paramName,
- "readStreamPtrPtr",
- API_PREFIX_RESERVEDUNMARSHAL,
- "",
- direction="read",
- dynAlloc=True))
- lenAccess = cgen.generalLengthAccess(param)
- lenAccessGuard = cgen.generalLengthAccessGuard(param)
- if None == lenAccess or "1" == lenAccess:
- cgen.stmt("boxed_%s_preserve = %s" %
- (param.paramName, param.paramName))
- cgen.stmt("%s = unbox_%s(%s)" %
- (param.paramName, param.typeName, param.paramName))
- else:
- if lenAccessGuard is not None:
- self.cgen.beginIf(lenAccessGuard)
- cgen.beginFor("uint32_t i = 0", "i < %s" % lenAccess, "++i")
- cgen.stmt("boxed_%s_preserve[i] = %s[i]" %
- (param.paramName, param.paramName))
- cgen.stmt("((%s*)(%s))[i] = unbox_%s(%s[i])" % (param.typeName,
- param.paramName, param.typeName, param.paramName))
- cgen.endFor()
- if lenAccessGuard is not None:
- self.cgen.endIf()
- else:
- if noUnbox:
- cgen.line("// No unbox for %s" % (param.paramName))
-
- lenAccess = cgen.generalLengthAccess(param)
- if not lenAccess:
- lenAccess = "1"
- arrSize = "1" if "1" == lenAccess else "MAX_STACK_ITEMS"
-
- iterateVulkanType(typeInfo, param, VulkanReservedMarshalingCodegen(
- cgen,
- READ_STREAM,
- ROOT_TYPE_DEFAULT_VALUE,
- param.paramName,
- "readStreamPtrPtr",
- API_PREFIX_RESERVEDUNMARSHAL,
- "" if (output or noUnbox) else "unbox_",
- direction="read",
- dynAlloc=True,
- stackVar="stack_%s" % param.paramName,
- stackArrSize=arrSize))
-
-
-def emit_dispatch_unmarshal(typeInfo, param, cgen, globalWrapped):
- if globalWrapped:
- cgen.stmt(
- "// Begin global wrapped dispatchable handle unboxing for %s" % param.paramName)
- iterateVulkanType(typeInfo, param, VulkanReservedMarshalingCodegen(
- cgen,
- READ_STREAM,
- ROOT_TYPE_DEFAULT_VALUE,
- param.paramName,
- "readStreamPtrPtr",
- API_PREFIX_RESERVEDUNMARSHAL,
- "",
- direction="read",
- dynAlloc=True))
- else:
- cgen.stmt(
- "// Begin non wrapped dispatchable handle unboxing for %s" % param.paramName)
- # cgen.stmt("%s->unsetHandleMapping()" % READ_STREAM)
- iterateVulkanType(typeInfo, param, VulkanReservedMarshalingCodegen(
- cgen,
- READ_STREAM,
- ROOT_TYPE_DEFAULT_VALUE,
- param.paramName,
- "readStreamPtrPtr",
- API_PREFIX_RESERVEDUNMARSHAL,
- "",
- direction="read",
- dynAlloc=True))
- cgen.stmt("auto unboxed_%s = unbox_%s(%s)" %
- (param.paramName, param.typeName, param.paramName))
- cgen.stmt("auto vk = dispatch_%s(%s)" %
- (param.typeName, param.paramName))
- cgen.stmt("// End manual dispatchable handle unboxing for %s" %
- param.paramName)
-
-
-def emit_transform(typeInfo, param, cgen, variant="tohost"):
- res = \
- iterateVulkanType(typeInfo, param, TransformCodegen(
- cgen, param.paramName, "globalstate", "transform_%s_" % variant, variant))
- if not res:
- cgen.stmt("(void)%s" % param.paramName)
-
-# Everything here elides the initial arg
-
-
-class DecodingParameters(object):
- def __init__(self, api: VulkanAPI):
- self.params: list[VulkanType] = []
- self.toRead: list[VulkanType] = []
- self.toWrite: list[VulkanType] = []
-
- for i, param in enumerate(api.parameters[1:]):
- if i == 0 and param.isDispatchableHandleType():
- param.dispatchHandle = True
-
- if param.isNonDispatchableHandleType() and param.isCreatedBy(api):
- param.nonDispatchableHandleCreate = True
-
- if param.isNonDispatchableHandleType() and param.isDestroyedBy(api):
- param.nonDispatchableHandleDestroy = True
-
- if param.isDispatchableHandleType() and param.isCreatedBy(api):
- param.dispatchableHandleCreate = True
-
- if param.isDispatchableHandleType() and param.isDestroyedBy(api):
- param.dispatchableHandleDestroy = True
-
- self.toRead.append(param)
-
- if param.possiblyOutput():
- self.toWrite.append(param)
-
- self.params.append(param)
-
-
-def emit_call_log(api, cgen):
- decodingParams = DecodingParameters(api)
- paramsToRead = decodingParams.toRead
-
- # cgen.beginIf("m_logCalls")
- paramLogFormat = "%p"
- paramLogArgs = ["(void*)boxed_dispatchHandle"]
-
- for p in paramsToRead:
- paramLogFormat += "0x%llx "
- for p in paramsToRead:
- paramLogArgs.append("(unsigned long long)%s" % (p.paramName))
- # cgen.stmt("fprintf(stderr, \"substream %%p: call %s %s\\n\", readStream, %s)" % (api.name, paramLogFormat, ", ".join(paramLogArgs)))
- # cgen.endIf()
-
-
-def emit_decode_parameters(typeInfo, api, cgen, globalWrapped=False):
-
- decodingParams = DecodingParameters(api)
-
- paramsToRead = decodingParams.toRead
-
- for p in paramsToRead:
- emit_param_decl_for_reading(p, cgen)
-
- i = 0
- for p in paramsToRead:
- lenAccess = cgen.generalLengthAccess(p)
-
- if p.dispatchHandle:
- emit_dispatch_unmarshal(typeInfo, p, cgen, globalWrapped)
- else:
- destroy = p.nonDispatchableHandleDestroy or p.dispatchableHandleDestroy
- noUnbox = False
-
- if p.nonDispatchableHandleDestroy or p.dispatchableHandleDestroy:
- destroy = True
- cgen.stmt(
- "// Begin manual non dispatchable handle destroy unboxing for %s" % p.paramName)
- if None == lenAccess or "1" == lenAccess:
- cgen.stmt("%s boxed_%s_preserve" %
- (p.typeName, p.paramName))
- else:
- cgen.stmt("%s* boxed_%s_preserve; %s->alloc((void**)&boxed_%s_preserve, %s * sizeof(%s))" %
- (p.typeName, p.paramName, READ_STREAM, p.paramName, lenAccess, p.typeName))
-
- if p.possiblyOutput():
- cgen.stmt(
- "// Begin manual dispatchable handle unboxing for %s" % p.paramName)
- cgen.stmt("%s->unsetHandleMapping()" % READ_STREAM)
-
- emit_unmarshal(typeInfo, p, cgen, output=p.possiblyOutput(
- ), destroy=destroy, noUnbox=noUnbox)
- i += 1
-
- for p in paramsToRead:
- emit_transform(typeInfo, p, cgen, variant="tohost")
-
- emit_call_log(api, cgen)
-
-
-def emit_dispatch_call(api, cgen):
-
- decodingParams = DecodingParameters(api)
-
- customParams = ["(VkCommandBuffer)dispatchHandle"]
-
- for (i, p) in enumerate(api.parameters[1:]):
- customParam = p.paramName
- if decodingParams.params[i].dispatchHandle:
- customParam = "unboxed_%s" % p.paramName
- customParams.append(customParam)
-
- if api.name in driver_workarounds_global_lock_apis:
- cgen.stmt("lock()")
-
- cgen.vkApiCall(api, customPrefix="vk->", customParameters=customParams,
- checkForDeviceLost=True, globalStatePrefix=global_state_prefix,
- checkForOutOfMemory=True)
-
- if api.name in driver_workarounds_global_lock_apis:
- cgen.stmt("unlock()")
-
-
-def emit_global_state_wrapped_call(api, cgen, context=False):
- customParams = ["pool", "(VkCommandBuffer)(boxed_dispatchHandle)"] + \
- list(map(lambda p: p.paramName, api.parameters[1:]))
- if context:
- customParams += ["context"];
- cgen.vkApiCall(api, customPrefix=global_state_prefix,
- customParameters=customParams, checkForDeviceLost=True,
- checkForOutOfMemory=True, globalStatePrefix=global_state_prefix)
-
-
-def emit_default_decoding(typeInfo, api, cgen):
- emit_decode_parameters(typeInfo, api, cgen)
- emit_dispatch_call(api, cgen)
-
-
-def emit_global_state_wrapped_decoding(typeInfo, api, cgen):
- emit_decode_parameters(typeInfo, api, cgen, globalWrapped=True)
- emit_global_state_wrapped_call(api, cgen)
-
-def emit_global_state_wrapped_decoding_with_context(typeInfo, api, cgen):
- emit_decode_parameters(typeInfo, api, cgen, globalWrapped=True)
- emit_global_state_wrapped_call(api, cgen, context=True)
-
-custom_decodes = {
- "vkCmdCopyBufferToImage": emit_global_state_wrapped_decoding_with_context,
- "vkCmdCopyImage": emit_global_state_wrapped_decoding,
- "vkCmdCopyImageToBuffer": emit_global_state_wrapped_decoding,
- "vkCmdExecuteCommands": emit_global_state_wrapped_decoding,
- "vkBeginCommandBuffer": emit_global_state_wrapped_decoding_with_context,
- "vkEndCommandBuffer": emit_global_state_wrapped_decoding_with_context,
- "vkResetCommandBuffer": emit_global_state_wrapped_decoding,
- "vkCmdPipelineBarrier": emit_global_state_wrapped_decoding,
- "vkCmdBindPipeline": emit_global_state_wrapped_decoding,
- "vkCmdBindDescriptorSets": emit_global_state_wrapped_decoding,
- "vkCmdCopyQueryPoolResults": emit_global_state_wrapped_decoding,
- "vkBeginCommandBufferAsyncGOOGLE": emit_global_state_wrapped_decoding_with_context,
- "vkEndCommandBufferAsyncGOOGLE": emit_global_state_wrapped_decoding_with_context,
- "vkResetCommandBufferAsyncGOOGLE": emit_global_state_wrapped_decoding,
- "vkCommandBufferHostSyncGOOGLE": emit_global_state_wrapped_decoding,
-}
-
-
-class VulkanSubDecoder(VulkanWrapperGenerator):
- def __init__(self, module, typeInfo):
- VulkanWrapperGenerator.__init__(self, module, typeInfo)
- self.typeInfo = typeInfo
- self.cgen = CodeGen()
-
- def onBegin(self,):
- self.module.appendImpl(
- "#define MAX_STACK_ITEMS %s\n" % MAX_STACK_ITEMS)
-
- self.module.appendImpl(
- "#define MAX_PACKET_LENGTH %s\n" % MAX_PACKET_LENGTH)
-
- self.module.appendImpl(
- "size_t subDecode(VulkanMemReadingStream* readStream, VulkanDispatch* vk, void* boxed_dispatchHandle, void* dispatchHandle, VkDeviceSize dataSize, const void* pData, const VkDecoderContext& context)\n")
-
- self.cgen.beginBlock() # function body
-
- self.cgen.stmt("auto& metricsLogger = *context.metricsLogger")
- self.cgen.stmt("uint32_t count = 0")
- self.cgen.stmt("unsigned char *buf = (unsigned char *)pData")
- self.cgen.stmt("android::base::BumpPool* pool = readStream->pool()")
- self.cgen.stmt("unsigned char *ptr = (unsigned char *)pData")
- self.cgen.stmt(
- "const unsigned char* const end = (const unsigned char*)buf + dataSize")
- self.cgen.stmt(
- "VkDecoderGlobalState* globalstate = VkDecoderGlobalState::get()")
-
- self.cgen.line("while (end - ptr >= 8)")
- self.cgen.beginBlock() # while loop
-
- self.cgen.stmt("uint32_t opcode = *(uint32_t *)ptr")
- self.cgen.stmt("uint32_t packetLen = *(uint32_t *)(ptr + 4)")
- self.cgen.line("""
- // packetLen should be at least 8 (op code and packet length) and should not be excessively large
- if (packetLen < 8 || packetLen > MAX_PACKET_LENGTH) {
- WARN("Bad packet length %d detected, subdecode may fail", packetLen);
- metricsLogger.logMetricEvent(MetricEventBadPacketLength{ .len = packetLen });
- }
- """)
- self.cgen.stmt("if (end - ptr < packetLen) return ptr - (unsigned char*)buf")
-
-
- self.cgen.stmt("%s->setBuf((uint8_t*)(ptr + 8))" % READ_STREAM)
- self.cgen.stmt(
- "uint8_t* readStreamPtr = %s->getBuf(); uint8_t** readStreamPtrPtr = &readStreamPtr" % READ_STREAM)
- self.cgen.line("switch (opcode)")
- self.cgen.beginBlock() # switch stmt
-
- self.module.appendImpl(self.cgen.swapCode())
-
- def onGenCmd(self, cmdinfo, name, alias):
- typeInfo = self.typeInfo
- cgen = self.cgen
- api = typeInfo.apis[name]
-
- if "commandBuffer" != api.parameters[0].paramName:
- return
-
- cgen.line("case OP_%s:" % name)
- cgen.beginBlock()
- cgen.stmt("android::base::beginTrace(\"%s subdecode\")" % name)
-
- if api.name in custom_decodes.keys():
- custom_decodes[api.name](typeInfo, api, cgen)
- else:
- emit_default_decoding(typeInfo, api, cgen)
-
- cgen.stmt("android::base::endTrace()")
- cgen.stmt("break")
- cgen.endBlock()
- self.module.appendImpl(self.cgen.swapCode())
-
- def onEnd(self,):
- self.cgen.line("default:")
- self.cgen.beginBlock()
- self.cgen.stmt(
- "GFXSTREAM_ABORT(::emugl::FatalError(::emugl::ABORT_REASON_OTHER)) << \"Unrecognized opcode \" << opcode")
- self.cgen.endBlock()
-
- self.cgen.endBlock() # switch stmt
-
- self.cgen.stmt("++count; if (count % 1000 == 0) { pool->freeAll(); }")
- self.cgen.stmt("ptr += packetLen")
- self.cgen.endBlock() # while loop
-
- self.cgen.stmt("pool->freeAll()")
- self.cgen.stmt("return ptr - (unsigned char*)buf;")
- self.cgen.endBlock() # function body
- self.module.appendImpl(self.cgen.swapCode())
diff --git a/codegen/vulkan/scripts/cereal/testing.py b/codegen/vulkan/scripts/cereal/testing.py
deleted file mode 100644
index 898532fc..00000000
--- a/codegen/vulkan/scripts/cereal/testing.py
+++ /dev/null
@@ -1,399 +0,0 @@
-# Copyright (c) 2018 The Android Open Source Project
-# Copyright (c) 2018 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from copy import copy
-
-from .common.codegen import CodeGen
-from .common.vulkantypes import \
- VulkanAPI, makeVulkanTypeSimple, iterateVulkanType, VulkanTypeIterator
-
-from .wrapperdefs import VulkanWrapperGenerator
-from .wrapperdefs import EQUALITY_VAR_NAMES
-from .wrapperdefs import EQUALITY_ON_FAIL_VAR
-from .wrapperdefs import EQUALITY_ON_FAIL_VAR_TYPE
-from .wrapperdefs import EQUALITY_RET_TYPE
-from .wrapperdefs import API_PREFIX_EQUALITY
-from .wrapperdefs import STRUCT_EXTENSION_PARAM, STRUCT_EXTENSION_PARAM2
-
-class VulkanEqualityCodegen(VulkanTypeIterator):
-
- def __init__(self, cgen, inputVars, onFailCompareVar, prefix):
- self.cgen = cgen
- self.inputVars = inputVars
- self.onFailCompareVar = onFailCompareVar
- self.prefix = prefix
-
- def makeAccess(varName, asPtr = True):
- return lambda t: self.cgen.generalAccess(t, parentVarName = varName, asPtr = asPtr)
-
- def makeLengthAccess(varName):
- return lambda t: self.cgen.generalLengthAccess(t, parentVarName = varName)
-
- def makeLengthAccessGuard(varName):
- return lambda t: self.cgen.generalLengthAccessGuard(t, parentVarName=varName)
-
- self.exprAccessorLhs = makeAccess(self.inputVars[0])
- self.exprAccessorRhs = makeAccess(self.inputVars[1])
-
- self.exprAccessorValueLhs = makeAccess(self.inputVars[0], asPtr = False)
- self.exprAccessorValueRhs = makeAccess(self.inputVars[1], asPtr = False)
-
- self.lenAccessorLhs = makeLengthAccess(self.inputVars[0])
- self.lenAccessorRhs = makeLengthAccess(self.inputVars[1])
-
- self.lenAccessGuardLhs = makeLengthAccessGuard(self.inputVars[0])
- self.lenAccessGuardRhs = makeLengthAccessGuard(self.inputVars[1])
-
- self.checked = False
-
- def getTypeForCompare(self, vulkanType):
- res = copy(vulkanType)
-
- if not vulkanType.accessibleAsPointer():
- res = res.getForAddressAccess()
-
- if vulkanType.staticArrExpr:
- res = res.getForAddressAccess()
-
- return res
-
- def makeCastExpr(self, vulkanType):
- return "(%s)" % (
- self.cgen.makeCTypeDecl(vulkanType, useParamName=False))
-
- def makeEqualExpr(self, lhs, rhs):
- return "(%s) == (%s)" % (lhs, rhs)
-
- def makeEqualBufExpr(self, lhs, rhs, size):
- return "(memcmp(%s, %s, %s) == 0)" % (lhs, rhs, size)
-
- def makeEqualStringExpr(self, lhs, rhs):
- return "(strcmp(%s, %s) == 0)" % (lhs, rhs)
-
- def makeBothNotNullExpr(self, lhs, rhs):
- return "(%s) && (%s)" % (lhs, rhs)
-
- def makeBothNullExpr(self, lhs, rhs):
- return "!(%s) && !(%s)" % (lhs, rhs)
-
- def compareWithConsequence(self, compareExpr, vulkanType, errMsg=""):
- self.cgen.stmt("if (!(%s)) { %s(\"%s (Error: %s)\"); }" %
- (compareExpr, self.onFailCompareVar,
- self.exprAccessorValueLhs(vulkanType), errMsg))
-
- def onCheck(self, vulkanType):
-
- self.checked = True
-
- accessLhs = self.exprAccessorLhs(vulkanType)
- accessRhs = self.exprAccessorRhs(vulkanType)
-
- bothNull = self.makeBothNullExpr(accessLhs, accessRhs)
- bothNotNull = self.makeBothNotNullExpr(accessLhs, accessRhs)
- nullMatchExpr = "(%s) || (%s)" % (bothNull, bothNotNull)
-
- self.compareWithConsequence( \
- nullMatchExpr,
- vulkanType,
- "Mismatch in optional field")
-
- skipStreamInternal = vulkanType.typeName == "void"
-
- if skipStreamInternal:
- return
-
- self.cgen.beginIf("%s && %s" % (accessLhs, accessRhs))
-
- def endCheck(self, vulkanType):
-
- skipStreamInternal = vulkanType.typeName == "void"
- if skipStreamInternal:
- return
-
- if self.checked:
- self.cgen.endIf()
- self.checked = False
-
- def onCompoundType(self, vulkanType):
- accessLhs = self.exprAccessorLhs(vulkanType)
- accessRhs = self.exprAccessorRhs(vulkanType)
-
- lenAccessLhs = self.lenAccessorLhs(vulkanType)
- lenAccessRhs = self.lenAccessorRhs(vulkanType)
-
- lenAccessGuardLhs = self.lenAccessGuardLhs(vulkanType)
- lenAccessGuardRhs = self.lenAccessGuardRhs(vulkanType)
-
- needNullCheck = vulkanType.pointerIndirectionLevels > 0
-
- if needNullCheck:
- bothNotNullExpr = self.makeBothNotNullExpr(accessLhs, accessRhs)
- self.cgen.beginIf(bothNotNullExpr)
-
- if lenAccessLhs is not None:
- equalLenExpr = self.makeEqualExpr(lenAccessLhs, lenAccessRhs)
-
- self.compareWithConsequence( \
- equalLenExpr,
- vulkanType, "Lengths not equal")
-
- loopVar = "i"
- accessLhs = "%s + %s" % (accessLhs, loopVar)
- accessRhs = "%s + %s" % (accessRhs, loopVar)
- forInit = "uint32_t %s = 0" % loopVar
- forCond = "%s < (uint32_t)%s" % (loopVar, lenAccessLhs)
- forIncr = "++%s" % loopVar
-
- if needNullCheck:
- self.cgen.beginIf(equalLenExpr)
-
- if lenAccessGuardLhs is not None:
- self.cgen.beginIf(lenAccessGuardLhs)
-
- self.cgen.beginFor(forInit, forCond, forIncr)
-
- self.cgen.funcCall(None, self.prefix + vulkanType.typeName,
- [accessLhs, accessRhs, self.onFailCompareVar])
-
- if lenAccessLhs is not None:
- self.cgen.endFor()
- if lenAccessGuardLhs is not None:
- self.cgen.endIf()
- if needNullCheck:
- self.cgen.endIf()
-
- if needNullCheck:
- self.cgen.endIf()
-
- def onString(self, vulkanType):
- accessLhs = self.exprAccessorLhs(vulkanType)
- accessRhs = self.exprAccessorRhs(vulkanType)
-
- bothNullExpr = self.makeBothNullExpr(accessLhs, accessRhs)
- bothNotNullExpr = self.makeBothNotNullExpr(accessLhs, accessRhs)
- nullMatchExpr = "(%s) || (%s)" % (bothNullExpr, bothNotNullExpr)
-
- self.compareWithConsequence( \
- nullMatchExpr,
- vulkanType,
- "Mismatch in string pointer nullness")
-
- self.cgen.beginIf(bothNotNullExpr)
-
- self.compareWithConsequence(
- self.makeEqualStringExpr(accessLhs, accessRhs),
- vulkanType, "Unequal strings")
-
- self.cgen.endIf()
-
- def onStringArray(self, vulkanType):
- accessLhs = self.exprAccessorLhs(vulkanType)
- accessRhs = self.exprAccessorRhs(vulkanType)
-
- lenAccessLhs = self.lenAccessorLhs(vulkanType)
- lenAccessRhs = self.lenAccessorRhs(vulkanType)
-
- lenAccessGuardLhs = self.lenAccessGuardLhs(vulkanType)
- lenAccessGuardRhs = self.lenAccessGuardRhs(vulkanType)
-
- bothNullExpr = self.makeBothNullExpr(accessLhs, accessRhs)
- bothNotNullExpr = self.makeBothNotNullExpr(accessLhs, accessRhs)
- nullMatchExpr = "(%s) || (%s)" % (bothNullExpr, bothNotNullExpr)
-
- self.compareWithConsequence( \
- nullMatchExpr,
- vulkanType,
- "Mismatch in string array pointer nullness")
-
- equalLenExpr = self.makeEqualExpr(lenAccessLhs, lenAccessRhs)
-
- self.compareWithConsequence( \
- equalLenExpr,
- vulkanType, "Lengths not equal in string array")
-
- self.compareWithConsequence( \
- equalLenExpr,
- vulkanType, "Lengths not equal in string array")
-
- self.cgen.beginIf("%s && %s" % (equalLenExpr, bothNotNullExpr))
-
- loopVar = "i"
- accessLhs = "*(%s + %s)" % (accessLhs, loopVar)
- accessRhs = "*(%s + %s)" % (accessRhs, loopVar)
- forInit = "uint32_t %s = 0" % loopVar
- forCond = "%s < (uint32_t)%s" % (loopVar, lenAccessLhs)
- forIncr = "++%s" % loopVar
-
- if lenAccessGuardLhs is not None:
- self.cgen.beginIf(lenAccessGuardLhs)
-
- self.cgen.beginFor(forInit, forCond, forIncr)
-
- self.compareWithConsequence(
- self.makeEqualStringExpr(accessLhs, accessRhs),
- vulkanType, "Unequal string in string array")
-
- self.cgen.endFor()
-
- if lenAccessGuardLhs is not None:
- self.cgen.endIf()
-
- self.cgen.endIf()
-
- def onStaticArr(self, vulkanType):
- accessLhs = self.exprAccessorLhs(vulkanType)
- accessRhs = self.exprAccessorRhs(vulkanType)
-
- lenAccessLhs = self.lenAccessorLhs(vulkanType)
-
- finalLenExpr = "%s * %s" % (lenAccessLhs,
- self.cgen.sizeofExpr(vulkanType))
-
- self.compareWithConsequence(
- self.makeEqualBufExpr(accessLhs, accessRhs, finalLenExpr),
- vulkanType, "Unequal static array")
-
- def onStructExtension(self, vulkanType):
- lhs = self.exprAccessorLhs(vulkanType)
- rhs = self.exprAccessorRhs(vulkanType)
-
- self.cgen.beginIf(lhs)
- self.cgen.funcCall(None, self.prefix + "extension_struct",
- [lhs, rhs, self.onFailCompareVar])
- self.cgen.endIf()
-
- def onPointer(self, vulkanType):
- accessLhs = self.exprAccessorLhs(vulkanType)
- accessRhs = self.exprAccessorRhs(vulkanType)
-
- skipStreamInternal = vulkanType.typeName == "void"
- if skipStreamInternal:
- return
-
- lenAccessLhs = self.lenAccessorLhs(vulkanType)
- lenAccessRhs = self.lenAccessorRhs(vulkanType)
-
- if lenAccessLhs is not None:
- self.compareWithConsequence( \
- self.makeEqualExpr(lenAccessLhs, lenAccessRhs),
- vulkanType, "Lengths not equal")
-
- finalLenExpr = "%s * %s" % (lenAccessLhs,
- self.cgen.sizeofExpr(
- vulkanType.getForValueAccess()))
- else:
- finalLenExpr = self.cgen.sizeofExpr(vulkanType.getForValueAccess())
-
- self.compareWithConsequence(
- self.makeEqualBufExpr(accessLhs, accessRhs, finalLenExpr),
- vulkanType, "Unequal dyn array")
-
- def onValue(self, vulkanType):
- accessLhs = self.exprAccessorValueLhs(vulkanType)
- accessRhs = self.exprAccessorValueRhs(vulkanType)
- self.compareWithConsequence(
- self.makeEqualExpr(accessLhs, accessRhs), vulkanType,
- "Value not equal")
-
-
-class VulkanTesting(VulkanWrapperGenerator):
-
- def __init__(self, module, typeInfo):
- VulkanWrapperGenerator.__init__(self, module, typeInfo)
-
- self.codegen = CodeGen()
-
- self.equalityCodegen = \
- VulkanEqualityCodegen(
- None,
- EQUALITY_VAR_NAMES,
- EQUALITY_ON_FAIL_VAR,
- API_PREFIX_EQUALITY)
-
- self.knownDefs = {}
-
- self.extensionTestingPrototype = \
- VulkanAPI(API_PREFIX_EQUALITY + "extension_struct",
- EQUALITY_RET_TYPE,
- [STRUCT_EXTENSION_PARAM,
- STRUCT_EXTENSION_PARAM2,
- EQUALITY_ON_FAIL_VAR_TYPE])
-
- def onBegin(self,):
- VulkanWrapperGenerator.onBegin(self)
- self.module.appendImpl(self.codegen.makeFuncDecl(
- self.extensionTestingPrototype))
-
- def onGenType(self, typeXml, name, alias):
- VulkanWrapperGenerator.onGenType(self, typeXml, name, alias)
-
- if name in self.knownDefs:
- return
-
- category = self.typeInfo.categoryOf(name)
-
- if category in ["struct", "union"] and alias:
- self.module.appendHeader(
- self.codegen.makeFuncAlias(API_PREFIX_EQUALITY + name,
- API_PREFIX_EQUALITY + alias))
-
- if category in ["struct", "union"] and not alias:
-
- structInfo = self.typeInfo.structs[name]
-
- typeFromName = \
- lambda varname: makeVulkanTypeSimple(True, name, 1, varname)
-
- compareParams = \
- list(map(typeFromName, EQUALITY_VAR_NAMES)) + \
- [EQUALITY_ON_FAIL_VAR_TYPE]
-
- comparePrototype = \
- VulkanAPI(API_PREFIX_EQUALITY + name,
- EQUALITY_RET_TYPE,
- compareParams)
-
- def structCompareDef(cgen):
- self.equalityCodegen.cgen = cgen
- for member in structInfo.members:
- iterateVulkanType(self.typeInfo, member,
- self.equalityCodegen)
-
- self.module.appendHeader(
- self.codegen.makeFuncDecl(comparePrototype))
- self.module.appendImpl(
- self.codegen.makeFuncImpl(comparePrototype, structCompareDef))
-
- def onGenCmd(self, cmdinfo, name, alias):
- VulkanWrapperGenerator.onGenCmd(self, cmdinfo, name, alias)
-
- def onEnd(self,):
- VulkanWrapperGenerator.onEnd(self)
-
- def forEachExtensionCompare(ext, castedAccess, cgen):
- cgen.funcCall(None, API_PREFIX_EQUALITY + ext.name,
- [castedAccess,
- cgen.makeReinterpretCast(
- STRUCT_EXTENSION_PARAM2.paramName, ext.name),
- EQUALITY_ON_FAIL_VAR])
-
- self.module.appendImpl(
- self.codegen.makeFuncImpl(
- self.extensionTestingPrototype,
- lambda cgen: self.emitForEachStructExtension(
- cgen,
- EQUALITY_RET_TYPE,
- STRUCT_EXTENSION_PARAM,
- forEachExtensionCompare)))
diff --git a/codegen/vulkan/scripts/cereal/transform.py b/codegen/vulkan/scripts/cereal/transform.py
deleted file mode 100644
index 79aff0e3..00000000
--- a/codegen/vulkan/scripts/cereal/transform.py
+++ /dev/null
@@ -1,348 +0,0 @@
-# Copyright (c) 2018 The Android Open Source Project
-# Copyright (c) 2018 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from .common.codegen import CodeGen
-from .common.vulkantypes import \
- VulkanCompoundType, VulkanAPI, makeVulkanTypeSimple, vulkanTypeNeedsTransform, vulkanTypeGetNeededTransformTypes, VulkanTypeIterator, iterateVulkanType, vulkanTypeforEachSubType, TRIVIAL_TRANSFORMED_TYPES, NON_TRIVIAL_TRANSFORMED_TYPES, TRANSFORMED_TYPES
-
-from .wrapperdefs import VulkanWrapperGenerator
-from .wrapperdefs import STRUCT_EXTENSION_PARAM, STRUCT_EXTENSION_PARAM_FOR_WRITE
-
-def deviceMemoryTransform(resourceTrackerVarName, structOrApiInfo, getExpr, getLen, cgen, variant="tohost"):
- paramIndices = \
- structOrApiInfo.deviceMemoryInfoParameterIndices
-
- for _, info in paramIndices.items():
- orderedKeys = [
- "handle",
- "offset",
- "size",
- "typeIndex",
- "typeBits",]
-
- casts = {
- "handle" : "VkDeviceMemory*",
- "offset" : "VkDeviceSize*",
- "size" : "VkDeviceSize*",
- "typeIndex" : "uint32_t*",
- "typeBits" : "uint32_t*",
- }
-
- accesses = {
- "handle" : "nullptr",
- "offset" : "nullptr",
- "size" : "nullptr",
- "typeIndex" : "nullptr",
- "typeBits" : "nullptr",
- }
-
- lenAccesses = {
- "handle" : "0",
- "offset" : "0",
- "size" : "0",
- "typeIndex" : "0",
- "typeBits" : "0",
- }
-
- def doParam(i, vulkanType):
- access = getExpr(vulkanType)
- lenAccess = getLen(vulkanType)
-
- for k in orderedKeys:
- if i == info.__dict__[k]:
- accesses[k] = access
- if lenAccess is not None:
- lenAccesses[k] = lenAccess
- else:
- lenAccesses[k] = "1"
-
- vulkanTypeforEachSubType(structOrApiInfo, doParam)
-
- callParams = ", ".join( \
- ["(%s)%s, %s" % (casts[k], accesses[k], lenAccesses[k]) \
- for k in orderedKeys])
-
- if variant == "tohost":
- cgen.stmt("%s->deviceMemoryTransform_tohost(%s)" % \
- (resourceTrackerVarName, callParams))
- else:
- cgen.stmt("%s->deviceMemoryTransform_fromhost(%s)" % \
- (resourceTrackerVarName, callParams))
-
-def directTransform(resourceTrackerVarName, vulkanType, getExpr, getLen, cgen, variant="tohost"):
- access = getExpr(vulkanType)
- lenAccess = getLen(vulkanType)
-
- if lenAccess:
- finalLenAccess = lenAccess
- else:
- finalLenAccess = "1"
-
- cgen.stmt("%s->transformImpl_%s_%s(%s, %s)" % (resourceTrackerVarName,
- vulkanType.typeName, variant, access, finalLenAccess))
-
-def genTransformsForVulkanType(resourceTrackerVarName, structOrApiInfo, getExpr, getLen, cgen, variant="tohost"):
- for transform in vulkanTypeGetNeededTransformTypes(structOrApiInfo):
- if transform == "devicememory":
- deviceMemoryTransform( \
- resourceTrackerVarName,
- structOrApiInfo,
- getExpr, getLen, cgen, variant=variant)
-
-class TransformCodegen(VulkanTypeIterator):
- def __init__(self, cgen, inputVar, resourceTrackerVarName, prefix, variant):
- self.cgen = cgen
- self.inputVar = inputVar
- self.prefix = prefix
- self.resourceTrackerVarName = resourceTrackerVarName
-
- def makeAccess(varName, asPtr = True):
- return lambda t: self.cgen.generalAccess(t, parentVarName = varName, asPtr = asPtr)
-
- def makeLengthAccess(varName):
- return lambda t: self.cgen.generalLengthAccess(t, parentVarName = varName)
-
- def makeLengthAccessGuard(varName):
- return lambda t: self.cgen.generalLengthAccessGuard(t, parentVarName=varName)
-
- self.exprAccessor = makeAccess(self.inputVar)
- self.exprAccessorValue = makeAccess(self.inputVar, asPtr = False)
- self.lenAccessor = makeLengthAccess(self.inputVar)
- self.lenAccessorGuard = makeLengthAccessGuard(self.inputVar)
-
- self.checked = False
-
- self.variant = variant
-
- def makeCastExpr(self, vulkanType):
- return "(%s)" % (
- self.cgen.makeCTypeDecl(vulkanType, useParamName=False))
-
- def asNonConstCast(self, access, vulkanType):
- if vulkanType.staticArrExpr:
- casted = "%s(%s)" % (self.makeCastExpr(vulkanType.getForAddressAccess().getForNonConstAccess()), access)
- elif vulkanType.accessibleAsPointer():
- casted = "%s(%s)" % (self.makeCastExpr(vulkanType.getForNonConstAccess()), access)
- else:
- casted = "%s(%s)" % (self.makeCastExpr(vulkanType.getForAddressAccess().getForNonConstAccess()), access)
- return casted
-
- def onCheck(self, vulkanType):
- pass
-
- def endCheck(self, vulkanType):
- pass
-
- def onCompoundType(self, vulkanType):
-
- access = self.exprAccessor(vulkanType)
- lenAccess = self.lenAccessor(vulkanType)
- lenAccessGuard = self.lenAccessorGuard(vulkanType)
-
- isPtr = vulkanType.pointerIndirectionLevels > 0
-
- if lenAccessGuard is not None:
- self.cgen.beginIf(lenAccessGuard)
-
- if isPtr:
- self.cgen.beginIf(access)
-
- if lenAccess is not None:
-
- loopVar = "i"
- access = "%s + %s" % (access, loopVar)
- forInit = "uint32_t %s = 0" % loopVar
- forCond = "%s < (uint32_t)%s" % (loopVar, lenAccess)
- forIncr = "++%s" % loopVar
-
- self.cgen.beginFor(forInit, forCond, forIncr)
-
- accessCasted = self.asNonConstCast(access, vulkanType)
-
- if vulkanType.isTransformed:
- directTransform(self.resourceTrackerVarName, vulkanType, self.exprAccessor, self.lenAccessor, self.cgen, variant=self.variant)
-
- self.cgen.funcCall(None, self.prefix + vulkanType.typeName,
- [self.resourceTrackerVarName, accessCasted])
-
- if lenAccess is not None:
- self.cgen.endFor()
-
- if isPtr:
- self.cgen.endIf()
-
- if lenAccessGuard is not None:
- self.cgen.endIf()
-
- def onString(self, vulkanType):
- pass
-
- def onStringArray(self, vulkanType):
- pass
-
- def onStaticArr(self, vulkanType):
- pass
-
- def onStructExtension(self, vulkanType):
- access = self.exprAccessor(vulkanType)
-
- castedAccessExpr = "(%s)(%s)" % ("void*", access)
- self.cgen.beginIf(access)
- self.cgen.funcCall(None, self.prefix + "extension_struct",
- [self.resourceTrackerVarName, castedAccessExpr])
- self.cgen.endIf()
-
- def onPointer(self, vulkanType):
- pass
-
- def onValue(self, vulkanType):
- pass
-
-
-class VulkanTransform(VulkanWrapperGenerator):
- def __init__(self, module, typeInfo, resourceTrackerTypeName="ResourceTracker", resourceTrackerVarName="resourceTracker"):
- VulkanWrapperGenerator.__init__(self, module, typeInfo)
-
- self.codegen = CodeGen()
-
- self.transformPrefix = "transform_"
-
- self.tohostpart = "tohost"
- self.fromhostpart = "fromhost"
- self.variants = [self.tohostpart, self.fromhostpart]
-
- self.toTransformVar = "toTransform"
- self.resourceTrackerTypeName = resourceTrackerTypeName
- self.resourceTrackerVarName = resourceTrackerVarName
- self.transformParam = \
- makeVulkanTypeSimple(False, self.resourceTrackerTypeName, 1,
- self.resourceTrackerVarName)
- self.voidType = makeVulkanTypeSimple(False, "void", 0)
-
- self.extensionTransformPrototypes = []
-
- for variant in self.variants:
- self.extensionTransformPrototypes.append( \
- VulkanAPI(self.transformPrefix + variant + "_extension_struct",
- self.voidType,
- [self.transformParam, STRUCT_EXTENSION_PARAM_FOR_WRITE]))
-
- self.knownStructs = {}
- self.needsTransform = set([])
-
- def onBegin(self,):
- VulkanWrapperGenerator.onBegin(self)
- # Set up a convenience macro fro the transformed structs
- # and forward-declare the resource tracker class
- self.codegen.stmt("class %s" % self.resourceTrackerTypeName)
- self.codegen.line("#define LIST_TRIVIAL_TRANSFORMED_TYPES(f) \\")
- for name in TRIVIAL_TRANSFORMED_TYPES:
- self.codegen.line("f(%s) \\" % name)
- self.codegen.line("")
-
- self.codegen.line("#define LIST_NON_TRIVIAL_TRANSFORMED_TYPES(f) \\")
- for name in NON_TRIVIAL_TRANSFORMED_TYPES:
- self.codegen.line("f(%s) \\" % name)
- self.codegen.line("")
-
- self.codegen.line("#define LIST_TRANSFORMED_TYPES(f) \\")
- self.codegen.line("LIST_TRIVIAL_TRANSFORMED_TYPES(f) \\")
- self.codegen.line("LIST_NON_TRIVIAL_TRANSFORMED_TYPES(f) \\")
- self.codegen.line("")
-
- self.module.appendHeader(self.codegen.swapCode())
-
- for prototype in self.extensionTransformPrototypes:
- self.module.appendImpl(self.codegen.makeFuncDecl(
- prototype))
-
- def onGenType(self, typeXml, name, alias):
- VulkanWrapperGenerator.onGenType(self, typeXml, name, alias)
-
- if name in self.knownStructs:
- return
-
- category = self.typeInfo.categoryOf(name)
-
- if category in ["struct", "union"] and alias:
- for variant in self.variants:
- self.module.appendHeader(
- self.codegen.makeFuncAlias(self.transformPrefix + variant + "_" + name,
- self.transformPrefix + variant + "_" + alias))
-
- if category in ["struct", "union"] and not alias:
- structInfo = self.typeInfo.structs[name]
- self.knownStructs[name] = structInfo
-
- for variant in self.variants:
- api = VulkanAPI( \
- self.transformPrefix + variant + "_" + name,
- self.voidType,
- [self.transformParam] + \
- [makeVulkanTypeSimple( \
- False, name, 1, self.toTransformVar)])
-
- transformer = TransformCodegen(
- None,
- self.toTransformVar,
- self.resourceTrackerVarName,
- self.transformPrefix + variant + "_",
- variant)
-
- def funcDefGenerator(cgen):
- transformer.cgen = cgen
- for p in api.parameters:
- cgen.stmt("(void)%s" % p.paramName)
-
- genTransformsForVulkanType(
- self.resourceTrackerVarName,
- structInfo,
- transformer.exprAccessor,
- transformer.lenAccessor,
- cgen,
- variant=variant)
-
- for member in structInfo.members:
- iterateVulkanType(
- self.typeInfo, member,
- transformer)
-
- self.module.appendHeader(
- self.codegen.makeFuncDecl(api))
- self.module.appendImpl(
- self.codegen.makeFuncImpl(api, funcDefGenerator))
-
-
- def onGenCmd(self, cmdinfo, name, alias):
- VulkanWrapperGenerator.onGenCmd(self, cmdinfo, name, alias)
-
- def onEnd(self,):
- VulkanWrapperGenerator.onEnd(self)
-
- for (variant, prototype) in zip(self.variants, self.extensionTransformPrototypes):
- def forEachExtensionTransform(ext, castedAccess, cgen):
- if ext.isTransformed:
- directTransform(self.resourceTrackerVarName, ext, lambda _ : castedAccess, lambda _ : "1", cgen, variant);
- cgen.funcCall(None, self.transformPrefix + variant + "_" + ext.name,
- [self.resourceTrackerVarName, castedAccess])
-
- self.module.appendImpl(
- self.codegen.makeFuncImpl(
- prototype,
- lambda cgen: self.emitForEachStructExtension(
- cgen,
- self.voidType,
- STRUCT_EXTENSION_PARAM_FOR_WRITE,
- forEachExtensionTransform)))
diff --git a/codegen/vulkan/scripts/cereal/unbox.py b/codegen/vulkan/scripts/cereal/unbox.py
deleted file mode 100644
index f18fa271..00000000
--- a/codegen/vulkan/scripts/cereal/unbox.py
+++ /dev/null
@@ -1,81 +0,0 @@
-# Copyright (c) 2018 The Android Open Source Project
-# Copyright (c) 2018 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from .common.codegen import CodeGen
-from .common.vulkantypes import \
- VulkanCompoundType, VulkanAPI, makeVulkanTypeSimple, vulkanTypeNeedsTransform, vulkanTypeGetNeededTransformTypes, VulkanTypeIterator, iterateVulkanType, vulkanTypeforEachSubType, TRANSFORMED_TYPES
-
-from .wrapperdefs import VulkanWrapperGenerator
-from .wrapperdefs import STRUCT_EXTENSION_PARAM, STRUCT_EXTENSION_PARAM_FOR_WRITE
-
-# This is different from others; it operations solely in terms of deepcopy and handlemap
-class VulkanUnbox(VulkanWrapperGenerator):
- def __init__(self, module, typeInfo):
- VulkanWrapperGenerator.__init__(self, module, typeInfo)
-
- self.codegen = CodeGen()
-
- self.unboxPrefix = "unbox"
- self.toUnboxVar = "toUnbox"
- self.poolParam = \
- makeVulkanTypeSimple(False, "BumpPool", 1, "pool")
-
- self.knownStructs = {}
- self.needsTransform = set([])
-
- def onBegin(self,):
- VulkanWrapperGenerator.onBegin(self)
-
- def onGenType(self, typeXml, name, alias):
- VulkanWrapperGenerator.onGenType(self, typeXml, name, alias)
-
- if name in self.knownStructs:
- return
-
- category = self.typeInfo.categoryOf(name)
-
- if category in ["struct", "union"] and alias:
- self.module.appendHeader(
- self.codegen.makeFuncAlias(self.unboxPrefix + "_" + name,
- self.unboxPrefix + "_" + alias))
-
- if category in ["struct", "union"] and not alias:
- structInfo = self.typeInfo.structs[name]
- self.knownStructs[name] = structInfo
-
- api = VulkanAPI( \
- self.unboxPrefix + "_" + name,
- makeVulkanTypeSimple(False, name, 1),
- [self.poolParam] + \
- [makeVulkanTypeSimple( \
- True, name, 1, self.toUnboxVar)])
-
- def funcDefGenerator(cgen):
- cgen.stmt("BoxedHandleUnwrapMapping unboxMapping")
- cgen.stmt("%s* res = (%s*)pool->alloc(sizeof(const %s))" % (name, name, name))
- cgen.stmt("deepcopy_%s(pool, %s, %s)" % (name, self.toUnboxVar, "res"))
- cgen.stmt("handlemap_%s(%s, %s)" % (name, "&unboxMapping", "res"))
- cgen.stmt("return res")
-
- self.module.appendHeader(
- self.codegen.makeFuncDecl(api))
- self.module.appendImpl(
- self.codegen.makeFuncImpl(api, funcDefGenerator))
-
- def onGenCmd(self, cmdinfo, name, alias):
- VulkanWrapperGenerator.onGenCmd(self, cmdinfo, name, alias)
-
- def onEnd(self,):
- VulkanWrapperGenerator.onEnd(self)
diff --git a/codegen/vulkan/scripts/cereal/vkextensionstructuretype.py b/codegen/vulkan/scripts/cereal/vkextensionstructuretype.py
deleted file mode 100644
index 8db988ae..00000000
--- a/codegen/vulkan/scripts/cereal/vkextensionstructuretype.py
+++ /dev/null
@@ -1,46 +0,0 @@
-# Copyright (c) 2022 The Android Open Source Project
-# Copyright (c) 2022 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from .wrapperdefs import VulkanWrapperGenerator
-
-
-class VulkanExtensionStructureType(VulkanWrapperGenerator):
- def __init__(self, extensionName: str, module, typeInfo):
- super().__init__(module, typeInfo)
- self._extensionName = extensionName
-
- def onGenGroup(self, groupinfo, groupName, alias=None):
- super().onGenGroup(groupinfo, groupName, alias)
- elem = groupinfo.elem
- if (not elem.get('type') == 'enum'):
- return
- if (not elem.get('name') == 'VkStructureType'):
- return
- extensionEnumFactoryMacro = f'{self._extensionName.upper()}_ENUM'
- for enum in elem.findall(f"enum[@extname='{self._extensionName}']"):
- name = enum.get('name')
- offset = enum.get('offset')
- self.module.appendHeader(
- f"#define {name} {extensionEnumFactoryMacro}(VkStructureType, {offset})\n")
-
-
-class VulkanGfxstreamStructureType(VulkanExtensionStructureType):
- def __init__(self, module, typeInfo):
- super().__init__('VK_GOOGLE_gfxstream', module, typeInfo)
-
-
-class VulkanAndroidNativeBufferStructureType(VulkanExtensionStructureType):
- def __init__(self, module, typeInfo):
- super().__init__('VK_ANDROID_native_buffer', module, typeInfo)
diff --git a/codegen/vulkan/scripts/cereal/wrapperdefs.py b/codegen/vulkan/scripts/cereal/wrapperdefs.py
deleted file mode 100644
index 9b969875..00000000
--- a/codegen/vulkan/scripts/cereal/wrapperdefs.py
+++ /dev/null
@@ -1,108 +0,0 @@
-# Copyright (c) 2018 The Android Open Source Project
-# Copyright (c) 2018 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from .common.codegen import VulkanWrapperGenerator
-from .common.vulkantypes import makeVulkanTypeSimple
-
-# Contains definitions for various Vulkan API wrappers. This information is
-# shared to make it easier for one kind of wrapper to know how to call
-# another one.
-
-API_PREFIX_MARSHAL = "marshal_"
-API_PREFIX_UNMARSHAL = "unmarshal_"
-API_PREFIX_RESERVEDMARSHAL = "reservedmarshal_"
-API_PREFIX_RESERVEDUNMARSHAL = "reservedunmarshal_"
-
-MARSHAL_INPUT_VAR_NAME = "forMarshaling"
-UNMARSHAL_INPUT_VAR_NAME = "forUnmarshaling"
-
-API_PREFIX_VALIDATE = "validate_"
-API_PREFIX_FRONTEND = "goldfish_frontend_"
-
-VULKAN_STREAM_TYPE = "VulkanStream"
-VULKAN_STREAM_TYPE_GUEST = "VulkanStreamGuest"
-VULKAN_STREAM_VAR_NAME = "vkStream"
-
-VALIDATE_RESULT_TYPE = "VkResult"
-VALIDATE_VAR_NAME = "validateResult"
-VALIDATE_GOOD_RESULT = "VK_SUCCESS"
-
-ROOT_TYPE_VAR_NAME = "rootType"
-ROOT_TYPE_DEFAULT_VALUE = "VK_STRUCTURE_TYPE_MAX_ENUM"
-ROOT_TYPE_TYPE = "VkStructureType"
-ROOT_TYPE_PARAM = makeVulkanTypeSimple(
- False, ROOT_TYPE_TYPE, 0, ROOT_TYPE_VAR_NAME)
-
-PARAMETERS_MARSHALING = [
- makeVulkanTypeSimple(False, VULKAN_STREAM_TYPE, 1, VULKAN_STREAM_VAR_NAME),
- ROOT_TYPE_PARAM,
-]
-PARAMETERS_MARSHALING_GUEST = [
- makeVulkanTypeSimple(False, VULKAN_STREAM_TYPE_GUEST,
- 1, VULKAN_STREAM_VAR_NAME),
- ROOT_TYPE_PARAM,
-]
-PARAMETERS_VALIDATE = [
- makeVulkanTypeSimple(False, VALIDATE_RESULT_TYPE, 1, VALIDATE_VAR_NAME)
-]
-PARAMETERS_COUNTING = [
- makeVulkanTypeSimple(False, "size_t", 1, VULKAN_STREAM_VAR_NAME)
-]
-
-STRUCT_EXTENSION_PARAM = \
- makeVulkanTypeSimple(True, "void", 1, "structExtension")
-
-STRUCT_EXTENSION_PARAM2 = \
- makeVulkanTypeSimple(True, "void", 1, "structExtension2")
-
-STRUCT_EXTENSION_PARAM_FOR_WRITE = \
- makeVulkanTypeSimple(False, "void", 1, "structExtension_out")
-
-STRUCT_TYPE_API_NAME = "goldfish_vk_struct_type"
-EXTENSION_SIZE_API_NAME = "goldfish_vk_extension_struct_size"
-EXTENSION_SIZE_WITH_STREAM_FEATURES_API_NAME = "goldfish_vk_extension_struct_size_with_stream_features"
-
-VOID_TYPE = makeVulkanTypeSimple(False, "void", 0)
-STREAM_RET_TYPE = makeVulkanTypeSimple(False, "void", 0)
-
-API_PREFIX_EQUALITY = "checkEqual_"
-EQUALITY_VAR_NAMES = ["a", "b"]
-EQUALITY_ON_FAIL_VAR = "onFail"
-EQUALITY_ON_FAIL_VAR_TYPE = makeVulkanTypeSimple(False, "OnFailCompareFunc", 0,
- EQUALITY_ON_FAIL_VAR)
-EQUALITY_RET_TYPE = makeVulkanTypeSimple(False, "void", 0)
-
-RELAXED_APIS = [
- "vkWaitForFences",
- "vkWaitSemaphores",
- "vkWaitSemaphoresKHR",
- "vkQueueWaitIdle",
- "vkDeviceWaitIdle",
- "vkQueueFlushCommandsGOOGLE",
-]
-
-STYPE_OVERRIDE = {
- "VkPhysicalDeviceFragmentDensityMapFeaturesEXT": "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT",
- "VkPhysicalDeviceFragmentDensityMapPropertiesEXT": "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT",
- "VkRenderPassFragmentDensityMapCreateInfoEXT": "VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT",
- "VkImportColorBufferGOOGLE": "VK_STRUCTURE_TYPE_IMPORT_COLOR_BUFFER_GOOGLE",
- "VkImportBufferGOOGLE": "VK_STRUCTURE_TYPE_IMPORT_BUFFER_GOOGLE",
- "VkCreateBlobGOOGLE": "VK_STRUCTURE_TYPE_CREATE_BLOB_GOOGLE",
-}
-
-MAX_PACKET_LENGTH = "(400 * 1024 * 1024) // 400MB"
-
-
-
diff --git a/codegen/vulkan/scripts/cerealgenerator.py b/codegen/vulkan/scripts/cerealgenerator.py
deleted file mode 100644
index 02d7f220..00000000
--- a/codegen/vulkan/scripts/cerealgenerator.py
+++ /dev/null
@@ -1,802 +0,0 @@
-#!/usr/bin/python3 -i
-#
-# Copyright (c) 2013-2018 The Khronos Group Inc.
-# Copyright (c) 2013-2018 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import os, re, sys
-from generator import *
-from pathlib import Path, PurePosixPath
-
-import cereal
-from cereal.wrapperdefs import VULKAN_STREAM_TYPE
-from cereal.wrapperdefs import VULKAN_STREAM_TYPE_GUEST
-
-# CerealGenerator - generates set of driver sources
-# while being agnostic to the stream implementation
-from reg import GroupInfo, TypeInfo, EnumInfo
-
-copyrightHeader = """// Copyright (C) 2018 The Android Open Source Project
-// Copyright (C) 2018 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-"""
-
-# We put the long generated commands in a separate paragraph, so that the formatter won't mess up
-# with other texts.
-autogeneratedHeaderTemplate = """
-// Autogenerated module %s
-//
-// %s
-//
-// Please do not modify directly;
-// re-run gfxstream-protocols/scripts/generate-vulkan-sources.sh,
-// or directly from Python by defining:
-// VULKAN_REGISTRY_XML_DIR : Directory containing vk.xml
-// VULKAN_REGISTRY_SCRIPTS_DIR : Directory containing genvk.py
-// CEREAL_OUTPUT_DIR: Where to put the generated sources.
-//
-// python3 $VULKAN_REGISTRY_SCRIPTS_DIR/genvk.py -registry $VULKAN_REGISTRY_XML_DIR/vk.xml cereal -o $CEREAL_OUTPUT_DIR
-//
-"""
-
-autogeneratedMkTemplate = """
-# Autogenerated makefile
-# %s
-# Please do not modify directly;
-# re-run gfxstream-protocols/scripts/generate-vulkan-sources.sh,
-# or directly from Python by defining:
-# VULKAN_REGISTRY_XML_DIR : Directory containing vk.xml
-# VULKAN_REGISTRY_SCRIPTS_DIR : Directory containing genvk.py
-# CEREAL_OUTPUT_DIR: Where to put the generated sources.
-# python3 $VULKAN_REGISTRY_SCRIPTS_DIR/genvk.py -registry $VULKAN_REGISTRY_XML_DIR/vk.xml cereal -o $CEREAL_OUTPUT_DIR
-"""
-
-def banner_command(argv):
- """Return sanitized command-line description.
- |argv| must be a list of command-line parameters, e.g. sys.argv.
- Return a string corresponding to the command, with platform-specific
- paths removed."""
-
- def makePosixRelative(someArg):
- if os.path.exists(someArg):
- return str(PurePosixPath(Path(os.path.relpath(someArg))))
- return someArg
-
- return ' '.join(map(makePosixRelative, argv))
-
-suppressEnabled = False
-suppressExceptModule = None
-
-def envGetOrDefault(key, default=None):
- if key in os.environ:
- return os.environ[key]
- print("envGetOrDefault: notfound: %s" % key)
- return default
-
-def init_suppress_option():
- global suppressEnabled
- global suppressExceptModule
-
- if "ANDROID_EMU_VK_CEREAL_SUPPRESS" in os.environ:
- option = os.environ["ANDROID_EMU_VK_CEREAL_SUPPRESS"]
-
- if option != "":
- suppressExceptModule = option
- suppressEnabled = True
- print("suppressEnabled: %s" % suppressExceptModule)
-
-# ---- methods overriding base class ----
-# beginFile(genOpts)
-# endFile()
-# beginFeature(interface, emit)
-# endFeature()
-# genType(typeinfo,name)
-# genStruct(typeinfo,name)
-# genGroup(groupinfo,name)
-# genEnum(enuminfo, name)
-# genCmd(cmdinfo)
-class CerealGenerator(OutputGenerator):
-
- """Generate serialization code"""
- def __init__(self, errFile = sys.stderr,
- warnFile = sys.stderr,
- diagFile = sys.stdout):
- OutputGenerator.__init__(self, errFile, warnFile, diagFile)
-
- init_suppress_option()
-
- self.typeInfo = cereal.VulkanTypeInfo(self)
-
- self.modules = {}
- self.protos = {}
- self.moduleList = []
- self.protoList = []
-
- self.wrappers = []
-
- self.codegen = cereal.CodeGen()
-
- self.guestBaseLibDirPrefix = \
- envGetOrDefault("VK_CEREAL_GUEST_BASELIB_PREFIX", "aemu/base")
- self.baseLibDirPrefix = \
- envGetOrDefault("VK_CEREAL_BASELIB_PREFIX", "aemu/base")
- self.baseLibLinkName = \
- envGetOrDefault("VK_CEREAL_BASELIB_LINKNAME", "android-emu-base")
- self.vulkanHeaderTargetName = envGetOrDefault("VK_CEREAL_VK_HEADER_TARGET", "")
- self.utilsHeader = envGetOrDefault("VK_CEREAL_UTILS_LINKNAME", "")
- self.utilsHeaderDirPrefix = envGetOrDefault("VK_CEREAL_UTILS_PREFIX", "utils")
-
- # THe host always needs all possible guest struct definitions, while the guest only needs
- # platform sepcific headers.
- self.hostCommonExtraVulkanHeaders = '#include "vk_android_native_buffer.h"'
- self.host_cmake_generator = lambda cppFiles: f"""{autogeneratedMkTemplate % banner_command(sys.argv)}
-add_library(OpenglRender_vulkan_cereal {cppFiles})
-target_compile_definitions(OpenglRender_vulkan_cereal PRIVATE -DVK_GOOGLE_gfxstream)
-if (WIN32)
- target_compile_definitions(OpenglRender_vulkan_cereal PRIVATE -DVK_USE_PLATFORM_WIN32_KHR)
-endif()
-target_link_libraries(
- OpenglRender_vulkan_cereal
- PUBLIC
- {self.baseLibLinkName}
- {self.vulkanHeaderTargetName}
- PRIVATE
- {self.utilsHeader})
-
-target_include_directories(OpenglRender_vulkan_cereal
- PUBLIC
- .
- PRIVATE
- ..
- ../..
- ../../../include)
-"""
-
- encoderInclude = f"""
-#include "{self.guestBaseLibDirPrefix}/AndroidHealthMonitor.h"
-#include "goldfish_vk_private_defs.h"
-#include <memory>
-
-namespace gfxstream {{
-class IOStream;
-}}
-"""
- encoderImplInclude = f"""
-#include "EncoderDebug.h"
-#include "IOStream.h"
-#include "Resources.h"
-#include "ResourceTracker.h"
-#include "Validation.h"
-#include "%s.h"
-
-#include "{self.guestBaseLibDirPrefix}/AlignedBuf.h"
-#include "{self.guestBaseLibDirPrefix}/BumpPool.h"
-#include "{self.guestBaseLibDirPrefix}/synchronization/AndroidLock.h"
-
-#include <cutils/properties.h>
-
-#include "goldfish_vk_marshaling_guest.h"
-#include "goldfish_vk_reserved_marshaling_guest.h"
-#include "goldfish_vk_deepcopy_guest.h"
-#include "goldfish_vk_counting_guest.h"
-#include "goldfish_vk_handlemap_guest.h"
-#include "goldfish_vk_private_defs.h"
-#include "goldfish_vk_transform_guest.h"
-
-#include <memory>
-#include <optional>
-#include <unordered_map>
-#include <string>
-#include <vector>
-
-""" % VULKAN_STREAM_TYPE_GUEST
-
- functableImplInclude = """
-#include "VkEncoder.h"
-#include "../OpenglSystemCommon/HostConnection.h"
-#include "ResourceTracker.h"
-
-#include "goldfish_vk_private_defs.h"
-
-#include <log/log.h>
-#include <cstring>
-
-// Stuff we are not going to use but if included,
-// will cause compile errors. These are Android Vulkan
-// required extensions, but the approach will be to
-// implement them completely on the guest side.
-#undef VK_KHR_android_surface
-"""
- marshalIncludeGuest = """
-#include "goldfish_vk_marshaling_guest.h"
-#include "goldfish_vk_private_defs.h"
-#include "%s.h"
-
-// Stuff we are not going to use but if included,
-// will cause compile errors. These are Android Vulkan
-// required extensions, but the approach will be to
-// implement them completely on the guest side.
-#undef VK_KHR_android_surface
-#undef VK_ANDROID_external_memory_android_hardware_buffer
-""" % VULKAN_STREAM_TYPE_GUEST
-
- reservedmarshalIncludeGuest = """
-#include "goldfish_vk_marshaling_guest.h"
-#include "goldfish_vk_private_defs.h"
-#include "%s.h"
-
-// Stuff we are not going to use but if included,
-// will cause compile errors. These are Android Vulkan
-// required extensions, but the approach will be to
-// implement them completely on the guest side.
-#undef VK_KHR_android_surface
-#undef VK_ANDROID_external_memory_android_hardware_buffer
-""" % VULKAN_STREAM_TYPE_GUEST
-
- reservedmarshalImplIncludeGuest = """
-#include "Resources.h"
-"""
-
- vulkanStreamIncludeHost = f"""
-{self.hostCommonExtraVulkanHeaders}
-#include "goldfish_vk_private_defs.h"
-
-#include "%s.h"
-#include "{self.baseLibDirPrefix}/files/StreamSerializing.h"
-""" % VULKAN_STREAM_TYPE
-
- testingInclude = f"""
-{self.hostCommonExtraVulkanHeaders}
-#include "goldfish_vk_private_defs.h"
-#include <string.h>
-#include <functional>
-using OnFailCompareFunc = std::function<void(const char*)>;
-"""
- poolInclude = f"""
-{self.hostCommonExtraVulkanHeaders}
-#include "goldfish_vk_private_defs.h"
-#include "{self.baseLibDirPrefix}/BumpPool.h"
-using android::base::Allocator;
-using android::base::BumpPool;
-"""
- handleMapInclude = f"""
-{self.hostCommonExtraVulkanHeaders}
-#include "goldfish_vk_private_defs.h"
-#include "VulkanHandleMapping.h"
-"""
- transformIncludeGuest = """
-#include "goldfish_vk_private_defs.h"
-"""
- transformInclude = f"""
-{self.hostCommonExtraVulkanHeaders}
-#include "goldfish_vk_private_defs.h"
-#include "goldfish_vk_extension_structs.h"
-"""
- transformImplIncludeGuest = """
-#include "ResourceTracker.h"
-"""
- transformImplInclude = """
-#include "VkDecoderGlobalState.h"
-"""
- deepcopyInclude = """
-#include "vk_util.h"
-"""
- poolIncludeGuest = f"""
-#include "goldfish_vk_private_defs.h"
-#include "{self.guestBaseLibDirPrefix}/BumpPool.h"
-using android::base::Allocator;
-using android::base::BumpPool;
-// Stuff we are not going to use but if included,
-// will cause compile errors. These are Android Vulkan
-// required extensions, but the approach will be to
-// implement them completely on the guest side.
-#undef VK_KHR_android_surface
-#undef VK_ANDROID_external_memory_android_hardware_buffer
-"""
- handleMapIncludeGuest = """
-#include "goldfish_vk_private_defs.h"
-#include "VulkanHandleMapping.h"
-// Stuff we are not going to use but if included,
-// will cause compile errors. These are Android Vulkan
-// required extensions, but the approach will be to
-// implement them completely on the guest side.
-#undef VK_KHR_android_surface
-#undef VK_ANDROID_external_memory_android_hardware_buffer
-"""
- dispatchHeaderDefs = f"""
-{self.hostCommonExtraVulkanHeaders}
-#include "goldfish_vk_private_defs.h"
-namespace gfxstream {{
-namespace vk {{
-
-struct VulkanDispatch;
-
-}} // namespace vk
-}} // namespace gfxstream
-using DlOpenFunc = void* (void);
-using DlSymFunc = void* (void*, const char*);
-"""
-
- extensionStructsInclude = f"""
-{self.hostCommonExtraVulkanHeaders}
-#include "goldfish_vk_private_defs.h"
-"""
-
- extensionStructsIncludeGuest = """
-#include "vk_platform_compat.h"
-#include "goldfish_vk_private_defs.h"
-// Stuff we are not going to use but if included,
-// will cause compile errors. These are Android Vulkan
-// required extensions, but the approach will be to
-// implement them completely on the guest side.
-#undef VK_KHR_android_surface
-#undef VK_ANDROID_external_memory_android_hardware_buffer
-"""
- commonCerealImplIncludes = """
-#include "goldfish_vk_extension_structs.h"
-#include "goldfish_vk_private_defs.h"
-#include <string.h>
-"""
- commonCerealIncludesGuest = """
-#include "vk_platform_compat.h"
-"""
- commonCerealImplIncludesGuest = """
-#include "goldfish_vk_extension_structs_guest.h"
-#include "goldfish_vk_private_defs.h"
-
-#include <cstring>
-"""
- countingIncludes = """
-#include "vk_platform_compat.h"
-#include "goldfish_vk_private_defs.h"
-"""
-
- dispatchImplIncludes = """
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-"""
-
- decoderSnapshotHeaderIncludes = f"""
-#include <memory>
-#include "{self.utilsHeaderDirPrefix}/GfxApiLogger.h"
-#include "{self.baseLibDirPrefix}/HealthMonitor.h"
-#include "common/goldfish_vk_private_defs.h"
-"""
- decoderSnapshotImplIncludes = f"""
-#include "VulkanHandleMapping.h"
-#include "VkDecoderGlobalState.h"
-#include "VkReconstruction.h"
-
-#include "{self.baseLibDirPrefix}/synchronization/Lock.h"
-"""
-
- decoderHeaderIncludes = f"""
-#include "VkDecoderContext.h"
-
-#include <memory>
-
-namespace android {{
-namespace base {{
-class BumpPool;
-}} // namespace android
-}} // namespace base
-
-"""
-
- decoderImplIncludes = f"""
-#include "common/goldfish_vk_marshaling.h"
-#include "common/goldfish_vk_reserved_marshaling.h"
-#include "common/goldfish_vk_private_defs.h"
-#include "common/goldfish_vk_transform.h"
-
-#include "{self.baseLibDirPrefix}/BumpPool.h"
-#include "{self.baseLibDirPrefix}/system/System.h"
-#include "{self.baseLibDirPrefix}/Tracing.h"
-#include "{self.baseLibDirPrefix}/Metrics.h"
-#include "render-utils/IOStream.h"
-#include "host/FrameBuffer.h"
-#include "host-common/feature_control.h"
-#include "host-common/GfxstreamFatalError.h"
-#include "host-common/logging.h"
-
-#include "VkDecoderGlobalState.h"
-#include "VkDecoderSnapshot.h"
-
-#include "VulkanDispatch.h"
-#include "%s.h"
-
-#include <functional>
-#include <optional>
-#include <unordered_map>
-""" % VULKAN_STREAM_TYPE
-
- def createVkExtensionStructureTypePreamble(extensionName: str) -> str:
- return f"""
-#define {extensionName}_ENUM(type,id) \
- ((type)(1000000000 + (1000 * ({extensionName}_NUMBER - 1)) + (id)))
-"""
- self.guest_encoder_tag = "guest_encoder"
- self.guest_hal_tag = "guest_hal"
- self.host_tag = "host"
-
- default_guest_abs_encoder_destination = \
- os.path.join(
- os.getcwd(),
- "..", "..",
- "device", "generic", "goldfish-opengl",
- "system", "vulkan_enc")
- self.guest_abs_encoder_destination = \
- envGetOrDefault("VK_CEREAL_GUEST_ENCODER_DIR",
- default_guest_abs_encoder_destination)
-
- default_guest_abs_hal_destination = \
- os.path.join(
- os.getcwd(),
- "..", "..",
- "device", "generic", "goldfish-opengl",
- "system", "vulkan")
- self.guest_abs_hal_destination = \
- envGetOrDefault("VK_CEREAL_GUEST_HAL_DIR",
- default_guest_abs_hal_destination)
-
- default_host_abs_decoder_destination = \
- os.path.join(
- os.getcwd(),
- "android", "android-emugl", "host",
- "libs", "libOpenglRender", "vulkan")
- self.host_abs_decoder_destination = \
- envGetOrDefault("VK_CEREAL_HOST_DECODER_DIR",
- default_host_abs_decoder_destination)
- self.host_script_destination = envGetOrDefault("VK_CEREAL_HOST_SCRIPTS_DIR")
- assert(self.host_script_destination is not None)
-
- self.addGuestEncoderModule(
- "VkEncoder",
- extraHeader = encoderInclude,
- extraImpl = encoderImplInclude)
-
- self.addGuestEncoderModule("goldfish_vk_extension_structs_guest",
- extraHeader=extensionStructsIncludeGuest)
- self.addGuestEncoderModule("goldfish_vk_marshaling_guest",
- extraHeader=commonCerealIncludesGuest + marshalIncludeGuest,
- extraImpl=commonCerealImplIncludesGuest)
- self.addGuestEncoderModule("goldfish_vk_reserved_marshaling_guest",
- extraHeader=commonCerealIncludesGuest + reservedmarshalIncludeGuest,
- extraImpl=commonCerealImplIncludesGuest + reservedmarshalImplIncludeGuest)
- self.addGuestEncoderModule("goldfish_vk_deepcopy_guest",
- extraHeader=commonCerealIncludesGuest + poolIncludeGuest,
- extraImpl=commonCerealImplIncludesGuest + deepcopyInclude)
- self.addGuestEncoderModule("goldfish_vk_counting_guest",
- extraHeader=countingIncludes,
- extraImpl=commonCerealImplIncludesGuest)
- self.addGuestEncoderModule("goldfish_vk_handlemap_guest",
- extraHeader=commonCerealIncludesGuest + handleMapIncludeGuest,
- extraImpl=commonCerealImplIncludesGuest)
- self.addGuestEncoderModule("goldfish_vk_transform_guest",
- extraHeader=commonCerealIncludesGuest + transformIncludeGuest,
- extraImpl=commonCerealImplIncludesGuest + transformImplIncludeGuest)
- self.addGuestEncoderModule(
- "vulkan_gfxstream_structure_type", headerOnly=True, suppressFeatureGuards=True,
- moduleName="vulkan_gfxstream_structure_type_guest", useNamespace=False,
- suppressVulkanHeaders=True,
- extraHeader=createVkExtensionStructureTypePreamble('VK_GOOGLE_GFXSTREAM'))
-
- self.addGuestEncoderModule("func_table", extraImpl=functableImplInclude)
-
- self.addCppModule("common", "goldfish_vk_extension_structs",
- extraHeader=extensionStructsInclude)
- self.addCppModule("common", "goldfish_vk_marshaling",
- extraHeader=vulkanStreamIncludeHost,
- extraImpl=commonCerealImplIncludes)
- self.addCppModule("common", "goldfish_vk_reserved_marshaling",
- extraHeader=vulkanStreamIncludeHost,
- extraImpl=commonCerealImplIncludes)
- self.addCppModule("common", "goldfish_vk_testing",
- extraHeader=testingInclude,
- extraImpl=commonCerealImplIncludes)
- self.addCppModule("common", "goldfish_vk_deepcopy",
- extraHeader=poolInclude,
- extraImpl=commonCerealImplIncludes + deepcopyInclude)
- self.addCppModule("common", "goldfish_vk_handlemap",
- extraHeader=handleMapInclude,
- extraImpl=commonCerealImplIncludes)
- self.addCppModule("common", "goldfish_vk_dispatch",
- extraHeader=dispatchHeaderDefs,
- extraImpl=dispatchImplIncludes)
- self.addCppModule("common", "goldfish_vk_transform",
- extraHeader=transformInclude,
- extraImpl=transformImplInclude)
- self.addHostModule("VkDecoder",
- extraHeader=decoderHeaderIncludes,
- extraImpl=decoderImplIncludes,
- useNamespace=False)
- self.addHostModule("VkDecoderSnapshot",
- extraHeader=decoderSnapshotHeaderIncludes,
- extraImpl=decoderSnapshotImplIncludes,
- useNamespace=False)
- self.addHostModule("VkSubDecoder",
- extraHeader="",
- extraImpl="",
- useNamespace=False,
- implOnly=True)
-
- self.addModule(cereal.PyScript(self.host_tag, "vulkan_printer", customAbsDir=Path(
- self.host_script_destination) / "print_gfx_logs"), moduleName="ApiLogDecoder")
- self.addHostModule(
- "vulkan_gfxstream_structure_type", headerOnly=True, suppressFeatureGuards=True,
- moduleName="vulkan_gfxstream_structure_type_host", useNamespace=False,
- suppressVulkanHeaders=True,
- extraHeader=createVkExtensionStructureTypePreamble('VK_GOOGLE_GFXSTREAM'))
- self.addHostModule(
- "vk_android_native_buffer_structure_type", headerOnly=True, suppressFeatureGuards=True,
- useNamespace=False, suppressVulkanHeaders=True,
- extraHeader=createVkExtensionStructureTypePreamble('VK_ANDROID_NATIVE_BUFFER'))
-
- self.addWrapper(cereal.VulkanEncoder, "VkEncoder")
- self.addWrapper(cereal.VulkanExtensionStructs, "goldfish_vk_extension_structs_guest")
- self.addWrapper(cereal.VulkanMarshaling, "goldfish_vk_marshaling_guest", variant = "guest")
- self.addWrapper(cereal.VulkanReservedMarshaling, "goldfish_vk_reserved_marshaling_guest", variant = "guest")
- self.addWrapper(cereal.VulkanDeepcopy, "goldfish_vk_deepcopy_guest")
- self.addWrapper(cereal.VulkanCounting, "goldfish_vk_counting_guest")
- self.addWrapper(cereal.VulkanHandleMap, "goldfish_vk_handlemap_guest")
- self.addWrapper(cereal.VulkanTransform, "goldfish_vk_transform_guest")
- self.addWrapper(cereal.VulkanFuncTable, "func_table")
- self.addWrapper(cereal.VulkanExtensionStructs, "goldfish_vk_extension_structs")
- self.addWrapper(cereal.VulkanMarshaling, "goldfish_vk_marshaling")
- self.addWrapper(cereal.VulkanReservedMarshaling, "goldfish_vk_reserved_marshaling", variant = "host")
- self.addWrapper(cereal.VulkanTesting, "goldfish_vk_testing")
- self.addWrapper(cereal.VulkanDeepcopy, "goldfish_vk_deepcopy")
- self.addWrapper(cereal.VulkanHandleMap, "goldfish_vk_handlemap")
- self.addWrapper(cereal.VulkanDispatch, "goldfish_vk_dispatch")
- self.addWrapper(cereal.VulkanTransform, "goldfish_vk_transform", resourceTrackerTypeName="VkDecoderGlobalState")
- self.addWrapper(cereal.VulkanDecoder, "VkDecoder")
- self.addWrapper(cereal.VulkanDecoderSnapshot, "VkDecoderSnapshot")
- self.addWrapper(cereal.VulkanSubDecoder, "VkSubDecoder")
- self.addWrapper(cereal.ApiLogDecoder, "ApiLogDecoder")
- self.addWrapper(cereal.VulkanGfxstreamStructureType,
- "vulkan_gfxstream_structure_type_guest")
- self.addWrapper(cereal.VulkanGfxstreamStructureType, "vulkan_gfxstream_structure_type_host")
- self.addWrapper(cereal.VulkanAndroidNativeBufferStructureType,
- "vk_android_native_buffer_structure_type")
-
- self.guestAndroidMkCppFiles = ""
- self.hostCMakeCppFiles = ""
- self.hostDecoderCMakeCppFiles = ""
-
- def addSrcEntry(m):
- mkSrcEntry = m.getMakefileSrcEntry()
- cmakeSrcEntry = m.getCMakeSrcEntry()
- if m.directory == self.guest_encoder_tag:
- self.guestAndroidMkCppFiles += mkSrcEntry
- elif m.directory == self.host_tag:
- self.hostDecoderCMakeCppFiles += cmakeSrcEntry
- elif m.directory != self.guest_hal_tag:
- self.hostCMakeCppFiles += cmakeSrcEntry
-
- self.forEachModule(addSrcEntry)
-
- def addGuestEncoderModule(
- self, basename, extraHeader="", extraImpl="", useNamespace=True, headerOnly=False,
- suppressFeatureGuards=False, moduleName=None, suppressVulkanHeaders=False):
- if not os.path.exists(self.guest_abs_encoder_destination):
- print("Path [%s] not found (guest encoder path), skipping" % self.guest_abs_encoder_destination)
- return
- self.addCppModule(self.guest_encoder_tag, basename, extraHeader=extraHeader,
- extraImpl=extraImpl, customAbsDir=self.guest_abs_encoder_destination,
- useNamespace=useNamespace, headerOnly=headerOnly,
- suppressFeatureGuards=suppressFeatureGuards, moduleName=moduleName,
- suppressVulkanHeaders=suppressVulkanHeaders)
-
- def addGuestHalModule(self, basename, extraHeader = "", extraImpl = "", useNamespace = True):
- if not os.path.exists(self.guest_abs_hal_destination):
- print("Path [%s] not found (guest encoder path), skipping" % self.guest_abs_encoder_destination)
- return
- self.addCppModule(self.guest_hal_tag,
- basename,
- extraHeader = extraHeader,
- extraImpl = extraImpl,
- customAbsDir = self.guest_abs_hal_destination,
- useNamespace = useNamespace)
-
- def addHostModule(
- self, basename, extraHeader="", extraImpl="", useNamespace=True, implOnly=False,
- suppress=False, headerOnly=False, suppressFeatureGuards=False, moduleName=None,
- suppressVulkanHeaders=False):
- if not os.path.exists(self.host_abs_decoder_destination):
- print("Path [%s] not found (host encoder path), skipping" %
- self.host_abs_decoder_destination)
- return
- if not suppressVulkanHeaders:
- extraHeader = self.hostCommonExtraVulkanHeaders + '\n' + extraHeader
- self.addCppModule(
- self.host_tag, basename, extraHeader=extraHeader, extraImpl=extraImpl,
- customAbsDir=self.host_abs_decoder_destination, useNamespace=useNamespace,
- implOnly=implOnly, suppress=suppress, headerOnly=headerOnly,
- suppressFeatureGuards=suppressFeatureGuards, moduleName=moduleName,
- suppressVulkanHeaders=suppressVulkanHeaders)
-
- def addModule(self, module, moduleName=None):
- if moduleName is None:
- moduleName = module.basename
- self.moduleList.append(moduleName)
- self.modules[moduleName] = module
-
- def addCppModule(
- self, directory, basename, extraHeader="", extraImpl="", customAbsDir=None,
- useNamespace=True, implOnly=False, suppress=False, headerOnly=False,
- suppressFeatureGuards=False, moduleName=None, suppressVulkanHeaders=False):
- module = cereal.Module(
- directory, basename, customAbsDir=customAbsDir, suppress=suppress, implOnly=implOnly,
- headerOnly=headerOnly, suppressFeatureGuards=suppressFeatureGuards)
- self.addModule(module, moduleName=moduleName)
- module.headerPreamble = copyrightHeader
- module.headerPreamble += \
- autogeneratedHeaderTemplate % \
- (basename, "(header) generated by %s" % banner_command(sys.argv))
-
-
- namespaceBegin = """
-namespace gfxstream {
-namespace vk {
-""" if useNamespace else ""
-
- namespaceEnd = """
-} // namespace vk"
-} // namespace gfxstream
-""" if useNamespace else ""
-
- module.headerPreamble += "#pragma once\n"
- if (not suppressVulkanHeaders):
- module.headerPreamble += "#include <vulkan/vulkan.h>\n"
- module.headerPreamble += '#include "vulkan_gfxstream.h"\n'
- module.headerPreamble += extraHeader + '\n'
- if namespaceBegin:
- module.headerPreamble += namespaceBegin + '\n'
-
- module.implPreamble = copyrightHeader
- module.implPreamble += \
- autogeneratedHeaderTemplate % \
- (basename, "(impl) generated by %s" % \
- banner_command(sys.argv))
- if not implOnly:
- module.implPreamble += """
-#include "%s.h"
-
-%s
-
-%s
-
-""" % (basename, extraImpl, namespaceBegin)
-
- module.headerPostamble = """
-%s
-""" % namespaceEnd
- module.implPostamble = """
-%s
-""" % namespaceEnd
-
- def addWrapper(self, moduleType, moduleName, **kwargs):
- if moduleName not in self.modules:
- print(f'Unknown module: {moduleName}. All known modules are: {", ".join(self.modules)}.')
- return
- self.wrappers.append(
- moduleType(
- self.modules[moduleName],
- self.typeInfo, **kwargs))
-
- def forEachModule(self, func):
- for moduleName in self.moduleList:
- func(self.modules[moduleName])
-
- def forEachWrapper(self, func):
- for wrapper in self.wrappers:
- func(wrapper)
-
-## Overrides####################################################################
-
- def beginFile(self, genOpts):
- OutputGenerator.beginFile(self, genOpts, suppressEnabled)
-
- if suppressEnabled:
- def enableSuppression(m):
- m.suppress = True
- self.forEachModule(enableSuppression)
- self.modules[suppressExceptModule].suppress = False
-
- if not suppressEnabled:
- write(self.host_cmake_generator(self.hostCMakeCppFiles),
- file = self.outFile)
-
- guestEncoderAndroidMkPath = \
- os.path.join( \
- self.guest_abs_encoder_destination,
- "Android.mk")
-
- self.forEachModule(lambda m: m.begin(self.genOpts.directory))
- self.forEachWrapper(lambda w: w.onBegin())
-
- def endFile(self):
- OutputGenerator.endFile(self)
-
- self.typeInfo.onEnd()
-
- self.forEachWrapper(lambda w: w.onEnd())
- self.forEachModule(lambda m: m.end())
-
- def beginFeature(self, interface, emit):
- # Start processing in superclass
- OutputGenerator.beginFeature(self, interface, emit)
-
- self.typeInfo.onBeginFeature(self.featureName, self.featureType)
-
- self.forEachModule(
- lambda m: m.appendHeader("#ifdef %s\n" % self.featureName)
- if isinstance(m, cereal.Module) and not m.suppressFeatureGuards else None)
- self.forEachModule(
- lambda m: m.appendImpl("#ifdef %s\n" % self.featureName)
- if isinstance(m, cereal.Module) and not m.suppressFeatureGuards else None)
- self.forEachWrapper(lambda w: w.onBeginFeature(self.featureName, self.featureType))
- # functable needs to understand the feature type (device vs instance) of each cmd
- for features in interface.findall('require'):
- for c in features.findall('command'):
- self.forEachWrapper(lambda w: w.onFeatureNewCmd(c.get('name')))
-
- def endFeature(self):
- # Finish processing in superclass
- OutputGenerator.endFeature(self)
-
- self.typeInfo.onEndFeature()
-
- self.forEachModule(lambda m: m.appendHeader("#endif\n") if isinstance(
- m, cereal.Module) and not m.suppressFeatureGuards else None)
- self.forEachModule(lambda m: m.appendImpl("#endif\n") if isinstance(
- m, cereal.Module) and not m.suppressFeatureGuards else None)
- self.forEachWrapper(lambda w: w.onEndFeature())
-
- def genType(self, typeinfo: TypeInfo, name, alias):
- OutputGenerator.genType(self, typeinfo, name, alias)
- self.typeInfo.onGenType(typeinfo, name, alias)
- self.forEachWrapper(lambda w: w.onGenType(typeinfo, name, alias))
-
- def genStruct(self, typeinfo, typeName, alias):
- OutputGenerator.genStruct(self, typeinfo, typeName, alias)
- self.typeInfo.onGenStruct(typeinfo, typeName, alias)
- self.forEachWrapper(lambda w: w.onGenStruct(typeinfo, typeName, alias))
-
- def genGroup(self, groupinfo: GroupInfo, groupName, alias = None):
- OutputGenerator.genGroup(self, groupinfo, groupName, alias)
- self.typeInfo.onGenGroup(groupinfo, groupName, alias)
- self.forEachWrapper(lambda w: w.onGenGroup(groupinfo, groupName, alias))
-
- def genEnum(self, enuminfo: EnumInfo, name, alias):
- OutputGenerator.genEnum(self, enuminfo, name, alias)
- self.typeInfo.onGenEnum(enuminfo, name, alias)
- self.forEachWrapper(lambda w: w.onGenEnum(enuminfo, name, alias))
-
- def genCmd(self, cmdinfo, name, alias):
- OutputGenerator.genCmd(self, cmdinfo, name, alias)
- self.typeInfo.onGenCmd(cmdinfo, name, alias)
- self.forEachWrapper(lambda w: w.onGenCmd(cmdinfo, name, alias))
diff --git a/codegen/vulkan/scripts/cgenerator.py b/codegen/vulkan/scripts/cgenerator.py
deleted file mode 100644
index 56146021..00000000
--- a/codegen/vulkan/scripts/cgenerator.py
+++ /dev/null
@@ -1,420 +0,0 @@
-#!/usr/bin/python3 -i
-#
-# Copyright 2013-2021 The Khronos Group Inc.
-#
-# SPDX-License-Identifier: Apache-2.0
-
-import os
-import re
-from generator import (GeneratorOptions, OutputGenerator, noneStr,
- regSortFeatures, write)
-
-
-class CGeneratorOptions(GeneratorOptions):
- """CGeneratorOptions - subclass of GeneratorOptions.
-
- Adds options used by COutputGenerator objects during C language header
- generation."""
-
- def __init__(self,
- prefixText="",
- genFuncPointers=True,
- protectFile=True,
- protectFeature=True,
- protectProto=None,
- protectProtoStr=None,
- apicall='',
- apientry='',
- apientryp='',
- indentFuncProto=True,
- indentFuncPointer=False,
- alignFuncParam=0,
- genEnumBeginEndRange=False,
- genAliasMacro=False,
- aliasMacro='',
- misracstyle=False,
- misracppstyle=False,
- **kwargs
- ):
- """Constructor.
- Additional parameters beyond parent class:
-
- - prefixText - list of strings to prefix generated header with
- (usually a copyright statement + calling convention macros).
- - protectFile - True if multiple inclusion protection should be
- generated (based on the filename) around the entire header.
- - protectFeature - True if #ifndef..#endif protection should be
- generated around a feature interface in the header file.
- - genFuncPointers - True if function pointer typedefs should be
- generated
- - protectProto - If conditional protection should be generated
- around prototype declarations, set to either '#ifdef'
- to require opt-in (#ifdef protectProtoStr) or '#ifndef'
- to require opt-out (#ifndef protectProtoStr). Otherwise
- set to None.
- - protectProtoStr - #ifdef/#ifndef symbol to use around prototype
- declarations, if protectProto is set
- - apicall - string to use for the function declaration prefix,
- such as APICALL on Windows.
- - apientry - string to use for the calling convention macro,
- in typedefs, such as APIENTRY.
- - apientryp - string to use for the calling convention macro
- in function pointer typedefs, such as APIENTRYP.
- - indentFuncProto - True if prototype declarations should put each
- parameter on a separate line
- - indentFuncPointer - True if typedefed function pointers should put each
- parameter on a separate line
- - alignFuncParam - if nonzero and parameters are being put on a
- separate line, align parameter names at the specified column
- - genEnumBeginEndRange - True if BEGIN_RANGE / END_RANGE macros should
- be generated for enumerated types
- - genAliasMacro - True if the OpenXR alias macro should be generated
- for aliased types (unclear what other circumstances this is useful)
- - aliasMacro - alias macro to inject when genAliasMacro is True
- - misracstyle - generate MISRA C-friendly headers
- - misracppstyle - generate MISRA C++-friendly headers"""
-
- GeneratorOptions.__init__(self, **kwargs)
-
- self.prefixText = prefixText
- """list of strings to prefix generated header with (usually a copyright statement + calling convention macros)."""
-
- self.genFuncPointers = genFuncPointers
- """True if function pointer typedefs should be generated"""
-
- self.protectFile = protectFile
- """True if multiple inclusion protection should be generated (based on the filename) around the entire header."""
-
- self.protectFeature = protectFeature
- """True if #ifndef..#endif protection should be generated around a feature interface in the header file."""
-
- self.protectProto = protectProto
- """If conditional protection should be generated around prototype declarations, set to either '#ifdef' to require opt-in (#ifdef protectProtoStr) or '#ifndef' to require opt-out (#ifndef protectProtoStr). Otherwise set to None."""
-
- self.protectProtoStr = protectProtoStr
- """#ifdef/#ifndef symbol to use around prototype declarations, if protectProto is set"""
-
- self.apicall = apicall
- """string to use for the function declaration prefix, such as APICALL on Windows."""
-
- self.apientry = apientry
- """string to use for the calling convention macro, in typedefs, such as APIENTRY."""
-
- self.apientryp = apientryp
- """string to use for the calling convention macro in function pointer typedefs, such as APIENTRYP."""
-
- self.indentFuncProto = indentFuncProto
- """True if prototype declarations should put each parameter on a separate line"""
-
- self.indentFuncPointer = indentFuncPointer
- """True if typedefed function pointers should put each parameter on a separate line"""
-
- self.alignFuncParam = alignFuncParam
- """if nonzero and parameters are being put on a separate line, align parameter names at the specified column"""
-
- self.genEnumBeginEndRange = genEnumBeginEndRange
- """True if BEGIN_RANGE / END_RANGE macros should be generated for enumerated types"""
-
- self.genAliasMacro = genAliasMacro
- """True if the OpenXR alias macro should be generated for aliased types (unclear what other circumstances this is useful)"""
-
- self.aliasMacro = aliasMacro
- """alias macro to inject when genAliasMacro is True"""
-
- self.misracstyle = misracstyle
- """generate MISRA C-friendly headers"""
-
- self.misracppstyle = misracppstyle
- """generate MISRA C++-friendly headers"""
-
- self.codeGenerator = True
- """True if this generator makes compilable code"""
-
-
-class COutputGenerator(OutputGenerator):
- """Generates C-language API interfaces."""
-
- # This is an ordered list of sections in the header file.
- TYPE_SECTIONS = ['include', 'define', 'basetype', 'handle', 'enum',
- 'group', 'bitmask', 'funcpointer', 'struct']
- ALL_SECTIONS = TYPE_SECTIONS + ['commandPointer', 'command']
-
- def __init__(self, *args, **kwargs):
- super().__init__(*args, **kwargs)
- # Internal state - accumulators for different inner block text
- self.sections = {section: [] for section in self.ALL_SECTIONS}
- self.feature_not_empty = False
- self.may_alias = None
-
- def beginFile(self, genOpts):
- OutputGenerator.beginFile(self, genOpts)
- # C-specific
- #
- # Multiple inclusion protection & C++ wrappers.
- if genOpts.protectFile and self.genOpts.filename:
- headerSym = re.sub(r'\.h', '_h_',
- os.path.basename(self.genOpts.filename)).upper()
- write('#ifndef', headerSym, file=self.outFile)
- write('#define', headerSym, '1', file=self.outFile)
- self.newline()
-
- # User-supplied prefix text, if any (list of strings)
- if genOpts.prefixText:
- for s in genOpts.prefixText:
- write(s, file=self.outFile)
-
- # C++ extern wrapper - after prefix lines so they can add includes.
- self.newline()
- write('#ifdef __cplusplus', file=self.outFile)
- write('extern "C" {', file=self.outFile)
- write('#endif', file=self.outFile)
- self.newline()
-
- def endFile(self):
- # C-specific
- # Finish C++ wrapper and multiple inclusion protection
- self.newline()
- write('#ifdef __cplusplus', file=self.outFile)
- write('}', file=self.outFile)
- write('#endif', file=self.outFile)
- if self.genOpts.protectFile and self.genOpts.filename:
- self.newline()
- write('#endif', file=self.outFile)
- # Finish processing in superclass
- OutputGenerator.endFile(self)
-
- def beginFeature(self, interface, emit):
- # Start processing in superclass
- OutputGenerator.beginFeature(self, interface, emit)
- # C-specific
- # Accumulate includes, defines, types, enums, function pointer typedefs,
- # end function prototypes separately for this feature. They're only
- # printed in endFeature().
- self.sections = {section: [] for section in self.ALL_SECTIONS}
- self.feature_not_empty = False
-
- def endFeature(self):
- "Actually write the interface to the output file."
- # C-specific
- if self.emit:
- if self.feature_not_empty:
- if self.genOpts.conventions.writeFeature(self.featureExtraProtect, self.genOpts.filename):
- self.newline()
- if self.genOpts.protectFeature:
- write('#ifndef', self.featureName, file=self.outFile)
- # If type declarations are needed by other features based on
- # this one, it may be necessary to suppress the ExtraProtect,
- # or move it below the 'for section...' loop.
- if self.featureExtraProtect is not None:
- write('#ifdef', self.featureExtraProtect, file=self.outFile)
- self.newline()
- write('#define', self.featureName, '1', file=self.outFile)
- for section in self.TYPE_SECTIONS:
- contents = self.sections[section]
- if contents:
- write('\n'.join(contents), file=self.outFile)
- if self.genOpts.genFuncPointers and self.sections['commandPointer']:
- write('\n'.join(self.sections['commandPointer']), file=self.outFile)
- self.newline()
- if self.sections['command']:
- if self.genOpts.protectProto:
- write(self.genOpts.protectProto,
- self.genOpts.protectProtoStr, file=self.outFile)
- write('\n'.join(self.sections['command']), end='', file=self.outFile)
- if self.genOpts.protectProto:
- write('#endif', file=self.outFile)
- else:
- self.newline()
- if self.featureExtraProtect is not None:
- write('#endif /*', self.featureExtraProtect, '*/', file=self.outFile)
- if self.genOpts.protectFeature:
- write('#endif /*', self.featureName, '*/', file=self.outFile)
- # Finish processing in superclass
- OutputGenerator.endFeature(self)
-
- def appendSection(self, section, text):
- "Append a definition to the specified section"
- # self.sections[section].append('SECTION: ' + section + '\n')
- self.sections[section].append(text)
- self.feature_not_empty = True
-
- def genType(self, typeinfo, name, alias):
- "Generate type."
- OutputGenerator.genType(self, typeinfo, name, alias)
- typeElem = typeinfo.elem
-
- # Vulkan:
- # Determine the category of the type, and the type section to add
- # its definition to.
- # 'funcpointer' is added to the 'struct' section as a workaround for
- # internal issue #877, since structures and function pointer types
- # can have cross-dependencies.
- category = typeElem.get('category')
- if category == 'funcpointer':
- section = 'struct'
- else:
- section = category
-
- if category in ('struct', 'union'):
- # If the type is a struct type, generate it using the
- # special-purpose generator.
- self.genStruct(typeinfo, name, alias)
- else:
- # OpenXR: this section was not under 'else:' previously, just fell through
- if alias:
- # If the type is an alias, just emit a typedef declaration
- body = 'typedef ' + alias + ' ' + name + ';\n'
- else:
- # Replace <apientry /> tags with an APIENTRY-style string
- # (from self.genOpts). Copy other text through unchanged.
- # If the resulting text is an empty string, don't emit it.
- body = noneStr(typeElem.text)
- for elem in typeElem:
- if elem.tag == 'apientry':
- body += self.genOpts.apientry + noneStr(elem.tail)
- else:
- body += noneStr(elem.text) + noneStr(elem.tail)
- if body:
- # Add extra newline after multi-line entries.
- if '\n' in body[0:-1]:
- body += '\n'
- self.appendSection(section, body)
-
- def genProtectString(self, protect_str):
- """Generate protection string.
-
- Protection strings are the strings defining the OS/Platform/Graphics
- requirements for a given OpenXR command. When generating the
- language header files, we need to make sure the items specific to a
- graphics API or OS platform are properly wrapped in #ifs."""
- protect_if_str = ''
- protect_end_str = ''
- if not protect_str:
- return (protect_if_str, protect_end_str)
-
- if ',' in protect_str:
- protect_list = protect_str.split(",")
- protect_defs = ('defined(%s)' % d for d in protect_list)
- protect_def_str = ' && '.join(protect_defs)
- protect_if_str = '#if %s\n' % protect_def_str
- protect_end_str = '#endif // %s\n' % protect_def_str
- else:
- protect_if_str = '#ifdef %s\n' % protect_str
- protect_end_str = '#endif // %s\n' % protect_str
-
- return (protect_if_str, protect_end_str)
-
- def typeMayAlias(self, typeName):
- if not self.may_alias:
- # First time we've asked if a type may alias.
- # So, let's populate the set of all names of types that may.
-
- # Everyone with an explicit mayalias="true"
- self.may_alias = set(typeName
- for typeName, data in self.registry.typedict.items()
- if data.elem.get('mayalias') == 'true')
-
- # Every type mentioned in some other type's parentstruct attribute.
- parent_structs = (otherType.elem.get('parentstruct')
- for otherType in self.registry.typedict.values())
- self.may_alias.update(set(x for x in parent_structs
- if x is not None))
- return typeName in self.may_alias
-
- def genStruct(self, typeinfo, typeName, alias):
- """Generate struct (e.g. C "struct" type).
-
- This is a special case of the <type> tag where the contents are
- interpreted as a set of <member> tags instead of freeform C
- C type declarations. The <member> tags are just like <param>
- tags - they are a declaration of a struct or union member.
- Only simple member declarations are supported (no nested
- structs etc.)
-
- If alias is not None, then this struct aliases another; just
- generate a typedef of that alias."""
- OutputGenerator.genStruct(self, typeinfo, typeName, alias)
-
- typeElem = typeinfo.elem
-
- if alias:
- body = 'typedef ' + alias + ' ' + typeName + ';\n'
- else:
- body = ''
- (protect_begin, protect_end) = self.genProtectString(typeElem.get('protect'))
- if protect_begin:
- body += protect_begin
- body += 'typedef ' + typeElem.get('category')
-
- # This is an OpenXR-specific alternative where aliasing refers
- # to an inheritance hierarchy of types rather than C-level type
- # aliases.
- if self.genOpts.genAliasMacro and self.typeMayAlias(typeName):
- body += ' ' + self.genOpts.aliasMacro
-
- body += ' ' + typeName + ' {\n'
-
- targetLen = self.getMaxCParamTypeLength(typeinfo)
- for member in typeElem.findall('.//member'):
- body += self.makeCParamDecl(member, targetLen + 4)
- body += ';\n'
- body += '} ' + typeName + ';\n'
- if protect_end:
- body += protect_end
-
- self.appendSection('struct', body)
-
- def genGroup(self, groupinfo, groupName, alias=None):
- """Generate groups (e.g. C "enum" type).
-
- These are concatenated together with other types.
-
- If alias is not None, it is the name of another group type
- which aliases this type; just generate that alias."""
- OutputGenerator.genGroup(self, groupinfo, groupName, alias)
- groupElem = groupinfo.elem
-
- # After either enumerated type or alias paths, add the declaration
- # to the appropriate section for the group being defined.
- if groupElem.get('type') == 'bitmask':
- section = 'bitmask'
- else:
- section = 'group'
-
- if alias:
- # If the group name is aliased, just emit a typedef declaration
- # for the alias.
- body = 'typedef ' + alias + ' ' + groupName + ';\n'
- self.appendSection(section, body)
- else:
- (section, body) = self.buildEnumCDecl(self.genOpts.genEnumBeginEndRange, groupinfo, groupName)
- self.appendSection(section, "\n" + body)
-
- def genEnum(self, enuminfo, name, alias):
- """Generate the C declaration for a constant (a single <enum> value)."""
-
- OutputGenerator.genEnum(self, enuminfo, name, alias)
-
- body = self.buildConstantCDecl(enuminfo, name, alias)
- self.appendSection('enum', body)
-
- def genCmd(self, cmdinfo, name, alias):
- "Command generation"
- OutputGenerator.genCmd(self, cmdinfo, name, alias)
-
- # if alias:
- # prefix = '// ' + name + ' is an alias of command ' + alias + '\n'
- # else:
- # prefix = ''
-
- prefix = ''
- decls = self.makeCDecls(cmdinfo.elem)
- self.appendSection('command', prefix + decls[0] + '\n')
- if self.genOpts.genFuncPointers:
- self.appendSection('commandPointer', decls[1])
-
- def misracstyle(self):
- return self.genOpts.misracstyle;
-
- def misracppstyle(self):
- return self.genOpts.misracppstyle;
diff --git a/codegen/vulkan/scripts/checkXrefs b/codegen/vulkan/scripts/checkXrefs
deleted file mode 100755
index 6d5dc7d7..00000000
--- a/codegen/vulkan/scripts/checkXrefs
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/bin/sh
-#
-# Copyright 2015-2021 The Khronos Group Inc.
-#
-# SPDX-License-Identifier: Apache-2.0
-
-# checkXrefs - check internal links in a Vulkan HTML spec
-# Usage: checkXrefs file.html
-# Prints a list of internal hrefs with no corresponding anchors.
-# (There are many anchors with no corresponding hrefs - this is OK).
-
-xrefs=`tempfile`
-ids=`tempfile`
-
-sed -e 's/ href="#/\nhref="#/g' < $1 | \
- grep 'href="#' | \
- sed -e 's/href="#//g' -e 's/"[ >].*//g' | \
- sort | uniq > $xrefs
-sed -e 's/ id="/\nid="/g' < $1 | \
- grep 'id="' | \
- sed -e 's/id="//g' -e 's/"[ >].*//g' | \
- sort | uniq > $ids
-
-comm -23 $xrefs $ids
-
-rm $xrefs $ids 1>&2
diff --git a/codegen/vulkan/scripts/check_html_xrefs.py b/codegen/vulkan/scripts/check_html_xrefs.py
deleted file mode 100755
index 0081e6c0..00000000
--- a/codegen/vulkan/scripts/check_html_xrefs.py
+++ /dev/null
@@ -1,93 +0,0 @@
-#!/usr/bin/python3
-#
-# Copyright 2020-2021 The Khronos Group Inc.
-#
-# SPDX-License-Identifier: Apache-2.0
-
-# check_html_xrefs - simple-minded check for internal xrefs in spec HTML
-# that don't exist.
-
-# Usage: check_html_xrefs file
-# Just reports bad xrefs, not where they occur
-
-import argparse
-import re
-from lxml import etree
-
-SECTNAME = re.compile(r'sect(?P<level>\d+)')
-
-def find_parent_ids(elem, href):
- """Find section titles in parents, which are the 'id' elements of '<hN'
- children of '<div class="sectM"' tags, and N = M + 1. This may be
- specific to the Vulkan spec, though - hierarchy could be different in
- other asciidoctor documents. Returns a list of [ anchor, title ].
-
- elem - this node
- href - href link text of elem"""
-
- # Find parent <div> with class="sect#"
- parent = elem.getparent()
- while parent is not None:
- if parent.tag == 'div':
- cssclass = parent.get('class')
- matches = SECTNAME.match(cssclass)
- if matches is not None:
- level = int(matches.group('level'))
- # Look for corresponding header tag in this div
- helem = parent.find('./h{}'.format(level+1))
- if helem is not None:
- return [ helem.get('id'), ''.join(helem.itertext()) ]
- parent = parent.getparent()
- return [ '** NO PARENT NODE IDENTIFIED **', '' ]
-
-if __name__ == '__main__':
- parser = argparse.ArgumentParser()
-
- parser.add_argument('files', metavar='filename', nargs='*',
- help='Path to registry XML')
- args = parser.parse_args()
-
- for filename in args.files:
- parser = etree.HTMLParser()
- tree = etree.parse(filename, parser)
-
- # Find all 'id' elements
- id_elems = tree.findall('.//*[@id]')
- ids = set()
- for elem in id_elems:
- id = elem.get('id')
- if id in ids:
- True
- # print('Duplicate ID attribute:', id)
- else:
- ids.add(id)
-
- # Find all internal 'href' attributes and see if they're valid
- # Keep an [element, href] list for tracking parents
- # Also keep a count of each href
- ref_elems = tree.findall('.//a[@href]')
- refs = []
- count = {}
- for elem in ref_elems:
- href = elem.get('href')
- # If not a local href, skip it
- if href[0] == '#':
- # If there's a corresponding id, skip it
- href = href[1:]
- if href not in ids:
- if href in count:
- refs.append((elem, href))
- True
- count[href] = count[href] + 1
- else:
- refs.append((elem, href))
- count[href] = 1
- else:
- True
- # print('Skipping external href:', ref)
-
- # Check for hrefs not found in ids
- print('Bad links in {}:'.format(filename))
- for (elem, href) in refs:
- parents = find_parent_ids(elem, href)
- print('{:<40} in {:<28} ({})'.format(href, parents[0], parents[1]))
diff --git a/codegen/vulkan/scripts/check_spec_links.py b/codegen/vulkan/scripts/check_spec_links.py
deleted file mode 100755
index 16cfe438..00000000
--- a/codegen/vulkan/scripts/check_spec_links.py
+++ /dev/null
@@ -1,164 +0,0 @@
-#!/usr/bin/python3
-#
-# Copyright (c) 2018-2019 Collabora, Ltd.
-#
-# SPDX-License-Identifier: Apache-2.0
-#
-# Author(s): Ryan Pavlik <ryan.pavlik@collabora.com>
-#
-# Purpose: This file performs some basic checks of the custom macros
-# used in the AsciiDoctor source for the spec, especially
-# related to the validity of the entities linked-to.
-
-from pathlib import Path
-
-from reg import Registry
-from spec_tools.entity_db import EntityDatabase
-from spec_tools.macro_checker import MacroChecker
-from spec_tools.macro_checker_file import MacroCheckerFile
-from spec_tools.main import checkerMain
-from spec_tools.shared import (AUTO_FIX_STRING, EXTENSION_CATEGORY, MessageId,
- MessageType)
-
-###
-# "Configuration" constants
-
-FREEFORM_CATEGORY = 'freeform'
-
-# defines mentioned in spec but not needed in registry
-EXTRA_DEFINES = (
- 'VKAPI_ATTR',
- 'VKAPI_CALL',
- 'VKAPI_PTR',
- 'VK_NO_STDDEF_H',
- 'VK_NO_STDINT_H',
- )
-
-# Extra freeform refpages in addition to EXTRA_DEFINES
-EXTRA_REFPAGES = (
- 'VK_VERSION_1_0',
- 'VK_VERSION_1_1',
- 'VK_VERSION_1_2',
- 'WSIheaders',
- 'provisional-headers',
- )
-
-# These are marked with the code: macro
-SYSTEM_TYPES = set(('void', 'char', 'float', 'size_t', 'uintptr_t',
- 'int8_t', 'uint8_t',
- 'int32_t', 'uint32_t',
- 'int64_t', 'uint64_t'))
-
-ROOT = Path(__file__).resolve().parent.parent
-DEFAULT_DISABLED_MESSAGES = set((
- MessageId.LEGACY,
- MessageId.REFPAGE_MISSING,
- MessageId.MISSING_MACRO,
- MessageId.EXTENSION,
- # TODO *text macro checking actually needs fixing for Vulkan
- MessageId.MISUSED_TEXT,
- MessageId.MISSING_TEXT
-))
-
-CWD = Path('.').resolve()
-
-
-class VulkanEntityDatabase(EntityDatabase):
- """Vulkan-specific subclass of EntityDatabase."""
-
- def __init__(self, *args, **kwargs):
- super().__init__(*args, **kwargs)
- self._conditionally_recognized = set(('fname', 'sname'))
-
- def makeRegistry(self):
- registryFile = str(ROOT / 'xml/vk.xml')
- registry = Registry()
- registry.loadFile(registryFile)
- return registry
-
- def getNamePrefix(self):
- return "vk"
-
- def getPlatformRequires(self):
- return 'vk_platform'
-
- def getSystemTypes(self):
- return SYSTEM_TYPES
-
- def populateMacros(self):
- self.addMacros('t', ['link', 'name'], ['funcpointers', 'flags'])
-
- def populateEntities(self):
- # These are not mentioned in the XML
- for name in EXTRA_DEFINES:
- self.addEntity(name, 'dlink',
- category=FREEFORM_CATEGORY, generates=False)
- for name in EXTRA_REFPAGES:
- self.addEntity(name, 'code',
- category=FREEFORM_CATEGORY, generates=False)
-
- def shouldBeRecognized(self, macro, entity_name):
- """Determine, based on the macro and the name provided, if we should expect to recognize the entity."""
- if super().shouldBeRecognized(macro, entity_name):
- return True
-
- # The *name: macros in Vulkan should also be recognized if the entity name matches the pattern.
- if macro in self._conditionally_recognized and self.likelyRecognizedEntity(entity_name):
- return True
- return False
-
-
-class VulkanMacroCheckerFile(MacroCheckerFile):
- """Vulkan-specific subclass of MacroCheckerFile."""
-
- def handleWrongMacro(self, msg, data):
- """Report an appropriate message when we found that the macro used is incorrect.
-
- May be overridden depending on each API's behavior regarding macro misuse:
- e.g. in some cases, it may be considered a MessageId.LEGACY warning rather than
- a MessageId.WRONG_MACRO or MessageId.EXTENSION.
- """
- message_type = MessageType.WARNING
- message_id = MessageId.WRONG_MACRO
- group = 'macro'
-
- if data.category == EXTENSION_CATEGORY:
- # Ah, this is an extension
- msg.append(
- 'This is apparently an extension name, which should be marked up as a link.')
- message_id = MessageId.EXTENSION
- group = None # replace the whole thing
- else:
- # Non-extension, we found the macro though.
- if data.macro[0] == self.macro[0] and data.macro[1:] == 'link' and self.macro[1:] == 'name':
- # First letter matches, old is 'name', new is 'link':
- # This is legacy markup
- msg.append(
- 'This is legacy markup that has not been updated yet.')
- message_id = MessageId.LEGACY
- else:
- # Not legacy, just wrong.
- message_type = MessageType.ERROR
-
- msg.append(AUTO_FIX_STRING)
- self.diag(message_type, message_id, msg,
- group=group, replacement=self.makeMacroMarkup(data=data), fix=self.makeFix(data=data))
-
-
-def makeMacroChecker(enabled_messages):
- """Create a correctly-configured MacroChecker instance."""
- entity_db = VulkanEntityDatabase()
- return MacroChecker(enabled_messages, entity_db, VulkanMacroCheckerFile, ROOT)
-
-
-if __name__ == '__main__':
- default_enabled_messages = set(MessageId).difference(
- DEFAULT_DISABLED_MESSAGES)
-
- all_docs = [str(fn)
- for fn in sorted((ROOT / 'chapters/').glob('**/*.txt'))]
- all_docs.extend([str(fn)
- for fn in sorted((ROOT / 'appendices/').glob('**/*.txt'))])
-
- checkerMain(default_enabled_messages, makeMacroChecker,
- all_docs)
diff --git a/codegen/vulkan/scripts/ci/check_undefined b/codegen/vulkan/scripts/ci/check_undefined
deleted file mode 100755
index b747b1db..00000000
--- a/codegen/vulkan/scripts/ci/check_undefined
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/bash
-
-# Copyright 2020-2021 The Khronos Group, Inc.
-# SPDX-License-Identifier: Apache-2.0
-
-# scripts/ci/check_undefined
-# Check for non-tagged 'undefined' in spec sources.
-# Skip appendices/VK* files, which are non-normative.
-# Ideally we would skip NOTES too, but that would require parsing.
-
-undefined=/tmp/undefined
-ls chapters/*txt chapters/*/*txt appendices/[A-UW-Za-z]*txt | \
- xargs egrep -E '(^|[[:space:]])undefined($|[^:])' > $undefined
-if test `cat $undefined | wc -l` -gt 0 ; then
- echo "*** Found un-tagged uses of 'undefined'"
- cat $undefined
- rm $undefined
- exit 1
-else
- rm $undefined
- exit 0
-fi
diff --git a/codegen/vulkan/scripts/comment_convert.py b/codegen/vulkan/scripts/comment_convert.py
deleted file mode 100755
index f1fa938c..00000000
--- a/codegen/vulkan/scripts/comment_convert.py
+++ /dev/null
@@ -1,203 +0,0 @@
-#!/usr/bin/env python3
-#
-# Copyright (c) 2019 Collabora, Ltd.
-#
-# SPDX-License-Identifier: Apache-2.0
-#
-# Author(s): Ryan Pavlik <ryan.pavlik@collabora.com>
-#
-# Purpose: This script converts leading comments on some Python
-# classes and functions into docstrings.
-# It doesn't attempt to deal with line continuations, etc.
-# so you may want to "join line" on your def statements
-# temporarily before running.
-
-import re
-
-from spec_tools.file_process import LinewiseFileProcessor
-
-COMMENT_RE = re.compile(r" *#(!.*| (?P<content>.*))?")
-CONVERTIBLE_DEF_RE = re.compile(r"(?P<indentation> *)(def|class) .*:")
-
-
-class CommentConverter(LinewiseFileProcessor):
- def __init__(self, single_line_quotes=False, allow_blank_lines=False):
- super().__init__()
- self.comment_lines = []
- "Temporary storage for contiguous comment lines."
-
- self.trailing_empty_lines = []
- "Temporary storage for empty lines following a comment."
-
- self.output_lines = []
- "Fully-processed output lines."
-
- self.single_line_quotes = single_line_quotes
- "Whether we generate simple, single-line quotes for single line comments."
-
- self.allow_blank_lines = allow_blank_lines
- "Whether we allow blank lines between a comment and the thing it's considered to document."
-
- self.done_with_initial_comment = False
- "Have we read our first non-comment line yet?"
-
- def output_line(self, line=None):
- if line:
- self.output_lines.append(line)
- else:
- self.output_lines.append("")
-
- def output_normal_line(self, line):
- # flush any comment lines we had stored and output this line.
- self.dump_comment_lines()
- self.output_line(line)
-
- def dump_comment_lines(self):
- # Early out for empty
- if not self.comment_lines:
- return
-
- for line in self.comment_lines:
- self.output_line(line)
- self.comment_lines = []
-
- for line in self.trailing_empty_lines:
- self.output_line(line)
- self.trailing_empty_lines = []
-
- def dump_converted_comment_lines(self, indent):
- # Early out for empty
- if not self.comment_lines:
- return
-
- for line in self.trailing_empty_lines:
- self.output_line(line)
- self.trailing_empty_lines = []
-
- indent = indent + ' '
-
- def extract(line):
- match = COMMENT_RE.match(line)
- content = match.group('content')
- if content:
- return content
- return ""
-
- # Extract comment content
- lines = [extract(line) for line in self.comment_lines]
-
- # Drop leading empty comments.
- while lines and not lines[0].strip():
- lines.pop(0)
-
- # Drop trailing empty comments.
- while lines and not lines[-1].strip():
- lines.pop()
-
- # Add single- or multi-line-string quote
- if self.single_line_quotes \
- and len(lines) == 1 \
- and '"' not in lines[0]:
- quote = '"'
- else:
- quote = '"""'
- lines[0] = quote + lines[0]
- lines[-1] = lines[-1] + quote
-
- # Output lines, indenting content as required.
- for line in lines:
- if line:
- self.output_line(indent + line)
- else:
- # Don't indent empty comment lines
- self.output_line()
-
- # Clear stored comment lines since we processed them
- self.comment_lines = []
-
- def queue_comment_line(self, line):
- if self.trailing_empty_lines:
- # If we had blank lines between comment lines, they are separate blocks
- self.dump_comment_lines()
- self.comment_lines.append(line)
-
- def handle_empty_line(self, line):
- """Handle an empty line.
-
- Contiguous empty lines between a comment and something documentable do not
- disassociate the comment from the documentable thing.
- We have someplace else to store these lines in case there isn't something
- documentable coming up."""
- if self.comment_lines and self.allow_blank_lines:
- self.trailing_empty_lines.append(line)
- else:
- self.output_normal_line(line)
-
- def is_next_line_doc_comment(self):
- next_line = self.next_line_rstripped
- if next_line is None:
- return False
-
- return next_line.strip().startswith('"')
-
- def process_line(self, line_num, line):
- line = line.rstrip()
- comment_match = COMMENT_RE.match(line)
- def_match = CONVERTIBLE_DEF_RE.match(line)
-
- # First check if this is a comment line.
- if comment_match:
- if self.done_with_initial_comment:
- self.queue_comment_line(line)
- else:
- self.output_line(line)
- else:
- # If not a comment line, then by definition we're done with the comment header.
- self.done_with_initial_comment = True
- if not line.strip():
- self.handle_empty_line(line)
- elif def_match and not self.is_next_line_doc_comment():
- # We got something we can make a docstring for:
- # print the thing the docstring is for first,
- # then the converted comment.
-
- indent = def_match.group('indentation')
- self.output_line(line)
- self.dump_converted_comment_lines(indent)
- else:
- # Can't make a docstring for this line:
- self.output_normal_line(line)
-
- def process(self, fn, write=False):
- self.process_file(fn)
-
- if write:
- with open(fn, 'w', encoding='utf-8') as fp:
- for line in self.output_lines:
- fp.write(line)
- fp.write('\n')
-
- # Reset state
- self.__init__(self.single_line_quotes, self.allow_blank_lines)
-
-
-def main():
- import argparse
-
- parser = argparse.ArgumentParser()
- parser.add_argument('filenames', metavar='filename',
- type=str, nargs='+',
- help='A Python file to transform.')
- parser.add_argument('-b', '--blanklines', action='store_true',
- help='Allow blank lines between a comment and a define and still convert that comment.')
-
- args = parser.parse_args()
-
- converter = CommentConverter(allow_blank_lines=args.blanklines)
- for fn in args.filenames:
- print("Processing", fn)
- converter.process(fn, write=True)
-
-
-if __name__ == "__main__":
- main()
diff --git a/codegen/vulkan/scripts/compImages.sh b/codegen/vulkan/scripts/compImages.sh
deleted file mode 100755
index d9f3670f..00000000
--- a/codegen/vulkan/scripts/compImages.sh
+++ /dev/null
@@ -1,127 +0,0 @@
-#!/bin/bash
-#
-# Copyright 2020-2021 The Khronos Group Inc.
-#
-# SPDX-License-Identifier: Apache-2.0
-
-# compareImages - compare all asciidoctor images in two branches
-# Usage: compareImages branch1 branch2
-
-# Where to put temporary files
-compare=compare
-
-branch1=$1
-branch2=$2
-
-echo "Preparing test tree under compare/"
-rm -rf $compare
-
-echo "Gathering images under compare/$1 compare/$2"
-if git checkout $branch1 ; then
- img1=$compare/$branch1
- files1=$compare/$branch1-files
- mkdir -p $img1
- cp images/*.svg $img1
- (cd $img1 ; ls) > $files1
-else
- echo "Can't switch to branch $branch1"
- rm -rf $compare
- exit 1
-fi
-
-if git checkout $branch2 ; then
- img2=$compare/$branch2
- files2=$compare/$branch2-files
- mkdir -p $img2
- cp images/*.svg $img2
- (cd $img2 ; ls) > $files2
-else
- echo "Can't switch to branch $branch2"
- rm -rf $compare
- exit 1
-fi
-
-srcfile=compare/compImages.adoc
-
-# Boilerplate header
-echo "= Image Comparison of Vulkan images in $branch1 $branch2
-:data-uri:
-:icons: font
-include::../config/attribs.txt[]
-" > $srcfile
-
-
-# Files common to both branches
-echo "== Images Common to Both Branches
-" >> $srcfile
-
-# Identical images
-identical=()
-
-# Where to generate comparison images
-compdir=$compare/compare
-mkdir -p $compdir
-
-for file in `comm -12 $files1 $files2` ; do
- echo "Comparing $file"
- if diff -q $img1/$file $img2/$file > /dev/null ; then
- identical+=( $file )
- # Files are identical
- else
- # sum1=`sum $img1/$file | awk '{print $1}'`
- # sum2=`sum $img2/$file | awk '{print $1}'`
- #
- # if test $sum1 -eq $sum2 ; then
-
- # Generate comparison image
- compfile="$compdir/$file"
- compare $img1/$file $img2/$file $compfile
-
- echo "=== $file
-
-image::$branch1/$file[title=\"$file in $branch1\",align=\"center\",opts=\"inline\"]
-
-image::$branch2/$file[title=\"$file in $branch2\",align=\"center\",opts=\"inline\"]
-
-image::compare/$file[title=\"Comparison of branches\",align=\"center\",opts=\"inline\"]
-
-<<<
-
-" >> $srcfile
-
- fi
-done
-
-
-# Identical files
-echo "== Identical images
-" >> $srcfile
-
-for file in ${identical[@]} ; do
- echo " * $file" >> $srcfile
-done
-echo >> $srcfile
-
-
-# Files only in first branch
-echo "== Images only in $branch1
-" >> $srcfile
-
-for file in `comm -23 $files1 $files2` ; do
- echo " * $file" >> $srcfile
-done
-echo >> $srcfile
-
-
-# Files only in second branch
-echo "== Images only in $branch2
-" >> $srcfile
-
-for file in `comm -13 $files1 $files2` ; do
- echo " * $file" >> $srcfile
-done
-echo >> $srcfile
-
-outfile=$compare/`basename $srcfile .adoc`.pdf
-echo "Generating $outfile from $srcfile"
-asciidoctor -b pdf -r asciidoctor-pdf -o $outfile $srcfile
diff --git a/codegen/vulkan/scripts/conventions.py b/codegen/vulkan/scripts/conventions.py
deleted file mode 100644
index edf90596..00000000
--- a/codegen/vulkan/scripts/conventions.py
+++ /dev/null
@@ -1,358 +0,0 @@
-#!/usr/bin/python3 -i
-#
-# Copyright 2013-2021 The Khronos Group Inc.
-#
-# SPDX-License-Identifier: Apache-2.0
-
-# Base class for working-group-specific style conventions,
-# used in generation.
-
-from enum import Enum
-
-# Type categories that respond "False" to isStructAlwaysValid
-# basetype is home to typedefs like ..Bool32
-CATEGORIES_REQUIRING_VALIDATION = set(('handle',
- 'enum',
- 'bitmask',
- 'basetype',
- None))
-
-# These are basic C types pulled in via openxr_platform_defines.h
-TYPES_KNOWN_ALWAYS_VALID = set(('char',
- 'float',
- 'int8_t', 'uint8_t',
- 'int32_t', 'uint32_t',
- 'int64_t', 'uint64_t',
- 'size_t',
- 'uintptr_t',
- 'int',
- ))
-
-
-class ProseListFormats(Enum):
- """A connective, possibly with a quantifier."""
- AND = 0
- EACH_AND = 1
- OR = 2
- ANY_OR = 3
-
- @classmethod
- def from_string(cls, s):
- if s == 'or':
- return cls.OR
- if s == 'and':
- return cls.AND
- return None
-
- @property
- def connective(self):
- if self in (ProseListFormats.OR, ProseListFormats.ANY_OR):
- return 'or'
- return 'and'
-
- def quantifier(self, n):
- """Return the desired quantifier for a list of a given length."""
- if self == ProseListFormats.ANY_OR:
- if n > 1:
- return 'any of '
- elif self == ProseListFormats.EACH_AND:
- if n > 2:
- return 'each of '
- if n == 2:
- return 'both of '
- return ''
-
-
-class ConventionsBase:
- """WG-specific conventions."""
-
- def __init__(self):
- self._command_prefix = None
- self._type_prefix = None
-
- def formatExtension(self, name):
- """Mark up an extension name as a link the spec."""
- return '`apiext:{}`'.format(name)
-
- @property
- def null(self):
- """Preferred spelling of NULL."""
- raise NotImplementedError
-
- def makeProseList(self, elements, fmt=ProseListFormats.AND, with_verb=False, *args, **kwargs):
- """Make a (comma-separated) list for use in prose.
-
- Adds a connective (by default, 'and')
- before the last element if there are more than 1.
-
- Adds the right one of "is" or "are" to the end if with_verb is true.
-
- Optionally adds a quantifier (like 'any') before a list of 2 or more,
- if specified by fmt.
-
- Override with a different method or different call to
- _implMakeProseList if you want to add a comma for two elements,
- or not use a serial comma.
- """
- return self._implMakeProseList(elements, fmt, with_verb, *args, **kwargs)
-
- @property
- def struct_macro(self):
- """Get the appropriate format macro for a structure.
-
- May override.
- """
- return 'slink:'
-
- @property
- def external_macro(self):
- """Get the appropriate format macro for an external type like uint32_t.
-
- May override.
- """
- return 'code:'
-
- def makeStructName(self, name):
- """Prepend the appropriate format macro for a structure to a structure type name.
-
- Uses struct_macro, so just override that if you want to change behavior.
- """
- return self.struct_macro + name
-
- def makeExternalTypeName(self, name):
- """Prepend the appropriate format macro for an external type like uint32_t to a type name.
-
- Uses external_macro, so just override that if you want to change behavior.
- """
- return self.external_macro + name
-
- def _implMakeProseList(self, elements, fmt, with_verb, comma_for_two_elts=False, serial_comma=True):
- """Internal-use implementation to make a (comma-separated) list for use in prose.
-
- Adds a connective (by default, 'and')
- before the last element if there are more than 1,
- and only includes commas if there are more than 2
- (if comma_for_two_elts is False).
-
- Adds the right one of "is" or "are" to the end if with_verb is true.
-
- Optionally adds a quantifier (like 'any') before a list of 2 or more,
- if specified by fmt.
-
- Don't edit these defaults, override self.makeProseList().
- """
- assert(serial_comma) # didn't implement what we didn't need
- if isinstance(fmt, str):
- fmt = ProseListFormats.from_string(fmt)
-
- my_elts = list(elements)
- if len(my_elts) > 1:
- my_elts[-1] = '{} {}'.format(fmt.connective, my_elts[-1])
-
- if not comma_for_two_elts and len(my_elts) <= 2:
- prose = ' '.join(my_elts)
- else:
- prose = ', '.join(my_elts)
-
- quantifier = fmt.quantifier(len(my_elts))
-
- parts = [quantifier, prose]
-
- if with_verb:
- if len(my_elts) > 1:
- parts.append(' are')
- else:
- parts.append(' is')
- return ''.join(parts)
-
- @property
- def file_suffix(self):
- """Return suffix of generated Asciidoctor files"""
- raise NotImplementedError
-
- def api_name(self, spectype=None):
- """Return API or specification name for citations in ref pages.
-
- spectype is the spec this refpage is for.
- 'api' (the default value) is the main API Specification.
- If an unrecognized spectype is given, returns None.
-
- Must implement."""
- raise NotImplementedError
-
- def should_insert_may_alias_macro(self, genOpts):
- """Return true if we should insert a "may alias" macro in this file.
-
- Only used by OpenXR right now."""
- return False
-
- @property
- def command_prefix(self):
- """Return the expected prefix of commands/functions.
-
- Implemented in terms of api_prefix."""
- if not self._command_prefix:
- self._command_prefix = self.api_prefix[:].replace('_', '').lower()
- return self._command_prefix
-
- @property
- def type_prefix(self):
- """Return the expected prefix of type names.
-
- Implemented in terms of command_prefix (and in turn, api_prefix)."""
- if not self._type_prefix:
- self._type_prefix = ''.join(
- (self.command_prefix[0:1].upper(), self.command_prefix[1:]))
- return self._type_prefix
-
- @property
- def api_prefix(self):
- """Return API token prefix.
-
- Typically two uppercase letters followed by an underscore.
-
- Must implement."""
- raise NotImplementedError
-
- @property
- def api_version_prefix(self):
- """Return API core version token prefix.
-
- Implemented in terms of api_prefix.
-
- May override."""
- return self.api_prefix + 'VERSION_'
-
- @property
- def KHR_prefix(self):
- """Return extension name prefix for KHR extensions.
-
- Implemented in terms of api_prefix.
-
- May override."""
- return self.api_prefix + 'KHR_'
-
- @property
- def EXT_prefix(self):
- """Return extension name prefix for EXT extensions.
-
- Implemented in terms of api_prefix.
-
- May override."""
- return self.api_prefix + 'EXT_'
-
- def writeFeature(self, featureExtraProtect, filename):
- """Return True if OutputGenerator.endFeature should write this feature.
-
- Defaults to always True.
- Used in COutputGenerator.
-
- May override."""
- return True
-
- def requires_error_validation(self, return_type):
- """Return True if the return_type element is an API result code
- requiring error validation.
-
- Defaults to always False.
-
- May override."""
- return False
-
- @property
- def required_errors(self):
- """Return a list of required error codes for validation.
-
- Defaults to an empty list.
-
- May override."""
- return []
-
- def is_voidpointer_alias(self, tag, text, tail):
- """Return True if the declaration components (tag,text,tail) of an
- element represents a void * type.
-
- Defaults to a reasonable implementation.
-
- May override."""
- return tag == 'type' and text == 'void' and tail.startswith('*')
-
- def make_voidpointer_alias(self, tail):
- """Reformat a void * declaration to include the API alias macro.
-
- Defaults to a no-op.
-
- Must override if you actually want to use this feature in your project."""
- return tail
-
- def category_requires_validation(self, category):
- """Return True if the given type 'category' always requires validation.
-
- Defaults to a reasonable implementation.
-
- May override."""
- return category in CATEGORIES_REQUIRING_VALIDATION
-
- def type_always_valid(self, typename):
- """Return True if the given type name is always valid (never requires validation).
-
- This is for things like integers.
-
- Defaults to a reasonable implementation.
-
- May override."""
- return typename in TYPES_KNOWN_ALWAYS_VALID
-
- @property
- def should_skip_checking_codes(self):
- """Return True if more than the basic validation of return codes should
- be skipped for a command."""
-
- return False
-
- @property
- def generate_index_terms(self):
- """Return True if asiidoctor index terms should be generated as part
- of an API interface from the docgenerator."""
-
- return False
-
- @property
- def generate_enum_table(self):
- """Return True if asciidoctor tables describing enumerants in a
- group should be generated as part of group generation."""
- return False
-
- @property
- def generate_max_enum_in_docs(self):
- """Return True if MAX_ENUM tokens should be generated in
- documentation includes."""
- return False
-
-
- def extension_include_string(self, ext):
- """Return format string for include:: line for an extension appendix
- file. ext is an object with the following members:
- - name - extension string string
- - vendor - vendor portion of name
- - barename - remainder of name
-
- Must implement."""
- raise NotImplementedError
-
- @property
- def refpage_generated_include_path(self):
- """Return path relative to the generated reference pages, to the
- generated API include files.
-
- Must implement."""
- raise NotImplementedError
-
- def valid_flag_bit(self, bitpos):
- """Return True if bitpos is an allowed numeric bit position for
- an API flag.
-
- Behavior depends on the data type used for flags (which may be 32
- or 64 bits), and may depend on assumptions about compiler
- handling of sign bits in enumerated types, as well."""
- return True
diff --git a/codegen/vulkan/scripts/deperiodize_vuids.py b/codegen/vulkan/scripts/deperiodize_vuids.py
deleted file mode 100755
index c02a1581..00000000
--- a/codegen/vulkan/scripts/deperiodize_vuids.py
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/usr/bin/python3
-#
-# Copyright 2020 Petr Kraus
-#
-# SPDX-License-Identifier: Apache-2.0
-
-# Removes periods after Valid Usage sentence in the spec
-#
-# Usage:
-# cd <root of Vulkan-Docs repo>
-# ./scripts/deperiodize_vuids.py
-
-import os,re
-
-def deperiodizeFile(filename):
- print(' Deperiodizing = %s' % filename)
-
- with open(filename, 'r', encoding='utf8', newline='\n') as f:
- data = f.read()
-
- # Remove periods from VUs
- data = re.sub( r'( \* \[\[VUID\-[\s\S]+?)\.?(?=(\n \* \[\[VUID\-)|(\n\*\*\*\*)|(\n// )|(\ninclude::)|(\nendif::)|(\nifdef::)|(\nifndef::))', r'\g<1>', data )
-
- with open(filename, 'w', encoding='utf8', newline='\n') as f:
- data = f.write(data)
-
-def deperiodizeFolder(folder):
- print(' Parsing = %s' % folder)
- for root, subdirs, files in os.walk(folder):
- for file in files:
- if file.endswith(".txt"):
- file_path = os.path.join(root, file)
- deperiodizeFile(file_path)
- for subdir in subdirs:
- sub_folder = os.path.join(root, subdir)
- deperiodizeFolder(sub_folder)
-
-if __name__ == '__main__':
- deperiodizeFolder(os.getcwd() + '/chapters')
- deperiodizeFolder(os.getcwd() + '/appendices')
diff --git a/codegen/vulkan/scripts/docgenerator.py b/codegen/vulkan/scripts/docgenerator.py
deleted file mode 100644
index bb86eb50..00000000
--- a/codegen/vulkan/scripts/docgenerator.py
+++ /dev/null
@@ -1,482 +0,0 @@
-#!/usr/bin/python3 -i
-#
-# Copyright 2013-2021 The Khronos Group Inc.
-#
-# SPDX-License-Identifier: Apache-2.0
-
-from pathlib import Path
-
-from generator import GeneratorOptions, OutputGenerator, noneStr, write
-
-ENUM_TABLE_PREFIX = """
-[cols=",",options="header",]
-|=======================================================================
-|Enum |Description"""
-
-ENUM_TABLE_SUFFIX = """|======================================================================="""
-
-FLAG_BLOCK_PREFIX = """.Flag Descriptions
-****"""
-
-FLAG_BLOCK_SUFFIX = """****"""
-
-def orgLevelKey(name):
- # Sort key for organization levels of features / extensions
- # From highest to lowest, core versions, KHR extensions, EXT extensions,
- # and vendor extensions
-
- prefixes = (
- 'VK_VERSION_',
- 'VKSC_VERSION_',
- 'VK_KHR_',
- 'VK_EXT_')
-
- i = 0
- for prefix in prefixes:
- if name.startswith(prefix):
- return i
- i += 1
-
- # Everything else (e.g. vendor extensions) is least important
- return i
-
-class DocGeneratorOptions(GeneratorOptions):
- """DocGeneratorOptions - subclass of GeneratorOptions for
- generating declaration snippets for the spec.
-
- Shares many members with CGeneratorOptions, since
- both are writing C-style declarations."""
-
- def __init__(self,
- prefixText="",
- apicall='',
- apientry='',
- apientryp='',
- indentFuncProto=True,
- indentFuncPointer=False,
- alignFuncParam=0,
- secondaryInclude=False,
- expandEnumerants=True,
- extEnumerantAdditions=False,
- extEnumerantFormatString=" (Added by the {} extension)",
- **kwargs):
- """Constructor.
-
- Since this generator outputs multiple files at once,
- the filename is just a "stamp" to indicate last generation time.
-
- Shares many parameters/members with CGeneratorOptions, since
- both are writing C-style declarations:
-
- - prefixText - list of strings to prefix generated header with
- (usually a copyright statement + calling convention macros).
- - apicall - string to use for the function declaration prefix,
- such as APICALL on Windows.
- - apientry - string to use for the calling convention macro,
- in typedefs, such as APIENTRY.
- - apientryp - string to use for the calling convention macro
- in function pointer typedefs, such as APIENTRYP.
- - indentFuncProto - True if prototype declarations should put each
- parameter on a separate line
- - indentFuncPointer - True if typedefed function pointers should put each
- parameter on a separate line
- - alignFuncParam - if nonzero and parameters are being put on a
- separate line, align parameter names at the specified column
-
- Additional parameters/members:
-
- - expandEnumerants - if True, add BEGIN/END_RANGE macros in enumerated
- type declarations
- - secondaryInclude - if True, add secondary (no xref anchor) versions
- of generated files
- - extEnumerantAdditions - if True, include enumerants added by extensions
- in comment tables for core enumeration types.
- - extEnumerantFormatString - A format string for any additional message for
- enumerants from extensions if extEnumerantAdditions is True. The correctly-
- marked-up extension name will be passed.
- """
- GeneratorOptions.__init__(self, **kwargs)
- self.prefixText = prefixText
- """list of strings to prefix generated header with (usually a copyright statement + calling convention macros)."""
-
- self.apicall = apicall
- """string to use for the function declaration prefix, such as APICALL on Windows."""
-
- self.apientry = apientry
- """string to use for the calling convention macro, in typedefs, such as APIENTRY."""
-
- self.apientryp = apientryp
- """string to use for the calling convention macro in function pointer typedefs, such as APIENTRYP."""
-
- self.indentFuncProto = indentFuncProto
- """True if prototype declarations should put each parameter on a separate line"""
-
- self.indentFuncPointer = indentFuncPointer
- """True if typedefed function pointers should put each parameter on a separate line"""
-
- self.alignFuncParam = alignFuncParam
- """if nonzero and parameters are being put on a separate line, align parameter names at the specified column"""
-
- self.secondaryInclude = secondaryInclude
- """if True, add secondary (no xref anchor) versions of generated files"""
-
- self.expandEnumerants = expandEnumerants
- """if True, add BEGIN/END_RANGE macros in enumerated type declarations"""
-
- self.extEnumerantAdditions = extEnumerantAdditions
- """if True, include enumerants added by extensions in comment tables for core enumeration types."""
-
- self.extEnumerantFormatString = extEnumerantFormatString
- """A format string for any additional message for
- enumerants from extensions if extEnumerantAdditions is True. The correctly-
- marked-up extension name will be passed."""
-
-
-class DocOutputGenerator(OutputGenerator):
- """DocOutputGenerator - subclass of OutputGenerator.
-
- Generates AsciiDoc includes with C-language API interfaces, for reference
- pages and the corresponding specification. Similar to COutputGenerator,
- but each interface is written into a different file as determined by the
- options, only actual C types are emitted, and none of the boilerplate
- preprocessor code is emitted."""
-
- def __init__(self, *args, **kwargs):
- super().__init__(*args, **kwargs)
- # Keep track of all extension numbers
- self.extension_numbers = set()
-
- def beginFile(self, genOpts):
- OutputGenerator.beginFile(self, genOpts)
-
- # This should be a separate conventions property rather than an
- # inferred type name pattern for different APIs.
- self.result_type = genOpts.conventions.type_prefix + "Result"
-
- def endFile(self):
- OutputGenerator.endFile(self)
-
- def beginFeature(self, interface, emit):
- # Start processing in superclass
- OutputGenerator.beginFeature(self, interface, emit)
-
- # Decide if we're in a core <feature> or an <extension>
- self.in_core = (interface.tag == 'feature')
-
- # Verify that each <extension> has a unique number during doc
- # generation
- # TODO move this to consistency_tools
- if not self.in_core:
- 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
- OutputGenerator.endFeature(self)
-
- def genRequirements(self, name, mustBeFound = True):
- """Generate text showing what core versions and extensions introduce
- an API. This relies on the map in api.py, which may be loaded at
- runtime into self.apidict. If not present, no message is
- generated.
-
- - name - name of the API
- - mustBeFound - If True, when requirements for 'name' cannot be
- determined, a warning comment is generated.
- """
-
- if self.apidict:
- if name in self.apidict.requiredBy:
- # It's possible to get both 'A with B' and 'B with A' for
- # the same API.
- # To simplify this, sort the (base,dependency) requirements
- # and put them in a set to ensure they're unique.
- features = set()
- for (base,dependency) in self.apidict.requiredBy[name]:
- if dependency is not None:
- l = sorted(
- sorted((base, dependency)),
- key=orgLevelKey)
- features.add(' with '.join(l))
- else:
- features.add(base)
- # Sort the overall dependencies so core versions are first
- provider = ', '.join(sorted(features, key=orgLevelKey))
- return f'// Provided by {provider}\n'
- else:
- if mustBeFound:
- self.logMsg('warn', 'genRequirements: API {} not found'.format(name))
- return ''
- else:
- # No API dictionary available, return nothing
- return ''
-
- def writeInclude(self, directory, basename, contents):
- """Generate an include file.
-
- - directory - subdirectory to put file in
- - basename - base name of the file
- - contents - contents of the file (Asciidoc boilerplate aside)"""
- # Create subdirectory, if needed
- directory = self.genOpts.directory + '/' + directory
- self.makeDir(directory)
-
- # Create file
- filename = directory + '/' + basename + '.txt'
- self.logMsg('diag', '# Generating include file:', filename)
- fp = open(filename, 'w', encoding='utf-8')
-
- # Asciidoc anchor
- write(self.genOpts.conventions.warning_comment, file=fp)
- write('[[{0},{0}]]'.format(basename), file=fp)
-
- if self.genOpts.conventions.generate_index_terms:
- index_terms = []
- if basename.startswith(self.conventions.command_prefix):
- index_terms.append(basename[2:] + " (function)")
- elif basename.startswith(self.conventions.type_prefix):
- index_terms.append(basename[2:] + " (type)")
- elif basename.startswith(self.conventions.api_prefix):
- index_terms.append(basename[len(self.conventions.api_prefix):] + " (define)")
- index_terms.append(basename)
- write('indexterm:[{}]'.format(','.join(index_terms)), file=fp)
-
- write('[source,c++]', file=fp)
- write('----', file=fp)
- write(contents, file=fp)
- write('----', file=fp)
- fp.close()
-
- if self.genOpts.secondaryInclude:
- # Create secondary no cross-reference include file
- filename = directory + '/' + basename + '.no-xref.txt'
- self.logMsg('diag', '# Generating include file:', filename)
- fp = open(filename, 'w', encoding='utf-8')
-
- # Asciidoc anchor
- write(self.genOpts.conventions.warning_comment, file=fp)
- write('// Include this no-xref version without cross reference id for multiple includes of same file', file=fp)
- write('[source,c++]', file=fp)
- write('----', file=fp)
- write(contents, file=fp)
- write('----', file=fp)
- fp.close()
-
- def writeTable(self, basename, values):
- """Output a table of enumerants."""
- directory = Path(self.genOpts.directory) / 'enums'
- self.makeDir(str(directory))
-
- filename = str(directory / '{}.comments.txt'.format(basename))
- self.logMsg('diag', '# Generating include file:', filename)
-
- with open(filename, 'w', encoding='utf-8') as fp:
- write(self.conventions.warning_comment, file=fp)
- write(ENUM_TABLE_PREFIX, file=fp)
-
- for data in values:
- write("|ename:{}".format(data['name']), file=fp)
- write("|{}".format(data['comment']), file=fp)
-
- write(ENUM_TABLE_SUFFIX, file=fp)
-
- def writeFlagBox(self, basename, values):
- """Output a box of flag bit comments."""
- directory = Path(self.genOpts.directory) / 'enums'
- self.makeDir(str(directory))
-
- filename = str(directory / '{}.comments.txt'.format(basename))
- self.logMsg('diag', '# Generating include file:', filename)
-
- with open(filename, 'w', encoding='utf-8') as fp:
- write(self.conventions.warning_comment, file=fp)
- write(FLAG_BLOCK_PREFIX, file=fp)
-
- for data in values:
- write("* ename:{} -- {}".format(data['name'],
- data['comment']),
- file=fp)
-
- write(FLAG_BLOCK_SUFFIX, file=fp)
-
- def genType(self, typeinfo, name, alias):
- """Generate type."""
- OutputGenerator.genType(self, typeinfo, name, alias)
- typeElem = typeinfo.elem
- # If the type is a struct type, traverse the embedded <member> tags
- # generating a structure. Otherwise, emit the tag text.
- category = typeElem.get('category')
-
- if category in ('struct', 'union'):
- # If the type is a struct type, generate it using the
- # special-purpose generator.
- self.genStruct(typeinfo, name, alias)
- elif category not in OutputGenerator.categoryToPath:
- # If there's no path, don't write output
- self.logMsg('diag', 'NOT writing include for {} category {}'.format(
- name, category))
- else:
- body = self.genRequirements(name)
- if alias:
- # If the type is an alias, just emit a typedef declaration
- body += 'typedef ' + alias + ' ' + name + ';\n'
- self.writeInclude(OutputGenerator.categoryToPath[category],
- name, body)
- else:
- # Replace <apientry /> tags with an APIENTRY-style string
- # (from self.genOpts). Copy other text through unchanged.
- # If the resulting text is an empty string, don't emit it.
- body += noneStr(typeElem.text)
- for elem in typeElem:
- if elem.tag == 'apientry':
- body += self.genOpts.apientry + noneStr(elem.tail)
- else:
- body += noneStr(elem.text) + noneStr(elem.tail)
-
- if body:
- self.writeInclude(OutputGenerator.categoryToPath[category],
- name, body + '\n')
- else:
- self.logMsg('diag', 'NOT writing empty include file for type', name)
-
- def genStruct(self, typeinfo, typeName, alias):
- """Generate struct."""
- OutputGenerator.genStruct(self, typeinfo, typeName, alias)
-
- typeElem = typeinfo.elem
-
- body = self.genRequirements(typeName)
- if alias:
- body += 'typedef ' + alias + ' ' + typeName + ';\n'
- else:
- body += 'typedef ' + typeElem.get('category') + ' ' + typeName + ' {\n'
-
- targetLen = self.getMaxCParamTypeLength(typeinfo)
- for member in typeElem.findall('.//member'):
- body += self.makeCParamDecl(member, targetLen + 4)
- body += ';\n'
- body += '} ' + typeName + ';'
-
- self.writeInclude('structs', typeName, body)
-
- def genEnumTable(self, groupinfo, groupName):
- """Generate tables of enumerant values and short descriptions from
- the XML."""
-
- values = []
- got_comment = False
- missing_comments = []
- for elem in groupinfo.elem.findall('enum'):
- if not elem.get('required'):
- continue
- name = elem.get('name')
-
- data = {
- 'name': name,
- }
-
- (numVal, strVal) = self.enumToValue(elem, True)
- data['value'] = numVal
-
- extname = elem.get('extname')
-
- added_by_extension_to_core = (extname is not None and self.in_core)
- if added_by_extension_to_core and not self.genOpts.extEnumerantAdditions:
- # We're skipping such values
- continue
-
- comment = elem.get('comment')
- if comment:
- got_comment = True
- elif name.endswith('_UNKNOWN') and numVal == 0:
- # This is a placeholder for 0-initialization to be clearly invalid.
- # Just skip this silently
- continue
- else:
- # Skip but record this in case it's an odd-one-out missing a comment.
- missing_comments.append(name)
- continue
-
- if added_by_extension_to_core and self.genOpts.extEnumerantFormatString:
- # Add a note to the comment
- comment += self.genOpts.extEnumerantFormatString.format(
- self.conventions.formatExtension(extname))
-
- data['comment'] = comment
- values.append(data)
-
- if got_comment:
- # If any had a comment, output it.
-
- if missing_comments:
- self.logMsg('warn', 'The following values for', groupName,
- 'were omitted from the table due to missing comment attributes:',
- ', '.join(missing_comments))
-
- group_type = groupinfo.elem.get('type')
- if groupName == self.result_type:
- # Split this into success and failure
- self.writeTable(groupName + '.success',
- (data for data in values
- if data['value'] >= 0))
- self.writeTable(groupName + '.error',
- (data for data in values
- if data['value'] < 0))
- elif group_type == 'bitmask':
- self.writeFlagBox(groupName, values)
- elif group_type == 'enum':
- self.writeTable(groupName, values)
- else:
- raise RuntimeError("Unrecognized enums type: " + str(group_type))
-
- def genGroup(self, groupinfo, groupName, alias):
- """Generate group (e.g. C "enum" type)."""
- OutputGenerator.genGroup(self, groupinfo, groupName, alias)
-
- body = self.genRequirements(groupName)
- if alias:
- # If the group name is aliased, just emit a typedef declaration
- # for the alias.
- body += 'typedef ' + alias + ' ' + groupName + ';\n'
- else:
- expand = self.genOpts.expandEnumerants
- (_, enumbody) = self.buildEnumCDecl(expand, groupinfo, groupName)
- body += enumbody
- if self.genOpts.conventions.generate_enum_table:
- self.genEnumTable(groupinfo, groupName)
-
- self.writeInclude('enums', groupName, body)
-
- def genEnum(self, enuminfo, name, alias):
- """Generate the C declaration for a constant (a single <enum> value)."""
-
- OutputGenerator.genEnum(self, enuminfo, name, alias)
-
- body = self.buildConstantCDecl(enuminfo, name, alias)
-
- self.writeInclude('enums', name, body)
-
- def genCmd(self, cmdinfo, name, alias):
- "Generate command."
- OutputGenerator.genCmd(self, cmdinfo, name, alias)
-
- return_type = cmdinfo.elem.find('proto/type')
- if self.genOpts.conventions.requires_error_validation(return_type):
- # This command returns an API result code, so check that it
- # returns at least the required errors.
- # TODO move this to consistency_tools
- required_errors = set(self.genOpts.conventions.required_errors)
- errorcodes = cmdinfo.elem.get('errorcodes').split(',')
- if not required_errors.issubset(set(errorcodes)):
- self.logMsg('error', 'Missing required error code for command: ', name, '\n')
- exit(1)
-
- body = self.genRequirements(name)
- decls = self.makeCDecls(cmdinfo.elem)
- body += decls[0]
- self.writeInclude('protos', name, body)
diff --git a/codegen/vulkan/scripts/extensionmetadocgenerator.py b/codegen/vulkan/scripts/extensionmetadocgenerator.py
deleted file mode 100644
index 07d2c947..00000000
--- a/codegen/vulkan/scripts/extensionmetadocgenerator.py
+++ /dev/null
@@ -1,665 +0,0 @@
-#!/usr/bin/python3 -i
-#
-# Copyright 2013-2021 The Khronos Group Inc.
-#
-# SPDX-License-Identifier: Apache-2.0
-
-import os
-import re
-import sys
-from functools import total_ordering
-from generator import GeneratorOptions, OutputGenerator, regSortFeatures, write
-
-class ExtensionMetaDocGeneratorOptions(GeneratorOptions):
- """ExtensionMetaDocGeneratorOptions - subclass of GeneratorOptions.
-
- Represents options during extension metainformation generation for Asciidoc"""
- def __init__(self, *args, **kwargs):
- super().__init__(*args, **kwargs)
-
-
-EXT_NAME_DECOMPOSE_RE = re.compile(r'[A-Z]+_(?P<tag>[A-Z]+)_(?P<name>[\w_]+)')
-
-
-@total_ordering
-class Extension:
- def __init__(self,
- generator, # needed for logging and API conventions
- filename,
- name,
- number,
- ext_type,
- requires,
- requiresCore,
- contact,
- promotedTo,
- deprecatedBy,
- obsoletedBy,
- provisional,
- revision,
- specialuse ):
- self.generator = generator
- self.conventions = generator.genOpts.conventions
- self.filename = filename
- self.name = name
- self.number = number
- self.ext_type = ext_type
- self.requires = requires
- self.requiresCore = requiresCore
- self.contact = contact
- self.promotedTo = promotedTo
- self.deprecatedBy = deprecatedBy
- self.obsoletedBy = obsoletedBy
- self.provisional = provisional
- self.revision = revision
- self.specialuse = specialuse
-
- self.deprecationType = None
- self.supercedingAPIVersion = None
- self.supercedingExtension = None
-
- if self.promotedTo is not None and self.deprecatedBy is not None and self.obsoletedBy is not None:
- self.generator.logMsg('warn', 'All \'promotedto\', \'deprecatedby\' and \'obsoletedby\' attributes used on extension ' + self.name + '! Ignoring \'promotedto\' and \'deprecatedby\'.')
- elif self.promotedTo is not None and self.deprecatedBy is not None:
- self.generator.logMsg('warn', 'Both \'promotedto\' and \'deprecatedby\' attributes used on extension ' + self.name + '! Ignoring \'deprecatedby\'.')
- elif self.promotedTo is not None and self.obsoletedBy is not None:
- self.generator.logMsg('warn', 'Both \'promotedto\' and \'obsoletedby\' attributes used on extension ' + self.name + '! Ignoring \'promotedto\'.')
- elif self.deprecatedBy is not None and self.obsoletedBy is not None:
- self.generator.logMsg('warn', 'Both \'deprecatedby\' and \'obsoletedby\' attributes used on extension ' + self.name + '! Ignoring \'deprecatedby\'.')
-
- supercededBy = None
- if self.promotedTo is not None:
- self.deprecationType = 'promotion'
- supercededBy = promotedTo
- elif self.deprecatedBy is not None:
- self.deprecationType = 'deprecation'
- supercededBy = deprecatedBy
- elif self.obsoletedBy is not None:
- self.deprecationType = 'obsoletion'
- supercededBy = obsoletedBy
-
- if supercededBy is not None:
- if supercededBy == '' and not self.deprecationType == 'promotion':
- pass # supercedingAPIVersion, supercedingExtension is None
- elif supercededBy.startswith(self.conventions.api_version_prefix):
- self.supercedingAPIVersion = supercededBy
- elif supercededBy.startswith(self.conventions.api_prefix):
- self.supercedingExtension = supercededBy
- else:
- self.generator.logMsg('error', 'Unrecognized ' + self.deprecationType + ' attribute value \'' + supercededBy + '\'!')
-
- match = EXT_NAME_DECOMPOSE_RE.match(self.name)
- self.vendor = match.group('tag')
- self.bare_name = match.group('name')
-
- def __str__(self):
- return self.name
- def __eq__(self, other):
- return self.name == other.name
- def __ne__(self, other):
- return self.name != other.name
-
- def __lt__(self, other):
- self_is_KHR = self.name.startswith(self.conventions.KHR_prefix)
- self_is_EXT = self.name.startswith(self.conventions.EXT_prefix)
- other_is_KHR = other.name.startswith(self.conventions.KHR_prefix)
- other_is_EXT = other.name.startswith(self.conventions.EXT_prefix)
-
- swap = False
- if self_is_KHR and not other_is_KHR:
- return not swap
- if other_is_KHR and not self_is_KHR:
- return swap
- if self_is_EXT and not other_is_EXT:
- return not swap
- if other_is_EXT and not self_is_EXT:
- return swap
-
- return self.name < other.name
-
- def typeToStr(self):
- if self.ext_type == 'instance':
- return 'Instance extension'
- if self.ext_type == 'device':
- return 'Device extension'
-
- if self.ext_type is not None:
- self.generator.logMsg('warn', 'The type attribute of ' + self.name + ' extension is neither \'instance\' nor \'device\'. That is invalid (at the time this script was written).')
- else: # should be unreachable
- self.generator.logMsg('error', 'Logic error in typeToStr(): Missing type attribute!')
- return None
-
- def specLink(self, xrefName, xrefText, isRefpage = False):
- """Generate a string containing a link to a specification anchor in
- asciidoctor markup form.
-
- - xrefName - anchor name in the spec
- - xrefText - text to show for the link, or None
- - isRefpage = True if generating a refpage include, False if
- generating a specification extension appendix include"""
-
- if isRefpage:
- # Always link into API spec
- specURL = self.conventions.specURL('api')
- return 'link:{}#{}[{}^]'.format(specURL, xrefName, xrefText)
- else:
- return '<<' + xrefName + ', ' + xrefText + '>>'
-
- def conditionalLinkCoreAPI(self, apiVersion, linkSuffix, isRefpage):
- versionMatch = re.match(self.conventions.api_version_prefix + r'(\d+)_(\d+)', apiVersion)
- major = versionMatch.group(1)
- minor = versionMatch.group(2)
-
- dottedVersion = major + '.' + minor
-
- xrefName = 'versions-' + dottedVersion + linkSuffix
- xrefText = self.conventions.api_name() + ' ' + dottedVersion
-
- doc = 'ifdef::' + apiVersion + '[]\n'
- doc += ' ' + self.specLink(xrefName, xrefText, isRefpage) + '\n'
- doc += 'endif::' + apiVersion + '[]\n'
- doc += 'ifndef::' + apiVersion + '[]\n'
- doc += ' ' + self.conventions.api_name() + ' ' + dottedVersion + '\n'
- doc += 'endif::' + apiVersion + '[]\n'
-
- return doc
-
- def conditionalLinkExt(self, extName, indent = ' '):
- doc = 'ifdef::' + extName + '[]\n'
- doc += indent + self.conventions.formatExtension(extName) + '\n'
- doc += 'endif::' + extName + '[]\n'
- doc += 'ifndef::' + extName + '[]\n'
- doc += indent + '`' + extName + '`\n'
- doc += 'endif::' + extName + '[]\n'
-
- return doc
-
- def resolveDeprecationChain(self, extensionsList, succeededBy, isRefpage, file):
- ext = next(x for x in extensionsList if x.name == succeededBy)
-
- if ext.deprecationType:
- if ext.deprecationType == 'promotion':
- if ext.supercedingAPIVersion:
- write(' ** Which in turn was _promoted_ to\n' + ext.conditionalLinkCoreAPI(ext.supercedingAPIVersion, '-promotions', isRefpage), file=file)
- else: # ext.supercedingExtension
- write(' ** Which in turn was _promoted_ to extension\n' + ext.conditionalLinkExt(ext.supercedingExtension), file=file)
- ext.resolveDeprecationChain(extensionsList, ext.supercedingExtension, file)
- elif ext.deprecationType == 'deprecation':
- if ext.supercedingAPIVersion:
- write(' ** Which in turn was _deprecated_ by\n' + ext.conditionalLinkCoreAPI(ext.supercedingAPIVersion, '-new-feature', isRefpage), file=file)
- elif ext.supercedingExtension:
- write(' ** Which in turn was _deprecated_ by\n' + ext.conditionalLinkExt(ext.supercedingExtension) + ' extension', file=file)
- ext.resolveDeprecationChain(extensionsList, ext.supercedingExtension, file)
- else:
- write(' ** Which in turn was _deprecated_ without replacement', file=file)
- elif ext.deprecationType == 'obsoletion':
- if ext.supercedingAPIVersion:
- write(' ** Which in turn was _obsoleted_ by\n' + ext.conditionalLinkCoreAPI(ext.supercedingAPIVersion, '-new-feature', isRefpage), file=file)
- elif ext.supercedingExtension:
- write(' ** Which in turn was _obsoleted_ by\n' + ext.conditionalLinkExt(ext.supercedingExtension) + ' extension', file=file)
- ext.resolveDeprecationChain(extensionsList, ext.supercedingExtension, file)
- else:
- write(' ** Which in turn was _obsoleted_ without replacement', file=file)
- else: # should be unreachable
- self.generator.logMsg('error', 'Logic error in resolveDeprecationChain(): deprecationType is neither \'promotion\', \'deprecation\' nor \'obsoletion\'!')
-
-
- def writeTag(self, tag, value, isRefpage, fp):
- """Write a tag and (if non-None) a tag value to a file.
-
- - tag - string tag name
- - value - tag value, or None
- - isRefpage - controls style in which the tag is marked up
- - fp - open file pointer to write to"""
-
- if isRefpage:
- # Use subsection headers for the tag name
- tagPrefix = '== '
- tagSuffix = ''
- else:
- # Use an bolded item list for the tag name
- tagPrefix = '*'
- tagSuffix = '*::'
-
- write(tagPrefix + tag + tagSuffix, file=fp)
- if value is not None:
- write(value, file=fp)
-
- if isRefpage:
- write('', file=fp)
-
- def makeMetafile(self, extensionsList, isRefpage = False):
- """Generate a file containing extension metainformation in
- asciidoctor markup form.
-
- - extensionsList - list of extensions spec is being generated against
- - isRefpage - True if generating a refpage include, False if
- generating a specification extension appendix include"""
-
- if isRefpage:
- filename = self.filename.replace('meta/', 'meta/refpage.')
- else:
- filename = self.filename
-
- fp = self.generator.newFile(filename)
-
- if not isRefpage:
- write('[[' + self.name + ']]', file=fp)
- write('=== ' + self.name, file=fp)
- write('', file=fp)
-
- self.writeTag('Name String', '`' + self.name + '`', isRefpage, fp)
- self.writeTag('Extension Type', self.typeToStr(), isRefpage, fp)
-
- self.writeTag('Registered Extension Number', self.number, isRefpage, fp)
- self.writeTag('Revision', self.revision, isRefpage, fp)
-
- # Only API extension dependencies are coded in XML, others are explicit
- self.writeTag('Extension and Version Dependencies', None, isRefpage, fp)
-
- write(' * Requires ' + self.conventions.api_name() + ' ' + self.requiresCore, file=fp)
- if self.requires:
- for dep in self.requires.split(','):
- write(' * Requires', self.conventions.formatExtension(dep),
- file=fp)
- if self.provisional == 'true':
- write(' * *This is a _provisional_ extension and must: be used with caution.', file=fp)
- write(' See the ' +
- self.specLink(xrefName = 'boilerplate-provisional-header',
- xrefText = 'description',
- isRefpage = isRefpage) +
- ' of provisional header files for enablement and stability details.*', file=fp)
- write('', file=fp)
-
- if self.deprecationType:
- self.writeTag('Deprecation state', None, isRefpage, fp)
-
- if self.deprecationType == 'promotion':
- if self.supercedingAPIVersion:
- write(' * _Promoted_ to\n' + self.conditionalLinkCoreAPI(self.supercedingAPIVersion, '-promotions', isRefpage), file=fp)
- else: # ext.supercedingExtension
- write(' * _Promoted_ to\n' + self.conditionalLinkExt(self.supercedingExtension) + ' extension', file=fp)
- self.resolveDeprecationChain(extensionsList, self.supercedingExtension, isRefpage, fp)
- elif self.deprecationType == 'deprecation':
- if self.supercedingAPIVersion:
- write(' * _Deprecated_ by\n' + self.conditionalLinkCoreAPI(self.supercedingAPIVersion, '-new-features', isRefpage), file=fp)
- elif self.supercedingExtension:
- write(' * _Deprecated_ by\n' + self.conditionalLinkExt(self.supercedingExtension) + ' extension' , file=fp)
- self.resolveDeprecationChain(extensionsList, self.supercedingExtension, isRefpage, fp)
- else:
- write(' * _Deprecated_ without replacement' , file=fp)
- elif self.deprecationType == 'obsoletion':
- if self.supercedingAPIVersion:
- write(' * _Obsoleted_ by\n' + self.conditionalLinkCoreAPI(self.supercedingAPIVersion, '-new-features', isRefpage), file=fp)
- elif self.supercedingExtension:
- write(' * _Obsoleted_ by\n' + self.conditionalLinkExt(self.supercedingExtension) + ' extension' , file=fp)
- self.resolveDeprecationChain(extensionsList, self.supercedingExtension, isRefpage, fp)
- else:
- # TODO: Does not make sense to retroactively ban use of extensions from 1.0.
- # Needs some tweaks to the semantics and this message, when such extension(s) occur.
- write(' * _Obsoleted_ without replacement' , file=fp)
- else: # should be unreachable
- self.generator.logMsg('error', 'Logic error in makeMetafile(): deprecationType is neither \'promotion\', \'deprecation\' nor \'obsoletion\'!')
- write('', file=fp)
-
- if self.specialuse is not None:
- specialuses = self.specialuse.split(',')
- if len(specialuses) > 1:
- header = 'Special Uses'
- else:
- header = 'Special Use'
- self.writeTag(header, None, isRefpage, fp)
-
- for use in specialuses:
- # Each specialuse attribute value expands an asciidoctor
- # attribute of the same name, instead of using the shorter,
- # and harder to understand attribute
- write('* {}'.format(
- self.specLink(
- xrefName = self.conventions.special_use_section_anchor,
- xrefText = '{' + use + '}',
- isRefpage = isRefpage)), file=fp)
- write('', file=fp)
-
- if self.conventions.write_contacts:
- self.writeTag('Contact', None, isRefpage, fp)
-
- contacts = self.contact.split(',')
- for contact in contacts:
- contactWords = contact.strip().split()
- name = ' '.join(contactWords[:-1])
- handle = contactWords[-1]
- if handle.startswith('gitlab:'):
- prettyHandle = 'icon:gitlab[alt=GitLab, role="red"]' + handle.replace('gitlab:@', '')
- elif handle.startswith('@'):
- issuePlaceholderText = '[' + self.name + '] ' + handle
- issuePlaceholderText += '%0A<<Here describe the issue or question you have about the ' + self.name + ' extension>>'
- trackerLink = 'link:++https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=' + issuePlaceholderText + '++'
- prettyHandle = trackerLink + '[icon:github[alt=GitHub,role="black"]' + handle[1:] + ',window=_blank,opts=nofollow]'
- else:
- prettyHandle = handle
-
- write(' * ' + name + ' ' + prettyHandle, file=fp)
- write('', file=fp)
-
- # Check if a proposal document for this extension exists in the
- # current repository, and link to the same document (parameterized
- # by a URL prefix attribute) if it does.
- # The assumption is that a proposal document for an extension
- # VK_name will be located in 'proposals/VK_name.asciidoc' relative
- # to the repository root, and that this script will be invoked from
- # the repository root.
- path = 'proposals/{}.asciidoc'.format(self.name)
- if os.path.exists(path) and os.access(path, os.R_OK):
- self.writeTag('Extension Proposal',
- 'link:{{specRepositoryURL}}/{}[{}]'.format(path, self.name), isRefpage, fp)
-
- # If this is metadata to be included in a refpage, adjust the
- # leveloffset to account for the relative structure of the extension
- # appendices vs. refpages.
- if isRefpage:
- write(':leveloffset: -1', file=fp)
-
- fp.close()
-
-class ExtensionMetaDocOutputGenerator(OutputGenerator):
- """ExtensionMetaDocOutputGenerator - subclass of OutputGenerator.
-
- Generates AsciiDoc includes with metainformation for the API extension
- appendices. The fields used from <extension> tags in the API XML are:
-
- - name extension name string
- - number extension number (optional)
- - contact name and GitHub login or email address (optional)
- - type 'instance' | 'device' (optional)
- - requires list of comma-separated required API extensions (optional)
- - requiresCore required core version of API (optional)
- - promotedTo extension or API version it was promoted to
- - deprecatedBy extension or API version which deprecated this extension,
- or empty string if deprecated without replacement
- - obsoletedBy extension or API version which obsoleted this extension,
- or empty string if obsoleted without replacement
- - provisional 'true' if this extension is released provisionally"""
-
- def __init__(self, *args, **kwargs):
- super().__init__(*args, **kwargs)
- self.extensions = []
- # List of strings containing all vendor tags
- self.vendor_tags = []
- self.file_suffix = ''
-
- def newFile(self, filename):
- self.logMsg('diag', '# Generating include file:', filename)
- fp = open(filename, 'w', encoding='utf-8')
- write(self.genOpts.conventions.warning_comment, file=fp)
- return fp
-
- def beginFile(self, genOpts):
- OutputGenerator.beginFile(self, genOpts)
-
- self.directory = self.genOpts.directory
- self.file_suffix = self.genOpts.conventions.file_suffix
-
- # Iterate over all 'tag' Elements and add the names of all the valid vendor
- # tags to the list
- root = self.registry.tree.getroot()
- for tag in root.findall('tags/tag'):
- self.vendor_tags.append(tag.get('name'))
-
- # Create subdirectory, if needed
- self.makeDir(self.directory)
-
- def conditionalExt(self, extName, content, ifdef = None, condition = None):
- doc = ''
-
- innerdoc = 'ifdef::' + extName + '[]\n'
- innerdoc += content + '\n'
- innerdoc += 'endif::' + extName + '[]\n'
-
- if ifdef:
- if ifdef == 'ifndef':
- if condition:
- doc += 'ifndef::' + condition + '[]\n'
- doc += innerdoc
- doc += 'endif::' + condition + '[]\n'
- else: # no condition is as if condition is defined; "nothing" is always defined :p
- pass # so no output
- elif ifdef == 'ifdef':
- if condition:
- doc += 'ifdef::' + condition + '+' + extName + '[]\n'
- doc += content + '\n' # does not include innerdoc; the ifdef was merged with the one above
- doc += 'endif::' + condition + '+' + extName + '[]\n'
- else: # no condition is as if condition is defined; "nothing" is always defined :p
- doc += innerdoc
- else: # should be unreachable
- raise RuntimeError('Should be unreachable: ifdef is neither \'ifdef \' nor \'ifndef\'!')
- else:
- doc += innerdoc
-
- return doc
-
- def makeExtensionInclude(self, ext):
- return self.conventions.extension_include_string(ext)
-
- def endFile(self):
- self.extensions.sort()
-
- # Generate metadoc extension files, in refpage and non-refpage form
- for ext in self.extensions:
- ext.makeMetafile(self.extensions, isRefpage = False)
- if self.conventions.write_refpage_include:
- ext.makeMetafile(self.extensions, isRefpage = True)
-
- # Generate list of promoted extensions
- promotedExtensions = {}
- for ext in self.extensions:
- if ext.deprecationType == 'promotion' and ext.supercedingAPIVersion:
- promotedExtensions.setdefault(ext.supercedingAPIVersion, []).append(ext)
-
- for coreVersion, extensions in promotedExtensions.items():
- promoted_extensions_fp = self.newFile(self.directory + '/promoted_extensions_' + coreVersion + self.file_suffix)
-
- for ext in extensions:
- indent = ''
- write(' * {blank}\n+\n' + ext.conditionalLinkExt(ext.name, indent), file=promoted_extensions_fp)
-
- promoted_extensions_fp.close()
-
- # Re-sort to match earlier behavior
- # TODO: Remove this extra sort when re-arranging section order OK.
-
- def makeSortKey(ext):
- name = ext.name.lower()
- prefixes = self.conventions.extension_index_prefixes
- for i, prefix in enumerate(prefixes):
- if ext.name.startswith(prefix):
- return (i, name)
- return (len(prefixes), name)
-
- self.extensions.sort(key=makeSortKey)
-
- # Generate include directives for the extensions appendix, grouping
- # extensions by status (current, deprecated, provisional, etc.)
- with self.newFile(self.directory + '/current_extensions_appendix' + self.file_suffix) as current_extensions_appendix_fp, \
- self.newFile(self.directory + '/deprecated_extensions_appendix' + self.file_suffix) as deprecated_extensions_appendix_fp, \
- self.newFile(self.directory + '/current_extension_appendices' + self.file_suffix) as current_extension_appendices_fp, \
- self.newFile(self.directory + '/current_extension_appendices_toc' + self.file_suffix) as current_extension_appendices_toc_fp, \
- self.newFile(self.directory + '/deprecated_extension_appendices' + self.file_suffix) as deprecated_extension_appendices_fp, \
- self.newFile(self.directory + '/deprecated_extension_appendices_toc' + self.file_suffix) as deprecated_extension_appendices_toc_fp, \
- self.newFile(self.directory + '/deprecated_extensions_guard_macro' + self.file_suffix) as deprecated_extensions_guard_macro_fp, \
- self.newFile(self.directory + '/provisional_extensions_appendix' + self.file_suffix) as provisional_extensions_appendix_fp, \
- self.newFile(self.directory + '/provisional_extension_appendices' + self.file_suffix) as provisional_extension_appendices_fp, \
- self.newFile(self.directory + '/provisional_extension_appendices_toc' + self.file_suffix) as provisional_extension_appendices_toc_fp, \
- self.newFile(self.directory + '/provisional_extensions_guard_macro' + self.file_suffix) as provisional_extensions_guard_macro_fp:
-
- write('', file=current_extensions_appendix_fp)
- write('include::deprecated_extensions_guard_macro' + self.file_suffix + '[]', file=current_extensions_appendix_fp)
- write('', file=current_extensions_appendix_fp)
- write('ifndef::HAS_DEPRECATED_EXTENSIONS[]', file=current_extensions_appendix_fp)
- write('[[extension-appendices-list]]', file=current_extensions_appendix_fp)
- write('== List of Extensions', file=current_extensions_appendix_fp)
- write('endif::HAS_DEPRECATED_EXTENSIONS[]', file=current_extensions_appendix_fp)
- write('ifdef::HAS_DEPRECATED_EXTENSIONS[]', file=current_extensions_appendix_fp)
- write('[[extension-appendices-list]]', file=current_extensions_appendix_fp)
- write('== List of Current Extensions', file=current_extensions_appendix_fp)
- write('endif::HAS_DEPRECATED_EXTENSIONS[]', file=current_extensions_appendix_fp)
- write('', file=current_extensions_appendix_fp)
- write('include::current_extension_appendices_toc' + self.file_suffix + '[]', file=current_extensions_appendix_fp)
- write('\n<<<\n', file=current_extensions_appendix_fp)
- write('include::current_extension_appendices' + self.file_suffix + '[]', file=current_extensions_appendix_fp)
-
- write('', file=deprecated_extensions_appendix_fp)
- write('include::deprecated_extensions_guard_macro' + self.file_suffix + '[]', file=deprecated_extensions_appendix_fp)
- write('', file=deprecated_extensions_appendix_fp)
- write('ifdef::HAS_DEPRECATED_EXTENSIONS[]', file=deprecated_extensions_appendix_fp)
- write('[[deprecated-extension-appendices-list]]', file=deprecated_extensions_appendix_fp)
- write('== List of Deprecated Extensions', file=deprecated_extensions_appendix_fp)
- write('include::deprecated_extension_appendices_toc' + self.file_suffix + '[]', file=deprecated_extensions_appendix_fp)
- write('\n<<<\n', file=deprecated_extensions_appendix_fp)
- write('include::deprecated_extension_appendices' + self.file_suffix + '[]', file=deprecated_extensions_appendix_fp)
- write('endif::HAS_DEPRECATED_EXTENSIONS[]', file=deprecated_extensions_appendix_fp)
-
- # add include guards to allow multiple includes
- write('ifndef::DEPRECATED_EXTENSIONS_GUARD_MACRO_INCLUDE_GUARD[]', file=deprecated_extensions_guard_macro_fp)
- write(':DEPRECATED_EXTENSIONS_GUARD_MACRO_INCLUDE_GUARD:\n', file=deprecated_extensions_guard_macro_fp)
- write('ifndef::PROVISIONAL_EXTENSIONS_GUARD_MACRO_INCLUDE_GUARD[]', file=provisional_extensions_guard_macro_fp)
- write(':PROVISIONAL_EXTENSIONS_GUARD_MACRO_INCLUDE_GUARD:\n', file=provisional_extensions_guard_macro_fp)
-
- write('', file=provisional_extensions_appendix_fp)
- write('include::provisional_extensions_guard_macro' + self.file_suffix + '[]', file=provisional_extensions_appendix_fp)
- write('', file=provisional_extensions_appendix_fp)
- write('ifdef::HAS_PROVISIONAL_EXTENSIONS[]', file=provisional_extensions_appendix_fp)
- write('[[provisional-extension-appendices-list]]', file=provisional_extensions_appendix_fp)
- write('== List of Provisional Extensions', file=provisional_extensions_appendix_fp)
- write('include::provisional_extension_appendices_toc' + self.file_suffix + '[]', file=provisional_extensions_appendix_fp)
- write('\n<<<\n', file=provisional_extensions_appendix_fp)
- write('include::provisional_extension_appendices' + self.file_suffix + '[]', file=provisional_extensions_appendix_fp)
- write('endif::HAS_PROVISIONAL_EXTENSIONS[]', file=provisional_extensions_appendix_fp)
-
- for ext in self.extensions:
- include = self.makeExtensionInclude(ext)
- link = ' * ' + self.conventions.formatExtension(ext.name)
- if ext.provisional == 'true':
- write(self.conditionalExt(ext.name, include), file=provisional_extension_appendices_fp)
- write(self.conditionalExt(ext.name, link), file=provisional_extension_appendices_toc_fp)
- write(self.conditionalExt(ext.name, ':HAS_PROVISIONAL_EXTENSIONS:'), file=provisional_extensions_guard_macro_fp)
- elif ext.deprecationType is None:
- write(self.conditionalExt(ext.name, include), file=current_extension_appendices_fp)
- write(self.conditionalExt(ext.name, link), file=current_extension_appendices_toc_fp)
- else:
- condition = ext.supercedingAPIVersion if ext.supercedingAPIVersion else ext.supercedingExtension # potentially None too
-
- write(self.conditionalExt(ext.name, include, 'ifndef', condition), file=current_extension_appendices_fp)
- write(self.conditionalExt(ext.name, link, 'ifndef', condition), file=current_extension_appendices_toc_fp)
-
- write(self.conditionalExt(ext.name, include, 'ifdef', condition), file=deprecated_extension_appendices_fp)
- write(self.conditionalExt(ext.name, link, 'ifdef', condition), file=deprecated_extension_appendices_toc_fp)
-
- write(self.conditionalExt(ext.name, ':HAS_DEPRECATED_EXTENSIONS:', 'ifdef', condition), file=deprecated_extensions_guard_macro_fp)
-
- write('endif::DEPRECATED_EXTENSIONS_GUARD_MACRO_INCLUDE_GUARD[]', file=deprecated_extensions_guard_macro_fp)
- write('endif::PROVISIONAL_EXTENSIONS_GUARD_MACRO_INCLUDE_GUARD[]', file=provisional_extensions_guard_macro_fp)
-
- OutputGenerator.endFile(self)
-
- def beginFeature(self, interface, emit):
- # Start processing in superclass
- OutputGenerator.beginFeature(self, interface, emit)
-
- if interface.tag != 'extension':
- self.logMsg('diag', 'beginFeature: ignoring non-extension feature', self.featureName)
- return
-
- # These attributes must exist
- name = self.featureName
- number = self.getAttrib(interface, 'number')
- ext_type = self.getAttrib(interface, 'type')
- revision = self.getSpecVersion(interface, name)
-
- # These attributes are optional
- OPTIONAL = False
- requires = self.getAttrib(interface, 'requires', OPTIONAL)
- requiresCore = self.getAttrib(interface, 'requiresCore', OPTIONAL, '1.0') # TODO update this line with update_version.py
- contact = self.getAttrib(interface, 'contact', OPTIONAL)
- promotedTo = self.getAttrib(interface, 'promotedto', OPTIONAL)
- deprecatedBy = self.getAttrib(interface, 'deprecatedby', OPTIONAL)
- obsoletedBy = self.getAttrib(interface, 'obsoletedby', OPTIONAL)
- provisional = self.getAttrib(interface, 'provisional', OPTIONAL, 'false')
- specialuse = self.getAttrib(interface, 'specialuse', OPTIONAL)
-
- filename = self.directory + '/' + name + self.file_suffix
-
- extdata = Extension(
- generator = self,
- filename = filename,
- name = name,
- number = number,
- ext_type = ext_type,
- requires = requires,
- requiresCore = requiresCore,
- contact = contact,
- promotedTo = promotedTo,
- deprecatedBy = deprecatedBy,
- obsoletedBy = obsoletedBy,
- provisional = provisional,
- revision = revision,
- specialuse = specialuse)
- self.extensions.append(extdata)
-
-
- def endFeature(self):
- # Finish processing in superclass
- OutputGenerator.endFeature(self)
-
- def getAttrib(self, elem, attribute, required=True, default=None):
- """Query an attribute from an element, or return a default value
-
- - elem - element to query
- - attribute - attribute name
- - required - whether attribute must exist
- - default - default value if attribute not present"""
- attrib = elem.get(attribute, default)
- if required and (attrib is None):
- name = elem.get('name', 'UNKNOWN')
- self.logMsg('error', 'While processing \'' + self.featureName + ', <' + elem.tag + '> \'' + name + '\' does not contain required attribute \'' + attribute + '\'')
- return attrib
-
- def numbersToWords(self, name):
- allowlist = ['WIN32', 'INT16', 'D3D1']
-
- # temporarily replace allowlist items
- for i, w in enumerate(allowlist):
- name = re.sub(w, '{' + str(i) + '}', name)
-
- name = re.sub(r'(?<=[A-Z])(\d+)(?![A-Z])', r'_\g<1>', name)
-
- # undo allowlist substitution
- for i, w in enumerate(allowlist):
- name = re.sub('\\{' + str(i) + '}', w, name)
-
- return name
-
- def getSpecVersion(self, elem, extname, default=None):
- """Determine the extension revision from the EXTENSION_NAME_SPEC_VERSION
- enumerant.
-
- - elem - <extension> element to query
- - extname - extension name from the <extension> 'name' attribute
- - default - default value if SPEC_VERSION token not present"""
- # The literal enumerant name to match
- versioningEnumName = self.numbersToWords(extname.upper()) + '_SPEC_VERSION'
-
- for enum in elem.findall('./require/enum'):
- enumName = self.getAttrib(enum, 'name')
- if enumName == versioningEnumName:
- return self.getAttrib(enum, 'value')
-
- #if not found:
- for enum in elem.findall('./require/enum'):
- enumName = self.getAttrib(enum, 'name')
- if enumName.find('SPEC_VERSION') != -1:
- self.logMsg('diag', 'Missing ' + versioningEnumName + '! Potential misnamed candidate ' + enumName + '.')
- return self.getAttrib(enum, 'value')
-
- self.logMsg('error', 'Missing ' + versioningEnumName + '!')
- return default
diff --git a/codegen/vulkan/scripts/genRef.py b/codegen/vulkan/scripts/genRef.py
deleted file mode 100755
index f108204d..00000000
--- a/codegen/vulkan/scripts/genRef.py
+++ /dev/null
@@ -1,1087 +0,0 @@
-#!/usr/bin/python3
-#
-# Copyright 2016-2021 The Khronos Group Inc.
-#
-# SPDX-License-Identifier: Apache-2.0
-
-# genRef.py - create API ref pages from spec source files
-#
-# Usage: genRef.py files
-
-import argparse
-import io
-import os
-import re
-import sys
-from collections import OrderedDict
-from reflib import (findRefs, fixupRefs, loadFile, logDiag, logWarn,
- printPageInfo, setLogFile)
-from reg import Registry
-from vkconventions import VulkanConventions as APIConventions
-
-
-# refpage 'type' attributes which are API entities and contain structured
-# content such as API includes, valid usage blocks, etc.
-refpage_api_types = (
- 'basetypes',
- 'consts',
- 'defines',
- 'enums',
- 'flags',
- 'funcpointers',
- 'handles',
- 'protos',
- 'structs',
-)
-
-# Other refpage types - SPIR-V builtins, API feature blocks, etc. - which do
-# not have structured content.
-refpage_other_types = (
- 'builtins',
- 'feature',
- 'freeform',
- 'spirv'
-)
-
-def makeExtensionInclude(name):
- """Return an include command, given an extension name."""
- return 'include::{}/refpage.{}{}[]'.format(
- conventions.specification_path,
- name,
- conventions.file_suffix)
-
-
-def makeAPIInclude(type, name):
- """Return an include command for a generated API interface
- - type - type of the API, e.g. 'flags', 'handles', etc
- - name - name of the API"""
-
- return 'include::{}/api/{}/{}{}\n'.format(
- conventions.refpage_generated_include_path,
- type, name, conventions.file_suffix)
-
-
-def isextension(name):
- """Return True if name is an API extension name (ends with an upper-case
- author ID).
-
- This assumes that author IDs are at least two characters."""
- return name[-2:].isalpha() and name[-2:].isupper()
-
-
-def printCopyrightSourceComments(fp):
- """Print Khronos CC-BY copyright notice on open file fp.
-
- Writes an asciidoc comment block, which copyrights the source
- file."""
- print('// Copyright 2014-2021 The Khronos Group, Inc.', file=fp)
- print('//', file=fp)
- # This works around constraints of the 'reuse' tool
- print('// SPDX' + '-License-Identifier: CC-BY-4.0', file=fp)
- print('', file=fp)
-
-
-def printFooter(fp, leveloffset=0):
- """Print footer material at the end of each refpage on open file fp.
-
- If generating separate refpages, adds the copyright.
- If generating the single combined refpage, just add a separator.
-
- - leveloffset - number of levels to bias section titles up or down."""
-
- # Generate the section header.
- # Default depth is 2.
- depth = max(0, leveloffset + 2)
- prefix = '=' * depth
-
- print('ifdef::doctype-manpage[]',
- f'{prefix} Copyright',
- '',
- 'include::{config}/copyright-ccby.txt[]',
- 'endif::doctype-manpage[]',
- '',
- 'ifndef::doctype-manpage[]',
- '<<<',
- 'endif::doctype-manpage[]',
- '',
- sep='\n', file=fp)
-
-
-def macroPrefix(name):
- """Add a spec asciidoc macro prefix to an API name, depending on its type
- (protos, structs, enums, etc.).
-
- If the name is not recognized, use the generic link macro 'reflink:'."""
- if name in api.basetypes:
- return 'basetype:' + name
- if name in api.defines:
- return 'dlink:' + name
- if name in api.enums:
- return 'elink:' + name
- if name in api.flags:
- return 'tlink:' + name
- if name in api.funcpointers:
- return 'tlink:' + name
- if name in api.handles:
- return 'slink:' + name
- if name in api.protos:
- return 'flink:' + name
- if name in api.structs:
- return 'slink:' + name
- if name == 'TBD':
- return 'No cross-references are available'
- return 'reflink:' + name
-
-
-def seeAlsoList(apiName, explicitRefs=None, apiAliases=[]):
- """Return an asciidoc string with a list of 'See Also' references for the
- API entity 'apiName', based on the relationship mapping in the api module.
-
- 'explicitRefs' is a list of additional cross-references.
-
- If apiAliases is not None, it is a list of aliases of apiName whose
- cross-references will also be included.
-
- If no relationships are available, return None."""
-
- refs = set(())
-
- # apiName and its aliases are treated equally
- allApis = apiAliases.copy()
- allApis.append(apiName)
-
- # Add all the implicit references to refs
- for name in allApis:
- if name in api.mapDict:
- refs.update(api.mapDict[name])
-
- # Add all the explicit references
- if explicitRefs is not None:
- if isinstance(explicitRefs, str):
- explicitRefs = explicitRefs.split()
- refs.update(name for name in explicitRefs)
-
- # Add extensions / core versions based on dependencies
- for name in allApis:
- if name in api.requiredBy:
- for (base,dependency) in api.requiredBy[name]:
- refs.add(base)
- if dependency is not None:
- refs.add(dependency)
-
- if len(refs) == 0:
- return None
- else:
- return ', '.join(macroPrefix(name) for name in sorted(refs)) + '\n'
-
-
-def remapIncludes(lines, baseDir, specDir):
- """Remap include directives in a list of lines so they can be extracted to a
- different directory.
-
- Returns remapped lines.
-
- - lines - text to remap
- - baseDir - target directory
- - specDir - source directory"""
- # This should be compiled only once
- includePat = re.compile(r'^include::(?P<path>.*)\[\]')
-
- newLines = []
- for line in lines:
- matches = includePat.search(line)
- if matches is not None:
- path = matches.group('path')
-
- if path[0] != '{':
- # Relative path to include file from here
- incPath = specDir + '/' + path
- # Remap to be relative to baseDir
- newPath = os.path.relpath(incPath, baseDir)
- newLine = 'include::' + newPath + '[]\n'
- logDiag('remapIncludes: remapping', line, '->', newLine)
- newLines.append(newLine)
- else:
- # An asciidoctor variable starts the path.
- # This must be an absolute path, not needing to be rewritten.
- newLines.append(line)
- else:
- newLines.append(line)
- return newLines
-
-
-def refPageShell(pageName, pageDesc, fp, head_content = None, sections=None, tail_content=None, man_section=3):
- """Generate body of a reference page.
-
- - pageName - string name of the page
- - pageDesc - string short description of the page
- - fp - file to write to
- - head_content - text to include before the sections
- - sections - iterable returning (title,body) for each section.
- - tail_content - text to include after the sections
- - man_section - Unix man page section"""
-
- printCopyrightSourceComments(fp)
-
- print(':data-uri:',
- ':icons: font',
- conventions.extra_refpage_headers,
- '',
- sep='\n', file=fp)
-
- s = '{}({})'.format(pageName, man_section)
- print('= ' + s,
- '',
- sep='\n', file=fp)
- if pageDesc.strip() == '':
- pageDesc = 'NO SHORT DESCRIPTION PROVIDED'
- logWarn('refPageHead: no short description provided for', pageName)
-
- print('== Name',
- '{} - {}'.format(pageName, pageDesc),
- '',
- sep='\n', file=fp)
-
- if head_content is not None:
- print(head_content,
- '',
- sep='\n', file=fp)
-
- if sections is not None:
- for title, content in sections.items():
- print('== {}'.format(title),
- '',
- content,
- '',
- sep='\n', file=fp)
-
- if tail_content is not None:
- print(tail_content,
- '',
- sep='\n', file=fp)
-
-
-def refPageHead(pageName, pageDesc, specText, fieldName, fieldText, descText, fp):
- """Generate header of a reference page.
-
- - pageName - string name of the page
- - pageDesc - string short description of the page
- - specType - string containing 'spec' field from refpage open block, or None.
- Used to determine containing spec name and URL.
- - specText - string that goes in the "C Specification" section
- - fieldName - string heading an additional section following specText, if not None
- - fieldText - string that goes in the additional section
- - descText - string that goes in the "Description" section
- - fp - file to write to"""
- sections = OrderedDict()
-
- if specText is not None:
- sections['C Specification'] = specText
-
- if fieldName is not None:
- sections[fieldName] = fieldText
-
- if descText is None or descText.strip() == '':
- logWarn('refPageHead: no description provided for', pageName)
-
- if descText is not None:
- sections['Description'] = descText
-
- refPageShell(pageName, pageDesc, fp, head_content=None, sections=sections)
-
-
-def refPageTail(pageName,
- specType=None,
- specAnchor=None,
- seeAlso=None,
- fp=None,
- auto=False,
- leveloffset=0):
- """Generate end boilerplate of a reference page.
-
- - pageName - name of the page
- - specType - None or the 'spec' attribute from the refpage block,
- identifying the specification name and URL this refpage links to.
- - specAnchor - None or the 'anchor' attribute from the refpage block,
- identifying the anchor in the specification this refpage links to. If
- None, the pageName is assumed to be a valid anchor.
- - seeAlso - text of the "See Also" section
- - fp - file to write the page to
- - auto - True if this is an entirely generated refpage, False if it's
- handwritten content from the spec.
- - leveloffset - number of levels to bias section titles up or down."""
-
- specName = conventions.api_name(specType)
- specURL = conventions.specURL(specType)
- if specAnchor is None:
- specAnchor = pageName
-
- if seeAlso is None:
- seeAlso = 'No cross-references are available\n'
-
- notes = [
- 'For more information, see the {}#{}[{} Specification^]'.format(
- specURL, specAnchor, specName),
- '',
- ]
-
- if auto:
- notes.extend((
- 'This page is a generated document.',
- 'Fixes and changes should be made to the generator scripts, '
- 'not directly.',
- ))
- else:
- notes.extend((
- 'This page is extracted from the ' + specName + ' Specification. ',
- 'Fixes and changes should be made to the Specification, '
- 'not directly.',
- ))
-
- # Generate the section header.
- # Default depth is 2.
- depth = max(0, leveloffset + 2)
- prefix = '=' * depth
-
- print(f'{prefix} See Also',
- '',
- seeAlso,
- '',
- sep='\n', file=fp)
-
- print(f'{prefix} Document Notes',
- '',
- '\n'.join(notes),
- '',
- sep='\n', file=fp)
-
- printFooter(fp, leveloffset)
-
-
-def xrefRewriteInitialize():
- """Initialize substitution patterns for asciidoctor xrefs."""
-
- global refLinkPattern, refLinkSubstitute
- global refLinkTextPattern, refLinkTextSubstitute
- global specLinkPattern, specLinkSubstitute
-
- # These are xrefs to Vulkan API entities, rewritten to link to refpages
- # The refLink variants are for xrefs with only an anchor and no text.
- # The refLinkText variants are for xrefs with both anchor and text
- refLinkPattern = re.compile(r'<<([Vv][Kk][^>,]+)>>')
- refLinkSubstitute = r'link:\1.html[\1^]'
-
- refLinkTextPattern = re.compile(r'<<([Vv][Kk][^>,]+)[,]?[ \t\n]*([^>,]*)>>')
- refLinkTextSubstitute = r'link:\1.html[\2^]'
-
- # These are xrefs to other anchors, rewritten to link to the spec
- specLinkPattern = re.compile(r'<<([^>,]+)[,]?[ \t\n]*([^>,]*)>>')
-
- # Unfortunately, specLinkSubstitute depends on the link target,
- # so can't be constructed in advance.
- specLinkSubstitute = None
-
-
-def xrefRewrite(text, specURL):
- """Rewrite asciidoctor xrefs in text to resolve properly in refpages.
- Xrefs which are to Vulkan refpages are rewritten to link to those
- refpages. The remainder are rewritten to generate external links into
- the supplied specification document URL.
-
- - text - string to rewrite, or None
- - specURL - URL to target
-
- Returns rewritten text, or None, respectively"""
-
- global refLinkPattern, refLinkSubstitute
- global refLinkTextPattern, refLinkTextSubstitute
- global specLinkPattern, specLinkSubstitute
-
- specLinkSubstitute = r'link:{}#\1[\2^]'.format(specURL)
-
- if text is not None:
- text, _ = refLinkPattern.subn(refLinkSubstitute, text)
- text, _ = refLinkTextPattern.subn(refLinkTextSubstitute, text)
- text, _ = specLinkPattern.subn(specLinkSubstitute, text)
-
- return text
-
-def emitPage(baseDir, specDir, pi, file):
- """Extract a single reference page into baseDir.
-
- - baseDir - base directory to emit page into
- - specDir - directory extracted page source came from
- - pi - pageInfo for this page relative to file
- - file - list of strings making up the file, indexed by pi"""
- pageName = baseDir + '/' + pi.name + '.txt'
-
- # Add a dictionary entry for this page
- global genDict
- genDict[pi.name] = None
- logDiag('emitPage:', pageName)
-
- # Short description
- if pi.desc is None:
- pi.desc = '(no short description available)'
-
- # Member/parameter section label and text, if there is one
- field = None
- fieldText = None
-
- # Only do structural checks on API pages
- if pi.type in refpage_api_types:
- if pi.include is None:
- logWarn('emitPage:', pageName, 'INCLUDE is None, no page generated')
- return
-
- # Specification text
- lines = remapIncludes(file[pi.begin:pi.include + 1], baseDir, specDir)
- specText = ''.join(lines)
-
- if pi.param is not None:
- if pi.type == 'structs':
- field = 'Members'
- elif pi.type in ['protos', 'funcpointers']:
- field = 'Parameters'
- else:
- logWarn('emitPage: unknown field type:', pi.type,
- 'for', pi.name)
- lines = remapIncludes(file[pi.param:pi.body], baseDir, specDir)
- fieldText = ''.join(lines)
-
- # Description text
- if pi.body != pi.include:
- lines = remapIncludes(file[pi.body:pi.end + 1], baseDir, specDir)
- descText = ''.join(lines)
- else:
- descText = None
- logWarn('emitPage: INCLUDE == BODY, so description will be empty for', pi.name)
- if pi.begin != pi.include:
- logWarn('emitPage: Note: BEGIN != INCLUDE, so the description might be incorrectly located before the API include!')
- elif pi.type in refpage_other_types:
- specText = None
- descText = ''.join(file[pi.begin:pi.end + 1])
- else:
- # This should be caught in the spec markup checking tests
- logErr(f"emitPage: refpage type='{pi.type}' is unrecognized")
-
- # Rewrite asciidoctor xrefs to resolve properly in refpages
- specURL = conventions.specURL(pi.spec)
-
- specText = xrefRewrite(specText, specURL)
- fieldText = xrefRewrite(fieldText, specURL)
- descText = xrefRewrite(descText, specURL)
-
- fp = open(pageName, 'w', encoding='utf-8')
- refPageHead(pi.name,
- pi.desc,
- specText,
- field, fieldText,
- descText,
- fp)
- refPageTail(pageName=pi.name,
- specType=pi.spec,
- specAnchor=pi.anchor,
- seeAlso=seeAlsoList(pi.name, pi.refs, pi.alias.split()),
- fp=fp,
- auto=False)
- fp.close()
-
-
-def autoGenEnumsPage(baseDir, pi, file):
- """Autogenerate a single reference page in baseDir.
-
- Script only knows how to do this for /enums/ pages, at present.
-
- - baseDir - base directory to emit page into
- - pi - pageInfo for this page relative to file
- - file - list of strings making up the file, indexed by pi"""
- pageName = baseDir + '/' + pi.name + '.txt'
- fp = open(pageName, 'w', encoding='utf-8')
-
- # Add a dictionary entry for this page
- global genDict
- genDict[pi.name] = None
- logDiag('autoGenEnumsPage:', pageName)
-
- # Short description
- if pi.desc is None:
- pi.desc = '(no short description available)'
-
- # Description text. Allow for the case where an enum definition
- # is not embedded.
- if not pi.embed:
- embedRef = ''
- else:
- embedRef = ''.join((
- ' * The reference page for ',
- macroPrefix(pi.embed),
- ', where this interface is defined.\n'))
-
- txt = ''.join((
- 'For more information, see:\n\n',
- embedRef,
- ' * The See Also section for other reference pages using this type.\n',
- ' * The ' + apiName + ' Specification.\n'))
-
- refPageHead(pi.name,
- pi.desc,
- ''.join(file[pi.begin:pi.include + 1]),
- None, None,
- txt,
- fp)
- refPageTail(pageName=pi.name,
- specType=pi.spec,
- specAnchor=pi.anchor,
- seeAlso=seeAlsoList(pi.name, pi.refs, pi.alias.split()),
- fp=fp,
- auto=True)
- fp.close()
-
-
-# Pattern to break apart an API *Flags{authorID} name, used in
-# autoGenFlagsPage.
-flagNamePat = re.compile(r'(?P<name>\w+)Flags(?P<author>[A-Z]*)')
-
-
-def autoGenFlagsPage(baseDir, flagName):
- """Autogenerate a single reference page in baseDir for an API *Flags type.
-
- - baseDir - base directory to emit page into
- - flagName - API *Flags name"""
- pageName = baseDir + '/' + flagName + '.txt'
- fp = open(pageName, 'w', encoding='utf-8')
-
- # Add a dictionary entry for this page
- global genDict
- genDict[flagName] = None
- logDiag('autoGenFlagsPage:', pageName)
-
- # Short description
- matches = flagNamePat.search(flagName)
- if matches is not None:
- name = matches.group('name')
- author = matches.group('author')
- logDiag('autoGenFlagsPage: split name into', name, 'Flags', author)
- flagBits = name + 'FlagBits' + author
- desc = 'Bitmask of ' + flagBits
- else:
- logWarn('autoGenFlagsPage:', pageName, 'does not end in "Flags{author ID}". Cannot infer FlagBits type.')
- flagBits = None
- desc = 'Unknown ' + apiName + ' flags type'
-
- # Description text
- if flagBits is not None:
- txt = ''.join((
- 'etext:' + flagName,
- ' is a mask of zero or more elink:' + flagBits + '.\n',
- 'It is used as a member and/or parameter of the structures and commands\n',
- 'in the See Also section below.\n'))
- else:
- txt = ''.join((
- 'etext:' + flagName,
- ' is an unknown ' + apiName + ' type, assumed to be a bitmask.\n'))
-
- refPageHead(flagName,
- desc,
- makeAPIInclude('flags', flagName),
- None, None,
- txt,
- fp)
- refPageTail(pageName=flagName,
- specType=pi.spec,
- specAnchor=pi.anchor,
- seeAlso=seeAlsoList(flagName, None),
- fp=fp,
- auto=True)
- fp.close()
-
-
-def autoGenHandlePage(baseDir, handleName):
- """Autogenerate a single handle page in baseDir for an API handle type.
-
- - baseDir - base directory to emit page into
- - handleName - API handle name"""
- # @@ Need to determine creation function & add handles/ include for the
- # @@ interface in generator.py.
- pageName = baseDir + '/' + handleName + '.txt'
- fp = open(pageName, 'w', encoding='utf-8')
-
- # Add a dictionary entry for this page
- global genDict
- genDict[handleName] = None
- logDiag('autoGenHandlePage:', pageName)
-
- # Short description
- desc = apiName + ' object handle'
-
- descText = ''.join((
- 'sname:' + handleName,
- ' is an object handle type, referring to an object used\n',
- 'by the ' + apiName + ' implementation. These handles are created or allocated\n',
- 'by the @@ TBD @@ function, and used by other ' + apiName + ' structures\n',
- 'and commands in the See Also section below.\n'))
-
- refPageHead(handleName,
- desc,
- makeAPIInclude('handles', handleName),
- None, None,
- descText,
- fp)
- refPageTail(pageName=handleName,
- specType=pi.spec,
- specAnchor=pi.anchor,
- seeAlso=seeAlsoList(handleName, None),
- fp=fp,
- auto=True)
- fp.close()
-
-
-def genRef(specFile, baseDir):
- """Extract reference pages from a spec asciidoc source file.
-
- - specFile - filename to extract from
- - baseDir - output directory to generate page in"""
- file = loadFile(specFile)
- if file is None:
- return
-
- # Save the path to this file for later use in rewriting relative includes
- specDir = os.path.dirname(os.path.abspath(specFile))
-
- pageMap = findRefs(file, specFile)
- logDiag(specFile + ': found', len(pageMap.keys()), 'potential pages')
-
- sys.stderr.flush()
-
- # Fix up references in pageMap
- fixupRefs(pageMap, specFile, file)
-
- # Create each page, if possible
- pages = {}
-
- for name in sorted(pageMap):
- pi = pageMap[name]
-
- # Only generate the page if it's in the requested build
- # 'freeform' pages are always generated
- # 'feature' pages (core versions & extensions) are generated if they're in
- # the requested feature list
- # All other pages (APIs) are generated if they're in the API map for
- # the build.
- if pi.type in refpage_api_types:
- if name not in api.typeCategory:
- # Also check aliases of name - api.nonexistent is the same
- # mapping used to rewrite *link: macros in this build.
- if name not in api.nonexistent:
- logWarn(f'genRef: NOT generating feature page {name} - API not in this build')
- continue
- else:
- logWarn(f'genRef: generating feature page {name} because its alias {api.nonexistent[name]} exists')
- elif pi.type in refpage_other_types:
- # The only non-API type which can be checked is a feature refpage
- if pi.type == 'feature':
- if name not in api.features:
- logWarn(f'genRef: NOT generating feature page {name} - feature not in this build')
- continue
-
- printPageInfo(pi, file)
-
- if pi.Warning:
- logDiag('genRef:', pi.name + ':', pi.Warning)
-
- if pi.extractPage:
- emitPage(baseDir, specDir, pi, file)
- elif pi.type == 'enums':
- autoGenEnumsPage(baseDir, pi, file)
- elif pi.type == 'flags':
- autoGenFlagsPage(baseDir, pi.name)
- else:
- # Don't extract this page
- logWarn('genRef: Cannot extract or autogenerate:', pi.name)
-
- pages[pi.name] = pi
- for alias in pi.alias.split():
- pages[alias] = pi
-
- return pages
-
-
-def genSinglePageRef(baseDir):
- """Generate baseDir/apispec.txt, the single-page version of the ref pages.
-
- This assumes there's a page for everything in the api module dictionaries.
- Extensions (KHR, EXT, etc.) are currently skipped"""
- # Accumulate head of page
- head = io.StringIO()
-
- printCopyrightSourceComments(head)
-
- print('= ' + apiName + ' API Reference Pages',
- ':data-uri:',
- ':icons: font',
- ':doctype: book',
- ':numbered!:',
- ':max-width: 200',
- ':data-uri:',
- ':toc2:',
- ':toclevels: 2',
- '',
- sep='\n', file=head)
-
- print('== Copyright', file=head)
- print('', file=head)
- print('include::{config}/copyright-ccby.txt[]', file=head)
- print('', file=head)
- # Inject the table of contents. Asciidoc really ought to be generating
- # this for us.
-
- sections = [
- [api.protos, 'protos', apiName + ' Commands'],
- [api.handles, 'handles', 'Object Handles'],
- [api.structs, 'structs', 'Structures'],
- [api.enums, 'enums', 'Enumerations'],
- [api.flags, 'flags', 'Flags'],
- [api.funcpointers, 'funcpointers', 'Function Pointer Types'],
- [api.basetypes, 'basetypes', apiName + ' Scalar types'],
- [api.defines, 'defines', 'C Macro Definitions'],
- [extensions, 'extensions', apiName + ' Extensions']
- ]
-
- # Accumulate body of page
- body = io.StringIO()
-
- for (apiDict, label, title) in sections:
- # Add section title/anchor header to body
- anchor = '[[' + label + ',' + title + ']]'
- print(anchor,
- '== ' + title,
- '',
- ':leveloffset: 2',
- '',
- sep='\n', file=body)
-
- if label == 'extensions':
- # preserve order of extensions since we already sorted the way we want.
- keys = apiDict.keys()
- else:
- keys = sorted(apiDict.keys())
-
- for refPage in keys:
- # Don't generate links for aliases, which are included with the
- # aliased page
- if refPage not in api.alias:
- # Add page to body
- if 'FlagBits' in refPage and conventions.unified_flag_refpages:
- # OpenXR does not create separate ref pages for FlagBits:
- # the FlagBits includes go in the Flags refpage.
- # Previously the Vulkan script would only emit non-empty
- # Vk*Flags pages, via the logic
- # if refPage not in api.flags or api.flags[refPage] is not None
- # emit page
- # Now, all are emitted.
- continue
- else:
- print('include::' + refPage + '.txt[]', file=body)
- else:
- # Alternatively, we could (probably should) link to the
- # aliased refpage
- logWarn('(Benign) Not including', refPage,
- 'in single-page reference',
- 'because it is an alias of', api.alias[refPage])
-
- print('\n' + ':leveloffset: 0' + '\n', file=body)
-
- # Write head and body to the output file
- pageName = baseDir + '/apispec.txt'
- fp = open(pageName, 'w', encoding='utf-8')
-
- print(head.getvalue(), file=fp, end='')
- print(body.getvalue(), file=fp, end='')
-
- head.close()
- body.close()
- fp.close()
-
-
-def genExtension(baseDir, extpath, name, info):
- """Generate refpage, and add dictionary entry for an extension
-
- - baseDir - output directory to generate page in
- - extpath - None, or path to per-extension specification sources if
- those are to be included in extension refpages
- - name - extension name
- - info - <extension> Element from XML"""
-
- # Add a dictionary entry for this page
- global genDict
- genDict[name] = None
- declares = []
- elem = info.elem
-
- # Type of extension (instance, device, etc.)
- ext_type = elem.get('type')
-
- # Autogenerate interfaces from <extension> entry
- for required in elem.find('require'):
- req_name = required.get('name')
- if not req_name:
- # This isn't what we're looking for
- continue
- if req_name.endswith('_SPEC_VERSION') or req_name.endswith('_EXTENSION_NAME'):
- # Don't link to spec version or extension name - those ref pages aren't created.
- continue
-
- if required.get('extends'):
- # These are either extensions of enumerated types, or const enum
- # values: neither of which get a ref page - although we could
- # include the enumerated types in the See Also list.
- continue
-
- if req_name not in genDict:
- logWarn('ERROR: {} (in extension {}) does not have a ref page.'.format(req_name, name))
-
- declares.append(req_name)
-
- # import pdb
- # pdb.set_trace()
-
- appbody = None
- if extpath is not None:
- appfp = open('{}/{}.txt'.format(extpath, name), 'r', encoding='utf-8')
- if appfp is not None:
- appbody = appfp.read()
-
- # Transform internal links to crosslinks
- specURL = conventions.specURL()
- appbody = xrefRewrite(appbody, specURL)
- else:
- logWarn('Cannot find extension appendix for', name)
-
- # Fall through to autogenerated page
- extpath = None
- appbody = None
- appfp.close()
-
- # Include the extension appendix without an extra title
- # head_content = 'include::{{appendices}}/{}.txt[]'.format(name)
-
- # Write the extension refpage
- pageName = baseDir + '/' + name + '.txt'
- logDiag('genExtension:', pageName)
- fp = open(pageName, 'w', encoding='utf-8')
-
- # There are no generated titled sections
- sections = None
-
- # 'See link:{html_spec_relative}#%s[ %s] in the main specification for complete information.' % (
- # name, name)
- refPageShell(name,
- "{} extension".format(ext_type),
- fp,
- appbody,
- sections=sections)
-
- # The generated metadata include moved the leveloffset attribute by -1
- # to account for the relative structuring of the spec extension appendix
- # section structure vs. the refpages.
- # This restores leveloffset for the boilerplate in refPageTail.
- refPageTail(pageName=name,
- specType=None,
- specAnchor=name,
- seeAlso=seeAlsoList(name, declares),
- fp=fp,
- auto=True,
- leveloffset=1)
- fp.close()
-
-
-if __name__ == '__main__':
- global genDict, extensions, conventions, apiName
- genDict = {}
- extensions = OrderedDict()
- conventions = APIConventions()
- apiName = conventions.api_name('api')
-
- parser = argparse.ArgumentParser()
-
- parser.add_argument('-diag', action='store', dest='diagFile',
- help='Set the diagnostic file')
- parser.add_argument('-warn', action='store', dest='warnFile',
- help='Set the warning file')
- parser.add_argument('-log', action='store', dest='logFile',
- help='Set the log file for both diagnostics and warnings')
- parser.add_argument('-genpath', action='store',
- default='gen',
- help='Path to directory containing generated files')
- parser.add_argument('-basedir', action='store', dest='baseDir',
- default=None,
- help='Set the base directory in which pages are generated')
- parser.add_argument('-noauto', action='store_true',
- help='Don\'t generate inferred ref pages automatically')
- parser.add_argument('files', metavar='filename', nargs='*',
- help='a filename to extract ref pages from')
- parser.add_argument('--version', action='version', version='%(prog)s 1.0')
- parser.add_argument('-extension', action='append',
- default=[],
- help='Specify an extension or extensions to add to targets')
- parser.add_argument('-rewrite', action='store',
- default=None,
- help='Name of output file to write Apache mod_rewrite directives to')
- parser.add_argument('-toc', action='store',
- default=None,
- help='Name of output file to write an alphabetical TOC to')
- parser.add_argument('-registry', action='store',
- default=conventions.registry_path,
- help='Use specified registry file instead of default')
- parser.add_argument('-extpath', action='store',
- default=None,
- help='Use extension descriptions from this directory instead of autogenerating extension refpages')
-
- results = parser.parse_args()
-
- # Look for api.py in the specified directory
- if results.genpath is not None:
- sys.path.insert(0, results.genpath)
- import api
-
- setLogFile(True, True, results.logFile)
- setLogFile(True, False, results.diagFile)
- setLogFile(False, True, results.warnFile)
-
- # Initialize static rewrite patterns for spec xrefs
- xrefRewriteInitialize()
-
- if results.baseDir is None:
- baseDir = results.genpath + '/ref'
- else:
- baseDir = results.baseDir
-
- # Dictionary of pages & aliases
- pages = {}
-
- for file in results.files:
- d = genRef(file, baseDir)
- pages.update(d)
-
- # Now figure out which pages *weren't* generated from the spec.
- # This relies on the dictionaries of API constructs in the api module.
-
- if not results.noauto:
- registry = Registry()
- registry.loadFile(results.registry)
-
- if conventions.write_refpage_include:
- # Only extensions with a supported="..." attribute in this set
- # will be considered for extraction/generation.
- supported_strings = set((conventions.xml_api_name,))
- ext_names = set(k for k, v in registry.extdict.items()
- if v.supported in supported_strings)
-
- desired_extensions = ext_names.intersection(set(results.extension))
- for prefix in conventions.extension_index_prefixes:
- # Splits up into chunks, sorted within each chunk.
- filtered_extensions = sorted(
- [name for name in desired_extensions
- if name.startswith(prefix) and name not in extensions])
- for name in filtered_extensions:
- # logWarn('NOT autogenerating extension refpage for', name)
- extensions[name] = None
- genExtension(baseDir, results.extpath, name, registry.extdict[name])
-
- # autoGenFlagsPage is no longer needed because they are added to
- # the spec sources now.
- # for page in api.flags:
- # if page not in genDict:
- # autoGenFlagsPage(baseDir, page)
-
- # autoGenHandlePage is no longer needed because they are added to
- # the spec sources now.
- # for page in api.structs:
- # if typeCategory[page] == 'handle':
- # autoGenHandlePage(baseDir, page)
-
- sections = [
- (api.flags, 'Flag Types'),
- (api.enums, 'Enumerated Types'),
- (api.structs, 'Structures'),
- (api.protos, 'Prototypes'),
- (api.funcpointers, 'Function Pointers'),
- (api.basetypes, apiName + ' Scalar Types'),
- (extensions, apiName + ' Extensions'),
- ]
-
- # Summarize pages that weren't generated, for good or bad reasons
-
- for (apiDict, title) in sections:
- # OpenXR was keeping a 'flagged' state which only printed out a
- # warning for the first non-generated page, but was otherwise
- # unused. This doesn't seem helpful.
- for page in apiDict:
- if page not in genDict:
- # Page was not generated - why not?
- if page in api.alias:
- logWarn('(Benign, is an alias) Ref page for', title, page, 'is aliased into', api.alias[page])
- elif page in api.flags and api.flags[page] is None:
- logWarn('(Benign, no FlagBits defined) No ref page generated for ', title,
- page)
- else:
- # Could introduce additional logic to detect
- # external types and not emit them.
- logWarn('No ref page generated for ', title, page)
-
- genSinglePageRef(baseDir)
-
- if results.rewrite:
- # Generate Apache rewrite directives for refpage aliases
- fp = open(results.rewrite, 'w', encoding='utf-8')
-
- for page in sorted(pages):
- p = pages[page]
- rewrite = p.name
-
- if page != rewrite:
- print('RewriteRule ^', page, '.html$ ', rewrite, '.html',
- sep='', file=fp)
- fp.close()
-
- if results.toc:
- # Generate dynamic portion of refpage TOC
- fp = open(results.toc, 'w', encoding='utf-8')
-
- # Run through dictionary of pages generating an TOC
- print(12 * ' ', '<li class="Level1">Alphabetic Contents', sep='', file=fp)
- print(16 * ' ', '<ul class="Level2">', sep='', file=fp)
- lastLetter = None
-
- for page in sorted(pages, key=str.upper):
- p = pages[page]
- letter = page[0:1].upper()
-
- if letter != lastLetter:
- if lastLetter:
- # End previous block
- print(24 * ' ', '</ul>', sep='', file=fp)
- print(20 * ' ', '</li>', sep='', file=fp)
- # Start new block
- print(20 * ' ', '<li>', letter, sep='', file=fp)
- print(24 * ' ', '<ul class="Level3">', sep='', file=fp)
- lastLetter = letter
-
- # Add this page to the list
- print(28 * ' ', '<li><a href="', p.name, '.html" ',
- 'target="pagedisplay">', page, '</a></li>',
- sep='', file=fp)
-
- if lastLetter:
- # Close the final letter block
- print(24 * ' ', '</ul>', sep='', file=fp)
- print(20 * ' ', '</li>', sep='', file=fp)
-
- # Close the list
- print(16 * ' ', '</ul>', sep='', file=fp)
- print(12 * ' ', '</li>', sep='', file=fp)
-
- # print('name {} -> page {}'.format(page, pages[page].name))
-
- fp.close()
diff --git a/codegen/vulkan/scripts/genRelease b/codegen/vulkan/scripts/genRelease
deleted file mode 100755
index f3c4a2ab..00000000
--- a/codegen/vulkan/scripts/genRelease
+++ /dev/null
@@ -1,211 +0,0 @@
-#!/usr/bin/python3
-#
-# Copyright 2016-2021 The Khronos Group Inc.
-#
-# SPDX-License-Identifier: Apache-2.0
-
-import argparse
-import subprocess
-import sys
-
-from genspec import *
-
-# Eventually, these may be defined by extDependency.py
-allVersions = [ 'VK_VERSION_1_0', 'VK_VERSION_1_1', 'VK_VERSION_1_2' ]
-Version1_1 = [ 'VK_VERSION_1_0', 'VK_VERSION_1_1' ]
-Version1_0 = [ 'VK_VERSION_1_0' ]
-
-if __name__ == '__main__':
- parser = argparse.ArgumentParser()
-
- parser.add_argument('-internal', action='store_true',
- help='Generate internal build, not public')
- parser.add_argument('-norefpages', action='store_true',
- help='Do not generate refpages')
- parser.add_argument('-singlerefpage', action='store_true',
- help='Generate single-page refpage - NOT SUPPORTED')
- parser.add_argument('-chunked', action='store_true',
- help='Generate chunked HTML outputs')
- parser.add_argument('-pdf', action='store_true',
- help='Generate PDF outputs')
-
- parser.add_argument('-nov12', action='store_false', dest='v12',
- help='Suppress Vulkan 1.2 targets')
- parser.add_argument('-v11', action='store_true',
- help='Generate Vulkan 1.1 targets')
- parser.add_argument('-v10', action='store_true',
- help='Generate Vulkan 1.0 targets')
-
- parser.add_argument('-nocorespec', action='store_false', dest='corespec',
- help='Do not generate core API-only targets')
- parser.add_argument('-nokhrspec', action='store_false', dest='khrspec',
- help='Do not generate core API + KHR extensions-only targets')
- parser.add_argument('-noallspec', action='store_false', dest='allspec',
- help='Do not generate full API + all extensions targets')
-
- parser.add_argument('-genpath', action='store',
- default='gen',
- help='Path to directory containing generated files')
- parser.add_argument('-repodir', action='store', dest='repoDir',
- default=None,
- help='Set the repository directory to build from (overrides defaults)')
- parser.add_argument('-outdir', action='store', dest='outDir',
- default=None,
- help='Set the output directory to build into (overrides defaults)')
-
- args = parser.parse_args()
-
- # Ensure gen/extDependency.py is up-to-date before we import it.
- # If it is up to date, 'make' will print a useless warning without '-s'.
- subprocess.check_call(['make', '-s', 'GENERATED=' + args.genpath, 'extDependency'])
-
- # Alter sys.path to import extDependency.py
- sys.path.insert(0, args.genpath)
-
- from extDependency import allExts, khrExts
-
- if args.internal:
- # For internal build & pseudo-release
- if args.repoDir == None:
- args.repoDir = '/home/tree/git/vulkan'
- if args.outDir == None:
- args.outDir = '/home/tree/git/vulkan/out'
- else:
- # For public release
- if args.repoDir == None:
- args.repoDir = '/home/tree/git/Vulkan-Docs'
- if args.outDir == None:
- args.outDir = '/home/tree/git/registry/vulkan/specs'
-
- refPageTargets = ''
-
- if not args.norefpages:
- # Generate separate reference pages
- refPageTargets += ' manhtmlpages'
-
- if args.singlerefpage:
- # Generate single-page refpage.
- refPageTargets += ' manhtml'
- if args.pdf:
- refPageTargets += ' manpdf'
- print('echo Info: single-page refpage targets are NOT SUPPORTED')
-
- specTargets = ' html'
- if args.chunked:
- specTargets += ' chunked'
- if args.pdf:
- specTargets += ' pdf'
-
- print('echo Info: Building release from', args.repoDir, 'to', args.outDir)
- print('echo Info: Building spec targets', specTargets)
- print('')
-
- # Current Vulkan 1.2 specs
- if args.v12:
- if args.allspec:
- # Build ref pages and validusage targets only for 1.2 + all exts
- # Formerly set xmlTargets = 'clobber install', but we no longer
- # generate headers in the registry tree.
- buildBranch(targetDir = '1.2-extensions',
- versions = allVersions,
- extensions = allExts,
- ratified = False,
- apititle = '(with all registered Vulkan extensions)',
- specTargets = specTargets + ' validusage' + refPageTargets,
- repoDir = args.repoDir,
- outDir = args.outDir)
-
- if args.khrspec:
- buildBranch(targetDir = '1.2-khr-extensions',
- versions = allVersions,
- extensions = khrExts,
- ratified = True,
- apititle = '(with KHR extensions)',
- specTargets = specTargets,
- repoDir = args.repoDir,
- outDir = args.outDir)
-
- if args.corespec:
- # Build style guide and registry documentation targets only for 1.2
- # + no extensions.
- buildBranch(targetDir = '1.2',
- versions = allVersions,
- extensions = None,
- ratified = True,
- apititle = None,
- specTargets = specTargets + ' styleguide registry',
- repoDir = args.repoDir,
- outDir = args.outDir,
- needRefSources = True)
-
- # Vulkan 1.1 specs
- if args.v11:
- if args.allspec:
- buildBranch(targetDir = '1.1-extensions',
- versions = Version1_1,
- extensions = allExts,
- ratified = False,
- apititle = '(with all registered Vulkan extensions)',
- specTargets = specTargets,
- repoDir = args.repoDir,
- outDir = args.outDir)
-
- if args.khrspec:
- buildBranch(targetDir = '1.1-khr-extensions',
- versions = Version1_1,
- extensions = khrExts,
- ratified = True,
- apititle = '(with KHR extensions)',
- specTargets = specTargets,
- repoDir = args.repoDir,
- outDir = args.outDir)
-
- if args.corespec:
- buildBranch(targetDir = '1.1',
- versions = Version1_1,
- extensions = None,
- ratified = True,
- apititle = None,
- specTargets = specTargets,
- repoDir = args.repoDir,
- outDir = args.outDir)
- else:
- print('echo Info: Not building 1.1 specs yet')
-
-
- # Vulkan 1.0 specs.
- if args.v10:
- if args.allspec:
- buildBranch(targetDir = '1.0-extensions',
- versions = Version1_0,
- extensions = allExts,
- ratified = False,
- apititle = '(with all registered Vulkan extensions)',
- specTargets = specTargets,
- repoDir = args.repoDir,
- outDir = args.outDir)
-
- if args.khrspec:
- buildBranch(targetDir = '1.0-wsi_extensions',
- versions = Version1_0,
- extensions = khrExts,
- ratified = True,
- apititle = '(with KHR extensions)',
- specTargets = specTargets,
- repoDir = args.repoDir,
- outDir = args.outDir)
-
- if args.corespec:
- buildBranch(targetDir = '1.0',
- versions = Version1_0,
- extensions = None,
- ratified = True,
- apititle = None,
- specTargets = specTargets,
- repoDir = args.repoDir,
- outDir = args.outDir)
- else:
- print('echo Info: Not building 1.0 specs yet')
-
- print('echo Info: post-generation cleanup')
- createTags(releaseNum(), buildOnFriday())
diff --git a/codegen/vulkan/scripts/genanchorlinks.py b/codegen/vulkan/scripts/genanchorlinks.py
deleted file mode 100644
index c589bb30..00000000
--- a/codegen/vulkan/scripts/genanchorlinks.py
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/usr/bin/python3
-#
-# Copyright 2020-2021 The Khronos Group Inc.
-#
-# SPDX-License-Identifier: Apache-2.0
-
-# Script that adds href to <a> anchors
-
-import os,sys,re
-
-def genAnchorLinks(in_file, out_file):
- try:
- with open(in_file, 'r', encoding='utf8') as f: data = f.read()
- except FileNotFoundError:
- print('Error: File %s does not exist.' % in_file)
- sys.exit(2)
-
- data = re.sub( r'(<a )(id="(VUID\-[\w\-:]+)")(>)', '\g<1>\g<2> href="#\g<3>"\g<4>', data)
- with open(out_file, 'w', encoding='utf8') as f: data = f.write(data)
-
-if __name__ == '__main__':
- if len(sys.argv) != 3:
- print('Error: genanchorlinks.py requires two arguments.')
- print('Usage: genanchorlinks.py infile.html outfile.html')
- sys.exit(1)
- genAnchorLinks(sys.argv[1], sys.argv[2])
diff --git a/codegen/vulkan/scripts/generator.py b/codegen/vulkan/scripts/generator.py
deleted file mode 100644
index cb5f0f59..00000000
--- a/codegen/vulkan/scripts/generator.py
+++ /dev/null
@@ -1,1204 +0,0 @@
-#!/usr/bin/python3 -i
-#
-# Copyright 2013-2021 The Khronos Group Inc.
-#
-# SPDX-License-Identifier: Apache-2.0
-"""Base class for source/header/doc generators, as well as some utility functions."""
-
-from __future__ import unicode_literals
-
-import io
-import os
-import pdb
-import re
-import shutil
-import sys
-import tempfile
-try:
- from pathlib import Path
-except ImportError:
- from pathlib2 import Path
-
-from spec_tools.util import getElemName, getElemType
-
-
-def write(*args, **kwargs):
- file = kwargs.pop('file', sys.stdout)
- end = kwargs.pop('end', '\n')
- file.write(' '.join(str(arg) for arg in args))
- file.write(end)
-
-
-def noneStr(s):
- """Return string argument, or "" if argument is None.
-
- Used in converting etree Elements into text.
- s - string to convert"""
- if s:
- return s
- return ""
-
-
-def enquote(s):
- """Return string argument with surrounding quotes,
- for serialization into Python code."""
- if s:
- if isinstance(s, str):
- return "'{}'".format(s)
- else:
- return s
- return None
-
-
-def regSortCategoryKey(feature):
- """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)
- - other (EXT/vendor extensions)"""
-
- if feature.elem.tag == 'feature':
- return 0
- if (feature.category == 'ARB'
- or feature.category == 'KHR'
- or feature.category == 'OES'):
- return 1
-
- return 2
-
-
-def regSortOrderKey(feature):
- """Sort key for regSortFeatures - key is the sortorder attribute."""
-
- # print("regSortOrderKey {} -> {}".format(feature.name, feature.sortorder))
- return feature.sortorder
-
-
-def regSortFeatureVersionKey(feature):
- """Sort key for regSortFeatures - key is the feature version.
- `<extension>` elements all have version number 0."""
-
- return float(feature.versionNumber)
-
-
-def regSortExtensionNumberKey(feature):
- """Sort key for regSortFeatures - key is the extension number.
- `<feature>` elements all have extension number 0."""
-
- return int(feature.number)
-
-
-def regSortFeatures(featureList):
- """Default sort procedure for features.
-
- - Sorts by explicit sort order (default 0) relative to other features
- - then by feature category ('feature' or 'extension'),
- - then by version number (for features)
- - then by extension number (for extensions)"""
- featureList.sort(key=regSortExtensionNumberKey)
- featureList.sort(key=regSortFeatureVersionKey)
- featureList.sort(key=regSortCategoryKey)
- featureList.sort(key=regSortOrderKey)
-
-
-class GeneratorOptions:
- """Base class for options used during header/documentation production.
-
- These options are target language independent, and used by
- Registry.apiGen() and by base OutputGenerator objects."""
-
- def __init__(self,
- conventions=None,
- filename=None,
- directory='.',
- genpath=None,
- apiname=None,
- profile=None,
- versions='.*',
- emitversions='.*',
- defaultExtensions=None,
- addExtensions=None,
- removeExtensions=None,
- emitExtensions=None,
- emitSpirv=None,
- reparentEnums=True,
- sortProcedure=regSortFeatures,
- requireCommandAliases=False,
- ):
- """Constructor.
-
- Arguments:
-
- - conventions - may be mandatory for some generators:
- an object that implements ConventionsBase
- - filename - basename of file to generate, or None to write to stdout.
- - directory - directory in which to generate files
- - genpath - path to previously generated files, such as api.py
- - apiname - string matching `<api>` 'apiname' attribute, e.g. 'gl'.
- - profile - string specifying API profile , e.g. 'core', or None.
- - versions - regex matching API versions to process interfaces for.
- Normally `'.*'` or `'[0-9][.][0-9]'` to match all defined versions.
- - emitversions - regex matching API versions to actually emit
- interfaces for (though all requested versions are considered
- when deciding which interfaces to generate). For GL 4.3 glext.h,
- this might be `'1[.][2-5]|[2-4][.][0-9]'`.
- - defaultExtensions - If not None, a string which must in its
- entirety match the pattern in the "supported" attribute of
- the `<extension>`. Defaults to None. Usually the same as apiname.
- - addExtensions - regex matching names of additional extensions
- to include. Defaults to None.
- - removeExtensions - regex matching names of extensions to
- remove (after defaultExtensions and addExtensions). Defaults
- to None.
- - emitExtensions - regex matching names of extensions to actually emit
- interfaces for (though all requested versions are considered when
- deciding which interfaces to generate).
- to None.
- - emitSpirv - regex matching names of extensions and capabilities
- to actually emit interfaces for.
- - reparentEnums - move <enum> elements which extend an enumerated
- type from <feature> or <extension> elements to the target <enums>
- element. This is required for almost all purposes, but the
- InterfaceGenerator relies on the list of interfaces in the <feature>
- or <extension> being complete. Defaults to True.
- - 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, 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."""
- self.conventions = conventions
- """may be mandatory for some generators:
- an object that implements ConventionsBase"""
-
- self.filename = filename
- "basename of file to generate, or None to write to stdout."
-
- self.genpath = genpath
- """path to previously generated files, such as api.py"""
-
- self.directory = directory
- "directory in which to generate filename"
-
- self.apiname = apiname
- "string matching `<api>` 'apiname' attribute, e.g. 'gl'."
-
- self.profile = profile
- "string specifying API profile , e.g. 'core', or None."
-
- self.versions = self.emptyRegex(versions)
- """regex matching API versions to process interfaces for.
- Normally `'.*'` or `'[0-9][.][0-9]'` to match all defined versions."""
-
- self.emitversions = self.emptyRegex(emitversions)
- """regex matching API versions to actually emit
- interfaces for (though all requested versions are considered
- when deciding which interfaces to generate). For GL 4.3 glext.h,
- this might be `'1[.][2-5]|[2-4][.][0-9]'`."""
-
- self.defaultExtensions = defaultExtensions
- """If not None, a string which must in its
- entirety match the pattern in the "supported" attribute of
- the `<extension>`. Defaults to None. Usually the same as apiname."""
-
- self.addExtensions = self.emptyRegex(addExtensions)
- """regex matching names of additional extensions
- to include. Defaults to None."""
-
- self.removeExtensions = self.emptyRegex(removeExtensions)
- """regex matching names of extensions to
- remove (after defaultExtensions and addExtensions). Defaults
- to None."""
-
- self.emitExtensions = self.emptyRegex(emitExtensions)
- """regex matching names of extensions to actually emit
- interfaces for (though all requested versions are considered when
- deciding which interfaces to generate)."""
-
- self.emitSpirv = self.emptyRegex(emitSpirv)
- """regex matching names of extensions and capabilities
- to actually emit interfaces for."""
-
- self.reparentEnums = reparentEnums
- """boolean specifying whether to remove <enum> elements from
- <feature> or <extension> when extending an <enums> type."""
-
- self.sortProcedure = 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."""
-
- self.codeGenerator = False
- """True if this generator makes compilable code"""
-
- self.requireCommandAliases = requireCommandAliases
- """True if alias= attributes of <command> tags are transitively
- required."""
-
- def emptyRegex(self, pat):
- """Substitute a regular expression which matches no version
- or extension names for None or the empty string."""
- if not pat:
- return '_nomatch_^'
-
- return pat
-
-
-class OutputGenerator:
- """Generate specified API interfaces in a specific style, such as a C header.
-
- Base class for generating API interfaces.
- Manages basic logic, logging, and output file control.
- Derived classes actually generate formatted output.
- """
-
- # categoryToPath - map XML 'category' to include file directory name
- categoryToPath = {
- 'bitmask': 'flags',
- 'enum': 'enums',
- 'funcpointer': 'funcpointers',
- 'handle': 'handles',
- 'define': 'defines',
- 'basetype': 'basetypes',
- }
-
- def breakName(self, name, msg):
- """Break into debugger if this is a special name"""
-
- # List of string names to break on
- bad = (
- )
-
- if name in bad and True:
- print('breakName {}: {}'.format(name, msg))
- pdb.set_trace()
-
- def __init__(self, errFile=sys.stderr, warnFile=sys.stderr, diagFile=sys.stdout):
- """Constructor
-
- - errFile, warnFile, diagFile - file handles to write errors,
- warnings, diagnostics to. May be None to not write."""
- self.outFile = None
- self.errFile = errFile
- self.warnFile = warnFile
- self.diagFile = diagFile
- # Internal state
- self.featureName = None
- self.featureType = None
- self.genOpts = None
- self.registry = None
- self.featureDictionary = {}
- # Used for extension enum value generation
- self.extBase = 1000000000
- self.extBlockSize = 1000
- self.madeDirs = {}
-
- # API dictionary, which may be loaded by the beginFile method of
- # derived generators.
- self.apidict = None
-
- def logMsg(self, level, *args):
- """Write a message of different categories to different
- destinations.
-
- - `level`
- - 'diag' (diagnostic, voluminous)
- - 'warn' (warning)
- - 'error' (fatal error - raises exception after logging)
-
- - `*args` - print()-style arguments to direct to corresponding log"""
- if level == 'error':
- strfile = io.StringIO()
- write('ERROR:', *args, file=strfile)
- if self.errFile is not None:
- write(strfile.getvalue(), file=self.errFile)
- raise UserWarning(strfile.getvalue())
- elif level == 'warn':
- if self.warnFile is not None:
- write('WARNING:', *args, file=self.warnFile)
- elif level == 'diag':
- if self.diagFile is not None:
- write('DIAG:', *args, file=self.diagFile)
- else:
- raise UserWarning(
- '*** FATAL ERROR in Generator.logMsg: unknown level:' + level)
-
- def enumToValue(self, elem, needsNum, bitwidth = 32, forceSuffix = False):
- """Parse and convert an `<enum>` tag into a value.
-
- Returns a list:
-
- - first element - integer representation of the value, or None
- if needsNum is False. The value must be a legal number
- if needsNum is True.
- - second element - string representation of the value
-
- There are several possible representations of values.
-
- - A 'value' attribute simply contains the value.
- - A 'bitpos' attribute defines a value by specifying the bit
- position which is set in that value.
- - An 'offset','extbase','extends' triplet specifies a value
- as an offset to a base value defined by the specified
- 'extbase' extension name, which is then cast to the
- typename specified by 'extends'. This requires probing
- the registry database, and imbeds knowledge of the
- API extension enum scheme in this function.
- - An 'alias' attribute contains the name of another enum
- which this is an alias of. The other enum must be
- declared first when emitting this enum."""
- name = elem.get('name')
- numVal = None
- if 'value' in elem.keys():
- value = elem.get('value')
- # print('About to translate value =', value, 'type =', type(value))
- if needsNum:
- numVal = int(value, 0)
- # If there's a non-integer, numeric 'type' attribute (e.g. 'u' or
- # 'ull'), append it to the string value.
- # t = enuminfo.elem.get('type')
- # if t is not None and t != '' and t != 'i' and t != 's':
- # value += enuminfo.type
- if forceSuffix:
- if bitwidth == 64:
- value = value + 'ULL'
- else:
- value = value + 'U'
- self.logMsg('diag', 'Enum', name, '-> value [', numVal, ',', value, ']')
- return [numVal, value]
- if 'bitpos' in elem.keys():
- value = elem.get('bitpos')
- bitpos = int(value, 0)
- numVal = 1 << bitpos
- value = '0x%08x' % numVal
- if bitwidth == 64:
- value = value + 'ULL'
- elif forceSuffix:
- value = value + 'U'
- self.logMsg('diag', 'Enum', name, '-> bitpos [', numVal, ',', value, ']')
- return [numVal, value]
- if 'offset' in elem.keys():
- # Obtain values in the mapping from the attributes
- enumNegative = False
- offset = int(elem.get('offset'), 0)
- extnumber = int(elem.get('extnumber'), 0)
- extends = elem.get('extends')
- if 'dir' in elem.keys():
- enumNegative = True
- self.logMsg('diag', 'Enum', name, 'offset =', offset,
- 'extnumber =', extnumber, 'extends =', extends,
- 'enumNegative =', enumNegative)
- # Now determine the actual enumerant value, as defined
- # in the "Layers and Extensions" appendix of the spec.
- numVal = self.extBase + (extnumber - 1) * self.extBlockSize + offset
- if enumNegative:
- numVal *= -1
- value = '%d' % numVal
- # More logic needed!
- self.logMsg('diag', 'Enum', name, '-> offset [', numVal, ',', value, ']')
- return [numVal, value]
- if 'alias' in elem.keys():
- return [None, elem.get('alias')]
- return [None, None]
-
- def checkDuplicateEnums(self, enums):
- """Check enumerated values for duplicates.
-
- - enums - list of `<enum>` Elements
-
- returns the list with duplicates stripped"""
- # Dictionaries indexed by name and numeric value.
- # Entries are [ Element, numVal, strVal ] matching name or value
-
- nameMap = {}
- valueMap = {}
-
- stripped = []
- for elem in enums:
- name = elem.get('name')
- (numVal, strVal) = self.enumToValue(elem, True)
-
- if name in nameMap:
- # Duplicate name found; check values
- (name2, numVal2, strVal2) = nameMap[name]
-
- # Duplicate enum values for the same name are benign. This
- # happens when defining the same enum conditionally in
- # several extension blocks.
- if (strVal2 == strVal or (numVal is not None
- and numVal == numVal2)):
- True
- # self.logMsg('info', 'checkDuplicateEnums: Duplicate enum (' + name +
- # ') found with the same value:' + strVal)
- else:
- self.logMsg('warn', 'checkDuplicateEnums: Duplicate enum (' + name
- + ') found with different values:' + strVal
- + ' and ' + strVal2)
-
- # Don't add the duplicate to the returned list
- continue
- elif numVal in valueMap:
- # Duplicate value found (such as an alias); report it, but
- # still add this enum to the list.
- (name2, numVal2, strVal2) = valueMap[numVal]
-
- msg = 'Two enums found with the same value: {} = {} = {}'.format(
- name, name2.get('name'), strVal)
- self.logMsg('error', msg)
-
- # Track this enum to detect followon duplicates
- nameMap[name] = [elem, numVal, strVal]
- if numVal is not None:
- valueMap[numVal] = [elem, numVal, strVal]
-
- # Add this enum to the list
- stripped.append(elem)
-
- # Return the list
- return stripped
-
- def misracstyle(self):
- return False;
-
- def misracppstyle(self):
- return False;
-
- def buildEnumCDecl(self, expand, groupinfo, groupName):
- """Generate the C declaration for an enum"""
- groupElem = groupinfo.elem
-
- # Determine the required bit width for the enum group.
- # 32 is the default, which generates C enum types for the values.
- bitwidth = 32
-
- # If the constFlagBits preference is set, 64 is the default for bitmasks
- if self.genOpts.conventions.constFlagBits and groupElem.get('type') == 'bitmask':
- bitwidth = 64
-
- # Check for an explicitly defined bitwidth, which will override any defaults.
- if groupElem.get('bitwidth'):
- try:
- bitwidth = int(groupElem.get('bitwidth'))
- except ValueError as ve:
- self.logMsg('error', 'Invalid value for bitwidth attribute (', groupElem.get('bitwidth'), ') for ', groupName, ' - must be an integer value\n')
- exit(1)
-
- usebitmask = False
- usedefine = False
-
- # Bitmask flags can be generated as either "static const uint{32,64}_t" values,
- # or as 32-bit C enums. 64-bit types must use uint64_t values.
- if groupElem.get('type') == 'bitmask':
- if bitwidth > 32 or self.misracppstyle():
- usebitmask = True
- if self.misracstyle():
- usedefine = True
-
- if usedefine or usebitmask:
- # Validate the bitwidth and generate values appropriately
- if bitwidth > 64:
- self.logMsg('error', 'Invalid value for bitwidth attribute (', groupElem.get('bitwidth'), ') for bitmask type ', groupName, ' - must be less than or equal to 64\n')
- exit(1)
- else:
- return self.buildEnumCDecl_BitmaskOrDefine(groupinfo, groupName, bitwidth, usedefine)
- else:
- # Validate the bitwidth and generate values appropriately
- if bitwidth > 32:
- self.logMsg('error', 'Invalid value for bitwidth attribute (', groupElem.get('bitwidth'), ') for enum type ', groupName, ' - must be less than or equal to 32\n')
- exit(1)
- else:
- return self.buildEnumCDecl_Enum(expand, groupinfo, groupName)
-
- def buildEnumCDecl_BitmaskOrDefine(self, groupinfo, groupName, bitwidth, usedefine):
- """Generate the C declaration for an "enum" that is actually a
- set of flag bits"""
- groupElem = groupinfo.elem
- flagTypeName = groupElem.get('name')
-
- # Prefix
- body = "// Flag bits for " + flagTypeName + "\n"
-
- if bitwidth == 64:
- body += "typedef VkFlags64 %s;\n" % flagTypeName;
- else:
- body += "typedef VkFlags %s;\n" % flagTypeName;
-
- # Maximum allowable value for a flag (unsigned 64-bit integer)
- maxValidValue = 2**(64) - 1
- minValidValue = 0
-
- # Get a list of nested 'enum' tags.
- enums = groupElem.findall('enum')
-
- # Check for and report duplicates, and return a list with them
- # removed.
- enums = self.checkDuplicateEnums(enums)
-
- # Accumulate non-numeric enumerant values separately and append
- # them following the numeric values, to allow for aliases.
- # NOTE: this doesn't do a topological sort yet, so aliases of
- # aliases can still get in the wrong order.
- aliasText = ''
-
- # Loop over the nested 'enum' tags.
- for elem in enums:
- # Convert the value to an integer and use that to track min/max.
- # Values of form -(number) are accepted but nothing more complex.
- # Should catch exceptions here for more complex constructs. Not yet.
- (numVal, strVal) = self.enumToValue(elem, True, bitwidth, True)
- name = elem.get('name')
-
- # Range check for the enum value
- if numVal is not None and (numVal > maxValidValue or numVal < minValidValue):
- self.logMsg('error', 'Allowable range for flag types in C is [', minValidValue, ',', maxValidValue, '], but', name, 'flag has a value outside of this (', strVal, ')\n')
- exit(1)
-
- decl = self.genRequirements(name, mustBeFound = False)
-
- if self.isEnumRequired(elem):
- protect = elem.get('protect')
- if protect is not None:
- body += '#ifdef {}\n'.format(protect)
-
- if usedefine:
- decl += "#define {} {}\n".format(name, strVal)
- elif self.misracppstyle():
- decl += "static constexpr {} {} {{{}}};\n".format(flagTypeName, name, strVal)
- else:
- # Some C compilers only allow initializing a 'static const' variable with a literal value.
- # So initializing an alias from another 'static const' value would fail to compile.
- # Work around this by chasing the aliases to get the actual value.
- while numVal is None:
- alias = self.registry.tree.find("enums/enum[@name='" + strVal + "']")
- (numVal, strVal) = self.enumToValue(alias, True, bitwidth, True)
- decl += "static const {} {} = {};\n".format(flagTypeName, name, strVal)
-
- if numVal is not None:
- body += decl
- else:
- aliasText += decl
-
- if protect is not None:
- body += '#endif\n'
-
- # Now append the non-numeric enumerant values
- body += aliasText
-
- # Postfix
-
- return ("bitmask", body)
-
- def buildEnumCDecl_Enum(self, expand, groupinfo, groupName):
- """Generate the C declaration for an enumerated type"""
- groupElem = groupinfo.elem
-
- # Break the group name into prefix and suffix portions for range
- # enum generation
- expandName = re.sub(r'([0-9]+|[a-z_])([A-Z0-9])', r'\1_\2', groupName).upper()
- expandPrefix = expandName
- expandSuffix = ''
- expandSuffixMatch = re.search(r'[A-Z][A-Z]+$', groupName)
- if expandSuffixMatch:
- expandSuffix = '_' + expandSuffixMatch.group()
- # Strip off the suffix from the prefix
- expandPrefix = expandName.rsplit(expandSuffix, 1)[0]
-
- # Prefix
- body = ["typedef enum %s {" % groupName]
-
- # @@ Should use the type="bitmask" attribute instead
- isEnum = ('FLAG_BITS' not in expandPrefix)
-
- # Allowable range for a C enum - which is that of a signed 32-bit integer
- maxValidValue = 2**(32 - 1) - 1
- minValidValue = (maxValidValue * -1) - 1
-
-
- # Get a list of nested 'enum' tags.
- enums = groupElem.findall('enum')
-
- # Check for and report duplicates, and return a list with them
- # removed.
- enums = self.checkDuplicateEnums(enums)
-
- # Loop over the nested 'enum' tags. Keep track of the minimum and
- # maximum numeric values, if they can be determined; but only for
- # core API enumerants, not extension enumerants. This is inferred
- # by looking for 'extends' attributes.
- minName = None
-
- # Accumulate non-numeric enumerant values separately and append
- # them following the numeric values, to allow for aliases.
- # NOTE: this doesn't do a topological sort yet, so aliases of
- # aliases can still get in the wrong order.
- aliasText = []
-
- for elem in enums:
- # Convert the value to an integer and use that to track min/max.
- # Values of form -(number) are accepted but nothing more complex.
- # Should catch exceptions here for more complex constructs. Not yet.
- (numVal, strVal) = self.enumToValue(elem, True)
- name = elem.get('name')
-
- # Extension enumerants are only included if they are required
- if self.isEnumRequired(elem):
- decl = ''
-
- protect = elem.get('protect')
- if protect is not None:
- decl += '#ifdef {}\n'.format(protect)
-
- # Indent requirements comment, if there is one
- requirements = self.genRequirements(name, mustBeFound = False)
- if requirements != '':
- requirements = ' ' + requirements
- decl += requirements
- decl += ' {} = {},'.format(name, strVal)
-
- if protect is not None:
- decl += '\n#endif'
-
- if numVal is not None:
- body.append(decl)
- else:
- aliasText.append(decl)
-
- # Range check for the enum value
- if numVal is not None and (numVal > maxValidValue or numVal < minValidValue):
- self.logMsg('error', 'Allowable range for C enum types is [', minValidValue, ',', maxValidValue, '], but', name, 'has a value outside of this (', strVal, ')\n')
- exit(1)
-
- # Don't track min/max for non-numbers (numVal is None)
- if isEnum and numVal is not None and elem.get('extends') is None:
- if minName is None:
- minName = maxName = name
- minValue = maxValue = numVal
- elif numVal < minValue:
- minName = name
- minValue = numVal
- elif numVal > maxValue:
- maxName = name
- maxValue = numVal
-
- # Now append the non-numeric enumerant values
- body.extend(aliasText)
-
- # Generate min/max value tokens - legacy use case.
- if isEnum and expand:
- body.extend((" {}_BEGIN_RANGE{} = {},".format(expandPrefix, expandSuffix, minName),
- " {}_END_RANGE{} = {},".format(
- expandPrefix, expandSuffix, maxName),
- " {}_RANGE_SIZE{} = ({} - {} + 1),".format(expandPrefix, expandSuffix, maxName, minName)))
-
- # Generate a range-padding value to ensure the enum is 32 bits, but
- # only in code generators, so it doesn't appear in documentation
- if (self.genOpts.codeGenerator or
- self.conventions.generate_max_enum_in_docs):
- body.append(" {}_MAX_ENUM{} = 0x7FFFFFFF".format(
- expandPrefix, expandSuffix))
-
- # Postfix
- body.append("} %s;" % groupName)
-
- # Determine appropriate section for this declaration
- if groupElem.get('type') == 'bitmask':
- section = 'bitmask'
- else:
- section = 'group'
-
- return (section, '\n'.join(body))
-
- def buildConstantCDecl(self, enuminfo, name, alias):
- """Generate the C declaration for a constant (a single <enum>
- value).
-
- <enum> tags may specify their values in several ways, but are
- usually just integers or floating-point numbers."""
-
- (_, strVal) = self.enumToValue(enuminfo.elem, False)
-
- if self.misracppstyle() and enuminfo.elem.get('type') and not alias:
- # Generate e.g.: static constexpr uint32_t x = ~static_cast<uint32_t>(1U);
- # This appeases MISRA "underlying type" rules.
- typeStr = enuminfo.elem.get('type');
- invert = '~' in strVal
- number = strVal.strip("()~UL")
- if typeStr != "float":
- number += 'U'
- strVal = "~" if invert else ""
- strVal += "static_cast<" + typeStr + ">(" + number + ")"
- body = 'static constexpr ' + typeStr.ljust(9) + name.ljust(33) + ' {' + strVal + '};'
- elif enuminfo.elem.get('type') and not alias:
- # Generate e.g.: #define x (~0ULL)
- typeStr = enuminfo.elem.get('type');
- invert = '~' in strVal
- paren = '(' in strVal
- number = strVal.strip("()~UL")
- if typeStr != "float":
- if typeStr == "uint64_t":
- number += 'ULL'
- else:
- number += 'U'
- strVal = "~" if invert else ""
- strVal += number
- if paren:
- strVal = "(" + strVal + ")";
- body = '#define ' + name.ljust(33) + ' ' + strVal;
- else:
- body = '#define ' + name.ljust(33) + ' ' + strVal
-
- return body
-
- def makeDir(self, path):
- """Create a directory, if not already done.
-
- Generally called from derived generators creating hierarchies."""
- self.logMsg('diag', 'OutputGenerator::makeDir(' + path + ')')
- if path not in self.madeDirs:
- # This can get race conditions with multiple writers, see
- # https://stackoverflow.com/questions/273192/
- if not os.path.exists(path):
- os.makedirs(path)
- self.madeDirs[path] = None
-
- def beginFile(self, genOpts, suppress = False):
- """Start a new interface file
-
- - genOpts - GeneratorOptions controlling what's generated and how"""
- self.suppress = suppress
- self.genOpts = genOpts
- self.should_insert_may_alias_macro = \
- self.genOpts.conventions.should_insert_may_alias_macro(self.genOpts)
-
- # Try to import the API dictionary, api.py, if it exists. Nothing in
- # api.py cannot be extracted directly from the XML, and in the
- # future we should do that.
- if self.genOpts.genpath is not None:
- try:
- sys.path.insert(0, self.genOpts.genpath)
- import api
- self.apidict = api
- except ImportError:
- self.apidict = None
-
- self.conventions = genOpts.conventions
-
- # Open a temporary file for accumulating output.
- if self.genOpts.filename is not None and not self.suppress:
- self.outFile = tempfile.NamedTemporaryFile(mode='w', encoding='utf-8', newline='\n', delete=False)
- else:
- self.outFile = sys.stdout
-
- def endFile(self):
- if self.errFile:
- self.errFile.flush()
- if self.warnFile:
- self.warnFile.flush()
- if self.diagFile:
- self.diagFile.flush()
- if self.outFile != sys.stdout and self.outFile != sys.stderr:
- self.outFile.close()
-
- # On successfully generating output, move the temporary file to the
- # target file.
- if self.genOpts.filename is not None:
- if sys.platform == 'win32':
- directory = Path(self.genOpts.directory)
- if not Path.exists(directory):
- os.makedirs(directory)
- shutil.copy(self.outFile.name, self.genOpts.directory + '/' + self.genOpts.filename)
- os.remove(self.outFile.name)
- self.genOpts = None
-
- def beginFeature(self, interface, emit):
- """Write interface for a feature and tag generated features as having been done.
-
- - interface - element for the `<version>` / `<extension>` to generate
- - emit - actually write to the header only when True"""
- self.emit = emit
- self.featureName = interface.get('name')
- self.featureType = interface.get('type')
- # If there's an additional 'protect' attribute in the feature, save it
- self.featureExtraProtect = interface.get('protect')
-
- def endFeature(self):
- """Finish an interface file, closing it when done.
-
- Derived classes responsible for emitting feature"""
- self.featureName = None
- self.featureType = None
- self.featureExtraProtect = None
-
- def genRequirements(self, name, mustBeFound = True):
- """Generate text showing what core versions and extensions introduce
- an API. This exists in the base Generator class because it's used by
- the shared enumerant-generating interfaces (buildEnumCDecl, etc.).
- Here it returns an empty string for most generators, but can be
- overridden by e.g. DocGenerator.
-
- - name - name of the API
- - mustBeFound - If True, when requirements for 'name' cannot be
- determined, a warning comment is generated.
- """
-
- return ''
-
- def validateFeature(self, featureType, featureName):
- """Validate we're generating something only inside a `<feature>` tag"""
- if self.featureName is None:
- raise UserWarning('Attempt to generate', featureType,
- featureName, 'when not in feature')
-
- def genType(self, typeinfo, name, alias):
- """Generate interface for a type
-
- - typeinfo - TypeInfo for a type
-
- Extend to generate as desired in your derived class."""
- self.validateFeature('type', name)
-
- def genStruct(self, typeinfo, typeName, alias):
- """Generate interface for a C "struct" type.
-
- - typeinfo - TypeInfo for a type interpreted as a struct
-
- Extend to generate as desired in your derived class."""
- self.validateFeature('struct', typeName)
-
- # The mixed-mode <member> tags may contain no-op <comment> tags.
- # It is convenient to remove them here where all output generators
- # will benefit.
- for member in typeinfo.elem.findall('.//member'):
- for comment in member.findall('comment'):
- member.remove(comment)
-
- def genGroup(self, groupinfo, groupName, alias):
- """Generate interface for a group of enums (C "enum")
-
- - groupinfo - GroupInfo for a group.
-
- Extend to generate as desired in your derived class."""
-
- self.validateFeature('group', groupName)
-
- def genEnum(self, enuminfo, typeName, alias):
- """Generate interface for an enum (constant).
-
- - enuminfo - EnumInfo for an enum
- - name - enum name
-
- Extend to generate as desired in your derived class."""
- self.validateFeature('enum', typeName)
-
- def genCmd(self, cmd, cmdinfo, alias):
- """Generate interface for a command.
-
- - cmdinfo - CmdInfo for a command
-
- Extend to generate as desired in your derived class."""
- self.validateFeature('command', cmdinfo)
-
- def genSpirv(self, spirv, spirvinfo, alias):
- """Generate interface for a spirv element.
-
- - spirvinfo - SpirvInfo for a command
-
- Extend to generate as desired in your derived class."""
- return
-
- def makeProtoName(self, name, tail):
- """Turn a `<proto>` `<name>` into C-language prototype
- and typedef declarations for that name.
-
- - name - contents of `<name>` tag
- - tail - whatever text follows that tag in the Element"""
- return self.genOpts.apientry + name + tail
-
- def makeTypedefName(self, name, tail):
- """Make the function-pointer typedef name for a command."""
- return '(' + self.genOpts.apientryp + 'PFN_' + name + tail + ')'
-
- def makeCParamDecl(self, param, aligncol):
- """Return a string which is an indented, formatted
- declaration for a `<param>` or `<member>` block (e.g. function parameter
- or structure/union member).
-
- - param - Element (`<param>` or `<member>`) to format
- - aligncol - if non-zero, attempt to align the nested `<name>` element
- at this column"""
- indent = ' '
- paramdecl = indent
- prefix = noneStr(param.text)
-
- for elem in param:
- text = noneStr(elem.text)
- tail = noneStr(elem.tail)
-
- if self.should_insert_may_alias_macro and self.genOpts.conventions.is_voidpointer_alias(elem.tag, text, tail):
- # OpenXR-specific macro insertion - but not in apiinc for the spec
- tail = self.genOpts.conventions.make_voidpointer_alias(tail)
- if elem.tag == 'name' and aligncol > 0:
- self.logMsg('diag', 'Aligning parameter', elem.text, 'to column', self.genOpts.alignFuncParam)
- # Align at specified column, if possible
- paramdecl = paramdecl.rstrip()
- oldLen = len(paramdecl)
- # This works around a problem where very long type names -
- # longer than the alignment column - would run into the tail
- # text.
- paramdecl = paramdecl.ljust(aligncol - 1) + ' '
- newLen = len(paramdecl)
- self.logMsg('diag', 'Adjust length of parameter decl from', oldLen, 'to', newLen, ':', paramdecl)
-
- if (self.misracppstyle() and prefix.find('const ') != -1):
- # Change pointer type order from e.g. "const void *" to "void const *".
- # If the string starts with 'const', reorder it to be after the first type.
- paramdecl += prefix.replace('const ', '') + text + ' const' + tail
- else:
- paramdecl += prefix + text + tail
-
- # Clear prefix for subsequent iterations
- prefix = ''
- if aligncol == 0:
- # Squeeze out multiple spaces other than the indentation
- paramdecl = indent + ' '.join(paramdecl.split())
- return paramdecl
-
- def getCParamTypeLength(self, param):
- """Return the length of the type field is an indented, formatted
- declaration for a `<param>` or `<member>` block (e.g. function parameter
- or structure/union member).
-
- - param - Element (`<param>` or `<member>`) to identify"""
-
- # Allow for missing <name> tag
- newLen = 0
- paramdecl = ' ' + noneStr(param.text)
- for elem in param:
- text = noneStr(elem.text)
- tail = noneStr(elem.tail)
-
- if self.should_insert_may_alias_macro and self.genOpts.conventions.is_voidpointer_alias(elem.tag, text, tail):
- # OpenXR-specific macro insertion
- tail = self.genOpts.conventions.make_voidpointer_alias(tail)
- if elem.tag == 'name':
- # Align at specified column, if possible
- newLen = len(paramdecl.rstrip())
- self.logMsg('diag', 'Identifying length of', elem.text, 'as', newLen)
- paramdecl += text + tail
-
- return newLen
-
- def getMaxCParamTypeLength(self, info):
- """Return the length of the longest type field for a member/parameter.
-
- - info - TypeInfo or CommandInfo.
- """
- lengths = (self.getCParamTypeLength(member)
- for member in info.getMembers())
- return max(lengths)
-
- def getHandleParent(self, typename):
- """Get the parent of a handle object."""
- info = self.registry.typedict.get(typename)
- if info is None:
- return None
-
- elem = info.elem
- if elem is not None:
- return elem.get('parent')
-
- return None
-
- def iterateHandleAncestors(self, typename):
- """Iterate through the ancestors of a handle type."""
- current = self.getHandleParent(typename)
- while current is not None:
- yield current
- current = self.getHandleParent(current)
-
- def getHandleAncestors(self, typename):
- """Get the ancestors of a handle object."""
- return list(self.iterateHandleAncestors(typename))
-
- def getTypeCategory(self, typename):
- """Get the category of a type."""
- info = self.registry.typedict.get(typename)
- if info is None:
- return None
-
- elem = info.elem
- if elem is not None:
- return elem.get('category')
- return None
-
- def isStructAlwaysValid(self, structname):
- """Try to do check if a structure is always considered valid (i.e. there's no rules to its acceptance)."""
- # A conventions object is required for this call.
- if not self.conventions:
- raise RuntimeError("To use isStructAlwaysValid, be sure your options include a Conventions object.")
-
- if self.conventions.type_always_valid(structname):
- return True
-
- category = self.getTypeCategory(structname)
- if self.conventions.category_requires_validation(category):
- return False
-
- info = self.registry.typedict.get(structname)
- assert(info is not None)
-
- members = info.getMembers()
-
- for member in members:
- member_name = getElemName(member)
- if member_name in (self.conventions.structtype_member_name,
- self.conventions.nextpointer_member_name):
- return False
-
- if member.get('noautovalidity'):
- return False
-
- member_type = getElemType(member)
-
- if member_type in ('void', 'char') or self.paramIsArray(member) or self.paramIsPointer(member):
- return False
-
- if self.conventions.type_always_valid(member_type):
- continue
-
- member_category = self.getTypeCategory(member_type)
-
- if self.conventions.category_requires_validation(member_category):
- return False
-
- if member_category in ('struct', 'union'):
- if self.isStructAlwaysValid(member_type) is False:
- return False
-
- return True
-
- def isEnumRequired(self, elem):
- """Return True if this `<enum>` element is
- required, False otherwise
-
- - elem - `<enum>` element to test"""
- required = elem.get('required') is not None
- self.logMsg('diag', 'isEnumRequired:', elem.get('name'),
- '->', required)
- return required
-
- # @@@ This code is overridden by equivalent code now run in
- # @@@ Registry.generateFeature
-
- required = False
-
- extname = elem.get('extname')
- if extname is not None:
- # 'supported' attribute was injected when the <enum> element was
- # moved into the <enums> group in Registry.parseTree()
- if self.genOpts.defaultExtensions == elem.get('supported'):
- required = True
- elif re.match(self.genOpts.addExtensions, extname) is not None:
- required = True
- elif elem.get('version') is not None:
- required = re.match(self.genOpts.emitversions, elem.get('version')) is not None
- else:
- required = True
-
- return required
-
- def makeCDecls(self, cmd):
- """Return C prototype and function pointer typedef for a
- `<command>` Element, as a two-element list of strings.
-
- - cmd - Element containing a `<command>` tag"""
- proto = cmd.find('proto')
- params = cmd.findall('param')
- # Begin accumulating prototype and typedef strings
- pdecl = self.genOpts.apicall
- tdecl = 'typedef '
-
- # Insert the function return type/name.
- # For prototypes, add APIENTRY macro before the name
- # For typedefs, add (APIENTRY *<name>) around the name and
- # use the PFN_cmdnameproc naming convention.
- # Done by walking the tree for <proto> element by element.
- # etree has elem.text followed by (elem[i], elem[i].tail)
- # for each child element and any following text
- # Leading text
- pdecl += noneStr(proto.text)
- tdecl += noneStr(proto.text)
- # For each child element, if it's a <name> wrap in appropriate
- # declaration. Otherwise append its contents and tail contents.
- for elem in proto:
- text = noneStr(elem.text)
- tail = noneStr(elem.tail)
- if elem.tag == 'name':
- pdecl += self.makeProtoName(text, tail)
- tdecl += self.makeTypedefName(text, tail)
- else:
- pdecl += text + tail
- tdecl += text + tail
-
- if self.genOpts.alignFuncParam == 0:
- # Squeeze out multiple spaces - there is no indentation
- pdecl = ' '.join(pdecl.split())
- tdecl = ' '.join(tdecl.split())
-
- # Now add the parameter declaration list, which is identical
- # for prototypes and typedefs. Concatenate all the text from
- # a <param> node without the tags. No tree walking required
- # since all tags are ignored.
- # Uses: self.indentFuncProto
- # self.indentFuncPointer
- # self.alignFuncParam
- n = len(params)
- # Indented parameters
- if n > 0:
- indentdecl = '(\n'
- indentdecl += ',\n'.join(self.makeCParamDecl(p, self.genOpts.alignFuncParam)
- for p in params)
- indentdecl += ');'
- else:
- indentdecl = '(void);'
- # Non-indented parameters
- paramdecl = '('
- if n > 0:
- paramnames = []
- if self.misracppstyle():
- for p in params:
- param = ''
- firstIter = True;
- for t in p.itertext():
- if (firstIter):
- prefix = t
- firstIter = False
- else:
- # Change pointer type order from e.g. "const void *" to "void const *".
- # If the string starts with 'const', reorder it to be after the first type.
- if (prefix.find('const ') != -1):
- param += prefix.replace('const ', '') + t + ' const '
- else:
- param += prefix + t
- # Clear prefix for subsequent iterations
- prefix = ''
- paramnames.append(param);
- else:
- paramnames = (''.join(t for t in p.itertext())
- for p in params)
- paramdecl += ', '.join(paramnames)
- else:
- paramdecl += 'void'
- paramdecl += ");"
- return [pdecl + indentdecl, tdecl + paramdecl]
-
- def newline(self):
- """Print a newline to the output file (utility function)"""
- write('', file=self.outFile)
-
- def setRegistry(self, registry):
- self.registry = registry
diff --git a/codegen/vulkan/scripts/genspec.py b/codegen/vulkan/scripts/genspec.py
deleted file mode 100644
index dfa55cca..00000000
--- a/codegen/vulkan/scripts/genspec.py
+++ /dev/null
@@ -1,164 +0,0 @@
-#!/usr/bin/python3
-#
-# Copyright 2016-2021 The Khronos Group Inc.
-#
-# SPDX-License-Identifier: Apache-2.0
-"""This script builds a full release package including XHTML and PDF
-versions of the specification, including an optional list of
-extensions. Other files in the release directory are removed,
-including man pages, XHTML chunked, HTML, validity output, etc.
-
-The current branch must be fully committed and up to date when the
-script is run, with no outstanding un-added / un-committed files.
-After completing the build, suggestions for creating tags are made."""
-
-import time
-from datetime import date, timedelta
-
-
-def releaseNum():
- """Return the Vulkan release number, used for tags."""
- return '$REVISION'
-
-
-def buildOnFriday():
- """Return a date for the current, or upcoming if not already, Friday,
- which is when releases happen."""
- today = date.today()
- friday = today + timedelta((4 - today.weekday()) % 7)
- return friday
-
-
-def buildRelease(label,
- versions,
- extensions,
- ratified,
- outdir,
- apititle,
- xmlDir, xmlTargets,
- specDir, specTargets,
- miscSrc=None, miscDst=None, needRefSources=False):
- """Build a release.
-
- - `label` = textual label to use for target being generated
- - `versions` = list of core API versions to include
- - `extensions` = list of extension names to include
- - `ratified` = True if this is a ratified spec (one built without non-KHR extensions)
- - `outdir` = directory to generate specs in
- - `apititle` = extra title to apply to the specification
- - `xmlDir` = directory containing registry XML
- - `xmlTargets` = targets to build in xml/
- - `specDir` = directory containing spec source & Makefile
- - `specTargets` = targets to build
- - `miscSrc` = path to copy misc files from, if non-None
- - `miscDst` = path to copy misc files to, if non-None
- - `needRefSources` = True if ref pages must be extracted from the spec sources"""
-
- print('echo Info: Generating target=' + label,
- 'outdir=' + outdir)
-
- outarg = 'OUTDIR=' + outdir
-
- if versions != None and len(versions) > 0:
- versarg = 'VERSIONS="' + ' '.join(versions) + '"'
- else:
- versarg = ''
-
- if extensions != None and len(extensions) > 0:
- extarg = 'EXTENSIONS="' + ' '.join(extensions) + '"'
- else:
- extarg = ''
-
- if ratified:
- ratifiedarg = 'EXTRAATTRIBS="-a ratified_core_spec"'
- else:
- ratifiedarg = ''
-
- if apititle != None:
- titlearg = 'APITITLE="' + apititle + '"'
- else:
- titlearg = ''
-
- # print('echo Info: Creating directory and cleaning spec in', outdir)
- print('mkdir -p', outdir)
- print('(cd ', outdir, '&& rm -rf',
- 'html chunked pdf',
- 'man config checks',
- 'vkspec.html styleguide.html apispec.html apispec.pdf registry.html',
- ')')
-
- if xmlTargets != '':
- # print('echo Info: Generating headers and spec include files')
- print('cd', xmlDir)
- print('make', outarg, xmlTargets)
-
- # print('echo Info: Generating ref pages sources and spec targets')
- print('cd', specDir)
- print('make', outarg, 'clean')
- # This is a temporary workaround for a dependency bug - if any of the
- # specTargets require ref page sources, and they aren't already present
- # at the time the make is invoked, that target will not be built.
- if needRefSources:
- print('make', outarg, versarg, extarg, 'refpages')
- # Now make the actual targets.
- print('make -O -k -j 8',
- outarg, versarg, extarg, ratifiedarg, titlearg,
- 'NOTEOPTS="-a implementation-guide"',
- specTargets)
-
- if miscSrc != None and miscDst != None:
- print('mkdir -p', miscDst)
- print('cp', miscSrc + '/*.txt', miscDst + '/')
-
- print('')
-
-
-def buildBranch(targetDir = '',
- versions = '',
- extensions = '',
- ratified = False,
- apititle = '(NO TITLE SPECIFIED)',
- xmlTargets = '',
- specTargets = '',
- repoDir = '',
- outDir = '',
- needRefSources=False):
- """Build all target documents.
-
- - `repoDir` = path to the Vulkan git repo containing the specs
- - `outDir` = path to the output base directory in which targets are generated"""
-
- # Directory with vk.xml and generation tools
- xmlDir = repoDir + '/xml'
- # Directory with spec sources
- specDir = repoDir
- # Directory containing misc. files to copy to registry.
- # At present there are none, since GLSL extensions have moved to the
- # GLSL repository and are redirected from the Vulkan registy website.
- # These should be relative to repoDir and outDir, respectively
- miscSrc = None
- miscDst = None
-
- buildRelease(targetDir,
- versions,
- extensions,
- ratified,
- outDir + '/' + targetDir,
- apititle,
- xmlDir, xmlTargets,
- specDir, specTargets,
- miscSrc, miscDst,
- needRefSources)
-
-
-def createTags(releaseNum, tagdate):
- """Print commands to tag the git branches.
-
- - `releaseNum` = release number of this spec update, to tag the tree with
- - `tagdate` = date (used to be used to tag the tree with)"""
- # Tag date in YYYYMMDD format
- now = tagdate.strftime('%Y%m%d')
-
- print('echo To tag the spec branch for this release, execute the command:')
- print('echo git tag -a -m \\"Tag Vulkan API specification for 1.2.' +
- releaseNum, 'release\\"', 'v1.2.' + releaseNum)
diff --git a/codegen/vulkan/scripts/genvk.py b/codegen/vulkan/scripts/genvk.py
deleted file mode 100755
index 02cd1a5c..00000000
--- a/codegen/vulkan/scripts/genvk.py
+++ /dev/null
@@ -1,854 +0,0 @@
-#!/usr/bin/python3
-#
-# Copyright 2013-2021 The Khronos Group Inc.
-#
-# SPDX-License-Identifier: Apache-2.0
-
-import argparse
-import pdb
-import re
-import sys
-import time
-import xml.etree.ElementTree as etree
-
-from cgenerator import CGeneratorOptions, COutputGenerator
-from cerealgenerator import CerealGenerator
-from docgenerator import DocGeneratorOptions, DocOutputGenerator
-from extensionmetadocgenerator import (ExtensionMetaDocGeneratorOptions,
- ExtensionMetaDocOutputGenerator)
-from interfacedocgenerator import InterfaceDocGenerator
-from generator import write
-from spirvcapgenerator import SpirvCapabilityOutputGenerator
-from hostsyncgenerator import HostSynchronizationOutputGenerator
-from pygenerator import PyOutputGenerator
-from rubygenerator import RubyOutputGenerator
-from reflib import logDiag, logWarn, setLogFile
-from reg import Registry
-from validitygenerator import ValidityOutputGenerator
-from vkconventions import VulkanConventions
-
-
-# Simple timer functions
-startTime = None
-
-
-def startTimer(timeit):
- global startTime
- if timeit:
- startTime = time.process_time()
-
-
-def endTimer(timeit, msg):
- global startTime
- if timeit:
- endTime = time.process_time()
- logDiag(msg, endTime - startTime)
- startTime = None
-
-
-def makeREstring(strings, default=None, strings_are_regex=False):
- """Turn a list of strings into a regexp string matching exactly those strings."""
- if strings or default is None:
- if not strings_are_regex:
- strings = (re.escape(s) for s in strings)
- return '^(' + '|'.join(strings) + ')$'
- return default
-
-
-def makeGenOpts(args):
- """Returns a directory of [ generator function, generator options ] indexed
- by specified short names. The generator options incorporate the following
- parameters:
-
- args is an parsed argument object; see below for the fields that are used."""
- global genOpts
- genOpts = {}
-
- # Default class of extensions to include, or None
- defaultExtensions = args.defaultExtensions
-
- # Additional extensions to include (list of extensions)
- extensions = args.extension
-
- # Extensions to remove (list of extensions)
- removeExtensions = args.removeExtensions
-
- # Extensions to emit (list of extensions)
- emitExtensions = args.emitExtensions
-
- # SPIR-V capabilities / features to emit (list of extensions & capabilities)
- emitSpirv = args.emitSpirv
-
- # Features to include (list of features)
- features = args.feature
-
- # Whether to disable inclusion protect in headers
- protect = args.protect
-
- # Output target directory
- directory = args.directory
-
- # Path to generated files, particularly api.py
- genpath = args.genpath
-
- # Generate MISRA C-friendly headers
- misracstyle = args.misracstyle;
-
- # Generate MISRA C++-friendly headers
- misracppstyle = args.misracppstyle;
-
- # Descriptive names for various regexp patterns used to select
- # versions and extensions
- allSpirv = allFeatures = allExtensions = r'.*'
-
- # Turn lists of names/patterns into matching regular expressions
- addExtensionsPat = makeREstring(extensions, None)
- removeExtensionsPat = makeREstring(removeExtensions, None)
- emitExtensionsPat = makeREstring(emitExtensions, allExtensions)
- emitSpirvPat = makeREstring(emitSpirv, allSpirv)
- featuresPat = makeREstring(features, allFeatures)
-
- # Copyright text prefixing all headers (list of strings).
- # The SPDX formatting below works around constraints of the 'reuse' tool
- prefixStrings = [
- '/*',
- '** Copyright 2015-2021 The Khronos Group Inc.',
- '**',
- '** SPDX' + '-License-Identifier: Apache-2.0',
- '*/',
- ''
- ]
-
- # Text specific to Vulkan headers
- vkPrefixStrings = [
- '/*',
- '** This header is generated from the Khronos Vulkan XML API Registry.',
- '**',
- '*/',
- ''
- ]
-
- # Defaults for generating re-inclusion protection wrappers (or not)
- protectFile = protect
-
- # An API style conventions object
- conventions = VulkanConventions()
-
- # API include files for spec and ref pages
- # Overwrites include subdirectories in spec source tree
- # The generated include files do not include the calling convention
- # macros (apientry etc.), unlike the header files.
- # Because the 1.0 core branch includes ref pages for extensions,
- # all the extension interfaces need to be generated, even though
- # none are used by the core spec itself.
- genOpts['apiinc'] = [
- DocOutputGenerator,
- DocGeneratorOptions(
- conventions = conventions,
- filename = 'timeMarker',
- directory = directory,
- genpath = genpath,
- apiname = 'vulkan',
- profile = None,
- versions = featuresPat,
- emitversions = featuresPat,
- defaultExtensions = None,
- addExtensions = addExtensionsPat,
- removeExtensions = removeExtensionsPat,
- emitExtensions = emitExtensionsPat,
- prefixText = prefixStrings + vkPrefixStrings,
- apicall = '',
- apientry = '',
- apientryp = '*',
- alignFuncParam = 48,
- expandEnumerants = False)
- ]
-
- # Python representation of API information, used by scripts that
- # don't need to load the full XML.
- genOpts['api.py'] = [
- PyOutputGenerator,
- DocGeneratorOptions(
- conventions = conventions,
- filename = 'api.py',
- directory = directory,
- genpath = None,
- apiname = 'vulkan',
- profile = None,
- versions = featuresPat,
- emitversions = featuresPat,
- defaultExtensions = None,
- addExtensions = addExtensionsPat,
- removeExtensions = removeExtensionsPat,
- emitExtensions = emitExtensionsPat,
- reparentEnums = False)
- ]
-
- # Ruby representation of API information, used by scripts that
- # don't need to load the full XML.
- genOpts['api.rb'] = [
- RubyOutputGenerator,
- DocGeneratorOptions(
- conventions = conventions,
- filename = 'api.rb',
- directory = directory,
- genpath = None,
- apiname = 'vulkan',
- profile = None,
- versions = featuresPat,
- emitversions = featuresPat,
- defaultExtensions = None,
- addExtensions = addExtensionsPat,
- removeExtensions = removeExtensionsPat,
- emitExtensions = emitExtensionsPat,
- reparentEnums = False)
- ]
-
-
- # API validity files for spec
- #
- # requireCommandAliases is set to True because we need validity files
- # for the command something is promoted to even when the promoted-to
- # feature is not included. This avoids wordy includes of validity files.
- genOpts['validinc'] = [
- ValidityOutputGenerator,
- DocGeneratorOptions(
- conventions = conventions,
- filename = 'timeMarker',
- directory = directory,
- genpath = None,
- apiname = 'vulkan',
- profile = None,
- versions = featuresPat,
- emitversions = featuresPat,
- defaultExtensions = None,
- addExtensions = addExtensionsPat,
- removeExtensions = removeExtensionsPat,
- emitExtensions = emitExtensionsPat,
- requireCommandAliases = True,
- )
- ]
-
- # Serializer for spec
- genOpts['cereal'] = [
- CerealGenerator,
- CGeneratorOptions(
- conventions = conventions,
- filename = "CMakeLists.txt",
- directory = directory,
- apiname = 'vulkan',
- profile = None,
- versions = featuresPat,
- emitversions = featuresPat,
- defaultExtensions = defaultExtensions,
- addExtensions = None,
- removeExtensions = removeExtensionsPat,
- emitExtensions = emitExtensionsPat,
- prefixText = prefixStrings + vkPrefixStrings,
- genFuncPointers = True,
- protectFile = protectFile,
- protectFeature = False,
- protectProto = '#ifndef',
- protectProtoStr = 'VK_NO_PROTOTYPES',
- apicall = 'VKAPI_ATTR ',
- apientry = 'VKAPI_CALL ',
- apientryp = 'VKAPI_PTR *',
- alignFuncParam = 48)
- ]
-
- gfxstreamPrefixStrings = [
- '// Copyright (C) 2022 The Android Open Source Project',
- '// Copyright (C) 2022 Google Inc.',
- '//',
- '// Licensed under the Apache License, Version 2.0 (the "License");',
- '// you may not use this file except in compliance with the License.',
- '// You may obtain a copy of the License at',
- '//',
- '// http://www.apache.org/licenses/LICENSE-2.0',
- '//',
- '// Unless required by applicable law or agreed to in writing, software',
- '// distributed under the License is distributed on an "AS IS" BASIS,',
- '// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.',
- '// See the License for the specific language governing permissions and',
- '// limitations under the License.',
- '//',
- '// Autogenerated header vulkan_gfxstream.h',
- '// Please do not modify directly;',
- '// re-run gfxstream-protocols/scripts/generate-vulkan-sources.sh,',
- '// or directly from Python by calling the genvk.py script with correct parameters.',
- '',
- '#pragma once',
- '#ifdef VK_GFXSTREAM_STRUCTURE_TYPE_EXT',
- '#include "vulkan_gfxstream_structure_type.h"',
- '#endif',
- ]
- # gfxstream specific header
- genOpts['vulkan_gfxstream.h'] = [
- COutputGenerator,
- CGeneratorOptions(
- conventions = conventions,
- filename = 'vulkan_gfxstream.h',
- directory = directory,
- genpath = None,
- apiname = 'vulkan',
- profile = None,
- versions = featuresPat,
- emitversions = None,
- defaultExtensions = None,
- addExtensions = makeREstring(['VK_GOOGLE_gfxstream'], None),
- removeExtensions = None,
- emitExtensions = makeREstring(['VK_GOOGLE_gfxstream'], None),
- prefixText = gfxstreamPrefixStrings,
- genFuncPointers = True,
- # Use #pragma once in the prefixText instead, so that we can put the copyright comments
- # at the beginning of the file.
- protectFile = False,
- protectFeature = False,
- protectProto = '#ifndef',
- protectProtoStr = 'VK_NO_PROTOTYPES',
- apicall = 'VKAPI_ATTR ',
- apientry = 'VKAPI_CALL ',
- apientryp = 'VKAPI_PTR *',
- alignFuncParam = 48,
- misracstyle = misracstyle,
- misracppstyle = misracppstyle)
- ]
-
- androidNativeBufferPrefixStrings = [
- '// Copyright (C) 2022 The Android Open Source Project',
- '// Copyright (C) 2022 Google Inc.',
- '//',
- '// Licensed under the Apache License, Version 2.0 (the "License");',
- '// you may not use this file except in compliance with the License.',
- '// You may obtain a copy of the License at',
- '//',
- '// http://www.apache.org/licenses/LICENSE-2.0',
- '//',
- '// Unless required by applicable law or agreed to in writing, software',
- '// distributed under the License is distributed on an "AS IS" BASIS,',
- '// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.',
- '// See the License for the specific language governing permissions and',
- '// limitations under the License.',
- '//',
- '// Autogenerated header vk_android_native_buffer.h',
- '// Please do not modify directly;',
- '// re-run gfxstream-protocols/scripts/generate-vulkan-sources.sh,',
- '// or directly from Python by calling the genvk.py script with correct parameters.',
- '',
- '#pragma once',
- '#ifndef VK_ANDROID_native_buffer',
- '#include "vk_android_native_buffer_structure_type.h"',
- '#endif /* VK_ANDROID_native_buffer */',
- ]
- # header
- genOpts['vk_android_native_buffer.h'] = [
- COutputGenerator,
- CGeneratorOptions(
- conventions = conventions,
- filename = 'vk_android_native_buffer.h',
- directory = directory,
- genpath = None,
- apiname = 'vulkan',
- profile = None,
- versions = featuresPat,
- emitversions = None,
- defaultExtensions = None,
- addExtensions = makeREstring(['VK_ANDROID_native_buffer'], None),
- removeExtensions = None,
- emitExtensions = makeREstring(['VK_ANDROID_native_buffer'], None),
- prefixText = androidNativeBufferPrefixStrings,
- genFuncPointers = True,
- # Use #pragma once in the prefixText instead, so that we can put the copyright comments
- # at the beginning of the file.
- protectFile = False,
- protectFeature = True,
- protectProto = '#ifndef',
- protectProtoStr = 'VK_NO_PROTOTYPES',
- apicall = 'VKAPI_ATTR ',
- apientry = 'VKAPI_CALL ',
- apientryp = 'VKAPI_PTR *',
- alignFuncParam = 48,
- misracstyle = misracstyle,
- misracppstyle = misracppstyle)
- ]
-
- # API host sync table files for spec
- genOpts['hostsyncinc'] = [
- HostSynchronizationOutputGenerator,
- DocGeneratorOptions(
- conventions = conventions,
- filename = 'timeMarker',
- directory = directory,
- genpath = None,
- apiname = 'vulkan',
- profile = None,
- versions = featuresPat,
- emitversions = featuresPat,
- defaultExtensions = None,
- addExtensions = addExtensionsPat,
- removeExtensions = removeExtensionsPat,
- emitExtensions = emitExtensionsPat,
- reparentEnums = False)
- ]
-
- # Extension metainformation for spec extension appendices
- # Includes all extensions by default, but only so that the generated
- # 'promoted_extensions_*' files refer to all extensions that were
- # promoted to a core version.
- genOpts['extinc'] = [
- ExtensionMetaDocOutputGenerator,
- ExtensionMetaDocGeneratorOptions(
- conventions = conventions,
- filename = 'timeMarker',
- directory = directory,
- genpath = None,
- apiname = 'vulkan',
- profile = None,
- versions = featuresPat,
- emitversions = None,
- defaultExtensions = defaultExtensions,
- addExtensions = addExtensionsPat,
- removeExtensions = None,
- emitExtensions = emitExtensionsPat)
- ]
-
- # Version and extension interface docs for version/extension appendices
- # Includes all extensions by default.
- genOpts['interfaceinc'] = [
- InterfaceDocGenerator,
- DocGeneratorOptions(
- conventions = conventions,
- filename = 'timeMarker',
- directory = directory,
- genpath = None,
- apiname = 'vulkan',
- profile = None,
- versions = featuresPat,
- emitversions = featuresPat,
- defaultExtensions = None,
- addExtensions = addExtensionsPat,
- removeExtensions = removeExtensionsPat,
- emitExtensions = emitExtensionsPat,
- reparentEnums = False)
- ]
-
- genOpts['spirvcapinc'] = [
- SpirvCapabilityOutputGenerator,
- DocGeneratorOptions(
- conventions = conventions,
- filename = 'timeMarker',
- directory = directory,
- genpath = None,
- apiname = 'vulkan',
- profile = None,
- versions = featuresPat,
- emitversions = featuresPat,
- defaultExtensions = None,
- addExtensions = addExtensionsPat,
- removeExtensions = removeExtensionsPat,
- emitExtensions = emitExtensionsPat,
- emitSpirv = emitSpirvPat,
- reparentEnums = False)
- ]
-
- # Platform extensions, in their own header files
- # Each element of the platforms[] array defines information for
- # generating a single platform:
- # [0] is the generated header file name
- # [1] is the set of platform extensions to generate
- # [2] is additional extensions whose interfaces should be considered,
- # but suppressed in the output, to avoid duplicate definitions of
- # dependent types like VkDisplayKHR and VkSurfaceKHR which come from
- # non-platform extensions.
-
- # Track all platform extensions, for exclusion from vulkan_core.h
- allPlatformExtensions = []
-
- # Extensions suppressed for all WSI platforms (WSI extensions required
- # by all platforms)
- commonSuppressExtensions = [ 'VK_KHR_display', 'VK_KHR_swapchain' ]
-
- # Extensions required and suppressed for beta "platform". This can
- # probably eventually be derived from the requires= attributes of
- # the extension blocks.
- betaRequireExtensions = [
- 'VK_KHR_portability_subset',
- 'VK_KHR_video_queue',
- 'VK_KHR_video_decode_queue',
- 'VK_KHR_video_encode_queue',
- 'VK_EXT_video_decode_h264',
- 'VK_EXT_video_decode_h265',
- 'VK_EXT_video_encode_h264',
- 'VK_EXT_video_encode_h265',
- ]
-
- betaSuppressExtensions = []
-
- platforms = [
- [ 'vulkan_android.h', [ 'VK_KHR_android_surface',
- 'VK_ANDROID_external_memory_android_hardware_buffer'
- ], commonSuppressExtensions +
- [ 'VK_KHR_format_feature_flags2',
- ] ],
- [ 'vulkan_fuchsia.h', [ 'VK_FUCHSIA_imagepipe_surface',
- 'VK_FUCHSIA_external_memory',
- 'VK_FUCHSIA_external_semaphore',
- 'VK_FUCHSIA_buffer_collection' ], commonSuppressExtensions ],
- [ 'vulkan_ggp.h', [ 'VK_GGP_stream_descriptor_surface',
- 'VK_GGP_frame_token' ], commonSuppressExtensions ],
- [ 'vulkan_ios.h', [ 'VK_MVK_ios_surface' ], commonSuppressExtensions ],
- [ 'vulkan_macos.h', [ 'VK_MVK_macos_surface' ], commonSuppressExtensions ],
- [ 'vulkan_vi.h', [ 'VK_NN_vi_surface' ], commonSuppressExtensions ],
- [ 'vulkan_wayland.h', [ 'VK_KHR_wayland_surface' ], commonSuppressExtensions ],
- [ 'vulkan_win32.h', [ 'VK_.*_win32(|_.*)', 'VK_EXT_full_screen_exclusive' ],
- commonSuppressExtensions +
- [ 'VK_KHR_external_semaphore',
- 'VK_KHR_external_memory_capabilities',
- 'VK_KHR_external_fence',
- 'VK_KHR_external_fence_capabilities',
- 'VK_KHR_get_surface_capabilities2',
- 'VK_NV_external_memory_capabilities',
- ] ],
- [ 'vulkan_xcb.h', [ 'VK_KHR_xcb_surface' ], commonSuppressExtensions ],
- [ 'vulkan_xlib.h', [ 'VK_KHR_xlib_surface' ], commonSuppressExtensions ],
- [ 'vulkan_directfb.h', [ 'VK_EXT_directfb_surface' ], commonSuppressExtensions ],
- [ 'vulkan_xlib_xrandr.h', [ 'VK_EXT_acquire_xlib_display' ], commonSuppressExtensions ],
- [ 'vulkan_metal.h', [ 'VK_EXT_metal_surface' ], commonSuppressExtensions ],
- [ 'vulkan_screen.h', [ 'VK_QNX_screen_surface' ], commonSuppressExtensions ],
- [ 'vulkan_beta.h', betaRequireExtensions, betaSuppressExtensions ],
- ]
-
- for platform in platforms:
- headername = platform[0]
-
- allPlatformExtensions += platform[1]
-
- addPlatformExtensionsRE = makeREstring(
- platform[1] + platform[2], strings_are_regex=True)
- emitPlatformExtensionsRE = makeREstring(
- platform[1], strings_are_regex=True)
-
- opts = CGeneratorOptions(
- conventions = conventions,
- filename = headername,
- directory = directory,
- genpath = None,
- apiname = 'vulkan',
- profile = None,
- versions = featuresPat,
- emitversions = None,
- defaultExtensions = None,
- addExtensions = addPlatformExtensionsRE,
- removeExtensions = None,
- emitExtensions = emitPlatformExtensionsRE,
- prefixText = prefixStrings + vkPrefixStrings,
- genFuncPointers = True,
- protectFile = protectFile,
- protectFeature = False,
- protectProto = '#ifndef',
- protectProtoStr = 'VK_NO_PROTOTYPES',
- apicall = 'VKAPI_ATTR ',
- apientry = 'VKAPI_CALL ',
- apientryp = 'VKAPI_PTR *',
- alignFuncParam = 48,
- misracstyle = misracstyle,
- misracppstyle = misracppstyle)
-
- genOpts[headername] = [ COutputGenerator, opts ]
-
- # Header for core API + extensions.
- # To generate just the core API,
- # change to 'defaultExtensions = None' below.
- #
- # By default this adds all enabled, non-platform extensions.
- # It removes all platform extensions (from the platform headers options
- # constructed above) as well as any explicitly specified removals.
-
- removeExtensionsPat = makeREstring(
- allPlatformExtensions + removeExtensions, None, strings_are_regex=True)
-
- genOpts['vulkan_core.h'] = [
- COutputGenerator,
- CGeneratorOptions(
- conventions = conventions,
- filename = 'vulkan_core.h',
- directory = directory,
- genpath = None,
- apiname = 'vulkan',
- profile = None,
- versions = featuresPat,
- emitversions = featuresPat,
- defaultExtensions = defaultExtensions,
- addExtensions = addExtensionsPat,
- removeExtensions = removeExtensionsPat,
- emitExtensions = emitExtensionsPat,
- prefixText = prefixStrings + vkPrefixStrings,
- genFuncPointers = True,
- protectFile = protectFile,
- protectFeature = False,
- protectProto = '#ifndef',
- protectProtoStr = 'VK_NO_PROTOTYPES',
- apicall = 'VKAPI_ATTR ',
- apientry = 'VKAPI_CALL ',
- apientryp = 'VKAPI_PTR *',
- alignFuncParam = 48,
- misracstyle = misracstyle,
- misracppstyle = misracppstyle)
- ]
-
- # Unused - vulkan10.h target.
- # It is possible to generate a header with just the Vulkan 1.0 +
- # extension interfaces defined, but since the promoted KHR extensions
- # are now defined in terms of the 1.1 interfaces, such a header is very
- # similar to vulkan_core.h.
- genOpts['vulkan10.h'] = [
- COutputGenerator,
- CGeneratorOptions(
- conventions = conventions,
- filename = 'vulkan10.h',
- directory = directory,
- genpath = None,
- apiname = 'vulkan',
- profile = None,
- versions = 'VK_VERSION_1_0',
- emitversions = 'VK_VERSION_1_0',
- defaultExtensions = None,
- addExtensions = None,
- removeExtensions = None,
- emitExtensions = None,
- prefixText = prefixStrings + vkPrefixStrings,
- genFuncPointers = True,
- protectFile = protectFile,
- protectFeature = False,
- protectProto = '#ifndef',
- protectProtoStr = 'VK_NO_PROTOTYPES',
- apicall = 'VKAPI_ATTR ',
- apientry = 'VKAPI_CALL ',
- apientryp = 'VKAPI_PTR *',
- alignFuncParam = 48,
- misracstyle = misracstyle,
- misracppstyle = misracppstyle)
- ]
-
- # Unused - vulkan11.h target.
- # It is possible to generate a header with just the Vulkan 1.0 +
- # extension interfaces defined, but since the promoted KHR extensions
- # are now defined in terms of the 1.1 interfaces, such a header is very
- # similar to vulkan_core.h.
- genOpts['vulkan11.h'] = [
- COutputGenerator,
- CGeneratorOptions(
- conventions = conventions,
- filename = 'vulkan11.h',
- directory = directory,
- genpath = None,
- apiname = 'vulkan',
- profile = None,
- versions = '^VK_VERSION_1_[01]$',
- emitversions = '^VK_VERSION_1_[01]$',
- defaultExtensions = None,
- addExtensions = None,
- removeExtensions = None,
- emitExtensions = None,
- prefixText = prefixStrings + vkPrefixStrings,
- genFuncPointers = True,
- protectFile = protectFile,
- protectFeature = False,
- protectProto = '#ifndef',
- protectProtoStr = 'VK_NO_PROTOTYPES',
- apicall = 'VKAPI_ATTR ',
- apientry = 'VKAPI_CALL ',
- apientryp = 'VKAPI_PTR *',
- alignFuncParam = 48,
- misracstyle = misracstyle,
- misracppstyle = misracppstyle)
- ]
-
- genOpts['alias.h'] = [
- COutputGenerator,
- CGeneratorOptions(
- conventions = conventions,
- filename = 'alias.h',
- directory = directory,
- genpath = None,
- apiname = 'vulkan',
- profile = None,
- versions = featuresPat,
- emitversions = featuresPat,
- defaultExtensions = defaultExtensions,
- addExtensions = None,
- removeExtensions = removeExtensionsPat,
- emitExtensions = emitExtensionsPat,
- prefixText = None,
- genFuncPointers = False,
- protectFile = False,
- protectFeature = False,
- protectProto = '',
- protectProtoStr = '',
- apicall = '',
- apientry = '',
- apientryp = '',
- alignFuncParam = 36)
- ]
-
-
-def genTarget(args):
- """Create an API generator and corresponding generator options based on
- the requested target and command line options.
-
- This is encapsulated in a function so it can be profiled and/or timed.
- The args parameter is an parsed argument object containing the following
- fields that are used:
-
- - target - target to generate
- - directory - directory to generate it in
- - protect - True if re-inclusion wrappers should be created
- - extensions - list of additional extensions to include in generated interfaces"""
-
- # Create generator options with parameters specified on command line
- makeGenOpts(args)
-
- # pdb.set_trace()
-
- # Select a generator matching the requested target
- if args.target in genOpts:
- createGenerator = genOpts[args.target][0]
- options = genOpts[args.target][1]
-
- logDiag('* Building', options.filename)
- logDiag('* options.versions =', options.versions)
- logDiag('* options.emitversions =', options.emitversions)
- logDiag('* options.defaultExtensions =', options.defaultExtensions)
- logDiag('* options.addExtensions =', options.addExtensions)
- logDiag('* options.removeExtensions =', options.removeExtensions)
- logDiag('* options.emitExtensions =', options.emitExtensions)
-
- gen = createGenerator(errFile=errWarn,
- warnFile=errWarn,
- diagFile=diag)
- return (gen, options)
- else:
- logErr('No generator options for unknown target:', args.target)
- return None
-
-
-# -feature name
-# -extension name
-# For both, "name" may be a single name, or a space-separated list
-# of names, or a regular expression.
-if __name__ == '__main__':
- parser = argparse.ArgumentParser()
-
- parser.add_argument('-defaultExtensions', action='store',
- default='vulkan',
- help='Specify a single class of extensions to add to targets')
- parser.add_argument('-extension', action='append',
- default=[],
- help='Specify an extension or extensions to add to targets')
- parser.add_argument('-removeExtensions', action='append',
- default=[],
- help='Specify an extension or extensions to remove from targets')
- parser.add_argument('-emitExtensions', action='append',
- default=[],
- help='Specify an extension or extensions to emit in targets')
- parser.add_argument('-emitSpirv', action='append',
- default=[],
- help='Specify a SPIR-V extension or capability to emit in targets')
- parser.add_argument('-feature', action='append',
- default=[],
- help='Specify a core API feature name or names to add to targets')
- parser.add_argument('-debug', action='store_true',
- help='Enable debugging')
- parser.add_argument('-dump', action='store_true',
- help='Enable dump to stderr')
- parser.add_argument('-diagfile', action='store',
- default=None,
- help='Write diagnostics to specified file')
- parser.add_argument('-errfile', action='store',
- default=None,
- help='Write errors and warnings to specified file instead of stderr')
- parser.add_argument('-noprotect', dest='protect', action='store_false',
- help='Disable inclusion protection in output headers')
- parser.add_argument('-profile', action='store_true',
- help='Enable profiling')
- parser.add_argument('-registry', action='store',
- default='vk.xml',
- help='Use specified registry file instead of vk.xml')
- parser.add_argument('-time', action='store_true',
- help='Enable timing')
- parser.add_argument('-validate', action='store_true',
- help='Validate the registry properties and exit')
- parser.add_argument('-genpath', action='store', default='gen',
- help='Path to generated files')
- parser.add_argument('-o', action='store', dest='directory',
- default='.',
- help='Create target and related files in specified directory')
- parser.add_argument('target', metavar='target', nargs='?',
- help='Specify target')
- parser.add_argument('-quiet', action='store_true', default=True,
- help='Suppress script output during normal execution.')
- parser.add_argument('-verbose', action='store_false', dest='quiet', default=True,
- help='Enable script output during normal execution.')
- parser.add_argument('-misracstyle', dest='misracstyle', action='store_true',
- help='generate MISRA C-friendly headers')
- parser.add_argument('-misracppstyle', dest='misracppstyle', action='store_true',
- help='generate MISRA C++-friendly headers')
-
- args = parser.parse_args()
-
- # This splits arguments which are space-separated lists
- args.feature = [name for arg in args.feature for name in arg.split()]
- args.extension = [name for arg in args.extension for name in arg.split()]
-
- # create error/warning & diagnostic files
- if args.errfile:
- errWarn = open(args.errfile, 'w', encoding='utf-8')
- else:
- errWarn = sys.stderr
-
- if args.diagfile:
- diag = open(args.diagfile, 'w', encoding='utf-8')
- else:
- diag = None
-
- if args.time:
- # Log diagnostics and warnings
- setLogFile(setDiag = True, setWarn = True, filename = '-')
-
- (gen, options) = (None, None)
- if not args.validate:
- # Create the API generator & generator options
- (gen, options) = genTarget(args)
-
- # Create the registry object with the specified generator and generator
- # options. The options are set before XML loading as they may affect it.
- reg = Registry(gen, options)
-
- # Parse the specified registry XML into an ElementTree object
- startTimer(args.time)
- tree = etree.parse(args.registry)
- endTimer(args.time, '* Time to make ElementTree =')
-
- # Load the XML tree into the registry object
- startTimer(args.time)
- reg.loadElementTree(tree)
- endTimer(args.time, '* Time to parse ElementTree =')
-
- if args.validate:
- success = reg.validateRegistry()
- sys.exit(0 if success else 1)
-
- if args.dump:
- logDiag('* Dumping registry to regdump.txt')
- reg.dumpReg(filehandle=open('regdump.txt', 'w', encoding='utf-8'))
-
- # Finally, use the output generator to create the requested target
- if args.debug:
- pdb.run('reg.apiGen()')
- else:
- startTimer(args.time)
- reg.apiGen()
- endTimer(args.time, '* Time to generate ' + options.filename + ' =')
-
- if not args.quiet:
- logDiag('* Generated', options.filename)
diff --git a/codegen/vulkan/scripts/globalizeIncludes b/codegen/vulkan/scripts/globalizeIncludes
deleted file mode 100755
index 3fad7776..00000000
--- a/codegen/vulkan/scripts/globalizeIncludes
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/sh
-#
-# Copyright 2019-2021 The Khronos Group Inc.
-#
-# SPDX-License-Identifier: Apache-2.0
-
-# globalizeIncludes - rewrites generated include::, and image:/image::
-# asciidoctor directives in specified Vulkan specification source files to
-# be relative to specified attributes {generated} and {images}, ensuring
-# they work properly when extracted to reference pages.
-#
-# usage: globalizeIncludes filenames
-# Updates specified files in-place, so make sure they're backed up first.
-
-sed -i -E \
- -e 's#image:images/#image:{images}/#g' \
- -e 's#image::images/#image::{images}/#g' \
- -e 's#include::(\.\./)*(api|validity|hostsynctable)#include::{generated}/\2#g' \
- $*
-
-# Not yet:
-# -e 's#include::meta/#include::{generated}/meta/#g' \
diff --git a/codegen/vulkan/scripts/hostsyncgenerator.py b/codegen/vulkan/scripts/hostsyncgenerator.py
deleted file mode 100644
index a94db149..00000000
--- a/codegen/vulkan/scripts/hostsyncgenerator.py
+++ /dev/null
@@ -1,154 +0,0 @@
-#!/usr/bin/python3 -i
-#
-# Copyright 2013-2021 The Khronos Group Inc.
-#
-# SPDX-License-Identifier: Apache-2.0
-
-from generator import OutputGenerator, write
-from spec_tools.attributes import ExternSyncEntry
-from spec_tools.validity import ValidityCollection, ValidityEntry
-from spec_tools.util import getElemName
-
-
-class HostSynchronizationOutputGenerator(OutputGenerator):
- """HostSynchronizationOutputGenerator - subclass of OutputGenerator.
- Generates AsciiDoc includes of the externsync parameter table for the
- fundamentals chapter of the API specification. Similar to
- DocOutputGenerator.
-
- ---- methods ----
- HostSynchronizationOutputGenerator(errFile, warnFile, diagFile) - args as for
- OutputGenerator. Defines additional internal state.
- ---- methods overriding base class ----
- genCmd(cmdinfo)"""
- # Generate Host Synchronized Parameters in a table at the top of the spec
-
- threadsafety = {
- 'parameters': ValidityCollection(),
- 'parameterlists': ValidityCollection(),
- 'implicit': ValidityCollection()
- }
-
- def makeParameterName(self, name):
- return 'pname:' + name
-
- def makeFLink(self, name):
- return 'flink:' + name
-
- def writeBlock(self, basename, title, contents):
- """Generate an include file.
-
- - directory - subdirectory to put file in
- - basename - base name of the file
- - contents - contents of the file (Asciidoc boilerplate aside)"""
- filename = self.genOpts.directory + '/' + basename
- self.logMsg('diag', '# Generating include file:', filename)
- with open(filename, 'w', encoding='utf-8') as fp:
- write(self.genOpts.conventions.warning_comment, file=fp)
-
- if contents:
- write('.%s' % title, file=fp)
- write('****', file=fp)
- write(contents, file=fp, end='')
- write('****', file=fp)
- write('', file=fp)
- else:
- self.logMsg('diag', '# No contents for:', filename)
-
- def writeInclude(self):
- "Generates the asciidoc include files."""
- self.writeBlock('parameters.txt',
- 'Externally Synchronized Parameters',
- self.threadsafety['parameters'])
- self.writeBlock('parameterlists.txt',
- 'Externally Synchronized Parameter Lists',
- self.threadsafety['parameterlists'])
- self.writeBlock('implicit.txt',
- 'Implicit Externally Synchronized Parameters',
- self.threadsafety['implicit'])
-
- def paramIsArray(self, param):
- """Check if the parameter passed in is a pointer to an array."""
- return param.get('len') is not None
-
- def paramIsPointer(self, param):
- """Check if the parameter passed in is a pointer."""
- tail = param.find('type').tail
- return tail is not None and '*' in tail
-
- def makeThreadSafetyBlocks(self, cmd, paramtext):
- # See also makeThreadSafetyBlock in validitygenerator.py - similar but not entirely identical
- protoname = cmd.find('proto/name').text
-
- # Find and add any parameters that are thread unsafe
- explicitexternsyncparams = cmd.findall(paramtext + "[@externsync]")
- if explicitexternsyncparams is not None:
- for param in explicitexternsyncparams:
- self.makeThreadSafetyForParam(protoname, param)
-
- # Find and add any "implicit" parameters that are thread unsafe
- implicitexternsyncparams = cmd.find('implicitexternsyncparams')
- if implicitexternsyncparams is not None:
- for elem in implicitexternsyncparams:
- entry = ValidityEntry()
- entry += elem.text
- entry += ' in '
- entry += self.makeFLink(protoname)
- self.threadsafety['implicit'] += entry
-
- # Add a VU for any command requiring host synchronization.
- # This could be further parameterized, if a future non-Vulkan API
- # requires it.
- if self.genOpts.conventions.is_externsync_command(protoname):
- entry = ValidityEntry()
- entry += 'The sname:VkCommandPool that pname:commandBuffer was allocated from, in '
- entry += self.makeFLink(protoname)
- self.threadsafety['implicit'] += entry
-
- def makeThreadSafetyForParam(self, protoname, param):
- """Create thread safety validity for a single param of a command."""
- externsyncattribs = ExternSyncEntry.parse_externsync_from_param(param)
- param_name = getElemName(param)
-
- for attrib in externsyncattribs:
- entry = ValidityEntry()
- is_array = False
- if attrib.entirely_extern_sync:
- # "true" or "true_with_children"
- if self.paramIsArray(param):
- entry += 'Each element of the '
- is_array = True
- elif self.paramIsPointer(param):
- entry += 'The object referenced by the '
- else:
- entry += 'The '
-
- entry += self.makeParameterName(param_name)
- entry += ' parameter'
-
- if attrib.children_extern_sync:
- entry += ', and any child handles,'
-
- else:
- # parameter/member reference
- readable = attrib.get_human_readable(make_param_name=self.makeParameterName)
- is_array = (' element of ' in readable)
- entry += readable
-
- entry += ' in '
- entry += self.makeFLink(protoname)
-
- if is_array:
- self.threadsafety['parameterlists'] += entry
- else:
- self.threadsafety['parameters'] += entry
-
- def genCmd(self, cmdinfo, name, alias):
- "Generate command."
- OutputGenerator.genCmd(self, cmdinfo, name, alias)
-
- # @@@ (Jon) something needs to be done here to handle aliases, probably
-
- self.makeThreadSafetyBlocks(cmdinfo.elem, 'param')
-
- self.writeInclude()
diff --git a/codegen/vulkan/scripts/htmldiff/htmldiff b/codegen/vulkan/scripts/htmldiff/htmldiff
deleted file mode 100755
index a3361c75..00000000
--- a/codegen/vulkan/scripts/htmldiff/htmldiff
+++ /dev/null
@@ -1,135 +0,0 @@
-#!/usr/bin/env python3
-#
-# Modified from the htmldiff script developed by Dominique Hazael-Massieux
-# for the http://services.w3.org/htmldiff website.
-# License information found at https://github.com/w3c/htmldiff-ui/blob/master/LICENSE
-# for "htmldiffy.py".
-#
-# Copyright (c) 2008-2020 w3c
-# Copyright (c) 2016-2021, The Khronos Group Inc.
-# SPDX-License-Identifier: MIT
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in all
-# copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-# SOFTWARE.
-
-import atexit
-import os
-import re
-import sys
-import tempfile
-import tidy
-
-from subprocess import Popen, PIPE
-
-def tidyFile(filename):
- ifp = open(filename, 'r')
-
- # option for tidy
- options = dict(tidy_mark=0,show_warnings=0,quiet=1,char_encoding='utf8')
- html5 = re.search(r"<!doctype\s+html\s*>", ifp.read(4096),
- re.IGNORECASE)
- ifp.seek(0)
- html5_options = {'add_xml_space': 'no',
- 'output_xhtml': 'no',
- 'tidy_mark': 'no',
- 'new_blocklevel_tags': 'article,aside,canvas,dialog,details,figcaption,figure,footer,header,hgroup,menu,nav,section,main,summary,math,semantics,mrow,mfenced,mtable,mtr,mtd,mi,mn,msub,mo,mfrac,munderover,mtext,svg,g,image,rect,text,desc,line,path,polygon,ellipse,tspan,defs,feoffset,fecolormatrix,filter,fegaussianblur,feblend,marker,circle',
- 'new_inline_tags': 'video,audio,canvas,ruby,rt,rp,time,meter,progress,track,source,emu-val,emu-nt,emu-t,mark',
- 'break_before_br': 'no',
- 'vertical_space': 'no',
- 'enclose_text': 'no',
- 'numeric_entities': 'yes',
- 'wrap': '1000',
- 'wrap_attributes': 'no',
- 'drop_empty_paras': 'no'
- }
- if html5:
- options.update(html5_options)
- newtidy = tidy.parseString(ifp.read(), **options)
- if len(newtidy.errors) > 0:
- if not html5:
- ifp.seek(0)
- options.update(html5_options)
- newtidy = tidy.parseString(ifp.read(), **options)
- ifp.close()
-
- fp = tempfile.NamedTemporaryFile(
- mode='w+', prefix='htmldiff-', suffix='.html')
- atexit.register(fp.close)
- fp.write(str(newtidy))
- fp.flush()
- fp.seek(0)
-
- # sys.stderr.write('tidyFile: tempfile name %s\n' % fp.name)
-
- if (newtidy.errors):
- sys.stderr.write('tidyFile: tidy.parseString error: %s\n' % str(newtidy.errors))
- return fp
-
-def call_perl(args):
-
- scriptdir = os.path.abspath(os.path.dirname(sys.argv[0]))
- perlscript = os.path.join(scriptdir, 'htmldiff.pl')
- cmd = [perlscript]
- cmd.extend(args)
- p = Popen(cmd,
- text=True,
- stdin=PIPE, stdout=PIPE, stderr=PIPE)
- sys.stdout.flush()
- sys.stderr.flush()
- (out, err) = p.communicate()
- p.stdin.close()
- if err:
- print(out)
- sys.stderr.write('htmldiff: An error occurred when running htmldiff.pl on the documents: %s\n'% str(err))
- exit(1)
- else:
- print(out)
- exit(0)
-
-def usage():
- # didn't investigate fully what -c does - something about mhtml comments?
- sys.stderr.write("""htmldiff: need two filename args file1 file2
-
-May also pass arguments:
- -l Make diff highlights links that jump to the following diff
- -t Add a script to optionally hide old text via button
- -o Complete omit old text
- -h show this text
-""")
- sys.exit(1)
-
-if __name__ == '__main__':
-
- docs = []
- passthru_args = []
- for arg in sys.argv[1:]:
- if arg in ('-c', '-l', '-t', '-o'):
- passthru_args.append(arg)
- elif arg == '-h':
- usage()
- else:
- docs.append(arg)
-
- if (len(docs) != 2):
- usage()
- refdoc = tidyFile(docs[0])
-
- newdoc = tidyFile(docs[1])
- passthru_args.append(refdoc.name)
- passthru_args.append(newdoc.name)
- call_perl(passthru_args)
diff --git a/codegen/vulkan/scripts/htmldiff/htmldiff.pl b/codegen/vulkan/scripts/htmldiff/htmldiff.pl
deleted file mode 100755
index af2a6cd2..00000000
--- a/codegen/vulkan/scripts/htmldiff/htmldiff.pl
+++ /dev/null
@@ -1,581 +0,0 @@
-#!/usr/bin/perl
-#
-# htmldiff - present a diff marked version of two html documents
-#
-# Copyright (c) 1998-2006 MACS, Inc.
-#
-# Copyright (c) 2007 SiSco, Inc.
-#
-# SPDX-License-Identifier: MIT
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be
-# included in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-# See http://www.themacs.com for more information.
-#
-# usage: htmldiff [[-c] [-l] [-o] oldversion newversion [output]]
-#
-# -c - disable metahtml comment processing
-# -o - disable outputting of old text
-# -l - use navindex to create sequence of diffs
-# oldversion - the previous version of the document
-# newversion - the newer version of the document
-# output - a filename to place the output in. If omitted, the output goes to
-# standard output.
-#
-# if invoked with no options or arguments, operates as a CGI script. It then
-# takes the following parameters:
-#
-# oldfile - the URL of the original file
-# newfile - the URL of the new file
-# mhtml - a flag to indicate whether it should be aware of MetaHTML comments.
-#
-# requires GNU diff utility
-# also requires the perl modules Getopt::Std
-#
-# NOTE: The markup created by htmldiff may not validate against the HTML 4.0
-# DTD. This is because the algorithm is realtively simple, and there are
-# places in the markup content model where the span element is not allowed.
-# Htmldiff is NOT aware of these places.
-#
-# $Source: /u/sources/public/2009/htmldiff/htmldiff.pl,v $
-# $Revision: 1.3 $
-#
-# $Log: htmldiff.pl,v $
-# Revision 1.3 2016/10/24 15:06:51 dom
-# Summary: Use nav script always
-#
-# Revision 1.2 2016/10/24 15:04:28 dom
-# Add navigation script
-#
-# Revision 1.1 2014-01-06 08:04:51 dom
-# added copy of htmldiff perl script since aptest.com repo no longer available
-#
-# Revision 1.5 2008/03/05 13:23:16 ahby
-# Fixed a problem with leading whitespace before markup.
-#
-# Revision 1.4 2007/12/13 13:09:16 ahby
-# Updated copyright and license.
-#
-# Revision 1.3 2007/12/13 12:53:34 ahby
-# Changed use of span to ins and del
-#
-# Revision 1.2 2002/02/13 16:27:23 ahby
-# Changed processing model.
-# Improved handling of old text and changed styles.
-#
-# Revision 1.1 2000/07/12 12:20:04 ahby
-# Updated to remove empty spans - this fixes validation problems under
-# strict.
-#
-# Revision 1.11 1999/12/08 19:46:45 ahby
-# Fixed validation errors introduced by placing markup where it didn't
-# belong.
-#
-# Revision 1.10 1999/10/18 13:42:58 ahby
-# Added -o to the usage message.
-#
-# Revision 1.9 1999/05/04 12:29:11 ahby
-# Added an option to turn off the display of old text.
-#
-# Revision 1.8 1999/04/09 14:37:27 ahby
-# Fixed a perl syntax error.
-#
-# Revision 1.7 1999/04/09 14:35:49 ahby
-# Added reference to MACS homepage.
-#
-# Revision 1.6 1999/04/09 14:35:09 ahby
-# Added comment about validity of generated markup.
-#
-# Revision 1.5 1999/02/22 22:17:54 ahby
-# Changed to use stylesheets.
-# Changed to rely upon span.
-# Changed to work around content model problems.
-#
-# Revision 1.4 1999/02/08 02:32:22 ahby
-# Added a copyright statement.
-#
-# Revision 1.3 1999/02/08 02:30:40 ahby
-# Added header processing.
-#
-# Revision 1.2 1998/12/10 17:31:31 ahby
-# Fixed to escape less-thans in change blocks and to not permit change
-# markup within specific elements (like TITLE).
-#
-# Revision 1.1 1998/11/26 00:09:22 ahby
-# Initial revision
-#
-#
-
-use Getopt::Std;
-
-sub usage {
- print STDERR "htmldiff [-c] [-o] oldversion newversion [output]\n";
- exit;
-}
-
-sub url_encode {
- my $str = shift;
- $str =~ s/([\x00-\x1f\x7F-\xFF])/
- sprintf ('%%%02x', ord ($1))/eg;
- return $str;
-}
-
-# markit - diff-mark the streams
-#
-# markit(file1, file2)
-#
-# markit relies upon GNUdiff to mark up the text.
-#
-# The markup is encoded using special control sequences:
-#
-# a block wrapped in control-a is deleted text
-# a block wrapped in control-b is old text
-# a block wrapped in control-c is new text
-#
-# The main processing loop attempts to wrap the text blocks in appropriate
-# SPANs based upon the type of text that it is.
-#
-# When the loop encounters a < in the text, it stops the span. Then it outputs
-# the element that is defined, then it restarts the span.
-
-sub markit {
- my $retval = "";
- my($file1) = shift;
- my($file2) = shift;
-# my $old="<span class=\\\"diff-old-a\\\">deleted text: </span>%c'\012'%c'\001'%c'\012'%<%c'\012'%c'\001'%c'\012'";
- my $old="%c'\012'%c'\001'%c'\012'%<%c'\012'%c'\001'%c'\012'";
- my $new="%c'\012'%c'\003'%c'\012'%>%c'\012'%c'\003'%c'\012'";
- my $unchanged="%=";
- my $changed="%c'\012'%c'\001'%c'\012'%<%c'\012'%c'\001'%c'\012'%c'\004'%c'\012'%>%c'\012'%c'\004'%c'\012'";
- if ($opt_o) {
- $old = "";
- $changed = "%c'\012'%c'\004'%c'\012'%>%c'\012'%c'\004'%c'\012'";
- }
-# my $old="%c'\002'<font color=\\\"purple\\\" size=\\\"-2\\\">deleted text:</font><s>%c'\012'%c'\001'%c'\012'%<%c'\012'%c'\001'%c'\012'</s>%c'\012'%c'\002'";
-# my $new="%c'\002'<font color=\\\"purple\\\"><u>%c'\012'%c'\002'%>%c'\002'</u></font>%c'\002'%c'\012'";
-# my $unchanged="%=";
-# my $changed="%c'\002'<s>%c'\012'%c'\001'%c'\012'%<%c'\012'%c'\001'%c'\012'</s><font color=\\\"purple\\\"><u>%c'\002'%c'\012'%>%c'\012'%c'\002'</u></font>%c'\002'%c'\012'";
-
- my @span;
- $span[0]="</span>";
- $span[1]="<del class=\"diff-old\">";
- $span[2]="<del class=\"diff-old\">";
- $span[3]="<ins class=\"diff-new\">";
- $span[4]="<ins class=\"diff-chg\">";
-
- my @diffEnd ;
- $diffEnd[1] = '</del>';
- $diffEnd[2] = '</del>';
- $diffEnd[3] = '</ins>';
- $diffEnd[4] = '</ins>';
-
- my $diffcounter = 0;
-
- open(FILE, qq(diff -d --old-group-format="$old" --new-group-format="$new" --changed-group-format="$changed" --unchanged-group-format="$unchanged" $file1 $file2 |)) || die("Diff failed: $!");
-# system (qq(diff --old-group-format="$old" --new-group-format="$new" --changed-group-format="$changed" --unchanged-group-format="$unchanged" $file1 $file2 > /tmp/output));
-
- my $state = 0;
- my $inblock = 0;
- my $temp = "";
- my $lineCount = 0;
-
-# strategy:
-#
-# process the output of diff...
-#
-# a link with control A-D means the start/end of the corresponding ordinal
-# state (1-4). Resting state is state 0.
-#
-# While in a state, accumulate the contents for that state. When exiting the
-# state, determine if it is appropriate to emit the contents with markup or
-# not (basically, if the accumulated buffer contains only empty lines or lines
-# with markup, then we don't want to emit the wrappers. We don't need them.
-#
-# Note that if there is markup in the "old" block, that markup is silently
-# removed. It isn't really that interesting, and it messes up the output
-# something fierce.
-
- while (<FILE>) {
- my $nextCounter = $diffcounter + 1;
- my $anchor = $opt_l ? qq[<a tabindex="$diffcounter" id="diff-$diffcounter" href="#diff-$nextCounter">] : "" ;
- my $anchorEnd = $opt_l ? q[</a>] : "" ;
- $lineCount ++;
- if ($state == 0) { # if we are resting and we find a marker,
- # then we must be entering a block
- if (m/^([\001-\004])/) {
- $state = ord($1);
- $_ = "";
- }
-# if (m/^\001/) {
-# $state = 1;
-# s/^/$span[1]/;
-# } elsif (m/^\002/) {
-# $state = 2;
-# s/^/$span[2]/;
-# } elsif (m/^\003/) {
-# $state = 3;
-# s/^/$span[3]/;
-# } elsif (m/^\004/) {
-# $state = 4;
-# s/^/$span[4]/;
-# }
- } else {
- # if we are in "old" state, remove markup
- if (($state == 1) || ($state == 2)) {
- s/\<.*\>//; # get rid of any old markup
- s/\</&lt;/g; # escape any remaining STAG or ETAGs
- s/\>/&gt;/g;
- }
- # if we found another marker, we must be exiting the state
- if (m/^([\001-\004])/) {
- if ($temp ne "") {
- $_ = $span[$state] . $anchor . $temp . $anchorEnd . $diffEnd[$state] . "\n";
- $temp = "";
- $diffcounter++;
- } else {
- $_ = "" ;
- }
- $state = 0;
- } elsif (m/^\s*\</) { # otherwise, is this line markup?
- # if it is markup AND we haven't seen anything else yet,
- # then we will emit the markup
- if ($temp eq "") {
- $retval .= $_;
- $_ = "";
- } else { # we wrap it with the state switches and hold it
- s/^/$anchorEnd$diffEnd[$state]/;
- s/$/$span[$state]$anchor/;
- $temp .= $_;
- $_ = "";
- $diffcounter++;
- }
- } else {
- if (m/.+/) {
- $temp .= $_;
- $_ = "";
- }
- }
- }
-
- s/\001//g;
- s/\002//g;
- s/\003//g;
- s/\004//g;
- if ($_ !~ m/^$/) {
- $retval .= $_;
- }
- }
- close FILE;
- $retval =~ s/$span[1]\n+$diffEnd[1]//g;
- $retval =~ s/$span[2]\n+$diffEnd[2]//g;
- $retval =~ s/$span[3]\n+$diffEnd[3]//g;
- $retval =~ s/$span[4]\n+$diffEnd[4]//g;
- $retval =~ s/$span[1]\n*$//g;
- $retval =~ s/$span[2]\n*$//g;
- $retval =~ s/$span[3]\n*$//g;
- $retval =~ s/$span[4]\n*$//g;
- return $retval;
-}
-
-sub splitit {
- my $filename = shift;
- my $headertmp = shift;
- my $inheader=0;
- my $preformatted=0;
- my $inelement=0;
- my $retval = "";
- my $styles = q(<style type='text/css'>
-.diff-old-a {
- font-size: smaller;
- color: red;
-}
-.diff-new a { text-decoration: none; }
-.diff-new { background-color: yellow; }
-.diff-chg { background-color: lime; }
-.diff-chg a { text-decoration: none; }
-.diff-new:before,
-.diff-new:after
- { content: "\2191" }
-.diff-chg:before, .diff-chg:after
- { content: "\2195" }
-.diff-old { text-decoration: line-through; background-color: #FBB; }
-.diff-old:before,
-.diff-old:after
- { content: "\2193" }
-.diff-old a { text-decoration: none; }
-:focus { border: thin red solid}
-</style>
-<script src="https://www.w3.org/2016/10/htmldiff-nav.js"></script>);
- if ($opt_t) {
- $styles .= q(
-<script type="text/javascript">
-<!--
-function setOldDisplay() {
- for ( var s = 0; s < document.styleSheets.length; s++ ) {
- var css = document.styleSheets[s];
- var mydata ;
- try { mydata = css.cssRules ;
- if ( ! mydata ) mydata = css.rules;
- for ( var r = 0; r < mydata.length; r++ ) {
- if ( mydata[r].selectorText == '.diff-old' ) {
- mydata[r].style.display = ( mydata[r].style.display == '' ) ? 'none'
-: '';
- return;
- }
- }
- } catch(e) {} ;
- }
-}
--->
-</script>
-);
-
- }
-
- if ($stripheader) {
- open(HEADER, ">$headertmp");
- }
-
- my $incomment = 0;
- my $inhead = 1;
- open(FILE, $filename) || die("File $filename cannot be opened: $!");
- while (<FILE>) {
- if ($inhead == 1) {
- if (m/\<\/head/i) {
- print HEADER $styles;
- }
- if (m/\<body/i) {
- $inhead = 0;
- print HEADER;
- if ($opt_t) {
- print HEADER q(
-<form action=""><input type="button" onclick="setOldDisplay()" value="Show/Hide Old Content" /></form>
-);
- }
- if ($opt_l) {
- print HEADER q(
- <p><em>NOTE: Click highlighted diff text to jump to the following difference.</em></p>
- );
- }
- close HEADER;
- } else {
- print HEADER;
- }
- } else {
- if ($incomment) {
- if (m;-->;) {
- $incomment = 0;
- s/.*-->//;
- } else {
- next;
- }
- }
- if (m;<!--;) {
- while (m;<!--.*-->;) {
- s/<!--.*?-->//;
- }
- if (m;<!--; ) {
- $incomment = 1;
- s/<!--.*//;
- }
- }
- if (m/\<pre/i) {
- $preformatted = 1;
- }
- if (m/\<\/pre\>/i) {
- $preformatted = 0;
- }
- if ($preformatted) {
- $retval .= $_;
- } elsif ($mhtmlcomments && /^;;;/) {
- $retval .= $_;
- } else {
- my @list = split(' ');
- foreach $element (@list) {
- if ($element =~ m/\<H[1-6]/i) {
-# $inheader = 1;
- }
- if ($inheader == 0) {
- $element =~ s/</\n</g;
- $element =~ s/^\n//;
- $element =~ s/>/>\n/g;
- $element =~ s/\n$//;
- $element =~ s/>\n([.,:!]+)/>$1/g;
- }
- if ($element =~ m/\<\/H[1-6]\>/i) {
- $inheader = 0;
- }
- $retval .= "$element";
- $inelement += ($element =~ s/</&lt;/g);
- $inelement -= ($element =~ s/>/&gt;/g);
- if ($inelement < 0) {
- $inelement = 0;
- }
- if (($inelement == 0) && ($inheader == 0)) {
- $retval .= "\n";
- } else {
- $retval .= " ";
- }
- }
- undef @list;
- }
- }
- }
- $retval .= "\n";
- close FILE;
- return $retval;
-}
-
-$mhtmlcomments = 1;
-
-sub cli {
- getopts("clto") || usage();
-
- if ($opt_c) {$mhtmlcomments = 0;}
-
- if (@ARGV < 2) { usage(); }
-
- $file1 = $ARGV[0];
- $file2 = $ARGV[1];
- $file3 = $ARGV[2];
-
- $tmp = splitit($file1, $headertmp1);
- open (FILE, ">$tmp1");
- print FILE $tmp;
- close FILE;
-
- $tmp = splitit($file2, $headertmp2);
- open (FILE, ">$tmp2");
- print FILE $tmp;
- close FILE;
-
- $output = "";
-
- if ($stripheader) {
- open(FILE, $headertmp2);
- while (<FILE>) {
- $output .= $_;
- }
- close(FILE);
- }
-
- $output .= markit($tmp1, $tmp2);
-
- if ($file3) {
- open(FILE, ">$file3");
- print FILE $output;
- close FILE;
- } else {
- print $output;
- }
-}
-
-sub cgi {
-# use LWP::UserAgent;
-# use CGI;
-
- my $query = new CGI;
- my $url1 = $query->param("oldfile");
- my $url2 = $query->param("newfile");
- my $mhtml = $query->param("mhtml");
-
- my $file1 = "/tmp/htdcgi1.$$";
- my $file2 = "/tmp/htdcgi2.$$";
-
- my $ua = new LWP::UserAgent;
- $ua->agent("MACS, Inc. HTMLdiff/0.9 " . $ua->agent);
-
- # Create a request
-
- my $req1 = new HTTP::Request GET => $url1;
-
- my $res1 = $ua->request($req1, $file1);
- if ($res1->is_error) {
- print $res1->error_as_HTML();
- print "<p>The URL $url1 could not be found. Please check it and try again.</p>";
- return;
- }
-
- my $req2 = new HTTP::Request GET => $url2;
-
- my $res2 = $ua->request($req2, $file2);
- if ($res2->is_error) {
- print $res2->error_as_HTML();
- print "<p>The URL $url2 could not be found. Please check it and try again.</p>";
- return;
- }
-
- $split1 = splitit($file1, $headertmp1);
- open (FILE, ">$tmp1");
- print FILE $split1;
- close FILE;
-
- $split2 = splitit($file2, $headertmp2);
- open (FILE, ">$tmp2");
- print FILE $split2;
- close FILE;
-
- $output = "";
-
- if ($stripheader) {
- open(FILE, $headertmp2);
- while (<FILE>) {
- $output .= $_;
- }
- close(FILE);
- }
-
- $output .= markit($tmp1, $tmp2);
-
- my $base=$res2->base;
-
- if ($base !~ /\/$/) {
- $base =~ s/[^\/]*$//;
- }
-
- if ( $output !~ /<base/i ) {
- $output =~ s/<head>/<head>\n<base href="$base">/i ||
- $output =~ s/<html>/<html>\n<base href="$base">/i ;
- }
-
- print $query->header(-type=>'text/html',-nph=>1);
- print $output;
-
- unlink $file1;
- unlink $file2;
-
-}
-
-$tmp1="/tmp/htdtmp1.$$";
-$headertmp1="/tmp/htdhtmp1.$$";
-$tmp2="/tmp/htdtmp2.$$";
-$headertmp2="/tmp/htdhtmp2.$$";
-$stripheader = 1;
-
-if (@ARGV == 0) {
- cgi(); # if no arguments, we must be operating as a cgi script
-} else {
- cli(); # if there are arguments, then we are operating as a CLI
-}
-
-unlink $tmp1;
-unlink $headertmp1;
-unlink $tmp2;
-unlink $headertmp2;
diff --git a/codegen/vulkan/scripts/indexExt.py b/codegen/vulkan/scripts/indexExt.py
deleted file mode 100755
index 4eeb4f3b..00000000
--- a/codegen/vulkan/scripts/indexExt.py
+++ /dev/null
@@ -1,90 +0,0 @@
-#!/usr/bin/python3
-#
-# Copyright 2017-2021 The Khronos Group Inc.
-#
-# SPDX-License-Identifier: Apache-2.0
-
-# Construct an HTML fragment indexing extension appendices in vkspec.html.
-# This is run only when publishing an update spec, to update the Vulkan
-# registry.
-
-import argparse,io,os,re,string,sys,copy
-import xml.etree.ElementTree as etree
-
-def listExts(vendor, ext, tag):
- prefix = ' <li> <b> '
- suffix = ' </b> </li>'
-
- if vendor in tag:
- desc = vendor + ' Extensions (' + tag[vendor] + ')'
- else:
- desc = vendor + ' Extensions (full vendor description unavailable)'
- print(prefix, desc, suffix)
-
- # (OLD) Links to the extension appendix in the single-page HTML document.
- # This is very slow to load.
- # fmtString = ' <li> <a href="specs/1.2-extensions/html/vkspec.html#{0}"> {0} </a> </li>'
-
- # This links to the individual per-extension refpages, which are a
- # slightly modified version of the extension appendices, and far faster
- # to load.
- fmtString = ' <li> <a href="specs/1.2-extensions/man/html/{0}.html"> {0} </a> </li>'
-
- for name in sorted(ext[vendor]):
- print(fmtString.format(name))
-
-# -extension name - may be a single extension name, a a space-separated list
-# of names, or a regular expression.
-if __name__ == '__main__':
- parser = argparse.ArgumentParser()
-
- parser.add_argument('-registry', action='store',
- default='vk.xml',
- help='Use specified registry file instead of vk.xml')
- parser.add_argument('-quiet', action='store_true', default=False,
- help='Suppress script output during normal execution.')
-
- args = parser.parse_args()
-
- tree = etree.parse(args.registry)
-
- # Dictionary of vendor tags -> author name mappings
- tag = {}
-
- # Loop over all vendor tags, tracking the full corresponding author name
- for elem in tree.findall('tags/tag'):
- vendor = elem.get('name')
- author = elem.get('author')
-
- tag[vendor] = author
-
- # Dictionary of supported extensions, indexed by vendor prefix
- ext = {}
-
- # Loop over all extensions, add supported names to the dictionary
- for elem in tree.findall('extensions/extension'):
- name = elem.get('name')
- supported = elem.get('supported')
-
- if supported == 'vulkan':
- # Relies on name being in the form VK_<vendor>_stuff
- (vk, vendor) = name.split('_')[0:2]
-
- if not vendor in ext:
- ext[vendor] = []
- ext[vendor].append(name)
-
- # Emit HTML fragment indexing the extensions
-
- print('<ul>')
-
- for vendor in ['KHR', 'EXT']:
- if vendor in ext:
- listExts(vendor, ext, tag)
- del ext[vendor]
-
- for vendor in sorted(ext.keys()):
- listExts(vendor, ext, tag)
- del ext[vendor]
-
- print('</ul>')
diff --git a/codegen/vulkan/scripts/interfacedocgenerator.py b/codegen/vulkan/scripts/interfacedocgenerator.py
deleted file mode 100644
index 05fafbc0..00000000
--- a/codegen/vulkan/scripts/interfacedocgenerator.py
+++ /dev/null
@@ -1,118 +0,0 @@
-#!/usr/bin/python3 -i
-#
-# Copyright 2013-2021 The Khronos Group Inc.
-#
-# SPDX-License-Identifier: Apache-2.0
-
-import re
-from generator import OutputGenerator, write
-
-def interfaceDocSortKey(item):
- if item == None:
- return '\0'
- else:
- return item.casefold()
-
-class InterfaceDocGenerator(OutputGenerator):
- """InterfaceDocGenerator - subclass of OutputGenerator.
- Generates AsciiDoc includes of the interfaces added by a an API version
- or extension."""
-
- def __init__(self, *args, **kwargs):
- super().__init__(*args, **kwargs)
- self.features = []
-
- def beginFile(self, genOpts):
- OutputGenerator.beginFile(self, genOpts)
-
- # Create subdirectory, if needed
- self.makeDir(self.genOpts.directory)
-
- def beginFeature(self, interface, emit):
- # Start processing in superclass
- OutputGenerator.beginFeature(self, interface, emit)
-
- self.features.append( self.featureName )
-
- def endFeature(self):
- # Finish processing in superclass
- OutputGenerator.endFeature(self)
-
- def writeNewInterfaces(self, feature, key, title, markup, fp):
- dict = self.featureDictionary[feature][key]
-
- parentmarkup = markup
- if key == 'enumconstant':
- parentmarkup = 'elink:'
-
- if dict:
- write('=== ' + title, file=fp)
- write('',file=fp)
-
- # Loop through required blocks, sorted so they start with "core" features
- for required in sorted(dict, key = interfaceDocSortKey):
- if required is not None:
- requiredlink = 'apiext:' + required
- match = re.search("[A-Z]+_VERSION_([0-9]+)_([0-9]+)",required)
- if match is not None:
- major = match.group(1)
- minor = match.group(2)
- version = major + '.' + minor
- requiredlink = '<<versions-' + version + ', Version ' + version + '>>'
-
- write('ifdef::' + required + '[]', file=fp)
- write('If ' + requiredlink + ' is supported:', file=fp)
- write('',file=fp)
-
- # Commands are relatively straightforward
- if key == 'command':
- for api in sorted(dict[required]):
- write(' * ' + markup + api, file=fp)
- # Types and constants are potentially parented, so need to handle that
- else:
- # Loop through parents, sorted so they start with unparented items
- for parent in sorted(dict[required], key = interfaceDocSortKey):
- parentstring = ''
- if parent:
- parentstring = parentmarkup + (', ' + markup).join(parent.split(','))
- write(' * Extending ' + parentstring + ':', file=fp)
- for api in sorted(dict[required][parent]):
- write(' ** ' + markup + api, file=fp)
- else:
- for api in sorted(dict[required][parent]):
- write(' * ' + markup + api, file=fp)
-
- if required is not None:
- write('endif::' + required + '[]', file=fp)
- write('',file=fp)
-
- def makeInterfaceFile(self, feature):
- """Generate a file containing feature interface documentation in
- asciidoctor markup form.
-
- - feature - name of the feature being generated"""
-
- filename = feature + self.genOpts.conventions.file_suffix
- fp = open(self.genOpts.directory + '/' + filename, 'w', encoding='utf-8')
-
- # Write out the lists of new interfaces added by the feature
- self.writeNewInterfaces(feature, 'define', 'New Macros', 'dlink:', fp)
- self.writeNewInterfaces(feature, 'basetype', 'New Base Types', 'basetype:',fp)
- self.writeNewInterfaces(feature, 'handle', 'New Object Types', 'slink:', fp)
- self.writeNewInterfaces(feature, 'command', 'New Commands', 'flink:', fp)
- self.writeNewInterfaces(feature, 'struct', 'New Structures', 'slink:', fp)
- self.writeNewInterfaces(feature, 'union', 'New Unions', 'slink:', fp)
- self.writeNewInterfaces(feature, 'funcpointer', 'New Function Pointers','tlink:', fp)
- self.writeNewInterfaces(feature, 'enum', 'New Enums', 'elink:', fp)
- self.writeNewInterfaces(feature, 'bitmask', 'New Bitmasks', 'tlink:', fp)
- self.writeNewInterfaces(feature, 'include', 'New Headers', 'code:', fp)
- self.writeNewInterfaces(feature, 'enumconstant','New Enum Constants', 'ename:', fp)
-
- fp.close()
-
- def endFile(self):
- # Generate metadoc feature files, in refpage and non-refpage form
- for feature in self.features:
- self.makeInterfaceFile(feature)
-
- OutputGenerator.endFile(self)
diff --git a/codegen/vulkan/scripts/linkcheck.py b/codegen/vulkan/scripts/linkcheck.py
deleted file mode 100755
index 252112b0..00000000
--- a/codegen/vulkan/scripts/linkcheck.py
+++ /dev/null
@@ -1,84 +0,0 @@
-#!/usr/bin/python3
-# Copyright 2013-2021 The Khronos Group Inc.
-# SPDX-License-Identifier: Apache-2.0
-
-# linkcheck - check internal links of the specified HTML file against
-# internal anchors and report inconsistencies.
-#
-# Usage: linkcheck file.html
-
-import argparse
-from lxml import etree as et
-
-def printSet(s):
- for key in sorted(s):
- print(' {}'.format(key))
-
-def checkLinks(file, args):
- parser = et.HTMLParser()
- tree = et.parse(file, parser)
-
- # Remove all <svg> elements, which just add noise to the cross-referencing
- for svg in tree.findall('//svg'):
- svg.getparent().remove(svg)
-
- # Extract elements with href= and id= attributes
- hrefs = tree.findall('//*[@href]')
- ids = tree.findall('//*[@id]')
-
- # Extract xref name from each xref
- internals = set()
- externals = set()
-
- for e in hrefs:
- # Don't track '<link>' tags from HTML headers
- if e.tag != 'link':
- xref = e.get('href')
-
- if xref[0:1] == '#':
- # Internal anchor
- internals.add(xref[1:])
- else:
- externals.add(xref)
-
- # Extract anchor name from each id
- anchors = set()
-
- for e in ids:
- # Don't track SVG '<g>' tags
- if e.tag != 'g':
- anchors.add(e.get('id'))
-
- # Intersect them to find inconsistencies
- xrefsOnly = internals.difference(anchors)
- anchorsOnly = anchors.difference(internals)
-
- # print('External xrefs:', len(externals))
- # printSet(externals)
- #
- # print('Internal xrefs:', len(internals))
- # print('Anchors: ', len(anchors))
-
- print('Internal xrefs not in anchors:', len(xrefsOnly))
- printSet(xrefsOnly)
-
- if args.anchors:
- print('Internal anchors not in xrefs:', len(anchorsOnly))
- printSet(anchorsOnly)
-
-# Patterns used to recognize interesting lines in an asciidoc source file.
-# These patterns are only compiled once.
-
-if __name__ == '__main__':
- parser = argparse.ArgumentParser()
-
- parser.add_argument('files', metavar='filename', nargs='*',
- help='a filename to promote text in')
- parser.add_argument('-anchors', action='store_true',
- help='Report orphaned anchors')
-
-
- args = parser.parse_args()
-
- for file in args.files:
- checkLinks(file, args)
diff --git a/codegen/vulkan/scripts/make_ext_dependency.py b/codegen/vulkan/scripts/make_ext_dependency.py
deleted file mode 100755
index 51571286..00000000
--- a/codegen/vulkan/scripts/make_ext_dependency.py
+++ /dev/null
@@ -1,243 +0,0 @@
-#!/usr/bin/env python3
-#
-# Copyright 2017-2021 The Khronos Group Inc.
-#
-# SPDX-License-Identifier: Apache-2.0
-"""Generate a mapping of extension name -> all required extension names for that extension.
-
-This script generates a list of all extensions, and of just KHR
-extensions, that are placed into a Bash script and/or Python script. This
-script can then be sources or executed to set a variable (e.g. khrExts),
-Frontend scripts such as 'makeAllExts' and 'makeKHR' use this information
-to set the EXTENSIONS Makefile variable when building the spec.
-
-Sample Usage:
-
-python3 scripts/make_ext_dependency.py -outscript=temp.sh
-source temp.sh
-make EXTENSIONS="$khrExts" html
-rm temp.sh
-"""
-
-import argparse
-import errno
-import xml.etree.ElementTree as etree
-from pathlib import Path
-
-from vkconventions import VulkanConventions as APIConventions
-
-
-def enQuote(key):
- return "'" + str(key) + "'"
-
-
-def shList(names):
- """Return a sortable (list or set) of names as a string encoding
- of a Bash or Python list, sorted on the names."""
- s = ('"' +
- ' '.join(str(key) for key in sorted(names)) +
- '"')
- return s
-
-
-def pyList(names):
- if names is not None:
- return ('[ ' +
- ', '.join(enQuote(key) for key in sorted(names)) +
- ' ]')
- else:
- return '[ ]'
-
-class DiGraph:
- """A directed graph.
-
- The implementation and API mimic that of networkx.DiGraph in networkx-1.11.
- networkx implements graphs as nested dicts; it's dicts all the way down, no
- lists.
-
- Some major differences between this implementation and that of
- networkx-1.11 are:
-
- * This omits edge and node attribute data, because we never use them
- yet they add additional code complexity.
-
- * This returns iterator objects when possible instead of collection
- objects, because it simplifies the implementation and should provide
- better performance.
- """
-
- def __init__(self):
- self.__nodes = {}
-
- def add_node(self, node):
- if node not in self.__nodes:
- self.__nodes[node] = DiGraphNode()
-
- def add_edge(self, src, dest):
- self.add_node(src)
- self.add_node(dest)
- self.__nodes[src].adj.add(dest)
-
- def nodes(self):
- """Iterate over the nodes in the graph."""
- return self.__nodes.keys()
-
- def descendants(self, node):
- """
- Iterate over the nodes reachable from the given start node, excluding
- the start node itself. Each node in the graph is yielded at most once.
- """
-
- # Implementation detail: Do a breadth-first traversal because it's
- # easier than depth-first.
-
- # All nodes seen during traversal.
- seen = set()
-
- # The stack of nodes that need visiting.
- visit_me = []
-
- # Bootstrap the traversal.
- seen.add(node)
- for x in self.__nodes[node].adj:
- if x not in seen:
- seen.add(x)
- visit_me.append(x)
-
- while visit_me:
- x = visit_me.pop()
- assert x in seen
- yield x
-
- for y in self.__nodes[x].adj:
- if y not in seen:
- seen.add(y)
- visit_me.append(y)
-
-
-class DiGraphNode:
-
- def __init__(self):
- # Set of adjacent of nodes.
- self.adj = set()
-
-
-def make_dir(fn):
- outdir = Path(fn).parent
- try:
- outdir.mkdir(parents=True)
- except OSError as e:
- if e.errno != errno.EEXIST:
- raise
-
-
-# API conventions object
-conventions = APIConventions()
-
-# -extension name - may be a single extension name, a space-separated list
-# of names, or a regular expression.
-if __name__ == '__main__':
- parser = argparse.ArgumentParser()
-
- parser.add_argument('-registry', action='store',
- default=conventions.registry_path,
- help='Use specified registry file instead of ' + conventions.registry_path)
- parser.add_argument('-outscript', action='store',
- default=None,
- help='Shell script to create')
- parser.add_argument('-outpy', action='store',
- default=None,
- help='Python script to create')
- parser.add_argument('-test', action='store',
- default=None,
- help='Specify extension to find dependencies of')
- parser.add_argument('-quiet', action='store_true', default=False,
- help='Suppress script output during normal execution.')
-
- args = parser.parse_args()
-
- tree = etree.parse(args.registry)
-
- # Loop over all supported extensions, creating a digraph of the
- # extension dependencies in the 'requires' attribute, which is a
- # comma-separated list of extension names. Also track lists of
- # all extensions and all KHR extensions.
-
- allExts = set()
- khrExts = set()
- g = DiGraph()
-
- for elem in tree.findall('extensions/extension'):
- name = elem.get('name')
- supported = elem.get('supported')
-
- # This works for the present form of the 'supported' attribute,
- # which is a comma-separate list of XML API names
- if conventions.xml_api_name in supported.split(','):
- allExts.add(name)
-
- if 'KHR' in name:
- khrExts.add(name)
-
- deps = elem.get('requires')
- if deps:
- deps = deps.split(',')
-
- for dep in deps:
- g.add_edge(name, dep)
- else:
- g.add_node(name)
- else:
- # Skip unsupported extensions
- pass
-
- if args.outscript:
- make_dir(args.outscript)
- fp = open(args.outscript, 'w', encoding='utf-8')
-
- print('#!/bin/bash', file=fp)
- print('# Generated from make_ext_dependency.py', file=fp)
- print('# Specify maps of all extensions required by an enabled extension', file=fp)
- print('', file=fp)
- print('declare -A extensions', file=fp)
-
- # When printing lists of extensions, sort them so that the output script
- # remains as stable as possible as extensions are added to the API XML.
-
- for ext in sorted(g.nodes()):
- children = list(g.descendants(ext))
-
- # Only emit an ifdef block if an extension has dependencies
- if children:
- print('extensions[' + ext + ']=' + shList(children), file=fp)
-
- print('', file=fp)
- print('# Define lists of all extensions and KHR extensions', file=fp)
- print('allExts=' + shList(allExts), file=fp)
- print('khrExts=' + shList(khrExts), file=fp)
-
- fp.close()
-
- if args.outpy:
- make_dir(args.outpy)
- fp = open(args.outpy, 'w', encoding='utf-8')
-
- print('#!/usr/bin/env python', file=fp)
- print('# Generated from make_ext_dependency.py', file=fp)
- print('# Specify maps of all extensions required by an enabled extension', file=fp)
- print('', file=fp)
- print('extensions = {}', file=fp)
-
- # When printing lists of extensions, sort them so that the output script
- # remains as stable as possible as extensions are added to the API XML.
-
- for ext in sorted(g.nodes()):
- children = list(g.descendants(ext))
- print("extensions['" + ext + "'] = " + pyList(children), file=fp)
-
- print('', file=fp)
- print('# Define lists of all extensions and KHR extensions', file=fp)
- print('allExts = ' + pyList(allExts), file=fp)
- print('khrExts = ' + pyList(khrExts), file=fp)
-
- fp.close()
diff --git a/codegen/vulkan/scripts/makemanaliases.py b/codegen/vulkan/scripts/makemanaliases.py
deleted file mode 100755
index df44a8a9..00000000
--- a/codegen/vulkan/scripts/makemanaliases.py
+++ /dev/null
@@ -1,57 +0,0 @@
-#!/usr/bin/python3
-#
-# Copyright 2020-2021 The Khronos Group Inc.
-#
-# SPDX-License-Identifier: Apache-2.0
-"""Script to create symbolic links for aliases in reference pages
- Usage: makemanaliases.py -refdir refpage-output-directory"""
-
-import argparse
-import os
-import sys
-
-if __name__ == '__main__':
- parser = argparse.ArgumentParser()
-
- parser.add_argument('-genpath', action='store',
- default=None,
- help='Path to directory containing generated *api.py module')
- parser.add_argument('-refdir', action='store',
- required=True,
- help='Path to directory containing reference pages to symlink')
-
- args = parser.parse_args()
-
- # Look for api.py in the specified directory
- if args.genpath is not None:
- sys.path.insert(0, args.genpath)
- import api
-
- # Change to refpage directory
- try:
- os.chdir(args.refdir)
- except:
- print('Cannot chdir to', args.refdir, file=sys.stderr)
- sys.exit(1)
-
- # For each alias in the API alias map, create a symlink if it
- # doesn't exist - and warn if it does exist.
-
- for key in api.alias:
- alias = key + '.html'
- src = api.alias[key] + '.html'
-
- if not os.access(src, os.R_OK):
- # This shouldn't happen, but is possible if the api module isn't
- # generated for the same set of APIs as were the refpages.
- print('No source file', src, file=sys.stderr)
- continue
-
- if os.access(alias, os.R_OK):
- # If the link already exists, that's not necc. a problem, so
- # don't fail, but it should be checked out
- print('Unexpected alias file "' + alias + '" exists, skipping',
- file=sys.stderr)
- else:
- # Create link from alias refpage to page for what it's aliasing
- os.symlink(src, alias)
diff --git a/codegen/vulkan/scripts/promote.py b/codegen/vulkan/scripts/promote.py
deleted file mode 100755
index c6b73ba4..00000000
--- a/codegen/vulkan/scripts/promote.py
+++ /dev/null
@@ -1,173 +0,0 @@
-#!/usr/bin/python3
-#
-# Copyright 2016-2021 The Khronos Group Inc.
-#
-# SPDX-License-Identifier: Apache-2.0
-
-# Retroactively insert markup in show both 1.1 core features and KHR
-# extensions they were promoted from.
-
-# Usage: promote.py [-overwrite] [-out dir] [-suffix str] files
-# -overwrite updates in place (can be risky, make sure there are backups)
-# -out specifies directory to create output file in, default 'out'
-# -suffix specifies suffix to add to output files, default ''
-# files are asciidoc source files from the Vulkan spec to reflow.
-
-# For error and file-loading interfaces only
-import argparse, copy, os, pdb, re, string, sys
-from reflib import *
-from promoted import *
-
-global anchor
-anchor = 0
-
-def anchorname(anchor):
- return 'promoted-' + str(anchor)
-
-def printanchor(fp):
- # Anchor index for navigation
- global anchor
-
- print('[[' + anchorname(anchor) + ']]', file=fp)
- print('This anchor:', anchorname(anchor), file=fp)
- print('<<' + anchorname(anchor+1) + ', OINK>>', file=fp)
- anchor = anchor + 1
-
-# promote a core interface and include the extension it was promoted from
-# line - matching line with 1.1 interface
-# type - 'protos', 'structs', 'flags', 'enums'
-# name - interface name
-# extension - name of extension interface was promoted from
-# fp - output filename
-def promote(line, type, name, extension, fp):
- if type == 'protos':
- # printanchor(fp)
- print('ifdef::VK_VERSION_1_1[]', file=fp)
- print(line, file=fp, end='')
- print('endif::VK_VERSION_1_1[]', file=fp)
- print('', file=fp)
- print('ifdef::VK_VERSION_1_1+' + extension +
- '[or the equivalent command]', file=fp)
- print('', file=fp)
- print('ifdef::' + extension + '[]', file=fp)
- print('include::../api/' + type + '/' + name + 'KHR.txt[]', file=fp)
- print('endif::' + extension + '[]', file=fp)
- del promoted[name]
- elif type == 'structs' or type == 'enums' or type == 'flags' or type == 'handles':
- # printanchor(fp)
- print(line, file=fp, end='')
- print('', file=fp)
- print('ifdef::' + extension + '[]', file=fp)
- print('or the equivalent', file=fp)
- print('', file=fp)
- print('include::../api/' + type + '/' + name + 'KHR.txt[]', file=fp)
- print('endif::' + extension + '[]', file=fp)
- del promoted[name]
- else:
- logWarn('Unrecognized promoted type', type, 'for interface', name)
- print(line, file=fp, end='')
-
-
-def promoteFile(filename, args):
- logDiag('promote: filename', filename)
-
- lines = loadFile(filename)
- if (lines == None):
- return
-
- # Output file handle and promote object for this file. There are no race
- # conditions on overwriting the input, but it's not recommended unless
- # you have backing store such as git.
-
- if args.overwrite:
- outFilename = filename
- else:
- outFilename = args.outDir + '/' + os.path.basename(filename) + args.suffix
-
- try:
- fp = open(outFilename, 'w', encoding='utf8')
- True
- except:
- logWarn('Cannot open output file', filename, ':', sys.exc_info()[0])
- return None
-
- lineno = 0
- for line in lines:
- lineno = lineno + 1
-
- matches = includePat.search(line)
- if matches != None:
- type = matches.group('type')
- name = matches.group('name')
- if name in promoted:
- extension = promoted[name]['extension']
- if extension:
- # Promote core interface
- promote(line, type, name, promoted[name]['extension'], fp)
- continue
- # Fallthrough
- print(line, file=fp, end='')
-
- fp.close()
-
-def promoteAllAdocFiles(folder_to_promote, args):
- for root, subdirs, files in os.walk(folder_to_promote):
- for file in files:
- if file.endswith(".txt"):
- file_path = os.path.join(root, file)
- promoteFile(file_path, args)
- for subdir in subdirs:
- sub_folder = os.path.join(root, subdir)
- print('Sub-folder = %s' % sub_folder)
- if not (subdir.lower() == "scripts") and not (subdir.lower() == "style"):
- print(' Parsing = %s' % sub_folder)
- promoteAllAdocFiles(sub_folder, args)
- else:
- print(' Skipping = %s' % sub_folder)
-
-# Patterns used to recognize interesting lines in an asciidoc source file.
-# These patterns are only compiled once.
-
-if __name__ == '__main__':
- parser = argparse.ArgumentParser()
-
- parser.add_argument('-diag', action='store', dest='diagFile',
- help='Set the diagnostic file')
- parser.add_argument('-warn', action='store', dest='warnFile',
- help='Set the warning file')
- parser.add_argument('-log', action='store', dest='logFile',
- help='Set the log file for both diagnostics and warnings')
- parser.add_argument('-overwrite', action='store_true',
- help='Overwrite input filenames instead of writing different output filenames')
- parser.add_argument('-out', action='store', dest='outDir',
- default='out',
- help='Set the output directory in which updated files are generated (default: out)')
- parser.add_argument('-suffix', action='store', dest='suffix',
- default='',
- help='Set the suffix added to updated file names (default: none)')
- parser.add_argument('files', metavar='filename', nargs='*',
- help='a filename to promote text in')
- parser.add_argument('--version', action='version', version='%(prog)s 1.0')
-
- args = parser.parse_args()
-
- setLogFile(True, True, args.logFile)
- setLogFile(True, False, args.diagFile)
- setLogFile(False, True, args.warnFile)
-
- if args.overwrite:
- logWarn('promote.py: will overwrite all input files')
-
- # If no files are specified, promote the entire specification chapters folder
- if len(args.files) == 0:
- folder_to_promote = os.getcwd()
- folder_to_promote += '/chapters'
- promoteAllAdocFiles(folder_to_promote, args)
- else:
- for file in args.files:
- promoteFile(file, args)
-
- print('At end, promoted interfaces remaining:')
- for key in promoted:
- if promoted[key]['extension'] != None:
- print('\t' + key)
diff --git a/codegen/vulkan/scripts/pygenerator.py b/codegen/vulkan/scripts/pygenerator.py
deleted file mode 100644
index 798ac322..00000000
--- a/codegen/vulkan/scripts/pygenerator.py
+++ /dev/null
@@ -1,94 +0,0 @@
-#!/usr/bin/python3 -i
-#
-# Copyright 2013-2021 The Khronos Group Inc.
-#
-# SPDX-License-Identifier: Apache-2.0
-
-from generator import OutputGenerator, enquote, write
-from scriptgenerator import ScriptOutputGenerator
-import pprint
-
-class PyOutputGenerator(ScriptOutputGenerator):
- """PyOutputGenerator - subclass of ScriptOutputGenerator.
- Generates Python data structures describing API names and
- relationships."""
-
- def __init__(self, *args, **kwargs):
- super().__init__(*args, **kwargs)
-
- def beginDict(self, name):
- """String starting definition of a named dictionary"""
- return f'{name} = {{'
-
- def endDict(self):
- """ String ending definition of a named dictionary"""
- return '}'
-
- def writeDict(self, dict, name, printValues = True):
- """Write dictionary as a Python dictionary with the given name.
- If printValues is False, just output keys with None values."""
-
- write(self.beginDict(name), file=self.outFile)
- for key in sorted(dict):
- if printValues:
- value = enquote(dict[key])
- else:
- value = 'None'
- write(f'{enquote(key)} : {value},', file=self.outFile)
- write(self.endDict(), file=self.outFile)
-
- def writeList(self, l, name):
- """Write list l as a Ruby hash with the given name"""
-
- self.writeDict(l, name, printValues = False)
-
- def endFile(self):
- # Creates the inverse mapping of nonexistent APIs to their aliases.
- super().createInverseMap()
-
- # Print out all the dictionaries as Python strings.
- # Could just print(dict) but that's not human-readable
- dicts = ( [ self.basetypes, 'basetypes' ],
- [ self.consts, 'consts' ],
- [ self.enums, 'enums' ],
- [ self.flags, 'flags' ],
- [ self.funcpointers, 'funcpointers' ],
- [ self.protos, 'protos' ],
- [ self.structs, 'structs' ],
- [ self.handles, 'handles' ],
- [ self.defines, 'defines' ],
- [ self.typeCategory, 'typeCategory' ],
- [ self.alias, 'alias' ],
- [ self.nonexistent, 'nonexistent' ],
- )
-
- for (dict, name) in dicts:
- self.writeDict(dict, name)
-
- # Dictionary containing the relationships of a type
- # (e.g. a dictionary with each related type as keys).
- # Could just print(self.mapDict), but prefer something
- # human-readable and stable-ordered
- write(self.beginDict('mapDict'), file=self.outFile)
- for baseType in sorted(self.mapDict.keys()):
- write('{} : {},'.format(enquote(baseType),
- pprint.pformat(self.mapDict[baseType])), file=self.outFile)
- write(self.endDict(), file=self.outFile)
-
- # List of included feature names
- self.writeList(sorted(self.features), 'features')
-
- # Generate feature <-> interface mappings
- for feature in self.features:
- self.mapInterfaces(feature)
-
- # Write out the reverse map from APIs to requiring features
- write(self.beginDict('requiredBy'), file=self.outFile)
- for api in sorted(self.apimap):
- # Sort requirements by first feature in each one
- deps = sorted(self.apimap[api], key = lambda dep: dep[0])
- reqs = ', '.join('({}, {})'.format(enquote(dep[0]), enquote(dep[1])) for dep in deps)
- write('{} : [{}],'.format(enquote(api), reqs), file=self.outFile)
- write(self.endDict(), file=self.outFile)
-
- super().endFile()
diff --git a/codegen/vulkan/scripts/reflib.py b/codegen/vulkan/scripts/reflib.py
deleted file mode 100644
index bab7d30e..00000000
--- a/codegen/vulkan/scripts/reflib.py
+++ /dev/null
@@ -1,666 +0,0 @@
-#!/usr/bin/python3
-#
-# Copyright 2016-2021 The Khronos Group Inc.
-#
-# SPDX-License-Identifier: Apache-2.0
-
-# Utility functions for automatic ref page generation and other script stuff
-
-import io
-import re
-import sys
-import subprocess
-
-# global errFile, warnFile, diagFile
-
-errFile = sys.stderr
-warnFile = sys.stdout
-diagFile = None
-logSourcefile = None
-logProcname = None
-logLine = None
-
-def unescapeQuotes(s):
- """Remove \' escape sequences in a string (refpage description)"""
- return s.replace('\\\'', '\'')
-
-def write(*args, **kwargs ):
- file = kwargs.pop('file',sys.stdout)
- end = kwargs.pop('end','\n')
- file.write(' '.join(str(arg) for arg in args))
- file.write(end)
-
-def setLogSourcefile(filename):
- """Metadata which may be printed (if not None) for diagnostic messages"""
- global logSourcefile
- logSourcefile = filename
-
-def setLogProcname(procname):
- global logProcname
- logProcname = procname
-
-def setLogLine(line):
- global logLine
- logLine = line
-
-def logHeader(severity):
- """Generate prefix for a diagnostic line using metadata and severity"""
- global logSourcefile, logProcname, logLine
-
- msg = severity + ': '
- if logProcname:
- msg = msg + ' in ' + logProcname
- if logSourcefile:
- msg = msg + ' for ' + logSourcefile
- if logLine:
- msg = msg + ' line ' + str(logLine)
- return msg + ' '
-
-def setLogFile(setDiag, setWarn, filename):
- """Set the file handle to log either or both warnings and diagnostics to.
-
- - setDiag and setWarn are True if the corresponding handle is to be set.
- - filename is None for no logging, '-' for stdout, or a pathname."""
- global diagFile, warnFile
-
- if filename is None:
- return
-
- if filename == '-':
- fp = sys.stdout
- else:
- fp = open(filename, 'w', encoding='utf-8')
-
- if setDiag:
- diagFile = fp
- if setWarn:
- warnFile = fp
-
-def logDiag(*args, **kwargs):
- file = kwargs.pop('file', diagFile)
- end = kwargs.pop('end','\n')
- if file is not None:
- file.write(logHeader('DIAG') + ' '.join(str(arg) for arg in args))
- file.write(end)
-
-def logWarn(*args, **kwargs):
- file = kwargs.pop('file', warnFile)
- end = kwargs.pop('end','\n')
- if file is not None:
- file.write(logHeader('WARN') + ' '.join(str(arg) for arg in args))
- file.write(end)
-
-def logErr(*args, **kwargs):
- file = kwargs.pop('file', errFile)
- end = kwargs.pop('end','\n')
-
- strfile = io.StringIO()
- strfile.write(logHeader('ERROR') + ' '.join(str(arg) for arg in args))
- strfile.write(end)
-
- if file is not None:
- file.write(strfile.getvalue())
- sys.exit(1)
-
-def isempty(s):
- """Return True if s is nothing but white space, False otherwise"""
- return len(''.join(s.split())) == 0
-
-class pageInfo:
- """Information about a ref page relative to the file it's extracted from."""
- def __init__(self):
- self.extractPage = True
- """True if page should be extracted"""
-
- self.Warning = None
- """string warning if page is suboptimal or can't be generated"""
-
- self.embed = False
- """False or the name of the ref page this include is embedded within"""
-
- self.type = None
- """refpage type attribute - 'structs', 'protos', 'freeform', etc."""
-
- self.name = None
- """struct/proto/enumerant/etc. name"""
-
- self.desc = None
- """short description of ref page"""
-
- self.begin = None
- """index of first line of the page (heuristic or // refBegin)"""
-
- self.include = None
- """index of include:: line defining the page"""
-
- self.param = None
- """index of first line of parameter/member definitions"""
-
- self.body = None
- """index of first line of body text"""
-
- self.validity = None
- """index of validity include"""
-
- self.end = None
- """index of last line of the page (heuristic validity include, or // refEnd)"""
-
- self.alias = ''
- """aliases of this name, if supplied, or ''"""
-
- self.refs = ''
- """cross-references on // refEnd line, if supplied"""
-
- self.spec = None
- """'spec' attribute in refpage open block, if supplied, or None for the default ('api') type"""
-
- self.anchor = None
- """'anchor' attribute in refpage open block, if supplied, or inferred to be the same as the 'name'"""
-
-def printPageInfoField(desc, line, file):
- """Print a single field of a pageInfo struct, possibly None.
-
- - desc - string description of field
- - line - field value or None
- - file - indexed by line"""
- if line is not None:
- logDiag(desc + ':', line + 1, '\t-> ', file[line], end='')
- else:
- logDiag(desc + ':', line)
-
-def printPageInfo(pi, file):
- """Print out fields of a pageInfo struct
-
- - pi - pageInfo
- - file - indexed by pageInfo"""
- logDiag('TYPE: ', pi.type)
- logDiag('NAME: ', pi.name)
- logDiag('WARNING:', pi.Warning)
- logDiag('EXTRACT:', pi.extractPage)
- logDiag('EMBED: ', pi.embed)
- logDiag('DESC: ', pi.desc)
- printPageInfoField('BEGIN ', pi.begin, file)
- printPageInfoField('INCLUDE ', pi.include, file)
- printPageInfoField('PARAM ', pi.param, file)
- printPageInfoField('BODY ', pi.body, file)
- printPageInfoField('VALIDITY', pi.validity, file)
- printPageInfoField('END ', pi.end, file)
- logDiag('REFS: "' + pi.refs + '"')
-
-def prevPara(file, line):
- """Go back one paragraph from the specified line and return the line number
- of the first line of that paragraph.
-
- Paragraphs are delimited by blank lines. It is assumed that the
- current line is the first line of a paragraph.
-
- - file is an array of strings
- - line is the starting point (zero-based)"""
- # Skip over current paragraph
- while (line >= 0 and not isempty(file[line])):
- line = line - 1
- # Skip over white space
- while (line >= 0 and isempty(file[line])):
- line = line - 1
- # Skip to first line of previous paragraph
- while (line >= 1 and not isempty(file[line-1])):
- line = line - 1
- return line
-
-def nextPara(file, line):
- """Go forward one paragraph from the specified line and return the line
- number of the first line of that paragraph.
-
- Paragraphs are delimited by blank lines. It is assumed that the
- current line is standalone (which is bogus).
-
- - file is an array of strings
- - line is the starting point (zero-based)"""
- maxLine = len(file) - 1
- # Skip over current paragraph
- while (line != maxLine and not isempty(file[line])):
- line = line + 1
- # Skip over white space
- while (line != maxLine and isempty(file[line])):
- line = line + 1
- return line
-
-def lookupPage(pageMap, name):
- """Return (creating if needed) the pageInfo entry in pageMap for name"""
- if name not in pageMap:
- pi = pageInfo()
- pi.name = name
- pageMap[name] = pi
- else:
- pi = pageMap[name]
- return pi
-
-def loadFile(filename):
- """Load a file into a list of strings. Return the list or None on failure"""
- try:
- fp = open(filename, 'r', encoding='utf-8')
- except:
- logWarn('Cannot open file', filename, ':', sys.exc_info()[0])
- return None
-
- file = fp.readlines()
- fp.close()
-
- return file
-
-def clampToBlock(line, minline, maxline):
- """Clamp a line number to be in the range [minline,maxline].
-
- If the line number is None, just return it.
- If minline is None, don't clamp to that value."""
- if line is None:
- return line
- if minline and line < minline:
- return minline
- if line > maxline:
- return maxline
-
- return line
-
-def fixupRefs(pageMap, specFile, file):
- """Fill in missing fields in pageInfo structures, to the extent they can be
- inferred.
-
- - pageMap - dictionary of pageInfo structures
- - specFile - filename
- - file - list of strings making up the file, indexed by pageInfo"""
- # All potential ref pages are now in pageMap. Process them to
- # identify actual page start/end/description boundaries, if
- # not already determined from the text.
- for name in sorted(pageMap.keys()):
- pi = pageMap[name]
-
- # # If nothing is found but an include line with no begin, validity,
- # # or end, this is not intended as a ref page (yet). Set the begin
- # # line to the include line, so autogeneration can at least
- # # pull the include out, but mark it not to be extracted.
- # # Examples include the host sync table includes in
- # # chapters/fundamentals.txt and the table of Vk*Flag types in
- # # appendices/boilerplate.txt.
- # if pi.begin is None and pi.validity is None and pi.end is None:
- # pi.begin = pi.include
- # pi.extractPage = False
- # pi.Warning = 'No begin, validity, or end lines identified'
- # continue
-
- # Using open block delimiters, ref pages must *always* have a
- # defined begin and end. If either is undefined, that's fatal.
- if pi.begin is None:
- pi.extractPage = False
- pi.Warning = 'Can\'t identify begin of ref page open block'
- continue
-
- if pi.end is None:
- pi.extractPage = False
- pi.Warning = 'Can\'t identify end of ref page open block'
- continue
-
- # If there's no description of the page, infer one from the type
- if pi.desc is None:
- if pi.type is not None:
- # pi.desc = pi.type[0:len(pi.type)-1] + ' (no short description available)'
- pi.Warning = 'No short description available; could infer from the type and name'
- else:
- pi.extractPage = False
- pi.Warning = 'No short description available, cannot infer from the type'
- continue
-
- # Try to determine where the parameter and body sections of the page
- # begin. funcpointer, proto, and struct pages infer the location of
- # the parameter and body sections. Other pages infer the location of
- # the body, but have no parameter sections.
- #
- #@ Probably some other types infer this as well - refer to list of
- #@ all page types in genRef.py:emitPage()
- if pi.include is not None:
- if pi.type in ['funcpointers', 'protos', 'structs']:
- pi.param = nextPara(file, pi.include)
- if pi.body is None:
- pi.body = nextPara(file, pi.param)
- else:
- if pi.body is None:
- pi.body = nextPara(file, pi.include)
- else:
- pi.Warning = 'Page does not have an API definition include::'
-
- # It's possible for the inferred param and body lines to run past
- # the end of block, if, for example, there is no parameter section.
- pi.param = clampToBlock(pi.param, pi.include, pi.end)
- pi.body = clampToBlock(pi.body, pi.param, pi.end)
-
- # We can get to this point with .include, .param, and .validity
- # all being None, indicating those sections weren't found.
-
- logDiag('fixupRefs: after processing,', pi.name, 'looks like:')
- printPageInfo(pi, file)
-
- # Now that all the valid pages have been found, try to make some
- # inferences about invalid pages.
- #
- # If a reference without a .end is entirely inside a valid reference,
- # then it's intentionally embedded - may want to create an indirect
- # page that links into the embedding page. This is done by a very
- # inefficient double loop, but the loop depth is small.
- for name in sorted(pageMap.keys()):
- pi = pageMap[name]
-
- if pi.end is None:
- for embedName in sorted(pageMap.keys()):
- logDiag('fixupRefs: comparing', pi.name, 'to', embedName)
- embed = pageMap[embedName]
- # Don't check embeddings which are themselves invalid
- if not embed.extractPage:
- logDiag('Skipping check for embedding in:', embed.name)
- continue
- if embed.begin is None or embed.end is None:
- logDiag('fixupRefs:', name + ':',
- 'can\'t compare to unanchored ref:', embed.name,
- 'in', specFile, 'at line', pi.include )
- printPageInfo(pi, file)
- printPageInfo(embed, file)
- # If an embed is found, change the error to a warning
- elif (pi.include is not None and pi.include >= embed.begin and
- pi.include <= embed.end):
- logDiag('fixupRefs: Found embed for:', name,
- 'inside:', embedName,
- 'in', specFile, 'at line', pi.include )
- pi.embed = embed.name
- pi.Warning = 'Embedded in definition for ' + embed.name
- break
- else:
- logDiag('fixupRefs: No embed match for:', name,
- 'inside:', embedName, 'in', specFile,
- 'at line', pi.include)
-
-
-# Patterns used to recognize interesting lines in an asciidoc source file.
-# These patterns are only compiled once.
-INCSVAR_DEF = re.compile(r':INCS-VAR: (?P<value>.*)')
-endifPat = re.compile(r'^endif::(?P<condition>[\w_+,]+)\[\]')
-beginPat = re.compile(r'^\[open,(?P<attribs>refpage=.*)\]')
-# attribute key/value pairs of an open block
-attribStr = r"([a-z]+)='([^'\\]*(?:\\.[^'\\]*)*)'"
-attribPat = re.compile(attribStr)
-bodyPat = re.compile(r'^// *refBody')
-errorPat = re.compile(r'^// *refError')
-
-# This regex transplanted from check_spec_links
-# It looks for either OpenXR or Vulkan generated file conventions, and for
-# the api/validity include (generated_type), protos/struct/etc path
-# (category), and API name (entity_name). It could be put into the API
-# conventions object.
-INCLUDE = re.compile(
- r'include::(?P<directory_traverse>((../){1,4}|\{INCS-VAR\}/|\{generated\}/)(generated/)?)(?P<generated_type>[\w]+)/(?P<category>\w+)/(?P<entity_name>[^./]+).txt[\[][\]]')
-
-
-def findRefs(file, filename):
- """Identify reference pages in a list of strings, returning a dictionary of
- pageInfo entries for each one found, or None on failure."""
- setLogSourcefile(filename)
- setLogProcname('findRefs')
-
- # To reliably detect the open blocks around reference pages, we must
- # first detect the '[open,refpage=...]' markup delimiting the block;
- # skip past the '--' block delimiter on the next line; and identify the
- # '--' block delimiter closing the page.
- # This can't be done solely with pattern matching, and requires state to
- # track 'inside/outside block'.
- # When looking for open blocks, possible states are:
- # 'outside' - outside a block
- # 'start' - have found the '[open...]' line
- # 'inside' - have found the following '--' line
- openBlockState = 'outside'
-
- # Dictionary of interesting line numbers and strings related to an API
- # name
- pageMap = {}
-
- numLines = len(file)
- line = 0
-
- # Track the pageInfo object corresponding to the current open block
- pi = None
- incsvar = None
-
- while (line < numLines):
- setLogLine(line)
-
- # Look for a file-wide definition
- matches = INCSVAR_DEF.match(file[line])
- if matches:
- incsvar = matches.group('value')
- logDiag('Matched INCS-VAR definition:', incsvar)
-
- line = line + 1
- continue
-
- # Perform INCS-VAR substitution immediately.
- if incsvar and '{INCS-VAR}' in file[line]:
- newLine = file[line].replace('{INCS-VAR}', incsvar)
- logDiag('PERFORMING SUBSTITUTION', file[line], '->', newLine)
- file[line] = newLine
-
- # Only one of the patterns can possibly match. Add it to
- # the dictionary for that name.
-
- # [open,refpage=...] starting a refpage block
- matches = beginPat.search(file[line])
- if matches is not None:
- logDiag('Matched open block pattern')
- attribs = matches.group('attribs')
-
- # If the previous open block wasn't closed, raise an error
- if openBlockState != 'outside':
- logErr('Nested open block starting at line', line, 'of',
- filename)
-
- openBlockState = 'start'
-
- # Parse the block attributes
- matches = attribPat.findall(attribs)
-
- # Extract each attribute
- name = None
- desc = None
- refpage_type = None
- spec_type = None
- anchor = None
- alias = None
- xrefs = None
-
- for (key,value) in matches:
- logDiag('got attribute', key, '=', value)
- if key == 'refpage':
- name = value
- elif key == 'desc':
- desc = unescapeQuotes(value)
- elif key == 'type':
- refpage_type = value
- elif key == 'spec':
- spec_type = value
- elif key == 'anchor':
- anchor = value
- elif key == 'alias':
- alias = value
- elif key == 'xrefs':
- xrefs = value
- else:
- logWarn('unknown open block attribute:', key)
-
- if name is None or desc is None or refpage_type is None:
- logWarn('missing one or more required open block attributes:'
- 'refpage, desc, or type')
- # Leave pi is None so open block delimiters are ignored
- else:
- pi = lookupPage(pageMap, name)
- pi.desc = desc
- # Must match later type definitions in interface/validity includes
- pi.type = refpage_type
- pi.spec = spec_type
- pi.anchor = anchor
- if alias:
- pi.alias = alias
- if xrefs:
- pi.refs = xrefs
- logDiag('open block for', name, 'added DESC =', desc,
- 'TYPE =', refpage_type, 'ALIAS =', alias,
- 'XREFS =', xrefs, 'SPEC =', spec_type,
- 'ANCHOR =', anchor)
-
- line = line + 1
- continue
-
- # '--' starting or ending and open block
- if file[line].rstrip() == '--':
- if openBlockState == 'outside':
- # Only refpage open blocks should use -- delimiters
- logWarn('Unexpected double-dash block delimiters')
- elif openBlockState == 'start':
- # -- delimiter following [open,refpage=...]
- openBlockState = 'inside'
-
- if pi is None:
- logWarn('no pageInfo available for opening -- delimiter')
- else:
- pi.begin = line + 1
- logDiag('opening -- delimiter: added BEGIN =', pi.begin)
- elif openBlockState == 'inside':
- # -- delimiter ending an open block
- if pi is None:
- logWarn('no pageInfo available for closing -- delimiter')
- else:
- pi.end = line - 1
- logDiag('closing -- delimiter: added END =', pi.end)
-
- openBlockState = 'outside'
- pi = None
- else:
- logWarn('unknown openBlockState:', openBlockState)
-
- line = line + 1
- continue
-
- matches = INCLUDE.search(file[line])
- if matches is not None:
- # Something got included, not sure what yet.
- gen_type = matches.group('generated_type')
- refpage_type = matches.group('category')
- name = matches.group('entity_name')
-
- # This will never match in OpenCL
- if gen_type == 'validity':
- logDiag('Matched validity pattern')
- if pi is not None:
- if pi.type and refpage_type != pi.type:
- logWarn('ERROR: pageMap[' + name + '] type:',
- pi.type, 'does not match type:', refpage_type)
- pi.type = refpage_type
- pi.validity = line
- logDiag('added TYPE =', pi.type, 'VALIDITY =', pi.validity)
- else:
- logWarn('validity include:: line NOT inside block')
-
- line = line + 1
- continue
-
- if gen_type == 'api':
- logDiag('Matched include pattern')
- if pi is not None:
- if pi.include is not None:
- logDiag('found multiple includes for this block')
- if pi.type and refpage_type != pi.type:
- logWarn('ERROR: pageMap[' + name + '] type:',
- pi.type, 'does not match type:', refpage_type)
- pi.type = refpage_type
- pi.include = line
- logDiag('added TYPE =', pi.type, 'INCLUDE =', pi.include)
- else:
- logWarn('interface include:: line NOT inside block')
-
- line = line + 1
- continue
-
- logDiag('ignoring unrecognized include line ', matches.group())
-
- # Vulkan 1.1 markup allows the last API include construct to be
- # followed by an asciidoctor endif:: construct (and also preceded,
- # at some distance).
- # This looks for endif:: immediately following an include:: line
- # and, if found, moves the include boundary to this line.
- matches = endifPat.search(file[line])
- if matches is not None and pi is not None:
- if pi.include == line - 1:
- logDiag('Matched endif pattern following include; moving include')
- pi.include = line
- else:
- logDiag('Matched endif pattern (not following include)')
-
- line = line + 1
- continue
-
- matches = bodyPat.search(file[line])
- if matches is not None:
- logDiag('Matched // refBody pattern')
- if pi is not None:
- pi.body = line
- logDiag('added BODY =', pi.body)
- else:
- logWarn('// refBody line NOT inside block')
-
- line = line + 1
- continue
-
- # OpenCL spec uses // refError to tag "validity" (Errors) language,
- # instead of /validity/ includes.
- matches = errorPat.search(file[line])
- if matches is not None:
- logDiag('Matched // refError pattern')
- if pi is not None:
- pi.validity = line
- logDiag('added VALIDITY (refError) =', pi.validity)
- else:
- logWarn('// refError line NOT inside block')
-
- line = line + 1
- continue
-
- line = line + 1
- continue
-
- if pi is not None:
- logErr('Unclosed open block at EOF!')
-
- setLogSourcefile(None)
- setLogProcname(None)
- setLogLine(None)
-
- return pageMap
-
-
-def getBranch():
- """Determine current git branch
-
- Returns (branch name, ''), or (None, stderr output) if the branch name
- can't be determined"""
-
- command = [ 'git', 'symbolic-ref', '--short', 'HEAD' ]
- results = subprocess.run(command,
- stdout=subprocess.PIPE,
- stderr=subprocess.PIPE)
-
- # git command failed
- if len(results.stderr) > 0:
- return (None, results.stderr)
-
- # Remove newline from output and convert to a string
- branch = results.stdout.rstrip().decode()
- if len(branch) > 0:
- # Strip trailing newline
- branch = results.stdout.decode()[0:-1]
-
- return (branch, '')
diff --git a/codegen/vulkan/scripts/reflow.py b/codegen/vulkan/scripts/reflow.py
deleted file mode 100755
index 1897b05c..00000000
--- a/codegen/vulkan/scripts/reflow.py
+++ /dev/null
@@ -1,912 +0,0 @@
-#!/usr/bin/python3
-#
-# Copyright 2016-2021 The Khronos Group Inc.
-#
-# SPDX-License-Identifier: Apache-2.0
-
-"""Used for automatic reflow of spec sources to satisfy the agreed layout to
-minimize git churn. Most of the logic has to do with detecting asciidoc
-markup or block types that *shouldn't* be reflowed (tables, code) and
-ignoring them. It's very likely there are many asciidoc constructs not yet
-accounted for in the script, our usage of asciidoc markup is intentionally
-somewhat limited.
-
-Also used to insert identifying tags on explicit Valid Usage statements.
-
-Usage: `reflow.py [-noflow] [-tagvu] [-nextvu #] [-overwrite] [-out dir] [-suffix str] files`
-
-- `-noflow` acts as a passthrough, instead of reflowing text. Other
- processing may occur.
-- `-tagvu` generates explicit VUID tag for Valid Usage statements which
- don't already have them.
-- `-nextvu #` starts VUID tag generation at the specified # instead of
- the value wired into the `reflow.py` script.
-- `-overwrite` updates in place (can be risky, make sure there are backups)
-- `-check FAIL|WARN` runs some simple sanity checks on markup. If the checks
- fail and the WARN option is given, the script will simply print a warning
- message. If the checks fail and the FAIL option is given, the script will
- exit with an error code. FAIL is for use with continuous integration
- scripts enforcing the checks.
-- `-out` specifies directory to create output file in, default 'out'
-- `-suffix` specifies suffix to add to output files, default ''
-- `files` are asciidoc source files from the spec to reflow.
-"""
-# For error and file-loading interfaces only
-import argparse
-import os
-import re
-import sys
-from reflib import loadFile, logDiag, logWarn, logErr, setLogFile, getBranch
-
-# Vulkan-specific - will consolidate into scripts/ like OpenXR soon
-sys.path.insert(0, 'xml')
-
-from vkconventions import VulkanConventions as APIConventions
-conventions = APIConventions()
-
-# Markup that always ends a paragraph
-# empty line or whitespace
-# [block options]
-# [[anchor]]
-# // comment
-# <<<< page break
-# :attribute-setting
-# macro-directive::terms
-# + standalone list item continuation
-# label:: labelled list - label must be standalone
-endPara = re.compile(r'^( *|\[.*\]|//.*|<<<<|:.*|[a-z]+::.*|\+|.*::)$')
-
-# Special case of markup ending a paragraph, used to track the current
-# command/structure. This allows for either OpenXR or Vulkan API path
-# conventions. Nominally it should use the file suffix defined by the API
-# conventions (conventions.file_suffix), except that XR uses '.txt' for
-# generated API include files, not '.adoc' like its other includes.
-includePat = re.compile(
- r'include::(?P<directory_traverse>((../){1,4}|\{INCS-VAR\}/|\{generated\}/)(generated/)?)(?P<generated_type>[\w]+)/(?P<category>\w+)/(?P<entity_name>[^./]+).txt[\[][\]]')
-
-# Find the first pname: or code: pattern in a Valid Usage statement
-pnamePat = re.compile(r'pname:(?P<param>\{?\w+\}?)')
-codePat = re.compile(r'code:(?P<param>\w+)')
-
-# Markup that's OK in a contiguous paragraph but otherwise passed through
-# .anything (except .., which indicates a literal block)
-# === Section Titles
-endParaContinue = re.compile(r'^(\.[^.].*|=+ .*)$')
-
-# Markup for block delimiters whose contents *should* be reformatted
-# -- (exactly two) (open block)
-# **** (4 or more) (sidebar block - why do we have these?!)
-# ==== (4 or more) (example block)
-# ____ (4 or more) (quote block)
-blockReflow = re.compile(r'^(--|[*=_]{4,})$')
-
-# Fake block delimiters for "common" VU statements
-blockCommonReflow = '// Common Valid Usage\n'
-
-# Markup for block delimiters whose contents should *not* be reformatted
-# |=== (3 or more) (table)
-# ++++ (4 or more) (passthrough block)
-# .... (4 or more) (literal block)
-# //// (4 or more) (comment block)
-# ---- (4 or more) (listing block)
-# ``` (3 or more) (listing block)
-# **** (4 or more) (sidebar block)
-blockPassthrough = re.compile(r'^(\|={3,}|[`]{3}|[\-+./~]{4,})$')
-
-# Markup for introducing lists (hanging paragraphs)
-# * bullet
-# ** bullet
-# -- bullet
-# . bullet
-# :: bullet (no longer supported by asciidoctor 2)
-# {empty}:: bullet
-# 1. list item
-beginBullet = re.compile(r'^ *([*\-.]+|\{empty\}::|::|[0-9]+[.]) ')
-
-# Start of an asciidoctor conditional
-# ifdef::
-# ifndef::
-conditionalStart = re.compile(r'^(ifdef|ifndef)::')
-
-# Text that (may) not end sentences
-
-# A single letter followed by a period, typically a middle initial.
-endInitial = re.compile(r'^[A-Z]\.$')
-# An abbreviation, which doesn't (usually) end a line.
-endAbbrev = re.compile(r'(e\.g|i\.e|c\.f|vs)\.$', re.IGNORECASE)
-
-class ReflowState:
- """State machine for reflowing.
-
- Represents the state of the reflow operation"""
- def __init__(self,
- filename,
- margin = 76,
- file = sys.stdout,
- breakPeriod = True,
- reflow = True,
- nextvu = None,
- maxvu = None):
-
- self.blockStack = [ None ]
- """The last element is a line with the asciidoc block delimiter that's currently in effect,
- such as '--', '----', '****', '======', or '+++++++++'.
- This affects whether or not the block contents should be formatted."""
-
- self.reflowStack = [ True ]
- """The last element is True or False if the current blockStack contents
- should be reflowed."""
- self.vuStack = [ False ]
- """the last element is True or False if the current blockStack contents
- are an explicit Valid Usage block."""
-
- self.margin = margin
- """margin to reflow text to."""
-
- self.para = []
- """list of lines in the paragraph being accumulated.
- When this is non-empty, there is a current paragraph."""
-
- self.lastTitle = False
- """true if the previous line was a document title line
- (e.g. :leveloffset: 0 - no attempt to track changes to this is made)."""
-
- self.leadIndent = 0
- """indent level (in spaces) of the first line of a paragraph."""
-
- self.hangIndent = 0
- """indent level of the remaining lines of a paragraph."""
-
- self.file = file
- """file handle to write to."""
-
- self.filename = filename
- """base name of file being read from."""
-
- self.lineNumber = 0
- """line number being read from the input file."""
-
- self.breakPeriod = breakPeriod
- """True if justification should break to a new line after the end of a sentence."""
-
- self.breakInitial = True
- """True if justification should break to a new line after
- something that appears to be an initial in someone's name. **TBD**"""
-
- self.reflow = reflow
- """True if text should be reflowed, False to pass through unchanged."""
-
- self.vuPrefix = 'VUID'
- """Prefix of generated Valid Usage tags"""
-
- self.vuFormat = '{0}-{1}-{2}-{3:0>5d}'
- """Format string for generating Valid Usage tags.
- First argument is vuPrefix, second is command/struct name, third is parameter name, fourth is the tag number."""
-
- self.nextvu = nextvu
- """Integer to start tagging un-numbered Valid Usage statements with,
- or None if no tagging should be done."""
-
- self.maxvu = maxvu
- """Maximum tag to use for Valid Usage statements, or None if no
- tagging should be done."""
-
- self.defaultApiName = '{refpage}'
- self.apiName = self.defaultApiName
- """String name of a Vulkan structure or command for VUID tag
- generation, or {refpage} if one hasn't been included in this file
- yet."""
-
- def incrLineNumber(self):
- self.lineNumber = self.lineNumber + 1
-
- def printLines(self, lines):
- """Print an array of lines with newlines already present"""
- if len(lines) > 0:
- logDiag(':: printLines:', len(lines), 'lines: ', lines[0], end='')
-
- if self.file is not None:
- for line in lines:
- print(line, file=self.file, end='')
-
- def endSentence(self, word):
- """Return True if word ends with a sentence-period, False otherwise.
-
- Allows for contraction cases which won't end a line:
-
- - A single letter (if breakInitial is True)
- - Abbreviations: 'c.f.', 'e.g.', 'i.e.' (or mixed-case versions)"""
- if (word[-1:] != '.' or
- endAbbrev.search(word) or
- (self.breakInitial and endInitial.match(word))):
- return False
-
- return True
-
- def vuidAnchor(self, word):
- """Return True if word is a Valid Usage ID Tag anchor."""
- return (word[0:7] == '[[VUID-')
-
- def isOpenBlockDelimiter(self, line):
- """Returns True if line is an open block delimiter."""
- return line[0:2] == '--'
-
- def reflowPara(self):
- """Reflow the current paragraph, respecting the paragraph lead and
- hanging indentation levels.
-
- The algorithm also respects trailing '+' signs that indicate embedded newlines,
- and will not reflow a very long word immediately after a bullet point.
-
- Just return the paragraph unchanged if the -noflow argument was
- given."""
- if not self.reflow:
- return self.para
-
- logDiag('reflowPara lead indent = ', self.leadIndent,
- 'hangIndent =', self.hangIndent,
- 'para:', self.para[0], end='')
-
- # Total words processed (we care about the *first* word vs. others)
- wordCount = 0
-
- # Tracks the *previous* word processed. It must not be empty.
- prevWord = ' '
-
- # Track the previous line and paragraph being indented, if any
- outLine = None
- outPara = []
-
- for line in self.para:
- line = line.rstrip()
- words = line.split()
-
- # logDiag('reflowPara: input line =', line)
- numWords = len(words) - 1
-
- for i in range(0, numWords + 1):
- word = words[i]
- wordLen = len(word)
- wordCount += 1
-
- endEscape = False
- if i == numWords and word == '+':
- # Trailing ' +' must stay on the same line
- endEscape = word
- # logDiag('reflowPara last word of line =', word, 'prevWord =', prevWord, 'endEscape =', endEscape)
- else:
- pass
- # logDiag('reflowPara wordCount =', wordCount, 'word =', word, 'prevWord =', prevWord)
-
- if wordCount == 1:
- # The first word of the paragraph is treated specially.
- # The loop logic becomes trickier if all this code is
- # done prior to looping over lines and words, so all the
- # setup logic is done here.
-
- outPara = []
- outLine = ''.ljust(self.leadIndent) + word
- outLineLen = self.leadIndent + wordLen
-
- # If the paragraph begins with a bullet point, generate
- # a hanging indent level if there isn't one already.
- if beginBullet.match(self.para[0]):
- bulletPoint = True
- if len(self.para) > 1:
- logDiag('reflowPara first line matches bullet point',
- 'but indent already hanging @ input line',
- self.lineNumber)
- else:
- logDiag('reflowPara first line matches bullet point -'
- 'single line, assuming hangIndent @ input line',
- self.lineNumber)
- self.hangIndent = outLineLen + 1
- else:
- bulletPoint = False
- else:
- # Possible actions to take with this word
- #
- # addWord - add word to current line
- # closeLine - append line and start a new (null) one
- # startLine - add word to a new line
-
- # Default behavior if all the tests below fail is to add
- # this word to the current line, and keep accumulating
- # that line.
- (addWord, closeLine, startLine) = (True, False, False)
-
- # How long would this line be if the word were added?
- newLen = outLineLen + 1 + wordLen
-
- # Are we on the first word following a bullet point?
- firstBullet = (wordCount == 2 and bulletPoint)
-
- if endEscape:
- # If the new word ends the input line with ' +',
- # add it to the current line.
-
- (addWord, closeLine, startLine) = (True, True, False)
- elif self.vuidAnchor(word):
- # If the new word is a Valid Usage anchor, break the
- # line afterwards. Note that this should only happen
- # immediately after a bullet point, but we don't
- # currently check for this.
- (addWord, closeLine, startLine) = (True, True, False)
- elif newLen > self.margin:
- if firstBullet:
- # If the word follows a bullet point, add it to
- # the current line no matter its length.
-
- (addWord, closeLine, startLine) = (True, True, False)
- elif beginBullet.match(word + ' '):
- # If the word *is* a bullet point, add it to
- # the current line no matter its length.
- # This avoids an innocent inline '-' or '*'
- # turning into a bogus bullet point.
-
- (addWord, closeLine, startLine) = (True, True, False)
- else:
- # The word overflows, so add it to a new line.
-
- (addWord, closeLine, startLine) = (False, True, True)
- elif (self.breakPeriod and
- (wordCount > 2 or not firstBullet) and
- self.endSentence(prevWord)):
- # If the previous word ends a sentence and
- # breakPeriod is set, start a new line.
- # The complicated logic allows for leading bullet
- # points which are periods (implicitly numbered lists).
- # @@@ But not yet for explicitly numbered lists.
-
- (addWord, closeLine, startLine) = (False, True, True)
-
- # Add a word to the current line
- if addWord:
- if outLine:
- outLine += ' ' + word
- outLineLen = newLen
- else:
- # Fall through to startLine case if there's no
- # current line yet.
- startLine = True
-
- # Add current line to the output paragraph. Force
- # starting a new line, although we don't yet know if it
- # will ever have contents.
- if closeLine:
- if outLine:
- outPara.append(outLine + '\n')
- outLine = None
-
- # Start a new line and add a word to it
- if startLine:
- outLine = ''.ljust(self.hangIndent) + word
- outLineLen = self.hangIndent + wordLen
-
- # Track the previous word, for use in breaking at end of
- # a sentence
- prevWord = word
-
- # Add this line to the output paragraph.
- if outLine:
- outPara.append(outLine + '\n')
-
- return outPara
-
- def emitPara(self):
- """Emit a paragraph, possibly reflowing it depending on the block context.
-
- Resets the paragraph accumulator."""
- if self.para != []:
- if self.vuStack[-1] and self.nextvu is not None:
- # If:
- # - this paragraph is in a Valid Usage block,
- # - VUID tags are being assigned,
- # Try to assign VUIDs
-
- if nestedVuPat.search(self.para[0]):
- # Check for nested bullet points. These should not be
- # assigned VUIDs, nor present at all, because they break
- # the VU extractor.
- logWarn(self.filename + ': Invalid nested bullet point in VU block:', self.para[0])
- elif self.vuPrefix not in self.para[0]:
- # If:
- # - a tag is not already present, and
- # - the paragraph is a properly marked-up list item
- # Then add a VUID tag starting with the next free ID.
-
- # Split the first line after the bullet point
- matches = vuPat.search(self.para[0])
- if matches is not None:
- logDiag('findRefs: Matched vuPat on line:', self.para[0], end='')
- head = matches.group('head')
- tail = matches.group('tail')
-
- # Use the first pname: or code: tag in the paragraph as
- # the parameter name in the VUID tag. This won't always
- # be correct, but should be highly reliable.
- for vuLine in self.para:
- matches = pnamePat.search(vuLine)
- if matches is not None:
- break
- matches = codePat.search(vuLine)
- if matches is not None:
- break
-
- if matches is not None:
- paramName = matches.group('param')
- else:
- paramName = 'None'
- logWarn(self.filename,
- 'No param name found for VUID tag on line:',
- self.para[0])
-
- newline = (head + ' [[' +
- self.vuFormat.format(self.vuPrefix,
- self.apiName,
- paramName,
- self.nextvu) + ']] ' + tail)
-
- logDiag('Assigning', self.vuPrefix, self.apiName, self.nextvu,
- ' on line:', self.para[0], '->', newline, 'END')
-
- # Don't actually assign the VUID unless it's in the reserved range
- if self.nextvu <= self.maxvu:
- if self.nextvu == self.maxvu:
- logWarn('Skipping VUID assignment, no more VUIDs available')
- self.para[0] = newline
- self.nextvu = self.nextvu + 1
- # else:
- # There are only a few cases of this, and they're all
- # legitimate. Leave detecting this case to another tool
- # or hand inspection.
- # logWarn(self.filename + ': Unexpected non-bullet item in VU block (harmless if following an ifdef):',
- # self.para[0])
-
- if self.reflowStack[-1]:
- self.printLines(self.reflowPara())
- else:
- self.printLines(self.para)
-
- # Reset the paragraph, including its indentation level
- self.para = []
- self.leadIndent = 0
- self.hangIndent = 0
-
- def endPara(self, line):
- """'line' ends a paragraph and should itself be emitted.
- line may be None to indicate EOF or other exception."""
- logDiag('endPara line', self.lineNumber, ': emitting paragraph')
-
- # Emit current paragraph, this line, and reset tracker
- self.emitPara()
-
- if line:
- self.printLines( [ line ] )
-
- def endParaContinue(self, line):
- """'line' ends a paragraph (unless there's already a paragraph being
- accumulated, e.g. len(para) > 0 - currently not implemented)"""
- self.endPara(line)
-
- def endBlock(self, line, reflow = False, vuBlock = False):
- """'line' begins or ends a block.
-
- If beginning a block, tag whether or not to reflow the contents.
-
- vuBlock is True if the previous line indicates this is a Valid Usage block."""
- self.endPara(line)
-
- if self.blockStack[-1] == line:
- logDiag('endBlock line', self.lineNumber,
- ': popping block end depth:', len(self.blockStack),
- ':', line, end='')
-
- # Reset apiName at the end of an open block.
- # Open blocks cannot be nested (at present), so this is safe.
- if self.isOpenBlockDelimiter(line):
- logDiag('reset apiName to empty at line', self.lineNumber)
- self.apiName = self.defaultApiName
- else:
- logDiag('NOT resetting apiName to default at line', self.lineNumber)
-
- self.blockStack.pop()
- self.reflowStack.pop()
- self.vuStack.pop()
- else:
- # Start a block
- self.blockStack.append(line)
- self.reflowStack.append(reflow)
- self.vuStack.append(vuBlock)
-
- logDiag('endBlock reflow =', reflow, ' line', self.lineNumber,
- ': pushing block start depth', len(self.blockStack),
- ':', line, end='')
-
- def endParaBlockReflow(self, line, vuBlock):
- """'line' begins or ends a block. The paragraphs in the block *should* be
- reformatted (e.g. a NOTE)."""
- self.endBlock(line, reflow = True, vuBlock = vuBlock)
-
- def endParaBlockPassthrough(self, line):
- """'line' begins or ends a block. The paragraphs in the block should
- *not* be reformatted (e.g. a code listing)."""
- self.endBlock(line, reflow = False)
-
- def addLine(self, line):
- """'line' starts or continues a paragraph.
-
- Paragraphs may have "hanging indent", e.g.
-
- ```
- * Bullet point...
- ... continued
- ```
-
- In this case, when the higher indentation level ends, so does the
- paragraph."""
- logDiag('addLine line', self.lineNumber, ':', line, end='')
-
- # See https://stackoverflow.com/questions/13648813/what-is-the-pythonic-way-to-count-the-leading-spaces-in-a-string
- indent = len(line) - len(line.lstrip())
-
- # A hanging paragraph ends due to a less-indented line.
- if self.para != [] and indent < self.hangIndent:
- logDiag('addLine: line reduces indentation, emit paragraph')
- self.emitPara()
-
- # A bullet point (or something that looks like one) always ends the
- # current paragraph.
- if beginBullet.match(line):
- logDiag('addLine: line matches beginBullet, emit paragraph')
- self.emitPara()
-
- if self.para == []:
- # Begin a new paragraph
- self.para = [ line ]
- self.leadIndent = indent
- self.hangIndent = indent
- else:
- # Add a line to a paragraph. Increase the hanging indentation
- # level - once.
- if self.hangIndent == self.leadIndent:
- self.hangIndent = indent
- self.para.append(line)
-
-def apiMatch(oldname, newname):
- """Returns whether oldname and newname match, up to an API suffix.
- This should use the API map instead of this heuristic, since aliases
- like VkPhysicalDeviceVariablePointerFeatures ->
- VkPhysicalDeviceVariablePointersFeatures are not recognized."""
- upper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
- return oldname.rstrip(upper) == newname.rstrip(upper)
-
-def reflowFile(filename, args):
- logDiag('reflow: filename', filename)
-
- lines = loadFile(filename)
- if lines is None:
- return
-
- # Output file handle and reflow object for this file. There are no race
- # conditions on overwriting the input, but it's not recommended unless
- # you have backing store such as git.
-
- if args.overwrite:
- outFilename = filename
- else:
- outFilename = args.outDir + '/' + os.path.basename(filename) + args.suffix
-
- if args.nowrite:
- fp = None
- else:
- try:
- fp = open(outFilename, 'w', encoding='utf8')
- except:
- logWarn('Cannot open output file', outFilename, ':', sys.exc_info()[0])
- return
-
- state = ReflowState(filename,
- margin = args.margin,
- file = fp,
- reflow = not args.noflow,
- nextvu = args.nextvu,
- maxvu = args.maxvu)
-
- for line in lines:
- state.incrLineNumber()
-
- # Is this a title line (leading '= ' followed by text)?
- thisTitle = False
-
- matches = vuidPat.search(line)
- if matches is not None:
- # If we found a VUID pattern, add the (filename,line) it was
- # found at to a list for that VUID, to find duplicates.
- vuid = matches.group('vuid')
- if vuid not in args.vuidDict:
- args.vuidDict[vuid] = []
- args.vuidDict[vuid].append([filename, line])
-
- # The logic here is broken. If we're in a non-reflowable block and
- # this line *doesn't* end the block, it should always be
- # accumulated.
-
- # Test for a blockCommonReflow delimiter comment first, to avoid
- # treating it solely as a end-Paragraph marker comment.
- if line == blockCommonReflow:
- # Starting or ending a pseudo-block for "common" VU statements.
- state.endParaBlockReflow(line, vuBlock = True)
-
- elif blockReflow.match(line):
- # Starting or ending a block whose contents may be reflowed.
- # Blocks cannot be nested.
-
- # Is this is an explicit Valid Usage block?
- vuBlock = (state.lineNumber > 1 and
- lines[state.lineNumber-2] == '.Valid Usage\n')
-
- state.endParaBlockReflow(line, vuBlock)
-
- elif endPara.match(line):
- # Ending a paragraph. Emit the current paragraph, if any, and
- # prepare to begin a new paragraph.
-
- state.endPara(line)
-
- # If this is an include:: line starting the definition of a
- # structure or command, track that for use in VUID generation.
-
- matches = includePat.search(line)
- if matches is not None:
- generated_type = matches.group('generated_type')
- include_type = matches.group('category')
- if generated_type == 'api' and include_type in ('protos', 'structs', 'funcpointers'):
- apiName = matches.group('entity_name')
- if state.apiName != state.defaultApiName:
- # This happens when there are multiple API include
- # lines in a single block. The style guideline is to
- # always place the API which others are promoted to
- # first. In virtually all cases, the promoted API
- # will differ solely in the vendor suffix (or
- # absence of it), which is benign.
- if not apiMatch(state.apiName, apiName):
- logDiag(f'Promoted API name mismatch at line {state.lineNumber}: {apiName} does not match state.apiName (this is OK if it is just a spelling alias)')
- else:
- state.apiName = apiName
-
- elif endParaContinue.match(line):
- # For now, always just end the paragraph.
- # Could check see if len(para) > 0 to accumulate.
-
- state.endParaContinue(line)
-
- # If it's a title line, track that
- if line[0:2] == '= ':
- thisTitle = True
-
- elif blockPassthrough.match(line):
- # Starting or ending a block whose contents must not be reflowed.
- # These are tables, etc. Blocks cannot be nested.
-
- state.endParaBlockPassthrough(line)
- elif state.lastTitle:
- # The previous line was a document title line. This line
- # is the author / credits line and must not be reflowed.
-
- state.endPara(line)
- else:
- # Just accumulate a line to the current paragraph. Watch out for
- # hanging indents / bullet-points and track that indent level.
-
- state.addLine(line)
-
- # This test looks for disallowed conditionals inside Valid Usage
- # blocks, by checking if (a) this line does not start a new VU
- # (bullet point) and (b) the previous line starts an asciidoctor
- # conditional (ifdef:: or ifndef::).
-
- if (args.check
- and state.vuStack[-1]
- and not beginBullet.match(line)
- and conditionalStart.match(lines[state.lineNumber-2])):
-
- logWarn('Detected embedded Valid Usage conditional: {}:{}'.format(
- filename, state.lineNumber - 1))
- # Keep track of warning check count
- args.warnCount = args.warnCount + 1
-
- state.lastTitle = thisTitle
-
- # Cleanup at end of file
- state.endPara(None)
-
- # Check for sensible block nesting
- if len(state.blockStack) > 1:
- logWarn('file', filename,
- 'mismatched asciidoc block delimiters at EOF:',
- state.blockStack[-1])
-
- if fp is not None:
- fp.close()
-
- # Update the 'nextvu' value
- if args.nextvu != state.nextvu:
- logWarn('Updated nextvu to', state.nextvu, 'after file', filename)
- args.nextvu = state.nextvu
-
-def reflowAllAdocFiles(folder_to_reflow, args):
- for root, subdirs, files in os.walk(folder_to_reflow):
- for file in files:
- if file.endswith(conventions.file_suffix):
- file_path = os.path.join(root, file)
- reflowFile(file_path, args)
- for subdir in subdirs:
- sub_folder = os.path.join(root, subdir)
- print('Sub-folder = %s' % sub_folder)
- if subdir.lower() not in conventions.spec_no_reflow_dirs:
- print(' Parsing = %s' % sub_folder)
- reflowAllAdocFiles(sub_folder, args)
- else:
- print(' Skipping = %s' % sub_folder)
-
-# Patterns used to recognize interesting lines in an asciidoc source file.
-# These patterns are only compiled once.
-
-# Explicit Valid Usage list item with one or more leading asterisks
-# The re.DOTALL is needed to prevent vuPat.search() from stripping
-# the trailing newline.
-vuPat = re.compile(r'^(?P<head> [*]+)( *)(?P<tail>.*)', re.DOTALL)
-
-# VUID with the numeric portion captured in the match object
-vuidPat = re.compile(r'VUID-[^-]+-[^-]+-(?P<vuid>[0-9]+)')
-
-# Pattern matching leading nested bullet points
-global nestedVuPat
-nestedVuPat = re.compile(r'^ \*\*')
-
-if __name__ == '__main__':
- parser = argparse.ArgumentParser()
-
- parser.add_argument('-diag', action='store', dest='diagFile',
- help='Set the diagnostic file')
- parser.add_argument('-warn', action='store', dest='warnFile',
- help='Set the warning file')
- parser.add_argument('-log', action='store', dest='logFile',
- help='Set the log file for both diagnostics and warnings')
- parser.add_argument('-overwrite', action='store_true',
- help='Overwrite input filenames instead of writing different output filenames')
- parser.add_argument('-out', action='store', dest='outDir',
- default='out',
- help='Set the output directory in which updated files are generated (default: out)')
- parser.add_argument('-nowrite', action='store_true',
- help='Do not write output files, for use with -check')
- parser.add_argument('-check', action='store', dest='check',
- help='Run markup checks and warn if WARN option is given, error exit if FAIL option is given')
- parser.add_argument('-checkVUID', action='store', dest='checkVUID',
- help='Detect duplicated VUID numbers and warn if WARN option is given, error exit if FAIL option is given')
- parser.add_argument('-tagvu', action='store_true',
- help='Tag un-tagged Valid Usage statements starting at the value wired into reflow.py')
- parser.add_argument('-nextvu', action='store', dest='nextvu', type=int,
- default=None,
- help='Specify start VUID to use instead of the value wired into vuidCounts.py')
- parser.add_argument('-maxvu', action='store', dest='maxvu', type=int,
- default=None,
- help='Specify maximum VUID instead of the value wired into vuidCounts.py')
- parser.add_argument('-branch', action='store', dest='branch',
- help='Specify branch to assign VUIDs for')
- parser.add_argument('-noflow', action='store_true', dest='noflow',
- help='Do not reflow text. Other actions may apply')
- parser.add_argument('-margin', action='store', type=int, dest='margin',
- default='76',
- help='Width to reflow text, defaults to 76 characters')
- parser.add_argument('-suffix', action='store', dest='suffix',
- default='',
- help='Set the suffix added to updated file names (default: none)')
- parser.add_argument('files', metavar='filename', nargs='*',
- help='a filename to reflow text in')
- parser.add_argument('--version', action='version', version='%(prog)s 1.0')
-
- args = parser.parse_args()
-
- setLogFile(True, True, args.logFile)
- setLogFile(True, False, args.diagFile)
- setLogFile(False, True, args.warnFile)
-
- print('args.margin = ', args.margin)
-
- if args.overwrite:
- logWarn("reflow.py: will overwrite all input files")
-
- errors = ''
- if args.branch is None:
- (args.branch, errors) = getBranch()
- if args.branch is None:
- # This is not fatal unless VUID assignment is required
- if args.tagvu:
- logErr('Cannot determine current git branch, so cannot assign VUIDs:', errors)
-
- if args.tagvu and args.nextvu is None:
- # Moved here since vuidCounts is only needed in the internal
- # repository
- from vuidCounts import vuidCounts
-
- if args.branch not in vuidCounts:
- logErr('Branch', args.branch, 'not in vuidCounts, cannot continue')
- maxVUID = vuidCounts[args.branch][1]
- startVUID = vuidCounts[args.branch][2]
- args.nextvu = startVUID
- args.maxvu = maxVUID
-
- if args.nextvu is not None:
- logWarn('Tagging untagged Valid Usage statements starting at', args.nextvu)
-
- # Count of markup check warnings encountered
- # This is added to the argparse structure
- args.warnCount = 0
-
- # Dictionary of VUID numbers found, containing a list of (file, line) on
- # which that number was found
- # This is added to the argparse structure
- args.vuidDict = {}
-
- # If no files are specified, reflow the entire specification chapters folder
- if not args.files:
- folder_to_reflow = conventions.spec_reflow_path
- logWarn('Reflowing all asciidoc files under', folder_to_reflow)
- reflowAllAdocFiles(folder_to_reflow, args)
- else:
- for file in args.files:
- reflowFile(file, args)
-
- if args.warnCount > 0:
- if args.check == 'FAIL':
- logErr('Failed with', args.warnCount, 'markup errors detected.\n' +
- 'To fix these, you can take actions such as:\n' +
- ' * Moving conditionals outside VU start / end without changing VU meaning\n' +
- ' * Refactor conditional text using terminology defined conditionally outside the VU itself\n' +
- ' * Remove the conditional (allowable when this just affects command / structure / enum names)\n')
- else:
- logWarn('Total warning count for markup issues is', args.warnCount)
-
- # Look for duplicated VUID numbers
- if args.checkVUID:
- dupVUIDs = 0
- for vuid in sorted(args.vuidDict):
- found = args.vuidDict[vuid]
- if len(found) > 1:
- logWarn('Duplicate VUID number {} found in files:'.format(vuid))
- for (file, line) in found:
- logWarn(' {}: {}'.format(file, line))
- dupVUIDs = dupVUIDs + 1
-
- if dupVUIDs > 0:
- if args.checkVUID == 'FAIL':
- logErr('Failed with', dupVUIDs, 'duplicated VUID numbers found.\n' +
- 'To fix this, either convert these to commonvalidity VUs if possible, or strip\n' +
- 'the VUIDs from all but one of the duplicates and regenerate new ones.')
- else:
- logWarn('Total number of duplicated VUID numbers is', dupVUIDs)
-
- if args.nextvu is not None and args.nextvu != startVUID:
- # Update next free VUID to assign
- vuidCounts[args.branch][2] = args.nextvu
- try:
- reflow_count_file_path = os.path.dirname(os.path.realpath(__file__))
- reflow_count_file_path += '/vuidCounts.py'
- reflow_count_file = open(reflow_count_file_path, 'w', encoding='utf8')
- print('# Do not edit this file!', file=reflow_count_file)
- print('# VUID ranges reserved for branches', file=reflow_count_file)
- print('# Key is branch name, value is [ start, end, nextfree ]', file=reflow_count_file)
- print('vuidCounts = {', file=reflow_count_file)
- for key in sorted(vuidCounts):
- print(" '{}': [ {}, {}, {} ],".format(
- key,
- vuidCounts[key][0],
- vuidCounts[key][1],
- vuidCounts[key][2]),
- file=reflow_count_file)
- print('}', file=reflow_count_file)
- reflow_count_file.close()
- except:
- logWarn('Cannot open output count file vuidCounts.py', ':', sys.exc_info()[0])
diff --git a/codegen/vulkan/scripts/reg.py b/codegen/vulkan/scripts/reg.py
deleted file mode 100644
index 254cfbdb..00000000
--- a/codegen/vulkan/scripts/reg.py
+++ /dev/null
@@ -1,1466 +0,0 @@
-#!/usr/bin/python3 -i
-#
-# Copyright 2013-2021 The Khronos Group Inc.
-#
-# SPDX-License-Identifier: Apache-2.0
-
-"""Types and classes for manipulating an API registry."""
-
-import copy
-import re
-import sys
-import xml.etree.ElementTree as etree
-from collections import defaultdict, namedtuple
-from generator import OutputGenerator, GeneratorOptions, write
-import pdb
-
-def apiNameMatch(str, supported):
- """Return whether a required api name matches a pattern specified for an
- XML <feature> 'api' attribute or <extension> 'supported' attribute.
-
- - str - api name such as 'vulkan' or 'openxr'
- - supported - comma-separated list of XML API names"""
-
- return (str is not None and str in supported.split(','))
-
-
-def matchAPIProfile(api, profile, elem):
- """Return whether an API and profile
- being generated matches an element's profile
-
- - api - string naming the API to match
- - profile - string naming the profile to match
- - elem - Element which (may) have 'api' and 'profile'
- attributes to match to.
-
- If a tag is not present in the Element, the corresponding API
- or profile always matches.
-
- Otherwise, the tag must exactly match the API or profile.
-
- Thus, if 'profile' = core:
-
- - `<remove>` with no attribute will match
- - `<remove profile="core">` will match
- - `<remove profile="compatibility">` will not match
-
- Possible match conditions:
-
- ```
- Requested Element
- Profile Profile
- --------- --------
- None None Always matches
- 'string' None Always matches
- None 'string' Does not match. Can't generate multiple APIs
- or profiles, so if an API/profile constraint
- is present, it must be asked for explicitly.
- 'string' 'string' Strings must match
- ```
-
- ** In the future, we will allow regexes for the attributes,
- not just strings, so that `api="^(gl|gles2)"` will match. Even
- this isn't really quite enough, we might prefer something
- like `"gl(core)|gles1(common-lite)"`."""
- # Match 'api', if present
- elem_api = elem.get('api')
- if elem_api:
- if api is None:
- raise UserWarning("No API requested, but 'api' attribute is present with value '"
- + elem_api + "'")
- elif api != elem_api:
- # Requested API doesn't match attribute
- return False
- elem_profile = elem.get('profile')
- if elem_profile:
- if profile is None:
- raise UserWarning("No profile requested, but 'profile' attribute is present with value '"
- + elem_profile + "'")
- elif profile != elem_profile:
- # Requested profile doesn't match attribute
- return False
- return True
-
-
-class BaseInfo:
- """Base class for information about a registry feature
- (type/group/enum/command/API/extension).
-
- Represents the state of a registry feature, used during API generation.
- """
-
- def __init__(self, elem):
- self.required = False
- """should this feature be defined during header generation
- (has it been removed by a profile or version)?"""
-
- self.declared = False
- "has this feature been defined already?"
-
- self.elem = elem
- "etree Element for this feature"
-
- def resetState(self):
- """Reset required/declared to initial values. Used
- prior to generating a new API interface."""
- self.required = False
- self.declared = False
-
- 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'"""
-
- 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, 'extnumber') and
- self.compareKeys(info, 'offset') and
- self.compareKeys(info, 'dir')):
- # If both specify the same relative offset, they're equal
- return True
- elif (self.compareKeys(info, 'alias')):
- # If both are aliases of the same value
- return True
- else:
- return False
- else:
- # The same enum can't extend two different types
- return False
- else:
- # Non-<enum>s should never be redefined
- return False
-
-
-class TypeInfo(BaseInfo):
- """Registry information about a type. No additional state
- beyond BaseInfo is required."""
-
- def __init__(self, elem):
- BaseInfo.__init__(self, elem)
- self.additionalValidity = []
- self.removedValidity = []
-
- def getMembers(self):
- """Get a collection of all member elements for this type, if any."""
- return self.elem.findall('member')
-
- def resetState(self):
- BaseInfo.resetState(self)
- self.additionalValidity = []
- self.removedValidity = []
-
-
-class GroupInfo(BaseInfo):
- """Registry information about a group of related enums
- in an <enums> block, generally corresponding to a C "enum" type."""
-
- def __init__(self, elem):
- BaseInfo.__init__(self, elem)
-
-
-class EnumInfo(BaseInfo):
- """Registry information about an enum"""
-
- def __init__(self, elem):
- BaseInfo.__init__(self, elem)
- self.type = elem.get('type')
- """numeric type of the value of the <enum> tag
- ( '' for GLint, 'u' for GLuint, 'ull' for GLuint64 )"""
- if self.type is None:
- self.type = ''
-
-
-class CmdInfo(BaseInfo):
- """Registry information about a command"""
-
- def __init__(self, elem):
- BaseInfo.__init__(self, elem)
- self.additionalValidity = []
- self.removedValidity = []
-
- def getParams(self):
- """Get a collection of all param elements for this command, if any."""
- return self.elem.findall('param')
-
- def resetState(self):
- BaseInfo.resetState(self)
- self.additionalValidity = []
- self.removedValidity = []
-
-
-class FeatureInfo(BaseInfo):
- """Registry information about an API <feature>
- or <extension>."""
-
- def __init__(self, elem):
- BaseInfo.__init__(self, elem)
- self.name = elem.get('name')
- "feature name string (e.g. 'VK_KHR_surface')"
-
- self.emit = False
- "has this feature been defined already?"
-
- self.sortorder = int(elem.get('sortorder', 0))
- """explicit numeric sort key within feature and extension groups.
- Defaults to 0."""
-
- # Determine element category (vendor). Only works
- # for <extension> elements.
- if elem.tag == 'feature':
- # Element category (vendor) is meaningless for <feature>
- self.category = 'VERSION'
- """category, e.g. VERSION or khr/vendor tag"""
-
- self.version = elem.get('name')
- """feature name string"""
-
- self.versionNumber = elem.get('number')
- """versionNumber - API version number, taken from the 'number'
- attribute of <feature>. Extensions do not have API version
- numbers and are assigned number 0."""
-
- self.number = "0"
- self.supported = None
- else:
- # Extract vendor portion of <APIprefix>_<vendor>_<name>
- self.category = self.name.split('_', 2)[1]
- self.version = "0"
- self.versionNumber = "0"
- self.number = elem.get('number')
- """extension number, used for ordering and for assigning
- enumerant offsets. <feature> features do not have extension
- numbers and are assigned number 0."""
-
- # If there's no 'number' attribute, use 0, so sorting works
- if self.number is None:
- self.number = 0
- self.supported = elem.get('supported')
-
-class SpirvInfo(BaseInfo):
- """Registry information about an API <spirvextensions>
- or <spirvcapability>."""
-
- def __init__(self, elem):
- BaseInfo.__init__(self, elem)
-
-class Registry:
- """Object representing an API registry, loaded from an XML file."""
-
- def __init__(self, gen=None, genOpts=None):
- if gen is None:
- # If not specified, give a default object so messaging will work
- self.gen = OutputGenerator()
- else:
- self.gen = gen
- "Output generator used to write headers / messages"
-
- if genOpts is None:
- self.genOpts = GeneratorOptions()
- else:
- self.genOpts = genOpts
- "Options controlling features to write and how to format them"
-
- self.gen.registry = self
- self.gen.genOpts = self.genOpts
- self.gen.genOpts.registry = self
-
- self.tree = None
- "ElementTree containing the root `<registry>`"
-
- self.typedict = {}
- "dictionary of TypeInfo objects keyed by type name"
-
- self.groupdict = {}
- "dictionary of GroupInfo objects keyed by group name"
-
- self.enumdict = {}
- "dictionary of EnumInfo objects keyed by enum name"
-
- self.cmddict = {}
- "dictionary of CmdInfo objects keyed by command name"
-
- self.apidict = {}
- "dictionary of FeatureInfo objects for `<feature>` elements keyed by API name"
-
- self.extensions = []
- "list of `<extension>` Elements"
-
- self.extdict = {}
- "dictionary of FeatureInfo objects for `<extension>` elements keyed by extension name"
-
- self.spirvextdict = {}
- "dictionary of FeatureInfo objects for `<spirvextension>` elements keyed by spirv extension name"
-
- self.spirvcapdict = {}
- "dictionary of FeatureInfo objects for `<spirvcapability>` elements keyed by spirv capability name"
-
- self.emitFeatures = False
- """True to actually emit features for a version / extension,
- or False to just treat them as emitted"""
-
- self.breakPat = None
- "regexp pattern to break on when generating names"
- # self.breakPat = re.compile('VkFenceImportFlagBits.*')
-
- self.requiredextensions = [] # Hack - can remove it after validity generator goes away
-
- # ** Global types for automatic source generation **
- # Length Member data
- self.commandextensiontuple = namedtuple('commandextensiontuple',
- ['command', # The name of the command being modified
- 'value', # The value to append to the command
- 'extension']) # The name of the extension that added it
- self.validextensionstructs = defaultdict(list)
- self.commandextensionsuccesses = []
- self.commandextensionerrors = []
-
- self.filename = None
-
- def loadElementTree(self, tree):
- """Load ElementTree into a Registry object and parse it."""
- self.tree = tree
- self.parseTree()
-
- def loadFile(self, file):
- """Load an API registry XML file into a Registry object and parse it"""
- self.filename = file
- self.tree = etree.parse(file)
- self.parseTree()
-
- def setGenerator(self, gen):
- """Specify output generator object.
-
- `None` restores the default generator."""
- self.gen = gen
- self.gen.setRegistry(self)
-
- def addElementInfo(self, elem, info, infoName, dictionary):
- """Add information about an element to the corresponding dictionary.
-
- Intended for internal use only.
-
- - elem - `<type>`/`<enums>`/`<enum>`/`<command>`/`<feature>`/`<extension>`/`<spirvextension>`/`<spirvcapability>` Element
- - info - corresponding {Type|Group|Enum|Cmd|Feature|Spirv}Info object
- - infoName - 'type' / 'group' / 'enum' / 'command' / 'feature' / 'extension' / 'spirvextension' / 'spirvcapability'
- - dictionary - self.{type|group|enum|cmd|api|ext|spirvext|spirvcap}dict
-
- If the Element has an 'api' attribute, the dictionary key is the
- tuple (name,api). If not, the key is the name. 'name' is an
- attribute of the Element"""
- # self.gen.logMsg('diag', 'Adding ElementInfo.required =',
- # info.required, 'name =', elem.get('name'))
- api = elem.get('api')
- if api:
- key = (elem.get('name'), api)
- else:
- key = elem.get('name')
- if key in dictionary:
- if not dictionary[key].compareElem(info, infoName):
- self.gen.logMsg('warn', 'Attempt to redefine', key,
- '(this should not happen)')
- else:
- True
- else:
- dictionary[key] = info
-
- def lookupElementInfo(self, fname, dictionary):
- """Find a {Type|Enum|Cmd}Info object by name.
-
- Intended for internal use only.
-
- If an object qualified by API name exists, use that.
-
- - fname - name of type / enum / command
- - dictionary - self.{type|enum|cmd}dict"""
- key = (fname, self.genOpts.apiname)
- if key in dictionary:
- # self.gen.logMsg('diag', 'Found API-specific element for feature', fname)
- return dictionary[key]
- if fname in dictionary:
- # self.gen.logMsg('diag', 'Found generic element for feature', fname)
- return dictionary[fname]
-
- return None
-
- def breakOnName(self, regexp):
- """Specify a feature name regexp to break on when generating features."""
- self.breakPat = re.compile(regexp)
-
- def parseTree(self):
- """Parse the registry Element, once created"""
- # This must be the Element for the root <registry>
- self.reg = self.tree.getroot()
-
- # Create dictionary of registry types from toplevel <types> tags
- # and add 'name' attribute to each <type> tag (where missing)
- # based on its <name> element.
- #
- # There's usually one <types> block; more are OK
- # Required <type> attributes: 'name' or nested <name> tag contents
- self.typedict = {}
- for type_elem in self.reg.findall('types/type'):
- # If the <type> doesn't already have a 'name' attribute, set
- # it from contents of its <name> tag.
- if type_elem.get('name') is None:
- type_elem.set('name', type_elem.find('name').text)
- self.addElementInfo(type_elem, TypeInfo(type_elem), 'type', self.typedict)
-
- # Create dictionary of registry enum groups from <enums> tags.
- #
- # Required <enums> attributes: 'name'. If no name is given, one is
- # generated, but that group can't be identified and turned into an
- # enum type definition - it's just a container for <enum> tags.
- self.groupdict = {}
- for group in self.reg.findall('enums'):
- self.addElementInfo(group, GroupInfo(group), 'group', self.groupdict)
-
- # Create dictionary of registry enums from <enum> tags
- #
- # <enums> tags usually define different namespaces for the values
- # defined in those tags, but the actual names all share the
- # same dictionary.
- # Required <enum> attributes: 'name', 'value'
- # For containing <enums> which have type="enum" or type="bitmask",
- # tag all contained <enum>s are required. This is a stopgap until
- # a better scheme for tagging core and extension enums is created.
- self.enumdict = {}
- for enums in self.reg.findall('enums'):
- required = (enums.get('type') is not None)
- for enum in enums.findall('enum'):
- enumInfo = EnumInfo(enum)
- enumInfo.required = required
- self.addElementInfo(enum, enumInfo, 'enum', self.enumdict)
-
- # Create dictionary of registry commands from <command> tags
- # and add 'name' attribute to each <command> tag (where missing)
- # based on its <proto><name> element.
- #
- # There's usually only one <commands> block; more are OK.
- # Required <command> attributes: 'name' or <proto><name> tag contents
- self.cmddict = {}
- # List of commands which alias others. Contains
- # [ aliasName, element ]
- # for each alias
- cmdAlias = []
- for cmd in self.reg.findall('commands/command'):
- # If the <command> doesn't already have a 'name' attribute, set
- # it from contents of its <proto><name> tag.
- name = cmd.get('name')
- if name is None:
- name = cmd.set('name', cmd.find('proto/name').text)
- ci = CmdInfo(cmd)
- self.addElementInfo(cmd, ci, 'command', self.cmddict)
- alias = cmd.get('alias')
- if alias:
- cmdAlias.append([name, alias, cmd])
-
- # Now loop over aliases, injecting a copy of the aliased command's
- # Element with the aliased prototype name replaced with the command
- # name - if it exists.
- for (name, alias, cmd) in cmdAlias:
- if alias in self.cmddict:
- aliasInfo = self.cmddict[alias]
- cmdElem = copy.deepcopy(aliasInfo.elem)
- cmdElem.find('proto/name').text = name
- cmdElem.set('name', name)
- cmdElem.set('alias', alias)
- ci = CmdInfo(cmdElem)
- # Replace the dictionary entry for the CmdInfo element
- self.cmddict[name] = ci
-
- # @ newString = etree.tostring(base, encoding="unicode").replace(aliasValue, aliasName)
- # @elem.append(etree.fromstring(replacement))
- else:
- self.gen.logMsg('warn', 'No matching <command> found for command',
- cmd.get('name'), 'alias', alias)
-
- # Create dictionaries of API and extension interfaces
- # from toplevel <api> and <extension> tags.
- self.apidict = {}
- for feature in self.reg.findall('feature'):
- featureInfo = FeatureInfo(feature)
- self.addElementInfo(feature, featureInfo, 'feature', self.apidict)
-
- # Add additional enums defined only in <feature> tags
- # to the corresponding enumerated type.
- # When seen here, the <enum> element, processed to contain the
- # numeric enum value, is added to the corresponding <enums>
- # element, as well as adding to the enum dictionary. It is no
- # longer removed from the <require> element it is introduced in.
- # Instead, generateRequiredInterface ignores <enum> elements
- # that extend enumerated types.
- #
- # For <enum> tags which are actually just constants, if there's
- # no 'extends' tag but there is a 'value' or 'bitpos' tag, just
- # add an EnumInfo record to the dictionary. That works because
- # output generation of constants is purely dependency-based, and
- # doesn't need to iterate through the XML tags.
- for elem in feature.findall('require'):
- for enum in elem.findall('enum'):
- addEnumInfo = False
- groupName = enum.get('extends')
- if groupName is not None:
- # self.gen.logMsg('diag', 'Found extension enum',
- # enum.get('name'))
- # Add version number attribute to the <enum> element
- enum.set('version', featureInfo.version)
- # Look up the GroupInfo with matching groupName
- if groupName in self.groupdict:
- # self.gen.logMsg('diag', 'Matching group',
- # groupName, 'found, adding element...')
- gi = self.groupdict[groupName]
- gi.elem.append(copy.deepcopy(enum))
- else:
- self.gen.logMsg('warn', 'NO matching group',
- groupName, 'for enum', enum.get('name'), 'found.')
- addEnumInfo = True
- elif enum.get('value') or enum.get('bitpos') or enum.get('alias'):
- # self.gen.logMsg('diag', 'Adding extension constant "enum"',
- # enum.get('name'))
- addEnumInfo = True
- if addEnumInfo:
- enumInfo = EnumInfo(enum)
- self.addElementInfo(enum, enumInfo, 'enum', self.enumdict)
-
- self.extensions = self.reg.findall('extensions/extension')
- self.extdict = {}
- for feature in self.extensions:
- featureInfo = FeatureInfo(feature)
- self.addElementInfo(feature, featureInfo, 'extension', self.extdict)
-
- # Add additional enums defined only in <extension> tags
- # to the corresponding core type.
- # Algorithm matches that of enums in a "feature" tag as above.
- #
- # This code also adds a 'extnumber' attribute containing the
- # extension number, used for enumerant value calculation.
- for elem in feature.findall('require'):
- for enum in elem.findall('enum'):
- addEnumInfo = False
- groupName = enum.get('extends')
- if groupName is not None:
- # self.gen.logMsg('diag', 'Found extension enum',
- # enum.get('name'))
-
- # Add <extension> block's extension number attribute to
- # the <enum> element unless specified explicitly, such
- # as when redefining an enum in another extension.
- extnumber = enum.get('extnumber')
- if not extnumber:
- enum.set('extnumber', featureInfo.number)
-
- enum.set('extname', featureInfo.name)
- enum.set('supported', featureInfo.supported)
- # Look up the GroupInfo with matching groupName
- if groupName in self.groupdict:
- # self.gen.logMsg('diag', 'Matching group',
- # groupName, 'found, adding element...')
- gi = self.groupdict[groupName]
- gi.elem.append(copy.deepcopy(enum))
- else:
- self.gen.logMsg('warn', 'NO matching group',
- groupName, 'for enum', enum.get('name'), 'found.')
- addEnumInfo = True
- elif enum.get('value') or enum.get('bitpos') or enum.get('alias'):
- # self.gen.logMsg('diag', 'Adding extension constant "enum"',
- # enum.get('name'))
- addEnumInfo = True
- if addEnumInfo:
- enumInfo = EnumInfo(enum)
- self.addElementInfo(enum, enumInfo, 'enum', self.enumdict)
-
- # Construct a "validextensionstructs" list for parent structures
- # based on "structextends" tags in child structures
- disabled_types = []
- for disabled_ext in self.reg.findall('extensions/extension[@supported="disabled"]'):
- for type_elem in disabled_ext.findall("*/type"):
- disabled_types.append(type_elem.get('name'))
- for type_elem in self.reg.findall('types/type'):
- if type_elem.get('name') not in disabled_types:
- parentStructs = type_elem.get('structextends')
- if parentStructs is not None:
- for parent in parentStructs.split(','):
- # self.gen.logMsg('diag', type.get('name'), 'extends', parent)
- self.validextensionstructs[parent].append(type_elem.get('name'))
- # Sort the lists so they don't depend on the XML order
- for parent in self.validextensionstructs:
- self.validextensionstructs[parent].sort()
-
- # Parse out all spirv tags in dictionaries
- # Use addElementInfo to catch duplicates
- for spirv in self.reg.findall('spirvextensions/spirvextension'):
- spirvInfo = SpirvInfo(spirv)
- self.addElementInfo(spirv, spirvInfo, 'spirvextension', self.spirvextdict)
- for spirv in self.reg.findall('spirvcapabilities/spirvcapability'):
- spirvInfo = SpirvInfo(spirv)
- self.addElementInfo(spirv, spirvInfo, 'spirvcapability', self.spirvcapdict)
-
- def dumpReg(self, maxlen=120, filehandle=sys.stdout):
- """Dump all the dictionaries constructed from the Registry object.
-
- Diagnostic to dump the dictionaries to specified file handle (default stdout).
- Truncates type / enum / command elements to maxlen characters (default 120)"""
- write('***************************************', file=filehandle)
- write(' ** Dumping Registry contents **', file=filehandle)
- write('***************************************', file=filehandle)
- write('// Types', file=filehandle)
- for name in self.typedict:
- tobj = self.typedict[name]
- write(' Type', name, '->', etree.tostring(tobj.elem)[0:maxlen], file=filehandle)
- write('// Groups', file=filehandle)
- for name in self.groupdict:
- gobj = self.groupdict[name]
- write(' Group', name, '->', etree.tostring(gobj.elem)[0:maxlen], file=filehandle)
- write('// Enums', file=filehandle)
- for name in self.enumdict:
- eobj = self.enumdict[name]
- write(' Enum', name, '->', etree.tostring(eobj.elem)[0:maxlen], file=filehandle)
- write('// Commands', file=filehandle)
- for name in self.cmddict:
- cobj = self.cmddict[name]
- write(' Command', name, '->', etree.tostring(cobj.elem)[0:maxlen], file=filehandle)
- write('// APIs', file=filehandle)
- for key in self.apidict:
- write(' API Version ', key, '->',
- etree.tostring(self.apidict[key].elem)[0:maxlen], file=filehandle)
- write('// Extensions', file=filehandle)
- for key in self.extdict:
- write(' Extension', key, '->',
- etree.tostring(self.extdict[key].elem)[0:maxlen], file=filehandle)
- write('// SPIR-V', file=filehandle)
- for key in self.spirvextdict:
- write(' SPIR-V Extension', key, '->',
- etree.tostring(self.spirvextdict[key].elem)[0:maxlen], file=filehandle)
- for key in self.spirvcapdict:
- write(' SPIR-V Capability', key, '->',
- etree.tostring(self.spirvcapdict[key].elem)[0:maxlen], file=filehandle)
-
- def markTypeRequired(self, typename, required):
- """Require (along with its dependencies) or remove (but not its dependencies) a type.
-
- - typename - name of type
- - required - boolean (to tag features as required or not)
- """
- self.gen.logMsg('diag', 'tagging type:', typename, '-> required =', required)
- # Get TypeInfo object for <type> tag corresponding to typename
- typeinfo = self.lookupElementInfo(typename, self.typedict)
- if typeinfo is not None:
- if required:
- # Tag type dependencies in 'alias' and 'required' attributes as
- # required. This does not un-tag dependencies in a <remove>
- # tag. See comments in markRequired() below for the reason.
- for attrib_name in ['requires', 'alias']:
- depname = typeinfo.elem.get(attrib_name)
- if depname:
- self.gen.logMsg('diag', 'Generating dependent type',
- depname, 'for', attrib_name, 'type', typename)
- # Don't recurse on self-referential structures.
- if typename != depname:
- self.markTypeRequired(depname, required)
- else:
- self.gen.logMsg('diag', 'type', typename, 'is self-referential')
- # Tag types used in defining this type (e.g. in nested
- # <type> tags)
- # Look for <type> in entire <command> tree,
- # not just immediate children
- for subtype in typeinfo.elem.findall('.//type'):
- self.gen.logMsg('diag', 'markRequired: type requires dependent <type>', subtype.text)
- if typename != subtype.text:
- self.markTypeRequired(subtype.text, required)
- else:
- self.gen.logMsg('diag', 'type', typename, 'is self-referential')
- # Tag enums used in defining this type, for example in
- # <member><name>member</name>[<enum>MEMBER_SIZE</enum>]</member>
- for subenum in typeinfo.elem.findall('.//enum'):
- self.gen.logMsg('diag', 'markRequired: type requires dependent <enum>', subenum.text)
- self.markEnumRequired(subenum.text, required)
- # Tag type dependency in 'bitvalues' attributes as
- # required. This ensures that the bit values for a flag
- # are emitted
- depType = typeinfo.elem.get('bitvalues')
- if depType:
- self.gen.logMsg('diag', 'Generating bitflag type',
- depType, 'for type', typename)
- self.markTypeRequired(depType, required)
- group = self.lookupElementInfo(depType, self.groupdict)
- if group is not None:
- group.flagType = typeinfo
-
- typeinfo.required = required
- elif '.h' not in typename:
- self.gen.logMsg('warn', 'type:', typename, 'IS NOT DEFINED')
-
- def markEnumRequired(self, enumname, required):
- """Mark an enum as required or not.
-
- - enumname - name of enum
- - required - boolean (to tag features as required or not)"""
-
- self.gen.logMsg('diag', 'tagging enum:', enumname, '-> required =', required)
- enum = self.lookupElementInfo(enumname, self.enumdict)
- if enum is not None:
- # If the enum is part of a group, and is being removed, then
- # look it up in that <group> tag and remove it there, so that it
- # isn't visible to generators (which traverse the <group> tag
- # elements themselves).
- # This isn't the most robust way of doing this, since a removed
- # enum that's later required again will no longer have a group
- # element, but it makes the change non-intrusive on generator
- # code.
- if required is False:
- groupName = enum.elem.get('extends')
- if groupName is not None:
- # Look up the Info with matching groupName
- if groupName in self.groupdict:
- gi = self.groupdict[groupName]
- gienum = gi.elem.find("enum[@name='" + enumname + "']")
- if gienum is not None:
- # Remove copy of this enum from the group
- gi.elem.remove(gienum)
- else:
- self.gen.logMsg('warn', 'Cannot remove enum',
- enumname, 'not found in group',
- groupName)
- else:
- self.gen.logMsg('warn', 'Cannot remove enum',
- enumname, 'from nonexistent group',
- groupName)
-
- enum.required = required
- # Tag enum dependencies in 'alias' attribute as required
- depname = enum.elem.get('alias')
- if depname:
- self.gen.logMsg('diag', 'Generating dependent enum',
- depname, 'for alias', enumname, 'required =', enum.required)
- self.markEnumRequired(depname, required)
- else:
- self.gen.logMsg('warn', 'enum:', enumname, 'IS NOT DEFINED')
-
- def markCmdRequired(self, cmdname, required):
- """Mark a command as required or not.
-
- - cmdname - name of command
- - required - boolean (to tag features as required or not)"""
- self.gen.logMsg('diag', 'tagging command:', cmdname, '-> required =', required)
- cmd = self.lookupElementInfo(cmdname, self.cmddict)
- if cmd is not None:
- cmd.required = required
-
- # Tag command dependencies in 'alias' attribute as required
- #
- # This is usually not done, because command 'aliases' are not
- # actual C language aliases like type and enum aliases. Instead
- # they are just duplicates of the function signature of the
- # alias. This means that there is no dependency of a command
- # alias on what it aliases. One exception is validity includes,
- # where the spec markup needs the promoted-to validity include
- # even if only the promoted-from command is being built.
- if self.genOpts.requireCommandAliases:
- depname = cmd.elem.get('alias')
- if depname:
- self.gen.logMsg('diag', 'Generating dependent command',
- depname, 'for alias', cmdname)
- self.markCmdRequired(depname, required)
-
- # Tag all parameter types of this command as required.
- # This DOES NOT remove types of commands in a <remove>
- # tag, because many other commands may use the same type.
- # We could be more clever and reference count types,
- # instead of using a boolean.
- if required:
- # Look for <type> in entire <command> tree,
- # not just immediate children
- for type_elem in cmd.elem.findall('.//type'):
- self.gen.logMsg('diag', 'markRequired: command implicitly requires dependent type', type_elem.text)
- self.markTypeRequired(type_elem.text, required)
- else:
- self.gen.logMsg('warn', 'command:', cmdname, 'IS NOT DEFINED')
-
- def markRequired(self, featurename, feature, required):
- """Require or remove features specified in the Element.
-
- - featurename - name of the feature
- - feature - Element for `<require>` or `<remove>` tag
- - required - boolean (to tag features as required or not)"""
- self.gen.logMsg('diag', 'markRequired (feature = <too long to print>, required =', required, ')')
-
- # Loop over types, enums, and commands in the tag
- # @@ It would be possible to respect 'api' and 'profile' attributes
- # in individual features, but that's not done yet.
- for typeElem in feature.findall('type'):
- self.markTypeRequired(typeElem.get('name'), required)
- for enumElem in feature.findall('enum'):
- self.markEnumRequired(enumElem.get('name'), required)
- for cmdElem in feature.findall('command'):
- self.markCmdRequired(cmdElem.get('name'), required)
-
- # Extensions may need to extend existing commands or other items in the future.
- # So, look for extend tags.
- for extendElem in feature.findall('extend'):
- extendType = extendElem.get('type')
- if extendType == 'command':
- commandName = extendElem.get('name')
- successExtends = extendElem.get('successcodes')
- if successExtends is not None:
- for success in successExtends.split(','):
- self.commandextensionsuccesses.append(self.commandextensiontuple(command=commandName,
- value=success,
- extension=featurename))
- errorExtends = extendElem.get('errorcodes')
- if errorExtends is not None:
- for error in errorExtends.split(','):
- self.commandextensionerrors.append(self.commandextensiontuple(command=commandName,
- value=error,
- extension=featurename))
- else:
- self.gen.logMsg('warn', 'extend type:', extendType, 'IS NOT SUPPORTED')
-
- def getAlias(self, elem, dict):
- """Check for an alias in the same require block.
-
- - elem - Element to check for an alias"""
-
- # Try to find an alias
- alias = elem.get('alias')
- if alias is None:
- name = elem.get('name')
- typeinfo = self.lookupElementInfo(name, dict)
- alias = typeinfo.elem.get('alias')
-
- return alias
-
- def checkForCorrectionAliases(self, alias, require, tag):
- """Check for an alias in the same require block.
-
- - alias - String name of the alias
- - require - `<require>` block from the registry
- - tag - tag to look for in the require block"""
-
- # For the time being, the code below is bypassed. It has the effect
- # of excluding "spelling aliases" created to comply with the style
- # guide, but this leaves references out of the specification and
- # causes broken internal links.
- #
- # if alias and require.findall(tag + "[@name='" + alias + "']"):
- # return True
-
- return False
-
- def fillFeatureDictionary(self, interface, featurename, api, profile):
- """Capture added interfaces for a `<version>` or `<extension>`.
-
- - interface - Element for `<version>` or `<extension>`, containing
- `<require>` and `<remove>` tags
- - featurename - name of the feature
- - api - string specifying API name being generated
- - profile - string specifying API profile being generated"""
-
- # Explicitly initialize known types - errors for unhandled categories
- self.gen.featureDictionary[featurename] = {
- "enumconstant": {},
- "command": {},
- "enum": {},
- "struct": {},
- "handle": {},
- "basetype": {},
- "include": {},
- "define": {},
- "bitmask": {},
- "union": {},
- "funcpointer": {},
- }
-
- # <require> marks things that are required by this version/profile
- for require in interface.findall('require'):
- if matchAPIProfile(api, profile, require):
-
- # Determine the required extension or version needed for a require block
- # Assumes that only one of these is specified
- required_key = require.get('feature')
- if required_key is None:
- required_key = require.get('extension')
-
- # Loop over types, enums, and commands in the tag
- for typeElem in require.findall('type'):
- typename = typeElem.get('name')
- typeinfo = self.lookupElementInfo(typename, self.typedict)
-
- if typeinfo:
- # Remove aliases in the same extension/feature; these are always added as a correction. Don't need the original to be visible.
- alias = self.getAlias(typeElem, self.typedict)
- if not self.checkForCorrectionAliases(alias, require, 'type'):
- # Resolve the type info to the actual type, so we get an accurate read for 'structextends'
- while alias:
- typeinfo = self.lookupElementInfo(alias, self.typedict)
- alias = typeinfo.elem.get('alias')
-
- typecat = typeinfo.elem.get('category')
- typeextends = typeinfo.elem.get('structextends')
- if not required_key in self.gen.featureDictionary[featurename][typecat]:
- self.gen.featureDictionary[featurename][typecat][required_key] = {}
- if not typeextends in self.gen.featureDictionary[featurename][typecat][required_key]:
- self.gen.featureDictionary[featurename][typecat][required_key][typeextends] = []
- self.gen.featureDictionary[featurename][typecat][required_key][typeextends].append(typename)
- else:
- self.gen.logMsg('warn', 'fillFeatureDictionary: NOT filling for {}'.format(typename))
-
-
- for enumElem in require.findall('enum'):
- enumname = enumElem.get('name')
- typeinfo = self.lookupElementInfo(enumname, self.enumdict)
-
- # Remove aliases in the same extension/feature; these are always added as a correction. Don't need the original to be visible.
- alias = self.getAlias(enumElem, self.enumdict)
- if not self.checkForCorrectionAliases(alias, require, 'enum'):
- enumextends = enumElem.get('extends')
- if not required_key in self.gen.featureDictionary[featurename]['enumconstant']:
- self.gen.featureDictionary[featurename]['enumconstant'][required_key] = {}
- if not enumextends in self.gen.featureDictionary[featurename]['enumconstant'][required_key]:
- self.gen.featureDictionary[featurename]['enumconstant'][required_key][enumextends] = []
- self.gen.featureDictionary[featurename]['enumconstant'][required_key][enumextends].append(enumname)
- else:
- self.gen.logMsg('warn', 'fillFeatureDictionary: NOT filling for {}'.format(typename))
-
- for cmdElem in require.findall('command'):
- # Remove aliases in the same extension/feature; these are always added as a correction. Don't need the original to be visible.
- alias = self.getAlias(cmdElem, self.cmddict)
- if not self.checkForCorrectionAliases(alias, require, 'command'):
- if not required_key in self.gen.featureDictionary[featurename]['command']:
- self.gen.featureDictionary[featurename]['command'][required_key] = []
- self.gen.featureDictionary[featurename]['command'][required_key].append(cmdElem.get('name'))
- else:
- self.gen.logMsg('warn', 'fillFeatureDictionary: NOT filling for {}'.format(typename))
-
- def requireAndRemoveFeatures(self, interface, featurename, api, profile):
- """Process `<require>` and `<remove>` tags for a `<version>` or `<extension>`.
-
- - interface - Element for `<version>` or `<extension>`, containing
- `<require>` and `<remove>` tags
- - featurename - name of the feature
- - api - string specifying API name being generated
- - profile - string specifying API profile being generated"""
-
- # <require> marks things that are required by this version/profile
- for feature in interface.findall('require'):
- if matchAPIProfile(api, profile, feature):
- self.markRequired(featurename, feature, True)
-
- # <remove> marks things that are removed by this version/profile
- for feature in interface.findall('remove'):
- if matchAPIProfile(api, profile, feature):
- self.markRequired(featurename, feature, False)
-
- def assignAdditionalValidity(self, interface, api, profile):
- # Loop over all usage inside all <require> tags.
- for feature in interface.findall('require'):
- if matchAPIProfile(api, profile, feature):
- for v in feature.findall('usage'):
- if v.get('command'):
- self.cmddict[v.get('command')].additionalValidity.append(copy.deepcopy(v))
- if v.get('struct'):
- self.typedict[v.get('struct')].additionalValidity.append(copy.deepcopy(v))
-
- # Loop over all usage inside all <remove> tags.
- for feature in interface.findall('remove'):
- if matchAPIProfile(api, profile, feature):
- for v in feature.findall('usage'):
- if v.get('command'):
- self.cmddict[v.get('command')].removedValidity.append(copy.deepcopy(v))
- if v.get('struct'):
- self.typedict[v.get('struct')].removedValidity.append(copy.deepcopy(v))
-
- def generateFeature(self, fname, ftype, dictionary):
- """Generate a single type / enum group / enum / command,
- and all its dependencies as needed.
-
- - fname - name of feature (`<type>`/`<enum>`/`<command>`)
- - ftype - type of feature, 'type' | 'enum' | 'command'
- - dictionary - of *Info objects - self.{type|enum|cmd}dict"""
-
- self.gen.logMsg('diag', 'generateFeature: generating', ftype, fname)
- f = self.lookupElementInfo(fname, dictionary)
- if f is None:
- # No such feature. This is an error, but reported earlier
- self.gen.logMsg('diag', 'No entry found for feature', fname,
- 'returning!')
- return
-
- # If feature isn't required, or has already been declared, return
- if not f.required:
- self.gen.logMsg('diag', 'Skipping', ftype, fname, '(not required)')
- return
- if f.declared:
- self.gen.logMsg('diag', 'Skipping', ftype, fname, '(already declared)')
- return
- # Always mark feature declared, as though actually emitted
- f.declared = True
-
- # Determine if this is an alias, and of what, if so
- alias = f.elem.get('alias')
- if alias:
- self.gen.logMsg('diag', fname, 'is an alias of', alias)
-
- # Pull in dependent declaration(s) of the feature.
- # For types, there may be one type in the 'requires' attribute of
- # the element, one in the 'alias' attribute, and many in
- # embedded <type> and <enum> tags within the element.
- # For commands, there may be many in <type> tags within the element.
- # For enums, no dependencies are allowed (though perhaps if you
- # have a uint64 enum, it should require that type).
- genProc = None
- followupFeature = None
- if ftype == 'type':
- genProc = self.gen.genType
-
- # Generate type dependencies in 'alias' and 'requires' attributes
- if alias:
- self.generateFeature(alias, 'type', self.typedict)
- requires = f.elem.get('requires')
- if requires:
- self.gen.logMsg('diag', 'Generating required dependent type',
- requires)
- self.generateFeature(requires, 'type', self.typedict)
-
- # Generate types used in defining this type (e.g. in nested
- # <type> tags)
- # Look for <type> in entire <command> tree,
- # not just immediate children
- for subtype in f.elem.findall('.//type'):
- self.gen.logMsg('diag', 'Generating required dependent <type>',
- subtype.text)
- self.generateFeature(subtype.text, 'type', self.typedict)
-
- # Generate enums used in defining this type, for example in
- # <member><name>member</name>[<enum>MEMBER_SIZE</enum>]</member>
- for subtype in f.elem.findall('.//enum'):
- self.gen.logMsg('diag', 'Generating required dependent <enum>',
- subtype.text)
- self.generateFeature(subtype.text, 'enum', self.enumdict)
-
- # If the type is an enum group, look up the corresponding
- # group in the group dictionary and generate that instead.
- if f.elem.get('category') == 'enum':
- self.gen.logMsg('diag', 'Type', fname, 'is an enum group, so generate that instead')
- group = self.lookupElementInfo(fname, self.groupdict)
- if alias is not None:
- # An alias of another group name.
- # Pass to genGroup with 'alias' parameter = aliased name
- self.gen.logMsg('diag', 'Generating alias', fname,
- 'for enumerated type', alias)
- # Now, pass the *aliased* GroupInfo to the genGroup, but
- # with an additional parameter which is the alias name.
- genProc = self.gen.genGroup
- f = self.lookupElementInfo(alias, self.groupdict)
- elif group is None:
- self.gen.logMsg('warn', 'Skipping enum type', fname,
- ': No matching enumerant group')
- return
- else:
- genProc = self.gen.genGroup
- f = group
-
- # @ The enum group is not ready for generation. At this
- # @ point, it contains all <enum> tags injected by
- # @ <extension> tags without any verification of whether
- # @ they're required or not. It may also contain
- # @ duplicates injected by multiple consistent
- # @ definitions of an <enum>.
-
- # @ Pass over each enum, marking its enumdict[] entry as
- # @ required or not. Mark aliases of enums as required,
- # @ too.
-
- enums = group.elem.findall('enum')
-
- self.gen.logMsg('diag', 'generateFeature: checking enums for group', fname)
-
- # Check for required enums, including aliases
- # LATER - Check for, report, and remove duplicates?
- enumAliases = []
- for elem in enums:
- name = elem.get('name')
-
- required = False
-
- extname = elem.get('extname')
- version = elem.get('version')
- if extname is not None:
- # 'supported' attribute was injected when the <enum> element was
- # moved into the <enums> group in Registry.parseTree()
- if self.genOpts.defaultExtensions == elem.get('supported'):
- required = True
- elif re.match(self.genOpts.addExtensions, extname) is not None:
- required = True
- elif version is not None:
- required = re.match(self.genOpts.emitversions, version) is not None
- else:
- required = True
-
- self.gen.logMsg('diag', '* required =', required, 'for', name)
- if required:
- # Mark this element as required (in the element, not the EnumInfo)
- elem.set('required', 'true')
- # If it's an alias, track that for later use
- enumAlias = elem.get('alias')
- if enumAlias:
- enumAliases.append(enumAlias)
- for elem in enums:
- name = elem.get('name')
- if name in enumAliases:
- elem.set('required', 'true')
- self.gen.logMsg('diag', '* also need to require alias', name)
- if f.elem.get('category') == 'bitmask':
- followupFeature = f.elem.get('bitvalues')
- elif ftype == 'command':
- # Generate command dependencies in 'alias' attribute
- if alias:
- self.generateFeature(alias, 'command', self.cmddict)
-
- genProc = self.gen.genCmd
- for type_elem in f.elem.findall('.//type'):
- depname = type_elem.text
- self.gen.logMsg('diag', 'Generating required parameter type',
- depname)
- self.generateFeature(depname, 'type', self.typedict)
- elif ftype == 'enum':
- # Generate enum dependencies in 'alias' attribute
- if alias:
- self.generateFeature(alias, 'enum', self.enumdict)
- genProc = self.gen.genEnum
-
- # Actually generate the type only if emitting declarations
- if self.emitFeatures:
- self.gen.logMsg('diag', 'Emitting', ftype, 'decl for', fname)
- genProc(f, fname, alias)
- else:
- self.gen.logMsg('diag', 'Skipping', ftype, fname,
- '(should not be emitted)')
-
- if followupFeature:
- self.gen.logMsg('diag', 'Generating required bitvalues <enum>',
- followupFeature)
- self.generateFeature(followupFeature, "type", self.typedict)
-
- def generateRequiredInterface(self, interface):
- """Generate all interfaces required by an API version or extension.
-
- - interface - Element for `<version>` or `<extension>`"""
-
- # Loop over all features inside all <require> tags.
- for features in interface.findall('require'):
- for t in features.findall('type'):
- self.generateFeature(t.get('name'), 'type', self.typedict)
- for e in features.findall('enum'):
- # If this is an enum extending an enumerated type, don't
- # generate it - this has already been done in reg.parseTree,
- # by copying this element into the enumerated type.
- enumextends = e.get('extends')
- if not enumextends:
- self.generateFeature(e.get('name'), 'enum', self.enumdict)
- for c in features.findall('command'):
- self.generateFeature(c.get('name'), 'command', self.cmddict)
-
- def generateSpirv(self, spirv, dictionary):
- if spirv is None:
- self.gen.logMsg('diag', 'No entry found for element', name,
- 'returning!')
- return
-
- name = spirv.elem.get('name')
- # No known alias for spirv elements
- alias = None
- if spirv.emit:
- genProc = self.gen.genSpirv
- genProc(spirv, name, alias)
-
- def stripUnsupportedAPIs(self, dictionary, attribute, supportedDictionary):
- """Strip unsupported APIs from attributes of APIs.
- dictionary - *Info dictionary of APIs to be updated
- attribute - attribute name to look for in each API
- supportedDictionary - dictionary in which to look for supported
- API elements in the attribute"""
-
- for key in dictionary:
- eleminfo = dictionary[key]
- attribstring = eleminfo.elem.get(attribute)
- if attribstring is not None:
- apis = []
- stripped = False
- for api in attribstring.split(','):
- ##print('Checking API {} referenced by {}'.format(api, key))
- if supportedDictionary[api].required:
- apis.append(api)
- else:
- stripped = True
- ##print('\t**STRIPPING API {} from {}'.format(api, key))
-
- # Update the attribute after stripping stuff.
- # Could sort apis before joining, but it's not a clear win
- if stripped:
- eleminfo.elem.set(attribute, ','.join(apis))
-
- def apiGen(self):
- """Generate interface for specified versions using the current
- generator and generator options"""
-
- self.gen.logMsg('diag', '*******************************************')
- self.gen.logMsg('diag', ' Registry.apiGen file:', self.genOpts.filename,
- 'api:', self.genOpts.apiname,
- 'profile:', self.genOpts.profile)
- self.gen.logMsg('diag', '*******************************************')
-
- # Could reset required/declared flags for all features here.
- # This has been removed as never used. The initial motivation was
- # the idea of calling apiGen() repeatedly for different targets, but
- # this has never been done. The 20% or so build-time speedup that
- # might result is not worth the effort to make it actually work.
- #
- #@@ self.apiReset()
-
- # Compile regexps used to select versions & extensions
- regVersions = re.compile(self.genOpts.versions)
- regEmitVersions = re.compile(self.genOpts.emitversions)
- regAddExtensions = re.compile(self.genOpts.addExtensions)
- regRemoveExtensions = re.compile(self.genOpts.removeExtensions)
- regEmitExtensions = re.compile(self.genOpts.emitExtensions)
- regEmitSpirv = re.compile(self.genOpts.emitSpirv)
-
- # Get all matching API feature names & add to list of FeatureInfo
- # Note we used to select on feature version attributes, not names.
- features = []
- apiMatch = False
- for key in self.apidict:
- fi = self.apidict[key]
- api = fi.elem.get('api')
- if apiNameMatch(self.genOpts.apiname, api):
- apiMatch = True
- if regVersions.match(fi.name):
- # Matches API & version #s being generated. Mark for
- # emission and add to the features[] list .
- # @@ Could use 'declared' instead of 'emit'?
- fi.emit = (regEmitVersions.match(fi.name) is not None)
- features.append(fi)
- if not fi.emit:
- self.gen.logMsg('diag', 'NOT tagging feature api =', api,
- 'name =', fi.name, 'version =', fi.version,
- 'for emission (does not match emitversions pattern)')
- else:
- self.gen.logMsg('diag', 'Including feature api =', api,
- 'name =', fi.name, 'version =', fi.version,
- 'for emission (matches emitversions pattern)')
- else:
- self.gen.logMsg('diag', 'NOT including feature api =', api,
- 'name =', fi.name, 'version =', fi.version,
- '(does not match requested versions)')
- else:
- self.gen.logMsg('diag', 'NOT including feature api =', api,
- 'name =', fi.name,
- '(does not match requested API)')
- if not apiMatch:
- self.gen.logMsg('warn', 'No matching API versions found!')
-
- # Get all matching extensions, in order by their extension number,
- # and add to the list of features.
- # Start with extensions tagged with 'api' pattern matching the API
- # being generated. Add extensions matching the pattern specified in
- # regExtensions, then remove extensions matching the pattern
- # specified in regRemoveExtensions
- for (extName, ei) in sorted(self.extdict.items(), key=lambda x: x[1].number if x[1].number is not None else '0'):
- extName = ei.name
- include = False
-
- # Include extension if defaultExtensions is not None and is
- # exactly matched by the 'supported' attribute.
- if apiNameMatch(self.genOpts.defaultExtensions,
- ei.elem.get('supported')):
- self.gen.logMsg('diag', 'Including extension',
- extName, "(defaultExtensions matches the 'supported' attribute)")
- include = True
-
- # Include additional extensions if the extension name matches
- # the regexp specified in the generator options. This allows
- # forcing extensions into an interface even if they're not
- # tagged appropriately in the registry.
- # However we still respect the 'supported' attribute.
- if regAddExtensions.match(extName) is not None:
- if not apiNameMatch(self.genOpts.apiname, ei.elem.get('supported')):
- self.gen.logMsg('diag', 'NOT including extension',
- extName, '(matches explicitly requested, but does not match the \'supported\' attribute)')
- include = False
- else:
- self.gen.logMsg('diag', 'Including extension',
- extName, '(matches explicitly requested extensions to add)')
- include = True
- # Remove extensions if the name matches the regexp specified
- # in generator options. This allows forcing removal of
- # extensions from an interface even if they're tagged that
- # way in the registry.
- if regRemoveExtensions.match(extName) is not None:
- self.gen.logMsg('diag', 'Removing extension',
- extName, '(matches explicitly requested extensions to remove)')
- include = False
-
- # If the extension is to be included, add it to the
- # extension features list.
- if include:
- ei.emit = (regEmitExtensions.match(extName) is not None)
- features.append(ei)
- if not ei.emit:
- self.gen.logMsg('diag', 'NOT tagging extension',
- extName,
- 'for emission (does not match emitextensions pattern)')
-
- # Hack - can be removed when validity generator goes away
- # (Jon) I'm not sure what this does, or if it should respect
- # the ei.emit flag above.
- self.requiredextensions.append(extName)
- else:
- self.gen.logMsg('diag', 'NOT including extension',
- extName, '(does not match api attribute or explicitly requested extensions)')
-
- # Add all spirv elements to list
- # generators decide to emit them all or not
- # Currently no filtering as no client of these elements needs filtering
- spirvexts = []
- for key in self.spirvextdict:
- si = self.spirvextdict[key]
- si.emit = (regEmitSpirv.match(key) is not None)
- spirvexts.append(si)
- spirvcaps = []
- for key in self.spirvcapdict:
- si = self.spirvcapdict[key]
- si.emit = (regEmitSpirv.match(key) is not None)
- spirvcaps.append(si)
-
- # Sort the features list, if a sort procedure is defined
- if self.genOpts.sortProcedure:
- self.genOpts.sortProcedure(features)
- # print('sortProcedure ->', [f.name for f in features])
-
- # Pass 1: loop over requested API versions and extensions tagging
- # types/commands/features as required (in an <require> block) or no
- # longer required (in an <remove> block). It is possible to remove
- # a feature in one version and restore it later by requiring it in
- # a later version.
- # If a profile other than 'None' is being generated, it must
- # match the profile attribute (if any) of the <require> and
- # <remove> tags.
- self.gen.logMsg('diag', 'PASS 1: TAG FEATURES')
- for f in features:
- self.gen.logMsg('diag', 'PASS 1: Tagging required and removed features for',
- f.name)
- self.fillFeatureDictionary(f.elem, f.name, self.genOpts.apiname, self.genOpts.profile)
- self.requireAndRemoveFeatures(f.elem, f.name, self.genOpts.apiname, self.genOpts.profile)
- self.assignAdditionalValidity(f.elem, self.genOpts.apiname, self.genOpts.profile)
-
- # Now, strip references to APIs that are not required.
- # At present such references may occur in:
- # Structs in <type category="struct"> 'structextends' attributes
- # Enums in <command> 'successcodes' and 'errorcodes' attributes
- self.stripUnsupportedAPIs(self.typedict, 'structextends', self.typedict)
- self.stripUnsupportedAPIs(self.cmddict, 'successcodes', self.enumdict)
- self.stripUnsupportedAPIs(self.cmddict, 'errorcodes', self.enumdict)
-
- # @@May need to strip <spirvcapability> / <spirvextension> <enable>
- # tags of these forms:
- # <enable version="VK_API_VERSION_1_0"/>
- # <enable struct="VkPhysicalDeviceFeatures" feature="geometryShader" requires="VK_VERSION_1_0"/>
- # <enable extension="VK_KHR_shader_draw_parameters"/>
- # <enable property="VkPhysicalDeviceVulkan12Properties" member="shaderDenormPreserveFloat16" value="VK_TRUE" requires="VK_VERSION_1_2,VK_KHR_shader_float_controls"/>
-
- # Pass 2: loop over specified API versions and extensions printing
- # declarations for required things which haven't already been
- # generated.
- self.gen.logMsg('diag', 'PASS 2: GENERATE INTERFACES FOR FEATURES')
- self.gen.beginFile(self.genOpts)
- for f in features:
- self.gen.logMsg('diag', 'PASS 2: Generating interface for',
- f.name)
- emit = self.emitFeatures = f.emit
- if not emit:
- self.gen.logMsg('diag', 'PASS 2: NOT declaring feature',
- f.elem.get('name'), 'because it is not tagged for emission')
- # Generate the interface (or just tag its elements as having been
- # emitted, if they haven't been).
- self.gen.beginFeature(f.elem, emit)
- self.generateRequiredInterface(f.elem)
- self.gen.endFeature()
- # Generate spirv elements
- for s in spirvexts:
- self.generateSpirv(s, self.spirvextdict)
- for s in spirvcaps:
- self.generateSpirv(s, self.spirvcapdict)
- self.gen.endFile()
-
- def apiReset(self):
- """Reset type/enum/command dictionaries before generating another API.
-
- Use between apiGen() calls to reset internal state."""
- for datatype in self.typedict:
- self.typedict[datatype].resetState()
- for enum in self.enumdict:
- self.enumdict[enum].resetState()
- for cmd in self.cmddict:
- self.cmddict[cmd].resetState()
- for cmd in self.apidict:
- self.apidict[cmd].resetState()
-
- def __validateStructLimittypes(self, struct):
- """Validate 'limittype' attributes for a single struct."""
- limittypeDiags = namedtuple('limittypeDiags', ['missing', 'invalid'])
- badFields = defaultdict(lambda : limittypeDiags(missing=[], invalid=[]))
- validLimittypes = { 'min', 'max', 'bitmask', 'range', 'struct', 'noauto' }
- for member in struct.getMembers():
- memberName = member.findtext('name')
- if memberName in ['sType', 'pNext']:
- continue
- limittype = member.get('limittype')
- if not limittype:
- badFields[struct.elem.get('name')].missing.append(memberName)
- elif limittype == 'struct':
- typeName = member.findtext('type')
- memberType = self.typedict[typeName]
- badFields.update(self.__validateStructLimittypes(memberType))
- elif limittype not in validLimittypes:
- badFields[struct.elem.get('name')].invalid.append(memberName)
- return badFields
-
- def __validateLimittype(self):
- """Validate 'limittype' attributes."""
- self.gen.logMsg('diag', 'VALIDATING LIMITTYPE ATTRIBUTES')
- badFields = self.__validateStructLimittypes(self.typedict['VkPhysicalDeviceProperties2'])
- for featStructName in self.validextensionstructs['VkPhysicalDeviceProperties2']:
- featStruct = self.typedict[featStructName]
- badFields.update(self.__validateStructLimittypes(featStruct))
-
- if badFields:
- self.gen.logMsg('diag', 'SUMMARY OF FIELDS WITH INCORRECT LIMITTYPES')
- for key in sorted(badFields.keys()):
- diags = badFields[key]
- if diags.missing:
- self.gen.logMsg('diag', ' ', key, 'missing limittype:', ', '.join(badFields[key].missing))
- if diags.invalid:
- self.gen.logMsg('diag', ' ', key, 'invalid limittype:', ', '.join(badFields[key].invalid))
- return False
- return True
-
- def validateRegistry(self):
- """Validate properties of the registry."""
- return self.__validateLimittype()
diff --git a/codegen/vulkan/scripts/rubygenerator.py b/codegen/vulkan/scripts/rubygenerator.py
deleted file mode 100644
index 8042d9b8..00000000
--- a/codegen/vulkan/scripts/rubygenerator.py
+++ /dev/null
@@ -1,120 +0,0 @@
-#!/usr/bin/python3 -i
-#
-# Copyright 2013-2021 The Khronos Group Inc.
-#
-# SPDX-License-Identifier: Apache-2.0
-
-from generator import OutputGenerator, enquote, write
-from scriptgenerator import ScriptOutputGenerator
-
-def nilquote(s):
- if s:
- return enquote(s)
- else:
- return 'nil'
-
-def makeHash(name):
- return '@{} = {{'.format(name)
-
-class RubyOutputGenerator(ScriptOutputGenerator):
- """RubyOutputGenerator - subclass of ScriptOutputGenerator.
- Generates Ruby data structures describing API names and
- relationships."""
-
- def __init__(self, *args, **kwargs):
- super().__init__(*args, **kwargs)
-
- def beginDict(self, name):
- """String starting definition of a named dictionary"""
- return f'@{name} = {{'
-
- def endDict(self):
- """ String ending definition of a named dictionary"""
- return '}'
-
- def writeDict(self, dict, name, printValues = True):
- """Write dictionary as a Ruby hash with the given name.
- If printValues is False, just output keys with nil values."""
-
- write(self.beginDict(name), file=self.outFile)
- for key in sorted(dict):
- if printValues:
- value = nilquote(dict[key])
- else:
- value = 'nil'
- write(f'{enquote(key)} => {value},', file=self.outFile)
- write(self.endDict(), file=self.outFile)
-
- def writeList(self, l, name):
- """Write list l as a Ruby hash with the given name"""
-
- self.writeDict(l, name, printValues = False)
-
- def makeAccessor(self, name):
- """Create an accessor method for the hash 'name'"""
- write('def {}'.format(name), file=self.outFile)
- write(' @{}'.format(name), file=self.outFile)
- write('end', file=self.outFile)
-
- def endFile(self):
- # Creates the inverse mapping of nonexistent APIs to their aliases.
- super().createInverseMap()
-
- # Print out all the dictionaries as Ruby strings.
- # Use a simple container class for namespace control
- write('class APInames\n', ' def initialize', file=self.outFile)
-
- dicts = ( [ self.basetypes, 'basetypes' ],
- [ self.consts, 'consts' ],
- [ self.enums, 'enums' ],
- [ self.flags, 'flags' ],
- [ self.funcpointers, 'funcpointers' ],
- [ self.protos, 'protos' ],
- [ self.structs, 'structs' ],
- [ self.handles, 'handles' ],
- [ self.defines, 'defines' ],
- [ self.typeCategory, 'typeCategory' ],
- [ self.alias, 'aliases' ],
- [ self.nonexistent, 'nonexistent' ],
- )
- for (dict, name) in dicts:
- self.writeDict(dict, name)
-
- # Dictionary containing the relationships of a type
- # (e.g. a dictionary with each related type as keys).
- write(self.beginDict('mapDict'), file=self.outFile)
- for baseType in sorted(self.mapDict):
- # Not actually including the relationships yet
- write('{} => {},'.format(enquote(baseType), 'nil'),
- file=self.outFile)
- write(self.endDict(), file=self.outFile)
-
- # List of included feature names
- self.writeList(sorted(self.features), 'features')
-
- # Generate feature <-> interface mappings
- for feature in self.features:
- self.mapInterfaces(feature)
-
- # Write out the reverse map from APIs to requiring features
- write(self.beginDict('requiredBy'), file=self.outFile)
- for api in sorted(self.apimap):
- # Sort requirements by first feature in each one
- deps = sorted(self.apimap[api], key = lambda dep: dep[0])
- reqs = ', '.join('[{}, {}]'.format(nilquote(dep[0]), nilquote(dep[1])) for dep in deps)
- write('{} => [{}],'.format(enquote(api), reqs), file=self.outFile)
- write(self.endDict(), file=self.outFile)
-
- # Remainder of the class definition
- # End initialize method
- write('end', file=self.outFile)
-
- # Accessor methods
- for (_, name) in dicts:
- self.makeAccessor(name)
- self.makeAccessor('features')
-
- # Class end
- write('end', file=self.outFile)
-
- super().endFile()
diff --git a/codegen/vulkan/scripts/scriptgenerator.py b/codegen/vulkan/scripts/scriptgenerator.py
deleted file mode 100644
index 204639de..00000000
--- a/codegen/vulkan/scripts/scriptgenerator.py
+++ /dev/null
@@ -1,380 +0,0 @@
-#!/usr/bin/python3 -i
-#
-# Copyright 2013-2021 The Khronos Group Inc.
-#
-# SPDX-License-Identifier: Apache-2.0
-
-from generator import OutputGenerator, enquote, noneStr
-
-def mostOfficial(api, newapi):
- """Return the 'most official' of two related names, api and newapi.
- KHR is more official than EXT is more official than everything else.
- If there is ambiguity, return api."""
-
- if api[-3:] == 'KHR':
- return api
- if newapi[-3:] == 'KHR':
- return newapi;
- if api[-3:] == 'EXT':
- return api
- if newapi[-3:] == 'EXT':
- return newapi;
- return api
-
-class ScriptOutputGenerator(OutputGenerator):
- """ScriptOutputGenerator - subclass of OutputGenerator.
- Base class to Generate script (Python/Ruby/etc.) data structures
- describing API names and relationships.
- Similar to DocOutputGenerator, but writes a single file."""
-
- def apiName(self, name):
- """Return True if name is in the reserved API namespace.
-
- Delegates to the conventions object. """
- return self.genOpts.conventions.is_api_name(name)
-
- def __init__(self, *args, **kwargs):
- super().__init__(*args, **kwargs)
-
- # Track features being generated
- self.features = []
-
- # Reverse map from interface names to features requiring them
- self.apimap = {}
-
- # Reverse map from unsupported APIs in this build to aliases which
- # are supported
- self.nonexistent = {}
-
- def beginFile(self, genOpts):
- OutputGenerator.beginFile(self, genOpts)
- #
- # Dictionaries are keyed by the name of the entity (e.g.
- # self.structs is keyed by structure names). Values are
- # the names of related entities (e.g. structs contain
- # a list of type names of members, enums contain a list
- # of enumerants belong to the enumerated type, etc.), or
- # just None if there are no directly related entities.
- #
- # Collect the mappings, then emit the Python script in endFile
- self.basetypes = {}
- self.consts = {}
- self.enums = {}
- self.flags = {}
- self.funcpointers = {}
- self.protos = {}
- self.structs = {}
- self.handles = {}
- self.defines = {}
- self.alias = {}
- # Dictionary containing the type of a type name
- # (e.g. the string name of the dictionary with its contents).
- self.typeCategory = {}
- self.mapDict = {}
-
- def addInterfaceMapping(self, api, feature, required):
- """Add a reverse mapping in self.apimap from an API to a feature
- requiring that API.
-
- - api - name of the API
- - feature - name of the feature requiring it
- - required - None, or an additional feature dependency within
- 'feature' """
-
- # Each entry in self.apimap contains one or more
- # ( feature, required ) tuples.
- deps = ( feature, required )
-
- if api in self.apimap:
- self.apimap[api].append(deps)
- else:
- self.apimap[api] = [ deps ]
-
- def mapInterfaceKeys(self, feature, key):
- """Construct reverse mapping of APIs to features requiring them in
- self.apimap.
-
- - feature - name of the feature being generated
- - key - API category - 'define', 'basetype', etc."""
-
- dict = self.featureDictionary[feature][key]
-
- if dict:
- # Not clear why handling of command vs. type APIs is different -
- # see interfacedocgenerator.py, which this was based on.
- if key == 'command':
- for required in dict:
- for api in dict[required]:
- self.addInterfaceMapping(api, feature, required)
- else:
- for required in dict:
- for parent in dict[required]:
- for api in dict[required][parent]:
- self.addInterfaceMapping(api, feature, required)
-
- def mapInterfaces(self, feature):
- """Construct reverse mapping of APIs to features requiring them in
- self.apimap.
-
- - feature - name of the feature being generated"""
-
- # Map each category of interface
- self.mapInterfaceKeys(feature, 'basetype')
- self.mapInterfaceKeys(feature, 'bitmask')
- self.mapInterfaceKeys(feature, 'command')
- self.mapInterfaceKeys(feature, 'define')
- self.mapInterfaceKeys(feature, 'enum')
- self.mapInterfaceKeys(feature, 'enumconstant')
- self.mapInterfaceKeys(feature, 'funcpointer')
- self.mapInterfaceKeys(feature, 'handle')
- self.mapInterfaceKeys(feature, 'include')
- self.mapInterfaceKeys(feature, 'struct')
- self.mapInterfaceKeys(feature, 'union')
-
- def endFile(self):
- super().endFile()
-
- def beginFeature(self, interface, emit):
- # Start processing in superclass
- OutputGenerator.beginFeature(self, interface, emit)
-
- # Add this feature to the list being tracked
- self.features.append( self.featureName )
-
- def endFeature(self):
- # Finish processing in superclass
- OutputGenerator.endFeature(self)
-
- def addName(self, dict, name, value):
- """Add a string entry to the dictionary, quoting it so it gets
- printed out correctly in self.endFile()."""
- dict[name] = value
-
- def addMapping(self, baseType, refType):
- """Add a mapping between types to mapDict.
-
- Only include API types, so we don't end up with a lot of useless uint32_t and void types."""
- if not self.apiName(baseType) or not self.apiName(refType):
- self.logMsg('diag', 'ScriptOutputGenerator::addMapping: IGNORE map from', baseType, '<->', refType)
- return
-
- self.logMsg('diag', 'ScriptOutputGenerator::addMapping: map from',
- baseType, '<->', refType)
-
- if baseType not in self.mapDict:
- baseDict = {}
- self.mapDict[baseType] = baseDict
- else:
- baseDict = self.mapDict[baseType]
- if refType not in self.mapDict:
- refDict = {}
- self.mapDict[refType] = refDict
- else:
- refDict = self.mapDict[refType]
-
- baseDict[refType] = None
- refDict[baseType] = None
-
- def breakCheck(self, procname, name):
- """Debugging aid - call from procname to break on API 'name' if it
- matches logic in this call."""
-
- pat = 'VkExternalFenceFeatureFlagBits'
- if name[0:len(pat)] == pat:
- print('{}(name = {}) matches {}'.format(procname, name, pat))
- import pdb
- pdb.set_trace()
-
- def genType(self, typeinfo, name, alias):
- """Generate type.
-
- - For 'struct' or 'union' types, defer to genStruct() to
- add to the dictionary.
- - For 'bitmask' types, add the type name to the 'flags' dictionary,
- with the value being the corresponding 'enums' name defining
- the acceptable flag bits.
- - For 'enum' types, add the type name to the 'enums' dictionary,
- with the value being '@STOPHERE@' (because this case seems
- never to happen).
- - For 'funcpointer' types, add the type name to the 'funcpointers'
- dictionary.
- - For 'handle' and 'define' types, add the handle or #define name
- to the 'struct' dictionary, because that's how the spec sources
- tag these types even though they aren't structs."""
- OutputGenerator.genType(self, typeinfo, name, alias)
-
- typeElem = typeinfo.elem
- # If the type is a struct type, traverse the embedded <member> tags
- # generating a structure. Otherwise, emit the tag text.
- category = typeElem.get('category')
-
- # Add a typeCategory{} entry for the category of this type.
- self.addName(self.typeCategory, name, category)
-
- if category in ('struct', 'union'):
- self.genStruct(typeinfo, name, alias)
- else:
- if alias:
- # Add name -> alias mapping
- self.addName(self.alias, name, alias)
-
- # Always emit an alias (?!)
- count = 1
-
- # May want to only emit full type definition when not an alias?
- else:
- # Extract the type name
- # (from self.genOpts). Copy other text through unchanged.
- # If the resulting text is an empty string, don't emit it.
- count = len(noneStr(typeElem.text))
- for elem in typeElem:
- count += len(noneStr(elem.text)) + len(noneStr(elem.tail))
-
- if count > 0:
- if category == 'bitmask':
- requiredEnum = typeElem.get('requires')
- self.addName(self.flags, name, requiredEnum)
-
- # This happens when the Flags type is defined, but no
- # FlagBits are defined yet.
- if requiredEnum is not None:
- self.addMapping(name, requiredEnum)
- elif category == 'enum':
- # This case does not seem to come up. It nominally would
- # result from
- # <type name="Something" category="enum"/>,
- # but the output generator doesn't emit them directly.
- self.logMsg('warn', 'ScriptOutputGenerator::genType: invalid \'enum\' category for name:', name)
- elif category == 'funcpointer':
- self.funcpointers[name] = None
- elif category == 'handle':
- self.handles[name] = None
- elif category == 'define':
- self.defines[name] = None
- elif category == 'basetype':
- # Don't add an entry for base types that are not API types
- # e.g. an API Bool type gets an entry, uint32_t does not
- if self.apiName(name):
- self.basetypes[name] = None
- self.addName(self.typeCategory, name, 'basetype')
- else:
- self.logMsg('diag', 'ScriptOutputGenerator::genType: unprocessed type:', name, 'category:', category)
- else:
- self.logMsg('diag', 'ScriptOutputGenerator::genType: unprocessed type:', name)
-
- def genStruct(self, typeinfo, typeName, alias):
- """Generate struct (e.g. C "struct" type).
-
- Add the struct name to the 'structs' dictionary, with the
- value being an ordered list of the struct member names."""
- OutputGenerator.genStruct(self, typeinfo, typeName, alias)
-
- if alias:
- # Add name -> alias mapping
- self.addName(self.alias, typeName, alias)
- else:
- # May want to only emit definition on this branch
- True
-
- members = [member.text for member in typeinfo.elem.findall('.//member/name')]
- self.structs[typeName] = members
- memberTypes = [member.text for member in typeinfo.elem.findall('.//member/type')]
- for member_type in memberTypes:
- self.addMapping(typeName, member_type)
-
- def genGroup(self, groupinfo, groupName, alias):
- """Generate group (e.g. C "enum" type).
-
- These are concatenated together with other types.
-
- - Add the enum type name to the 'enums' dictionary, with
- the value being an ordered list of the enumerant names.
- - Add each enumerant name to the 'consts' dictionary, with
- the value being the enum type the enumerant is part of."""
- OutputGenerator.genGroup(self, groupinfo, groupName, alias)
- groupElem = groupinfo.elem
-
- # Add a typeCategory{} entry for the category of this type.
- self.addName(self.typeCategory, groupName, 'group')
-
- if alias:
- # Add name -> alias mapping
- self.addName(self.alias, groupName, alias)
- else:
- # May want to only emit definition on this branch
- True
-
- # Add each nested 'enum' tag
- enumerants = [elem.get('name') for elem in groupElem.findall('enum')]
- for name in enumerants:
- self.addName(self.consts, name, groupName)
-
- # Sort enums for output stability, since their order is irrelevant
- self.enums[groupName] = sorted(enumerants)
-
- def genEnum(self, enuminfo, name, alias):
- """Generate enumerant (compile-time constants).
-
- - Add the constant name to the 'consts' dictionary, with the
- value being None to indicate that the constant isn't
- an enumeration value."""
- OutputGenerator.genEnum(self, enuminfo, name, alias)
-
- if name not in self.consts:
- # Add a typeCategory{} entry for the category of this type.
- self.addName(self.typeCategory, name, 'consts')
- self.consts[name] = None
- # Otherwise, don't add it to the consts dictionary because it's
- # already present. This happens due to the generator 'reparentEnums'
- # parameter being False, so each extension enum appears in both the
- # <enums> type and in the <extension> or <feature> it originally
- # came from.
-
- def genCmd(self, cmdinfo, name, alias):
- """Generate command.
-
- - Add the command name to the 'protos' dictionary, with the
- value being an ordered list of the parameter names."""
- OutputGenerator.genCmd(self, cmdinfo, name, alias)
-
- # Add a typeCategory{} entry for the category of this type.
- self.addName(self.typeCategory, name, 'protos')
-
- if alias:
- # Add name -> alias mapping
- self.addName(self.alias, name, alias)
- else:
- # May want to only emit definition on this branch
- True
-
- params = [param.text for param in cmdinfo.elem.findall('param/name')]
- self.protos[name] = params
- paramTypes = [param.text for param in cmdinfo.elem.findall('param/type')]
- for param_type in paramTypes:
- self.addMapping(name, param_type)
-
- def createInverseMap(self):
- """This creates the inverse mapping of nonexistent APIs in this
- build to their aliases which are supported. Must be called by
- language-specific subclasses before emitting that mapping."""
-
- # Map from APIs not supported in this build to aliases that are.
- # When there are multiple valid choices for remapping, choose the
- # most-official suffixed one (KHR > EXT > vendor).
- for key in self.alias:
- # If the API key is aliased to something which doesn't exist,
- # then add the thing that doesn't exist to the nonexistent map.
- # This is used in spec macros to make promoted extension links
- # in specs built without the promoted interface refer to the
- # older interface instead.
-
- invkey = self.alias[key]
-
- if invkey not in self.typeCategory:
- if invkey in self.nonexistent:
- # Potentially remap existing mapping to a more official
- # alias.
- self.nonexistent[invkey] = mostOfficial(self.nonexistent[invkey], key)
- else:
- # Create remapping to an alias
- self.nonexistent[invkey] = key
diff --git a/codegen/vulkan/scripts/spec_tools/__init__.py b/codegen/vulkan/scripts/spec_tools/__init__.py
deleted file mode 100644
index 34c01f39..00000000
--- a/codegen/vulkan/scripts/spec_tools/__init__.py
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/usr/bin/python3 -i
-#
-# Copyright (c) 2018-2019 Collabora, Ltd.
-#
-# SPDX-License-Identifier: Apache-2.0
-#
-# Author(s): Ryan Pavlik <ryan.pavlik@collabora.com>
diff --git a/codegen/vulkan/scripts/spec_tools/algo.py b/codegen/vulkan/scripts/spec_tools/algo.py
deleted file mode 100644
index 3b4c81f4..00000000
--- a/codegen/vulkan/scripts/spec_tools/algo.py
+++ /dev/null
@@ -1,69 +0,0 @@
-#!/usr/bin/python3 -i
-#
-# Copyright (c) 2019 Collabora, Ltd.
-#
-# SPDX-License-Identifier: Apache-2.0
-#
-# Author(s): Ryan Pavlik <ryan.pavlik@collabora.com>
-"""RecursiveMemoize serves as a base class for a function modeled
-as a dictionary computed on-the-fly."""
-
-
-class RecursiveMemoize:
- """Base class for functions that are recursive.
-
- Derive and implement `def compute(self, key):` to perform the computation:
- you may use __getitem__ (aka self[otherkey]) to access the results for
- another key. Each value will be computed at most once. Your
- function should never return None, since it is used as a sentinel here.
-
- """
-
- def __init__(self, func, key_iterable=None, permit_cycles=False):
- """Initialize data structures, and optionally compute/cache the answer
- for all elements of an iterable.
-
- If permit_cycles is False, then __getitem__ on something that's
- currently being computed raises an exception.
- If permit_cycles is True, then __getitem__ on something that's
- currently being computed returns None.
- """
- self._compute = func
- self.permit_cycles = permit_cycles
- self.d = {}
- if key_iterable:
- # If we were given an iterable, let's populate those.
- for key in key_iterable:
- _ = self[key]
-
- def __getitem__(self, key):
- """Access the result of computing the function on the input.
-
- Performed lazily and cached.
- Implement `def compute(self, key):` with the actual function,
- which will be called on demand."""
- if key in self.d:
- ret = self.d[key]
- # Detect "we're computing this" sentinel and
- # fail if cycles not permitted
- if ret is None and not self.permit_cycles:
- raise RuntimeError("Cycle detected when computing function: " +
- "f({}) depends on itself".format(key))
- # return the memoized value
- # (which might be None if we're in a cycle that's permitted)
- return ret
-
- # Set sentinel for "we're computing this"
- self.d[key] = None
- # Delegate to function to actually compute
- ret = self._compute(key)
- # Memoize
- self.d[key] = ret
-
- return ret
-
- def get_dict(self):
- """Return the dictionary where memoized results are stored.
-
- DO NOT MODIFY!"""
- return self.d
diff --git a/codegen/vulkan/scripts/spec_tools/attributes.py b/codegen/vulkan/scripts/spec_tools/attributes.py
deleted file mode 100644
index ef771811..00000000
--- a/codegen/vulkan/scripts/spec_tools/attributes.py
+++ /dev/null
@@ -1,114 +0,0 @@
-#!/usr/bin/python3 -i
-#
-# Copyright 2013-2021 The Khronos Group Inc.
-#
-# SPDX-License-Identifier: Apache-2.0
-"""Utilities for working with attributes of the XML registry."""
-
-import re
-
-_PARAM_REF_NAME_RE = re.compile(
- r"(?P<name>[\w]+)(?P<brackets>\[\])?(?P<delim>\.|::|->)?")
-
-
-def _split_param_ref(val):
- return [name for name, _, _ in _PARAM_REF_NAME_RE.findall(val)]
-
-
-def _human_readable_deref(val, make_param_name=None):
- """Turn the "name[].member[]" notation into plain English."""
- parts = []
- matches = _PARAM_REF_NAME_RE.findall(val)
- for name, brackets, delim in reversed(matches):
- if make_param_name:
- name = make_param_name(name)
- if delim:
- parts.append('member of')
- if brackets:
- parts.append('each element of')
- parts.append('the')
- parts.append(name)
- parts.append('parameter')
- return ' '.join(parts)
-
-
-class LengthEntry:
- """An entry in a (comma-separated) len attribute"""
- NULL_TERMINATED_STRING = 'null-terminated'
- MATH_STRING = 'latexmath:'
-
- def __init__(self, val):
- self.full_reference = val
- self.other_param_name = None
- self.null_terminated = False
- self.number = None
- self.math = None
- self.param_ref_parts = None
- if val == LengthEntry.NULL_TERMINATED_STRING:
- self.null_terminated = True
- return
-
- if val.startswith(LengthEntry.MATH_STRING):
- self.math = val.replace(LengthEntry.MATH_STRING, '')[1:-1]
- return
-
- if val.isdigit():
- self.number = int(val)
- return
-
- # Must be another param name.
- self.param_ref_parts = _split_param_ref(val)
- self.other_param_name = self.param_ref_parts[0]
-
- def __str__(self):
- return self.full_reference
-
- def get_human_readable(self, make_param_name=None):
- assert(self.other_param_name)
- return _human_readable_deref(self.full_reference, make_param_name=make_param_name)
-
- def __repr__(self):
- "Formats an object for repr(), debugger display, etc."
- return 'spec_tools.attributes.LengthEntry("{}")'.format(self.full_reference)
-
- @staticmethod
- def parse_len_from_param(param):
- """Get a list of LengthEntry."""
- len_str = param.get('len')
- if len_str is None:
- return None
- return [LengthEntry(elt) for elt in len_str.split(',')]
-
-
-class ExternSyncEntry:
- """An entry in a (comma-separated) externsync attribute"""
-
- TRUE_STRING = 'true'
- TRUE_WITH_CHILDREN_STRING = 'true_with_children'
-
- def __init__(self, val):
- self.full_reference = val
- self.entirely_extern_sync = (val in (ExternSyncEntry.TRUE_STRING, ExternSyncEntry.TRUE_WITH_CHILDREN_STRING))
- self.children_extern_sync = (val == ExternSyncEntry.TRUE_WITH_CHILDREN_STRING)
- if self.entirely_extern_sync:
- return
-
- self.param_ref_parts = _split_param_ref(val)
- self.member = self.param_ref_parts[0]
-
- def get_human_readable(self, make_param_name=None):
- assert(not self.entirely_extern_sync)
- return _human_readable_deref(self.full_reference, make_param_name=make_param_name)
-
- @staticmethod
- def parse_externsync_from_param(param):
- """Get a list of ExternSyncEntry."""
- sync_str = param.get('externsync')
- if sync_str is None:
- return None
- return [ExternSyncEntry(elt) for elt in sync_str.split(',')]
-
- def __repr__(self):
- "Formats an object for repr(), debugger display, etc."
- return 'spec_tools.attributes.ExternSyncEntry("{}")'.format(self.full_reference)
-
diff --git a/codegen/vulkan/scripts/spec_tools/base_printer.py b/codegen/vulkan/scripts/spec_tools/base_printer.py
deleted file mode 100644
index f48905ac..00000000
--- a/codegen/vulkan/scripts/spec_tools/base_printer.py
+++ /dev/null
@@ -1,213 +0,0 @@
-"""Provides the BasePrinter base class for MacroChecker/Message output techniques."""
-
-# Copyright (c) 2018-2019 Collabora, Ltd.
-#
-# SPDX-License-Identifier: Apache-2.0
-#
-# Author(s): Ryan Pavlik <ryan.pavlik@collabora.com>
-
-from abc import ABC, abstractmethod
-from pathlib import Path
-
-from .macro_checker import MacroChecker
-from .macro_checker_file import MacroCheckerFile
-from .shared import EntityData, Message, MessageContext, MessageType
-
-
-def getColumn(message_context):
- """Return the (zero-based) column number of the message context.
-
- If a group is specified: returns the column of the start of the group.
- If no group, but a match is specified: returns the column of the start of
- the match.
- If no match: returns column 0 (whole line).
- """
- if not message_context.match:
- # whole line
- return 0
- if message_context.group is not None:
- return message_context.match.start(message_context.group)
- return message_context.match.start()
-
-
-class BasePrinter(ABC):
- """Base class for a way of outputting results of a checker execution."""
-
- def __init__(self):
- """Constructor."""
- self._cwd = None
-
- def close(self):
- """Write the tail end of the output and close it, if applicable.
-
- Override if you want to print a summary or are writing to a file.
- """
- pass
-
- ###
- # Output methods: these should all print/output directly.
- def output(self, obj):
- """Output any object.
-
- Delegates to other output* methods, if type known,
- otherwise uses self.outputFallback().
- """
- if isinstance(obj, Message):
- self.outputMessage(obj)
- elif isinstance(obj, MacroCheckerFile):
- self.outputCheckerFile(obj)
- elif isinstance(obj, MacroChecker):
- self.outputChecker(obj)
- else:
- self.outputFallback(self.formatBrief(obj))
-
- @abstractmethod
- def outputResults(self, checker, broken_links=True,
- missing_includes=False):
- """Output the full results of a checker run.
-
- Must be implemented.
-
- Typically will call self.output() on the MacroChecker,
- as well as calling self.outputBrokenAndMissing()
- """
- raise NotImplementedError
-
- @abstractmethod
- def outputBrokenLinks(self, checker, broken):
- """Output the collection of broken links.
-
- `broken` is a dictionary of entity names: usage contexts.
-
- Must be implemented.
-
- Called by self.outputBrokenAndMissing() if requested.
- """
- raise NotImplementedError
-
- @abstractmethod
- def outputMissingIncludes(self, checker, missing):
- """Output a table of missing includes.
-
- `missing` is a iterable entity names.
-
- Must be implemented.
-
- Called by self.outputBrokenAndMissing() if requested.
- """
- raise NotImplementedError
-
- def outputChecker(self, checker):
- """Output the contents of a MacroChecker object.
-
- Default implementation calls self.output() on every MacroCheckerFile.
- """
- for f in checker.files:
- self.output(f)
-
- def outputCheckerFile(self, fileChecker):
- """Output the contents of a MacroCheckerFile object.
-
- Default implementation calls self.output() on every Message.
- """
- for m in fileChecker.messages:
- self.output(m)
-
- def outputBrokenAndMissing(self, checker, broken_links=True,
- missing_includes=False):
- """Outputs broken links and missing includes, if desired.
-
- Delegates to self.outputBrokenLinks() (if broken_links==True)
- and self.outputMissingIncludes() (if missing_includes==True).
- """
- if broken_links:
- broken = checker.getBrokenLinks()
- if broken:
- self.outputBrokenLinks(checker, broken)
- if missing_includes:
- missing = checker.getMissingUnreferencedApiIncludes()
- if missing:
- self.outputMissingIncludes(checker, missing)
-
- @abstractmethod
- def outputMessage(self, msg):
- """Output a Message.
-
- Must be implemented.
- """
- raise NotImplementedError
-
- @abstractmethod
- def outputFallback(self, msg):
- """Output some text in a general way.
-
- Must be implemented.
- """
- raise NotImplementedError
-
- ###
- # Format methods: these should all return a string.
- def formatContext(self, context, _message_type=None):
- """Format a message context in a verbose way, if applicable.
-
- May override, default implementation delegates to
- self.formatContextBrief().
- """
- return self.formatContextBrief(context)
-
- def formatContextBrief(self, context, _with_color=True):
- """Format a message context in a brief way.
-
- May override, default is relativeFilename:line:column
- """
- return '{}:{}:{}'.format(self.getRelativeFilename(context.filename),
- context.lineNum, getColumn(context))
-
- def formatMessageTypeBrief(self, message_type, _with_color=True):
- """Format a message type in a brief way.
-
- May override, default is message_type:
- """
- return '{}:'.format(message_type)
-
- def formatEntityBrief(self, entity_data, _with_color=True):
- """Format an entity in a brief way.
-
- May override, default is macro:entity.
- """
- return '{}:{}'.format(entity_data.macro, entity_data.entity)
-
- def formatBrief(self, obj, with_color=True):
- """Format any object in a brief way.
-
- Delegates to other format*Brief methods, if known,
- otherwise uses str().
- """
- if isinstance(obj, MessageContext):
- return self.formatContextBrief(obj, with_color)
- if isinstance(obj, MessageType):
- return self.formatMessageTypeBrief(obj, with_color)
- if isinstance(obj, EntityData):
- return self.formatEntityBrief(obj, with_color)
- return str(obj)
-
- @property
- def cwd(self):
- """Get the current working directory, fully resolved.
-
- Lazy initialized.
- """
- if not self._cwd:
- self._cwd = Path('.').resolve()
- return self._cwd
-
- ###
- # Helper function
- def getRelativeFilename(self, fn):
- """Return the given filename relative to the current directory,
- if possible.
- """
- try:
- return str(Path(fn).relative_to(self.cwd))
- except ValueError:
- return str(Path(fn))
diff --git a/codegen/vulkan/scripts/spec_tools/consistency_tools.py b/codegen/vulkan/scripts/spec_tools/consistency_tools.py
deleted file mode 100644
index c256a724..00000000
--- a/codegen/vulkan/scripts/spec_tools/consistency_tools.py
+++ /dev/null
@@ -1,697 +0,0 @@
-#!/usr/bin/python3 -i
-#
-# Copyright (c) 2019 Collabora, Ltd.
-#
-# SPDX-License-Identifier: Apache-2.0
-#
-# Author(s): Ryan Pavlik <ryan.pavlik@collabora.com>
-"""Provides utilities to write a script to verify XML registry consistency."""
-
-import re
-
-import networkx as nx
-
-from .algo import RecursiveMemoize
-from .attributes import ExternSyncEntry, LengthEntry
-from .data_structures import DictOfStringSets
-from .util import findNamedElem, getElemName
-
-
-class XMLChecker:
- def __init__(self, entity_db, conventions, manual_types_to_codes=None,
- forward_only_types_to_codes=None,
- reverse_only_types_to_codes=None,
- suppressions=None):
- """Set up data structures.
-
- May extend - call:
- `super().__init__(db, conventions, manual_types_to_codes)`
- as the last statement in your function.
-
- manual_types_to_codes is a dictionary of hard-coded
- "manual" return codes:
- the codes of the value are available for a command if-and-only-if
- the key type is passed as an input.
-
- forward_only_types_to_codes is additional entries to the above
- that should only be used in the "forward" direction
- (arg type implies return code)
-
- reverse_only_types_to_codes is additional entries to
- manual_types_to_codes that should only be used in the
- "reverse" direction
- (return code implies arg type)
- """
- self.fail = False
- self.entity = None
- self.errors = DictOfStringSets()
- self.warnings = DictOfStringSets()
- self.db = entity_db
- self.reg = entity_db.registry
- self.handle_data = HandleData(self.reg)
- self.conventions = conventions
-
- self.CONST_RE = re.compile(r"\bconst\b")
- self.ARRAY_RE = re.compile(r"\[[^]]+\]")
-
- # Init memoized properties
- self._handle_data = None
-
- if not manual_types_to_codes:
- manual_types_to_codes = {}
- if not reverse_only_types_to_codes:
- reverse_only_types_to_codes = {}
- if not forward_only_types_to_codes:
- forward_only_types_to_codes = {}
-
- reverse_codes = DictOfStringSets(reverse_only_types_to_codes)
- forward_codes = DictOfStringSets(forward_only_types_to_codes)
- for k, v in manual_types_to_codes.items():
- forward_codes.add(k, v)
- reverse_codes.add(k, v)
-
- self.forward_only_manual_types_to_codes = forward_codes.get_dict()
- self.reverse_only_manual_types_to_codes = reverse_codes.get_dict()
-
- # The presence of some types as input to a function imply the
- # availability of some return codes.
- self.input_type_to_codes = compute_type_to_codes(
- self.handle_data,
- forward_codes,
- extra_op=self.add_extra_codes)
-
- # Some return codes require a type (or its child) in the input.
- self.codes_requiring_input_type = compute_codes_requiring_type(
- self.handle_data,
- reverse_codes
- )
-
- specified_codes = set(self.codes_requiring_input_type.keys())
- for codes in self.forward_only_manual_types_to_codes.values():
- specified_codes.update(codes)
- for codes in self.reverse_only_manual_types_to_codes.values():
- specified_codes.update(codes)
- for codes in self.input_type_to_codes.values():
- specified_codes.update(codes)
-
- unrecognized = specified_codes - self.return_codes
- if unrecognized:
- raise RuntimeError("Return code mentioned in script that isn't in the registry: " +
- ', '.join(unrecognized))
-
- self.referenced_input_types = ReferencedTypes(self.db, self.is_input)
- self.referenced_api_types = ReferencedTypes(self.db, self.is_api_type)
- if not suppressions:
- suppressions = {}
- self.suppressions = DictOfStringSets(suppressions)
-
- def is_api_type(self, member_elem):
- """Return true if the member/parameter ElementTree passed is from this API.
-
- May override or extend."""
- membertext = "".join(member_elem.itertext())
-
- return self.conventions.type_prefix in membertext
-
- def is_input(self, member_elem):
- """Return true if the member/parameter ElementTree passed is
- considered "input".
-
- May override or extend."""
- membertext = "".join(member_elem.itertext())
-
- if self.conventions.type_prefix not in membertext:
- return False
-
- ret = True
- # Const is always input.
- if self.CONST_RE.search(membertext):
- ret = True
-
- # Arrays and pointers that aren't const are always output.
- elif "*" in membertext:
- ret = False
- elif self.ARRAY_RE.search(membertext):
- ret = False
-
- return ret
-
- def add_extra_codes(self, types_to_codes):
- """Add any desired entries to the types-to-codes DictOfStringSets
- before performing "ancestor propagation".
-
- Passed to compute_type_to_codes as the extra_op.
-
- May override."""
- pass
-
- def should_skip_checking_codes(self, name):
- """Return True if more than the basic validation of return codes should
- be skipped for a command.
-
- May override."""
-
- return self.conventions.should_skip_checking_codes
-
- def get_codes_for_command_and_type(self, cmd_name, type_name):
- """Return a set of error codes expected due to having
- an input argument of type type_name.
-
- The cmd_name is passed for use by extending methods.
-
- May extend."""
- return self.input_type_to_codes.get(type_name, set())
-
- def check(self):
- """Iterate through the registry, looking for consistency problems.
-
- Outputs error messages at the end."""
- # Iterate through commands, looking for consistency problems.
- for name, info in self.reg.cmddict.items():
- self.set_error_context(entity=name, elem=info.elem)
-
- self.check_command(name, info)
-
- for name, info in self.reg.typedict.items():
- cat = info.elem.get('category')
- if not cat:
- # This is an external thing, skip it.
- continue
- self.set_error_context(entity=name, elem=info.elem)
-
- self.check_type(name, info, cat)
-
- # check_extension is called for all extensions, even 'disabled'
- # ones, but some checks may be skipped depending on extension
- # status.
- for name, info in self.reg.extdict.items():
- self.set_error_context(entity=name, elem=info.elem)
- self.check_extension(name, info)
-
- entities_with_messages = set(
- self.errors.keys()).union(self.warnings.keys())
- if entities_with_messages:
- print('xml_consistency/consistency_tools error and warning messages follow.')
-
- for entity in entities_with_messages:
- print()
- print('-------------------')
- print('Messages for', entity)
- print()
- messages = self.errors.get(entity)
- if messages:
- for m in messages:
- print('Error:', m)
-
- messages = self.warnings.get(entity)
- if messages:
- for m in messages:
- print('Warning:', m)
-
- def check_param(self, param):
- """Check a member of a struct or a param of a function.
-
- Called from check_params.
-
- May extend."""
- param_name = getElemName(param)
- externsyncs = ExternSyncEntry.parse_externsync_from_param(param)
- if externsyncs:
- for entry in externsyncs:
- if entry.entirely_extern_sync:
- if len(externsyncs) > 1:
- self.record_error("Comma-separated list in externsync attribute includes 'true' for",
- param_name)
- else:
- # member name
- # TODO only looking at the superficial feature here,
- # not entry.param_ref_parts
- if entry.member != param_name:
- self.record_error("externsync attribute for", param_name,
- "refers to some other member/parameter:", entry.member)
-
- def check_params(self, params):
- """Check the members of a struct or params of a function.
-
- Called from check_type and check_command.
-
- May extend."""
- for param in params:
- self.check_param(param)
-
- # Check for parameters referenced by len= attribute
- lengths = LengthEntry.parse_len_from_param(param)
- if lengths:
- for entry in lengths:
- if not entry.other_param_name:
- continue
- # TODO only looking at the superficial feature here,
- # not entry.param_ref_parts
- other_param = findNamedElem(params, entry.other_param_name)
- if other_param is None:
- self.record_error("References a non-existent parameter/member in the length of",
- getElemName(param), ":", entry.other_param_name)
-
- def check_type(self, name, info, category):
- """Check a type's XML data for consistency.
-
- Called from check.
-
- May extend."""
- if category == 'struct':
- if not name.startswith(self.conventions.type_prefix):
- self.record_error("Name does not start with",
- self.conventions.type_prefix)
- members = info.elem.findall('member')
- self.check_params(members)
-
- # Check the structure type member, if present.
- type_member = findNamedElem(
- members, self.conventions.structtype_member_name)
- if type_member is not None:
- val = type_member.get('values')
- if val:
- expected = self.conventions.generate_structure_type_from_name(
- name)
- if val != expected:
- self.record_error("Type has incorrect type-member value: expected",
- expected, "got", val)
-
- elif category == "bitmask":
- if 'Flags' not in name:
- self.record_error("Name of bitmask doesn't include 'Flags'")
-
- def check_extension(self, name, info):
- """Check an extension's XML data for consistency.
-
- Called from check.
-
- May extend."""
- pass
-
- def check_command(self, name, info):
- """Check a command's XML data for consistency.
-
- Called from check.
-
- May extend."""
- elem = info.elem
-
- self.check_params(elem.findall('param'))
-
- # Some minimal return code checking
- errorcodes = elem.get("errorcodes")
- if errorcodes:
- errorcodes = errorcodes.split(",")
- else:
- errorcodes = []
-
- successcodes = elem.get("successcodes")
- if successcodes:
- successcodes = successcodes.split(",")
- else:
- successcodes = []
-
- if not successcodes and not errorcodes:
- # Early out if no return codes.
- return
-
- # Create a set for each group of codes, and check that
- # they aren't duplicated within or between groups.
- errorcodes_set = set(errorcodes)
- if len(errorcodes) != len(errorcodes_set):
- self.record_error("Contains a duplicate in errorcodes")
-
- successcodes_set = set(successcodes)
- if len(successcodes) != len(successcodes_set):
- self.record_error("Contains a duplicate in successcodes")
-
- if not successcodes_set.isdisjoint(errorcodes_set):
- self.record_error("Has errorcodes and successcodes that overlap")
-
- self.check_command_return_codes_basic(
- name, info, successcodes_set, errorcodes_set)
-
- # Continue to further return code checking if not "complicated"
- if not self.should_skip_checking_codes(name):
- codes_set = successcodes_set.union(errorcodes_set)
- self.check_command_return_codes(
- name, info, successcodes_set, errorcodes_set, codes_set)
-
- def check_command_return_codes_basic(self, name, info,
- successcodes, errorcodes):
- """Check a command's return codes for consistency.
-
- Called from check_command on every command.
-
- May extend."""
-
- # Check that all error codes include _ERROR_,
- # and that no success codes do.
- for code in errorcodes:
- if "_ERROR_" not in code:
- self.record_error(
- code, "in errorcodes but doesn't contain _ERROR_")
-
- for code in successcodes:
- if "_ERROR_" in code:
- self.record_error(code, "in successcodes but contain _ERROR_")
-
- def check_command_return_codes(self, name, type_info,
- successcodes, errorcodes,
- codes):
- """Check a command's return codes in-depth for consistency.
-
- Called from check_command, only if
- `self.should_skip_checking_codes(name)` is False.
-
- May extend."""
- referenced_input = self.referenced_input_types[name]
- referenced_types = self.referenced_api_types[name]
-
- # Check that we have all the codes we expect, based on input types.
- for referenced_type in referenced_input:
- required_codes = self.get_codes_for_command_and_type(
- name, referenced_type)
- missing_codes = required_codes - codes
- if missing_codes:
- path = self.referenced_input_types.shortest_path(
- name, referenced_type)
- path_str = " -> ".join(path)
- self.record_error("Missing expected return code(s)",
- ",".join(missing_codes),
- "implied because of input of type",
- referenced_type,
- "found via path",
- path_str)
-
- # Check that, for each code returned by this command that we can
- # associate with a type, we have some type that can provide it.
- # e.g. can't have INSTANCE_LOST without an Instance
- # (or child of Instance).
- for code in codes:
-
- required_types = self.codes_requiring_input_type.get(code)
- if not required_types:
- # This code doesn't have a known requirement
- continue
-
- # TODO: do we look at referenced_types or referenced_input here?
- # the latter is stricter
- if not referenced_types.intersection(required_types):
- self.record_error("Unexpected return code", code,
- "- none of these types:",
- required_types,
- "found in the set of referenced types",
- referenced_types)
-
- ###
- # Utility properties/methods
- ###
-
- def set_error_context(self, entity=None, elem=None):
- """Set the entity and/or element for future record_error calls."""
- self.entity = entity
- self.elem = elem
- self.name = getElemName(elem)
- self.entity_suppressions = self.suppressions.get(getElemName(elem))
-
- def record_error(self, *args, **kwargs):
- """Record failure and an error message for the current context."""
- message = " ".join((str(x) for x in args))
-
- if self._is_message_suppressed(message):
- return
-
- message = self._prepend_sourceline_to_message(message, **kwargs)
- self.fail = True
- self.errors.add(self.entity, message)
-
- def record_warning(self, *args, **kwargs):
- """Record a warning message for the current context."""
- message = " ".join((str(x) for x in args))
-
- if self._is_message_suppressed(message):
- return
-
- message = self._prepend_sourceline_to_message(message, **kwargs)
- self.warnings.add(self.entity, message)
-
- def _is_message_suppressed(self, message):
- """Return True if the given message, for this entity, should be suppressed."""
- if not self.entity_suppressions:
- return False
- for suppress in self.entity_suppressions:
- if suppress in message:
- return True
-
- return False
-
- def _prepend_sourceline_to_message(self, message, **kwargs):
- """Prepend a file and/or line reference to the message, if possible.
-
- If filename is given as a keyword argument, it is used on its own.
-
- If filename is not given, this will attempt to retrieve the filename and line from an XML element.
- If 'elem' is given as a keyword argument and is not None, it is used to find the line.
- If 'elem' is given as None, no XML elements are looked at.
- If 'elem' is not supplied, the error context element is used.
-
- If using XML, the filename, if available, is retrieved from the Registry class.
- If using XML and python-lxml is installed, the source line is retrieved from whatever element is chosen."""
- fn = kwargs.get('filename')
- sourceline = None
-
- if fn is None:
- elem = kwargs.get('elem', self.elem)
- if elem is not None:
- sourceline = getattr(elem, 'sourceline', None)
- if self.reg.filename:
- fn = self.reg.filename
-
- if fn is None and sourceline is None:
- return message
-
- if fn is None:
- return "Line {}: {}".format(sourceline, message)
-
- if sourceline is None:
- return "{}: {}".format(fn, message)
-
- return "{}:{}: {}".format(fn, sourceline, message)
-
-
-class HandleParents(RecursiveMemoize):
- def __init__(self, handle_types):
- self.handle_types = handle_types
-
- def compute(handle_type):
- immediate_parent = self.handle_types[handle_type].elem.get(
- 'parent')
-
- if immediate_parent is None:
- # No parents, no need to recurse
- return []
-
- # Support multiple (alternate) parents
- immediate_parents = immediate_parent.split(',')
-
- # Recurse, combine, and return
- all_parents = immediate_parents[:]
- for parent in immediate_parents:
- all_parents.extend(self[parent])
- return all_parents
-
- super().__init__(compute, handle_types.keys())
-
-
-def _always_true(x):
- return True
-
-
-class ReferencedTypes(RecursiveMemoize):
- """Find all types(optionally matching a predicate) that are referenced
- by a struct or function, recursively."""
-
- def __init__(self, db, predicate=None):
- """Initialize.
-
- Provide an EntityDB object and a predicate function."""
- self.db = db
-
- self.predicate = predicate
- if not self.predicate:
- # Default predicate is "anything goes"
- self.predicate = _always_true
-
- self._directly_referenced = {}
- self.graph = nx.DiGraph()
-
- def compute(type_name):
- """Compute and return all types referenced by type_name, recursively, that satisfy the predicate.
-
- Called by the [] operator in the base class."""
- types = self.directly_referenced(type_name)
- if not types:
- return types
-
- all_types = set()
- all_types.update(types)
- for t in types:
- referenced = self[t]
- if referenced is not None:
- # If not leading to a cycle
- all_types.update(referenced)
- return all_types
-
- # Initialize base class
- super().__init__(compute, permit_cycles=True)
-
- def shortest_path(self, source, target):
- """Get the shortest path between one type/function name and another."""
- # Trigger computation
- _ = self[source]
-
- return nx.algorithms.shortest_path(self.graph, source=source, target=target)
-
- def directly_referenced(self, type_name):
- """Get all types referenced directly by type_name that satisfy the predicate.
-
- Memoizes its results."""
- if type_name not in self._directly_referenced:
- members = self.db.getMemberElems(type_name)
- if members:
- types = ((member, member.find("type")) for member in members)
- self._directly_referenced[type_name] = set(type_elem.text for (member, type_elem) in types
- if type_elem is not None and self.predicate(member))
-
- else:
- self._directly_referenced[type_name] = set()
-
- # Update graph
- self.graph.add_node(type_name)
- self.graph.add_edges_from((type_name, t)
- for t in self._directly_referenced[type_name])
-
- return self._directly_referenced[type_name]
-
-
-class HandleData:
- """Data about all the handle types available in an API specification."""
-
- def __init__(self, registry):
- self.reg = registry
- self._handle_types = None
- self._ancestors = None
- self._descendants = None
-
- @property
- def handle_types(self):
- """Return a dictionary of handle type names to type info."""
- if not self._handle_types:
- # First time requested - compute it.
- self._handle_types = {
- type_name: type_info
- for type_name, type_info in self.reg.typedict.items()
- if type_info.elem.get('category') == 'handle'
- }
- return self._handle_types
-
- @property
- def ancestors_dict(self):
- """Return a dictionary of handle type names to sets of ancestors."""
- if not self._ancestors:
- # First time requested - compute it.
- self._ancestors = HandleParents(self.handle_types).get_dict()
- return self._ancestors
-
- @property
- def descendants_dict(self):
- """Return a dictionary of handle type names to sets of descendants."""
- if not self._descendants:
- # First time requested - compute it.
-
- handle_parents = self.ancestors_dict
-
- def get_descendants(handle):
- return set(h for h in handle_parents.keys()
- if handle in handle_parents[h])
-
- self._descendants = {
- h: get_descendants(h)
- for h in handle_parents.keys()
- }
- return self._descendants
-
-
-def compute_type_to_codes(handle_data, types_to_codes, extra_op=None):
- """Compute a DictOfStringSets of input type to required return codes.
-
- - handle_data is a HandleData instance.
- - d is a dictionary of type names to strings or string collections of
- return codes.
- - extra_op, if any, is called after populating the output from the input
- dictionary, but before propagation of parent codes to child types.
- extra_op is called with the in-progress DictOfStringSets.
-
- Returns a DictOfStringSets of input type name to set of required return
- code names.
- """
- # Initialize with the supplied "manual" codes
- types_to_codes = DictOfStringSets(types_to_codes)
-
- # Dynamically generate more codes, if desired
- if extra_op:
- extra_op(types_to_codes)
-
- # Final post-processing
-
- # Any handle can result in its parent handle's codes too.
-
- handle_ancestors = handle_data.ancestors_dict
-
- extra_handle_codes = {}
- for handle_type, ancestors in handle_ancestors.items():
- codes = set()
- # The sets of return codes corresponding to each ancestor type.
- ancestors_codes = (types_to_codes.get(ancestor, set())
- for ancestor in ancestors)
- codes.union(*ancestors_codes)
- # for parent_codes in ancestors_codes:
- # codes.update(parent_codes)
- extra_handle_codes[handle_type] = codes
-
- for handle_type, extras in extra_handle_codes.items():
- types_to_codes.add(handle_type, extras)
-
- return types_to_codes
-
-
-def compute_codes_requiring_type(handle_data, types_to_codes, registry=None):
- """Compute a DictOfStringSets of return codes to a set of input types able
- to provide the ability to generate that code.
-
- handle_data is a HandleData instance.
- d is a dictionary of input types to associated return codes(same format
- as for input to compute_type_to_codes, may use same dict).
- This will invert that relationship, and also permit any "child handles"
- to satisfy a requirement for a parent in producing a code.
-
- Returns a DictOfStringSets of return code name to the set of parameter
- types that would allow that return code.
- """
- # Use DictOfStringSets to normalize the input into a dict with values
- # that are sets of strings
- in_dict = DictOfStringSets(types_to_codes)
-
- handle_descendants = handle_data.descendants_dict
-
- out = DictOfStringSets()
- for in_type, code_set in in_dict.items():
- descendants = handle_descendants.get(in_type)
- for code in code_set:
- out.add(code, in_type)
- if descendants:
- out.add(code, descendants)
-
- return out
diff --git a/codegen/vulkan/scripts/spec_tools/console_printer.py b/codegen/vulkan/scripts/spec_tools/console_printer.py
deleted file mode 100644
index 18acabfd..00000000
--- a/codegen/vulkan/scripts/spec_tools/console_printer.py
+++ /dev/null
@@ -1,274 +0,0 @@
-"""Defines ConsolePrinter, a BasePrinter subclass for appealing console output."""
-
-# Copyright (c) 2018-2019 Collabora, Ltd.
-#
-# SPDX-License-Identifier: Apache-2.0
-#
-# Author(s): Ryan Pavlik <ryan.pavlik@collabora.com>
-
-from sys import stdout
-
-from .base_printer import BasePrinter
-from .shared import (colored, getHighlightedRange, getInterestedRange,
- toNameAndLine)
-
-try:
- from tabulate import tabulate_impl
- HAVE_TABULATE = True
-except ImportError:
- HAVE_TABULATE = False
-
-
-def colWidth(collection, columnNum):
- """Compute the required width of a column in a collection of row-tuples."""
- MIN_PADDING = 5
- return MIN_PADDING + max((len(row[columnNum]) for row in collection))
-
-
-def alternateTabulate(collection, headers=None):
- """Minimal re-implementation of the tabulate module."""
- # We need a list, not a generator or anything else.
- if not isinstance(collection, list):
- collection = list(collection)
-
- # Empty collection means no table
- if not collection:
- return None
-
- if headers is None:
- fullTable = collection
- else:
- underline = ['-' * len(header) for header in headers]
- fullTable = [headers, underline] + collection
- widths = [colWidth(collection, colNum)
- for colNum in range(len(fullTable[0]))]
- widths[-1] = None
-
- lines = []
- for row in fullTable:
- fields = []
- for data, width in zip(row, widths):
- if width:
- spaces = ' ' * (width - len(data))
- fields.append(data + spaces)
- else:
- fields.append(data)
- lines.append(''.join(fields))
- return '\n'.join(lines)
-
-
-def printTabulated(collection, headers=None):
- """Call either tabulate.tabulate(), or our internal alternateTabulate()."""
- if HAVE_TABULATE:
- tabulated = tabulate_impl(collection, headers=headers)
- else:
- tabulated = alternateTabulate(collection, headers=headers)
- if tabulated:
- print(tabulated)
-
-
-def printLineSubsetWithHighlighting(
- line, start, end, highlightStart=None, highlightEnd=None, maxLen=120, replacement=None):
- """Print a (potential subset of a) line, with highlighting/underline and optional replacement.
-
- Will print at least the characters line[start:end], and potentially more if possible
- to do so without making the output too wide.
- Will highlight (underline) line[highlightStart:highlightEnd], where the default
- value for highlightStart is simply start, and the default value for highlightEnd is simply end.
- Replacment, if supplied, will be aligned with the highlighted range.
-
- Output is intended to look like part of a Clang compile error/warning message.
- """
- # Fill in missing start/end with start/end of range.
- if highlightStart is None:
- highlightStart = start
- if highlightEnd is None:
- highlightEnd = end
-
- # Expand interested range start/end.
- start = min(start, highlightStart)
- end = max(end, highlightEnd)
-
- tildeLength = highlightEnd - highlightStart - 1
- caretLoc = highlightStart
- continuation = '[...]'
-
- if len(line) > maxLen:
- # Too long
-
- # the max is to handle -1 from .find() (which indicates "not found")
- followingSpaceIndex = max(end, line.find(' ', min(len(line), end + 1)))
-
- # Maximum length has decreased by at least
- # the length of a single continuation we absolutely need.
- maxLen -= len(continuation)
-
- if followingSpaceIndex <= maxLen:
- # We can grab the whole beginning of the line,
- # and not adjust caretLoc
- line = line[:maxLen] + continuation
-
- elif (len(line) - followingSpaceIndex) < 5:
- # We need to truncate the beginning,
- # but we're close to the end of line.
- newBeginning = len(line) - maxLen
-
- caretLoc += len(continuation)
- caretLoc -= newBeginning
- line = continuation + line[newBeginning:]
- else:
- # Need to truncate the beginning of the string too.
- newEnd = followingSpaceIndex
-
- # Now we need two continuations
- # (and to adjust caret to the right accordingly)
- maxLen -= len(continuation)
- caretLoc += len(continuation)
-
- newBeginning = newEnd - maxLen
- caretLoc -= newBeginning
-
- line = continuation + line[newBeginning:newEnd] + continuation
-
- stdout.buffer.write(line.encode('utf-8'))
- print()
-
- spaces = ' ' * caretLoc
- tildes = '~' * tildeLength
- print(spaces + colored('^' + tildes, 'green'))
- if replacement is not None:
- print(spaces + colored(replacement, 'green'))
-
-
-class ConsolePrinter(BasePrinter):
- """Implementation of BasePrinter for generating diagnostic reports in colored, helpful console output."""
-
- def __init__(self):
- self.show_script_location = False
- super().__init__()
-
- ###
- # Output methods: these all print directly.
- def outputResults(self, checker, broken_links=True,
- missing_includes=False):
- """Output the full results of a checker run.
-
- Includes the diagnostics, broken links (if desired),
- and missing includes (if desired).
- """
- self.output(checker)
- if broken_links:
- broken = checker.getBrokenLinks()
- if broken:
- self.outputBrokenLinks(checker, broken)
- if missing_includes:
- missing = checker.getMissingUnreferencedApiIncludes()
- if missing:
- self.outputMissingIncludes(checker, missing)
-
- def outputBrokenLinks(self, checker, broken):
- """Output a table of broken links.
-
- Called by self.outputBrokenAndMissing() if requested.
- """
- print('Missing API includes that are referenced by a linking macro: these result in broken links in the spec!')
-
- def makeRowOfBroken(entity, uses):
- fn = checker.findEntity(entity).filename
- anchor = '[[{}]]'.format(entity)
- locations = ', '.join((toNameAndLine(context, root_path=checker.root_path)
- for context in uses))
- return (fn, anchor, locations)
- printTabulated((makeRowOfBroken(entity, uses)
- for entity, uses in sorted(broken.items())),
- headers=['Include File', 'Anchor in lieu of include', 'Links to this entity'])
-
- def outputMissingIncludes(self, checker, missing):
- """Output a table of missing includes.
-
- Called by self.outputBrokenAndMissing() if requested.
- """
- missing = list(sorted(missing))
- if not missing:
- # Exit if none
- return
- print(
- 'Missing, but unreferenced, API includes/anchors - potentially not-documented entities:')
-
- def makeRowOfMissing(entity):
- fn = checker.findEntity(entity).filename
- anchor = '[[{}]]'.format(entity)
- return (fn, anchor)
- printTabulated((makeRowOfMissing(entity) for entity in missing),
- headers=['Include File', 'Anchor in lieu of include'])
-
- def outputMessage(self, msg):
- """Output a Message, with highlighted range and replacement, if appropriate."""
- highlightStart, highlightEnd = getHighlightedRange(msg.context)
-
- if '\n' in msg.context.filename:
- # This is a multi-line string "filename".
- # Extra blank line and delimiter line for readability:
- print()
- print('--------------------------------------------------------------------')
-
- fileAndLine = colored('{}:'.format(
- self.formatBrief(msg.context)), attrs=['bold'])
-
- headingSize = len('{context}: {mtype}: '.format(
- context=self.formatBrief(msg.context),
- mtype=self.formatBrief(msg.message_type, False)))
- indent = ' ' * headingSize
- printedHeading = False
-
- lines = msg.message[:]
- if msg.see_also:
- lines.append('See also:')
- lines.extend((' {}'.format(self.formatBrief(see))
- for see in msg.see_also))
-
- if msg.fix:
- lines.append('Note: Auto-fix available')
-
- for line in msg.message:
- if not printedHeading:
- scriptloc = ''
- if msg.script_location and self.show_script_location:
- scriptloc = ', ' + msg.script_location
- print('{fileLine} {mtype} {msg} (-{arg}{loc})'.format(
- fileLine=fileAndLine, mtype=msg.message_type.formattedWithColon(),
- msg=colored(line, attrs=['bold']), arg=msg.message_id.enable_arg(), loc=scriptloc))
- printedHeading = True
- else:
- print(colored(indent + line, attrs=['bold']))
-
- if len(msg.message) > 1:
- # extra blank line after multiline message
- print('')
-
- start, end = getInterestedRange(msg.context)
- printLineSubsetWithHighlighting(
- msg.context.line,
- start, end,
- highlightStart, highlightEnd,
- replacement=msg.replacement)
-
- def outputFallback(self, obj):
- """Output by calling print."""
- print(obj)
-
- ###
- # Format methods: these all return a string.
- def formatFilename(self, fn, _with_color=True):
- """Format a local filename, as a relative path if possible."""
- return self.getRelativeFilename(fn)
-
- def formatMessageTypeBrief(self, message_type, with_color=True):
- """Format a message type briefly, applying color if desired and possible.
-
- Delegates to the superclass if not formatting with color.
- """
- if with_color:
- return message_type.formattedWithColon()
- return super(ConsolePrinter, self).formatMessageTypeBrief(
- message_type, with_color)
diff --git a/codegen/vulkan/scripts/spec_tools/data_structures.py b/codegen/vulkan/scripts/spec_tools/data_structures.py
deleted file mode 100644
index f2808cf1..00000000
--- a/codegen/vulkan/scripts/spec_tools/data_structures.py
+++ /dev/null
@@ -1,58 +0,0 @@
-#!/usr/bin/python3 -i
-#
-# Copyright (c) 2019 Collabora, Ltd.
-#
-# SPDX-License-Identifier: Apache-2.0
-#
-# Author(s): Ryan Pavlik <ryan.pavlik@collabora.com>
-"""Provides general-purpose data structures."""
-
-
-class DictOfStringSets:
- """A dictionary where the values are sets of strings.
-
- Has some convenience functions to allow easier maintenance via
- the .add method."""
-
- def __init__(self, d=None):
- self.d = {}
- if d:
- for k, v in d.items():
- self.add(k, v)
-
- def __getitem__(self, k):
- return self.d[k]
-
- def __contains__(self, k):
- return k in self.d
-
- def get(self, k, default=None):
- return self.d.get(k, default)
-
- def get_dict(self):
- return self.d
-
- def items(self):
- """Return an iterator like dict().items()."""
- return self.d.items()
-
- def keys(self):
- """Return an iterator over keys."""
- return self.d.keys()
-
- def values(self):
- """Return an iterator over values."""
- return self.d.values()
-
- def add_key(self, k):
- """Ensure the set for the given key exists."""
- if k not in self.d:
- self.d[k] = set()
-
- def add(self, k, v):
- self.add_key(k)
- if isinstance(v, str):
- v = (v, )
- if not isinstance(v, set):
- v = set(v)
- self.d[k].update(v)
diff --git a/codegen/vulkan/scripts/spec_tools/entity_db.py b/codegen/vulkan/scripts/spec_tools/entity_db.py
deleted file mode 100644
index 9a8dcfb1..00000000
--- a/codegen/vulkan/scripts/spec_tools/entity_db.py
+++ /dev/null
@@ -1,659 +0,0 @@
-"""Provides EntityDatabase, a class that keeps track of spec-defined entities and associated macros."""
-
-# Copyright (c) 2018-2019 Collabora, Ltd.
-#
-# SPDX-License-Identifier: Apache-2.0
-#
-# Author(s): Ryan Pavlik <ryan.pavlik@collabora.com>
-
-from abc import ABC, abstractmethod
-
-from .shared import (CATEGORIES_WITH_VALIDITY, EXTENSION_CATEGORY,
- NON_EXISTENT_MACROS, EntityData)
-from .util import getElemName
-
-
-def _entityToDict(data):
- return {
- 'macro': data.macro,
- 'filename': data.filename,
- 'category': data.category,
- 'directory': data.directory
- }
-
-
-class EntityDatabase(ABC):
- """Parsed and processed information from the registry XML.
-
- Must be subclasses for each specific API.
- """
-
- ###
- # Methods that must be implemented in subclasses.
- ###
- @abstractmethod
- def makeRegistry(self):
- """Return a Registry object that has already had loadFile() and parseTree() called.
-
- Called only once during construction.
- """
- raise NotImplementedError
-
- @abstractmethod
- def getNamePrefix(self):
- """Return the (two-letter) prefix of all entity names for this API.
-
- Called only once during construction.
- """
- raise NotImplementedError
-
- @abstractmethod
- def getPlatformRequires(self):
- """Return the 'requires' string associated with external/platform definitions.
-
- This is the string found in the requires attribute of the XML for entities that
- are externally defined in a platform include file, like the question marks in:
-
- <type requires="???" name="int8_t"/>
-
- In Vulkan, this is 'vk_platform'.
-
- Called only once during construction.
- """
- raise NotImplementedError
-
- ###
- # Methods that it is optional to **override**
- ###
- def getSystemTypes(self):
- """Return an enumerable of strings that name system types.
-
- System types use the macro `code`, and they do not generate API/validity includes.
-
- Called only once during construction.
- """
- return []
-
- def getGeneratedDirs(self):
- """Return a sequence of strings that are the subdirectories of generates API includes.
-
- Called only once during construction.
- """
- return ['basetypes',
- 'defines',
- 'enums',
- 'flags',
- 'funcpointers',
- 'handles',
- 'protos',
- 'structs']
-
- def populateMacros(self):
- """Perform API-specific calls, if any, to self.addMacro() and self.addMacros().
-
- It is recommended to implement/override this and call
- self.addMacros(..., ..., [..., "flags"]),
- since the base implementation, in _basicPopulateMacros(),
- does not add any macros as pertaining to the category "flags".
-
- Called only once during construction.
- """
- pass
-
- def populateEntities(self):
- """Perform API-specific calls, if any, to self.addEntity()."""
- pass
-
- def getEntitiesWithoutValidity(self):
- """Return an enumerable of entity names that do not generate validity includes."""
- return [self.mixed_case_name_prefix +
- x for x in ['BaseInStructure', 'BaseOutStructure']]
-
- def getExclusionSet(self):
- """Return a set of "support=" attribute strings that should not be included in the database.
-
- Called only during construction."""
- return set(('disabled',))
-
- ###
- # Methods that it is optional to **extend**
- ###
- def handleType(self, name, info, requires):
- """Add entities, if appropriate, for an item in registry.typedict.
-
- Called at construction for every name, info in registry.typedict.items()
- not immediately skipped,
- to perform the correct associated addEntity() call, if applicable.
- The contents of the requires attribute, if any, is passed in requires.
-
- May be extended by API-specific code to handle some cases preferentially,
- then calling the super implementation to handle the rest.
- """
- if requires == self.platform_requires:
- # Ah, no, don't skip this, it's just in the platform header file.
- # TODO are these code or basetype?
- self.addEntity(name, 'code', elem=info.elem, generates=False)
- return
-
- protect = info.elem.get('protect')
- if protect:
- self.addEntity(protect, 'dlink',
- category='configdefines', generates=False)
-
- alias = info.elem.get('alias')
- if alias:
- self.addAlias(name, alias)
-
- cat = info.elem.get('category')
- if cat == 'struct':
- self.addEntity(name, 'slink', elem=info.elem)
-
- elif cat == 'union':
- # TODO: is this right?
- self.addEntity(name, 'slink', elem=info.elem)
-
- elif cat == 'enum':
- self.addEntity(
- name, 'elink', elem=info.elem)
-
- elif cat == 'handle':
- self.addEntity(name, 'slink', elem=info.elem,
- category='handles')
-
- elif cat == 'bitmask':
- self.addEntity(
- name, 'tlink', elem=info.elem, category='flags')
-
- elif cat == 'basetype':
- self.addEntity(name, 'basetype',
- elem=info.elem)
-
- elif cat == 'define':
- self.addEntity(name, 'dlink', elem=info.elem)
-
- elif cat == 'funcpointer':
- self.addEntity(name, 'tlink', elem=info.elem)
-
- elif cat == 'include':
- # skip
- return
-
- elif cat is None:
- self.addEntity(name, 'code', elem=info.elem, generates=False)
-
- else:
- raise RuntimeError('unrecognized category {}'.format(cat))
-
- def handleCommand(self, name, info):
- """Add entities, if appropriate, for an item in registry.cmddict.
-
- Called at construction for every name, info in registry.cmddict.items().
- Calls self.addEntity() accordingly.
- """
- self.addEntity(name, 'flink', elem=info.elem,
- category='commands', directory='protos')
-
- def handleExtension(self, name, info):
- """Add entities, if appropriate, for an item in registry.extdict.
-
- Called at construction for every name, info in registry.extdict.items().
- Calls self.addEntity() accordingly.
- """
- if info.supported in self._supportExclusionSet:
- # Don't populate with disabled extensions.
- return
-
- # Only get the protect strings and name from extensions
-
- self.addEntity(name, None, category=EXTENSION_CATEGORY,
- generates=False)
- protect = info.elem.get('protect')
- if protect:
- self.addEntity(protect, 'dlink',
- category='configdefines', generates=False)
-
- def handleEnumValue(self, name, info):
- """Add entities, if appropriate, for an item in registry.enumdict.
-
- Called at construction for every name, info in registry.enumdict.items().
- Calls self.addEntity() accordingly.
- """
- self.addEntity(name, 'ename', elem=info.elem,
- category='enumvalues', generates=False)
-
- ###
- # END of methods intended to be implemented, overridden, or extended in child classes!
- ###
-
- ###
- # Accessors
- ###
- def findMacroAndEntity(self, macro, entity):
- """Look up EntityData by macro and entity pair.
-
- Does **not** resolve aliases."""
- return self._byMacroAndEntity.get((macro, entity))
-
- def findEntity(self, entity):
- """Look up EntityData by entity name (case-sensitive).
-
- If it fails, it will try resolving aliases.
- """
- result = self._byEntity.get(entity)
- if result:
- return result
-
- alias_set = self._aliasSetsByEntity.get(entity)
- if alias_set:
- for alias in alias_set:
- if alias in self._byEntity:
- return self.findEntity(alias)
-
- assert(not "Alias without main entry!")
-
- return None
-
- def findEntityCaseInsensitive(self, entity):
- """Look up EntityData by entity name (case-insensitive).
-
- Does **not** resolve aliases."""
- return self._byLowercaseEntity.get(entity.lower())
-
- def getMemberElems(self, commandOrStruct):
- """Given a command or struct name, retrieve the ETree elements for each member/param.
-
- Returns None if the entity is not found or doesn't have members/params.
- """
- data = self.findEntity(commandOrStruct)
-
- if not data:
- return None
- if data.elem is None:
- return None
- if data.macro == 'slink':
- tag = 'member'
- else:
- tag = 'param'
- return data.elem.findall('.//{}'.format(tag))
-
- def getMemberNames(self, commandOrStruct):
- """Given a command or struct name, retrieve the names of each member/param.
-
- Returns an empty list if the entity is not found or doesn't have members/params.
- """
- members = self.getMemberElems(commandOrStruct)
- if not members:
- return []
- ret = []
- for member in members:
- name_tag = member.find('name')
- if name_tag:
- ret.append(name_tag.text)
- return ret
-
- def getEntityJson(self):
- """Dump the internal entity dictionary to JSON for debugging."""
- import json
- d = {entity: _entityToDict(data)
- for entity, data in self._byEntity.items()}
- return json.dumps(d, sort_keys=True, indent=4)
-
- def entityHasValidity(self, entity):
- """Estimate if we expect to see a validity include for an entity name.
-
- Returns None if the entity name is not known,
- otherwise a boolean: True if a validity include is expected.
-
- Related to Generator.isStructAlwaysValid.
- """
- data = self.findEntity(entity)
- if not data:
- return None
-
- if entity in self.entities_without_validity:
- return False
-
- if data.category == 'protos':
- # All protos have validity
- return True
-
- if data.category not in CATEGORIES_WITH_VALIDITY:
- return False
-
- # Handle structs here.
- members = self.getMemberElems(entity)
- if not members:
- return None
- for member in members:
- member_name = getElemName(member)
- member_type = member.find('type').text
- member_category = member.get('category')
-
- if member_name in ('next', 'type'):
- return True
-
- if member_type in ('void', 'char'):
- return True
-
- if member.get('noautovalidity'):
- # Not generating validity for this member, skip it
- continue
-
- if member.get('len'):
- # Array
- return True
-
- typetail = member.find('type').tail
- if typetail and '*' in typetail:
- # Pointer
- return True
-
- if member_category in ('handle', 'enum', 'bitmask'):
- return True
-
- if member.get('category') in ('struct', 'union') \
- and self.entityHasValidity(member_type):
- # struct or union member - recurse
- return True
-
- # Got this far - no validity needed
- return False
-
- def entityGenerates(self, entity_name):
- """Return True if the named entity generates include file(s)."""
- return entity_name in self._generating_entities
-
- @property
- def generating_entities(self):
- """Return a sequence of all generating entity names."""
- return self._generating_entities.keys()
-
- def shouldBeRecognized(self, macro, entity_name):
- """Determine, based on the macro and the name provided, if we should expect to recognize the entity.
-
- True if it is linked. Specific APIs may also provide additional cases where it is True."""
- return self.isLinkedMacro(macro)
-
- def likelyRecognizedEntity(self, entity_name):
- """Guess (based on name prefix alone) if an entity is likely to be recognized."""
- return entity_name.lower().startswith(self.name_prefix)
-
- def isLinkedMacro(self, macro):
- """Identify if a macro is considered a "linked" macro."""
- return macro in self._linkedMacros
-
- def isValidMacro(self, macro):
- """Identify if a macro is known and valid."""
- if macro not in self._categoriesByMacro:
- return False
-
- return macro not in NON_EXISTENT_MACROS
-
- def getCategoriesForMacro(self, macro):
- """Identify the categories associated with a (known, valid) macro."""
- if macro in self._categoriesByMacro:
- return self._categoriesByMacro[macro]
- return None
-
- def areAliases(self, first_entity_name, second_entity_name):
- """Return true if the two entity names are equivalent (aliases of each other)."""
- alias_set = self._aliasSetsByEntity.get(first_entity_name)
- if not alias_set:
- # If this assert fails, we have goofed in addAlias
- assert(second_entity_name not in self._aliasSetsByEntity)
-
- return False
-
- return second_entity_name in alias_set
-
- @property
- def macros(self):
- """Return the collection of all known entity-related markup macros."""
- return self._categoriesByMacro.keys()
-
- ###
- # Methods only used during initial setup/population of this data structure
- ###
- def addMacro(self, macro, categories, link=False):
- """Add a single markup macro to the collection of categories by macro.
-
- Also adds the macro to the set of linked macros if link=True.
-
- If a macro has already been supplied to a call, later calls for that macro have no effect.
- """
- if macro in self._categoriesByMacro:
- return
- self._categoriesByMacro[macro] = categories
- if link:
- self._linkedMacros.add(macro)
-
- def addMacros(self, letter, macroTypes, categories):
- """Add markup macros associated with a leading letter to the collection of categories by macro.
-
- Also, those macros created using 'link' in macroTypes will also be added to the set of linked macros.
-
- Basically automates a number of calls to addMacro().
- """
- for macroType in macroTypes:
- macro = letter + macroType
- self.addMacro(macro, categories, link=(macroType == 'link'))
-
- def addAlias(self, entityName, aliasName):
- """Record that entityName is an alias for aliasName."""
- # See if we already have something with this as the alias.
- alias_set = self._aliasSetsByEntity.get(aliasName)
- other_alias_set = self._aliasSetsByEntity.get(entityName)
- if alias_set and other_alias_set:
- # If this fails, we need to merge sets and update.
- assert(alias_set is other_alias_set)
-
- if not alias_set:
- # Try looking by the other name.
- alias_set = other_alias_set
-
- if not alias_set:
- # Nope, this is a new set.
- alias_set = set()
- self._aliasSets.append(alias_set)
-
- # Add both names to the set
- alias_set.add(entityName)
- alias_set.add(aliasName)
-
- # Associate the set with each name
- self._aliasSetsByEntity[aliasName] = alias_set
- self._aliasSetsByEntity[entityName] = alias_set
-
- def addEntity(self, entityName, macro, category=None, elem=None,
- generates=None, directory=None, filename=None):
- """Add an entity (command, structure type, enum, enum value, etc) in the database.
-
- If an entityName has already been supplied to a call, later calls for that entityName have no effect.
-
- Arguments:
- entityName -- the name of the entity.
- macro -- the macro (without the trailing colon) that should be used to refer to this entity.
-
- Optional keyword arguments:
- category -- If not manually specified, looked up based on the macro.
- elem -- The ETree element associated with the entity in the registry XML.
- generates -- Indicates whether this entity generates api and validity include files.
- Default depends on directory (or if not specified, category).
- directory -- The directory that include files (under api/ and validity/) are generated in.
- If not specified (and generates is True), the default is the same as the category,
- which is almost always correct.
- filename -- The relative filename (under api/ or validity/) where includes are generated for this.
- This only matters if generates is True (default). If not specified and generates is True,
- one will be generated based on directory and entityName.
- """
- # Probably dealt with in handleType(), but just in case it wasn't.
- if elem is not None:
- alias = elem.get('alias')
- if alias:
- self.addAlias(entityName, alias)
-
- if entityName in self._byEntity:
- # skip if already recorded.
- return
-
- # Look up category based on the macro, if category isn't specified.
- if category is None:
- category = self._categoriesByMacro.get(macro)[0]
-
- if generates is None:
- potential_dir = directory or category
- generates = potential_dir in self._generated_dirs
-
- # If directory isn't specified and this entity generates,
- # the directory is the same as the category.
- if directory is None and generates:
- directory = category
-
- # Don't generate a filename if this entity doesn't generate includes.
- if filename is None and generates:
- filename = '{}/{}.txt'.format(directory, entityName)
-
- data = EntityData(
- entity=entityName,
- macro=macro,
- elem=elem,
- filename=filename,
- category=category,
- directory=directory
- )
- if entityName.lower() not in self._byLowercaseEntity:
- self._byLowercaseEntity[entityName.lower()] = []
-
- self._byEntity[entityName] = data
- self._byLowercaseEntity[entityName.lower()].append(data)
- self._byMacroAndEntity[(macro, entityName)] = data
- if generates and filename is not None:
- self._generating_entities[entityName] = data
-
- def __init__(self):
- """Constructor: Do not extend or override.
-
- Changing the behavior of other parts of this logic should be done by
- implementing, extending, or overriding (as documented):
-
- - Implement makeRegistry()
- - Implement getNamePrefix()
- - Implement getPlatformRequires()
- - Override getSystemTypes()
- - Override populateMacros()
- - Override populateEntities()
- - Extend handleType()
- - Extend handleCommand()
- - Extend handleExtension()
- - Extend handleEnumValue()
- """
- # Internal data that we don't want consumers of the class touching for fear of
- # breaking invariants
- self._byEntity = {}
- self._byLowercaseEntity = {}
- self._byMacroAndEntity = {}
- self._categoriesByMacro = {}
- self._linkedMacros = set()
- self._aliasSetsByEntity = {}
- self._aliasSets = []
-
- self._registry = None
-
- # Retrieve from subclass, if overridden, then store locally.
- self._supportExclusionSet = set(self.getExclusionSet())
-
- # Entities that get a generated/api/category/entity.txt file.
- self._generating_entities = {}
-
- # Name prefix members
- self.name_prefix = self.getNamePrefix().lower()
- self.mixed_case_name_prefix = self.name_prefix[:1].upper(
- ) + self.name_prefix[1:]
- # Regex string for the name prefix that is case-insensitive.
- self.case_insensitive_name_prefix_pattern = ''.join(
- ('[{}{}]'.format(c.upper(), c) for c in self.name_prefix))
-
- self.platform_requires = self.getPlatformRequires()
-
- self._generated_dirs = set(self.getGeneratedDirs())
-
- # Note: Default impl requires self.mixed_case_name_prefix
- self.entities_without_validity = set(self.getEntitiesWithoutValidity())
-
- # TODO: Where should flags actually go? Not mentioned in the style guide.
- # TODO: What about flag wildcards? There are a few such uses...
-
- # Abstract method: subclass must implement to define macros for flags
- self.populateMacros()
-
- # Now, do default macro population
- self._basicPopulateMacros()
-
- # Abstract method: subclass must implement to add any "not from the registry" (and not system type)
- # entities
- self.populateEntities()
-
- # Now, do default entity population
- self._basicPopulateEntities(self.registry)
-
- ###
- # Methods only used internally during initial setup/population of this data structure
- ###
- @property
- def registry(self):
- """Return a Registry."""
- if not self._registry:
- self._registry = self.makeRegistry()
- return self._registry
-
- def _basicPopulateMacros(self):
- """Contains calls to self.addMacro() and self.addMacros().
-
- If you need to change any of these, do so in your override of populateMacros(),
- which will be called first.
- """
- self.addMacro('basetype', ['basetypes'])
- self.addMacro('code', ['code'])
- self.addMacros('f', ['link', 'name', 'text'], ['protos'])
- self.addMacros('s', ['link', 'name', 'text'], ['structs', 'handles'])
- self.addMacros('e', ['link', 'name', 'text'], ['enums'])
- self.addMacros('p', ['name', 'text'], ['parameter', 'member'])
- self.addMacros('t', ['link', 'name'], ['funcpointers'])
- self.addMacros('d', ['link', 'name'], ['defines', 'configdefines'])
-
- for macro in NON_EXISTENT_MACROS:
- # Still search for them
- self.addMacro(macro, None)
-
- def _basicPopulateEntities(self, registry):
- """Contains typical calls to self.addEntity().
-
- If you need to change any of these, do so in your override of populateEntities(),
- which will be called first.
- """
- system_types = set(self.getSystemTypes())
- for t in system_types:
- self.addEntity(t, 'code', generates=False)
-
- for name, info in registry.typedict.items():
- if name in system_types:
- # We already added these.
- continue
-
- requires = info.elem.get('requires')
-
- if requires and not requires.lower().startswith(self.name_prefix):
- # This is an externally-defined type, will skip it.
- continue
-
- # OK, we might actually add an entity here
- self.handleType(name=name, info=info, requires=requires)
-
- for name, info in registry.enumdict.items():
- self.handleEnumValue(name, info)
-
- for name, info in registry.cmddict.items():
- self.handleCommand(name, info)
-
- for name, info in registry.extdict.items():
- self.handleExtension(name, info)
diff --git a/codegen/vulkan/scripts/spec_tools/file_process.py b/codegen/vulkan/scripts/spec_tools/file_process.py
deleted file mode 100644
index f0d4c608..00000000
--- a/codegen/vulkan/scripts/spec_tools/file_process.py
+++ /dev/null
@@ -1,119 +0,0 @@
-#!/usr/bin/python3
-#
-# Copyright (c) 2018-2019 Collabora, Ltd.
-#
-# SPDX-License-Identifier: Apache-2.0
-#
-# Author(s): Ryan Pavlik <ryan.pavlik@collabora.com>
-"Utilities for processing files."
-
-from pathlib import Path
-
-
-class LinewiseFileProcessor:
- """A base class for code that processes an input file (or file handle) one line at a time."""
-
- def __init__(self):
- self._lines = []
- self._line_num = 0
- self._next_line = None
- self._line = ''
- self._filename = Path()
-
- @property
- def filename(self):
- """The Path object of the currently processed file"""
- return self._filename
-
- @property
- def relative_filename(self):
- """The current file's Path relative to the current working directory"""
- return self.filename.relative_to(Path('.').resolve())
-
- @property
- def line(self):
- """The current line, including any trailing whitespace and the line ending."""
- return self._line
-
- @property
- def line_number(self):
- """Get 1-indexed line number."""
- return self._line_num
-
- @property
- def line_rstripped(self):
- """The current line without any trailing whitespace."""
- if self.line is None:
- return None
- return self.line.rstrip()
-
- @property
- def trailing_whitespace(self):
- """The trailing whitespace of the current line that gets removed when accessing rstrippedLine"""
- non_whitespace_length = len(self.line_rstripped)
- return self.line[non_whitespace_length:]
-
- @property
- def next_line(self):
- """Peek at the next line, if any."""
- return self._next_line
-
- @property
- def next_line_rstripped(self):
- """Peek at the next line, if any, without any trailing whitespace."""
- if self.next_line is None:
- return None
- return self.next_line.rstrip()
-
- def get_preceding_line(self, relative_index=-1):
- """Retrieve the line at an line number at the given relative index, if one exists. Returns None if there is no line there."""
- if relative_index >= 0:
- raise RuntimeError(
- 'relativeIndex must be negative, to retrieve a preceding line.')
- if relative_index + self.line_number <= 0:
- # There is no line at this index
- return None
- return self._lines[self.line_number + relative_index - 1]
-
- def get_preceding_lines(self, num):
- """Get *up to* the preceding num lines. Fewer may be returned if the requested number aren't available."""
- return self._lines[- (num + 1):-1]
-
- def process_line(self, line_num, line):
- """Implement in your subclass to handle each new line."""
- raise NotImplementedError
-
- def _process_file_handle(self, file_handle):
- # These are so we can process one line earlier than we're actually iterating thru.
- processing_line_num = None
- processing_line = None
-
- def do_process_line():
- self._line_num = processing_line_num
- self._line = processing_line
- if processing_line is not None:
- self._lines.append(processing_line)
- self.process_line(processing_line_num, processing_line)
-
- for line_num, line in enumerate(file_handle, 1):
- self._next_line = line
- do_process_line()
- processing_line_num = line_num
- processing_line = line
-
- # Finally process the left-over line
- self._next_line = None
- do_process_line()
-
- def process_file(self, filename, file_handle=None):
- """Main entry point - call with a filename and optionally the file handle to read from."""
- if isinstance(filename, str):
- filename = Path(filename).resolve()
-
- self._filename = filename
-
- if file_handle:
- self._process_file_handle(file_handle)
- else:
- with self._filename.open('r', encoding='utf-8') as f:
- self._process_file_handle(f)
diff --git a/codegen/vulkan/scripts/spec_tools/html_printer.py b/codegen/vulkan/scripts/spec_tools/html_printer.py
deleted file mode 100644
index eb1df406..00000000
--- a/codegen/vulkan/scripts/spec_tools/html_printer.py
+++ /dev/null
@@ -1,436 +0,0 @@
-"""Defines HTMLPrinter, a BasePrinter subclass for a single-page HTML results file."""
-
-# Copyright (c) 2018-2019 Collabora, Ltd.
-#
-# SPDX-License-Identifier: Apache-2.0
-#
-# Author(s): Ryan Pavlik <ryan.pavlik@collabora.com>
-
-import html
-import re
-from collections import namedtuple
-
-from .base_printer import BasePrinter, getColumn
-from .shared import (MessageContext, MessageType, generateInclude,
- getHighlightedRange)
-
-# Bootstrap styles (for constructing CSS class names) associated with MessageType values.
-MESSAGE_TYPE_STYLES = {
- MessageType.ERROR: 'danger',
- MessageType.WARNING: 'warning',
- MessageType.NOTE: 'secondary'
-}
-
-
-# HTML Entity for a little emoji-icon associated with MessageType values.
-MESSAGE_TYPE_ICONS = {
- MessageType.ERROR: '&#x2297;', # makeIcon('times-circle'),
- MessageType.WARNING: '&#9888;', # makeIcon('exclamation-triangle'),
- MessageType.NOTE: '&#x2139;' # makeIcon('info-circle')
-}
-
-LINK_ICON = '&#128279;' # link icon
-
-
-class HTMLPrinter(BasePrinter):
- """Implementation of BasePrinter for generating diagnostic reports in HTML format.
-
- Generates a single file containing neatly-formatted messages.
-
- The HTML file loads Bootstrap 4 as well as 'prism' syntax highlighting from CDN.
- """
-
- def __init__(self, filename):
- """Construct by opening the file."""
- self.f = open(filename, 'w', encoding='utf-8')
- self.f.write("""<!doctype html>
- <html lang="en"><head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
- <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.15.0/themes/prism.min.css" integrity="sha256-N1K43s+8twRa+tzzoF3V8EgssdDiZ6kd9r8Rfgg8kZU=" crossorigin="anonymous" />
- <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.15.0/plugins/line-numbers/prism-line-numbers.min.css" integrity="sha256-Afz2ZJtXw+OuaPX10lZHY7fN1+FuTE/KdCs+j7WZTGc=" crossorigin="anonymous" />
- <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.15.0/plugins/line-highlight/prism-line-highlight.min.css" integrity="sha256-FFGTaA49ZxFi2oUiWjxtTBqoda+t1Uw8GffYkdt9aco=" crossorigin="anonymous" />
- <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
- <style>
- pre {
- overflow-x: scroll;
- white-space: nowrap;
- }
- </style>
- <title>check_spec_links results</title>
- </head>
- <body>
- <div class="container">
- <h1><code>check_spec_links.py</code> Scan Results</h1>
- """)
- #
- self.filenameTransformer = re.compile(r'[^\w]+')
- self.fileRange = {}
- self.fileLines = {}
- self.backLink = namedtuple(
- 'BackLink', ['lineNum', 'col', 'end_col', 'target', 'tooltip', 'message_type'])
- self.fileBackLinks = {}
-
- self.nextAnchor = 0
- super().__init__()
-
- def close(self):
- """Write the tail end of the file and close it."""
- self.f.write("""
- </div>
- <script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.15.0/prism.min.js" integrity="sha256-jc6y1s/Y+F+78EgCT/lI2lyU7ys+PFYrRSJ6q8/R8+o=" crossorigin="anonymous"></script>
- <script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.15.0/plugins/keep-markup/prism-keep-markup.min.js" integrity="sha256-mP5i3m+wTxxOYkH+zXnKIG5oJhXLIPQYoiicCV1LpkM=" crossorigin="anonymous"></script>
- <script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.15.0/components/prism-asciidoc.min.js" integrity="sha256-NHPE1p3VBIdXkmfbkf/S0hMA6b4Ar4TAAUlR+Rlogoc=" crossorigin="anonymous"></script>
- <script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.15.0/plugins/line-numbers/prism-line-numbers.min.js" integrity="sha256-JfF9MVfGdRUxzT4pecjOZq6B+F5EylLQLwcQNg+6+Qk=" crossorigin="anonymous"></script>
- <script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.15.0/plugins/line-highlight/prism-line-highlight.min.js" integrity="sha256-DEl9ZQE+lseY13oqm2+mlUr+sVI18LG813P+kzzIm8o=" crossorigin="anonymous"></script>
- <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.slim.min.js" integrity="sha256-3edrmyuQ0w65f8gfBsqowzjJe2iM6n0nKciPUp8y+7E=" crossorigin="anonymous"></script>
- <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.6/esm/popper.min.js" integrity="sha256-T0gPN+ySsI9ixTd/1ciLl2gjdLJLfECKvkQjJn98lOs=" crossorigin="anonymous"></script>
- <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
- <script>
- $(function () {
- $('[data-toggle="tooltip"]').tooltip();
- function autoExpand() {
- var hash = window.location.hash;
- if (!hash) {
- return;
- }
- $(hash).parents().filter('.collapse').collapse('show');
- }
- window.addEventListener('hashchange', autoExpand);
- $(document).ready(autoExpand);
- $('.accordion').on('shown.bs.collapse', function(e) {
- e.target.parentNode.scrollIntoView();
- })
- })
- </script>
- </body></html>
- """)
- self.f.close()
-
- ###
- # Output methods: these all write to the HTML file.
- def outputResults(self, checker, broken_links=True,
- missing_includes=False):
- """Output the full results of a checker run.
-
- Includes the diagnostics, broken links (if desired),
- missing includes (if desired), and excerpts of all files with diagnostics.
- """
- self.output(checker)
- self.outputBrokenAndMissing(
- checker, broken_links=broken_links, missing_includes=missing_includes)
-
- self.f.write("""
- <div class="container">
- <h2>Excerpts of referenced files</h2>""")
- for fn in self.fileRange:
- self.outputFileExcerpt(fn)
- self.f.write('</div><!-- .container -->\n')
-
- def outputChecker(self, checker):
- """Output the contents of a MacroChecker object.
-
- Starts and ends the accordion populated by outputCheckerFile().
- """
- self.f.write(
- '<div class="container"><h2>Per-File Warnings and Errors</h2>\n')
- self.f.write('<div class="accordion" id="fileAccordion">\n')
- super(HTMLPrinter, self).outputChecker(checker)
- self.f.write("""</div><!-- #fileAccordion -->
- </div><!-- .container -->\n""")
-
- def outputCheckerFile(self, fileChecker):
- """Output the contents of a MacroCheckerFile object.
-
- Stashes the lines of the file for later excerpts,
- and outputs any diagnostics in an accordion card.
- """
- # Save lines for later
- self.fileLines[fileChecker.filename] = fileChecker.lines
-
- if not fileChecker.numDiagnostics():
- return
-
- self.f.write("""
- <div class="card">
- <div class="card-header" id="{id}-file-heading">
- <div class="row">
- <div class="col">
- <button data-target="#collapse-{id}" class="btn btn-link btn-primary mb-0 collapsed" type="button" data-toggle="collapse" aria-expanded="false" aria-controls="collapse-{id}">
- {relativefn}
- </button>
- </div>
- """.format(id=self.makeIdentifierFromFilename(fileChecker.filename), relativefn=html.escape(self.getRelativeFilename(fileChecker.filename))))
- self.f.write('<div class="col-1">')
- warnings = fileChecker.numMessagesOfType(MessageType.WARNING)
- if warnings > 0:
- self.f.write("""<span class="badge badge-warning" data-toggle="tooltip" title="{num} warnings in this file">
- {icon}
- {num}<span class="sr-only"> warnings</span></span>""".format(num=warnings, icon=MESSAGE_TYPE_ICONS[MessageType.WARNING]))
- self.f.write('</div>\n<div class="col-1">')
- errors = fileChecker.numMessagesOfType(MessageType.ERROR)
- if errors > 0:
- self.f.write("""<span class="badge badge-danger" data-toggle="tooltip" title="{num} errors in this file">
- {icon}
- {num}<span class="sr-only"> errors</span></span>""".format(num=errors, icon=MESSAGE_TYPE_ICONS[MessageType.ERROR]))
- self.f.write("""
- </div><!-- .col-1 -->
- </div><!-- .row -->
- </div><!-- .card-header -->
- <div id="collapse-{id}" class="collapse" aria-labelledby="{id}-file-heading" data-parent="#fileAccordion">
- <div class="card-body">
- """.format(id=self.makeIdentifierFromFilename(fileChecker.filename)))
- super(HTMLPrinter, self).outputCheckerFile(fileChecker)
-
- self.f.write("""
- </div><!-- .card-body -->
- </div><!-- .collapse -->
- </div><!-- .card -->
- <!-- ..................................... -->
- """.format(id=self.makeIdentifierFromFilename(fileChecker.filename)))
-
- def outputMessage(self, msg):
- """Output a Message."""
- anchor = self.getUniqueAnchor()
-
- self.recordUsage(msg.context,
- linkBackTarget=anchor,
- linkBackTooltip='{}: {} [...]'.format(
- msg.message_type, msg.message[0]),
- linkBackType=msg.message_type)
-
- self.f.write("""
- <div class="card">
- <div class="card-body">
- <h5 class="card-header bg bg-{style}" id="{anchor}">{icon} {t} Line {lineNum}, Column {col} (-{arg})</h5>
- <p class="card-text">
- """.format(
- anchor=anchor,
- icon=MESSAGE_TYPE_ICONS[msg.message_type],
- style=MESSAGE_TYPE_STYLES[msg.message_type],
- t=self.formatBrief(msg.message_type),
- lineNum=msg.context.lineNum,
- col=getColumn(msg.context),
- arg=msg.message_id.enable_arg()))
- self.f.write(self.formatContext(msg.context))
- self.f.write('<br/>')
- for line in msg.message:
- self.f.write(html.escape(line))
- self.f.write('<br />\n')
- self.f.write('</p>\n')
- if msg.see_also:
- self.f.write('<p>See also:</p><ul>\n')
- for see in msg.see_also:
- if isinstance(see, MessageContext):
- self.f.write(
- '<li>{}</li>\n'.format(self.formatContext(see)))
- self.recordUsage(see,
- linkBackTarget=anchor,
- linkBackType=MessageType.NOTE,
- linkBackTooltip='see-also associated with {} at {}'.format(msg.message_type, self.formatContextBrief(see)))
- else:
- self.f.write('<li>{}</li>\n'.format(self.formatBrief(see)))
- self.f.write('</ul>')
- if msg.replacement is not None:
- self.f.write(
- '<div class="alert alert-primary">Hover the highlight text to view suggested replacement.</div>')
- if msg.fix is not None:
- self.f.write(
- '<div class="alert alert-info">Note: Auto-fix available.</div>')
- if msg.script_location:
- self.f.write(
- '<p>Message originated at <code>{}</code></p>'.format(msg.script_location))
- self.f.write('<pre class="line-numbers language-asciidoc" data-start="{}"><code>'.format(
- msg.context.lineNum))
- highlightStart, highlightEnd = getHighlightedRange(msg.context)
- self.f.write(html.escape(msg.context.line[:highlightStart]))
- self.f.write(
- '<span class="border border-{}"'.format(MESSAGE_TYPE_STYLES[msg.message_type]))
- if msg.replacement is not None:
- self.f.write(
- ' data-toggle="tooltip" title="{}"'.format(msg.replacement))
- self.f.write('>')
- self.f.write(html.escape(
- msg.context.line[highlightStart:highlightEnd]))
- self.f.write('</span>')
- self.f.write(html.escape(msg.context.line[highlightEnd:]))
- self.f.write('</code></pre></div></div>')
-
- def outputBrokenLinks(self, checker, broken):
- """Output a table of broken links.
-
- Called by self.outputBrokenAndMissing() if requested.
- """
- self.f.write("""
- <div class="container">
- <h2>Missing Referenced API Includes</h2>
- <p>Items here have been referenced by a linking macro, so these are all broken links in the spec!</p>
- <table class="table table-striped">
- <thead>
- <th scope="col">Add line to include this file</th>
- <th scope="col">or add this macro instead</th>
- <th scope="col">Links to this entity</th></thead>
- """)
-
- for entity_name, uses in sorted(broken.items()):
- category = checker.findEntity(entity_name).category
- anchor = self.getUniqueAnchor()
- asciidocAnchor = '[[{}]]'.format(entity_name)
- include = generateInclude(dir_traverse='../../generated/',
- generated_type='api',
- category=category,
- entity=entity_name)
- self.f.write("""
- <tr id={}>
- <td><code class="text-dark language-asciidoc">{}</code></td>
- <td><code class="text-dark">{}</code></td>
- <td><ul class="list-inline">
- """.format(anchor, include, asciidocAnchor))
- for context in uses:
- self.f.write(
- '<li class="list-inline-item">{}</li>'.format(self.formatContext(context, MessageType.NOTE)))
- self.recordUsage(
- context,
- linkBackTooltip='Link broken in spec: {} not seen'.format(
- include),
- linkBackTarget=anchor,
- linkBackType=MessageType.NOTE)
- self.f.write("""</ul></td></tr>""")
- self.f.write("""</table></div>""")
-
- def outputMissingIncludes(self, checker, missing):
- """Output a table of missing includes.
-
- Called by self.outputBrokenAndMissing() if requested.
- """
- self.f.write("""
- <div class="container">
- <h2>Missing Unreferenced API Includes</h2>
- <p>These items are expected to be generated in the spec build process, but aren't included.
- However, as they also are not referenced by any linking macros, they aren't broken links - at worst they are undocumented entities,
- at best they are errors in <code>check_spec_links.py</code> logic computing which entities get generated files.</p>
- <table class="table table-striped">
- <thead>
- <th scope="col">Add line to include this file</th>
- <th scope="col">or add this macro instead</th>
- """)
-
- for entity in sorted(missing):
- fn = checker.findEntity(entity).filename
- anchor = '[[{}]]'.format(entity)
- self.f.write("""
- <tr>
- <td><code class="text-dark">{filename}</code></td>
- <td><code class="text-dark">{anchor}</code></td>
- """.format(filename=fn, anchor=anchor))
- self.f.write("""</table></div>""")
-
- def outputFileExcerpt(self, filename):
- """Output a card containing an excerpt of a file, sufficient to show locations of all diagnostics plus some context.
-
- Called by self.outputResults().
- """
- self.f.write("""<div class="card">
- <div class="card-header" id="heading-{id}"><h5 class="mb-0">
- <button class="btn btn-link" type="button">
- {fn}
- </button></h5></div><!-- #heading-{id} -->
- <div class="card-body">
- """.format(id=self.makeIdentifierFromFilename(filename), fn=self.getRelativeFilename(filename)))
- lines = self.fileLines[filename]
- r = self.fileRange[filename]
- self.f.write("""<pre class="line-numbers language-asciidoc line-highlight" id="excerpt-{id}" data-start="{start}"><code>""".format(
- id=self.makeIdentifierFromFilename(filename),
- start=r.start))
- for lineNum, line in enumerate(
- lines[(r.start - 1):(r.stop - 1)], r.start):
- # self.f.write(line)
- lineLinks = [x for x in self.fileBackLinks[filename]
- if x.lineNum == lineNum]
- for col, char in enumerate(line):
- colLinks = (x for x in lineLinks if x.col == col)
- for link in colLinks:
- # TODO right now the syntax highlighting is interfering with the link! so the link-generation is commented out,
- # only generating the emoji icon.
-
- # self.f.write('<a href="#{target}" title="{title}" data-toggle="tooltip" data-container="body">{icon}'.format(
- # target=link.target, title=html.escape(link.tooltip),
- # icon=MESSAGE_TYPE_ICONS[link.message_type]))
- self.f.write(MESSAGE_TYPE_ICONS[link.message_type])
- self.f.write('<span class="sr-only">Cross reference: {t} {title}</span>'.format(
- title=html.escape(link.tooltip, False), t=link.message_type))
-
- # self.f.write('</a>')
-
- # Write the actual character
- self.f.write(html.escape(char))
- self.f.write('\n')
-
- self.f.write('</code></pre>')
- self.f.write('</div><!-- .card-body -->\n')
- self.f.write('</div><!-- .card -->\n')
-
- def outputFallback(self, obj):
- """Output some text in a general way."""
- self.f.write(obj)
-
- ###
- # Format method: return a string.
- def formatContext(self, context, message_type=None):
- """Format a message context in a verbose way."""
- if message_type is None:
- icon = LINK_ICON
- else:
- icon = MESSAGE_TYPE_ICONS[message_type]
- return 'In context: <a href="{href}">{icon}{relative}:{lineNum}:{col}</a>'.format(
- href=self.getAnchorLinkForContext(context),
- icon=icon,
- # id=self.makeIdentifierFromFilename(context.filename),
- relative=self.getRelativeFilename(context.filename),
- lineNum=context.lineNum,
- col=getColumn(context))
-
- ###
- # Internal methods: not mandated by parent class.
- def recordUsage(self, context, linkBackTooltip=None,
- linkBackTarget=None, linkBackType=MessageType.NOTE):
- """Internally record a 'usage' of something.
-
- Increases the range of lines that are included in the excerpts,
- and records back-links if appropriate.
- """
- BEFORE_CONTEXT = 6
- AFTER_CONTEXT = 3
- # Clamp because we need accurate start line number to make line number
- # display right
- start = max(1, context.lineNum - BEFORE_CONTEXT)
- stop = context.lineNum + AFTER_CONTEXT + 1
- if context.filename not in self.fileRange:
- self.fileRange[context.filename] = range(start, stop)
- self.fileBackLinks[context.filename] = []
- else:
- oldRange = self.fileRange[context.filename]
- self.fileRange[context.filename] = range(
- min(start, oldRange.start), max(stop, oldRange.stop))
-
- if linkBackTarget is not None:
- start_col, end_col = getHighlightedRange(context)
- self.fileBackLinks[context.filename].append(self.backLink(
- lineNum=context.lineNum, col=start_col, end_col=end_col,
- target=linkBackTarget, tooltip=linkBackTooltip,
- message_type=linkBackType))
-
- def makeIdentifierFromFilename(self, fn):
- """Compute an acceptable HTML anchor name from a filename."""
- return self.filenameTransformer.sub('_', self.getRelativeFilename(fn))
-
- def getAnchorLinkForContext(self, context):
- """Compute the anchor link to the excerpt for a MessageContext."""
- return '#excerpt-{}.{}'.format(
- self.makeIdentifierFromFilename(context.filename), context.lineNum)
-
- def getUniqueAnchor(self):
- """Create and return a new unique string usable as a link anchor."""
- anchor = 'anchor-{}'.format(self.nextAnchor)
- self.nextAnchor += 1
- return anchor
diff --git a/codegen/vulkan/scripts/spec_tools/macro_checker.py b/codegen/vulkan/scripts/spec_tools/macro_checker.py
deleted file mode 100644
index a8a75aa8..00000000
--- a/codegen/vulkan/scripts/spec_tools/macro_checker.py
+++ /dev/null
@@ -1,220 +0,0 @@
-"""Provides the MacroChecker class."""
-
-# Copyright (c) 2018-2019 Collabora, Ltd.
-#
-# SPDX-License-Identifier: Apache-2.0
-#
-# Author(s): Ryan Pavlik <ryan.pavlik@collabora.com>
-
-from io import StringIO
-import re
-
-
-class MacroChecker(object):
- """Perform and track checking of one or more files in an API spec.
-
- This does not necessarily need to be subclassed per-API: it is sufficiently
- parameterized in the constructor for expected usage.
- """
-
- def __init__(self, enabled_messages, entity_db,
- macro_checker_file_type, root_path):
- """Construct an object that tracks checking one or more files in an API spec.
-
- enabled_messages -- a set of MessageId that should be enabled.
- entity_db -- an object of a EntityDatabase subclass for this API.
- macro_checker_file_type -- Type to instantiate to create the right
- MacroCheckerFile subclass for this API.
- root_path -- A Path object for the root of this repository.
- """
- self.enabled_messages = enabled_messages
- self.entity_db = entity_db
- self.macro_checker_file_type = macro_checker_file_type
- self.root_path = root_path
-
- self.files = []
-
- self.refpages = set()
-
- # keys: entity names. values: MessageContext
- self.links = {}
- self.apiIncludes = {}
- self.validityIncludes = {}
- self.headings = {}
-
- # Regexes that are members because they depend on the name prefix.
-
- # apiPrefix, followed by some word characters or * as many times as desired,
- # NOT followed by >> and NOT preceded by one of the characters in that first character class.
- # (which distinguish "names being used somewhere other than prose").
- self.suspected_missing_macro_re = re.compile(
- r'\b(?<![-=:/[\.`+,])(?P<entity_name>{}[\w*]+)\b(?!>>)'.format(
- self.entity_db.case_insensitive_name_prefix_pattern)
- )
- self.heading_command_re = re.compile(
- r'=+ (?P<command>{}[\w]+)'.format(self.entity_db.name_prefix)
- )
-
- macros_pattern = '|'.join((re.escape(macro)
- for macro in self.entity_db.macros))
- # the "formatting" group is to strip matching */**/_/__
- # surrounding an entire macro.
- self.macro_re = re.compile(
- r'(?P<formatting>\**|_*)(?P<macro>{}):(?P<entity_name>[\w*]+((?P<subscript>[\[][^\]]*[\]]))?)(?P=formatting)'.format(macros_pattern))
-
- def haveLinkTarget(self, entity):
- """Report if we have parsed an API include (or heading) for an entity.
-
- None if there is no entity with that name.
- """
- if not self.findEntity(entity):
- return None
- if entity in self.apiIncludes:
- return True
- return entity in self.headings
-
- def hasFixes(self):
- """Report if any files have auto-fixes."""
- for f in self.files:
- if f.hasFixes():
- return True
- return False
-
- def addLinkToEntity(self, entity, context):
- """Record seeing a link to an entity's docs from a context."""
- if entity not in self.links:
- self.links[entity] = []
- self.links[entity].append(context)
-
- def seenRefPage(self, entity):
- """Check if a ref-page markup block has been seen for an entity."""
- return entity in self.refpages
-
- def addRefPage(self, entity):
- """Record seeing a ref-page markup block for an entity."""
- self.refpages.add(entity)
-
- def findMacroAndEntity(self, macro, entity):
- """Look up EntityData by macro and entity pair.
-
- Forwards to the EntityDatabase.
- """
- return self.entity_db.findMacroAndEntity(macro, entity)
-
- def findEntity(self, entity):
- """Look up EntityData by entity name (case-sensitive).
-
- Forwards to the EntityDatabase.
- """
- return self.entity_db.findEntity(entity)
-
- def findEntityCaseInsensitive(self, entity):
- """Look up EntityData by entity name (case-insensitive).
-
- Forwards to the EntityDatabase.
- """
- return self.entity_db.findEntityCaseInsensitive(entity)
-
- def getMemberNames(self, commandOrStruct):
- """Given a command or struct name, retrieve the names of each member/param.
-
- Returns an empty list if the entity is not found or doesn't have members/params.
-
- Forwards to the EntityDatabase.
- """
- return self.entity_db.getMemberNames(commandOrStruct)
-
- def likelyRecognizedEntity(self, entity_name):
- """Guess (based on name prefix alone) if an entity is likely to be recognized.
-
- Forwards to the EntityDatabase.
- """
- return self.entity_db.likelyRecognizedEntity(entity_name)
-
- def isLinkedMacro(self, macro):
- """Identify if a macro is considered a "linked" macro.
-
- Forwards to the EntityDatabase.
- """
- return self.entity_db.isLinkedMacro(macro)
-
- def processFile(self, filename):
- """Parse an .adoc file belonging to the spec and check it for errors."""
- class FileStreamMaker(object):
- def __init__(self, filename):
- self.filename = filename
-
- def make_stream(self):
- return open(self.filename, 'r', encoding='utf-8')
-
- f = self.macro_checker_file_type(self, filename, self.enabled_messages,
- FileStreamMaker(filename))
- f.process()
- self.files.append(f)
-
- def processString(self, s):
- """Process a string as if it were a spec file.
-
- Used for testing purposes.
- """
- if "\n" in s.rstrip():
- # remove leading spaces from each line to allow easier
- # block-quoting in tests
- s = "\n".join((line.lstrip() for line in s.split("\n")))
- # fabricate a "filename" that will display better.
- filename = "string{}\n****START OF STRING****\n{}\n****END OF STRING****\n".format(
- len(self.files), s.rstrip())
-
- else:
- filename = "string{}: {}".format(
- len(self.files), s.rstrip())
-
- class StringStreamMaker(object):
- def __init__(self, string):
- self.string = string
-
- def make_stream(self):
- return StringIO(self.string)
-
- f = self.macro_checker_file_type(self, filename, self.enabled_messages,
- StringStreamMaker(s))
- f.process()
- self.files.append(f)
- return f
-
- def numDiagnostics(self):
- """Return the total number of diagnostics (warnings and errors) over all the files processed."""
- return sum((f.numDiagnostics() for f in self.files))
-
- def numErrors(self):
- """Return the total number of errors over all the files processed."""
- return sum((f.numErrors() for f in self.files))
-
- def getMissingUnreferencedApiIncludes(self):
- """Return the unreferenced entity names that we expected to see an API include or link target for, but did not.
-
- Counterpart to getBrokenLinks(): This method returns the entity names
- that were not used in a linking macro (and thus wouldn't create a broken link),
- but were nevertheless expected and not seen.
- """
- return (entity for entity in self.entity_db.generating_entities
- if (not self.haveLinkTarget(entity)) and entity not in self.links)
-
- def getBrokenLinks(self):
- """Return the entity names and usage contexts that we expected to see an API include or link target for, but did not.
-
- Counterpart to getMissingUnreferencedApiIncludes(): This method returns only the
- entity names that were used in a linking macro (and thus create a broken link),
- but were not seen. The values of the dictionary are a list of MessageContext objects
- for each linking macro usage for this entity name.
- """
- return {entity: contexts for entity, contexts in self.links.items()
- if self.entity_db.entityGenerates(entity) and not self.haveLinkTarget(entity)}
-
- def getMissingRefPages(self):
- """Return a list of entities that we expected, but did not see, a ref page block for.
-
- The heuristics here are rather crude: we expect a ref page for every generating entry.
- """
- return (entity for entity in sorted(self.entity_db.generating_entities)
- if entity not in self.refpages)
diff --git a/codegen/vulkan/scripts/spec_tools/macro_checker_file.py b/codegen/vulkan/scripts/spec_tools/macro_checker_file.py
deleted file mode 100644
index 3bca17a5..00000000
--- a/codegen/vulkan/scripts/spec_tools/macro_checker_file.py
+++ /dev/null
@@ -1,1592 +0,0 @@
-"""Provides MacroCheckerFile, a subclassable type that validates a single file in the spec."""
-
-# Copyright (c) 2018-2019 Collabora, Ltd.
-#
-# SPDX-License-Identifier: Apache-2.0
-#
-# Author(s): Ryan Pavlik <ryan.pavlik@collabora.com>
-
-import logging
-import re
-from collections import OrderedDict, namedtuple
-from enum import Enum
-from inspect import currentframe
-
-from .shared import (AUTO_FIX_STRING, CATEGORIES_WITH_VALIDITY,
- EXTENSION_CATEGORY, NON_EXISTENT_MACROS, EntityData,
- Message, MessageContext, MessageId, MessageType,
- generateInclude, toNameAndLine)
-
-# Code blocks may start and end with any number of ----
-CODE_BLOCK_DELIM = '----'
-
-# Mostly for ref page blocks, but also used elsewhere?
-REF_PAGE_LIKE_BLOCK_DELIM = '--'
-
-# For insets/blocks like the implicit valid usage
-# TODO think it must start with this - does it have to be exactly this?
-BOX_BLOCK_DELIM = '****'
-
-
-INTERNAL_PLACEHOLDER = re.compile(
- r'(?P<delim>__+)([a-zA-Z]+)(?P=delim)'
-)
-
-# Matches a generated (api or validity) include line.
-INCLUDE = re.compile(
- r'include::(?P<directory_traverse>((../){1,4}|\{(INCS-VAR|generated)\}/)(generated/)?)(?P<generated_type>[\w]+)/(?P<category>\w+)/(?P<entity_name>[^./]+).txt[\[][\]]')
-
-# Matches an [[AnchorLikeThis]]
-ANCHOR = re.compile(r'\[\[(?P<entity_name>[^\]]+)\]\]')
-
-# Looks for flink:foo:: or slink::foo:: at the end of string:
-# used to detect explicit pname context.
-PRECEDING_MEMBER_REFERENCE = re.compile(
- r'\b(?P<macro>[fs](text|link)):(?P<entity_name>[\w*]+)::$')
-
-# Matches something like slink:foo::pname:bar as well as
-# the under-marked-up slink:foo::bar.
-MEMBER_REFERENCE = re.compile(
- r'\b(?P<first_part>(?P<scope_macro>[fs](text|link)):(?P<scope>[\w*]+))(?P<double_colons>::)(?P<second_part>(?P<member_macro>pname:?)(?P<entity_name>[\w]+))\b'
-)
-
-# Matches if a string ends while a link is still "open".
-# (first half of a link being broken across two lines,
-# or containing our interested area when matched against the text preceding).
-# Used to skip checking in some places.
-OPEN_LINK = re.compile(
- r'.*(?<!`)<<[^>]*$'
-)
-
-# Matches if a string begins and is followed by a link "close" without a matching open.
-# (second half of a link being broken across two lines)
-# Used to skip checking in some places.
-CLOSE_LINK = re.compile(
- r'[^<]*>>.*$'
-)
-
-# Matches if a line should be skipped without further considering.
-# Matches lines starting with:
-# - `ifdef:`
-# - `endif:`
-# - `todo` (followed by something matching \b, like : or (. capitalization ignored)
-SKIP_LINE = re.compile(
- r'^(ifdef:)|(endif:)|([tT][oO][dD][oO]\b).*'
-)
-
-# Matches the whole inside of a refpage tag.
-BRACKETS = re.compile(r'\[(?P<tags>.*)\]')
-
-# Matches a key='value' pair from a ref page tag.
-REF_PAGE_ATTRIB = re.compile(
- r"(?P<key>[a-z]+)='(?P<value>[^'\\]*(?:\\.[^'\\]*)*)'")
-
-
-class Attrib(Enum):
- """Attributes of a ref page."""
-
- REFPAGE = 'refpage'
- DESC = 'desc'
- TYPE = 'type'
- ALIAS = 'alias'
- XREFS = 'xrefs'
- ANCHOR = 'anchor'
-
-
-VALID_REF_PAGE_ATTRIBS = set(
- (e.value for e in Attrib))
-
-AttribData = namedtuple('AttribData', ['match', 'key', 'value'])
-
-
-def makeAttribFromMatch(match):
- """Turn a match of REF_PAGE_ATTRIB into an AttribData value."""
- return AttribData(match=match, key=match.group(
- 'key'), value=match.group('value'))
-
-
-def parseRefPageAttribs(line):
- """Parse a ref page tag into a dictionary of attribute_name: AttribData."""
- return {m.group('key'): makeAttribFromMatch(m)
- for m in REF_PAGE_ATTRIB.finditer(line)}
-
-
-def regenerateIncludeFromMatch(match, generated_type):
- """Create an include directive from an INCLUDE match and a (new or replacement) generated_type."""
- return generateInclude(
- match.group('directory_traverse'),
- generated_type,
- match.group('category'),
- match.group('entity_name'))
-
-
-BlockEntry = namedtuple(
- 'BlockEntry', ['delimiter', 'context', 'block_type', 'refpage'])
-
-
-class BlockType(Enum):
- """Enumeration of the various distinct block types known."""
- CODE = 'code'
- REF_PAGE_LIKE = 'ref-page-like' # with or without a ref page tag before
- BOX = 'box'
-
- @classmethod
- def lineToBlockType(self, line):
- """Return a BlockType if the given line is a block delimiter.
-
- Returns None otherwise.
- """
- if line == REF_PAGE_LIKE_BLOCK_DELIM:
- return BlockType.REF_PAGE_LIKE
- if line.startswith(CODE_BLOCK_DELIM):
- return BlockType.CODE
- if line.startswith(BOX_BLOCK_DELIM):
- return BlockType.BOX
-
- return None
-
-
-def _pluralize(word, num):
- if num == 1:
- return word
- if word.endswith('y'):
- return word[:-1] + 'ies'
- return word + 's'
-
-
-def _s_suffix(num):
- """Simplify pluralization."""
- if num > 1:
- return 's'
- return ''
-
-
-def shouldEntityBeText(entity, subscript):
- """Determine if an entity name appears to use placeholders, wildcards, etc. and thus merits use of a *text macro.
-
- Call with the entity and subscript groups from a match of MacroChecker.macro_re.
- """
- entity_only = entity
- if subscript:
- if subscript == '[]' or subscript == '[i]' or subscript.startswith(
- '[_') or subscript.endswith('_]'):
- return True
- entity_only = entity[:-len(subscript)]
-
- if ('*' in entity) or entity.startswith('_') or entity_only.endswith('_'):
- return True
-
- if INTERNAL_PLACEHOLDER.search(entity):
- return True
- return False
-
-
-class MacroCheckerFile(object):
- """Object performing processing of a single AsciiDoctor file from a specification.
-
- For testing purposes, may also process a string as if it were a file.
- """
-
- def __init__(self, checker, filename, enabled_messages, stream_maker):
- """Construct a MacroCheckerFile object.
-
- Typically called by MacroChecker.processFile or MacroChecker.processString().
-
- Arguments:
- checker -- A MacroChecker object.
- filename -- A string to use in messages to refer to this checker, typically the file name.
- enabled_messages -- A set() of MessageId values that should be considered "enabled" and thus stored.
- stream_maker -- An object with a makeStream() method that returns a stream.
- """
- self.checker = checker
- self.filename = filename
- self.stream_maker = stream_maker
- self.enabled_messages = enabled_messages
- self.missing_validity_suppressions = set(
- self.getMissingValiditySuppressions())
-
- self.logger = logging.getLogger(__name__)
- self.logger.addHandler(logging.NullHandler())
-
- self.fixes = set()
- self.messages = []
-
- self.pname_data = None
- self.pname_mentions = {}
-
- self.refpage_includes = {}
-
- self.lines = []
-
- # For both of these:
- # keys: entity name
- # values: MessageContext
- self.fs_api_includes = {}
- self.validity_includes = {}
-
- self.in_code_block = False
- self.in_ref_page = False
- self.prev_line_ref_page_tag = None
- self.current_ref_page = None
-
- # Stack of block-starting delimiters.
- self.block_stack = []
-
- # Regexes that are members because they depend on the name prefix.
- self.suspected_missing_macro_re = self.checker.suspected_missing_macro_re
- self.heading_command_re = self.checker.heading_command_re
-
- ###
- # Main process/checking methods, arranged roughly from largest scope to smallest scope.
- ###
-
- def process(self):
- """Check the stream (file, string) created by the streammaker supplied to the constructor.
-
- This is the top-level method for checking a spec file.
- """
- self.logger.info("processing file %s", self.filename)
-
- # File content checks - performed line-by-line
- with self.stream_maker.make_stream() as f:
- # Iterate through lines, calling processLine on each.
- for lineIndex, line in enumerate(f):
- trimmedLine = line.rstrip()
- self.lines.append(trimmedLine)
- self.processLine(lineIndex + 1, trimmedLine)
-
- # End of file checks follow:
-
- # Check "state" at end of file: should have blocks closed.
- if self.prev_line_ref_page_tag:
- self.error(MessageId.REFPAGE_BLOCK,
- "Reference page tag seen, but block not opened before end of file.",
- context=self.storeMessageContext(match=None))
-
- if self.block_stack:
- locations = (x.context for x in self.block_stack)
- formatted_locations = ['{} opened at {}'.format(x.delimiter, self.getBriefLocation(x.context))
- for x in self.block_stack]
- self.logger.warning("Unclosed blocks: %s",
- ', '.join(formatted_locations))
-
- self.error(MessageId.UNCLOSED_BLOCK,
- ["Reached end of page, with these unclosed blocks remaining:"] +
- formatted_locations,
- context=self.storeMessageContext(match=None),
- see_also=locations)
-
- # Check that every include of an /api/ file in the protos or structs category
- # had a matching /validity/ include
- for entity, includeContext in self.fs_api_includes.items():
- if not self.checker.entity_db.entityHasValidity(entity):
- continue
-
- if entity in self.missing_validity_suppressions:
- continue
-
- if entity not in self.validity_includes:
- self.warning(MessageId.MISSING_VALIDITY_INCLUDE,
- ['Saw /api/ include for {}, but no matching /validity/ include'.format(entity),
- 'Expected a line with ' + regenerateIncludeFromMatch(includeContext.match, 'validity')],
- context=includeContext)
-
- # Check that we never include a /validity/ file
- # without a matching /api/ include
- for entity, includeContext in self.validity_includes.items():
- if entity not in self.fs_api_includes:
- self.error(MessageId.MISSING_API_INCLUDE,
- ['Saw /validity/ include for {}, but no matching /api/ include'.format(entity),
- 'Expected a line with ' + regenerateIncludeFromMatch(includeContext.match, 'api')],
- context=includeContext)
-
- if not self.numDiagnostics():
- # no problems, exit quietly
- return
-
- print('\nFor file {}:'.format(self.filename))
-
- self.printMessageCounts()
- numFixes = len(self.fixes)
- if numFixes > 0:
- fixes = ', '.join(('{} -> {}'.format(search, replace)
- for search, replace in self.fixes))
-
- print('{} unique auto-fix {} recorded: {}'.format(numFixes,
- _pluralize('pattern', numFixes), fixes))
-
- def processLine(self, lineNum, line):
- """Check the contents of a single line from a file.
-
- Eventually populates self.match, self.entity, self.macro,
- before calling processMatch.
- """
- self.lineNum = lineNum
- self.line = line
- self.match = None
- self.entity = None
- self.macro = None
-
- self.logger.debug("processing line %d", lineNum)
-
- if self.processPossibleBlockDelimiter():
- # This is a block delimiter - proceed to next line.
- # Block-type-specific stuff goes in processBlockOpen and processBlockClosed.
- return
-
- if self.in_code_block:
- # We do no processing in a code block.
- return
-
- ###
- # Detect if the previous line was [open,...] starting a refpage
- # but this line isn't --
- # If the line is some other block delimiter,
- # the related code in self.processPossibleBlockDelimiter()
- # would have handled it.
- # (because execution would never get to here for that line)
- if self.prev_line_ref_page_tag:
- self.handleExpectedRefpageBlock()
-
- ###
- # Detect headings
- if line.startswith('=='):
- # Headings cause us to clear our pname_context
- self.pname_data = None
-
- command = self.heading_command_re.match(line)
- if command:
- data = self.checker.findEntity(command)
- if data:
- self.pname_data = data
- return
-
- ###
- # Detect [open, lines for manpages
- if line.startswith('[open,'):
- self.checkRefPage()
- return
-
- ###
- # Skip comments
- if line.lstrip().startswith('//'):
- return
-
- ###
- # Skip ifdef/endif
- if SKIP_LINE.match(line):
- return
-
- ###
- # Detect include:::....[] lines
- match = INCLUDE.match(line)
- if match:
- self.match = match
- entity = match.group('entity_name')
-
- data = self.checker.findEntity(entity)
- if not data:
- self.error(MessageId.UNKNOWN_INCLUDE,
- 'Saw include for {}, but that entity is unknown.'.format(entity))
- self.pname_data = None
- return
-
- self.pname_data = data
-
- if match.group('generated_type') == 'api':
- self.recordInclude(self.checker.apiIncludes)
-
- # Set mentions to None. The first time we see something like `* pname:paramHere`,
- # we will set it to an empty set
- self.pname_mentions[entity] = None
-
- if match.group('category') in CATEGORIES_WITH_VALIDITY:
- self.fs_api_includes[entity] = self.storeMessageContext()
-
- if entity in self.validity_includes:
- name_and_line = toNameAndLine(
- self.validity_includes[entity], root_path=self.checker.root_path)
- self.error(MessageId.API_VALIDITY_ORDER,
- ['/api/ include found for {} after a corresponding /validity/ include'.format(entity),
- 'Validity include located at {}'.format(name_and_line)])
-
- elif match.group('generated_type') == 'validity':
- self.recordInclude(self.checker.validityIncludes)
- self.validity_includes[entity] = self.storeMessageContext()
-
- if entity not in self.pname_mentions:
- self.error(MessageId.API_VALIDITY_ORDER,
- '/validity/ include found for {} without a preceding /api/ include'.format(entity))
- return
-
- if self.pname_mentions[entity]:
- # Got a validity include and we have seen at least one * pname: line
- # since we got the API include
- # so we can warn if we haven't seen a reference to every
- # parameter/member.
- members = self.checker.getMemberNames(entity)
- missing = [member for member in members
- if member not in self.pname_mentions[entity]]
- if missing:
- self.error(MessageId.UNDOCUMENTED_MEMBER,
- ['Validity include found for {}, but not all members/params apparently documented'.format(entity),
- 'Members/params not mentioned with pname: {}'.format(', '.join(missing))])
-
- # If we found an include line, we're done with this line.
- return
-
- if self.pname_data is not None and '* pname:' in line:
- context_entity = self.pname_data.entity
- if self.pname_mentions[context_entity] is None:
- # First time seeting * pname: after an api include, prepare the set that
- # tracks
- self.pname_mentions[context_entity] = set()
-
- ###
- # Detect [[Entity]] anchors
- for match in ANCHOR.finditer(line):
- entity = match.group('entity_name')
- if self.checker.findEntity(entity):
- # We found an anchor with the same name as an entity:
- # treat it (mostly) like an API include
- self.match = match
- self.recordInclude(self.checker.apiIncludes,
- generated_type='api (manual anchor)')
-
- ###
- # Detect :: without pname
- for match in MEMBER_REFERENCE.finditer(line):
- if not match.group('member_macro'):
- self.match = match
- # Got :: but not followed by pname
-
- search = match.group()
- replacement = match.group(
- 'first_part') + '::pname:' + match.group('second_part')
- self.error(MessageId.MEMBER_PNAME_MISSING,
- 'Found a function parameter or struct member reference with :: but missing pname:',
- group='double_colons',
- replacement='::pname:',
- fix=(search, replacement))
-
- # check pname here because it won't come up in normal iteration below
- # because of the missing macro
- self.entity = match.group('entity_name')
- self.checkPname(match.group('scope'))
-
- ###
- # Look for things that seem like a missing macro.
- for match in self.suspected_missing_macro_re.finditer(line):
- if OPEN_LINK.match(line, endpos=match.start()):
- # this is in a link, skip it.
- continue
- if CLOSE_LINK.match(line[match.end():]):
- # this is in a link, skip it.
- continue
-
- entity = match.group('entity_name')
- self.match = match
- self.entity = entity
- data = self.checker.findEntity(entity)
- if data:
-
- if data.category == EXTENSION_CATEGORY:
- # Ah, this is an extension
- self.warning(MessageId.EXTENSION, "Seems like this is an extension name that was not linked.",
- group='entity_name', replacement=self.makeExtensionLink())
- else:
- self.warning(MessageId.MISSING_MACRO,
- ['Seems like a "{}" macro was omitted for this reference to a known entity in category "{}".'.format(data.macro, data.category),
- 'Wrap in ` ` to silence this if you do not want a verified macro here.'],
- group='entity_name',
- replacement=self.makeMacroMarkup(data.macro))
- else:
-
- dataArray = self.checker.findEntityCaseInsensitive(entity)
- # We might have found the goof...
-
- if dataArray:
- if len(dataArray) == 1:
- # Yep, found the goof:
- # incorrect macro and entity capitalization
- data = dataArray[0]
- if data.category == EXTENSION_CATEGORY:
- # Ah, this is an extension
- self.warning(MessageId.EXTENSION,
- "Seems like this is an extension name that was not linked.",
- group='entity_name', replacement=self.makeExtensionLink(data.entity))
- else:
- self.warning(MessageId.MISSING_MACRO,
- 'Seems like a macro was omitted for this reference to a known entity in category "{}", found by searching case-insensitively.'.format(
- data.category),
- replacement=self.makeMacroMarkup(data=data))
-
- else:
- # Ugh, more than one resolution
-
- self.warning(MessageId.MISSING_MACRO,
- ['Seems like a macro was omitted for this reference to a known entity, found by searching case-insensitively.',
- 'More than one apparent match.'],
- group='entity_name', see_also=dataArray[:])
-
- ###
- # Main operations: detect markup macros
- for match in self.checker.macro_re.finditer(line):
- self.match = match
- self.macro = match.group('macro')
- self.entity = match.group('entity_name')
- self.subscript = match.group('subscript')
- self.processMatch()
-
- def processPossibleBlockDelimiter(self):
- """Look at the current line, and if it's a delimiter, update the block stack.
-
- Calls self.processBlockDelimiter() as required.
-
- Returns True if a delimiter was processed, False otherwise.
- """
- line = self.line
- new_block_type = BlockType.lineToBlockType(line)
- if not new_block_type:
- return False
-
- ###
- # Detect if the previous line was [open,...] starting a refpage
- # but this line is some block delimiter other than --
- # Must do this here because if we get a different block open instead of the one we want,
- # the order of block opening will be wrong.
- if new_block_type != BlockType.REF_PAGE_LIKE and self.prev_line_ref_page_tag:
- self.handleExpectedRefpageBlock()
-
- # Delegate to the main process for delimiters.
- self.processBlockDelimiter(line, new_block_type)
-
- return True
-
- def processBlockDelimiter(self, line, new_block_type, context=None):
- """Update the block stack based on the current or supplied line.
-
- Calls self.processBlockOpen() or self.processBlockClosed() as required.
-
- Called by self.processPossibleBlockDelimiter() both in normal operation, as well as
- when "faking" a ref page block open.
-
- Returns BlockProcessResult.
- """
- if not context:
- context = self.storeMessageContext()
-
- location = self.getBriefLocation(context)
-
- top = self.getInnermostBlockEntry()
- top_delim = self.getInnermostBlockDelimiter()
- if top_delim == line:
- self.processBlockClosed()
- return
-
- if top and top.block_type == new_block_type:
- # Same block type, but not matching - might be an error?
- # TODO maybe create a diagnostic here?
- self.logger.warning(
- "processPossibleBlockDelimiter: %s: Matched delimiter type %s, but did not exactly match current delim %s to top of stack %s, may be a typo?",
- location, new_block_type, line, top_delim)
-
- # Empty stack, or top doesn't match us.
- self.processBlockOpen(new_block_type, delimiter=line)
-
- def processBlockOpen(self, block_type, context=None, delimiter=None):
- """Do any block-type-specific processing and push the new block.
-
- Must call self.pushBlock().
- May be overridden (carefully) or extended.
-
- Called by self.processBlockDelimiter().
- """
- if block_type == BlockType.REF_PAGE_LIKE:
- if self.prev_line_ref_page_tag:
- if self.current_ref_page:
- refpage = self.current_ref_page
- else:
- refpage = '?refpage-with-invalid-tag?'
-
- self.logger.info(
- 'processBlockOpen: Opening refpage for %s', refpage)
- # Opening of refpage block "consumes" the preceding ref
- # page context
- self.prev_line_ref_page_tag = None
- self.pushBlock(block_type, refpage=refpage,
- context=context, delimiter=delimiter)
- self.in_ref_page = True
- return
-
- if block_type == BlockType.CODE:
- self.in_code_block = True
-
- self.pushBlock(block_type, context=context, delimiter=delimiter)
-
- def processBlockClosed(self):
- """Do any block-type-specific processing and pop the top block.
-
- Must call self.popBlock().
- May be overridden (carefully) or extended.
-
- Called by self.processPossibleBlockDelimiter().
- """
- old_top = self.popBlock()
-
- if old_top.block_type == BlockType.CODE:
- self.in_code_block = False
-
- elif old_top.block_type == BlockType.REF_PAGE_LIKE and old_top.refpage:
- self.logger.info(
- 'processBlockClosed: Closing refpage for %s', old_top.refpage)
- # leaving a ref page so reset associated state.
- self.current_ref_page = None
- self.prev_line_ref_page_tag = None
- self.in_ref_page = False
-
- def processMatch(self):
- """Process a match of the macro:entity regex for correctness."""
- match = self.match
- entity = self.entity
- macro = self.macro
-
- ###
- # Track entities that we're actually linking to.
- ###
- if self.checker.entity_db.isLinkedMacro(macro):
- self.checker.addLinkToEntity(entity, self.storeMessageContext())
-
- ###
- # Link everything that should be, and nothing that shouldn't be
- ###
- if self.checkRecognizedEntity():
- # if this returns true,
- # then there is no need to do the remaining checks on this match
- return
-
- ###
- # Non-existent macros
- if macro in NON_EXISTENT_MACROS:
- self.error(MessageId.BAD_MACRO, '{} is not a macro provided in the specification, despite resembling other macros.'.format(
- macro), group='macro')
-
- ###
- # Wildcards (or leading underscore, or square brackets)
- # if and only if a 'text' macro
- self.checkText()
-
- # Do some validation of pname references.
- if macro == 'pname':
- # See if there's an immediately-preceding entity
- preceding = self.line[:match.start()]
- scope = PRECEDING_MEMBER_REFERENCE.search(preceding)
- if scope:
- # Yes there is, check it out.
- self.checkPname(scope.group('entity_name'))
- elif self.current_ref_page is not None:
- # No, but there is a current ref page: very reliable
- self.checkPnameImpliedContext(self.current_ref_page)
- elif self.pname_data is not None:
- # No, but there is a pname_context - better than nothing.
- self.checkPnameImpliedContext(self.pname_data)
- else:
- # no, and no existing context we can imply:
- # can't check this.
- pass
-
- def checkRecognizedEntity(self):
- """Check the current macro:entity match to see if it is recognized.
-
- Returns True if there is no need to perform further checks on this match.
-
- Helps avoid duplicate warnings/errors: typically each macro should have at most
- one of this class of errors.
- """
- entity = self.entity
- macro = self.macro
- if self.checker.findMacroAndEntity(macro, entity) is not None:
- # We know this macro-entity combo
- return True
-
- # We don't know this macro-entity combo.
- possibleCats = self.checker.entity_db.getCategoriesForMacro(macro)
- if possibleCats is None:
- possibleCats = ['???']
- msg = ['Definition of link target {} with macro {} (used for {} {}) does not exist.'.format(
- entity,
- macro,
- _pluralize('category', len(possibleCats)),
- ', '.join(possibleCats))]
-
- data = self.checker.findEntity(entity)
- if data:
- # We found the goof: incorrect macro
- msg.append('Apparently matching entity in category {} found.'.format(
- data.category))
- self.handleWrongMacro(msg, data)
- return True
-
- see_also = []
- dataArray = self.checker.findEntityCaseInsensitive(entity)
- if dataArray:
- # We might have found the goof...
-
- if len(dataArray) == 1:
- # Yep, found the goof:
- # incorrect macro and entity capitalization
- data = dataArray[0]
- msg.append('Apparently matching entity in category {} found by searching case-insensitively.'.format(
- data.category))
- self.handleWrongMacro(msg, data)
- return True
- else:
- # Ugh, more than one resolution
- msg.append(
- 'More than one apparent match found by searching case-insensitively, cannot auto-fix.')
- see_also = dataArray[:]
-
- # OK, so we don't recognize this entity (and couldn't auto-fix it).
-
- if self.checker.entity_db.shouldBeRecognized(macro, entity):
- # We should know the target - it's a link macro,
- # or there's some reason the entity DB thinks we should know it.
- if self.checker.likelyRecognizedEntity(entity):
- # Should be linked and it matches our pattern,
- # so probably not wrong macro.
- # Human brains required.
- if not self.checkText():
- self.error(MessageId.BAD_ENTITY, msg + ['Might be a misspelling, or, less likely, the wrong macro.'],
- see_also=see_also)
- else:
- # Doesn't match our pattern,
- # so probably should be name instead of link.
- newMacro = macro[0] + 'name'
- if self.checker.entity_db.isValidMacro(newMacro):
- self.error(MessageId.BAD_ENTITY, msg +
- ['Entity name does not fit the pattern for this API, which would mean it should be a "name" macro instead of a "link" macro'],
- group='macro', replacement=newMacro, fix=self.makeFix(newMacro=newMacro), see_also=see_also)
- else:
- self.error(MessageId.BAD_ENTITY, msg +
- ['Entity name does not fit the pattern for this API, which would mean it should be a "name" macro instead of a "link" macro',
- 'However, {} is not a known macro so cannot auto-fix.'.format(newMacro)], see_also=see_also)
-
- elif macro == 'ename':
- # TODO This might be an ambiguity in the style guide - ename might be a known enumerant value,
- # or it might be an enumerant value in an external library, etc. that we don't know about - so
- # hard to check this.
- if self.checker.likelyRecognizedEntity(entity):
- if not self.checkText():
- self.warning(MessageId.BAD_ENUMERANT, msg +
- ['Unrecognized ename:{} that we would expect to recognize since it fits the pattern for this API.'.format(entity)], see_also=see_also)
- else:
- # This is fine:
- # it doesn't need to be recognized since it's not linked.
- pass
- # Don't skip other tests.
- return False
-
- def checkText(self):
- """Evaluate the usage (or non-usage) of a *text macro.
-
- Wildcards (or leading or trailing underscore, or square brackets with
- nothing or a placeholder) if and only if a 'text' macro.
-
- Called by checkRecognizedEntity() when appropriate.
- """
- macro = self.macro
- entity = self.entity
- shouldBeText = shouldEntityBeText(entity, self.subscript)
- if shouldBeText and not self.macro.endswith(
- 'text') and not self.macro == 'code':
- newMacro = macro[0] + 'text'
- if self.checker.entity_db.getCategoriesForMacro(newMacro):
- self.error(MessageId.MISSING_TEXT,
- ['Asterisk/leading or trailing underscore/bracket found - macro should end with "text:", probably {}:'.format(newMacro),
- AUTO_FIX_STRING],
- group='macro', replacement=newMacro, fix=self.makeFix(newMacro=newMacro))
- else:
- self.error(MessageId.MISSING_TEXT,
- ['Asterisk/leading or trailing underscore/bracket found, so macro should end with "text:".',
- 'However {}: is not a known macro so cannot auto-fix.'.format(newMacro)],
- group='macro')
- return True
- elif macro.endswith('text') and not shouldBeText:
- msg = [
- "No asterisk/leading or trailing underscore/bracket in the entity, so this might be a mistaken use of the 'text' macro {}:".format(macro)]
- data = self.checker.findEntity(entity)
- if data:
- # We found the goof: incorrect macro
- msg.append('Apparently matching entity in category {} found.'.format(
- data.category))
- msg.append(AUTO_FIX_STRING)
- replacement = self.makeFix(data=data)
- if data.category == EXTENSION_CATEGORY:
- self.error(MessageId.EXTENSION, msg,
- replacement=replacement, fix=replacement)
- else:
- self.error(MessageId.WRONG_MACRO, msg,
- group='macro', replacement=data.macro, fix=replacement)
- else:
- if self.checker.likelyRecognizedEntity(entity):
- # This is a use of *text: for something that fits the pattern but isn't in the spec.
- # This is OK.
- return False
- msg.append('Entity not found in spec, either.')
- if macro[0] != 'e':
- # Only suggest a macro if we aren't in elink/ename/etext,
- # since ename and elink are not related in an equivalent way
- # to the relationship between flink and fname.
- newMacro = macro[0] + 'name'
- if self.checker.entity_db.getCategoriesForMacro(newMacro):
- msg.append(
- 'Consider if {}: might be the correct macro to use here.'.format(newMacro))
- else:
- msg.append(
- 'Cannot suggest a new macro because {}: is not a known macro.'.format(newMacro))
- self.warning(MessageId.MISUSED_TEXT, msg)
- return True
- return False
-
- def checkPnameImpliedContext(self, pname_context):
- """Handle pname: macros not immediately preceded by something like flink:entity or slink:entity.
-
- Also records pname: mentions of members/parameters for completeness checking in doc blocks.
-
- Contains call to self.checkPname().
- Called by self.processMatch()
- """
- self.checkPname(pname_context.entity)
- if pname_context.entity in self.pname_mentions and \
- self.pname_mentions[pname_context.entity] is not None:
- # Record this mention,
- # in case we're in the documentation block.
- self.pname_mentions[pname_context.entity].add(self.entity)
-
- def checkPname(self, pname_context):
- """Check the current match (as a pname: usage) with the given entity as its 'pname context', if possible.
-
- e.g. slink:foo::pname:bar, pname_context would be 'foo', while self.entity would be 'bar', etc.
-
- Called by self.processLine(), self.processMatch(), as well as from self.checkPnameImpliedContext().
- """
- if '*' in pname_context:
- # This context has a placeholder, can't verify it.
- return
-
- entity = self.entity
-
- context_data = self.checker.findEntity(pname_context)
- members = self.checker.getMemberNames(pname_context)
-
- if context_data and not members:
- # This is a recognized parent entity that doesn't have detectable member names,
- # skip validation
- # TODO: Annotate parameters of function pointer types with <name>
- # and <param>?
- return
- if not members:
- self.warning(MessageId.UNRECOGNIZED_CONTEXT,
- 'pname context entity was un-recognized {}'.format(pname_context))
- return
-
- if entity not in members:
- self.warning(MessageId.UNKNOWN_MEMBER, ["Could not find member/param named '{}' in {}".format(entity, pname_context),
- 'Known {} mamber/param names are: {}'.format(
- pname_context, ', '.join(members))], group='entity_name')
-
- def checkIncludeRefPageRelation(self, entity, generated_type):
- """Identify if our current ref page (or lack thereof) is appropriate for an include just recorded.
-
- Called by self.recordInclude().
- """
- if not self.in_ref_page:
- # Not in a ref page block: This probably means this entity needs a
- # ref-page block added.
- self.handleIncludeMissingRefPage(entity, generated_type)
- return
-
- if not isinstance(self.current_ref_page, EntityData):
- # This isn't a fully-valid ref page, so can't check the includes any better.
- return
-
- ref_page_entity = self.current_ref_page.entity
- if ref_page_entity not in self.refpage_includes:
- self.refpage_includes[ref_page_entity] = set()
- expected_ref_page_entity = self.computeExpectedRefPageFromInclude(
- entity)
- self.refpage_includes[ref_page_entity].add((generated_type, entity))
-
- if ref_page_entity == expected_ref_page_entity:
- # OK, this is a total match.
- pass
- elif self.checker.entity_db.areAliases(expected_ref_page_entity, ref_page_entity):
- # This appears to be a promoted synonym which is OK.
- pass
- else:
- # OK, we are in a ref page block that doesn't match
- self.handleIncludeMismatchRefPage(entity, generated_type)
-
- def checkRefPage(self):
- """Check if the current line (a refpage tag) meets requirements.
-
- Called by self.processLine().
- """
- line = self.line
-
- # Should always be found
- self.match = BRACKETS.match(line)
-
- data = None
- directory = None
- if self.in_ref_page:
- msg = ["Found reference page markup, but we are already in a refpage block.",
- "The block before the first message of this type is most likely not closed.", ]
- # Fake-close the previous ref page, if it's trivial to do so.
- if self.getInnermostBlockEntry().block_type == BlockType.REF_PAGE_LIKE:
- msg.append(
- "Pretending that there was a line with `--` immediately above to close that ref page, for more readable messages.")
- self.processBlockDelimiter(
- REF_PAGE_LIKE_BLOCK_DELIM, BlockType.REF_PAGE_LIKE)
- else:
- msg.append(
- "Ref page wasn't the last block opened, so not pretending to auto-close it for more readable messages.")
-
- self.error(MessageId.REFPAGE_BLOCK, msg)
-
- attribs = parseRefPageAttribs(line)
-
- unknown_attribs = set(attribs.keys()).difference(
- VALID_REF_PAGE_ATTRIBS)
- if unknown_attribs:
- self.error(MessageId.REFPAGE_UNKNOWN_ATTRIB,
- "Found unknown attrib(s) in reference page markup: " + ','.join(unknown_attribs))
-
- # Required field: refpage='xrValidEntityHere'
- if Attrib.REFPAGE.value in attribs:
- attrib = attribs[Attrib.REFPAGE.value]
- text = attrib.value
- self.entity = text
-
- context = self.storeMessageContext(
- group='value', match=attrib.match)
- if self.checker.seenRefPage(text):
- self.error(MessageId.REFPAGE_DUPLICATE,
- ["Found reference page markup when we already saw refpage='{}' elsewhere.".format(
- text),
- "This (or the other mention) may be a copy-paste error."],
- context=context)
- self.checker.addRefPage(text)
-
- # Skip entity check if it's a spir-v built in
- type = ''
- if Attrib.TYPE.value in attribs:
- type = attribs[Attrib.TYPE.value].value
-
- if type != 'builtins' and type != 'spirv':
- data = self.checker.findEntity(text)
- self.current_ref_page = data
- if data:
- # OK, this is a known entity that we're seeing a refpage for.
- directory = data.directory
- else:
- # TODO suggest fixes here if applicable
- self.error(MessageId.REFPAGE_NAME,
- [ "Found reference page markup, but refpage='{}' type='{}' does not refer to a recognized entity".format(
- text, type),
- 'If this is intentional, add the entity to EXTRA_DEFINES or EXTRA_REFPAGES in check_spec_links.py.' ],
- context=context)
-
- else:
- self.error(MessageId.REFPAGE_TAG,
- "Found apparent reference page markup, but missing refpage='...'",
- group=None)
-
- # Required field: desc='preferably non-empty'
- if Attrib.DESC.value in attribs:
- attrib = attribs[Attrib.DESC.value]
- text = attrib.value
- if not text:
- context = self.storeMessageContext(
- group=None, match=attrib.match)
- self.warning(MessageId.REFPAGE_MISSING_DESC,
- "Found reference page markup, but desc='' is empty",
- context=context)
- else:
- self.error(MessageId.REFPAGE_TAG,
- "Found apparent reference page markup, but missing desc='...'",
- group=None)
-
- # Required field: type='protos' for example
- # (used by genRef.py to compute the macro to use)
- if Attrib.TYPE.value in attribs:
- attrib = attribs[Attrib.TYPE.value]
- text = attrib.value
- if directory and not text == directory:
- context = self.storeMessageContext(
- group='value', match=attrib.match)
- self.error(MessageId.REFPAGE_TYPE,
- "Found reference page markup, but type='{}' is not the expected value '{}'".format(
- text, directory),
- context=context)
- else:
- self.error(MessageId.REFPAGE_TAG,
- "Found apparent reference page markup, but missing type='...'",
- group=None)
-
- # Optional field: alias='spaceDelimited validEntities'
- # Currently does nothing. Could modify checkRefPageXrefs to also
- # check alias= attribute value
- # if Attrib.ALIAS.value in attribs:
- # # This field is optional
- # self.checkRefPageXrefs(attribs[Attrib.XREFS.value])
-
- # Optional field: xrefs='spaceDelimited validEntities'
- if Attrib.XREFS.value in attribs:
- # This field is optional
- self.checkRefPageXrefs(attribs[Attrib.XREFS.value])
- self.prev_line_ref_page_tag = self.storeMessageContext()
-
- def checkRefPageXrefs(self, xrefs_attrib):
- """Check all cross-refs indicated in an xrefs attribute for a ref page.
-
- Called by self.checkRefPage().
-
- Argument:
- xrefs_attrib -- A match of REF_PAGE_ATTRIB where the group 'key' is 'xrefs'.
- """
- text = xrefs_attrib.value
- context = self.storeMessageContext(
- group='value', match=xrefs_attrib.match)
-
- def splitRefs(s):
- """Split the string on whitespace, into individual references."""
- return s.split() # [x for x in s.split() if x]
-
- def remakeRefs(refs):
- """Re-create a xrefs string from something list-shaped."""
- return ' '.join(refs)
-
- refs = splitRefs(text)
-
- # Pre-checking if messages are enabled, so that we can correctly determine
- # the current string following any auto-fixes:
- # the fixes for messages directly in this method would interact,
- # and thus must be in the order specified here.
-
- if self.messageEnabled(MessageId.REFPAGE_XREFS_COMMA) and ',' in text:
- old_text = text
- # Re-split after replacing commas.
- refs = splitRefs(text.replace(',', ' '))
- # Re-create the space-delimited text.
- text = remakeRefs(refs)
- self.error(MessageId.REFPAGE_XREFS_COMMA,
- "Found reference page markup, with an unexpected comma in the (space-delimited) xrefs attribute",
- context=context,
- replacement=text,
- fix=(old_text, text))
-
- # We could conditionally perform this creation, but the code complexity would increase substantially,
- # for presumably minimal runtime improvement.
- unique_refs = OrderedDict.fromkeys(refs)
- if self.messageEnabled(MessageId.REFPAGE_XREF_DUPE) and len(unique_refs) != len(refs):
- # TODO is it safe to auto-fix here?
- old_text = text
- text = remakeRefs(unique_refs.keys())
- self.warning(MessageId.REFPAGE_XREF_DUPE,
- ["Reference page for {} contains at least one duplicate in its cross-references.".format(
- self.entity),
- "Look carefully to see if this is a copy and paste error and should be changed to a different but related entity:",
- "auto-fix simply removes the duplicate."],
- context=context,
- replacement=text,
- fix=(old_text, text))
-
- if self.messageEnabled(MessageId.REFPAGE_SELF_XREF) and self.entity and self.entity in unique_refs:
- # Not modifying unique_refs here because that would accidentally affect the whitespace auto-fix.
- new_text = remakeRefs(
- [x for x in unique_refs.keys() if x != self.entity])
-
- # DON'T AUTOFIX HERE because these are likely copy-paste between related entities:
- # e.g. a Create function and the associated CreateInfo struct.
- self.warning(MessageId.REFPAGE_SELF_XREF,
- ["Reference page for {} included itself in its cross-references.".format(self.entity),
- "This is typically a copy and paste error, and the dupe should likely be changed to a different but related entity.",
- "Not auto-fixing for this reason."],
- context=context,
- replacement=new_text,)
-
- # We didn't have another reason to replace the whole attribute value,
- # so let's make sure it doesn't have any extra spaces
- if self.messageEnabled(MessageId.REFPAGE_WHITESPACE) and xrefs_attrib.value == text:
- old_text = text
- text = remakeRefs(unique_refs.keys())
- if old_text != text:
- self.warning(MessageId.REFPAGE_WHITESPACE,
- ["Cross-references for reference page for {} had non-minimal whitespace,".format(self.entity),
- "and no other enabled message has re-constructed this value already."],
- context=context,
- replacement=text,
- fix=(old_text, text))
-
- for entity in unique_refs.keys():
- self.checkRefPageXref(entity, context)
-
- def checkRefPageXref(self, referenced_entity, line_context):
- """Check a single cross-reference entry for a refpage.
-
- Called by self.checkRefPageXrefs().
-
- Arguments:
- referenced_entity -- The individual entity under consideration from the xrefs='...' string.
- line_context -- A MessageContext referring to the entire line.
- """
- data = self.checker.findEntity(referenced_entity)
- if data:
- # This is OK
- return
- context = line_context
- match = re.search(r'\b{}\b'.format(referenced_entity), self.line)
- if match:
- context = self.storeMessageContext(
- group=None, match=match)
- msg = ["Found reference page markup, with an unrecognized entity listed: {}".format(
- referenced_entity)]
-
- see_also = None
- dataArray = self.checker.findEntityCaseInsensitive(
- referenced_entity)
-
- if dataArray:
- # We might have found the goof...
-
- if len(dataArray) == 1:
- # Yep, found the goof - incorrect entity capitalization
- data = dataArray[0]
- new_entity = data.entity
- self.error(MessageId.REFPAGE_XREFS, msg + [
- 'Apparently matching entity in category {} found by searching case-insensitively.'.format(
- data.category),
- AUTO_FIX_STRING],
- replacement=new_entity,
- fix=(referenced_entity, new_entity),
- context=context)
- return
-
- # Ugh, more than one resolution
- msg.append(
- 'More than one apparent match found by searching case-insensitively, cannot auto-fix.')
- see_also = dataArray[:]
- else:
- # Probably not just a typo
- msg.append(
- 'If this is intentional, add the entity to EXTRA_DEFINES or EXTRA_REFPAGES in check_spec_links.py.')
-
- # Multiple or no resolutions found
- self.error(MessageId.REFPAGE_XREFS,
- msg,
- see_also=see_also,
- context=context)
-
- ###
- # Message-related methods.
- ###
-
- def warning(self, message_id, messageLines, context=None, group=None,
- replacement=None, fix=None, see_also=None, frame=None):
- """Log a warning for the file, if the message ID is enabled.
-
- Wrapper around self.diag() that automatically sets severity as well as frame.
-
- Arguments:
- message_id -- A MessageId value.
- messageLines -- A string or list of strings containing a human-readable error description.
-
- Optional, named arguments:
- context -- A MessageContext. If None, will be constructed from self.match and group.
- group -- The name of the regex group in self.match that contains the problem. Only used if context is None.
- If needed and is None, self.group is used instead.
- replacement -- The string, if any, that should be suggested as a replacement for the group in question.
- Does not create an auto-fix: sometimes we want to show a possible fix but aren't confident enough
- (or can't easily phrase a regex) to do it automatically.
- fix -- A (old text, new text) pair if this error is auto-fixable safely.
- see_also -- An optional array of other MessageContext locations relevant to this message.
- frame -- The 'inspect' stack frame corresponding to the location that raised this message.
- If None, will assume it is the direct caller of self.warning().
- """
- if not frame:
- frame = currentframe().f_back
- self.diag(MessageType.WARNING, message_id, messageLines, group=group,
- replacement=replacement, context=context, fix=fix, see_also=see_also, frame=frame)
-
- def error(self, message_id, messageLines, group=None, replacement=None,
- context=None, fix=None, see_also=None, frame=None):
- """Log an error for the file, if the message ID is enabled.
-
- Wrapper around self.diag() that automatically sets severity as well as frame.
-
- Arguments:
- message_id -- A MessageId value.
- messageLines -- A string or list of strings containing a human-readable error description.
-
- Optional, named arguments:
- context -- A MessageContext. If None, will be constructed from self.match and group.
- group -- The name of the regex group in self.match that contains the problem. Only used if context is None.
- If needed and is None, self.group is used instead.
- replacement -- The string, if any, that should be suggested as a replacement for the group in question.
- Does not create an auto-fix: sometimes we want to show a possible fix but aren't confident enough
- (or can't easily phrase a regex) to do it automatically.
- fix -- A (old text, new text) pair if this error is auto-fixable safely.
- see_also -- An optional array of other MessageContext locations relevant to this message.
- frame -- The 'inspect' stack frame corresponding to the location that raised this message.
- If None, will assume it is the direct caller of self.error().
- """
- if not frame:
- frame = currentframe().f_back
- self.diag(MessageType.ERROR, message_id, messageLines, group=group,
- replacement=replacement, context=context, fix=fix, see_also=see_also, frame=frame)
-
- def diag(self, severity, message_id, messageLines, context=None, group=None,
- replacement=None, fix=None, see_also=None, frame=None):
- """Log a diagnostic for the file, if the message ID is enabled.
-
- Also records the auto-fix, if applicable.
-
- Arguments:
- severity -- A MessageType value.
- message_id -- A MessageId value.
- messageLines -- A string or list of strings containing a human-readable error description.
-
- Optional, named arguments:
- context -- A MessageContext. If None, will be constructed from self.match and group.
- group -- The name of the regex group in self.match that contains the problem. Only used if context is None.
- If needed and is None, self.group is used instead.
- replacement -- The string, if any, that should be suggested as a replacement for the group in question.
- Does not create an auto-fix: sometimes we want to show a possible fix but aren't confident enough
- (or can't easily phrase a regex) to do it automatically.
- fix -- A (old text, new text) pair if this error is auto-fixable safely.
- see_also -- An optional array of other MessageContext locations relevant to this message.
- frame -- The 'inspect' stack frame corresponding to the location that raised this message.
- If None, will assume it is the direct caller of self.diag().
- """
- if not self.messageEnabled(message_id):
- self.logger.debug(
- 'Discarding a %s message because it is disabled.', message_id)
- return
-
- if isinstance(messageLines, str):
- messageLines = [messageLines]
-
- self.logger.info('Recording a %s message: %s',
- message_id, ' '.join(messageLines))
-
- # Ensure all auto-fixes are marked as such.
- if fix is not None and AUTO_FIX_STRING not in messageLines:
- messageLines.append(AUTO_FIX_STRING)
-
- if not frame:
- frame = currentframe().f_back
- if context is None:
- message = Message(message_id=message_id,
- message_type=severity,
- message=messageLines,
- context=self.storeMessageContext(group=group),
- replacement=replacement,
- see_also=see_also,
- fix=fix,
- frame=frame)
- else:
- message = Message(message_id=message_id,
- message_type=severity,
- message=messageLines,
- context=context,
- replacement=replacement,
- see_also=see_also,
- fix=fix,
- frame=frame)
- if fix is not None:
- self.fixes.add(fix)
- self.messages.append(message)
-
- def messageEnabled(self, message_id):
- """Return true if the given message ID is enabled."""
- return message_id in self.enabled_messages
-
- ###
- # Accessors for externally-interesting information
-
- def numDiagnostics(self):
- """Count the total number of diagnostics (errors or warnings) for this file."""
- return len(self.messages)
-
- def numErrors(self):
- """Count the total number of errors for this file."""
- return self.numMessagesOfType(MessageType.ERROR)
-
- def numMessagesOfType(self, message_type):
- """Count the number of messages of a particular type (severity)."""
- return len(
- [msg for msg in self.messages if msg.message_type == message_type])
-
- def hasFixes(self):
- """Return True if any messages included auto-fix patterns."""
- return len(self.fixes) > 0
-
- ###
- # Assorted internal methods.
- def printMessageCounts(self):
- """Print a simple count of each MessageType of diagnostics."""
- for message_type in [MessageType.ERROR, MessageType.WARNING]:
- count = self.numMessagesOfType(message_type)
- if count > 0:
- print('{num} {mtype}{s} generated.'.format(
- num=count, mtype=message_type, s=_s_suffix(count)))
-
- def dumpInternals(self):
- """Dump internal variables to screen, for debugging."""
- print('self.lineNum: ', self.lineNum)
- print('self.line:', self.line)
- print('self.prev_line_ref_page_tag: ', self.prev_line_ref_page_tag)
- print('self.current_ref_page:', self.current_ref_page)
-
- def getMissingValiditySuppressions(self):
- """Return an enumerable of entity names that we shouldn't warn about missing validity.
-
- May override.
- """
- return []
-
- def recordInclude(self, include_dict, generated_type=None):
- """Store the current line as being the location of an include directive or equivalent.
-
- Reports duplicate include errors, as well as include/ref-page mismatch or missing ref-page,
- by calling self.checkIncludeRefPageRelation() for "actual" includes (where generated_type is None).
-
- Arguments:
- include_dict -- The include dictionary to update: one of self.apiIncludes or self.validityIncludes.
- generated_type -- The type of include (e.g. 'api', 'valid', etc). By default, extracted from self.match.
- """
- entity = self.match.group('entity_name')
- if generated_type is None:
- generated_type = self.match.group('generated_type')
-
- # Only checking the ref page relation if it's retrieved from regex.
- # Otherwise it might be a manual anchor recorded as an include,
- # etc.
- self.checkIncludeRefPageRelation(entity, generated_type)
-
- if entity in include_dict:
- self.error(MessageId.DUPLICATE_INCLUDE,
- "Included {} docs for {} when they were already included.".format(generated_type,
- entity), see_also=include_dict[entity])
- include_dict[entity].append(self.storeMessageContext())
- else:
- include_dict[entity] = [self.storeMessageContext()]
-
- def getInnermostBlockEntry(self):
- """Get the BlockEntry for the top block delim on our stack."""
- if not self.block_stack:
- return None
- return self.block_stack[-1]
-
- def getInnermostBlockDelimiter(self):
- """Get the delimiter for the top block on our stack."""
- top = self.getInnermostBlockEntry()
- if not top:
- return None
- return top.delimiter
-
- def pushBlock(self, block_type, refpage=None, context=None, delimiter=None):
- """Push a new entry on the block stack."""
- if not delimiter:
- self.logger.info("pushBlock: not given delimiter")
- delimiter = self.line
- if not context:
- context = self.storeMessageContext()
-
- old_top_delim = self.getInnermostBlockDelimiter()
-
- self.block_stack.append(BlockEntry(
- delimiter=delimiter,
- context=context,
- refpage=refpage,
- block_type=block_type))
-
- location = self.getBriefLocation(context)
- self.logger.info(
- "pushBlock: %s: Pushed %s delimiter %s, previous top was %s, now %d elements on the stack",
- location, block_type.value, delimiter, old_top_delim, len(self.block_stack))
-
- self.dumpBlockStack()
-
- def popBlock(self):
- """Pop and return the top entry from the block stack."""
- old_top = self.block_stack.pop()
- location = self.getBriefLocation(old_top.context)
- self.logger.info(
- "popBlock: %s: popping %s delimiter %s, now %d elements on the stack",
- location, old_top.block_type.value, old_top.delimiter, len(self.block_stack))
-
- self.dumpBlockStack()
-
- return old_top
-
- def dumpBlockStack(self):
- self.logger.debug('Block stack, top first:')
- for distFromTop, x in enumerate(reversed(self.block_stack)):
- self.logger.debug(' - block_stack[%d]: Line %d: "%s" refpage=%s',
- -1 - distFromTop,
- x.context.lineNum, x.delimiter, x.refpage)
-
- def getBriefLocation(self, context):
- """Format a context briefly - omitting the filename if it has newlines in it."""
- if '\n' in context.filename:
- return 'input string line {}'.format(context.lineNum)
- return '{}:{}'.format(
- context.filename, context.lineNum)
-
- ###
- # Handlers for a variety of diagnostic-meriting conditions
- #
- # Split out for clarity and for allowing fine-grained override on a per-project basis.
- ###
-
- def handleIncludeMissingRefPage(self, entity, generated_type):
- """Report a message about an include outside of a ref-page block."""
- msg = ["Found {} include for {} outside of a reference page block.".format(generated_type, entity),
- "This is probably a missing reference page block."]
- refpage = self.computeExpectedRefPageFromInclude(entity)
- data = self.checker.findEntity(refpage)
- if data:
- msg.append('Expected ref page block might start like:')
- msg.append(self.makeRefPageTag(refpage, data=data))
- else:
- msg.append(
- "But, expected ref page entity name {} isn't recognized...".format(refpage))
- self.warning(MessageId.REFPAGE_MISSING, msg)
-
- def handleIncludeMismatchRefPage(self, entity, generated_type):
- """Report a message about an include not matching its containing ref-page block."""
- self.warning(MessageId.REFPAGE_MISMATCH, "Found {} include for {}, inside the reference page block of {}".format(
- generated_type, entity, self.current_ref_page.entity))
-
- def handleWrongMacro(self, msg, data):
- """Report an appropriate message when we found that the macro used is incorrect.
-
- May be overridden depending on each API's behavior regarding macro misuse:
- e.g. in some cases, it may be considered a MessageId.LEGACY warning rather than
- a MessageId.WRONG_MACRO or MessageId.EXTENSION.
- """
- message_type = MessageType.WARNING
- message_id = MessageId.WRONG_MACRO
- group = 'macro'
-
- if data.category == EXTENSION_CATEGORY:
- # Ah, this is an extension
- msg.append(
- 'This is apparently an extension name, which should be marked up as a link.')
- message_id = MessageId.EXTENSION
- group = None # replace the whole thing
- else:
- # Non-extension, we found the macro though.
- message_type = MessageType.ERROR
- msg.append(AUTO_FIX_STRING)
- self.diag(message_type, message_id, msg,
- group=group, replacement=self.makeMacroMarkup(data=data), fix=self.makeFix(data=data))
-
- def handleExpectedRefpageBlock(self):
- """Handle expecting to see -- to start a refpage block, but not seeing that at all."""
- self.error(MessageId.REFPAGE_BLOCK,
- ["Expected, but did not find, a line containing only -- following a reference page tag,",
- "Pretending to insert one, for more readable messages."],
- see_also=[self.prev_line_ref_page_tag])
- # Fake "in ref page" regardless, to avoid spurious extra errors.
- self.processBlockDelimiter('--', BlockType.REF_PAGE_LIKE,
- context=self.prev_line_ref_page_tag)
-
- ###
- # Construct related values (typically named tuples) based on object state and supplied arguments.
- #
- # Results are typically supplied to another method call.
- ###
-
- def storeMessageContext(self, group=None, match=None):
- """Create message context from corresponding instance variables.
-
- Arguments:
- group -- The regex group name, if any, identifying the part of the match to highlight.
- match -- The regex match. If None, will use self.match.
- """
- if match is None:
- match = self.match
- return MessageContext(filename=self.filename,
- lineNum=self.lineNum,
- line=self.line,
- match=match,
- group=group)
-
- def makeFix(self, newMacro=None, newEntity=None, data=None):
- """Construct a fix pair for replacing the old macro:entity with new.
-
- Wrapper around self.makeSearch() and self.makeMacroMarkup().
- """
- return (self.makeSearch(), self.makeMacroMarkup(
- newMacro, newEntity, data))
-
- def makeSearch(self):
- """Construct the string self.macro:self.entity, for use in the old text part of a fix pair."""
- return '{}:{}'.format(self.macro, self.entity)
-
- def makeMacroMarkup(self, newMacro=None, newEntity=None, data=None):
- """Construct appropriate markup for referring to an entity.
-
- Typically constructs macro:entity, but can construct `<<EXTENSION_NAME>>` if the supplied
- entity is identified as an extension.
-
- Arguments:
- newMacro -- The macro to use. Defaults to data.macro (if available), otherwise self.macro.
- newEntity -- The entity to use. Defaults to data.entity (if available), otherwise self.entity.
- data -- An EntityData value corresponding to this entity. If not provided, will be looked up by newEntity.
- """
- if not newEntity:
- if data:
- newEntity = data.entity
- else:
- newEntity = self.entity
- if not newMacro:
- if data:
- newMacro = data.macro
- else:
- newMacro = self.macro
- if not data:
- data = self.checker.findEntity(newEntity)
- if data and data.category == EXTENSION_CATEGORY:
- return self.makeExtensionLink(newEntity)
- return '{}:{}'.format(newMacro, newEntity)
-
- def makeExtensionLink(self, newEntity=None):
- """Create a correctly-formatted link to an extension.
-
- Result takes the form `<<EXTENSION_NAME>>`.
-
- Argument:
- newEntity -- The extension name to link to. Defaults to self.entity.
- """
- if not newEntity:
- newEntity = self.entity
- return '`<<{}>>`'.format(newEntity)
-
- def computeExpectedRefPageFromInclude(self, entity):
- """Compute the expected ref page entity based on an include entity name."""
- # No-op in general.
- return entity
-
- def makeRefPageTag(self, entity, data=None,
- ref_type=None, desc='', xrefs=None):
- """Construct a ref page tag string from attribute values."""
- if ref_type is None and data is not None:
- ref_type = data.directory
- if ref_type is None:
- ref_type = "????"
- return "[open,refpage='{}',type='{}',desc='{}',xrefs='{}']".format(
- entity, ref_type, desc, ' '.join(xrefs or []))
diff --git a/codegen/vulkan/scripts/spec_tools/main.py b/codegen/vulkan/scripts/spec_tools/main.py
deleted file mode 100644
index 2cd4f69c..00000000
--- a/codegen/vulkan/scripts/spec_tools/main.py
+++ /dev/null
@@ -1,244 +0,0 @@
-"""Provides a re-usable command-line interface to a MacroChecker."""
-
-# Copyright (c) 2018-2019 Collabora, Ltd.
-#
-# SPDX-License-Identifier: Apache-2.0
-#
-# Author(s): Ryan Pavlik <ryan.pavlik@collabora.com>
-
-
-import argparse
-import logging
-import re
-from pathlib import Path
-
-from .shared import MessageId
-
-
-def checkerMain(default_enabled_messages, make_macro_checker,
- all_docs, available_messages=None):
- """Perform the bulk of the work for a command-line interface to a MacroChecker.
-
- Arguments:
- default_enabled_messages -- The MessageId values that should be enabled by default.
- make_macro_checker -- A function that can be called with a set of enabled MessageId to create a
- properly-configured MacroChecker.
- all_docs -- A list of all spec documentation files.
- available_messages -- a list of all MessageId values that can be generated for this project.
- Defaults to every value. (e.g. some projects don't have MessageId.LEGACY)
- """
- enabled_messages = set(default_enabled_messages)
- if not available_messages:
- available_messages = list(MessageId)
-
- disable_args = []
- enable_args = []
-
- parser = argparse.ArgumentParser()
- parser.add_argument(
- "--scriptlocation",
- help="Append the script location generated a message to the output.",
- action="store_true")
- parser.add_argument(
- "--verbose",
- "-v",
- help="Output 'info'-level development logging messages.",
- action="store_true")
- parser.add_argument(
- "--debug",
- "-d",
- help="Output 'debug'-level development logging messages (more verbose than -v).",
- action="store_true")
- parser.add_argument(
- "-Werror",
- "--warning_error",
- help="Make warnings act as errors, exiting with non-zero error code",
- action="store_true")
- parser.add_argument(
- "--include_warn",
- help="List all expected but unseen include files, not just those that are referenced.",
- action='store_true')
- parser.add_argument(
- "-Wmissing_refpages",
- help="List all entities with expected but unseen ref page blocks. NOT included in -Wall!",
- action='store_true')
- parser.add_argument(
- "--include_error",
- help="Make expected but unseen include files cause exiting with non-zero error code",
- action='store_true')
- parser.add_argument(
- "--broken_error",
- help="Make missing include/anchor for linked-to entities cause exiting with non-zero error code. Weaker version of --include_error.",
- action='store_true')
- parser.add_argument(
- "--dump_entities",
- help="Just dump the parsed entity data to entities.json and exit.",
- action='store_true')
- parser.add_argument(
- "--html",
- help="Output messages to the named HTML file instead of stdout.")
- parser.add_argument(
- "file",
- help="Only check the indicated file(s). By default, all chapters and extensions are checked.",
- nargs="*")
- parser.add_argument(
- "--ignore_count",
- type=int,
- help="Ignore up to the given number of errors without exiting with a non-zero error code.")
- parser.add_argument("-Wall",
- help="Enable all warning categories.",
- action='store_true')
-
- for message_id in MessageId:
- enable_arg = message_id.enable_arg()
- enable_args.append((message_id, enable_arg))
-
- disable_arg = message_id.disable_arg()
- disable_args.append((message_id, disable_arg))
- if message_id in enabled_messages:
- parser.add_argument('-' + disable_arg, action="store_true",
- help="Disable message category {}: {}".format(str(message_id), message_id.desc()))
- # Don't show the enable flag in help since it's enabled by default
- parser.add_argument('-' + enable_arg, action="store_true",
- help=argparse.SUPPRESS)
- else:
- parser.add_argument('-' + enable_arg, action="store_true",
- help="Enable message category {}: {}".format(str(message_id), message_id.desc()))
- # Don't show the disable flag in help since it's disabled by
- # default
- parser.add_argument('-' + disable_arg, action="store_true",
- help=argparse.SUPPRESS)
-
- args = parser.parse_args()
-
- arg_dict = vars(args)
- for message_id, arg in enable_args:
- if args.Wall or (arg in arg_dict and arg_dict[arg]):
- enabled_messages.add(message_id)
-
- for message_id, arg in disable_args:
- if arg in arg_dict and arg_dict[arg]:
- enabled_messages.discard(message_id)
-
- if args.verbose:
- logging.basicConfig(level='INFO')
-
- if args.debug:
- logging.basicConfig(level='DEBUG')
-
- checker = make_macro_checker(enabled_messages)
-
- if args.dump_entities:
- with open('entities.json', 'w', encoding='utf-8') as f:
- f.write(checker.getEntityJson())
- exit(0)
-
- if args.file:
- files = (str(Path(f).resolve()) for f in args.file)
- else:
- files = all_docs
-
- for fn in files:
- checker.processFile(fn)
-
- if args.html:
- from .html_printer import HTMLPrinter
- printer = HTMLPrinter(args.html)
- else:
- from .console_printer import ConsolePrinter
- printer = ConsolePrinter()
-
- if args.scriptlocation:
- printer.show_script_location = True
-
- if args.file:
- printer.output("Only checked specified files.")
- for f in args.file:
- printer.output(f)
- else:
- printer.output("Checked all chapters and extensions.")
-
- if args.warning_error:
- numErrors = checker.numDiagnostics()
- else:
- numErrors = checker.numErrors()
-
- check_includes = args.include_warn
- check_broken = not args.file
-
- if args.file and check_includes:
- print('Note: forcing --include_warn off because only checking supplied files.')
- check_includes = False
-
- printer.outputResults(checker, broken_links=(not args.file),
- missing_includes=check_includes)
-
- if check_broken:
- numErrors += len(checker.getBrokenLinks())
-
- if args.file and args.include_error:
- print('Note: forcing --include_error off because only checking supplied files.')
- args.include_error = False
- if args.include_error:
- numErrors += len(checker.getMissingUnreferencedApiIncludes())
-
- check_missing_refpages = args.Wmissing_refpages
- if args.file and check_missing_refpages:
- print('Note: forcing -Wmissing_refpages off because only checking supplied files.')
- check_missing_refpages = False
-
- if check_missing_refpages:
- missing = checker.getMissingRefPages()
- if missing:
- printer.output("Expected, but did not find, ref page blocks for the following {} entities: {}".format(
- len(missing),
- ', '.join(missing)
- ))
- if args.warning_error:
- numErrors += len(missing)
-
- printer.close()
-
- if args.broken_error and not args.file:
- numErrors += len(checker.getBrokenLinks())
-
- if checker.hasFixes():
- fixFn = 'applyfixes.sh'
- print('Saving shell script to apply fixes as {}'.format(fixFn))
- with open(fixFn, 'w', encoding='utf-8') as f:
- f.write('#!/bin/sh -e\n')
- for fileChecker in checker.files:
- wroteComment = False
- for msg in fileChecker.messages:
- if msg.fix is not None:
- if not wroteComment:
- f.write('\n# {}\n'.format(fileChecker.filename))
- wroteComment = True
- search, replace = msg.fix
- f.write(
- r"sed -i -r 's~\b{}\b~{}~g' {}".format(
- re.escape(search),
- replace,
- fileChecker.filename))
- f.write('\n')
-
- print('Total number of errors with this run: {}'.format(numErrors))
-
- if args.ignore_count:
- if numErrors > args.ignore_count:
- # Exit with non-zero error code so that we "fail" CI, etc.
- print('Exceeded specified limit of {}, so exiting with error'.format(
- args.ignore_count))
- exit(1)
- else:
- print('At or below specified limit of {}, so exiting with success'.format(
- args.ignore_count))
- exit(0)
-
- if numErrors:
- # Exit with non-zero error code so that we "fail" CI, etc.
- print('Exiting with error')
- exit(1)
- else:
- print('Exiting with success')
- exit(0)
diff --git a/codegen/vulkan/scripts/spec_tools/shared.py b/codegen/vulkan/scripts/spec_tools/shared.py
deleted file mode 100644
index bb6f1657..00000000
--- a/codegen/vulkan/scripts/spec_tools/shared.py
+++ /dev/null
@@ -1,257 +0,0 @@
-"""Types, constants, and utility functions used by multiple sub-modules in spec_tools."""
-
-# Copyright (c) 2018-2019 Collabora, Ltd.
-#
-# SPDX-License-Identifier: Apache-2.0
-#
-# Author(s): Ryan Pavlik <ryan.pavlik@collabora.com>
-
-import platform
-from collections import namedtuple
-from enum import Enum
-from inspect import getframeinfo
-from pathlib import Path
-from sys import stdout
-
-# if we have termcolor and we know our stdout is a TTY,
-# pull it in and use it.
-if hasattr(stdout, 'isatty') and stdout.isatty():
- try:
- from termcolor import colored as colored_impl
- HAVE_COLOR = True
- except ImportError:
- HAVE_COLOR = False
-elif platform.system() == 'Windows':
- try:
- from termcolor import colored as colored_impl
- import colorama
- colorama.init()
- HAVE_COLOR = True
- except ImportError:
- HAVE_COLOR = False
-
-else:
- HAVE_COLOR = False
-
-
-def colored(s, color=None, attrs=None):
- """Call termcolor.colored with same arguments if this is a tty and it is available."""
- if HAVE_COLOR:
- return colored_impl(s, color, attrs=attrs)
- return s
-
-
-###
-# Constants used in multiple places.
-AUTO_FIX_STRING = 'Note: Auto-fix available.'
-EXTENSION_CATEGORY = 'extension'
-CATEGORIES_WITH_VALIDITY = set(('protos', 'structs'))
-NON_EXISTENT_MACROS = set(('plink', 'ttext', 'dtext'))
-
-###
-# MessageContext: All the information about where a message relates to.
-MessageContext = namedtuple('MessageContext',
- ['filename', 'lineNum', 'line',
- 'match', 'group'])
-
-
-def getInterestedRange(message_context):
- """Return a (start, end) pair of character index for the match in a MessageContext."""
- if not message_context.match:
- # whole line
- return (0, len(message_context.line))
- return (message_context.match.start(), message_context.match.end())
-
-
-def getHighlightedRange(message_context):
- """Return a (start, end) pair of character index for the highlighted range in a MessageContext."""
- if message_context.group is not None and message_context.match is not None:
- return (message_context.match.start(message_context.group),
- message_context.match.end(message_context.group))
- # no group (whole match) or no match (whole line)
- return getInterestedRange(message_context)
-
-
-def toNameAndLine(context, root_path=None):
- """Convert MessageContext into a simple filename:line string."""
- my_fn = Path(context.filename)
- if root_path:
- my_fn = my_fn.relative_to(root_path)
- return '{}:{}'.format(str(my_fn), context.lineNum)
-
-
-def generateInclude(dir_traverse, generated_type, category, entity):
- """Create an include:: directive for geneated api or validity from the various pieces."""
- return 'include::{directory_traverse}{generated_type}/{category}/{entity_name}.txt[]'.format(
- directory_traverse=dir_traverse,
- generated_type=generated_type,
- category=category,
- entity_name=entity)
-
-
-# Data stored per entity (function, struct, enumerant type, enumerant, extension, etc.)
-EntityData = namedtuple(
- 'EntityData', ['entity', 'macro', 'elem', 'filename', 'category', 'directory'])
-
-
-class MessageType(Enum):
- """Type of a message."""
-
- WARNING = 1
- ERROR = 2
- NOTE = 3
-
- def __str__(self):
- """Format a MessageType as a lowercase string."""
- return str(self.name).lower()
-
- def formattedWithColon(self):
- """Format a MessageType as a colored, lowercase string followed by a colon."""
- if self == MessageType.WARNING:
- return colored(str(self) + ':', 'magenta', attrs=['bold'])
- if self == MessageType.ERROR:
- return colored(str(self) + ':', 'red', attrs=['bold'])
- return str(self) + ':'
-
-
-class MessageId(Enum):
- """Enumerates the varieties of messages that can be generated.
-
- Control over enabled messages with -Wbla or -Wno_bla is per-MessageId.
- """
-
- MISSING_TEXT = 1
- LEGACY = 2
- WRONG_MACRO = 3
- MISSING_MACRO = 4
- BAD_ENTITY = 5
- BAD_ENUMERANT = 6
- BAD_MACRO = 7
- UNRECOGNIZED_CONTEXT = 8
- UNKNOWN_MEMBER = 9
- DUPLICATE_INCLUDE = 10
- UNKNOWN_INCLUDE = 11
- API_VALIDITY_ORDER = 12
- UNDOCUMENTED_MEMBER = 13
- MEMBER_PNAME_MISSING = 14
- MISSING_VALIDITY_INCLUDE = 15
- MISSING_API_INCLUDE = 16
- MISUSED_TEXT = 17
- EXTENSION = 18
- REFPAGE_TAG = 19
- REFPAGE_MISSING_DESC = 20
- REFPAGE_XREFS = 21
- REFPAGE_XREFS_COMMA = 22
- REFPAGE_TYPE = 23
- REFPAGE_NAME = 24
- REFPAGE_BLOCK = 25
- REFPAGE_MISSING = 26
- REFPAGE_MISMATCH = 27
- REFPAGE_UNKNOWN_ATTRIB = 28
- REFPAGE_SELF_XREF = 29
- REFPAGE_XREF_DUPE = 30
- REFPAGE_WHITESPACE = 31
- REFPAGE_DUPLICATE = 32
- UNCLOSED_BLOCK = 33
-
- def __str__(self):
- """Format as a lowercase string."""
- return self.name.lower()
-
- def enable_arg(self):
- """Return the corresponding Wbla string to make the 'enable this message' argument."""
- return 'W{}'.format(self.name.lower())
-
- def disable_arg(self):
- """Return the corresponding Wno_bla string to make the 'enable this message' argument."""
- return 'Wno_{}'.format(self.name.lower())
-
- def desc(self):
- """Return a brief description of the MessageId suitable for use in --help."""
- return MessageId.DESCRIPTIONS[self]
-
-
-MessageId.DESCRIPTIONS = {
- MessageId.MISSING_TEXT: "a *text: macro is expected but not found",
- MessageId.LEGACY: "legacy usage of *name: macro when *link: is applicable",
- MessageId.WRONG_MACRO: "wrong macro used for an entity",
- MessageId.MISSING_MACRO: "a macro might be missing",
- MessageId.BAD_ENTITY: "entity not recognized, etc.",
- MessageId.BAD_ENUMERANT: "unrecognized enumerant value used in ename:",
- MessageId.BAD_MACRO: "unrecognized macro used",
- MessageId.UNRECOGNIZED_CONTEXT: "pname used with an unrecognized context",
- MessageId.UNKNOWN_MEMBER: "pname used but member/argument by that name not found",
- MessageId.DUPLICATE_INCLUDE: "duplicated include line",
- MessageId.UNKNOWN_INCLUDE: "include line specified file we wouldn't expect to exists",
- MessageId.API_VALIDITY_ORDER: "saw API include after validity include",
- MessageId.UNDOCUMENTED_MEMBER: "saw an apparent struct/function documentation, but missing a member",
- MessageId.MEMBER_PNAME_MISSING: "pname: missing from a 'scope' operator",
- MessageId.MISSING_VALIDITY_INCLUDE: "missing validity include",
- MessageId.MISSING_API_INCLUDE: "missing API include",
- MessageId.MISUSED_TEXT: "a *text: macro is found but not expected",
- MessageId.EXTENSION: "an extension name is incorrectly marked",
- MessageId.REFPAGE_TAG: "a refpage tag is missing an expected field",
- MessageId.REFPAGE_MISSING_DESC: "a refpage tag has an empty description",
- MessageId.REFPAGE_XREFS: "an unrecognized entity is mentioned in xrefs of a refpage tag",
- MessageId.REFPAGE_XREFS_COMMA: "a comma was founds in xrefs of a refpage tag, which is space-delimited",
- MessageId.REFPAGE_TYPE: "a refpage tag has an incorrect type field",
- MessageId.REFPAGE_NAME: "a refpage tag has an unrecognized entity name in its refpage field",
- MessageId.REFPAGE_BLOCK: "a refpage block is not correctly opened or closed.",
- MessageId.REFPAGE_MISSING: "an API include was found outside of a refpage block.",
- MessageId.REFPAGE_MISMATCH: "an API or validity include was found in a non-matching refpage block.",
- MessageId.REFPAGE_UNKNOWN_ATTRIB: "a refpage tag has an unrecognized attribute",
- MessageId.REFPAGE_SELF_XREF: "a refpage tag has itself in the list of cross-references",
- MessageId.REFPAGE_XREF_DUPE: "a refpage cross-references list has at least one duplicate",
- MessageId.REFPAGE_WHITESPACE: "a refpage cross-references list has non-minimal whitespace",
- MessageId.REFPAGE_DUPLICATE: "a refpage tag has been seen for a single entity for a second time",
- MessageId.UNCLOSED_BLOCK: "one or more blocks remain unclosed at the end of a file"
-}
-
-
-class Message(object):
- """An Error, Warning, or Note with a MessageContext, MessageId, and message text.
-
- May optionally have a replacement, a see_also array, an auto-fix,
- and a stack frame where the message was created.
- """
-
- def __init__(self, message_id, message_type, message, context,
- replacement=None, see_also=None, fix=None, frame=None):
- """Construct a Message.
-
- Typically called by MacroCheckerFile.diag().
- """
- self.message_id = message_id
-
- self.message_type = message_type
-
- if isinstance(message, str):
- self.message = [message]
- else:
- self.message = message
-
- self.context = context
- if context is not None and context.match is not None and context.group is not None:
- if context.group not in context.match.groupdict():
- raise RuntimeError(
- 'Group "{}" does not exist in the match'.format(context.group))
-
- self.replacement = replacement
-
- self.fix = fix
-
- if see_also is None:
- self.see_also = None
- elif isinstance(see_also, MessageContext):
- self.see_also = [see_also]
- else:
- self.see_also = see_also
-
- self.script_location = None
- if frame:
- try:
- frameinfo = getframeinfo(frame)
- self.script_location = "{}:{}".format(
- frameinfo.filename, frameinfo.lineno)
- finally:
- del frame
diff --git a/codegen/vulkan/scripts/spec_tools/util.py b/codegen/vulkan/scripts/spec_tools/util.py
deleted file mode 100644
index b8906798..00000000
--- a/codegen/vulkan/scripts/spec_tools/util.py
+++ /dev/null
@@ -1,58 +0,0 @@
-"""Utility functions not closely tied to other spec_tools types."""
-# Copyright 2018-2019 Collabora, Ltd.
-# Copyright 2013-2021 The Khronos Group Inc.
-#
-# SPDX-License-Identifier: Apache-2.0
-
-
-def getElemName(elem, default=None):
- """Get the name associated with an element, either a name child or name attribute."""
- name_elem = elem.find('name')
- if name_elem is not None:
- return name_elem.text
- # Fallback if there is no child.
- return elem.get('name', default)
-
-
-def getElemType(elem, default=None):
- """Get the type associated with an element, either a type child or type attribute."""
- type_elem = elem.find('type')
- if type_elem is not None:
- return type_elem.text
- # Fallback if there is no child.
- return elem.get('type', default)
-
-
-def findFirstWithPredicate(collection, pred):
- """Return the first element that satisfies the predicate, or None if none exist.
-
- NOTE: Some places where this is used might be better served by changing to a dictionary.
- """
- for elt in collection:
- if pred(elt):
- return elt
- return None
-
-
-def findNamedElem(elems, name):
- """Traverse a collection of elements with 'name' nodes or attributes, looking for and returning one with the right name.
-
- NOTE: Many places where this is used might be better served by changing to a dictionary.
- """
- return findFirstWithPredicate(elems, lambda elem: getElemName(elem) == name)
-
-
-def findTypedElem(elems, typename):
- """Traverse a collection of elements with 'type' nodes or attributes, looking for and returning one with the right typename.
-
- NOTE: Many places where this is used might be better served by changing to a dictionary.
- """
- return findFirstWithPredicate(elems, lambda elem: getElemType(elem) == typename)
-
-
-def findNamedObject(collection, name):
- """Traverse a collection of elements with 'name' attributes, looking for and returning one with the right name.
-
- NOTE: Many places where this is used might be better served by changing to a dictionary.
- """
- return findFirstWithPredicate(collection, lambda elt: elt.name == name)
diff --git a/codegen/vulkan/scripts/spec_tools/validity.py b/codegen/vulkan/scripts/spec_tools/validity.py
deleted file mode 100644
index 745ba013..00000000
--- a/codegen/vulkan/scripts/spec_tools/validity.py
+++ /dev/null
@@ -1,216 +0,0 @@
-#!/usr/bin/python3 -i
-#
-# Copyright 2013-2021 The Khronos Group Inc.
-#
-# SPDX-License-Identifier: Apache-2.0
-
-import re
-
-
-_A_VS_AN_RE = re.compile(r' a ([a-z]+:)?([aAeEiIoOxX]\w+\b)(?!:)')
-
-_STARTS_WITH_MACRO_RE = re.compile(r'^[a-z]+:.*')
-
-
-def _checkAnchorComponents(anchor):
- """Raise an exception if any component of a VUID anchor name is illegal."""
- if anchor:
- # Any other invalid things in an anchor name should be detected here.
- if any((' ' in anchor_part for anchor_part in anchor)):
- raise RuntimeError("Illegal component of a VUID anchor name!")
-
-
-def _fix_a_vs_an(s):
- """Fix usage (often generated) of the indefinite article 'a' when 'an' is appropriate.
-
- Explicitly excludes the markup macros."""
- return _A_VS_AN_RE.sub(r' an \1\2', s)
-
-
-class ValidityCollection:
- """Combines validity for a single entity."""
-
- def __init__(self, entity_name=None, conventions=None, strict=True):
- self.entity_name = entity_name
- self.conventions = conventions
- self.lines = []
- self.strict = strict
-
- def possiblyAddExtensionRequirement(self, extension_name, entity_preface):
- """Add an extension-related validity statement if required.
-
- entity_preface is a string that goes between "must be enabled prior to "
- and the name of the entity, and normally ends in a macro.
- For instance, might be "calling flink:" for a function.
- """
- if extension_name and not extension_name.startswith(self.conventions.api_version_prefix):
- msg = 'The {} extension must: be enabled prior to {}{}'.format(
- self.conventions.formatExtension(extension_name), entity_preface, self.entity_name)
- self.addValidityEntry(msg, anchor=('extension', 'notenabled'))
-
- def addValidityEntry(self, msg, anchor=None):
- """Add a validity entry, optionally with a VUID anchor.
-
- If any trailing arguments are supplied,
- an anchor is generated by concatenating them with dashes
- at the end of the VUID anchor name.
- """
- if not msg:
- raise RuntimeError("Tried to add a blank validity line!")
- parts = ['*']
- _checkAnchorComponents(anchor)
- if anchor:
- if not self.entity_name:
- raise RuntimeError('Cannot add a validity entry with an anchor to a collection that does not know its entity name.')
- parts.append('[[{}]]'.format(
- '-'.join(['VUID', self.entity_name] + list(anchor))))
- parts.append(msg)
- combined = _fix_a_vs_an(' '.join(parts))
- if combined in self.lines:
- raise RuntimeError("Duplicate validity added!")
- self.lines.append(combined)
-
- def addText(self, msg):
- """Add already formatted validity text."""
- if self.strict:
- raise RuntimeError('addText called when collection in strict mode')
- if not msg:
- return
- msg = msg.rstrip()
- if not msg:
- return
- self.lines.append(msg)
-
- def _extend(self, lines):
- lines = list(lines)
- dupes = set(lines).intersection(self.lines)
- if dupes:
- raise RuntimeError("The two sets contain some shared entries! " + str(dupes))
- self.lines.extend(lines)
-
- def __iadd__(self, other):
- """Perform += with a string, iterable, or ValidityCollection."""
- if other is None:
- pass
- elif isinstance(other, str):
- if self.strict:
- raise RuntimeError(
- 'Collection += a string when collection in strict mode')
- if not other:
- # empty string
- pass
- elif other.startswith('*'):
- # Handle already-formatted
- self.addText(other)
- else:
- # Do the formatting ourselves.
- self.addValidityEntry(other)
- elif isinstance(other, ValidityEntry):
- if other:
- if other.verbose:
- print(self.entity_name, 'Appending', str(other))
- self.addValidityEntry(str(other), anchor=other.anchor)
- elif isinstance(other, ValidityCollection):
- if not self.entity_name == other.entity_name:
- raise RuntimeError(
- "Trying to combine two ValidityCollections for different entities!")
- self._extend(other.lines)
- else:
- # Deal with other iterables.
- self._extend(other)
-
- return self
-
- def __bool__(self):
- """Is the collection non-empty?"""
- empty = not self.lines
- return not empty
-
- @property
- def text(self):
- """Access validity statements as a single string or None."""
- if not self.lines:
- return None
- return '\n'.join(self.lines) + '\n'
-
- def __str__(self):
- """Access validity statements as a single string or empty string."""
- if not self:
- return ''
- return self.text
-
- def __repr__(self):
- return '<ValidityCollection: {}>'.format(self.lines)
-
-
-class ValidityEntry:
- """A single validity line in progress."""
-
- def __init__(self, text=None, anchor=None):
- """Prepare to add a validity entry, optionally with a VUID anchor.
-
- An anchor is generated by concatenating the elements of the anchor tuple with dashes
- at the end of the VUID anchor name.
- """
- _checkAnchorComponents(anchor)
- if isinstance(anchor, str):
- # anchor needs to be a tuple
- anchor = (anchor,)
-
- # VUID does not allow special chars except ":"
- if anchor is not None:
- anchor = [(anchor_value.replace('->', '::').replace('.', '::')) for anchor_value in anchor]
-
- self.anchor = anchor
- self.parts = []
- self.verbose = False
- if text:
- self.append(text)
-
- def append(self, part):
- """Append a part of a string.
-
- If this is the first entry part and the part doesn't start
- with a markup macro, the first character will be capitalized."""
- if not self.parts and not _STARTS_WITH_MACRO_RE.match(part):
- self.parts.append(part[:1].upper())
- self.parts.append(part[1:])
- else:
- self.parts.append(part)
- if self.verbose:
- print('ValidityEntry', id(self), 'after append:', str(self))
-
- def drop_end(self, n):
- """Remove up to n trailing characters from the string."""
- temp = str(self)
- n = min(len(temp), n)
- self.parts = [temp[:-n]]
-
- def __iadd__(self, other):
- """Perform += with a string,"""
- self.append(other)
- return self
-
- def __bool__(self):
- """Return true if we have something more than just an anchor."""
- empty = not self.parts
- return not empty
-
- def __str__(self):
- """Access validity statement as a single string or empty string."""
- if not self:
- raise RuntimeError("No parts added?")
- return ''.join(self.parts).strip()
-
- def __repr__(self):
- parts = ['<ValidityEntry: ']
- if self:
- parts.append('"')
- parts.append(str(self))
- parts.append('"')
- else:
- parts.append('EMPTY')
- if self.anchor:
- parts.append(', anchor={}'.format('-'.join(self.anchor)))
- parts.append('>')
- return ''.join(parts)
diff --git a/codegen/vulkan/scripts/spirvcapgenerator.py b/codegen/vulkan/scripts/spirvcapgenerator.py
deleted file mode 100644
index 85740f34..00000000
--- a/codegen/vulkan/scripts/spirvcapgenerator.py
+++ /dev/null
@@ -1,308 +0,0 @@
-#!/usr/bin/python3 -i
-#
-# Copyright 2013-2021 The Khronos Group Inc.
-#
-# SPDX-License-Identifier: Apache-2.0
-
-from generator import OutputGenerator, write
-from spec_tools.attributes import ExternSyncEntry
-from spec_tools.util import getElemName
-
-import pdb
-
-def makeLink(link, altlink = None):
- """Create an asciidoctor link, optionally with altlink text
- if provided"""
-
- if altlink is not None:
- return '<<{},{}>>'.format(link, altlink)
- else:
- return '<<{}>>'.format(link)
-
-class SpirvCapabilityOutputGenerator(OutputGenerator):
- """SpirvCapabilityOutputGenerator - subclass of OutputGenerator.
- Generates AsciiDoc includes of the SPIR-V capabilities table for the
- features chapter of the API specification.
-
- ---- methods ----
- SpirvCapabilityOutputGenerator(errFile, warnFile, diagFile) - args as for
- OutputGenerator. Defines additional internal state.
- ---- methods overriding base class ----
- genCmd(cmdinfo)"""
-
- def __init__(self, *args, **kwargs):
- super().__init__(*args, **kwargs)
-
- def beginFile(self, genOpts):
- OutputGenerator.beginFile(self, genOpts)
-
- # Accumulate SPIR-V capability and feature information
- self.spirv = []
-
- def getCondition(self, enable):
- """Return a strings which is the condition under which an
- enable is supported.
-
- - enable - ElementTree corresponding to an <enable> XML tag for a
- SPIR-V capability or extension"""
-
- if enable.get('version'):
- # Turn VK_API_VERSION_1_0 -> VK_VERSION_1_0
- return enable.get('version').replace('API_', '')
- elif enable.get('extension'):
- return enable.get('extension')
- elif enable.get('struct') or enable.get('property'):
- return enable.get('requires')
- else:
- self.logMsg('error', 'Unrecognized SPIR-V enable')
- return ''
-
- def getConditions(self, enables):
- """Return a sorted list of strings which are conditions under which
- one or more of the enables is supported.
-
- - enables - ElementTree corresponding to a <spirvcapability> or
- <spirvextension> XML tag"""
-
- conditions = set()
- for enable in enables.findall('enable'):
- condition = self.getCondition(enable)
- if condition != None:
- conditions.add(condition)
- return sorted(conditions)
-
- def endFile(self):
- captable = []
- exttable = []
-
- # How to "indent" a pseudo-column for better use of space.
- # {captableindent} is defined in appendices/spirvenv.txt
- indent = '{captableindent}'
-
- for elem in self.spirv:
- conditions = self.getConditions(elem)
-
- # Combine all conditions for enables and surround the row with
- # them
- if len(conditions) > 0:
- condition_string = ','.join(conditions)
- prefix = [ 'ifdef::{}[]'.format(condition_string) ]
- suffix = [ 'endif::{}[]'.format(condition_string) ]
- else:
- prefix = []
- suffix = []
-
- body = []
-
- # Generate an anchor for each capability
- if elem.tag == 'spirvcapability':
- anchor = '[[spirvenv-capabilities-table-{}]]'.format(
- elem.get('name'))
- else:
- # <spirvextension> entries don't get anchors
- anchor = ''
-
- # First "cell" in a table row, and a break for the other "cells"
- body.append('| {}code:{} +'.format(anchor, elem.get('name')))
-
- # Iterate over each enable emitting a formatting tag for it
- # Protect the term if there is a version or extension
- # requirement, and if there are multiple enables (otherwise,
- # the ifdef protecting the entire row will suffice).
-
- enables = [e for e in elem.findall('enable')]
-
- remaining = len(enables)
- for subelem in enables:
- remaining -= 1
-
- # Sentinel value
- linktext = None
- if subelem.get('version'):
- version = subelem.get('version')
-
- # Convert API enum VK_API_VERSION_m_n to conditional
- # used for spec builds (VK_VERSION_m_n)
- enable = version.replace('API_', '')
- # Convert API enum to anchor for version appendices (versions-m.n)
- link = 'versions-' + version[-3:].replace('_', '.')
- altlink = version
-
- linktext = makeLink(link, altlink)
- elif subelem.get('extension'):
- extension = subelem.get('extension')
-
- enable = extension
- link = extension
- altlink = None
-
- # This uses the extension name macro, rather than
- # asciidoc markup
- linktext = '`apiext:{}`'.format(extension)
- elif subelem.get('struct'):
- struct = subelem.get('struct')
- feature = subelem.get('feature')
- requires = subelem.get('requires')
- alias = subelem.get('alias')
-
- link_name = feature
- # For cases, like bufferDeviceAddressEXT where need manual help
- if alias:
- link_name = alias
-
- enable = requires
- link = 'features-' + link_name
- altlink = 'sname:{}::pname:{}'.format(struct, feature)
-
- linktext = makeLink(link, altlink)
- else:
- property = subelem.get('property')
- member = subelem.get('member')
- requires = subelem.get('requires')
- value = subelem.get('value')
-
- enable = requires
- # Properties should have a "feature" prefix
- link = 'limits-' + member
- # Display the property value by itself if it is not a boolean (matches original table)
- # DenormPreserve is an example where it makes sense to just show the
- # member value as it is just a boolean and the name implies "true"
- # GroupNonUniformVote is an example where the whole name is too long
- # better to just display the value
- if value == "VK_TRUE":
- altlink = 'sname:{}::pname:{}'.format(property, member)
- else:
- altlink = '{}'.format(value)
-
- linktext = makeLink(link, altlink)
-
- # If there are no more enables, don't continue the last line
- if remaining > 0:
- continuation = ' +'
- else:
- continuation = ''
-
- # condition_string != enable is a small optimization
- if enable is not None and condition_string != enable:
- body.append('ifdef::{}[]'.format(enable))
- body.append('{} {}{}'.format(indent, linktext, continuation))
- if enable is not None and condition_string != enable:
- body.append('endif::{}[]'.format(enable))
-
- if elem.tag == 'spirvcapability':
- captable += prefix + body + suffix
- else:
- exttable += prefix + body + suffix
-
- # Generate the asciidoc include files
- self.writeBlock('captable.txt', captable)
- self.writeBlock('exttable.txt', exttable)
-
- # Finish processing in superclass
- OutputGenerator.endFile(self)
-
- def writeBlock(self, basename, contents):
- """Generate an include file.
-
- - directory - subdirectory to put file in
- - basename - base name of the file
- - contents - contents of the file (Asciidoc boilerplate aside)"""
-
- filename = self.genOpts.directory + '/' + basename
- self.logMsg('diag', '# Generating include file:', filename)
- with open(filename, 'w', encoding='utf-8') as fp:
- write(self.genOpts.conventions.warning_comment, file=fp)
-
- if len(contents) > 0:
- for str in contents:
- write(str, file=fp)
- else:
- self.logMsg('diag', '# No contents for:', filename)
-
- def paramIsArray(self, param):
- """Check if the parameter passed in is a pointer to an array."""
- return param.get('len') is not None
-
- def paramIsPointer(self, param):
- """Check if the parameter passed in is a pointer."""
- tail = param.find('type').tail
- return tail is not None and '*' in tail
-
- def makeThreadSafetyBlocks(self, cmd, paramtext):
- # See also makeThreadSafetyBlock in validitygenerator.py - similar but not entirely identical
- protoname = cmd.find('proto/name').text
-
- # Find and add any parameters that are thread unsafe
- explicitexternsyncparams = cmd.findall(paramtext + "[@externsync]")
- if explicitexternsyncparams is not None:
- for param in explicitexternsyncparams:
- self.makeThreadSafetyForParam(protoname, param)
-
- # Find and add any "implicit" parameters that are thread unsafe
- implicitexternsyncparams = cmd.find('implicitexternsyncparams')
- if implicitexternsyncparams is not None:
- for elem in implicitexternsyncparams:
- entry = ValidityEntry()
- entry += elem.text
- entry += ' in '
- entry += self.makeFLink(protoname)
- self.threadsafety['implicit'] += entry
-
- # Add a VU for any command requiring host synchronization.
- # This could be further parameterized, if a future non-Vulkan API
- # requires it.
- if self.genOpts.conventions.is_externsync_command(protoname):
- entry = ValidityEntry()
- entry += 'The sname:VkCommandPool that pname:commandBuffer was allocated from, in '
- entry += self.makeFLink(protoname)
- self.threadsafety['implicit'] += entry
-
- def makeThreadSafetyForParam(self, protoname, param):
- """Create thread safety validity for a single param of a command."""
- externsyncattribs = ExternSyncEntry.parse_externsync_from_param(param)
- param_name = getElemName(param)
-
- for attrib in externsyncattribs:
- entry = ValidityEntry()
- is_array = False
- if attrib.entirely_extern_sync:
- # "true" or "true_with_children"
- if self.paramIsArray(param):
- entry += 'Each element of the '
- is_array = True
- elif self.paramIsPointer(param):
- entry += 'The object referenced by the '
- else:
- entry += 'The '
-
- entry += self.makeParameterName(param_name)
- entry += ' parameter'
-
- if attrib.children_extern_sync:
- entry += ', and any child handles,'
-
- else:
- # parameter/member reference
- readable = attrib.get_human_readable(make_param_name=self.makeParameterName)
- is_array = (' element of ' in readable)
- entry += readable
-
- entry += ' in '
- entry += self.makeFLink(protoname)
-
- if is_array:
- self.threadsafety['parameterlists'] += entry
- else:
- self.threadsafety['parameters'] += entry
-
- def genSpirv(self, capinfo, name, alias):
- """Generate SPIR-V capabilities
-
- capinfo - dictionary entry for an XML <spirvcapability> or
- <spirvextension> element
- name - name attribute of capinfo.elem"""
-
- OutputGenerator.genSpirv(self, capinfo, name, alias)
-
- # Just accumulate each element, process in endFile
- self.spirv.append(capinfo.elem)
diff --git a/codegen/vulkan/scripts/testSpecVersion.py b/codegen/vulkan/scripts/testSpecVersion.py
deleted file mode 100755
index 4ead2b63..00000000
--- a/codegen/vulkan/scripts/testSpecVersion.py
+++ /dev/null
@@ -1,75 +0,0 @@
-#!/usr/bin/python3
-#
-# Copyright 2017-2021 The Khronos Group Inc.
-#
-# SPDX-License-Identifier: Apache-2.0
-
-# testSpecVersion - check if SPEC_VERSION values for an unpublished
-# extension branch meet the requirement of being 1.
-#
-# Usage: textSpecVersion.py [-branch branchname] [-registry file]
-#
-# Checks for an XML <extension> matching the branch name specified
-# on the command line, or the current branch if not specified.
-#
-# If not found, the branch is not an extension staging branch; succeed.
-# If found, but extension is disabled, don't run the test; succeed.
-# If found, and extension SPEC_VERSION has a value of '1', succeed.
-# Otherwise, fail.
-
-import argparse
-import sys
-import xml.etree.ElementTree as etree
-from reflib import getBranch
-
-if __name__ == '__main__':
- parser = argparse.ArgumentParser()
-
- parser.add_argument('-branch', action='store',
- default=None,
- help='Specify branch to check against')
- parser.add_argument('-registry', action='store',
- default='xml/vk.xml',
- help='Use specified registry file instead of vk.xml')
- args = parser.parse_args()
-
- try:
- tree = etree.parse(args.registry)
- except:
- print('ERROR - cannot open registry XML file', args.registry)
- sys.exit(1)
-
- errors = ''
- if args.branch is None:
- (args.branch, errors) = getBranch()
- if args.branch is None:
- print('ERROR - Cannot determine current git branch:', errors)
- sys.exit(1)
-
- elem = tree.find('extensions/extension[@name="' + args.branch + '"]')
-
- if elem == None:
- print('Success - assuming', args.branch, 'is not an extension branch')
- sys.exit(0)
-
- supported = elem.get('supported')
- if supported == 'disabled':
- print('Success - branch name', args.branch, 'matches, but extension is disabled')
- sys.exit(0)
-
- for enum in elem.findall('require/enum'):
- name = enum.get('name')
-
- if name is not None and name[-13:] == '_SPEC_VERSION':
- value = enum.get('value')
- if value == '1':
- print('Success - {} = 1 for branch {}'.format(
- name, args.branch))
- sys.exit(0)
- else:
- print('ERROR - {} = {} for branch {}, but must be 1'.format(
- name, value, args.branch))
- sys.exit(1)
-
- print('ERROR - no SPEC_VERSION token found for branch', args.branch)
- sys.exit(1)
diff --git a/codegen/vulkan/scripts/test_check_spec_links.py b/codegen/vulkan/scripts/test_check_spec_links.py
deleted file mode 100644
index b0c82e38..00000000
--- a/codegen/vulkan/scripts/test_check_spec_links.py
+++ /dev/null
@@ -1,643 +0,0 @@
-#!/usr/bin/python3
-#
-# Copyright (c) 2018-2019 Collabora, Ltd.
-#
-# SPDX-License-Identifier: Apache-2.0
-#
-# Author(s): Ryan Pavlik <ryan.pavlik@collabora.com>
-#
-# Purpose: This file contains tests for check_spec_links.py
-
-import pytest
-
-from check_spec_links import MessageId, makeMacroChecker
-from spec_tools.console_printer import ConsolePrinter
-from spec_tools.macro_checker_file import shouldEntityBeText
-
-# API-specific constants
-PROTO = 'vkCreateInstance'
-STRUCT = 'VkInstanceCreateInfo'
-EXT = 'VK_KHR_display'
-
-
-class CheckerWrapper(object):
- """Little wrapper object for a MacroChecker.
-
- Intended for use in making test assertions shorter and easier to read."""
-
- def __init__(self, capsys):
- self.ckr = makeMacroChecker(set())
- self.capsys = capsys
-
- def enabled(self, enabled_messages):
- """Updates the checker's enable message type set, from an iterable."""
- self.ckr.enabled_messages = set(enabled_messages)
- return self
-
- def check(self, string):
- """Checks a string (as if it were a file), outputs the results to the console, then returns the MacroCheckerFile."""
-
- # Flush the captured output.
- _ = self.capsys.readouterr()
-
- # Process
- f = self.ckr.processString(string + '\n')
-
- # Dump messages
- ConsolePrinter().output(f)
- return f
-
-
-@pytest.fixture
-def ckr(capsys):
- """Fixture - add an arg named ckr to your test function to automatically get one passed to you."""
- return CheckerWrapper(capsys)
-
-
-def msgReplacement(file_checker, which=0):
- """Return the replacement text associated with the specified message."""
- assert(len(file_checker.messages) > which)
- msg = file_checker.messages[which]
- from pprint import pprint
- pprint(msg.script_location)
- pprint(msg.replacement)
- pprint(msg.fix)
- return msg.replacement
-
-
-def loneMsgReplacement(file_checker):
- """Assert there's only one message in a file checker, and return the replacement text associated with it."""
- assert(len(file_checker.messages) == 1)
- return msgReplacement(file_checker)
-
-
-def message(file_checker, which=0):
- """Return a string of the message lines associated with the message of a file checker."""
- assert(len(file_checker.messages) > which)
- return "\n".join(file_checker.messages[which].message)
-
-
-def allMessages(file_checker):
- """Return a list of strings, each being the combination of the message lines of a message from a file checker."""
- return ['\n'.join(msg.message) for msg in file_checker.messages]
-
-
-def test_missing_macro(ckr):
- """Verify correct functioning of MessageId.MISSING_MACRO."""
- ckr.enabled([MessageId.MISSING_MACRO])
-
- # This should have a missing macro warning
- assert(ckr.check('with %s by' % PROTO).numDiagnostics() == 1)
-
- # These 3 should not have a missing macro warning because of their context
- # (in a link)
- assert(not ckr.check('<<%s' % PROTO).messages)
- # These 2 are simulating links that broke over lines
- assert(not ckr.check('%s>>' % PROTO).messages)
- assert(not ckr.check(
- '%s asdf>> table' % PROTO).messages)
-
-
-def test_entity_detection(ckr):
- ckr.enabled([MessageId.BAD_ENTITY])
- # Should complain about BAD_ENTITY
- assert(ckr.check('flink:abcd').numDiagnostics() == 1)
-
- # Should just give BAD_ENTITY (an error), not MISSING_TEXT (a warning).
- # Verifying that wrapping in asterisks (for formatting) doesn't get picked up as
- # an asterisk in the entity name (a placeholder).
- ckr.enabled(
- [MessageId.MISSING_TEXT, MessageId.BAD_ENTITY])
- assert(ckr.check('*flink:abcd*').numErrors() == 1)
-
-
-def test_wrong_macro(ckr):
- ckr.enabled([MessageId.WRONG_MACRO])
- # Should error - this ought to be code:uint32_t
- assert(ckr.check('basetype:uint32_t').numErrors() == 1)
-
- # This shouldn't error
- assert(ckr.check('code:uint32_t').numErrors() == 0)
-
-
-def test_should_entity_be_text():
- # These 5 are all examples of patterns that would merit usage of a ptext/etext/etc
- # macro, for various reasons:
-
- # has variable in subscript
- assert(shouldEntityBeText('pBuffers[i]', '[i]'))
- assert(shouldEntityBeText('API_ENUM_[X]', '[X]'))
-
- # has asterisk
- assert(shouldEntityBeText('maxPerStage*', None))
-
- # double-underscores make italicized placeholders
- # (triple are double-underscores delimited by underscores...)
- assert(shouldEntityBeText('API_ENUM[__x__]', '[__x__]'))
- assert(shouldEntityBeText('API_ENUM___i___EXT', None))
-
- # This shouldn't be a *text: macro because it only has single underscores
- assert(False == shouldEntityBeText('API_ENUM_i_EXT', None))
-
-
-def test_misused_text(ckr):
- # Tests the same patterns as test_should_entity_be_text(),
- # but in a whole checker
- ckr.enabled([MessageId.MISUSED_TEXT])
-
- assert(ckr.check('etext:API_ENUM_').numDiagnostics() == 0)
- assert(ckr.check('etext:API_ENUM_[X]').numDiagnostics() == 0)
- assert(ckr.check('etext:API_ENUM[i]').numDiagnostics() == 0)
- assert(ckr.check('etext:API_ENUM[__x__]').numDiagnostics() == 0)
-
- # Should be OK, since __i__ is a placeholder here
- assert(ckr.check('etext:API_ENUM___i___EXT').numDiagnostics() == 0)
-
- # This shouldn't be a *text: macro because it only has single underscores
- assert(ckr.check('API_ENUM_i_EXT').numDiagnostics() == 0)
-
-
-def test_extension(ckr):
- ckr.enabled(set(MessageId))
- # Check formatting of extension names:
- # the following is the canonical way to refer to an extension
- # (link wrapped in backticks)
- expected_replacement = '`<<%s>>`' % EXT
-
- # Extension name mentioned without any markup, should be added
- assert(loneMsgReplacement(ckr.check('asdf %s asdf' % EXT))
- == expected_replacement)
-
- # Extension name mentioned without any markup and wrong case,
- # should be added and have case fixed
- assert(loneMsgReplacement(ckr.check('asdf %s asdf' % EXT.upper()))
- == expected_replacement)
-
- # Extension name using wrong/old macro: ename isn't for extensions.
- assert(loneMsgReplacement(ckr.check('asdf ename:%s asdf' % EXT))
- == expected_replacement)
-
- # Extension name using wrong macro: elink isn't for extensions.
- assert(loneMsgReplacement(ckr.check('asdf elink:%s asdf' % EXT))
- == expected_replacement)
-
- # Extension name using wrong macro and wrong case: should have markup and
- # case fixed
- assert(loneMsgReplacement(ckr.check('asdf elink:%s asdf' % EXT.upper()))
- == expected_replacement)
-
- # This shouldn't cause errors because this is how we want it to look.
- assert(not ckr.check('asdf `<<%s>>` asdf' % EXT).messages)
-
- # This doesn't (shouldn't?) cause errors because just backticks on their own
- # "escape" names from the "missing markup" tests.
- assert(not ckr.check('asdf `%s` asdf' % EXT).messages)
-
- # TODO can we auto-correct this to add the backticks?
- # Doesn't error now, but would be nice if it did...
- assert(not ckr.check('asdf <<%s>> asdf' % EXT).messages)
-
-
-def test_refpage_tag(ckr):
- ckr.enabled([MessageId.REFPAGE_TAG])
-
- # Should error: missing refpage='' field
- assert(ckr.check("[open,desc='',type='',xrefs='']").numErrors() == 1)
- # Should error: missing desc='' field
- assert(ckr.check("[open,refpage='',type='',xrefs='']").numErrors() == 1)
- # Should error: missing type='' field
- assert(ckr.check("[open,refpage='',desc='',xrefs='']").numErrors() == 1)
-
- # Should not error: missing xrefs field is optional
- assert(not ckr.check("[open,refpage='',desc='',type='']").messages)
-
- # Should error, due to missing refpage, but not crash due to message printing (note the unicode smart quote)
- assert(ckr.check("[open,desc='',type='',xrefs=’']").numDiagnostics() == 1)
-
-
-def test_refpage_name(ckr):
- ckr.enabled([MessageId.REFPAGE_NAME])
- # Should not error: actually exists.
- assert(ckr.check(
- "[open,refpage='%s',desc='',type='']" % PROTO).numDiagnostics() == 0)
-
- # Should error: does not exist.
- assert(
- ckr.check("[open,refpage='bogus',desc='',type='']").numDiagnostics() == 1)
-
-
-def test_refpage_missing_desc(ckr):
- ckr.enabled([MessageId.REFPAGE_MISSING_DESC])
- # Should not warn: non-empty description actually exists.
- assert(ckr.check(
- "[open,refpage='',desc='non-empty description',type='']").numDiagnostics() == 0)
-
- # Should warn: desc field is empty.
- assert(
- ckr.check("[open,refpage='',desc='',type='']").numDiagnostics() == 1)
-
-
-def test_refpage_type(ckr):
- ckr.enabled([MessageId.REFPAGE_TYPE])
- # Should not error: this is of type 'protos'.
- assert(not ckr.check(
- "[open,refpage='%s',desc='',type='protos']" % PROTO).messages)
-
- # Should error: this is of type 'protos', not 'structs'.
- assert(
- ckr.check("[open,refpage='%s',desc='',type='structs']" % PROTO).messages)
-
-
-def test_refpage_xrefs(ckr):
- ckr.enabled([MessageId.REFPAGE_XREFS])
- # Should not error: this is a valid entity to have an xref to.
- assert(not ckr.check(
- "[open,refpage='',desc='',type='protos',xrefs='%s']" % STRUCT).messages)
-
- # case difference:
- # should error but offer a replacement.
- assert(loneMsgReplacement(ckr.check("[open,refpage='',xrefs='%s']" % STRUCT.lower()))
- == STRUCT)
-
- # Should error: not a valid entity.
- assert(ckr.check(
- "[open,refpage='',desc='',type='protos',xrefs='bogus']").numDiagnostics() == 1)
-
-
-def test_refpage_xrefs_comma(ckr):
- ckr.enabled([MessageId.REFPAGE_XREFS_COMMA])
- # Should not error: no commas in the xrefs field
- assert(not ckr.check(
- "[open,refpage='',xrefs='abc']").messages)
-
- # Should error: commas shouldn't be there since it's space-delimited.
- assert(loneMsgReplacement(
- ckr.check("[open,refpage='',xrefs='abc,']")) == 'abc')
-
- # All should correct to the same thing.
- equivalent_tags_with_commas = [
- "[open,refpage='',xrefs='abc, 123']",
- "[open,refpage='',xrefs='abc,123']",
- "[open,refpage='',xrefs='abc , 123']"]
- for has_comma in equivalent_tags_with_commas:
- assert(loneMsgReplacement(ckr.check(has_comma)) == 'abc 123')
-
-
-def test_refpage_block(ckr):
- """Tests of the REFPAGE_BLOCK message."""
- ckr.enabled([MessageId.REFPAGE_BLOCK])
- # Should not error: have the tag, an open, and a close
- assert(not ckr.check(
- """[open,]
- --
- bla
- --""").messages)
- assert(not ckr.check(
- """[open,refpage='abc']
- --
- bla
- --
-
- [open,refpage='123']
- --
- bla2
- --""").messages)
-
- # Should have 1 error: file ends immediately after tag
- assert(ckr.check(
- "[open,]").numDiagnostics() == 1)
-
- # Should have 1 error: line after tag isn't --
- assert(ckr.check(
- """[open,]
- bla
- --""").numDiagnostics() == 1)
- # Checking precedence of checks: this should have 1 error because line after tag isn't --
- # (but it is something that causes a line to be handled differently)
- assert(ckr.check(
- """[open,]
- == Heading
- --""").numDiagnostics() == 1)
- assert(ckr.check(
- """[open,]
- ----
- this is in a code block
- ----
- --""").numDiagnostics() == 1)
-
- # Should have 1 error: tag inside refpage.
- tag_inside = """[open,]
- --
- bla
- [open,]
- --"""
- assert(ckr.check(tag_inside).numDiagnostics() == 1)
- assert("already in a refpage block" in
- message(ckr.check(tag_inside)))
-
-
-def test_refpage_missing(ckr):
- """Test the REFPAGE_MISSING message."""
- ckr.enabled([MessageId.REFPAGE_MISSING])
- # Should not error: have the tag, an open, and the include
- assert(not ckr.check(
- """[open,refpage='%s']
- --
- include::{generated}/api/protos/%s.txt[]""" % (PROTO, PROTO)).messages)
- assert(not ckr.check(
- """[open,refpage='%s']
- --
- include::{generated}/validity/protos/%s.txt[]""" % (PROTO, PROTO)).messages)
-
- # Should not error: manual anchors shouldn't trigger this.
- assert(not ckr.check("[[%s]]" % PROTO).messages)
-
- # Should have 1 error: file ends immediately after include
- assert(ckr.check(
- "include::{generated}/api/protos/%s.txt[]" % PROTO).numDiagnostics() == 1)
- assert(ckr.check(
- "include::{generated}/validity/protos/%s.txt[]" % PROTO).numDiagnostics() == 1)
-
- # Should have 1 error: include is before the refpage open
- assert(ckr.check(
- """include::{generated}/api/protos/%s.txt[]
- [open,refpage='%s']
- --""" % (PROTO, PROTO)).numDiagnostics() == 1)
- assert(ckr.check(
- """include::{generated}/validity/protos/%s.txt[]
- [open,refpage='%s']
- --""" % (PROTO, PROTO)).numDiagnostics() == 1)
-
-
-def test_refpage_mismatch(ckr):
- """Test the REFPAGE_MISMATCH message."""
- ckr.enabled([MessageId.REFPAGE_MISMATCH])
- # Should not error: have the tag, an open, and a matching include
- assert(not ckr.check(
- """[open,refpage='%s']
- --
- include::{generated}/api/protos/%s.txt[]""" % (PROTO, PROTO)).messages)
- assert(not ckr.check(
- """[open,refpage='%s']
- --
- include::{generated}/validity/protos/%s.txt[]""" % (PROTO, PROTO)).messages)
-
- # Should error: have the tag, an open, and a mis-matching include
- assert(ckr.check(
- """[open,refpage='%s']
- --
- include::{generated}/api/structs/%s.txt[]""" % (PROTO, STRUCT)).numDiagnostics() == 1)
- assert(ckr.check(
- """[open,refpage='%s']
- --
- include::{generated}/validity/structs/%s.txt[]""" % (PROTO, STRUCT)).numDiagnostics() == 1)
-
-
-def test_refpage_unknown_attrib(ckr):
- """Check the REFPAGE_UNKNOWN_ATTRIB message."""
- ckr.enabled([MessageId.REFPAGE_UNKNOWN_ATTRIB])
- # Should not error: these are known attribute names
- assert(not ckr.check(
- "[open,refpage='',desc='',type='',xrefs='']").messages)
-
- # Should error: xref isn't an attribute name.
- assert(ckr.check(
- "[open,xref='']").numDiagnostics() == 1)
-
-
-def test_refpage_self_xref(ckr):
- """Check the REFPAGE_SELF_XREF message."""
- ckr.enabled([MessageId.REFPAGE_SELF_XREF])
- # Should not error: not self-referencing
- assert(not ckr.check(
- "[open,refpage='abc',xrefs='']").messages)
- assert(not ckr.check(
- "[open,refpage='abc',xrefs='123']").messages)
-
- # Should error: self-referencing isn't an attribute name.
- assert(loneMsgReplacement(
- ckr.check("[open,refpage='abc',xrefs='abc']")) == '')
- assert(loneMsgReplacement(
- ckr.check("[open,refpage='abc',xrefs='abc 123']")) == '123')
- assert(loneMsgReplacement(
- ckr.check("[open,refpage='abc',xrefs='123 abc']")) == '123')
-
-
-def test_refpage_xref_dupe(ckr):
- """Check the REFPAGE_XREF_DUPE message."""
- ckr.enabled([MessageId.REFPAGE_XREF_DUPE])
- # Should not error: no dupes
- assert(not ckr.check("[open,xrefs='']").messages)
- assert(not ckr.check("[open,xrefs='123']").messages)
- assert(not ckr.check("[open,xrefs='abc 123']").messages)
-
- # Should error: one dupe.
- assert(loneMsgReplacement(
- ckr.check("[open,xrefs='abc abc']")) == 'abc')
- assert(loneMsgReplacement(
- ckr.check("[open,xrefs='abc abc']")) == 'abc')
- assert(loneMsgReplacement(
- ckr.check("[open,xrefs='abc abc abc']")) == 'abc')
- assert(loneMsgReplacement(
- ckr.check("[open,xrefs='abc 123 abc']")) == 'abc 123')
- assert(loneMsgReplacement(
- ckr.check("[open,xrefs='123 abc abc']")) == '123 abc')
-
-
-def test_REFPAGE_WHITESPACE(ckr):
- """Check the REFPAGE_WHITESPACE message."""
- ckr.enabled([MessageId.REFPAGE_WHITESPACE])
- # Should not error: no extra whitespace
- assert(not ckr.check("[open,xrefs='']").messages)
- assert(not ckr.check("[open,xrefs='123']").messages)
- assert(not ckr.check("[open,xrefs='abc 123']").messages)
-
- # Should error: some extraneous whitespace.
- assert(loneMsgReplacement(
- ckr.check("[open,xrefs=' \t ']")) == '')
- assert(loneMsgReplacement(
- ckr.check("[open,xrefs=' abc 123 ']")) == 'abc 123')
- assert(loneMsgReplacement(
- ckr.check("[open,xrefs=' abc\t123 xyz ']")) == 'abc 123 xyz')
-
- # Should *NOT* remove self-reference, just extra whitespace
- assert(loneMsgReplacement(
- ckr.check("[open,refpage='abc',xrefs=' abc 123 ']")) == 'abc 123')
-
- # Even if we turn on the self-reference warning
- ckr.enabled([MessageId.REFPAGE_WHITESPACE, MessageId.REFPAGE_SELF_XREF])
- assert(msgReplacement(
- ckr.check("[open,refpage='abc',xrefs=' abc 123 ']"), 1) == 'abc 123')
-
-
-def test_REFPAGE_DUPLICATE(ckr):
- """Check the REFPAGE_DUPLICATE message."""
- ckr.enabled([MessageId.REFPAGE_DUPLICATE])
- # Should not error: no duplicate refpages.
- assert(not ckr.check("[open,refpage='abc']").messages)
- assert(not ckr.check("[open,refpage='123']").messages)
-
- # Should error: repeated refpage
- assert(ckr.check(
- """[open,refpage='abc']
- [open,refpage='abc']""").messages)
-
- # Should error: repeated refpage with something intervening
- assert(ckr.check(
- """[open,refpage='abc']
- [open,refpage='123']
- [open,refpage='abc']""").messages)
-
-
-def test_UNCLOSED_BLOCK(ckr):
- """Check the UNCLOSED_BLOCK message."""
- ckr.enabled([MessageId.UNCLOSED_BLOCK])
- # These should all have 0 errors
- assert(not ckr.check("== Heading").messages)
- assert(not ckr.check(
- """****
- == Heading
- ****""").messages)
- assert(not ckr.check(
- """****
- contents
- ****""").messages)
- assert(not ckr.check(
- """****
- [source,c]
- ----
- this is code
- ----
- ****""").messages)
- assert(not ckr.check(
- """[open,]
- --
- 123
-
- [source,c]
- ----
- this is code
- ----
- ****
- * this is in a box
- ****
-
- Now we can close the ref page.
- --""").messages)
-
- # These should all have 1 error because I removed a block close.
- # Because some of them, the missing block close is an interior one, the stack might look weird,
- # but it's still only 1 error - no matter how many are left unclosed.
- assert(ckr.check(
- """****
- == Heading""").numDiagnostics() == 1)
- assert(ckr.check(
- """****
- contents""").numDiagnostics() == 1)
- assert(ckr.check(
- """****
- [source,c]
- ----
- this is code
- ****""").numDiagnostics() == 1)
- assert(ckr.check(
- """****
- [source,c]
- ----
- this is code
- ----""").numDiagnostics() == 1)
- assert(ckr.check(
- """[open,]
- --
- 123
-
- [source,c]
- ----
- this is code
- ----
- ****
- * this is in a box
- ****""").numDiagnostics() == 1)
- assert(ckr.check(
- """[open,]
- --
- 123
-
- [source,c]
- ----
- this is code
- ----
- ****
- * this is in a box
- --""").numDiagnostics() == 1)
- assert(ckr.check(
- """[open,]
- --
- 123
-
- [source,c]
- ----
- this is code
- ****
- * this is in a box
- ****
-
- Now we can close the ref page.
- --""").numDiagnostics() == 1)
- assert(ckr.check(
- """[open,]
- --
- 123
-
- [source,c]
- ----
- this is code
- ****
- * this is in a box
-
- Now we can close the ref page.
- --""").numDiagnostics() == 1)
- assert(ckr.check(
- """[open,]
- --
- 123
-
- [source,c]
- ----
- this is code
- ****
- * this is in a box""").numDiagnostics() == 1)
-
- # This should have 0 errors of UNCLOSED_BLOCK: the missing opening -- should get automatically fake-inserted,
- assert(not ckr.check(
- """[open,]
- == Heading
- --""").messages)
-
- # Should have 1 error: block left open at end of file
- assert(ckr.check(
- """[open,]
- --
- bla""").numDiagnostics() == 1)
-
-
-def test_code_block_tracking(ckr):
- """Check to make sure that no other messages get triggered in a code block."""
- ckr.enabled([MessageId.BAD_ENTITY])
-
- # Should have 1 error: not a valid entity
- assert(ckr.check("slink:BogusStruct").numDiagnostics() == 1)
- assert(ckr.check(
- """****
- * slink:BogusStruct
- ****""").numDiagnostics() == 1)
-
- # should have zero errors: the invalid entity is inside a code block,
- # so it shouldn't be parsed.
- # (In reality, it's mostly the MISSING_MACRO message that might interact with code block tracking,
- # but this is easier to test in an API-agnostic way.)
- assert(not ckr.check(
- """[source,c]
- ----
- This code happens to include the characters slink:BogusStruct
- ----""").messages)
diff --git a/codegen/vulkan/scripts/test_check_spec_links_api_specific.py b/codegen/vulkan/scripts/test_check_spec_links_api_specific.py
deleted file mode 100644
index 76ce6a9e..00000000
--- a/codegen/vulkan/scripts/test_check_spec_links_api_specific.py
+++ /dev/null
@@ -1,122 +0,0 @@
-#!/usr/bin/python3
-#
-# Copyright (c) 2018-2019 Collabora, Ltd.
-#
-# SPDX-License-Identifier: Apache-2.0
-#
-# Author(s): Ryan Pavlik <ryan.pavlik@collabora.com>
-#
-# Purpose: This file contains tests for check_spec_links.py
-# that depend on the API being used.
-
-import pytest
-
-from check_spec_links import MacroChecker, MessageId, makeMacroChecker
-from spec_tools.console_printer import ConsolePrinter
-from spec_tools.macro_checker_file import shouldEntityBeText
-from test_check_spec_links import (CheckerWrapper, allMessages,
- loneMsgReplacement, message, msgReplacement)
-
-
-@pytest.fixture
-def ckr(capsys):
- """Fixture - add an arg named ckr to your test function to automatically get one passed to you."""
- return CheckerWrapper(capsys)
-
-
-def test_vulkan_refpage_mismatch(ckr):
- """Vulkan-specific tests of the REFPAGE_MISMATCH message."""
- ckr.enabled([MessageId.REFPAGE_MISMATCH])
- # Should error: this is actually a mismatch in Vulkan
- assert(ckr.check(
- """[open,refpage='VkQueueFlags']
- --
- include::{generated}/api/enums/VkQueueFlagBits.txt[]""").numDiagnostics() == 1)
- assert(ckr.check(
- """[open,refpage='VkQueueFlags']
- --
- include::{generated}/validity/enums/VkQueueFlagBits.txt[]""").numDiagnostics() == 1)
-
- # Should not error: this is just an alias
- assert(ckr.check(
- """[open,refpage='vkUpdateDescriptorSetWithTemplate']
- --
- include::{generated}/api/protos/vkUpdateDescriptorSetWithTemplateKHR.txt[]""").numDiagnostics() == 0)
-
-
-def test_vulkan_refpage_missing(ckr):
- """Vulkan-specific tests of the REFPAGE_MISSING message."""
- ckr.enabled([MessageId.REFPAGE_MISSING])
-
- # Should error: flags are expected to have their own ref page.
- assert(ckr.check(
- "include::{generated}/api/flags/VkQueueFlags.txt[]").numDiagnostics() == 1)
-
-
-def test_vulkan_refpage_block(ckr):
- """Vulkan-specific tests of the REFPAGE_BLOCK message."""
- ckr.enabled([MessageId.REFPAGE_BLOCK])
-
- # Should have no errors: Non-refpage usage of '--' is acceptable
- assert(not ckr.check(
- """--
- bla
- --""").messages)
-
- # Should have 1 error:
- # - line after tag isn't '--'
- result = ckr.check(
- """--
- [open,]
- bla
- --""")
- assert(result.numDiagnostics() == 1)
- # Internally, it's as if the following were the spec source, after putting in the "fake" lines
- # (each of the added lines comes from one message):
- #
- # --
- # [open,]
- # --
- # bla
- # --
- assert("but did not find, a line containing only -- following a reference page tag" in message(result))
-
-
-def test_vulkan_legacy(ckr):
- """Test the LEGACY message which is Vulkan-only."""
- ckr.enabled([MessageId.LEGACY])
- # Should complain about LEGACY
- assert(ckr.check('sname:VkDeviceMemory').numDiagnostics() == 1)
-
-
-def test_vulkan_alias(ckr):
- """Tests of the aliasing data structure, dependent on Vulkan-specific registry."""
- entity_db = ckr.ckr.entity_db
-
- assert(entity_db.areAliases(
- 'VkCommandPoolTrimFlagsKHR', 'VkCommandPoolTrimFlags'))
- # Try one reversed-order, though the assert in that method should fire if this is wrong.
- assert(entity_db.areAliases(
- 'VkCommandPoolTrimFlags', 'VkCommandPoolTrimFlagsKHR'))
-
- assert(entity_db.areAliases(
- 'VkDescriptorUpdateTemplateKHR', 'VkDescriptorUpdateTemplate'))
- assert(entity_db.areAliases('VkDescriptorUpdateTemplateTypeKHR',
- 'VkDescriptorUpdateTemplateType'))
- assert(entity_db.areAliases('VkQueueFamilyProperties2KHR',
- 'VkQueueFamilyProperties2'))
- assert(entity_db.areAliases('VK_COLORSPACE_SRGB_NONLINEAR_KHR',
- 'VK_COLOR_SPACE_SRGB_NONLINEAR_KHR'))
- assert(entity_db.areAliases('vkEnumeratePhysicalDeviceGroupsKHR',
- 'vkEnumeratePhysicalDeviceGroups'))
- assert(entity_db.areAliases(
- 'vkCmdDrawIndirectCountAMD', 'vkCmdDrawIndirectCountKHR'))
- assert(entity_db.areAliases('VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT',
- 'VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT'))
-
- assert(entity_db.areAliases('VK_LUID_SIZE_KHR', 'VK_LUID_SIZE'))
-
-def test_vulkan_entity_detection(ckr):
- ckr.enabled([MessageId.BAD_ENTITY])
- # Should complain about BAD_ENTITY even though it's sname
- assert(ckr.check('sname:VkInstanceCreateInfoBOGUS').numDiagnostics() == 1)
diff --git a/codegen/vulkan/scripts/test_entity_db.py b/codegen/vulkan/scripts/test_entity_db.py
deleted file mode 100644
index ef08794c..00000000
--- a/codegen/vulkan/scripts/test_entity_db.py
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/usr/bin/python3 -i
-#
-# Copyright (c) 2018-2019 Collabora, Ltd.
-#
-# SPDX-License-Identifier: Apache-2.0
-#
-# Author(s): Ryan Pavlik <ryan.pavlik@collabora.com>
-
-
-import pytest
-
-from check_spec_links import VulkanEntityDatabase
-
-
-@pytest.fixture
-def db():
- ret = VulkanEntityDatabase()
- # print(ret.getEntityJson())
- return ret
-
-
-def test_likely_recognized(db):
- assert(db.likelyRecognizedEntity('vkBla'))
- assert(db.likelyRecognizedEntity('VkBla'))
- assert(db.likelyRecognizedEntity('VK_BLA'))
-
-
-def test_db(db):
- assert(db.findEntity('vkCreateInstance'))
-
- # VKAPI_CALL is not referenced, so not added to EntityDatabase.
- # assert(db.findEntity('VKAPI_CALL'))
diff --git a/codegen/vulkan/scripts/translate_math.js b/codegen/vulkan/scripts/translate_math.js
deleted file mode 100644
index c2fd6d26..00000000
--- a/codegen/vulkan/scripts/translate_math.js
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2020-2021 The Khronos Group, Inc.
-//
-// SPDX-License-Identifier: Apache-2.0
-
-// Translates the latexmath in html on build time using KaTeX
-// Usage: nodejs translate_math.js katex/katex.min.js vkspec.html
-
-const katex = require(process.argv[2]);
-const fs = require("fs");
-const escapeRegex = require("escape-string-regexp");
-const he = require('he');
-
-const filepath = process.argv[3];
-
-var html = fs.readFileSync(filepath, "utf8");
-
-const delimiters = [
- //{ left: "$$", right: "$$", display: true},
- { left: "\\[", right: "\\]", display: true},
- //{ left: "$", right: "$", display: false},
- { left: "\\(", right: "\\)", display: false}
- ]
-
-for( var delim of delimiters ) {
- const regex = new RegExp( escapeRegex(delim.left) + "([\\S\\s]*?)" + escapeRegex(delim.right), "g");
- html = html.replace( regex,
- function(match, g1) {
- return katex.renderToString( he.decode(g1, {'strict': true}), {displayMode: delim.display, output: 'html', strict: true} );
- }
- );
-}
-
-fs.writeFileSync(filepath, html, 'utf8');
diff --git a/codegen/vulkan/scripts/validitygenerator.py b/codegen/vulkan/scripts/validitygenerator.py
deleted file mode 100755
index a3a84561..00000000
--- a/codegen/vulkan/scripts/validitygenerator.py
+++ /dev/null
@@ -1,1497 +0,0 @@
-#!/usr/bin/python3 -i
-#
-# Copyright 2013-2021 The Khronos Group Inc.
-#
-# SPDX-License-Identifier: Apache-2.0
-
-import re
-from collections import OrderedDict, namedtuple
-from functools import reduce
-from pathlib import Path
-
-from conventions import ProseListFormats as plf
-from generator import OutputGenerator, write
-from spec_tools.attributes import ExternSyncEntry, LengthEntry
-from spec_tools.util import (findNamedElem, findNamedObject, findTypedElem,
- getElemName, getElemType)
-from spec_tools.validity import ValidityCollection, ValidityEntry
-
-
-# For parsing/splitting queue bit names - Vulkan only
-QUEUE_BITS_RE = re.compile(r'([^,]+)')
-
-
-class UnhandledCaseError(RuntimeError):
- def __init__(self, msg=None):
- if msg:
- super().__init__('Got a case in the validity generator that we have not explicitly handled: ' + msg)
- else:
- super().__init__('Got a case in the validity generator that we have not explicitly handled.')
-
-
-def _genericIterateIntersection(a, b):
- """Iterate through all elements in a that are also in b.
-
- Somewhat like a set's intersection(),
- but not type-specific so it can work with OrderedDicts, etc.
- It also returns a generator instead of a set,
- so you can pick what container type you'd like,
- if any.
- """
- return (x for x in a if x in b)
-
-
-def _make_ordered_dict(gen):
- """Make an ordered dict (with None as the values) from a generator."""
- return OrderedDict(((x, None) for x in gen))
-
-
-def _orderedDictIntersection(a, b):
- return _make_ordered_dict(_genericIterateIntersection(a, b))
-
-
-def _genericIsDisjoint(a, b):
- """Return true if nothing in a is also in b.
-
- Like a set's is_disjoint(),
- but not type-specific so it can work with OrderedDicts, etc.
- """
- for _ in _genericIterateIntersection(a, b):
- return False
- # if we never enter the loop...
- return True
-
-
-def _parse_queue_bits(cmd):
- """Return a generator of queue bits, with underscores turned to spaces.
-
- Vulkan-only.
-
- Return None if the queues attribute is not specified."""
- queuetypes = cmd.get('queues')
- if not queuetypes:
- return None
- return (qt.replace('_', ' ')
- for qt in QUEUE_BITS_RE.findall(queuetypes))
-
-
-class ValidityOutputGenerator(OutputGenerator):
- """ValidityOutputGenerator - subclass of OutputGenerator.
-
- Generates AsciiDoc includes of valid usage information, for reference
- pages and the specification. Similar to DocOutputGenerator.
-
- ---- methods ----
- ValidityOutputGenerator(errFile, warnFile, diagFile) - args as for
- OutputGenerator. Defines additional internal state.
- ---- methods overriding base class ----
- beginFile(genOpts)
- endFile()
- beginFeature(interface, emit)
- endFeature()
- genCmd(cmdinfo)
- """
-
- def __init__(self, *args, **kwargs):
- super().__init__(*args, **kwargs)
-
- self.currentExtension = ''
-
- @property
- def null(self):
- """Preferred spelling of NULL.
-
- Delegates to the object implementing ConventionsBase.
- """
- return self.conventions.null
-
- @property
- def structtype_member_name(self):
- """Return name of the structure type member.
-
- Delegates to the object implementing ConventionsBase.
- """
- return self.conventions.structtype_member_name
-
- @property
- def nextpointer_member_name(self):
- """Return name of the structure pointer chain member.
-
- Delegates to the object implementing ConventionsBase.
- """
- return self.conventions.nextpointer_member_name
-
- def makeProseList(self, elements, fmt=plf.AND,
- comma_for_two_elts=False, *args, **kwargs):
- """Make a (comma-separated) list for use in prose.
-
- Adds a connective (by default, 'and')
- before the last element if there are more than 1.
-
- Optionally adds a quantifier (like 'any') before a list of 2 or more,
- if specified by fmt.
-
- Delegates to the object implementing ConventionsBase.
- """
- if not elements:
- raise ValueError(
- 'Cannot pass an empty list if you are trying to make a prose list.')
- return self.conventions.makeProseList(elements,
- fmt,
- with_verb=False,
- comma_for_two_elts=comma_for_two_elts,
- *args, **kwargs)
-
- def makeProseListIs(self, elements, fmt=plf.AND,
- comma_for_two_elts=False, *args, **kwargs):
- """Make a (comma-separated) list for use in prose, followed by either 'is' or 'are' as appropriate.
-
- Adds a connective (by default, 'and')
- before the last element if there are more than 1.
-
- Optionally adds a quantifier (like 'any') before a list of 2 or more,
- if specified by fmt.
-
- Delegates to the object implementing ConventionsBase.
- """
- if not elements:
- raise ValueError(
- 'Cannot pass an empty list if you are trying to make a prose list.')
- return self.conventions.makeProseList(elements,
- fmt,
- with_verb=True,
- comma_for_two_elts=comma_for_two_elts,
- *args, **kwargs)
-
- def makeValidityCollection(self, entity_name):
- """Create a ValidityCollection object, passing along our Conventions."""
- return ValidityCollection(entity_name, self.conventions)
-
- def beginFile(self, genOpts):
- if not genOpts.conventions:
- raise RuntimeError(
- 'Must specify conventions object to generator options')
- self.conventions = genOpts.conventions
- # Vulkan says 'must: be a valid pointer' a lot, OpenXR just says
- # 'must: be a pointer'.
- self.valid_pointer_text = ' '.join(
- (x for x in (self.conventions.valid_pointer_prefix, 'pointer') if x))
- OutputGenerator.beginFile(self, genOpts)
-
- def endFile(self):
- OutputGenerator.endFile(self)
-
- def beginFeature(self, interface, emit):
- # Start processing in superclass
- OutputGenerator.beginFeature(self, interface, emit)
- self.currentExtension = interface.get('name')
-
- def endFeature(self):
- # Finish processing in superclass
- OutputGenerator.endFeature(self)
-
- @property
- def struct_macro(self):
- """Get the appropriate format macro for a structure."""
- # delegate to conventions
- return self.conventions.struct_macro
-
- def makeStructName(self, name):
- """Prepend the appropriate format macro for a structure to a structure type name."""
- # delegate to conventions
- return self.conventions.makeStructName(name)
-
- def makeParameterName(self, name):
- """Prepend the appropriate format macro for a parameter/member to a parameter name."""
- return 'pname:' + name
-
- def makeBaseTypeName(self, name):
- """Prepend the appropriate format macro for a 'base type' to a type name."""
- return 'basetype:' + name
-
- def makeEnumerationName(self, name):
- """Prepend the appropriate format macro for an enumeration type to a enum type name."""
- return 'elink:' + name
-
- def makeFlagsName(self, name):
- """Prepend the appropriate format macro for a flags type to a flags type name."""
- return 'tlink:' + name
-
- def makeFuncPointerName(self, name):
- """Prepend the appropriate format macro for a function pointer type to a type name."""
- return 'tlink:' + name
-
- def makeExternalTypeName(self, name):
- """Prepend the appropriate format macro for an external type like uint32_t to a type name."""
- # delegate to conventions
- return self.conventions.makeExternalTypeName(name)
-
- def makeEnumerantName(self, name):
- """Prepend the appropriate format macro for an enumerate (value) to a enum value name."""
- return 'ename:' + name
-
- def writeInclude(self, directory, basename, validity: ValidityCollection,
- threadsafety, commandpropertiesentry=None,
- successcodes=None, errorcodes=None):
- """Generate an include file.
-
- directory - subdirectory to put file in (absolute or relative pathname)
- basename - base name of the file
- validity - ValidityCollection to write.
- threadsafety - List (may be empty) of thread safety statements to write.
- successcodes - Optional success codes to document.
- errorcodes - Optional error codes to document.
- """
- # Create subdirectory, if needed
- directory = Path(directory)
- if not directory.is_absolute():
- directory = Path(self.genOpts.directory) / directory
- self.makeDir(str(directory))
-
- # Create validity file
- filename = str(directory / (basename + '.txt'))
- self.logMsg('diag', '# Generating include file:', filename)
-
- with open(filename, 'w', encoding='utf-8') as fp:
- write(self.conventions.warning_comment, file=fp)
-
- # Valid Usage
- if validity:
- write('.Valid Usage (Implicit)', file=fp)
- write('****', file=fp)
- write(validity, file=fp, end='')
- write('****', file=fp)
- write('', file=fp)
-
- # Host Synchronization
- if threadsafety:
- # The heading of this block differs between projects, so an Asciidoc attribute is used.
- write('.{externsynctitle}', file=fp)
- write('****', file=fp)
- write(threadsafety, file=fp, end='')
- write('****', file=fp)
- write('', file=fp)
-
- # Command Properties - contained within a block, to avoid table numbering
- if commandpropertiesentry:
- write('.Command Properties', file=fp)
- write('****', file=fp)
- write('[options="header", width="100%"]', file=fp)
- write('|====', file=fp)
- write('|<<VkCommandBufferLevel,Command Buffer Levels>>|<<vkCmdBeginRenderPass,Render Pass Scope>>|<<VkQueueFlagBits,Supported Queue Types>>', file=fp)
- write(commandpropertiesentry, file=fp)
- write('|====', file=fp)
- write('****', file=fp)
- write('', file=fp)
-
- # Success Codes - contained within a block, to avoid table numbering
- if successcodes or errorcodes:
- write('.Return Codes', file=fp)
- write('****', file=fp)
- if successcodes:
- write('ifndef::doctype-manpage[]', file=fp)
- write('<<fundamentals-successcodes,Success>>::', file=fp)
- write('endif::doctype-manpage[]', file=fp)
- write('ifdef::doctype-manpage[]', file=fp)
- write('On success, this command returns::', file=fp)
- write('endif::doctype-manpage[]', file=fp)
- write(successcodes, file=fp)
- if errorcodes:
- write('ifndef::doctype-manpage[]', file=fp)
- write('<<fundamentals-errorcodes,Failure>>::', file=fp)
- write('endif::doctype-manpage[]', file=fp)
- write('ifdef::doctype-manpage[]', file=fp)
- write('On failure, this command returns::', file=fp)
- write('endif::doctype-manpage[]', file=fp)
- write(errorcodes, file=fp)
- write('****', file=fp)
- write('', file=fp)
-
- def paramIsPointer(self, param):
- """Check if the parameter passed in is a pointer."""
- tail = param.find('type').tail
- return tail is not None and '*' in tail
-
- def paramIsStaticArray(self, param):
- """Check if the parameter passed in is a static array."""
- tail = param.find('name').tail
- return tail and tail[0] == '['
-
- def paramIsConst(self, param):
- """Check if the parameter passed in has a type that mentions const."""
- return param.text is not None and 'const' in param.text
-
- def staticArrayLength(self, param):
- """Get the length of a parameter that's been identified as a static array."""
- paramenumsize = param.find('enum')
- if paramenumsize is not None:
- return paramenumsize.text
- # TODO switch to below when cosmetic changes OK
- # return self.makeEnumerantName(paramenumsize.text)
-
- return param.find('name').tail[1:-1]
-
- def paramIsArray(self, param):
- """Check if the parameter passed in is a pointer to an array."""
- return param.get('len') is not None
-
- def getHandleDispatchableAncestors(self, typename):
- """Get the ancestors of a handle object."""
- ancestors = []
- current = typename
- while True:
- current = self.getHandleParent(current)
- if current is None:
- return ancestors
- if self.isHandleTypeDispatchable(current):
- ancestors.append(current)
-
- def isHandleTypeDispatchable(self, handlename):
- """Check if a parent object is dispatchable or not."""
- handle = self.registry.tree.find(
- "types/type/[name='" + handlename + "'][@category='handle']")
- if handle is not None and getElemType(handle) == 'VK_DEFINE_HANDLE':
- return True
- else:
- return False
-
- def isHandleOptional(self, param, params):
- # Simple, if it's optional, return true
- if param.get('optional') is not None:
- return True
-
- # If no validity is being generated, it usually means that validity is complex and not absolute, so let's say yes.
- if param.get('noautovalidity') is not None:
- return True
-
- # If the parameter is an array and we haven't already returned, find out if any of the len parameters are optional
- if self.paramIsArray(param):
- for length in LengthEntry.parse_len_from_param(param):
- if not length.other_param_name:
- # don't care about constants or "null-terminated"
- continue
-
- other_param = findNamedElem(params, length.other_param_name)
- if other_param is None:
- self.logMsg('warn', length.other_param_name,
- 'is listed as a length for parameter', param, 'but no such parameter exists')
- if other_param and other_param.get('optional'):
- return True
-
- return False
-
- def makeOptionalPre(self, param):
- # Don't generate this stub for bitflags
- param_name = getElemName(param)
- paramtype = getElemType(param)
- type_category = self.getTypeCategory(paramtype)
- is_optional = param.get('optional').split(',')[0] == 'true'
- if type_category != 'bitmask' and is_optional:
- if self.paramIsArray(param) or self.paramIsPointer(param):
- optional_val = self.null
- elif type_category == 'handle':
- if self.isHandleTypeDispatchable(paramtype):
- optional_val = self.null
- else:
- optional_val = 'dlink:' + self.conventions.api_prefix + 'NULL_HANDLE'
- else:
- optional_val = self.conventions.zero
- return 'If {} is not {}, '.format(
- self.makeParameterName(param_name),
- optional_val)
-
- return ""
-
- def makeParamValidityPre(self, param, params, selector):
- """Make the start of an entry for a parameter's validity, including a chunk of text if it is an array."""
- param_name = getElemName(param)
- paramtype = getElemType(param)
-
- # General pre-amble. Check optionality and add stuff.
- entry = ValidityEntry(anchor=(param_name, 'parameter'))
- is_optional = param.get('optional') is not None and param.get('optional').split(',')[0] == 'true'
-
- # This is for a union member, and the valid member is chosen by an enum selection
- if selector:
- selection = param.get('selection')
-
- entry += 'If {} is {}, '.format(
- self.makeParameterName(selector),
- self.makeEnumerantName(selection))
-
- if is_optional:
- entry += "and "
- optionalpre = self.makeOptionalPre(param)
- entry += optionalpre[0].lower() + optionalpre[1:]
-
- return entry
-
- if self.paramIsStaticArray(param):
- if paramtype != 'char':
- entry += 'Any given element of '
- return entry
-
- if self.paramIsArray(param) and param.get('len') != LengthEntry.NULL_TERMINATED_STRING:
- # Find all the parameters that are called out as optional,
- # so we can document that they might be zero, and the array may be ignored
- optionallengths = []
- for length in LengthEntry.parse_len_from_param(param):
- if not length.other_param_name:
- # Only care about length entries that are parameter names
- continue
-
- other_param = findNamedElem(params, length.other_param_name)
- other_param_optional = (other_param is not None) and (
- other_param.get('optional') is not None)
-
- if other_param is None or not other_param_optional:
- # Don't care about not-found params or non-optional params
- continue
-
- if self.paramIsPointer(other_param):
- optionallengths.append(
- 'the value referenced by ' + self.makeParameterName(length.other_param_name))
- else:
- optionallengths.append(
- self.makeParameterName(length.other_param_name))
-
- # Document that these arrays may be ignored if any of the length values are 0
- if optionallengths or is_optional:
- entry += 'If '
- if optionallengths:
- entry += self.makeProseListIs(optionallengths, fmt=plf.OR)
- entry += ' not %s, ' % self.conventions.zero
- # TODO enabling this in OpenXR, as used in Vulkan, causes nonsensical things like
- # "If pname:propertyCapacityInput is not `0`, and pname:properties is not `NULL`, pname:properties must: be a pointer to an array of pname:propertyCapacityInput slink:XrApiLayerProperties structures"
- if optionallengths and is_optional:
- entry += 'and '
- if is_optional:
- entry += self.makeParameterName(param_name)
- # TODO switch when cosmetic changes OK
- # entry += ' is not {}, '.format(self.null)
- entry += ' is not `NULL`, '
- return entry
-
- if param.get('optional'):
- entry += self.makeOptionalPre(param)
- return entry
-
- # If none of the early returns happened, we at least return an empty
- # entry with an anchor.
- return entry
-
- def createValidationLineForParameterImpl(self, blockname, param, params, typetext, selector, parentname):
- """Make the generic validity portion used for all parameters.
-
- May return None if nothing to validate.
- """
- if param.get('noautovalidity') is not None:
- return None
-
- validity = self.makeValidityCollection(blockname)
- param_name = getElemName(param)
- paramtype = getElemType(param)
-
- entry = self.makeParamValidityPre(param, params, selector)
-
- # This is for a child member of a union
- if selector:
- entry += 'the {} member of {} must: be '.format(self.makeParameterName(param_name), self.makeParameterName(parentname))
- else:
- entry += '{} must: be '.format(self.makeParameterName(param_name))
-
- if self.paramIsStaticArray(param) and paramtype == 'char':
- # TODO this is a minor hack to determine if this is a command parameter or a struct member
- if self.paramIsConst(param) or blockname.startswith(self.conventions.type_prefix):
- entry += 'a null-terminated UTF-8 string whose length is less than or equal to '
- entry += self.staticArrayLength(param)
- else:
- # This is a command's output parameter
- entry += 'a character array of length %s ' % self.staticArrayLength(param)
- validity += entry
- return validity
-
- elif self.paramIsArray(param):
- # Arrays. These are hard to get right, apparently
-
- lengths = LengthEntry.parse_len_from_param(param)
-
- for i, length in enumerate(LengthEntry.parse_len_from_param(param)):
- if i == 0:
- # If the first index, make it singular.
- entry += 'a '
- array_text = 'an array'
- pointer_text = self.valid_pointer_text
- else:
- array_text = 'arrays'
- pointer_text = self.valid_pointer_text + 's'
-
- if length.null_terminated:
- # This should always be the last thing.
- # If it ever isn't for some bizarre reason, then this will need some massaging.
- entry += 'null-terminated '
- elif length.number == 1:
- entry += pointer_text
- entry += ' to '
- else:
- entry += pointer_text
- entry += ' to '
- entry += array_text
- entry += ' of '
- # Handle equations, which are currently denoted with latex
- if length.math:
- # Handle equations, which are currently denoted with latex
- entry += str(length)
- else:
- entry += self.makeParameterName(str(length))
- entry += ' '
-
- # Void pointers don't actually point at anything - remove the word "to"
- if paramtype == 'void':
- if lengths[-1].number == 1:
- if len(lengths) > 1:
- # Take care of the extra s added by the post array chunk function. #HACK#
- entry.drop_end(5)
- else:
- entry.drop_end(4)
-
- # This hasn't been hit, so this hasn't been tested recently.
- raise UnhandledCaseError(
- "Got void pointer param/member with last length 1")
- else:
- # An array of void values is a byte array.
- entry += 'byte'
-
- elif paramtype == 'char':
- # A null terminated array of chars is a string
- if lengths[-1].null_terminated:
- entry += 'UTF-8 string'
- else:
- # Else it's just a bunch of chars
- entry += 'char value'
-
- elif self.paramIsConst(param):
- # If a value is "const" that means it won't get modified, so it must be valid going into the function.
- if 'const' in param.text:
-
- if not self.isStructAlwaysValid(paramtype):
- entry += 'valid '
-
- # Check if the array elements are optional
- array_element_optional = param.get('optional') is not None \
- and len(param.get('optional').split(',')) == len(LengthEntry.parse_len_from_param(param)) + 1 \
- and param.get('optional').split(',')[-1] == 'true'
- if array_element_optional and self.getTypeCategory(paramtype) != 'bitmask': # bitmask is handled later
- entry += 'or dlink:' + self.conventions.api_prefix + 'NULL_HANDLE '
-
- entry += typetext
-
- # pluralize
- if len(lengths) > 1 or (lengths[0] != 1 and not lengths[0].null_terminated):
- entry += 's'
-
- return self.handleRequiredBitmask(blockname, param, paramtype, entry, 'true' if array_element_optional else None)
-
- if self.paramIsPointer(param):
- # Handle pointers - which are really special case arrays (i.e. they don't have a length)
- # TODO should do something here if someone ever uses some intricate comma-separated `optional`
- pointercount = param.find('type').tail.count('*')
-
- # Treat void* as an int
- if paramtype == 'void':
- optional = param.get('optional')
- # If there is only void*, it is just optional int - we don't need any language.
- if pointercount == 1 and optional is not None:
- return None # early return
- # Treat the inner-most void* as an int
- pointercount -= 1
-
- # Could be multi-level pointers (e.g. ppData - pointer to a pointer). Handle that.
- entry += 'a '
- entry += (self.valid_pointer_text + ' to a ') * pointercount
-
- # Handle void* and pointers to it
- if paramtype == 'void':
- if optional is None or optional.split(',')[pointercount]:
- # The last void* is just optional int (e.g. to be filled by the impl.)
- typetext = 'pointer value'
-
- # If a value is "const" that means it won't get modified, so it must be valid going into the function.
- elif self.paramIsConst(param) and paramtype != 'void':
- entry += 'valid '
-
- entry += typetext
- return self.handleRequiredBitmask(blockname, param, paramtype, entry, param.get('optional'))
-
- # Add additional line for non-optional bitmasks
- if self.getTypeCategory(paramtype) == 'bitmask':
- # TODO does not really handle if someone tries something like optional="true,false"
- # TODO OpenXR has 0 or a valid combination of flags, for optional things.
- # Vulkan doesn't...
- # isMandatory = param.get('optional') is None
- # if not isMandatory:
- # entry += self.conventions.zero
- # entry += ' or '
- # Non-pointer, non-optional things must be valid
- entry += 'a valid {}'.format(typetext)
-
- return self.handleRequiredBitmask(blockname, param, paramtype, entry, param.get('optional'))
-
- # Non-pointer, non-optional things must be valid
- entry += 'a valid {}'.format(typetext)
- return entry
-
- def handleRequiredBitmask(self, blockname, param, paramtype, entry, optional):
- # TODO does not really handle if someone tries something like optional="true,false"
- if self.getTypeCategory(paramtype) != 'bitmask' or optional == 'true':
- return entry
- if self.paramIsPointer(param) and not self.paramIsArray(param):
- # This is presumably an output parameter
- return entry
-
- param_name = getElemName(param)
- # If mandatory, then we need two entries instead of just one.
- validity = self.makeValidityCollection(blockname)
- validity += entry
-
- entry2 = ValidityEntry(anchor=(param_name, 'requiredbitmask'))
- if self.paramIsArray(param):
- entry2 += 'Each element of '
- entry2 += '{} must: not be {}'.format(
- self.makeParameterName(param_name), self.conventions.zero)
- validity += entry2
- return validity
-
- def createValidationLineForParameter(self, blockname, param, params, typecategory, selector, parentname):
- """Make an entire validation entry for a given parameter."""
- param_name = getElemName(param)
- paramtype = getElemType(param)
-
- is_array = self.paramIsArray(param)
- is_pointer = self.paramIsPointer(param)
- needs_recursive_validity = (is_array
- or is_pointer
- or not self.isStructAlwaysValid(paramtype))
- typetext = None
- if paramtype in ('void', 'char'):
- # Chars and void are special cases - we call the impl function,
- # but don't use the typetext.
- # A null-terminated char array is a string, else it's chars.
- # An array of void values is a byte array, a void pointer is just a pointer to nothing in particular
- typetext = ''
-
- elif typecategory == 'bitmask':
- bitsname = paramtype.replace('Flags', 'FlagBits')
- bitselem = self.registry.tree.find("enums[@name='" + bitsname + "']")
-
- # If bitsname is an alias, then use the alias to get bitselem.
- typeElem = self.registry.lookupElementInfo(bitsname, self.registry.typedict)
- if typeElem is not None:
- alias = self.registry.getAlias(typeElem.elem, self.registry.typedict)
- if alias is not None:
- bitselem = self.registry.tree.find("enums[@name='" + alias + "']")
-
- if bitselem is None or len(bitselem.findall('enum[@required="true"]')) == 0:
- # Empty bit mask: presumably just a placeholder (or only in
- # an extension not enabled for this build)
- entry = ValidityEntry(
- anchor=(param_name, 'zerobitmask'))
- entry += self.makeParameterName(param_name)
- entry += ' must: be '
- entry += self.conventions.zero
- # Early return
- return entry
-
- is_const = self.paramIsConst(param)
-
- if is_array:
- if is_const:
- # input an array of bitmask values
- template = 'combinations of {bitsname} value'
- else:
- template = '{paramtype} value'
- elif is_pointer:
- if is_const:
- template = 'combination of {bitsname} values'
- else:
- template = '{paramtype} value'
- else:
- template = 'combination of {bitsname} values'
-
- # The above few cases all use makeEnumerationName, just with different context.
- typetext = template.format(
- bitsname=self.makeEnumerationName(bitsname),
- paramtype=self.makeFlagsName(paramtype))
-
- elif typecategory == 'handle':
- typetext = '{} handle'.format(self.makeStructName(paramtype))
-
- elif typecategory == 'enum':
- typetext = '{} value'.format(self.makeEnumerationName(paramtype))
-
- elif typecategory == 'funcpointer':
- typetext = '{} value'.format(self.makeFuncPointerName(paramtype))
-
- elif typecategory == 'struct':
- if needs_recursive_validity:
- typetext = '{} structure'.format(
- self.makeStructName(paramtype))
-
- elif typecategory == 'union':
- if needs_recursive_validity:
- typetext = '{} union'.format(self.makeStructName(paramtype))
-
- elif self.paramIsArray(param) or self.paramIsPointer(param):
- # TODO sync cosmetic changes from OpenXR?
- typetext = '{} value'.format(self.makeBaseTypeName(paramtype))
-
- elif typecategory is None:
- if not self.isStructAlwaysValid(paramtype):
- typetext = '{} value'.format(
- self.makeExternalTypeName(paramtype))
-
- # "a valid uint32_t value" doesn't make much sense.
- pass
-
- # If any of the above conditions matched and set typetext,
- # we call using it.
- if typetext is not None:
- return self.createValidationLineForParameterImpl(
- blockname, param, params, typetext, selector, parentname)
- return None
-
- def makeHandleValidityParent(self, param, params):
- """Make a validity entry for a handle's parent object.
-
- Creates 'parent' VUID.
- """
- param_name = getElemName(param)
- paramtype = getElemType(param)
-
- # Deal with handle parents
- handleparent = self.getHandleParent(paramtype)
- if handleparent is None:
- return None
-
- otherparam = findTypedElem(params, handleparent)
- if otherparam is None:
- return None
-
- parent_name = getElemName(otherparam)
- entry = ValidityEntry(anchor=(param_name, 'parent'))
-
- is_optional = self.isHandleOptional(param, params)
-
- if self.paramIsArray(param):
- template = 'Each element of {}'
- if is_optional:
- template += ' that is a valid handle'
- elif is_optional:
- template = 'If {} is a valid handle, it'
- else:
- # not optional, not an array. Just say the parameter name.
- template = '{}'
-
- entry += template.format(self.makeParameterName(param_name))
-
- entry += ' must: have been created, allocated, or retrieved from {}'.format(
- self.makeParameterName(parent_name))
-
- return entry
-
- def makeAsciiDocHandlesCommonAncestor(self, blockname, handles, params):
- """Make an asciidoc validity entry for a common ancestors between handles.
-
- Only handles parent validity for signatures taking multiple handles
- any ancestors also being supplied to this function.
- (e.g. "Each of x, y, and z must: come from the same slink:ParentHandle")
- See self.makeAsciiDocHandleParent() for instances where the parent
- handle is named and also passed.
-
- Creates 'commonparent' VUID.
- """
- # TODO Replace with refactored code from OpenXR
- entry = None
-
- if len(handles) > 1:
- ancestormap = {}
- anyoptional = False
- # Find all the ancestors
- for param in handles:
- paramtype = getElemType(param)
-
- if not self.paramIsPointer(param) or (param.text and 'const' in param.text):
- ancestors = self.getHandleDispatchableAncestors(paramtype)
-
- ancestormap[param] = ancestors
-
- anyoptional |= self.isHandleOptional(param, params)
-
- # Remove redundant ancestor lists
- for param in handles:
- paramtype = getElemType(param)
-
- removals = []
- for ancestors in ancestormap.items():
- if paramtype in ancestors[1]:
- removals.append(ancestors[0])
-
- if removals != []:
- for removal in removals:
- del(ancestormap[removal])
-
- # Intersect
-
- if len(ancestormap.values()) > 1:
- current = list(ancestormap.values())[0]
- for ancestors in list(ancestormap.values())[1:]:
- current = [val for val in current if val in ancestors]
-
- if len(current) > 0:
- commonancestor = current[0]
-
- if len(ancestormap.keys()) > 1:
-
- entry = ValidityEntry(anchor=('commonparent',))
-
- parametertexts = []
- for param in ancestormap.keys():
- param_name = getElemName(param)
- parametertext = self.makeParameterName(param_name)
- if self.paramIsArray(param):
- parametertext = 'the elements of ' + parametertext
- parametertexts.append(parametertext)
-
- parametertexts.sort()
-
- if len(parametertexts) > 2:
- entry += 'Each of '
- else:
- entry += 'Both of '
-
- entry += self.makeProseList(parametertexts,
- comma_for_two_elts=True)
- if anyoptional is True:
- entry += ' that are valid handles of non-ignored parameters'
- entry += ' must: have been created, allocated, or retrieved from the same '
- entry += self.makeStructName(commonancestor)
-
- return entry
-
- def makeStructureTypeFromName(self, structname):
- """Create text for a structure type name, like ename:VK_STRUCTURE_TYPE_CREATE_INSTANCE_INFO"""
- return self.makeEnumerantName(self.conventions.generate_structure_type_from_name(structname))
-
- def makeStructureTypeValidity(self, structname):
- """Generate an validity line for the type value of a struct.
-
- Creates VUID named like the member name.
- """
- info = self.registry.typedict.get(structname)
- assert(info is not None)
-
- # If this fails (meaning we have something other than a struct in here),
- # then the caller is wrong:
- # probably passing the wrong value for structname.
- members = info.getMembers()
- assert(members)
-
- # If this fails, see caller: this should only get called for a struct type with a type value.
- param = findNamedElem(members, self.structtype_member_name)
- # OpenXR gets some structs without a type field in here, so can't assert
- assert(param is not None)
- # if param is None:
- # return None
-
- entry = ValidityEntry(
- anchor=(self.structtype_member_name, self.structtype_member_name))
- entry += self.makeParameterName(self.structtype_member_name)
- entry += ' must: be '
-
- values = param.get('values', '').split(',')
- if values:
- # Extract each enumerant value. They could be validated in the
- # same fashion as validextensionstructs in
- # makeStructureExtensionPointer, although that's not relevant in
- # the current extension struct model.
- entry += self.makeProseList((self.makeEnumerantName(v)
- for v in values), 'or')
- return entry
-
- if 'Base' in structname:
- # This type doesn't even have any values for its type,
- # and it seems like it might be a base struct that we'd expect to lack its own type,
- # so omit the entire statement
- return None
-
- self.logMsg('warn', 'No values were marked-up for the structure type member of',
- structname, 'so making one up!')
- entry += self.makeStructureTypeFromName(structname)
-
- return entry
-
- def makeStructureExtensionPointer(self, blockname, param):
- """Generate an validity line for the pointer chain member value of a struct."""
- param_name = getElemName(param)
-
- if param.get('validextensionstructs') is not None:
- self.logMsg('warn', blockname,
- 'validextensionstructs is deprecated/removed', '\n')
-
- entry = ValidityEntry(
- anchor=(param_name, self.nextpointer_member_name))
- validextensionstructs = self.registry.validextensionstructs.get(
- blockname)
- extensionstructs = []
- duplicatestructs = []
-
- if validextensionstructs is not None:
- # Check each structure name and skip it if not required by the
- # generator. This allows tagging extension structs in the XML
- # that are only included in validity when needed for the spec
- # being targeted.
- # Track the required structures, and of the required structures,
- # those that allow duplicates in the pNext chain.
- for struct in validextensionstructs:
- # Unpleasantly breaks encapsulation. Should be a method in the registry class
- t = self.registry.lookupElementInfo(
- struct, self.registry.typedict)
- if t is None:
- self.logMsg('warn', 'makeStructureExtensionPointer: struct', struct,
- 'is in a validextensionstructs= attribute but is not in the registry')
- elif t.required:
- extensionstructs.append('slink:' + struct)
- if t.elem.get('allowduplicate') == 'true':
- duplicatestructs.append('slink:' + struct)
- else:
- self.logMsg(
- 'diag', 'makeStructureExtensionPointer: struct', struct, 'IS NOT required')
-
- if not extensionstructs:
- entry += '{} must: be {}'.format(
- self.makeParameterName(param_name), self.null)
- return entry
-
- if len(extensionstructs) == 1:
- entry += '{} must: be {} or a pointer to a valid instance of {}'.format(self.makeParameterName(param_name), self.null,
- extensionstructs[0])
- else:
- # More than one extension struct.
- entry += 'Each {} member of any structure (including this one) in the pname:{} chain '.format(
- self.makeParameterName(param_name), self.nextpointer_member_name)
- entry += 'must: be either {} or a pointer to a valid instance of '.format(
- self.null)
-
- entry += self.makeProseList(extensionstructs, fmt=plf.OR)
-
- validity = self.makeValidityCollection(blockname)
- validity += entry
-
- # Generate VU statement requiring unique structures in the pNext
- # chain.
- # NOTE: OpenXR always allows non-unique type values. Instances other
- # than the first are just ignored
-
- vu = ('The pname:' +
- self.structtype_member_name +
- ' value of each struct in the pname:' +
- self.nextpointer_member_name +
- ' chain must: be unique')
- anchor = (self.conventions.member_used_for_unique_vuid, 'unique')
-
- # If duplicates of some structures are allowed, they are called out
- # explicitly.
- num = len(duplicatestructs)
- if num > 0:
- vu = (vu +
- ', with the exception of structures of type ' +
- self.makeProseList(duplicatestructs, fmt=plf.OR))
-
- validity.addValidityEntry(vu, anchor = anchor )
-
- return validity
-
- def addSharedStructMemberValidity(self, struct, blockname, param, validity):
- """Generate language to independently validate a parameter, for those validated even in output.
-
- Return value indicates whether it was handled internally (True) or if it may need more validity (False)."""
- param_name = getElemName(param)
- paramtype = getElemType(param)
- if param.get('noautovalidity') is None:
-
- if self.conventions.is_structure_type_member(paramtype, param_name):
- validity += self.makeStructureTypeValidity(blockname)
- return True
-
- if self.conventions.is_nextpointer_member(paramtype, param_name):
- # Vulkan: the addition of validity here is conditional unlike OpenXR.
- if struct.get('structextends') is None:
- validity += self.makeStructureExtensionPointer(
- blockname, param)
- return True
- return False
-
- def makeOutputOnlyStructValidity(self, cmd, blockname, params):
- """Generate all the valid usage information for a struct that's entirely output.
-
- That is, it is only ever filled out by the implementation other than
- the structure type and pointer chain members.
- Thus, we only create validity for the pointer chain member.
- """
- # Start the validity collection for this struct
- validity = self.makeValidityCollection(blockname)
-
- for param in params:
- self.addSharedStructMemberValidity(
- cmd, blockname, param, validity)
-
- return validity
-
- def isVKVersion11(self):
- """Returns true if VK_VERSION_1_1 is being emitted."""
- vk11 = re.match(self.registry.genOpts.emitversions, 'VK_VERSION_1_1') is not None
- return vk11
-
- def makeStructOrCommandValidity(self, cmd, blockname, params):
- """Generate all the valid usage information for a given struct or command."""
- validity = self.makeValidityCollection(blockname)
- handles = []
- arraylengths = dict()
- for param in params:
- param_name = getElemName(param)
- paramtype = getElemType(param)
-
- # Valid usage ID tags (VUID) are generated for various
- # conditions based on the name of the block (structure or
- # command), name of the element (member or parameter), and type
- # of VU statement.
-
- # Get the type's category
- typecategory = self.getTypeCategory(paramtype)
-
- if not self.addSharedStructMemberValidity(
- cmd, blockname, param, validity):
- if not param.get('selector'):
- validity += self.createValidationLineForParameter(
- blockname, param, params, typecategory, None, None)
- else:
- selector = param.get('selector')
- if typecategory != 'union':
- self.logMsg('warn', 'selector attribute set on non-union parameter', param_name, 'in', blockname)
-
- paraminfo = self.registry.lookupElementInfo(paramtype, self.registry.typedict)
-
- for member in paraminfo.getMembers():
- membertype = getElemType(member)
- membertypecategory = self.getTypeCategory(membertype)
-
- validity += self.createValidationLineForParameter(
- blockname, member, paraminfo.getMembers(), membertypecategory, selector, param_name)
-
- # Ensure that any parenting is properly validated, and list that a handle was found
- if typecategory == 'handle':
- handles.append(param)
-
- # Get the array length for this parameter
- lengths = LengthEntry.parse_len_from_param(param)
- if lengths:
- arraylengths.update({length.other_param_name: length
- for length in lengths
- if length.other_param_name})
-
- # For any vkQueue* functions, there might be queue type data
- if 'vkQueue' in blockname:
- # The queue type must be valid
- queuebits = _parse_queue_bits(cmd)
- if queuebits:
- entry = ValidityEntry(anchor=('queuetype',))
- entry += 'The pname:queue must: support '
- entry += self.makeProseList(queuebits,
- fmt=plf.OR, comma_for_two_elts=True)
- entry += ' operations'
- validity += entry
-
- if 'vkCmd' in blockname:
- # The commandBuffer parameter must be being recorded
- entry = ValidityEntry(anchor=('commandBuffer', 'recording'))
- entry += 'pname:commandBuffer must: be in the <<commandbuffers-lifecycle, recording state>>'
- validity += entry
-
- #
- # Start of valid queue type validation - command pool must have been
- # allocated against a queue with at least one of the valid queue types
- entry = ValidityEntry(anchor=('commandBuffer', 'cmdpool'))
-
- #
- # This test for vkCmdFillBuffer is a hack, since we have no path
- # to conditionally have queues enabled or disabled by an extension.
- # As the VU stuff is all moving out (hopefully soon), this hack solves the issue for now
- if blockname == 'vkCmdFillBuffer':
- entry += 'The sname:VkCommandPool that pname:commandBuffer was allocated from must: support '
- if self.isVKVersion11() or 'VK_KHR_maintenance1' in self.registry.requiredextensions:
- entry += 'transfer, graphics or compute operations'
- else:
- entry += 'graphics or compute operations'
- else:
- # The queue type must be valid
- queuebits = _parse_queue_bits(cmd)
- assert(queuebits)
- entry += 'The sname:VkCommandPool that pname:commandBuffer was allocated from must: support '
- entry += self.makeProseList(queuebits,
- fmt=plf.OR, comma_for_two_elts=True)
- entry += ' operations'
- validity += entry
-
- # Must be called inside/outside a render pass appropriately
- renderpass = cmd.get('renderpass')
-
- if renderpass != 'both':
- entry = ValidityEntry(anchor=('renderpass',))
- entry += 'This command must: only be called '
- entry += renderpass
- entry += ' of a render pass instance'
- validity += entry
-
- # Must be in the right level command buffer
- cmdbufferlevel = cmd.get('cmdbufferlevel')
-
- if cmdbufferlevel != 'primary,secondary':
- entry = ValidityEntry(anchor=('bufferlevel',))
- entry += 'pname:commandBuffer must: be a '
- entry += cmdbufferlevel
- entry += ' sname:VkCommandBuffer'
- validity += entry
-
- # Any non-optional arraylengths should specify they must be greater than 0
- array_length_params = ((param, getElemName(param))
- for param in params
- if getElemName(param) in arraylengths)
-
- for param, param_name in array_length_params:
- if param.get('optional') is not None:
- continue
-
- length = arraylengths[param_name]
- full_length = length.full_reference
-
- # Is this just a name of a param? If false, then it's some kind of qualified name (a member of a param for instance)
- simple_param_reference = (len(length.param_ref_parts) == 1)
- if not simple_param_reference:
- # Loop through to see if any parameters in the chain are optional
- array_length_parent = cmd
- array_length_optional = False
- for part in length.param_ref_parts:
- # Overwrite the param so it ends up as the bottom level parameter for later checks
- param = array_length_parent.find("*/[name='{}']".format(part))
-
- # If any parameter in the chain is optional, skip the implicit length requirement
- array_length_optional |= (param.get('optional') is not None)
-
- # Lookup the type of the parameter for the next loop iteration
- type = param.findtext('type')
- array_length_parent = self.registry.tree.find("./types/type/[@name='{}']".format(type))
-
- if array_length_optional:
- continue
-
- # Get all the array dependencies
- arrays = cmd.findall(
- "param/[@len='{}'][@optional='true']".format(full_length))
-
- # Get all the optional array dependencies, including those not generating validity for some reason
- optionalarrays = arrays + \
- cmd.findall(
- "param/[@len='{}'][@noautovalidity='true']".format(full_length))
-
- entry = ValidityEntry(anchor=(full_length, 'arraylength'))
- # Allow lengths to be arbitrary if all their dependents are optional
- if optionalarrays and len(optionalarrays) == len(arrays):
- entry += 'If '
- # TODO sync this section from OpenXR once cosmetic changes OK
-
- optional_array_names = (self.makeParameterName(getElemName(array))
- for array in optionalarrays)
- entry += self.makeProseListIs(optional_array_names,
- plf.ANY_OR, comma_for_two_elts=True)
-
- entry += ' not {}, '.format(self.null)
-
- # TODO end needs sync cosmetic
- if self.paramIsPointer(param):
- entry += 'the value referenced by '
-
- # Split and re-join here to insert pname: around ::
- entry += '::'.join(self.makeParameterName(part)
- for part in full_length.split('::'))
- # TODO replace the previous statement with the following when cosmetic changes OK
- # entry += length.get_human_readable(make_param_name=self.makeParameterName)
-
- entry += ' must: be greater than '
- entry += self.conventions.zero
- validity += entry
-
- # Find the parents of all objects referenced in this command
- for param in handles:
- # Don't detect a parent for return values!
- if not self.paramIsPointer(param) or self.paramIsConst(param):
- validity += self.makeHandleValidityParent(param, params)
-
- # Find the common ancestor of all objects referenced in this command
- validity += self.makeAsciiDocHandlesCommonAncestor(
- blockname, handles, params)
-
- return validity
-
- def makeThreadSafetyBlock(self, cmd, paramtext):
- """Generate thread-safety validity entries for cmd/structure"""
- # See also makeThreadSafetyBlock in validitygenerator.py
- validity = self.makeValidityCollection(getElemName(cmd))
-
- # This text varies between projects, so an Asciidoctor attribute is used.
- extsync_prefix = "{externsyncprefix} "
-
- # Find and add any parameters that are thread unsafe
- explicitexternsyncparams = cmd.findall(paramtext + "[@externsync]")
- if explicitexternsyncparams is not None:
- for param in explicitexternsyncparams:
- externsyncattribs = ExternSyncEntry.parse_externsync_from_param(
- param)
- param_name = getElemName(param)
-
- for attrib in externsyncattribs:
- entry = ValidityEntry()
- entry += extsync_prefix
- if attrib.entirely_extern_sync:
- if self.paramIsArray(param):
- entry += 'each member of '
- elif self.paramIsPointer(param):
- entry += 'the object referenced by '
-
- entry += self.makeParameterName(param_name)
-
- if attrib.children_extern_sync:
- entry += ', and any child handles,'
-
- else:
- entry += 'pname:'
- entry += str(attrib.full_reference)
- # TODO switch to the following when cosmetic changes OK
- # entry += attrib.get_human_readable(make_param_name=self.makeParameterName)
- entry += ' must: be externally synchronized'
- validity += entry
-
- # Vulkan-specific
- # For any vkCmd* functions, the command pool is externally synchronized
- if cmd.find('proto/name') is not None and 'vkCmd' in cmd.find('proto/name').text:
- entry = ValidityEntry()
- entry += extsync_prefix
- entry += 'the sname:VkCommandPool that pname:commandBuffer was allocated from must: be externally synchronized'
- validity += entry
-
- # Find and add any "implicit" parameters that are thread unsafe
- implicitexternsyncparams = cmd.find('implicitexternsyncparams')
- if implicitexternsyncparams is not None:
- for elem in implicitexternsyncparams:
- entry = ValidityEntry()
- entry += extsync_prefix
- entry += elem.text
- entry += ' must: be externally synchronized'
- validity += entry
-
- return validity
-
- def makeCommandPropertiesTableEntry(self, cmd, name):
-
- if 'vkCmd' in name:
- # Must be called inside/outside a render pass appropriately
- cmdbufferlevel = cmd.get('cmdbufferlevel')
- cmdbufferlevel = (' + \n').join(cmdbufferlevel.title().split(','))
-
- renderpass = cmd.get('renderpass')
- renderpass = renderpass.capitalize()
-
- #
- # This test for vkCmdFillBuffer is a hack, since we have no path
- # to conditionally have queues enabled or disabled by an extension.
- # As the VU stuff is all moving out (hopefully soon), this hack solves the issue for now
- if name == 'vkCmdFillBuffer':
- if self.isVKVersion11() or 'VK_KHR_maintenance1' in self.registry.requiredextensions:
- queues = 'Transfer + \nGraphics + \nCompute'
- else:
- queues = 'Graphics + \nCompute'
- else:
- queues = cmd.get('queues')
- queues = (' + \n').join(queues.title().split(','))
-
- return '|' + cmdbufferlevel + '|' + renderpass + '|' + queues
- elif 'vkQueue' in name:
- # Must be called inside/outside a render pass appropriately
-
- queues = cmd.get('queues')
- if queues is None:
- queues = 'Any'
- else:
- queues = (' + \n').join(queues.upper().split(','))
-
- return '|-|-|' + queues
-
- return None
-
-
- def findRequiredEnums(self, enums):
- """Check each enumerant name in the enums list and remove it if not
- required by the generator. This allows specifying success and error
- codes for extensions that are only included in validity when needed
- for the spec being targeted."""
- return self.keepOnlyRequired(enums, self.registry.enumdict)
-
- def findRequiredCommands(self, commands):
- """Check each command name in the commands list and remove it if not
- required by the generator.
-
- This will allow some state operations to take place before endFile."""
- return self.keepOnlyRequired(commands, self.registry.cmddict)
-
- def keepOnlyRequired(self, names, info_dict):
- """Check each element name in the supplied dictionary and remove it if not
- required by the generator.
-
- This will allow some operations to take place before endFile no matter the order of generation."""
- # TODO Unpleasantly breaks encapsulation. Should be a method in the registry class
-
- def is_required(name):
- info = self.registry.lookupElementInfo(name, info_dict)
- if info is None:
- return False
- if not info.required:
- self.logMsg('diag', 'keepOnlyRequired: element',
- name, 'IS NOT required, skipping')
- return info.required
-
- return [name
- for name in names
- if is_required(name)]
-
- def makeReturnCodeList(self, attrib, cmd, name):
- """Return a list of possible return codes for a function.
-
- attrib is either 'successcodes' or 'errorcodes'.
- """
- return_lines = []
- RETURN_CODE_FORMAT = '* ename:{}'
-
- codes_attr = cmd.get(attrib)
- if codes_attr:
- codes = self.findRequiredEnums(codes_attr.split(','))
- if codes:
- return_lines.extend((RETURN_CODE_FORMAT.format(code)
- for code in codes))
-
- applicable_ext_codes = (ext_code
- for ext_code in self.registry.commandextensionsuccesses
- if ext_code.command == name)
- for ext_code in applicable_ext_codes:
- line = RETURN_CODE_FORMAT.format(ext_code.value)
- if ext_code.extension:
- line += ' [only if {} is enabled]'.format(
- self.conventions.formatExtension(ext_code.extension))
-
- return_lines.append(line)
- if return_lines:
- return '\n'.join(return_lines)
-
- return None
-
- def makeSuccessCodes(self, cmd, name):
- return self.makeReturnCodeList('successcodes', cmd, name)
-
- def makeErrorCodes(self, cmd, name):
- return self.makeReturnCodeList('errorcodes', cmd, name)
-
- def genCmd(self, cmdinfo, name, alias):
- """Command generation."""
- OutputGenerator.genCmd(self, cmdinfo, name, alias)
-
- # @@@ (Jon) something needs to be done here to handle aliases, probably
-
- validity = self.makeValidityCollection(name)
-
- # OpenXR-only: make sure extension is enabled
- # validity.possiblyAddExtensionRequirement(self.currentExtension, 'calling flink:')
-
- validity += self.makeStructOrCommandValidity(
- cmdinfo.elem, name, cmdinfo.getParams())
-
- threadsafety = self.makeThreadSafetyBlock(cmdinfo.elem, 'param')
- commandpropertiesentry = None
-
- # Vulkan-specific
- commandpropertiesentry = self.makeCommandPropertiesTableEntry(
- cmdinfo.elem, name)
- successcodes = self.makeSuccessCodes(cmdinfo.elem, name)
- errorcodes = self.makeErrorCodes(cmdinfo.elem, name)
-
- # OpenXR-specific
- # self.generateStateValidity(validity, name)
-
- self.writeInclude('protos', name, validity, threadsafety,
- commandpropertiesentry, successcodes, errorcodes)
-
- def genStruct(self, typeinfo, typeName, alias):
- """Struct Generation."""
- OutputGenerator.genStruct(self, typeinfo, typeName, alias)
-
- # @@@ (Jon) something needs to be done here to handle aliases, probably
-
- # Anything that's only ever returned can't be set by the user, so shouldn't have any validity information.
- validity = self.makeValidityCollection(typeName)
- threadsafety = []
-
- # OpenXR-only: make sure extension is enabled
- # validity.possiblyAddExtensionRequirement(self.currentExtension, 'using slink:')
-
- if typeinfo.elem.get('category') != 'union':
- if typeinfo.elem.get('returnedonly') is None:
- validity += self.makeStructOrCommandValidity(
- typeinfo.elem, typeName, typeinfo.getMembers())
- threadsafety = self.makeThreadSafetyBlock(typeinfo.elem, 'member')
-
- else:
- # Need to generate structure type and next pointer chain member validation
- validity += self.makeOutputOnlyStructValidity(
- typeinfo.elem, typeName, typeinfo.getMembers())
-
- self.writeInclude('structs', typeName, validity,
- threadsafety, None, None, None)
-
- def genGroup(self, groupinfo, groupName, alias):
- """Group (e.g. C "enum" type) generation.
- For the validity generator, this just tags individual enumerants
- as required or not.
- """
- OutputGenerator.genGroup(self, groupinfo, groupName, alias)
-
- # @@@ (Jon) something needs to be done here to handle aliases, probably
-
- groupElem = groupinfo.elem
-
- # Loop over the nested 'enum' tags. Keep track of the minimum and
- # maximum numeric values, if they can be determined; but only for
- # core API enumerants, not extension enumerants. This is inferred
- # by looking for 'extends' attributes.
- for elem in groupElem.findall('enum'):
- name = elem.get('name')
- ei = self.registry.lookupElementInfo(name, self.registry.enumdict)
-
- # Tag enumerant as required or not
- ei.required = self.isEnumRequired(elem)
-
- def genType(self, typeinfo, name, alias):
- """Type Generation."""
- OutputGenerator.genType(self, typeinfo, name, alias)
-
- # @@@ (Jon) something needs to be done here to handle aliases, probably
-
- category = typeinfo.elem.get('category')
- if category in ('struct', 'union'):
- self.genStruct(typeinfo, name, alias)
diff --git a/codegen/vulkan/scripts/vkconventions.py b/codegen/vulkan/scripts/vkconventions.py
deleted file mode 100644
index a43f7121..00000000
--- a/codegen/vulkan/scripts/vkconventions.py
+++ /dev/null
@@ -1,274 +0,0 @@
-#!/usr/bin/python3 -i
-#
-# Copyright 2013-2021 The Khronos Group Inc.
-#
-# SPDX-License-Identifier: Apache-2.0
-
-# Working-group-specific style conventions,
-# used in generation.
-
-import re
-import os
-
-from conventions import ConventionsBase
-
-
-# Modified from default implementation - see category_requires_validation() below
-CATEGORIES_REQUIRING_VALIDATION = set(('handle', 'enum', 'bitmask'))
-
-# Tokenize into "words" for structure types, approximately per spec "Implicit Valid Usage" section 2.7.2
-# This first set is for things we recognize explicitly as words,
-# as exceptions to the general regex.
-# Ideally these would be listed in the spec as exceptions, as OpenXR does.
-SPECIAL_WORDS = set((
- '16Bit', # VkPhysicalDevice16BitStorageFeatures
- '8Bit', # VkPhysicalDevice8BitStorageFeaturesKHR
- 'AABB', # VkGeometryAABBNV
- 'ASTC', # VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT
- 'D3D12', # VkD3D12FenceSubmitInfoKHR
- 'Float16', # VkPhysicalDeviceShaderFloat16Int8FeaturesKHR
- 'ImagePipe', # VkImagePipeSurfaceCreateInfoFUCHSIA
- 'Int64', # VkPhysicalDeviceShaderAtomicInt64FeaturesKHR
- 'Int8', # VkPhysicalDeviceShaderFloat16Int8FeaturesKHR
- 'MacOS', # VkMacOSSurfaceCreateInfoMVK
- 'RGBA10X6', # VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT
- 'Uint8', # VkPhysicalDeviceIndexTypeUint8FeaturesEXT
- 'Win32', # VkWin32SurfaceCreateInfoKHR
-))
-# A regex to match any of the SPECIAL_WORDS
-EXCEPTION_PATTERN = r'(?P<exception>{})'.format(
- '|'.join('(%s)' % re.escape(w) for w in SPECIAL_WORDS))
-MAIN_RE = re.compile(
- # the negative lookahead is to prevent the all-caps pattern from being too greedy.
- r'({}|([0-9]+)|([A-Z][a-z]+)|([A-Z][A-Z]*(?![a-z])))'.format(EXCEPTION_PATTERN))
-
-
-class VulkanConventions(ConventionsBase):
- @property
- def null(self):
- """Preferred spelling of NULL."""
- return '`NULL`'
-
- @property
- def struct_macro(self):
- """Get the appropriate format macro for a structure.
-
- Primarily affects generated valid usage statements.
- """
-
- return 'slink:'
-
- @property
- def constFlagBits(self):
- """Returns True if static const flag bits should be generated, False if an enumerated type should be generated."""
- return False
-
- @property
- def structtype_member_name(self):
- """Return name of the structure type member"""
- return 'sType'
-
- @property
- def nextpointer_member_name(self):
- """Return name of the structure pointer chain member"""
- return 'pNext'
-
- @property
- def valid_pointer_prefix(self):
- """Return prefix to pointers which must themselves be valid"""
- return 'valid'
-
- def is_structure_type_member(self, paramtype, paramname):
- """Determine if member type and name match the structure type member."""
- return paramtype == 'VkStructureType' and paramname == self.structtype_member_name
-
- def is_nextpointer_member(self, paramtype, paramname):
- """Determine if member type and name match the next pointer chain member."""
- return paramtype == 'void' and paramname == self.nextpointer_member_name
-
- def generate_structure_type_from_name(self, structname):
- """Generate a structure type name, like VK_STRUCTURE_TYPE_CREATE_INSTANCE_INFO"""
-
- structure_type_parts = []
- # Tokenize into "words"
- for elem in MAIN_RE.findall(structname):
- word = elem[0]
- if word == 'Vk':
- structure_type_parts.append('VK_STRUCTURE_TYPE')
- else:
- structure_type_parts.append(word.upper())
- name = '_'.join(structure_type_parts)
-
- # The simple-minded rules need modification for some structure names
- subpats = [
- [ r'_H_(26[45])_', r'_H\1_' ],
- [ r'_VULKAN_([0-9])([0-9])_', r'_VULKAN_\1_\2_' ],
- [ r'_DIRECT_FB_', r'_DIRECTFB_' ],
- ]
-
- for subpat in subpats:
- name = re.sub(subpat[0], subpat[1], name)
- return name
-
- @property
- def warning_comment(self):
- """Return warning comment to be placed in header of generated Asciidoctor files"""
- return '// WARNING: DO NOT MODIFY! This file is automatically generated from the vk.xml registry'
-
- @property
- def file_suffix(self):
- """Return suffix of generated Asciidoctor files"""
- return '.txt'
-
- def api_name(self, spectype='api'):
- """Return API or specification name for citations in ref pages.ref
- pages should link to for
-
- spectype is the spec this refpage is for: 'api' is the Vulkan API
- Specification. Defaults to 'api'. If an unrecognized spectype is
- given, returns None.
- """
- if spectype == 'api' or spectype is None:
- return 'Vulkan'
- else:
- return None
-
- @property
- def api_prefix(self):
- """Return API token prefix"""
- return 'VK_'
-
- @property
- def write_contacts(self):
- """Return whether contact list should be written to extension appendices"""
- return True
-
- @property
- def write_refpage_include(self):
- """Return whether refpage include should be written to extension appendices"""
- return True
-
- @property
- def member_used_for_unique_vuid(self):
- """Return the member name used in the VUID-...-...-unique ID."""
- return self.structtype_member_name
-
- def is_externsync_command(self, protoname):
- """Returns True if the protoname element is an API command requiring
- external synchronization
- """
- return protoname is not None and 'vkCmd' in protoname
-
- def is_api_name(self, name):
- """Returns True if name is in the reserved API namespace.
- For Vulkan, these are names with a case-insensitive 'vk' prefix, or
- a 'PFN_vk' function pointer type prefix.
- """
- return name[0:2].lower() == 'vk' or name[0:6] == 'PFN_vk'
-
- def specURL(self, spectype='api'):
- """Return public registry URL which ref pages should link to for the
- current all-extensions HTML specification, so xrefs in the
- asciidoc source that aren't to ref pages can link into it
- instead. N.b. this may need to change on a per-refpage basis if
- there are multiple documents involved.
- """
- return 'https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html'
-
- @property
- def xml_api_name(self):
- """Return the name used in the default API XML registry for the default API"""
- return 'vulkan'
-
- @property
- def registry_path(self):
- """Return relpath to the default API XML registry in this project."""
- return 'xml/vk.xml'
-
- @property
- def specification_path(self):
- """Return relpath to the Asciidoctor specification sources in this project."""
- return '{generated}/meta'
-
- @property
- def special_use_section_anchor(self):
- """Return asciidoctor anchor name in the API Specification of the
- section describing extension special uses in detail."""
- return 'extendingvulkan-compatibility-specialuse'
-
- @property
- def extra_refpage_headers(self):
- """Return any extra text to add to refpage headers."""
- return 'include::{config}/attribs.txt[]'
-
- @property
- def extension_index_prefixes(self):
- """Return a list of extension prefixes used to group extension refpages."""
- return ['VK_KHR', 'VK_EXT', 'VK']
-
- @property
- def unified_flag_refpages(self):
- """Return True if Flags/FlagBits refpages are unified, False if
- they're separate.
- """
- return False
-
- @property
- def spec_reflow_path(self):
- """Return the path to the spec source folder to reflow"""
- return os.getcwd()
-
- @property
- def spec_no_reflow_dirs(self):
- """Return a set of directories not to automatically descend into
- when reflowing spec text
- """
- return ('scripts', 'style')
-
- @property
- def zero(self):
- return '`0`'
-
- def category_requires_validation(self, category):
- """Return True if the given type 'category' always requires validation.
-
- Overridden because Vulkan doesn't require "valid" text for basetype in the spec right now."""
- return category in CATEGORIES_REQUIRING_VALIDATION
-
- @property
- def should_skip_checking_codes(self):
- """Return True if more than the basic validation of return codes should
- be skipped for a command.
-
- Vulkan mostly relies on the validation layers rather than API
- builtin error checking, so these checks are not appropriate.
-
- For example, passing in a VkFormat parameter will not potentially
- generate a VK_ERROR_FORMAT_NOT_SUPPORTED code."""
-
- return True
-
- def extension_include_string(self, ext):
- """Return format string for include:: line for an extension appendix
- file. ext is an object with the following members:
- - name - extension string string
- - vendor - vendor portion of name
- - barename - remainder of name"""
-
- return 'include::{{appendices}}/{name}{suffix}[]'.format(
- name=ext.name, suffix=self.file_suffix)
-
- @property
- def refpage_generated_include_path(self):
- """Return path relative to the generated reference pages, to the
- generated API include files."""
- return "{generated}"
-
- def valid_flag_bit(self, bitpos):
- """Return True if bitpos is an allowed numeric bit position for
- an API flag bit.
-
- Vulkan uses 32 bit Vk*Flags types, and assumes C compilers may
- cause Vk*FlagBits values with bit 31 set to result in a 64 bit
- enumerated type, so disallows such flags."""
- return bitpos >= 0 and bitpos < 31
diff --git a/codegen/vulkan/scripts/xml_consistency.py b/codegen/vulkan/scripts/xml_consistency.py
deleted file mode 100755
index 36514531..00000000
--- a/codegen/vulkan/scripts/xml_consistency.py
+++ /dev/null
@@ -1,390 +0,0 @@
-#!/usr/bin/python3
-#
-# Copyright (c) 2019 Collabora, Ltd.
-#
-# SPDX-License-Identifier: Apache-2.0
-#
-# Author(s): Ryan Pavlik <ryan.pavlik@collabora.com>
-#
-# Purpose: This script checks some "business logic" in the XML registry.
-
-import re
-import sys
-from pathlib import Path
-
-from check_spec_links import VulkanEntityDatabase as OrigEntityDatabase
-from reg import Registry
-from spec_tools.consistency_tools import XMLChecker
-from spec_tools.util import findNamedElem, getElemName, getElemType
-from vkconventions import VulkanConventions as APIConventions
-
-# These are extensions which do not follow the usual naming conventions,
-# specifying the alternate convention they follow
-EXTENSION_ENUM_NAME_SPELLING_CHANGE = {
- 'VK_EXT_swapchain_colorspace': 'VK_EXT_SWAPCHAIN_COLOR_SPACE',
-}
-
-# These are extensions whose names *look* like they end in version numbers,
-# but don't
-EXTENSION_NAME_VERSION_EXCEPTIONS = (
- 'VK_AMD_gpu_shader_int16',
- 'VK_EXT_index_type_uint8',
- 'VK_EXT_shader_image_atomic_int64',
- 'VK_EXT_video_decode_h264',
- 'VK_EXT_video_decode_h265',
- 'VK_EXT_video_encode_h264',
- 'VK_EXT_video_encode_h265',
- 'VK_KHR_external_fence_win32',
- 'VK_KHR_external_memory_win32',
- 'VK_KHR_external_semaphore_win32',
- 'VK_KHR_shader_atomic_int64',
- 'VK_KHR_shader_float16_int8',
- 'VK_KHR_spirv_1_4',
- 'VK_NV_external_memory_win32',
- 'VK_RESERVED_do_not_use_146',
- 'VK_RESERVED_do_not_use_94',
-)
-
-# Exceptions to pointer parameter naming rules
-# Keyed by (entity name, type, name).
-CHECK_PARAM_POINTER_NAME_EXCEPTIONS = {
- ('vkGetDrmDisplayEXT', 'VkDisplayKHR', 'display') : None,
-}
-
-# Exceptions to pNext member requiring an optional attribute
-CHECK_MEMBER_PNEXT_OPTIONAL_EXCEPTIONS = (
- 'VkVideoEncodeInfoKHR',
-)
-
-def get_extension_commands(reg):
- extension_cmds = set()
- for ext in reg.extensions:
- for cmd in ext.findall("./require/command[@name]"):
- extension_cmds.add(cmd.get("name"))
- return extension_cmds
-
-
-def get_enum_value_names(reg, enum_type):
- names = set()
- result_elem = reg.groupdict[enum_type].elem
- for val in result_elem.findall("./enum[@name]"):
- names.add(val.get("name"))
- return names
-
-
-# Regular expression matching an extension name ending in a (possible) version number
-EXTNAME_RE = re.compile(r'(?P<base>(\w+[A-Za-z]))(?P<version>\d+)')
-
-DESTROY_PREFIX = "vkDestroy"
-TYPEENUM = "VkStructureType"
-
-SPECIFICATION_DIR = Path(__file__).parent.parent
-REVISION_RE = re.compile(r' *[*] Revision (?P<num>[1-9][0-9]*),.*')
-
-
-def get_extension_source(extname):
- fn = '{}.txt'.format(extname)
- return str(SPECIFICATION_DIR / 'appendices' / fn)
-
-
-class EntityDatabase(OrigEntityDatabase):
-
- # Override base class method to not exclude 'disabled' extensions
- def getExclusionSet(self):
- """Return a set of "support=" attribute strings that should not be included in the database.
-
- Called only during construction."""
-
- return set(())
-
- def makeRegistry(self):
- try:
- import lxml.etree as etree
- HAS_LXML = True
- except ImportError:
- HAS_LXML = False
- if not HAS_LXML:
- return super().makeRegistry()
-
- registryFile = str(SPECIFICATION_DIR / 'xml/vk.xml')
- registry = Registry()
- registry.filename = registryFile
- registry.loadElementTree(etree.parse(registryFile))
- return registry
-
-
-class Checker(XMLChecker):
- def __init__(self):
- manual_types_to_codes = {
- # These are hard-coded "manual" return codes:
- # the codes of the value (string, list, or tuple)
- # are available for a command if-and-only-if
- # the key type is passed as an input.
- "VkFormat": "VK_ERROR_FORMAT_NOT_SUPPORTED"
- }
- forward_only = {
- # Like the above, but these are only valid in the
- # "type implies return code" direction
- }
- reverse_only = {
- # like the above, but these are only valid in the
- # "return code implies type or its descendant" direction
- # "XrDuration": "XR_TIMEOUT_EXPIRED"
- }
- # Some return codes are related in that only one of a set
- # may be returned by a command
- # (eg. XR_ERROR_SESSION_RUNNING and XR_ERROR_SESSION_NOT_RUNNING)
- self.exclusive_return_code_sets = tuple(
- # set(("XR_ERROR_SESSION_NOT_RUNNING", "XR_ERROR_SESSION_RUNNING")),
- )
- # Map of extension number -> [ list of extension names ]
- self.extension_number_reservations = {
- }
-
- # This is used to report collisions.
- conventions = APIConventions()
- db = EntityDatabase()
-
- self.extension_cmds = get_extension_commands(db.registry)
- self.return_codes = get_enum_value_names(db.registry, 'VkResult')
- self.structure_types = get_enum_value_names(db.registry, TYPEENUM)
-
- # Dict of entity name to a list of messages to suppress. (Exclude any context data and "Warning:"/"Error:")
- # Keys are entity names, values are tuples or lists of message text to suppress.
- suppressions = {}
-
- # Initialize superclass
- super().__init__(entity_db=db, conventions=conventions,
- manual_types_to_codes=manual_types_to_codes,
- forward_only_types_to_codes=forward_only,
- reverse_only_types_to_codes=reverse_only,
- suppressions=suppressions)
-
- def check_command_return_codes_basic(self, name, info,
- successcodes, errorcodes):
- """Check a command's return codes for consistency.
-
- Called on every command."""
- # Check that all extension commands can return the code associated
- # with trying to use an extension that wasn't enabled.
- # if name in self.extension_cmds and UNSUPPORTED not in errorcodes:
- # self.record_error("Missing expected return code",
- # UNSUPPORTED,
- # "implied due to being an extension command")
-
- codes = successcodes.union(errorcodes)
-
- # Check that all return codes are recognized.
- unrecognized = codes - self.return_codes
- if unrecognized:
- self.record_error("Unrecognized return code(s):",
- unrecognized)
-
- elem = info.elem
- params = [(getElemName(elt), elt) for elt in elem.findall('param')]
-
- def is_count_output(name, elt):
- # Must end with Count or Size,
- # not be const,
- # and be a pointer (detected by naming convention)
- return (name.endswith('Count') or name.endswith('Size')) \
- and (elt.tail is None or 'const' not in elt.tail) \
- and (name.startswith('p'))
-
- countParams = [elt
- for name, elt in params
- if is_count_output(name, elt)]
- if countParams:
- assert(len(countParams) == 1)
- if 'VK_INCOMPLETE' not in successcodes:
- self.record_error(
- "Apparent enumeration of an array without VK_INCOMPLETE in successcodes.")
-
- elif 'VK_INCOMPLETE' in successcodes:
- self.record_error(
- "VK_INCOMPLETE in successcodes of command that is apparently not an array enumeration.")
-
- def check_param(self, param):
- """Check a member of a struct or a param of a function.
-
- Called from check_params."""
- super().check_param(param)
-
- if not self.is_api_type(param):
- return
-
- param_text = "".join(param.itertext())
- param_name = getElemName(param)
-
- # Make sure the number of leading "p" matches the pointer count.
- pointercount = param.find('type').tail
- if pointercount:
- pointercount = pointercount.count('*')
- if pointercount:
- prefix = 'p' * pointercount
- if not param_name.startswith(prefix):
- param_type = param.find('type').text
- message = "Apparently incorrect pointer-related name prefix for {} - expected it to start with '{}'".format(
- param_text, prefix)
- if (self.entity, param_type, param_name) in CHECK_PARAM_POINTER_NAME_EXCEPTIONS:
- self.record_warning('(Allowed exception)', message, elem=param)
- else:
- self.record_error(message, elem=param)
-
- # Make sure pNext members have optional="true" attributes
- if param_name == self.conventions.nextpointer_member_name:
- optional = param.get('optional')
- if optional is None or optional != 'true':
- message = '{}.pNext member is missing \'optional="true"\' attribute'.format(self.entity)
- if self.entity in CHECK_MEMBER_PNEXT_OPTIONAL_EXCEPTIONS:
- self.record_warning('(Allowed exception)', message, elem=param)
- else:
- self.record_error(message, elem=param)
-
- def check_type(self, name, info, category):
- """Check a type's XML data for consistency.
-
- Called from check."""
-
- elem = info.elem
- type_elts = [elt
- for elt in elem.findall("member")
- if getElemType(elt) == TYPEENUM]
- if category == 'struct' and type_elts:
- if len(type_elts) > 1:
- self.record_error(
- "Have more than one member of type", TYPEENUM)
- else:
- type_elt = type_elts[0]
- val = type_elt.get('values')
- if val and val not in self.structure_types:
- self.record_error("Unknown structure type constant", val)
-
- # Check the pointer chain member, if present.
- next_name = self.conventions.nextpointer_member_name
- next_member = findNamedElem(info.elem.findall('member'), next_name)
- if next_member is not None:
- # Ensure that the 'optional' attribute is set to 'true'
- optional = next_member.get('optional')
- if optional is None or optional != 'true':
- message = '{}.{} member is missing \'optional="true"\' attribute'.format(name, next_name)
- if name in CHECK_MEMBER_PNEXT_OPTIONAL_EXCEPTIONS:
- self.record_warning('(Allowed exception)', message)
- else:
- self.record_error(message)
-
- elif category == "bitmask":
- if 'Flags' in name:
- expected_require = name.replace('Flags', 'FlagBits')
- require = info.elem.get('require')
- if require is not None and expected_require != require:
- self.record_error("Unexpected require attribute value:",
- "got", require,
- "but expected", expected_require)
- super().check_type(name, info, category)
-
- def check_extension(self, name, info):
- """Check an extension's XML data for consistency.
-
- Called from check."""
- elem = info.elem
- enums = elem.findall('./require/enum[@name]')
-
- # Look for other extensions using that number
- # Keep track of this extension number reservation
- ext_number = elem.get('number')
- if ext_number in self.extension_number_reservations:
- conflicts = self.extension_number_reservations[ext_number]
- self.record_error('Extension number {} has more than one reservation: {}, {}'.format(
- ext_number, name, ', '.join(conflicts)))
- self.extension_number_reservations[ext_number].append(name)
- else:
- self.extension_number_reservations[ext_number] = [ name ]
-
- # If extension name is not on the exception list and matches the
- # versioned-extension pattern, map the extension name to the version
- # name with the version as a separate word. Otherwise just map it to
- # the upper-case version of the extension name.
-
- matches = EXTNAME_RE.fullmatch(name)
- ext_versioned_name = False
- if name in EXTENSION_ENUM_NAME_SPELLING_CHANGE:
- ext_enum_name = EXTENSION_ENUM_NAME_SPELLING_CHANGE.get(name)
- elif matches is None or name in EXTENSION_NAME_VERSION_EXCEPTIONS:
- # This is the usual case, either a name that doesn't look
- # versioned, or one that does but is on the exception list.
- ext_enum_name = name.upper()
- else:
- # This is a versioned extension name.
- # Treat the version number as a separate word.
- base = matches.group('base')
- version = matches.group('version')
- ext_enum_name = base.upper() + '_' + version
- # Keep track of this case
- ext_versioned_name = True
-
- # Look for the expected SPEC_VERSION token name
- version_name = "{}_SPEC_VERSION".format(ext_enum_name)
- version_elem = findNamedElem(enums, version_name)
-
- if version_elem is None:
- # Did not find a SPEC_VERSION enum matching the extension name
- if ext_versioned_name:
- suffix = '\n\
- Make sure that trailing version numbers in extension names are treated\n\
- as separate words in extension enumerant names. If this is an extension\n\
- whose name ends in a number which is not a version, such as "...h264"\n\
- or "...int16", add it to EXTENSION_NAME_VERSION_EXCEPTIONS in\n\
- scripts/xml_consistency.py.'
- else:
- suffix = ''
- self.record_error('Missing version enum {}{}'.format(version_name, suffix))
- elif info.elem.get('supported') == self.conventions.xml_api_name:
- # Skip unsupported / disabled extensions for these checks
-
- fn = get_extension_source(name)
- revisions = []
- with open(fn, 'r', encoding='utf-8') as fp:
- for line in fp:
- line = line.rstrip()
- match = REVISION_RE.match(line)
- if match:
- revisions.append(int(match.group('num')))
- ver_from_xml = version_elem.get('value')
- if revisions:
- ver_from_text = str(max(revisions))
- if ver_from_xml != ver_from_text:
- self.record_error("Version enum mismatch: spec text indicates", ver_from_text,
- "but XML says", ver_from_xml)
- else:
- if ver_from_xml == '1':
- self.record_warning(
- "Cannot find version history in spec text - make sure it has lines starting exactly like '* Revision 1, ....'",
- filename=fn)
- else:
- self.record_warning("Cannot find version history in spec text, but XML reports a non-1 version number", ver_from_xml,
- " - make sure the spec text has lines starting exactly like '* Revision 1, ....'",
- filename=fn)
-
- name_define = "{}_EXTENSION_NAME".format(ext_enum_name)
- name_elem = findNamedElem(enums, name_define)
- if name_elem is None:
- self.record_error("Missing name enum", name_define)
- else:
- # Note: etree handles the XML entities here and turns &quot; back into "
- expected_name = '"{}"'.format(name)
- name_val = name_elem.get('value')
- if name_val != expected_name:
- self.record_error("Incorrect name enum: expected", expected_name,
- "got", name_val)
-
- super().check_extension(name, elem)
-
-
-if __name__ == "__main__":
-
- ckr = Checker()
- ckr.check()
-
- if ckr.fail:
- sys.exit(1)
diff --git a/codegen/vulkan/src/ext_loader/README.md b/codegen/vulkan/src/ext_loader/README.md
deleted file mode 100644
index c571986c..00000000
--- a/codegen/vulkan/src/ext_loader/README.md
+++ /dev/null
@@ -1,34 +0,0 @@
-<!--
-Copyright 2018-2021 The Khronos Group Inc.
-
-SPDX-License-Identifier: CC-BY-4.0
--->
-
-# What Happened To The Vulkan Extension Loader?
-
-If you're looking for the files vulkan_ext.[ch] in this directory, they have
-been removed. There were two significant problems with these simple
-wrappers.
-
-First, vulkan_ext exported all extension entrypoints. However, the Vulkan
-loader also exports entrypoints for the window system integration
-extensions. If someone tried to compile a project and link it to both the
-loader and vulkan_ext, they would get a bunch of redefined symbols. This
-linking error is difficult to work around, because vulkan_ext does not have
-an easy method of disabling the entrypoints at compile time. It is possible
-to remove these entrypoints when generating vulkan_ext, but even then you
-have to manually compile a list of every single extension to be disabled.
-
-Second, each entrypoint is only stored once, regardless of how many
-instances or devices are created. This means that attempting to use multiple
-instances or devices in parallel can result in one device calling function
-pointers that are only valid on the other device, which will crash. You may
-be able to work around this by never initializing the device dispatch
-(vkExtInitDevice), but we haven't tried this.
-
-It is still possible to retrieve the last versions of these files in the
-Github KhronosGroup/Vulkan-Docs repository from the 'v1.1.75' release tag.
-It is also possible to regenerate them from ../../xml/vk.xml, although we
-are no longer maintaining the generator code and it may eventually stop
-working correctly. See README.adoc and the `extloader` Makefile target in
-that directory.
diff --git a/codegen/vulkan/styleguide.txt b/codegen/vulkan/styleguide.txt
deleted file mode 100644
index 3c1a8dd6..00000000
--- a/codegen/vulkan/styleguide.txt
+++ /dev/null
@@ -1,381 +0,0 @@
-// Copyright 2014-2021 The Khronos Group Inc.
-//
-// SPDX-License-Identifier: CC-BY-4.0
-
-= Vulkan^®^ Documentation and Extensions: Procedures and Conventions
-Jon Leech, Tobias Hector
-:data-uri:
-:icons: font
-:toc2:
-:toclevels: 3
-:numbered:
-:source-highlighter: rouge
-:rouge-style: github
-:doctype: book
-:imagewidth: 800
-:fullimagewidth: width="800"
-:cl: &#x3a;
-
-// Various special / math symbols. This is easier to edit with than Unicode.
-include::{config}/attribs.txt[]
-
-// Where the current Asciidoctor documentation is found.
-:docguide: https://docs.asciidoctor.org/asciidoc/latest
-
-:leveloffset: 1
-
-<<<<
-
-include::{config}/copyright-ccby.txt[]
-
-<<<<
-
-[[introduction]]
-= Introduction
-
-This document contains required procedures and conventions when writing
-specifications for new Vulkan APIs, extensions and layers, or related
-Khronos^{reg}^ documentation such as white papers and tutorials; or
-contributing to existing Vulkan specifications.
-These are collectively referred to as _Vulkan Documentation_ or just
-_documentation_ below.
-The primary focus is the API Specification and API extensions, although all
-of the markup and most of the writing style is equally applicable to other
-documentation.
-
-The primary purpose is to achieve consistency across the API, as well as
-across all of our source and output documents.
-Consistency makes it easier for developers, editors, reviewers, and users of
-our documentation to understand and modify it.
-
-This document is now formally voted on and approved by the Vulkan Working
-Group.
-This means that unless explicitly stated otherwise, the procedures and
-conventions must be followed.
-If you have a strong desire to modify the procedures and conventions, such
-changes must be made through the normal Vulkan Working Group processes.
-
-
-[[introduction-terminology]]
-== Terminology
-
-The key words *must*, *required*, *should*, *recommend*, *may*, and
-*optional* in this document are to be interpreted as described in RFC 2119
-and by the Vulkan Specification in the "`Terminology`" section.
-
-
-[[introduction-structure]]
-== Document Structure
-
-The style guide is broken into four sections:
-
- * <<naming,API Naming Conventions>> - the required rules for choosing
- names of Vulkan identifiers of all types.
- * <<extensions,Extensions and Layers>> - the required procedures for
- creating formal Vulkan extensions and layers.
- * <<markup,Markup Style>> - the required and recommended markup style for
- writing asciidoctor and XML source that follows consistent formatting
- and layout guidelines, tags special terms and phrases for proper
- processing by the spec generation tools, etc.
- * <<writing,Writing Style>> - the required and recommended writing style
- for overall and fine-grained structure and conventions, normative
- language use, API naming conventions, common words and phrases to use
- and to avoid, linking and cross-referencing, etc.
-
-
-[[introduction-asciidoc]]
-== Asciidoctor Markup
-
-Vulkan Documentation is primarily written in Asciidoctor, a text markup
-language.
-We use the command-line asciidoctor client that is actively maintained by
-asciidoctor, which is documented on its website at https://asciidoctor.org.
-
-References to the Asciidoctor User Manual are to sections in the document at
-https://asciidoctor.org/docs/user-manual/.
-
-Asciidoctor is implemented in Ruby (https://www.ruby-lang.org/), which is
-available for Linux, MacOS, and Microsoft Windows.
-
-[NOTE]
-.Note
-====
-There are other implementations of asciidoctor, such as AsciidoctorJ
-(https://github.com/asciidoctor/asciidoctorj) and asciidoctor.js
-(https://github.com/asciidoctor/asciidoctor.js).
-In particular, GitHub and GitLab both have preview renderers for .adoc or
-.asciidoc files in repositories, and live preview extensions exist for
-Chrome and Firefox.
-
-However, because of the use of custom Ruby macros in the Vulkan
-Specification toolchain, and the high complexity of the documents and
-toolchain used to generate it, these web tools cannot currently render the
-Specification from source.
-Instead, we generate HTML and PDF versions of the Specification and publish
-them on the Khronos website.
-
-The Asciidoctor toolchain and build process are not addressed by this
-document, which concentrates solely on source documents.
-====
-
-
-[[introduction-normative]]
-== Normative References
-
-Normative references are references to external documents or resources to
-which documentation authors must comply.
-
-[[acm-references]]
-Association for Computing Machinery.
-_Citation Style and Reference Formats_.
-Retrieved July 27, 2019.
-https://www.acm.org/publications/authors/reference-formatting .
-
-[[iso-8601]]
-International Organization for Standardization.
-_Data elements and interchange formats -- Information interchange --
-Representation of dates and times_ (2004-12-01).
-https://www.iso.org/standard/40874.html .
-Also see https://www.w3.org/QA/Tips/iso-date for colloquial examples.
-
-[[vulkan-docs]]
-Khronos Vulkan Working Group.
-`KhronosGroup/Vulkan-Docs` project on GitHub (July 5, 2016).
-https://github.com/KhronosGroup/Vulkan-Docs .
-
-[[vulkan-spec]]
-Khronos Vulkan Working Group.
-_Vulkan 1.1.116 - A Specification_ (July 20, 2019).
-https://www.khronos.org/registry/vulkan/ .
-
-Version 1.1.116 is the latest patch release of the Vulkan API Specification
-as of the time this reference was created, but that Specification is
-frequently updated with minor bugfixes and clarifications.
-When a more recent patch release is made, it becomes the normative reference
-for the API.
-
-
-// Chapters of the text are included below
-
-include::style/naming.txt[]
-
-include::style/extensions.txt[]
-
-include::style/markup.txt[]
-
-include::style/writing.txt[]
-
-include::style/misc.txt[]
-
-// Appendices are included below
-include::style/vuid.txt[]
-
-
-= Revision History
-
-* 2021-11-04 - Remove backquote markup around recommended use of the
- `apiext:` macro, since that macro now styles the extension name argument
- itself.
-* 2021-10-29 - add "`render pass" to the <<writing-compound-words, Compound
- Words and Preferred Orthography>> section.
-* 2021-10-04 - Update the <<extensions-documenting-extensions, Changes for
- New Extensions>> section to require use of the `apiext:` macro for links
- to extension names (internal issue 2831).
-* 2021-09-12 - Add a new subsection with more details on using
- tilde-delimited source blocks <<markup-blocks-source, inside reference
- page open blocks>>, and rewrite the <<sample-command, Sample Command
- Description>> section to follow current phrasing and markup patterns
- (internal issue 2040).
-* 2021-09-09 - Add the <<markup-italicized-enumerant-names, Italicized
- Enumerant Names>> section to clarify how to write wildcard enumerant names
- with imbedded italicized text.
-* 2021-09-06 - Add the <<writing-inclusivity, Use Inclusive Language>>
- section based on the Khronos Inclusive Language list (internal issue
- 2293).
-* 2021-09-06 - add "`cube map`" to the <<writing-compound-words, Compound
- Words and Preferred Orthography>> section (internal merge request 4794).
-* 2021-07-20 - Add additional contraction examples to the table in the
- <<markup-avoid-contractions, Avoid Abbreviations and Contractions>>
- section.
-* 2021-05-31 - Add "`implementation-dependent`" as an exception in the
- <<writing-compound-words, Compound Words and Preferred Orthography>>
- section (internal merge request 4611).
-* 2021-05-24 - Add escapes to prevent expansion of attribute names in a few
- places where markup examples are given.
-* 2021-05-22 - Expand the <<markup-avoid-contractions, markup rules>> to
- include avoiding abbreviations, as well as contractions.
-* 2021-05-07 - Add <<markup-word-choices, preferred way to write
- "`drawing/dispatching command">>.
-* 2021-04-28 - Add <<markup-word-choices, disambiguations for
- "`executable`">>.
-* 2021-04-28 - Add <<writing-pointers-instances, usage for pointers and
- handles>> which may be `NULL` or dname:VK_NULL_HANDLE, respectively
- (internal issue 2662).
-* 2021-04-14 - Add "`side effect`" and "`reuse`" as
- <<writing-compound-words, preferred orthography>> (public issue 1484).
-* 2021-03-31 - Update description of the code{cl} macro in the
- <<markup-macros-api, API Markup Macros>> section to match current
- behavior.
-* 2021-03-21 - Note that the <<extensions-reserving-bitmask-values same bit
- should be reserved>> for the same purpose in comparable 32- and 64-bit
- bitmask types (internal issue 2565).
-* 2020-09-14 - Change <<markup-informative-notes, Informative Sections and
- Notes>> section to track actual usage and update the description of the
- undefined{cl} macro to further clarify its purpose and uses (internal
- issue 2195).
-* 2020-08-16 - Add "`reference monitor`" to the preferred
- <<markup-word-choices, Word Choices>> (internal issue 2291).
-* 2020-08-10 - Add a <<writing-describing-errors, Commands which Return
- Error Codes>> section to guide authors of new commands (internal issue
- 2290).
-* 2020-07-28 - Add a <<markup-copyrights, Copyrights and Licenses>> section
- describing how to properly attribute this information.
-* 2020-06-23 - Update the <<extensions-documenting-extensions, Changes for
- New Extensions>> section to recommend placing most extension language
- inline in existing specification source files, rather than in separate
- files, and to base extension revision numbers at `1` starting with initial
- public release (public issue 1263).
-* 2020-04-29 - Expand use of `basetype` macros to include external API
- types.
-* 2020-03-16 - Add documentation of writing links to extension appendices in
- the <<extensions-documenting-extensions, Changes for New Extensions>>
- section and document the apiext{cl} and reflink{cl} macros in the
- <<markup-macros-api, API Markup Macros>> section.
- Improve documentation of writing <<writing-refpages, Markup For Automatic
- Reference Page Extraction>> including how to mark up content in the
- Specification source so it only appears in generated reference pages;
- however, this section is still out of date (internal issue 1999).
-* 2020-03-11 - Specify in the <<sample-command, Sample Command Description>>
- section that a valid usage statement must be defined at the place (command
- or structure specification) that all information need to evaluate the
- statement is known.
- Update the description of <<appendix-vuid-creating, Creating VUID tags>>
- to match the current scripts.
- Use the term "`asciidoctor`" instead of "`asciidoc`" everywhere.
- Note in the <<introduction-asciidoc, Asciidoctor Markup>> section that the
- Specification can only be built using the command-line asciidoctor client,
- not by asciidoctor web clients.
-* 2020-02-22 - Document that it is no longer needed to escape C arrows in
- macros.
-* 2019-12-15 - Add a markup section on <<markup-macros-prime-symbols, Prime
- Symbols>> (internal issue 1110).
-* 2019-11-27 - Expand the <<writing-pNext-chain, Describing Extension
- Structure Chains>> section and make all spec language consistent with it
- (internal issue 1814).
-* 2019-09-09 - Define markup for nested structure members in the
- <<markup-macros-api, API Markup Macros>> section (internal issue 1765).
-* 2019-09-08 - Add language to the end of the
- <<extensions-documenting-extensions, Changes for New Extensions>> section
- describing how to mark up asciidoctor conditionals (internal issue 1808).
-* 2019-08-25 - Add the <<markup-indentation-equations, Indentation of
- Equations>> section (internal issue 1793).
-* 2019-08-25 - Add the <<writing-describing-layers, Extensions and Grouping
- Related Language>> section (internal issue 979) and the
- <<markup-minimize-indentation, Minimize Indentation>> section (internal
- issue 747).
- Disallow use of standalone `+` except in latexmath and source blocks, in
- the <<markup-layout, Asciidoc Markup And Text Layout>> section (internal
- issue 736).
-* 2019-08-19 - Add the <<writing-pointers-instances, Describing Pointers and
- Instances>> section (internal issue 1553).
-* 2019-08-13 - Add a NOTE to the <<appendix-vuid-format, Format of VUID
- Tags>> appendix specifying allowed characters in VUID tags (based on
- discussion for internal merge request 3239).
-* 2019-07-27 - Add the <<writing-references, References>> section and
- rewrite external references accordingly.
-* 2019-05-09 - Specify rules for defining <<extensions-new-flags-types, new
- flags and bitmask types>> (internal issue 1649).
-* 2019-01-06 - Add details on <<extensions-reserving-bitmask-values,
- Reserving Bitmask Values>> (internal issue 1411).
-* 2018-11-19 - Add details to the <<extensions-documenting-extensions,
- Changes for New Extensions>> section including the new "`Description`"
- section, and other standard parts of extension appendices.
-* 2018-08-13 - Add %inline directive to the <<markup-sample-section-images,
- Figures>> section (public pull request 734).
-* 2018-07-30 - Added a section on <<writing-undefined, Describing Undefined
- Behavior>> (as part of the fixes for public issue 379), and describing why
- the undefined{cl} macro should always be used.
-* 2018-07-08 - Remove requirement to explicitly include extension appendices
- in the <<extensions-documenting-extensions, Changes for New Extensions>>
- section.
-* 2018-06-25 - Modify the process for <<extensions-vendor-id, Registering a
- Vendor ID with Khronos>> to define vendor ID values as part of an
- enumerated type.
-* 2018-03-07 - Updated for Vulkan 1.1 release.
-* 2018-01-10 - Move details of mandated extension compatibility from the
- <<extensions-rules, General Rules/Guidelines>> section into the
- Fundamentals section of the API Specification, where they are changed
- slightly to allow explicit incompatibilies (public issue 638).
-* 2017-10-27 - Add language about proper use of "`valid pointer`" and
- "`pointer to valid object`" for valid usage statements, in the
- <<sample-command, Sample Command Description>> section (related to public
- pull request 547).
-* 2017-10-15 - Describe how to write <<writing-latexmath-in-table-cells,
- LaTeX Math in Table Cells>> (internal issue 908).
-* 2017-10-15 - Add more details of <<extensions-naming-author-IDs, `KHX`
- extensions>> (public issues 536, 580).
-* 2017-09-10 - Add descriptions of <<writing-arrays, how to use `each` and
- `any`>> to refer to properties of elments of arrays (internal issue 884).
-* 2017-09-10 - Add <<extensions-interactions-parent, Valid Usage and
- Extension pname:pNext Chains>> language specifying where to describe
- interactions of structures in a pname:pNext chain (internal issue 715).
-* 2017-09-10 - Add example of marking up an enumerated type all of whose
- values are defined by extensions (internal issue 864).
-* 2017-08-25 - Add language to the <<extensions,API Versions, Extensions,
- and Layers>> chapter describing how to write new API versions (internal
- issue 892).
-* 2017-06-12 - Add sections describing when to use the
- <<markup-macros-api-name, *name{cl}>> and <<markup-macros-api-text,
- *text{cl}>> markup macros instead of the *link{cl} macros, and clarify
- that slink{cl} should be used for handle as well as structure names
- (internal issue 886).
-* 2017-05-08 - Add appendix describing <<appendix-vuid, Valid Usage ID
- Tags>> and how they're generated.
-* 2017-03-19 - Add naming rule for <<naming-extension-structures, Extension
- Structure Names>>.
-* 2017-02-11 - Finish transitioning to asciidoctor markup.
-* 2016-09-28 - Add asciidoc math markup guidelines.
-* 2016-09-16 - Make style guide markup more consistent with its own
- recommendations.
- Simplify some tables of preferred terms.
- Add sections on block and table markup.
-* 2016-09-12 - Describe writing and markup style for labelled lists.
- Require use of the ISO 8601 date format except in rare legacy cases.
- Expand the description of <<markup-layout,Line Lengths>> and add a
- description of markup for <<markup-footnotes,Footnotes>>.
-* 2016-09-08 - Add a writing section about proper use of
- <<writing-misc-a-an,"`a`" and "`an`">> (internal issue 432).
-* 2016-08-30 - Remove mustnot{cl} and shouldnot{cl} macro definitions, which
- are no longer used in the Specification (internal issue 407).
-* 2016-08-29 - Add spelling and compound word rules (public issue 352).
-* 2016-08-23 - Modify description of specifying extensions in the
- <<extensions,Layers and Extensions>> chapter to refer to the new
- single-branch model for extensions (internal issue 397).
-* 2016-07-26 - Add section describing <<writing-refpages,markup for
- automatic reference page extraction>>.
-* 2016-07-18 - Add examples of function-parameter and structure-member
- markup (based on public issue 286).
-* 2016-07-11 - Change the document title.
-* 2016-07-07 - Rename document, change license to CC BY, clarify required
- and recommended actions, and reserve use of "`normative`" for the
- Specifications.
-* 2016-06-26 - Move Layers and Extensions chapter from Appendix C of the
- Vulkan API Specification and merge content with the naming guide.
- Put extension and naming chapters into their own source files.
-* 2016-06-20 - Add API naming guide.
-* 2016-05-22 - Add markup and image creation rules, after fixing missing
- figure captions for public issue 219.
-* 2016-05-01 - Include feedback from public issues 120 and 190.
- Use consistent conventions for defining structures.
- Use American rather than British spelling conventions.
-* 2016-03-12 - Recommend against "the value of".
-* 2016-02-26 - Replace use of the "maynot{cl}" macro with "may{cl} not".
-* 2016-02-16 - Place asciidoc conversion post-release.
-* 2016-02-09 - Added quotation mark convention.
-* 2016-02-01 - Add the Oxford Comma section and issue resolution.
-* 2016-01-26 - Add bullet-list style description of command parameters.
-* 2016-01-11 - Add "`Numbers in Text`" section from WSI work.
-* 2015-12-16 - Make "`begin / end`" preferred terms to "`start / finish`".
-* 2015-12-15 - Make "`implementation`" preferred term instead of "`system`".
-* 2015-12-13 - Add tlink{cl}/tname{cl} macros for function pointer types.
-* 2015-12-10 - Initial release for feedback.
diff --git a/codegen/vulkan/tests/README.adoc b/codegen/vulkan/tests/README.adoc
deleted file mode 100644
index 9d52d4d6..00000000
--- a/codegen/vulkan/tests/README.adoc
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright 2017-2021 The Khronos Group Inc.
-//
-// SPDX-License-Identifier: CC-BY-4.0
-
-ifdef::env-github[]
-:note-caption: :information_source:
-endif::[]
-
-= Vulkan^(R)^ API Header Tests
-
-This directory contains simple compilation tests used by the CI script
-(../.gitlab-ci.yml) for the Vulkan C headers generated here, and the
-Vulkan-Hpp C++ headers generated by that project:
-
-[options="compact"]
- * htest.c - test C headers, including all Vulkan platform headers
- ** ggp_c/, wayland-client.h, windows.h, X11/, xcb/, zircon/, screen/ -
- fake platform headers used when compiling in an environment without
- the actual platform headers.
- * hpptest.cpp - test C++ headers
-
-The 'make test' target in ../xml also builds the C header test.
diff --git a/codegen/vulkan/tests/X11/Xlib.h b/codegen/vulkan/tests/X11/Xlib.h
deleted file mode 100644
index c3800e90..00000000
--- a/codegen/vulkan/tests/X11/Xlib.h
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright 2019-2021 The Khronos Group Inc.
-//
-// SPDX-License-Identifier: Apache-2.0
-
-#ifndef _X11_XLIB_H_
-#define _X11_XLIB_H_
-
-// "X11/Xlib.h" for non-X11 compilation environment
-
-typedef int Display;
-typedef int Window;
-typedef int VisualID;
-
-#endif
diff --git a/codegen/vulkan/tests/X11/extensions/Xrandr.h b/codegen/vulkan/tests/X11/extensions/Xrandr.h
deleted file mode 100644
index fc0d7c29..00000000
--- a/codegen/vulkan/tests/X11/extensions/Xrandr.h
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright 2019-2021 The Khronos Group Inc.
-//
-// SPDX-License-Identifier: Apache-2.0
-
-#ifndef _XRANDR_H_
-#define _XRANDR_H_
-
-// "X11/extensions/Xrandr.h" for non-X11 compilation environment
-
-typedef int RROutput;
-
-#endif
diff --git a/codegen/vulkan/tests/ggp_c/vulkan_types.h b/codegen/vulkan/tests/ggp_c/vulkan_types.h
deleted file mode 100644
index ae922a9a..00000000
--- a/codegen/vulkan/tests/ggp_c/vulkan_types.h
+++ /dev/null
@@ -1,8 +0,0 @@
-// Copyright 2019-2021 The Khronos Group Inc.
-//
-// SPDX-License-Identifier: Apache-2.0
-
-// "ggp_c/vulkan_types.h" for non-GGP compilation environment
-
-typedef int GgpStreamDescriptor;
-typedef int GgpFrameToken;
diff --git a/codegen/vulkan/tests/hpptest.cpp b/codegen/vulkan/tests/hpptest.cpp
deleted file mode 100644
index fd6acdd1..00000000
--- a/codegen/vulkan/tests/hpptest.cpp
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright 2019-2021 The Khronos Group Inc.
-//
-// SPDX-License-Identifier: Apache-2.0
-
-#include <vulkan/vulkan.hpp>
-int main()
-{
- auto const instance_info = vk::InstanceCreateInfo();
- vk::Instance instance;
- vk::createInstance(&instance_info, nullptr, &instance);
-}
diff --git a/codegen/vulkan/tests/htest.c b/codegen/vulkan/tests/htest.c
deleted file mode 100644
index aba14d84..00000000
--- a/codegen/vulkan/tests/htest.c
+++ /dev/null
@@ -1,71 +0,0 @@
-//% gcc -c -Wall -I. -I../include htest.c
-
-// Copyright 2019-2021 The Khronos Group Inc.
-//
-// SPDX-License-Identifier: Apache-2.0
-
-// Simple compilation test for Vulkan headers, including all platform
-// headers.
-// To allow compilation in environments without one or more platforms, fake
-// headers for different platforms are supplied. They provide just the types
-// Vulkan platforms require.
-// When a new Vulkan platform is defined, the corresponding USE_PLATFORM
-// header definition, and any supporting fake platform headers, should be
-// defined here, along with a trivial compilation test using a Vulkan type
-// or function specific to that platform.
-
-// Enable each platform when vulkan.h is included
-
-#define VK_USE_PLATFORM_ANDROID_KHR // No headers needed
-#define VK_USE_PLATFORM_FUCHSIA // <zircon/types.h>
-#define VK_USE_PLATFORM_GGP // <ggp_c/vulkan_types.h>
-#define VK_USE_PLATFORM_IOS_MVK // No headers needed
-#define VK_USE_PLATFORM_MACOS_MVK // No headers needed
-#define VK_USE_PLATFORM_METAL_EXT // No headers needed
-#define VK_USE_PLATFORM_VI_NN // No headers needed
-#define VK_USE_PLATFORM_WAYLAND_KHR // <wayland-client.h>
-#define VK_USE_PLATFORM_WIN32_KHR // <windows.h>
-#define VK_USE_PLATFORM_XCB_KHR // <xcb/xcb.h>
-#define VK_USE_PLATFORM_XLIB_KHR // <X11/Xlib.h>
-#define VK_USE_PLATFORM_XLIB_XRANDR_EXT // <X11/extensions/Xrandr.h>
-#define VK_USE_PLATFORM_SCREEN_QNX // <screen/screen.h>
-#define VK_ENABLE_BETA_EXTENSIONS // No headers needed
-
-#include <vulkan/vulkan.h>
-
-// Sanity check with a type or function from each platform header in turn
-
-VkAndroidSurfaceCreateFlagsKHR android_flags;
-VkImagePipeSurfaceCreateFlagsFUCHSIA fuchsia_flags;
-VkStreamDescriptorSurfaceCreateFlagsGGP ggp_flags;
-VkIOSSurfaceCreateFlagsMVK ios_flags;
-VkMacOSSurfaceCreateFlagsMVK macos_flags;
-VkMetalSurfaceCreateFlagsEXT metal_flags;
-VkViSurfaceCreateFlagsNN vi_flags;
-VkWaylandSurfaceCreateFlagsKHR wayland_flags;
-VkWin32SurfaceCreateFlagsKHR win32_flags;
-VkXcbSurfaceCreateFlagsKHR xcb_flags;
-VkXlibSurfaceCreateFlagsKHR xlib_flags;
-VkScreenSurfaceCreateFlagsQNX screen_flags;
-
-int main(void) {
- const VkInstanceCreateInfo instance_info = {
- .sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO,
- .pNext = NULL,
- .flags = 0,
- .pApplicationInfo = NULL,
- .enabledLayerCount = 0,
- .ppEnabledLayerNames = NULL,
- .enabledExtensionCount = 0,
- .ppEnabledExtensionNames = NULL,
- };
- VkInstance instance;
- vkCreateInstance(&instance_info, NULL, &instance);
- vkDestroyInstance(instance, NULL);
-
- // Test XLIB_XRANDR_EXT platform, which doesn't define a new type
- VkResult xrandr_result = vkAcquireXlibDisplayEXT((VkPhysicalDevice)0, (Display *)NULL, (VkDisplayKHR)0);
-
- (void)xrandr_result;
- return 0;
-}
diff --git a/codegen/vulkan/tests/screen/screen.h b/codegen/vulkan/tests/screen/screen.h
deleted file mode 100644
index 4f73f080..00000000
--- a/codegen/vulkan/tests/screen/screen.h
+++ /dev/null
@@ -1,8 +0,0 @@
-// Copyright (c) 2021 BlackBerry Limited.
-//
-// SPDX-License-Identifier: Apache-2.0
-
-// "screen/screen.h" for compilation in non-QNX Screen environment
-
-struct _screen_context;
-struct _screen_window;
diff --git a/codegen/vulkan/tests/wayland-client.h b/codegen/vulkan/tests/wayland-client.h
deleted file mode 100644
index e69de29b..00000000
--- a/codegen/vulkan/tests/wayland-client.h
+++ /dev/null
diff --git a/codegen/vulkan/tests/windows.h b/codegen/vulkan/tests/windows.h
deleted file mode 100644
index 8e9e4846..00000000
--- a/codegen/vulkan/tests/windows.h
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright 2019-2021 The Khronos Group Inc.
-//
-// SPDX-License-Identifier: Apache-2.0
-
-// "windows.h" for non-Windows compilation environment
-typedef int DWORD;
-typedef int HANDLE;
-typedef int HINSTANCE;
-typedef int HMONITOR;
-typedef int HWND;
-typedef int LPCWSTR;
-typedef int SECURITY_ATTRIBUTES;
-
diff --git a/codegen/vulkan/tests/xcb/xcb.h b/codegen/vulkan/tests/xcb/xcb.h
deleted file mode 100644
index 2438f182..00000000
--- a/codegen/vulkan/tests/xcb/xcb.h
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright 2019-2021 The Khronos Group Inc.
-//
-// SPDX-License-Identifier: Apache-2.0
-
-// "xcb/xcb.h" for non-X11 compilation environment
-
-typedef int xcb_connection_t;
-typedef int xcb_window_t;
-typedef int xcb_visualid_t;
diff --git a/codegen/vulkan/tests/zircon/types.h b/codegen/vulkan/tests/zircon/types.h
deleted file mode 100644
index 5ad096dc..00000000
--- a/codegen/vulkan/tests/zircon/types.h
+++ /dev/null
@@ -1,7 +0,0 @@
-// Copyright 2019-2021 The Khronos Group Inc.
-//
-// SPDX-License-Identifier: Apache-2.0
-
-// "zircon/types.h" for non-Zircon compilation environment
-
-typedef int zx_handle_t;
diff --git a/codegen/vulkan/update_valid_usage_ids.sh b/codegen/vulkan/update_valid_usage_ids.sh
deleted file mode 100755
index 524bcb3b..00000000
--- a/codegen/vulkan/update_valid_usage_ids.sh
+++ /dev/null
@@ -1,11 +0,0 @@
-# Copyright 2018-2021 The Khronos Group, Inc.
-#
-# SPDX-License-Identifier: Apache-2.0
-
-# This script updates the valid usage IDs in the specification
-# AsciiDoctor files. If a valid usage entry already contains
-# an ID, it skips that entry. If it does not contain an ID,
-# it will generate a new one.
-
-python3 reflow.py -overwrite -noflow -tagvu
-
diff --git a/codegen/vulkan/xml/Makefile b/codegen/vulkan/xml/Makefile
deleted file mode 100644
index d786bf7d..00000000
--- a/codegen/vulkan/xml/Makefile
+++ /dev/null
@@ -1,158 +0,0 @@
-# Copyright 2013-2021 The Khronos Group Inc.
-#
-# SPDX-License-Identifier: Apache-2.0
-
-# If a recipe fails, delete its target file. Without this cleanup, the leftover
-# file from the failed recipe can falsely satisfy dependencies on subsequent
-# runs of `make`.
-.DELETE_ON_ERROR:
-
-QUIET ?= @
-MKDIR = mkdir -p
-CP = cp
-RM = rm -f
-RMRF = rm -rf
-
-# Generator scripts and options
-# GENOPTS can be e.g. '-noprotect'
-
-PYTHON ?= python3
-SCRIPTS = ../scripts
-GENOPTS =
-
-# Generate Vulkan headers from XML. Many other files can be generated
-# from vk.xml using the scripts, but they are all generated from
-# ../Makefile as part of the process of building the Specification.
-#
-# Targets:
-#
-# default / install - regenerate headers in ../include/vulkan/.
-# validate - run XML validator on vk.xml against the schema.
-# test - check if vulkan_core.h compiles.
-# clean_dirt - remove intermediate files.
-# clean - remove installed and intermediate files.
-
-GENERATED = ../gen
-INCLUDE = $(GENERATED)/include
-TESTS = ../tests
-VULKAN = $(INCLUDE)/vulkan
-SRC = ../src
-VULKAN_VIDEO_CODECS_STD_H = $(INCLUDE)/vk_video
-
-# Static files needed for a complete set of headers, cached in the
-# repository
-STATIC_HEADERS = $(VULKAN)/vulkan.h $(VULKAN)/vk_platform.h \
- $(VULKAN_VIDEO_CODECS_STD_H)/vulkan_video_codecs_common.h \
- $(VULKAN_VIDEO_CODECS_STD_H)/vulkan_video_codec_h264std.h \
- $(VULKAN_VIDEO_CODECS_STD_H)/vulkan_video_codec_h264std_decode.h \
- $(VULKAN_VIDEO_CODECS_STD_H)/vulkan_video_codec_h264std_encode.h \
- $(VULKAN_VIDEO_CODECS_STD_H)/vulkan_video_codec_h265std.h \
- $(VULKAN_VIDEO_CODECS_STD_H)/vulkan_video_codec_h265std_decode.h \
- $(VULKAN_VIDEO_CODECS_STD_H)/vulkan_video_codec_h265std_encode.h
-# Where static headers are stored
-STATIC = ../include/vulkan
-STATIC_VULKAN_VIDEO_CODECS_STD_H = ../include/vk_video
-
-# Vulkan platform-specific headers
-PLATFORM_HEADERS = \
- $(VULKAN)/vulkan_android.h \
- $(VULKAN)/vulkan_fuchsia.h \
- $(VULKAN)/vulkan_ggp.h \
- $(VULKAN)/vulkan_ios.h \
- $(VULKAN)/vulkan_macos.h \
- $(VULKAN)/vulkan_vi.h \
- $(VULKAN)/vulkan_wayland.h \
- $(VULKAN)/vulkan_win32.h \
- $(VULKAN)/vulkan_xcb.h \
- $(VULKAN)/vulkan_xlib.h \
- $(VULKAN)/vulkan_directfb.h \
- $(VULKAN)/vulkan_xlib_xrandr.h \
- $(VULKAN)/vulkan_metal.h \
- $(VULKAN)/vulkan_screen.h \
- $(VULKAN)/vulkan_beta.h
-HEADERS = $(VULKAN)/vulkan_core.h $(PLATFORM_HEADERS)
-
-default install: $(HEADERS) $(STATIC_HEADERS)
-
-$(VULKAN)/vulkan.h: $(STATIC)/vulkan.h
- $(QUIET)$(MKDIR) $(VULKAN)
- $(CP) $? $@
-
-$(VULKAN)/vk_platform.h: $(STATIC)/vk_platform.h
- $(QUIET)$(MKDIR) $(VULKAN)
- $(CP) $? $@
-
-$(VULKAN_VIDEO_CODECS_STD_H)/vulkan_video_codecs_common.h: $(STATIC_VULKAN_VIDEO_CODECS_STD_H)/vulkan_video_codecs_common.h
- $(QUIET)$(MKDIR) $(VULKAN_VIDEO_CODECS_STD_H)
- $(CP) $? $@
-
-$(VULKAN_VIDEO_CODECS_STD_H)/vulkan_video_codec_h264std.h: $(STATIC_VULKAN_VIDEO_CODECS_STD_H)/vulkan_video_codec_h264std.h
- $(QUIET)$(MKDIR) $(VULKAN_VIDEO_CODECS_STD_H)
- $(CP) $? $@
-
-$(VULKAN_VIDEO_CODECS_STD_H)/vulkan_video_codec_h264std_decode.h: $(STATIC_VULKAN_VIDEO_CODECS_STD_H)/vulkan_video_codec_h264std_decode.h
- $(QUIET)$(MKDIR) $(VULKAN_VIDEO_CODECS_STD_H)
- $(CP) $? $@
-
-$(VULKAN_VIDEO_CODECS_STD_H)/vulkan_video_codec_h264std_encode.h: $(STATIC_VULKAN_VIDEO_CODECS_STD_H)/vulkan_video_codec_h264std_encode.h
- $(QUIET)$(MKDIR) $(VULKAN_VIDEO_CODECS_STD_H)
- $(CP) $? $@
-
-$(VULKAN_VIDEO_CODECS_STD_H)/vulkan_video_codec_h265std.h: $(STATIC_VULKAN_VIDEO_CODECS_STD_H)/vulkan_video_codec_h265std.h
- $(QUIET)$(MKDIR) $(VULKAN_VIDEO_CODECS_STD_H)
- $(CP) $? $@
-
-$(VULKAN_VIDEO_CODECS_STD_H)/vulkan_video_codec_h265std_decode.h: $(STATIC_VULKAN_VIDEO_CODECS_STD_H)/vulkan_video_codec_h265std_decode.h
- $(QUIET)$(MKDIR) $(VULKAN_VIDEO_CODECS_STD_H)
- $(CP) $? $@
-
-$(VULKAN_VIDEO_CODECS_STD_H)/vulkan_video_codec_h265std_encode.h: $(STATIC_VULKAN_VIDEO_CODECS_STD_H)/vulkan_video_codec_h265std_encode.h
- $(QUIET)$(MKDIR) $(VULKAN_VIDEO_CODECS_STD_H)
- $(CP) $? $@
-
-################################################
-
-# Autogenerate vulkan header from XML API description
-
-# Python and XML files on which vulkan_core.h depends
-GENSCRIPT = $(SCRIPTS)/genvk.py
-VKXML = vk.xml
-VKH_DEPENDS = $(VKXML) $(GENSCRIPT) $(SCRIPTS)/reg.py $(SCRIPTS)/generator.py
-
-$(HEADERS): $(VKH_DEPENDS)
- $(MKDIR) $(VULKAN)
- $(PYTHON) $(GENSCRIPT) $(GENOPTS) -registry $(VKXML) \
- -o $(VULKAN) $(notdir $@)
-
-platform: $(PLATFORM_HEADERS)
-
-# Verify registry XML file against the schema
-validate:
- jing -c registry.rnc $(VKXML)
- $(PYTHON) $(GENSCRIPT) -validate -registry $(VKXML)
-
-# Test that vulkan_core.h compiles
-
-# Platforms to test
-TESTDEFS = -DVK_USE_PLATFORM_XCB_KHR -DVK_USE_PLATFORM_XLIB_KHR
-
-test: $(HEADERS) $(STATIC_HEADERS)
- gcc -Wall -std=c99 -c -I$(INCLUDE) -I$(TESTS) $(TESTS)/htest.c
- gcc -Wall -std=c11 -c -I$(INCLUDE) -I$(TESTS) $(TESTS)/htest.c
- g++ -Wall -c -std=c++98 -I$(INCLUDE) -I$(TESTS) $(TESTS)/htest.c
- g++ -Wall -c -std=c++11 -I$(INCLUDE) -I$(TESTS) $(TESTS)/htest.c
- $(RM) $(TESTS)/test.o
-
-################################################
-
-# Files to clean up
-PYDIRT = diag.txt dumpReg.txt errwarn.txt *.pyc regdump.txt
-DIRT = $(PYDIRT) ERRS \#*
-
-# Clean intermediate files
-clean_dirt:
- -$(RM) $(DIRT)
-
-# Clean generated targets and intermediates
-clean clobber: clean_dirt
- -$(RMRF) $(INCLUDE)
diff --git a/codegen/vulkan/xml/README.adoc b/codegen/vulkan/xml/README.adoc
deleted file mode 100644
index 1fee04d4..00000000
--- a/codegen/vulkan/xml/README.adoc
+++ /dev/null
@@ -1,184 +0,0 @@
-// Copyright 2014-2021 The Khronos Group Inc.
-//
-// SPDX-License-Identifier: CC-BY-4.0
-
-= Vulkan^(R)^ API Registry Build Instructions and Notes
-
-Jon Leech
-
- * <<intro,Introduction>>
- * <<build,Build Environment>>
- * <<files,Files>>
- * <<targets,Makefile Targets>>
- * <<linux,Linux Software Dependencies>>
- * <<windows,Windows Software Dependencies>>
- * <<history,Revision History>>
-
-
-[[intro]]
-== Introduction
-
-This is the Vulkan XML API Registry. It is used to generate the canonical
-`vulkan_core.h`, the API Asciidoc include files used by the Vulkan
-Specification and Reference Pages, and many other types of generated files.
-
-When changes to generated files are needed, follow this workflow.
-Normally changes are needed only when defining a new extension or core
-version of the API.
-
- * Clone the repository and create a branch to work in locally
- * Edit `vk.xml`
- * `make install test`
- ** This generates headers in `../gen/include/vulkan` including
- `vulkan_core.h` and a set of platform-dependent headers
- `vulkan_<platform>.h`.
- * `(cd .. && make generated)`
- ** This uses `vk.xml` to generate asciidoc includes and other intermediate
- files in `../gen` for the specification build.
- There are many ways to invoke the Makefile in `..`.
- This simple recipe only generates includes for the core Vulkan API
- without any extensions.
- See `../BUILD.adoc` for more.
- * Repeat until the headers and/or includes are correct
- * Commit your changes to your local git branch, push to your upstream git
- server (your personal repository clone of KhronosGroup/Vulkan-Docs on
- Github, for people outside Khronos; the Khronos member gitlab server,
- otherwise), and create a pull or merge request against the default
- branch (currently `main`) or other appropriate target.
-
-For a detailed description of the schema, go to `..` and `make registry`,
-which generates `gen/out/registry.html`.
-This document also includes some examples of how to make simple changes in
-the API via the XML.
-
-The generator scripts are written in Python 3, using the `etree` package for
-processing XML.
-See `../scripts/README.adoc` for script descriptions.
-
-
-[[build]]
-== Build Environment
-
-We strongly recommend using the Khronos-provided Docker image, which has all
-needed build tools pre-installed.
-See `../BUILD.adoc` for details.
-
-It is possible to construct your own build environment on Linux, Windows, or
-MacOS by following the recipe in the Dockerfile for the Khronos-provided
-Docker image.
-
-
-[[files]]
-== Files
-
- * `vk.xml` - XML API description.
- * `registry.rnc` - RelaxNG compact schema for validating XML against the
- schema.
- * `Makefile` - generates headers from `vk.xml` (see <<targets,Makefile
- Targets>> below).
- * `../gen/include/vulkan/vulkan_core.h` - Generated Vulkan non-platform
- API header.
- * `../gen/include/vulkan/vulkan_<platform>.h` - Generated Vulkan platform
- API headers.
-
-
-[[targets]]
-== Makefile Targets
-
- * `install` (default target) - regenerate header files in
- `../include/vulkan`.
- * `test` - make sure `../include/vulkan/vulkan_core.h` compiles.
- *Important!* Can also be used to test if platform headers compile by
- specifying `make TESTDEFS=-DVK_USE_PLATFORM_<PLATFORM>_<AUTHORID> test`.
- * `validate` - validate `vk.xml` against the schema. Requires installing
- `jing` (see <<linux,Software Dependencies>> below). Also important!
- * `clean_dirt` - remove intermediate files.
- * `clean` - remove generated files.
-
-Generated files can be created in a directory other than the default
-`../gen/` by setting the Makefile variable `GENERATED` to that directory
-path.
-
-If you have trouble running the Makefile on your platform, the following
-steps will build `vulkan_core.h` and test that it compiles:
-
-[source,sh]
-----
-# Regenerate header from XML
-python3 ../scripts/genvk.py -o ../include/vulkan vulkan_core.h
-# Verify that the resulting header compiles
-gcc -Wall -c -I../include testcore.c
-g++ -Wall -c -std=c++98 -I../include testcore.c
-g++ -Wall -c -std=c++11 -I../include testcore.c
-----
-
-
-[[history]]
-== Revision History
-
- * 2020-08-25 -
- Update for new default branch (`main`).
- * 2019/05/12 -
- Bring up to date with changes in file paths and build tools.
- * 2019/03/10 -
- Update for script reorganization.
- * 2018/05/21 -
- Don't generate vulkan_ext.[ch] from the `install` target. Add a new
- shortcut `extloader` target for people still using this code and needing
- to regenerate it.
- * 2018/03/13 -
- Update for new directory structure.
- * 2018/03/06 -
- Update for Vulkan 1.1 release and `master` branch.
- * 2015/09/18 -
- Split platform-specific headers into their own vulkan_<platform>.h
- files, move vulkan.h to vulkan_core.h, and add a new (static) vulkan.h
- which includes appropriate combinations of the other headers.
- * 2015/06/01 -
- The header that is generated has been improved relative to the first
- version. Function arguments are indented like the hand-generated header,
- enumerant BEGIN/END_RANGE enums are named the same, etc. The ordering of
- declarations is unlike the hand-generated header, and probably always
- will because it results from a type/enum/function dependency analysis.
- Some of this can be forced by being more explicit about it, if that is a
- big deal.
- * 2015/06/02 -
- Per WG signoff, converted hex constant values to decimal (for
- non-bitmasks) and VK_BIT macros to 'bitpos' attributes in the XML and
- hex constants in the header. Updated schema to match. Changed <ptype>
- tag to <type>.
- * 2015/06/03 -
- Moved into new 'vulkan' tree (did not bother preserving history in
- previous repo). Added semantic knowledge about structs and unions to
- <type> tags instead of just imbedding C struct definitions. Improved
- registry.rnc schema a bit.
- * 2015/06/07 -
- Incorporate feedback from F2F including Python 3 and Windows fixes to
- the scripts. Add documentation to readme.pdf. Fold in multiple merge
- requests resulting from action items agreed at the F2F, to prepare
- for everyone moving to XML instead of directly editing the header.
- * 2015/06/20 -
- Add vulkan-docs target and instructions for installing python3 and
- python-lxml for Windows.
- * 2015/08/13 -
- Bring documentation up to date with Makefile targets (default is now
- ../include/vulkan.h).
- * 2015/09/02 -
- Update README with required (or known working) versions of toolchain
- components.
- * 2015/09/02 -
- Move include/vulkan.h to vulkan/vulkan.h so #include "vulkan/vulkan.h"
- is the normal usage (Bug 14576).
- * 2016/02/12 -
- Update README and remove old files to stage for public release.
- * 2016/05/31 -
- Remove dependency on lxml.
- * 2016/07/27 -
- Update documentation for changes to schema and generator scripts.
- * 2016/08/26 -
- Move README to an asciidoc file and update for the single-branch model.
- Use 'clean' target to remove generated files in both spec source and
- registry Makefiles.
- * 2017/02/20 -
- Move registry.txt (schema documentation) to the Vulkan spec source
- directory and update the README here.
diff --git a/codegen/vulkan/xml/generate-core-block.rb b/codegen/vulkan/xml/generate-core-block.rb
deleted file mode 100644
index 3a97e300..00000000
--- a/codegen/vulkan/xml/generate-core-block.rb
+++ /dev/null
@@ -1,125 +0,0 @@
-# Copyright 2018-2021 The Khronos Group Inc.
-#
-# SPDX-License-Identifier: Apache-2.0
-
-require 'nokogiri'
-
-
-renames = {}
-
-extension_name = ARGV[0]
-extension_suffix = /VK_([^_]+)_.+/.match(extension_name)[1]
-
-allowed_dependency_renames = ['']
-
-file = File.open("vk.xml")
-Nokogiri::XML(file).xpath('//extension[@name="' + extension_name + '"]').each do | extension |
- extension_enum_offset = 1000000000 + ((extension.attribute('number').content.to_i - 1) * 1000)
- extension.xpath('require').each do |require|
-
- do_rename = false
-
- if require.attribute('extension')
- allowed_dependency_renames.each do |dependency|
- if require.attribute('extension').content == dependency
- do_rename = true
- end
- end
- else
- do_rename = true
- end
-
- if do_rename == false
- puts "Extension interaction with " + require.attribute('extension').content + " needs addressing!"
- else
- core_block = "\t"*2 + require.to_s.lines[0].strip + "\n"
- alias_block = "\t"*3 + require.to_s.lines[0].strip + "\n"
-
- require.children.each do |element|
- if element.node_name != 'text' && element.node_name != 'comment'
-
- # Core Block
- if /.+_EXTENSION_NAME/.match(element.attribute('name').content) == nil &&
- /.+_SPEC_VERSION/.match(element.attribute('name').content) == nil
-
- case element.node_name
- when 'enum'
- attributes = element.attributes
- if element.attributes['offset']
- attributes['value'] = element.attribute('offset').content.to_i + extension_enum_offset
- attributes.delete('offset')
- end
-
- core_block << "\t"*3 + '<enum'
- attributes.each_pair do |key, value|
- core_block << ' ' + key + '="' + value.to_s + '"'
- end
- core_block << '/>' + "\n"
- when 'type', 'command'
- core_block << "\t"*3 + element.to_s.strip + "\n"
- else
- core_block << "Warning: Unknown type found!\n" << element.node_name
- end
- end
-
- # Alias Block + Renames
-
- if /.+_EXTENSION_NAME/.match(element.attribute('name').content) ||
- /.+_SPEC_VERSION/.match(element.attribute('name').content)
- alias_block << "\t"*4 + element.to_s.strip + "\n"
- else
- old_name = element.attribute('name').content
- new_name = old_name.sub('_' + extension_suffix,'').sub(extension_suffix,'')
- alias_block << "\t"*4 + '<alias name="' + old_name + '" value="' + new_name + '"/>' + "\n"
- renames[old_name] = new_name
- core_block.gsub!(old_name,new_name)
- end
- end
- end
- alias_block << "\t"*3 + require.to_s.lines[-1].strip
- core_block << "\t"*2 + require.to_s.lines[-1].strip
-
- puts alias_block
- puts
- puts core_block
- puts
- renames.each_pair do |old, new|
- puts old + ' -> ' + new
- end
- end
- end
-end
-
-outdata = File.read('vk.xml')
-
-renames.each_pair do |old, new|
- outdata.gsub!(old,new)
-end
-
-File.open('vk.xml', 'w') do |out|
- out << outdata
-end
-
-def rename_text_files(dir, renames, extension_name)
- Dir[dir + '/*.txt'].each do |name|
- # Skip renaming in the extension appendix, since this should preserve the old names.
- if (name != ('../appendices/' + extension_name + '.txt'))
- old_file = File.read(name)
-
- new_file = old_file.clone
- renames.each_pair do |old, new|
- new_file.gsub!(old,new)
- end
-
- if (old_file != new_file)
- File.write(name, new_file)
- end
- end
- end
- Dir[dir + '/*/'].each do |subdir|
- rename_text_files(subdir, renames, extension_name)
- end
-end
-
-rename_text_files('../chapters', renames, extension_name)
-rename_text_files('../appendices', renames, extension_name)
diff --git a/codegen/vulkan/xml/registry.rnc b/codegen/vulkan/xml/registry.rnc
deleted file mode 100644
index ad645c04..00000000
--- a/codegen/vulkan/xml/registry.rnc
+++ /dev/null
@@ -1,610 +0,0 @@
-# Copyright 2013-2021 The Khronos Group Inc.
-#
-# SPDX-License-Identifier: Apache-2.0
-
-# Relax NG schema for Khronos Vulkan API Registry XML
-#
-# See https://www.khronos.org/vulkan/
-#
-# This definition is subject to change (mostly in the form of additions)
-
-namespace xsd = "http://www.w3.org/2001/XMLSchema-datatypes"
-
-# Toplevel is a <registry> tag.
-# May be led by an optional <comment> tag containing e.g. copyrights.
-start = element registry {
- (
- element comment { text } ? |
- Platforms * |
- Tags * |
- Types * |
- Enums * |
- Commands * |
- Feature * |
- Extensions * |
- SpirvExtensions * |
- SpirvCapabilities *
- ) *
-}
-
-# <platforms> defines a group of platform names
-Platforms = element platforms {
- Comment ? ,
- Platform *
-}
-
-# <platform> defines a single platform name.
-# name - string name of the platform, used as part of extension names
-# protect - preprocessor symbol to include platform headers from <vulkan.h>
-# comment - platform description
-Platform = element platform {
- attribute name { text } ,
- attribute protect { text } ,
- Comment
-}
-
-# <tags> defines a group of author tags
-Tags = element tags {
- Comment ? ,
- Tag *
-}
-
-# <tag> defines a single author tag.
-# name - name of the tag
-# author - name of the author (usually a company or project name)
-# contact - contact responsible for the tag (name and contact information)
-Tag = element tag {
- attribute name { text } ,
- attribute author { text } ,
- attribute contact { text }
-}
-
-# <types> defines a group of types
-Types = element types {
- Comment ? ,
- (
- Type |
- element comment { text }
- ) *
-}
-
-# <type> defines a single type. It is usually a C typedef but
-# may contain arbitrary C code.
-# name - name of this type, if not present in the <name> tag
-# api - matches a <feature> api attribute, if present
-# alias - name of a type this type aliases
-# requires - name of another type definition required by this one
-# bitvalues - for a *Flags type, name of an enum definition that
-# defines the valid values for parameters of that type
-# name - name of the type being defined
-# category - if present, 'enum' indicates a matching <enums>
-# block to generate an enumerated type for, and 'struct'
-# causes special interpretation of the contents of the type
-# tag including ... TBD ...
-# Other allowed values are 'include', 'define', 'handle' and 'bitmask',
-# which don't change syntactic interpretation but allow organization in
-# the generated header.
-# parent - only applicable if category is 'handle'. Notes another type with
-# the 'handle' category that acts as a parent object for this type.
-# returnedonly - only applicable if category is 'struct'. Notes that this
-# struct is going to be filled in by the API, rather than an application
-# filling it out and passing it to the API.
-# structextends - only applicable if category is 'struct'. Lists parent
-# structures which this structure may extend via the pNext chain
-# of the parent.
-# When present it suppresses generation of automatic validity for the
-# pNext member of that structure, and instead the structure is added
-# to pNext chain validity for the parent structures it extends.
-# allowduplicate - only applicable if category is 'struct'. pNext can include
-# multiple structures of this type.
-# objtypeenum - name of VK_OBJECT_TYPE_* API enumerant which corresponds
-# to this type. Currently only specified for category="handle" types.
-# comment - descriptive text with no semantic meaning
-# For types without a category, contents include
-# <apientry /> - substitutes for an APIENTRY-style macro on output
-# <name> - contains name of the type being defined
-# <type> - contains name of types used to define this type. There
-# may be multiple imbedded <type> tags
-# For types with category 'enum', contents should be empty
-# For types with category 'struct', contents should be one or more
-# <member> - like <param> for a struct or union member
-# len - if the member is an array, len may be one or more of the following
-# things, separated by commas (one for each array indirection): another
-# member of that struct, 'null-terminated' for a string, '1' to indicate it's
-# just a pointer (used for nested pointers), or a latex equation (prefixed with
-# 'latexmath:')
-# altlen - if len has latexmath equations, this contains equivalent C99
-# expressions separated by commas.
-# externsync - denotes that the member should be externally synchronized
-# when accessed by Vulkan
-# optional - whether this value can be omitted by providing NULL (for
-# pointers), VK_NULL_HANDLE (for handles) or 0 (for bitmasks/values)
-# selector - for a union member, identifies a separate enum member that
-# selects which of the union's members are valid
-# selection - for a member of a union, identifies an enum value indicating the member is valid
-# noautovalidity - tag stating that no automatic validity language should be generated
-# values - comma-separated list of legal values, usually used only for sType enums
-# limittype - only applicable for members of VkPhysicalDeviceProperties and
-# VkPhysicalDeviceProperties2, their substrucutres, and extensions.
-# Specifies the type of a device limit.
-# Valid values: 'min', 'max', 'bitmask', 'range', 'struct', 'noauto'
-# objecttype - only applicable for members representing a handle as
-# a uint64_t value. Specifies the name of another member which is
-# a VkObjectType or VkDebugReportObjectTypeEXT value specifying
-# the type of object the handle references.
-# <comment> - containing arbitrary text (unused)
-#
-# *** There's a problem here: I'm not sure how to represent the <type>
-# syntax where it may contain arbitrarily interleaved text, <type>, and
-# <enum> child tags. This allows only the syntax
-# text <type>name</type> text <enum>name</enum> text
-# where <type> and <enum> are both optional and occur in the specified
-# order, which might eventually be a problem.
-Type = element type {
- attribute api { text } ? ,
- attribute alias { text } ? ,
- attribute requires { text } ? ,
- attribute bitvalues { text } ? ,
- attribute name { TypeName } ? ,
- attribute category { text } ? ,
- attribute parent { TypeName } ? ,
- attribute returnedonly { text } ? ,
- attribute structextends { text } ? ,
- attribute allowduplicate { text } ? ,
- attribute objtypeenum { text } ? ,
- Comment ? ,
- (
- (
- ( text ,
- element type { text } *
- ) * ,
- element apientry { text } ? ,
- ( text ,
- element type { text } *
- ) * ,
- element name { TypeName } ? ,
- ( text ,
- element type { text } *
- ) *
- ) |
- (
- element member {
- attribute len { text } ? ,
- attribute altlen { text } ? ,
- attribute externsync { text } ? ,
- attribute optional { text } ? ,
- attribute selector { text } ? ,
- attribute selection { EnumName } ? ,
- attribute noautovalidity { text } ? ,
- attribute values { text } ? ,
- attribute limittype { text } ? ,
- attribute objecttype { text } ? ,
- mixed {
- element type { TypeName } ? ,
- element name { text } ? ,
- element enum { EnumName } ? ,
- element comment { text } ?
- }
- } |
- element comment { text }
- ) *
- )
-}
-
-# <enums> defines a group of enumerants
-# name - identifies a type name associated with this group. Should
-# match a <type> name to trigger generation of the type.
-# start, end - beginning and end of a numeric range
-# vendor - owner of the numeric range
-# type - 'enum' or 'bitmask', if present
-# bitwidth - bit width of the enum value type.
-# comment - descriptive text with no semantic meaning
-Enums = element enums {
- attribute name { text } ? ,
- attribute type { text } ? ,
- attribute start { Integer } ? ,
- attribute end { Integer } ? ,
- attribute bitwidth { Integer } ? ,
- Vendor ? ,
- Comment ? ,
- (
- Enum |
- Unused |
- element comment { text}
- ) *
-}
-
-# <enum> defines or references a single enumerant. There are two places it
-# can be used: in an <enums> block, providing a global definition which
-# may later be required by a feature or extension; or in a feature or
-# extension, defining an enumerant specific to that feature. The second
-# form has more possible attributes. Some combinations of attributes are
-# nonsensical in on or the other place, but these are not detected by the
-# validator.
-#
-# Ways to specify the enumerant value:
-# value - integer (including hex) value of the enumerant
-# bitpos - integer bit position of the enumerant in a bitmask
-# [extnumber], offset, [dir] - integer extension number specifying a
-# base block value (inherited from surrounding <extension> if
-# not specified); integer offset in that block; and direction
-# of offset ('-' for negative, positive if not specified).
-# alias - name of another enum this is an alias of
-#
-# value and bitpos allow, and extnumber/offset/dir require:
-# extends - type name of the enumerant being extended
-#
-# Other attributes:
-# api - matches a <feature> api attribute, if present
-# type - 'uint32_t', 'uint64_t', or 'float', if present. There are
-# certain conditions under which the tag must be present, or absent,
-# but they are context-dependent and difficult to express in the
-# RNC syntax.
-# name - enumerant name
-# alias - another enumerant this is semantically identical to
-# protect - additional #ifdef symbol to place around the enum
-# comment - descriptive text with no semantic meaning
-Enum = element enum {
- (
- (
- (
- attribute value { Integer } &
- attribute extends { TypeName } ?
- ) |
- (
- attribute bitpos { Integer } &
- attribute extends { TypeName } ?
- ) |
- (
- attribute extnumber { Integer } ? &
- attribute offset { Integer } &
- attribute dir { text } ? &
- attribute extends { TypeName }
- ) |
- (
- attribute extends { TypeName } ? &
- attribute alias { TypeName }
- )
- ) ? &
- attribute protect { text } ? &
- attribute api { text } ? &
- attribute type { TypeSuffix } ? &
- attribute name { text } &
- Comment ?
- )
-}
-
-# <unused> defines a range of enumerants not currently being used
-# start, end - beginning and end of an unused numeric range
-# vendor - unused
-# comment - descriptive text with no semantic meaning
-Unused = element unused {
- attribute start { Integer } ,
- attribute end { Integer } ? ,
- Vendor ? ,
- Comment ?
-}
-
-# <commands> defines a group of commands
-Commands = element commands {
- Comment ? ,
- Command *
-}
-
-# <command> defines a single command
-#
-# There are two forms of the tag.
-#
-# The first only has 'name' and 'alias' attributes, and no contents.
-# It defines a command alias.
-#
-# The second fully defines a command, and has the following structure:
-# The possible attributes are not described in this comment block yet, but
-# are in readme.pdf. The "prefix" and "suffix" attributes are currently
-# present only in the OpenCL XML registry, where they are currently unused.
-#
-# <proto> is the C function prototype, including the return type
-# <param> are function parameters, in order
-# len - if the member is an array, len may be one or more of the following
-# things, separated by commas (one for each array indirection): another
-# member of that struct, 'null-terminated' for a string, '1' to indicate it's
-# just a pointer (used for nested pointers), or a latex equation (prefixed with
-# 'latexmath:')
-# altlen - if len has latexmath equations, this contains equivalent C99
-# expressions separated by commas.
-# externsync - denotes that the member should be externally synchronized
-# when accessed by Vulkan
-# optional - whether this value can be omitted by providing NULL (for
-# pointers), VK_NULL_HANDLE (for handles) or 0 (for bitmasks/values)
-# selector - for a union parameter, identifies a separate enum parameter that
-# selects which of the union's members are valid
-# noautovalidity - tag stating that no automatic validity language should be generated
-# objecttype - only applicable for parameters representing a handle as
-# a uint64_t value. Specifies the name of another parameter which is
-# a VkObjectType or VkDebugReportObjectTypeEXT value specifying
-# the type of object the handle references.
-# <type> is a <type> name, if present
-# <name> is the function / parameter name, if present (normally should
-# be, except for void parameters).
-# The textual contents of <proto> and <param> should be legal C
-# for those parts of a function declaration.
-# <alias> - denotes function aliasing, if present
-# name - name of aliased function
-# <description> - unused text
-# <implicitexternsyncparams> are spec-language descriptions of
-# objects that are not parameters of the command, but
-# are related to them and also require external synchronization.
-Command = element command {
- ( attribute name { text } ,
- attribute alias { text } ) |
- (
- attribute queues { text } ? ,
- attribute successcodes { text } ? ,
- attribute errorcodes { text } ? ,
- attribute renderpass { text } ? ,
- attribute cmdbufferlevel { text } ? ,
- attribute prefix { text } ? ,
- attribute suffix { text } ? ,
- Comment ? ,
- element proto {
- mixed {
- element type { TypeName } ? ,
- element name { text }
- }
- } ,
- element param {
- attribute len { text } ? ,
- attribute altlen { text } ? ,
- attribute externsync { text } ? ,
- attribute optional { text } ? ,
- attribute selector { text } ? ,
- attribute noautovalidity { text } ? ,
- attribute objecttype { text } ? ,
- mixed {
- element type { TypeName } ? ,
- element name { text } ?
- }
- } * ,
- (
- element alias {
- Name
- } ? &
- element description {
- text
- } ? &
- element implicitexternsyncparams {
- element param { text } *
- } ?
- )
- )
-}
-
-# Each <feature> defines the interface of an API version (e.g. OpenGL 1.2)
-# api - API tag (e.g. 'gl', 'gles2', etc. - used internally, not
-# necessarily an actual API name
-# 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
-# comment - descriptive text with no semantic meaning
-Feature = element feature {
- attribute api { text } ,
- Name ,
- attribute number { xsd:float } ,
- attribute protect { text } ? ,
- attribute sortorder { xsd:integer } ?,
- Comment ? ,
- (
- element require {
- ProfileName ? ,
- ExtensionName ? ,
- Comment ? ,
- (
- InterfaceElement |
- element comment { text }
- ) *
- } |
- element remove {
- ProfileName ? ,
- Comment ? ,
- (
- InterfaceElement |
- element comment { text }
- ) *
- }
- ) *
-}
-
-Extensions = element extensions {
- Comment ? ,
- Extension *
-}
-
-# Defines the interface of an API <extension>. Like a <feature>
-# tag, but with slightly different attributes:
-# api - regexp pattern matching one or more API tags, indicating
-# which APIs the extension is known to work with. The only
-# syntax supported is <name>{|<name>}* and each name must
-# 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.
-# author - name of the author (usually a company or project name)
-# contact - contact responsible for the tag (name and contact information)
-# type - 'device' or 'instance', if present
-# requires - commas-separated list of extension names required by this
-# extension
-# requiresCore - core version of Vulkan required by the extension, e.g.
-# "1.1". Defaults to "1.0".
-# supported - profile name(s) supporting this extension, e.g. 'vulkan'
-# or 'disabled' to never generate output.
-# promotedto - Vulkan version or a name of an extension that this
-# extension was promoted to; e.g. 'VK_VERSION_1_1', or
-# 'VK_KHR_draw_indirect_county'
-# deprecatedby - Vulkan version or a name of an extension that deprecates
-# this extension. It may be empty string.
-# e.g. 'VK_VERSION_1_1', or 'VK_EXT_debug_utils', or ''
-# obsoletedby - Vulkan version or a name of an extension that obsoletes
-# this extension. It may be empty string.
-# e.g. 'VK_VERSION_1_1', or 'VK_EXT_debug_utils', or ''
-# provisional - 'true' if this extension is released provisionally
-# specialuse - contains one or more tokens separated by commas, indicating
-# a special purpose of the extension. Tokens may include 'cadsupport',
-# 'd3demulation', 'devtools', 'debugging', and 'glemulation'. Others
-# may be added in the future.
-# In addition, <require> / <remove> tags also support an api attribute:
-# api - only require/remove these features for the matching API.
-# Not a regular expression.
-Extension = element extension {
- Name ,
- attribute number { Integer } ? ,
- attribute sortorder { xsd:integer } ?,
- attribute protect { text } ? ,
- attribute platform { text } ? ,
- attribute author { text } ? ,
- attribute contact { text } ? ,
- attribute type { text } ? ,
- attribute requires { text } ? ,
- attribute requiresCore { text } ? ,
- attribute supported { StringGroup } ? ,
- attribute promotedto { text } ? ,
- attribute deprecatedby { text } ? ,
- attribute obsoletedby { text } ? ,
- attribute provisional { text } ? ,
- attribute specialuse { text } ? ,
- Comment ? ,
- (
- element require {
- attribute api { text } ? ,
- ProfileName ? ,
- ExtensionName ? ,
- FeatureName ? ,
- Comment ? ,
- (
- InterfaceElement |
- element comment { text }
- ) *
- } |
- element remove {
- attribute api { text } ? ,
- ProfileName ? ,
- Comment ? ,
- (
- InterfaceElement |
- element comment { text }
- ) *
- }
- ) *
-}
-
-# Each <spirvextension> define a SPIR-V extension that can be used in the API.
-# Each <spirvcapability> define a SPIR-V capability that can be used in the API.
-# Contains information to both generate table in spec as well as validation
-# what needs to be enabled be used in Vulkan
-SpirvExtensions = element spirvextensions {
- Comment ? ,
- SpirvExtension *
-}
-
-SpirvExtension = element spirvextension {
- Name ,
- Enable *
-}
-
-SpirvCapabilities = element spirvcapabilities {
- Comment ? ,
- SpirvCapability *
-}
-
-SpirvCapability = element spirvcapability {
- Name ,
- Enable *
-}
-
-# <enable> defines a way to enable the parent element in the API.
-# If anyone of the <enable> elements are valid then the parent element
-# can be used.
-#
-# There are four forms of the tag.
-#
-# The first only has the minimal version of Vulkan of the application
-#
-# The second only has a single Vulkan extension that must be enabled
-#
-# The third has a single Vulkan feature with the struct where it is from
-#
-# The forth has a property struct, the member field in it, and the value
-# that must be present
-#
-# To make scripting easier, each <enable> has a require attribute to map
-# to the asciidoctor conditional logic in the spec. For version and
-# extension attribute variations, there is no need for the require attribute
-# since it is a redundant 1:1 mapping.
-#
-# The 'alias' attribute is used in cases where the anchor link can't be
-# propertly resolved and needs a manual name to link to
-Enable = element enable {
- (
- attribute version { text } ) |
- (
- attribute extension { text } ) |
- (
- attribute struct { text },
- attribute feature { text },
- attribute requires { text },
- attribute alias { text } ? ) |
- (
- attribute property { text },
- attribute member { text },
- attribute value { text },
- attribute requires { text } ? )
-}
-
-# Contents of a <require> / <remove> tag, defining a group
-# of features to require or remove.
-# <type> / <enum> / <command> all have attributes
-# name - feature name which must match
-InterfaceElement =
- element type {
- Name ,
- Comment ?
- } |
- Enum |
- element command {
- Name ,
- Comment ?
- }
-
-# Integers are allowed to be either decimal or C-hex (0x[0-9A-F]+), but
-# XML Schema types don't seem to support hex notation, so we use this
-# as a placeholder.
-Integer = text
-
-# EnumName is an compile-time constant name
-EnumName = text
-
-# TypeName is an argument/return value C type name
-TypeName = text
-
-# TypeSuffix is a C numeric type suffix, e.g. 'u' or 'ull'
-TypeSuffix = text
-
-# StringGroup is a regular expression with an implicit
-# '^(' and ')$' bracketing it.
-StringGroup = text
-
-# Repeatedly used attributes
-ProfileName = attribute profile { text }
-ExtensionName = attribute extension { text }
-FeatureName = attribute feature { text }
-Vendor = attribute vendor { text }
-Comment = attribute comment { text }
-Name = attribute name { text }
-
-
diff --git a/codegen/vulkan/xml/vk.xml b/codegen/vulkan/xml/vk.xml
deleted file mode 100644
index 73245d2e..00000000
--- a/codegen/vulkan/xml/vk.xml
+++ /dev/null
@@ -1,18299 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<registry>
- <comment>
-Copyright 2015-2021 The Khronos Group Inc.
-
-SPDX-License-Identifier: Apache-2.0 OR MIT
- </comment>
-
- <comment>
-This file, vk.xml, is the Vulkan API Registry. It is a critically important
-and normative part of the Vulkan Specification, including a canonical
-machine-readable definition of the API, parameter and member validation
-language incorporated into the Specification and reference pages, and other
-material which is registered by Khronos, such as tags used by extension and
-layer authors. The authoritative public version of vk.xml is maintained in
-the default branch (currently named main) of the Khronos Vulkan GitHub
-project. The authoritative private version is maintained in the default
-branch of the member gitlab server.
- </comment>
-
- <platforms comment="Vulkan platform names, reserved for use with platform- and window system-specific extensions">
- <platform name="xlib" protect="VK_USE_PLATFORM_XLIB_KHR" comment="X Window System, Xlib client library"/>
- <platform name="xlib_xrandr" protect="VK_USE_PLATFORM_XLIB_XRANDR_EXT" comment="X Window System, Xlib client library, XRandR extension"/>
- <platform name="xcb" protect="VK_USE_PLATFORM_XCB_KHR" comment="X Window System, Xcb client library"/>
- <platform name="wayland" protect="VK_USE_PLATFORM_WAYLAND_KHR" comment="Wayland display server protocol"/>
- <platform name="directfb" protect="VK_USE_PLATFORM_DIRECTFB_EXT" comment="DirectFB library"/>
- <platform name="android" protect="VK_USE_PLATFORM_ANDROID_KHR" comment="Android OS"/>
- <platform name="win32" protect="VK_USE_PLATFORM_WIN32_KHR" comment="Microsoft Win32 API (also refers to Win64 apps)"/>
- <platform name="vi" protect="VK_USE_PLATFORM_VI_NN" comment="Nintendo Vi"/>
- <platform name="ios" protect="VK_USE_PLATFORM_IOS_MVK" comment="Apple IOS"/>
- <platform name="macos" protect="VK_USE_PLATFORM_MACOS_MVK" comment="Apple MacOS"/>
- <platform name="metal" protect="VK_USE_PLATFORM_METAL_EXT" comment="Metal on CoreAnimation on Apple platforms"/>
- <platform name="fuchsia" protect="VK_USE_PLATFORM_FUCHSIA" comment="Fuchsia"/>
- <platform name="ggp" protect="VK_USE_PLATFORM_GGP" comment="Google Games Platform"/>
- <platform name="provisional" protect="VK_ENABLE_BETA_EXTENSIONS" comment="Enable declarations for beta/provisional extensions"/>
- <platform name="screen" protect="VK_USE_PLATFORM_SCREEN_QNX" comment="QNX Screen Graphics Subsystem"/>
- </platforms>
-
- <tags comment="Vulkan vendor/author tags for extensions and layers">
- <tag name="IMG" author="Imagination Technologies" contact="Michael Worcester @michaelworcester"/>
- <tag name="AMD" author="Advanced Micro Devices, Inc." contact="Daniel Rakos @drakos-amd"/>
- <tag name="AMDX" author="Advanced Micro Devices, Inc." contact="Daniel Rakos @drakos-amd"/>
- <tag name="ARM" author="ARM Limited" contact="Jan-Harald Fredriksen @janharaldfredriksen-arm"/>
- <tag name="FSL" author="Freescale Semiconductor, Inc." contact="Norbert Nopper @FslNopper"/>
- <tag name="BRCM" author="Broadcom Corporation" contact="Graeme Leese @gnl21"/>
- <tag name="NXP" author="NXP Semiconductors N.V." contact="Norbert Nopper @FslNopper"/>
- <tag name="NV" author="NVIDIA Corporation" contact="Daniel Koch @dgkoch"/>
- <tag name="NVX" author="NVIDIA Corporation" contact="Daniel Koch @dgkoch"/>
- <tag name="VIV" author="Vivante Corporation" contact="Yanjun Zhang gitlab:@yanjunzhang"/>
- <tag name="VSI" author="VeriSilicon Holdings Co., Ltd." contact="Yanjun Zhang gitlab:@yanjunzhang"/>
- <tag name="KDAB" author="KDAB" contact="Sean Harmer @seanharmer"/>
- <tag name="ANDROID" author="Google LLC" contact="Jesse Hall @critsec"/>
- <tag name="CHROMIUM" author="Google LLC" contact="Jesse Hall @critsec"/>
- <tag name="FUCHSIA" author="Google LLC" contact="Craig Stout @cdotstout, Jesse Hall @critsec, John Rosasco @rosasco"/>
- <tag name="GGP" author="Google, LLC" contact="Jean-Francois Roy @jfroy, Hai Nguyen @chaoticbob, Jesse Hall @critsec"/>
- <tag name="GOOGLE" author="Google LLC" contact="Jesse Hall @critsec"/>
- <tag name="QCOM" author="Qualcomm Technologies, Inc." contact="Jeff Leger @jackohounhd"/>
- <tag name="LUNARG" author="LunarG, Inc." contact="Karen Ghavam @karenghavam-lunarg"/>
- <tag name="SAMSUNG" author="Samsung Electronics Co., Ltd." contact="Alon Or-bach @alonorbach"/>
- <tag name="SEC" author="Samsung Electronics Co., Ltd." contact="Alon Or-bach @alonorbach"/>
- <tag name="TIZEN" author="Samsung Electronics Co., Ltd." contact="Alon Or-bach @alonorbach"/>
- <tag name="RENDERDOC" author="RenderDoc (renderdoc.org)" contact="Baldur Karlsson @baldurk"/>
- <tag name="NN" author="Nintendo Co., Ltd." contact="Yasuhiro Yoshioka gitlab:@yoshioka_yasuhiro"/>
- <tag name="MVK" author="The Brenwill Workshop Ltd." contact="Bill Hollings @billhollings"/>
- <tag name="KHR" author="Khronos" contact="Tom Olson @tomolson"/>
- <tag name="KHX" author="Khronos" contact="Tom Olson @tomolson"/>
- <tag name="EXT" author="Multivendor" contact="Jon Leech @oddhack"/>
- <tag name="MESA" author="Mesa open source project" contact="Chad Versace @chadversary, Daniel Stone @fooishbar, David Airlie @airlied, Jason Ekstrand @jekstrand"/>
- <tag name="INTEL" author="Intel Corporation" contact="Slawek Grajewski @sgrajewski"/>
- <tag name="HUAWEI" author="Huawei Technologies Co. Ltd." contact="Hueilong Wang @wyvernathuawei, Yunpeng Zhu @yunxingzhu"/>
- <tag name="VALVE" author="Valve Corporation" contact="Pierre-Loup Griffais @plagman, Joshua Ashton @Joshua-Ashton, Hans-Kristian Arntzen @HansKristian-Work"/>
- <tag name="QNX" author="BlackBerry Limited" contact="Mike Gorchak @mgorchak-blackberry"/>
- <tag name="JUICE" author="Juice Technologies, Inc." contact="David McCloskey @damcclos, Dean Beeler @canadacow"/>
- <tag name="FB" author="Facebook, Inc" contact="Artem Bolgar @artyom17"/>
- </tags>
-
- <types comment="Vulkan type definitions">
- <type name="vk_platform" category="include">#include "vk_platform.h"</type>
-
- <comment>WSI extensions</comment>
-
- <type category="include" name="X11/Xlib.h"/>
- <type category="include" name="X11/extensions/Xrandr.h"/>
- <type category="include" name="wayland-client.h"/>
- <type category="include" name="windows.h"/>
- <type category="include" name="xcb/xcb.h"/>
- <type category="include" name="directfb.h"/>
- <type category="include" name="zircon/types.h"/>
- <type category="include" name="ggp_c/vulkan_types.h"/>
- <type category="include" name="screen/screen.h"/>
- <comment>
- In the current header structure, each platform's interfaces
- are confined to a platform-specific header (vulkan_xlib.h,
- vulkan_win32.h, etc.). These headers are not self-contained,
- and should not include native headers (X11/Xlib.h,
- windows.h, etc.). Code should either include vulkan.h after
- defining the appropriate VK_USE_PLATFORM_platform
- macros, or include the required native headers prior to
- explicitly including the corresponding platform header.
-
- To accomplish this, the dependencies of native types require
- native headers, but the XML defines the content for those
- native headers as empty. The actual native header includes
- can be restored by modifying the native header tags above
- to #include the header file in the 'name' attribute.
- </comment>
-
- <type requires="X11/Xlib.h" name="Display"/>
- <type requires="X11/Xlib.h" name="VisualID"/>
- <type requires="X11/Xlib.h" name="Window"/>
- <type requires="X11/extensions/Xrandr.h" name="RROutput"/>
- <type requires="wayland-client.h" name="wl_display"/>
- <type requires="wayland-client.h" name="wl_surface"/>
- <type requires="windows.h" name="HINSTANCE"/>
- <type requires="windows.h" name="HWND"/>
- <type requires="windows.h" name="HMONITOR"/>
- <type requires="windows.h" name="HANDLE"/>
- <type requires="windows.h" name="SECURITY_ATTRIBUTES"/>
- <type requires="windows.h" name="DWORD"/>
- <type requires="windows.h" name="LPCWSTR"/>
- <type requires="xcb/xcb.h" name="xcb_connection_t"/>
- <type requires="xcb/xcb.h" name="xcb_visualid_t"/>
- <type requires="xcb/xcb.h" name="xcb_window_t"/>
- <type requires="directfb.h" name="IDirectFB"/>
- <type requires="directfb.h" name="IDirectFBSurface"/>
- <type requires="zircon/types.h" name="zx_handle_t"/>
- <type requires="ggp_c/vulkan_types.h" name="GgpStreamDescriptor"/>
- <type requires="ggp_c/vulkan_types.h" name="GgpFrameToken"/>
- <type requires="screen/screen.h" name="_screen_context"/>
- <type requires="screen/screen.h" name="_screen_window"/>
-
- <type category="define">// DEPRECATED: This define is deprecated. VK_MAKE_API_VERSION should be used instead.
-#define <name>VK_MAKE_VERSION</name>(major, minor, patch) \
- ((((uint32_t)(major)) &lt;&lt; 22) | (((uint32_t)(minor)) &lt;&lt; 12) | ((uint32_t)(patch)))</type>
- <type category="define">// DEPRECATED: This define is deprecated. VK_API_VERSION_MAJOR should be used instead.
-#define <name>VK_VERSION_MAJOR</name>(version) ((uint32_t)(version) &gt;&gt; 22)</type>
- <type category="define">// DEPRECATED: This define is deprecated. VK_API_VERSION_MINOR should be used instead.
-#define <name>VK_VERSION_MINOR</name>(version) (((uint32_t)(version) &gt;&gt; 12) &amp; 0x3FFU)</type>
- <type category="define">// DEPRECATED: This define is deprecated. VK_API_VERSION_PATCH should be used instead.
-#define <name>VK_VERSION_PATCH</name>(version) ((uint32_t)(version) &amp; 0xFFFU)</type>
-
- <type category="define">#define <name>VK_MAKE_API_VERSION</name>(variant, major, minor, patch) \
- ((((uint32_t)(variant)) &lt;&lt; 29) | (((uint32_t)(major)) &lt;&lt; 22) | (((uint32_t)(minor)) &lt;&lt; 12) | ((uint32_t)(patch)))</type>
- <type category="define">#define <name>VK_API_VERSION_VARIANT</name>(version) ((uint32_t)(version) &gt;&gt; 29)</type>
- <type category="define">#define <name>VK_API_VERSION_MAJOR</name>(version) (((uint32_t)(version) &gt;&gt; 22) &amp; 0x7FU)</type>
- <type category="define">#define <name>VK_API_VERSION_MINOR</name>(version) (((uint32_t)(version) &gt;&gt; 12) &amp; 0x3FFU)</type>
- <type category="define">#define <name>VK_API_VERSION_PATCH</name>(version) ((uint32_t)(version) &amp; 0xFFFU)</type>
-
- <type category="define">// DEPRECATED: This define has been removed. Specific version defines (e.g. VK_API_VERSION_1_0), or the VK_MAKE_VERSION macro, should be used instead.
-//#define <name>VK_API_VERSION</name> <type>VK_MAKE_VERSION</type>(1, 0, 0) // Patch version should always be set to 0</type>
- <type category="define" requires="VK_MAKE_API_VERSION">// Vulkan 1.0 version number
-#define <name>VK_API_VERSION_1_0</name> <type>VK_MAKE_API_VERSION</type>(0, 1, 0, 0)// Patch version should always be set to 0</type>
- <type category="define" requires="VK_MAKE_API_VERSION">// Vulkan 1.1 version number
-#define <name>VK_API_VERSION_1_1</name> <type>VK_MAKE_API_VERSION</type>(0, 1, 1, 0)// Patch version should always be set to 0</type>
- <type category="define" requires="VK_MAKE_API_VERSION">// Vulkan 1.2 version number
-#define <name>VK_API_VERSION_1_2</name> <type>VK_MAKE_API_VERSION</type>(0, 1, 2, 0)// Patch version should always be set to 0</type>
- <type category="define">// Version of this file
-#define <name>VK_HEADER_VERSION</name> 198</type>
- <type category="define" requires="VK_HEADER_VERSION">// Complete version of this file
-#define <name>VK_HEADER_VERSION_COMPLETE</name> <type>VK_MAKE_API_VERSION</type>(0, 1, 2, VK_HEADER_VERSION)</type>
-
- <type category="define">
-#define <name>VK_DEFINE_HANDLE</name>(object) typedef struct object##_T* object;</type>
-
- <type category="define" name="VK_USE_64_BIT_PTR_DEFINES">
-#ifndef VK_USE_64_BIT_PTR_DEFINES
- #if defined(__LP64__) || defined(_WIN64) || (defined(__x86_64__) &amp;&amp; !defined(__ILP32__) ) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__)
- #define VK_USE_64_BIT_PTR_DEFINES 1
- #else
- #define VK_USE_64_BIT_PTR_DEFINES 0
- #endif
-#endif</type>
- <type category="define" requires="VK_USE_64_BIT_PTR_DEFINES" name="VK_NULL_HANDLE">
-#ifndef VK_DEFINE_NON_DISPATCHABLE_HANDLE
- #if (VK_USE_64_BIT_PTR_DEFINES==1)
- #if (defined(__cplusplus) &amp;&amp; (__cplusplus >= 201103L)) || (defined(_MSVC_LANG) &amp;&amp; (_MSVC_LANG >= 201103L))
- #define VK_NULL_HANDLE nullptr
- #else
- #define VK_NULL_HANDLE ((void*)0)
- #endif
- #else
- #define VK_NULL_HANDLE 0ULL
- #endif
-#endif
-#ifndef VK_NULL_HANDLE
- #define VK_NULL_HANDLE 0
-#endif</type>
- <type category="define" requires="VK_NULL_HANDLE" name="VK_DEFINE_NON_DISPATCHABLE_HANDLE">
-#ifndef VK_DEFINE_NON_DISPATCHABLE_HANDLE
- #if (VK_USE_64_BIT_PTR_DEFINES==1)
- #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef struct object##_T *object;
- #else
- #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef uint64_t object;
- #endif
-#endif</type>
-
- <type category="basetype">struct <name>ANativeWindow</name>;</type>
- <type category="basetype">struct <name>AHardwareBuffer</name>;</type>
- <type category="basetype">
-#ifdef __OBJC__
-@class CAMetalLayer;
-#else
-typedef void <name>CAMetalLayer</name>;
-#endif</type>
-
- <type category="basetype">typedef <type>uint32_t</type> <name>VkSampleMask</name>;</type>
- <type category="basetype">typedef <type>uint32_t</type> <name>VkBool32</name>;</type>
- <type category="basetype">typedef <type>uint32_t</type> <name>VkFlags</name>;</type>
- <type category="basetype">typedef <type>uint64_t</type> <name>VkFlags64</name>;</type>
- <type category="basetype">typedef <type>uint64_t</type> <name>VkDeviceSize</name>;</type>
- <type category="basetype">typedef <type>uint64_t</type> <name>VkDeviceAddress</name>;</type>
-
- <comment>Basic C types, pulled in via vk_platform.h</comment>
- <type requires="vk_platform" name="void"/>
- <type requires="vk_platform" name="char"/>
- <type requires="vk_platform" name="float"/>
- <type requires="vk_platform" name="double"/>
- <type requires="vk_platform" name="int8_t"/>
- <type requires="vk_platform" name="uint8_t"/>
- <type requires="vk_platform" name="int16_t"/>
- <type requires="vk_platform" name="uint16_t"/>
- <type requires="vk_platform" name="uint32_t"/>
- <type requires="vk_platform" name="uint64_t"/>
- <type requires="vk_platform" name="int32_t"/>
- <type requires="vk_platform" name="int64_t"/>
- <type requires="vk_platform" name="size_t"/>
- <type name="int"/>
-
- <comment>Bitmask types</comment>
- <type requires="VkFramebufferCreateFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkFramebufferCreateFlags</name>;</type>
- <type category="bitmask">typedef <type>VkFlags</type> <name>VkQueryPoolCreateFlags</name>;</type>
- <type requires="VkRenderPassCreateFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkRenderPassCreateFlags</name>;</type>
- <type requires="VkSamplerCreateFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkSamplerCreateFlags</name>;</type>
- <type category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineLayoutCreateFlags</name>;</type>
- <type requires="VkPipelineCacheCreateFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineCacheCreateFlags</name>;</type>
- <type category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineDepthStencilStateCreateFlags</name>;</type>
- <type category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineDynamicStateCreateFlags</name>;</type>
- <type category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineColorBlendStateCreateFlags</name>;</type>
- <type category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineMultisampleStateCreateFlags</name>;</type>
- <type category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineRasterizationStateCreateFlags</name>;</type>
- <type category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineViewportStateCreateFlags</name>;</type>
- <type category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineTessellationStateCreateFlags</name>;</type>
- <type category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineInputAssemblyStateCreateFlags</name>;</type>
- <type category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineVertexInputStateCreateFlags</name>;</type>
- <type requires="VkPipelineShaderStageCreateFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineShaderStageCreateFlags</name>;</type>
- <type requires="VkDescriptorSetLayoutCreateFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkDescriptorSetLayoutCreateFlags</name>;</type>
- <type category="bitmask">typedef <type>VkFlags</type> <name>VkBufferViewCreateFlags</name>;</type>
- <type category="bitmask">typedef <type>VkFlags</type> <name>VkInstanceCreateFlags</name>;</type>
- <type category="bitmask">typedef <type>VkFlags</type> <name>VkDeviceCreateFlags</name>;</type>
- <type requires="VkDeviceQueueCreateFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkDeviceQueueCreateFlags</name>;</type>
- <type requires="VkQueueFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkQueueFlags</name>;</type>
- <type requires="VkMemoryPropertyFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkMemoryPropertyFlags</name>;</type>
- <type requires="VkMemoryHeapFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkMemoryHeapFlags</name>;</type>
- <type requires="VkAccessFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkAccessFlags</name>;</type>
- <type requires="VkBufferUsageFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkBufferUsageFlags</name>;</type>
- <type requires="VkBufferCreateFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkBufferCreateFlags</name>;</type>
- <type requires="VkShaderStageFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkShaderStageFlags</name>;</type>
- <type requires="VkImageUsageFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkImageUsageFlags</name>;</type>
- <type requires="VkImageCreateFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkImageCreateFlags</name>;</type>
- <type requires="VkImageViewCreateFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkImageViewCreateFlags</name>;</type>
- <type requires="VkPipelineCreateFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineCreateFlags</name>;</type>
- <type requires="VkColorComponentFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkColorComponentFlags</name>;</type>
- <type requires="VkFenceCreateFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkFenceCreateFlags</name>;</type>
- <type category="bitmask">typedef <type>VkFlags</type> <name>VkSemaphoreCreateFlags</name>;</type>
- <type requires="VkFormatFeatureFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkFormatFeatureFlags</name>;</type>
- <type requires="VkQueryControlFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkQueryControlFlags</name>;</type>
- <type requires="VkQueryResultFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkQueryResultFlags</name>;</type>
- <type category="bitmask">typedef <type>VkFlags</type> <name>VkShaderModuleCreateFlags</name>;</type>
- <type requires="VkEventCreateFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkEventCreateFlags</name>;</type>
- <type requires="VkCommandPoolCreateFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkCommandPoolCreateFlags</name>;</type>
- <type requires="VkCommandPoolResetFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkCommandPoolResetFlags</name>;</type>
- <type requires="VkCommandBufferResetFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkCommandBufferResetFlags</name>;</type>
- <type requires="VkCommandBufferUsageFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkCommandBufferUsageFlags</name>;</type>
- <type requires="VkQueryPipelineStatisticFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkQueryPipelineStatisticFlags</name>;</type>
- <type category="bitmask">typedef <type>VkFlags</type> <name>VkMemoryMapFlags</name>;</type>
- <type requires="VkImageAspectFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkImageAspectFlags</name>;</type>
- <type requires="VkSparseMemoryBindFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkSparseMemoryBindFlags</name>;</type>
- <type requires="VkSparseImageFormatFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkSparseImageFormatFlags</name>;</type>
- <type requires="VkSubpassDescriptionFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkSubpassDescriptionFlags</name>;</type>
- <type requires="VkPipelineStageFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineStageFlags</name>;</type>
- <type requires="VkSampleCountFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkSampleCountFlags</name>;</type>
- <type requires="VkAttachmentDescriptionFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkAttachmentDescriptionFlags</name>;</type>
- <type requires="VkStencilFaceFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkStencilFaceFlags</name>;</type>
- <type requires="VkCullModeFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkCullModeFlags</name>;</type>
- <type requires="VkDescriptorPoolCreateFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkDescriptorPoolCreateFlags</name>;</type>
- <type category="bitmask">typedef <type>VkFlags</type> <name>VkDescriptorPoolResetFlags</name>;</type>
- <type requires="VkDependencyFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkDependencyFlags</name>;</type>
- <type requires="VkSubgroupFeatureFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkSubgroupFeatureFlags</name>;</type>
- <type requires="VkIndirectCommandsLayoutUsageFlagBitsNV" category="bitmask">typedef <type>VkFlags</type> <name>VkIndirectCommandsLayoutUsageFlagsNV</name>;</type>
- <type requires="VkIndirectStateFlagBitsNV" category="bitmask">typedef <type>VkFlags</type> <name>VkIndirectStateFlagsNV</name>;</type>
- <type requires="VkGeometryFlagBitsKHR" category="bitmask">typedef <type>VkFlags</type> <name>VkGeometryFlagsKHR</name>;</type>
- <type category="bitmask" name="VkGeometryFlagsNV" alias="VkGeometryFlagsKHR"/>
- <type requires="VkGeometryInstanceFlagBitsKHR" category="bitmask">typedef <type>VkFlags</type> <name>VkGeometryInstanceFlagsKHR</name>;</type>
- <type category="bitmask" name="VkGeometryInstanceFlagsNV" alias="VkGeometryInstanceFlagsKHR"/>
- <type requires="VkBuildAccelerationStructureFlagBitsKHR" category="bitmask">typedef <type>VkFlags</type> <name>VkBuildAccelerationStructureFlagsKHR</name>;</type>
- <type category="bitmask" name="VkBuildAccelerationStructureFlagsNV" alias="VkBuildAccelerationStructureFlagsKHR"/>
- <type requires="VkPrivateDataSlotCreateFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkPrivateDataSlotCreateFlagsEXT</name>;</type>
- <type requires="VkAccelerationStructureCreateFlagBitsKHR" category="bitmask">typedef <type>VkFlags</type> <name>VkAccelerationStructureCreateFlagsKHR</name>;</type>
- <type category="bitmask">typedef <type>VkFlags</type> <name>VkDescriptorUpdateTemplateCreateFlags</name>;</type>
- <type category="bitmask" name="VkDescriptorUpdateTemplateCreateFlagsKHR" alias="VkDescriptorUpdateTemplateCreateFlags"/>
- <type requires="VkPipelineCreationFeedbackFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineCreationFeedbackFlagsEXT</name>;</type>
- <type requires="VkPerformanceCounterDescriptionFlagBitsKHR" category="bitmask">typedef <type>VkFlags</type> <name>VkPerformanceCounterDescriptionFlagsKHR</name>;</type>
- <type requires="VkAcquireProfilingLockFlagBitsKHR" category="bitmask">typedef <type>VkFlags</type> <name>VkAcquireProfilingLockFlagsKHR</name>;</type>
- <type requires="VkSemaphoreWaitFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkSemaphoreWaitFlags</name>;</type>
- <type category="bitmask" name="VkSemaphoreWaitFlagsKHR" alias="VkSemaphoreWaitFlags"/>
- <type requires="VkPipelineCompilerControlFlagBitsAMD" category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineCompilerControlFlagsAMD</name>;</type>
- <type requires="VkShaderCorePropertiesFlagBitsAMD" category="bitmask">typedef <type>VkFlags</type> <name>VkShaderCorePropertiesFlagsAMD</name>;</type>
- <type requires="VkDeviceDiagnosticsConfigFlagBitsNV" category="bitmask">typedef <type>VkFlags</type> <name>VkDeviceDiagnosticsConfigFlagsNV</name>;</type>
- <type bitvalues="VkAccessFlagBits2KHR" category="bitmask">typedef <type>VkFlags64</type> <name>VkAccessFlags2KHR</name>;</type>
- <type bitvalues="VkPipelineStageFlagBits2KHR" category="bitmask">typedef <type>VkFlags64</type> <name>VkPipelineStageFlags2KHR</name>;</type>
- <type category="bitmask">typedef <type>VkFlags</type> <name>VkAccelerationStructureMotionInfoFlagsNV</name>;</type>
- <type category="bitmask">typedef <type>VkFlags</type> <name>VkAccelerationStructureMotionInstanceFlagsNV</name>;</type>
- <type bitvalues="VkFormatFeatureFlagBits2KHR" category="bitmask">typedef <type>VkFlags64</type> <name>VkFormatFeatureFlags2KHR</name>;</type>
- <type requires="VkRenderingFlagBitsKHR" category="bitmask">typedef <type>VkFlags</type> <name>VkRenderingFlagsKHR</name>;</type>
-
- <comment>WSI extensions</comment>
- <type requires="VkCompositeAlphaFlagBitsKHR" category="bitmask">typedef <type>VkFlags</type> <name>VkCompositeAlphaFlagsKHR</name>;</type>
- <type requires="VkDisplayPlaneAlphaFlagBitsKHR" category="bitmask">typedef <type>VkFlags</type> <name>VkDisplayPlaneAlphaFlagsKHR</name>;</type>
- <type requires="VkSurfaceTransformFlagBitsKHR" category="bitmask">typedef <type>VkFlags</type> <name>VkSurfaceTransformFlagsKHR</name>;</type>
- <type requires="VkSwapchainCreateFlagBitsKHR" category="bitmask">typedef <type>VkFlags</type> <name>VkSwapchainCreateFlagsKHR</name>;</type>
- <type category="bitmask">typedef <type>VkFlags</type> <name>VkDisplayModeCreateFlagsKHR</name>;</type>
- <type category="bitmask">typedef <type>VkFlags</type> <name>VkDisplaySurfaceCreateFlagsKHR</name>;</type>
- <type category="bitmask">typedef <type>VkFlags</type> <name>VkAndroidSurfaceCreateFlagsKHR</name>;</type>
- <type category="bitmask">typedef <type>VkFlags</type> <name>VkViSurfaceCreateFlagsNN</name>;</type>
- <type category="bitmask">typedef <type>VkFlags</type> <name>VkWaylandSurfaceCreateFlagsKHR</name>;</type>
- <type category="bitmask">typedef <type>VkFlags</type> <name>VkWin32SurfaceCreateFlagsKHR</name>;</type>
- <type category="bitmask">typedef <type>VkFlags</type> <name>VkXlibSurfaceCreateFlagsKHR</name>;</type>
- <type category="bitmask">typedef <type>VkFlags</type> <name>VkXcbSurfaceCreateFlagsKHR</name>;</type>
- <type category="bitmask">typedef <type>VkFlags</type> <name>VkDirectFBSurfaceCreateFlagsEXT</name>;</type>
- <type category="bitmask">typedef <type>VkFlags</type> <name>VkIOSSurfaceCreateFlagsMVK</name>;</type>
- <type category="bitmask">typedef <type>VkFlags</type> <name>VkMacOSSurfaceCreateFlagsMVK</name>;</type>
- <type category="bitmask">typedef <type>VkFlags</type> <name>VkMetalSurfaceCreateFlagsEXT</name>;</type>
- <type category="bitmask">typedef <type>VkFlags</type> <name>VkImagePipeSurfaceCreateFlagsFUCHSIA</name>;</type>
- <type category="bitmask">typedef <type>VkFlags</type> <name>VkStreamDescriptorSurfaceCreateFlagsGGP</name>;</type>
- <type category="bitmask">typedef <type>VkFlags</type> <name>VkHeadlessSurfaceCreateFlagsEXT</name>;</type>
- <type category="bitmask">typedef <type>VkFlags</type> <name>VkScreenSurfaceCreateFlagsQNX</name>;</type>
- <type requires="VkPeerMemoryFeatureFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkPeerMemoryFeatureFlags</name>;</type>
- <type category="bitmask" name="VkPeerMemoryFeatureFlagsKHR" alias="VkPeerMemoryFeatureFlags"/>
- <type requires="VkMemoryAllocateFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkMemoryAllocateFlags</name>;</type>
- <type category="bitmask" name="VkMemoryAllocateFlagsKHR" alias="VkMemoryAllocateFlags"/>
- <type requires="VkDeviceGroupPresentModeFlagBitsKHR" category="bitmask">typedef <type>VkFlags</type> <name>VkDeviceGroupPresentModeFlagsKHR</name>;</type>
-
- <type requires="VkDebugReportFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkDebugReportFlagsEXT</name>;</type>
- <type category="bitmask">typedef <type>VkFlags</type> <name>VkCommandPoolTrimFlags</name>;</type>
- <type category="bitmask" name="VkCommandPoolTrimFlagsKHR" alias="VkCommandPoolTrimFlags"/>
- <type requires="VkExternalMemoryHandleTypeFlagBitsNV" category="bitmask">typedef <type>VkFlags</type> <name>VkExternalMemoryHandleTypeFlagsNV</name>;</type>
- <type requires="VkExternalMemoryFeatureFlagBitsNV" category="bitmask">typedef <type>VkFlags</type> <name>VkExternalMemoryFeatureFlagsNV</name>;</type>
- <type requires="VkExternalMemoryHandleTypeFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkExternalMemoryHandleTypeFlags</name>;</type>
- <type category="bitmask" name="VkExternalMemoryHandleTypeFlagsKHR" alias="VkExternalMemoryHandleTypeFlags"/>
- <type requires="VkExternalMemoryFeatureFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkExternalMemoryFeatureFlags</name>;</type>
- <type category="bitmask" name="VkExternalMemoryFeatureFlagsKHR" alias="VkExternalMemoryFeatureFlags"/>
- <type requires="VkExternalSemaphoreHandleTypeFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkExternalSemaphoreHandleTypeFlags</name>;</type>
- <type category="bitmask" name="VkExternalSemaphoreHandleTypeFlagsKHR" alias="VkExternalSemaphoreHandleTypeFlags"/>
- <type requires="VkExternalSemaphoreFeatureFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkExternalSemaphoreFeatureFlags</name>;</type>
- <type category="bitmask" name="VkExternalSemaphoreFeatureFlagsKHR" alias="VkExternalSemaphoreFeatureFlags"/>
- <type requires="VkSemaphoreImportFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkSemaphoreImportFlags</name>;</type>
- <type category="bitmask" name="VkSemaphoreImportFlagsKHR" alias="VkSemaphoreImportFlags"/>
- <type requires="VkExternalFenceHandleTypeFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkExternalFenceHandleTypeFlags</name>;</type>
- <type category="bitmask" name="VkExternalFenceHandleTypeFlagsKHR" alias="VkExternalFenceHandleTypeFlags"/>
- <type requires="VkExternalFenceFeatureFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkExternalFenceFeatureFlags</name>;</type>
- <type category="bitmask" name="VkExternalFenceFeatureFlagsKHR" alias="VkExternalFenceFeatureFlags"/>
- <type requires="VkFenceImportFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkFenceImportFlags</name>;</type>
- <type category="bitmask" name="VkFenceImportFlagsKHR" alias="VkFenceImportFlags"/>
- <type requires="VkSurfaceCounterFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkSurfaceCounterFlagsEXT</name>;</type>
- <type category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineViewportSwizzleStateCreateFlagsNV</name>;</type>
- <type category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineDiscardRectangleStateCreateFlagsEXT</name>;</type>
- <type category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineCoverageToColorStateCreateFlagsNV</name>;</type>
- <type category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineCoverageModulationStateCreateFlagsNV</name>;</type>
- <type category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineCoverageReductionStateCreateFlagsNV</name>;</type>
- <type category="bitmask">typedef <type>VkFlags</type> <name>VkValidationCacheCreateFlagsEXT</name>;</type>
- <type requires="VkDebugUtilsMessageSeverityFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkDebugUtilsMessageSeverityFlagsEXT</name>;</type>
- <type requires="VkDebugUtilsMessageTypeFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkDebugUtilsMessageTypeFlagsEXT</name>;</type>
- <type category="bitmask">typedef <type>VkFlags</type> <name>VkDebugUtilsMessengerCreateFlagsEXT</name>;</type>
- <type category="bitmask">typedef <type>VkFlags</type> <name>VkDebugUtilsMessengerCallbackDataFlagsEXT</name>;</type>
- <type category="bitmask">typedef <type>VkFlags</type> <name>VkDeviceMemoryReportFlagsEXT</name>;</type>
- <type category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineRasterizationConservativeStateCreateFlagsEXT</name>;</type>
- <type requires="VkDescriptorBindingFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkDescriptorBindingFlags</name>;</type>
- <type category="bitmask" name="VkDescriptorBindingFlagsEXT" alias="VkDescriptorBindingFlags"/>
- <type requires="VkConditionalRenderingFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkConditionalRenderingFlagsEXT</name>;</type>
- <type requires="VkResolveModeFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkResolveModeFlags</name>;</type>
- <type category="bitmask" name="VkResolveModeFlagsKHR" alias="VkResolveModeFlags"/>
- <type category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineRasterizationStateStreamCreateFlagsEXT</name>;</type>
- <type category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineRasterizationDepthClipStateCreateFlagsEXT</name>;</type>
- <type requires="VkToolPurposeFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkToolPurposeFlagsEXT</name>;</type>
- <type requires="VkSubmitFlagBitsKHR" category="bitmask">typedef <type>VkFlags</type> <name>VkSubmitFlagsKHR</name>;</type>
- <type category="bitmask">typedef <type>VkFlags</type> <name>VkImageFormatConstraintsFlagsFUCHSIA</name>;</type>
- <type requires="VkImageConstraintsInfoFlagBitsFUCHSIA" category="bitmask">typedef <type>VkFlags</type> <name>VkImageConstraintsInfoFlagsFUCHSIA</name>;</type>
-
- <comment>Video Core extension</comment>
- <type requires="VkVideoCodecOperationFlagBitsKHR" category="bitmask">typedef <type>VkFlags</type> <name>VkVideoCodecOperationFlagsKHR</name>;</type>
- <type requires="VkVideoCapabilityFlagBitsKHR" category="bitmask">typedef <type>VkFlags</type> <name>VkVideoCapabilityFlagsKHR</name>;</type>
- <type requires="VkVideoSessionCreateFlagBitsKHR" category="bitmask">typedef <type>VkFlags</type> <name>VkVideoSessionCreateFlagsKHR</name>;</type>
- <type category="bitmask">typedef <type>VkFlags</type> <name>VkVideoBeginCodingFlagsKHR</name>;</type>
- <type category="bitmask">typedef <type>VkFlags</type> <name>VkVideoEndCodingFlagsKHR</name>;</type>
- <type requires="VkVideoCodingQualityPresetFlagBitsKHR" category="bitmask">typedef <type>VkFlags</type> <name>VkVideoCodingQualityPresetFlagsKHR</name>;</type>
- <type requires="VkVideoCodingControlFlagBitsKHR" category="bitmask">typedef <type>VkFlags</type> <name>VkVideoCodingControlFlagsKHR</name>;</type>
-
- <comment>Video Decode Core extension</comment>
- <type requires="VkVideoDecodeFlagBitsKHR" category="bitmask">typedef <type>VkFlags</type> <name>VkVideoDecodeFlagsKHR</name>;</type>
-
- <comment>Video Decode H.264 extension</comment>
- <type requires="VkVideoDecodeH264PictureLayoutFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkVideoDecodeH264PictureLayoutFlagsEXT</name>;</type>
- <type category="bitmask">typedef <type>VkFlags</type> <name>VkVideoDecodeH264CreateFlagsEXT</name>;</type>
-
- <comment>Video Decode H.265 extension</comment>
- <type category="bitmask">typedef <type>VkFlags</type> <name>VkVideoDecodeH265CreateFlagsEXT</name>;</type>
-
- <comment>Video Encode Core extension</comment>
- <type requires="VkVideoEncodeFlagBitsKHR" category="bitmask">typedef <type>VkFlags</type> <name>VkVideoEncodeFlagsKHR</name>;</type>
- <type requires="VkVideoEncodeRateControlFlagBitsKHR" category="bitmask">typedef <type>VkFlags</type> <name>VkVideoEncodeRateControlFlagsKHR</name>;</type>
- <type requires="VkVideoEncodeRateControlModeFlagBitsKHR" category="bitmask">typedef <type>VkFlags</type> <name>VkVideoEncodeRateControlModeFlagsKHR</name>;</type>
- <type requires="VkVideoChromaSubsamplingFlagBitsKHR" category="bitmask">typedef <type>VkFlags</type> <name>VkVideoChromaSubsamplingFlagsKHR</name>;</type>
- <type requires="VkVideoComponentBitDepthFlagBitsKHR" category="bitmask">typedef <type>VkFlags</type> <name>VkVideoComponentBitDepthFlagsKHR</name>;</type>
-
- <comment>Video Encode H.264 extension</comment>
- <type requires="VkVideoEncodeH264CapabilityFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkVideoEncodeH264CapabilityFlagsEXT</name>;</type>
- <type requires="VkVideoEncodeH264InputModeFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkVideoEncodeH264InputModeFlagsEXT</name>;</type>
- <type requires="VkVideoEncodeH264OutputModeFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkVideoEncodeH264OutputModeFlagsEXT</name>;</type>
- <type requires="VkVideoEncodeH264CreateFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkVideoEncodeH264CreateFlagsEXT</name>;</type>
-
- <comment>Video Encode H.265 extension</comment>
- <type category="bitmask">typedef <type>VkFlags</type> <name>VkVideoEncodeH265CapabilityFlagsEXT</name>;</type>
- <type requires="VkVideoEncodeH265InputModeFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkVideoEncodeH265InputModeFlagsEXT</name>;</type>
- <type requires="VkVideoEncodeH265OutputModeFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkVideoEncodeH265OutputModeFlagsEXT</name>;</type>
- <type category="bitmask">typedef <type>VkFlags</type> <name>VkVideoEncodeH265CreateFlagsEXT</name>;</type>
- <type requires="VkVideoEncodeH265CtbSizeFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkVideoEncodeH265CtbSizeFlagsEXT</name>;</type>
-
- <comment>Types which can be void pointers or class pointers, selected at compile time</comment>
- <type category="handle" objtypeenum="VK_OBJECT_TYPE_INSTANCE"><type>VK_DEFINE_HANDLE</type>(<name>VkInstance</name>)</type>
- <type category="handle" parent="VkInstance" objtypeenum="VK_OBJECT_TYPE_PHYSICAL_DEVICE"><type>VK_DEFINE_HANDLE</type>(<name>VkPhysicalDevice</name>)</type>
- <type category="handle" parent="VkPhysicalDevice" objtypeenum="VK_OBJECT_TYPE_DEVICE"><type>VK_DEFINE_HANDLE</type>(<name>VkDevice</name>)</type>
- <type category="handle" parent="VkDevice" objtypeenum="VK_OBJECT_TYPE_QUEUE"><type>VK_DEFINE_HANDLE</type>(<name>VkQueue</name>)</type>
- <type category="handle" parent="VkCommandPool" objtypeenum="VK_OBJECT_TYPE_COMMAND_BUFFER"><type>VK_DEFINE_HANDLE</type>(<name>VkCommandBuffer</name>)</type>
- <type category="handle" parent="VkDevice" objtypeenum="VK_OBJECT_TYPE_DEVICE_MEMORY"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkDeviceMemory</name>)</type>
- <type category="handle" parent="VkDevice" objtypeenum="VK_OBJECT_TYPE_COMMAND_POOL"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkCommandPool</name>)</type>
- <type category="handle" parent="VkDevice" objtypeenum="VK_OBJECT_TYPE_BUFFER"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkBuffer</name>)</type>
- <type category="handle" parent="VkDevice" objtypeenum="VK_OBJECT_TYPE_BUFFER_VIEW"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkBufferView</name>)</type>
- <type category="handle" parent="VkDevice" objtypeenum="VK_OBJECT_TYPE_IMAGE"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkImage</name>)</type>
- <type category="handle" parent="VkDevice" objtypeenum="VK_OBJECT_TYPE_IMAGE_VIEW"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkImageView</name>)</type>
- <type category="handle" parent="VkDevice" objtypeenum="VK_OBJECT_TYPE_SHADER_MODULE"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkShaderModule</name>)</type>
- <type category="handle" parent="VkDevice" objtypeenum="VK_OBJECT_TYPE_PIPELINE"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkPipeline</name>)</type>
- <type category="handle" parent="VkDevice" objtypeenum="VK_OBJECT_TYPE_PIPELINE_LAYOUT"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkPipelineLayout</name>)</type>
- <type category="handle" parent="VkDevice" objtypeenum="VK_OBJECT_TYPE_SAMPLER"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkSampler</name>)</type>
- <type category="handle" parent="VkDescriptorPool" objtypeenum="VK_OBJECT_TYPE_DESCRIPTOR_SET"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkDescriptorSet</name>)</type>
- <type category="handle" parent="VkDevice" objtypeenum="VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkDescriptorSetLayout</name>)</type>
- <type category="handle" parent="VkDevice" objtypeenum="VK_OBJECT_TYPE_DESCRIPTOR_POOL"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkDescriptorPool</name>)</type>
- <type category="handle" parent="VkDevice" objtypeenum="VK_OBJECT_TYPE_FENCE"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkFence</name>)</type>
- <type category="handle" parent="VkDevice" objtypeenum="VK_OBJECT_TYPE_SEMAPHORE"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkSemaphore</name>)</type>
- <type category="handle" parent="VkDevice" objtypeenum="VK_OBJECT_TYPE_EVENT"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkEvent</name>)</type>
- <type category="handle" parent="VkDevice" objtypeenum="VK_OBJECT_TYPE_QUERY_POOL"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkQueryPool</name>)</type>
- <type category="handle" parent="VkDevice" objtypeenum="VK_OBJECT_TYPE_FRAMEBUFFER"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkFramebuffer</name>)</type>
- <type category="handle" parent="VkDevice" objtypeenum="VK_OBJECT_TYPE_RENDER_PASS"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkRenderPass</name>)</type>
- <type category="handle" parent="VkDevice" objtypeenum="VK_OBJECT_TYPE_PIPELINE_CACHE"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkPipelineCache</name>)</type>
- <type category="handle" parent="VkDevice" objtypeenum="VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkIndirectCommandsLayoutNV</name>)</type>
- <type category="handle" parent="VkDevice" objtypeenum="VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkDescriptorUpdateTemplate</name>)</type>
- <type category="handle" name="VkDescriptorUpdateTemplateKHR" alias="VkDescriptorUpdateTemplate"/>
- <type category="handle" parent="VkDevice" objtypeenum="VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkSamplerYcbcrConversion</name>)</type>
- <type category="handle" name="VkSamplerYcbcrConversionKHR" alias="VkSamplerYcbcrConversion"/>
- <type category="handle" parent="VkDevice" objtypeenum="VK_OBJECT_TYPE_VALIDATION_CACHE_EXT"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkValidationCacheEXT</name>)</type>
- <type category="handle" parent="VkDevice" objtypeenum="VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkAccelerationStructureKHR</name>)</type>
- <type category="handle" parent="VkDevice" objtypeenum="VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkAccelerationStructureNV</name>)</type>
- <type category="handle" parent="VkDevice" objtypeenum="VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkPerformanceConfigurationINTEL</name>)</type>
- <type category="handle" parent="VkDevice" objtypeenum="VK_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkBufferCollectionFUCHSIA</name>)</type>
- <type category="handle" parent="VkDevice" objtypeenum="VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkDeferredOperationKHR</name>)</type>
- <type category="handle" parent="VkDevice" objtypeenum="VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkPrivateDataSlotEXT</name>)</type>
- <type category="handle" parent="VkDevice" objtypeenum="VK_OBJECT_TYPE_CU_MODULE_NVX"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkCuModuleNVX</name>)</type>
- <type category="handle" parent="VkDevice" objtypeenum="VK_OBJECT_TYPE_CU_FUNCTION_NVX"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkCuFunctionNVX</name>)</type>
-
- <comment>WSI extensions</comment>
- <type category="handle" parent="VkPhysicalDevice" objtypeenum="VK_OBJECT_TYPE_DISPLAY_KHR"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkDisplayKHR</name>)</type>
- <type category="handle" parent="VkDisplayKHR" objtypeenum="VK_OBJECT_TYPE_DISPLAY_MODE_KHR"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkDisplayModeKHR</name>)</type>
- <type category="handle" parent="VkInstance" objtypeenum="VK_OBJECT_TYPE_SURFACE_KHR"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkSurfaceKHR</name>)</type>
- <type category="handle" parent="VkSurfaceKHR" objtypeenum="VK_OBJECT_TYPE_SWAPCHAIN_KHR"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkSwapchainKHR</name>)</type>
- <type category="handle" parent="VkInstance" objtypeenum="VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkDebugReportCallbackEXT</name>)</type>
- <type category="handle" parent="VkInstance" objtypeenum="VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkDebugUtilsMessengerEXT</name>)</type>
-
- <comment>Video extensions</comment>
- <type category="handle" parent="VkDevice" objtypeenum="VK_OBJECT_TYPE_VIDEO_SESSION_KHR"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkVideoSessionKHR</name>)</type>
- <type category="handle" parent="VkVideoSessionKHR" objtypeenum="VK_OBJECT_TYPE_VIDEO_SESSION_PARAMETERS_KHR"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkVideoSessionParametersKHR</name>)</type>
-
- <comment>Types generated from corresponding enums tags below</comment>
- <type name="VkAttachmentLoadOp" category="enum"/>
- <type name="VkAttachmentStoreOp" category="enum"/>
- <type name="VkBlendFactor" category="enum"/>
- <type name="VkBlendOp" category="enum"/>
- <type name="VkBorderColor" category="enum"/>
- <type name="VkFramebufferCreateFlagBits" category="enum"/>
- <type name="VkQueryPoolCreateFlagBits" category="enum"/>
- <type name="VkRenderPassCreateFlagBits" category="enum"/>
- <type name="VkSamplerCreateFlagBits" category="enum"/>
- <type name="VkPipelineCacheHeaderVersion" category="enum"/>
- <type name="VkPipelineCacheCreateFlagBits" category="enum"/>
- <type name="VkPipelineShaderStageCreateFlagBits" category="enum"/>
- <type name="VkDescriptorSetLayoutCreateFlagBits" category="enum"/>
- <type name="VkInstanceCreateFlagBits" category="enum"/>
- <type name="VkDeviceQueueCreateFlagBits" category="enum"/>
- <type name="VkBufferCreateFlagBits" category="enum"/>
- <type name="VkBufferUsageFlagBits" category="enum"/>
- <type name="VkColorComponentFlagBits" category="enum"/>
- <type name="VkComponentSwizzle" category="enum"/>
- <type name="VkCommandPoolCreateFlagBits" category="enum"/>
- <type name="VkCommandPoolResetFlagBits" category="enum"/>
- <type name="VkCommandBufferResetFlagBits" category="enum"/>
- <type name="VkCommandBufferLevel" category="enum"/>
- <type name="VkCommandBufferUsageFlagBits" category="enum"/>
- <type name="VkCompareOp" category="enum"/>
- <type name="VkCullModeFlagBits" category="enum"/>
- <type name="VkDescriptorType" category="enum"/>
- <type name="VkDeviceCreateFlagBits" category="enum"/>
- <type name="VkDynamicState" category="enum"/>
- <type name="VkFenceCreateFlagBits" category="enum"/>
- <type name="VkPolygonMode" category="enum"/>
- <type name="VkFormat" category="enum"/>
- <type name="VkFormatFeatureFlagBits" category="enum"/>
- <type name="VkFrontFace" category="enum"/>
- <type name="VkImageAspectFlagBits" category="enum"/>
- <type name="VkImageCreateFlagBits" category="enum"/>
- <type name="VkImageLayout" category="enum"/>
- <type name="VkImageTiling" category="enum"/>
- <type name="VkImageType" category="enum"/>
- <type name="VkImageUsageFlagBits" category="enum"/>
- <type name="VkImageViewCreateFlagBits" category="enum"/>
- <type name="VkImageViewType" category="enum"/>
- <type name="VkSharingMode" category="enum"/>
- <type name="VkIndexType" category="enum"/>
- <type name="VkLogicOp" category="enum"/>
- <type name="VkMemoryHeapFlagBits" category="enum"/>
- <type name="VkAccessFlagBits" category="enum"/>
- <type name="VkMemoryPropertyFlagBits" category="enum"/>
- <type name="VkPhysicalDeviceType" category="enum"/>
- <type name="VkPipelineBindPoint" category="enum"/>
- <type name="VkPipelineCreateFlagBits" category="enum"/>
- <type name="VkPrimitiveTopology" category="enum"/>
- <type name="VkQueryControlFlagBits" category="enum"/>
- <type name="VkQueryPipelineStatisticFlagBits" category="enum"/>
- <type name="VkQueryResultFlagBits" category="enum"/>
- <type name="VkQueryType" category="enum"/>
- <type name="VkQueueFlagBits" category="enum"/>
- <type name="VkSubpassContents" category="enum"/>
- <type name="VkResult" category="enum"/>
- <type name="VkShaderStageFlagBits" category="enum"/>
- <type name="VkSparseMemoryBindFlagBits" category="enum"/>
- <type name="VkStencilFaceFlagBits" category="enum"/>
- <type name="VkStencilOp" category="enum"/>
- <type name="VkStructureType" category="enum"/>
- <type name="VkSystemAllocationScope" category="enum"/>
- <type name="VkInternalAllocationType" category="enum"/>
- <type name="VkSamplerAddressMode" category="enum"/>
- <type name="VkFilter" category="enum"/>
- <type name="VkSamplerMipmapMode" category="enum"/>
- <type name="VkVertexInputRate" category="enum"/>
- <type name="VkPipelineStageFlagBits" category="enum"/>
- <type name="VkSparseImageFormatFlagBits" category="enum"/>
- <type name="VkSampleCountFlagBits" category="enum"/>
- <type name="VkAttachmentDescriptionFlagBits" category="enum"/>
- <type name="VkDescriptorPoolCreateFlagBits" category="enum"/>
- <type name="VkDependencyFlagBits" category="enum"/>
- <type name="VkObjectType" category="enum"/>
- <type name="VkEventCreateFlagBits" category="enum"/>
- <type name="VkPipelineLayoutCreateFlagBits" category="enum"/>
- <type name="VkSemaphoreCreateFlagBits" category="enum"/>
-
- <comment>Extensions</comment>
- <type name="VkIndirectCommandsLayoutUsageFlagBitsNV" category="enum"/>
- <type name="VkIndirectCommandsTokenTypeNV" category="enum"/>
- <type name="VkIndirectStateFlagBitsNV" category="enum"/>
- <type name="VkPrivateDataSlotCreateFlagBitsEXT" category="enum"/>
- <type name="VkDescriptorUpdateTemplateType" category="enum"/>
- <type category="enum" name="VkDescriptorUpdateTemplateTypeKHR" alias="VkDescriptorUpdateTemplateType"/>
- <type name="VkViewportCoordinateSwizzleNV" category="enum"/>
- <type name="VkDiscardRectangleModeEXT" category="enum"/>
- <type name="VkSubpassDescriptionFlagBits" category="enum"/>
- <type name="VkPointClippingBehavior" category="enum"/>
- <type category="enum" name="VkPointClippingBehaviorKHR" alias="VkPointClippingBehavior"/>
- <type name="VkCoverageModulationModeNV" category="enum"/>
- <type name="VkCoverageReductionModeNV" category="enum"/>
- <type name="VkValidationCacheHeaderVersionEXT" category="enum"/>
- <type name="VkShaderInfoTypeAMD" category="enum"/>
- <type name="VkQueueGlobalPriorityEXT" category="enum"/>
- <type name="VkTimeDomainEXT" category="enum"/>
- <type name="VkConservativeRasterizationModeEXT" category="enum"/>
- <type name="VkResolveModeFlagBits" category="enum"/>
- <type category="enum" name="VkResolveModeFlagBitsKHR" alias="VkResolveModeFlagBits"/>
- <type name="VkDescriptorBindingFlagBits" category="enum"/>
- <type category="enum" name="VkDescriptorBindingFlagBitsEXT" alias="VkDescriptorBindingFlagBits"/>
- <type name="VkConditionalRenderingFlagBitsEXT" category="enum"/>
- <type name="VkSemaphoreType" category="enum"/>
- <type category="enum" name="VkSemaphoreTypeKHR" alias="VkSemaphoreType"/>
- <type name="VkGeometryFlagBitsKHR" category="enum"/>
- <type category="enum" name="VkGeometryFlagBitsNV" alias="VkGeometryFlagBitsKHR"/>
- <type name="VkGeometryInstanceFlagBitsKHR" category="enum"/>
- <type category="enum" name="VkGeometryInstanceFlagBitsNV" alias="VkGeometryInstanceFlagBitsKHR"/>
- <type name="VkBuildAccelerationStructureFlagBitsKHR" category="enum"/>
- <type category="enum" name="VkBuildAccelerationStructureFlagBitsNV" alias="VkBuildAccelerationStructureFlagBitsKHR"/>
- <type name="VkAccelerationStructureCreateFlagBitsKHR" category="enum"/>
- <type name="VkBuildAccelerationStructureModeKHR" category="enum"/>
- <type name="VkCopyAccelerationStructureModeKHR" category="enum"/>
- <type category="enum" name="VkCopyAccelerationStructureModeNV" alias="VkCopyAccelerationStructureModeKHR"/>
- <type name="VkAccelerationStructureTypeKHR" category="enum"/>
- <type category="enum" name="VkAccelerationStructureTypeNV" alias="VkAccelerationStructureTypeKHR"/>
- <type name="VkGeometryTypeKHR" category="enum"/>
- <type category="enum" name="VkGeometryTypeNV" alias="VkGeometryTypeKHR"/>
- <type name="VkRayTracingShaderGroupTypeKHR" category="enum"/>
- <type category="enum" name="VkRayTracingShaderGroupTypeNV" alias="VkRayTracingShaderGroupTypeKHR"/>
- <type name="VkAccelerationStructureMemoryRequirementsTypeNV" category="enum"/>
- <type name="VkAccelerationStructureBuildTypeKHR" category="enum"/>
- <type name="VkAccelerationStructureCompatibilityKHR" category="enum"/>
- <type name="VkShaderGroupShaderKHR" category="enum"/>
- <type name="VkMemoryOverallocationBehaviorAMD" category="enum"/>
- <type name="VkScopeNV" category="enum"/>
- <type name="VkComponentTypeNV" category="enum"/>
- <type name="VkDeviceDiagnosticsConfigFlagBitsNV" category="enum"/>
- <type name="VkPipelineCreationFeedbackFlagBitsEXT" category="enum"/>
- <type name="VkPerformanceCounterScopeKHR" category="enum"/>
- <type name="VkPerformanceCounterUnitKHR" category="enum"/>
- <type name="VkPerformanceCounterStorageKHR" category="enum"/>
- <type name="VkPerformanceCounterDescriptionFlagBitsKHR" category="enum"/>
- <type name="VkAcquireProfilingLockFlagBitsKHR" category="enum"/>
- <type name="VkSemaphoreWaitFlagBits" category="enum"/>
- <type category="enum" name="VkSemaphoreWaitFlagBitsKHR" alias="VkSemaphoreWaitFlagBits"/>
- <type name="VkPerformanceConfigurationTypeINTEL" category="enum"/>
- <type name="VkQueryPoolSamplingModeINTEL" category="enum"/>
- <type name="VkPerformanceOverrideTypeINTEL" category="enum"/>
- <type name="VkPerformanceParameterTypeINTEL" category="enum"/>
- <type name="VkPerformanceValueTypeINTEL" category="enum"/>
- <type name="VkLineRasterizationModeEXT" category="enum"/>
- <type name="VkShaderModuleCreateFlagBits" category="enum"/>
- <type name="VkPipelineCompilerControlFlagBitsAMD" category="enum"/>
- <type name="VkShaderCorePropertiesFlagBitsAMD" category="enum"/>
- <type name="VkToolPurposeFlagBitsEXT" category="enum"/>
- <type name="VkFragmentShadingRateNV" category="enum"/>
- <type name="VkFragmentShadingRateTypeNV" category="enum"/>
- <type name="VkAccessFlagBits2KHR" category="enum"/>
- <type name="VkPipelineStageFlagBits2KHR" category="enum"/>
- <type name="VkProvokingVertexModeEXT" category="enum"/>
- <type name="VkImageFormatConstraintsFlagBitsFUCHSIA" category="enum"/>
- <type name="VkImageConstraintsInfoFlagBitsFUCHSIA" category="enum"/>
- <type name="VkFormatFeatureFlagBits2KHR" category="enum"/>
- <type name="VkRenderingFlagBitsKHR" category="enum"/>
-
- <comment>WSI extensions</comment>
- <type name="VkColorSpaceKHR" category="enum"/>
- <type name="VkCompositeAlphaFlagBitsKHR" category="enum"/>
- <type name="VkDisplayPlaneAlphaFlagBitsKHR" category="enum"/>
- <type name="VkPresentModeKHR" category="enum"/>
- <type name="VkSurfaceTransformFlagBitsKHR" category="enum"/>
- <type name="VkDebugReportFlagBitsEXT" category="enum"/>
- <type name="VkDebugReportObjectTypeEXT" category="enum"/>
- <type name="VkDeviceMemoryReportEventTypeEXT" category="enum"/>
- <type name="VkRasterizationOrderAMD" category="enum"/>
- <type name="VkExternalMemoryHandleTypeFlagBitsNV" category="enum"/>
- <type name="VkExternalMemoryFeatureFlagBitsNV" category="enum"/>
- <type name="VkValidationCheckEXT" category="enum"/>
- <type name="VkValidationFeatureEnableEXT" category="enum"/>
- <type name="VkValidationFeatureDisableEXT" category="enum"/>
- <type name="VkExternalMemoryHandleTypeFlagBits" category="enum"/>
- <type category="enum" name="VkExternalMemoryHandleTypeFlagBitsKHR" alias="VkExternalMemoryHandleTypeFlagBits"/>
- <type name="VkExternalMemoryFeatureFlagBits" category="enum"/>
- <type category="enum" name="VkExternalMemoryFeatureFlagBitsKHR" alias="VkExternalMemoryFeatureFlagBits"/>
- <type name="VkExternalSemaphoreHandleTypeFlagBits" category="enum"/>
- <type category="enum" name="VkExternalSemaphoreHandleTypeFlagBitsKHR" alias="VkExternalSemaphoreHandleTypeFlagBits"/>
- <type name="VkExternalSemaphoreFeatureFlagBits" category="enum"/>
- <type category="enum" name="VkExternalSemaphoreFeatureFlagBitsKHR" alias="VkExternalSemaphoreFeatureFlagBits"/>
- <type name="VkSemaphoreImportFlagBits" category="enum"/>
- <type category="enum" name="VkSemaphoreImportFlagBitsKHR" alias="VkSemaphoreImportFlagBits"/>
- <type name="VkExternalFenceHandleTypeFlagBits" category="enum"/>
- <type category="enum" name="VkExternalFenceHandleTypeFlagBitsKHR" alias="VkExternalFenceHandleTypeFlagBits"/>
- <type name="VkExternalFenceFeatureFlagBits" category="enum"/>
- <type category="enum" name="VkExternalFenceFeatureFlagBitsKHR" alias="VkExternalFenceFeatureFlagBits"/>
- <type name="VkFenceImportFlagBits" category="enum"/>
- <type category="enum" name="VkFenceImportFlagBitsKHR" alias="VkFenceImportFlagBits"/>
- <type name="VkSurfaceCounterFlagBitsEXT" category="enum"/>
- <type name="VkDisplayPowerStateEXT" category="enum"/>
- <type name="VkDeviceEventTypeEXT" category="enum"/>
- <type name="VkDisplayEventTypeEXT" category="enum"/>
- <type name="VkPeerMemoryFeatureFlagBits" category="enum"/>
- <type category="enum" name="VkPeerMemoryFeatureFlagBitsKHR" alias="VkPeerMemoryFeatureFlagBits"/>
- <type name="VkMemoryAllocateFlagBits" category="enum"/>
- <type category="enum" name="VkMemoryAllocateFlagBitsKHR" alias="VkMemoryAllocateFlagBits"/>
- <type name="VkDeviceGroupPresentModeFlagBitsKHR" category="enum"/>
- <type name="VkSwapchainCreateFlagBitsKHR" category="enum"/>
- <type name="VkSubgroupFeatureFlagBits" category="enum"/>
- <type name="VkTessellationDomainOrigin" category="enum"/>
- <type category="enum" name="VkTessellationDomainOriginKHR" alias="VkTessellationDomainOrigin"/>
- <type name="VkSamplerYcbcrModelConversion" category="enum"/>
- <type category="enum" name="VkSamplerYcbcrModelConversionKHR" alias="VkSamplerYcbcrModelConversion"/>
- <type name="VkSamplerYcbcrRange" category="enum"/>
- <type category="enum" name="VkSamplerYcbcrRangeKHR" alias="VkSamplerYcbcrRange"/>
- <type name="VkChromaLocation" category="enum"/>
- <type category="enum" name="VkChromaLocationKHR" alias="VkChromaLocation"/>
- <type name="VkSamplerReductionMode" category="enum"/>
- <type category="enum" name="VkSamplerReductionModeEXT" alias="VkSamplerReductionMode"/>
- <type name="VkBlendOverlapEXT" category="enum"/>
- <type name="VkDebugUtilsMessageSeverityFlagBitsEXT" category="enum"/>
- <type name="VkDebugUtilsMessageTypeFlagBitsEXT" category="enum"/>
- <type name="VkFullScreenExclusiveEXT" category="enum"/>
- <type name="VkShaderFloatControlsIndependence" category="enum"/>
- <type category="enum" name="VkShaderFloatControlsIndependenceKHR" alias="VkShaderFloatControlsIndependence"/>
- <type name="VkFragmentShadingRateCombinerOpKHR" category="enum"/>
- <type name="VkSubmitFlagBitsKHR" category="enum"/>
-
- <comment>Enumerated types in the header, but not used by the API</comment>
- <type name="VkVendorId" category="enum"/>
- <type name="VkDriverId" category="enum"/>
- <type category="enum" name="VkDriverIdKHR" alias="VkDriverId"/>
- <type name="VkShadingRatePaletteEntryNV" category="enum"/>
- <type name="VkCoarseSampleOrderTypeNV" category="enum"/>
- <type name="VkPipelineExecutableStatisticFormatKHR" category="enum"/>
-
- <comment>Video Core extensions</comment>
- <type name="VkVideoCodecOperationFlagBitsKHR" category="enum"/>
- <type name="VkVideoChromaSubsamplingFlagBitsKHR" category="enum"/>
- <type name="VkVideoComponentBitDepthFlagBitsKHR" category="enum"/>
- <type name="VkVideoCapabilityFlagBitsKHR" category="enum"/>
- <type name="VkVideoSessionCreateFlagBitsKHR" category="enum"/>
- <type name="VkVideoCodingQualityPresetFlagBitsKHR" category="enum"/>
- <type name="VkVideoCodingControlFlagBitsKHR" category="enum"/>
- <type name="VkQueryResultStatusKHR" category="enum"/>
-
- <comment>Video Decode extensions</comment>
- <type name="VkVideoDecodeFlagBitsKHR" category="enum"/>
-
- <comment>Video H.264 Decode extensions</comment>
- <type name="VkVideoDecodeH264PictureLayoutFlagBitsEXT" category="enum"/>
-
- <comment>Video H.265 Decode extensions</comment>
-
- <comment>Video Encode extensions</comment>
- <type name="VkVideoEncodeFlagBitsKHR" category="enum"/>
- <type name="VkVideoEncodeRateControlFlagBitsKHR" category="enum"/>
- <type name="VkVideoEncodeRateControlModeFlagBitsKHR" category="enum"/>
-
- <comment>Video H.264 Encode extensions</comment>
- <type name="VkVideoEncodeH264CapabilityFlagBitsEXT" category="enum"/>
- <type name="VkVideoEncodeH264InputModeFlagBitsEXT" category="enum"/>
- <type name="VkVideoEncodeH264OutputModeFlagBitsEXT" category="enum"/>
- <type name="VkVideoEncodeH264CreateFlagBitsEXT" category="enum"/>
-
- <comment>Video H.265 Encode extensions</comment>
- <type name="VkVideoEncodeH265InputModeFlagBitsEXT" category="enum"/>
- <type name="VkVideoEncodeH265OutputModeFlagBitsEXT" category="enum"/>
- <type name="VkVideoEncodeH265CtbSizeFlagBitsEXT" category="enum"/>
-
- <comment>The PFN_vk*Function types are used by VkAllocationCallbacks below</comment>
- <type category="funcpointer">typedef void (VKAPI_PTR *<name>PFN_vkInternalAllocationNotification</name>)(
- <type>void</type>* pUserData,
- <type>size_t</type> size,
- <type>VkInternalAllocationType</type> allocationType,
- <type>VkSystemAllocationScope</type> allocationScope);</type>
- <type category="funcpointer">typedef void (VKAPI_PTR *<name>PFN_vkInternalFreeNotification</name>)(
- <type>void</type>* pUserData,
- <type>size_t</type> size,
- <type>VkInternalAllocationType</type> allocationType,
- <type>VkSystemAllocationScope</type> allocationScope);</type>
- <type category="funcpointer">typedef void* (VKAPI_PTR *<name>PFN_vkReallocationFunction</name>)(
- <type>void</type>* pUserData,
- <type>void</type>* pOriginal,
- <type>size_t</type> size,
- <type>size_t</type> alignment,
- <type>VkSystemAllocationScope</type> allocationScope);</type>
- <type category="funcpointer">typedef void* (VKAPI_PTR *<name>PFN_vkAllocationFunction</name>)(
- <type>void</type>* pUserData,
- <type>size_t</type> size,
- <type>size_t</type> alignment,
- <type>VkSystemAllocationScope</type> allocationScope);</type>
- <type category="funcpointer">typedef void (VKAPI_PTR *<name>PFN_vkFreeFunction</name>)(
- <type>void</type>* pUserData,
- <type>void</type>* pMemory);</type>
-
- <comment>The PFN_vkVoidFunction type are used by VkGet*ProcAddr below</comment>
- <type category="funcpointer">typedef void (VKAPI_PTR *<name>PFN_vkVoidFunction</name>)(void);</type>
-
- <comment>The PFN_vkDebugReportCallbackEXT type are used by the DEBUG_REPORT extension</comment>
- <type category="funcpointer">typedef VkBool32 (VKAPI_PTR *<name>PFN_vkDebugReportCallbackEXT</name>)(
- <type>VkDebugReportFlagsEXT</type> flags,
- <type>VkDebugReportObjectTypeEXT</type> objectType,
- <type>uint64_t</type> object,
- <type>size_t</type> location,
- <type>int32_t</type> messageCode,
- const <type>char</type>* pLayerPrefix,
- const <type>char</type>* pMessage,
- <type>void</type>* pUserData);</type>
-
- <comment>The PFN_vkDebugUtilsMessengerCallbackEXT type are used by the VK_EXT_debug_utils extension</comment>
- <type category="funcpointer" requires="VkDebugUtilsMessengerCallbackDataEXT">typedef VkBool32 (VKAPI_PTR *<name>PFN_vkDebugUtilsMessengerCallbackEXT</name>)(
- <type>VkDebugUtilsMessageSeverityFlagBitsEXT</type> messageSeverity,
- <type>VkDebugUtilsMessageTypeFlagsEXT</type> messageTypes,
- const <type>VkDebugUtilsMessengerCallbackDataEXT</type>* pCallbackData,
- <type>void</type>* pUserData);</type>
-
- <comment>The PFN_vkDeviceMemoryReportCallbackEXT type is used by the VK_EXT_device_memory_report extension</comment>
- <type category="funcpointer" requires="VkDeviceMemoryReportCallbackDataEXT">typedef void (VKAPI_PTR *<name>PFN_vkDeviceMemoryReportCallbackEXT</name>)(
- const <type>VkDeviceMemoryReportCallbackDataEXT</type>* pCallbackData,
- <type>void</type>* pUserData);</type>
-
- <comment>Struct types</comment>
- <type category="struct" name="VkBaseOutStructure">
- <member><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">struct <type>VkBaseOutStructure</type>* <name>pNext</name></member>
- </type>
- <type category="struct" name="VkBaseInStructure">
- <member><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const struct <type>VkBaseInStructure</type>* <name>pNext</name></member>
- </type>
- <type category="struct" name="VkOffset2D">
- <member><type>int32_t</type> <name>x</name></member>
- <member><type>int32_t</type> <name>y</name></member>
- </type>
- <type category="struct" name="VkOffset3D">
- <member><type>int32_t</type> <name>x</name></member>
- <member><type>int32_t</type> <name>y</name></member>
- <member><type>int32_t</type> <name>z</name></member>
- </type>
- <type category="struct" name="VkExtent2D">
- <member><type>uint32_t</type> <name>width</name></member>
- <member><type>uint32_t</type> <name>height</name></member>
- </type>
- <type category="struct" name="VkExtent3D">
- <member><type>uint32_t</type> <name>width</name></member>
- <member><type>uint32_t</type> <name>height</name></member>
- <member><type>uint32_t</type> <name>depth</name></member>
- </type>
- <type category="struct" name="VkViewport">
- <member noautovalidity="true"><type>float</type> <name>x</name></member>
- <member noautovalidity="true"><type>float</type> <name>y</name></member>
- <member noautovalidity="true"><type>float</type> <name>width</name></member>
- <member noautovalidity="true"><type>float</type> <name>height</name></member>
- <member><type>float</type> <name>minDepth</name></member>
- <member><type>float</type> <name>maxDepth</name></member>
- </type>
- <type category="struct" name="VkRect2D">
- <member><type>VkOffset2D</type> <name>offset</name></member>
- <member><type>VkExtent2D</type> <name>extent</name></member>
- </type>
- <type category="struct" name="VkClearRect">
- <member><type>VkRect2D</type> <name>rect</name></member>
- <member><type>uint32_t</type> <name>baseArrayLayer</name></member>
- <member><type>uint32_t</type> <name>layerCount</name></member>
- </type>
- <type category="struct" name="VkComponentMapping">
- <member><type>VkComponentSwizzle</type> <name>r</name></member>
- <member><type>VkComponentSwizzle</type> <name>g</name></member>
- <member><type>VkComponentSwizzle</type> <name>b</name></member>
- <member><type>VkComponentSwizzle</type> <name>a</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceProperties" returnedonly="true">
- <member limittype="noauto"><type>uint32_t</type> <name>apiVersion</name></member>
- <member limittype="noauto"><type>uint32_t</type> <name>driverVersion</name></member>
- <member limittype="noauto"><type>uint32_t</type> <name>vendorID</name></member>
- <member limittype="noauto"><type>uint32_t</type> <name>deviceID</name></member>
- <member limittype="noauto"><type>VkPhysicalDeviceType</type> <name>deviceType</name></member>
- <member limittype="noauto"><type>char</type> <name>deviceName</name>[<enum>VK_MAX_PHYSICAL_DEVICE_NAME_SIZE</enum>]</member>
- <member limittype="noauto"><type>uint8_t</type> <name>pipelineCacheUUID</name>[<enum>VK_UUID_SIZE</enum>]</member>
- <member limittype="struct"><type>VkPhysicalDeviceLimits</type> <name>limits</name></member>
- <member limittype="struct"><type>VkPhysicalDeviceSparseProperties</type> <name>sparseProperties</name></member>
- </type>
- <type category="struct" name="VkExtensionProperties" returnedonly="true">
- <member><type>char</type> <name>extensionName</name>[<enum>VK_MAX_EXTENSION_NAME_SIZE</enum>]<comment>extension name</comment></member>
- <member><type>uint32_t</type> <name>specVersion</name><comment>version of the extension specification implemented</comment></member>
- </type>
- <type category="struct" name="VkLayerProperties" returnedonly="true">
- <member><type>char</type> <name>layerName</name>[<enum>VK_MAX_EXTENSION_NAME_SIZE</enum>]<comment>layer name</comment></member>
- <member><type>uint32_t</type> <name>specVersion</name><comment>version of the layer specification implemented</comment></member>
- <member><type>uint32_t</type> <name>implementationVersion</name><comment>build or release version of the layer's library</comment></member>
- <member><type>char</type> <name>description</name>[<enum>VK_MAX_DESCRIPTION_SIZE</enum>]<comment>Free-form description of the layer</comment></member>
- </type>
- <type category="struct" name="VkApplicationInfo">
- <member values="VK_STRUCTURE_TYPE_APPLICATION_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true" len="null-terminated">const <type>char</type>* <name>pApplicationName</name></member>
- <member><type>uint32_t</type> <name>applicationVersion</name></member>
- <member optional="true" len="null-terminated">const <type>char</type>* <name>pEngineName</name></member>
- <member><type>uint32_t</type> <name>engineVersion</name></member>
- <member><type>uint32_t</type> <name>apiVersion</name></member>
- </type>
- <type category="struct" name="VkAllocationCallbacks">
- <member optional="true"><type>void</type>* <name>pUserData</name></member>
- <member noautovalidity="true"><type>PFN_vkAllocationFunction</type> <name>pfnAllocation</name></member>
- <member noautovalidity="true"><type>PFN_vkReallocationFunction</type> <name>pfnReallocation</name></member>
- <member noautovalidity="true"><type>PFN_vkFreeFunction</type> <name>pfnFree</name></member>
- <member optional="true" noautovalidity="true"><type>PFN_vkInternalAllocationNotification</type> <name>pfnInternalAllocation</name></member>
- <member optional="true" noautovalidity="true"><type>PFN_vkInternalFreeNotification</type> <name>pfnInternalFree</name></member>
- </type>
- <type category="struct" name="VkDeviceQueueCreateInfo">
- <member values="VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkDeviceQueueCreateFlags</type> <name>flags</name></member>
- <member><type>uint32_t</type> <name>queueFamilyIndex</name></member>
- <member><type>uint32_t</type> <name>queueCount</name></member>
- <member len="queueCount">const <type>float</type>* <name>pQueuePriorities</name></member>
- </type>
- <type category="struct" name="VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkDeviceCreateFlags</type> <name>flags</name></member>
- <member><type>uint32_t</type> <name>queueCreateInfoCount</name></member>
- <member len="queueCreateInfoCount">const <type>VkDeviceQueueCreateInfo</type>* <name>pQueueCreateInfos</name></member>
- <member optional="true"><type>uint32_t</type> <name>enabledLayerCount</name></member>
- <member len="enabledLayerCount,null-terminated">const <type>char</type>* const* <name>ppEnabledLayerNames</name><comment>Ordered list of layer names to be enabled</comment></member>
- <member optional="true"><type>uint32_t</type> <name>enabledExtensionCount</name></member>
- <member len="enabledExtensionCount,null-terminated">const <type>char</type>* const* <name>ppEnabledExtensionNames</name></member>
- <member optional="true">const <type>VkPhysicalDeviceFeatures</type>* <name>pEnabledFeatures</name></member>
- </type>
- <type category="struct" name="VkInstanceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkInstanceCreateFlags</type> <name>flags</name></member>
- <member optional="true">const <type>VkApplicationInfo</type>* <name>pApplicationInfo</name></member>
- <member optional="true"><type>uint32_t</type> <name>enabledLayerCount</name></member>
- <member len="enabledLayerCount,null-terminated">const <type>char</type>* const* <name>ppEnabledLayerNames</name><comment>Ordered list of layer names to be enabled</comment></member>
- <member optional="true"><type>uint32_t</type> <name>enabledExtensionCount</name></member>
- <member len="enabledExtensionCount,null-terminated">const <type>char</type>* const* <name>ppEnabledExtensionNames</name><comment>Extension names to be enabled</comment></member>
- </type>
- <type category="struct" name="VkQueueFamilyProperties" returnedonly="true">
- <member optional="true"><type>VkQueueFlags</type> <name>queueFlags</name><comment>Queue flags</comment></member>
- <member><type>uint32_t</type> <name>queueCount</name></member>
- <member><type>uint32_t</type> <name>timestampValidBits</name></member>
- <member><type>VkExtent3D</type> <name>minImageTransferGranularity</name><comment>Minimum alignment requirement for image transfers</comment></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceMemoryProperties" returnedonly="true">
- <member><type>uint32_t</type> <name>memoryTypeCount</name></member>
- <member><type>VkMemoryType</type> <name>memoryTypes</name>[<enum>VK_MAX_MEMORY_TYPES</enum>]</member>
- <member><type>uint32_t</type> <name>memoryHeapCount</name></member>
- <member><type>VkMemoryHeap</type> <name>memoryHeaps</name>[<enum>VK_MAX_MEMORY_HEAPS</enum>]</member>
- </type>
- <type category="struct" name="VkMemoryAllocateInfo">
- <member values="VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkDeviceSize</type> <name>allocationSize</name><comment>Size of memory allocation</comment></member>
- <member devicememorytypeindex="1"><type>uint32_t</type> <name>memoryTypeIndex</name><comment>Index of the of the memory type to allocate from</comment></member>
- </type>
- <type category="struct" name="VkMemoryRequirements" returnedonly="true">
- <member><type>VkDeviceSize</type> <name>size</name><comment>Specified in bytes</comment></member>
- <member><type>VkDeviceSize</type> <name>alignment</name><comment>Specified in bytes</comment></member>
- <member devicememorytypebits="1"><type>uint32_t</type> <name>memoryTypeBits</name><comment>Bitmask of the allowed memory type indices into memoryTypes[] for this object</comment></member>
- </type>
- <type category="struct" name="VkSparseImageFormatProperties" returnedonly="true">
- <member optional="true"><type>VkImageAspectFlags</type> <name>aspectMask</name></member>
- <member><type>VkExtent3D</type> <name>imageGranularity</name></member>
- <member optional="true"><type>VkSparseImageFormatFlags</type> <name>flags</name></member>
- </type>
- <type category="struct" name="VkSparseImageMemoryRequirements" returnedonly="true">
- <member><type>VkSparseImageFormatProperties</type> <name>formatProperties</name></member>
- <member><type>uint32_t</type> <name>imageMipTailFirstLod</name></member>
- <member><type>VkDeviceSize</type> <name>imageMipTailSize</name><comment>Specified in bytes, must be a multiple of sparse block size in bytes / alignment</comment></member>
- <member><type>VkDeviceSize</type> <name>imageMipTailOffset</name><comment>Specified in bytes, must be a multiple of sparse block size in bytes / alignment</comment></member>
- <member><type>VkDeviceSize</type> <name>imageMipTailStride</name><comment>Specified in bytes, must be a multiple of sparse block size in bytes / alignment</comment></member>
- </type>
- <type category="struct" name="VkMemoryType" returnedonly="true">
- <member optional="true"><type>VkMemoryPropertyFlags</type> <name>propertyFlags</name><comment>Memory properties of this memory type</comment></member>
- <member><type>uint32_t</type> <name>heapIndex</name><comment>Index of the memory heap allocations of this memory type are taken from</comment></member>
- </type>
- <type category="struct" name="VkMemoryHeap" returnedonly="true">
- <member><type>VkDeviceSize</type> <name>size</name><comment>Available memory in the heap</comment></member>
- <member optional="true"><type>VkMemoryHeapFlags</type> <name>flags</name><comment>Flags for the heap</comment></member>
- </type>
- <type category="struct" name="VkMappedMemoryRange">
- <member values="VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member devicememoryhandle="1"><type>VkDeviceMemory</type> <name>memory</name><comment>Mapped memory object</comment></member>
- <member devicememoryoffset="1"><type>VkDeviceSize</type> <name>offset</name><comment>Offset within the memory object where the range starts</comment></member>
- <member devicememorysize="1"><type>VkDeviceSize</type> <name>size</name><comment>Size of the range within the memory object</comment></member>
- </type>
- <type category="struct" name="VkFormatProperties" returnedonly="true">
- <member optional="true"><type>VkFormatFeatureFlags</type> <name>linearTilingFeatures</name><comment>Format features in case of linear tiling</comment></member>
- <member optional="true"><type>VkFormatFeatureFlags</type> <name>optimalTilingFeatures</name><comment>Format features in case of optimal tiling</comment></member>
- <member optional="true"><type>VkFormatFeatureFlags</type> <name>bufferFeatures</name><comment>Format features supported by buffers</comment></member>
- </type>
- <type category="struct" name="VkImageFormatProperties" returnedonly="true">
- <member><type>VkExtent3D</type> <name>maxExtent</name><comment>max image dimensions for this resource type</comment></member>
- <member><type>uint32_t</type> <name>maxMipLevels</name><comment>max number of mipmap levels for this resource type</comment></member>
- <member><type>uint32_t</type> <name>maxArrayLayers</name><comment>max array size for this resource type</comment></member>
- <member optional="true"><type>VkSampleCountFlags</type> <name>sampleCounts</name><comment>supported sample counts for this resource type</comment></member>
- <member><type>VkDeviceSize</type> <name>maxResourceSize</name><comment>max size (in bytes) of this resource type</comment></member>
- </type>
- <type category="struct" name="VkDescriptorBufferInfo">
- <member optional="true"><type>VkBuffer</type> <name>buffer</name><comment>Buffer used for this descriptor slot.</comment></member>
- <member><type>VkDeviceSize</type> <name>offset</name><comment>Base offset from buffer start in bytes to update in the descriptor set.</comment></member>
- <member><type>VkDeviceSize</type> <name>range</name><comment>Size in bytes of the buffer resource for this descriptor update.</comment></member>
- </type>
- <type category="struct" name="VkDescriptorImageInfo">
- <member noautovalidity="true"><type>VkSampler</type> <name>sampler</name><comment>Sampler to write to the descriptor in case it is a SAMPLER or COMBINED_IMAGE_SAMPLER descriptor. Ignored otherwise.</comment></member>
- <member noautovalidity="true"><type>VkImageView</type> <name>imageView</name><comment>Image view to write to the descriptor in case it is a SAMPLED_IMAGE, STORAGE_IMAGE, COMBINED_IMAGE_SAMPLER, or INPUT_ATTACHMENT descriptor. Ignored otherwise.</comment></member>
- <member noautovalidity="true"><type>VkImageLayout</type> <name>imageLayout</name><comment>Layout the image is expected to be in when accessed using this descriptor (only used if imageView is not VK_NULL_HANDLE).</comment></member>
- </type>
- <type category="struct" name="VkWriteDescriptorSet">
- <member values="VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member noautovalidity="true"><type>VkDescriptorSet</type> <name>dstSet</name><comment>Destination descriptor set</comment></member>
- <member><type>uint32_t</type> <name>dstBinding</name><comment>Binding within the destination descriptor set to write</comment></member>
- <member><type>uint32_t</type> <name>dstArrayElement</name><comment>Array element within the destination binding to write</comment></member>
- <member><type>uint32_t</type> <name>descriptorCount</name><comment>Number of descriptors to write (determines the size of the array pointed by pDescriptors)</comment></member>
- <member><type>VkDescriptorType</type> <name>descriptorType</name><comment>Descriptor type to write (determines which members of the array pointed by pDescriptors are going to be used)</comment></member>
- <member noautovalidity="true" len="descriptorCount"
- filterVar="descriptorType"
- filterVals="VK_DESCRIPTOR_TYPE_SAMPLER,VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE,VK_DESCRIPTOR_TYPE_STORAGE_IMAGE,VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT"
- >const <type>VkDescriptorImageInfo</type>* <name>pImageInfo</name><comment>Sampler, image view, and layout for SAMPLER, COMBINED_IMAGE_SAMPLER, {SAMPLED,STORAGE}_IMAGE, and INPUT_ATTACHMENT descriptor types.</comment></member>
- <member noautovalidity="true" len="descriptorCount"
- filterVar="descriptorType"
- filterVals="VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC,VK_DESCRIPTOR_TYPE_STORAGE_BUFFER,VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC"
- >const <type>VkDescriptorBufferInfo</type>* <name>pBufferInfo</name><comment>Raw buffer, size, and offset for {UNIFORM,STORAGE}_BUFFER[_DYNAMIC] descriptor types.</comment></member>
- <member noautovalidity="true" len="descriptorCount"
- filterVar="descriptorType"
- filterVals="VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER,VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER">const <type>VkBufferView</type>* <name>pTexelBufferView</name><comment>Buffer view to write to the descriptor for {UNIFORM,STORAGE}_TEXEL_BUFFER descriptor types.</comment></member>
- </type>
- <type category="struct" name="VkCopyDescriptorSet">
- <member values="VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkDescriptorSet</type> <name>srcSet</name><comment>Source descriptor set</comment></member>
- <member><type>uint32_t</type> <name>srcBinding</name><comment>Binding within the source descriptor set to copy from</comment></member>
- <member><type>uint32_t</type> <name>srcArrayElement</name><comment>Array element within the source binding to copy from</comment></member>
- <member><type>VkDescriptorSet</type> <name>dstSet</name><comment>Destination descriptor set</comment></member>
- <member><type>uint32_t</type> <name>dstBinding</name><comment>Binding within the destination descriptor set to copy to</comment></member>
- <member><type>uint32_t</type> <name>dstArrayElement</name><comment>Array element within the destination binding to copy to</comment></member>
- <member><type>uint32_t</type> <name>descriptorCount</name><comment>Number of descriptors to write (determines the size of the array pointed by pDescriptors)</comment></member>
- </type>
- <type category="struct" name="VkBufferCreateInfo">
- <member values="VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkBufferCreateFlags</type> <name>flags</name><comment>Buffer creation flags</comment></member>
- <member><type>VkDeviceSize</type> <name>size</name><comment>Specified in bytes</comment></member>
- <member><type>VkBufferUsageFlags</type> <name>usage</name><comment>Buffer usage flags</comment></member>
- <member><type>VkSharingMode</type> <name>sharingMode</name></member>
- <member optional="true"><type>uint32_t</type> <name>queueFamilyIndexCount</name></member>
- <member noautovalidity="true" len="queueFamilyIndexCount">const <type>uint32_t</type>* <name>pQueueFamilyIndices</name></member>
- </type>
- <type category="struct" name="VkBufferViewCreateInfo">
- <member values="VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkBufferViewCreateFlags</type><name>flags</name></member>
- <member><type>VkBuffer</type> <name>buffer</name></member>
- <member><type>VkFormat</type> <name>format</name><comment>Optionally specifies format of elements</comment></member>
- <member><type>VkDeviceSize</type> <name>offset</name><comment>Specified in bytes</comment></member>
- <member><type>VkDeviceSize</type> <name>range</name><comment>View size specified in bytes</comment></member>
- </type>
- <type category="struct" name="VkImageSubresource">
- <member><type>VkImageAspectFlags</type> <name>aspectMask</name></member>
- <member><type>uint32_t</type> <name>mipLevel</name></member>
- <member><type>uint32_t</type> <name>arrayLayer</name></member>
- </type>
- <type category="struct" name="VkImageSubresourceLayers">
- <member><type>VkImageAspectFlags</type> <name>aspectMask</name></member>
- <member><type>uint32_t</type> <name>mipLevel</name></member>
- <member><type>uint32_t</type> <name>baseArrayLayer</name></member>
- <member><type>uint32_t</type> <name>layerCount</name></member>
- </type>
- <type category="struct" name="VkImageSubresourceRange">
- <member><type>VkImageAspectFlags</type> <name>aspectMask</name></member>
- <member><type>uint32_t</type> <name>baseMipLevel</name></member>
- <member><type>uint32_t</type> <name>levelCount</name></member>
- <member><type>uint32_t</type> <name>baseArrayLayer</name></member>
- <member><type>uint32_t</type> <name>layerCount</name></member>
- </type>
- <type category="struct" name="VkMemoryBarrier">
- <member values="VK_STRUCTURE_TYPE_MEMORY_BARRIER"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkAccessFlags</type> <name>srcAccessMask</name><comment>Memory accesses from the source of the dependency to synchronize</comment></member>
- <member optional="true"><type>VkAccessFlags</type> <name>dstAccessMask</name><comment>Memory accesses from the destination of the dependency to synchronize</comment></member>
- </type>
- <type category="struct" name="VkBufferMemoryBarrier">
- <member values="VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member noautovalidity="true"><type>VkAccessFlags</type> <name>srcAccessMask</name><comment>Memory accesses from the source of the dependency to synchronize</comment></member>
- <member noautovalidity="true"><type>VkAccessFlags</type> <name>dstAccessMask</name><comment>Memory accesses from the destination of the dependency to synchronize</comment></member>
- <member><type>uint32_t</type> <name>srcQueueFamilyIndex</name><comment>Queue family to transition ownership from</comment></member>
- <member><type>uint32_t</type> <name>dstQueueFamilyIndex</name><comment>Queue family to transition ownership to</comment></member>
- <member><type>VkBuffer</type> <name>buffer</name><comment>Buffer to sync</comment></member>
- <member><type>VkDeviceSize</type> <name>offset</name><comment>Offset within the buffer to sync</comment></member>
- <member><type>VkDeviceSize</type> <name>size</name><comment>Amount of bytes to sync</comment></member>
- </type>
- <type category="struct" name="VkImageMemoryBarrier">
- <member values="VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member noautovalidity="true"><type>VkAccessFlags</type> <name>srcAccessMask</name><comment>Memory accesses from the source of the dependency to synchronize</comment></member>
- <member noautovalidity="true"><type>VkAccessFlags</type> <name>dstAccessMask</name><comment>Memory accesses from the destination of the dependency to synchronize</comment></member>
- <member><type>VkImageLayout</type> <name>oldLayout</name><comment>Current layout of the image</comment></member>
- <member><type>VkImageLayout</type> <name>newLayout</name><comment>New layout to transition the image to</comment></member>
- <member><type>uint32_t</type> <name>srcQueueFamilyIndex</name><comment>Queue family to transition ownership from</comment></member>
- <member><type>uint32_t</type> <name>dstQueueFamilyIndex</name><comment>Queue family to transition ownership to</comment></member>
- <member><type>VkImage</type> <name>image</name><comment>Image to sync</comment></member>
- <member><type>VkImageSubresourceRange</type> <name>subresourceRange</name><comment>Subresource range to sync</comment></member>
- </type>
- <type category="struct" name="VkImageCreateInfo">
- <member values="VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkImageCreateFlags</type> <name>flags</name><comment>Image creation flags</comment></member>
- <member><type>VkImageType</type> <name>imageType</name></member>
- <member><type>VkFormat</type> <name>format</name></member>
- <member><type>VkExtent3D</type> <name>extent</name></member>
- <member><type>uint32_t</type> <name>mipLevels</name></member>
- <member><type>uint32_t</type> <name>arrayLayers</name></member>
- <member><type>VkSampleCountFlagBits</type> <name>samples</name></member>
- <member><type>VkImageTiling</type> <name>tiling</name></member>
- <member><type>VkImageUsageFlags</type> <name>usage</name><comment>Image usage flags</comment></member>
- <member><type>VkSharingMode</type> <name>sharingMode</name><comment>Cross-queue-family sharing mode</comment></member>
- <member optional="true"><type>uint32_t</type> <name>queueFamilyIndexCount</name><comment>Number of queue families to share across</comment></member>
- <member noautovalidity="true" len="queueFamilyIndexCount">const <type>uint32_t</type>* <name>pQueueFamilyIndices</name><comment>Array of queue family indices to share across</comment></member>
- <member><type>VkImageLayout</type> <name>initialLayout</name><comment>Initial image layout for all subresources</comment></member>
- </type>
- <type category="struct" name="VkSubresourceLayout" returnedonly="true">
- <member><type>VkDeviceSize</type> <name>offset</name><comment>Specified in bytes</comment></member>
- <member><type>VkDeviceSize</type> <name>size</name><comment>Specified in bytes</comment></member>
- <member><type>VkDeviceSize</type> <name>rowPitch</name><comment>Specified in bytes</comment></member>
- <member><type>VkDeviceSize</type> <name>arrayPitch</name><comment>Specified in bytes</comment></member>
- <member><type>VkDeviceSize</type> <name>depthPitch</name><comment>Specified in bytes</comment></member>
- </type>
- <type category="struct" name="VkImageViewCreateInfo">
- <member values="VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkImageViewCreateFlags</type> <name>flags</name></member>
- <member><type>VkImage</type> <name>image</name></member>
- <member><type>VkImageViewType</type> <name>viewType</name></member>
- <member><type>VkFormat</type> <name>format</name></member>
- <member><type>VkComponentMapping</type> <name>components</name></member>
- <member><type>VkImageSubresourceRange</type> <name>subresourceRange</name></member>
- </type>
- <type category="struct" name="VkBufferCopy">
- <member><type>VkDeviceSize</type> <name>srcOffset</name><comment>Specified in bytes</comment></member>
- <member><type>VkDeviceSize</type> <name>dstOffset</name><comment>Specified in bytes</comment></member>
- <member noautovalidity="true"><type>VkDeviceSize</type> <name>size</name><comment>Specified in bytes</comment></member>
- </type>
- <type category="struct" name="VkSparseMemoryBind">
- <member><type>VkDeviceSize</type> <name>resourceOffset</name><comment>Specified in bytes</comment></member>
- <member><type>VkDeviceSize</type> <name>size</name><comment>Specified in bytes</comment></member>
- <member optional="true" devicememoryhandle="1"><type>VkDeviceMemory</type> <name>memory</name></member>
- <member devicememoryoffset="1"><type>VkDeviceSize</type> <name>memoryOffset</name><comment>Specified in bytes</comment></member>
- <member optional="true"><type>VkSparseMemoryBindFlags</type><name>flags</name></member>
- </type>
- <type category="struct" name="VkSparseImageMemoryBind">
- <member><type>VkImageSubresource</type> <name>subresource</name></member>
- <member><type>VkOffset3D</type> <name>offset</name></member>
- <member><type>VkExtent3D</type> <name>extent</name></member>
- <member optional="true" devicememoryhandle="1"><type>VkDeviceMemory</type> <name>memory</name></member>
- <member devicememoryoffset="1"><type>VkDeviceSize</type> <name>memoryOffset</name><comment>Specified in bytes</comment></member>
- <member optional="true"><type>VkSparseMemoryBindFlags</type><name>flags</name></member>
- </type>
- <type category="struct" name="VkSparseBufferMemoryBindInfo">
- <member><type>VkBuffer</type> <name>buffer</name></member>
- <member><type>uint32_t</type> <name>bindCount</name></member>
- <member len="bindCount">const <type>VkSparseMemoryBind</type>* <name>pBinds</name></member>
- </type>
- <type category="struct" name="VkSparseImageOpaqueMemoryBindInfo">
- <member><type>VkImage</type> <name>image</name></member>
- <member><type>uint32_t</type> <name>bindCount</name></member>
- <member len="bindCount">const <type>VkSparseMemoryBind</type>* <name>pBinds</name></member>
- </type>
- <type category="struct" name="VkSparseImageMemoryBindInfo">
- <member><type>VkImage</type> <name>image</name></member>
- <member><type>uint32_t</type> <name>bindCount</name></member>
- <member len="bindCount">const <type>VkSparseImageMemoryBind</type>* <name>pBinds</name></member>
- </type>
- <type category="struct" name="VkBindSparseInfo">
- <member values="VK_STRUCTURE_TYPE_BIND_SPARSE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>uint32_t</type> <name>waitSemaphoreCount</name></member>
- <member len="waitSemaphoreCount">const <type>VkSemaphore</type>* <name>pWaitSemaphores</name></member>
- <member optional="true"><type>uint32_t</type> <name>bufferBindCount</name></member>
- <member len="bufferBindCount">const <type>VkSparseBufferMemoryBindInfo</type>* <name>pBufferBinds</name></member>
- <member optional="true"><type>uint32_t</type> <name>imageOpaqueBindCount</name></member>
- <member len="imageOpaqueBindCount">const <type>VkSparseImageOpaqueMemoryBindInfo</type>* <name>pImageOpaqueBinds</name></member>
- <member optional="true"><type>uint32_t</type> <name>imageBindCount</name></member>
- <member len="imageBindCount">const <type>VkSparseImageMemoryBindInfo</type>* <name>pImageBinds</name></member>
- <member optional="true"><type>uint32_t</type> <name>signalSemaphoreCount</name></member>
- <member len="signalSemaphoreCount">const <type>VkSemaphore</type>* <name>pSignalSemaphores</name></member>
- </type>
- <type category="struct" name="VkImageCopy">
- <member><type>VkImageSubresourceLayers</type> <name>srcSubresource</name></member>
- <member><type>VkOffset3D</type> <name>srcOffset</name><comment>Specified in pixels for both compressed and uncompressed images</comment></member>
- <member><type>VkImageSubresourceLayers</type> <name>dstSubresource</name></member>
- <member><type>VkOffset3D</type> <name>dstOffset</name><comment>Specified in pixels for both compressed and uncompressed images</comment></member>
- <member><type>VkExtent3D</type> <name>extent</name><comment>Specified in pixels for both compressed and uncompressed images</comment></member>
- </type>
- <type category="struct" name="VkImageBlit">
- <member><type>VkImageSubresourceLayers</type> <name>srcSubresource</name></member>
- <member><type>VkOffset3D</type> <name>srcOffsets</name>[2]<comment>Specified in pixels for both compressed and uncompressed images</comment></member>
- <member><type>VkImageSubresourceLayers</type> <name>dstSubresource</name></member>
- <member><type>VkOffset3D</type> <name>dstOffsets</name>[2]<comment>Specified in pixels for both compressed and uncompressed images</comment></member>
- </type>
- <type category="struct" name="VkBufferImageCopy">
- <member><type>VkDeviceSize</type> <name>bufferOffset</name><comment>Specified in bytes</comment></member>
- <member><type>uint32_t</type> <name>bufferRowLength</name><comment>Specified in texels</comment></member>
- <member><type>uint32_t</type> <name>bufferImageHeight</name></member>
- <member><type>VkImageSubresourceLayers</type> <name>imageSubresource</name></member>
- <member><type>VkOffset3D</type> <name>imageOffset</name><comment>Specified in pixels for both compressed and uncompressed images</comment></member>
- <member><type>VkExtent3D</type> <name>imageExtent</name><comment>Specified in pixels for both compressed and uncompressed images</comment></member>
- </type>
- <type category="struct" name="VkImageResolve">
- <member><type>VkImageSubresourceLayers</type> <name>srcSubresource</name></member>
- <member><type>VkOffset3D</type> <name>srcOffset</name></member>
- <member><type>VkImageSubresourceLayers</type> <name>dstSubresource</name></member>
- <member><type>VkOffset3D</type> <name>dstOffset</name></member>
- <member><type>VkExtent3D</type> <name>extent</name></member>
- </type>
- <type category="struct" name="VkShaderModuleCreateInfo">
- <member values="VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkShaderModuleCreateFlags</type> <name>flags</name></member>
- <member><type>size_t</type> <name>codeSize</name><comment>Specified in bytes</comment></member>
- <member len="latexmath:[\textrm{codeSize} \over 4]" altlen="codeSize / 4">const <type>uint32_t</type>* <name>pCode</name><comment>Binary code of size codeSize</comment></member>
- </type>
- <type category="struct" name="VkDescriptorSetLayoutBinding">
- <member><type>uint32_t</type> <name>binding</name><comment>Binding number for this entry</comment></member>
- <member><type>VkDescriptorType</type> <name>descriptorType</name><comment>Type of the descriptors in this binding</comment></member>
- <member optional="true"><type>uint32_t</type> <name>descriptorCount</name><comment>Number of descriptors in this binding</comment></member>
- <member noautovalidity="true"><type>VkShaderStageFlags</type> <name>stageFlags</name><comment>Shader stages this binding is visible to</comment></member>
- <member noautovalidity="true" optional="true" len="descriptorCount">const <type>VkSampler</type>* <name>pImmutableSamplers</name><comment>Immutable samplers (used if descriptor type is SAMPLER or COMBINED_IMAGE_SAMPLER, is either NULL or contains count number of elements)</comment></member>
- </type>
- <type category="struct" name="VkDescriptorSetLayoutCreateInfo">
- <member values="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkDescriptorSetLayoutCreateFlags</type> <name>flags</name></member>
- <member optional="true"><type>uint32_t</type> <name>bindingCount</name><comment>Number of bindings in the descriptor set layout</comment></member>
- <member len="bindingCount">const <type>VkDescriptorSetLayoutBinding</type>* <name>pBindings</name><comment>Array of descriptor set layout bindings</comment></member>
- </type>
- <type category="struct" name="VkDescriptorPoolSize">
- <member><type>VkDescriptorType</type> <name>type</name></member>
- <member><type>uint32_t</type> <name>descriptorCount</name></member>
- </type>
- <type category="struct" name="VkDescriptorPoolCreateInfo">
- <member values="VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkDescriptorPoolCreateFlags</type> <name>flags</name></member>
- <member><type>uint32_t</type> <name>maxSets</name></member>
- <member><type>uint32_t</type> <name>poolSizeCount</name></member>
- <member len="poolSizeCount">const <type>VkDescriptorPoolSize</type>* <name>pPoolSizes</name></member>
- </type>
- <type category="struct" name="VkDescriptorSetAllocateInfo">
- <member values="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkDescriptorPool</type> <name>descriptorPool</name></member>
- <member><type>uint32_t</type> <name>descriptorSetCount</name></member>
- <member len="descriptorSetCount">const <type>VkDescriptorSetLayout</type>* <name>pSetLayouts</name></member>
- </type>
- <type category="struct" name="VkSpecializationMapEntry">
- <member><type>uint32_t</type> <name>constantID</name><comment>The SpecConstant ID specified in the BIL</comment></member>
- <member><type>uint32_t</type> <name>offset</name><comment>Offset of the value in the data block</comment></member>
- <member noautovalidity="true"><type>size_t</type> <name>size</name><comment>Size in bytes of the SpecConstant</comment></member>
- </type>
- <type category="struct" name="VkSpecializationInfo">
- <member optional="true"><type>uint32_t</type> <name>mapEntryCount</name><comment>Number of entries in the map</comment></member>
- <member len="mapEntryCount">const <type>VkSpecializationMapEntry</type>* <name>pMapEntries</name><comment>Array of map entries</comment></member>
- <member optional="true"><type>size_t</type> <name>dataSize</name><comment>Size in bytes of pData</comment></member>
- <member len="dataSize">const <type>void</type>* <name>pData</name><comment>Pointer to SpecConstant data</comment></member>
- </type>
- <type category="struct" name="VkPipelineShaderStageCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkPipelineShaderStageCreateFlags</type> <name>flags</name></member>
- <member><type>VkShaderStageFlagBits</type> <name>stage</name><comment>Shader stage</comment></member>
- <member><type>VkShaderModule</type> <name>module</name><comment>Module containing entry point</comment></member>
- <member len="null-terminated">const <type>char</type>* <name>pName</name><comment>Null-terminated entry point name</comment></member>
- <member optional="true">const <type>VkSpecializationInfo</type>* <name>pSpecializationInfo</name></member>
- </type>
- <type category="struct" name="VkComputePipelineCreateInfo">
- <member values="VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkPipelineCreateFlags</type> <name>flags</name><comment>Pipeline creation flags</comment></member>
- <member><type>VkPipelineShaderStageCreateInfo</type> <name>stage</name></member>
- <member><type>VkPipelineLayout</type> <name>layout</name><comment>Interface layout of the pipeline</comment></member>
- <member noautovalidity="true" optional="true"><type>VkPipeline</type> <name>basePipelineHandle</name><comment>If VK_PIPELINE_CREATE_DERIVATIVE_BIT is set and this value is nonzero, it specifies the handle of the base pipeline this is a derivative of</comment></member>
- <member><type>int32_t</type> <name>basePipelineIndex</name><comment>If VK_PIPELINE_CREATE_DERIVATIVE_BIT is set and this value is not -1, it specifies an index into pCreateInfos of the base pipeline this is a derivative of</comment></member>
- </type>
- <type category="struct" name="VkVertexInputBindingDescription">
- <member><type>uint32_t</type> <name>binding</name><comment>Vertex buffer binding id</comment></member>
- <member><type>uint32_t</type> <name>stride</name><comment>Distance between vertices in bytes (0 = no advancement)</comment></member>
- <member><type>VkVertexInputRate</type> <name>inputRate</name><comment>The rate at which the vertex data is consumed</comment></member>
- </type>
- <type category="struct" name="VkVertexInputAttributeDescription">
- <member><type>uint32_t</type> <name>location</name><comment>location of the shader vertex attrib</comment></member>
- <member><type>uint32_t</type> <name>binding</name><comment>Vertex buffer binding id</comment></member>
- <member><type>VkFormat</type> <name>format</name><comment>format of source data</comment></member>
- <member><type>uint32_t</type> <name>offset</name><comment>Offset of first element in bytes from base of vertex</comment></member>
- </type>
- <type category="struct" name="VkPipelineVertexInputStateCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkPipelineVertexInputStateCreateFlags</type> <name>flags</name></member>
- <member optional="true"><type>uint32_t</type> <name>vertexBindingDescriptionCount</name><comment>number of bindings</comment></member>
- <member len="vertexBindingDescriptionCount">const <type>VkVertexInputBindingDescription</type>* <name>pVertexBindingDescriptions</name></member>
- <member optional="true"><type>uint32_t</type> <name>vertexAttributeDescriptionCount</name><comment>number of attributes</comment></member>
- <member len="vertexAttributeDescriptionCount">const <type>VkVertexInputAttributeDescription</type>* <name>pVertexAttributeDescriptions</name></member>
- </type>
- <type category="struct" name="VkPipelineInputAssemblyStateCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkPipelineInputAssemblyStateCreateFlags</type> <name>flags</name></member>
- <member><type>VkPrimitiveTopology</type> <name>topology</name></member>
- <member><type>VkBool32</type> <name>primitiveRestartEnable</name></member>
- </type>
- <type category="struct" name="VkPipelineTessellationStateCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkPipelineTessellationStateCreateFlags</type> <name>flags</name></member>
- <member><type>uint32_t</type> <name>patchControlPoints</name></member>
- </type>
- <type category="struct" name="VkPipelineViewportStateCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkPipelineViewportStateCreateFlags</type> <name>flags</name></member>
- <member optional="true"><type>uint32_t</type> <name>viewportCount</name></member>
- <member noautovalidity="true" optional="true" len="viewportCount">const <type>VkViewport</type>* <name>pViewports</name></member>
- <member optional="true"><type>uint32_t</type> <name>scissorCount</name></member>
- <member noautovalidity="true" optional="true" len="scissorCount">const <type>VkRect2D</type>* <name>pScissors</name></member>
- </type>
- <type category="struct" name="VkPipelineRasterizationStateCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkPipelineRasterizationStateCreateFlags</type> <name>flags</name></member>
- <member><type>VkBool32</type> <name>depthClampEnable</name></member>
- <member><type>VkBool32</type> <name>rasterizerDiscardEnable</name></member>
- <member><type>VkPolygonMode</type> <name>polygonMode</name><comment>optional (GL45)</comment></member>
- <member optional="true"><type>VkCullModeFlags</type> <name>cullMode</name></member>
- <member><type>VkFrontFace</type> <name>frontFace</name></member>
- <member><type>VkBool32</type> <name>depthBiasEnable</name></member>
- <member><type>float</type> <name>depthBiasConstantFactor</name></member>
- <member><type>float</type> <name>depthBiasClamp</name></member>
- <member><type>float</type> <name>depthBiasSlopeFactor</name></member>
- <member><type>float</type> <name>lineWidth</name></member>
- </type>
- <type category="struct" name="VkPipelineMultisampleStateCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkPipelineMultisampleStateCreateFlags</type> <name>flags</name></member>
- <member><type>VkSampleCountFlagBits</type> <name>rasterizationSamples</name><comment>Number of samples used for rasterization</comment></member>
- <member><type>VkBool32</type> <name>sampleShadingEnable</name><comment>optional (GL45)</comment></member>
- <member><type>float</type> <name>minSampleShading</name><comment>optional (GL45)</comment></member>
- <member optional="true" len="latexmath:[\lceil{\mathit{rasterizationSamples} \over 32}\rceil]" altlen="(rasterizationSamples + 31) / 32">const <type>VkSampleMask</type>* <name>pSampleMask</name><comment>Array of sampleMask words</comment></member>
- <member><type>VkBool32</type> <name>alphaToCoverageEnable</name></member>
- <member><type>VkBool32</type> <name>alphaToOneEnable</name></member>
- </type>
- <type category="struct" name="VkPipelineColorBlendAttachmentState">
- <member><type>VkBool32</type> <name>blendEnable</name></member>
- <member><type>VkBlendFactor</type> <name>srcColorBlendFactor</name></member>
- <member><type>VkBlendFactor</type> <name>dstColorBlendFactor</name></member>
- <member><type>VkBlendOp</type> <name>colorBlendOp</name></member>
- <member><type>VkBlendFactor</type> <name>srcAlphaBlendFactor</name></member>
- <member><type>VkBlendFactor</type> <name>dstAlphaBlendFactor</name></member>
- <member><type>VkBlendOp</type> <name>alphaBlendOp</name></member>
- <member optional="true"><type>VkColorComponentFlags</type> <name>colorWriteMask</name></member>
- </type>
- <type category="struct" name="VkPipelineColorBlendStateCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkPipelineColorBlendStateCreateFlags</type> <name>flags</name></member>
- <member><type>VkBool32</type> <name>logicOpEnable</name></member>
- <member noautovalidity="true"><type>VkLogicOp</type> <name>logicOp</name></member>
- <member optional="true"><type>uint32_t</type> <name>attachmentCount</name><comment># of pAttachments</comment></member>
- <member len="attachmentCount">const <type>VkPipelineColorBlendAttachmentState</type>* <name>pAttachments</name></member>
- <member><type>float</type> <name>blendConstants</name>[4]</member>
- </type>
- <type category="struct" name="VkPipelineDynamicStateCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkPipelineDynamicStateCreateFlags</type> <name>flags</name></member>
- <member optional="true"><type>uint32_t</type> <name>dynamicStateCount</name></member>
- <member len="dynamicStateCount">const <type>VkDynamicState</type>* <name>pDynamicStates</name></member>
- </type>
- <type category="struct" name="VkStencilOpState">
- <member><type>VkStencilOp</type> <name>failOp</name></member>
- <member><type>VkStencilOp</type> <name>passOp</name></member>
- <member><type>VkStencilOp</type> <name>depthFailOp</name></member>
- <member><type>VkCompareOp</type> <name>compareOp</name></member>
- <member><type>uint32_t</type> <name>compareMask</name></member>
- <member><type>uint32_t</type> <name>writeMask</name></member>
- <member><type>uint32_t</type> <name>reference</name></member>
- </type>
- <type category="struct" name="VkPipelineDepthStencilStateCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkPipelineDepthStencilStateCreateFlags</type> <name>flags</name></member>
- <member><type>VkBool32</type> <name>depthTestEnable</name></member>
- <member><type>VkBool32</type> <name>depthWriteEnable</name></member>
- <member><type>VkCompareOp</type> <name>depthCompareOp</name></member>
- <member><type>VkBool32</type> <name>depthBoundsTestEnable</name><comment>optional (depth_bounds_test)</comment></member>
- <member><type>VkBool32</type> <name>stencilTestEnable</name></member>
- <member><type>VkStencilOpState</type> <name>front</name></member>
- <member><type>VkStencilOpState</type> <name>back</name></member>
- <member><type>float</type> <name>minDepthBounds</name></member>
- <member><type>float</type> <name>maxDepthBounds</name></member>
- </type>
- <type category="struct" name="VkGraphicsPipelineCreateInfo" let="hasTessellation : (arrayany pStages 0 stageCount (lambda ((s VkPipelineShaderStageCreateInfo)) (or (eq (getfield s stage) VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT) (eq (getfield s stage) VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT)))),hasRasterization : (if (eq 0 pRasterizationState) 0 (not (getfield pRasterizationState rasterizerDiscardEnable)))">
- <member values="VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkPipelineCreateFlags</type> <name>flags</name><comment>Pipeline creation flags</comment></member>
- <member><type>uint32_t</type> <name>stageCount</name></member>
- <member len="stageCount">const <type>VkPipelineShaderStageCreateInfo</type>* <name>pStages</name><comment>One entry for each active shader stage</comment></member>
- <member noautovalidity="true" optional="streamFeature:VULKAN_STREAM_FEATURE_IGNORED_HANDLES_BIT">const <type>VkPipelineVertexInputStateCreateInfo</type>* <name>pVertexInputState</name></member>
- <member noautovalidity="true" optional="streamFeature:VULKAN_STREAM_FEATURE_IGNORED_HANDLES_BIT">const <type>VkPipelineInputAssemblyStateCreateInfo</type>* <name>pInputAssemblyState</name></member>
- <member noautovalidity="true" optional="true" filterVar="hasTessellation">const <type>VkPipelineTessellationStateCreateInfo</type>* <name>pTessellationState</name></member>
- <member noautovalidity="true" optional="true" filterVar="hasRasterization">const <type>VkPipelineViewportStateCreateInfo</type>* <name>pViewportState</name></member>
- <member noautovalidity="true" optional="streamFeature:VULKAN_STREAM_FEATURE_IGNORED_HANDLES_BIT">const <type>VkPipelineRasterizationStateCreateInfo</type>* <name>pRasterizationState</name></member>
- <member noautovalidity="true" optional="true" filterVar="hasRasterization">const <type>VkPipelineMultisampleStateCreateInfo</type>* <name>pMultisampleState</name></member>
- <member noautovalidity="true" optional="true" filterVar="hasRasterization">const <type>VkPipelineDepthStencilStateCreateInfo</type>* <name>pDepthStencilState</name></member>
- <member noautovalidity="true" optional="true" filterVar="hasRasterization">const <type>VkPipelineColorBlendStateCreateInfo</type>* <name>pColorBlendState</name></member>
- <member optional="true">const <type>VkPipelineDynamicStateCreateInfo</type>* <name>pDynamicState</name></member>
- <member><type>VkPipelineLayout</type> <name>layout</name><comment>Interface layout of the pipeline</comment></member>
- <member optional="true"><type>VkRenderPass</type> <name>renderPass</name></member>
- <member><type>uint32_t</type> <name>subpass</name></member>
- <member noautovalidity="true" optional="true"><type>VkPipeline</type> <name>basePipelineHandle</name><comment>If VK_PIPELINE_CREATE_DERIVATIVE_BIT is set and this value is nonzero, it specifies the handle of the base pipeline this is a derivative of</comment></member>
- <member><type>int32_t</type> <name>basePipelineIndex</name><comment>If VK_PIPELINE_CREATE_DERIVATIVE_BIT is set and this value is not -1, it specifies an index into pCreateInfos of the base pipeline this is a derivative of</comment></member>
- </type>
- <type category="struct" name="VkPipelineCacheCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkPipelineCacheCreateFlags</type> <name>flags</name></member>
- <member optional="true"><type>size_t</type> <name>initialDataSize</name><comment>Size of initial data to populate cache, in bytes</comment></member>
- <member len="initialDataSize">const <type>void</type>* <name>pInitialData</name><comment>Initial data to populate cache</comment></member>
- </type>
- <type category="struct" name="VkPipelineCacheHeaderVersionOne">
- <comment>The fields in this structure are non-normative since structure packing is implementation-defined in C. The specification defines the normative layout.</comment>
- <member><type>uint32_t</type> <name>headerSize</name></member>
- <member><type>VkPipelineCacheHeaderVersion</type> <name>headerVersion</name></member>
- <member><type>uint32_t</type> <name>vendorID</name></member>
- <member><type>uint32_t</type> <name>deviceID</name></member>
- <member><type>uint8_t</type> <name>pipelineCacheUUID</name>[<enum>VK_UUID_SIZE</enum>]</member>
- </type>
- <type category="struct" name="VkPushConstantRange">
- <member><type>VkShaderStageFlags</type> <name>stageFlags</name><comment>Which stages use the range</comment></member>
- <member><type>uint32_t</type> <name>offset</name><comment>Start of the range, in bytes</comment></member>
- <member><type>uint32_t</type> <name>size</name><comment>Size of the range, in bytes</comment></member>
- </type>
- <type category="struct" name="VkPipelineLayoutCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkPipelineLayoutCreateFlags</type> <name>flags</name></member>
- <member optional="true"><type>uint32_t</type> <name>setLayoutCount</name><comment>Number of descriptor sets interfaced by the pipeline</comment></member>
- <member len="setLayoutCount">const <type>VkDescriptorSetLayout</type>* <name>pSetLayouts</name><comment>Array of setCount number of descriptor set layout objects defining the layout of the</comment></member>
- <member optional="true"><type>uint32_t</type> <name>pushConstantRangeCount</name><comment>Number of push-constant ranges used by the pipeline</comment></member>
- <member len="pushConstantRangeCount">const <type>VkPushConstantRange</type>* <name>pPushConstantRanges</name><comment>Array of pushConstantRangeCount number of ranges used by various shader stages</comment></member>
- </type>
- <type category="struct" name="VkSamplerCreateInfo">
- <member values="VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkSamplerCreateFlags</type> <name>flags</name></member>
- <member><type>VkFilter</type> <name>magFilter</name><comment>Filter mode for magnification</comment></member>
- <member><type>VkFilter</type> <name>minFilter</name><comment>Filter mode for minifiation</comment></member>
- <member><type>VkSamplerMipmapMode</type> <name>mipmapMode</name><comment>Mipmap selection mode</comment></member>
- <member><type>VkSamplerAddressMode</type> <name>addressModeU</name></member>
- <member><type>VkSamplerAddressMode</type> <name>addressModeV</name></member>
- <member><type>VkSamplerAddressMode</type> <name>addressModeW</name></member>
- <member><type>float</type> <name>mipLodBias</name></member>
- <member><type>VkBool32</type> <name>anisotropyEnable</name></member>
- <member><type>float</type> <name>maxAnisotropy</name></member>
- <member><type>VkBool32</type> <name>compareEnable</name></member>
- <member noautovalidity="true"><type>VkCompareOp</type> <name>compareOp</name></member>
- <member><type>float</type> <name>minLod</name></member>
- <member><type>float</type> <name>maxLod</name></member>
- <member noautovalidity="true"><type>VkBorderColor</type> <name>borderColor</name></member>
- <member><type>VkBool32</type> <name>unnormalizedCoordinates</name></member>
- </type>
- <type category="struct" name="VkCommandPoolCreateInfo">
- <member values="VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkCommandPoolCreateFlags</type> <name>flags</name><comment>Command pool creation flags</comment></member>
- <member><type>uint32_t</type> <name>queueFamilyIndex</name></member>
- </type>
- <type category="struct" name="VkCommandBufferAllocateInfo">
- <member values="VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkCommandPool</type> <name>commandPool</name></member>
- <member><type>VkCommandBufferLevel</type> <name>level</name></member>
- <member><type>uint32_t</type> <name>commandBufferCount</name></member>
- </type>
- <type category="struct" name="VkCommandBufferInheritanceInfo">
- <member values="VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true" noautovalidity="true"><type>VkRenderPass</type> <name>renderPass</name><comment>Render pass for secondary command buffers</comment></member>
- <member><type>uint32_t</type> <name>subpass</name></member>
- <member optional="true" noautovalidity="true"><type>VkFramebuffer</type> <name>framebuffer</name><comment>Framebuffer for secondary command buffers</comment></member>
- <member><type>VkBool32</type> <name>occlusionQueryEnable</name><comment>Whether this secondary command buffer may be executed during an occlusion query</comment></member>
- <member optional="true" noautovalidity="true"><type>VkQueryControlFlags</type> <name>queryFlags</name><comment>Query flags used by this secondary command buffer, if executed during an occlusion query</comment></member>
- <member optional="true" noautovalidity="true"><type>VkQueryPipelineStatisticFlags</type> <name>pipelineStatistics</name><comment>Pipeline statistics that may be counted for this secondary command buffer</comment></member>
- </type>
- <type category="struct" name="VkCommandBufferBeginInfo">
- <member values="VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkCommandBufferUsageFlags</type> <name>flags</name><comment>Command buffer usage flags</comment></member>
- <member optional="true" noautovalidity="true">const <type>VkCommandBufferInheritanceInfo</type>* <name>pInheritanceInfo</name><comment>Pointer to inheritance info for secondary command buffers</comment></member>
- </type>
- <type category="struct" name="VkRenderPassBeginInfo">
- <member values="VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkRenderPass</type> <name>renderPass</name></member>
- <member><type>VkFramebuffer</type> <name>framebuffer</name></member>
- <member><type>VkRect2D</type> <name>renderArea</name></member>
- <member optional="true"><type>uint32_t</type> <name>clearValueCount</name></member>
- <member len="clearValueCount" noautovalidity="true">const <type>VkClearValue</type>* <name>pClearValues</name></member>
- </type>
- <type category="union" name="VkClearColorValue" comment="// Union allowing specification of floating point, integer, or unsigned integer color data. Actual value selected is based on image/attachment being cleared.">
- <member><type>float</type> <name>float32</name>[4]</member>
- <member><type>int32_t</type> <name>int32</name>[4]</member>
- <member><type>uint32_t</type> <name>uint32</name>[4]</member>
- </type>
- <type category="struct" name="VkClearDepthStencilValue">
- <member><type>float</type> <name>depth</name></member>
- <member><type>uint32_t</type> <name>stencil</name></member>
- </type>
- <type category="union" name="VkClearValue" comment="// Union allowing specification of color or depth and stencil values. Actual value selected is based on attachment being cleared.">
- <member noautovalidity="true"><type>VkClearColorValue</type> <name>color</name></member>
- <member><type>VkClearDepthStencilValue</type> <name>depthStencil</name></member>
- </type>
- <type category="struct" name="VkClearAttachment">
- <member><type>VkImageAspectFlags</type> <name>aspectMask</name></member>
- <member><type>uint32_t</type> <name>colorAttachment</name></member>
- <member noautovalidity="true"><type>VkClearValue</type> <name>clearValue</name></member>
- </type>
- <type category="struct" name="VkAttachmentDescription">
- <member optional="true"><type>VkAttachmentDescriptionFlags</type> <name>flags</name></member>
- <member><type>VkFormat</type> <name>format</name></member>
- <member><type>VkSampleCountFlagBits</type> <name>samples</name></member>
- <member><type>VkAttachmentLoadOp</type> <name>loadOp</name><comment>Load operation for color or depth data</comment></member>
- <member><type>VkAttachmentStoreOp</type> <name>storeOp</name><comment>Store operation for color or depth data</comment></member>
- <member><type>VkAttachmentLoadOp</type> <name>stencilLoadOp</name><comment>Load operation for stencil data</comment></member>
- <member><type>VkAttachmentStoreOp</type> <name>stencilStoreOp</name><comment>Store operation for stencil data</comment></member>
- <member><type>VkImageLayout</type> <name>initialLayout</name></member>
- <member><type>VkImageLayout</type> <name>finalLayout</name></member>
- </type>
- <type category="struct" name="VkAttachmentReference">
- <member><type>uint32_t</type> <name>attachment</name></member>
- <member><type>VkImageLayout</type> <name>layout</name></member>
- </type>
- <type category="struct" name="VkSubpassDescription">
- <member optional="true"><type>VkSubpassDescriptionFlags</type> <name>flags</name></member>
- <member><type>VkPipelineBindPoint</type> <name>pipelineBindPoint</name><comment>Must be VK_PIPELINE_BIND_POINT_GRAPHICS for now</comment></member>
- <member optional="true"><type>uint32_t</type> <name>inputAttachmentCount</name></member>
- <member len="inputAttachmentCount">const <type>VkAttachmentReference</type>* <name>pInputAttachments</name></member>
- <member optional="true"><type>uint32_t</type> <name>colorAttachmentCount</name></member>
- <member len="colorAttachmentCount">const <type>VkAttachmentReference</type>* <name>pColorAttachments</name></member>
- <member optional="true" len="colorAttachmentCount">const <type>VkAttachmentReference</type>* <name>pResolveAttachments</name></member>
- <member optional="true">const <type>VkAttachmentReference</type>* <name>pDepthStencilAttachment</name></member>
- <member optional="true"><type>uint32_t</type> <name>preserveAttachmentCount</name></member>
- <member len="preserveAttachmentCount">const <type>uint32_t</type>* <name>pPreserveAttachments</name></member>
- </type>
- <type category="struct" name="VkSubpassDependency">
- <member><type>uint32_t</type> <name>srcSubpass</name></member>
- <member><type>uint32_t</type> <name>dstSubpass</name></member>
- <member optional="true"><type>VkPipelineStageFlags</type> <name>srcStageMask</name></member>
- <member optional="true"><type>VkPipelineStageFlags</type> <name>dstStageMask</name></member>
- <member optional="true"><type>VkAccessFlags</type> <name>srcAccessMask</name><comment>Memory accesses from the source of the dependency to synchronize</comment></member>
- <member optional="true"><type>VkAccessFlags</type> <name>dstAccessMask</name><comment>Memory accesses from the destination of the dependency to synchronize</comment></member>
- <member optional="true"><type>VkDependencyFlags</type> <name>dependencyFlags</name></member>
- </type>
- <type category="struct" name="VkRenderPassCreateInfo">
- <member values="VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkRenderPassCreateFlags</type> <name>flags</name></member>
- <member optional="true"><type>uint32_t</type> <name>attachmentCount</name></member>
- <member len="attachmentCount">const <type>VkAttachmentDescription</type>* <name>pAttachments</name></member>
- <member><type>uint32_t</type> <name>subpassCount</name></member>
- <member len="subpassCount">const <type>VkSubpassDescription</type>* <name>pSubpasses</name></member>
- <member optional="true"><type>uint32_t</type> <name>dependencyCount</name></member>
- <member len="dependencyCount">const <type>VkSubpassDependency</type>* <name>pDependencies</name></member>
- </type>
- <type category="struct" name="VkEventCreateInfo">
- <member values="VK_STRUCTURE_TYPE_EVENT_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkEventCreateFlags</type> <name>flags</name><comment>Event creation flags</comment></member>
- </type>
- <type category="struct" name="VkFenceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_FENCE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkFenceCreateFlags</type> <name>flags</name><comment>Fence creation flags</comment></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceFeatures">
- <member><type>VkBool32</type> <name>robustBufferAccess</name><comment>out of bounds buffer accesses are well defined</comment></member>
- <member><type>VkBool32</type> <name>fullDrawIndexUint32</name><comment>full 32-bit range of indices for indexed draw calls</comment></member>
- <member><type>VkBool32</type> <name>imageCubeArray</name><comment>image views which are arrays of cube maps</comment></member>
- <member><type>VkBool32</type> <name>independentBlend</name><comment>blending operations are controlled per-attachment</comment></member>
- <member><type>VkBool32</type> <name>geometryShader</name><comment>geometry stage</comment></member>
- <member><type>VkBool32</type> <name>tessellationShader</name><comment>tessellation control and evaluation stage</comment></member>
- <member><type>VkBool32</type> <name>sampleRateShading</name><comment>per-sample shading and interpolation</comment></member>
- <member><type>VkBool32</type> <name>dualSrcBlend</name><comment>blend operations which take two sources</comment></member>
- <member><type>VkBool32</type> <name>logicOp</name><comment>logic operations</comment></member>
- <member><type>VkBool32</type> <name>multiDrawIndirect</name><comment>multi draw indirect</comment></member>
- <member><type>VkBool32</type> <name>drawIndirectFirstInstance</name><comment>indirect draws can use non-zero firstInstance</comment></member>
- <member><type>VkBool32</type> <name>depthClamp</name><comment>depth clamping</comment></member>
- <member><type>VkBool32</type> <name>depthBiasClamp</name><comment>depth bias clamping</comment></member>
- <member><type>VkBool32</type> <name>fillModeNonSolid</name><comment>point and wireframe fill modes</comment></member>
- <member><type>VkBool32</type> <name>depthBounds</name><comment>depth bounds test</comment></member>
- <member><type>VkBool32</type> <name>wideLines</name><comment>lines with width greater than 1</comment></member>
- <member><type>VkBool32</type> <name>largePoints</name><comment>points with size greater than 1</comment></member>
- <member><type>VkBool32</type> <name>alphaToOne</name><comment>the fragment alpha component can be forced to maximum representable alpha value</comment></member>
- <member><type>VkBool32</type> <name>multiViewport</name><comment>viewport arrays</comment></member>
- <member><type>VkBool32</type> <name>samplerAnisotropy</name><comment>anisotropic sampler filtering</comment></member>
- <member><type>VkBool32</type> <name>textureCompressionETC2</name><comment>ETC texture compression formats</comment></member>
- <member><type>VkBool32</type> <name>textureCompressionASTC_LDR</name><comment>ASTC LDR texture compression formats</comment></member>
- <member><type>VkBool32</type> <name>textureCompressionBC</name><comment>BC1-7 texture compressed formats</comment></member>
- <member><type>VkBool32</type> <name>occlusionQueryPrecise</name><comment>precise occlusion queries returning actual sample counts</comment></member>
- <member><type>VkBool32</type> <name>pipelineStatisticsQuery</name><comment>pipeline statistics query</comment></member>
- <member><type>VkBool32</type> <name>vertexPipelineStoresAndAtomics</name><comment>stores and atomic ops on storage buffers and images are supported in vertex, tessellation, and geometry stages</comment></member>
- <member><type>VkBool32</type> <name>fragmentStoresAndAtomics</name><comment>stores and atomic ops on storage buffers and images are supported in the fragment stage</comment></member>
- <member><type>VkBool32</type> <name>shaderTessellationAndGeometryPointSize</name><comment>tessellation and geometry stages can export point size</comment></member>
- <member><type>VkBool32</type> <name>shaderImageGatherExtended</name><comment>image gather with run-time values and independent offsets</comment></member>
- <member><type>VkBool32</type> <name>shaderStorageImageExtendedFormats</name><comment>the extended set of formats can be used for storage images</comment></member>
- <member><type>VkBool32</type> <name>shaderStorageImageMultisample</name><comment>multisample images can be used for storage images</comment></member>
- <member><type>VkBool32</type> <name>shaderStorageImageReadWithoutFormat</name><comment>read from storage image does not require format qualifier</comment></member>
- <member><type>VkBool32</type> <name>shaderStorageImageWriteWithoutFormat</name><comment>write to storage image does not require format qualifier</comment></member>
- <member><type>VkBool32</type> <name>shaderUniformBufferArrayDynamicIndexing</name><comment>arrays of uniform buffers can be accessed with dynamically uniform indices</comment></member>
- <member><type>VkBool32</type> <name>shaderSampledImageArrayDynamicIndexing</name><comment>arrays of sampled images can be accessed with dynamically uniform indices</comment></member>
- <member><type>VkBool32</type> <name>shaderStorageBufferArrayDynamicIndexing</name><comment>arrays of storage buffers can be accessed with dynamically uniform indices</comment></member>
- <member><type>VkBool32</type> <name>shaderStorageImageArrayDynamicIndexing</name><comment>arrays of storage images can be accessed with dynamically uniform indices</comment></member>
- <member><type>VkBool32</type> <name>shaderClipDistance</name><comment>clip distance in shaders</comment></member>
- <member><type>VkBool32</type> <name>shaderCullDistance</name><comment>cull distance in shaders</comment></member>
- <member><type>VkBool32</type> <name>shaderFloat64</name><comment>64-bit floats (doubles) in shaders</comment></member>
- <member><type>VkBool32</type> <name>shaderInt64</name><comment>64-bit integers in shaders</comment></member>
- <member><type>VkBool32</type> <name>shaderInt16</name><comment>16-bit integers in shaders</comment></member>
- <member><type>VkBool32</type> <name>shaderResourceResidency</name><comment>shader can use texture operations that return resource residency information (requires sparseNonResident support)</comment></member>
- <member><type>VkBool32</type> <name>shaderResourceMinLod</name><comment>shader can use texture operations that specify minimum resource LOD</comment></member>
- <member><type>VkBool32</type> <name>sparseBinding</name><comment>Sparse resources support: Resource memory can be managed at opaque page level rather than object level</comment></member>
- <member><type>VkBool32</type> <name>sparseResidencyBuffer</name><comment>Sparse resources support: GPU can access partially resident buffers </comment></member>
- <member><type>VkBool32</type> <name>sparseResidencyImage2D</name><comment>Sparse resources support: GPU can access partially resident 2D (non-MSAA non-depth/stencil) images </comment></member>
- <member><type>VkBool32</type> <name>sparseResidencyImage3D</name><comment>Sparse resources support: GPU can access partially resident 3D images </comment></member>
- <member><type>VkBool32</type> <name>sparseResidency2Samples</name><comment>Sparse resources support: GPU can access partially resident MSAA 2D images with 2 samples</comment></member>
- <member><type>VkBool32</type> <name>sparseResidency4Samples</name><comment>Sparse resources support: GPU can access partially resident MSAA 2D images with 4 samples</comment></member>
- <member><type>VkBool32</type> <name>sparseResidency8Samples</name><comment>Sparse resources support: GPU can access partially resident MSAA 2D images with 8 samples</comment></member>
- <member><type>VkBool32</type> <name>sparseResidency16Samples</name><comment>Sparse resources support: GPU can access partially resident MSAA 2D images with 16 samples</comment></member>
- <member><type>VkBool32</type> <name>sparseResidencyAliased</name><comment>Sparse resources support: GPU can correctly access data aliased into multiple locations (opt-in)</comment></member>
- <member><type>VkBool32</type> <name>variableMultisampleRate</name><comment>multisample rate must be the same for all pipelines in a subpass</comment></member>
- <member><type>VkBool32</type> <name>inheritedQueries</name><comment>Queries may be inherited from primary to secondary command buffers</comment></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceSparseProperties" returnedonly="true">
- <member limittype="bitmask"><type>VkBool32</type> <name>residencyStandard2DBlockShape</name><comment>Sparse resources support: GPU will access all 2D (single sample) sparse resources using the standard sparse image block shapes (based on pixel format)</comment></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>residencyStandard2DMultisampleBlockShape</name><comment>Sparse resources support: GPU will access all 2D (multisample) sparse resources using the standard sparse image block shapes (based on pixel format)</comment></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>residencyStandard3DBlockShape</name><comment>Sparse resources support: GPU will access all 3D sparse resources using the standard sparse image block shapes (based on pixel format)</comment></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>residencyAlignedMipSize</name><comment>Sparse resources support: Images with mip level dimensions that are NOT a multiple of the sparse image block dimensions will be placed in the mip tail</comment></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>residencyNonResidentStrict</name><comment>Sparse resources support: GPU can consistently access non-resident regions of a resource, all reads return as if data is 0, writes are discarded</comment></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceLimits" returnedonly="true">
- <comment>resource maximum sizes</comment>
- <member limittype="max"><type>uint32_t</type> <name>maxImageDimension1D</name><comment>max 1D image dimension</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>maxImageDimension2D</name><comment>max 2D image dimension</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>maxImageDimension3D</name><comment>max 3D image dimension</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>maxImageDimensionCube</name><comment>max cubemap image dimension</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>maxImageArrayLayers</name><comment>max layers for image arrays</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>maxTexelBufferElements</name><comment>max texel buffer size (fstexels)</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>maxUniformBufferRange</name><comment>max uniform buffer range (bytes)</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>maxStorageBufferRange</name><comment>max storage buffer range (bytes)</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>maxPushConstantsSize</name><comment>max size of the push constants pool (bytes)</comment></member>
- <comment>memory limits</comment>
- <member limittype="max"><type>uint32_t</type> <name>maxMemoryAllocationCount</name><comment>max number of device memory allocations supported</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>maxSamplerAllocationCount</name><comment>max number of samplers that can be allocated on a device</comment></member>
- <member limittype="noauto"><type>VkDeviceSize</type> <name>bufferImageGranularity</name><comment>Granularity (in bytes) at which buffers and images can be bound to adjacent memory for simultaneous usage</comment></member>
- <member limittype="max"><type>VkDeviceSize</type> <name>sparseAddressSpaceSize</name><comment>Total address space available for sparse allocations (bytes)</comment></member>
- <comment>descriptor set limits</comment>
- <member limittype="max"><type>uint32_t</type> <name>maxBoundDescriptorSets</name><comment>max number of descriptors sets that can be bound to a pipeline</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>maxPerStageDescriptorSamplers</name><comment>max number of samplers allowed per-stage in a descriptor set</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>maxPerStageDescriptorUniformBuffers</name><comment>max number of uniform buffers allowed per-stage in a descriptor set</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>maxPerStageDescriptorStorageBuffers</name><comment>max number of storage buffers allowed per-stage in a descriptor set</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>maxPerStageDescriptorSampledImages</name><comment>max number of sampled images allowed per-stage in a descriptor set</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>maxPerStageDescriptorStorageImages</name><comment>max number of storage images allowed per-stage in a descriptor set</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>maxPerStageDescriptorInputAttachments</name><comment>max number of input attachments allowed per-stage in a descriptor set</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>maxPerStageResources</name><comment>max number of resources allowed by a single stage</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>maxDescriptorSetSamplers</name><comment>max number of samplers allowed in all stages in a descriptor set</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>maxDescriptorSetUniformBuffers</name><comment>max number of uniform buffers allowed in all stages in a descriptor set</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>maxDescriptorSetUniformBuffersDynamic</name><comment>max number of dynamic uniform buffers allowed in all stages in a descriptor set</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>maxDescriptorSetStorageBuffers</name><comment>max number of storage buffers allowed in all stages in a descriptor set</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>maxDescriptorSetStorageBuffersDynamic</name><comment>max number of dynamic storage buffers allowed in all stages in a descriptor set</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>maxDescriptorSetSampledImages</name><comment>max number of sampled images allowed in all stages in a descriptor set</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>maxDescriptorSetStorageImages</name><comment>max number of storage images allowed in all stages in a descriptor set</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>maxDescriptorSetInputAttachments</name><comment>max number of input attachments allowed in all stages in a descriptor set</comment></member>
- <comment>vertex stage limits</comment>
- <member limittype="max"><type>uint32_t</type> <name>maxVertexInputAttributes</name><comment>max number of vertex input attribute slots</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>maxVertexInputBindings</name><comment>max number of vertex input binding slots</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>maxVertexInputAttributeOffset</name><comment>max vertex input attribute offset added to vertex buffer offset</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>maxVertexInputBindingStride</name><comment>max vertex input binding stride</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>maxVertexOutputComponents</name><comment>max number of output components written by vertex shader</comment></member>
- <comment>tessellation control stage limits</comment>
- <member limittype="max"><type>uint32_t</type> <name>maxTessellationGenerationLevel</name><comment>max level supported by tessellation primitive generator</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>maxTessellationPatchSize</name><comment>max patch size (vertices)</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>maxTessellationControlPerVertexInputComponents</name><comment>max number of input components per-vertex in TCS</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>maxTessellationControlPerVertexOutputComponents</name><comment>max number of output components per-vertex in TCS</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>maxTessellationControlPerPatchOutputComponents</name><comment>max number of output components per-patch in TCS</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>maxTessellationControlTotalOutputComponents</name><comment>max total number of per-vertex and per-patch output components in TCS</comment></member>
- <comment>tessellation evaluation stage limits</comment>
- <member limittype="max"><type>uint32_t</type> <name>maxTessellationEvaluationInputComponents</name><comment>max number of input components per vertex in TES</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>maxTessellationEvaluationOutputComponents</name><comment>max number of output components per vertex in TES</comment></member>
- <comment>geometry stage limits</comment>
- <member limittype="max"><type>uint32_t</type> <name>maxGeometryShaderInvocations</name><comment>max invocation count supported in geometry shader</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>maxGeometryInputComponents</name><comment>max number of input components read in geometry stage</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>maxGeometryOutputComponents</name><comment>max number of output components written in geometry stage</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>maxGeometryOutputVertices</name><comment>max number of vertices that can be emitted in geometry stage</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>maxGeometryTotalOutputComponents</name><comment>max total number of components (all vertices) written in geometry stage</comment></member>
- <comment>fragment stage limits</comment>
- <member limittype="max"><type>uint32_t</type> <name>maxFragmentInputComponents</name><comment>max number of input components read in fragment stage</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>maxFragmentOutputAttachments</name><comment>max number of output attachments written in fragment stage</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>maxFragmentDualSrcAttachments</name><comment>max number of output attachments written when using dual source blending</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>maxFragmentCombinedOutputResources</name><comment>max total number of storage buffers, storage images and output buffers</comment></member>
- <comment>compute stage limits</comment>
- <member limittype="max"><type>uint32_t</type> <name>maxComputeSharedMemorySize</name><comment>max total storage size of work group local storage (bytes)</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>maxComputeWorkGroupCount</name>[3]<comment>max num of compute work groups that may be dispatched by a single command (x,y,z)</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>maxComputeWorkGroupInvocations</name><comment>max total compute invocations in a single local work group</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>maxComputeWorkGroupSize</name>[3]<comment>max local size of a compute work group (x,y,z)</comment></member>
- <member limittype="noauto"><type>uint32_t</type> <name>subPixelPrecisionBits</name><comment>number bits of subpixel precision in screen x and y</comment></member>
- <member limittype="noauto"><type>uint32_t</type> <name>subTexelPrecisionBits</name><comment>number bits of precision for selecting texel weights</comment></member>
- <member limittype="noauto"><type>uint32_t</type> <name>mipmapPrecisionBits</name><comment>number bits of precision for selecting mipmap weights</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>maxDrawIndexedIndexValue</name><comment>max index value for indexed draw calls (for 32-bit indices)</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>maxDrawIndirectCount</name><comment>max draw count for indirect draw calls</comment></member>
- <member limittype="max"><type>float</type> <name>maxSamplerLodBias</name><comment>max absolute sampler LOD bias</comment></member>
- <member limittype="max"><type>float</type> <name>maxSamplerAnisotropy</name><comment>max degree of sampler anisotropy</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>maxViewports</name><comment>max number of active viewports</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>maxViewportDimensions</name>[2]<comment>max viewport dimensions (x,y)</comment></member>
- <member limittype="range"><type>float</type> <name>viewportBoundsRange</name>[2]<comment>viewport bounds range (min,max)</comment></member>
- <member limittype="noauto"><type>uint32_t</type> <name>viewportSubPixelBits</name><comment>number bits of subpixel precision for viewport</comment></member>
- <member limittype="noauto"><type>size_t</type> <name>minMemoryMapAlignment</name><comment>min required alignment of pointers returned by MapMemory (bytes)</comment></member>
- <member limittype="noauto"><type>VkDeviceSize</type> <name>minTexelBufferOffsetAlignment</name><comment>min required alignment for texel buffer offsets (bytes) </comment></member>
- <member limittype="noauto"><type>VkDeviceSize</type> <name>minUniformBufferOffsetAlignment</name><comment>min required alignment for uniform buffer sizes and offsets (bytes)</comment></member>
- <member limittype="noauto"><type>VkDeviceSize</type> <name>minStorageBufferOffsetAlignment</name><comment>min required alignment for storage buffer offsets (bytes)</comment></member>
- <member limittype="min"><type>int32_t</type> <name>minTexelOffset</name><comment>min texel offset for OpTextureSampleOffset</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>maxTexelOffset</name><comment>max texel offset for OpTextureSampleOffset</comment></member>
- <member limittype="min"><type>int32_t</type> <name>minTexelGatherOffset</name><comment>min texel offset for OpTextureGatherOffset</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>maxTexelGatherOffset</name><comment>max texel offset for OpTextureGatherOffset</comment></member>
- <member limittype="min"><type>float</type> <name>minInterpolationOffset</name><comment>furthest negative offset for interpolateAtOffset</comment></member>
- <member limittype="max"><type>float</type> <name>maxInterpolationOffset</name><comment>furthest positive offset for interpolateAtOffset</comment></member>
- <member limittype="noauto"><type>uint32_t</type> <name>subPixelInterpolationOffsetBits</name><comment>number of subpixel bits for interpolateAtOffset</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>maxFramebufferWidth</name><comment>max width for a framebuffer</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>maxFramebufferHeight</name><comment>max height for a framebuffer</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>maxFramebufferLayers</name><comment>max layer count for a layered framebuffer</comment></member>
- <member limittype="bitmask" optional="true"><type>VkSampleCountFlags</type> <name>framebufferColorSampleCounts</name><comment>supported color sample counts for a framebuffer</comment></member>
- <member limittype="bitmask" optional="true"><type>VkSampleCountFlags</type> <name>framebufferDepthSampleCounts</name><comment>supported depth sample counts for a framebuffer</comment></member>
- <member limittype="bitmask" optional="true"><type>VkSampleCountFlags</type> <name>framebufferStencilSampleCounts</name><comment>supported stencil sample counts for a framebuffer</comment></member>
- <member limittype="bitmask" optional="true"><type>VkSampleCountFlags</type> <name>framebufferNoAttachmentsSampleCounts</name><comment>supported sample counts for a subpass which uses no attachments</comment></member>
- <member limittype="bitmask"><type>uint32_t</type> <name>maxColorAttachments</name><comment>max number of color attachments per subpass</comment></member>
- <member limittype="bitmask" optional="true"><type>VkSampleCountFlags</type> <name>sampledImageColorSampleCounts</name><comment>supported color sample counts for a non-integer sampled image</comment></member>
- <member limittype="bitmask" optional="true"><type>VkSampleCountFlags</type> <name>sampledImageIntegerSampleCounts</name><comment>supported sample counts for an integer image</comment></member>
- <member limittype="bitmask" optional="true"><type>VkSampleCountFlags</type> <name>sampledImageDepthSampleCounts</name><comment>supported depth sample counts for a sampled image</comment></member>
- <member limittype="bitmask" optional="true"><type>VkSampleCountFlags</type> <name>sampledImageStencilSampleCounts</name><comment>supported stencil sample counts for a sampled image</comment></member>
- <member limittype="bitmask" optional="true"><type>VkSampleCountFlags</type> <name>storageImageSampleCounts</name><comment>supported sample counts for a storage image</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>maxSampleMaskWords</name><comment>max number of sample mask words</comment></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>timestampComputeAndGraphics</name><comment>timestamps on graphics and compute queues</comment></member>
- <member limittype="noauto"><type>float</type> <name>timestampPeriod</name><comment>number of nanoseconds it takes for timestamp query value to increment by 1</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>maxClipDistances</name><comment>max number of clip distances</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>maxCullDistances</name><comment>max number of cull distances</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>maxCombinedClipAndCullDistances</name><comment>max combined number of user clipping</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>discreteQueuePriorities</name><comment>distinct queue priorities available </comment></member>
- <member limittype="range"><type>float</type> <name>pointSizeRange</name>[2]<comment>range (min,max) of supported point sizes</comment></member>
- <member limittype="range"><type>float</type> <name>lineWidthRange</name>[2]<comment>range (min,max) of supported line widths</comment></member>
- <member limittype="max"><type>float</type> <name>pointSizeGranularity</name><comment>granularity of supported point sizes</comment></member>
- <member limittype="max"><type>float</type> <name>lineWidthGranularity</name><comment>granularity of supported line widths</comment></member>
- <member limittype="noauto"><type>VkBool32</type> <name>strictLines</name><comment>line rasterization follows preferred rules</comment></member>
- <member limittype="noauto"><type>VkBool32</type> <name>standardSampleLocations</name><comment>supports standard sample locations for all supported sample counts</comment></member>
- <member limittype="noauto"><type>VkDeviceSize</type> <name>optimalBufferCopyOffsetAlignment</name><comment>optimal offset of buffer copies</comment></member>
- <member limittype="noauto"><type>VkDeviceSize</type> <name>optimalBufferCopyRowPitchAlignment</name><comment>optimal pitch of buffer copies</comment></member>
- <member limittype="noauto"><type>VkDeviceSize</type> <name>nonCoherentAtomSize</name><comment>minimum size and alignment for non-coherent host-mapped device memory access</comment></member>
- </type>
- <type category="struct" name="VkSemaphoreCreateInfo">
- <member values="VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkSemaphoreCreateFlags</type> <name>flags</name><comment>Semaphore creation flags</comment></member>
- </type>
- <type category="struct" name="VkQueryPoolCreateInfo">
- <member values="VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkQueryPoolCreateFlags</type> <name>flags</name></member>
- <member><type>VkQueryType</type> <name>queryType</name></member>
- <member><type>uint32_t</type> <name>queryCount</name></member>
- <member optional="true" noautovalidity="true"><type>VkQueryPipelineStatisticFlags</type> <name>pipelineStatistics</name><comment>Optional</comment></member>
- </type>
- <type category="struct" name="VkFramebufferCreateInfo">
- <member values="VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkFramebufferCreateFlags</type> <name>flags</name></member>
- <member><type>VkRenderPass</type> <name>renderPass</name></member>
- <member optional="true"><type>uint32_t</type> <name>attachmentCount</name></member>
- <member len="attachmentCount"
- filterVar="flags"
- filterFunc="(eq (bitwise_and flags VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT) 0)">
- const <type>VkImageView</type>* <name>pAttachments</name></member>
- <member><type>uint32_t</type> <name>width</name></member>
- <member><type>uint32_t</type> <name>height</name></member>
- <member><type>uint32_t</type> <name>layers</name></member>
- </type>
- <type category="struct" name="VkDrawIndirectCommand">
- <member><type>uint32_t</type> <name>vertexCount</name></member>
- <member><type>uint32_t</type> <name>instanceCount</name></member>
- <member><type>uint32_t</type> <name>firstVertex</name></member>
- <member noautovalidity="true"><type>uint32_t</type> <name>firstInstance</name></member>
- </type>
- <type category="struct" name="VkDrawIndexedIndirectCommand">
- <member><type>uint32_t</type> <name>indexCount</name></member>
- <member><type>uint32_t</type> <name>instanceCount</name></member>
- <member><type>uint32_t</type> <name>firstIndex</name></member>
- <member><type>int32_t</type> <name>vertexOffset</name></member>
- <member noautovalidity="true"><type>uint32_t</type> <name>firstInstance</name></member>
- </type>
- <type category="struct" name="VkDispatchIndirectCommand">
- <member noautovalidity="true"><type>uint32_t</type> <name>x</name></member>
- <member noautovalidity="true"><type>uint32_t</type> <name>y</name></member>
- <member noautovalidity="true"><type>uint32_t</type> <name>z</name></member>
- </type>
- <type category="struct" name="VkMultiDrawInfoEXT">
- <member><type>uint32_t</type> <name>firstVertex</name></member>
- <member><type>uint32_t</type> <name>vertexCount</name></member>
- </type>
- <type category="struct" name="VkMultiDrawIndexedInfoEXT">
- <member><type>uint32_t</type> <name>firstIndex</name></member>
- <member><type>uint32_t</type> <name>indexCount</name></member>
- <member><type>int32_t</type> <name>vertexOffset</name></member>
- </type>
- <type category="struct" name="VkSubmitInfo">
- <member values="VK_STRUCTURE_TYPE_SUBMIT_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>uint32_t</type> <name>waitSemaphoreCount</name></member>
- <member len="waitSemaphoreCount">const <type>VkSemaphore</type>* <name>pWaitSemaphores</name></member>
- <member len="waitSemaphoreCount">const <type>VkPipelineStageFlags</type>* <name>pWaitDstStageMask</name></member>
- <member optional="true"><type>uint32_t</type> <name>commandBufferCount</name></member>
- <member len="commandBufferCount">const <type>VkCommandBuffer</type>* <name>pCommandBuffers</name></member>
- <member optional="true"><type>uint32_t</type> <name>signalSemaphoreCount</name></member>
- <member len="signalSemaphoreCount">const <type>VkSemaphore</type>* <name>pSignalSemaphores</name></member>
- </type>
- <comment>WSI extensions</comment>
- <type category="struct" name="VkDisplayPropertiesKHR" returnedonly="true">
- <member><type>VkDisplayKHR</type> <name>display</name><comment>Handle of the display object</comment></member>
- <member len="null-terminated">const <type>char</type>* <name>displayName</name><comment>Name of the display</comment></member>
- <member><type>VkExtent2D</type> <name>physicalDimensions</name><comment>In millimeters?</comment></member>
- <member><type>VkExtent2D</type> <name>physicalResolution</name><comment>Max resolution for CRT?</comment></member>
- <member optional="true"><type>VkSurfaceTransformFlagsKHR</type> <name>supportedTransforms</name><comment>one or more bits from VkSurfaceTransformFlagsKHR</comment></member>
- <member><type>VkBool32</type> <name>planeReorderPossible</name><comment>VK_TRUE if the overlay plane's z-order can be changed on this display.</comment></member>
- <member><type>VkBool32</type> <name>persistentContent</name><comment>VK_TRUE if this is a "smart" display that supports self-refresh/internal buffering.</comment></member>
- </type>
- <type category="struct" name="VkDisplayPlanePropertiesKHR" returnedonly="true">
- <member><type>VkDisplayKHR</type> <name>currentDisplay</name><comment>Display the plane is currently associated with. Will be VK_NULL_HANDLE if the plane is not in use.</comment></member>
- <member><type>uint32_t</type> <name>currentStackIndex</name><comment>Current z-order of the plane.</comment></member>
- </type>
- <type category="struct" name="VkDisplayModeParametersKHR">
- <member><type>VkExtent2D</type> <name>visibleRegion</name><comment>Visible scanout region.</comment></member>
- <member noautovalidity="true"><type>uint32_t</type> <name>refreshRate</name><comment>Number of times per second the display is updated.</comment></member>
- </type>
- <type category="struct" name="VkDisplayModePropertiesKHR" returnedonly="true">
- <member><type>VkDisplayModeKHR</type> <name>displayMode</name><comment>Handle of this display mode.</comment></member>
- <member><type>VkDisplayModeParametersKHR</type> <name>parameters</name><comment>The parameters this mode uses.</comment></member>
- </type>
- <type category="struct" name="VkDisplayModeCreateInfoKHR">
- <member values="VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkDisplayModeCreateFlagsKHR</type> <name>flags</name></member>
- <member><type>VkDisplayModeParametersKHR</type> <name>parameters</name><comment>The parameters this mode uses.</comment></member>
- </type>
- <type category="struct" name="VkDisplayPlaneCapabilitiesKHR" returnedonly="true">
- <member optional="true"><type>VkDisplayPlaneAlphaFlagsKHR</type> <name>supportedAlpha</name><comment>Types of alpha blending supported, if any.</comment></member>
- <member><type>VkOffset2D</type> <name>minSrcPosition</name><comment>Does the plane have any position and extent restrictions?</comment></member>
- <member><type>VkOffset2D</type> <name>maxSrcPosition</name></member>
- <member><type>VkExtent2D</type> <name>minSrcExtent</name></member>
- <member><type>VkExtent2D</type> <name>maxSrcExtent</name></member>
- <member><type>VkOffset2D</type> <name>minDstPosition</name></member>
- <member><type>VkOffset2D</type> <name>maxDstPosition</name></member>
- <member><type>VkExtent2D</type> <name>minDstExtent</name></member>
- <member><type>VkExtent2D</type> <name>maxDstExtent</name></member>
- </type>
- <type category="struct" name="VkDisplaySurfaceCreateInfoKHR">
- <member values="VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkDisplaySurfaceCreateFlagsKHR</type> <name>flags</name></member>
- <member><type>VkDisplayModeKHR</type> <name>displayMode</name><comment>The mode to use when displaying this surface</comment></member>
- <member><type>uint32_t</type> <name>planeIndex</name><comment>The plane on which this surface appears. Must be between 0 and the value returned by vkGetPhysicalDeviceDisplayPlanePropertiesKHR() in pPropertyCount.</comment></member>
- <member><type>uint32_t</type> <name>planeStackIndex</name><comment>The z-order of the plane.</comment></member>
- <member><type>VkSurfaceTransformFlagBitsKHR</type> <name>transform</name><comment>Transform to apply to the images as part of the scanout operation</comment></member>
- <member><type>float</type> <name>globalAlpha</name><comment>Global alpha value. Must be between 0 and 1, inclusive. Ignored if alphaMode is not VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR</comment></member>
- <member><type>VkDisplayPlaneAlphaFlagBitsKHR</type> <name>alphaMode</name><comment>What type of alpha blending to use. Must be a bit from vkGetDisplayPlanePropertiesKHR::supportedAlpha.</comment></member>
- <member><type>VkExtent2D</type> <name>imageExtent</name><comment>size of the images to use with this surface</comment></member>
- </type>
- <type category="struct" name="VkDisplayPresentInfoKHR" structextends="VkPresentInfoKHR">
- <member values="VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkRect2D</type> <name>srcRect</name><comment>Rectangle within the presentable image to read pixel data from when presenting to the display.</comment></member>
- <member><type>VkRect2D</type> <name>dstRect</name><comment>Rectangle within the current display mode's visible region to display srcRectangle in.</comment></member>
- <member><type>VkBool32</type> <name>persistent</name><comment>For smart displays, use buffered mode. If the display properties member "persistentMode" is VK_FALSE, this member must always be VK_FALSE.</comment></member>
- </type>
- <type category="struct" name="VkSurfaceCapabilitiesKHR" returnedonly="true">
- <member><type>uint32_t</type> <name>minImageCount</name><comment>Supported minimum number of images for the surface</comment></member>
- <member><type>uint32_t</type> <name>maxImageCount</name><comment>Supported maximum number of images for the surface, 0 for unlimited</comment></member>
- <member><type>VkExtent2D</type> <name>currentExtent</name><comment>Current image width and height for the surface, (0, 0) if undefined</comment></member>
- <member><type>VkExtent2D</type> <name>minImageExtent</name><comment>Supported minimum image width and height for the surface</comment></member>
- <member><type>VkExtent2D</type> <name>maxImageExtent</name><comment>Supported maximum image width and height for the surface</comment></member>
- <member><type>uint32_t</type> <name>maxImageArrayLayers</name><comment>Supported maximum number of image layers for the surface</comment></member>
- <member><type>VkSurfaceTransformFlagsKHR</type> <name>supportedTransforms</name><comment>1 or more bits representing the transforms supported</comment></member>
- <member><type>VkSurfaceTransformFlagBitsKHR</type> <name>currentTransform</name><comment>The surface's current transform relative to the device's natural orientation</comment></member>
- <member><type>VkCompositeAlphaFlagsKHR</type> <name>supportedCompositeAlpha</name><comment>1 or more bits representing the alpha compositing modes supported</comment></member>
- <member><type>VkImageUsageFlags</type> <name>supportedUsageFlags</name><comment>Supported image usage flags for the surface</comment></member>
- </type>
- <type category="struct" name="VkAndroidSurfaceCreateInfoKHR">
- <member values="VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkAndroidSurfaceCreateFlagsKHR</type> <name>flags</name></member>
- <member noautovalidity="true">struct <type>ANativeWindow</type>* <name>window</name></member>
- </type>
- <type category="struct" name="VkViSurfaceCreateInfoNN">
- <member values="VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkViSurfaceCreateFlagsNN</type> <name>flags</name></member>
- <member noautovalidity="true"><type>void</type>* <name>window</name></member>
- </type>
- <type category="struct" name="VkWaylandSurfaceCreateInfoKHR">
- <member values="VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkWaylandSurfaceCreateFlagsKHR</type> <name>flags</name></member>
- <member noautovalidity="true">struct <type>wl_display</type>* <name>display</name></member>
- <member noautovalidity="true">struct <type>wl_surface</type>* <name>surface</name></member>
- </type>
- <type category="struct" name="VkWin32SurfaceCreateInfoKHR">
- <member values="VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkWin32SurfaceCreateFlagsKHR</type> <name>flags</name></member>
- <member><type>HINSTANCE</type> <name>hinstance</name></member>
- <member><type>HWND</type> <name>hwnd</name></member>
- </type>
- <type category="struct" name="VkXlibSurfaceCreateInfoKHR">
- <member values="VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkXlibSurfaceCreateFlagsKHR</type> <name>flags</name></member>
- <member noautovalidity="true"><type>Display</type>* <name>dpy</name></member>
- <member><type>Window</type> <name>window</name></member>
- </type>
- <type category="struct" name="VkXcbSurfaceCreateInfoKHR">
- <member values="VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkXcbSurfaceCreateFlagsKHR</type> <name>flags</name></member>
- <member noautovalidity="true"><type>xcb_connection_t</type>* <name>connection</name></member>
- <member><type>xcb_window_t</type> <name>window</name></member>
- </type>
- <type category="struct" name="VkDirectFBSurfaceCreateInfoEXT">
- <member values="VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkDirectFBSurfaceCreateFlagsEXT</type> <name>flags</name></member>
- <member noautovalidity="true"><type>IDirectFB</type>* <name>dfb</name></member>
- <member noautovalidity="true"><type>IDirectFBSurface</type>* <name>surface</name></member>
- </type>
- <type category="struct" name="VkImagePipeSurfaceCreateInfoFUCHSIA">
- <member values="VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkImagePipeSurfaceCreateFlagsFUCHSIA</type> <name>flags</name></member>
- <member><type>zx_handle_t</type> <name>imagePipeHandle</name></member>
- </type>
- <type category="struct" name="VkStreamDescriptorSurfaceCreateInfoGGP">
- <member values="VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkStreamDescriptorSurfaceCreateFlagsGGP</type> <name>flags</name></member>
- <member><type>GgpStreamDescriptor</type> <name>streamDescriptor</name></member>
- </type>
- <type category="struct" name="VkScreenSurfaceCreateInfoQNX">
- <member values="VK_STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkScreenSurfaceCreateFlagsQNX</type> <name>flags</name></member>
- <member noautovalidity="true">struct <type>_screen_context</type>* <name>context</name></member>
- <member noautovalidity="true">struct <type>_screen_window</type>* <name>window</name></member>
- </type>
- <type category="struct" name="VkSurfaceFormatKHR" returnedonly="true">
- <member><type>VkFormat</type> <name>format</name><comment>Supported pair of rendering format</comment></member>
- <member><type>VkColorSpaceKHR</type> <name>colorSpace</name><comment>and color space for the surface</comment></member>
- </type>
- <type category="struct" name="VkSwapchainCreateInfoKHR">
- <member values="VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkSwapchainCreateFlagsKHR</type> <name>flags</name></member>
- <member><type>VkSurfaceKHR</type> <name>surface</name><comment>The swapchain's target surface</comment></member>
- <member><type>uint32_t</type> <name>minImageCount</name><comment>Minimum number of presentation images the application needs</comment></member>
- <member><type>VkFormat</type> <name>imageFormat</name><comment>Format of the presentation images</comment></member>
- <member><type>VkColorSpaceKHR</type> <name>imageColorSpace</name><comment>Colorspace of the presentation images</comment></member>
- <member><type>VkExtent2D</type> <name>imageExtent</name><comment>Dimensions of the presentation images</comment></member>
- <member><type>uint32_t</type> <name>imageArrayLayers</name><comment>Determines the number of views for multiview/stereo presentation</comment></member>
- <member><type>VkImageUsageFlags</type> <name>imageUsage</name><comment>Bits indicating how the presentation images will be used</comment></member>
- <member><type>VkSharingMode</type> <name>imageSharingMode</name><comment>Sharing mode used for the presentation images</comment></member>
- <member optional="true"><type>uint32_t</type> <name>queueFamilyIndexCount</name><comment>Number of queue families having access to the images in case of concurrent sharing mode</comment></member>
- <member noautovalidity="true" len="queueFamilyIndexCount">const <type>uint32_t</type>* <name>pQueueFamilyIndices</name><comment>Array of queue family indices having access to the images in case of concurrent sharing mode</comment></member>
- <member><type>VkSurfaceTransformFlagBitsKHR</type> <name>preTransform</name><comment>The transform, relative to the device's natural orientation, applied to the image content prior to presentation</comment></member>
- <member><type>VkCompositeAlphaFlagBitsKHR</type> <name>compositeAlpha</name><comment>The alpha blending mode used when compositing this surface with other surfaces in the window system</comment></member>
- <member><type>VkPresentModeKHR</type> <name>presentMode</name><comment>Which presentation mode to use for presents on this swap chain</comment></member>
- <member><type>VkBool32</type> <name>clipped</name><comment>Specifies whether presentable images may be affected by window clip regions</comment></member>
- <member optional="true"><type>VkSwapchainKHR</type> <name>oldSwapchain</name><comment>Existing swap chain to replace, if any</comment></member>
- </type>
- <type category="struct" name="VkPresentInfoKHR">
- <member values="VK_STRUCTURE_TYPE_PRESENT_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>uint32_t</type> <name>waitSemaphoreCount</name><comment>Number of semaphores to wait for before presenting</comment></member>
- <member len="waitSemaphoreCount">const <type>VkSemaphore</type>* <name>pWaitSemaphores</name><comment>Semaphores to wait for before presenting</comment></member>
- <member><type>uint32_t</type> <name>swapchainCount</name><comment>Number of swapchains to present in this call</comment></member>
- <member len="swapchainCount">const <type>VkSwapchainKHR</type>* <name>pSwapchains</name><comment>Swapchains to present an image from</comment></member>
- <member len="swapchainCount">const <type>uint32_t</type>* <name>pImageIndices</name><comment>Indices of which presentable images to present</comment></member>
- <member optional="true" len="swapchainCount"><type>VkResult</type>* <name>pResults</name><comment>Optional (i.e. if non-NULL) VkResult for each swapchain</comment></member>
- </type>
- <type category="struct" name="VkDebugReportCallbackCreateInfoEXT" structextends="VkInstanceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkDebugReportFlagsEXT</type> <name>flags</name><comment>Indicates which events call this callback</comment></member>
- <member><type>PFN_vkDebugReportCallbackEXT</type> <name>pfnCallback</name><comment>Function pointer of a callback function</comment></member>
- <member optional="true"><type>void</type>* <name>pUserData</name><comment>User data provided to callback function</comment></member>
- </type>
- <type category="struct" name="VkValidationFlagsEXT" structextends="VkInstanceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT"><type>VkStructureType</type> <name>sType</name><comment>Must be VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT</comment></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>uint32_t</type> <name>disabledValidationCheckCount</name><comment>Number of validation checks to disable</comment></member>
- <member len="disabledValidationCheckCount">const <type>VkValidationCheckEXT</type>* <name>pDisabledValidationChecks</name><comment>Validation checks to disable</comment></member>
- </type>
- <type category="struct" name="VkValidationFeaturesEXT" structextends="VkInstanceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name><comment>Must be VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT</comment></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>uint32_t</type> <name>enabledValidationFeatureCount</name><comment>Number of validation features to enable</comment></member>
- <member len="enabledValidationFeatureCount">const <type>VkValidationFeatureEnableEXT</type>* <name>pEnabledValidationFeatures</name><comment>Validation features to enable</comment></member>
- <member optional="true"><type>uint32_t</type> <name>disabledValidationFeatureCount</name><comment>Number of validation features to disable</comment></member>
- <member len="disabledValidationFeatureCount">const <type>VkValidationFeatureDisableEXT</type>* <name>pDisabledValidationFeatures</name><comment>Validation features to disable</comment></member>
- </type>
- <type category="struct" name="VkPipelineRasterizationStateRasterizationOrderAMD" structextends="VkPipelineRasterizationStateCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkRasterizationOrderAMD</type> <name>rasterizationOrder</name><comment>Rasterization order to use for the pipeline</comment></member>
- </type>
- <type category="struct" name="VkDebugMarkerObjectNameInfoEXT">
- <member values="VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkDebugReportObjectTypeEXT</type> <name>objectType</name><comment>The type of the object</comment></member>
- <member objecttype="objectType"><type>uint64_t</type> <name>object</name><comment>The handle of the object, cast to uint64_t</comment></member>
- <member len="null-terminated">const <type>char</type>* <name>pObjectName</name><comment>Name to apply to the object</comment></member>
- </type>
- <type category="struct" name="VkDebugMarkerObjectTagInfoEXT">
- <member values="VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkDebugReportObjectTypeEXT</type> <name>objectType</name><comment>The type of the object</comment></member>
- <member objecttype="objectType"><type>uint64_t</type> <name>object</name><comment>The handle of the object, cast to uint64_t</comment></member>
- <member><type>uint64_t</type> <name>tagName</name><comment>The name of the tag to set on the object</comment></member>
- <member><type>size_t</type> <name>tagSize</name><comment>The length in bytes of the tag data</comment></member>
- <member len="tagSize">const <type>void</type>* <name>pTag</name><comment>Tag data to attach to the object</comment></member>
- </type>
- <type category="struct" name="VkDebugMarkerMarkerInfoEXT">
- <member values="VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member len="null-terminated">const <type>char</type>* <name>pMarkerName</name><comment>Name of the debug marker</comment></member>
- <member><type>float</type> <name>color</name>[4]<comment>Optional color for debug marker</comment></member>
- </type>
- <type category="struct" name="VkDedicatedAllocationImageCreateInfoNV" structextends="VkImageCreateInfo">
- <member values="VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>dedicatedAllocation</name><comment>Whether this image uses a dedicated allocation</comment></member>
- </type>
- <type category="struct" name="VkDedicatedAllocationBufferCreateInfoNV" structextends="VkBufferCreateInfo">
- <member values="VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>dedicatedAllocation</name><comment>Whether this buffer uses a dedicated allocation</comment></member>
- </type>
- <type category="struct" name="VkDedicatedAllocationMemoryAllocateInfoNV" structextends="VkMemoryAllocateInfo">
- <member values="VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkImage</type> <name>image</name><comment>Image that this allocation will be bound to</comment></member>
- <member optional="true"><type>VkBuffer</type> <name>buffer</name><comment>Buffer that this allocation will be bound to</comment></member>
- </type>
- <type category="struct" name="VkExternalImageFormatPropertiesNV" returnedonly="true">
- <member><type>VkImageFormatProperties</type> <name>imageFormatProperties</name></member>
- <member optional="true"><type>VkExternalMemoryFeatureFlagsNV</type> <name>externalMemoryFeatures</name></member>
- <member optional="true"><type>VkExternalMemoryHandleTypeFlagsNV</type> <name>exportFromImportedHandleTypes</name></member>
- <member optional="true"><type>VkExternalMemoryHandleTypeFlagsNV</type> <name>compatibleHandleTypes</name></member>
- </type>
- <type category="struct" name="VkExternalMemoryImageCreateInfoNV" structextends="VkImageCreateInfo">
- <member values="VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkExternalMemoryHandleTypeFlagsNV</type> <name>handleTypes</name></member>
- </type>
- <type category="struct" name="VkExportMemoryAllocateInfoNV" structextends="VkMemoryAllocateInfo">
- <member values="VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkExternalMemoryHandleTypeFlagsNV</type> <name>handleTypes</name></member>
- </type>
- <type category="struct" name="VkImportMemoryWin32HandleInfoNV" structextends="VkMemoryAllocateInfo">
- <member values="VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkExternalMemoryHandleTypeFlagsNV</type> <name>handleType</name></member>
- <member optional="true"><type>HANDLE</type> <name>handle</name></member>
- </type>
- <type category="struct" name="VkExportMemoryWin32HandleInfoNV" structextends="VkMemoryAllocateInfo">
- <member values="VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true">const <type>SECURITY_ATTRIBUTES</type>* <name>pAttributes</name></member>
- <member optional="true"><type>DWORD</type> <name>dwAccess</name></member>
- </type>
- <type category="struct" name="VkWin32KeyedMutexAcquireReleaseInfoNV" structextends="VkSubmitInfo,VkSubmitInfo2KHR">
- <member values="VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>uint32_t</type> <name>acquireCount</name></member>
- <member len="acquireCount" devicememoryhandle="1">const <type>VkDeviceMemory</type>* <name>pAcquireSyncs</name></member>
- <member len="acquireCount">const <type>uint64_t</type>* <name>pAcquireKeys</name></member>
- <member len="acquireCount">const <type>uint32_t</type>* <name>pAcquireTimeoutMilliseconds</name></member>
- <member optional="true"><type>uint32_t</type> <name>releaseCount</name></member>
- <member len="releaseCount" devicememoryhandle="1">const <type>VkDeviceMemory</type>* <name>pReleaseSyncs</name></member>
- <member len="releaseCount">const <type>uint64_t</type>* <name>pReleaseKeys</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>deviceGeneratedCommands</name></member>
- </type>
- <type category="struct" name="VkDevicePrivateDataCreateInfoEXT" allowduplicate="true" structextends="VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>uint32_t</type> <name>privateDataSlotRequestCount</name></member>
- </type>
- <type category="struct" name="VkPrivateDataSlotCreateInfoEXT">
- <member values="VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkPrivateDataSlotCreateFlagsEXT</type> <name>flags</name></member>
- </type>
- <type category="struct" name="VkPhysicalDevicePrivateDataFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>privateData</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV" structextends="VkPhysicalDeviceProperties2" returnedonly="true">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxGraphicsShaderGroupCount</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxIndirectSequenceCount</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxIndirectCommandsTokenCount</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxIndirectCommandsStreamCount</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxIndirectCommandsTokenOffset</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxIndirectCommandsStreamStride</name></member>
- <member limittype="noauto"><type>uint32_t</type> <name>minSequencesCountBufferOffsetAlignment</name></member>
- <member limittype="noauto"><type>uint32_t</type> <name>minSequencesIndexBufferOffsetAlignment</name></member>
- <member limittype="noauto"><type>uint32_t</type> <name>minIndirectCommandsBufferOffsetAlignment</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceMultiDrawPropertiesEXT" structextends="VkPhysicalDeviceProperties2" returnedonly="true">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxMultiDrawCount</name></member>
- </type>
- <type category="struct" name="VkGraphicsShaderGroupCreateInfoNV">
- <member values="VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>uint32_t</type> <name>stageCount</name></member>
- <member len="stageCount">const <type>VkPipelineShaderStageCreateInfo</type>* <name>pStages</name></member>
- <member noautovalidity="true" optional="true">const <type>VkPipelineVertexInputStateCreateInfo</type>* <name>pVertexInputState</name></member>
- <member noautovalidity="true" optional="true">const <type>VkPipelineTessellationStateCreateInfo</type>* <name>pTessellationState</name></member>
- </type>
- <type category="struct" name="VkGraphicsPipelineShaderGroupsCreateInfoNV" structextends="VkGraphicsPipelineCreateInfo">
- <member values="VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>uint32_t</type> <name>groupCount</name></member>
- <member len="groupCount">const <type>VkGraphicsShaderGroupCreateInfoNV</type>* <name>pGroups</name></member>
- <member optional="true"><type>uint32_t</type> <name>pipelineCount</name></member>
- <member len="pipelineCount">const <type>VkPipeline</type>* <name>pPipelines</name></member>
- </type>
- <type category="struct" name="VkBindShaderGroupIndirectCommandNV">
- <member><type>uint32_t</type> <name>groupIndex</name></member>
- </type>
- <type category="struct" name="VkBindIndexBufferIndirectCommandNV">
- <member><type>VkDeviceAddress</type> <name>bufferAddress</name></member>
- <member><type>uint32_t</type> <name>size</name></member>
- <member><type>VkIndexType</type> <name>indexType</name></member>
- </type>
- <type category="struct" name="VkBindVertexBufferIndirectCommandNV">
- <member><type>VkDeviceAddress</type> <name>bufferAddress</name></member>
- <member><type>uint32_t</type> <name>size</name></member>
- <member><type>uint32_t</type> <name>stride</name></member>
- </type>
- <type category="struct" name="VkSetStateFlagsIndirectCommandNV">
- <member><type>uint32_t</type> <name>data</name></member>
- </type>
- <type category="struct" name="VkIndirectCommandsStreamNV">
- <member><type>VkBuffer</type> <name>buffer</name></member>
- <member><type>VkDeviceSize</type> <name>offset</name></member>
- </type>
- <type category="struct" name="VkIndirectCommandsLayoutTokenNV">
- <member values="VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkIndirectCommandsTokenTypeNV</type> <name>tokenType</name></member>
- <member><type>uint32_t</type> <name>stream</name></member>
- <member><type>uint32_t</type> <name>offset</name></member>
- <member><type>uint32_t</type> <name>vertexBindingUnit</name></member>
- <member><type>VkBool32</type> <name>vertexDynamicStride</name></member>
- <member optional="true"><type>VkPipelineLayout</type> <name>pushconstantPipelineLayout</name></member>
- <member optional="true"><type>VkShaderStageFlags</type> <name>pushconstantShaderStageFlags</name></member>
- <member><type>uint32_t</type> <name>pushconstantOffset</name></member>
- <member><type>uint32_t</type> <name>pushconstantSize</name></member>
- <member optional="true"><type>VkIndirectStateFlagsNV</type> <name>indirectStateFlags</name></member>
- <member optional="true"><type>uint32_t</type> <name>indexTypeCount</name></member>
- <member len="indexTypeCount">const <type>VkIndexType</type>* <name>pIndexTypes</name></member>
- <member len="indexTypeCount">const <type>uint32_t</type>* <name>pIndexTypeValues</name></member>
- </type>
- <type category="struct" name="VkIndirectCommandsLayoutCreateInfoNV">
- <member values="VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkIndirectCommandsLayoutUsageFlagsNV</type> <name>flags</name></member>
- <member><type>VkPipelineBindPoint</type> <name>pipelineBindPoint</name></member>
- <member><type>uint32_t</type> <name>tokenCount</name></member>
- <member len="tokenCount">const <type>VkIndirectCommandsLayoutTokenNV</type>* <name>pTokens</name></member>
- <member><type>uint32_t</type> <name>streamCount</name></member>
- <member len="streamCount">const <type>uint32_t</type>* <name>pStreamStrides</name></member>
- </type>
- <type category="struct" name="VkGeneratedCommandsInfoNV">
- <member values="VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkPipelineBindPoint</type> <name>pipelineBindPoint</name></member>
- <member><type>VkPipeline</type> <name>pipeline</name></member>
- <member><type>VkIndirectCommandsLayoutNV</type> <name>indirectCommandsLayout</name></member>
- <member><type>uint32_t</type> <name>streamCount</name></member>
- <member len="streamCount">const <type>VkIndirectCommandsStreamNV</type>* <name>pStreams</name></member>
- <member><type>uint32_t</type> <name>sequencesCount</name></member>
- <member><type>VkBuffer</type> <name>preprocessBuffer</name></member>
- <member><type>VkDeviceSize</type> <name>preprocessOffset</name></member>
- <member><type>VkDeviceSize</type> <name>preprocessSize</name></member>
- <member optional="true"><type>VkBuffer</type> <name>sequencesCountBuffer</name></member>
- <member><type>VkDeviceSize</type> <name>sequencesCountOffset</name></member>
- <member optional="true"><type>VkBuffer</type> <name>sequencesIndexBuffer</name></member>
- <member><type>VkDeviceSize</type> <name>sequencesIndexOffset</name></member>
- </type>
- <type category="struct" name="VkGeneratedCommandsMemoryRequirementsInfoNV">
- <member values="VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkPipelineBindPoint</type> <name>pipelineBindPoint</name></member>
- <member><type>VkPipeline</type> <name>pipeline</name></member>
- <member><type>VkIndirectCommandsLayoutNV</type> <name>indirectCommandsLayout</name></member>
- <member><type>uint32_t</type> <name>maxSequencesCount</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceFeatures2" structextends="VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkPhysicalDeviceFeatures</type> <name>features</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceFeatures2KHR" alias="VkPhysicalDeviceFeatures2"/>
- <type category="struct" name="VkPhysicalDeviceProperties2" returnedonly="true">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member limittype="struct"><type>VkPhysicalDeviceProperties</type> <name>properties</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceProperties2KHR" alias="VkPhysicalDeviceProperties2"/>
- <type category="struct" name="VkFormatProperties2" returnedonly="true">
- <member values="VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkFormatProperties</type> <name>formatProperties</name></member>
- </type>
- <type category="struct" name="VkFormatProperties2KHR" alias="VkFormatProperties2"/>
- <type category="struct" name="VkImageFormatProperties2" returnedonly="true">
- <member values="VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkImageFormatProperties</type> <name>imageFormatProperties</name></member>
- </type>
- <type category="struct" name="VkImageFormatProperties2KHR" alias="VkImageFormatProperties2"/>
- <type category="struct" name="VkPhysicalDeviceImageFormatInfo2">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkFormat</type> <name>format</name></member>
- <member><type>VkImageType</type> <name>type</name></member>
- <member><type>VkImageTiling</type> <name>tiling</name></member>
- <member><type>VkImageUsageFlags</type> <name>usage</name></member>
- <member optional="true"><type>VkImageCreateFlags</type> <name>flags</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceImageFormatInfo2KHR" alias="VkPhysicalDeviceImageFormatInfo2"/>
- <type category="struct" name="VkQueueFamilyProperties2" returnedonly="true">
- <member values="VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkQueueFamilyProperties</type> <name>queueFamilyProperties</name></member>
- </type>
- <type category="struct" name="VkQueueFamilyProperties2KHR" alias="VkQueueFamilyProperties2"/>
- <type category="struct" name="VkPhysicalDeviceMemoryProperties2" returnedonly="true">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkPhysicalDeviceMemoryProperties</type> <name>memoryProperties</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceMemoryProperties2KHR" alias="VkPhysicalDeviceMemoryProperties2"/>
- <type category="struct" name="VkSparseImageFormatProperties2" returnedonly="true">
- <member values="VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkSparseImageFormatProperties</type> <name>properties</name></member>
- </type>
- <type category="struct" name="VkSparseImageFormatProperties2KHR" alias="VkSparseImageFormatProperties2"/>
- <type category="struct" name="VkPhysicalDeviceSparseImageFormatInfo2">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkFormat</type> <name>format</name></member>
- <member><type>VkImageType</type> <name>type</name></member>
- <member><type>VkSampleCountFlagBits</type> <name>samples</name></member>
- <member><type>VkImageUsageFlags</type> <name>usage</name></member>
- <member><type>VkImageTiling</type> <name>tiling</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceSparseImageFormatInfo2KHR" alias="VkPhysicalDeviceSparseImageFormatInfo2"/>
- <type category="struct" name="VkPhysicalDevicePushDescriptorPropertiesKHR" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxPushDescriptors</name></member>
- </type>
- <type category="struct" name="VkConformanceVersion">
- <member><type>uint8_t</type> <name>major</name></member>
- <member><type>uint8_t</type> <name>minor</name></member>
- <member><type>uint8_t</type> <name>subminor</name></member>
- <member><type>uint8_t</type> <name>patch</name></member>
- </type>
- <type category="struct" name="VkConformanceVersionKHR" alias="VkConformanceVersion"/>
- <type category="struct" name="VkPhysicalDeviceDriverProperties" structextends="VkPhysicalDeviceProperties2" returnedonly="true">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member limittype="noauto"><type>VkDriverId</type> <name>driverID</name></member>
- <member limittype="noauto"><type>char</type> <name>driverName</name>[<enum>VK_MAX_DRIVER_NAME_SIZE</enum>]</member>
- <member limittype="noauto"><type>char</type> <name>driverInfo</name>[<enum>VK_MAX_DRIVER_INFO_SIZE</enum>]</member>
- <member limittype="noauto"><type>VkConformanceVersion</type> <name>conformanceVersion</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceDriverPropertiesKHR" alias="VkPhysicalDeviceDriverProperties"/>
- <type category="struct" name="VkPresentRegionsKHR" structextends="VkPresentInfoKHR">
- <member values="VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>uint32_t</type> <name>swapchainCount</name><comment>Copy of VkPresentInfoKHR::swapchainCount</comment></member>
- <member len="swapchainCount" optional="true">const <type>VkPresentRegionKHR</type>* <name>pRegions</name><comment>The regions that have changed</comment></member>
- </type>
- <type category="struct" name="VkPresentRegionKHR">
- <member optional="true"><type>uint32_t</type> <name>rectangleCount</name><comment>Number of rectangles in pRectangles</comment></member>
- <member optional="true" len="rectangleCount">const <type>VkRectLayerKHR</type>* <name>pRectangles</name><comment>Array of rectangles that have changed in a swapchain's image(s)</comment></member>
- </type>
- <type category="struct" name="VkRectLayerKHR">
- <member><type>VkOffset2D</type> <name>offset</name><comment>upper-left corner of a rectangle that has not changed, in pixels of a presentation images</comment></member>
- <member noautovalidity="true"><type>VkExtent2D</type> <name>extent</name><comment>Dimensions of a rectangle that has not changed, in pixels of a presentation images</comment></member>
- <member><type>uint32_t</type> <name>layer</name><comment>Layer of a swapchain's image(s), for stereoscopic-3D images</comment></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceVariablePointersFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>variablePointersStorageBuffer</name></member>
- <member><type>VkBool32</type> <name>variablePointers</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceVariablePointersFeaturesKHR" alias="VkPhysicalDeviceVariablePointersFeatures"/>
- <type category="struct" name="VkPhysicalDeviceVariablePointerFeaturesKHR" alias="VkPhysicalDeviceVariablePointersFeatures"/>
- <type category="struct" name="VkPhysicalDeviceVariablePointerFeatures" alias="VkPhysicalDeviceVariablePointersFeatures"/>
- <type category="struct" name="VkExternalMemoryProperties" returnedonly="true">
- <member><type>VkExternalMemoryFeatureFlags</type> <name>externalMemoryFeatures</name></member>
- <member optional="true"><type>VkExternalMemoryHandleTypeFlags</type> <name>exportFromImportedHandleTypes</name></member>
- <member><type>VkExternalMemoryHandleTypeFlags</type> <name>compatibleHandleTypes</name></member>
- </type>
- <type category="struct" name="VkExternalMemoryPropertiesKHR" alias="VkExternalMemoryProperties"/>
- <type category="struct" name="VkPhysicalDeviceExternalImageFormatInfo" structextends="VkPhysicalDeviceImageFormatInfo2">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkExternalMemoryHandleTypeFlagBits</type> <name>handleType</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceExternalImageFormatInfoKHR" alias="VkPhysicalDeviceExternalImageFormatInfo"/>
- <type category="struct" name="VkExternalImageFormatProperties" returnedonly="true" structextends="VkImageFormatProperties2">
- <member values="VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkExternalMemoryProperties</type> <name>externalMemoryProperties</name></member>
- </type>
- <type category="struct" name="VkExternalImageFormatPropertiesKHR" alias="VkExternalImageFormatProperties"/>
- <type category="struct" name="VkPhysicalDeviceExternalBufferInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkBufferCreateFlags</type> <name>flags</name></member>
- <member><type>VkBufferUsageFlags</type> <name>usage</name></member>
- <member><type>VkExternalMemoryHandleTypeFlagBits</type> <name>handleType</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceExternalBufferInfoKHR" alias="VkPhysicalDeviceExternalBufferInfo"/>
- <type category="struct" name="VkExternalBufferProperties" returnedonly="true">
- <member values="VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkExternalMemoryProperties</type> <name>externalMemoryProperties</name></member>
- </type>
- <type category="struct" name="VkExternalBufferPropertiesKHR" alias="VkExternalBufferProperties"/>
- <type category="struct" name="VkPhysicalDeviceIDProperties" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member limittype="noauto"><type>uint8_t</type> <name>deviceUUID</name>[<enum>VK_UUID_SIZE</enum>]</member>
- <member limittype="noauto"><type>uint8_t</type> <name>driverUUID</name>[<enum>VK_UUID_SIZE</enum>]</member>
- <member limittype="noauto"><type>uint8_t</type> <name>deviceLUID</name>[<enum>VK_LUID_SIZE</enum>]</member>
- <member limittype="noauto"><type>uint32_t</type> <name>deviceNodeMask</name></member>
- <member limittype="noauto"><type>VkBool32</type> <name>deviceLUIDValid</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceIDPropertiesKHR" alias="VkPhysicalDeviceIDProperties"/>
- <type category="struct" name="VkExternalMemoryImageCreateInfo" structextends="VkImageCreateInfo">
- <member values="VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkExternalMemoryHandleTypeFlags</type> <name>handleTypes</name></member>
- </type>
- <type category="struct" name="VkExternalMemoryImageCreateInfoKHR" alias="VkExternalMemoryImageCreateInfo"/>
- <type category="struct" name="VkExternalMemoryBufferCreateInfo" structextends="VkBufferCreateInfo">
- <member values="VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkExternalMemoryHandleTypeFlags</type> <name>handleTypes</name></member>
- </type>
- <type category="struct" name="VkExternalMemoryBufferCreateInfoKHR" alias="VkExternalMemoryBufferCreateInfo"/>
- <type category="struct" name="VkExportMemoryAllocateInfo" structextends="VkMemoryAllocateInfo">
- <member values="VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkExternalMemoryHandleTypeFlags</type> <name>handleTypes</name></member>
- </type>
- <type category="struct" name="VkExportMemoryAllocateInfoKHR" alias="VkExportMemoryAllocateInfo"/>
- <type category="struct" name="VkImportMemoryWin32HandleInfoKHR" structextends="VkMemoryAllocateInfo">
- <member values="VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkExternalMemoryHandleTypeFlagBits</type> <name>handleType</name></member>
- <member optional="true"><type>HANDLE</type> <name>handle</name></member>
- <member optional="true"><type>LPCWSTR</type> <name>name</name></member>
- </type>
- <type category="struct" name="VkExportMemoryWin32HandleInfoKHR" structextends="VkMemoryAllocateInfo">
- <member values="VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true">const <type>SECURITY_ATTRIBUTES</type>* <name>pAttributes</name></member>
- <member><type>DWORD</type> <name>dwAccess</name></member>
- <member><type>LPCWSTR</type> <name>name</name></member>
- </type>
- <type category="struct" name="VkImportMemoryZirconHandleInfoFUCHSIA" structextends="VkMemoryAllocateInfo">
- <member values="VK_STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkExternalMemoryHandleTypeFlagBits</type> <name>handleType</name></member>
- <member optional="true"><type>zx_handle_t</type> <name>handle</name></member>
- </type>
- <type category="struct" name="VkMemoryZirconHandlePropertiesFUCHSIA" returnedonly="true">
- <member values="VK_STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>uint32_t</type> <name>memoryTypeBits</name></member>
- </type>
- <type category="struct" name="VkMemoryGetZirconHandleInfoFUCHSIA">
- <member values="VK_STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkDeviceMemory</type> <name>memory</name></member>
- <member><type>VkExternalMemoryHandleTypeFlagBits</type> <name>handleType</name></member>
- </type>
- <type category="struct" name="VkMemoryWin32HandlePropertiesKHR" returnedonly="true">
- <member values="VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member devicememorytypebits="1"><type>uint32_t</type> <name>memoryTypeBits</name></member>
- </type>
- <type category="struct" name="VkMemoryGetWin32HandleInfoKHR">
- <member values="VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member devicememoryhandle="1"><type>VkDeviceMemory</type> <name>memory</name></member>
- <member><type>VkExternalMemoryHandleTypeFlagBits</type> <name>handleType</name></member>
- </type>
- <type category="struct" name="VkImportMemoryFdInfoKHR" structextends="VkMemoryAllocateInfo">
- <member values="VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkExternalMemoryHandleTypeFlagBits</type> <name>handleType</name></member>
- <member><type>int</type> <name>fd</name></member>
- </type>
- <type category="struct" name="VkMemoryFdPropertiesKHR" returnedonly="true">
- <member values="VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member devicememorytypebits="1"><type>uint32_t</type> <name>memoryTypeBits</name></member>
- </type>
- <type category="struct" name="VkMemoryGetFdInfoKHR">
- <member values="VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member devicememoryhandle="1"><type>VkDeviceMemory</type> <name>memory</name></member>
- <member><type>VkExternalMemoryHandleTypeFlagBits</type> <name>handleType</name></member>
- </type>
- <type category="struct" name="VkWin32KeyedMutexAcquireReleaseInfoKHR" structextends="VkSubmitInfo,VkSubmitInfo2KHR">
- <member values="VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>uint32_t</type> <name>acquireCount</name></member>
- <member len="acquireCount" devicememoryhandle="1">const <type>VkDeviceMemory</type>* <name>pAcquireSyncs</name></member>
- <member len="acquireCount">const <type>uint64_t</type>* <name>pAcquireKeys</name></member>
- <member len="acquireCount">const <type>uint32_t</type>* <name>pAcquireTimeouts</name></member>
- <member optional="true"><type>uint32_t</type> <name>releaseCount</name></member>
- <member len="releaseCount" devicememoryhandle="1">const <type>VkDeviceMemory</type>* <name>pReleaseSyncs</name></member>
- <member len="releaseCount">const <type>uint64_t</type>* <name>pReleaseKeys</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceExternalSemaphoreInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkExternalSemaphoreHandleTypeFlagBits</type> <name>handleType</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceExternalSemaphoreInfoKHR" alias="VkPhysicalDeviceExternalSemaphoreInfo"/>
- <type category="struct" name="VkExternalSemaphoreProperties" returnedonly="true">
- <member values="VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkExternalSemaphoreHandleTypeFlags</type> <name>exportFromImportedHandleTypes</name></member>
- <member><type>VkExternalSemaphoreHandleTypeFlags</type> <name>compatibleHandleTypes</name></member>
- <member optional="true"><type>VkExternalSemaphoreFeatureFlags</type> <name>externalSemaphoreFeatures</name></member>
- </type>
- <type category="struct" name="VkExternalSemaphorePropertiesKHR" alias="VkExternalSemaphoreProperties"/>
- <type category="struct" name="VkExportSemaphoreCreateInfo" structextends="VkSemaphoreCreateInfo">
- <member values="VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkExternalSemaphoreHandleTypeFlags</type> <name>handleTypes</name></member>
- </type>
- <type category="struct" name="VkExportSemaphoreCreateInfoKHR" alias="VkExportSemaphoreCreateInfo"/>
- <type category="struct" name="VkImportSemaphoreWin32HandleInfoKHR">
- <member values="VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member externsync="true"><type>VkSemaphore</type> <name>semaphore</name></member>
- <member optional="true"><type>VkSemaphoreImportFlags</type> <name>flags</name></member>
- <member noautovalidity="true"><type>VkExternalSemaphoreHandleTypeFlagBits</type> <name>handleType</name></member>
- <member optional="true"><type>HANDLE</type> <name>handle</name></member>
- <member optional="true"><type>LPCWSTR</type> <name>name</name></member>
- </type>
- <type category="struct" name="VkExportSemaphoreWin32HandleInfoKHR" structextends="VkSemaphoreCreateInfo">
- <member values="VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true">const <type>SECURITY_ATTRIBUTES</type>* <name>pAttributes</name></member>
- <member><type>DWORD</type> <name>dwAccess</name></member>
- <member><type>LPCWSTR</type> <name>name</name></member>
- </type>
- <type category="struct" name="VkD3D12FenceSubmitInfoKHR" structextends="VkSubmitInfo">
- <member values="VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>uint32_t</type> <name>waitSemaphoreValuesCount</name></member>
- <member optional="true" len="waitSemaphoreValuesCount">const <type>uint64_t</type>* <name>pWaitSemaphoreValues</name></member>
- <member optional="true"><type>uint32_t</type> <name>signalSemaphoreValuesCount</name></member>
- <member optional="true" len="signalSemaphoreValuesCount">const <type>uint64_t</type>* <name>pSignalSemaphoreValues</name></member>
- </type>
- <type category="struct" name="VkSemaphoreGetWin32HandleInfoKHR">
- <member values="VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkSemaphore</type> <name>semaphore</name></member>
- <member><type>VkExternalSemaphoreHandleTypeFlagBits</type> <name>handleType</name></member>
- </type>
- <type category="struct" name="VkImportSemaphoreFdInfoKHR">
- <member values="VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member externsync="true"><type>VkSemaphore</type> <name>semaphore</name></member>
- <member optional="true"><type>VkSemaphoreImportFlags</type> <name>flags</name></member>
- <member><type>VkExternalSemaphoreHandleTypeFlagBits</type> <name>handleType</name></member>
- <member><type>int</type> <name>fd</name></member>
- </type>
- <type category="struct" name="VkSemaphoreGetFdInfoKHR">
- <member values="VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkSemaphore</type> <name>semaphore</name></member>
- <member><type>VkExternalSemaphoreHandleTypeFlagBits</type> <name>handleType</name></member>
- </type>
- <type category="struct" name="VkImportSemaphoreZirconHandleInfoFUCHSIA">
- <member values="VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member externsync="true"><type>VkSemaphore</type> <name>semaphore</name></member>
- <member optional="true"><type>VkSemaphoreImportFlags</type> <name>flags</name></member>
- <member><type>VkExternalSemaphoreHandleTypeFlagBits</type> <name>handleType</name></member>
- <member><type>zx_handle_t</type> <name>zirconHandle</name></member>
- </type>
- <type category="struct" name="VkSemaphoreGetZirconHandleInfoFUCHSIA">
- <member values="VK_STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkSemaphore</type> <name>semaphore</name></member>
- <member><type>VkExternalSemaphoreHandleTypeFlagBits</type> <name>handleType</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceExternalFenceInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkExternalFenceHandleTypeFlagBits</type> <name>handleType</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceExternalFenceInfoKHR" alias="VkPhysicalDeviceExternalFenceInfo"/>
- <type category="struct" name="VkExternalFenceProperties" returnedonly="true">
- <member values="VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkExternalFenceHandleTypeFlags</type> <name>exportFromImportedHandleTypes</name></member>
- <member><type>VkExternalFenceHandleTypeFlags</type> <name>compatibleHandleTypes</name></member>
- <member optional="true"><type>VkExternalFenceFeatureFlags</type> <name>externalFenceFeatures</name></member>
- </type>
- <type category="struct" name="VkExternalFencePropertiesKHR" alias="VkExternalFenceProperties"/>
- <type category="struct" name="VkExportFenceCreateInfo" structextends="VkFenceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkExternalFenceHandleTypeFlags</type> <name>handleTypes</name></member>
- </type>
- <type category="struct" name="VkExportFenceCreateInfoKHR" alias="VkExportFenceCreateInfo"/>
- <type category="struct" name="VkImportFenceWin32HandleInfoKHR">
- <member values="VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member externsync="true"><type>VkFence</type> <name>fence</name></member>
- <member optional="true"><type>VkFenceImportFlags</type> <name>flags</name></member>
- <member noautovalidity="true"><type>VkExternalFenceHandleTypeFlagBits</type> <name>handleType</name></member>
- <member optional="true"><type>HANDLE</type> <name>handle</name></member>
- <member optional="true"><type>LPCWSTR</type> <name>name</name></member>
- </type>
- <type category="struct" name="VkExportFenceWin32HandleInfoKHR" structextends="VkFenceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true">const <type>SECURITY_ATTRIBUTES</type>* <name>pAttributes</name></member>
- <member><type>DWORD</type> <name>dwAccess</name></member>
- <member><type>LPCWSTR</type> <name>name</name></member>
- </type>
- <type category="struct" name="VkFenceGetWin32HandleInfoKHR">
- <member values="VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkFence</type> <name>fence</name></member>
- <member><type>VkExternalFenceHandleTypeFlagBits</type> <name>handleType</name></member>
- </type>
- <type category="struct" name="VkImportFenceFdInfoKHR">
- <member values="VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member externsync="true"><type>VkFence</type> <name>fence</name></member>
- <member optional="true"><type>VkFenceImportFlags</type> <name>flags</name></member>
- <member><type>VkExternalFenceHandleTypeFlagBits</type> <name>handleType</name></member>
- <member><type>int</type> <name>fd</name></member>
- </type>
- <type category="struct" name="VkFenceGetFdInfoKHR">
- <member values="VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkFence</type> <name>fence</name></member>
- <member><type>VkExternalFenceHandleTypeFlagBits</type> <name>handleType</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceMultiviewFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>multiview</name><comment>Multiple views in a renderpass</comment></member>
- <member><type>VkBool32</type> <name>multiviewGeometryShader</name><comment>Multiple views in a renderpass w/ geometry shader</comment></member>
- <member><type>VkBool32</type> <name>multiviewTessellationShader</name><comment>Multiple views in a renderpass w/ tessellation shader</comment></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceMultiviewFeaturesKHR" alias="VkPhysicalDeviceMultiviewFeatures"/>
- <type category="struct" name="VkPhysicalDeviceMultiviewProperties" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxMultiviewViewCount</name><comment>max number of views in a subpass</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>maxMultiviewInstanceIndex</name><comment>max instance index for a draw in a multiview subpass</comment></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceMultiviewPropertiesKHR" alias="VkPhysicalDeviceMultiviewProperties"/>
- <type category="struct" name="VkRenderPassMultiviewCreateInfo" structextends="VkRenderPassCreateInfo">
- <member values="VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>uint32_t</type> <name>subpassCount</name></member>
- <member len="subpassCount">const <type>uint32_t</type>* <name>pViewMasks</name></member>
- <member optional="true"><type>uint32_t</type> <name>dependencyCount</name></member>
- <member len="dependencyCount">const <type>int32_t</type>* <name>pViewOffsets</name></member>
- <member optional="true"><type>uint32_t</type> <name>correlationMaskCount</name></member>
- <member len="correlationMaskCount">const <type>uint32_t</type>* <name>pCorrelationMasks</name></member>
- </type>
- <type category="struct" name="VkRenderPassMultiviewCreateInfoKHR" alias="VkRenderPassMultiviewCreateInfo"/>
- <type category="struct" name="VkSurfaceCapabilities2EXT" returnedonly="true">
- <member values="VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>uint32_t</type> <name>minImageCount</name><comment>Supported minimum number of images for the surface</comment></member>
- <member><type>uint32_t</type> <name>maxImageCount</name><comment>Supported maximum number of images for the surface, 0 for unlimited</comment></member>
- <member><type>VkExtent2D</type> <name>currentExtent</name><comment>Current image width and height for the surface, (0, 0) if undefined</comment></member>
- <member><type>VkExtent2D</type> <name>minImageExtent</name><comment>Supported minimum image width and height for the surface</comment></member>
- <member><type>VkExtent2D</type> <name>maxImageExtent</name><comment>Supported maximum image width and height for the surface</comment></member>
- <member><type>uint32_t</type> <name>maxImageArrayLayers</name><comment>Supported maximum number of image layers for the surface</comment></member>
- <member><type>VkSurfaceTransformFlagsKHR</type> <name>supportedTransforms</name><comment>1 or more bits representing the transforms supported</comment></member>
- <member><type>VkSurfaceTransformFlagBitsKHR</type> <name>currentTransform</name><comment>The surface's current transform relative to the device's natural orientation</comment></member>
- <member><type>VkCompositeAlphaFlagsKHR</type> <name>supportedCompositeAlpha</name><comment>1 or more bits representing the alpha compositing modes supported</comment></member>
- <member><type>VkImageUsageFlags</type> <name>supportedUsageFlags</name><comment>Supported image usage flags for the surface</comment></member>
- <member optional="true"><type>VkSurfaceCounterFlagsEXT</type> <name>supportedSurfaceCounters</name></member>
- </type>
- <type category="struct" name="VkDisplayPowerInfoEXT">
- <member values="VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkDisplayPowerStateEXT</type> <name>powerState</name></member>
- </type>
- <type category="struct" name="VkDeviceEventInfoEXT">
- <member values="VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkDeviceEventTypeEXT</type> <name>deviceEvent</name></member>
- </type>
- <type category="struct" name="VkDisplayEventInfoEXT">
- <member values="VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkDisplayEventTypeEXT</type> <name>displayEvent</name></member>
- </type>
- <type category="struct" name="VkSwapchainCounterCreateInfoEXT" structextends="VkSwapchainCreateInfoKHR">
- <member values="VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkSurfaceCounterFlagsEXT</type> <name>surfaceCounters</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceGroupProperties" returnedonly="true">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>uint32_t</type> <name>physicalDeviceCount</name></member>
- <member><type>VkPhysicalDevice</type> <name>physicalDevices</name>[<enum>VK_MAX_DEVICE_GROUP_SIZE</enum>]</member>
- <member><type>VkBool32</type> <name>subsetAllocation</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceGroupPropertiesKHR" alias="VkPhysicalDeviceGroupProperties"/>
- <type category="struct" name="VkMemoryAllocateFlagsInfo" structextends="VkMemoryAllocateInfo">
- <member values="VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkMemoryAllocateFlags</type> <name>flags</name></member>
- <member><type>uint32_t</type> <name>deviceMask</name></member>
- </type>
- <type category="struct" name="VkMemoryAllocateFlagsInfoKHR" alias="VkMemoryAllocateFlagsInfo"/>
- <type category="struct" name="VkBindBufferMemoryInfo">
- <member values="VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkBuffer</type> <name>buffer</name></member>
- <member devicememoryhandle="1"><type>VkDeviceMemory</type> <name>memory</name></member>
- <member devicememoryoffset="1"><type>VkDeviceSize</type> <name>memoryOffset</name></member>
- </type>
- <type category="struct" name="VkBindBufferMemoryInfoKHR" alias="VkBindBufferMemoryInfo"/>
- <type category="struct" name="VkBindBufferMemoryDeviceGroupInfo" structextends="VkBindBufferMemoryInfo">
- <member values="VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>uint32_t</type> <name>deviceIndexCount</name></member>
- <member len="deviceIndexCount">const <type>uint32_t</type>* <name>pDeviceIndices</name></member>
- </type>
- <type category="struct" name="VkBindBufferMemoryDeviceGroupInfoKHR" alias="VkBindBufferMemoryDeviceGroupInfo"/>
- <type category="struct" name="VkBindImageMemoryInfo">
- <member values="VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkImage</type> <name>image</name></member>
- <member noautovalidity="true" devicememoryhandle="1"><type>VkDeviceMemory</type> <name>memory</name></member>
- <member devicememoryoffset="1"><type>VkDeviceSize</type> <name>memoryOffset</name></member>
- </type>
- <type category="struct" name="VkBindImageMemoryInfoKHR" alias="VkBindImageMemoryInfo"/>
- <type category="struct" name="VkBindImageMemoryDeviceGroupInfo" structextends="VkBindImageMemoryInfo">
- <member values="VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>uint32_t</type> <name>deviceIndexCount</name></member>
- <member len="deviceIndexCount">const <type>uint32_t</type>* <name>pDeviceIndices</name></member>
- <member optional="true"><type>uint32_t</type> <name>splitInstanceBindRegionCount</name></member>
- <member len="splitInstanceBindRegionCount">const <type>VkRect2D</type>* <name>pSplitInstanceBindRegions</name></member>
- </type>
- <type category="struct" name="VkBindImageMemoryDeviceGroupInfoKHR" alias="VkBindImageMemoryDeviceGroupInfo"/>
- <type category="struct" name="VkDeviceGroupRenderPassBeginInfo" structextends="VkRenderPassBeginInfo,VkRenderingInfoKHR">
- <member values="VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>uint32_t</type> <name>deviceMask</name></member>
- <member optional="true"><type>uint32_t</type> <name>deviceRenderAreaCount</name></member>
- <member len="deviceRenderAreaCount">const <type>VkRect2D</type>* <name>pDeviceRenderAreas</name></member>
- </type>
- <type category="struct" name="VkDeviceGroupRenderPassBeginInfoKHR" alias="VkDeviceGroupRenderPassBeginInfo"/>
- <type category="struct" name="VkDeviceGroupCommandBufferBeginInfo" structextends="VkCommandBufferBeginInfo">
- <member values="VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>uint32_t</type> <name>deviceMask</name></member>
- </type>
- <type category="struct" name="VkDeviceGroupCommandBufferBeginInfoKHR" alias="VkDeviceGroupCommandBufferBeginInfo"/>
- <type category="struct" name="VkDeviceGroupSubmitInfo" structextends="VkSubmitInfo">
- <member values="VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>uint32_t</type> <name>waitSemaphoreCount</name></member>
- <member len="waitSemaphoreCount">const <type>uint32_t</type>* <name>pWaitSemaphoreDeviceIndices</name></member>
- <member optional="true"><type>uint32_t</type> <name>commandBufferCount</name></member>
- <member len="commandBufferCount">const <type>uint32_t</type>* <name>pCommandBufferDeviceMasks</name></member>
- <member optional="true"><type>uint32_t</type> <name>signalSemaphoreCount</name></member>
- <member len="signalSemaphoreCount">const <type>uint32_t</type>* <name>pSignalSemaphoreDeviceIndices</name></member>
- </type>
- <type category="struct" name="VkDeviceGroupSubmitInfoKHR" alias="VkDeviceGroupSubmitInfo"/>
- <type category="struct" name="VkDeviceGroupBindSparseInfo" structextends="VkBindSparseInfo">
- <member values="VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>uint32_t</type> <name>resourceDeviceIndex</name></member>
- <member><type>uint32_t</type> <name>memoryDeviceIndex</name></member>
- </type>
- <type category="struct" name="VkDeviceGroupBindSparseInfoKHR" alias="VkDeviceGroupBindSparseInfo"/>
- <type category="struct" name="VkDeviceGroupPresentCapabilitiesKHR" returnedonly="true">
- <member values="VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>uint32_t</type> <name>presentMask</name>[<enum>VK_MAX_DEVICE_GROUP_SIZE</enum>]</member>
- <member><type>VkDeviceGroupPresentModeFlagsKHR</type> <name>modes</name></member>
- </type>
- <type category="struct" name="VkImageSwapchainCreateInfoKHR" structextends="VkImageCreateInfo">
- <member values="VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkSwapchainKHR</type> <name>swapchain</name></member>
- </type>
- <type category="struct" name="VkBindImageMemorySwapchainInfoKHR" structextends="VkBindImageMemoryInfo">
- <member values="VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member externsync="true"><type>VkSwapchainKHR</type> <name>swapchain</name></member>
- <member><type>uint32_t</type> <name>imageIndex</name></member>
- </type>
- <type category="struct" name="VkAcquireNextImageInfoKHR">
- <member values="VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member externsync="true"><type>VkSwapchainKHR</type> <name>swapchain</name></member>
- <member><type>uint64_t</type> <name>timeout</name></member>
- <member optional="true" externsync="true"><type>VkSemaphore</type> <name>semaphore</name></member>
- <member optional="true" externsync="true"><type>VkFence</type> <name>fence</name></member>
- <member><type>uint32_t</type> <name>deviceMask</name></member>
- </type>
- <type category="struct" name="VkDeviceGroupPresentInfoKHR" structextends="VkPresentInfoKHR">
- <member values="VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>uint32_t</type> <name>swapchainCount</name></member>
- <member len="swapchainCount">const <type>uint32_t</type>* <name>pDeviceMasks</name></member>
- <member><type>VkDeviceGroupPresentModeFlagBitsKHR</type> <name>mode</name></member>
- </type>
- <type category="struct" name="VkDeviceGroupDeviceCreateInfo" structextends="VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>uint32_t</type> <name>physicalDeviceCount</name></member>
- <member len="physicalDeviceCount">const <type>VkPhysicalDevice</type>* <name>pPhysicalDevices</name></member>
- </type>
- <type category="struct" name="VkDeviceGroupDeviceCreateInfoKHR" alias="VkDeviceGroupDeviceCreateInfo"/>
- <type category="struct" name="VkDeviceGroupSwapchainCreateInfoKHR" structextends="VkSwapchainCreateInfoKHR">
- <member values="VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkDeviceGroupPresentModeFlagsKHR</type> <name>modes</name></member>
- </type>
- <type category="struct" name="VkDescriptorUpdateTemplateEntry">
- <member><type>uint32_t</type> <name>dstBinding</name><comment>Binding within the destination descriptor set to write</comment></member>
- <member><type>uint32_t</type> <name>dstArrayElement</name><comment>Array element within the destination binding to write</comment></member>
- <member><type>uint32_t</type> <name>descriptorCount</name><comment>Number of descriptors to write</comment></member>
- <member><type>VkDescriptorType</type> <name>descriptorType</name><comment>Descriptor type to write</comment></member>
- <member><type>size_t</type> <name>offset</name><comment>Offset into pData where the descriptors to update are stored</comment></member>
- <member><type>size_t</type> <name>stride</name><comment>Stride between two descriptors in pData when writing more than one descriptor</comment></member>
- </type>
- <type category="struct" name="VkDescriptorUpdateTemplateEntryKHR" alias="VkDescriptorUpdateTemplateEntry"/>
- <type category="struct" name="VkDescriptorUpdateTemplateCreateInfo">
- <member values="VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkDescriptorUpdateTemplateCreateFlags</type> <name>flags</name></member>
- <member><type>uint32_t</type> <name>descriptorUpdateEntryCount</name><comment>Number of descriptor update entries to use for the update template</comment></member>
- <member len="descriptorUpdateEntryCount">const <type>VkDescriptorUpdateTemplateEntry</type>* <name>pDescriptorUpdateEntries</name><comment>Descriptor update entries for the template</comment></member>
- <member><type>VkDescriptorUpdateTemplateType</type> <name>templateType</name></member>
- <member noautovalidity="true"><type>VkDescriptorSetLayout</type> <name>descriptorSetLayout</name></member>
- <member noautovalidity="true"><type>VkPipelineBindPoint</type> <name>pipelineBindPoint</name></member>
- <member noautovalidity="true"><type>VkPipelineLayout</type><name>pipelineLayout</name><comment>If used for push descriptors, this is the only allowed layout</comment></member>
- <member noautovalidity="true"><type>uint32_t</type> <name>set</name></member>
- </type>
- <type category="struct" name="VkDescriptorUpdateTemplateCreateInfoKHR" alias="VkDescriptorUpdateTemplateCreateInfo"/>
- <type category="struct" name="VkXYColorEXT" comment="Chromaticity coordinate">
- <member><type>float</type> <name>x</name></member>
- <member><type>float</type> <name>y</name></member>
- </type>
- <type category="struct" name="VkPhysicalDevicePresentIdFeaturesKHR" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>presentId</name><comment>Present ID in VkPresentInfoKHR</comment></member>
- </type>
- <type category="struct" name="VkPresentIdKHR" structextends="VkPresentInfoKHR">
- <member values="VK_STRUCTURE_TYPE_PRESENT_ID_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>uint32_t</type> <name>swapchainCount</name><comment>Copy of VkPresentInfoKHR::swapchainCount</comment></member>
- <member len="swapchainCount" optional="true">const <type>uint64_t</type>* <name>pPresentIds</name><comment>Present ID values for each swapchain</comment></member>
- </type>
- <type category="struct" name="VkPhysicalDevicePresentWaitFeaturesKHR" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>presentWait</name><comment>vkWaitForPresentKHR is supported</comment></member>
- </type>
- <type category="struct" name="VkHdrMetadataEXT">
- <comment>Display primary in chromaticity coordinates</comment>
- <member values="VK_STRUCTURE_TYPE_HDR_METADATA_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <comment> From SMPTE 2086</comment>
- <member noautovalidity="true"><type>VkXYColorEXT</type> <name>displayPrimaryRed</name><comment>Display primary's Red</comment></member>
- <member noautovalidity="true"><type>VkXYColorEXT</type> <name>displayPrimaryGreen</name><comment>Display primary's Green</comment></member>
- <member noautovalidity="true"><type>VkXYColorEXT</type> <name>displayPrimaryBlue</name><comment>Display primary's Blue</comment></member>
- <member noautovalidity="true"><type>VkXYColorEXT</type> <name>whitePoint</name><comment>Display primary's Blue</comment></member>
- <member noautovalidity="true"><type>float</type> <name>maxLuminance</name><comment>Display maximum luminance</comment></member>
- <member noautovalidity="true"><type>float</type> <name>minLuminance</name><comment>Display minimum luminance</comment></member>
- <comment> From CTA 861.3</comment>
- <member noautovalidity="true"><type>float</type> <name>maxContentLightLevel</name><comment>Content maximum luminance</comment></member>
- <member noautovalidity="true"><type>float</type> <name>maxFrameAverageLightLevel</name></member>
- </type>
- <type category="struct" name="VkDisplayNativeHdrSurfaceCapabilitiesAMD" returnedonly="true" structextends="VkSurfaceCapabilities2KHR">
- <member values="VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>localDimmingSupport</name></member>
- </type>
- <type category="struct" name="VkSwapchainDisplayNativeHdrCreateInfoAMD" structextends="VkSwapchainCreateInfoKHR">
- <member values="VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>localDimmingEnable</name></member>
- </type>
- <type category="struct" name="VkRefreshCycleDurationGOOGLE" returnedonly="true">
- <member><type>uint64_t</type> <name>refreshDuration</name><comment>Number of nanoseconds from the start of one refresh cycle to the next</comment></member>
- </type>
- <type category="struct" name="VkPastPresentationTimingGOOGLE" returnedonly="true">
- <member><type>uint32_t</type> <name>presentID</name><comment>Application-provided identifier, previously given to vkQueuePresentKHR</comment></member>
- <member><type>uint64_t</type> <name>desiredPresentTime</name><comment>Earliest time an image should have been presented, previously given to vkQueuePresentKHR</comment></member>
- <member><type>uint64_t</type> <name>actualPresentTime</name><comment>Time the image was actually displayed</comment></member>
- <member><type>uint64_t</type> <name>earliestPresentTime</name><comment>Earliest time the image could have been displayed</comment></member>
- <member><type>uint64_t</type> <name>presentMargin</name><comment>How early vkQueuePresentKHR was processed vs. how soon it needed to be and make earliestPresentTime</comment></member>
- </type>
- <type category="struct" name="VkPresentTimesInfoGOOGLE" structextends="VkPresentInfoKHR">
- <member values="VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>uint32_t</type> <name>swapchainCount</name><comment>Copy of VkPresentInfoKHR::swapchainCount</comment></member>
- <member len="swapchainCount" optional="true">const <type>VkPresentTimeGOOGLE</type>* <name>pTimes</name><comment>The earliest times to present images</comment></member>
- </type>
- <type category="struct" name="VkPresentTimeGOOGLE">
- <member><type>uint32_t</type> <name>presentID</name><comment>Application-provided identifier</comment></member>
- <member><type>uint64_t</type> <name>desiredPresentTime</name><comment>Earliest time an image should be presented</comment></member>
- </type>
- <type category="struct" name="VkIOSSurfaceCreateInfoMVK">
- <member values="VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkIOSSurfaceCreateFlagsMVK</type> <name>flags</name></member>
- <member noautovalidity="true">const <type>void</type>* <name>pView</name></member>
- </type>
- <type category="struct" name="VkMacOSSurfaceCreateInfoMVK">
- <member values="VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkMacOSSurfaceCreateFlagsMVK</type> <name>flags</name></member>
- <member noautovalidity="true">const <type>void</type>* <name>pView</name></member>
- </type>
- <type category="struct" name="VkMetalSurfaceCreateInfoEXT">
- <member values="VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkMetalSurfaceCreateFlagsEXT</type> <name>flags</name></member>
- <member noautovalidity="true">const <type>CAMetalLayer</type>* <name>pLayer</name></member>
- </type>
- <type category="struct" name="VkViewportWScalingNV">
- <member><type>float</type> <name>xcoeff</name></member>
- <member><type>float</type> <name>ycoeff</name></member>
- </type>
- <type category="struct" name="VkPipelineViewportWScalingStateCreateInfoNV" structextends="VkPipelineViewportStateCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>viewportWScalingEnable</name></member>
- <member><type>uint32_t</type> <name>viewportCount</name></member>
- <member noautovalidity="true" optional="true" len="viewportCount">const <type>VkViewportWScalingNV</type>* <name>pViewportWScalings</name></member>
- </type>
- <type category="struct" name="VkViewportSwizzleNV">
- <member><type>VkViewportCoordinateSwizzleNV</type> <name>x</name></member>
- <member><type>VkViewportCoordinateSwizzleNV</type> <name>y</name></member>
- <member><type>VkViewportCoordinateSwizzleNV</type> <name>z</name></member>
- <member><type>VkViewportCoordinateSwizzleNV</type> <name>w</name></member>
- </type>
- <type category="struct" name="VkPipelineViewportSwizzleStateCreateInfoNV" structextends="VkPipelineViewportStateCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkPipelineViewportSwizzleStateCreateFlagsNV</type> <name>flags</name></member>
- <member><type>uint32_t</type> <name>viewportCount</name></member>
- <member noautovalidity="true" optional="true" len="viewportCount">const <type>VkViewportSwizzleNV</type>* <name>pViewportSwizzles</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceDiscardRectanglePropertiesEXT" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxDiscardRectangles</name><comment>max number of active discard rectangles</comment></member>
- </type>
- <type category="struct" name="VkPipelineDiscardRectangleStateCreateInfoEXT" structextends="VkGraphicsPipelineCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkPipelineDiscardRectangleStateCreateFlagsEXT</type> <name>flags</name></member>
- <member><type>VkDiscardRectangleModeEXT</type> <name>discardRectangleMode</name></member>
- <member optional="true"><type>uint32_t</type> <name>discardRectangleCount</name></member>
- <member noautovalidity="true" len="discardRectangleCount">const <type>VkRect2D</type>* <name>pDiscardRectangles</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>perViewPositionAllComponents</name></member>
- </type>
- <type category="struct" name="VkInputAttachmentAspectReference">
- <member><type>uint32_t</type> <name>subpass</name></member>
- <member><type>uint32_t</type> <name>inputAttachmentIndex</name></member>
- <member><type>VkImageAspectFlags</type> <name>aspectMask</name></member>
- </type>
- <type category="struct" name="VkInputAttachmentAspectReferenceKHR" alias="VkInputAttachmentAspectReference"/>
- <type category="struct" name="VkRenderPassInputAttachmentAspectCreateInfo" structextends="VkRenderPassCreateInfo">
- <member values="VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>uint32_t</type> <name>aspectReferenceCount</name></member>
- <member len="aspectReferenceCount">const <type>VkInputAttachmentAspectReference</type>* <name>pAspectReferences</name></member>
- </type>
- <type category="struct" name="VkRenderPassInputAttachmentAspectCreateInfoKHR" alias="VkRenderPassInputAttachmentAspectCreateInfo"/>
- <type category="struct" name="VkPhysicalDeviceSurfaceInfo2KHR">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkSurfaceKHR</type> <name>surface</name></member>
- </type>
- <type category="struct" name="VkSurfaceCapabilities2KHR" returnedonly="true">
- <member values="VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkSurfaceCapabilitiesKHR</type> <name>surfaceCapabilities</name></member>
- </type>
- <type category="struct" name="VkSurfaceFormat2KHR" returnedonly="true">
- <member values="VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkSurfaceFormatKHR</type> <name>surfaceFormat</name></member>
- </type>
- <type category="struct" name="VkDisplayProperties2KHR" returnedonly="true">
- <member values="VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkDisplayPropertiesKHR</type> <name>displayProperties</name></member>
- </type>
- <type category="struct" name="VkDisplayPlaneProperties2KHR" returnedonly="true">
- <member values="VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkDisplayPlanePropertiesKHR</type> <name>displayPlaneProperties</name></member>
- </type>
- <type category="struct" name="VkDisplayModeProperties2KHR" returnedonly="true">
- <member values="VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkDisplayModePropertiesKHR</type> <name>displayModeProperties</name></member>
- </type>
- <type category="struct" name="VkDisplayPlaneInfo2KHR">
- <member values="VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member externsync="true"><type>VkDisplayModeKHR</type> <name>mode</name></member>
- <member><type>uint32_t</type> <name>planeIndex</name></member>
- </type>
- <type category="struct" name="VkDisplayPlaneCapabilities2KHR" returnedonly="true">
- <member values="VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkDisplayPlaneCapabilitiesKHR</type> <name>capabilities</name></member>
- </type>
- <type category="struct" name="VkSharedPresentSurfaceCapabilitiesKHR" returnedonly="true" structextends="VkSurfaceCapabilities2KHR">
- <member values="VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkImageUsageFlags</type> <name>sharedPresentSupportedUsageFlags</name><comment>Supported image usage flags if swapchain created using a shared present mode</comment></member>
- </type>
- <type category="struct" name="VkPhysicalDevice16BitStorageFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>storageBuffer16BitAccess</name><comment>16-bit integer/floating-point variables supported in BufferBlock</comment></member>
- <member><type>VkBool32</type> <name>uniformAndStorageBuffer16BitAccess</name><comment>16-bit integer/floating-point variables supported in BufferBlock and Block</comment></member>
- <member><type>VkBool32</type> <name>storagePushConstant16</name><comment>16-bit integer/floating-point variables supported in PushConstant</comment></member>
- <member><type>VkBool32</type> <name>storageInputOutput16</name><comment>16-bit integer/floating-point variables supported in shader inputs and outputs</comment></member>
- </type>
- <type category="struct" name="VkPhysicalDevice16BitStorageFeaturesKHR" alias="VkPhysicalDevice16BitStorageFeatures"/>
- <type category="struct" name="VkPhysicalDeviceSubgroupProperties" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member limittype="noauto" noautovalidity="true"><type>uint32_t</type> <name>subgroupSize</name><comment>The size of a subgroup for this queue.</comment></member>
- <member limittype="bitmask" noautovalidity="true"><type>VkShaderStageFlags</type> <name>supportedStages</name><comment>Bitfield of what shader stages support subgroup operations</comment></member>
- <member limittype="bitmask" noautovalidity="true"><type>VkSubgroupFeatureFlags</type> <name>supportedOperations</name><comment>Bitfield of what subgroup operations are supported.</comment></member>
- <member limittype="bitmask" noautovalidity="true"><type>VkBool32</type> <name>quadOperationsInAllStages</name><comment>Flag to specify whether quad operations are available in all stages.</comment></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member noautovalidity="true"><type>VkBool32</type> <name>shaderSubgroupExtendedTypes</name><comment>Flag to specify whether subgroup operations with extended types are supported</comment></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR" alias="VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures"/>
- <type category="struct" name="VkBufferMemoryRequirementsInfo2">
- <member values="VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkBuffer</type> <name>buffer</name></member>
- </type>
- <type category="struct" name="VkBufferMemoryRequirementsInfo2KHR" alias="VkBufferMemoryRequirementsInfo2"/>
- <type category="struct" name="VkDeviceBufferMemoryRequirementsKHR">
- <member values="VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member>const <type>VkBufferCreateInfo</type>* <name>pCreateInfo</name></member>
- </type>
- <type category="struct" name="VkImageMemoryRequirementsInfo2">
- <member values="VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkImage</type> <name>image</name></member>
- </type>
- <type category="struct" name="VkImageMemoryRequirementsInfo2KHR" alias="VkImageMemoryRequirementsInfo2"/>
- <type category="struct" name="VkImageSparseMemoryRequirementsInfo2">
- <member values="VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkImage</type> <name>image</name></member>
- </type>
- <type category="struct" name="VkImageSparseMemoryRequirementsInfo2KHR" alias="VkImageSparseMemoryRequirementsInfo2"/>
- <type category="struct" name="VkDeviceImageMemoryRequirementsKHR">
- <member values="VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member>const <type>VkImageCreateInfo</type>* <name>pCreateInfo</name></member>
- <member><type>VkImageAspectFlagBits</type> <name>planeAspect</name></member>
- </type>
- <type category="struct" name="VkMemoryRequirements2" returnedonly="true">
- <member values="VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkMemoryRequirements</type> <name>memoryRequirements</name></member>
- </type>
- <type category="struct" name="VkMemoryRequirements2KHR" alias="VkMemoryRequirements2"/>
- <type category="struct" name="VkSparseImageMemoryRequirements2" returnedonly="true">
- <member values="VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkSparseImageMemoryRequirements</type> <name>memoryRequirements</name></member>
- </type>
- <type category="struct" name="VkSparseImageMemoryRequirements2KHR" alias="VkSparseImageMemoryRequirements2"/>
- <type category="struct" name="VkPhysicalDevicePointClippingProperties" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member limittype="noauto"><type>VkPointClippingBehavior</type> <name>pointClippingBehavior</name></member>
- </type>
- <type category="struct" name="VkPhysicalDevicePointClippingPropertiesKHR" alias="VkPhysicalDevicePointClippingProperties"/>
- <type category="struct" name="VkMemoryDedicatedRequirements" returnedonly="true" structextends="VkMemoryRequirements2">
- <member values="VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>prefersDedicatedAllocation</name></member>
- <member><type>VkBool32</type> <name>requiresDedicatedAllocation</name></member>
- </type>
- <type category="struct" name="VkMemoryDedicatedRequirementsKHR" alias="VkMemoryDedicatedRequirements"/>
- <type category="struct" name="VkMemoryDedicatedAllocateInfo" structextends="VkMemoryAllocateInfo">
- <member values="VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkImage</type> <name>image</name><comment>Image that this allocation will be bound to</comment></member>
- <member optional="true"><type>VkBuffer</type> <name>buffer</name><comment>Buffer that this allocation will be bound to</comment></member>
- </type>
- <type category="struct" name="VkMemoryDedicatedAllocateInfoKHR" alias="VkMemoryDedicatedAllocateInfo"/>
- <type category="struct" name="VkImageViewUsageCreateInfo" structextends="VkImageViewCreateInfo">
- <member values="VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkImageUsageFlags</type> <name>usage</name></member>
- </type>
- <type category="struct" name="VkImageViewUsageCreateInfoKHR" alias="VkImageViewUsageCreateInfo"/>
- <type category="struct" name="VkPipelineTessellationDomainOriginStateCreateInfo" structextends="VkPipelineTessellationStateCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkTessellationDomainOrigin</type> <name>domainOrigin</name></member>
- </type>
- <type category="struct" name="VkPipelineTessellationDomainOriginStateCreateInfoKHR" alias="VkPipelineTessellationDomainOriginStateCreateInfo"/>
- <type category="struct" name="VkSamplerYcbcrConversionInfo" structextends="VkSamplerCreateInfo,VkImageViewCreateInfo">
- <member values="VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkSamplerYcbcrConversion</type> <name>conversion</name></member>
- </type>
- <type category="struct" name="VkSamplerYcbcrConversionInfoKHR" alias="VkSamplerYcbcrConversionInfo"/>
- <type category="struct" name="VkSamplerYcbcrConversionCreateInfo">
- <member values="VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkFormat</type> <name>format</name></member>
- <member><type>VkSamplerYcbcrModelConversion</type> <name>ycbcrModel</name></member>
- <member><type>VkSamplerYcbcrRange</type> <name>ycbcrRange</name></member>
- <member><type>VkComponentMapping</type> <name>components</name></member>
- <member><type>VkChromaLocation</type> <name>xChromaOffset</name></member>
- <member><type>VkChromaLocation</type> <name>yChromaOffset</name></member>
- <member><type>VkFilter</type> <name>chromaFilter</name></member>
- <member><type>VkBool32</type> <name>forceExplicitReconstruction</name></member>
- </type>
- <type category="struct" name="VkSamplerYcbcrConversionCreateInfoKHR" alias="VkSamplerYcbcrConversionCreateInfo"/>
- <type category="struct" name="VkBindImagePlaneMemoryInfo" structextends="VkBindImageMemoryInfo">
- <member values="VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkImageAspectFlagBits</type> <name>planeAspect</name></member>
- </type>
- <type category="struct" name="VkBindImagePlaneMemoryInfoKHR" alias="VkBindImagePlaneMemoryInfo"/>
- <type category="struct" name="VkImagePlaneMemoryRequirementsInfo" structextends="VkImageMemoryRequirementsInfo2">
- <member values="VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkImageAspectFlagBits</type> <name>planeAspect</name></member>
- </type>
- <type category="struct" name="VkImagePlaneMemoryRequirementsInfoKHR" alias="VkImagePlaneMemoryRequirementsInfo"/>
- <type category="struct" name="VkPhysicalDeviceSamplerYcbcrConversionFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>samplerYcbcrConversion</name><comment>Sampler color conversion supported</comment></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR" alias="VkPhysicalDeviceSamplerYcbcrConversionFeatures"/>
- <type category="struct" name="VkSamplerYcbcrConversionImageFormatProperties" returnedonly="true" structextends="VkImageFormatProperties2">
- <member values="VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>uint32_t</type> <name>combinedImageSamplerDescriptorCount</name></member>
- </type>
- <type category="struct" name="VkSamplerYcbcrConversionImageFormatPropertiesKHR" alias="VkSamplerYcbcrConversionImageFormatProperties"/>
- <type category="struct" name="VkTextureLODGatherFormatPropertiesAMD" returnedonly="true" structextends="VkImageFormatProperties2">
- <member values="VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>supportsTextureGatherLODBiasAMD</name></member>
- </type>
- <type category="struct" name="VkConditionalRenderingBeginInfoEXT">
- <member values="VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkBuffer</type> <name>buffer</name></member>
- <member><type>VkDeviceSize</type> <name>offset</name></member>
- <member optional="true"><type>VkConditionalRenderingFlagsEXT</type> <name>flags</name></member>
- </type>
- <type category="struct" name="VkProtectedSubmitInfo" structextends="VkSubmitInfo">
- <member values="VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>protectedSubmit</name><comment>Submit protected command buffers</comment></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceProtectedMemoryFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>protectedMemory</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceProtectedMemoryProperties" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member limittype="noauto"><type>VkBool32</type> <name>protectedNoFault</name></member>
- </type>
- <type category="struct" name="VkDeviceQueueInfo2">
- <member values="VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkDeviceQueueCreateFlags</type> <name>flags</name></member>
- <member><type>uint32_t</type> <name>queueFamilyIndex</name></member>
- <member><type>uint32_t</type> <name>queueIndex</name></member>
- </type>
- <type category="struct" name="VkPipelineCoverageToColorStateCreateInfoNV" structextends="VkPipelineMultisampleStateCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkPipelineCoverageToColorStateCreateFlagsNV</type> <name>flags</name></member>
- <member><type>VkBool32</type> <name>coverageToColorEnable</name></member>
- <member optional="true"><type>uint32_t</type> <name>coverageToColorLocation</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceSamplerFilterMinmaxProperties" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>filterMinmaxSingleComponentFormats</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>filterMinmaxImageComponentMapping</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT" alias="VkPhysicalDeviceSamplerFilterMinmaxProperties"/>
- <type category="struct" name="VkSampleLocationEXT">
- <member><type>float</type> <name>x</name></member>
- <member><type>float</type> <name>y</name></member>
- </type>
- <type category="struct" name="VkSampleLocationsInfoEXT" structextends="VkImageMemoryBarrier,VkImageMemoryBarrier2KHR">
- <member values="VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member noautovalidity="true"><type>VkSampleCountFlagBits</type> <name>sampleLocationsPerPixel</name></member>
- <member><type>VkExtent2D</type> <name>sampleLocationGridSize</name></member>
- <member optional="true"><type>uint32_t</type> <name>sampleLocationsCount</name></member>
- <member len="sampleLocationsCount">const <type>VkSampleLocationEXT</type>* <name>pSampleLocations</name></member>
- </type>
- <type category="struct" name="VkAttachmentSampleLocationsEXT">
- <member><type>uint32_t</type> <name>attachmentIndex</name></member>
- <member><type>VkSampleLocationsInfoEXT</type> <name>sampleLocationsInfo</name></member>
- </type>
- <type category="struct" name="VkSubpassSampleLocationsEXT">
- <member><type>uint32_t</type> <name>subpassIndex</name></member>
- <member><type>VkSampleLocationsInfoEXT</type> <name>sampleLocationsInfo</name></member>
- </type>
- <type category="struct" name="VkRenderPassSampleLocationsBeginInfoEXT" structextends="VkRenderPassBeginInfo">
- <member values="VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>uint32_t</type> <name>attachmentInitialSampleLocationsCount</name></member>
- <member len="attachmentInitialSampleLocationsCount">const <type>VkAttachmentSampleLocationsEXT</type>* <name>pAttachmentInitialSampleLocations</name></member>
- <member optional="true"><type>uint32_t</type> <name>postSubpassSampleLocationsCount</name></member>
- <member len="postSubpassSampleLocationsCount">const <type>VkSubpassSampleLocationsEXT</type>* <name>pPostSubpassSampleLocations</name></member>
- </type>
- <type category="struct" name="VkPipelineSampleLocationsStateCreateInfoEXT" structextends="VkPipelineMultisampleStateCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>sampleLocationsEnable</name></member>
- <member><type>VkSampleLocationsInfoEXT</type> <name>sampleLocationsInfo</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceSampleLocationsPropertiesEXT" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member limittype="bitmask"><type>VkSampleCountFlags</type> <name>sampleLocationSampleCounts</name></member>
- <member limittype="max"><type>VkExtent2D</type> <name>maxSampleLocationGridSize</name></member>
- <member limittype="range"><type>float</type> <name>sampleLocationCoordinateRange</name>[2]</member>
- <member limittype="noauto"><type>uint32_t</type> <name>sampleLocationSubPixelBits</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>variableSampleLocations</name></member>
- </type>
- <type category="struct" name="VkMultisamplePropertiesEXT" returnedonly="true">
- <member values="VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkExtent2D</type> <name>maxSampleLocationGridSize</name></member>
- </type>
- <type category="struct" name="VkSamplerReductionModeCreateInfo" structextends="VkSamplerCreateInfo">
- <member values="VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkSamplerReductionMode</type> <name>reductionMode</name></member>
- </type>
- <type category="struct" name="VkSamplerReductionModeCreateInfoEXT" alias="VkSamplerReductionModeCreateInfo"/>
- <type category="struct" name="VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>advancedBlendCoherentOperations</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceMultiDrawFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true" noautovalidity="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>multiDraw</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member limittype="max"><type>uint32_t</type> <name>advancedBlendMaxColorAttachments</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>advancedBlendIndependentBlend</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>advancedBlendNonPremultipliedSrcColor</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>advancedBlendNonPremultipliedDstColor</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>advancedBlendCorrelatedOverlap</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>advancedBlendAllOperations</name></member>
- </type>
- <type category="struct" name="VkPipelineColorBlendAdvancedStateCreateInfoEXT" structextends="VkPipelineColorBlendStateCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>srcPremultiplied</name></member>
- <member><type>VkBool32</type> <name>dstPremultiplied</name></member>
- <member><type>VkBlendOverlapEXT</type> <name>blendOverlap</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceInlineUniformBlockFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>inlineUniformBlock</name></member>
- <member><type>VkBool32</type> <name>descriptorBindingInlineUniformBlockUpdateAfterBind</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceInlineUniformBlockPropertiesEXT" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxInlineUniformBlockSize</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxPerStageDescriptorInlineUniformBlocks</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxDescriptorSetInlineUniformBlocks</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxDescriptorSetUpdateAfterBindInlineUniformBlocks</name></member>
- </type>
- <type category="struct" name="VkWriteDescriptorSetInlineUniformBlockEXT" structextends="VkWriteDescriptorSet">
- <member values="VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>uint32_t</type> <name>dataSize</name></member>
- <member len="dataSize">const <type>void</type>* <name>pData</name></member>
- </type>
- <type category="struct" name="VkDescriptorPoolInlineUniformBlockCreateInfoEXT" structextends="VkDescriptorPoolCreateInfo">
- <member values="VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>uint32_t</type> <name>maxInlineUniformBlockBindings</name></member>
- </type>
- <type category="struct" name="VkPipelineCoverageModulationStateCreateInfoNV" structextends="VkPipelineMultisampleStateCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkPipelineCoverageModulationStateCreateFlagsNV</type> <name>flags</name></member>
- <member><type>VkCoverageModulationModeNV</type> <name>coverageModulationMode</name></member>
- <member><type>VkBool32</type> <name>coverageModulationTableEnable</name></member>
- <member optional="true"><type>uint32_t</type> <name>coverageModulationTableCount</name></member>
- <member noautovalidity="true" optional="true" len="coverageModulationTableCount">const <type>float</type>* <name>pCoverageModulationTable</name></member>
- </type>
- <type category="struct" name="VkImageFormatListCreateInfo" structextends="VkImageCreateInfo,VkSwapchainCreateInfoKHR,VkPhysicalDeviceImageFormatInfo2">
- <member values="VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>uint32_t</type> <name>viewFormatCount</name></member>
- <member len="viewFormatCount">const <type>VkFormat</type>* <name>pViewFormats</name></member>
- </type>
- <type category="struct" name="VkImageFormatListCreateInfoKHR" alias="VkImageFormatListCreateInfo"/>
- <type category="struct" name="VkValidationCacheCreateInfoEXT">
- <member values="VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkValidationCacheCreateFlagsEXT</type> <name>flags</name></member>
- <member optional="true"><type>size_t</type> <name>initialDataSize</name></member>
- <member len="initialDataSize">const <type>void</type>* <name>pInitialData</name></member>
- </type>
- <type category="struct" name="VkShaderModuleValidationCacheCreateInfoEXT" structextends="VkShaderModuleCreateInfo">
- <member values="VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkValidationCacheEXT</type> <name>validationCache</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceMaintenance3Properties" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxPerSetDescriptors</name></member>
- <member limittype="max"><type>VkDeviceSize</type> <name>maxMemoryAllocationSize</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceMaintenance3PropertiesKHR" alias="VkPhysicalDeviceMaintenance3Properties"/>
- <type category="struct" name="VkPhysicalDeviceMaintenance4FeaturesKHR" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>maintenance4</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceMaintenance4PropertiesKHR" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member limittype="max"><type>VkDeviceSize</type> <name>maxBufferSize</name></member>
- </type>
- <type category="struct" name="VkDescriptorSetLayoutSupport" returnedonly="true">
- <member values="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>supported</name></member>
- </type>
- <type category="struct" name="VkDescriptorSetLayoutSupportKHR" alias="VkDescriptorSetLayoutSupport"/>
- <type category="struct" name="VkPhysicalDeviceShaderDrawParametersFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>shaderDrawParameters</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceShaderDrawParameterFeatures" alias="VkPhysicalDeviceShaderDrawParametersFeatures"/>
- <type category="struct" name="VkPhysicalDeviceShaderFloat16Int8Features" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo" optional="streamFeature:VULKAN_STREAM_FEATURE_SHADER_FLOAT16_INT8_BIT">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>shaderFloat16</name><comment>16-bit floats (halfs) in shaders</comment></member>
- <member><type>VkBool32</type> <name>shaderInt8</name><comment>8-bit integers in shaders</comment></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceShaderFloat16Int8FeaturesKHR" alias="VkPhysicalDeviceShaderFloat16Int8Features" optional="streamFeature:VULKAN_STREAM_FEATURE_SHADER_FLOAT16_INT8_BIT"/>
- <type category="struct" name="VkPhysicalDeviceFloat16Int8FeaturesKHR" alias="VkPhysicalDeviceShaderFloat16Int8Features" optional="streamFeature:VULKAN_STREAM_FEATURE_SHADER_FLOAT16_INT8_BIT"/>
- <type category="struct" name="VkPhysicalDeviceFloatControlsProperties" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member limittype="noauto"><type>VkShaderFloatControlsIndependence</type> <name>denormBehaviorIndependence</name></member>
- <member limittype="noauto"><type>VkShaderFloatControlsIndependence</type> <name>roundingModeIndependence</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>shaderSignedZeroInfNanPreserveFloat16</name><comment>An implementation can preserve signed zero, nan, inf</comment></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>shaderSignedZeroInfNanPreserveFloat32</name><comment>An implementation can preserve signed zero, nan, inf</comment></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>shaderSignedZeroInfNanPreserveFloat64</name><comment>An implementation can preserve signed zero, nan, inf</comment></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>shaderDenormPreserveFloat16</name><comment>An implementation can preserve denormals</comment></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>shaderDenormPreserveFloat32</name><comment>An implementation can preserve denormals</comment></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>shaderDenormPreserveFloat64</name><comment>An implementation can preserve denormals</comment></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>shaderDenormFlushToZeroFloat16</name><comment>An implementation can flush to zero denormals</comment></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>shaderDenormFlushToZeroFloat32</name><comment>An implementation can flush to zero denormals</comment></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>shaderDenormFlushToZeroFloat64</name><comment>An implementation can flush to zero denormals</comment></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>shaderRoundingModeRTEFloat16</name><comment>An implementation can support RTE</comment></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>shaderRoundingModeRTEFloat32</name><comment>An implementation can support RTE</comment></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>shaderRoundingModeRTEFloat64</name><comment>An implementation can support RTE</comment></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>shaderRoundingModeRTZFloat16</name><comment>An implementation can support RTZ</comment></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>shaderRoundingModeRTZFloat32</name><comment>An implementation can support RTZ</comment></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>shaderRoundingModeRTZFloat64</name><comment>An implementation can support RTZ</comment></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceFloatControlsPropertiesKHR" alias="VkPhysicalDeviceFloatControlsProperties"/>
- <type category="struct" name="VkPhysicalDeviceHostQueryResetFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>hostQueryReset</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceHostQueryResetFeaturesEXT" alias="VkPhysicalDeviceHostQueryResetFeatures"/>
- <type category="struct" name="VkNativeBufferANDROID" structextends="VkImageCreateInfo">
- <member values="VK_STRUCTURE_TYPE_NATIVE_BUFFER_ANDROID"><type>VkStructureType</type> <name>sType</name></member>
- <member>const <type>void</type>* <name>pNext</name></member>
- <member noautovalidity="true">const <type>uint32_t</type>* <name>handle</name></member>
- <member><type>int</type> <name>stride</name></member>
- <member><type>int</type> <name>format</name></member>
- <member><type>int</type> <name>usage</name></member>
- <member><type>uint64_t</type> <name>consumer</name></member>
- <member><type>uint64_t</type> <name>producer</name></member>
- </type>
- <type category="struct" name="VkShaderResourceUsageAMD" returnedonly="true">
- <member><type>uint32_t</type> <name>numUsedVgprs</name></member>
- <member><type>uint32_t</type> <name>numUsedSgprs</name></member>
- <member><type>uint32_t</type> <name>ldsSizePerLocalWorkGroup</name></member>
- <member><type>size_t</type> <name>ldsUsageSizeInBytes</name></member>
- <member><type>size_t</type> <name>scratchMemUsageInBytes</name></member>
- </type>
- <type category="struct" name="VkShaderStatisticsInfoAMD" returnedonly="true">
- <member><type>VkShaderStageFlags</type> <name>shaderStageMask</name></member>
- <member><type>VkShaderResourceUsageAMD</type> <name>resourceUsage</name></member>
- <member><type>uint32_t</type> <name>numPhysicalVgprs</name></member>
- <member><type>uint32_t</type> <name>numPhysicalSgprs</name></member>
- <member><type>uint32_t</type> <name>numAvailableVgprs</name></member>
- <member><type>uint32_t</type> <name>numAvailableSgprs</name></member>
- <member><type>uint32_t</type> <name>computeWorkGroupSize</name>[3]</member>
- </type>
- <type category="struct" name="VkDeviceQueueGlobalPriorityCreateInfoEXT" structextends="VkDeviceQueueCreateInfo">
- <member values="VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkQueueGlobalPriorityEXT</type> <name>globalPriority</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true" noautovalidity="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>globalPriorityQuery</name></member>
- </type>
- <type category="struct" name="VkQueueFamilyGlobalPriorityPropertiesEXT" structextends="VkQueueFamilyProperties2">
- <member values="VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>uint32_t</type> <name>priorityCount</name></member>
- <member><type>VkQueueGlobalPriorityEXT</type> <name>priorities</name>[<enum>VK_MAX_GLOBAL_PRIORITY_SIZE_EXT</enum>]</member>
- </type>
- <type category="struct" name="VkDebugUtilsObjectNameInfoEXT">
- <member values="VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkObjectType</type> <name>objectType</name></member>
- <member objecttype="objectType"><type>uint64_t</type> <name>objectHandle</name></member>
- <member optional="true" len="null-terminated">const <type>char</type>* <name>pObjectName</name></member>
- </type>
- <type category="struct" name="VkDebugUtilsObjectTagInfoEXT">
- <member values="VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkObjectType</type> <name>objectType</name></member>
- <member objecttype="objectType"><type>uint64_t</type> <name>objectHandle</name></member>
- <member><type>uint64_t</type> <name>tagName</name></member>
- <member><type>size_t</type> <name>tagSize</name></member>
- <member len="tagSize">const <type>void</type>* <name>pTag</name></member>
- </type>
- <type category="struct" name="VkDebugUtilsLabelEXT">
- <member values="VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member len="null-terminated">const <type>char</type>* <name>pLabelName</name></member>
- <member><type>float</type> <name>color</name>[4]</member>
- </type>
- <type category="struct" name="VkDebugUtilsMessengerCreateInfoEXT" allowduplicate="true" structextends="VkInstanceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkDebugUtilsMessengerCreateFlagsEXT</type> <name>flags</name></member>
- <member><type>VkDebugUtilsMessageSeverityFlagsEXT</type> <name>messageSeverity</name></member>
- <member><type>VkDebugUtilsMessageTypeFlagsEXT</type> <name>messageType</name></member>
- <member><type>PFN_vkDebugUtilsMessengerCallbackEXT</type> <name>pfnUserCallback</name></member>
- <member optional="true"><type>void</type>* <name>pUserData</name></member>
- </type>
- <type category="struct" name="VkDebugUtilsMessengerCallbackDataEXT">
- <member values="VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkDebugUtilsMessengerCallbackDataFlagsEXT</type> <name>flags</name></member>
- <member optional="true" len="null-terminated">const <type>char</type>* <name>pMessageIdName</name></member>
- <member><type>int32_t</type> <name>messageIdNumber</name></member>
- <member len="null-terminated">const <type>char</type>* <name>pMessage</name></member>
- <member optional="true"><type>uint32_t</type> <name>queueLabelCount</name></member>
- <member noautovalidity="true" optional="true" len="queueLabelCount"><type>VkDebugUtilsLabelEXT</type>* <name>pQueueLabels</name></member>
- <member optional="true"><type>uint32_t</type> <name>cmdBufLabelCount</name></member>
- <member noautovalidity="true" optional="true" len="cmdBufLabelCount"><type>VkDebugUtilsLabelEXT</type>* <name>pCmdBufLabels</name></member>
- <member><type>uint32_t</type> <name>objectCount</name></member>
- <member noautovalidity="true" len="objectCount"><type>VkDebugUtilsObjectNameInfoEXT</type>* <name>pObjects</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceDeviceMemoryReportFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>deviceMemoryReport</name></member>
- </type>
- <type category="struct" name="VkDeviceDeviceMemoryReportCreateInfoEXT" allowduplicate="true" structextends="VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkDeviceMemoryReportFlagsEXT</type> <name>flags</name></member>
- <member><type>PFN_vkDeviceMemoryReportCallbackEXT</type> <name>pfnUserCallback</name></member>
- <member><type>void</type>* <name>pUserData</name></member>
- </type>
- <type category="struct" name="VkDeviceMemoryReportCallbackDataEXT" returnedonly="true">
- <member values="VK_STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkDeviceMemoryReportFlagsEXT</type> <name>flags</name></member>
- <member><type>VkDeviceMemoryReportEventTypeEXT</type> <name>type</name></member>
- <member><type>uint64_t</type> <name>memoryObjectId</name></member>
- <member><type>VkDeviceSize</type> <name>size</name></member>
- <member><type>VkObjectType</type> <name>objectType</name></member>
- <member><type>uint64_t</type> <name>objectHandle</name></member>
- <member><type>uint32_t</type> <name>heapIndex</name></member>
- </type>
- <type category="struct" name="VkImportMemoryHostPointerInfoEXT" structextends="VkMemoryAllocateInfo">
- <member values="VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkExternalMemoryHandleTypeFlagBits</type> <name>handleType</name></member>
- <member optional="false"><type>void</type>* <name>pHostPointer</name></member>
- </type>
- <type category="struct" name="VkMemoryHostPointerPropertiesEXT" returnedonly="true">
- <member values="VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member devicememorytypebits="1"><type>uint32_t</type> <name>memoryTypeBits</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceExternalMemoryHostPropertiesEXT" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member limittype="noauto"><type>VkDeviceSize</type> <name>minImportedHostPointerAlignment</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceConservativeRasterizationPropertiesEXT" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member limittype="noauto"><type>float</type> <name>primitiveOverestimationSize</name><comment>The size in pixels the primitive is enlarged at each edge during conservative rasterization</comment></member>
- <member limittype="max"><type>float</type> <name>maxExtraPrimitiveOverestimationSize</name><comment>The maximum additional overestimation the client can specify in the pipeline state</comment></member>
- <member limittype="noauto"><type>float</type> <name>extraPrimitiveOverestimationSizeGranularity</name><comment>The granularity of extra overestimation sizes the implementations supports between 0 and maxExtraOverestimationSize</comment></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>primitiveUnderestimation</name><comment>true if the implementation supports conservative rasterization underestimation mode</comment></member>
- <member limittype="noauto"><type>VkBool32</type> <name>conservativePointAndLineRasterization</name><comment>true if conservative rasterization also applies to points and lines</comment></member>
- <member limittype="noauto"><type>VkBool32</type> <name>degenerateTrianglesRasterized</name><comment>true if degenerate triangles (those with zero area after snap) are rasterized</comment></member>
- <member limittype="noauto"><type>VkBool32</type> <name>degenerateLinesRasterized</name><comment>true if degenerate lines (those with zero length after snap) are rasterized</comment></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>fullyCoveredFragmentShaderInputVariable</name><comment>true if the implementation supports the FullyCoveredEXT SPIR-V builtin fragment shader input variable</comment></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>conservativeRasterizationPostDepthCoverage</name><comment>true if the implementation supports both conservative rasterization and post depth coverage sample coverage mask</comment></member>
- </type>
- <type category="struct" name="VkCalibratedTimestampInfoEXT">
- <member values="VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkTimeDomainEXT</type> <name>timeDomain</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceShaderCorePropertiesAMD" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member limittype="noauto"><type>uint32_t</type> <name>shaderEngineCount</name><comment>number of shader engines</comment></member>
- <member limittype="noauto"><type>uint32_t</type> <name>shaderArraysPerEngineCount</name><comment>number of shader arrays</comment></member>
- <member limittype="noauto"><type>uint32_t</type> <name>computeUnitsPerShaderArray</name><comment>number of physical CUs per shader array</comment></member>
- <member limittype="noauto"><type>uint32_t</type> <name>simdPerComputeUnit</name><comment>number of SIMDs per compute unit</comment></member>
- <member limittype="noauto"><type>uint32_t</type> <name>wavefrontsPerSimd</name><comment>number of wavefront slots in each SIMD</comment></member>
- <member limittype="noauto"><type>uint32_t</type> <name>wavefrontSize</name><comment>maximum number of threads per wavefront</comment></member>
- <member limittype="noauto"><type>uint32_t</type> <name>sgprsPerSimd</name><comment>number of physical SGPRs per SIMD</comment></member>
- <member limittype="min"><type>uint32_t</type> <name>minSgprAllocation</name><comment>minimum number of SGPRs that can be allocated by a wave</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>maxSgprAllocation</name><comment>number of available SGPRs</comment></member>
- <member limittype="noauto"><type>uint32_t</type> <name>sgprAllocationGranularity</name><comment>SGPRs are allocated in groups of this size</comment></member>
- <member limittype="noauto"><type>uint32_t</type> <name>vgprsPerSimd</name><comment>number of physical VGPRs per SIMD</comment></member>
- <member limittype="min"><type>uint32_t</type> <name>minVgprAllocation</name><comment>minimum number of VGPRs that can be allocated by a wave</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>maxVgprAllocation</name><comment>number of available VGPRs</comment></member>
- <member limittype="noauto"><type>uint32_t</type> <name>vgprAllocationGranularity</name><comment>VGPRs are allocated in groups of this size</comment></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceShaderCoreProperties2AMD" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name><comment>Pointer to next structure</comment></member>
- <member limittype="bitmask"><type>VkShaderCorePropertiesFlagsAMD</type> <name>shaderCoreFeatures</name><comment>features supported by the shader core</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>activeComputeUnitCount</name><comment>number of active compute units across all shader engines/arrays</comment></member>
- </type>
- <type category="struct" name="VkPipelineRasterizationConservativeStateCreateInfoEXT" structextends="VkPipelineRasterizationStateCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkPipelineRasterizationConservativeStateCreateFlagsEXT</type> <name>flags</name><comment>Reserved</comment></member>
- <member><type>VkConservativeRasterizationModeEXT</type> <name>conservativeRasterizationMode</name><comment>Conservative rasterization mode</comment></member>
- <member><type>float</type> <name>extraPrimitiveOverestimationSize</name><comment>Extra overestimation to add to the primitive</comment></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceDescriptorIndexingFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>shaderInputAttachmentArrayDynamicIndexing</name></member>
- <member><type>VkBool32</type> <name>shaderUniformTexelBufferArrayDynamicIndexing</name></member>
- <member><type>VkBool32</type> <name>shaderStorageTexelBufferArrayDynamicIndexing</name></member>
- <member><type>VkBool32</type> <name>shaderUniformBufferArrayNonUniformIndexing</name></member>
- <member><type>VkBool32</type> <name>shaderSampledImageArrayNonUniformIndexing</name></member>
- <member><type>VkBool32</type> <name>shaderStorageBufferArrayNonUniformIndexing</name></member>
- <member><type>VkBool32</type> <name>shaderStorageImageArrayNonUniformIndexing</name></member>
- <member><type>VkBool32</type> <name>shaderInputAttachmentArrayNonUniformIndexing</name></member>
- <member><type>VkBool32</type> <name>shaderUniformTexelBufferArrayNonUniformIndexing</name></member>
- <member><type>VkBool32</type> <name>shaderStorageTexelBufferArrayNonUniformIndexing</name></member>
- <member><type>VkBool32</type> <name>descriptorBindingUniformBufferUpdateAfterBind</name></member>
- <member><type>VkBool32</type> <name>descriptorBindingSampledImageUpdateAfterBind</name></member>
- <member><type>VkBool32</type> <name>descriptorBindingStorageImageUpdateAfterBind</name></member>
- <member><type>VkBool32</type> <name>descriptorBindingStorageBufferUpdateAfterBind</name></member>
- <member><type>VkBool32</type> <name>descriptorBindingUniformTexelBufferUpdateAfterBind</name></member>
- <member><type>VkBool32</type> <name>descriptorBindingStorageTexelBufferUpdateAfterBind</name></member>
- <member><type>VkBool32</type> <name>descriptorBindingUpdateUnusedWhilePending</name></member>
- <member><type>VkBool32</type> <name>descriptorBindingPartiallyBound</name></member>
- <member><type>VkBool32</type> <name>descriptorBindingVariableDescriptorCount</name></member>
- <member><type>VkBool32</type> <name>runtimeDescriptorArray</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceDescriptorIndexingFeaturesEXT" alias="VkPhysicalDeviceDescriptorIndexingFeatures"/>
- <type category="struct" name="VkPhysicalDeviceDescriptorIndexingProperties" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxUpdateAfterBindDescriptorsInAllPools</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>shaderUniformBufferArrayNonUniformIndexingNative</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>shaderSampledImageArrayNonUniformIndexingNative</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>shaderStorageBufferArrayNonUniformIndexingNative</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>shaderStorageImageArrayNonUniformIndexingNative</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>shaderInputAttachmentArrayNonUniformIndexingNative</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>robustBufferAccessUpdateAfterBind</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>quadDivergentImplicitLod</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxPerStageDescriptorUpdateAfterBindSamplers</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxPerStageDescriptorUpdateAfterBindUniformBuffers</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxPerStageDescriptorUpdateAfterBindStorageBuffers</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxPerStageDescriptorUpdateAfterBindSampledImages</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxPerStageDescriptorUpdateAfterBindStorageImages</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxPerStageDescriptorUpdateAfterBindInputAttachments</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxPerStageUpdateAfterBindResources</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxDescriptorSetUpdateAfterBindSamplers</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxDescriptorSetUpdateAfterBindUniformBuffers</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxDescriptorSetUpdateAfterBindUniformBuffersDynamic</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxDescriptorSetUpdateAfterBindStorageBuffers</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxDescriptorSetUpdateAfterBindStorageBuffersDynamic</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxDescriptorSetUpdateAfterBindSampledImages</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxDescriptorSetUpdateAfterBindStorageImages</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxDescriptorSetUpdateAfterBindInputAttachments</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceDescriptorIndexingPropertiesEXT" alias="VkPhysicalDeviceDescriptorIndexingProperties"/>
- <type category="struct" name="VkDescriptorSetLayoutBindingFlagsCreateInfo" structextends="VkDescriptorSetLayoutCreateInfo">
- <member values="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>uint32_t</type> <name>bindingCount</name></member>
- <member len="bindingCount" optional="false,true">const <type>VkDescriptorBindingFlags</type>* <name>pBindingFlags</name></member>
- </type>
- <type category="struct" name="VkDescriptorSetLayoutBindingFlagsCreateInfoEXT" alias="VkDescriptorSetLayoutBindingFlagsCreateInfo"/>
- <type category="struct" name="VkDescriptorSetVariableDescriptorCountAllocateInfo" structextends="VkDescriptorSetAllocateInfo">
- <member values="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>uint32_t</type> <name>descriptorSetCount</name></member>
- <member len="descriptorSetCount">const <type>uint32_t</type>* <name>pDescriptorCounts</name></member>
- </type>
- <type category="struct" name="VkDescriptorSetVariableDescriptorCountAllocateInfoEXT" alias="VkDescriptorSetVariableDescriptorCountAllocateInfo"/>
- <type category="struct" name="VkDescriptorSetVariableDescriptorCountLayoutSupport" structextends="VkDescriptorSetLayoutSupport" returnedonly="true">
- <member values="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>uint32_t</type> <name>maxVariableDescriptorCount</name></member>
- </type>
- <type category="struct" name="VkDescriptorSetVariableDescriptorCountLayoutSupportEXT" alias="VkDescriptorSetVariableDescriptorCountLayoutSupport"/>
- <type category="struct" name="VkAttachmentDescription2">
- <member values="VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkAttachmentDescriptionFlags</type> <name>flags</name></member>
- <member><type>VkFormat</type> <name>format</name></member>
- <member><type>VkSampleCountFlagBits</type> <name>samples</name></member>
- <member><type>VkAttachmentLoadOp</type> <name>loadOp</name><comment>Load operation for color or depth data</comment></member>
- <member><type>VkAttachmentStoreOp</type> <name>storeOp</name><comment>Store operation for color or depth data</comment></member>
- <member><type>VkAttachmentLoadOp</type> <name>stencilLoadOp</name><comment>Load operation for stencil data</comment></member>
- <member><type>VkAttachmentStoreOp</type> <name>stencilStoreOp</name><comment>Store operation for stencil data</comment></member>
- <member><type>VkImageLayout</type> <name>initialLayout</name></member>
- <member><type>VkImageLayout</type> <name>finalLayout</name></member>
- </type>
- <type category="struct" name="VkAttachmentDescription2KHR" alias="VkAttachmentDescription2"/>
- <type category="struct" name="VkAttachmentReference2">
- <member values="VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>uint32_t</type> <name>attachment</name></member>
- <member><type>VkImageLayout</type> <name>layout</name></member>
- <member noautovalidity="true"><type>VkImageAspectFlags</type> <name>aspectMask</name></member>
- </type>
- <type category="struct" name="VkAttachmentReference2KHR" alias="VkAttachmentReference2"/>
- <type category="struct" name="VkSubpassDescription2">
- <member values="VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkSubpassDescriptionFlags</type> <name>flags</name></member>
- <member><type>VkPipelineBindPoint</type> <name>pipelineBindPoint</name></member>
- <member><type>uint32_t</type> <name>viewMask</name></member>
- <member optional="true"><type>uint32_t</type> <name>inputAttachmentCount</name></member>
- <member len="inputAttachmentCount">const <type>VkAttachmentReference2</type>* <name>pInputAttachments</name></member>
- <member optional="true"><type>uint32_t</type> <name>colorAttachmentCount</name></member>
- <member len="colorAttachmentCount">const <type>VkAttachmentReference2</type>* <name>pColorAttachments</name></member>
- <member optional="true" len="colorAttachmentCount">const <type>VkAttachmentReference2</type>* <name>pResolveAttachments</name></member>
- <member optional="true">const <type>VkAttachmentReference2</type>* <name>pDepthStencilAttachment</name></member>
- <member optional="true"><type>uint32_t</type> <name>preserveAttachmentCount</name></member>
- <member len="preserveAttachmentCount">const <type>uint32_t</type>* <name>pPreserveAttachments</name></member>
- </type>
- <type category="struct" name="VkSubpassDescription2KHR" alias="VkSubpassDescription2"/>
- <type category="struct" name="VkSubpassDependency2">
- <member values="VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>uint32_t</type> <name>srcSubpass</name></member>
- <member><type>uint32_t</type> <name>dstSubpass</name></member>
- <member optional="true"><type>VkPipelineStageFlags</type> <name>srcStageMask</name></member>
- <member optional="true"><type>VkPipelineStageFlags</type> <name>dstStageMask</name></member>
- <member optional="true"><type>VkAccessFlags</type> <name>srcAccessMask</name></member>
- <member optional="true"><type>VkAccessFlags</type> <name>dstAccessMask</name></member>
- <member optional="true"><type>VkDependencyFlags</type> <name>dependencyFlags</name></member>
- <member><type>int32_t</type> <name>viewOffset</name></member>
- </type>
- <type category="struct" name="VkSubpassDependency2KHR" alias="VkSubpassDependency2"/>
- <type category="struct" name="VkRenderPassCreateInfo2">
- <member values="VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkRenderPassCreateFlags</type> <name>flags</name></member>
- <member optional="true"><type>uint32_t</type> <name>attachmentCount</name></member>
- <member len="attachmentCount">const <type>VkAttachmentDescription2</type>* <name>pAttachments</name></member>
- <member><type>uint32_t</type> <name>subpassCount</name></member>
- <member len="subpassCount">const <type>VkSubpassDescription2</type>* <name>pSubpasses</name></member>
- <member optional="true"><type>uint32_t</type> <name>dependencyCount</name></member>
- <member len="dependencyCount">const <type>VkSubpassDependency2</type>* <name>pDependencies</name></member>
- <member optional="true"><type>uint32_t</type> <name>correlatedViewMaskCount</name></member>
- <member len="correlatedViewMaskCount">const <type>uint32_t</type>* <name>pCorrelatedViewMasks</name></member>
- </type>
- <type category="struct" name="VkRenderPassCreateInfo2KHR" alias="VkRenderPassCreateInfo2"/>
- <type category="struct" name="VkSubpassBeginInfo">
- <member values="VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkSubpassContents</type> <name>contents</name></member>
- </type>
- <type category="struct" name="VkSubpassBeginInfoKHR" alias="VkSubpassBeginInfo"/>
- <type category="struct" name="VkSubpassEndInfo">
- <member values="VK_STRUCTURE_TYPE_SUBPASS_END_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- </type>
- <type category="struct" name="VkSubpassEndInfoKHR" alias="VkSubpassEndInfo"/>
- <type category="struct" name="VkPhysicalDeviceTimelineSemaphoreFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>timelineSemaphore</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceTimelineSemaphoreFeaturesKHR" alias="VkPhysicalDeviceTimelineSemaphoreFeatures"/>
- <type category="struct" name="VkPhysicalDeviceTimelineSemaphoreProperties" structextends="VkPhysicalDeviceProperties2" returnedonly="true">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member limittype="max"><type>uint64_t</type> <name>maxTimelineSemaphoreValueDifference</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceTimelineSemaphorePropertiesKHR" alias="VkPhysicalDeviceTimelineSemaphoreProperties"/>
- <type category="struct" name="VkSemaphoreTypeCreateInfo" structextends="VkSemaphoreCreateInfo,VkPhysicalDeviceExternalSemaphoreInfo">
- <member values="VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkSemaphoreType</type> <name>semaphoreType</name></member>
- <member><type>uint64_t</type> <name>initialValue</name></member>
- </type>
- <type category="struct" name="VkSemaphoreTypeCreateInfoKHR" alias="VkSemaphoreTypeCreateInfo"/>
- <type category="struct" name="VkTimelineSemaphoreSubmitInfo" structextends="VkSubmitInfo,VkBindSparseInfo">
- <member values="VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>uint32_t</type> <name>waitSemaphoreValueCount</name></member>
- <member optional="true" len="waitSemaphoreValueCount">const <type>uint64_t</type>* <name>pWaitSemaphoreValues</name></member>
- <member optional="true"><type>uint32_t</type> <name>signalSemaphoreValueCount</name></member>
- <member optional="true" len="signalSemaphoreValueCount">const <type>uint64_t</type>* <name>pSignalSemaphoreValues</name></member>
- </type>
- <type category="struct" name="VkTimelineSemaphoreSubmitInfoKHR" alias="VkTimelineSemaphoreSubmitInfo"/>
- <type category="struct" name="VkSemaphoreWaitInfo">
- <member values="VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkSemaphoreWaitFlags</type> <name>flags</name></member>
- <member><type>uint32_t</type> <name>semaphoreCount</name></member>
- <member len="semaphoreCount">const <type>VkSemaphore</type>* <name>pSemaphores</name></member>
- <member len="semaphoreCount">const <type>uint64_t</type>* <name>pValues</name></member>
- </type>
- <type category="struct" name="VkSemaphoreWaitInfoKHR" alias="VkSemaphoreWaitInfo"/>
- <type category="struct" name="VkSemaphoreSignalInfo">
- <member values="VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkSemaphore</type> <name>semaphore</name></member>
- <member><type>uint64_t</type> <name>value</name></member>
- </type>
- <type category="struct" name="VkSemaphoreSignalInfoKHR" alias="VkSemaphoreSignalInfo"/>
- <type category="struct" name="VkVertexInputBindingDivisorDescriptionEXT">
- <member><type>uint32_t</type> <name>binding</name></member>
- <member><type>uint32_t</type> <name>divisor</name></member>
- </type>
- <type category="struct" name="VkPipelineVertexInputDivisorStateCreateInfoEXT" structextends="VkPipelineVertexInputStateCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>uint32_t</type> <name>vertexBindingDivisorCount</name></member>
- <member len="vertexBindingDivisorCount">const <type>VkVertexInputBindingDivisorDescriptionEXT</type>* <name>pVertexBindingDivisors</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxVertexAttribDivisor</name><comment>max value of vertex attribute divisor</comment></member>
- </type>
- <type category="struct" name="VkPhysicalDevicePCIBusInfoPropertiesEXT" structextends="VkPhysicalDeviceProperties2" returnedonly="true">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member limittype="noauto"><type>uint32_t</type> <name>pciDomain</name></member>
- <member limittype="noauto"><type>uint32_t</type> <name>pciBus</name></member>
- <member limittype="noauto"><type>uint32_t</type> <name>pciDevice</name></member>
- <member limittype="noauto"><type>uint32_t</type> <name>pciFunction</name></member>
- </type>
- <type category="struct" name="VkImportAndroidHardwareBufferInfoANDROID" structextends="VkMemoryAllocateInfo">
- <member values="VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member>struct <type>AHardwareBuffer</type>* <name>buffer</name></member>
- </type>
- <type category="struct" name="VkAndroidHardwareBufferUsageANDROID" structextends="VkImageFormatProperties2" returnedonly="true">
- <member values="VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>uint64_t</type> <name>androidHardwareBufferUsage</name></member>
- </type>
- <type category="struct" name="VkAndroidHardwareBufferPropertiesANDROID" returnedonly="true">
- <member values="VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkDeviceSize</type> <name>allocationSize</name></member>
- <member devicememorytypebits="1"><type>uint32_t</type> <name>memoryTypeBits</name></member>
- </type>
- <type category="struct" name="VkMemoryGetAndroidHardwareBufferInfoANDROID">
- <member values="VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member devicememoryhandle="1"><type>VkDeviceMemory</type> <name>memory</name></member>
- </type>
- <type category="struct" name="VkAndroidHardwareBufferFormatPropertiesANDROID" structextends="VkAndroidHardwareBufferPropertiesANDROID" returnedonly="true">
- <member values="VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkFormat</type> <name>format</name></member>
- <member><type>uint64_t</type> <name>externalFormat</name></member>
- <member><type>VkFormatFeatureFlags</type> <name>formatFeatures</name></member>
- <member><type>VkComponentMapping</type> <name>samplerYcbcrConversionComponents</name></member>
- <member><type>VkSamplerYcbcrModelConversion</type> <name>suggestedYcbcrModel</name></member>
- <member><type>VkSamplerYcbcrRange</type> <name>suggestedYcbcrRange</name></member>
- <member><type>VkChromaLocation</type> <name>suggestedXChromaOffset</name></member>
- <member><type>VkChromaLocation</type> <name>suggestedYChromaOffset</name></member>
- </type>
- <type category="struct" name="VkCommandBufferInheritanceConditionalRenderingInfoEXT" structextends="VkCommandBufferInheritanceInfo">
- <member values="VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>conditionalRenderingEnable</name><comment>Whether this secondary command buffer may be executed during an active conditional rendering</comment></member>
- </type>
- <type category="struct" name="VkExternalFormatANDROID" structextends="VkImageCreateInfo,VkSamplerYcbcrConversionCreateInfo">
- <member values="VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>uint64_t</type> <name>externalFormat</name></member>
- </type>
- <type category="struct" name="VkPhysicalDevice8BitStorageFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>storageBuffer8BitAccess</name><comment>8-bit integer variables supported in StorageBuffer</comment></member>
- <member><type>VkBool32</type> <name>uniformAndStorageBuffer8BitAccess</name><comment>8-bit integer variables supported in StorageBuffer and Uniform</comment></member>
- <member><type>VkBool32</type> <name>storagePushConstant8</name><comment>8-bit integer variables supported in PushConstant</comment></member>
- </type>
- <type category="struct" name="VkPhysicalDevice8BitStorageFeaturesKHR" alias="VkPhysicalDevice8BitStorageFeatures"/>
- <type category="struct" name="VkPhysicalDeviceConditionalRenderingFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>conditionalRendering</name></member>
- <member><type>VkBool32</type> <name>inheritedConditionalRendering</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceVulkanMemoryModelFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>vulkanMemoryModel</name></member>
- <member><type>VkBool32</type> <name>vulkanMemoryModelDeviceScope</name></member>
- <member><type>VkBool32</type> <name>vulkanMemoryModelAvailabilityVisibilityChains</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceVulkanMemoryModelFeaturesKHR" alias="VkPhysicalDeviceVulkanMemoryModelFeatures"/>
- <type category="struct" name="VkPhysicalDeviceShaderAtomicInt64Features" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>shaderBufferInt64Atomics</name></member>
- <member><type>VkBool32</type> <name>shaderSharedInt64Atomics</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceShaderAtomicInt64FeaturesKHR" alias="VkPhysicalDeviceShaderAtomicInt64Features"/>
- <type category="struct" name="VkPhysicalDeviceShaderAtomicFloatFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>shaderBufferFloat32Atomics</name></member>
- <member><type>VkBool32</type> <name>shaderBufferFloat32AtomicAdd</name></member>
- <member><type>VkBool32</type> <name>shaderBufferFloat64Atomics</name></member>
- <member><type>VkBool32</type> <name>shaderBufferFloat64AtomicAdd</name></member>
- <member><type>VkBool32</type> <name>shaderSharedFloat32Atomics</name></member>
- <member><type>VkBool32</type> <name>shaderSharedFloat32AtomicAdd</name></member>
- <member><type>VkBool32</type> <name>shaderSharedFloat64Atomics</name></member>
- <member><type>VkBool32</type> <name>shaderSharedFloat64AtomicAdd</name></member>
- <member><type>VkBool32</type> <name>shaderImageFloat32Atomics</name></member>
- <member><type>VkBool32</type> <name>shaderImageFloat32AtomicAdd</name></member>
- <member><type>VkBool32</type> <name>sparseImageFloat32Atomics</name></member>
- <member><type>VkBool32</type> <name>sparseImageFloat32AtomicAdd</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>shaderBufferFloat16Atomics</name></member>
- <member><type>VkBool32</type> <name>shaderBufferFloat16AtomicAdd</name></member>
- <member><type>VkBool32</type> <name>shaderBufferFloat16AtomicMinMax</name></member>
- <member><type>VkBool32</type> <name>shaderBufferFloat32AtomicMinMax</name></member>
- <member><type>VkBool32</type> <name>shaderBufferFloat64AtomicMinMax</name></member>
- <member><type>VkBool32</type> <name>shaderSharedFloat16Atomics</name></member>
- <member><type>VkBool32</type> <name>shaderSharedFloat16AtomicAdd</name></member>
- <member><type>VkBool32</type> <name>shaderSharedFloat16AtomicMinMax</name></member>
- <member><type>VkBool32</type> <name>shaderSharedFloat32AtomicMinMax</name></member>
- <member><type>VkBool32</type> <name>shaderSharedFloat64AtomicMinMax</name></member>
- <member><type>VkBool32</type> <name>shaderImageFloat32AtomicMinMax</name></member>
- <member><type>VkBool32</type> <name>sparseImageFloat32AtomicMinMax</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>vertexAttributeInstanceRateDivisor</name></member>
- <member><type>VkBool32</type> <name>vertexAttributeInstanceRateZeroDivisor</name></member>
- </type>
- <type category="struct" name="VkQueueFamilyCheckpointPropertiesNV" structextends="VkQueueFamilyProperties2" returnedonly="true">
- <member values="VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkPipelineStageFlags</type> <name>checkpointExecutionStageMask</name></member>
- </type>
- <type category="struct" name="VkCheckpointDataNV" returnedonly="true">
- <member values="VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkPipelineStageFlagBits</type> <name>stage</name></member>
- <member noautovalidity="true"><type>void</type>* <name>pCheckpointMarker</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceDepthStencilResolveProperties" structextends="VkPhysicalDeviceProperties2" returnedonly="true">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member limittype="bitmask"><type>VkResolveModeFlags</type> <name>supportedDepthResolveModes</name><comment>supported depth resolve modes</comment></member>
- <member limittype="bitmask"><type>VkResolveModeFlags</type> <name>supportedStencilResolveModes</name><comment>supported stencil resolve modes</comment></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>independentResolveNone</name><comment>depth and stencil resolve modes can be set independently if one of them is none</comment></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>independentResolve</name><comment>depth and stencil resolve modes can be set independently</comment></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceDepthStencilResolvePropertiesKHR" alias="VkPhysicalDeviceDepthStencilResolveProperties"/>
- <type category="struct" name="VkSubpassDescriptionDepthStencilResolve" structextends="VkSubpassDescription2">
- <member values="VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member noautovalidity="true"><type>VkResolveModeFlagBits</type> <name>depthResolveMode</name><comment>depth resolve mode</comment></member>
- <member noautovalidity="true"><type>VkResolveModeFlagBits</type> <name>stencilResolveMode</name><comment>stencil resolve mode</comment></member>
- <member optional="true">const <type>VkAttachmentReference2</type>* <name>pDepthStencilResolveAttachment</name><comment>depth/stencil resolve attachment</comment></member>
- </type>
- <type category="struct" name="VkSubpassDescriptionDepthStencilResolveKHR" alias="VkSubpassDescriptionDepthStencilResolve"/>
- <type category="struct" name="VkImageViewASTCDecodeModeEXT" structextends="VkImageViewCreateInfo">
- <member values="VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkFormat</type> <name>decodeMode</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceASTCDecodeFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>decodeModeSharedExponent</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceTransformFeedbackFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>transformFeedback</name></member>
- <member><type>VkBool32</type> <name>geometryStreams</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceTransformFeedbackPropertiesEXT" structextends="VkPhysicalDeviceProperties2" returnedonly="true">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxTransformFeedbackStreams</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxTransformFeedbackBuffers</name></member>
- <member limittype="max"><type>VkDeviceSize</type> <name>maxTransformFeedbackBufferSize</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxTransformFeedbackStreamDataSize</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxTransformFeedbackBufferDataSize</name></member>
- <member limittype="noauto"><type>uint32_t</type> <name>maxTransformFeedbackBufferDataStride</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>transformFeedbackQueries</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>transformFeedbackStreamsLinesTriangles</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>transformFeedbackRasterizationStreamSelect</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>transformFeedbackDraw</name></member>
- </type>
- <type category="struct" name="VkPipelineRasterizationStateStreamCreateInfoEXT" structextends="VkPipelineRasterizationStateCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkPipelineRasterizationStateStreamCreateFlagsEXT</type> <name>flags</name></member>
- <member><type>uint32_t</type> <name>rasterizationStream</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>representativeFragmentTest</name></member>
- </type>
- <type category="struct" name="VkPipelineRepresentativeFragmentTestStateCreateInfoNV" structextends="VkGraphicsPipelineCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>representativeFragmentTestEnable</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceExclusiveScissorFeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>exclusiveScissor</name></member>
- </type>
- <type category="struct" name="VkPipelineViewportExclusiveScissorStateCreateInfoNV" structextends="VkPipelineViewportStateCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>uint32_t</type> <name>exclusiveScissorCount</name></member>
- <member noautovalidity="true" len="exclusiveScissorCount">const <type>VkRect2D</type>* <name>pExclusiveScissors</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceCornerSampledImageFeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>cornerSampledImage</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceComputeShaderDerivativesFeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>computeDerivativeGroupQuads</name></member>
- <member><type>VkBool32</type> <name>computeDerivativeGroupLinear</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>fragmentShaderBarycentric</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceShaderImageFootprintFeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>imageFootprint</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>dedicatedAllocationImageAliasing</name></member>
- </type>
- <type category="struct" name="VkShadingRatePaletteNV">
- <member><type>uint32_t</type> <name>shadingRatePaletteEntryCount</name></member>
- <member len="shadingRatePaletteEntryCount">const <type>VkShadingRatePaletteEntryNV</type>* <name>pShadingRatePaletteEntries</name></member>
- </type>
- <type category="struct" name="VkPipelineViewportShadingRateImageStateCreateInfoNV" structextends="VkPipelineViewportStateCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>shadingRateImageEnable</name></member>
- <member optional="true"><type>uint32_t</type> <name>viewportCount</name></member>
- <member noautovalidity="true" len="viewportCount">const <type>VkShadingRatePaletteNV</type>* <name>pShadingRatePalettes</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceShadingRateImageFeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>shadingRateImage</name></member>
- <member><type>VkBool32</type> <name>shadingRateCoarseSampleOrder</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceShadingRateImagePropertiesNV" structextends="VkPhysicalDeviceProperties2" returnedonly="true">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member limittype="noauto"><type>VkExtent2D</type> <name>shadingRateTexelSize</name></member>
- <member limittype="max"><type>uint32_t</type> <name>shadingRatePaletteSize</name></member>
- <member limittype="max"><type>uint32_t</type> <name>shadingRateMaxCoarseSamples</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceInvocationMaskFeaturesHUAWEI" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>invocationMask</name></member>
- </type>
- <type category="struct" name="VkCoarseSampleLocationNV">
- <member><type>uint32_t</type> <name>pixelX</name></member>
- <member><type>uint32_t</type> <name>pixelY</name></member>
- <member><type>uint32_t</type> <name>sample</name></member>
- </type>
- <type category="struct" name="VkCoarseSampleOrderCustomNV">
- <member><type>VkShadingRatePaletteEntryNV</type> <name>shadingRate</name></member>
- <member><type>uint32_t</type> <name>sampleCount</name></member>
- <member><type>uint32_t</type> <name>sampleLocationCount</name></member>
- <member len="sampleLocationCount">const <type>VkCoarseSampleLocationNV</type>* <name>pSampleLocations</name></member>
- </type>
- <type category="struct" name="VkPipelineViewportCoarseSampleOrderStateCreateInfoNV" structextends="VkPipelineViewportStateCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkCoarseSampleOrderTypeNV</type> <name>sampleOrderType</name></member>
- <member optional="true"><type>uint32_t</type> <name>customSampleOrderCount</name></member>
- <member len="customSampleOrderCount">const <type>VkCoarseSampleOrderCustomNV</type>* <name>pCustomSampleOrders</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceMeshShaderFeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>taskShader</name></member>
- <member><type>VkBool32</type> <name>meshShader</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceMeshShaderPropertiesNV" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxDrawMeshTasksCount</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxTaskWorkGroupInvocations</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxTaskWorkGroupSize</name>[3]</member>
- <member limittype="max"><type>uint32_t</type> <name>maxTaskTotalMemorySize</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxTaskOutputCount</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxMeshWorkGroupInvocations</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxMeshWorkGroupSize</name>[3]</member>
- <member limittype="max"><type>uint32_t</type> <name>maxMeshTotalMemorySize</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxMeshOutputVertices</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxMeshOutputPrimitives</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxMeshMultiviewViewCount</name></member>
- <member limittype="noauto"><type>uint32_t</type> <name>meshOutputPerVertexGranularity</name></member>
- <member limittype="noauto"><type>uint32_t</type> <name>meshOutputPerPrimitiveGranularity</name></member>
- </type>
- <type category="struct" name="VkDrawMeshTasksIndirectCommandNV">
- <member><type>uint32_t</type> <name>taskCount</name></member>
- <member><type>uint32_t</type> <name>firstTask</name></member>
- </type>
- <type category="struct" name="VkRayTracingShaderGroupCreateInfoNV">
- <member values="VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkRayTracingShaderGroupTypeKHR</type> <name>type</name></member>
- <member><type>uint32_t</type> <name>generalShader</name></member>
- <member><type>uint32_t</type> <name>closestHitShader</name></member>
- <member><type>uint32_t</type> <name>anyHitShader</name></member>
- <member><type>uint32_t</type> <name>intersectionShader</name></member>
- </type>
- <type category="struct" name="VkRayTracingShaderGroupCreateInfoKHR">
- <member values="VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkRayTracingShaderGroupTypeKHR</type> <name>type</name></member>
- <member><type>uint32_t</type> <name>generalShader</name></member>
- <member><type>uint32_t</type> <name>closestHitShader</name></member>
- <member><type>uint32_t</type> <name>anyHitShader</name></member>
- <member><type>uint32_t</type> <name>intersectionShader</name></member>
- <member optional="true">const <type>void</type>* <name>pShaderGroupCaptureReplayHandle</name></member>
- </type>
- <type category="struct" name="VkRayTracingPipelineCreateInfoNV">
- <member values="VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkPipelineCreateFlags</type> <name>flags</name><comment>Pipeline creation flags</comment></member>
- <member><type>uint32_t</type> <name>stageCount</name></member>
- <member len="stageCount">const <type>VkPipelineShaderStageCreateInfo</type>* <name>pStages</name><comment>One entry for each active shader stage</comment></member>
- <member><type>uint32_t</type> <name>groupCount</name></member>
- <member len="groupCount">const <type>VkRayTracingShaderGroupCreateInfoNV</type>* <name>pGroups</name></member>
- <member><type>uint32_t</type> <name>maxRecursionDepth</name></member>
- <member><type>VkPipelineLayout</type> <name>layout</name><comment>Interface layout of the pipeline</comment></member>
- <member noautovalidity="true" optional="true"><type>VkPipeline</type> <name>basePipelineHandle</name><comment>If VK_PIPELINE_CREATE_DERIVATIVE_BIT is set and this value is nonzero, it specifies the handle of the base pipeline this is a derivative of</comment></member>
- <member><type>int32_t</type> <name>basePipelineIndex</name><comment>If VK_PIPELINE_CREATE_DERIVATIVE_BIT is set and this value is not -1, it specifies an index into pCreateInfos of the base pipeline this is a derivative of</comment></member>
- </type>
- <type category="struct" name="VkRayTracingPipelineCreateInfoKHR">
- <member values="VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkPipelineCreateFlags</type> <name>flags</name><comment>Pipeline creation flags</comment></member>
- <member optional="true"><type>uint32_t</type> <name>stageCount</name></member>
- <member len="stageCount">const <type>VkPipelineShaderStageCreateInfo</type>* <name>pStages</name><comment>One entry for each active shader stage</comment></member>
- <member optional="true"><type>uint32_t</type> <name>groupCount</name></member>
- <member len="groupCount">const <type>VkRayTracingShaderGroupCreateInfoKHR</type>* <name>pGroups</name></member>
- <member><type>uint32_t</type> <name>maxPipelineRayRecursionDepth</name></member>
- <member optional="true">const <type>VkPipelineLibraryCreateInfoKHR</type>* <name>pLibraryInfo</name></member>
- <member optional="true">const <type>VkRayTracingPipelineInterfaceCreateInfoKHR</type>* <name>pLibraryInterface</name></member>
- <member optional="true">const <type>VkPipelineDynamicStateCreateInfo</type>* <name>pDynamicState</name></member>
- <member><type>VkPipelineLayout</type> <name>layout</name><comment>Interface layout of the pipeline</comment></member>
- <member noautovalidity="true" optional="true"><type>VkPipeline</type> <name>basePipelineHandle</name><comment>If VK_PIPELINE_CREATE_DERIVATIVE_BIT is set and this value is nonzero, it specifies the handle of the base pipeline this is a derivative of</comment></member>
- <member><type>int32_t</type> <name>basePipelineIndex</name><comment>If VK_PIPELINE_CREATE_DERIVATIVE_BIT is set and this value is not -1, it specifies an index into pCreateInfos of the base pipeline this is a derivative of</comment></member>
- </type>
- <type category="struct" name="VkGeometryTrianglesNV">
- <member values="VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkBuffer</type> <name>vertexData</name></member>
- <member><type>VkDeviceSize</type> <name>vertexOffset</name></member>
- <member><type>uint32_t</type> <name>vertexCount</name></member>
- <member><type>VkDeviceSize</type> <name>vertexStride</name></member>
- <member><type>VkFormat</type> <name>vertexFormat</name></member>
- <member optional="true"><type>VkBuffer</type> <name>indexData</name></member>
- <member><type>VkDeviceSize</type> <name>indexOffset</name></member>
- <member><type>uint32_t</type> <name>indexCount</name></member>
- <member><type>VkIndexType</type> <name>indexType</name></member>
- <member optional="true"><type>VkBuffer</type> <name>transformData</name><comment>Optional reference to array of floats representing a 3x4 row major affine transformation matrix.</comment></member>
- <member><type>VkDeviceSize</type> <name>transformOffset</name></member>
- </type>
- <type category="struct" name="VkGeometryAABBNV">
- <member values="VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkBuffer</type> <name>aabbData</name></member>
- <member><type>uint32_t</type> <name>numAABBs</name></member>
- <member><type>uint32_t</type> <name>stride</name><comment>Stride in bytes between AABBs</comment></member>
- <member><type>VkDeviceSize</type> <name>offset</name><comment>Offset in bytes of the first AABB in aabbData</comment></member>
- </type>
- <type category="struct" name="VkGeometryDataNV">
- <member><type>VkGeometryTrianglesNV</type> <name>triangles</name></member>
- <member><type>VkGeometryAABBNV</type> <name>aabbs</name></member>
- </type>
- <type category="struct" name="VkGeometryNV">
- <member values="VK_STRUCTURE_TYPE_GEOMETRY_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkGeometryTypeKHR</type> <name>geometryType</name></member>
- <member><type>VkGeometryDataNV</type> <name>geometry</name></member>
- <member optional="true"><type>VkGeometryFlagsKHR</type> <name>flags</name></member>
- </type>
- <type category="struct" name="VkAccelerationStructureInfoNV">
- <member values="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkAccelerationStructureTypeNV</type> <name>type</name></member>
- <member optional="true"><type>VkBuildAccelerationStructureFlagsNV</type><name>flags</name></member>
- <member optional="true"><type>uint32_t</type> <name>instanceCount</name></member>
- <member optional="true"><type>uint32_t</type> <name>geometryCount</name></member>
- <member len="geometryCount">const <type>VkGeometryNV</type>* <name>pGeometries</name></member>
- </type>
- <type category="struct" name="VkAccelerationStructureCreateInfoNV">
- <member values="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkDeviceSize</type> <name>compactedSize</name></member>
- <member><type>VkAccelerationStructureInfoNV</type> <name>info</name></member>
- </type>
- <type category="struct" name="VkBindAccelerationStructureMemoryInfoNV">
- <member values="VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkAccelerationStructureNV</type> <name>accelerationStructure</name></member>
- <member devicememoryhandle="1"><type>VkDeviceMemory</type> <name>memory</name></member>
- <member devicememoryoffset="1"><type>VkDeviceSize</type> <name>memoryOffset</name></member>
- <member optional="true"><type>uint32_t</type> <name>deviceIndexCount</name></member>
- <member len="deviceIndexCount">const <type>uint32_t</type>* <name>pDeviceIndices</name></member>
- </type>
- <type category="struct" name="VkWriteDescriptorSetAccelerationStructureKHR" structextends="VkWriteDescriptorSet">
- <member values="VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>uint32_t</type> <name>accelerationStructureCount</name></member>
- <member optional="false,true" len="accelerationStructureCount">const <type>VkAccelerationStructureKHR</type>* <name>pAccelerationStructures</name></member>
- </type>
- <type category="struct" name="VkWriteDescriptorSetAccelerationStructureNV" structextends="VkWriteDescriptorSet">
- <member values="VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>uint32_t</type> <name>accelerationStructureCount</name></member>
- <member optional="false,true" len="accelerationStructureCount">const <type>VkAccelerationStructureNV</type>* <name>pAccelerationStructures</name></member>
- </type>
- <type category="struct" name="VkAccelerationStructureMemoryRequirementsInfoNV">
- <member values="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkAccelerationStructureMemoryRequirementsTypeNV</type> <name>type</name></member>
- <member><type>VkAccelerationStructureNV</type> <name>accelerationStructure</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceAccelerationStructureFeaturesKHR" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>accelerationStructure</name></member>
- <member><type>VkBool32</type> <name>accelerationStructureCaptureReplay</name></member>
- <member><type>VkBool32</type> <name>accelerationStructureIndirectBuild</name></member>
- <member><type>VkBool32</type> <name>accelerationStructureHostCommands</name></member>
- <member><type>VkBool32</type> <name>descriptorBindingAccelerationStructureUpdateAfterBind</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceRayTracingPipelineFeaturesKHR" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>rayTracingPipeline</name></member>
- <member><type>VkBool32</type> <name>rayTracingPipelineShaderGroupHandleCaptureReplay</name></member>
- <member><type>VkBool32</type> <name>rayTracingPipelineShaderGroupHandleCaptureReplayMixed</name></member>
- <member><type>VkBool32</type> <name>rayTracingPipelineTraceRaysIndirect</name></member>
- <member><type>VkBool32</type> <name>rayTraversalPrimitiveCulling</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceRayQueryFeaturesKHR" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>rayQuery</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceAccelerationStructurePropertiesKHR" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member limittype="max"><type>uint64_t</type> <name>maxGeometryCount</name></member>
- <member limittype="max"><type>uint64_t</type> <name>maxInstanceCount</name></member>
- <member limittype="max"><type>uint64_t</type> <name>maxPrimitiveCount</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxPerStageDescriptorAccelerationStructures</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxPerStageDescriptorUpdateAfterBindAccelerationStructures</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxDescriptorSetAccelerationStructures</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxDescriptorSetUpdateAfterBindAccelerationStructures</name></member>
- <member limittype="min"><type>uint32_t</type> <name>minAccelerationStructureScratchOffsetAlignment</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceRayTracingPipelinePropertiesKHR" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member limittype="noauto"><type>uint32_t</type> <name>shaderGroupHandleSize</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxRayRecursionDepth</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxShaderGroupStride</name></member>
- <member limittype="noauto"><type>uint32_t</type> <name>shaderGroupBaseAlignment</name></member>
- <member limittype="noauto"><type>uint32_t</type> <name>shaderGroupHandleCaptureReplaySize</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxRayDispatchInvocationCount</name></member>
- <member limittype="noauto"><type>uint32_t</type> <name>shaderGroupHandleAlignment</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxRayHitAttributeSize</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceRayTracingPropertiesNV" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member limittype="noauto"><type>uint32_t</type> <name>shaderGroupHandleSize</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxRecursionDepth</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxShaderGroupStride</name></member>
- <member limittype="noauto"><type>uint32_t</type> <name>shaderGroupBaseAlignment</name></member>
- <member limittype="max"><type>uint64_t</type> <name>maxGeometryCount</name></member>
- <member limittype="max"><type>uint64_t</type> <name>maxInstanceCount</name></member>
- <member limittype="max"><type>uint64_t</type> <name>maxTriangleCount</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxDescriptorSetAccelerationStructures</name></member>
- </type>
- <type category="struct" name="VkStridedDeviceAddressRegionKHR">
- <member optional="true"><type>VkDeviceAddress</type> <name>deviceAddress</name></member>
- <member><type>VkDeviceSize</type> <name>stride</name></member>
- <member><type>VkDeviceSize</type> <name>size</name></member>
- </type>
- <type category="struct" name="VkTraceRaysIndirectCommandKHR">
- <member><type>uint32_t</type> <name>width</name></member>
- <member><type>uint32_t</type> <name>height</name></member>
- <member><type>uint32_t</type> <name>depth</name></member>
- </type>
- <type category="struct" name="VkDrmFormatModifierPropertiesListEXT" returnedonly="true" structextends="VkFormatProperties2">
- <member values="VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>uint32_t</type> <name>drmFormatModifierCount</name></member>
- <member optional="true,false" len="drmFormatModifierCount"><type>VkDrmFormatModifierPropertiesEXT</type>* <name>pDrmFormatModifierProperties</name></member>
- </type>
- <type category="struct" name="VkDrmFormatModifierPropertiesEXT" returnedonly="true">
- <member><type>uint64_t</type> <name>drmFormatModifier</name></member>
- <member><type>uint32_t</type> <name>drmFormatModifierPlaneCount</name></member>
- <member><type>VkFormatFeatureFlags</type> <name>drmFormatModifierTilingFeatures</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceImageDrmFormatModifierInfoEXT" structextends="VkPhysicalDeviceImageFormatInfo2">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>uint64_t</type> <name>drmFormatModifier</name></member>
- <member><type>VkSharingMode</type> <name>sharingMode</name></member>
- <member optional="true"><type>uint32_t</type> <name>queueFamilyIndexCount</name></member>
- <member noautovalidity="true" len="queueFamilyIndexCount">const <type>uint32_t</type>* <name>pQueueFamilyIndices</name></member>
- </type>
- <type category="struct" name="VkImageDrmFormatModifierListCreateInfoEXT" structextends="VkImageCreateInfo">
- <member values="VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>uint32_t</type> <name>drmFormatModifierCount</name></member>
- <member len="drmFormatModifierCount">const <type>uint64_t</type>* <name>pDrmFormatModifiers</name></member>
- </type>
- <type category="struct" name="VkImageDrmFormatModifierExplicitCreateInfoEXT" structextends="VkImageCreateInfo">
- <member values="VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>uint64_t</type> <name>drmFormatModifier</name></member>
- <member optional="false"><type>uint32_t</type> <name>drmFormatModifierPlaneCount</name></member>
- <member len="drmFormatModifierPlaneCount">const <type>VkSubresourceLayout</type>* <name>pPlaneLayouts</name></member>
- </type>
- <type category="struct" name="VkImageDrmFormatModifierPropertiesEXT" returnedonly="true">
- <member values="VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>uint64_t</type> <name>drmFormatModifier</name></member>
- </type>
- <type category="struct" name="VkImageStencilUsageCreateInfo" structextends="VkImageCreateInfo,VkPhysicalDeviceImageFormatInfo2">
- <member values="VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkImageUsageFlags</type> <name>stencilUsage</name></member>
- </type>
- <type category="struct" name="VkImageStencilUsageCreateInfoEXT" alias="VkImageStencilUsageCreateInfo"/>
- <type category="struct" name="VkDeviceMemoryOverallocationCreateInfoAMD" structextends="VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkMemoryOverallocationBehaviorAMD</type> <name>overallocationBehavior</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceFragmentDensityMapFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>fragmentDensityMap</name></member>
- <member><type>VkBool32</type> <name>fragmentDensityMapDynamic</name></member>
- <member><type>VkBool32</type> <name>fragmentDensityMapNonSubsampledImages</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceFragmentDensityMap2FeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>fragmentDensityMapDeferred</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceFragmentDensityMapPropertiesEXT" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member limittype="min"><type>VkExtent2D</type> <name>minFragmentDensityTexelSize</name></member>
- <member limittype="max"><type>VkExtent2D</type> <name>maxFragmentDensityTexelSize</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>fragmentDensityInvocations</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceFragmentDensityMap2PropertiesEXT" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member limittype="noauto"><type>VkBool32</type> <name>subsampledLoads</name></member>
- <member limittype="noauto"><type>VkBool32</type> <name>subsampledCoarseReconstructionEarlyAccess</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxSubsampledArrayLayers</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxDescriptorSetSubsampledSamplers</name></member>
- </type>
- <type category="struct" name="VkRenderPassFragmentDensityMapCreateInfoEXT" structextends="VkRenderPassCreateInfo,VkRenderPassCreateInfo2">
- <member values="VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkAttachmentReference</type> <name>fragmentDensityMapAttachment</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceScalarBlockLayoutFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>scalarBlockLayout</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceScalarBlockLayoutFeaturesEXT" alias="VkPhysicalDeviceScalarBlockLayoutFeatures"/>
- <type category="struct" name="VkSurfaceProtectedCapabilitiesKHR" structextends="VkSurfaceCapabilities2KHR">
- <member values="VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>supportsProtected</name><comment>Represents if surface can be protected</comment></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceUniformBufferStandardLayoutFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>uniformBufferStandardLayout</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR" alias="VkPhysicalDeviceUniformBufferStandardLayoutFeatures"/>
- <type category="struct" name="VkPhysicalDeviceDepthClipEnableFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>depthClipEnable</name></member>
- </type>
- <type category="struct" name="VkPipelineRasterizationDepthClipStateCreateInfoEXT" structextends="VkPipelineRasterizationStateCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkPipelineRasterizationDepthClipStateCreateFlagsEXT</type> <name>flags</name><comment>Reserved</comment></member>
- <member><type>VkBool32</type> <name>depthClipEnable</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceMemoryBudgetPropertiesEXT" structextends="VkPhysicalDeviceMemoryProperties2" returnedonly="true">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkDeviceSize</type> <name>heapBudget</name>[<enum>VK_MAX_MEMORY_HEAPS</enum>]</member>
- <member><type>VkDeviceSize</type> <name>heapUsage</name>[<enum>VK_MAX_MEMORY_HEAPS</enum>]</member>
- </type>
- <type category="struct" name="VkPhysicalDeviceMemoryPriorityFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>memoryPriority</name></member>
- </type>
- <type category="struct" name="VkMemoryPriorityAllocateInfoEXT" structextends="VkMemoryAllocateInfo">
- <member values="VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>float</type> <name>priority</name></member>
- </type>
- <type category="struct" name="VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>pageableDeviceLocalMemory</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceBufferDeviceAddressFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>bufferDeviceAddress</name></member>
- <member><type>VkBool32</type> <name>bufferDeviceAddressCaptureReplay</name></member>
- <member><type>VkBool32</type> <name>bufferDeviceAddressMultiDevice</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceBufferDeviceAddressFeaturesKHR" alias="VkPhysicalDeviceBufferDeviceAddressFeatures"/>
- <type category="struct" name="VkPhysicalDeviceBufferDeviceAddressFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>bufferDeviceAddress</name></member>
- <member><type>VkBool32</type> <name>bufferDeviceAddressCaptureReplay</name></member>
- <member><type>VkBool32</type> <name>bufferDeviceAddressMultiDevice</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceBufferAddressFeaturesEXT" alias="VkPhysicalDeviceBufferDeviceAddressFeaturesEXT"/>
- <type category="struct" name="VkBufferDeviceAddressInfo">
- <member values="VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkBuffer</type> <name>buffer</name></member>
- </type>
- <type category="struct" name="VkBufferDeviceAddressInfoKHR" alias="VkBufferDeviceAddressInfo"/>
- <type category="struct" name="VkBufferDeviceAddressInfoEXT" alias="VkBufferDeviceAddressInfo"/>
- <type category="struct" name="VkBufferOpaqueCaptureAddressCreateInfo" structextends="VkBufferCreateInfo">
- <member values="VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>uint64_t</type> <name>opaqueCaptureAddress</name></member>
- </type>
- <type category="struct" name="VkBufferOpaqueCaptureAddressCreateInfoKHR" alias="VkBufferOpaqueCaptureAddressCreateInfo"/>
- <type category="struct" name="VkBufferDeviceAddressCreateInfoEXT" structextends="VkBufferCreateInfo">
- <member values="VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkDeviceAddress</type> <name>deviceAddress</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceImageViewImageFormatInfoEXT" structextends="VkPhysicalDeviceImageFormatInfo2">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkImageViewType</type> <name>imageViewType</name></member>
- </type>
- <type category="struct" name="VkFilterCubicImageViewImageFormatPropertiesEXT" returnedonly="true" structextends="VkImageFormatProperties2">
- <member values="VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>filterCubic</name><comment>The combinations of format, image type (and image view type if provided) can be filtered with VK_FILTER_CUBIC_EXT</comment></member>
- <member><type>VkBool32</type> <name>filterCubicMinmax</name><comment>The combination of format, image type (and image view type if provided) can be filtered with VK_FILTER_CUBIC_EXT and ReductionMode of Min or Max</comment></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceImagelessFramebufferFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>imagelessFramebuffer</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceImagelessFramebufferFeaturesKHR" alias="VkPhysicalDeviceImagelessFramebufferFeatures"/>
- <type category="struct" name="VkFramebufferAttachmentsCreateInfo" structextends="VkFramebufferCreateInfo">
- <member values="VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>uint32_t</type> <name>attachmentImageInfoCount</name></member>
- <member len="attachmentImageInfoCount">const <type>VkFramebufferAttachmentImageInfo</type>* <name>pAttachmentImageInfos</name></member>
- </type>
- <type category="struct" name="VkFramebufferAttachmentsCreateInfoKHR" alias="VkFramebufferAttachmentsCreateInfo"/>
- <type category="struct" name="VkFramebufferAttachmentImageInfo">
- <member values="VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkImageCreateFlags</type> <name>flags</name><comment>Image creation flags</comment></member>
- <member><type>VkImageUsageFlags</type> <name>usage</name><comment>Image usage flags</comment></member>
- <member><type>uint32_t</type> <name>width</name></member>
- <member><type>uint32_t</type> <name>height</name></member>
- <member><type>uint32_t</type> <name>layerCount</name></member>
- <member optional="true"><type>uint32_t</type> <name>viewFormatCount</name></member>
- <member len="viewFormatCount">const <type>VkFormat</type>* <name>pViewFormats</name></member>
- </type>
- <type category="struct" name="VkFramebufferAttachmentImageInfoKHR" alias="VkFramebufferAttachmentImageInfo"/>
- <type category="struct" name="VkRenderPassAttachmentBeginInfo" structextends="VkRenderPassBeginInfo">
- <member values="VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>uint32_t</type> <name>attachmentCount</name></member>
- <member len="attachmentCount">const <type>VkImageView</type>* <name>pAttachments</name></member>
- </type>
- <type category="struct" name="VkRenderPassAttachmentBeginInfoKHR" alias="VkRenderPassAttachmentBeginInfo"/>
- <type category="struct" name="VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>textureCompressionASTC_HDR</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceCooperativeMatrixFeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>cooperativeMatrix</name></member>
- <member><type>VkBool32</type> <name>cooperativeMatrixRobustBufferAccess</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceCooperativeMatrixPropertiesNV" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member limittype="bitmask"><type>VkShaderStageFlags</type> <name>cooperativeMatrixSupportedStages</name></member>
- </type>
- <type category="struct" name="VkCooperativeMatrixPropertiesNV">
- <member values="VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>uint32_t</type> <name>MSize</name></member>
- <member><type>uint32_t</type> <name>NSize</name></member>
- <member><type>uint32_t</type> <name>KSize</name></member>
- <member><type>VkComponentTypeNV</type> <name>AType</name></member>
- <member><type>VkComponentTypeNV</type> <name>BType</name></member>
- <member><type>VkComponentTypeNV</type> <name>CType</name></member>
- <member><type>VkComponentTypeNV</type> <name>DType</name></member>
- <member><type>VkScopeNV</type> <name>scope</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceYcbcrImageArraysFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>ycbcrImageArrays</name></member>
- </type>
- <type category="struct" name="VkImageViewHandleInfoNVX">
- <member values="VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkImageView</type> <name>imageView</name></member>
- <member><type>VkDescriptorType</type> <name>descriptorType</name></member>
- <member optional="true"><type>VkSampler</type> <name>sampler</name></member>
- </type>
- <type category="struct" name="VkImageViewAddressPropertiesNVX" returnedonly="true">
- <member values="VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkDeviceAddress</type> <name>deviceAddress</name></member>
- <member><type>VkDeviceSize</type> <name>size</name></member>
- </type>
- <type category="struct" name="VkPresentFrameTokenGGP" structextends="VkPresentInfoKHR">
- <member values="VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>GgpFrameToken</type> <name>frameToken</name></member>
- </type>
- <type category="struct" name="VkPipelineCreationFeedbackEXT" returnedonly="true">
- <member><type>VkPipelineCreationFeedbackFlagsEXT</type> <name>flags</name></member>
- <member><type>uint64_t</type> <name>duration</name></member>
- </type>
- <type category="struct" name="VkPipelineCreationFeedbackCreateInfoEXT" structextends="VkGraphicsPipelineCreateInfo,VkComputePipelineCreateInfo,VkRayTracingPipelineCreateInfoNV,VkRayTracingPipelineCreateInfoKHR">
- <member values="VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkPipelineCreationFeedbackEXT</type>* <name>pPipelineCreationFeedback</name><comment>Output pipeline creation feedback.</comment></member>
- <member><type>uint32_t</type> <name>pipelineStageCreationFeedbackCount</name></member>
- <member len="pipelineStageCreationFeedbackCount"><type>VkPipelineCreationFeedbackEXT</type>* <name>pPipelineStageCreationFeedbacks</name><comment>One entry for each shader stage specified in the parent Vk*PipelineCreateInfo struct</comment></member>
- </type>
- <type category="struct" name="VkSurfaceFullScreenExclusiveInfoEXT" structextends="VkPhysicalDeviceSurfaceInfo2KHR,VkSwapchainCreateInfoKHR">
- <member values="VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkFullScreenExclusiveEXT</type> <name>fullScreenExclusive</name></member>
- </type>
- <type category="struct" name="VkSurfaceFullScreenExclusiveWin32InfoEXT" structextends="VkPhysicalDeviceSurfaceInfo2KHR,VkSwapchainCreateInfoKHR">
- <member values="VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>HMONITOR</type> <name>hmonitor</name></member>
- </type>
- <type category="struct" name="VkSurfaceCapabilitiesFullScreenExclusiveEXT" structextends="VkSurfaceCapabilities2KHR">
- <member values="VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>fullScreenExclusiveSupported</name></member>
- </type>
- <type category="struct" name="VkPhysicalDevicePerformanceQueryFeaturesKHR" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>performanceCounterQueryPools</name><comment>performance counters supported in query pools</comment></member>
- <member><type>VkBool32</type> <name>performanceCounterMultipleQueryPools</name><comment>performance counters from multiple query pools can be accessed in the same primary command buffer</comment></member>
- </type>
- <type category="struct" name="VkPhysicalDevicePerformanceQueryPropertiesKHR" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member limittype="bitmask" noautovalidity="true"><type>VkBool32</type> <name>allowCommandBufferQueryCopies</name><comment>Flag to specify whether performance queries are allowed to be used in vkCmdCopyQueryPoolResults</comment></member>
- </type>
- <type category="struct" name="VkPerformanceCounterKHR" returnedonly="true">
- <member values="VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkPerformanceCounterUnitKHR</type> <name>unit</name></member>
- <member><type>VkPerformanceCounterScopeKHR</type> <name>scope</name></member>
- <member><type>VkPerformanceCounterStorageKHR</type> <name>storage</name></member>
- <member><type>uint8_t</type> <name>uuid</name>[<enum>VK_UUID_SIZE</enum>]</member>
- </type>
- <type category="struct" name="VkPerformanceCounterDescriptionKHR" returnedonly="true">
- <member values="VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkPerformanceCounterDescriptionFlagsKHR</type> <name>flags</name></member>
- <member><type>char</type> <name>name</name>[<enum>VK_MAX_DESCRIPTION_SIZE</enum>]</member>
- <member><type>char</type> <name>category</name>[<enum>VK_MAX_DESCRIPTION_SIZE</enum>]</member>
- <member><type>char</type> <name>description</name>[<enum>VK_MAX_DESCRIPTION_SIZE</enum>]</member>
- </type>
- <type category="struct" name="VkQueryPoolPerformanceCreateInfoKHR" structextends="VkQueryPoolCreateInfo">
- <member values="VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>uint32_t</type> <name>queueFamilyIndex</name></member>
- <member><type>uint32_t</type> <name>counterIndexCount</name></member>
- <member len="counterIndexCount">const <type>uint32_t</type>* <name>pCounterIndices</name></member>
- </type>
- <type category="union" name="VkPerformanceCounterResultKHR" comment="// Union of all the possible return types a counter result could return">
- <member><type>int32_t</type> <name>int32</name></member>
- <member><type>int64_t</type> <name>int64</name></member>
- <member><type>uint32_t</type> <name>uint32</name></member>
- <member><type>uint64_t</type> <name>uint64</name></member>
- <member><type>float</type> <name>float32</name></member>
- <member><type>double</type> <name>float64</name></member>
- </type>
- <type category="struct" name="VkAcquireProfilingLockInfoKHR">
- <member values="VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkAcquireProfilingLockFlagsKHR</type> <name>flags</name><comment>Acquire profiling lock flags</comment></member>
- <member><type>uint64_t</type> <name>timeout</name></member>
- </type>
- <type category="struct" name="VkPerformanceQuerySubmitInfoKHR" structextends="VkSubmitInfo,VkSubmitInfo2KHR">
- <member values="VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>uint32_t</type> <name>counterPassIndex</name><comment>Index for which counter pass to submit</comment></member>
- </type>
- <type category="struct" name="VkHeadlessSurfaceCreateInfoEXT">
- <member values="VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkHeadlessSurfaceCreateFlagsEXT</type> <name>flags</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceCoverageReductionModeFeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>coverageReductionMode</name></member>
- </type>
- <type category="struct" name="VkPipelineCoverageReductionStateCreateInfoNV" structextends="VkPipelineMultisampleStateCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkPipelineCoverageReductionStateCreateFlagsNV</type> <name>flags</name></member>
- <member><type>VkCoverageReductionModeNV</type> <name>coverageReductionMode</name></member>
- </type>
- <type category="struct" name="VkFramebufferMixedSamplesCombinationNV" returnedonly="true">
- <member values="VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkCoverageReductionModeNV</type> <name>coverageReductionMode</name></member>
- <member><type>VkSampleCountFlagBits</type> <name>rasterizationSamples</name></member>
- <member><type>VkSampleCountFlags</type> <name>depthStencilSamples</name></member>
- <member><type>VkSampleCountFlags</type> <name>colorSamples</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>shaderIntegerFunctions2</name></member>
- </type>
- <type category="union" name="VkPerformanceValueDataINTEL">
- <member selection="VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL"><type>uint32_t</type> <name>value32</name></member>
- <member selection="VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL"><type>uint64_t</type> <name>value64</name></member>
- <member selection="VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL"><type>float</type> <name>valueFloat</name></member>
- <member selection="VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL"><type>VkBool32</type> <name>valueBool</name></member>
- <member selection="VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL" len="null-terminated">const <type>char</type>* <name>valueString</name></member>
- </type>
- <type category="struct" name="VkPerformanceValueINTEL">
- <member><type>VkPerformanceValueTypeINTEL</type> <name>type</name></member>
- <member selector="type" noautovalidity="true"><type>VkPerformanceValueDataINTEL</type> <name>data</name></member>
- </type>
- <type category="struct" name="VkInitializePerformanceApiInfoINTEL" >
- <member values="VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>void</type>* <name>pUserData</name></member>
- </type>
- <type category="struct" name="VkQueryPoolPerformanceQueryCreateInfoINTEL" structextends="VkQueryPoolCreateInfo">
- <member values="VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkQueryPoolSamplingModeINTEL</type> <name>performanceCountersSampling</name></member>
- </type>
- <type category="struct" name="VkQueryPoolCreateInfoINTEL" alias="VkQueryPoolPerformanceQueryCreateInfoINTEL"/>
- <type category="struct" name="VkPerformanceMarkerInfoINTEL">
- <member values="VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>uint64_t</type> <name>marker</name></member>
- </type>
- <type category="struct" name="VkPerformanceStreamMarkerInfoINTEL">
- <member values="VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>uint32_t</type> <name>marker</name></member>
- </type>
- <type category="struct" name="VkPerformanceOverrideInfoINTEL">
- <member values="VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkPerformanceOverrideTypeINTEL</type> <name>type</name></member>
- <member><type>VkBool32</type> <name>enable</name></member>
- <member><type>uint64_t</type> <name>parameter</name></member>
- </type>
- <type category="struct" name="VkPerformanceConfigurationAcquireInfoINTEL">
- <member values="VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkPerformanceConfigurationTypeINTEL</type> <name>type</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceShaderClockFeaturesKHR" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>shaderSubgroupClock</name></member>
- <member><type>VkBool32</type> <name>shaderDeviceClock</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceIndexTypeUint8FeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>indexTypeUint8</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceShaderSMBuiltinsPropertiesNV" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member limittype="max"><type>uint32_t</type> <name>shaderSMCount</name></member>
- <member limittype="max"><type>uint32_t</type> <name>shaderWarpsPerSM</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceShaderSMBuiltinsFeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>shaderSMBuiltins</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name><comment>Pointer to next structure</comment></member>
- <member><type>VkBool32</type> <name>fragmentShaderSampleInterlock</name></member>
- <member><type>VkBool32</type> <name>fragmentShaderPixelInterlock</name></member>
- <member><type>VkBool32</type> <name>fragmentShaderShadingRateInterlock</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>separateDepthStencilLayouts</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR" alias="VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures"/>
- <type category="struct" name="VkAttachmentReferenceStencilLayout" structextends="VkAttachmentReference2">
- <member values="VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkImageLayout</type> <name>stencilLayout</name></member>
- </type>
- <type category="struct" name="VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>primitiveTopologyListRestart</name></member>
- <member><type>VkBool32</type> <name>primitiveTopologyPatchListRestart</name></member>
- </type>
- <type category="struct" name="VkAttachmentReferenceStencilLayoutKHR" alias="VkAttachmentReferenceStencilLayout"/>
- <type category="struct" name="VkAttachmentDescriptionStencilLayout" structextends="VkAttachmentDescription2">
- <member values="VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkImageLayout</type> <name>stencilInitialLayout</name></member>
- <member><type>VkImageLayout</type> <name>stencilFinalLayout</name></member>
- </type>
- <type category="struct" name="VkAttachmentDescriptionStencilLayoutKHR" alias="VkAttachmentDescriptionStencilLayout"/>
- <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 optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>pipelineExecutableInfo</name></member>
- </type>
- <type category="struct" name="VkPipelineInfoKHR">
- <member values="VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkPipeline</type> <name>pipeline</name></member>
- </type>
- <type category="struct" name="VkPipelineExecutablePropertiesKHR" returnedonly="true">
- <member values="VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkShaderStageFlags</type> <name>stages</name></member>
- <member><type>char</type> <name>name</name>[<enum>VK_MAX_DESCRIPTION_SIZE</enum>]</member>
- <member><type>char</type> <name>description</name>[<enum>VK_MAX_DESCRIPTION_SIZE</enum>]</member>
- <member><type>uint32_t</type> <name>subgroupSize</name></member>
- </type>
- <type category="struct" name="VkPipelineExecutableInfoKHR">
- <member values="VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkPipeline</type> <name>pipeline</name></member>
- <member><type>uint32_t</type> <name>executableIndex</name></member>
- </type>
- <type category="union" name="VkPipelineExecutableStatisticValueKHR" returnedonly="true">
- <member selection="VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR"><type>VkBool32</type> <name>b32</name></member>
- <member selection="VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR"><type>int64_t</type> <name>i64</name></member>
- <member selection="VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR"><type>uint64_t</type> <name>u64</name></member>
- <member selection="VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR"><type>double</type> <name>f64</name></member>
- </type>
- <type category="struct" name="VkPipelineExecutableStatisticKHR" returnedonly="true">
- <member values="VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>char</type> <name>name</name>[<enum>VK_MAX_DESCRIPTION_SIZE</enum>]</member>
- <member><type>char</type> <name>description</name>[<enum>VK_MAX_DESCRIPTION_SIZE</enum>]</member>
- <member><type>VkPipelineExecutableStatisticFormatKHR</type> <name>format</name></member>
- <member selector="format" noautovalidity="true"><type>VkPipelineExecutableStatisticValueKHR</type> <name>value</name></member>
- </type>
- <type category="struct" name="VkPipelineExecutableInternalRepresentationKHR" returnedonly="true">
- <member values="VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>char</type> <name>name</name>[<enum>VK_MAX_DESCRIPTION_SIZE</enum>]</member>
- <member><type>char</type> <name>description</name>[<enum>VK_MAX_DESCRIPTION_SIZE</enum>]</member>
- <member><type>VkBool32</type> <name>isText</name></member>
- <member><type>size_t</type> <name>dataSize</name></member>
- <member optional="true" len="dataSize"><type>void</type>* <name>pData</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>shaderDemoteToHelperInvocation</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>texelBufferAlignment</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT" structextends="VkPhysicalDeviceProperties2" returnedonly="true">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member limittype="noauto"><type>VkDeviceSize</type> <name>storageTexelBufferOffsetAlignmentBytes</name></member>
- <member limittype="noauto"><type>VkBool32</type> <name>storageTexelBufferOffsetSingleTexelAlignment</name></member>
- <member limittype="noauto"><type>VkDeviceSize</type> <name>uniformTexelBufferOffsetAlignmentBytes</name></member>
- <member limittype="noauto"><type>VkBool32</type> <name>uniformTexelBufferOffsetSingleTexelAlignment</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceSubgroupSizeControlFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>subgroupSizeControl</name></member>
- <member><type>VkBool32</type> <name>computeFullSubgroups</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceSubgroupSizeControlPropertiesEXT" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member limittype="min" noautovalidity="true"><type>uint32_t</type> <name>minSubgroupSize</name><comment>The minimum subgroup size supported by this device</comment></member>
- <member limittype="max" noautovalidity="true"><type>uint32_t</type> <name>maxSubgroupSize</name><comment>The maximum subgroup size supported by this device</comment></member>
- <member limittype="max" noautovalidity="true"><type>uint32_t</type> <name>maxComputeWorkgroupSubgroups</name><comment>The maximum number of subgroups supported in a workgroup</comment></member>
- <member limittype="bitmask"><type>VkShaderStageFlags</type> <name>requiredSubgroupSizeStages</name><comment>The shader stages that support specifying a subgroup size</comment></member>
- </type>
- <type category="struct" name="VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT" returnedonly="true" structextends="VkPipelineShaderStageCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>uint32_t</type> <name>requiredSubgroupSize</name></member>
- </type>
- <type category="struct" name="VkSubpassShadingPipelineCreateInfoHUAWEI" returnedonly="true" structextends="VkComputePipelineCreateInfo">
- <member values="VK_STRUCTURE_TYPE_SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkRenderPass</type> <name>renderPass</name></member>
- <member><type>uint32_t</type> <name>subpass</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceSubpassShadingPropertiesHUAWEI" structextends="VkPhysicalDeviceProperties2" returnedonly="true">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member limittype="noauto"><type>uint32_t</type> <name>maxSubpassShadingWorkgroupSizeAspectRatio</name></member>
- </type>
- <type category="struct" name="VkMemoryOpaqueCaptureAddressAllocateInfo" structextends="VkMemoryAllocateInfo">
- <member values="VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>uint64_t</type> <name>opaqueCaptureAddress</name></member>
- </type>
- <type category="struct" name="VkMemoryOpaqueCaptureAddressAllocateInfoKHR" alias="VkMemoryOpaqueCaptureAddressAllocateInfo"/>
- <type category="struct" name="VkDeviceMemoryOpaqueCaptureAddressInfo">
- <member values="VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member devicememoryhandle="1"><type>VkDeviceMemory</type> <name>memory</name></member>
- </type>
- <type category="struct" name="VkDeviceMemoryOpaqueCaptureAddressInfoKHR" alias="VkDeviceMemoryOpaqueCaptureAddressInfo"/>
- <type category="struct" name="VkPhysicalDeviceLineRasterizationFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>rectangularLines</name></member>
- <member><type>VkBool32</type> <name>bresenhamLines</name></member>
- <member><type>VkBool32</type> <name>smoothLines</name></member>
- <member><type>VkBool32</type> <name>stippledRectangularLines</name></member>
- <member><type>VkBool32</type> <name>stippledBresenhamLines</name></member>
- <member><type>VkBool32</type> <name>stippledSmoothLines</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceLineRasterizationPropertiesEXT" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member limittype="noauto"><type>uint32_t</type> <name>lineSubPixelPrecisionBits</name></member>
- </type>
- <type category="struct" name="VkPipelineRasterizationLineStateCreateInfoEXT" structextends="VkPipelineRasterizationStateCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkLineRasterizationModeEXT</type> <name>lineRasterizationMode</name></member>
- <member><type>VkBool32</type> <name>stippledLineEnable</name></member>
- <member><type>uint32_t</type> <name>lineStippleFactor</name></member>
- <member><type>uint16_t</type> <name>lineStipplePattern</name></member>
- </type>
- <type category="struct" name="VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>pipelineCreationCacheControl</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceVulkan11Features" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>storageBuffer16BitAccess</name><comment>16-bit integer/floating-point variables supported in BufferBlock</comment></member>
- <member><type>VkBool32</type> <name>uniformAndStorageBuffer16BitAccess</name><comment>16-bit integer/floating-point variables supported in BufferBlock and Block</comment></member>
- <member><type>VkBool32</type> <name>storagePushConstant16</name><comment>16-bit integer/floating-point variables supported in PushConstant</comment></member>
- <member><type>VkBool32</type> <name>storageInputOutput16</name><comment>16-bit integer/floating-point variables supported in shader inputs and outputs</comment></member>
- <member><type>VkBool32</type> <name>multiview</name><comment>Multiple views in a renderpass</comment></member>
- <member><type>VkBool32</type> <name>multiviewGeometryShader</name><comment>Multiple views in a renderpass w/ geometry shader</comment></member>
- <member><type>VkBool32</type> <name>multiviewTessellationShader</name><comment>Multiple views in a renderpass w/ tessellation shader</comment></member>
- <member><type>VkBool32</type> <name>variablePointersStorageBuffer</name></member>
- <member><type>VkBool32</type> <name>variablePointers</name></member>
- <member><type>VkBool32</type> <name>protectedMemory</name></member>
- <member><type>VkBool32</type> <name>samplerYcbcrConversion</name><comment>Sampler color conversion supported</comment></member>
- <member><type>VkBool32</type> <name>shaderDrawParameters</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceVulkan11Properties" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member limittype="noauto"><type>uint8_t</type> <name>deviceUUID</name>[<enum>VK_UUID_SIZE</enum>]</member>
- <member limittype="noauto"><type>uint8_t</type> <name>driverUUID</name>[<enum>VK_UUID_SIZE</enum>]</member>
- <member limittype="noauto"><type>uint8_t</type> <name>deviceLUID</name>[<enum>VK_LUID_SIZE</enum>]</member>
- <member limittype="noauto"><type>uint32_t</type> <name>deviceNodeMask</name></member>
- <member limittype="noauto"><type>VkBool32</type> <name>deviceLUIDValid</name></member>
- <member limittype="noauto" noautovalidity="true"><type>uint32_t</type> <name>subgroupSize</name><comment>The size of a subgroup for this queue.</comment></member>
- <member limittype="bitmask" noautovalidity="true"><type>VkShaderStageFlags</type> <name>subgroupSupportedStages</name><comment>Bitfield of what shader stages support subgroup operations</comment></member>
- <member limittype="bitmask" noautovalidity="true"><type>VkSubgroupFeatureFlags</type> <name>subgroupSupportedOperations</name><comment>Bitfield of what subgroup operations are supported.</comment></member>
- <member limittype="bitmask" noautovalidity="true"><type>VkBool32</type> <name>subgroupQuadOperationsInAllStages</name><comment>Flag to specify whether quad operations are available in all stages.</comment></member>
- <member limittype="noauto"><type>VkPointClippingBehavior</type> <name>pointClippingBehavior</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxMultiviewViewCount</name><comment>max number of views in a subpass</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>maxMultiviewInstanceIndex</name><comment>max instance index for a draw in a multiview subpass</comment></member>
- <member limittype="noauto"><type>VkBool32</type> <name>protectedNoFault</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxPerSetDescriptors</name></member>
- <member limittype="max"><type>VkDeviceSize</type> <name>maxMemoryAllocationSize</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceVulkan12Features" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>samplerMirrorClampToEdge</name></member>
- <member><type>VkBool32</type> <name>drawIndirectCount</name></member>
- <member><type>VkBool32</type> <name>storageBuffer8BitAccess</name><comment>8-bit integer variables supported in StorageBuffer</comment></member>
- <member><type>VkBool32</type> <name>uniformAndStorageBuffer8BitAccess</name><comment>8-bit integer variables supported in StorageBuffer and Uniform</comment></member>
- <member><type>VkBool32</type> <name>storagePushConstant8</name><comment>8-bit integer variables supported in PushConstant</comment></member>
- <member><type>VkBool32</type> <name>shaderBufferInt64Atomics</name></member>
- <member><type>VkBool32</type> <name>shaderSharedInt64Atomics</name></member>
- <member><type>VkBool32</type> <name>shaderFloat16</name><comment>16-bit floats (halfs) in shaders</comment></member>
- <member><type>VkBool32</type> <name>shaderInt8</name><comment>8-bit integers in shaders</comment></member>
- <member><type>VkBool32</type> <name>descriptorIndexing</name></member>
- <member><type>VkBool32</type> <name>shaderInputAttachmentArrayDynamicIndexing</name></member>
- <member><type>VkBool32</type> <name>shaderUniformTexelBufferArrayDynamicIndexing</name></member>
- <member><type>VkBool32</type> <name>shaderStorageTexelBufferArrayDynamicIndexing</name></member>
- <member><type>VkBool32</type> <name>shaderUniformBufferArrayNonUniformIndexing</name></member>
- <member><type>VkBool32</type> <name>shaderSampledImageArrayNonUniformIndexing</name></member>
- <member><type>VkBool32</type> <name>shaderStorageBufferArrayNonUniformIndexing</name></member>
- <member><type>VkBool32</type> <name>shaderStorageImageArrayNonUniformIndexing</name></member>
- <member><type>VkBool32</type> <name>shaderInputAttachmentArrayNonUniformIndexing</name></member>
- <member><type>VkBool32</type> <name>shaderUniformTexelBufferArrayNonUniformIndexing</name></member>
- <member><type>VkBool32</type> <name>shaderStorageTexelBufferArrayNonUniformIndexing</name></member>
- <member><type>VkBool32</type> <name>descriptorBindingUniformBufferUpdateAfterBind</name></member>
- <member><type>VkBool32</type> <name>descriptorBindingSampledImageUpdateAfterBind</name></member>
- <member><type>VkBool32</type> <name>descriptorBindingStorageImageUpdateAfterBind</name></member>
- <member><type>VkBool32</type> <name>descriptorBindingStorageBufferUpdateAfterBind</name></member>
- <member><type>VkBool32</type> <name>descriptorBindingUniformTexelBufferUpdateAfterBind</name></member>
- <member><type>VkBool32</type> <name>descriptorBindingStorageTexelBufferUpdateAfterBind</name></member>
- <member><type>VkBool32</type> <name>descriptorBindingUpdateUnusedWhilePending</name></member>
- <member><type>VkBool32</type> <name>descriptorBindingPartiallyBound</name></member>
- <member><type>VkBool32</type> <name>descriptorBindingVariableDescriptorCount</name></member>
- <member><type>VkBool32</type> <name>runtimeDescriptorArray</name></member>
- <member><type>VkBool32</type> <name>samplerFilterMinmax</name></member>
- <member><type>VkBool32</type> <name>scalarBlockLayout</name></member>
- <member><type>VkBool32</type> <name>imagelessFramebuffer</name></member>
- <member><type>VkBool32</type> <name>uniformBufferStandardLayout</name></member>
- <member><type>VkBool32</type> <name>shaderSubgroupExtendedTypes</name></member>
- <member><type>VkBool32</type> <name>separateDepthStencilLayouts</name></member>
- <member><type>VkBool32</type> <name>hostQueryReset</name></member>
- <member><type>VkBool32</type> <name>timelineSemaphore</name></member>
- <member><type>VkBool32</type> <name>bufferDeviceAddress</name></member>
- <member><type>VkBool32</type> <name>bufferDeviceAddressCaptureReplay</name></member>
- <member><type>VkBool32</type> <name>bufferDeviceAddressMultiDevice</name></member>
- <member><type>VkBool32</type> <name>vulkanMemoryModel</name></member>
- <member><type>VkBool32</type> <name>vulkanMemoryModelDeviceScope</name></member>
- <member><type>VkBool32</type> <name>vulkanMemoryModelAvailabilityVisibilityChains</name></member>
- <member><type>VkBool32</type> <name>shaderOutputViewportIndex</name></member>
- <member><type>VkBool32</type> <name>shaderOutputLayer</name></member>
- <member><type>VkBool32</type> <name>subgroupBroadcastDynamicId</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceVulkan12Properties" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member limittype="noauto"><type>VkDriverId</type> <name>driverID</name></member>
- <member limittype="noauto"><type>char</type> <name>driverName</name>[<enum>VK_MAX_DRIVER_NAME_SIZE</enum>]</member>
- <member limittype="noauto"><type>char</type> <name>driverInfo</name>[<enum>VK_MAX_DRIVER_INFO_SIZE</enum>]</member>
- <member limittype="noauto"><type>VkConformanceVersion</type> <name>conformanceVersion</name></member>
- <member limittype="noauto"><type>VkShaderFloatControlsIndependence</type><name>denormBehaviorIndependence</name></member>
- <member limittype="noauto"><type>VkShaderFloatControlsIndependence</type><name>roundingModeIndependence</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>shaderSignedZeroInfNanPreserveFloat16</name><comment>An implementation can preserve signed zero, nan, inf</comment></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>shaderSignedZeroInfNanPreserveFloat32</name><comment>An implementation can preserve signed zero, nan, inf</comment></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>shaderSignedZeroInfNanPreserveFloat64</name><comment>An implementation can preserve signed zero, nan, inf</comment></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>shaderDenormPreserveFloat16</name><comment>An implementation can preserve denormals</comment></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>shaderDenormPreserveFloat32</name><comment>An implementation can preserve denormals</comment></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>shaderDenormPreserveFloat64</name><comment>An implementation can preserve denormals</comment></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>shaderDenormFlushToZeroFloat16</name><comment>An implementation can flush to zero denormals</comment></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>shaderDenormFlushToZeroFloat32</name><comment>An implementation can flush to zero denormals</comment></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>shaderDenormFlushToZeroFloat64</name><comment>An implementation can flush to zero denormals</comment></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>shaderRoundingModeRTEFloat16</name><comment>An implementation can support RTE</comment></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>shaderRoundingModeRTEFloat32</name><comment>An implementation can support RTE</comment></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>shaderRoundingModeRTEFloat64</name><comment>An implementation can support RTE</comment></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>shaderRoundingModeRTZFloat16</name><comment>An implementation can support RTZ</comment></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>shaderRoundingModeRTZFloat32</name><comment>An implementation can support RTZ</comment></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>shaderRoundingModeRTZFloat64</name><comment>An implementation can support RTZ</comment></member>
- <member limittype="max"><type>uint32_t</type> <name>maxUpdateAfterBindDescriptorsInAllPools</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>shaderUniformBufferArrayNonUniformIndexingNative</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>shaderSampledImageArrayNonUniformIndexingNative</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>shaderStorageBufferArrayNonUniformIndexingNative</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>shaderStorageImageArrayNonUniformIndexingNative</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>shaderInputAttachmentArrayNonUniformIndexingNative</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>robustBufferAccessUpdateAfterBind</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>quadDivergentImplicitLod</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxPerStageDescriptorUpdateAfterBindSamplers</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxPerStageDescriptorUpdateAfterBindUniformBuffers</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxPerStageDescriptorUpdateAfterBindStorageBuffers</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxPerStageDescriptorUpdateAfterBindSampledImages</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxPerStageDescriptorUpdateAfterBindStorageImages</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxPerStageDescriptorUpdateAfterBindInputAttachments</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxPerStageUpdateAfterBindResources</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxDescriptorSetUpdateAfterBindSamplers</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxDescriptorSetUpdateAfterBindUniformBuffers</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxDescriptorSetUpdateAfterBindUniformBuffersDynamic</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxDescriptorSetUpdateAfterBindStorageBuffers</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxDescriptorSetUpdateAfterBindStorageBuffersDynamic</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxDescriptorSetUpdateAfterBindSampledImages</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxDescriptorSetUpdateAfterBindStorageImages</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxDescriptorSetUpdateAfterBindInputAttachments</name></member>
- <member limittype="bitmask"><type>VkResolveModeFlags</type> <name>supportedDepthResolveModes</name><comment>supported depth resolve modes</comment></member>
- <member limittype="bitmask"><type>VkResolveModeFlags</type> <name>supportedStencilResolveModes</name><comment>supported stencil resolve modes</comment></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>independentResolveNone</name><comment>depth and stencil resolve modes can be set independently if one of them is none</comment></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>independentResolve</name><comment>depth and stencil resolve modes can be set independently</comment></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>filterMinmaxSingleComponentFormats</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>filterMinmaxImageComponentMapping</name></member>
- <member limittype="max"><type>uint64_t</type> <name>maxTimelineSemaphoreValueDifference</name></member>
- <member limittype="bitmask" optional="true"><type>VkSampleCountFlags</type> <name>framebufferIntegerColorSampleCounts</name></member>
- </type>
- <type category="struct" name="VkPipelineCompilerControlCreateInfoAMD" structextends="VkGraphicsPipelineCreateInfo,VkComputePipelineCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">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 optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>deviceCoherentMemory</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceToolPropertiesEXT" returnedonly="true">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>char</type> <name>name</name>[<enum>VK_MAX_EXTENSION_NAME_SIZE</enum>]</member>
- <member><type>char</type> <name>version</name>[<enum>VK_MAX_EXTENSION_NAME_SIZE</enum>]</member>
- <member><type>VkToolPurposeFlagsEXT</type> <name>purposes</name></member>
- <member><type>char</type> <name>description</name>[<enum>VK_MAX_DESCRIPTION_SIZE</enum>]</member>
- <member><type>char</type> <name>layer</name>[<enum>VK_MAX_EXTENSION_NAME_SIZE</enum>]</member>
- </type>
- <type category="struct" name="VkSamplerCustomBorderColorCreateInfoEXT" structextends="VkSamplerCreateInfo">
- <member values="VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member noautovalidity="true"><type>VkClearColorValue</type> <name>customBorderColor</name></member>
- <member><type>VkFormat</type> <name>format</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceCustomBorderColorPropertiesEXT" structextends="VkPhysicalDeviceProperties2" returnedonly="true">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member limittype="max"><type>uint32_t</type> <name>maxCustomBorderColorSamplers</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceCustomBorderColorFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>customBorderColors</name></member>
- <member><type>VkBool32</type> <name>customBorderColorWithoutFormat</name></member>
- </type>
- <type category="struct" name="VkSamplerBorderColorComponentMappingCreateInfoEXT" structextends="VkSamplerCreateInfo">
- <member values="VK_STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkComponentMapping</type> <name>components</name></member>
- <member><type>VkBool32</type> <name>srgb</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceBorderColorSwizzleFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>borderColorSwizzle</name></member>
- <member><type>VkBool32</type> <name>borderColorSwizzleFromImage</name></member>
- </type>
- <type category="union" name="VkDeviceOrHostAddressKHR">
- <member noautovalidity="true"><type>VkDeviceAddress</type> <name>deviceAddress</name></member>
- <member noautovalidity="true"><type>void</type>* <name>hostAddress</name></member>
- </type>
- <type category="union" name="VkDeviceOrHostAddressConstKHR">
- <member noautovalidity="true"><type>VkDeviceAddress</type> <name>deviceAddress</name></member>
- <member noautovalidity="true">const <type>void</type>* <name>hostAddress</name></member>
- </type>
- <type category="struct" name="VkAccelerationStructureGeometryTrianglesDataKHR">
- <member values="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkFormat</type> <name>vertexFormat</name></member>
- <member noautovalidity="true"><type>VkDeviceOrHostAddressConstKHR</type> <name>vertexData</name></member>
- <member><type>VkDeviceSize</type> <name>vertexStride</name></member>
- <member><type>uint32_t</type> <name>maxVertex</name></member>
- <member><type>VkIndexType</type> <name>indexType</name></member>
- <member noautovalidity="true"><type>VkDeviceOrHostAddressConstKHR</type> <name>indexData</name></member>
- <member noautovalidity="true"><type>VkDeviceOrHostAddressConstKHR</type> <name>transformData</name></member>
- </type>
- <type category="struct" name="VkAccelerationStructureGeometryAabbsDataKHR">
- <member values="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member noautovalidity="true"><type>VkDeviceOrHostAddressConstKHR</type> <name>data</name></member>
- <member><type>VkDeviceSize</type> <name>stride</name></member>
- </type>
- <type category="struct" name="VkAccelerationStructureGeometryInstancesDataKHR">
- <member values="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>arrayOfPointers</name></member>
- <member noautovalidity="true"><type>VkDeviceOrHostAddressConstKHR</type> <name>data</name></member>
- </type>
- <type category="union" name="VkAccelerationStructureGeometryDataKHR">
- <member selection="VK_GEOMETRY_TYPE_TRIANGLES_KHR"><type>VkAccelerationStructureGeometryTrianglesDataKHR</type> <name>triangles</name></member>
- <member selection="VK_GEOMETRY_TYPE_AABBS_KHR"><type>VkAccelerationStructureGeometryAabbsDataKHR</type> <name>aabbs</name></member>
- <member selection="VK_GEOMETRY_TYPE_INSTANCES_KHR"><type>VkAccelerationStructureGeometryInstancesDataKHR</type> <name>instances</name></member>
- </type>
- <type category="struct" name="VkAccelerationStructureGeometryKHR">
- <member values="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkGeometryTypeKHR</type> <name>geometryType</name></member>
- <member selector="geometryType"><type>VkAccelerationStructureGeometryDataKHR</type> <name>geometry</name></member>
- <member optional="true"><type>VkGeometryFlagsKHR</type> <name>flags</name></member>
- </type>
- <type category="struct" name="VkAccelerationStructureBuildGeometryInfoKHR">
- <member values="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkAccelerationStructureTypeKHR</type> <name>type</name></member>
- <member optional="true"><type>VkBuildAccelerationStructureFlagsKHR</type> <name>flags</name></member>
- <member noautovalidity="true"><type>VkBuildAccelerationStructureModeKHR</type> <name>mode</name></member>
- <member optional="true" noautovalidity="true"><type>VkAccelerationStructureKHR</type> <name>srcAccelerationStructure</name></member>
- <member optional="true" noautovalidity="true"><type>VkAccelerationStructureKHR</type> <name>dstAccelerationStructure</name></member>
- <member optional="true"><type>uint32_t</type> <name>geometryCount</name></member>
- <member len="geometryCount" optional="true">const <type>VkAccelerationStructureGeometryKHR</type>* <name>pGeometries</name></member>
- <member len="geometryCount,1" optional="true,false">const <type>VkAccelerationStructureGeometryKHR</type>* const* <name>ppGeometries</name></member>
- <member noautovalidity="true"><type>VkDeviceOrHostAddressKHR</type> <name>scratchData</name></member>
- </type>
- <type category="struct" name="VkAccelerationStructureBuildRangeInfoKHR">
- <member><type>uint32_t</type> <name>primitiveCount</name></member>
- <member><type>uint32_t</type> <name>primitiveOffset</name></member>
- <member><type>uint32_t</type> <name>firstVertex</name></member>
- <member><type>uint32_t</type> <name>transformOffset</name></member>
- </type>
- <type category="struct" name="VkAccelerationStructureCreateInfoKHR">
- <member values="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkAccelerationStructureCreateFlagsKHR</type> <name>createFlags</name></member>
- <member><type>VkBuffer</type> <name>buffer</name></member>
- <member><type>VkDeviceSize</type> <name>offset</name><comment>Specified in bytes</comment></member>
- <member><type>VkDeviceSize</type> <name>size</name></member>
- <member><type>VkAccelerationStructureTypeKHR</type> <name>type</name></member>
- <member optional="true"><type>VkDeviceAddress</type> <name>deviceAddress</name></member>
- </type>
- <type category="struct" name="VkAabbPositionsKHR">
- <member><type>float</type> <name>minX</name></member>
- <member><type>float</type> <name>minY</name></member>
- <member><type>float</type> <name>minZ</name></member>
- <member><type>float</type> <name>maxX</name></member>
- <member><type>float</type> <name>maxY</name></member>
- <member><type>float</type> <name>maxZ</name></member>
- </type>
- <type category="struct" name="VkAabbPositionsNV" alias="VkAabbPositionsKHR"/>
- <type category="struct" name="VkTransformMatrixKHR">
- <member><type>float</type> <name>matrix</name>[3][4]</member>
- </type>
- <type category="struct" name="VkTransformMatrixNV" alias="VkTransformMatrixKHR"/>
- <type category="struct" name="VkAccelerationStructureInstanceKHR">
- <comment>The bitfields in this structure are non-normative since bitfield ordering is implementation-defined in C. The specification defines the normative layout.</comment>
- <member><type>VkTransformMatrixKHR</type> <name>transform</name></member>
- <member><type>uint32_t</type> <name>instanceCustomIndex</name>:24</member>
- <member><type>uint32_t</type> <name>mask</name>:8</member>
- <member><type>uint32_t</type> <name>instanceShaderBindingTableRecordOffset</name>:24</member>
- <member optional="true"><type>VkGeometryInstanceFlagsKHR</type> <name>flags</name>:8</member>
- <member><type>uint64_t</type> <name>accelerationStructureReference</name></member>
- </type>
- <type category="struct" name="VkAccelerationStructureInstanceNV" alias="VkAccelerationStructureInstanceKHR"/>
- <type category="struct" name="VkAccelerationStructureDeviceAddressInfoKHR">
- <member values="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkAccelerationStructureKHR</type> <name>accelerationStructure</name></member>
- </type>
- <type category="struct" name="VkAccelerationStructureVersionInfoKHR">
- <member values="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member len="latexmath:[2 \times \mathtt{VK\_UUID\_SIZE}]" altlen="2*VK_UUID_SIZE">const <type>uint8_t</type>* <name>pVersionData</name></member>
- </type>
- <type category="struct" name="VkCopyAccelerationStructureInfoKHR">
- <member values="VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkAccelerationStructureKHR</type> <name>src</name></member>
- <member><type>VkAccelerationStructureKHR</type> <name>dst</name></member>
- <member><type>VkCopyAccelerationStructureModeKHR</type> <name>mode</name></member>
- </type>
- <type category="struct" name="VkCopyAccelerationStructureToMemoryInfoKHR">
- <member values="VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkAccelerationStructureKHR</type> <name>src</name></member>
- <member noautovalidity="true"><type>VkDeviceOrHostAddressKHR</type> <name>dst</name></member>
- <member><type>VkCopyAccelerationStructureModeKHR</type> <name>mode</name></member>
- </type>
- <type category="struct" name="VkCopyMemoryToAccelerationStructureInfoKHR">
- <member values="VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member noautovalidity="true"><type>VkDeviceOrHostAddressConstKHR</type> <name>src</name></member>
- <member><type>VkAccelerationStructureKHR</type> <name>dst</name></member>
- <member><type>VkCopyAccelerationStructureModeKHR</type> <name>mode</name></member>
- </type>
- <type category="struct" name="VkRayTracingPipelineInterfaceCreateInfoKHR">
- <member values="VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>uint32_t</type> <name>maxPipelineRayPayloadSize</name></member>
- <member><type>uint32_t</type> <name>maxPipelineRayHitAttributeSize</name></member>
- </type>
- <type category="struct" name="VkPipelineLibraryCreateInfoKHR">
- <member values="VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>uint32_t</type> <name>libraryCount</name></member>
- <member len="libraryCount">const <type>VkPipeline</type>* <name>pLibraries</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceExtendedDynamicStateFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>extendedDynamicState</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceExtendedDynamicState2FeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>extendedDynamicState2</name></member>
- <member><type>VkBool32</type> <name>extendedDynamicState2LogicOp</name></member>
- <member><type>VkBool32</type> <name>extendedDynamicState2PatchControlPoints</name></member>
- </type>
- <type category="struct" name="VkRenderPassTransformBeginInfoQCOM" structextends="VkRenderPassBeginInfo">
- <member values="VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name><comment>Pointer to next structure</comment></member>
- <member noautovalidity="true"><type>VkSurfaceTransformFlagBitsKHR</type> <name>transform</name></member>
- </type>
- <type category="struct" name="VkCopyCommandTransformInfoQCOM" structextends="VkBufferImageCopy2KHR,VkImageBlit2KHR">
- <member values="VK_STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true" noautovalidity="true">const <type>void</type>* <name>pNext</name></member>
- <member noautovalidity="true"><type>VkSurfaceTransformFlagBitsKHR</type> <name>transform</name></member>
- </type>
- <type category="struct" name="VkCommandBufferInheritanceRenderPassTransformInfoQCOM" structextends="VkCommandBufferInheritanceInfo">
- <member values="VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name><comment>Pointer to next structure</comment></member>
- <member noautovalidity="true"><type>VkSurfaceTransformFlagBitsKHR</type> <name>transform</name></member>
- <member><type>VkRect2D</type> <name>renderArea</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceDiagnosticsConfigFeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>diagnosticsConfig</name></member>
- </type>
- <type category="struct" name="VkDeviceDiagnosticsConfigCreateInfoNV" structextends="VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkDeviceDiagnosticsConfigFlagsNV</type> <name>flags</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>shaderZeroInitializeWorkgroupMemory</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>shaderSubgroupUniformControlFlow</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceRobustness2FeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>robustBufferAccess2</name></member>
- <member><type>VkBool32</type> <name>robustImageAccess2</name></member>
- <member><type>VkBool32</type> <name>nullDescriptor</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceRobustness2PropertiesEXT" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member limittype="noauto"><type>VkDeviceSize</type> <name>robustStorageBufferAccessSizeAlignment</name></member>
- <member limittype="noauto"><type>VkDeviceSize</type> <name>robustUniformBufferAccessSizeAlignment</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceImageRobustnessFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>robustImageAccess</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true" noautovalidity="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>workgroupMemoryExplicitLayout</name></member>
- <member><type>VkBool32</type> <name>workgroupMemoryExplicitLayoutScalarBlockLayout</name></member>
- <member><type>VkBool32</type> <name>workgroupMemoryExplicitLayout8BitAccess</name></member>
- <member><type>VkBool32</type> <name>workgroupMemoryExplicitLayout16BitAccess</name></member>
- </type>
- <type category="struct" name="VkPhysicalDevicePortabilitySubsetFeaturesKHR" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>constantAlphaColorBlendFactors</name></member>
- <member><type>VkBool32</type> <name>events</name></member>
- <member><type>VkBool32</type> <name>imageViewFormatReinterpretation</name></member>
- <member><type>VkBool32</type> <name>imageViewFormatSwizzle</name></member>
- <member><type>VkBool32</type> <name>imageView2DOn3DImage</name></member>
- <member><type>VkBool32</type> <name>multisampleArrayImage</name></member>
- <member><type>VkBool32</type> <name>mutableComparisonSamplers</name></member>
- <member><type>VkBool32</type> <name>pointPolygons</name></member>
- <member><type>VkBool32</type> <name>samplerMipLodBias</name></member>
- <member><type>VkBool32</type> <name>separateStencilMaskRef</name></member>
- <member><type>VkBool32</type> <name>shaderSampleRateInterpolationFunctions</name></member>
- <member><type>VkBool32</type> <name>tessellationIsolines</name></member>
- <member><type>VkBool32</type> <name>tessellationPointMode</name></member>
- <member><type>VkBool32</type> <name>triangleFans</name></member>
- <member><type>VkBool32</type> <name>vertexAttributeAccessBeyondStride</name></member>
- </type>
- <type category="struct" name="VkPhysicalDevicePortabilitySubsetPropertiesKHR" structextends="VkPhysicalDeviceProperties2">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member limittype="noauto"><type>uint32_t</type> <name>minVertexInputBindingStrideAlignment</name></member>
- </type>
- <type category="struct" name="VkPhysicalDevice4444FormatsFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>formatA4R4G4B4</name></member>
- <member><type>VkBool32</type> <name>formatA4B4G4R4</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceSubpassShadingFeaturesHUAWEI" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>subpassShading</name></member>
- </type>
- <type category="struct" name="VkBufferCopy2KHR">
- <member values="VK_STRUCTURE_TYPE_BUFFER_COPY_2_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkDeviceSize</type> <name>srcOffset</name><comment>Specified in bytes</comment></member>
- <member><type>VkDeviceSize</type> <name>dstOffset</name><comment>Specified in bytes</comment></member>
- <member noautovalidity="true"><type>VkDeviceSize</type> <name>size</name><comment>Specified in bytes</comment></member>
- </type>
- <type category="struct" name="VkImageCopy2KHR">
- <member values="VK_STRUCTURE_TYPE_IMAGE_COPY_2_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkImageSubresourceLayers</type> <name>srcSubresource</name></member>
- <member><type>VkOffset3D</type> <name>srcOffset</name><comment>Specified in pixels for both compressed and uncompressed images</comment></member>
- <member><type>VkImageSubresourceLayers</type> <name>dstSubresource</name></member>
- <member><type>VkOffset3D</type> <name>dstOffset</name><comment>Specified in pixels for both compressed and uncompressed images</comment></member>
- <member><type>VkExtent3D</type> <name>extent</name><comment>Specified in pixels for both compressed and uncompressed images</comment></member>
- </type>
- <type category="struct" name="VkImageBlit2KHR">
- <member values="VK_STRUCTURE_TYPE_IMAGE_BLIT_2_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkImageSubresourceLayers</type> <name>srcSubresource</name></member>
- <member><type>VkOffset3D</type> <name>srcOffsets</name>[2]<comment>Specified in pixels for both compressed and uncompressed images</comment></member>
- <member><type>VkImageSubresourceLayers</type> <name>dstSubresource</name></member>
- <member><type>VkOffset3D</type> <name>dstOffsets</name>[2]<comment>Specified in pixels for both compressed and uncompressed images</comment></member>
- </type>
- <type category="struct" name="VkBufferImageCopy2KHR">
- <member values="VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkDeviceSize</type> <name>bufferOffset</name><comment>Specified in bytes</comment></member>
- <member><type>uint32_t</type> <name>bufferRowLength</name><comment>Specified in texels</comment></member>
- <member><type>uint32_t</type> <name>bufferImageHeight</name></member>
- <member><type>VkImageSubresourceLayers</type> <name>imageSubresource</name></member>
- <member><type>VkOffset3D</type> <name>imageOffset</name><comment>Specified in pixels for both compressed and uncompressed images</comment></member>
- <member><type>VkExtent3D</type> <name>imageExtent</name><comment>Specified in pixels for both compressed and uncompressed images</comment></member>
- </type>
- <type category="struct" name="VkImageResolve2KHR">
- <member values="VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkImageSubresourceLayers</type> <name>srcSubresource</name></member>
- <member><type>VkOffset3D</type> <name>srcOffset</name></member>
- <member><type>VkImageSubresourceLayers</type> <name>dstSubresource</name></member>
- <member><type>VkOffset3D</type> <name>dstOffset</name></member>
- <member><type>VkExtent3D</type> <name>extent</name></member>
- </type>
- <type category="struct" name="VkCopyBufferInfo2KHR">
- <member values="VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkBuffer</type> <name>srcBuffer</name></member>
- <member><type>VkBuffer</type> <name>dstBuffer</name></member>
- <member><type>uint32_t</type> <name>regionCount</name></member>
- <member len="regionCount">const <type>VkBufferCopy2KHR</type>* <name>pRegions</name></member>
- </type>
- <type category="struct" name="VkCopyImageInfo2KHR">
- <member values="VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkImage</type> <name>srcImage</name></member>
- <member><type>VkImageLayout</type> <name>srcImageLayout</name></member>
- <member><type>VkImage</type> <name>dstImage</name></member>
- <member><type>VkImageLayout</type> <name>dstImageLayout</name></member>
- <member><type>uint32_t</type> <name>regionCount</name></member>
- <member len="regionCount">const <type>VkImageCopy2KHR</type>* <name>pRegions</name></member>
- </type>
- <type category="struct" name="VkBlitImageInfo2KHR">
- <member values="VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkImage</type> <name>srcImage</name></member>
- <member><type>VkImageLayout</type> <name>srcImageLayout</name></member>
- <member><type>VkImage</type> <name>dstImage</name></member>
- <member><type>VkImageLayout</type> <name>dstImageLayout</name></member>
- <member><type>uint32_t</type> <name>regionCount</name></member>
- <member len="regionCount">const <type>VkImageBlit2KHR</type>* <name>pRegions</name></member>
- <member><type>VkFilter</type> <name>filter</name></member>
- </type>
- <type category="struct" name="VkCopyBufferToImageInfo2KHR">
- <member values="VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkBuffer</type> <name>srcBuffer</name></member>
- <member><type>VkImage</type> <name>dstImage</name></member>
- <member><type>VkImageLayout</type> <name>dstImageLayout</name></member>
- <member><type>uint32_t</type> <name>regionCount</name></member>
- <member len="regionCount">const <type>VkBufferImageCopy2KHR</type>* <name>pRegions</name></member>
- </type>
- <type category="struct" name="VkCopyImageToBufferInfo2KHR">
- <member values="VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkImage</type> <name>srcImage</name></member>
- <member><type>VkImageLayout</type> <name>srcImageLayout</name></member>
- <member><type>VkBuffer</type> <name>dstBuffer</name></member>
- <member><type>uint32_t</type> <name>regionCount</name></member>
- <member len="regionCount">const <type>VkBufferImageCopy2KHR</type>* <name>pRegions</name></member>
- </type>
- <type category="struct" name="VkResolveImageInfo2KHR">
- <member values="VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkImage</type> <name>srcImage</name></member>
- <member><type>VkImageLayout</type> <name>srcImageLayout</name></member>
- <member><type>VkImage</type> <name>dstImage</name></member>
- <member><type>VkImageLayout</type> <name>dstImageLayout</name></member>
- <member><type>uint32_t</type> <name>regionCount</name></member>
- <member len="regionCount">const <type>VkImageResolve2KHR</type>* <name>pRegions</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>shaderImageInt64Atomics</name></member>
- <member><type>VkBool32</type> <name>sparseImageInt64Atomics</name></member>
- </type>
- <type category="struct" name="VkFragmentShadingRateAttachmentInfoKHR" structextends="VkSubpassDescription2">
- <member values="VK_STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true">const <type>VkAttachmentReference2</type>* <name>pFragmentShadingRateAttachment</name></member>
- <member><type>VkExtent2D</type> <name>shadingRateAttachmentTexelSize</name></member>
- </type>
- <type category="struct" name="VkPipelineFragmentShadingRateStateCreateInfoKHR" structextends="VkGraphicsPipelineCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkExtent2D</type> <name>fragmentSize</name></member>
- <member><type>VkFragmentShadingRateCombinerOpKHR</type> <name>combinerOps</name>[2]</member>
- </type>
- <type category="struct" name="VkPhysicalDeviceFragmentShadingRateFeaturesKHR" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>pipelineFragmentShadingRate</name></member>
- <member><type>VkBool32</type> <name>primitiveFragmentShadingRate</name></member>
- <member><type>VkBool32</type> <name>attachmentFragmentShadingRate</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceFragmentShadingRatePropertiesKHR" structextends="VkPhysicalDeviceProperties2" returnedonly="true">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member limittype="min"><type>VkExtent2D</type> <name>minFragmentShadingRateAttachmentTexelSize</name></member>
- <member limittype="max"><type>VkExtent2D</type> <name>maxFragmentShadingRateAttachmentTexelSize</name></member>
- <member limittype="noauto"><type>uint32_t</type> <name>maxFragmentShadingRateAttachmentTexelSizeAspectRatio</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>primitiveFragmentShadingRateWithMultipleViewports</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>layeredShadingRateAttachments</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>fragmentShadingRateNonTrivialCombinerOps</name></member>
- <member limittype="max"><type>VkExtent2D</type> <name>maxFragmentSize</name></member>
- <member limittype="noauto"><type>uint32_t</type> <name>maxFragmentSizeAspectRatio</name></member>
- <member limittype="noauto"><type>uint32_t</type> <name>maxFragmentShadingRateCoverageSamples</name></member>
- <member limittype="max"><type>VkSampleCountFlagBits</type> <name>maxFragmentShadingRateRasterizationSamples</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>fragmentShadingRateWithShaderDepthStencilWrites</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>fragmentShadingRateWithSampleMask</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>fragmentShadingRateWithShaderSampleMask</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>fragmentShadingRateWithConservativeRasterization</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>fragmentShadingRateWithFragmentShaderInterlock</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>fragmentShadingRateWithCustomSampleLocations</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>fragmentShadingRateStrictMultiplyCombiner</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceFragmentShadingRateKHR" returnedonly="true">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkSampleCountFlags</type> <name>sampleCounts</name></member>
- <member><type>VkExtent2D</type> <name>fragmentSize</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true" noautovalidity="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>shaderTerminateInvocation</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>fragmentShadingRateEnums</name></member>
- <member><type>VkBool32</type> <name>supersampleFragmentShadingRates</name></member>
- <member><type>VkBool32</type> <name>noInvocationFragmentShadingRates</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV" structextends="VkPhysicalDeviceProperties2">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member limittype="bitmask"><type>VkSampleCountFlagBits</type> <name>maxFragmentShadingRateInvocationCount</name></member>
- </type>
- <type category="struct" name="VkPipelineFragmentShadingRateEnumStateCreateInfoNV" structextends="VkGraphicsPipelineCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkFragmentShadingRateTypeNV</type> <name>shadingRateType</name></member>
- <member><type>VkFragmentShadingRateNV</type> <name>shadingRate</name></member>
- <member><type>VkFragmentShadingRateCombinerOpKHR</type> <name>combinerOps</name>[2]</member>
- </type>
- <type category="struct" name="VkAccelerationStructureBuildSizesInfoKHR">
- <member values="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkDeviceSize</type> <name>accelerationStructureSize</name></member>
- <member><type>VkDeviceSize</type> <name>updateScratchSize</name></member>
- <member><type>VkDeviceSize</type> <name>buildScratchSize</name></member>
- </type>
- <type category="struct" name="VkImportColorBufferGOOGLE" structextends="VkMemoryAllocateInfo">
- <member values="VK_STRUCTURE_TYPE_IMPORT_COLOR_BUFFER_GOOGLE"><type>VkStructureType</type> <name>sType</name></member>
- <member><type>void</type>* <name>pNext</name></member>
- <member><type>uint32_t</type> <name>colorBuffer</name></member>
- </type>
- <type category="struct" name="VkImportBufferGOOGLE" structextends="VkMemoryAllocateInfo">
- <member values="VK_STRUCTURE_TYPE_IMPORT_BUFFER_GOOGLE"><type>VkStructureType</type> <name>sType</name></member>
- <member><type>void</type>* <name>pNext</name></member>
- <member><type>uint32_t</type> <name>buffer</name></member>
- </type>
- <type category="struct" name="VkCreateBlobGOOGLE" structextends="VkMemoryAllocateInfo">
- <member values="VK_STRUCTURE_TYPE_CREATE_BLOB_GOOGLE"><type>VkStructureType</type> <name>sType</name></member>
- <member><type>void</type>* <name>pNext</name></member>
- <member><type>uint32_t</type> <name>blobMem</name></member>
- <member><type>uint32_t</type> <name>blobFlags</name></member>
- <member><type>uint64_t</type> <name>blobId</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true" noautovalidity="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>mutableDescriptorType</name></member>
- </type>
- <type category="struct" name="VkMutableDescriptorTypeListVALVE">
- <member optional="true"><type>uint32_t</type> <name>descriptorTypeCount</name></member>
- <member len="descriptorTypeCount">const <type>VkDescriptorType</type>* <name>pDescriptorTypes</name></member>
- </type>
- <type category="struct" name="VkMutableDescriptorTypeCreateInfoVALVE" structextends="VkDescriptorSetLayoutCreateInfo,VkDescriptorPoolCreateInfo">
- <member values="VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>uint32_t</type> <name>mutableDescriptorTypeListCount</name></member>
- <member len="mutableDescriptorTypeListCount">const <type>VkMutableDescriptorTypeListVALVE</type>* <name>pMutableDescriptorTypeLists</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true" noautovalidity="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>vertexInputDynamicState</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceExternalMemoryRDMAFeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true" noautovalidity="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>externalMemoryRDMA</name></member>
- </type>
- <type category="struct" name="VkVertexInputBindingDescription2EXT">
- <member values="VK_STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true" noautovalidity="true"><type>void</type>* <name>pNext</name></member>
- <member><type>uint32_t</type> <name>binding</name></member>
- <member><type>uint32_t</type> <name>stride</name></member>
- <member><type>VkVertexInputRate</type> <name>inputRate</name></member>
- <member><type>uint32_t</type> <name>divisor</name></member>
- </type>
- <type category="struct" name="VkVertexInputAttributeDescription2EXT">
- <member values="VK_STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true" noautovalidity="true"><type>void</type>* <name>pNext</name></member>
- <member><type>uint32_t</type> <name>location</name><comment>location of the shader vertex attrib</comment></member>
- <member><type>uint32_t</type> <name>binding</name><comment>Vertex buffer binding id</comment></member>
- <member><type>VkFormat</type> <name>format</name><comment>format of source data</comment></member>
- <member><type>uint32_t</type> <name>offset</name><comment>Offset of first element in bytes from base of vertex</comment></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceColorWriteEnableFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>colorWriteEnable</name></member>
- </type>
- <type category="struct" name="VkPipelineColorWriteCreateInfoEXT" structextends="VkPipelineColorBlendStateCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>uint32_t</type> <name>attachmentCount</name><comment># of pAttachments</comment></member>
- <member len="attachmentCount">const <type>VkBool32</type>* <name>pColorWriteEnables</name></member>
- </type>
- <type category="struct" name="VkMemoryBarrier2KHR" structextends="VkSubpassDependency2">
- <member values="VK_STRUCTURE_TYPE_MEMORY_BARRIER_2_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkPipelineStageFlags2KHR</type> <name>srcStageMask</name></member>
- <member optional="true"><type>VkAccessFlags2KHR</type> <name>srcAccessMask</name></member>
- <member optional="true"><type>VkPipelineStageFlags2KHR</type> <name>dstStageMask</name></member>
- <member optional="true"><type>VkAccessFlags2KHR</type> <name>dstAccessMask</name></member>
- </type>
- <type category="struct" name="VkImageMemoryBarrier2KHR">
- <member values="VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkPipelineStageFlags2KHR</type> <name>srcStageMask</name></member>
- <member optional="true"><type>VkAccessFlags2KHR</type> <name>srcAccessMask</name></member>
- <member optional="true"><type>VkPipelineStageFlags2KHR</type> <name>dstStageMask</name></member>
- <member optional="true"><type>VkAccessFlags2KHR</type> <name>dstAccessMask</name></member>
- <member><type>VkImageLayout</type> <name>oldLayout</name></member>
- <member><type>VkImageLayout</type> <name>newLayout</name></member>
- <member><type>uint32_t</type> <name>srcQueueFamilyIndex</name></member>
- <member><type>uint32_t</type> <name>dstQueueFamilyIndex</name></member>
- <member><type>VkImage</type> <name>image</name></member>
- <member><type>VkImageSubresourceRange</type> <name>subresourceRange</name></member>
- </type>
- <type category="struct" name="VkBufferMemoryBarrier2KHR">
- <member values="VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkPipelineStageFlags2KHR</type> <name>srcStageMask</name></member>
- <member optional="true"><type>VkAccessFlags2KHR</type> <name>srcAccessMask</name></member>
- <member optional="true"><type>VkPipelineStageFlags2KHR</type> <name>dstStageMask</name></member>
- <member optional="true"><type>VkAccessFlags2KHR</type> <name>dstAccessMask</name></member>
- <member><type>uint32_t</type> <name>srcQueueFamilyIndex</name></member>
- <member><type>uint32_t</type> <name>dstQueueFamilyIndex</name></member>
- <member><type>VkBuffer</type> <name>buffer</name></member>
- <member><type>VkDeviceSize</type> <name>offset</name></member>
- <member><type>VkDeviceSize</type> <name>size</name></member>
- </type>
- <type category="struct" name="VkDependencyInfoKHR">
- <member values="VK_STRUCTURE_TYPE_DEPENDENCY_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkDependencyFlags</type> <name>dependencyFlags</name></member>
- <member optional="true"><type>uint32_t</type> <name>memoryBarrierCount</name></member>
- <member len="memoryBarrierCount">const <type>VkMemoryBarrier2KHR</type>* <name>pMemoryBarriers</name></member>
- <member optional="true"><type>uint32_t</type> <name>bufferMemoryBarrierCount</name></member>
- <member len="bufferMemoryBarrierCount">const <type>VkBufferMemoryBarrier2KHR</type>* <name>pBufferMemoryBarriers</name></member>
- <member optional="true"><type>uint32_t</type> <name>imageMemoryBarrierCount</name></member>
- <member len="imageMemoryBarrierCount">const <type>VkImageMemoryBarrier2KHR</type>* <name>pImageMemoryBarriers</name></member>
- </type>
- <type category="struct" name="VkSemaphoreSubmitInfoKHR">
- <member values="VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkSemaphore</type> <name>semaphore</name></member>
- <member><type>uint64_t</type> <name>value</name></member>
- <member optional="true"><type>VkPipelineStageFlags2KHR</type> <name>stageMask</name></member>
- <member><type>uint32_t</type> <name>deviceIndex</name></member>
- </type>
- <type category="struct" name="VkCommandBufferSubmitInfoKHR">
- <member values="VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkCommandBuffer</type> <name>commandBuffer</name></member>
- <member><type>uint32_t</type> <name>deviceMask</name></member>
- </type>
- <type category="struct" name="VkSubmitInfo2KHR">
- <member values="VK_STRUCTURE_TYPE_SUBMIT_INFO_2_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkSubmitFlagsKHR</type> <name>flags</name></member>
- <member optional="true"><type>uint32_t</type> <name>waitSemaphoreInfoCount</name></member>
- <member len="waitSemaphoreInfoCount">const <type>VkSemaphoreSubmitInfoKHR</type>* <name>pWaitSemaphoreInfos</name></member>
- <member optional="true"><type>uint32_t</type> <name>commandBufferInfoCount</name></member>
- <member len="commandBufferInfoCount">const <type>VkCommandBufferSubmitInfoKHR</type>* <name>pCommandBufferInfos</name></member>
- <member optional="true"><type>uint32_t</type> <name>signalSemaphoreInfoCount</name></member>
- <member len="signalSemaphoreInfoCount">const <type>VkSemaphoreSubmitInfoKHR</type>* <name>pSignalSemaphoreInfos</name></member>
- </type>
- <type category="struct" name="VkQueueFamilyCheckpointProperties2NV" structextends="VkQueueFamilyProperties2" returnedonly="true">
- <member values="VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkPipelineStageFlags2KHR</type> <name>checkpointExecutionStageMask</name></member>
- </type>
- <type category="struct" name="VkCheckpointData2NV" returnedonly="true">
- <member values="VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkPipelineStageFlags2KHR</type> <name>stage</name></member>
- <member noautovalidity="true"><type>void</type>* <name>pCheckpointMarker</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceSynchronization2FeaturesKHR" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true" noautovalidity="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>synchronization2</name></member>
- </type>
- <type category="struct" name="VkVideoQueueFamilyProperties2KHR" structextends="VkQueueFamilyProperties2">
- <member values="VK_STRUCTURE_TYPE_VIDEO_QUEUE_FAMILY_PROPERTIES_2_KHR"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkVideoCodecOperationFlagsKHR</type> <name>videoCodecOperations</name></member>
- </type>
- <type category="struct" name="VkVideoProfilesKHR" structextends="VkFormatProperties2,VkImageCreateInfo,VkImageViewCreateInfo,VkBufferCreateInfo">
- <member values="VK_STRUCTURE_TYPE_VIDEO_PROFILES_KHR"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>uint32_t</type> <name>profileCount</name></member>
- <member>const <type>VkVideoProfileKHR</type>* <name>pProfiles</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceVideoFormatInfoKHR" returnedonly="true">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_FORMAT_INFO_KHR"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkImageUsageFlags</type> <name>imageUsage</name></member>
- <member>const <type>VkVideoProfilesKHR</type>* <name>pVideoProfiles</name></member>
- </type>
- <type category="struct" name="VkVideoFormatPropertiesKHR" returnedonly="true">
- <member values="VK_STRUCTURE_TYPE_VIDEO_FORMAT_PROPERTIES_KHR"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkFormat</type> <name>format</name></member>
- </type>
- <type category="struct" name="VkVideoProfileKHR" structextends="VkQueryPoolCreateInfo,VkFormatProperties2,VkImageCreateInfo,VkImageViewCreateInfo,VkBufferCreateInfo">
- <member values="VK_STRUCTURE_TYPE_VIDEO_PROFILE_KHR"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkVideoCodecOperationFlagBitsKHR</type> <name>videoCodecOperation</name></member>
- <member><type>VkVideoChromaSubsamplingFlagsKHR</type> <name>chromaSubsampling</name></member>
- <member><type>VkVideoComponentBitDepthFlagsKHR</type> <name>lumaBitDepth</name></member>
- <member><type>VkVideoComponentBitDepthFlagsKHR</type> <name>chromaBitDepth</name></member>
- </type>
- <type category="struct" name="VkVideoCapabilitiesKHR" returnedonly="true">
- <member values="VK_STRUCTURE_TYPE_VIDEO_CAPABILITIES_KHR"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkVideoCapabilityFlagsKHR</type> <name>capabilityFlags</name></member>
- <member><type>VkDeviceSize</type> <name>minBitstreamBufferOffsetAlignment</name></member>
- <member><type>VkDeviceSize</type> <name>minBitstreamBufferSizeAlignment</name></member>
- <member><type>VkExtent2D</type> <name>videoPictureExtentGranularity</name></member>
- <member><type>VkExtent2D</type> <name>minExtent</name></member>
- <member><type>VkExtent2D</type> <name>maxExtent</name></member>
- <member><type>uint32_t</type> <name>maxReferencePicturesSlotsCount</name></member>
- <member><type>uint32_t</type> <name>maxReferencePicturesActiveCount</name></member>
- </type>
- <type category="struct" name="VkVideoGetMemoryPropertiesKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_GET_MEMORY_PROPERTIES_KHR"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>uint32_t</type> <name>memoryBindIndex</name></member>
- <member><type>VkMemoryRequirements2</type>* <name>pMemoryRequirements</name></member>
- </type>
- <type category="struct" name="VkVideoBindMemoryKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_BIND_MEMORY_KHR"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>uint32_t</type> <name>memoryBindIndex</name></member>
- <member><type>VkDeviceMemory</type> <name>memory</name></member>
- <member><type>VkDeviceSize</type> <name>memoryOffset</name></member>
- <member><type>VkDeviceSize</type> <name>memorySize</name></member>
- </type>
- <type category="struct" name="VkVideoPictureResourceKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_PICTURE_RESOURCE_KHR"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkOffset2D</type> <name>codedOffset</name><comment>The offset to be used for the picture resource, currently only used in field mode</comment></member>
- <member><type>VkExtent2D</type> <name>codedExtent</name><comment>The extent to be used for the picture resource</comment></member>
- <member><type>uint32_t</type> <name>baseArrayLayer</name><comment>TThe first array layer to be accessed for the Decode or Encode Operations</comment></member>
- <member><type>VkImageView</type> <name>imageViewBinding</name><comment>The ImageView binding of the resource</comment></member>
- </type>
- <type category="struct" name="VkVideoReferenceSlotKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_REFERENCE_SLOT_KHR"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>int8_t</type> <name>slotIndex</name><comment>The reference slot index</comment></member>
- <member>const <type>VkVideoPictureResourceKHR</type>* <name>pPictureResource</name><comment>The reference picture resource</comment></member>
- </type>
- <type category="struct" name="VkVideoDecodeInfoKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_INFO_KHR"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkVideoDecodeFlagsKHR</type> <name>flags</name></member>
- <member><type>VkOffset2D</type> <name>codedOffset</name></member>
- <member><type>VkExtent2D</type> <name>codedExtent</name></member>
- <member><type>VkBuffer</type> <name>srcBuffer</name></member>
- <member><type>VkDeviceSize</type> <name>srcBufferOffset</name></member>
- <member><type>VkDeviceSize</type> <name>srcBufferRange</name></member>
- <member><type>VkVideoPictureResourceKHR</type> <name>dstPictureResource</name></member>
- <member>const <type>VkVideoReferenceSlotKHR</type>* <name>pSetupReferenceSlot</name></member>
- <member optional="true"><type>uint32_t</type> <name>referenceSlotCount</name></member>
- <member len="referenceSlotCount">const <type>VkVideoReferenceSlotKHR</type>* <name>pReferenceSlots</name></member>
- </type>
- <comment>Video Decode Codec Standard specific structures</comment>
- <type category="include" name="vk_video/vulkan_video_codec_h264std.h">#include "vk_video/vulkan_video_codec_h264std.h"</type>
- <type requires="vk_video/vulkan_video_codec_h264std.h" name="StdVideoH264ProfileIdc"/>
- <type requires="vk_video/vulkan_video_codec_h264std.h" name="StdVideoH264Level"/>
- <type requires="vk_video/vulkan_video_codec_h264std.h" name="StdVideoH264ChromaFormatIdc"/>
- <type requires="vk_video/vulkan_video_codec_h264std.h" name="StdVideoH264PocType"/>
- <type requires="vk_video/vulkan_video_codec_h264std.h" name="StdVideoH264SpsFlags"/>
- <type requires="vk_video/vulkan_video_codec_h264std.h" name="StdVideoH264ScalingLists"/>
- <type requires="vk_video/vulkan_video_codec_h264std.h" name="StdVideoH264SequenceParameterSetVui"/>
- <type requires="vk_video/vulkan_video_codec_h264std.h" name="StdVideoH264AspectRatioIdc"/>
- <type requires="vk_video/vulkan_video_codec_h264std.h" name="StdVideoH264HrdParameters"/>
- <type requires="vk_video/vulkan_video_codec_h264std.h" name="StdVideoH264SpsVuiFlags"/>
- <type requires="vk_video/vulkan_video_codec_h264std.h" name="StdVideoH264WeightedBipredIdc"/>
- <type requires="vk_video/vulkan_video_codec_h264std.h" name="StdVideoH264PpsFlags"/>
- <type requires="vk_video/vulkan_video_codec_h264std.h" name="StdVideoH264SliceType"/>
- <type requires="vk_video/vulkan_video_codec_h264std.h" name="StdVideoH264CabacInitIdc"/>
- <type requires="vk_video/vulkan_video_codec_h264std.h" name="StdVideoH264DisableDeblockingFilterIdc"/>
- <type requires="vk_video/vulkan_video_codec_h264std.h" name="StdVideoH264PictureType"/>
- <type requires="vk_video/vulkan_video_codec_h264std.h" name="StdVideoH264ModificationOfPicNumsIdc"/>
- <type requires="vk_video/vulkan_video_codec_h264std.h" name="StdVideoH264MemMgmtControlOp"/>
- <type category="include" name="vk_video/vulkan_video_codec_h264std_decode.h">#include "vk_video/vulkan_video_codec_h264std_decode.h"</type>
- <type requires="vk_video/vulkan_video_codec_h264std_decode.h" name="StdVideoDecodeH264PictureInfo"/>
- <type requires="vk_video/vulkan_video_codec_h264std_decode.h" name="StdVideoDecodeH264ReferenceInfo"/>
- <type requires="vk_video/vulkan_video_codec_h264std_decode.h" name="StdVideoDecodeH264Mvc"/>
- <type requires="vk_video/vulkan_video_codec_h264std_decode.h" name="StdVideoDecodeH264PictureInfoFlags"/>
- <type requires="vk_video/vulkan_video_codec_h264std_decode.h" name="StdVideoDecodeH264ReferenceInfoFlags"/>
- <type requires="vk_video/vulkan_video_codec_h264std_decode.h" name="StdVideoDecodeH264MvcElement"/>
- <type requires="vk_video/vulkan_video_codec_h264std_decode.h" name="StdVideoDecodeH264MvcElementFlags"/>
- <type category="struct" name="VkVideoDecodeH264ProfileEXT" structextends="VkVideoProfileKHR,VkQueryPoolCreateInfo,VkFormatProperties2,VkImageCreateInfo,VkImageViewCreateInfo,VkBufferCreateInfo">
- <member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_EXT"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>StdVideoH264ProfileIdc</type> <name>stdProfileIdc</name></member>
- <member><type>VkVideoDecodeH264PictureLayoutFlagsEXT</type> <name>pictureLayout</name></member>
- </type>
- <type category="struct" name="VkVideoDecodeH264CapabilitiesEXT" returnedonly="true" structextends="VkVideoCapabilitiesKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_EXT"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>uint32_t</type> <name>maxLevel</name></member>
- <member><type>VkOffset2D</type> <name>fieldOffsetGranularity</name></member>
- <member><type>VkExtensionProperties</type> <name>stdExtensionVersion</name></member>
- </type>
- <type category="struct" name="VkVideoDecodeH264SessionCreateInfoEXT" structextends="VkVideoSessionCreateInfoKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_CREATE_INFO_EXT"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkVideoDecodeH264CreateFlagsEXT</type> <name>flags</name></member>
- <member>const <type>VkExtensionProperties</type>* <name>pStdExtensionVersion</name></member>
- </type>
- <type requires="vk_video/vulkan_video_codec_h264std.h" name="StdVideoH264SequenceParameterSet"/>
- <type requires="vk_video/vulkan_video_codec_h264std.h" name="StdVideoH264PictureParameterSet"/>
- <type category="struct" name="VkVideoDecodeH264SessionParametersAddInfoEXT" structextends="VkVideoSessionParametersUpdateInfoKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>uint32_t</type> <name>spsStdCount</name></member>
- <member len="spsStdCount" optional="true">const <type>StdVideoH264SequenceParameterSet</type>* <name>pSpsStd</name></member>
- <member><type>uint32_t</type> <name>ppsStdCount</name></member>
- <member len="ppsStdCount" optional="true">const <type>StdVideoH264PictureParameterSet</type>* <name>pPpsStd</name><comment>List of Picture Parameters associated with the spsStd, above</comment></member>
- </type>
- <type category="struct" name="VkVideoDecodeH264SessionParametersCreateInfoEXT" structextends="VkVideoSessionParametersCreateInfoKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>uint32_t</type> <name>maxSpsStdCount</name></member>
- <member><type>uint32_t</type> <name>maxPpsStdCount</name></member>
- <member optional="true">const <type>VkVideoDecodeH264SessionParametersAddInfoEXT</type>* <name>pParametersAddInfo</name></member>
- </type>
- <type category="struct" name="VkVideoDecodeH264PictureInfoEXT" structextends="VkVideoDecodeInfoKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_EXT"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true" noautovalidity="true">const <type>void</type>* <name>pNext</name></member>
- <member>const <type>StdVideoDecodeH264PictureInfo</type>* <name>pStdPictureInfo</name></member>
- <member><type>uint32_t</type> <name>slicesCount</name></member>
- <member len="slicesCount">const <type>uint32_t</type>* <name>pSlicesDataOffsets</name></member>
- </type>
- <type category="struct" name="VkVideoDecodeH264DpbSlotInfoEXT" structextends="VkVideoReferenceSlotKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_EXT"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member>const <type>StdVideoDecodeH264ReferenceInfo</type>* <name>pStdReferenceInfo</name></member>
- </type>
- <type category="struct" name="VkVideoDecodeH264MvcEXT" structextends="VkVideoDecodeH264PictureInfoEXT">
- <member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_MVC_EXT"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true" noautovalidity="true">const <type>void</type>*<name>pNext</name></member>
- <member>const <type>StdVideoDecodeH264Mvc</type>* <name>pStdMvc</name></member>
- </type>
- <type category="include" name="vk_video/vulkan_video_codec_h265std.h">#include "vk_video/vulkan_video_codec_h265std.h"</type>
- <type requires="vk_video/vulkan_video_codec_h265std.h" name="StdVideoH265ProfileIdc"/>
- <type requires="vk_video/vulkan_video_codec_h265std.h" name="StdVideoH265VideoParameterSet"/>
- <type requires="vk_video/vulkan_video_codec_h265std.h" name="StdVideoH265SequenceParameterSet"/>
- <type requires="vk_video/vulkan_video_codec_h265std.h" name="StdVideoH265PictureParameterSet"/>
- <type requires="vk_video/vulkan_video_codec_h265std.h" name="StdVideoH265DecPicBufMgr"/>
- <type requires="vk_video/vulkan_video_codec_h265std.h" name="StdVideoH265HrdParameters"/>
- <type requires="vk_video/vulkan_video_codec_h265std.h" name="StdVideoH265VpsFlags"/>
- <type requires="vk_video/vulkan_video_codec_h265std.h" name="StdVideoH265Level"/>
- <type requires="vk_video/vulkan_video_codec_h265std.h" name="StdVideoH265SpsFlags"/>
- <type requires="vk_video/vulkan_video_codec_h265std.h" name="StdVideoH265ScalingLists"/>
- <type requires="vk_video/vulkan_video_codec_h265std.h" name="StdVideoH265SequenceParameterSetVui"/>
- <type requires="vk_video/vulkan_video_codec_h265std.h" name="StdVideoH265PredictorPaletteEntries"/>
- <type requires="vk_video/vulkan_video_codec_h265std.h" name="StdVideoH265PpsFlags"/>
- <type requires="vk_video/vulkan_video_codec_h265std.h" name="StdVideoH265SubLayerHrdParameters"/>
- <type requires="vk_video/vulkan_video_codec_h265std.h" name="StdVideoH265HrdFlags"/>
- <type requires="vk_video/vulkan_video_codec_h265std.h" name="StdVideoH265SpsVuiFlags"/>
- <type requires="vk_video/vulkan_video_codec_h265std.h" name="StdVideoH265SliceType"/>
- <type requires="vk_video/vulkan_video_codec_h265std.h" name="StdVideoH265PictureType"/>
- <type category="include" name="vk_video/vulkan_video_codec_h265std_decode.h">#include "vk_video/vulkan_video_codec_h265std_decode.h"</type>
- <type requires="vk_video/vulkan_video_codec_h265std_decode.h" name="StdVideoDecodeH265PictureInfo"/>
- <type requires="vk_video/vulkan_video_codec_h265std_decode.h" name="StdVideoDecodeH265ReferenceInfo"/>
- <type requires="vk_video/vulkan_video_codec_h265std_decode.h" name="StdVideoDecodeH265PictureInfoFlags"/>
- <type requires="vk_video/vulkan_video_codec_h265std_decode.h" name="StdVideoDecodeH265ReferenceInfoFlags"/>
- <type category="struct" name="VkVideoDecodeH265ProfileEXT" structextends="VkVideoProfileKHR,VkQueryPoolCreateInfo,VkFormatProperties2,VkImageCreateInfo,VkImageViewCreateInfo,VkBufferCreateInfo">
- <member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_EXT"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>StdVideoH265ProfileIdc</type> <name>stdProfileIdc</name></member>
- </type>
- <type category="struct" name="VkVideoDecodeH265CapabilitiesEXT" returnedonly="true" structextends="VkVideoCapabilitiesKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_EXT"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>uint32_t</type> <name>maxLevel</name></member>
- <member><type>VkExtensionProperties</type> <name>stdExtensionVersion</name></member>
- </type>
- <type category="struct" name="VkVideoDecodeH265SessionCreateInfoEXT" structextends="VkVideoSessionCreateInfoKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_CREATE_INFO_EXT"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkVideoDecodeH265CreateFlagsEXT</type> <name>flags</name></member>
- <member>const <type>VkExtensionProperties</type>* <name>pStdExtensionVersion</name></member>
- </type>
- <type category="struct" name="VkVideoDecodeH265SessionParametersAddInfoEXT" structextends="VkVideoSessionParametersUpdateInfoKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>uint32_t</type> <name>spsStdCount</name></member>
- <member len="spsStdCount" optional="true">const <type>StdVideoH265SequenceParameterSet</type>* <name>pSpsStd</name></member>
- <member><type>uint32_t</type> <name>ppsStdCount</name></member>
- <member len="ppsStdCount" optional="true">const <type>StdVideoH265PictureParameterSet</type>* <name>pPpsStd</name><comment>List of Picture Parameters associated with the spsStd, above</comment></member>
- </type>
- <type category="struct" name="VkVideoDecodeH265SessionParametersCreateInfoEXT" structextends="VkVideoSessionParametersCreateInfoKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>uint32_t</type> <name>maxSpsStdCount</name></member>
- <member><type>uint32_t</type> <name>maxPpsStdCount</name></member>
- <member optional="true">const <type>VkVideoDecodeH265SessionParametersAddInfoEXT</type>* <name>pParametersAddInfo</name></member>
- </type>
- <type category="struct" name="VkVideoDecodeH265PictureInfoEXT" structextends="VkVideoDecodeInfoKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_EXT"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>StdVideoDecodeH265PictureInfo</type>* <name>pStdPictureInfo</name></member>
- <member><type>uint32_t</type> <name>slicesCount</name></member>
- <member len="slicesCount">const <type>uint32_t</type>* <name>pSlicesDataOffsets</name></member>
- </type>
- <type category="struct" name="VkVideoDecodeH265DpbSlotInfoEXT" structextends="VkVideoReferenceSlotKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_EXT"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member>const <type>StdVideoDecodeH265ReferenceInfo</type>* <name>pStdReferenceInfo</name></member>
- </type>
- <type category="struct" name="VkVideoSessionCreateInfoKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_SESSION_CREATE_INFO_KHR"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>uint32_t</type> <name>queueFamilyIndex</name></member>
- <member optional="true"><type>VkVideoSessionCreateFlagsKHR</type> <name>flags</name></member>
- <member>const <type>VkVideoProfileKHR</type>* <name>pVideoProfile</name></member>
- <member><type>VkFormat</type> <name>pictureFormat</name></member>
- <member><type>VkExtent2D</type> <name>maxCodedExtent</name></member>
- <member><type>VkFormat</type> <name>referencePicturesFormat</name></member>
- <member><type>uint32_t</type> <name>maxReferencePicturesSlotsCount</name></member>
- <member><type>uint32_t</type> <name>maxReferencePicturesActiveCount</name></member>
- </type>
- <type category="struct" name="VkVideoSessionParametersCreateInfoKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkVideoSessionParametersKHR</type> <name>videoSessionParametersTemplate</name></member>
- <member><type>VkVideoSessionKHR</type> <name>videoSession</name></member>
- </type>
- <type category="struct" name="VkVideoSessionParametersUpdateInfoKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_UPDATE_INFO_KHR"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>uint32_t</type> <name>updateSequenceCount</name></member>
- </type>
- <type category="struct" name="VkVideoBeginCodingInfoKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_BEGIN_CODING_INFO_KHR"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkVideoBeginCodingFlagsKHR</type> <name>flags</name></member>
- <member><type>VkVideoCodingQualityPresetFlagsKHR</type> <name>codecQualityPreset</name></member>
- <member><type>VkVideoSessionKHR</type> <name>videoSession</name></member>
- <member optional="true"><type>VkVideoSessionParametersKHR</type> <name>videoSessionParameters</name></member>
- <member optional="true"><type>uint32_t</type> <name>referenceSlotCount</name></member>
- <member len="referenceSlotCount">const <type>VkVideoReferenceSlotKHR</type>* <name>pReferenceSlots</name></member>
- </type>
- <type category="struct" name="VkVideoEndCodingInfoKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_END_CODING_INFO_KHR"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkVideoEndCodingFlagsKHR</type> <name>flags</name></member>
- </type>
- <type category="struct" name="VkVideoCodingControlInfoKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_CODING_CONTROL_INFO_KHR"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkVideoCodingControlFlagsKHR</type> <name>flags</name></member>
- </type>
- <type category="struct" name="VkVideoEncodeInfoKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_INFO_KHR"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkVideoEncodeFlagsKHR</type> <name>flags</name></member>
- <member><type>uint32_t</type> <name>qualityLevel</name></member>
- <member><type>VkExtent2D</type> <name>codedExtent</name></member>
- <member><type>VkBuffer</type> <name>dstBitstreamBuffer</name></member>
- <member><type>VkDeviceSize</type> <name>dstBitstreamBufferOffset</name></member>
- <member><type>VkDeviceSize</type> <name>dstBitstreamBufferMaxRange</name></member>
- <member><type>VkVideoPictureResourceKHR</type> <name>srcPictureResource</name></member>
- <member>const <type>VkVideoReferenceSlotKHR</type>* <name>pSetupReferenceSlot</name></member>
- <member optional="true"><type>uint32_t</type> <name>referenceSlotCount</name></member>
- <member len="referenceSlotCount">const <type>VkVideoReferenceSlotKHR</type>* <name>pReferenceSlots</name></member>
- </type>
- <type category="struct" name="VkVideoEncodeRateControlInfoKHR" structextends="VkVideoCodingControlInfoKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_INFO_KHR"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkVideoEncodeRateControlFlagsKHR</type> <name>flags</name></member>
- <member><type>VkVideoEncodeRateControlModeFlagBitsKHR</type> <name>rateControlMode</name></member>
- <member><type>uint32_t</type> <name>averageBitrate</name></member>
- <member><type>uint16_t</type> <name>peakToAverageBitrateRatio</name></member>
- <member><type>uint16_t</type> <name>frameRateNumerator</name></member>
- <member><type>uint16_t</type> <name>frameRateDenominator</name></member>
- <member><type>uint32_t</type> <name>virtualBufferSizeInMs</name></member>
- </type>
- <type category="struct" name="VkVideoEncodeH264CapabilitiesEXT" structextends="VkVideoCapabilitiesKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_CAPABILITIES_EXT"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkVideoEncodeH264CapabilityFlagsEXT</type> <name>flags</name></member>
- <member><type>VkVideoEncodeH264InputModeFlagsEXT</type> <name>inputModeFlags</name></member>
- <member><type>VkVideoEncodeH264OutputModeFlagsEXT</type> <name>outputModeFlags</name></member>
- <member><type>VkExtent2D</type> <name>minPictureSizeInMbs</name></member>
- <member><type>VkExtent2D</type> <name>maxPictureSizeInMbs</name></member>
- <member><type>VkExtent2D</type> <name>inputImageDataAlignment</name></member>
- <member><type>uint8_t</type> <name>maxNumL0ReferenceForP</name></member>
- <member><type>uint8_t</type> <name>maxNumL0ReferenceForB</name></member>
- <member><type>uint8_t</type> <name>maxNumL1Reference</name></member>
- <member><type>uint8_t</type> <name>qualityLevelCount</name></member>
- <member><type>VkExtensionProperties</type> <name>stdExtensionVersion</name></member>
- </type>
- <type category="struct" name="VkVideoEncodeH264SessionCreateInfoEXT" structextends="VkVideoSessionCreateInfoKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_CREATE_INFO_EXT"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkVideoEncodeH264CreateFlagsEXT</type> <name>flags</name></member>
- <member><type>VkExtent2D</type> <name>maxPictureSizeInMbs</name></member>
- <member>const <type>VkExtensionProperties</type>* <name>pStdExtensionVersion</name></member>
- </type>
- <type category="include" name="vk_video/vulkan_video_codec_h264std_encode.h">#include "vk_video/vulkan_video_codec_h264std_encode.h"</type>
- <type requires="vk_video/vulkan_video_codec_h264std_encode.h" name="StdVideoEncodeH264SliceHeader"/>
- <type requires="vk_video/vulkan_video_codec_h264std_encode.h" name="StdVideoEncodeH264PictureInfo"/>
- <type requires="vk_video/vulkan_video_codec_h264std_encode.h" name="StdVideoEncodeH264SliceHeaderFlags"/>
- <type requires="vk_video/vulkan_video_codec_h264std_encode.h" name="StdVideoEncodeH264RefMemMgmtCtrlOperations"/>
- <type requires="vk_video/vulkan_video_codec_h264std_encode.h" name="StdVideoEncodeH264PictureInfoFlags"/>
- <type requires="vk_video/vulkan_video_codec_h264std_encode.h" name="StdVideoEncodeH264RefMgmtFlags"/>
- <type requires="vk_video/vulkan_video_codec_h264std_encode.h" name="StdVideoEncodeH264RefListModEntry"/>
- <type requires="vk_video/vulkan_video_codec_h264std_encode.h" name="StdVideoEncodeH264RefPicMarkingEntry"/>
- <type category="struct" name="VkVideoEncodeH264SessionParametersAddInfoEXT" structextends="VkVideoSessionParametersUpdateInfoKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>uint32_t</type> <name>spsStdCount</name></member>
- <member len="spsStdCount" optional="true">const <type>StdVideoH264SequenceParameterSet</type>* <name>pSpsStd</name></member>
- <member><type>uint32_t</type> <name>ppsStdCount</name></member>
- <member len="ppsStdCount" optional="true">const <type>StdVideoH264PictureParameterSet</type>* <name>pPpsStd</name><comment>List of Picture Parameters associated with the spsStd, above</comment></member>
- </type>
- <type category="struct" name="VkVideoEncodeH264SessionParametersCreateInfoEXT" structextends="VkVideoSessionParametersCreateInfoKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>uint32_t</type> <name>maxSpsStdCount</name></member>
- <member><type>uint32_t</type> <name>maxPpsStdCount</name></member>
- <member optional="true">const <type>VkVideoEncodeH264SessionParametersAddInfoEXT</type>* <name>pParametersAddInfo</name></member>
- </type>
- <type category="struct" name="VkVideoEncodeH264DpbSlotInfoEXT">
- <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_DPB_SLOT_INFO_EXT"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>int8_t</type> <name>slotIndex</name></member>
- <member>const <type>StdVideoEncodeH264PictureInfo</type>* <name>pStdPictureInfo</name></member>
- </type>
- <type category="struct" name="VkVideoEncodeH264VclFrameInfoEXT" structextends="VkVideoEncodeInfoKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_VCL_FRAME_INFO_EXT"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>uint8_t</type> <name>refDefaultFinalList0EntryCount</name></member>
- <member len="refDefaultFinalList0EntryCount">const <type>VkVideoEncodeH264DpbSlotInfoEXT</type>* <name>pRefDefaultFinalList0Entries</name></member>
- <member><type>uint8_t</type> <name>refDefaultFinalList1EntryCount</name></member>
- <member len="refDefaultFinalList1EntryCount">const <type>VkVideoEncodeH264DpbSlotInfoEXT</type>* <name>pRefDefaultFinalList1Entries</name></member>
- <member><type>uint32_t</type> <name>naluSliceEntryCount</name></member>
- <member len="naluSliceEntryCount">const <type>VkVideoEncodeH264NaluSliceEXT</type>* <name>pNaluSliceEntries</name></member>
- <member>const <type>VkVideoEncodeH264DpbSlotInfoEXT</type>* <name>pCurrentPictureInfo</name></member>
- </type>
- <type category="struct" name="VkVideoEncodeH264EmitPictureParametersEXT" structextends="VkVideoEncodeInfoKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_EMIT_PICTURE_PARAMETERS_EXT"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>uint8_t</type> <name>spsId</name></member>
- <member><type>VkBool32</type> <name>emitSpsEnable</name></member>
- <member><type>uint32_t</type> <name>ppsIdEntryCount</name></member>
- <member len="ppsIdEntryCount">const <type>uint8_t</type>* <name>ppsIdEntries</name></member>
- </type>
- <type category="struct" name="VkVideoEncodeH264ProfileEXT" structextends="VkVideoProfileKHR,VkQueryPoolCreateInfo,VkFormatProperties2,VkImageCreateInfo,VkImageViewCreateInfo,VkBufferCreateInfo">
- <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_EXT"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>StdVideoH264ProfileIdc</type> <name>stdProfileIdc</name></member>
- </type>
- <type category="struct" name="VkVideoEncodeH264NaluSliceEXT">
- <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_NALU_SLICE_EXT"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member>const <type>StdVideoEncodeH264SliceHeader</type>* <name>pSliceHeaderStd</name></member>
- <member><type>uint32_t</type> <name>mbCount</name></member>
- <member><type>uint8_t</type> <name>refFinalList0EntryCount</name></member>
- <member len="refFinalList0EntryCount">const <type>VkVideoEncodeH264DpbSlotInfoEXT</type>* <name>pRefFinalList0Entries</name></member>
- <member><type>uint8_t</type> <name>refFinalList1EntryCount</name></member>
- <member len="refFinalList1EntryCount">const <type>VkVideoEncodeH264DpbSlotInfoEXT</type>* <name>pRefFinalList1Entries</name></member>
- <member><type>uint32_t</type> <name>precedingNaluBytes</name></member>
- <member><type>uint8_t</type> <name>minQp</name></member>
- <member><type>uint8_t</type> <name>maxQp</name></member>
- </type>
- <type category="struct" name="VkVideoEncodeH265CapabilitiesEXT" structextends="VkVideoCapabilitiesKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_CAPABILITIES_EXT"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkVideoEncodeH265CapabilityFlagsEXT</type> <name>flags</name></member>
- <member><type>VkVideoEncodeH265InputModeFlagsEXT</type> <name>inputModeFlags</name></member>
- <member><type>VkVideoEncodeH265OutputModeFlagsEXT</type> <name>outputModeFlags</name></member>
- <member><type>VkVideoEncodeH265CtbSizeFlagsEXT</type> <name>ctbSizes</name></member>
- <member><type>VkExtent2D</type> <name>inputImageDataAlignment</name></member>
- <member><type>uint8_t</type> <name>maxNumL0ReferenceForP</name></member>
- <member><type>uint8_t</type> <name>maxNumL0ReferenceForB</name></member>
- <member><type>uint8_t</type> <name>maxNumL1Reference</name></member>
- <member><type>uint8_t</type> <name>maxNumSubLayers</name></member>
- <member><type>uint8_t</type> <name>qualityLevelCount</name></member>
- <member><type>VkExtensionProperties</type> <name>stdExtensionVersion</name></member>
- </type>
- <type category="struct" name="VkVideoEncodeH265SessionCreateInfoEXT" structextends="VkVideoSessionCreateInfoKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_CREATE_INFO_EXT"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkVideoEncodeH265CreateFlagsEXT</type> <name>flags</name></member>
- <member>const <type>VkExtensionProperties</type>* <name>pStdExtensionVersion</name></member>
- </type>
- <type category="include" name="vk_video/vulkan_video_codec_h265std_encode.h">#include "vk_video/vulkan_video_codec_h265std_encode.h"</type>
- <type requires="vk_video/vulkan_video_codec_h265std_encode.h" name="StdVideoEncodeH265PictureInfoFlags"/>
- <type requires="vk_video/vulkan_video_codec_h265std_encode.h" name="StdVideoEncodeH265SliceSegmentHeader"/>
- <type requires="vk_video/vulkan_video_codec_h265std_encode.h" name="StdVideoEncodeH265PictureInfo"/>
- <type requires="vk_video/vulkan_video_codec_h265std_encode.h" name="StdVideoEncodeH265SliceHeader"/>
- <type requires="vk_video/vulkan_video_codec_h265std_encode.h" name="StdVideoEncodeH265ReferenceInfo"/>
- <type requires="vk_video/vulkan_video_codec_h265std_encode.h" name="StdVideoEncodeH265ReferenceModifications"/>
- <type requires="vk_video/vulkan_video_codec_h265std_encode.h" name="StdVideoEncodeH265SliceHeaderFlags"/>
- <type requires="vk_video/vulkan_video_codec_h265std_encode.h" name="StdVideoEncodeH265ReferenceInfoFlags"/>
- <type requires="vk_video/vulkan_video_codec_h265std_encode.h" name="StdVideoEncodeH265ReferenceModificationFlags"/>
- <type category="struct" name="VkVideoEncodeH265SessionParametersAddInfoEXT" structextends="VkVideoSessionParametersUpdateInfoKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>uint32_t</type> <name>vpsStdCount</name></member>
- <member len="vpsStdCount" optional="true">const <type>StdVideoH265VideoParameterSet</type>* <name>pVpsStd</name></member>
- <member><type>uint32_t</type> <name>spsStdCount</name></member>
- <member len="spsStdCount" optional="true">const <type>StdVideoH265SequenceParameterSet</type>* <name>pSpsStd</name></member>
- <member><type>uint32_t</type> <name>ppsStdCount</name></member>
- <member len="ppsStdCount" optional="true">const <type>StdVideoH265PictureParameterSet</type>* <name>pPpsStd</name><comment>List of Picture Parameters associated with the spsStd, above</comment></member>
- </type>
- <type category="struct" name="VkVideoEncodeH265SessionParametersCreateInfoEXT" structextends="VkVideoSessionParametersCreateInfoKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>uint32_t</type> <name>maxVpsStdCount</name></member>
- <member><type>uint32_t</type> <name>maxSpsStdCount</name></member>
- <member><type>uint32_t</type> <name>maxPpsStdCount</name></member>
- <member optional="true">const <type>VkVideoEncodeH265SessionParametersAddInfoEXT</type>* <name>pParametersAddInfo</name></member>
- </type>
- <type category="struct" name="VkVideoEncodeH265VclFrameInfoEXT" structextends="VkVideoEncodeInfoKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_VCL_FRAME_INFO_EXT"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true">const <type>VkVideoEncodeH265ReferenceListsEXT</type>* <name>pReferenceFinalLists</name></member>
- <member><type>uint32_t</type> <name>naluSliceEntryCount</name></member>
- <member len="naluSliceEntryCount">const <type>VkVideoEncodeH265NaluSliceEXT</type>* <name>pNaluSliceEntries</name></member>
- <member>const <type>StdVideoEncodeH265PictureInfo</type>* <name>pCurrentPictureInfo</name></member>
- </type>
- <type category="struct" name="VkVideoEncodeH265EmitPictureParametersEXT" structextends="VkVideoEncodeInfoKHR">
- <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_EMIT_PICTURE_PARAMETERS_EXT"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>uint8_t</type> <name>vpsId</name></member>
- <member><type>uint8_t</type> <name>spsId</name></member>
- <member><type>VkBool32</type> <name>emitVpsEnable</name></member>
- <member><type>VkBool32</type> <name>emitSpsEnable</name></member>
- <member optional="true"><type>uint32_t</type> <name>ppsIdEntryCount</name></member>
- <member len="ppsIdEntryCount">const <type>uint8_t</type>* <name>ppsIdEntries</name></member>
- </type>
- <type category="struct" name="VkVideoEncodeH265NaluSliceEXT">
- <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_NALU_SLICE_EXT"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>uint32_t</type> <name>ctbCount</name></member>
- <member optional="true">const <type>VkVideoEncodeH265ReferenceListsEXT</type>* <name>pReferenceFinalLists</name></member>
- <member>const <type>StdVideoEncodeH265SliceHeader</type>* <name>pSliceHeaderStd</name></member>
- </type>
- <type category="struct" name="VkVideoEncodeH265ProfileEXT" structextends="VkVideoProfileKHR,VkQueryPoolCreateInfo,VkFormatProperties2,VkImageCreateInfo,VkImageViewCreateInfo,VkBufferCreateInfo">
- <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PROFILE_EXT"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>StdVideoH265ProfileIdc</type> <name>stdProfileIdc</name></member>
- </type>
- <type category="struct" name="VkVideoEncodeH265DpbSlotInfoEXT">
- <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_DPB_SLOT_INFO_EXT"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>int8_t</type> <name>slotIndex</name></member>
- <member>const <type>StdVideoEncodeH265ReferenceInfo</type>* <name>pStdReferenceInfo</name></member>
- </type>
- <type category="struct" name="VkVideoEncodeH265ReferenceListsEXT">
- <member values="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_REFERENCE_LISTS_EXT"><type>VkStructureType</type><name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>uint8_t</type> <name>referenceList0EntryCount</name></member>
- <member len="referenceList0EntryCount">const <type>VkVideoEncodeH265DpbSlotInfoEXT</type>* <name>pReferenceList0Entries</name></member>
- <member optional="true"><type>uint8_t</type> <name>referenceList1EntryCount</name></member>
- <member len="referenceList1EntryCount">const <type>VkVideoEncodeH265DpbSlotInfoEXT</type>* <name>pReferenceList1Entries</name></member>
- <member>const <type>StdVideoEncodeH265ReferenceModifications</type>* <name>pReferenceModifications</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceInheritedViewportScissorFeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>inheritedViewportScissor2D</name></member>
- </type>
- <type category="struct" name="VkCommandBufferInheritanceViewportScissorInfoNV" structextends="VkCommandBufferInheritanceInfo">
- <member values="VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>viewportScissor2D</name></member>
- <member><type>uint32_t</type> <name>viewportDepthCount</name></member>
- <member noautovalidity="true">const <type>VkViewport</type>* <name>pViewportDepths</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>ycbcr2plane444Formats</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceProvokingVertexFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true" noautovalidity="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>provokingVertexLast</name></member>
- <member><type>VkBool32</type> <name>transformFeedbackPreservesProvokingVertex</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceProvokingVertexPropertiesEXT" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>provokingVertexModePerPipeline</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>transformFeedbackPreservesTriangleFanProvokingVertex</name></member>
- </type>
- <type category="struct" name="VkPipelineRasterizationProvokingVertexStateCreateInfoEXT" structextends="VkPipelineRasterizationStateCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkProvokingVertexModeEXT</type> <name>provokingVertexMode</name></member>
- </type>
- <type category="struct" name="VkCuModuleCreateInfoNVX">
- <member values="VK_STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>size_t</type> <name>dataSize</name></member>
- <member len="dataSize">const <type>void</type>* <name>pData</name></member>
- </type>
- <type category="struct" name="VkCuFunctionCreateInfoNVX">
- <member values="VK_STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkCuModuleNVX</type> <name>module</name></member>
- <member len="null-terminated">const <type>char</type>* <name>pName</name></member>
- </type>
- <type category="struct" name="VkCuLaunchInfoNVX">
- <member values="VK_STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkCuFunctionNVX</type> <name>function</name></member>
- <member><type>uint32_t</type> <name>gridDimX</name></member>
- <member><type>uint32_t</type> <name>gridDimY</name></member>
- <member><type>uint32_t</type> <name>gridDimZ</name></member>
- <member><type>uint32_t</type> <name>blockDimX</name></member>
- <member><type>uint32_t</type> <name>blockDimY</name></member>
- <member><type>uint32_t</type> <name>blockDimZ</name></member>
- <member><type>uint32_t</type> <name>sharedMemBytes</name></member>
- <member><type>size_t</type> <name>paramCount</name></member>
- <member len="paramCount">const <type>void</type>* const * <name>pParams</name></member>
- <member><type>size_t</type> <name>extraCount</name></member>
- <member len="extraCount">const <type>void</type>* const * <name>pExtras</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>shaderIntegerDotProduct</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR" structextends="VkPhysicalDeviceProperties2">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>integerDotProduct8BitUnsignedAccelerated</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>integerDotProduct8BitSignedAccelerated</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>integerDotProduct8BitMixedSignednessAccelerated</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>integerDotProduct4x8BitPackedUnsignedAccelerated</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>integerDotProduct4x8BitPackedSignedAccelerated</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>integerDotProduct4x8BitPackedMixedSignednessAccelerated</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>integerDotProduct16BitUnsignedAccelerated</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>integerDotProduct16BitSignedAccelerated</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>integerDotProduct16BitMixedSignednessAccelerated</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>integerDotProduct32BitUnsignedAccelerated</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>integerDotProduct32BitSignedAccelerated</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>integerDotProduct32BitMixedSignednessAccelerated</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>integerDotProduct64BitUnsignedAccelerated</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>integerDotProduct64BitSignedAccelerated</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>integerDotProduct64BitMixedSignednessAccelerated</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>integerDotProductAccumulatingSaturating8BitUnsignedAccelerated</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>integerDotProductAccumulatingSaturating8BitSignedAccelerated</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>integerDotProductAccumulatingSaturating16BitUnsignedAccelerated</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>integerDotProductAccumulatingSaturating16BitSignedAccelerated</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>integerDotProductAccumulatingSaturating32BitUnsignedAccelerated</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>integerDotProductAccumulatingSaturating32BitSignedAccelerated</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>integerDotProductAccumulatingSaturating64BitUnsignedAccelerated</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>integerDotProductAccumulatingSaturating64BitSignedAccelerated</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceDrmPropertiesEXT" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>hasPrimary</name></member>
- <member limittype="bitmask"><type>VkBool32</type> <name>hasRender</name></member>
- <member limittype="noauto"><type>int64_t</type> <name>primaryMajor</name></member>
- <member limittype="noauto"><type>int64_t</type> <name>primaryMinor</name></member>
- <member limittype="noauto"><type>int64_t</type> <name>renderMajor</name></member>
- <member limittype="noauto"><type>int64_t</type> <name>renderMinor</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceRayTracingMotionBlurFeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true" noautovalidity="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>rayTracingMotionBlur</name></member>
- <member><type>VkBool32</type> <name>rayTracingMotionBlurPipelineTraceRaysIndirect</name></member>
- </type>
- <type name="VkAccelerationStructureMotionInstanceTypeNV" category="enum"/>
- <type category="struct" name="VkAccelerationStructureGeometryMotionTrianglesDataNV" structextends="VkAccelerationStructureGeometryTrianglesDataKHR">
- <member values="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member noautovalidity="true"><type>VkDeviceOrHostAddressConstKHR</type> <name>vertexData</name></member>
- </type>
- <type category="struct" name="VkAccelerationStructureMotionInfoNV" structextends="VkAccelerationStructureCreateInfoKHR">
- <member values="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>uint32_t</type> <name>maxInstances</name></member>
- <member optional="true"><type>VkAccelerationStructureMotionInfoFlagsNV</type> <name>flags</name></member>
- </type>
- <type category="struct" name="VkSRTDataNV">
- <member><type>float</type> <name>sx</name></member>
- <member><type>float</type> <name>a</name></member>
- <member><type>float</type> <name>b</name></member>
- <member><type>float</type> <name>pvx</name></member>
- <member><type>float</type> <name>sy</name></member>
- <member><type>float</type> <name>c</name></member>
- <member><type>float</type> <name>pvy</name></member>
- <member><type>float</type> <name>sz</name></member>
- <member><type>float</type> <name>pvz</name></member>
- <member><type>float</type> <name>qx</name></member>
- <member><type>float</type> <name>qy</name></member>
- <member><type>float</type> <name>qz</name></member>
- <member><type>float</type> <name>qw</name></member>
- <member><type>float</type> <name>tx</name></member>
- <member><type>float</type> <name>ty</name></member>
- <member><type>float</type> <name>tz</name></member>
- </type>
- <type category="struct" name="VkAccelerationStructureSRTMotionInstanceNV">
- <comment>The bitfields in this structure are non-normative since bitfield ordering is implementation-defined in C. The specification defines the normative layout.</comment>
- <member><type>VkSRTDataNV</type> <name>transformT0</name></member>
- <member><type>VkSRTDataNV</type> <name>transformT1</name></member>
- <member><type>uint32_t</type> <name>instanceCustomIndex</name>:24</member>
- <member><type>uint32_t</type> <name>mask</name>:8</member>
- <member><type>uint32_t</type> <name>instanceShaderBindingTableRecordOffset</name>:24</member>
- <member optional="true"><type>VkGeometryInstanceFlagsKHR</type> <name>flags</name>:8</member>
- <member><type>uint64_t</type> <name>accelerationStructureReference</name></member>
- </type>
- <type category="struct" name="VkAccelerationStructureMatrixMotionInstanceNV">
- <comment>The bitfields in this structure are non-normative since bitfield ordering is implementation-defined in C. The specification defines the normative layout.</comment>
- <member><type>VkTransformMatrixKHR</type> <name>transformT0</name></member>
- <member><type>VkTransformMatrixKHR</type> <name>transformT1</name></member>
- <member><type>uint32_t</type> <name>instanceCustomIndex</name>:24</member>
- <member><type>uint32_t</type> <name>mask</name>:8</member>
- <member><type>uint32_t</type> <name>instanceShaderBindingTableRecordOffset</name>:24</member>
- <member optional="true"><type>VkGeometryInstanceFlagsKHR</type> <name>flags</name>:8</member>
- <member><type>uint64_t</type> <name>accelerationStructureReference</name></member>
- </type>
- <type category="union" name="VkAccelerationStructureMotionInstanceDataNV">
- <member selection="VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV"><type>VkAccelerationStructureInstanceKHR</type> <name>staticInstance</name></member>
- <member selection="VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV"><type>VkAccelerationStructureMatrixMotionInstanceNV</type> <name>matrixMotionInstance</name></member>
- <member selection="VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV"><type>VkAccelerationStructureSRTMotionInstanceNV</type> <name>srtMotionInstance</name></member>
- </type>
- <type category="struct" name="VkAccelerationStructureMotionInstanceNV">
- <member><type>VkAccelerationStructureMotionInstanceTypeNV</type> <name>type</name></member>
- <member optional="true"><type>VkAccelerationStructureMotionInstanceFlagsNV</type> <name>flags</name></member>
- <member selector="type"><type>VkAccelerationStructureMotionInstanceDataNV</type> <name>data</name></member>
- </type>
- <type category="basetype">typedef <type>void</type>* <name>VkRemoteAddressNV</name>;</type>
- <type category="struct" name="VkMemoryGetRemoteAddressInfoNV">
- <member values="VK_STRUCTURE_TYPE_MEMORY_GET_REMOTE_ADDRESS_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkDeviceMemory</type> <name>memory</name></member>
- <member><type>VkExternalMemoryHandleTypeFlagBits</type> <name>handleType</name></member>
- </type>
- <type category="struct" name="VkImportMemoryBufferCollectionFUCHSIA" structextends="VkMemoryAllocateInfo">
- <member values="VK_STRUCTURE_TYPE_IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIA"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkBufferCollectionFUCHSIA</type> <name>collection</name></member>
- <member><type>uint32_t</type> <name>index</name></member>
- </type>
- <type category="struct" name="VkBufferCollectionImageCreateInfoFUCHSIA" structextends="VkImageCreateInfo">
- <member values="VK_STRUCTURE_TYPE_BUFFER_COLLECTION_IMAGE_CREATE_INFO_FUCHSIA"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkBufferCollectionFUCHSIA</type> <name>collection</name></member>
- <member><type>uint32_t</type> <name>index</name></member>
- </type>
- <type category="struct" name="VkBufferCollectionBufferCreateInfoFUCHSIA" structextends="VkBufferCreateInfo">
- <member values="VK_STRUCTURE_TYPE_BUFFER_COLLECTION_BUFFER_CREATE_INFO_FUCHSIA"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkBufferCollectionFUCHSIA</type> <name>collection</name></member>
- <member><type>uint32_t</type> <name>index</name></member>
- </type>
- <type category="struct" name="VkBufferCollectionCreateInfoFUCHSIA">
- <member values="VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CREATE_INFO_FUCHSIA"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>zx_handle_t</type> <name>collectionToken</name></member>
- </type>
- <type category="struct" name="VkBufferCollectionPropertiesFUCHSIA">
- <member values="VK_STRUCTURE_TYPE_BUFFER_COLLECTION_PROPERTIES_FUCHSIA"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>uint32_t</type> <name>memoryTypeBits</name></member>
- <member><type>uint32_t</type> <name>bufferCount</name></member>
- <member><type>uint32_t</type> <name>createInfoIndex</name></member>
- <member><type>uint64_t</type> <name>sysmemPixelFormat</name></member>
- <member><type>VkFormatFeatureFlags</type> <name>formatFeatures</name></member>
- <member><type>VkSysmemColorSpaceFUCHSIA</type> <name>sysmemColorSpaceIndex</name></member>
- <member><type>VkComponentMapping</type> <name>samplerYcbcrConversionComponents</name></member>
- <member><type>VkSamplerYcbcrModelConversion</type> <name>suggestedYcbcrModel</name></member>
- <member><type>VkSamplerYcbcrRange</type> <name>suggestedYcbcrRange</name></member>
- <member><type>VkChromaLocation</type> <name>suggestedXChromaOffset</name></member>
- <member><type>VkChromaLocation</type> <name>suggestedYChromaOffset</name></member>
- </type>
- <type category="struct" name="VkBufferConstraintsInfoFUCHSIA">
- <member values="VK_STRUCTURE_TYPE_BUFFER_CONSTRAINTS_INFO_FUCHSIA"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkBufferCreateInfo</type> <name>createInfo</name></member>
- <member optional="true"><type>VkFormatFeatureFlags</type> <name>requiredFormatFeatures</name></member>
- <member><type>VkBufferCollectionConstraintsInfoFUCHSIA</type> <name>bufferCollectionConstraints</name></member>
- </type>
- <type category="struct" name="VkSysmemColorSpaceFUCHSIA">
- <member values="VK_STRUCTURE_TYPE_SYSMEM_COLOR_SPACE_FUCHSIA"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>uint32_t</type> <name>colorSpace</name></member>
- </type>
- <type category="struct" name="VkImageFormatConstraintsInfoFUCHSIA">
- <member values="VK_STRUCTURE_TYPE_IMAGE_FORMAT_CONSTRAINTS_INFO_FUCHSIA"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkImageCreateInfo</type> <name>imageCreateInfo</name></member>
- <member><type>VkFormatFeatureFlags</type> <name>requiredFormatFeatures</name></member>
- <member optional="true"><type>VkImageFormatConstraintsFlagsFUCHSIA</type> <name>flags</name></member>
- <member optional="true"><type>uint64_t</type> <name>sysmemPixelFormat</name></member>
- <member><type>uint32_t</type> <name>colorSpaceCount</name></member>
- <member>const <type>VkSysmemColorSpaceFUCHSIA</type>* <name>pColorSpaces</name></member>
- </type>
- <type category="struct" name="VkImageConstraintsInfoFUCHSIA">
- <member values="VK_STRUCTURE_TYPE_IMAGE_CONSTRAINTS_INFO_FUCHSIA"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>uint32_t</type> <name>formatConstraintsCount</name></member>
- <member len="formatConstraintsCount">const <type>VkImageFormatConstraintsInfoFUCHSIA</type>* <name>pFormatConstraints</name></member>
- <member><type>VkBufferCollectionConstraintsInfoFUCHSIA</type> <name>bufferCollectionConstraints</name></member>
- <member optional="true"><type>VkImageConstraintsInfoFlagsFUCHSIA</type> <name>flags</name></member>
- </type>
- <type category="struct" name="VkBufferCollectionConstraintsInfoFUCHSIA">
- <member values="VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CONSTRAINTS_INFO_FUCHSIA"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>uint32_t</type> <name>minBufferCount</name></member>
- <member><type>uint32_t</type> <name>maxBufferCount</name></member>
- <member><type>uint32_t</type> <name>minBufferCountForCamping</name></member>
- <member><type>uint32_t</type> <name>minBufferCountForDedicatedSlack</name></member>
- <member><type>uint32_t</type> <name>minBufferCountForSharedSlack</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true" noautovalidity="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>formatRgba10x6WithoutYCbCrSampler</name></member>
- </type>
- <type category="struct" name="VkFormatProperties3KHR" returnedonly="true" structextends="VkFormatProperties2">
- <member values="VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkFormatFeatureFlags2KHR</type> <name>linearTilingFeatures</name></member>
- <member optional="true"><type>VkFormatFeatureFlags2KHR</type> <name>optimalTilingFeatures</name></member>
- <member optional="true"><type>VkFormatFeatureFlags2KHR</type> <name>bufferFeatures</name></member>
- </type>
- <type category="struct" name="VkDrmFormatModifierPropertiesList2EXT" returnedonly="true" structextends="VkFormatProperties2">
- <member values="VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>uint32_t</type> <name>drmFormatModifierCount</name></member>
- <member optional="true,false" len="drmFormatModifierCount"><type>VkDrmFormatModifierProperties2EXT</type>* <name>pDrmFormatModifierProperties</name></member>
- </type>
- <type category="struct" name="VkDrmFormatModifierProperties2EXT" returnedonly="true">
- <member><type>uint64_t</type> <name>drmFormatModifier</name></member>
- <member><type>uint32_t</type> <name>drmFormatModifierPlaneCount</name></member>
- <member><type>VkFormatFeatureFlags2KHR</type> <name>drmFormatModifierTilingFeatures</name></member>
- </type>
- <type category="struct" name="VkAndroidHardwareBufferFormatProperties2ANDROID" structextends="VkAndroidHardwareBufferPropertiesANDROID" returnedonly="true">
- <member values="VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkFormat</type> <name>format</name></member>
- <member><type>uint64_t</type> <name>externalFormat</name></member>
- <member><type>VkFormatFeatureFlags2KHR</type> <name>formatFeatures</name></member>
- <member><type>VkComponentMapping</type> <name>samplerYcbcrConversionComponents</name></member>
- <member><type>VkSamplerYcbcrModelConversion</type> <name>suggestedYcbcrModel</name></member>
- <member><type>VkSamplerYcbcrRange</type> <name>suggestedYcbcrRange</name></member>
- <member><type>VkChromaLocation</type> <name>suggestedXChromaOffset</name></member>
- <member><type>VkChromaLocation</type> <name>suggestedYChromaOffset</name></member>
- </type>
- <type category="struct" name="VkPipelineRenderingCreateInfoKHR" structextends="VkGraphicsPipelineCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>uint32_t</type> <name>viewMask</name></member>
- <member optional="true"><type>uint32_t</type> <name>colorAttachmentCount</name></member>
- <member len="colorAttachmentCount">const <type>VkFormat</type>* <name>pColorAttachmentFormats</name></member>
- <member><type>VkFormat</type> <name>depthAttachmentFormat</name></member>
- <member><type>VkFormat</type> <name>stencilAttachmentFormat</name></member>
- </type>
- <type category="struct" name="VkRenderingInfoKHR">
- <member values="VK_STRUCTURE_TYPE_RENDERING_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkRenderingFlagsKHR</type> <name>flags</name></member>
- <member><type>VkRect2D</type> <name>renderArea</name></member>
- <member><type>uint32_t</type> <name>layerCount</name></member>
- <member><type>uint32_t</type> <name>viewMask</name></member>
- <member optional="true"><type>uint32_t</type> <name>colorAttachmentCount</name></member>
- <member len="colorAttachmentCount">const <type>VkRenderingAttachmentInfoKHR</type>* <name>pColorAttachments</name></member>
- <member optional="true">const <type>VkRenderingAttachmentInfoKHR</type>* <name>pDepthAttachment</name></member>
- <member optional="true">const <type>VkRenderingAttachmentInfoKHR</type>* <name>pStencilAttachment</name></member>
- </type>
- <type category="struct" name="VkRenderingAttachmentInfoKHR">
- <member values="VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkImageView</type> <name>imageView</name></member>
- <member><type>VkImageLayout</type> <name>imageLayout</name></member>
- <member optional="true"><type>VkResolveModeFlagBits</type> <name>resolveMode</name></member>
- <member optional="true"><type>VkImageView</type> <name>resolveImageView</name></member>
- <member><type>VkImageLayout</type> <name>resolveImageLayout</name></member>
- <member><type>VkAttachmentLoadOp</type> <name>loadOp</name></member>
- <member><type>VkAttachmentStoreOp</type> <name>storeOp</name></member>
- <member><type>VkClearValue</type> <name>clearValue</name></member>
- </type>
- <type category="struct" name="VkRenderingFragmentShadingRateAttachmentInfoKHR" structextends="VkRenderingInfoKHR">
- <member values="VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkImageView</type> <name>imageView</name></member>
- <member><type>VkImageLayout</type> <name>imageLayout</name></member>
- <member><type>VkExtent2D</type> <name>shadingRateAttachmentTexelSize</name></member>
- </type>
- <type category="struct" name="VkRenderingFragmentDensityMapAttachmentInfoEXT" structextends="VkRenderingInfoKHR">
- <member values="VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkImageView</type> <name>imageView</name></member>
- <member><type>VkImageLayout</type> <name>imageLayout</name></member>
- </type>
- <type category="struct" name="VkPhysicalDeviceDynamicRenderingFeaturesKHR" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
- <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true" noautovalidity="true"><type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>dynamicRendering</name></member>
- </type>
- <type category="struct" name="VkCommandBufferInheritanceRenderingInfoKHR" structextends="VkCommandBufferInheritanceInfo">
- <member values="VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member optional="true"><type>VkRenderingFlagsKHR</type> <name>flags</name></member>
- <member><type>uint32_t</type> <name>viewMask</name></member>
- <member><type>uint32_t</type> <name>colorAttachmentCount</name></member>
- <member len="colorAttachmentCount">const <type>VkFormat</type>* <name>pColorAttachmentFormats</name></member>
- <member><type>VkFormat</type> <name>depthAttachmentFormat</name></member>
- <member><type>VkFormat</type> <name>stencilAttachmentFormat</name></member>
- <member optional="true"><type>VkSampleCountFlagBits</type> <name>rasterizationSamples</name></member>
- </type>
- <type category="struct" name="VkAttachmentSampleCountInfoAMD" structextends="VkCommandBufferInheritanceInfo,VkGraphicsPipelineCreateInfo">
- <member values="VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>uint32_t</type> <name>colorAttachmentCount</name></member>
- <member optional="false,true" len="colorAttachmentCount">const <type>VkSampleCountFlagBits</type>* <name>pColorAttachmentSamples</name></member>
- <member optional="true"><type>VkSampleCountFlagBits</type> <name>depthStencilAttachmentSamples</name></member>
- </type>
- <type category="struct" name="VkAttachmentSampleCountInfoNV" alias="VkAttachmentSampleCountInfoAMD"/>
- <type category="struct" name="VkMultiviewPerViewAttributesInfoNVX" structextends="VkCommandBufferInheritanceInfo,VkGraphicsPipelineCreateInfo,VkRenderingInfoKHR">
- <member values="VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX"><type>VkStructureType</type> <name>sType</name></member>
- <member optional="true">const <type>void</type>* <name>pNext</name></member>
- <member><type>VkBool32</type> <name>perViewAttributes</name></member>
- <member><type>VkBool32</type> <name>perViewAttributesPositionXOnly</name></member>
- </type>
- </types>
- <comment>Vulkan enumerant (token) definitions</comment>
-
- <enums name="API Constants" comment="Vulkan hardcoded constants - not an enumerated type, part of the header boilerplate">
- <enum type="uint32_t" value="256" name="VK_MAX_PHYSICAL_DEVICE_NAME_SIZE"/>
- <enum type="uint32_t" value="16" name="VK_UUID_SIZE"/>
- <enum type="uint32_t" value="8" name="VK_LUID_SIZE"/>
- <enum name="VK_LUID_SIZE_KHR" alias="VK_LUID_SIZE"/>
- <enum type="uint32_t" value="256" name="VK_MAX_EXTENSION_NAME_SIZE"/>
- <enum type="uint32_t" value="256" name="VK_MAX_DESCRIPTION_SIZE"/>
- <enum type="uint32_t" value="32" name="VK_MAX_MEMORY_TYPES"/>
- <enum type="uint32_t" value="16" name="VK_MAX_MEMORY_HEAPS" comment="The maximum number of unique memory heaps, each of which supporting 1 or more memory types"/>
- <enum type="float" value="1000.0F" name="VK_LOD_CLAMP_NONE"/>
- <enum type="uint32_t" value="(~0U)" name="VK_REMAINING_MIP_LEVELS"/>
- <enum type="uint32_t" value="(~0U)" name="VK_REMAINING_ARRAY_LAYERS"/>
- <enum type="uint64_t" value="(~0ULL)" name="VK_WHOLE_SIZE"/>
- <enum type="uint32_t" value="(~0U)" name="VK_ATTACHMENT_UNUSED"/>
- <enum type="uint32_t" value="1" name="VK_TRUE"/>
- <enum type="uint32_t" value="0" name="VK_FALSE"/>
- <enum type="uint32_t" value="(~0U)" name="VK_QUEUE_FAMILY_IGNORED"/>
- <enum type="uint32_t" value="(~1U)" name="VK_QUEUE_FAMILY_EXTERNAL"/>
- <enum name="VK_QUEUE_FAMILY_EXTERNAL_KHR" alias="VK_QUEUE_FAMILY_EXTERNAL"/>
- <enum type="uint32_t" value="(~2U)" name="VK_QUEUE_FAMILY_FOREIGN_EXT"/>
- <enum type="uint32_t" value="(~0U)" name="VK_SUBPASS_EXTERNAL"/>
- <enum type="uint32_t" value="32" name="VK_MAX_DEVICE_GROUP_SIZE"/>
- <enum name="VK_MAX_DEVICE_GROUP_SIZE_KHR" alias="VK_MAX_DEVICE_GROUP_SIZE"/>
- <enum type="uint32_t" value="256" name="VK_MAX_DRIVER_NAME_SIZE"/>
- <enum name="VK_MAX_DRIVER_NAME_SIZE_KHR" alias="VK_MAX_DRIVER_NAME_SIZE"/>
- <enum type="uint32_t" value="256" name="VK_MAX_DRIVER_INFO_SIZE"/>
- <enum name="VK_MAX_DRIVER_INFO_SIZE_KHR" alias="VK_MAX_DRIVER_INFO_SIZE"/>
- <enum type="uint32_t" value="(~0U)" name="VK_SHADER_UNUSED_KHR"/>
- <enum name="VK_SHADER_UNUSED_NV" alias="VK_SHADER_UNUSED_KHR"/>
- <enum type="uint32_t" value="16" name="VK_MAX_GLOBAL_PRIORITY_SIZE_EXT"/>
- </enums>
-
- <comment>
- Unlike OpenGL, most tokens in Vulkan are actual typed enumerants in
- their own numeric namespaces. The "name" attribute is the C enum
- type name, and is pulled in from a type tag definition above
- (slightly clunky, but retains the type / enum distinction). "type"
- attributes of "enum" or "bitmask" indicate that these values should
- be generated inside an appropriate definition.
- </comment>
-
- <enums name="VkImageLayout" type="enum">
- <enum value="0" name="VK_IMAGE_LAYOUT_UNDEFINED" comment="Implicit layout an image is when its contents are undefined due to various reasons (e.g. right after creation)"/>
- <enum value="1" name="VK_IMAGE_LAYOUT_GENERAL" comment="General layout when image can be used for any kind of access"/>
- <enum value="2" name="VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL" comment="Optimal layout when image is only used for color attachment read/write"/>
- <enum value="3" name="VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL" comment="Optimal layout when image is only used for depth/stencil attachment read/write"/>
- <enum value="4" name="VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL" comment="Optimal layout when image is used for read only depth/stencil attachment and shader access"/>
- <enum value="5" name="VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL" comment="Optimal layout when image is used for read only shader access"/>
- <enum value="6" name="VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL" comment="Optimal layout when image is used only as source of transfer operations"/>
- <enum value="7" name="VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL" comment="Optimal layout when image is used only as destination of transfer operations"/>
- <enum value="8" name="VK_IMAGE_LAYOUT_PREINITIALIZED" comment="Initial layout used when the data is populated by the CPU"/>
- </enums>
- <enums name="VkAttachmentLoadOp" type="enum">
- <enum value="0" name="VK_ATTACHMENT_LOAD_OP_LOAD"/>
- <enum value="1" name="VK_ATTACHMENT_LOAD_OP_CLEAR"/>
- <enum value="2" name="VK_ATTACHMENT_LOAD_OP_DONT_CARE"/>
- </enums>
- <enums name="VkAttachmentStoreOp" type="enum">
- <enum value="0" name="VK_ATTACHMENT_STORE_OP_STORE"/>
- <enum value="1" name="VK_ATTACHMENT_STORE_OP_DONT_CARE"/>
- </enums>
- <enums name="VkImageType" type="enum">
- <enum value="0" name="VK_IMAGE_TYPE_1D"/>
- <enum value="1" name="VK_IMAGE_TYPE_2D"/>
- <enum value="2" name="VK_IMAGE_TYPE_3D"/>
- </enums>
- <enums name="VkImageTiling" type="enum">
- <enum value="0" name="VK_IMAGE_TILING_OPTIMAL"/>
- <enum value="1" name="VK_IMAGE_TILING_LINEAR"/>
- </enums>
- <enums name="VkImageViewType" type="enum">
- <enum value="0" name="VK_IMAGE_VIEW_TYPE_1D"/>
- <enum value="1" name="VK_IMAGE_VIEW_TYPE_2D"/>
- <enum value="2" name="VK_IMAGE_VIEW_TYPE_3D"/>
- <enum value="3" name="VK_IMAGE_VIEW_TYPE_CUBE"/>
- <enum value="4" name="VK_IMAGE_VIEW_TYPE_1D_ARRAY"/>
- <enum value="5" name="VK_IMAGE_VIEW_TYPE_2D_ARRAY"/>
- <enum value="6" name="VK_IMAGE_VIEW_TYPE_CUBE_ARRAY"/>
- </enums>
- <enums name="VkCommandBufferLevel" type="enum">
- <enum value="0" name="VK_COMMAND_BUFFER_LEVEL_PRIMARY"/>
- <enum value="1" name="VK_COMMAND_BUFFER_LEVEL_SECONDARY"/>
- </enums>
- <enums name="VkComponentSwizzle" type="enum">
- <enum value="0" name="VK_COMPONENT_SWIZZLE_IDENTITY"/>
- <enum value="1" name="VK_COMPONENT_SWIZZLE_ZERO"/>
- <enum value="2" name="VK_COMPONENT_SWIZZLE_ONE"/>
- <enum value="3" name="VK_COMPONENT_SWIZZLE_R"/>
- <enum value="4" name="VK_COMPONENT_SWIZZLE_G"/>
- <enum value="5" name="VK_COMPONENT_SWIZZLE_B"/>
- <enum value="6" name="VK_COMPONENT_SWIZZLE_A"/>
- </enums>
- <enums name="VkDescriptorType" type="enum">
- <enum value="0" name="VK_DESCRIPTOR_TYPE_SAMPLER"/>
- <enum value="1" name="VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER"/>
- <enum value="2" name="VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE"/>
- <enum value="3" name="VK_DESCRIPTOR_TYPE_STORAGE_IMAGE"/>
- <enum value="4" name="VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER"/>
- <enum value="5" name="VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER"/>
- <enum value="6" name="VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER"/>
- <enum value="7" name="VK_DESCRIPTOR_TYPE_STORAGE_BUFFER"/>
- <enum value="8" name="VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC"/>
- <enum value="9" name="VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC"/>
- <enum value="10" name="VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT"/>
- </enums>
- <enums name="VkQueryType" type="enum">
- <enum value="0" name="VK_QUERY_TYPE_OCCLUSION"/>
- <enum value="1" name="VK_QUERY_TYPE_PIPELINE_STATISTICS" comment="Optional"/>
- <enum value="2" name="VK_QUERY_TYPE_TIMESTAMP"/>
- </enums>
- <enums name="VkBorderColor" type="enum">
- <enum value="0" name="VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK"/>
- <enum value="1" name="VK_BORDER_COLOR_INT_TRANSPARENT_BLACK"/>
- <enum value="2" name="VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK"/>
- <enum value="3" name="VK_BORDER_COLOR_INT_OPAQUE_BLACK"/>
- <enum value="4" name="VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE"/>
- <enum value="5" name="VK_BORDER_COLOR_INT_OPAQUE_WHITE"/>
- </enums>
- <enums name="VkPipelineBindPoint" type="enum">
- <enum value="0" name="VK_PIPELINE_BIND_POINT_GRAPHICS"/>
- <enum value="1" name="VK_PIPELINE_BIND_POINT_COMPUTE"/>
- </enums>
- <enums name="VkPipelineCacheHeaderVersion" type="enum">
- <enum value="1" name="VK_PIPELINE_CACHE_HEADER_VERSION_ONE"/>
- </enums>
- <enums name="VkPipelineCacheCreateFlagBits" type="bitmask">
- </enums>
- <enums name="VkPrimitiveTopology" type="enum">
- <enum value="0" name="VK_PRIMITIVE_TOPOLOGY_POINT_LIST"/>
- <enum value="1" name="VK_PRIMITIVE_TOPOLOGY_LINE_LIST"/>
- <enum value="2" name="VK_PRIMITIVE_TOPOLOGY_LINE_STRIP"/>
- <enum value="3" name="VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST"/>
- <enum value="4" name="VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP"/>
- <enum value="5" name="VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN"/>
- <enum value="6" name="VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY"/>
- <enum value="7" name="VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY"/>
- <enum value="8" name="VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY"/>
- <enum value="9" name="VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY"/>
- <enum value="10" name="VK_PRIMITIVE_TOPOLOGY_PATCH_LIST"/>
- </enums>
- <enums name="VkSharingMode" type="enum">
- <enum value="0" name="VK_SHARING_MODE_EXCLUSIVE"/>
- <enum value="1" name="VK_SHARING_MODE_CONCURRENT"/>
- </enums>
- <enums name="VkIndexType" type="enum">
- <enum value="0" name="VK_INDEX_TYPE_UINT16"/>
- <enum value="1" name="VK_INDEX_TYPE_UINT32"/>
- </enums>
- <enums name="VkFilter" type="enum">
- <enum value="0" name="VK_FILTER_NEAREST"/>
- <enum value="1" name="VK_FILTER_LINEAR"/>
- </enums>
- <enums name="VkSamplerMipmapMode" type="enum">
- <enum value="0" name="VK_SAMPLER_MIPMAP_MODE_NEAREST" comment="Choose nearest mip level"/>
- <enum value="1" name="VK_SAMPLER_MIPMAP_MODE_LINEAR" comment="Linear filter between mip levels"/>
- </enums>
- <enums name="VkSamplerAddressMode" type="enum">
- <enum value="0" name="VK_SAMPLER_ADDRESS_MODE_REPEAT"/>
- <enum value="1" name="VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT"/>
- <enum value="2" name="VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE"/>
- <enum value="3" name="VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER"/>
- <comment>
- value="4" reserved for VK_KHR_sampler_mirror_clamp_to_edge
- enum VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE; do not
- alias!
- </comment>
- </enums>
- <enums name="VkCompareOp" type="enum">
- <enum value="0" name="VK_COMPARE_OP_NEVER"/>
- <enum value="1" name="VK_COMPARE_OP_LESS"/>
- <enum value="2" name="VK_COMPARE_OP_EQUAL"/>
- <enum value="3" name="VK_COMPARE_OP_LESS_OR_EQUAL"/>
- <enum value="4" name="VK_COMPARE_OP_GREATER"/>
- <enum value="5" name="VK_COMPARE_OP_NOT_EQUAL"/>
- <enum value="6" name="VK_COMPARE_OP_GREATER_OR_EQUAL"/>
- <enum value="7" name="VK_COMPARE_OP_ALWAYS"/>
- </enums>
- <enums name="VkPolygonMode" type="enum">
- <enum value="0" name="VK_POLYGON_MODE_FILL"/>
- <enum value="1" name="VK_POLYGON_MODE_LINE"/>
- <enum value="2" name="VK_POLYGON_MODE_POINT"/>
- </enums>
- <enums name="VkFrontFace" type="enum">
- <enum value="0" name="VK_FRONT_FACE_COUNTER_CLOCKWISE"/>
- <enum value="1" name="VK_FRONT_FACE_CLOCKWISE"/>
- </enums>
- <enums name="VkBlendFactor" type="enum">
- <enum value="0" name="VK_BLEND_FACTOR_ZERO"/>
- <enum value="1" name="VK_BLEND_FACTOR_ONE"/>
- <enum value="2" name="VK_BLEND_FACTOR_SRC_COLOR"/>
- <enum value="3" name="VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR"/>
- <enum value="4" name="VK_BLEND_FACTOR_DST_COLOR"/>
- <enum value="5" name="VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR"/>
- <enum value="6" name="VK_BLEND_FACTOR_SRC_ALPHA"/>
- <enum value="7" name="VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA"/>
- <enum value="8" name="VK_BLEND_FACTOR_DST_ALPHA"/>
- <enum value="9" name="VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA"/>
- <enum value="10" name="VK_BLEND_FACTOR_CONSTANT_COLOR"/>
- <enum value="11" name="VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR"/>
- <enum value="12" name="VK_BLEND_FACTOR_CONSTANT_ALPHA"/>
- <enum value="13" name="VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA"/>
- <enum value="14" name="VK_BLEND_FACTOR_SRC_ALPHA_SATURATE"/>
- <enum value="15" name="VK_BLEND_FACTOR_SRC1_COLOR"/>
- <enum value="16" name="VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR"/>
- <enum value="17" name="VK_BLEND_FACTOR_SRC1_ALPHA"/>
- <enum value="18" name="VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA"/>
- </enums>
- <enums name="VkBlendOp" type="enum">
- <enum value="0" name="VK_BLEND_OP_ADD"/>
- <enum value="1" name="VK_BLEND_OP_SUBTRACT"/>
- <enum value="2" name="VK_BLEND_OP_REVERSE_SUBTRACT"/>
- <enum value="3" name="VK_BLEND_OP_MIN"/>
- <enum value="4" name="VK_BLEND_OP_MAX"/>
- </enums>
- <enums name="VkStencilOp" type="enum">
- <enum value="0" name="VK_STENCIL_OP_KEEP"/>
- <enum value="1" name="VK_STENCIL_OP_ZERO"/>
- <enum value="2" name="VK_STENCIL_OP_REPLACE"/>
- <enum value="3" name="VK_STENCIL_OP_INCREMENT_AND_CLAMP"/>
- <enum value="4" name="VK_STENCIL_OP_DECREMENT_AND_CLAMP"/>
- <enum value="5" name="VK_STENCIL_OP_INVERT"/>
- <enum value="6" name="VK_STENCIL_OP_INCREMENT_AND_WRAP"/>
- <enum value="7" name="VK_STENCIL_OP_DECREMENT_AND_WRAP"/>
- </enums>
- <enums name="VkLogicOp" type="enum">
- <enum value="0" name="VK_LOGIC_OP_CLEAR"/>
- <enum value="1" name="VK_LOGIC_OP_AND"/>
- <enum value="2" name="VK_LOGIC_OP_AND_REVERSE"/>
- <enum value="3" name="VK_LOGIC_OP_COPY"/>
- <enum value="4" name="VK_LOGIC_OP_AND_INVERTED"/>
- <enum value="5" name="VK_LOGIC_OP_NO_OP"/>
- <enum value="6" name="VK_LOGIC_OP_XOR"/>
- <enum value="7" name="VK_LOGIC_OP_OR"/>
- <enum value="8" name="VK_LOGIC_OP_NOR"/>
- <enum value="9" name="VK_LOGIC_OP_EQUIVALENT"/>
- <enum value="10" name="VK_LOGIC_OP_INVERT"/>
- <enum value="11" name="VK_LOGIC_OP_OR_REVERSE"/>
- <enum value="12" name="VK_LOGIC_OP_COPY_INVERTED"/>
- <enum value="13" name="VK_LOGIC_OP_OR_INVERTED"/>
- <enum value="14" name="VK_LOGIC_OP_NAND"/>
- <enum value="15" name="VK_LOGIC_OP_SET"/>
- </enums>
- <enums name="VkInternalAllocationType" type="enum">
- <enum value="0" name="VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE"/>
- </enums>
- <enums name="VkSystemAllocationScope" type="enum">
- <enum value="0" name="VK_SYSTEM_ALLOCATION_SCOPE_COMMAND"/>
- <enum value="1" name="VK_SYSTEM_ALLOCATION_SCOPE_OBJECT"/>
- <enum value="2" name="VK_SYSTEM_ALLOCATION_SCOPE_CACHE"/>
- <enum value="3" name="VK_SYSTEM_ALLOCATION_SCOPE_DEVICE"/>
- <enum value="4" name="VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE"/>
- </enums>
- <enums name="VkPhysicalDeviceType" type="enum">
- <enum value="0" name="VK_PHYSICAL_DEVICE_TYPE_OTHER"/>
- <enum value="1" name="VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU"/>
- <enum value="2" name="VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU"/>
- <enum value="3" name="VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU"/>
- <enum value="4" name="VK_PHYSICAL_DEVICE_TYPE_CPU"/>
- </enums>
- <enums name="VkVertexInputRate" type="enum">
- <enum value="0" name="VK_VERTEX_INPUT_RATE_VERTEX"/>
- <enum value="1" name="VK_VERTEX_INPUT_RATE_INSTANCE"/>
- </enums>
- <enums name="VkFormat" type="enum" comment="Vulkan format definitions">
- <enum value="0" name="VK_FORMAT_UNDEFINED"/>
- <enum value="1" name="VK_FORMAT_R4G4_UNORM_PACK8"/>
- <enum value="2" name="VK_FORMAT_R4G4B4A4_UNORM_PACK16"/>
- <enum value="3" name="VK_FORMAT_B4G4R4A4_UNORM_PACK16"/>
- <enum value="4" name="VK_FORMAT_R5G6B5_UNORM_PACK16"/>
- <enum value="5" name="VK_FORMAT_B5G6R5_UNORM_PACK16"/>
- <enum value="6" name="VK_FORMAT_R5G5B5A1_UNORM_PACK16"/>
- <enum value="7" name="VK_FORMAT_B5G5R5A1_UNORM_PACK16"/>
- <enum value="8" name="VK_FORMAT_A1R5G5B5_UNORM_PACK16"/>
- <enum value="9" name="VK_FORMAT_R8_UNORM"/>
- <enum value="10" name="VK_FORMAT_R8_SNORM"/>
- <enum value="11" name="VK_FORMAT_R8_USCALED"/>
- <enum value="12" name="VK_FORMAT_R8_SSCALED"/>
- <enum value="13" name="VK_FORMAT_R8_UINT"/>
- <enum value="14" name="VK_FORMAT_R8_SINT"/>
- <enum value="15" name="VK_FORMAT_R8_SRGB"/>
- <enum value="16" name="VK_FORMAT_R8G8_UNORM"/>
- <enum value="17" name="VK_FORMAT_R8G8_SNORM"/>
- <enum value="18" name="VK_FORMAT_R8G8_USCALED"/>
- <enum value="19" name="VK_FORMAT_R8G8_SSCALED"/>
- <enum value="20" name="VK_FORMAT_R8G8_UINT"/>
- <enum value="21" name="VK_FORMAT_R8G8_SINT"/>
- <enum value="22" name="VK_FORMAT_R8G8_SRGB"/>
- <enum value="23" name="VK_FORMAT_R8G8B8_UNORM"/>
- <enum value="24" name="VK_FORMAT_R8G8B8_SNORM"/>
- <enum value="25" name="VK_FORMAT_R8G8B8_USCALED"/>
- <enum value="26" name="VK_FORMAT_R8G8B8_SSCALED"/>
- <enum value="27" name="VK_FORMAT_R8G8B8_UINT"/>
- <enum value="28" name="VK_FORMAT_R8G8B8_SINT"/>
- <enum value="29" name="VK_FORMAT_R8G8B8_SRGB"/>
- <enum value="30" name="VK_FORMAT_B8G8R8_UNORM"/>
- <enum value="31" name="VK_FORMAT_B8G8R8_SNORM"/>
- <enum value="32" name="VK_FORMAT_B8G8R8_USCALED"/>
- <enum value="33" name="VK_FORMAT_B8G8R8_SSCALED"/>
- <enum value="34" name="VK_FORMAT_B8G8R8_UINT"/>
- <enum value="35" name="VK_FORMAT_B8G8R8_SINT"/>
- <enum value="36" name="VK_FORMAT_B8G8R8_SRGB"/>
- <enum value="37" name="VK_FORMAT_R8G8B8A8_UNORM"/>
- <enum value="38" name="VK_FORMAT_R8G8B8A8_SNORM"/>
- <enum value="39" name="VK_FORMAT_R8G8B8A8_USCALED"/>
- <enum value="40" name="VK_FORMAT_R8G8B8A8_SSCALED"/>
- <enum value="41" name="VK_FORMAT_R8G8B8A8_UINT"/>
- <enum value="42" name="VK_FORMAT_R8G8B8A8_SINT"/>
- <enum value="43" name="VK_FORMAT_R8G8B8A8_SRGB"/>
- <enum value="44" name="VK_FORMAT_B8G8R8A8_UNORM"/>
- <enum value="45" name="VK_FORMAT_B8G8R8A8_SNORM"/>
- <enum value="46" name="VK_FORMAT_B8G8R8A8_USCALED"/>
- <enum value="47" name="VK_FORMAT_B8G8R8A8_SSCALED"/>
- <enum value="48" name="VK_FORMAT_B8G8R8A8_UINT"/>
- <enum value="49" name="VK_FORMAT_B8G8R8A8_SINT"/>
- <enum value="50" name="VK_FORMAT_B8G8R8A8_SRGB"/>
- <enum value="51" name="VK_FORMAT_A8B8G8R8_UNORM_PACK32"/>
- <enum value="52" name="VK_FORMAT_A8B8G8R8_SNORM_PACK32"/>
- <enum value="53" name="VK_FORMAT_A8B8G8R8_USCALED_PACK32"/>
- <enum value="54" name="VK_FORMAT_A8B8G8R8_SSCALED_PACK32"/>
- <enum value="55" name="VK_FORMAT_A8B8G8R8_UINT_PACK32"/>
- <enum value="56" name="VK_FORMAT_A8B8G8R8_SINT_PACK32"/>
- <enum value="57" name="VK_FORMAT_A8B8G8R8_SRGB_PACK32"/>
- <enum value="58" name="VK_FORMAT_A2R10G10B10_UNORM_PACK32"/>
- <enum value="59" name="VK_FORMAT_A2R10G10B10_SNORM_PACK32"/>
- <enum value="60" name="VK_FORMAT_A2R10G10B10_USCALED_PACK32"/>
- <enum value="61" name="VK_FORMAT_A2R10G10B10_SSCALED_PACK32"/>
- <enum value="62" name="VK_FORMAT_A2R10G10B10_UINT_PACK32"/>
- <enum value="63" name="VK_FORMAT_A2R10G10B10_SINT_PACK32"/>
- <enum value="64" name="VK_FORMAT_A2B10G10R10_UNORM_PACK32"/>
- <enum value="65" name="VK_FORMAT_A2B10G10R10_SNORM_PACK32"/>
- <enum value="66" name="VK_FORMAT_A2B10G10R10_USCALED_PACK32"/>
- <enum value="67" name="VK_FORMAT_A2B10G10R10_SSCALED_PACK32"/>
- <enum value="68" name="VK_FORMAT_A2B10G10R10_UINT_PACK32"/>
- <enum value="69" name="VK_FORMAT_A2B10G10R10_SINT_PACK32"/>
- <enum value="70" name="VK_FORMAT_R16_UNORM"/>
- <enum value="71" name="VK_FORMAT_R16_SNORM"/>
- <enum value="72" name="VK_FORMAT_R16_USCALED"/>
- <enum value="73" name="VK_FORMAT_R16_SSCALED"/>
- <enum value="74" name="VK_FORMAT_R16_UINT"/>
- <enum value="75" name="VK_FORMAT_R16_SINT"/>
- <enum value="76" name="VK_FORMAT_R16_SFLOAT"/>
- <enum value="77" name="VK_FORMAT_R16G16_UNORM"/>
- <enum value="78" name="VK_FORMAT_R16G16_SNORM"/>
- <enum value="79" name="VK_FORMAT_R16G16_USCALED"/>
- <enum value="80" name="VK_FORMAT_R16G16_SSCALED"/>
- <enum value="81" name="VK_FORMAT_R16G16_UINT"/>
- <enum value="82" name="VK_FORMAT_R16G16_SINT"/>
- <enum value="83" name="VK_FORMAT_R16G16_SFLOAT"/>
- <enum value="84" name="VK_FORMAT_R16G16B16_UNORM"/>
- <enum value="85" name="VK_FORMAT_R16G16B16_SNORM"/>
- <enum value="86" name="VK_FORMAT_R16G16B16_USCALED"/>
- <enum value="87" name="VK_FORMAT_R16G16B16_SSCALED"/>
- <enum value="88" name="VK_FORMAT_R16G16B16_UINT"/>
- <enum value="89" name="VK_FORMAT_R16G16B16_SINT"/>
- <enum value="90" name="VK_FORMAT_R16G16B16_SFLOAT"/>
- <enum value="91" name="VK_FORMAT_R16G16B16A16_UNORM"/>
- <enum value="92" name="VK_FORMAT_R16G16B16A16_SNORM"/>
- <enum value="93" name="VK_FORMAT_R16G16B16A16_USCALED"/>
- <enum value="94" name="VK_FORMAT_R16G16B16A16_SSCALED"/>
- <enum value="95" name="VK_FORMAT_R16G16B16A16_UINT"/>
- <enum value="96" name="VK_FORMAT_R16G16B16A16_SINT"/>
- <enum value="97" name="VK_FORMAT_R16G16B16A16_SFLOAT"/>
- <enum value="98" name="VK_FORMAT_R32_UINT"/>
- <enum value="99" name="VK_FORMAT_R32_SINT"/>
- <enum value="100" name="VK_FORMAT_R32_SFLOAT"/>
- <enum value="101" name="VK_FORMAT_R32G32_UINT"/>
- <enum value="102" name="VK_FORMAT_R32G32_SINT"/>
- <enum value="103" name="VK_FORMAT_R32G32_SFLOAT"/>
- <enum value="104" name="VK_FORMAT_R32G32B32_UINT"/>
- <enum value="105" name="VK_FORMAT_R32G32B32_SINT"/>
- <enum value="106" name="VK_FORMAT_R32G32B32_SFLOAT"/>
- <enum value="107" name="VK_FORMAT_R32G32B32A32_UINT"/>
- <enum value="108" name="VK_FORMAT_R32G32B32A32_SINT"/>
- <enum value="109" name="VK_FORMAT_R32G32B32A32_SFLOAT"/>
- <enum value="110" name="VK_FORMAT_R64_UINT"/>
- <enum value="111" name="VK_FORMAT_R64_SINT"/>
- <enum value="112" name="VK_FORMAT_R64_SFLOAT"/>
- <enum value="113" name="VK_FORMAT_R64G64_UINT"/>
- <enum value="114" name="VK_FORMAT_R64G64_SINT"/>
- <enum value="115" name="VK_FORMAT_R64G64_SFLOAT"/>
- <enum value="116" name="VK_FORMAT_R64G64B64_UINT"/>
- <enum value="117" name="VK_FORMAT_R64G64B64_SINT"/>
- <enum value="118" name="VK_FORMAT_R64G64B64_SFLOAT"/>
- <enum value="119" name="VK_FORMAT_R64G64B64A64_UINT"/>
- <enum value="120" name="VK_FORMAT_R64G64B64A64_SINT"/>
- <enum value="121" name="VK_FORMAT_R64G64B64A64_SFLOAT"/>
- <enum value="122" name="VK_FORMAT_B10G11R11_UFLOAT_PACK32"/>
- <enum value="123" name="VK_FORMAT_E5B9G9R9_UFLOAT_PACK32"/>
- <enum value="124" name="VK_FORMAT_D16_UNORM"/>
- <enum value="125" name="VK_FORMAT_X8_D24_UNORM_PACK32"/>
- <enum value="126" name="VK_FORMAT_D32_SFLOAT"/>
- <enum value="127" name="VK_FORMAT_S8_UINT"/>
- <enum value="128" name="VK_FORMAT_D16_UNORM_S8_UINT"/>
- <enum value="129" name="VK_FORMAT_D24_UNORM_S8_UINT"/>
- <enum value="130" name="VK_FORMAT_D32_SFLOAT_S8_UINT"/>
- <enum value="131" name="VK_FORMAT_BC1_RGB_UNORM_BLOCK"/>
- <enum value="132" name="VK_FORMAT_BC1_RGB_SRGB_BLOCK"/>
- <enum value="133" name="VK_FORMAT_BC1_RGBA_UNORM_BLOCK"/>
- <enum value="134" name="VK_FORMAT_BC1_RGBA_SRGB_BLOCK"/>
- <enum value="135" name="VK_FORMAT_BC2_UNORM_BLOCK"/>
- <enum value="136" name="VK_FORMAT_BC2_SRGB_BLOCK"/>
- <enum value="137" name="VK_FORMAT_BC3_UNORM_BLOCK"/>
- <enum value="138" name="VK_FORMAT_BC3_SRGB_BLOCK"/>
- <enum value="139" name="VK_FORMAT_BC4_UNORM_BLOCK"/>
- <enum value="140" name="VK_FORMAT_BC4_SNORM_BLOCK"/>
- <enum value="141" name="VK_FORMAT_BC5_UNORM_BLOCK"/>
- <enum value="142" name="VK_FORMAT_BC5_SNORM_BLOCK"/>
- <enum value="143" name="VK_FORMAT_BC6H_UFLOAT_BLOCK"/>
- <enum value="144" name="VK_FORMAT_BC6H_SFLOAT_BLOCK"/>
- <enum value="145" name="VK_FORMAT_BC7_UNORM_BLOCK"/>
- <enum value="146" name="VK_FORMAT_BC7_SRGB_BLOCK"/>
- <enum value="147" name="VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK"/>
- <enum value="148" name="VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK"/>
- <enum value="149" name="VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK"/>
- <enum value="150" name="VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK"/>
- <enum value="151" name="VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK"/>
- <enum value="152" name="VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK"/>
- <enum value="153" name="VK_FORMAT_EAC_R11_UNORM_BLOCK"/>
- <enum value="154" name="VK_FORMAT_EAC_R11_SNORM_BLOCK"/>
- <enum value="155" name="VK_FORMAT_EAC_R11G11_UNORM_BLOCK"/>
- <enum value="156" name="VK_FORMAT_EAC_R11G11_SNORM_BLOCK"/>
- <enum value="157" name="VK_FORMAT_ASTC_4x4_UNORM_BLOCK"/>
- <enum value="158" name="VK_FORMAT_ASTC_4x4_SRGB_BLOCK"/>
- <enum value="159" name="VK_FORMAT_ASTC_5x4_UNORM_BLOCK"/>
- <enum value="160" name="VK_FORMAT_ASTC_5x4_SRGB_BLOCK"/>
- <enum value="161" name="VK_FORMAT_ASTC_5x5_UNORM_BLOCK"/>
- <enum value="162" name="VK_FORMAT_ASTC_5x5_SRGB_BLOCK"/>
- <enum value="163" name="VK_FORMAT_ASTC_6x5_UNORM_BLOCK"/>
- <enum value="164" name="VK_FORMAT_ASTC_6x5_SRGB_BLOCK"/>
- <enum value="165" name="VK_FORMAT_ASTC_6x6_UNORM_BLOCK"/>
- <enum value="166" name="VK_FORMAT_ASTC_6x6_SRGB_BLOCK"/>
- <enum value="167" name="VK_FORMAT_ASTC_8x5_UNORM_BLOCK"/>
- <enum value="168" name="VK_FORMAT_ASTC_8x5_SRGB_BLOCK"/>
- <enum value="169" name="VK_FORMAT_ASTC_8x6_UNORM_BLOCK"/>
- <enum value="170" name="VK_FORMAT_ASTC_8x6_SRGB_BLOCK"/>
- <enum value="171" name="VK_FORMAT_ASTC_8x8_UNORM_BLOCK"/>
- <enum value="172" name="VK_FORMAT_ASTC_8x8_SRGB_BLOCK"/>
- <enum value="173" name="VK_FORMAT_ASTC_10x5_UNORM_BLOCK"/>
- <enum value="174" name="VK_FORMAT_ASTC_10x5_SRGB_BLOCK"/>
- <enum value="175" name="VK_FORMAT_ASTC_10x6_UNORM_BLOCK"/>
- <enum value="176" name="VK_FORMAT_ASTC_10x6_SRGB_BLOCK"/>
- <enum value="177" name="VK_FORMAT_ASTC_10x8_UNORM_BLOCK"/>
- <enum value="178" name="VK_FORMAT_ASTC_10x8_SRGB_BLOCK"/>
- <enum value="179" name="VK_FORMAT_ASTC_10x10_UNORM_BLOCK"/>
- <enum value="180" name="VK_FORMAT_ASTC_10x10_SRGB_BLOCK"/>
- <enum value="181" name="VK_FORMAT_ASTC_12x10_UNORM_BLOCK"/>
- <enum value="182" name="VK_FORMAT_ASTC_12x10_SRGB_BLOCK"/>
- <enum value="183" name="VK_FORMAT_ASTC_12x12_UNORM_BLOCK"/>
- <enum value="184" name="VK_FORMAT_ASTC_12x12_SRGB_BLOCK"/>
- </enums>
- <enums name="VkStructureType" type="enum" comment="Structure type enumerant">
- <enum value="0" name="VK_STRUCTURE_TYPE_APPLICATION_INFO"/>
- <enum value="1" name="VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO"/>
- <enum value="2" name="VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO"/>
- <enum value="3" name="VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO"/>
- <enum value="4" name="VK_STRUCTURE_TYPE_SUBMIT_INFO"/>
- <enum value="5" name="VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO"/>
- <enum value="6" name="VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE"/>
- <enum value="7" name="VK_STRUCTURE_TYPE_BIND_SPARSE_INFO"/>
- <enum value="8" name="VK_STRUCTURE_TYPE_FENCE_CREATE_INFO"/>
- <enum value="9" name="VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO"/>
- <enum value="10" name="VK_STRUCTURE_TYPE_EVENT_CREATE_INFO"/>
- <enum value="11" name="VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO"/>
- <enum value="12" name="VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO"/>
- <enum value="13" name="VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO"/>
- <enum value="14" name="VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO"/>
- <enum value="15" name="VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO"/>
- <enum value="16" name="VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO"/>
- <enum value="17" name="VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO"/>
- <enum value="18" name="VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO"/>
- <enum value="19" name="VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO"/>
- <enum value="20" name="VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO"/>
- <enum value="21" name="VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO"/>
- <enum value="22" name="VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO"/>
- <enum value="23" name="VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO"/>
- <enum value="24" name="VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO"/>
- <enum value="25" name="VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO"/>
- <enum value="26" name="VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO"/>
- <enum value="27" name="VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO"/>
- <enum value="28" name="VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO"/>
- <enum value="29" name="VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO"/>
- <enum value="30" name="VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO"/>
- <enum value="31" name="VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO"/>
- <enum value="32" name="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO"/>
- <enum value="33" name="VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO"/>
- <enum value="34" name="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO"/>
- <enum value="35" name="VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET"/>
- <enum value="36" name="VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET"/>
- <enum value="37" name="VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO"/>
- <enum value="38" name="VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO"/>
- <enum value="39" name="VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO"/>
- <enum value="40" name="VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO"/>
- <enum value="41" name="VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO"/>
- <enum value="42" name="VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO"/>
- <enum value="43" name="VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO"/>
- <enum value="44" name="VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER"/>
- <enum value="45" name="VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER"/>
- <enum value="46" name="VK_STRUCTURE_TYPE_MEMORY_BARRIER"/>
- <enum value="47" name="VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO" comment="Reserved for internal use by the loader, layers, and ICDs"/>
- <enum value="48" name="VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO" comment="Reserved for internal use by the loader, layers, and ICDs"/>
- </enums>
- <enums name="VkSubpassContents" type="enum">
- <enum value="0" name="VK_SUBPASS_CONTENTS_INLINE"/>
- <enum value="1" name="VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS"/>
- </enums>
- <enums name="VkResult" type="enum" comment="API result codes">
- <comment>Return codes (positive values)</comment>
- <enum value="0" name="VK_SUCCESS" comment="Command completed successfully"/>
- <enum value="1" name="VK_NOT_READY" comment="A fence or query has not yet completed"/>
- <enum value="2" name="VK_TIMEOUT" comment="A wait operation has not completed in the specified time"/>
- <enum value="3" name="VK_EVENT_SET" comment="An event is signaled"/>
- <enum value="4" name="VK_EVENT_RESET" comment="An event is unsignaled"/>
- <enum value="5" name="VK_INCOMPLETE" comment="A return array was too small for the result"/>
- <comment>Error codes (negative values)</comment>
- <enum value="-1" name="VK_ERROR_OUT_OF_HOST_MEMORY" comment="A host memory allocation has failed"/>
- <enum value="-2" name="VK_ERROR_OUT_OF_DEVICE_MEMORY" comment="A device memory allocation has failed"/>
- <enum value="-3" name="VK_ERROR_INITIALIZATION_FAILED" comment="Initialization of a object has failed"/>
- <enum value="-4" name="VK_ERROR_DEVICE_LOST" comment="The logical device has been lost. See &lt;&lt;devsandqueues-lost-device&gt;&gt;"/>
- <enum value="-5" name="VK_ERROR_MEMORY_MAP_FAILED" comment="Mapping of a memory object has failed"/>
- <enum value="-6" name="VK_ERROR_LAYER_NOT_PRESENT" comment="Layer specified does not exist"/>
- <enum value="-7" name="VK_ERROR_EXTENSION_NOT_PRESENT" comment="Extension specified does not exist"/>
- <enum value="-8" name="VK_ERROR_FEATURE_NOT_PRESENT" comment="Requested feature is not available on this device"/>
- <enum value="-9" name="VK_ERROR_INCOMPATIBLE_DRIVER" comment="Unable to find a Vulkan driver"/>
- <enum value="-10" name="VK_ERROR_TOO_MANY_OBJECTS" comment="Too many objects of the type have already been created"/>
- <enum value="-11" name="VK_ERROR_FORMAT_NOT_SUPPORTED" comment="Requested format is not supported on this device"/>
- <enum value="-12" name="VK_ERROR_FRAGMENTED_POOL" comment="A requested pool allocation has failed due to fragmentation of the pool's memory"/>
- <enum value="-13" name="VK_ERROR_UNKNOWN" comment="An unknown error has occurred, due to an implementation or application bug"/>
- <unused start="-14" comment="This is the next unused available error code (negative value)"/>
- </enums>
- <enums name="VkDynamicState" type="enum">
- <enum value="0" name="VK_DYNAMIC_STATE_VIEWPORT"/>
- <enum value="1" name="VK_DYNAMIC_STATE_SCISSOR"/>
- <enum value="2" name="VK_DYNAMIC_STATE_LINE_WIDTH"/>
- <enum value="3" name="VK_DYNAMIC_STATE_DEPTH_BIAS"/>
- <enum value="4" name="VK_DYNAMIC_STATE_BLEND_CONSTANTS"/>
- <enum value="5" name="VK_DYNAMIC_STATE_DEPTH_BOUNDS"/>
- <enum value="6" name="VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK"/>
- <enum value="7" name="VK_DYNAMIC_STATE_STENCIL_WRITE_MASK"/>
- <enum value="8" name="VK_DYNAMIC_STATE_STENCIL_REFERENCE"/>
- </enums>
- <enums name="VkDescriptorUpdateTemplateType" type="enum">
- <enum value="0" name="VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET" comment="Create descriptor update template for descriptor set updates"/>
- </enums>
- <enums name="VkObjectType" type="enum" comment="Enums to track objects of various types - also see objtypeenum attributes on type tags">
- <enum value="0" name="VK_OBJECT_TYPE_UNKNOWN"/>
- <enum value="1" name="VK_OBJECT_TYPE_INSTANCE"/>
- <enum value="2" name="VK_OBJECT_TYPE_PHYSICAL_DEVICE"/>
- <enum value="3" name="VK_OBJECT_TYPE_DEVICE"/>
- <enum value="4" name="VK_OBJECT_TYPE_QUEUE"/>
- <enum value="5" name="VK_OBJECT_TYPE_SEMAPHORE"/>
- <enum value="6" name="VK_OBJECT_TYPE_COMMAND_BUFFER"/>
- <enum value="7" name="VK_OBJECT_TYPE_FENCE"/>
- <enum value="8" name="VK_OBJECT_TYPE_DEVICE_MEMORY"/>
- <enum value="9" name="VK_OBJECT_TYPE_BUFFER"/>
- <enum value="10" name="VK_OBJECT_TYPE_IMAGE"/>
- <enum value="11" name="VK_OBJECT_TYPE_EVENT"/>
- <enum value="12" name="VK_OBJECT_TYPE_QUERY_POOL"/>
- <enum value="13" name="VK_OBJECT_TYPE_BUFFER_VIEW"/>
- <enum value="14" name="VK_OBJECT_TYPE_IMAGE_VIEW"/>
- <enum value="15" name="VK_OBJECT_TYPE_SHADER_MODULE"/>
- <enum value="16" name="VK_OBJECT_TYPE_PIPELINE_CACHE"/>
- <enum value="17" name="VK_OBJECT_TYPE_PIPELINE_LAYOUT"/>
- <enum value="18" name="VK_OBJECT_TYPE_RENDER_PASS"/>
- <enum value="19" name="VK_OBJECT_TYPE_PIPELINE"/>
- <enum value="20" name="VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT"/>
- <enum value="21" name="VK_OBJECT_TYPE_SAMPLER"/>
- <enum value="22" name="VK_OBJECT_TYPE_DESCRIPTOR_POOL"/>
- <enum value="23" name="VK_OBJECT_TYPE_DESCRIPTOR_SET"/>
- <enum value="24" name="VK_OBJECT_TYPE_FRAMEBUFFER"/>
- <enum value="25" name="VK_OBJECT_TYPE_COMMAND_POOL"/>
- </enums>
-
- <comment>Flags</comment>
- <enums name="VkQueueFlagBits" type="bitmask">
- <enum bitpos="0" name="VK_QUEUE_GRAPHICS_BIT" comment="Queue supports graphics operations"/>
- <enum bitpos="1" name="VK_QUEUE_COMPUTE_BIT" comment="Queue supports compute operations"/>
- <enum bitpos="2" name="VK_QUEUE_TRANSFER_BIT" comment="Queue supports transfer operations"/>
- <enum bitpos="3" name="VK_QUEUE_SPARSE_BINDING_BIT" comment="Queue supports sparse resource memory management operations"/>
- </enums>
- <enums name="VkCullModeFlagBits" type="bitmask">
- <enum value="0" name="VK_CULL_MODE_NONE"/>
- <enum bitpos="0" name="VK_CULL_MODE_FRONT_BIT"/>
- <enum bitpos="1" name="VK_CULL_MODE_BACK_BIT"/>
- <enum value="0x00000003" name="VK_CULL_MODE_FRONT_AND_BACK"/>
- </enums>
- <enums name="VkRenderPassCreateFlagBits" type="bitmask">
- </enums>
- <enums name="VkDeviceQueueCreateFlagBits" type="bitmask">
- </enums>
- <enums name="VkMemoryPropertyFlagBits" type="bitmask">
- <enum bitpos="0" name="VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT" comment="If otherwise stated, then allocate memory on device"/>
- <enum bitpos="1" name="VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT" comment="Memory is mappable by host"/>
- <enum bitpos="2" name="VK_MEMORY_PROPERTY_HOST_COHERENT_BIT" comment="Memory will have i/o coherency. If not set, application may need to use vkFlushMappedMemoryRanges and vkInvalidateMappedMemoryRanges to flush/invalidate host cache"/>
- <enum bitpos="3" name="VK_MEMORY_PROPERTY_HOST_CACHED_BIT" comment="Memory will be cached by the host"/>
- <enum bitpos="4" name="VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT" comment="Memory may be allocated by the driver when it is required"/>
- </enums>
- <enums name="VkMemoryHeapFlagBits" type="bitmask">
- <enum bitpos="0" name="VK_MEMORY_HEAP_DEVICE_LOCAL_BIT" comment="If set, heap represents device memory"/>
- </enums>
- <enums name="VkAccessFlagBits" type="bitmask">
- <enum bitpos="0" name="VK_ACCESS_INDIRECT_COMMAND_READ_BIT" comment="Controls coherency of indirect command reads"/>
- <enum bitpos="1" name="VK_ACCESS_INDEX_READ_BIT" comment="Controls coherency of index reads"/>
- <enum bitpos="2" name="VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT" comment="Controls coherency of vertex attribute reads"/>
- <enum bitpos="3" name="VK_ACCESS_UNIFORM_READ_BIT" comment="Controls coherency of uniform buffer reads"/>
- <enum bitpos="4" name="VK_ACCESS_INPUT_ATTACHMENT_READ_BIT" comment="Controls coherency of input attachment reads"/>
- <enum bitpos="5" name="VK_ACCESS_SHADER_READ_BIT" comment="Controls coherency of shader reads"/>
- <enum bitpos="6" name="VK_ACCESS_SHADER_WRITE_BIT" comment="Controls coherency of shader writes"/>
- <enum bitpos="7" name="VK_ACCESS_COLOR_ATTACHMENT_READ_BIT" comment="Controls coherency of color attachment reads"/>
- <enum bitpos="8" name="VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT" comment="Controls coherency of color attachment writes"/>
- <enum bitpos="9" name="VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT" comment="Controls coherency of depth/stencil attachment reads"/>
- <enum bitpos="10" name="VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT" comment="Controls coherency of depth/stencil attachment writes"/>
- <enum bitpos="11" name="VK_ACCESS_TRANSFER_READ_BIT" comment="Controls coherency of transfer reads"/>
- <enum bitpos="12" name="VK_ACCESS_TRANSFER_WRITE_BIT" comment="Controls coherency of transfer writes"/>
- <enum bitpos="13" name="VK_ACCESS_HOST_READ_BIT" comment="Controls coherency of host reads"/>
- <enum bitpos="14" name="VK_ACCESS_HOST_WRITE_BIT" comment="Controls coherency of host writes"/>
- <enum bitpos="15" name="VK_ACCESS_MEMORY_READ_BIT" comment="Controls coherency of memory reads"/>
- <enum bitpos="16" name="VK_ACCESS_MEMORY_WRITE_BIT" comment="Controls coherency of memory writes"/>
- </enums>
- <enums name="VkBufferUsageFlagBits" type="bitmask">
- <enum bitpos="0" name="VK_BUFFER_USAGE_TRANSFER_SRC_BIT" comment="Can be used as a source of transfer operations"/>
- <enum bitpos="1" name="VK_BUFFER_USAGE_TRANSFER_DST_BIT" comment="Can be used as a destination of transfer operations"/>
- <enum bitpos="2" name="VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT" comment="Can be used as TBO"/>
- <enum bitpos="3" name="VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT" comment="Can be used as IBO"/>
- <enum bitpos="4" name="VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT" comment="Can be used as UBO"/>
- <enum bitpos="5" name="VK_BUFFER_USAGE_STORAGE_BUFFER_BIT" comment="Can be used as SSBO"/>
- <enum bitpos="6" name="VK_BUFFER_USAGE_INDEX_BUFFER_BIT" comment="Can be used as source of fixed-function index fetch (index buffer)"/>
- <enum bitpos="7" name="VK_BUFFER_USAGE_VERTEX_BUFFER_BIT" comment="Can be used as source of fixed-function vertex fetch (VBO)"/>
- <enum bitpos="8" name="VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT" comment="Can be the source of indirect parameters (e.g. indirect buffer, parameter buffer)"/>
- </enums>
- <enums name="VkBufferCreateFlagBits" type="bitmask">
- <enum bitpos="0" name="VK_BUFFER_CREATE_SPARSE_BINDING_BIT" comment="Buffer should support sparse backing"/>
- <enum bitpos="1" name="VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT" comment="Buffer should support sparse backing with partial residency"/>
- <enum bitpos="2" name="VK_BUFFER_CREATE_SPARSE_ALIASED_BIT" comment="Buffer should support constant data access to physical memory ranges mapped into multiple locations of sparse buffers"/>
- </enums>
- <enums name="VkShaderStageFlagBits" type="bitmask">
- <enum bitpos="0" name="VK_SHADER_STAGE_VERTEX_BIT"/>
- <enum bitpos="1" name="VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT"/>
- <enum bitpos="2" name="VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT"/>
- <enum bitpos="3" name="VK_SHADER_STAGE_GEOMETRY_BIT"/>
- <enum bitpos="4" name="VK_SHADER_STAGE_FRAGMENT_BIT"/>
- <enum bitpos="5" name="VK_SHADER_STAGE_COMPUTE_BIT"/>
- <enum value="0x0000001F" name="VK_SHADER_STAGE_ALL_GRAPHICS"/>
- <enum value="0x7FFFFFFF" name="VK_SHADER_STAGE_ALL"/>
- </enums>
- <enums name="VkImageUsageFlagBits" type="bitmask">
- <enum bitpos="0" name="VK_IMAGE_USAGE_TRANSFER_SRC_BIT" comment="Can be used as a source of transfer operations"/>
- <enum bitpos="1" name="VK_IMAGE_USAGE_TRANSFER_DST_BIT" comment="Can be used as a destination of transfer operations"/>
- <enum bitpos="2" name="VK_IMAGE_USAGE_SAMPLED_BIT" comment="Can be sampled from (SAMPLED_IMAGE and COMBINED_IMAGE_SAMPLER descriptor types)"/>
- <enum bitpos="3" name="VK_IMAGE_USAGE_STORAGE_BIT" comment="Can be used as storage image (STORAGE_IMAGE descriptor type)"/>
- <enum bitpos="4" name="VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT" comment="Can be used as framebuffer color attachment"/>
- <enum bitpos="5" name="VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT" comment="Can be used as framebuffer depth/stencil attachment"/>
- <enum bitpos="6" name="VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT" comment="Image data not needed outside of rendering"/>
- <enum bitpos="7" name="VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT" comment="Can be used as framebuffer input attachment"/>
- </enums>
- <enums name="VkImageCreateFlagBits" type="bitmask">
- <enum bitpos="0" name="VK_IMAGE_CREATE_SPARSE_BINDING_BIT" comment="Image should support sparse backing"/>
- <enum bitpos="1" name="VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT" comment="Image should support sparse backing with partial residency"/>
- <enum bitpos="2" name="VK_IMAGE_CREATE_SPARSE_ALIASED_BIT" comment="Image should support constant data access to physical memory ranges mapped into multiple locations of sparse images"/>
- <enum bitpos="3" name="VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT" comment="Allows image views to have different format than the base image"/>
- <enum bitpos="4" name="VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT" comment="Allows creating image views with cube type from the created image"/>
- </enums>
- <enums name="VkImageViewCreateFlagBits" type="bitmask">
- </enums>
- <enums name="VkSamplerCreateFlagBits" type="bitmask">
- </enums>
- <enums name="VkPipelineCreateFlagBits" type="bitmask" comment="Note that the gap at bitpos 10 is unused, and can be reserved">
- <enum bitpos="0" name="VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT"/>
- <enum bitpos="1" name="VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT"/>
- <enum bitpos="2" name="VK_PIPELINE_CREATE_DERIVATIVE_BIT"/>
- </enums>
- <enums name="VkPipelineShaderStageCreateFlagBits" type="bitmask">
- </enums>
- <enums name="VkColorComponentFlagBits" type="bitmask">
- <enum bitpos="0" name="VK_COLOR_COMPONENT_R_BIT"/>
- <enum bitpos="1" name="VK_COLOR_COMPONENT_G_BIT"/>
- <enum bitpos="2" name="VK_COLOR_COMPONENT_B_BIT"/>
- <enum bitpos="3" name="VK_COLOR_COMPONENT_A_BIT"/>
- </enums>
- <enums name="VkFenceCreateFlagBits" type="bitmask">
- <enum bitpos="0" name="VK_FENCE_CREATE_SIGNALED_BIT"/>
- </enums>
- <enums name="VkSemaphoreCreateFlagBits" type="bitmask">
- </enums>
- <enums name="VkFormatFeatureFlagBits" type="bitmask">
- <enum bitpos="0" name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT" comment="Format can be used for sampled images (SAMPLED_IMAGE and COMBINED_IMAGE_SAMPLER descriptor types)"/>
- <enum bitpos="1" name="VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT" comment="Format can be used for storage images (STORAGE_IMAGE descriptor type)"/>
- <enum bitpos="2" name="VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT" comment="Format supports atomic operations in case it is used for storage images"/>
- <enum bitpos="3" name="VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT" comment="Format can be used for uniform texel buffers (TBOs)"/>
- <enum bitpos="4" name="VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT" comment="Format can be used for storage texel buffers (IBOs)"/>
- <enum bitpos="5" name="VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT" comment="Format supports atomic operations in case it is used for storage texel buffers"/>
- <enum bitpos="6" name="VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" comment="Format can be used for vertex buffers (VBOs)"/>
- <enum bitpos="7" name="VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT" comment="Format can be used for color attachment images"/>
- <enum bitpos="8" name="VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT" comment="Format supports blending in case it is used for color attachment images"/>
- <enum bitpos="9" name="VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT" comment="Format can be used for depth/stencil attachment images"/>
- <enum bitpos="10" name="VK_FORMAT_FEATURE_BLIT_SRC_BIT" comment="Format can be used as the source image of blits with vkCmdBlitImage"/>
- <enum bitpos="11" name="VK_FORMAT_FEATURE_BLIT_DST_BIT" comment="Format can be used as the destination image of blits with vkCmdBlitImage"/>
- <enum bitpos="12" name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" comment="Format can be filtered with VK_FILTER_LINEAR when being sampled"/>
- </enums>
- <enums name="VkQueryControlFlagBits" type="bitmask">
- <enum bitpos="0" name="VK_QUERY_CONTROL_PRECISE_BIT" comment="Require precise results to be collected by the query"/>
- </enums>
- <enums name="VkQueryResultFlagBits" type="bitmask">
- <enum bitpos="0" name="VK_QUERY_RESULT_64_BIT" comment="Results of the queries are written to the destination buffer as 64-bit values"/>
- <enum bitpos="1" name="VK_QUERY_RESULT_WAIT_BIT" comment="Results of the queries are waited on before proceeding with the result copy"/>
- <enum bitpos="2" name="VK_QUERY_RESULT_WITH_AVAILABILITY_BIT" comment="Besides the results of the query, the availability of the results is also written"/>
- <enum bitpos="3" name="VK_QUERY_RESULT_PARTIAL_BIT" comment="Copy the partial results of the query even if the final results are not available"/>
- </enums>
- <enums name="VkCommandBufferUsageFlagBits" type="bitmask">
- <enum bitpos="0" name="VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT"/>
- <enum bitpos="1" name="VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT"/>
- <enum bitpos="2" name="VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT" comment="Command buffer may be submitted/executed more than once simultaneously"/>
- </enums>
- <enums name="VkQueryPipelineStatisticFlagBits" type="bitmask">
- <enum bitpos="0" name="VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT" comment="Optional"/>
- <enum bitpos="1" name="VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT" comment="Optional"/>
- <enum bitpos="2" name="VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT" comment="Optional"/>
- <enum bitpos="3" name="VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT" comment="Optional"/>
- <enum bitpos="4" name="VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT" comment="Optional"/>
- <enum bitpos="5" name="VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT" comment="Optional"/>
- <enum bitpos="6" name="VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT" comment="Optional"/>
- <enum bitpos="7" name="VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT" comment="Optional"/>
- <enum bitpos="8" name="VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT" comment="Optional"/>
- <enum bitpos="9" name="VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT" comment="Optional"/>
- <enum bitpos="10" name="VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT" comment="Optional"/>
- </enums>
- <enums name="VkImageAspectFlagBits" type="bitmask">
- <enum bitpos="0" name="VK_IMAGE_ASPECT_COLOR_BIT"/>
- <enum bitpos="1" name="VK_IMAGE_ASPECT_DEPTH_BIT"/>
- <enum bitpos="2" name="VK_IMAGE_ASPECT_STENCIL_BIT"/>
- <enum bitpos="3" name="VK_IMAGE_ASPECT_METADATA_BIT"/>
- </enums>
- <enums name="VkSparseImageFormatFlagBits" type="bitmask">
- <enum bitpos="0" name="VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT" comment="Image uses a single mip tail region for all array layers"/>
- <enum bitpos="1" name="VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT" comment="Image requires mip level dimensions to be an integer multiple of the sparse image block dimensions for non-tail mip levels."/>
- <enum bitpos="2" name="VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT" comment="Image uses a non-standard sparse image block dimensions"/>
- </enums>
- <enums name="VkSparseMemoryBindFlagBits" type="bitmask">
- <enum bitpos="0" name="VK_SPARSE_MEMORY_BIND_METADATA_BIT" comment="Operation binds resource metadata to memory"/>
- </enums>
- <enums name="VkPipelineStageFlagBits" type="bitmask">
- <enum bitpos="0" name="VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT" comment="Before subsequent commands are processed"/>
- <enum bitpos="1" name="VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT" comment="Draw/DispatchIndirect command fetch"/>
- <enum bitpos="2" name="VK_PIPELINE_STAGE_VERTEX_INPUT_BIT" comment="Vertex/index fetch"/>
- <enum bitpos="3" name="VK_PIPELINE_STAGE_VERTEX_SHADER_BIT" comment="Vertex shading"/>
- <enum bitpos="4" name="VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT" comment="Tessellation control shading"/>
- <enum bitpos="5" name="VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT" comment="Tessellation evaluation shading"/>
- <enum bitpos="6" name="VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT" comment="Geometry shading"/>
- <enum bitpos="7" name="VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT" comment="Fragment shading"/>
- <enum bitpos="8" name="VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT" comment="Early fragment (depth and stencil) tests"/>
- <enum bitpos="9" name="VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT" comment="Late fragment (depth and stencil) tests"/>
- <enum bitpos="10" name="VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT" comment="Color attachment writes"/>
- <enum bitpos="11" name="VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT" comment="Compute shading"/>
- <enum bitpos="12" name="VK_PIPELINE_STAGE_TRANSFER_BIT" comment="Transfer/copy operations"/>
- <enum bitpos="13" name="VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT" comment="After previous commands have completed"/>
- <enum bitpos="14" name="VK_PIPELINE_STAGE_HOST_BIT" comment="Indicates host (CPU) is a source/sink of the dependency"/>
- <enum bitpos="15" name="VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT" comment="All stages of the graphics pipeline"/>
- <enum bitpos="16" name="VK_PIPELINE_STAGE_ALL_COMMANDS_BIT" comment="All stages supported on the queue"/>
- </enums>
- <enums name="VkCommandPoolCreateFlagBits" type="bitmask">
- <enum bitpos="0" name="VK_COMMAND_POOL_CREATE_TRANSIENT_BIT" comment="Command buffers have a short lifetime"/>
- <enum bitpos="1" name="VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT" comment="Command buffers may release their memory individually"/>
- </enums>
- <enums name="VkCommandPoolResetFlagBits" type="bitmask">
- <enum bitpos="0" name="VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT" comment="Release resources owned by the pool"/>
- </enums>
- <enums name="VkCommandBufferResetFlagBits" type="bitmask">
- <enum bitpos="0" name="VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT" comment="Release resources owned by the buffer"/>
- </enums>
- <enums name="VkSampleCountFlagBits" type="bitmask">
- <enum bitpos="0" name="VK_SAMPLE_COUNT_1_BIT" comment="Sample count 1 supported"/>
- <enum bitpos="1" name="VK_SAMPLE_COUNT_2_BIT" comment="Sample count 2 supported"/>
- <enum bitpos="2" name="VK_SAMPLE_COUNT_4_BIT" comment="Sample count 4 supported"/>
- <enum bitpos="3" name="VK_SAMPLE_COUNT_8_BIT" comment="Sample count 8 supported"/>
- <enum bitpos="4" name="VK_SAMPLE_COUNT_16_BIT" comment="Sample count 16 supported"/>
- <enum bitpos="5" name="VK_SAMPLE_COUNT_32_BIT" comment="Sample count 32 supported"/>
- <enum bitpos="6" name="VK_SAMPLE_COUNT_64_BIT" comment="Sample count 64 supported"/>
- </enums>
- <enums name="VkAttachmentDescriptionFlagBits" type="bitmask">
- <enum bitpos="0" name="VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT" comment="The attachment may alias physical memory of another attachment in the same render pass"/>
- </enums>
- <enums name="VkStencilFaceFlagBits" type="bitmask">
- <enum bitpos="0" name="VK_STENCIL_FACE_FRONT_BIT" comment="Front face"/>
- <enum bitpos="1" name="VK_STENCIL_FACE_BACK_BIT" comment="Back face"/>
- <enum value="0x00000003" name="VK_STENCIL_FACE_FRONT_AND_BACK" comment="Front and back faces"/>
- <enum name="VK_STENCIL_FRONT_AND_BACK" alias="VK_STENCIL_FACE_FRONT_AND_BACK" comment="Alias for backwards compatibility"/>
- </enums>
- <enums name="VkDescriptorPoolCreateFlagBits" type="bitmask">
- <enum bitpos="0" name="VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT" comment="Descriptor sets may be freed individually"/>
- </enums>
- <enums name="VkDependencyFlagBits" type="bitmask">
- <enum bitpos="0" name="VK_DEPENDENCY_BY_REGION_BIT" comment="Dependency is per pixel region "/>
- </enums>
- <enums name="VkSemaphoreType" type="enum">
- <enum value="0" name="VK_SEMAPHORE_TYPE_BINARY"/>
- <enum value="1" name="VK_SEMAPHORE_TYPE_TIMELINE"/>
- </enums>
- <enums name="VkSemaphoreWaitFlagBits" type="bitmask">
- <enum bitpos="0" name="VK_SEMAPHORE_WAIT_ANY_BIT"/>
- </enums>
-
- <comment>WSI Extensions</comment>
- <enums name="VkPresentModeKHR" type="enum">
- <enum value="0" name="VK_PRESENT_MODE_IMMEDIATE_KHR"/>
- <enum value="1" name="VK_PRESENT_MODE_MAILBOX_KHR"/>
- <enum value="2" name="VK_PRESENT_MODE_FIFO_KHR"/>
- <enum value="3" name="VK_PRESENT_MODE_FIFO_RELAXED_KHR"/>
- </enums>
- <enums name="VkColorSpaceKHR" type="enum">
- <enum value="0" name="VK_COLOR_SPACE_SRGB_NONLINEAR_KHR"/>
- <enum name="VK_COLORSPACE_SRGB_NONLINEAR_KHR" alias="VK_COLOR_SPACE_SRGB_NONLINEAR_KHR" comment="Backwards-compatible alias containing a typo"/>
- </enums>
- <enums name="VkDisplayPlaneAlphaFlagBitsKHR" type="bitmask">
- <enum bitpos="0" name="VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR"/>
- <enum bitpos="1" name="VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR"/>
- <enum bitpos="2" name="VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR"/>
- <enum bitpos="3" name="VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR"/>
- </enums>
- <enums name="VkCompositeAlphaFlagBitsKHR" type="bitmask">
- <enum bitpos="0" name="VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR"/>
- <enum bitpos="1" name="VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR"/>
- <enum bitpos="2" name="VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR"/>
- <enum bitpos="3" name="VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR"/>
- </enums>
- <enums name="VkSurfaceTransformFlagBitsKHR" type="bitmask">
- <enum bitpos="0" name="VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR"/>
- <enum bitpos="1" name="VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR"/>
- <enum bitpos="2" name="VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR"/>
- <enum bitpos="3" name="VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR"/>
- <enum bitpos="4" name="VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR"/>
- <enum bitpos="5" name="VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR"/>
- <enum bitpos="6" name="VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR"/>
- <enum bitpos="7" name="VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR"/>
- <enum bitpos="8" name="VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR"/>
- </enums>
- <enums name="VkTimeDomainEXT" type="enum">
- <enum value="0" name="VK_TIME_DOMAIN_DEVICE_EXT"/>
- <enum value="1" name="VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT"/>
- <enum value="2" name="VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT"/>
- <enum value="3" name="VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT"/>
- </enums>
- <enums name="VkDebugReportFlagBitsEXT" type="bitmask">
- <enum bitpos="0" name="VK_DEBUG_REPORT_INFORMATION_BIT_EXT"/>
- <enum bitpos="1" name="VK_DEBUG_REPORT_WARNING_BIT_EXT"/>
- <enum bitpos="2" name="VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT"/>
- <enum bitpos="3" name="VK_DEBUG_REPORT_ERROR_BIT_EXT"/>
- <enum bitpos="4" name="VK_DEBUG_REPORT_DEBUG_BIT_EXT"/>
- </enums>
- <enums name="VkDebugReportObjectTypeEXT" type="enum">
- <enum value="0" name="VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT"/>
- <enum value="1" name="VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT"/>
- <enum value="2" name="VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT"/>
- <enum value="3" name="VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT"/>
- <enum value="4" name="VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT"/>
- <enum value="5" name="VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT"/>
- <enum value="6" name="VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT"/>
- <enum value="7" name="VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT"/>
- <enum value="8" name="VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT"/>
- <enum value="9" name="VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT"/>
- <enum value="10" name="VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT"/>
- <enum value="11" name="VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT"/>
- <enum value="12" name="VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT"/>
- <enum value="13" name="VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT"/>
- <enum value="14" name="VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT"/>
- <enum value="15" name="VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT"/>
- <enum value="16" name="VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT"/>
- <enum value="17" name="VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT"/>
- <enum value="18" name="VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT"/>
- <enum value="19" name="VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT"/>
- <enum value="20" name="VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT"/>
- <enum value="21" name="VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT"/>
- <enum value="22" name="VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT"/>
- <enum value="23" name="VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT"/>
- <enum value="24" name="VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT"/>
- <enum value="25" name="VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT"/>
- <enum value="26" name="VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT"/>
- <enum value="27" name="VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT"/>
- <enum value="28" name="VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT"/>
- <enum name="VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT" alias="VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT" comment="Backwards-compatible alias containing a typo"/>
- <enum value="29" name="VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT"/>
- <enum value="30" name="VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT"/>
- <!--<enum value="31" name="VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT" comment="Removed NVX_device_generated_commands"/>-->
- <!--<enum value="32" name="VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT" comment="Removed NVX_device_generated_commands"/>-->
- <enum value="33" name="VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT"/>
- <enum name="VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT" alias="VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT" comment="Backwards-compatible alias containing a typo"/>
- </enums>
- <enums name="VkDeviceMemoryReportEventTypeEXT" type="enum">
- <enum value="0" name="VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATE_EXT"/>
- <enum value="1" name="VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_FREE_EXT"/>
- <enum value="2" name="VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_IMPORT_EXT"/>
- <enum value="3" name="VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_UNIMPORT_EXT"/>
- <enum value="4" name="VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATION_FAILED_EXT"/>
- </enums>
- <enums name="VkRasterizationOrderAMD" type="enum">
- <enum value="0" name="VK_RASTERIZATION_ORDER_STRICT_AMD"/>
- <enum value="1" name="VK_RASTERIZATION_ORDER_RELAXED_AMD"/>
- </enums>
- <enums name="VkExternalMemoryHandleTypeFlagBitsNV" type="bitmask">
- <enum bitpos="0" name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV"/>
- <enum bitpos="1" name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV"/>
- <enum bitpos="2" name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV"/>
- <enum bitpos="3" name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV"/>
- </enums>
- <enums name="VkExternalMemoryFeatureFlagBitsNV" type="bitmask">
- <enum bitpos="0" name="VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV"/>
- <enum bitpos="1" name="VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV"/>
- <enum bitpos="2" name="VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV"/>
- </enums>
- <enums name="VkValidationCheckEXT" type="enum">
- <enum value="0" name="VK_VALIDATION_CHECK_ALL_EXT"/>
- <enum value="1" name="VK_VALIDATION_CHECK_SHADERS_EXT"/>
- </enums>
- <enums name="VkValidationFeatureEnableEXT" type="enum">
- <enum value="0" name="VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT"/>
- <enum value="1" name="VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT"/>
- <enum value="2" name="VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT"/>
- <enum value="3" name="VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT"/>
- <enum value="4" name="VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT"/>
- </enums>
- <enums name="VkValidationFeatureDisableEXT" type="enum">
- <enum value="0" name="VK_VALIDATION_FEATURE_DISABLE_ALL_EXT"/>
- <enum value="1" name="VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT"/>
- <enum value="2" name="VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT"/>
- <enum value="3" name="VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT"/>
- <enum value="4" name="VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT"/>
- <enum value="5" name="VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT"/>
- <enum value="6" name="VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT"/>
- <enum value="7" name="VK_VALIDATION_FEATURE_DISABLE_SHADER_VALIDATION_CACHE_EXT"/>
- </enums>
- <enums name="VkSubgroupFeatureFlagBits" type="bitmask">
- <enum bitpos="0" name="VK_SUBGROUP_FEATURE_BASIC_BIT" comment="Basic subgroup operations"/>
- <enum bitpos="1" name="VK_SUBGROUP_FEATURE_VOTE_BIT" comment="Vote subgroup operations"/>
- <enum bitpos="2" name="VK_SUBGROUP_FEATURE_ARITHMETIC_BIT" comment="Arithmetic subgroup operations"/>
- <enum bitpos="3" name="VK_SUBGROUP_FEATURE_BALLOT_BIT" comment="Ballot subgroup operations"/>
- <enum bitpos="4" name="VK_SUBGROUP_FEATURE_SHUFFLE_BIT" comment="Shuffle subgroup operations"/>
- <enum bitpos="5" name="VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT" comment="Shuffle relative subgroup operations"/>
- <enum bitpos="6" name="VK_SUBGROUP_FEATURE_CLUSTERED_BIT" comment="Clustered subgroup operations"/>
- <enum bitpos="7" name="VK_SUBGROUP_FEATURE_QUAD_BIT" comment="Quad subgroup operations"/>
- </enums>
- <enums name="VkIndirectCommandsLayoutUsageFlagBitsNV" type="bitmask">
- <enum bitpos="0" name="VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV"/>
- <enum bitpos="1" name="VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV"/>
- <enum bitpos="2" name="VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV"/>
- </enums>
- <enums name="VkIndirectStateFlagBitsNV" type="bitmask">
- <enum bitpos="0" name="VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV"/>
- </enums>
- <enums name="VkIndirectCommandsTokenTypeNV" type="enum">
- <enum value="0" name="VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV"/>
- <enum value="1" name="VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV"/>
- <enum value="2" name="VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV"/>
- <enum value="3" name="VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV"/>
- <enum value="4" name="VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV"/>
- <enum value="5" name="VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV"/>
- <enum value="6" name="VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV"/>
- <enum value="7" name="VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV"/>
- </enums>
- <enums name="VkPrivateDataSlotCreateFlagBitsEXT" type="bitmask">
- </enums>
- <enums name="VkDescriptorSetLayoutCreateFlagBits" type="bitmask">
- </enums>
- <enums name="VkExternalMemoryHandleTypeFlagBits" type="bitmask">
- <enum bitpos="0" name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT"/>
- <enum bitpos="1" name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT"/>
- <enum bitpos="2" name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"/>
- <enum bitpos="3" name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT"/>
- <enum bitpos="4" name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT"/>
- <enum bitpos="5" name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT"/>
- <enum bitpos="6" name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT"/>
- </enums>
- <enums name="VkExternalMemoryFeatureFlagBits" type="bitmask">
- <enum bitpos="0" name="VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT"/>
- <enum bitpos="1" name="VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT"/>
- <enum bitpos="2" name="VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT"/>
- </enums>
- <enums name="VkExternalSemaphoreHandleTypeFlagBits" type="bitmask">
- <enum bitpos="0" name="VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT"/>
- <enum bitpos="1" name="VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT"/>
- <enum bitpos="2" name="VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"/>
- <enum bitpos="3" name="VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT"/>
- <enum name="VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_FENCE_BIT" alias="VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT"/>
- <enum bitpos="4" name="VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT"/>
- </enums>
- <enums name="VkExternalSemaphoreFeatureFlagBits" type="bitmask">
- <enum bitpos="0" name="VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT"/>
- <enum bitpos="1" name="VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT"/>
- </enums>
- <enums name="VkSemaphoreImportFlagBits" type="bitmask">
- <enum bitpos="0" name="VK_SEMAPHORE_IMPORT_TEMPORARY_BIT"/>
- </enums>
- <enums name="VkExternalFenceHandleTypeFlagBits" type="bitmask">
- <enum bitpos="0" name="VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT"/>
- <enum bitpos="1" name="VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT"/>
- <enum bitpos="2" name="VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"/>
- <enum bitpos="3" name="VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT"/>
- </enums>
- <enums name="VkExternalFenceFeatureFlagBits" type="bitmask">
- <enum bitpos="0" name="VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT"/>
- <enum bitpos="1" name="VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT"/>
- </enums>
- <enums name="VkFenceImportFlagBits" type="bitmask">
- <enum bitpos="0" name="VK_FENCE_IMPORT_TEMPORARY_BIT"/>
- </enums>
- <enums name="VkSurfaceCounterFlagBitsEXT" type="bitmask">
- <enum bitpos="0" name="VK_SURFACE_COUNTER_VBLANK_BIT_EXT"/>
- <enum name="VK_SURFACE_COUNTER_VBLANK_EXT" alias="VK_SURFACE_COUNTER_VBLANK_BIT_EXT" comment="Backwards-compatible alias containing a typo"/>
- </enums>
- <enums name="VkDisplayPowerStateEXT" type="enum">
- <enum value="0" name="VK_DISPLAY_POWER_STATE_OFF_EXT"/>
- <enum value="1" name="VK_DISPLAY_POWER_STATE_SUSPEND_EXT"/>
- <enum value="2" name="VK_DISPLAY_POWER_STATE_ON_EXT"/>
- </enums>
- <enums name="VkDeviceEventTypeEXT" type="enum">
- <enum value="0" name="VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT"/>
- </enums>
- <enums name="VkDisplayEventTypeEXT" type="enum">
- <enum value="0" name="VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT"/>
- </enums>
- <enums name="VkPeerMemoryFeatureFlagBits" type="bitmask">
- <enum bitpos="0" name="VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT" comment="Can read with vkCmdCopy commands"/>
- <enum bitpos="1" name="VK_PEER_MEMORY_FEATURE_COPY_DST_BIT" comment="Can write with vkCmdCopy commands"/>
- <enum bitpos="2" name="VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT" comment="Can read with any access type/command"/>
- <enum bitpos="3" name="VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT" comment="Can write with and access type/command"/>
- </enums>
- <enums name="VkMemoryAllocateFlagBits" type="bitmask">
- <enum bitpos="0" name="VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT" comment="Force allocation on specific devices"/>
- </enums>
- <enums name="VkDeviceGroupPresentModeFlagBitsKHR" type="bitmask">
- <enum bitpos="0" name="VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR" comment="Present from local memory"/>
- <enum bitpos="1" name="VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR" comment="Present from remote memory"/>
- <enum bitpos="2" name="VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR" comment="Present sum of local and/or remote memory"/>
- <enum bitpos="3" name="VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR" comment="Each physical device presents from local memory"/>
- </enums>
- <enums name="VkSwapchainCreateFlagBitsKHR" type="bitmask">
- </enums>
- <enums name="VkViewportCoordinateSwizzleNV" type="enum">
- <enum value="0" name="VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV"/>
- <enum value="1" name="VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV"/>
- <enum value="2" name="VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV"/>
- <enum value="3" name="VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV"/>
- <enum value="4" name="VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV"/>
- <enum value="5" name="VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV"/>
- <enum value="6" name="VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV"/>
- <enum value="7" name="VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV"/>
- </enums>
- <enums name="VkDiscardRectangleModeEXT" type="enum">
- <enum value="0" name="VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT"/>
- <enum value="1" name="VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT"/>
- </enums>
- <enums name="VkSubpassDescriptionFlagBits" type="bitmask">
- </enums>
- <enums name="VkPointClippingBehavior" type="enum">
- <enum value="0" name="VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES"/>
- <enum value="1" name="VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY"/>
- </enums>
- <enums name="VkSamplerReductionMode" type="enum">
- <enum value="0" name="VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE"/>
- <enum value="1" name="VK_SAMPLER_REDUCTION_MODE_MIN"/>
- <enum value="2" name="VK_SAMPLER_REDUCTION_MODE_MAX"/>
- </enums>
- <enums name="VkTessellationDomainOrigin" type="enum">
- <enum value="0" name="VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT"/>
- <enum value="1" name="VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT"/>
- </enums>
- <enums name="VkSamplerYcbcrModelConversion" type="enum">
- <enum value="0" name="VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY"/>
- <enum value="1" name="VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY" comment="just range expansion"/>
- <enum value="2" name="VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709" comment="aka HD YUV"/>
- <enum value="3" name="VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601" comment="aka SD YUV"/>
- <enum value="4" name="VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020" comment="aka UHD YUV"/>
- </enums>
- <enums name="VkSamplerYcbcrRange" type="enum">
- <enum value="0" name="VK_SAMPLER_YCBCR_RANGE_ITU_FULL" comment="Luma 0..1 maps to 0..255, chroma -0.5..0.5 to 1..255 (clamped)"/>
- <enum value="1" name="VK_SAMPLER_YCBCR_RANGE_ITU_NARROW" comment="Luma 0..1 maps to 16..235, chroma -0.5..0.5 to 16..240"/>
- </enums>
- <enums name="VkChromaLocation" type="enum">
- <enum value="0" name="VK_CHROMA_LOCATION_COSITED_EVEN"/>
- <enum value="1" name="VK_CHROMA_LOCATION_MIDPOINT"/>
- </enums>
- <enums name="VkBlendOverlapEXT" type="enum">
- <enum value="0" name="VK_BLEND_OVERLAP_UNCORRELATED_EXT"/>
- <enum value="1" name="VK_BLEND_OVERLAP_DISJOINT_EXT"/>
- <enum value="2" name="VK_BLEND_OVERLAP_CONJOINT_EXT"/>
- </enums>
- <enums name="VkCoverageModulationModeNV" type="enum">
- <enum value="0" name="VK_COVERAGE_MODULATION_MODE_NONE_NV"/>
- <enum value="1" name="VK_COVERAGE_MODULATION_MODE_RGB_NV"/>
- <enum value="2" name="VK_COVERAGE_MODULATION_MODE_ALPHA_NV"/>
- <enum value="3" name="VK_COVERAGE_MODULATION_MODE_RGBA_NV"/>
- </enums>
- <enums name="VkCoverageReductionModeNV" type="enum">
- <enum value="0" name="VK_COVERAGE_REDUCTION_MODE_MERGE_NV"/>
- <enum value="1" name="VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV"/>
- </enums>
- <enums name="VkValidationCacheHeaderVersionEXT" type="enum">
- <enum value="1" name="VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT"/>
- </enums>
- <enums name="VkShaderInfoTypeAMD" type="enum">
- <enum value="0" name="VK_SHADER_INFO_TYPE_STATISTICS_AMD"/>
- <enum value="1" name="VK_SHADER_INFO_TYPE_BINARY_AMD"/>
- <enum value="2" name="VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD"/>
- </enums>
- <enums name="VkQueueGlobalPriorityEXT" type="enum">
- <enum value="128" name="VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT"/>
- <enum value="256" name="VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT"/>
- <enum value="512" name="VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT"/>
- <enum value="1024" name="VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT"/>
- </enums>
- <enums name="VkDebugUtilsMessageSeverityFlagBitsEXT" type="bitmask">
- <enum bitpos="0" name="VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT"/>
- <enum bitpos="4" name="VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT"/>
- <enum bitpos="8" name="VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT"/>
- <enum bitpos="12" name="VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT"/>
- </enums>
- <enums name="VkDebugUtilsMessageTypeFlagBitsEXT" type="bitmask">
- <enum bitpos="0" name="VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT"/>
- <enum bitpos="1" name="VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT"/>
- <enum bitpos="2" name="VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT"/>
- </enums>
- <enums name="VkConservativeRasterizationModeEXT" type="enum">
- <enum value="0" name="VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT"/>
- <enum value="1" name="VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT"/>
- <enum value="2" name="VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT"/>
- </enums>
- <enums name="VkDescriptorBindingFlagBits" type="bitmask">
- <enum bitpos="0" name="VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT"/>
- <enum bitpos="1" name="VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT"/>
- <enum bitpos="2" name="VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT"/>
- <enum bitpos="3" name="VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT"/>
- </enums>
- <enums name="VkVendorId" type="enum">
- <comment>Vendor IDs are now represented as enums instead of the old
- &lt;vendorids&gt; tag, allowing them to be included in the
- API headers.</comment>
- <enum value="0x10001" name="VK_VENDOR_ID_VIV" comment="Vivante vendor ID"/>
- <enum value="0x10002" name="VK_VENDOR_ID_VSI" comment="VeriSilicon vendor ID"/>
- <enum value="0x10003" name="VK_VENDOR_ID_KAZAN" comment="Kazan Software Renderer"/>
- <enum value="0x10004" name="VK_VENDOR_ID_CODEPLAY" comment="Codeplay Software Ltd. vendor ID"/>
- <enum value="0x10005" name="VK_VENDOR_ID_MESA" comment="Mesa vendor ID"/>
- <enum value="0x10006" name="VK_VENDOR_ID_POCL" comment="PoCL vendor ID"/>
- <unused start="0x10007" comment="This is the next unused available Khronos vendor ID"/>
- </enums>
- <enums name="VkDriverId" type="enum">
- <comment>Driver IDs are now represented as enums instead of the old
- &lt;driverids&gt; tag, allowing them to be included in the
- API headers.</comment>
- <enum value="1" name="VK_DRIVER_ID_AMD_PROPRIETARY" comment="Advanced Micro Devices, Inc."/>
- <enum value="2" name="VK_DRIVER_ID_AMD_OPEN_SOURCE" comment="Advanced Micro Devices, Inc."/>
- <enum value="3" name="VK_DRIVER_ID_MESA_RADV" comment="Mesa open source project"/>
- <enum value="4" name="VK_DRIVER_ID_NVIDIA_PROPRIETARY" comment="NVIDIA Corporation"/>
- <enum value="5" name="VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS" comment="Intel Corporation"/>
- <enum value="6" name="VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA" comment="Intel Corporation"/>
- <enum value="7" name="VK_DRIVER_ID_IMAGINATION_PROPRIETARY" comment="Imagination Technologies"/>
- <enum value="8" name="VK_DRIVER_ID_QUALCOMM_PROPRIETARY" comment="Qualcomm Technologies, Inc."/>
- <enum value="9" name="VK_DRIVER_ID_ARM_PROPRIETARY" comment="Arm Limited"/>
- <enum value="10" name="VK_DRIVER_ID_GOOGLE_SWIFTSHADER" comment="Google LLC"/>
- <enum value="11" name="VK_DRIVER_ID_GGP_PROPRIETARY" comment="Google LLC"/>
- <enum value="12" name="VK_DRIVER_ID_BROADCOM_PROPRIETARY" comment="Broadcom Inc."/>
- <enum value="13" name="VK_DRIVER_ID_MESA_LLVMPIPE" comment="Mesa"/>
- <enum value="14" name="VK_DRIVER_ID_MOLTENVK" comment="MoltenVK"/>
- <enum value="15" name="VK_DRIVER_ID_COREAVI_PROPRIETARY" comment="Core Avionics &amp; Industrial Inc."/>
- <enum value="16" name="VK_DRIVER_ID_JUICE_PROPRIETARY" comment="Juice Technologies, Inc."/>
- <enum value="17" name="VK_DRIVER_ID_VERISILICON_PROPRIETARY" comment="Verisilicon, Inc."/>
- <enum value="18" name="VK_DRIVER_ID_MESA_TURNIP" comment="Mesa open source project"/>
- <enum value="19" name="VK_DRIVER_ID_MESA_V3DV" comment="Mesa open source project"/>
- <enum value="20" name="VK_DRIVER_ID_MESA_PANVK" comment="Mesa open source project"/>
- </enums>
- <enums name="VkConditionalRenderingFlagBitsEXT" type="bitmask">
- <enum bitpos="0" name="VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT"/>
- </enums>
- <enums name="VkResolveModeFlagBits" type="bitmask">
- <enum value="0" name="VK_RESOLVE_MODE_NONE"/>
- <enum bitpos="0" name="VK_RESOLVE_MODE_SAMPLE_ZERO_BIT"/>
- <enum bitpos="1" name="VK_RESOLVE_MODE_AVERAGE_BIT"/>
- <enum bitpos="2" name="VK_RESOLVE_MODE_MIN_BIT"/>
- <enum bitpos="3" name="VK_RESOLVE_MODE_MAX_BIT"/>
- </enums>
- <enums name="VkShadingRatePaletteEntryNV" type="enum">
- <enum value="0" name="VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV"/>
- <enum value="1" name="VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV"/>
- <enum value="2" name="VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV"/>
- <enum value="3" name="VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV"/>
- <enum value="4" name="VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV"/>
- <enum value="5" name="VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV"/>
- <enum value="6" name="VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV"/>
- <enum value="7" name="VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV"/>
- <enum value="8" name="VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV"/>
- <enum value="9" name="VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV"/>
- <enum value="10" name="VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV"/>
- <enum value="11" name="VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV"/>
- </enums>
- <enums name="VkCoarseSampleOrderTypeNV" type="enum">
- <enum value="0" name="VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV"/>
- <enum value="1" name="VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV"/>
- <enum value="2" name="VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV"/>
- <enum value="3" name="VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV"/>
- </enums>
- <enums name="VkGeometryInstanceFlagBitsKHR" type="bitmask">
- <enum bitpos="0" name="VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR"/>
- <enum bitpos="1" name="VK_GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR"/>
- <enum bitpos="2" name="VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR"/>
- <enum bitpos="3" name="VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR"/>
- <enum name="VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR" alias="VK_GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR"/>
- </enums>
- <enums name="VkGeometryFlagBitsKHR" type="bitmask">
- <enum bitpos="0" name="VK_GEOMETRY_OPAQUE_BIT_KHR"/>
- <enum bitpos="1" name="VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR"/>
- </enums>
- <enums name="VkBuildAccelerationStructureFlagBitsKHR" type="bitmask">
- <enum bitpos="0" name="VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR"/>
- <enum bitpos="1" name="VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR"/>
- <enum bitpos="2" name="VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR"/>
- <enum bitpos="3" name="VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR"/>
- <enum bitpos="4" name="VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR"/>
- </enums>
- <enums name="VkAccelerationStructureCreateFlagBitsKHR" type="bitmask">
- <enum bitpos="0" name="VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR"/>
- </enums>
- <enums name="VkCopyAccelerationStructureModeKHR" type="enum">
- <enum value="0" name="VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR"/>
- <enum value="1" name="VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR"/>
- <enum value="2" name="VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR"/>
- <enum value="3" name="VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR"/>
- </enums>
- <enums name="VkBuildAccelerationStructureModeKHR" type="enum">
- <enum value="0" name="VK_BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR"/>
- <enum value="1" name="VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR"/>
- </enums>
- <enums name="VkAccelerationStructureTypeKHR" type="enum">
- <enum value="0" name="VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR"/>
- <enum value="1" name="VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR"/>
- <enum value="2" name="VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR"/>
- </enums>
- <enums name="VkGeometryTypeKHR" type="enum">
- <enum value="0" name="VK_GEOMETRY_TYPE_TRIANGLES_KHR"/>
- <enum value="1" name="VK_GEOMETRY_TYPE_AABBS_KHR"/>
- <enum value="2" name="VK_GEOMETRY_TYPE_INSTANCES_KHR"/>
- </enums>
- <enums name="VkAccelerationStructureMemoryRequirementsTypeNV" type="enum">
- <enum value="0" name="VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV"/>
- <enum value="1" name="VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV"/>
- <enum value="2" name="VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV"/>
- </enums>
- <enums name="VkAccelerationStructureBuildTypeKHR" type="enum">
- <enum value="0" name="VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR"/>
- <enum value="1" name="VK_ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR"/>
- <enum value="2" name="VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR"/>
- </enums>
- <enums name="VkRayTracingShaderGroupTypeKHR" type="enum">
- <enum value="0" name="VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR"/>
- <enum value="1" name="VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR"/>
- <enum value="2" name="VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR"/>
- </enums>
- <enums name="VkAccelerationStructureCompatibilityKHR" type="enum">
- <enum value="0" name="VK_ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR"/>
- <enum value="1" name="VK_ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR"/>
- </enums>
- <enums name="VkShaderGroupShaderKHR" type="enum">
- <enum value="0" name="VK_SHADER_GROUP_SHADER_GENERAL_KHR"/>
- <enum value="1" name="VK_SHADER_GROUP_SHADER_CLOSEST_HIT_KHR"/>
- <enum value="2" name="VK_SHADER_GROUP_SHADER_ANY_HIT_KHR"/>
- <enum value="3" name="VK_SHADER_GROUP_SHADER_INTERSECTION_KHR"/>
- </enums>
- <enums name="VkMemoryOverallocationBehaviorAMD" type="enum">
- <enum value="0" name="VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD"/>
- <enum value="1" name="VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD"/>
- <enum value="2" name="VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD"/>
- </enums>
- <enums name="VkFramebufferCreateFlagBits" type="bitmask">
- </enums>
- <enums name="VkScopeNV" type="enum">
- <enum value="1" name="VK_SCOPE_DEVICE_NV"/>
- <enum value="2" name="VK_SCOPE_WORKGROUP_NV"/>
- <enum value="3" name="VK_SCOPE_SUBGROUP_NV"/>
- <enum value="5" name="VK_SCOPE_QUEUE_FAMILY_NV"/>
- </enums>
- <enums name="VkComponentTypeNV" type="enum">
- <enum value="0" name="VK_COMPONENT_TYPE_FLOAT16_NV"/>
- <enum value="1" name="VK_COMPONENT_TYPE_FLOAT32_NV"/>
- <enum value="2" name="VK_COMPONENT_TYPE_FLOAT64_NV"/>
- <enum value="3" name="VK_COMPONENT_TYPE_SINT8_NV"/>
- <enum value="4" name="VK_COMPONENT_TYPE_SINT16_NV"/>
- <enum value="5" name="VK_COMPONENT_TYPE_SINT32_NV"/>
- <enum value="6" name="VK_COMPONENT_TYPE_SINT64_NV"/>
- <enum value="7" name="VK_COMPONENT_TYPE_UINT8_NV"/>
- <enum value="8" name="VK_COMPONENT_TYPE_UINT16_NV"/>
- <enum value="9" name="VK_COMPONENT_TYPE_UINT32_NV"/>
- <enum value="10" name="VK_COMPONENT_TYPE_UINT64_NV"/>
- </enums>
- <enums name="VkDeviceDiagnosticsConfigFlagBitsNV" type="bitmask">
- <enum bitpos="0" name="VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV"/>
- <enum bitpos="1" name="VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV"/>
- <enum bitpos="2" name="VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV"/>
- </enums>
- <enums name="VkPipelineCreationFeedbackFlagBitsEXT" type="bitmask">
- <enum bitpos="0" name="VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT"/>
- <enum bitpos="1" name="VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT"/>
- <enum bitpos="2" name="VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT"/>
- </enums>
- <enums name="VkFullScreenExclusiveEXT" type="enum">
- <enum value="0" name="VK_FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT"/>
- <enum value="1" name="VK_FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT"/>
- <enum value="2" name="VK_FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT"/>
- <enum value="3" name="VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT"/>
- </enums>
- <enums name="VkPerformanceCounterScopeKHR" type="enum">
- <enum value="0" name="VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR"/>
- <enum value="1" name="VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR"/>
- <enum value="2" name="VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR"/>
- <enum name="VK_QUERY_SCOPE_COMMAND_BUFFER_KHR" alias="VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR"/>
- <enum name="VK_QUERY_SCOPE_RENDER_PASS_KHR" alias="VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR"/>
- <enum name="VK_QUERY_SCOPE_COMMAND_KHR" alias="VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR"/>
- </enums>
- <enums name="VkPerformanceCounterUnitKHR" type="enum">
- <enum value="0" name="VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR"/>
- <enum value="1" name="VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR"/>
- <enum value="2" name="VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR"/>
- <enum value="3" name="VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR"/>
- <enum value="4" name="VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR"/>
- <enum value="5" name="VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR"/>
- <enum value="6" name="VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR"/>
- <enum value="7" name="VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR"/>
- <enum value="8" name="VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR"/>
- <enum value="9" name="VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR"/>
- <enum value="10" name="VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR"/>
- </enums>
- <enums name="VkPerformanceCounterStorageKHR" type="enum">
- <enum value="0" name="VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR"/>
- <enum value="1" name="VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR"/>
- <enum value="2" name="VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR"/>
- <enum value="3" name="VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR"/>
- <enum value="4" name="VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR"/>
- <enum value="5" name="VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR"/>
- </enums>
- <enums name="VkPerformanceCounterDescriptionFlagBitsKHR" type="bitmask">
- <enum bitpos="0" name="VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR"/>
- <enum name="VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR" alias="VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR" comment="Backwards-compatible alias containing a typo"/>
- <enum bitpos="1" name="VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR"/>
- <enum name="VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR" alias="VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR" comment="Backwards-compatible alias containing a typo"/>
- </enums>
- <enums name="VkAcquireProfilingLockFlagBitsKHR" type="bitmask">
- </enums>
- <enums name="VkShaderCorePropertiesFlagBitsAMD" type="bitmask">
- </enums>
- <enums name="VkPerformanceConfigurationTypeINTEL" type="enum">
- <enum value="0" name="VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL"/>
- </enums>
- <enums name="VkQueryPoolSamplingModeINTEL" type="enum">
- <enum value="0" name="VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL"/>
- </enums>
- <enums name="VkPerformanceOverrideTypeINTEL" type="enum">
- <enum value="0" name="VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL"/>
- <enum value="1" name="VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL"/>
- </enums>
- <enums name="VkPerformanceParameterTypeINTEL" type="enum">
- <enum value="0" name="VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL"/>
- <enum value="1" name="VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL"/>
- </enums>
- <enums name="VkPerformanceValueTypeINTEL" type="enum">
- <enum value="0" name="VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL"/>
- <enum value="1" name="VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL"/>
- <enum value="2" name="VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL"/>
- <enum value="3" name="VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL"/>
- <enum value="4" name="VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL"/>
- </enums>
- <enums name="VkShaderFloatControlsIndependence" type="enum">
- <enum value="0" name="VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY"/>
- <enum value="1" name="VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL"/>
- <enum value="2" name="VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE"/>
- </enums>
- <enums name="VkPipelineExecutableStatisticFormatKHR" type="enum">
- <enum value="0" name="VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR"/>
- <enum value="1" name="VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR"/>
- <enum value="2" name="VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR"/>
- <enum value="3" name="VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR"/>
- </enums>
- <enums name="VkLineRasterizationModeEXT" type="enum">
- <enum value="0" name="VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT"/>
- <enum value="1" name="VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT"/>
- <enum value="2" name="VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT"/>
- <enum value="3" name="VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT"/>
- </enums>
- <enums name="VkShaderModuleCreateFlagBits" type="bitmask">
- </enums>
- <enums name="VkPipelineCompilerControlFlagBitsAMD" type="bitmask">
- </enums>
- <enums name="VkToolPurposeFlagBitsEXT" type="bitmask">
- <enum bitpos="0" name="VK_TOOL_PURPOSE_VALIDATION_BIT_EXT"/>
- <enum bitpos="1" name="VK_TOOL_PURPOSE_PROFILING_BIT_EXT"/>
- <enum bitpos="2" name="VK_TOOL_PURPOSE_TRACING_BIT_EXT"/>
- <enum bitpos="3" name="VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT"/>
- <enum bitpos="4" name="VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT"/>
- </enums>
- <enums name="VkFragmentShadingRateCombinerOpKHR" type="enum">
- <enum value="0" name="VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR"/>
- <enum value="1" name="VK_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR"/>
- <enum value="2" name="VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_KHR"/>
- <enum value="3" name="VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_KHR"/>
- <enum value="4" name="VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHR"/>
- </enums>
- <enums name="VkFragmentShadingRateNV" type="enum">
- <enum value="0" name="VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV"/>
- <enum value="1" name="VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV"/>
- <enum value="4" name="VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X1_PIXELS_NV"/>
- <enum value="5" name="VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X2_PIXELS_NV"/>
- <enum value="6" name="VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X4_PIXELS_NV"/>
- <enum value="9" name="VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X2_PIXELS_NV"/>
- <enum value="10" name="VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X4_PIXELS_NV"/>
- <enum value="11" name="VK_FRAGMENT_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV"/>
- <enum value="12" name="VK_FRAGMENT_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV"/>
- <enum value="13" name="VK_FRAGMENT_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV"/>
- <enum value="14" name="VK_FRAGMENT_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV"/>
- <enum value="15" name="VK_FRAGMENT_SHADING_RATE_NO_INVOCATIONS_NV"/>
- </enums>
- <enums name="VkFragmentShadingRateTypeNV" type="enum">
- <enum value="0" name="VK_FRAGMENT_SHADING_RATE_TYPE_FRAGMENT_SIZE_NV"/>
- <enum value="1" name="VK_FRAGMENT_SHADING_RATE_TYPE_ENUMS_NV"/>
- </enums>
- <enums name="VkAccessFlagBits2KHR" type="bitmask" bitwidth="64">
- <enum value="0" name="VK_ACCESS_2_NONE_KHR"/>
- <enum bitpos="0" name="VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT_KHR"/>
- <enum bitpos="1" name="VK_ACCESS_2_INDEX_READ_BIT_KHR"/>
- <enum bitpos="2" name="VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT_KHR"/>
- <enum bitpos="3" name="VK_ACCESS_2_UNIFORM_READ_BIT_KHR"/>
- <enum bitpos="4" name="VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT_KHR"/>
- <enum bitpos="5" name="VK_ACCESS_2_SHADER_READ_BIT_KHR"/>
- <enum bitpos="6" name="VK_ACCESS_2_SHADER_WRITE_BIT_KHR"/>
- <enum bitpos="7" name="VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT_KHR"/>
- <enum bitpos="8" name="VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT_KHR"/>
- <enum bitpos="9" name="VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT_KHR"/>
- <enum bitpos="10" name="VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT_KHR"/>
- <enum bitpos="11" name="VK_ACCESS_2_TRANSFER_READ_BIT_KHR"/>
- <enum bitpos="12" name="VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR"/>
- <enum bitpos="13" name="VK_ACCESS_2_HOST_READ_BIT_KHR"/>
- <enum bitpos="14" name="VK_ACCESS_2_HOST_WRITE_BIT_KHR"/>
- <enum bitpos="15" name="VK_ACCESS_2_MEMORY_READ_BIT_KHR"/>
- <enum bitpos="16" name="VK_ACCESS_2_MEMORY_WRITE_BIT_KHR"/>
- <!-- bitpos 17-31 are specified by extensions to the original VkAccessFlagBits enum -->
- <enum bitpos="32" name="VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR"/>
- <enum bitpos="33" name="VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR"/>
- <enum bitpos="34" name="VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR"/>
- </enums>
- <enums name="VkPipelineStageFlagBits2KHR" type="bitmask" bitwidth="64">
- <enum value="0" name="VK_PIPELINE_STAGE_2_NONE_KHR"/>
- <enum bitpos="0" name="VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR"/>
- <enum bitpos="1" name="VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR"/>
- <enum bitpos="2" name="VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT_KHR"/>
- <enum bitpos="3" name="VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR"/>
- <enum bitpos="4" name="VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR"/>
- <enum bitpos="5" name="VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR"/>
- <enum bitpos="6" name="VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR"/>
- <enum bitpos="7" name="VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR"/>
- <enum bitpos="8" name="VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR"/>
- <enum bitpos="9" name="VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR"/>
- <enum bitpos="10" name="VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR"/>
- <enum bitpos="11" name="VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR"/>
- <enum bitpos="12" name="VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT_KHR"/>
- <enum name="VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR" alias="VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT_KHR"/>
- <enum bitpos="13" name="VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR"/>
- <enum bitpos="14" name="VK_PIPELINE_STAGE_2_HOST_BIT_KHR"/>
- <enum bitpos="15" name="VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR"/>
- <enum bitpos="16" name="VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR"/>
- <!-- bitpos 17-31 are specified by extensions to the original VkPipelineStageFlagBits enum -->
- <enum bitpos="32" name="VK_PIPELINE_STAGE_2_COPY_BIT_KHR"/>
- <enum bitpos="33" name="VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR"/>
- <enum bitpos="34" name="VK_PIPELINE_STAGE_2_BLIT_BIT_KHR"/>
- <enum bitpos="35" name="VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR"/>
- <enum bitpos="36" name="VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR"/>
- <enum bitpos="37" name="VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR"/>
- <enum bitpos="38" name="VK_PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT_KHR"/>
- </enums>
- <enums name="VkSubmitFlagBitsKHR" type="bitmask">
- <enum bitpos="0" name="VK_SUBMIT_PROTECTED_BIT_KHR"/>
- </enums>
- <enums name="VkEventCreateFlagBits" type="bitmask">
- </enums>
- <enums name="VkPipelineLayoutCreateFlagBits" type="bitmask">
- </enums>
- <enums name="VkProvokingVertexModeEXT" type="enum">
- <enum value="0" name="VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT"/>
- <enum value="1" name="VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT"/>
- </enums>
- <enums name="VkAccelerationStructureMotionInstanceTypeNV" type="enum">
- <enum value="0" name="VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV"/>
- <enum value="1" name="VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV"/>
- <enum value="2" name="VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV"/>
- </enums>
-
- <enums name="VkVideoCodecOperationFlagBitsKHR" type="bitmask">
- <enum value="0" name="VK_VIDEO_CODEC_OPERATION_INVALID_BIT_KHR"/>
- </enums>
- <enums name="VkVideoChromaSubsamplingFlagBitsKHR" type="bitmask" comment="Vulkan video chroma subsampling definitions">
- <enum value="0" name="VK_VIDEO_CHROMA_SUBSAMPLING_INVALID_BIT_KHR"/>
- <enum bitpos="0" name="VK_VIDEO_CHROMA_SUBSAMPLING_MONOCHROME_BIT_KHR"/>
- <enum bitpos="1" name="VK_VIDEO_CHROMA_SUBSAMPLING_420_BIT_KHR"/>
- <enum bitpos="2" name="VK_VIDEO_CHROMA_SUBSAMPLING_422_BIT_KHR"/>
- <enum bitpos="3" name="VK_VIDEO_CHROMA_SUBSAMPLING_444_BIT_KHR"/>
- </enums>
- <enums name="VkVideoComponentBitDepthFlagBitsKHR" type="bitmask" comment="Vulkan video component bit depth definitions">
- <enum value="0" name="VK_VIDEO_COMPONENT_BIT_DEPTH_INVALID_KHR"/>
- <enum bitpos="0" name="VK_VIDEO_COMPONENT_BIT_DEPTH_8_BIT_KHR"/>
- <enum bitpos="2" name="VK_VIDEO_COMPONENT_BIT_DEPTH_10_BIT_KHR"/>
- <enum bitpos="4" name="VK_VIDEO_COMPONENT_BIT_DEPTH_12_BIT_KHR"/>
- </enums>
- <enums name="VkVideoCapabilityFlagBitsKHR" type="bitmask">
- <enum bitpos="0" name="VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR"/>
- <enum bitpos="1" name="VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR"/>
- </enums>
- <enums name="VkVideoSessionCreateFlagBitsKHR" type="bitmask">
- <enum value="0" name="VK_VIDEO_SESSION_CREATE_DEFAULT_KHR"/>
- <enum bitpos="0" name="VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR"/>
- </enums>
- <enums name="VkVideoCodingQualityPresetFlagBitsKHR" type="bitmask">
- <enum bitpos="0" name="VK_VIDEO_CODING_QUALITY_PRESET_NORMAL_BIT_KHR"/>
- <enum bitpos="1" name="VK_VIDEO_CODING_QUALITY_PRESET_POWER_BIT_KHR"/>
- <enum bitpos="2" name="VK_VIDEO_CODING_QUALITY_PRESET_QUALITY_BIT_KHR"/>
- </enums>
- <enums name="VkVideoDecodeH264PictureLayoutFlagBitsEXT" type="bitmask">
- <enum value="0" name="VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_EXT"/>
- <enum bitpos="0" name="VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_EXT"/>
- <enum bitpos="1" name="VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_EXT"/>
- </enums>
- <enums name="VkVideoCodingControlFlagBitsKHR" type="bitmask">
- <enum value="0" name="VK_VIDEO_CODING_CONTROL_DEFAULT_KHR"/>
- <enum bitpos="0" name="VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR"/>
- </enums>
- <enums name="VkQueryResultStatusKHR" type="enum">
- <enum value="-1" name="VK_QUERY_RESULT_STATUS_ERROR_KHR"/>
- <enum value="0" name="VK_QUERY_RESULT_STATUS_NOT_READY_KHR"/>
- <enum value="1" name="VK_QUERY_RESULT_STATUS_COMPLETE_KHR"/>
- </enums>
- <enums name="VkVideoDecodeFlagBitsKHR" type="bitmask">
- <enum value="0" name="VK_VIDEO_DECODE_DEFAULT_KHR"/>
- <enum bitpos="0" name="VK_VIDEO_DECODE_RESERVED_0_BIT_KHR"/>
- </enums>
- <enums name="VkVideoEncodeFlagBitsKHR" type="bitmask">
- <enum value="0" name="VK_VIDEO_ENCODE_DEFAULT_KHR"/>
- <enum bitpos="0" name="VK_VIDEO_ENCODE_RESERVED_0_BIT_KHR"/>
- </enums>
- <enums name="VkVideoEncodeRateControlFlagBitsKHR" type="bitmask">
- <enum value="0" name="VK_VIDEO_ENCODE_RATE_CONTROL_DEFAULT_KHR"/>
- <enum bitpos="0" name="VK_VIDEO_ENCODE_RATE_CONTROL_RESET_BIT_KHR"/>
- </enums>
- <enums name="VkVideoEncodeRateControlModeFlagBitsKHR" type="bitmask">
- <enum value="0" name="VK_VIDEO_ENCODE_RATE_CONTROL_MODE_NONE_BIT_KHR"/>
- <enum value="1" name="VK_VIDEO_ENCODE_RATE_CONTROL_MODE_CBR_BIT_KHR"/>
- <enum value="2" name="VK_VIDEO_ENCODE_RATE_CONTROL_MODE_VBR_BIT_KHR"/>
- </enums>
- <enums name="VkVideoEncodeH264CapabilityFlagBitsEXT" type="bitmask">
- <enum bitpos="0" name="VK_VIDEO_ENCODE_H264_CAPABILITY_CABAC_BIT_EXT"/>
- <enum bitpos="1" name="VK_VIDEO_ENCODE_H264_CAPABILITY_CAVLC_BIT_EXT"/>
- <enum bitpos="2" name="VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_BI_PRED_IMPLICIT_BIT_EXT"/>
- <enum bitpos="3" name="VK_VIDEO_ENCODE_H264_CAPABILITY_TRANSFORM_8X8_BIT_EXT"/>
- <enum bitpos="4" name="VK_VIDEO_ENCODE_H264_CAPABILITY_CHROMA_QP_OFFSET_BIT_EXT"/>
- <enum bitpos="5" name="VK_VIDEO_ENCODE_H264_CAPABILITY_SECOND_CHROMA_QP_OFFSET_BIT_EXT"/>
- <enum bitpos="6" name="VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_DISABLED_BIT_EXT"/>
- <enum bitpos="7" name="VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_ENABLED_BIT_EXT"/>
- <enum bitpos="8" name="VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_PARTIAL_BIT_EXT"/>
- <enum bitpos="9" name="VK_VIDEO_ENCODE_H264_CAPABILITY_MULTIPLE_SLICE_PER_FRAME_BIT_EXT"/>
- <enum bitpos="10" name="VK_VIDEO_ENCODE_H264_CAPABILITY_EVENLY_DISTRIBUTED_SLICE_SIZE_BIT_EXT"/>
- </enums>
- <enums name="VkVideoEncodeH264InputModeFlagBitsEXT" type="bitmask">
- <enum bitpos="0" name="VK_VIDEO_ENCODE_H264_INPUT_MODE_FRAME_BIT_EXT"/>
- <enum bitpos="1" name="VK_VIDEO_ENCODE_H264_INPUT_MODE_SLICE_BIT_EXT"/>
- <enum bitpos="2" name="VK_VIDEO_ENCODE_H264_INPUT_MODE_NON_VCL_BIT_EXT"/>
- </enums>
- <enums name="VkVideoEncodeH264OutputModeFlagBitsEXT" type="bitmask">
- <enum bitpos="0" name="VK_VIDEO_ENCODE_H264_OUTPUT_MODE_FRAME_BIT_EXT"/>
- <enum bitpos="1" name="VK_VIDEO_ENCODE_H264_OUTPUT_MODE_SLICE_BIT_EXT"/>
- <enum bitpos="2" name="VK_VIDEO_ENCODE_H264_OUTPUT_MODE_NON_VCL_BIT_EXT"/>
- </enums>
- <enums name="VkVideoEncodeH264CreateFlagBitsEXT" type="bitmask">
- <enum value="0" name="VK_VIDEO_ENCODE_H264_CREATE_DEFAULT_EXT"/>
- <enum bitpos="0" name="VK_VIDEO_ENCODE_H264_CREATE_RESERVED_0_BIT_EXT"/>
- </enums>
- <enums name="VkImageFormatConstraintsFlagBitsFUCHSIA" type="bitmask">
- </enums>
- <enums name="VkImageConstraintsInfoFlagBitsFUCHSIA" type="bitmask">
- <enum bitpos="0" name="VK_IMAGE_CONSTRAINTS_INFO_CPU_READ_RARELY_FUCHSIA"/>
- <enum bitpos="1" name="VK_IMAGE_CONSTRAINTS_INFO_CPU_READ_OFTEN_FUCHSIA"/>
- <enum bitpos="2" name="VK_IMAGE_CONSTRAINTS_INFO_CPU_WRITE_RARELY_FUCHSIA"/>
- <enum bitpos="3" name="VK_IMAGE_CONSTRAINTS_INFO_CPU_WRITE_OFTEN_FUCHSIA"/>
- <enum bitpos="4" name="VK_IMAGE_CONSTRAINTS_INFO_PROTECTED_OPTIONAL_FUCHSIA"/>
- </enums>
- <enums name="VkFormatFeatureFlagBits2KHR" type="bitmask" bitwidth="64">
- <enum bitpos="0" name="VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT_KHR"/>
- <enum bitpos="1" name="VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT_KHR"/>
- <enum bitpos="2" name="VK_FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT_KHR"/>
- <enum bitpos="3" name="VK_FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT_KHR"/>
- <enum bitpos="4" name="VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT_KHR"/>
- <enum bitpos="5" name="VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT_KHR"/>
- <enum bitpos="6" name="VK_FORMAT_FEATURE_2_VERTEX_BUFFER_BIT_KHR"/>
- <enum bitpos="7" name="VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT_KHR"/>
- <enum bitpos="8" name="VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT_KHR"/>
- <enum bitpos="9" name="VK_FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT_KHR"/>
- <enum bitpos="10" name="VK_FORMAT_FEATURE_2_BLIT_SRC_BIT_KHR"/>
- <enum bitpos="11" name="VK_FORMAT_FEATURE_2_BLIT_DST_BIT_KHR"/>
- <enum bitpos="12" name="VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT_KHR"/>
- <enum bitpos="13" name="VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT"/>
- <enum bitpos="14" name="VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT_KHR"/>
- <enum bitpos="15" name="VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT_KHR"/>
- <enum bitpos="16" name="VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT_KHR"/>
- <enum bitpos="17" name="VK_FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT_KHR"/>
- <enum bitpos="18" name="VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR"/>
- <enum bitpos="19" name="VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR"/>
- <enum bitpos="20" name="VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR"/>
- <enum bitpos="21" name="VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR"/>
- <enum bitpos="22" name="VK_FORMAT_FEATURE_2_DISJOINT_BIT_KHR"/>
- <enum bitpos="23" name="VK_FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT_KHR"/>
- <enum bitpos="31" name="VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR"/>
- <enum bitpos="32" name="VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR"/>
- <enum bitpos="33" name="VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHR"/>
- </enums>
- <enums name="VkVideoEncodeH265InputModeFlagBitsEXT" type="bitmask">
- <enum bitpos="0" name="VK_VIDEO_ENCODE_H265_INPUT_MODE_FRAME_BIT_EXT"/>
- <enum bitpos="1" name="VK_VIDEO_ENCODE_H265_INPUT_MODE_SLICE_BIT_EXT"/>
- <enum bitpos="2" name="VK_VIDEO_ENCODE_H265_INPUT_MODE_NON_VCL_BIT_EXT"/>
- </enums>
- <enums name="VkVideoEncodeH265OutputModeFlagBitsEXT" type="bitmask">
- <enum bitpos="0" name="VK_VIDEO_ENCODE_H265_OUTPUT_MODE_FRAME_BIT_EXT"/>
- <enum bitpos="1" name="VK_VIDEO_ENCODE_H265_OUTPUT_MODE_SLICE_BIT_EXT"/>
- <enum bitpos="2" name="VK_VIDEO_ENCODE_H265_OUTPUT_MODE_NON_VCL_BIT_EXT"/>
- </enums>
- <enums name="VkVideoEncodeH265CtbSizeFlagBitsEXT" type="bitmask">
- <enum bitpos="0" name="VK_VIDEO_ENCODE_H265_CTB_SIZE_8_BIT_EXT"/>
- <enum bitpos="1" name="VK_VIDEO_ENCODE_H265_CTB_SIZE_16_BIT_EXT"/>
- <enum bitpos="2" name="VK_VIDEO_ENCODE_H265_CTB_SIZE_32_BIT_EXT"/>
- <enum bitpos="3" name="VK_VIDEO_ENCODE_H265_CTB_SIZE_64_BIT_EXT"/>
- </enums>
- <enums name="VkRenderingFlagBitsKHR" type="bitmask">
- <enum bitpos="0" name="VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT_KHR"/>
- <enum bitpos="1" name="VK_RENDERING_SUSPENDING_BIT_KHR"/>
- <enum bitpos="2" name="VK_RENDERING_RESUMING_BIT_KHR"/>
- </enums>
-
- <commands comment="Vulkan command definitions">
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_INITIALIZATION_FAILED,VK_ERROR_LAYER_NOT_PRESENT,VK_ERROR_EXTENSION_NOT_PRESENT,VK_ERROR_INCOMPATIBLE_DRIVER">
- <proto><type>VkResult</type> <name>vkCreateInstance</name></proto>
- <param>const <type>VkInstanceCreateInfo</type>* <name>pCreateInfo</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <param><type>VkInstance</type>* <name>pInstance</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkDestroyInstance</name></proto>
- <param optional="true" externsync="true"><type>VkInstance</type> <name>instance</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <implicitexternsyncparams>
- <param>all sname:VkPhysicalDevice objects enumerated from pname:instance</param>
- </implicitexternsyncparams>
- </command>
- <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_INITIALIZATION_FAILED">
- <proto><type>VkResult</type> <name>vkEnumeratePhysicalDevices</name></proto>
- <param><type>VkInstance</type> <name>instance</name></param>
- <param optional="false,true"><type>uint32_t</type>* <name>pPhysicalDeviceCount</name></param>
- <param optional="true" len="pPhysicalDeviceCount"><type>VkPhysicalDevice</type>* <name>pPhysicalDevices</name></param>
- </command>
- <command>
- <proto><type>PFN_vkVoidFunction</type> <name>vkGetDeviceProcAddr</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param len="null-terminated">const <type>char</type>* <name>pName</name></param>
- </command>
- <command>
- <proto><type>PFN_vkVoidFunction</type> <name>vkGetInstanceProcAddr</name></proto>
- <param optional="true"><type>VkInstance</type> <name>instance</name></param>
- <param len="null-terminated">const <type>char</type>* <name>pName</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkGetPhysicalDeviceProperties</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param><type>VkPhysicalDeviceProperties</type>* <name>pProperties</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkGetPhysicalDeviceQueueFamilyProperties</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param optional="false,true"><type>uint32_t</type>* <name>pQueueFamilyPropertyCount</name></param>
- <param optional="true" len="pQueueFamilyPropertyCount"><type>VkQueueFamilyProperties</type>* <name>pQueueFamilyProperties</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkGetPhysicalDeviceMemoryProperties</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param><type>VkPhysicalDeviceMemoryProperties</type>* <name>pMemoryProperties</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkGetPhysicalDeviceFeatures</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param><type>VkPhysicalDeviceFeatures</type>* <name>pFeatures</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkGetPhysicalDeviceFormatProperties</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param><type>VkFormat</type> <name>format</name></param>
- <param><type>VkFormatProperties</type>* <name>pFormatProperties</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_FORMAT_NOT_SUPPORTED">
- <proto><type>VkResult</type> <name>vkGetPhysicalDeviceImageFormatProperties</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param><type>VkFormat</type> <name>format</name></param>
- <param><type>VkImageType</type> <name>type</name></param>
- <param><type>VkImageTiling</type> <name>tiling</name></param>
- <param><type>VkImageUsageFlags</type> <name>usage</name></param>
- <param optional="true"><type>VkImageCreateFlags</type> <name>flags</name></param>
- <param><type>VkImageFormatProperties</type>* <name>pImageFormatProperties</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_INITIALIZATION_FAILED,VK_ERROR_EXTENSION_NOT_PRESENT,VK_ERROR_FEATURE_NOT_PRESENT,VK_ERROR_TOO_MANY_OBJECTS,VK_ERROR_DEVICE_LOST">
- <proto><type>VkResult</type> <name>vkCreateDevice</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param>const <type>VkDeviceCreateInfo</type>* <name>pCreateInfo</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <param><type>VkDevice</type>* <name>pDevice</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkDestroyDevice</name></proto>
- <param optional="true" externsync="true"><type>VkDevice</type> <name>device</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <implicitexternsyncparams>
- <param>all sname:VkQueue objects created from pname:device</param>
- </implicitexternsyncparams>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY">
- <proto><type>VkResult</type> <name>vkEnumerateInstanceVersion</name></proto>
- <param><type>uint32_t</type>* <name>pApiVersion</name></param>
- </command>
- <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkEnumerateInstanceLayerProperties</name></proto>
- <param optional="false,true"><type>uint32_t</type>* <name>pPropertyCount</name></param>
- <param optional="true" len="pPropertyCount"><type>VkLayerProperties</type>* <name>pProperties</name></param>
- </command>
- <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_LAYER_NOT_PRESENT">
- <proto><type>VkResult</type> <name>vkEnumerateInstanceExtensionProperties</name></proto>
- <param optional="true" len="null-terminated">const <type>char</type>* <name>pLayerName</name></param>
- <param optional="false,true"><type>uint32_t</type>* <name>pPropertyCount</name></param>
- <param optional="true" len="pPropertyCount"><type>VkExtensionProperties</type>* <name>pProperties</name></param>
- </command>
- <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkEnumerateDeviceLayerProperties</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param optional="false,true"><type>uint32_t</type>* <name>pPropertyCount</name></param>
- <param optional="true" len="pPropertyCount"><type>VkLayerProperties</type>* <name>pProperties</name></param>
- </command>
- <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_LAYER_NOT_PRESENT">
- <proto><type>VkResult</type> <name>vkEnumerateDeviceExtensionProperties</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param optional="true" len="null-terminated">const <type>char</type>* <name>pLayerName</name></param>
- <param optional="false,true"><type>uint32_t</type>* <name>pPropertyCount</name></param>
- <param optional="true" len="pPropertyCount"><type>VkExtensionProperties</type>* <name>pProperties</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkGetDeviceQueue</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>uint32_t</type> <name>queueFamilyIndex</name></param>
- <param><type>uint32_t</type> <name>queueIndex</name></param>
- <param><type>VkQueue</type>* <name>pQueue</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_DEVICE_LOST">
- <proto><type>VkResult</type> <name>vkQueueSubmit</name></proto>
- <param externsync="true"><type>VkQueue</type> <name>queue</name></param>
- <param optional="true"><type>uint32_t</type> <name>submitCount</name></param>
- <param len="submitCount">const <type>VkSubmitInfo</type>* <name>pSubmits</name></param>
- <param optional="true" externsync="true"><type>VkFence</type> <name>fence</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_DEVICE_LOST">
- <proto><type>VkResult</type> <name>vkQueueWaitIdle</name></proto>
- <param externsync="true"><type>VkQueue</type> <name>queue</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_DEVICE_LOST">
- <proto><type>VkResult</type> <name>vkDeviceWaitIdle</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <implicitexternsyncparams>
- <param>all sname:VkQueue objects created from pname:device</param>
- </implicitexternsyncparams>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_INVALID_EXTERNAL_HANDLE,VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR">
- <proto><type>VkResult</type> <name>vkAllocateMemory</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkMemoryAllocateInfo</type>* <name>pAllocateInfo</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <param><type>VkDeviceMemory</type>* <name>pMemory</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkFreeMemory</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param optional="true" externsync="true" devicememoryhandle="1"><type>VkDeviceMemory</type> <name>memory</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_MEMORY_MAP_FAILED">
- <proto><type>VkResult</type> <name>vkMapMemory</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param externsync="true" devicememoryhandle="1"><type>VkDeviceMemory</type> <name>memory</name></param>
- <param><type>VkDeviceSize</type> <name>offset</name></param>
- <param><type>VkDeviceSize</type> <name>size</name></param>
- <param optional="true"><type>VkMemoryMapFlags</type> <name>flags</name></param>
- <param optional="false,true"><type>void</type>** <name>ppData</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkUnmapMemory</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param externsync="true" devicememoryhandle="1"><type>VkDeviceMemory</type> <name>memory</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkFlushMappedMemoryRanges</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>uint32_t</type> <name>memoryRangeCount</name></param>
- <param len="memoryRangeCount">const <type>VkMappedMemoryRange</type>* <name>pMemoryRanges</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkInvalidateMappedMemoryRanges</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>uint32_t</type> <name>memoryRangeCount</name></param>
- <param len="memoryRangeCount">const <type>VkMappedMemoryRange</type>* <name>pMemoryRanges</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkGetDeviceMemoryCommitment</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param devicememoryhandle="1"><type>VkDeviceMemory</type> <name>memory</name></param>
- <param devicememoryoffset="1"><type>VkDeviceSize</type>* <name>pCommittedMemoryInBytes</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkGetBufferMemoryRequirements</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>VkBuffer</type> <name>buffer</name></param>
- <param><type>VkMemoryRequirements</type>* <name>pMemoryRequirements</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR">
- <proto><type>VkResult</type> <name>vkBindBufferMemory</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param externsync="true"><type>VkBuffer</type> <name>buffer</name></param>
- <param devicememoryhandle="1"><type>VkDeviceMemory</type> <name>memory</name></param>
- <param devicememoryoffset="1"><type>VkDeviceSize</type> <name>memoryOffset</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkGetImageMemoryRequirements</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>VkImage</type> <name>image</name></param>
- <param><type>VkMemoryRequirements</type>* <name>pMemoryRequirements</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkBindImageMemory</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param externsync="true"><type>VkImage</type> <name>image</name></param>
- <param devicememoryhandle="1"><type>VkDeviceMemory</type> <name>memory</name></param>
- <param devicememoryoffset="1"><type>VkDeviceSize</type> <name>memoryOffset</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkGetImageSparseMemoryRequirements</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>VkImage</type> <name>image</name></param>
- <param optional="false,true"><type>uint32_t</type>* <name>pSparseMemoryRequirementCount</name></param>
- <param optional="true" len="pSparseMemoryRequirementCount"><type>VkSparseImageMemoryRequirements</type>* <name>pSparseMemoryRequirements</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkGetPhysicalDeviceSparseImageFormatProperties</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param><type>VkFormat</type> <name>format</name></param>
- <param><type>VkImageType</type> <name>type</name></param>
- <param><type>VkSampleCountFlagBits</type> <name>samples</name></param>
- <param><type>VkImageUsageFlags</type> <name>usage</name></param>
- <param><type>VkImageTiling</type> <name>tiling</name></param>
- <param optional="false,true"><type>uint32_t</type>* <name>pPropertyCount</name></param>
- <param optional="true" len="pPropertyCount"><type>VkSparseImageFormatProperties</type>* <name>pProperties</name></param>
- </command>
- <command queues="sparse_binding" successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_DEVICE_LOST">
- <proto><type>VkResult</type> <name>vkQueueBindSparse</name></proto>
- <param externsync="true"><type>VkQueue</type> <name>queue</name></param>
- <param optional="true"><type>uint32_t</type> <name>bindInfoCount</name></param>
- <param len="bindInfoCount" externsync="pBindInfo[].pBufferBinds[].buffer,pBindInfo[].pImageOpaqueBinds[].image,pBindInfo[].pImageBinds[].image">const <type>VkBindSparseInfo</type>* <name>pBindInfo</name></param>
- <param optional="true" externsync="true"><type>VkFence</type> <name>fence</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkCreateFence</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkFenceCreateInfo</type>* <name>pCreateInfo</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <param><type>VkFence</type>* <name>pFence</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkDestroyFence</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param optional="true" externsync="true"><type>VkFence</type> <name>fence</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkResetFences</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>uint32_t</type> <name>fenceCount</name></param>
- <param len="fenceCount" externsync="true">const <type>VkFence</type>* <name>pFences</name></param>
- </command>
- <command successcodes="VK_SUCCESS,VK_NOT_READY" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_DEVICE_LOST">
- <proto><type>VkResult</type> <name>vkGetFenceStatus</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>VkFence</type> <name>fence</name></param>
- </command>
- <command successcodes="VK_SUCCESS,VK_TIMEOUT" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_DEVICE_LOST">
- <proto><type>VkResult</type> <name>vkWaitForFences</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>uint32_t</type> <name>fenceCount</name></param>
- <param len="fenceCount">const <type>VkFence</type>* <name>pFences</name></param>
- <param><type>VkBool32</type> <name>waitAll</name></param>
- <param><type>uint64_t</type> <name>timeout</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkCreateSemaphore</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkSemaphoreCreateInfo</type>* <name>pCreateInfo</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <param><type>VkSemaphore</type>* <name>pSemaphore</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkDestroySemaphore</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param optional="true" externsync="true"><type>VkSemaphore</type> <name>semaphore</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkCreateEvent</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkEventCreateInfo</type>* <name>pCreateInfo</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <param><type>VkEvent</type>* <name>pEvent</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkDestroyEvent</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param optional="true" externsync="true"><type>VkEvent</type> <name>event</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- </command>
- <command successcodes="VK_EVENT_SET,VK_EVENT_RESET" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_DEVICE_LOST">
- <proto><type>VkResult</type> <name>vkGetEventStatus</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>VkEvent</type> <name>event</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkSetEvent</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param externsync="true"><type>VkEvent</type> <name>event</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkResetEvent</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param externsync="true"><type>VkEvent</type> <name>event</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkCreateQueryPool</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkQueryPoolCreateInfo</type>* <name>pCreateInfo</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <param><type>VkQueryPool</type>* <name>pQueryPool</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkDestroyQueryPool</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param optional="true" externsync="true"><type>VkQueryPool</type> <name>queryPool</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- </command>
- <command successcodes="VK_SUCCESS,VK_NOT_READY" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_DEVICE_LOST">
- <proto><type>VkResult</type> <name>vkGetQueryPoolResults</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>VkQueryPool</type> <name>queryPool</name></param>
- <param><type>uint32_t</type> <name>firstQuery</name></param>
- <param><type>uint32_t</type> <name>queryCount</name></param>
- <param><type>size_t</type> <name>dataSize</name></param>
- <param len="dataSize"><type>void</type>* <name>pData</name></param>
- <param><type>VkDeviceSize</type> <name>stride</name></param>
- <param optional="true"><type>VkQueryResultFlags</type> <name>flags</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkResetQueryPool</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>VkQueryPool</type> <name>queryPool</name></param>
- <param><type>uint32_t</type> <name>firstQuery</name></param>
- <param><type>uint32_t</type> <name>queryCount</name></param>
- </command>
- <command name="vkResetQueryPoolEXT" alias="vkResetQueryPool"/>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR">
- <proto><type>VkResult</type> <name>vkCreateBuffer</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkBufferCreateInfo</type>* <name>pCreateInfo</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <param><type>VkBuffer</type>* <name>pBuffer</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkDestroyBuffer</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param optional="true" externsync="true"><type>VkBuffer</type> <name>buffer</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkCreateBufferView</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkBufferViewCreateInfo</type>* <name>pCreateInfo</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <param><type>VkBufferView</type>* <name>pView</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkDestroyBufferView</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param optional="true" externsync="true"><type>VkBufferView</type> <name>bufferView</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkCreateImage</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkImageCreateInfo</type>* <name>pCreateInfo</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <param><type>VkImage</type>* <name>pImage</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkDestroyImage</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param optional="true" externsync="true"><type>VkImage</type> <name>image</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkGetImageSubresourceLayout</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>VkImage</type> <name>image</name></param>
- <param>const <type>VkImageSubresource</type>* <name>pSubresource</name></param>
- <param><type>VkSubresourceLayout</type>* <name>pLayout</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkCreateImageView</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkImageViewCreateInfo</type>* <name>pCreateInfo</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <param><type>VkImageView</type>* <name>pView</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkDestroyImageView</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param optional="true" externsync="true"><type>VkImageView</type> <name>imageView</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_INVALID_SHADER_NV">
- <proto><type>VkResult</type> <name>vkCreateShaderModule</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkShaderModuleCreateInfo</type>* <name>pCreateInfo</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <param><type>VkShaderModule</type>* <name>pShaderModule</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkDestroyShaderModule</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param optional="true" externsync="true"><type>VkShaderModule</type> <name>shaderModule</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkCreatePipelineCache</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkPipelineCacheCreateInfo</type>* <name>pCreateInfo</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <param><type>VkPipelineCache</type>* <name>pPipelineCache</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkDestroyPipelineCache</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param optional="true" externsync="true"><type>VkPipelineCache</type> <name>pipelineCache</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- </command>
- <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkGetPipelineCacheData</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>VkPipelineCache</type> <name>pipelineCache</name></param>
- <param optional="false,true"><type>size_t</type>* <name>pDataSize</name></param>
- <param optional="true" len="pDataSize"><type>void</type>* <name>pData</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkMergePipelineCaches</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param externsync="true"><type>VkPipelineCache</type> <name>dstCache</name></param>
- <param><type>uint32_t</type> <name>srcCacheCount</name></param>
- <param len="srcCacheCount">const <type>VkPipelineCache</type>* <name>pSrcCaches</name></param>
- </command>
- <command successcodes="VK_SUCCESS,VK_PIPELINE_COMPILE_REQUIRED_EXT" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_INVALID_SHADER_NV">
- <proto><type>VkResult</type> <name>vkCreateGraphicsPipelines</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param optional="true"><type>VkPipelineCache</type> <name>pipelineCache</name></param>
- <param><type>uint32_t</type> <name>createInfoCount</name></param>
- <param len="createInfoCount">const <type>VkGraphicsPipelineCreateInfo</type>* <name>pCreateInfos</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <param len="createInfoCount"><type>VkPipeline</type>* <name>pPipelines</name></param>
- </command>
- <command successcodes="VK_SUCCESS,VK_PIPELINE_COMPILE_REQUIRED_EXT" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_INVALID_SHADER_NV">
- <proto><type>VkResult</type> <name>vkCreateComputePipelines</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param optional="true"><type>VkPipelineCache</type> <name>pipelineCache</name></param>
- <param><type>uint32_t</type> <name>createInfoCount</name></param>
- <param len="createInfoCount">const <type>VkComputePipelineCreateInfo</type>* <name>pCreateInfos</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <param len="createInfoCount"><type>VkPipeline</type>* <name>pPipelines</name></param>
- </command>
- <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_SURFACE_LOST_KHR">
- <proto><type>VkResult</type> <name>vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>VkRenderPass</type> <name>renderpass</name></param>
- <param><type>VkExtent2D</type>* <name>pMaxWorkgroupSize</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkDestroyPipeline</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param optional="true" externsync="true"><type>VkPipeline</type> <name>pipeline</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkCreatePipelineLayout</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkPipelineLayoutCreateInfo</type>* <name>pCreateInfo</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <param><type>VkPipelineLayout</type>* <name>pPipelineLayout</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkDestroyPipelineLayout</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param optional="true" externsync="true"><type>VkPipelineLayout</type> <name>pipelineLayout</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkCreateSampler</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkSamplerCreateInfo</type>* <name>pCreateInfo</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <param><type>VkSampler</type>* <name>pSampler</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkDestroySampler</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param optional="true" externsync="true"><type>VkSampler</type> <name>sampler</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkCreateDescriptorSetLayout</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkDescriptorSetLayoutCreateInfo</type>* <name>pCreateInfo</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <param><type>VkDescriptorSetLayout</type>* <name>pSetLayout</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkDestroyDescriptorSetLayout</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param optional="true" externsync="true"><type>VkDescriptorSetLayout</type> <name>descriptorSetLayout</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_FRAGMENTATION_EXT">
- <proto><type>VkResult</type> <name>vkCreateDescriptorPool</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkDescriptorPoolCreateInfo</type>* <name>pCreateInfo</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <param><type>VkDescriptorPool</type>* <name>pDescriptorPool</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkDestroyDescriptorPool</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param optional="true" externsync="true"><type>VkDescriptorPool</type> <name>descriptorPool</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- </command>
- <command successcodes="VK_SUCCESS">
- <proto><type>VkResult</type> <name>vkResetDescriptorPool</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param externsync="true"><type>VkDescriptorPool</type> <name>descriptorPool</name></param>
- <param optional="true"><type>VkDescriptorPoolResetFlags</type> <name>flags</name></param>
- <implicitexternsyncparams>
- <param>any sname:VkDescriptorSet objects allocated from pname:descriptorPool</param>
- </implicitexternsyncparams>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_FRAGMENTED_POOL,VK_ERROR_OUT_OF_POOL_MEMORY">
- <proto><type>VkResult</type> <name>vkAllocateDescriptorSets</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param externsync="pAllocateInfo-&gt;descriptorPool">const <type>VkDescriptorSetAllocateInfo</type>* <name>pAllocateInfo</name></param>
- <param len="pAllocateInfo-&gt;descriptorSetCount"><type>VkDescriptorSet</type>* <name>pDescriptorSets</name></param>
- </command>
- <command successcodes="VK_SUCCESS">
- <proto><type>VkResult</type> <name>vkFreeDescriptorSets</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param externsync="true"><type>VkDescriptorPool</type> <name>descriptorPool</name></param>
- <param><type>uint32_t</type> <name>descriptorSetCount</name></param>
- <param noautovalidity="true" externsync="true" len="descriptorSetCount">const <type>VkDescriptorSet</type>* <name>pDescriptorSets</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkUpdateDescriptorSets</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param optional="true"><type>uint32_t</type> <name>descriptorWriteCount</name></param>
- <param len="descriptorWriteCount" externsync="pDescriptorWrites[].dstSet">const <type>VkWriteDescriptorSet</type>* <name>pDescriptorWrites</name></param>
- <param optional="true"><type>uint32_t</type> <name>descriptorCopyCount</name></param>
- <param len="descriptorCopyCount" externsync="pDescriptorCopies[].dstSet">const <type>VkCopyDescriptorSet</type>* <name>pDescriptorCopies</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkCreateFramebuffer</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkFramebufferCreateInfo</type>* <name>pCreateInfo</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <param><type>VkFramebuffer</type>* <name>pFramebuffer</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkDestroyFramebuffer</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param optional="true" externsync="true"><type>VkFramebuffer</type> <name>framebuffer</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkCreateRenderPass</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkRenderPassCreateInfo</type>* <name>pCreateInfo</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <param><type>VkRenderPass</type>* <name>pRenderPass</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkDestroyRenderPass</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param optional="true" externsync="true"><type>VkRenderPass</type> <name>renderPass</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkGetRenderAreaGranularity</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>VkRenderPass</type> <name>renderPass</name></param>
- <param><type>VkExtent2D</type>* <name>pGranularity</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkCreateCommandPool</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkCommandPoolCreateInfo</type>* <name>pCreateInfo</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <param><type>VkCommandPool</type>* <name>pCommandPool</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkDestroyCommandPool</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param optional="true" externsync="true"><type>VkCommandPool</type> <name>commandPool</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkResetCommandPool</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param externsync="true"><type>VkCommandPool</type> <name>commandPool</name></param>
- <param optional="true"><type>VkCommandPoolResetFlags</type> <name>flags</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkAllocateCommandBuffers</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param externsync="pAllocateInfo-&gt;commandPool">const <type>VkCommandBufferAllocateInfo</type>* <name>pAllocateInfo</name></param>
- <param len="pAllocateInfo-&gt;commandBufferCount"><type>VkCommandBuffer</type>* <name>pCommandBuffers</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkFreeCommandBuffers</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param externsync="true"><type>VkCommandPool</type> <name>commandPool</name></param>
- <param><type>uint32_t</type> <name>commandBufferCount</name></param>
- <param noautovalidity="true" externsync="true" len="commandBufferCount">const <type>VkCommandBuffer</type>* <name>pCommandBuffers</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkBeginCommandBuffer</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param>const <type>VkCommandBufferBeginInfo</type>* <name>pBeginInfo</name></param>
- <implicitexternsyncparams>
- <param>the sname:VkCommandPool that pname:commandBuffer was allocated from</param>
- </implicitexternsyncparams>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkEndCommandBuffer</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <implicitexternsyncparams>
- <param>the sname:VkCommandPool that pname:commandBuffer was allocated from</param>
- </implicitexternsyncparams>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkResetCommandBuffer</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param optional="true"><type>VkCommandBufferResetFlags</type> <name>flags</name></param>
- <implicitexternsyncparams>
- <param>the sname:VkCommandPool that pname:commandBuffer was allocated from</param>
- </implicitexternsyncparams>
- </command>
- <command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdBindPipeline</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>VkPipelineBindPoint</type> <name>pipelineBindPoint</name></param>
- <param><type>VkPipeline</type> <name>pipeline</name></param>
- </command>
- <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdSetViewport</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>uint32_t</type> <name>firstViewport</name></param>
- <param><type>uint32_t</type> <name>viewportCount</name></param>
- <param len="viewportCount">const <type>VkViewport</type>* <name>pViewports</name></param>
- </command>
- <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdSetScissor</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>uint32_t</type> <name>firstScissor</name></param>
- <param><type>uint32_t</type> <name>scissorCount</name></param>
- <param len="scissorCount">const <type>VkRect2D</type>* <name>pScissors</name></param>
- </command>
- <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdSetLineWidth</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>float</type> <name>lineWidth</name></param>
- </command>
- <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdSetDepthBias</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>float</type> <name>depthBiasConstantFactor</name></param>
- <param><type>float</type> <name>depthBiasClamp</name></param>
- <param><type>float</type> <name>depthBiasSlopeFactor</name></param>
- </command>
- <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdSetBlendConstants</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param>const <type>float</type> <name>blendConstants</name>[4]</param>
- </command>
- <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdSetDepthBounds</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>float</type> <name>minDepthBounds</name></param>
- <param><type>float</type> <name>maxDepthBounds</name></param>
- </command>
- <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdSetStencilCompareMask</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>VkStencilFaceFlags</type> <name>faceMask</name></param>
- <param><type>uint32_t</type> <name>compareMask</name></param>
- </command>
- <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdSetStencilWriteMask</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>VkStencilFaceFlags</type> <name>faceMask</name></param>
- <param><type>uint32_t</type> <name>writeMask</name></param>
- </command>
- <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdSetStencilReference</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>VkStencilFaceFlags</type> <name>faceMask</name></param>
- <param><type>uint32_t</type> <name>reference</name></param>
- </command>
- <command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdBindDescriptorSets</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>VkPipelineBindPoint</type> <name>pipelineBindPoint</name></param>
- <param><type>VkPipelineLayout</type> <name>layout</name></param>
- <param><type>uint32_t</type> <name>firstSet</name></param>
- <param><type>uint32_t</type> <name>descriptorSetCount</name></param>
- <param len="descriptorSetCount">const <type>VkDescriptorSet</type>* <name>pDescriptorSets</name></param>
- <param optional="true"><type>uint32_t</type> <name>dynamicOffsetCount</name></param>
- <param len="dynamicOffsetCount">const <type>uint32_t</type>* <name>pDynamicOffsets</name></param>
- </command>
- <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdBindIndexBuffer</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>VkBuffer</type> <name>buffer</name></param>
- <param><type>VkDeviceSize</type> <name>offset</name></param>
- <param><type>VkIndexType</type> <name>indexType</name></param>
- </command>
- <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdBindVertexBuffers</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>uint32_t</type> <name>firstBinding</name></param>
- <param><type>uint32_t</type> <name>bindingCount</name></param>
- <param len="bindingCount">const <type>VkBuffer</type>* <name>pBuffers</name></param>
- <param len="bindingCount">const <type>VkDeviceSize</type>* <name>pOffsets</name></param>
- </command>
- <command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdDraw</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>uint32_t</type> <name>vertexCount</name></param>
- <param><type>uint32_t</type> <name>instanceCount</name></param>
- <param><type>uint32_t</type> <name>firstVertex</name></param>
- <param><type>uint32_t</type> <name>firstInstance</name></param>
- </command>
- <command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdDrawIndexed</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>uint32_t</type> <name>indexCount</name></param>
- <param><type>uint32_t</type> <name>instanceCount</name></param>
- <param><type>uint32_t</type> <name>firstIndex</name></param>
- <param><type>int32_t</type> <name>vertexOffset</name></param>
- <param><type>uint32_t</type> <name>firstInstance</name></param>
- </command>
- <command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdDrawMultiEXT</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param optional="true"><type>uint32_t</type> <name>drawCount</name></param>
- <param noautovalidity="true" len="drawCount">const <type>VkMultiDrawInfoEXT</type>* <name>pVertexInfo</name></param>
- <param><type>uint32_t</type> <name>instanceCount</name></param>
- <param><type>uint32_t</type> <name>firstInstance</name></param>
- <param><type>uint32_t</type> <name>stride</name></param>
- </command>
- <command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdDrawMultiIndexedEXT</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param optional="true"><type>uint32_t</type> <name>drawCount</name></param>
- <param noautovalidity="true" len="drawCount">const <type>VkMultiDrawIndexedInfoEXT</type>* <name>pIndexInfo</name></param>
- <param><type>uint32_t</type> <name>instanceCount</name></param>
- <param><type>uint32_t</type> <name>firstInstance</name></param>
- <param><type>uint32_t</type> <name>stride</name></param>
- <param optional="true">const <type>int32_t</type>* <name>pVertexOffset</name></param>
- </command>
- <command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdDrawIndirect</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>VkBuffer</type> <name>buffer</name></param>
- <param><type>VkDeviceSize</type> <name>offset</name></param>
- <param><type>uint32_t</type> <name>drawCount</name></param>
- <param><type>uint32_t</type> <name>stride</name></param>
- </command>
- <command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdDrawIndexedIndirect</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>VkBuffer</type> <name>buffer</name></param>
- <param><type>VkDeviceSize</type> <name>offset</name></param>
- <param><type>uint32_t</type> <name>drawCount</name></param>
- <param><type>uint32_t</type> <name>stride</name></param>
- </command>
- <command queues="compute" renderpass="outside" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdDispatch</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>uint32_t</type> <name>groupCountX</name></param>
- <param><type>uint32_t</type> <name>groupCountY</name></param>
- <param><type>uint32_t</type> <name>groupCountZ</name></param>
- </command>
- <command queues="compute" renderpass="outside" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdDispatchIndirect</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>VkBuffer</type> <name>buffer</name></param>
- <param><type>VkDeviceSize</type> <name>offset</name></param>
- </command>
- <command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdSubpassShadingHUAWEI</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- </command>
- <command queues="transfer,graphics,compute" renderpass="outside" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdCopyBuffer</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>VkBuffer</type> <name>srcBuffer</name></param>
- <param><type>VkBuffer</type> <name>dstBuffer</name></param>
- <param><type>uint32_t</type> <name>regionCount</name></param>
- <param len="regionCount">const <type>VkBufferCopy</type>* <name>pRegions</name></param>
- </command>
- <command queues="transfer,graphics,compute" renderpass="outside" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdCopyImage</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>VkImage</type> <name>srcImage</name></param>
- <param><type>VkImageLayout</type> <name>srcImageLayout</name></param>
- <param><type>VkImage</type> <name>dstImage</name></param>
- <param><type>VkImageLayout</type> <name>dstImageLayout</name></param>
- <param><type>uint32_t</type> <name>regionCount</name></param>
- <param len="regionCount">const <type>VkImageCopy</type>* <name>pRegions</name></param>
- </command>
- <command queues="graphics" renderpass="outside" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdBlitImage</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>VkImage</type> <name>srcImage</name></param>
- <param><type>VkImageLayout</type> <name>srcImageLayout</name></param>
- <param><type>VkImage</type> <name>dstImage</name></param>
- <param><type>VkImageLayout</type> <name>dstImageLayout</name></param>
- <param><type>uint32_t</type> <name>regionCount</name></param>
- <param len="regionCount">const <type>VkImageBlit</type>* <name>pRegions</name></param>
- <param><type>VkFilter</type> <name>filter</name></param>
- </command>
- <command queues="transfer,graphics,compute" renderpass="outside" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdCopyBufferToImage</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>VkBuffer</type> <name>srcBuffer</name></param>
- <param><type>VkImage</type> <name>dstImage</name></param>
- <param><type>VkImageLayout</type> <name>dstImageLayout</name></param>
- <param><type>uint32_t</type> <name>regionCount</name></param>
- <param len="regionCount">const <type>VkBufferImageCopy</type>* <name>pRegions</name></param>
- </command>
- <command queues="transfer,graphics,compute" renderpass="outside" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdCopyImageToBuffer</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>VkImage</type> <name>srcImage</name></param>
- <param><type>VkImageLayout</type> <name>srcImageLayout</name></param>
- <param><type>VkBuffer</type> <name>dstBuffer</name></param>
- <param><type>uint32_t</type> <name>regionCount</name></param>
- <param len="regionCount">const <type>VkBufferImageCopy</type>* <name>pRegions</name></param>
- </command>
- <command queues="transfer,graphics,compute" renderpass="outside" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdUpdateBuffer</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>VkBuffer</type> <name>dstBuffer</name></param>
- <param><type>VkDeviceSize</type> <name>dstOffset</name></param>
- <param><type>VkDeviceSize</type> <name>dataSize</name></param>
- <param len="dataSize">const <type>void</type>* <name>pData</name></param>
- </command>
- <command queues="transfer,graphics,compute" renderpass="outside" cmdbufferlevel="primary,secondary" comment="transfer support is only available when VK_KHR_maintenance1 is enabled, as documented in valid usage language in the specification">
- <proto><type>void</type> <name>vkCmdFillBuffer</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>VkBuffer</type> <name>dstBuffer</name></param>
- <param><type>VkDeviceSize</type> <name>dstOffset</name></param>
- <param><type>VkDeviceSize</type> <name>size</name></param>
- <param><type>uint32_t</type> <name>data</name></param>
- </command>
- <command queues="graphics,compute" renderpass="outside" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdClearColorImage</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>VkImage</type> <name>image</name></param>
- <param><type>VkImageLayout</type> <name>imageLayout</name></param>
- <param>const <type>VkClearColorValue</type>* <name>pColor</name></param>
- <param><type>uint32_t</type> <name>rangeCount</name></param>
- <param len="rangeCount">const <type>VkImageSubresourceRange</type>* <name>pRanges</name></param>
- </command>
- <command queues="graphics" renderpass="outside" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdClearDepthStencilImage</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>VkImage</type> <name>image</name></param>
- <param><type>VkImageLayout</type> <name>imageLayout</name></param>
- <param>const <type>VkClearDepthStencilValue</type>* <name>pDepthStencil</name></param>
- <param><type>uint32_t</type> <name>rangeCount</name></param>
- <param len="rangeCount">const <type>VkImageSubresourceRange</type>* <name>pRanges</name></param>
- </command>
- <command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdClearAttachments</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>uint32_t</type> <name>attachmentCount</name></param>
- <param len="attachmentCount">const <type>VkClearAttachment</type>* <name>pAttachments</name></param>
- <param><type>uint32_t</type> <name>rectCount</name></param>
- <param len="rectCount">const <type>VkClearRect</type>* <name>pRects</name></param>
- </command>
- <command queues="graphics" renderpass="outside" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdResolveImage</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>VkImage</type> <name>srcImage</name></param>
- <param><type>VkImageLayout</type> <name>srcImageLayout</name></param>
- <param><type>VkImage</type> <name>dstImage</name></param>
- <param><type>VkImageLayout</type> <name>dstImageLayout</name></param>
- <param><type>uint32_t</type> <name>regionCount</name></param>
- <param len="regionCount">const <type>VkImageResolve</type>* <name>pRegions</name></param>
- </command>
- <command queues="graphics,compute" renderpass="outside" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdSetEvent</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>VkEvent</type> <name>event</name></param>
- <param optional="true"><type>VkPipelineStageFlags</type> <name>stageMask</name></param>
- </command>
- <command queues="graphics,compute" renderpass="outside" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdResetEvent</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>VkEvent</type> <name>event</name></param>
- <param optional="true"><type>VkPipelineStageFlags</type> <name>stageMask</name></param>
- </command>
- <command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdWaitEvents</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>uint32_t</type> <name>eventCount</name></param>
- <param len="eventCount">const <type>VkEvent</type>* <name>pEvents</name></param>
- <param optional="true"><type>VkPipelineStageFlags</type> <name>srcStageMask</name></param>
- <param optional="true"><type>VkPipelineStageFlags</type> <name>dstStageMask</name></param>
- <param optional="true"><type>uint32_t</type> <name>memoryBarrierCount</name></param>
- <param len="memoryBarrierCount">const <type>VkMemoryBarrier</type>* <name>pMemoryBarriers</name></param>
- <param optional="true"><type>uint32_t</type> <name>bufferMemoryBarrierCount</name></param>
- <param len="bufferMemoryBarrierCount">const <type>VkBufferMemoryBarrier</type>* <name>pBufferMemoryBarriers</name></param>
- <param optional="true"><type>uint32_t</type> <name>imageMemoryBarrierCount</name></param>
- <param len="imageMemoryBarrierCount">const <type>VkImageMemoryBarrier</type>* <name>pImageMemoryBarriers</name></param>
- </command>
- <command queues="transfer,graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdPipelineBarrier</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param optional="true"><type>VkPipelineStageFlags</type> <name>srcStageMask</name></param>
- <param optional="true"><type>VkPipelineStageFlags</type> <name>dstStageMask</name></param>
- <param optional="true"><type>VkDependencyFlags</type> <name>dependencyFlags</name></param>
- <param optional="true"><type>uint32_t</type> <name>memoryBarrierCount</name></param>
- <param len="memoryBarrierCount">const <type>VkMemoryBarrier</type>* <name>pMemoryBarriers</name></param>
- <param optional="true"><type>uint32_t</type> <name>bufferMemoryBarrierCount</name></param>
- <param len="bufferMemoryBarrierCount">const <type>VkBufferMemoryBarrier</type>* <name>pBufferMemoryBarriers</name></param>
- <param optional="true"><type>uint32_t</type> <name>imageMemoryBarrierCount</name></param>
- <param len="imageMemoryBarrierCount">const <type>VkImageMemoryBarrier</type>* <name>pImageMemoryBarriers</name></param>
- </command>
- <command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdBeginQuery</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>VkQueryPool</type> <name>queryPool</name></param>
- <param><type>uint32_t</type> <name>query</name></param>
- <param optional="true"><type>VkQueryControlFlags</type> <name>flags</name></param>
- </command>
- <command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdEndQuery</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>VkQueryPool</type> <name>queryPool</name></param>
- <param><type>uint32_t</type> <name>query</name></param>
- </command>
- <command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdBeginConditionalRenderingEXT</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param>const <type>VkConditionalRenderingBeginInfoEXT</type>* <name>pConditionalRenderingBegin</name></param>
- </command>
- <command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdEndConditionalRenderingEXT</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- </command>
- <command queues="graphics,compute" renderpass="outside" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdResetQueryPool</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>VkQueryPool</type> <name>queryPool</name></param>
- <param><type>uint32_t</type> <name>firstQuery</name></param>
- <param><type>uint32_t</type> <name>queryCount</name></param>
- </command>
- <command queues="transfer,graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdWriteTimestamp</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>VkPipelineStageFlagBits</type> <name>pipelineStage</name></param>
- <param><type>VkQueryPool</type> <name>queryPool</name></param>
- <param><type>uint32_t</type> <name>query</name></param>
- </command>
- <command queues="graphics,compute" renderpass="outside" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdCopyQueryPoolResults</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>VkQueryPool</type> <name>queryPool</name></param>
- <param><type>uint32_t</type> <name>firstQuery</name></param>
- <param><type>uint32_t</type> <name>queryCount</name></param>
- <param><type>VkBuffer</type> <name>dstBuffer</name></param>
- <param><type>VkDeviceSize</type> <name>dstOffset</name></param>
- <param><type>VkDeviceSize</type> <name>stride</name></param>
- <param optional="true"><type>VkQueryResultFlags</type> <name>flags</name></param>
- </command>
- <command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdPushConstants</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>VkPipelineLayout</type> <name>layout</name></param>
- <param><type>VkShaderStageFlags</type> <name>stageFlags</name></param>
- <param><type>uint32_t</type> <name>offset</name></param>
- <param><type>uint32_t</type> <name>size</name></param>
- <param len="size">const <type>void</type>* <name>pValues</name></param>
- </command>
- <command queues="graphics" renderpass="outside" cmdbufferlevel="primary">
- <proto><type>void</type> <name>vkCmdBeginRenderPass</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param>const <type>VkRenderPassBeginInfo</type>* <name>pRenderPassBegin</name></param>
- <param><type>VkSubpassContents</type> <name>contents</name></param>
- </command>
- <command queues="graphics" renderpass="inside" cmdbufferlevel="primary">
- <proto><type>void</type> <name>vkCmdNextSubpass</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>VkSubpassContents</type> <name>contents</name></param>
- </command>
- <command queues="graphics" renderpass="inside" cmdbufferlevel="primary">
- <proto><type>void</type> <name>vkCmdEndRenderPass</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- </command>
- <command queues="transfer,graphics,compute" renderpass="both" cmdbufferlevel="primary">
- <proto><type>void</type> <name>vkCmdExecuteCommands</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>uint32_t</type> <name>commandBufferCount</name></param>
- <param len="commandBufferCount">const <type>VkCommandBuffer</type>* <name>pCommandBuffers</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_NATIVE_WINDOW_IN_USE_KHR">
- <proto><type>VkResult</type> <name>vkCreateAndroidSurfaceKHR</name></proto>
- <param><type>VkInstance</type> <name>instance</name></param>
- <param>const <type>VkAndroidSurfaceCreateInfoKHR</type>* <name>pCreateInfo</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <param><type>VkSurfaceKHR</type>* <name>pSurface</name></param>
- </command>
- <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkGetPhysicalDeviceDisplayPropertiesKHR</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param optional="false,true"><type>uint32_t</type>* <name>pPropertyCount</name></param>
- <param optional="true" len="pPropertyCount"><type>VkDisplayPropertiesKHR</type>* <name>pProperties</name></param>
- </command>
- <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkGetPhysicalDeviceDisplayPlanePropertiesKHR</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param optional="false,true"><type>uint32_t</type>* <name>pPropertyCount</name></param>
- <param optional="true" len="pPropertyCount"><type>VkDisplayPlanePropertiesKHR</type>* <name>pProperties</name></param>
- </command>
- <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkGetDisplayPlaneSupportedDisplaysKHR</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param><type>uint32_t</type> <name>planeIndex</name></param>
- <param optional="false,true"><type>uint32_t</type>* <name>pDisplayCount</name></param>
- <param optional="true" len="pDisplayCount"><type>VkDisplayKHR</type>* <name>pDisplays</name></param>
- </command>
- <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkGetDisplayModePropertiesKHR</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param><type>VkDisplayKHR</type> <name>display</name></param>
- <param optional="false,true"><type>uint32_t</type>* <name>pPropertyCount</name></param>
- <param optional="true" len="pPropertyCount"><type>VkDisplayModePropertiesKHR</type>* <name>pProperties</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_INITIALIZATION_FAILED">
- <proto><type>VkResult</type> <name>vkCreateDisplayModeKHR</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param externsync="true"><type>VkDisplayKHR</type> <name>display</name></param>
- <param>const <type>VkDisplayModeCreateInfoKHR</type>* <name>pCreateInfo</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <param><type>VkDisplayModeKHR</type>* <name>pMode</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkGetDisplayPlaneCapabilitiesKHR</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param externsync="true"><type>VkDisplayModeKHR</type> <name>mode</name></param>
- <param><type>uint32_t</type> <name>planeIndex</name></param>
- <param><type>VkDisplayPlaneCapabilitiesKHR</type>* <name>pCapabilities</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkCreateDisplayPlaneSurfaceKHR</name></proto>
- <param><type>VkInstance</type> <name>instance</name></param>
- <param>const <type>VkDisplaySurfaceCreateInfoKHR</type>* <name>pCreateInfo</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <param><type>VkSurfaceKHR</type>* <name>pSurface</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_INCOMPATIBLE_DISPLAY_KHR,VK_ERROR_DEVICE_LOST,VK_ERROR_SURFACE_LOST_KHR">
- <proto><type>VkResult</type> <name>vkCreateSharedSwapchainsKHR</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>uint32_t</type> <name>swapchainCount</name></param>
- <param len="swapchainCount" externsync="pCreateInfos[].surface,pCreateInfos[].oldSwapchain">const <type>VkSwapchainCreateInfoKHR</type>* <name>pCreateInfos</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <param len="swapchainCount"><type>VkSwapchainKHR</type>* <name>pSwapchains</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkDestroySurfaceKHR</name></proto>
- <param><type>VkInstance</type> <name>instance</name></param>
- <param optional="true" externsync="true"><type>VkSurfaceKHR</type> <name>surface</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_SURFACE_LOST_KHR">
- <proto><type>VkResult</type> <name>vkGetPhysicalDeviceSurfaceSupportKHR</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param><type>uint32_t</type> <name>queueFamilyIndex</name></param>
- <param><type>VkSurfaceKHR</type> <name>surface</name></param>
- <param><type>VkBool32</type>* <name>pSupported</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_SURFACE_LOST_KHR">
- <proto><type>VkResult</type> <name>vkGetPhysicalDeviceSurfaceCapabilitiesKHR</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param><type>VkSurfaceKHR</type> <name>surface</name></param>
- <param><type>VkSurfaceCapabilitiesKHR</type>* <name>pSurfaceCapabilities</name></param>
- </command>
- <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_SURFACE_LOST_KHR">
- <proto><type>VkResult</type> <name>vkGetPhysicalDeviceSurfaceFormatsKHR</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param><type>VkSurfaceKHR</type> <name>surface</name></param>
- <param optional="false,true"><type>uint32_t</type>* <name>pSurfaceFormatCount</name></param>
- <param optional="true" len="pSurfaceFormatCount"><type>VkSurfaceFormatKHR</type>* <name>pSurfaceFormats</name></param>
- </command>
- <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_SURFACE_LOST_KHR">
- <proto><type>VkResult</type> <name>vkGetPhysicalDeviceSurfacePresentModesKHR</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param><type>VkSurfaceKHR</type> <name>surface</name></param>
- <param optional="false,true"><type>uint32_t</type>* <name>pPresentModeCount</name></param>
- <param optional="true" len="pPresentModeCount"><type>VkPresentModeKHR</type>* <name>pPresentModes</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_DEVICE_LOST,VK_ERROR_SURFACE_LOST_KHR,VK_ERROR_NATIVE_WINDOW_IN_USE_KHR,VK_ERROR_INITIALIZATION_FAILED">
- <proto><type>VkResult</type> <name>vkCreateSwapchainKHR</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param externsync="pCreateInfo-&gt;surface,pCreateInfo-&gt;oldSwapchain">const <type>VkSwapchainCreateInfoKHR</type>* <name>pCreateInfo</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <param><type>VkSwapchainKHR</type>* <name>pSwapchain</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkDestroySwapchainKHR</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param optional="true" externsync="true"><type>VkSwapchainKHR</type> <name>swapchain</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- </command>
- <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkGetSwapchainImagesKHR</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>VkSwapchainKHR</type> <name>swapchain</name></param>
- <param optional="false,true"><type>uint32_t</type>* <name>pSwapchainImageCount</name></param>
- <param optional="true" len="pSwapchainImageCount"><type>VkImage</type>* <name>pSwapchainImages</name></param>
- </command>
- <command successcodes="VK_SUCCESS,VK_TIMEOUT,VK_NOT_READY,VK_SUBOPTIMAL_KHR" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_DEVICE_LOST,VK_ERROR_OUT_OF_DATE_KHR,VK_ERROR_SURFACE_LOST_KHR,VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT">
- <proto><type>VkResult</type> <name>vkAcquireNextImageKHR</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param externsync="true"><type>VkSwapchainKHR</type> <name>swapchain</name></param>
- <param><type>uint64_t</type> <name>timeout</name></param>
- <param optional="true" externsync="true"><type>VkSemaphore</type> <name>semaphore</name></param>
- <param optional="true" externsync="true"><type>VkFence</type> <name>fence</name></param>
- <param><type>uint32_t</type>* <name>pImageIndex</name></param>
- </command>
- <command successcodes="VK_SUCCESS,VK_SUBOPTIMAL_KHR" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_DEVICE_LOST,VK_ERROR_OUT_OF_DATE_KHR,VK_ERROR_SURFACE_LOST_KHR,VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT">
- <proto><type>VkResult</type> <name>vkQueuePresentKHR</name></proto>
- <param externsync="true"><type>VkQueue</type> <name>queue</name></param>
- <param externsync="pPresentInfo-&gt;pWaitSemaphores[],pPresentInfo-&gt;pSwapchains[]">const <type>VkPresentInfoKHR</type>* <name>pPresentInfo</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_NATIVE_WINDOW_IN_USE_KHR">
- <proto><type>VkResult</type> <name>vkCreateViSurfaceNN</name></proto>
- <param><type>VkInstance</type> <name>instance</name></param>
- <param>const <type>VkViSurfaceCreateInfoNN</type>* <name>pCreateInfo</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <param><type>VkSurfaceKHR</type>* <name>pSurface</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkCreateWaylandSurfaceKHR</name></proto>
- <param><type>VkInstance</type> <name>instance</name></param>
- <param>const <type>VkWaylandSurfaceCreateInfoKHR</type>* <name>pCreateInfo</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <param><type>VkSurfaceKHR</type>* <name>pSurface</name></param>
- </command>
- <command>
- <proto><type>VkBool32</type> <name>vkGetPhysicalDeviceWaylandPresentationSupportKHR</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param><type>uint32_t</type> <name>queueFamilyIndex</name></param>
- <param>struct <type>wl_display</type>* <name>display</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkCreateWin32SurfaceKHR</name></proto>
- <param><type>VkInstance</type> <name>instance</name></param>
- <param>const <type>VkWin32SurfaceCreateInfoKHR</type>* <name>pCreateInfo</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <param><type>VkSurfaceKHR</type>* <name>pSurface</name></param>
- </command>
- <command>
- <proto><type>VkBool32</type> <name>vkGetPhysicalDeviceWin32PresentationSupportKHR</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param><type>uint32_t</type> <name>queueFamilyIndex</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkCreateXlibSurfaceKHR</name></proto>
- <param><type>VkInstance</type> <name>instance</name></param>
- <param>const <type>VkXlibSurfaceCreateInfoKHR</type>* <name>pCreateInfo</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <param><type>VkSurfaceKHR</type>* <name>pSurface</name></param>
- </command>
- <command>
- <proto><type>VkBool32</type> <name>vkGetPhysicalDeviceXlibPresentationSupportKHR</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param><type>uint32_t</type> <name>queueFamilyIndex</name></param>
- <param><type>Display</type>* <name>dpy</name></param>
- <param><type>VisualID</type> <name>visualID</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkCreateXcbSurfaceKHR</name></proto>
- <param><type>VkInstance</type> <name>instance</name></param>
- <param>const <type>VkXcbSurfaceCreateInfoKHR</type>* <name>pCreateInfo</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <param><type>VkSurfaceKHR</type>* <name>pSurface</name></param>
- </command>
- <command>
- <proto><type>VkBool32</type> <name>vkGetPhysicalDeviceXcbPresentationSupportKHR</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param><type>uint32_t</type> <name>queueFamilyIndex</name></param>
- <param><type>xcb_connection_t</type>* <name>connection</name></param>
- <param><type>xcb_visualid_t</type> <name>visual_id</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkCreateDirectFBSurfaceEXT</name></proto>
- <param><type>VkInstance</type> <name>instance</name></param>
- <param>const <type>VkDirectFBSurfaceCreateInfoEXT</type>* <name>pCreateInfo</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <param><type>VkSurfaceKHR</type>* <name>pSurface</name></param>
- </command>
- <command>
- <proto><type>VkBool32</type> <name>vkGetPhysicalDeviceDirectFBPresentationSupportEXT</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param><type>uint32_t</type> <name>queueFamilyIndex</name></param>
- <param><type>IDirectFB</type>* <name>dfb</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkCreateImagePipeSurfaceFUCHSIA</name></proto>
- <param><type>VkInstance</type> <name>instance</name></param>
- <param>const <type>VkImagePipeSurfaceCreateInfoFUCHSIA</type>* <name>pCreateInfo</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <param><type>VkSurfaceKHR</type>* <name>pSurface</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_NATIVE_WINDOW_IN_USE_KHR">
- <proto><type>VkResult</type> <name>vkCreateStreamDescriptorSurfaceGGP</name></proto>
- <param><type>VkInstance</type> <name>instance</name></param>
- <param>const <type>VkStreamDescriptorSurfaceCreateInfoGGP</type>* <name>pCreateInfo</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <param><type>VkSurfaceKHR</type>* <name>pSurface</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkCreateScreenSurfaceQNX</name></proto>
- <param><type>VkInstance</type> <name>instance</name></param>
- <param>const <type>VkScreenSurfaceCreateInfoQNX</type>* <name>pCreateInfo</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <param><type>VkSurfaceKHR</type>* <name>pSurface</name></param>
- </command>
- <command>
- <proto><type>VkBool32</type> <name>vkGetPhysicalDeviceScreenPresentationSupportQNX</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param><type>uint32_t</type> <name>queueFamilyIndex</name></param>
- <param>struct <type>_screen_window</type>* <name>window</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY">
- <proto><type>VkResult</type> <name>vkCreateDebugReportCallbackEXT</name></proto>
- <param><type>VkInstance</type> <name>instance</name></param>
- <param>const <type>VkDebugReportCallbackCreateInfoEXT</type>* <name>pCreateInfo</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <param><type>VkDebugReportCallbackEXT</type>* <name>pCallback</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkDestroyDebugReportCallbackEXT</name></proto>
- <param><type>VkInstance</type> <name>instance</name></param>
- <param optional="true" externsync="true"><type>VkDebugReportCallbackEXT</type> <name>callback</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkDebugReportMessageEXT</name></proto>
- <param><type>VkInstance</type> <name>instance</name></param>
- <param><type>VkDebugReportFlagsEXT</type> <name>flags</name></param>
- <param><type>VkDebugReportObjectTypeEXT</type> <name>objectType</name></param>
- <param objecttype="objectType"><type>uint64_t</type> <name>object</name></param>
- <param><type>size_t</type> <name>location</name></param>
- <param><type>int32_t</type> <name>messageCode</name></param>
- <param len="null-terminated">const <type>char</type>* <name>pLayerPrefix</name></param>
- <param len="null-terminated">const <type>char</type>* <name>pMessage</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkDebugMarkerSetObjectNameEXT</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param externsync="pNameInfo-&gt;object">const <type>VkDebugMarkerObjectNameInfoEXT</type>* <name>pNameInfo</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkDebugMarkerSetObjectTagEXT</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param externsync="pTagInfo-&gt;object">const <type>VkDebugMarkerObjectTagInfoEXT</type>* <name>pTagInfo</name></param>
- </command>
- <command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdDebugMarkerBeginEXT</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param>const <type>VkDebugMarkerMarkerInfoEXT</type>* <name>pMarkerInfo</name></param>
- </command>
- <command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdDebugMarkerEndEXT</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- </command>
- <command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdDebugMarkerInsertEXT</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param>const <type>VkDebugMarkerMarkerInfoEXT</type>* <name>pMarkerInfo</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_FORMAT_NOT_SUPPORTED">
- <proto><type>VkResult</type> <name>vkGetPhysicalDeviceExternalImageFormatPropertiesNV</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param><type>VkFormat</type> <name>format</name></param>
- <param><type>VkImageType</type> <name>type</name></param>
- <param><type>VkImageTiling</type> <name>tiling</name></param>
- <param><type>VkImageUsageFlags</type> <name>usage</name></param>
- <param optional="true"><type>VkImageCreateFlags</type> <name>flags</name></param>
- <param optional="true"><type>VkExternalMemoryHandleTypeFlagsNV</type> <name>externalHandleType</name></param>
- <param><type>VkExternalImageFormatPropertiesNV</type>* <name>pExternalImageFormatProperties</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_TOO_MANY_OBJECTS,VK_ERROR_OUT_OF_HOST_MEMORY">
- <proto><type>VkResult</type> <name>vkGetMemoryWin32HandleNV</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param devicememoryhandle="1"><type>VkDeviceMemory</type> <name>memory</name></param>
- <param><type>VkExternalMemoryHandleTypeFlagsNV</type> <name>handleType</name></param>
- <param><type>HANDLE</type>* <name>pHandle</name></param>
- </command>
- <command queues="graphics,compute" renderpass="inside" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdExecuteGeneratedCommandsNV</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>VkBool32</type> <name>isPreprocessed</name></param>
- <param>const <type>VkGeneratedCommandsInfoNV</type>* <name>pGeneratedCommandsInfo</name></param>
- </command>
- <command queues="graphics,compute" renderpass="outside" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdPreprocessGeneratedCommandsNV</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param>const <type>VkGeneratedCommandsInfoNV</type>* <name>pGeneratedCommandsInfo</name></param>
- </command>
- <command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdBindPipelineShaderGroupNV</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>VkPipelineBindPoint</type> <name>pipelineBindPoint</name></param>
- <param><type>VkPipeline</type> <name>pipeline</name></param>
- <param><type>uint32_t</type> <name>groupIndex</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkGetGeneratedCommandsMemoryRequirementsNV</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkGeneratedCommandsMemoryRequirementsInfoNV</type>* <name>pInfo</name></param>
- <param><type>VkMemoryRequirements2</type>* <name>pMemoryRequirements</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkCreateIndirectCommandsLayoutNV</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkIndirectCommandsLayoutCreateInfoNV</type>* <name>pCreateInfo</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <param><type>VkIndirectCommandsLayoutNV</type>* <name>pIndirectCommandsLayout</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkDestroyIndirectCommandsLayoutNV</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param optional="true" externsync="true"><type>VkIndirectCommandsLayoutNV</type> <name>indirectCommandsLayout</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkGetPhysicalDeviceFeatures2</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param><type>VkPhysicalDeviceFeatures2</type>* <name>pFeatures</name></param>
- </command>
- <command name="vkGetPhysicalDeviceFeatures2KHR" alias="vkGetPhysicalDeviceFeatures2"/>
- <command>
- <proto><type>void</type> <name>vkGetPhysicalDeviceProperties2</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param><type>VkPhysicalDeviceProperties2</type>* <name>pProperties</name></param>
- </command>
- <command name="vkGetPhysicalDeviceProperties2KHR" alias="vkGetPhysicalDeviceProperties2"/>
- <command>
- <proto><type>void</type> <name>vkGetPhysicalDeviceFormatProperties2</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param><type>VkFormat</type> <name>format</name></param>
- <param><type>VkFormatProperties2</type>* <name>pFormatProperties</name></param>
- </command>
- <command name="vkGetPhysicalDeviceFormatProperties2KHR" alias="vkGetPhysicalDeviceFormatProperties2"/>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_FORMAT_NOT_SUPPORTED">
- <proto><type>VkResult</type> <name>vkGetPhysicalDeviceImageFormatProperties2</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param>const <type>VkPhysicalDeviceImageFormatInfo2</type>* <name>pImageFormatInfo</name></param>
- <param><type>VkImageFormatProperties2</type>* <name>pImageFormatProperties</name></param>
- </command>
- <command name="vkGetPhysicalDeviceImageFormatProperties2KHR" alias="vkGetPhysicalDeviceImageFormatProperties2"/>
- <command>
- <proto><type>void</type> <name>vkGetPhysicalDeviceQueueFamilyProperties2</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param optional="false,true"><type>uint32_t</type>* <name>pQueueFamilyPropertyCount</name></param>
- <param optional="true" len="pQueueFamilyPropertyCount"><type>VkQueueFamilyProperties2</type>* <name>pQueueFamilyProperties</name></param>
- </command>
- <command name="vkGetPhysicalDeviceQueueFamilyProperties2KHR" alias="vkGetPhysicalDeviceQueueFamilyProperties2"/>
- <command>
- <proto><type>void</type> <name>vkGetPhysicalDeviceMemoryProperties2</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param><type>VkPhysicalDeviceMemoryProperties2</type>* <name>pMemoryProperties</name></param>
- </command>
- <command name="vkGetPhysicalDeviceMemoryProperties2KHR" alias="vkGetPhysicalDeviceMemoryProperties2"/>
- <command>
- <proto><type>void</type> <name>vkGetPhysicalDeviceSparseImageFormatProperties2</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param>const <type>VkPhysicalDeviceSparseImageFormatInfo2</type>* <name>pFormatInfo</name></param>
- <param optional="false,true"><type>uint32_t</type>* <name>pPropertyCount</name></param>
- <param optional="true" len="pPropertyCount"><type>VkSparseImageFormatProperties2</type>* <name>pProperties</name></param>
- </command>
- <command name="vkGetPhysicalDeviceSparseImageFormatProperties2KHR" alias="vkGetPhysicalDeviceSparseImageFormatProperties2"/>
- <command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdPushDescriptorSetKHR</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>VkPipelineBindPoint</type> <name>pipelineBindPoint</name></param>
- <param><type>VkPipelineLayout</type> <name>layout</name></param>
- <param><type>uint32_t</type> <name>set</name></param>
- <param><type>uint32_t</type> <name>descriptorWriteCount</name></param>
- <param len="descriptorWriteCount">const <type>VkWriteDescriptorSet</type>* <name>pDescriptorWrites</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkTrimCommandPool</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param externsync="true"><type>VkCommandPool</type> <name>commandPool</name></param>
- <param optional="true"><type>VkCommandPoolTrimFlags</type> <name>flags</name></param>
- </command>
- <command name="vkTrimCommandPoolKHR" alias="vkTrimCommandPool"/>
- <command>
- <proto><type>void</type> <name>vkGetPhysicalDeviceExternalBufferProperties</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param>const <type>VkPhysicalDeviceExternalBufferInfo</type>* <name>pExternalBufferInfo</name></param>
- <param><type>VkExternalBufferProperties</type>* <name>pExternalBufferProperties</name></param>
- </command>
- <command name="vkGetPhysicalDeviceExternalBufferPropertiesKHR" alias="vkGetPhysicalDeviceExternalBufferProperties"/>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_TOO_MANY_OBJECTS,VK_ERROR_OUT_OF_HOST_MEMORY">
- <proto><type>VkResult</type> <name>vkGetMemoryWin32HandleKHR</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkMemoryGetWin32HandleInfoKHR</type>* <name>pGetWin32HandleInfo</name></param>
- <param><type>HANDLE</type>* <name>pHandle</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_INVALID_EXTERNAL_HANDLE">
- <proto><type>VkResult</type> <name>vkGetMemoryWin32HandlePropertiesKHR</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>VkExternalMemoryHandleTypeFlagBits</type> <name>handleType</name></param>
- <param><type>HANDLE</type> <name>handle</name></param>
- <param><type>VkMemoryWin32HandlePropertiesKHR</type>* <name>pMemoryWin32HandleProperties</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_TOO_MANY_OBJECTS,VK_ERROR_OUT_OF_HOST_MEMORY">
- <proto><type>VkResult</type> <name>vkGetMemoryFdKHR</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkMemoryGetFdInfoKHR</type>* <name>pGetFdInfo</name></param>
- <param><type>int</type>* <name>pFd</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_INVALID_EXTERNAL_HANDLE">
- <proto><type>VkResult</type> <name>vkGetMemoryFdPropertiesKHR</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>VkExternalMemoryHandleTypeFlagBits</type> <name>handleType</name></param>
- <param><type>int</type> <name>fd</name></param>
- <param><type>VkMemoryFdPropertiesKHR</type>* <name>pMemoryFdProperties</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_TOO_MANY_OBJECTS,VK_ERROR_OUT_OF_HOST_MEMORY">
- <proto><type>VkResult</type> <name>vkGetMemoryZirconHandleFUCHSIA</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkMemoryGetZirconHandleInfoFUCHSIA</type>* <name>pGetZirconHandleInfo</name></param>
- <param><type>zx_handle_t</type>* <name>pZirconHandle</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_INVALID_EXTERNAL_HANDLE">
- <proto><type>VkResult</type> <name>vkGetMemoryZirconHandlePropertiesFUCHSIA</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>VkExternalMemoryHandleTypeFlagBits</type> <name>handleType</name></param>
- <param><type>zx_handle_t</type> <name>zirconHandle</name></param>
- <param><type>VkMemoryZirconHandlePropertiesFUCHSIA</type>* <name>pMemoryZirconHandleProperties</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_INVALID_EXTERNAL_HANDLE">
- <proto><type>VkResult</type> <name>vkGetMemoryRemoteAddressNV</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkMemoryGetRemoteAddressInfoNV</type>* <name>pMemoryGetRemoteAddressInfo</name></param>
- <param><type>VkRemoteAddressNV</type>* <name>pAddress</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkGetPhysicalDeviceExternalSemaphoreProperties</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param>const <type>VkPhysicalDeviceExternalSemaphoreInfo</type>* <name>pExternalSemaphoreInfo</name></param>
- <param><type>VkExternalSemaphoreProperties</type>* <name>pExternalSemaphoreProperties</name></param>
- </command>
- <command name="vkGetPhysicalDeviceExternalSemaphorePropertiesKHR" alias="vkGetPhysicalDeviceExternalSemaphoreProperties"/>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_TOO_MANY_OBJECTS,VK_ERROR_OUT_OF_HOST_MEMORY">
- <proto><type>VkResult</type> <name>vkGetSemaphoreWin32HandleKHR</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkSemaphoreGetWin32HandleInfoKHR</type>* <name>pGetWin32HandleInfo</name></param>
- <param><type>HANDLE</type>* <name>pHandle</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_INVALID_EXTERNAL_HANDLE">
- <proto><type>VkResult</type> <name>vkImportSemaphoreWin32HandleKHR</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkImportSemaphoreWin32HandleInfoKHR</type>* <name>pImportSemaphoreWin32HandleInfo</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_TOO_MANY_OBJECTS,VK_ERROR_OUT_OF_HOST_MEMORY">
- <proto><type>VkResult</type> <name>vkGetSemaphoreFdKHR</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkSemaphoreGetFdInfoKHR</type>* <name>pGetFdInfo</name></param>
- <param><type>int</type>* <name>pFd</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_INVALID_EXTERNAL_HANDLE">
- <proto><type>VkResult</type> <name>vkImportSemaphoreFdKHR</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkImportSemaphoreFdInfoKHR</type>* <name>pImportSemaphoreFdInfo</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_TOO_MANY_OBJECTS,VK_ERROR_OUT_OF_HOST_MEMORY">
- <proto><type>VkResult</type> <name>vkGetSemaphoreZirconHandleFUCHSIA</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkSemaphoreGetZirconHandleInfoFUCHSIA</type>* <name>pGetZirconHandleInfo</name></param>
- <param><type>zx_handle_t</type>* <name>pZirconHandle</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_INVALID_EXTERNAL_HANDLE">
- <proto><type>VkResult</type> <name>vkImportSemaphoreZirconHandleFUCHSIA</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkImportSemaphoreZirconHandleInfoFUCHSIA</type>* <name>pImportSemaphoreZirconHandleInfo</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkGetPhysicalDeviceExternalFenceProperties</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param>const <type>VkPhysicalDeviceExternalFenceInfo</type>* <name>pExternalFenceInfo</name></param>
- <param><type>VkExternalFenceProperties</type>* <name>pExternalFenceProperties</name></param>
- </command>
- <command name="vkGetPhysicalDeviceExternalFencePropertiesKHR" alias="vkGetPhysicalDeviceExternalFenceProperties"/>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_TOO_MANY_OBJECTS,VK_ERROR_OUT_OF_HOST_MEMORY">
- <proto><type>VkResult</type> <name>vkGetFenceWin32HandleKHR</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkFenceGetWin32HandleInfoKHR</type>* <name>pGetWin32HandleInfo</name></param>
- <param><type>HANDLE</type>* <name>pHandle</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_INVALID_EXTERNAL_HANDLE">
- <proto><type>VkResult</type> <name>vkImportFenceWin32HandleKHR</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkImportFenceWin32HandleInfoKHR</type>* <name>pImportFenceWin32HandleInfo</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_TOO_MANY_OBJECTS,VK_ERROR_OUT_OF_HOST_MEMORY">
- <proto><type>VkResult</type> <name>vkGetFenceFdKHR</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkFenceGetFdInfoKHR</type>* <name>pGetFdInfo</name></param>
- <param><type>int</type>* <name>pFd</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_INVALID_EXTERNAL_HANDLE">
- <proto><type>VkResult</type> <name>vkImportFenceFdKHR</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkImportFenceFdInfoKHR</type>* <name>pImportFenceFdInfo</name></param>
- </command>
- <command successcodes="VK_SUCCESS">
- <proto><type>VkResult</type> <name>vkReleaseDisplayEXT</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param><type>VkDisplayKHR</type> <name>display</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_INITIALIZATION_FAILED">
- <proto><type>VkResult</type> <name>vkAcquireXlibDisplayEXT</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param><type>Display</type>* <name>dpy</name></param>
- <param><type>VkDisplayKHR</type> <name>display</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY">
- <proto><type>VkResult</type> <name>vkGetRandROutputDisplayEXT</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param><type>Display</type>* <name>dpy</name></param>
- <param><type>RROutput</type> <name>rrOutput</name></param>
- <param><type>VkDisplayKHR</type>* <name>pDisplay</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_DEVICE_LOST,VK_ERROR_INITIALIZATION_FAILED">
- <proto><type>VkResult</type> <name>vkAcquireWinrtDisplayNV</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param><type>VkDisplayKHR</type> <name>display</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_DEVICE_LOST,VK_ERROR_INITIALIZATION_FAILED">
- <proto><type>VkResult</type> <name>vkGetWinrtDisplayNV</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param><type>uint32_t</type> <name>deviceRelativeId</name></param>
- <param><type>VkDisplayKHR</type>* <name>pDisplay</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY">
- <proto><type>VkResult</type> <name>vkDisplayPowerControlEXT</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>VkDisplayKHR</type> <name>display</name></param>
- <param>const <type>VkDisplayPowerInfoEXT</type>* <name>pDisplayPowerInfo</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY">
- <proto><type>VkResult</type> <name>vkRegisterDeviceEventEXT</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkDeviceEventInfoEXT</type>* <name>pDeviceEventInfo</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <param><type>VkFence</type>* <name>pFence</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY">
- <proto><type>VkResult</type> <name>vkRegisterDisplayEventEXT</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>VkDisplayKHR</type> <name>display</name></param>
- <param>const <type>VkDisplayEventInfoEXT</type>* <name>pDisplayEventInfo</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <param><type>VkFence</type>* <name>pFence</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_DEVICE_LOST,VK_ERROR_OUT_OF_DATE_KHR">
- <proto><type>VkResult</type> <name>vkGetSwapchainCounterEXT</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>VkSwapchainKHR</type> <name>swapchain</name></param>
- <param><type>VkSurfaceCounterFlagBitsEXT</type> <name>counter</name></param>
- <param><type>uint64_t</type>* <name>pCounterValue</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_SURFACE_LOST_KHR">
- <proto><type>VkResult</type> <name>vkGetPhysicalDeviceSurfaceCapabilities2EXT</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param><type>VkSurfaceKHR</type> <name>surface</name></param>
- <param><type>VkSurfaceCapabilities2EXT</type>* <name>pSurfaceCapabilities</name></param>
- </command>
- <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_INITIALIZATION_FAILED">
- <proto><type>VkResult</type> <name>vkEnumeratePhysicalDeviceGroups</name></proto>
- <param><type>VkInstance</type> <name>instance</name></param>
- <param optional="false,true"><type>uint32_t</type>* <name>pPhysicalDeviceGroupCount</name></param>
- <param optional="true" len="pPhysicalDeviceGroupCount"><type>VkPhysicalDeviceGroupProperties</type>* <name>pPhysicalDeviceGroupProperties</name></param>
- </command>
- <command name="vkEnumeratePhysicalDeviceGroupsKHR" alias="vkEnumeratePhysicalDeviceGroups"/>
- <command>
- <proto><type>void</type> <name>vkGetDeviceGroupPeerMemoryFeatures</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>uint32_t</type> <name>heapIndex</name></param>
- <param><type>uint32_t</type> <name>localDeviceIndex</name></param>
- <param><type>uint32_t</type> <name>remoteDeviceIndex</name></param>
- <param><type>VkPeerMemoryFeatureFlags</type>* <name>pPeerMemoryFeatures</name></param>
- </command>
- <command name="vkGetDeviceGroupPeerMemoryFeaturesKHR" alias="vkGetDeviceGroupPeerMemoryFeatures"/>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR">
- <proto><type>VkResult</type> <name>vkBindBufferMemory2</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>uint32_t</type> <name>bindInfoCount</name></param>
- <param len="bindInfoCount">const <type>VkBindBufferMemoryInfo</type>* <name>pBindInfos</name></param>
- </command>
- <command name="vkBindBufferMemory2KHR" alias="vkBindBufferMemory2"/>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkBindImageMemory2</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>uint32_t</type> <name>bindInfoCount</name></param>
- <param len="bindInfoCount">const <type>VkBindImageMemoryInfo</type>* <name>pBindInfos</name></param>
- </command>
- <command name="vkBindImageMemory2KHR" alias="vkBindImageMemory2"/>
- <command queues="graphics,compute,transfer" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdSetDeviceMask</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>uint32_t</type> <name>deviceMask</name></param>
- </command>
- <command name="vkCmdSetDeviceMaskKHR" alias="vkCmdSetDeviceMask"/>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkGetDeviceGroupPresentCapabilitiesKHR</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>VkDeviceGroupPresentCapabilitiesKHR</type>* <name>pDeviceGroupPresentCapabilities</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_SURFACE_LOST_KHR">
- <proto><type>VkResult</type> <name>vkGetDeviceGroupSurfacePresentModesKHR</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param externsync="true"><type>VkSurfaceKHR</type> <name>surface</name></param>
- <param optional="false,true"><type>VkDeviceGroupPresentModeFlagsKHR</type>* <name>pModes</name></param>
- </command>
- <command successcodes="VK_SUCCESS,VK_TIMEOUT,VK_NOT_READY,VK_SUBOPTIMAL_KHR" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_DEVICE_LOST,VK_ERROR_OUT_OF_DATE_KHR,VK_ERROR_SURFACE_LOST_KHR,VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT">
- <proto><type>VkResult</type> <name>vkAcquireNextImage2KHR</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkAcquireNextImageInfoKHR</type>* <name>pAcquireInfo</name></param>
- <param><type>uint32_t</type>* <name>pImageIndex</name></param>
- </command>
- <command queues="compute" renderpass="outside" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdDispatchBase</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>uint32_t</type> <name>baseGroupX</name></param>
- <param><type>uint32_t</type> <name>baseGroupY</name></param>
- <param><type>uint32_t</type> <name>baseGroupZ</name></param>
- <param><type>uint32_t</type> <name>groupCountX</name></param>
- <param><type>uint32_t</type> <name>groupCountY</name></param>
- <param><type>uint32_t</type> <name>groupCountZ</name></param>
- </command>
- <command name="vkCmdDispatchBaseKHR" alias="vkCmdDispatchBase"/>
- <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkGetPhysicalDevicePresentRectanglesKHR</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param externsync="true"><type>VkSurfaceKHR</type> <name>surface</name></param>
- <param optional="false,true"><type>uint32_t</type>* <name>pRectCount</name></param>
- <param optional="true" len="pRectCount"><type>VkRect2D</type>* <name>pRects</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkCreateDescriptorUpdateTemplate</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkDescriptorUpdateTemplateCreateInfo</type>* <name>pCreateInfo</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <param><type>VkDescriptorUpdateTemplate</type>* <name>pDescriptorUpdateTemplate</name></param>
- </command>
- <command name="vkCreateDescriptorUpdateTemplateKHR" alias="vkCreateDescriptorUpdateTemplate"/>
- <command>
- <proto><type>void</type> <name>vkDestroyDescriptorUpdateTemplate</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param optional="true" externsync="true"><type>VkDescriptorUpdateTemplate</type> <name>descriptorUpdateTemplate</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- </command>
- <command name="vkDestroyDescriptorUpdateTemplateKHR" alias="vkDestroyDescriptorUpdateTemplate"/>
- <command>
- <proto><type>void</type> <name>vkUpdateDescriptorSetWithTemplate</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param externsync="true"><type>VkDescriptorSet</type> <name>descriptorSet</name></param>
- <param><type>VkDescriptorUpdateTemplate</type> <name>descriptorUpdateTemplate</name></param>
- <param noautovalidity="true">const <type>void</type>* <name>pData</name></param>
- </command>
- <command name="vkUpdateDescriptorSetWithTemplateKHR" alias="vkUpdateDescriptorSetWithTemplate"/>
- <command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdPushDescriptorSetWithTemplateKHR</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>VkDescriptorUpdateTemplate</type> <name>descriptorUpdateTemplate</name></param>
- <param><type>VkPipelineLayout</type> <name>layout</name></param>
- <param><type>uint32_t</type> <name>set</name></param>
- <param noautovalidity="true">const <type>void</type>* <name>pData</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkSetHdrMetadataEXT</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>uint32_t</type> <name>swapchainCount</name></param>
- <param len="swapchainCount">const <type>VkSwapchainKHR</type>* <name>pSwapchains</name></param>
- <param len="swapchainCount">const <type>VkHdrMetadataEXT</type>* <name>pMetadata</name></param>
- </command>
- <command successcodes="VK_SUCCESS,VK_SUBOPTIMAL_KHR" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_DEVICE_LOST,VK_ERROR_OUT_OF_DATE_KHR,VK_ERROR_SURFACE_LOST_KHR,VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT">
- <proto><type>VkResult</type> <name>vkGetSwapchainStatusKHR</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param externsync="true"><type>VkSwapchainKHR</type> <name>swapchain</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_DEVICE_LOST,VK_ERROR_SURFACE_LOST_KHR">
- <proto><type>VkResult</type> <name>vkGetRefreshCycleDurationGOOGLE</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param externsync="true"><type>VkSwapchainKHR</type> <name>swapchain</name></param>
- <param><type>VkRefreshCycleDurationGOOGLE</type>* <name>pDisplayTimingProperties</name></param>
- </command>
- <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_DEVICE_LOST,VK_ERROR_OUT_OF_DATE_KHR,VK_ERROR_SURFACE_LOST_KHR">
- <proto><type>VkResult</type> <name>vkGetPastPresentationTimingGOOGLE</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param externsync="true"><type>VkSwapchainKHR</type> <name>swapchain</name></param>
- <param optional="false,true"><type>uint32_t</type>* <name>pPresentationTimingCount</name></param>
- <param optional="true" len="pPresentationTimingCount"><type>VkPastPresentationTimingGOOGLE</type>* <name>pPresentationTimings</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_NATIVE_WINDOW_IN_USE_KHR">
- <proto><type>VkResult</type> <name>vkCreateIOSSurfaceMVK</name></proto>
- <param><type>VkInstance</type> <name>instance</name></param>
- <param>const <type>VkIOSSurfaceCreateInfoMVK</type>* <name>pCreateInfo</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <param><type>VkSurfaceKHR</type>* <name>pSurface</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_NATIVE_WINDOW_IN_USE_KHR">
- <proto><type>VkResult</type> <name>vkCreateMacOSSurfaceMVK</name></proto>
- <param><type>VkInstance</type> <name>instance</name></param>
- <param>const <type>VkMacOSSurfaceCreateInfoMVK</type>* <name>pCreateInfo</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <param><type>VkSurfaceKHR</type>* <name>pSurface</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_NATIVE_WINDOW_IN_USE_KHR">
- <proto><type>VkResult</type> <name>vkCreateMetalSurfaceEXT</name></proto>
- <param><type>VkInstance</type> <name>instance</name></param>
- <param>const <type>VkMetalSurfaceCreateInfoEXT</type>* <name>pCreateInfo</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <param><type>VkSurfaceKHR</type>* <name>pSurface</name></param>
- </command>
- <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdSetViewportWScalingNV</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>uint32_t</type> <name>firstViewport</name></param>
- <param><type>uint32_t</type> <name>viewportCount</name></param>
- <param len="viewportCount">const <type>VkViewportWScalingNV</type>* <name>pViewportWScalings</name></param>
- </command>
- <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdSetDiscardRectangleEXT</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>uint32_t</type> <name>firstDiscardRectangle</name></param>
- <param><type>uint32_t</type> <name>discardRectangleCount</name></param>
- <param len="discardRectangleCount">const <type>VkRect2D</type>* <name>pDiscardRectangles</name></param>
- </command>
- <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdSetSampleLocationsEXT</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param>const <type>VkSampleLocationsInfoEXT</type>* <name>pSampleLocationsInfo</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkGetPhysicalDeviceMultisamplePropertiesEXT</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param><type>VkSampleCountFlagBits</type> <name>samples</name></param>
- <param><type>VkMultisamplePropertiesEXT</type>* <name>pMultisampleProperties</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_SURFACE_LOST_KHR">
- <proto><type>VkResult</type> <name>vkGetPhysicalDeviceSurfaceCapabilities2KHR</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param>const <type>VkPhysicalDeviceSurfaceInfo2KHR</type>* <name>pSurfaceInfo</name></param>
- <param><type>VkSurfaceCapabilities2KHR</type>* <name>pSurfaceCapabilities</name></param>
- </command>
- <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_SURFACE_LOST_KHR">
- <proto><type>VkResult</type> <name>vkGetPhysicalDeviceSurfaceFormats2KHR</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param>const <type>VkPhysicalDeviceSurfaceInfo2KHR</type>* <name>pSurfaceInfo</name></param>
- <param optional="false,true"><type>uint32_t</type>* <name>pSurfaceFormatCount</name></param>
- <param optional="true" len="pSurfaceFormatCount"><type>VkSurfaceFormat2KHR</type>* <name>pSurfaceFormats</name></param>
- </command>
- <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkGetPhysicalDeviceDisplayProperties2KHR</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param optional="false,true"><type>uint32_t</type>* <name>pPropertyCount</name></param>
- <param optional="true" len="pPropertyCount"><type>VkDisplayProperties2KHR</type>* <name>pProperties</name></param>
- </command>
- <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkGetPhysicalDeviceDisplayPlaneProperties2KHR</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param optional="false,true"><type>uint32_t</type>* <name>pPropertyCount</name></param>
- <param optional="true" len="pPropertyCount"><type>VkDisplayPlaneProperties2KHR</type>* <name>pProperties</name></param>
- </command>
- <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkGetDisplayModeProperties2KHR</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param><type>VkDisplayKHR</type> <name>display</name></param>
- <param optional="false,true"><type>uint32_t</type>* <name>pPropertyCount</name></param>
- <param optional="true" len="pPropertyCount"><type>VkDisplayModeProperties2KHR</type>* <name>pProperties</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkGetDisplayPlaneCapabilities2KHR</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param>const <type>VkDisplayPlaneInfo2KHR</type>* <name>pDisplayPlaneInfo</name></param>
- <param><type>VkDisplayPlaneCapabilities2KHR</type>* <name>pCapabilities</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkGetBufferMemoryRequirements2</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkBufferMemoryRequirementsInfo2</type>* <name>pInfo</name></param>
- <param><type>VkMemoryRequirements2</type>* <name>pMemoryRequirements</name></param>
- </command>
- <command name="vkGetBufferMemoryRequirements2KHR" alias="vkGetBufferMemoryRequirements2"/>
- <command>
- <proto><type>void</type> <name>vkGetImageMemoryRequirements2</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkImageMemoryRequirementsInfo2</type>* <name>pInfo</name></param>
- <param><type>VkMemoryRequirements2</type>* <name>pMemoryRequirements</name></param>
- </command>
- <command name="vkGetImageMemoryRequirements2KHR" alias="vkGetImageMemoryRequirements2"/>
- <command>
- <proto><type>void</type> <name>vkGetImageSparseMemoryRequirements2</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkImageSparseMemoryRequirementsInfo2</type>* <name>pInfo</name></param>
- <param optional="false,true"><type>uint32_t</type>* <name>pSparseMemoryRequirementCount</name></param>
- <param optional="true" len="pSparseMemoryRequirementCount"><type>VkSparseImageMemoryRequirements2</type>* <name>pSparseMemoryRequirements</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkGetDeviceBufferMemoryRequirementsKHR</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkDeviceBufferMemoryRequirementsKHR</type>* <name>pInfo</name></param>
- <param><type>VkMemoryRequirements2</type>* <name>pMemoryRequirements</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkGetDeviceImageMemoryRequirementsKHR</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkDeviceImageMemoryRequirementsKHR</type>* <name>pInfo</name></param>
- <param><type>VkMemoryRequirements2</type>* <name>pMemoryRequirements</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkGetDeviceImageSparseMemoryRequirementsKHR</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkDeviceImageMemoryRequirementsKHR</type>* <name>pInfo</name></param>
- <param optional="false,true"><type>uint32_t</type>* <name>pSparseMemoryRequirementCount</name></param>
- <param optional="true" len="pSparseMemoryRequirementCount"><type>VkSparseImageMemoryRequirements2</type>* <name>pSparseMemoryRequirements</name></param>
- </command>
- <command name="vkGetImageSparseMemoryRequirements2KHR" alias="vkGetImageSparseMemoryRequirements2"/>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkCreateSamplerYcbcrConversion</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkSamplerYcbcrConversionCreateInfo</type>* <name>pCreateInfo</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <param><type>VkSamplerYcbcrConversion</type>* <name>pYcbcrConversion</name></param>
- </command>
- <command name="vkCreateSamplerYcbcrConversionKHR" alias="vkCreateSamplerYcbcrConversion"/>
- <command>
- <proto><type>void</type> <name>vkDestroySamplerYcbcrConversion</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param optional="true" externsync="true"><type>VkSamplerYcbcrConversion</type> <name>ycbcrConversion</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- </command>
- <command name="vkDestroySamplerYcbcrConversionKHR" alias="vkDestroySamplerYcbcrConversion"/>
- <command>
- <proto><type>void</type> <name>vkGetDeviceQueue2</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkDeviceQueueInfo2</type>* <name>pQueueInfo</name></param>
- <param><type>VkQueue</type>* <name>pQueue</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY">
- <proto><type>VkResult</type> <name>vkCreateValidationCacheEXT</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkValidationCacheCreateInfoEXT</type>* <name>pCreateInfo</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <param><type>VkValidationCacheEXT</type>* <name>pValidationCache</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkDestroyValidationCacheEXT</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param optional="true" externsync="true"><type>VkValidationCacheEXT</type> <name>validationCache</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- </command>
- <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkGetValidationCacheDataEXT</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>VkValidationCacheEXT</type> <name>validationCache</name></param>
- <param optional="false,true"><type>size_t</type>* <name>pDataSize</name></param>
- <param optional="true" len="pDataSize"><type>void</type>* <name>pData</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkMergeValidationCachesEXT</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param externsync="true"><type>VkValidationCacheEXT</type> <name>dstCache</name></param>
- <param><type>uint32_t</type> <name>srcCacheCount</name></param>
- <param len="srcCacheCount">const <type>VkValidationCacheEXT</type>* <name>pSrcCaches</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkGetDescriptorSetLayoutSupport</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkDescriptorSetLayoutCreateInfo</type>* <name>pCreateInfo</name></param>
- <param><type>VkDescriptorSetLayoutSupport</type>* <name>pSupport</name></param>
- </command>
- <command name="vkGetDescriptorSetLayoutSupportKHR" alias="vkGetDescriptorSetLayoutSupport"/>
- <command>
- <proto><type>VkResult</type> <name>vkGetSwapchainGrallocUsageANDROID</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>VkFormat</type> <name>format</name></param>
- <param><type>VkImageUsageFlags</type> <name>imageUsage</name></param>
- <param><type>int</type>* <name>grallocUsage</name></param>
- </command>
- <command>
- <proto><type>VkResult</type> <name>vkAcquireImageANDROID</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>VkImage</type> <name>image</name></param>
- <param><type>int</type> <name>nativeFenceFd</name></param>
- <param><type>VkSemaphore</type> <name>semaphore</name></param>
- <param><type>VkFence</type> <name>fence</name></param>
- </command>
- <command>
- <proto><type>VkResult</type> <name>vkQueueSignalReleaseImageANDROID</name></proto>
- <param><type>VkQueue</type> <name>queue</name></param>
- <param optional="true"><type>uint32_t</type> <name>waitSemaphoreCount</name></param>
- <param noautovalidity="true" len="waitSemaphoreCount">const <type>VkSemaphore</type>* <name>pWaitSemaphores</name></param>
- <param><type>VkImage</type> <name>image</name></param>
- <param><type>int</type>* <name>pNativeFenceFd</name></param>
- </command>
- <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_FEATURE_NOT_PRESENT,VK_ERROR_OUT_OF_HOST_MEMORY">
- <proto><type>VkResult</type> <name>vkGetShaderInfoAMD</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>VkPipeline</type> <name>pipeline</name></param>
- <param><type>VkShaderStageFlagBits</type> <name>shaderStage</name></param>
- <param><type>VkShaderInfoTypeAMD</type> <name>infoType</name></param>
- <param optional="false,true"><type>size_t</type>* <name>pInfoSize</name></param>
- <param optional="true" len="pInfoSize"><type>void</type>* <name>pInfo</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkSetLocalDimmingAMD</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>VkSwapchainKHR</type> <name>swapChain</name></param>
- <param><type>VkBool32</type> <name>localDimmingEnable</name></param>
- </command>
- <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkGetPhysicalDeviceCalibrateableTimeDomainsEXT</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param optional="false,true"><type>uint32_t</type>* <name>pTimeDomainCount</name></param>
- <param optional="true" len="pTimeDomainCount"><type>VkTimeDomainEXT</type>* <name>pTimeDomains</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkGetCalibratedTimestampsEXT</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>uint32_t</type> <name>timestampCount</name></param>
- <param len="timestampCount">const <type>VkCalibratedTimestampInfoEXT</type>* <name>pTimestampInfos</name></param>
- <param len="timestampCount"><type>uint64_t</type>* <name>pTimestamps</name></param>
- <param><type>uint64_t</type>* <name>pMaxDeviation</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkSetDebugUtilsObjectNameEXT</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param externsync="pNameInfo-&gt;objectHandle">const <type>VkDebugUtilsObjectNameInfoEXT</type>* <name>pNameInfo</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkSetDebugUtilsObjectTagEXT</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param externsync="pTagInfo-&gt;objectHandle">const <type>VkDebugUtilsObjectTagInfoEXT</type>* <name>pTagInfo</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkQueueBeginDebugUtilsLabelEXT</name></proto>
- <param><type>VkQueue</type> <name>queue</name></param>
- <param>const <type>VkDebugUtilsLabelEXT</type>* <name>pLabelInfo</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkQueueEndDebugUtilsLabelEXT</name></proto>
- <param><type>VkQueue</type> <name>queue</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkQueueInsertDebugUtilsLabelEXT</name></proto>
- <param><type>VkQueue</type> <name>queue</name></param>
- <param>const <type>VkDebugUtilsLabelEXT</type>* <name>pLabelInfo</name></param>
- </command>
- <command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdBeginDebugUtilsLabelEXT</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param>const <type>VkDebugUtilsLabelEXT</type>* <name>pLabelInfo</name></param>
- </command>
- <command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdEndDebugUtilsLabelEXT</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- </command>
- <command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdInsertDebugUtilsLabelEXT</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param>const <type>VkDebugUtilsLabelEXT</type>* <name>pLabelInfo</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY">
- <proto><type>VkResult</type> <name>vkCreateDebugUtilsMessengerEXT</name></proto>
- <param><type>VkInstance</type> <name>instance</name></param>
- <param>const <type>VkDebugUtilsMessengerCreateInfoEXT</type>* <name>pCreateInfo</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <param><type>VkDebugUtilsMessengerEXT</type>* <name>pMessenger</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkDestroyDebugUtilsMessengerEXT</name></proto>
- <param><type>VkInstance</type> <name>instance</name></param>
- <param optional="true" externsync="true"><type>VkDebugUtilsMessengerEXT</type> <name>messenger</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkSubmitDebugUtilsMessageEXT</name></proto>
- <param><type>VkInstance</type> <name>instance</name></param>
- <param><type>VkDebugUtilsMessageSeverityFlagBitsEXT</type> <name>messageSeverity</name></param>
- <param><type>VkDebugUtilsMessageTypeFlagsEXT</type> <name>messageTypes</name></param>
- <param>const <type>VkDebugUtilsMessengerCallbackDataEXT</type>* <name>pCallbackData</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_INVALID_EXTERNAL_HANDLE">
- <proto><type>VkResult</type> <name>vkGetMemoryHostPointerPropertiesEXT</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>VkExternalMemoryHandleTypeFlagBits</type> <name>handleType</name></param>
- <param optional="false">const <type>void</type>* <name>pHostPointer</name></param>
- <param><type>VkMemoryHostPointerPropertiesEXT</type>* <name>pMemoryHostPointerProperties</name></param>
- </command>
- <command queues="transfer,graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdWriteBufferMarkerAMD</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>VkPipelineStageFlagBits</type> <name>pipelineStage</name></param>
- <param><type>VkBuffer</type> <name>dstBuffer</name></param>
- <param><type>VkDeviceSize</type> <name>dstOffset</name></param>
- <param><type>uint32_t</type> <name>marker</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkCreateRenderPass2</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkRenderPassCreateInfo2</type>* <name>pCreateInfo</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <param><type>VkRenderPass</type>* <name>pRenderPass</name></param>
- </command>
- <command name="vkCreateRenderPass2KHR" alias="vkCreateRenderPass2"/>
- <command queues="graphics" renderpass="outside" cmdbufferlevel="primary">
- <proto><type>void</type> <name>vkCmdBeginRenderPass2</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param>const <type>VkRenderPassBeginInfo</type>* <name>pRenderPassBegin</name></param>
- <param>const <type>VkSubpassBeginInfo</type>* <name>pSubpassBeginInfo</name></param>
- </command>
- <command name="vkCmdBeginRenderPass2KHR" alias="vkCmdBeginRenderPass2"/>
- <command queues="graphics" renderpass="inside" cmdbufferlevel="primary">
- <proto><type>void</type> <name>vkCmdNextSubpass2</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param>const <type>VkSubpassBeginInfo</type>* <name>pSubpassBeginInfo</name></param>
- <param>const <type>VkSubpassEndInfo</type>* <name>pSubpassEndInfo</name></param>
- </command>
- <command name="vkCmdNextSubpass2KHR" alias="vkCmdNextSubpass2"/>
- <command queues="graphics" renderpass="inside" cmdbufferlevel="primary">
- <proto><type>void</type> <name>vkCmdEndRenderPass2</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param>const <type>VkSubpassEndInfo</type>* <name>pSubpassEndInfo</name></param>
- </command>
- <command name="vkCmdEndRenderPass2KHR" alias="vkCmdEndRenderPass2"/>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_DEVICE_LOST">
- <proto><type>VkResult</type> <name>vkGetSemaphoreCounterValue</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>VkSemaphore</type> <name>semaphore</name></param>
- <param><type>uint64_t</type>* <name>pValue</name></param>
- </command>
- <command name="vkGetSemaphoreCounterValueKHR" alias="vkGetSemaphoreCounterValue"/>
- <command successcodes="VK_SUCCESS,VK_TIMEOUT" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_DEVICE_LOST">
- <proto><type>VkResult</type> <name>vkWaitSemaphores</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkSemaphoreWaitInfo</type>* <name>pWaitInfo</name></param>
- <param><type>uint64_t</type> <name>timeout</name></param>
- </command>
- <command name="vkWaitSemaphoresKHR" alias="vkWaitSemaphores"/>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkSignalSemaphore</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkSemaphoreSignalInfo</type>* <name>pSignalInfo</name></param>
- </command>
- <command name="vkSignalSemaphoreKHR" alias="vkSignalSemaphore"/>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR">
- <proto><type>VkResult</type> <name>vkGetAndroidHardwareBufferPropertiesANDROID</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const struct <type>AHardwareBuffer</type>* <name>buffer</name></param>
- <param><type>VkAndroidHardwareBufferPropertiesANDROID</type>* <name>pProperties</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_TOO_MANY_OBJECTS,VK_ERROR_OUT_OF_HOST_MEMORY">
- <proto><type>VkResult</type> <name>vkGetMemoryAndroidHardwareBufferANDROID</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkMemoryGetAndroidHardwareBufferInfoANDROID</type>* <name>pInfo</name></param>
- <param>struct <type>AHardwareBuffer</type>** <name>pBuffer</name></param>
- </command>
- <command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdDrawIndirectCount</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>VkBuffer</type> <name>buffer</name></param>
- <param><type>VkDeviceSize</type> <name>offset</name></param>
- <param><type>VkBuffer</type> <name>countBuffer</name></param>
- <param><type>VkDeviceSize</type> <name>countBufferOffset</name></param>
- <param><type>uint32_t</type> <name>maxDrawCount</name></param>
- <param><type>uint32_t</type> <name>stride</name></param>
- </command>
- <command name="vkCmdDrawIndirectCountKHR" alias="vkCmdDrawIndirectCount"/>
- <command name="vkCmdDrawIndirectCountAMD" alias="vkCmdDrawIndirectCount"/>
- <command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdDrawIndexedIndirectCount</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>VkBuffer</type> <name>buffer</name></param>
- <param><type>VkDeviceSize</type> <name>offset</name></param>
- <param><type>VkBuffer</type> <name>countBuffer</name></param>
- <param><type>VkDeviceSize</type> <name>countBufferOffset</name></param>
- <param><type>uint32_t</type> <name>maxDrawCount</name></param>
- <param><type>uint32_t</type> <name>stride</name></param>
- </command>
- <command name="vkCmdDrawIndexedIndirectCountKHR" alias="vkCmdDrawIndexedIndirectCount"/>
- <command name="vkCmdDrawIndexedIndirectCountAMD" alias="vkCmdDrawIndexedIndirectCount"/>
- <command queues="graphics,compute,transfer" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdSetCheckpointNV</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param noautovalidity="true">const <type>void</type>* <name>pCheckpointMarker</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkGetQueueCheckpointDataNV</name></proto>
- <param><type>VkQueue</type> <name>queue</name></param>
- <param optional="false,true"><type>uint32_t</type>* <name>pCheckpointDataCount</name></param>
- <param optional="true" len="pCheckpointDataCount"><type>VkCheckpointDataNV</type>* <name>pCheckpointData</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_MEMORY_MAP_FAILED">
- <proto><type>VkResult</type> <name>vkMapMemoryIntoAddressSpaceGOOGLE</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param externsync="true" devicememoryhandle="1"><type>VkDeviceMemory</type> <name>memory</name></param>
- <param optional="false,true"><type>uint64_t</type>* <name>pAddress</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkUpdateDescriptorSetWithTemplateSizedGOOGLE</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param externsync="true"><type>VkDescriptorSet</type> <name>descriptorSet</name></param>
- <param><type>VkDescriptorUpdateTemplate</type> <name>descriptorUpdateTemplate</name></param>
- <param><type>uint32_t</type> <name>imageInfoCount</name></param>
- <param><type>uint32_t</type> <name>bufferInfoCount</name></param>
- <param><type>uint32_t</type> <name>bufferViewCount</name></param>
- <param optional="true" len="imageInfoCount">const <type>uint32_t</type>* <name>pImageInfoEntryIndices</name></param>
- <param optional="true" len="bufferInfoCount">const <type>uint32_t</type>* <name>pBufferInfoEntryIndices</name></param>
- <param optional="true" len="bufferViewCount">const <type>uint32_t</type>* <name>pBufferViewEntryIndices</name></param>
- <param optional="true" len="imageInfoCount">const <type>VkDescriptorImageInfo</type>* <name>pImageInfos</name></param>
- <param optional="true" len="bufferInfoCount">const <type>VkDescriptorBufferInfo</type>* <name>pBufferInfos</name></param>
- <param optional="true" len="bufferViewCount">const <type>VkBufferView</type>* <name>pBufferViews</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkBeginCommandBufferAsyncGOOGLE</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param>const <type>VkCommandBufferBeginInfo</type>* <name>pBeginInfo</name></param>
- <implicitexternsyncparams>
- <param>the sname:VkCommandPool that pname:commandBuffer was allocated from</param>
- </implicitexternsyncparams>
- </command>
- <command>
- <proto><type>void</type> <name>vkEndCommandBufferAsyncGOOGLE</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <implicitexternsyncparams>
- <param>the sname:VkCommandPool that pname:commandBuffer was allocated from</param>
- </implicitexternsyncparams>
- </command>
- <command>
- <proto><type>void</type> <name>vkResetCommandBufferAsyncGOOGLE</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param optional="true"><type>VkCommandBufferResetFlags</type> <name>flags</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkCommandBufferHostSyncGOOGLE</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>uint32_t</type> <name>needHostSync</name></param>
- <param><type>uint32_t</type> <name>sequenceNumber</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkCreateImageWithRequirementsGOOGLE</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkImageCreateInfo</type>* <name>pCreateInfo</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <param><type>VkImage</type>* <name>pImage</name></param>
- <param><type>VkMemoryRequirements</type>* <name>pMemoryRequirements</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkCreateBufferWithRequirementsGOOGLE</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkBufferCreateInfo</type>* <name>pCreateInfo</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <param><type>VkBuffer</type>* <name>pBuffer</name></param>
- <param><type>VkMemoryRequirements</type>* <name>pMemoryRequirements</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY">
- <proto><type>VkResult</type> <name>vkGetMemoryHostAddressInfoGOOGLE</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param externsync="true" devicememoryhandle="1"><type>VkDeviceMemory</type> <name>memory</name></param>
- <param optional="false,true"><type>uint64_t</type>* <name>pAddress</name></param>
- <param optional="false,true"><type>uint64_t</type>* <name>pSize</name></param>
- <param optional="false,true"><type>uint64_t</type>* <name>pHostmemId</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkFreeMemorySyncGOOGLE</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param optional="true" externsync="true" devicememoryhandle="1"><type>VkDeviceMemory</type> <name>memory</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkQueueHostSyncGOOGLE</name></proto>
- <param externsync="true"><type>VkQueue</type> <name>queue</name></param>
- <param><type>uint32_t</type> <name>needHostSync</name></param>
- <param><type>uint32_t</type> <name>sequenceNumber</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkQueueSubmitAsyncGOOGLE</name></proto>
- <param externsync="true"><type>VkQueue</type> <name>queue</name></param>
- <param optional="true"><type>uint32_t</type> <name>submitCount</name></param>
- <param len="submitCount" externsync="pSubmits[].pWaitSemaphores[],pSubmits[].pSignalSemaphores[]">const <type>VkSubmitInfo</type>* <name>pSubmits</name></param>
- <param optional="true" externsync="true"><type>VkFence</type> <name>fence</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkQueueWaitIdleAsyncGOOGLE</name></proto>
- <param><type>VkQueue</type> <name>queue</name></param>
- </command>
- <command queues="sparse_binding">
- <proto><type>void</type> <name>vkQueueBindSparseAsyncGOOGLE</name></proto>
- <param externsync="true"><type>VkQueue</type> <name>queue</name></param>
- <param optional="true"><type>uint32_t</type> <name>bindInfoCount</name></param>
- <param len="bindInfoCount" externsync="pBindInfo[].pWaitSemaphores[],pBindInfo[].pSignalSemaphores[],pBindInfo[].pBufferBinds[].buffer,pBindInfo[].pImageOpaqueBinds[].image,pBindInfo[].pImageBinds[].image">const <type>VkBindSparseInfo</type>* <name>pBindInfo</name></param>
- <param optional="true" externsync="true"><type>VkFence</type> <name>fence</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkGetLinearImageLayoutGOOGLE</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>VkFormat</type> <name>format</name></param>
- <param><type>VkDeviceSize</type>* <name>pOffset</name></param>
- <param><type>VkDeviceSize</type>* <name>pRowPitchAlignment</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkGetLinearImageLayout2GOOGLE</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkImageCreateInfo</type>* <name>pCreateInfo</name></param>
- <param><type>VkDeviceSize</type>* <name>pOffset</name></param>
- <param><type>VkDeviceSize</type>* <name>pRowPitchAlignment</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkQueueFlushCommandsGOOGLE</name></proto>
- <param externsync="true"><type>VkQueue</type> <name>queue</name></param>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>VkDeviceSize</type> <name>dataSize</name></param>
- <param len="dataSize">const <type>void</type>* <name>pData</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY">
- <proto><type>VkResult</type> <name>vkGetBlobGOOGLE</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param externsync="true" devicememoryhandle="1"><type>VkDeviceMemory</type> <name>memory</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkGetMTLDeviceMVK</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param><type>void</type>** <name>pMTLDevice</name></param>
- </command>
- <command successcodes="VK_SUCCESS">
- <proto><type>VkResult</type> <name>vkSetMTLTextureMVK</name></proto>
- <param><type>VkImage</type> <name>image</name></param>
- <param><type>void</type>* <name>mtlTexture</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkGetMTLTextureMVK</name></proto>
- <param><type>VkImage</type> <name>image</name></param>
- <param><type>void</type>** <name>pMTLTexture</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkGetMTLBufferMVK</name></proto>
- <param><type>VkBuffer</type> <name>buffer</name></param>
- <param><type>void</type>** <name>pMTLBuffer</name></param>
- </command>
- <command successcodes="VK_SUCCESS">
- <proto><type>VkResult</type> <name>vkUseIOSurfaceMVK</name></proto>
- <param><type>VkImage</type> <name>image</name></param>
- <param><type>void</type>* <name>ioSurface</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkGetIOSurfaceMVK</name></proto>
- <param><type>VkImage</type> <name>image</name></param>
- <param><type>void</type>** <name>pIOSurface</name></param>
- </command>
- <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdBindTransformFeedbackBuffersEXT</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>uint32_t</type> <name>firstBinding</name></param>
- <param><type>uint32_t</type> <name>bindingCount</name></param>
- <param len="bindingCount">const <type>VkBuffer</type>* <name>pBuffers</name></param>
- <param len="bindingCount">const <type>VkDeviceSize</type>* <name>pOffsets</name></param>
- <param optional="true" len="bindingCount" noautovalidity="true">const <type>VkDeviceSize</type>* <name>pSizes</name></param>
- </command>
- <command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdBeginTransformFeedbackEXT</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>uint32_t</type> <name>firstCounterBuffer</name></param>
- <param optional="true"><type>uint32_t</type> <name>counterBufferCount</name></param>
- <param noautovalidity="true" len="counterBufferCount">const <type>VkBuffer</type>* <name>pCounterBuffers</name></param>
- <param optional="true" len="counterBufferCount">const <type>VkDeviceSize</type>* <name>pCounterBufferOffsets</name></param>
- </command>
- <command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdEndTransformFeedbackEXT</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>uint32_t</type> <name>firstCounterBuffer</name></param>
- <param optional="true"><type>uint32_t</type> <name>counterBufferCount</name></param>
- <param noautovalidity="true" len="counterBufferCount">const <type>VkBuffer</type>* <name>pCounterBuffers</name></param>
- <param optional="true" len="counterBufferCount">const <type>VkDeviceSize</type>* <name>pCounterBufferOffsets</name></param>
- </command>
- <command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdBeginQueryIndexedEXT</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>VkQueryPool</type> <name>queryPool</name></param>
- <param><type>uint32_t</type> <name>query</name></param>
- <param optional="true"><type>VkQueryControlFlags</type> <name>flags</name></param>
- <param><type>uint32_t</type> <name>index</name></param>
- </command>
- <command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdEndQueryIndexedEXT</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>VkQueryPool</type> <name>queryPool</name></param>
- <param><type>uint32_t</type> <name>query</name></param>
- <param><type>uint32_t</type> <name>index</name></param>
- </command>
- <command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdDrawIndirectByteCountEXT</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>uint32_t</type> <name>instanceCount</name></param>
- <param><type>uint32_t</type> <name>firstInstance</name></param>
- <param><type>VkBuffer</type> <name>counterBuffer</name></param>
- <param><type>VkDeviceSize</type> <name>counterBufferOffset</name></param>
- <param><type>uint32_t</type> <name>counterOffset</name></param>
- <param><type>uint32_t</type> <name>vertexStride</name></param>
- </command>
- <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdSetExclusiveScissorNV</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>uint32_t</type> <name>firstExclusiveScissor</name></param>
- <param><type>uint32_t</type> <name>exclusiveScissorCount</name></param>
- <param len="exclusiveScissorCount">const <type>VkRect2D</type>* <name>pExclusiveScissors</name></param>
- </command>
- <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdBindShadingRateImageNV</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param optional="true"><type>VkImageView</type> <name>imageView</name></param>
- <param><type>VkImageLayout</type> <name>imageLayout</name></param>
- </command>
- <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdSetViewportShadingRatePaletteNV</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>uint32_t</type> <name>firstViewport</name></param>
- <param><type>uint32_t</type> <name>viewportCount</name></param>
- <param len="viewportCount">const <type>VkShadingRatePaletteNV</type>* <name>pShadingRatePalettes</name></param>
- </command>
- <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdSetCoarseSampleOrderNV</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>VkCoarseSampleOrderTypeNV</type> <name>sampleOrderType</name></param>
- <param optional="true"><type>uint32_t</type> <name>customSampleOrderCount</name></param>
- <param len="customSampleOrderCount">const <type>VkCoarseSampleOrderCustomNV</type>* <name>pCustomSampleOrders</name></param>
- </command>
- <command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdDrawMeshTasksNV</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>uint32_t</type> <name>taskCount</name></param>
- <param><type>uint32_t</type> <name>firstTask</name></param>
- </command>
- <command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdDrawMeshTasksIndirectNV</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>VkBuffer</type> <name>buffer</name></param>
- <param><type>VkDeviceSize</type> <name>offset</name></param>
- <param><type>uint32_t</type> <name>drawCount</name></param>
- <param><type>uint32_t</type> <name>stride</name></param>
- </command>
- <command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdDrawMeshTasksIndirectCountNV</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>VkBuffer</type> <name>buffer</name></param>
- <param><type>VkDeviceSize</type> <name>offset</name></param>
- <param><type>VkBuffer</type> <name>countBuffer</name></param>
- <param><type>VkDeviceSize</type> <name>countBufferOffset</name></param>
- <param><type>uint32_t</type> <name>maxDrawCount</name></param>
- <param><type>uint32_t</type> <name>stride</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkCompileDeferredNV</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>VkPipeline</type> <name>pipeline</name></param>
- <param><type>uint32_t</type> <name>shader</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY">
- <proto><type>VkResult</type> <name>vkCreateAccelerationStructureNV</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkAccelerationStructureCreateInfoNV</type>* <name>pCreateInfo</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <param><type>VkAccelerationStructureNV</type>* <name>pAccelerationStructure</name></param>
- </command>
- <command queues="compute" renderpass="outside" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdBindInvocationMaskHUAWEI</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param optional="true"><type>VkImageView</type> <name>imageView</name></param>
- <param><type>VkImageLayout</type> <name>imageLayout</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkDestroyAccelerationStructureKHR</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param optional="true" externsync="true"><type>VkAccelerationStructureKHR</type> <name>accelerationStructure</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkDestroyAccelerationStructureNV</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param optional="true" externsync="true"><type>VkAccelerationStructureNV</type> <name>accelerationStructure</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkGetAccelerationStructureMemoryRequirementsNV</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkAccelerationStructureMemoryRequirementsInfoNV</type>* <name>pInfo</name></param>
- <param><type>VkMemoryRequirements2KHR</type>* <name>pMemoryRequirements</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkBindAccelerationStructureMemoryNV</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <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="outside" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdCopyAccelerationStructureNV</name></proto>
- <param externsync="true"><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>VkCopyAccelerationStructureModeKHR</type> <name>mode</name></param>
- </command>
- <command queues="compute" renderpass="outside" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdCopyAccelerationStructureKHR</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param>const <type>VkCopyAccelerationStructureInfoKHR</type>* <name>pInfo</name></param>
- </command>
- <command successcodes="VK_SUCCESS,VK_OPERATION_DEFERRED_KHR,VK_OPERATION_NOT_DEFERRED_KHR" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkCopyAccelerationStructureKHR</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param optional="true"><type>VkDeferredOperationKHR</type> <name>deferredOperation</name></param>
- <param>const <type>VkCopyAccelerationStructureInfoKHR</type>* <name>pInfo</name></param>
- </command>
- <command queues="compute" renderpass="outside" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdCopyAccelerationStructureToMemoryKHR</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param>const <type>VkCopyAccelerationStructureToMemoryInfoKHR</type>* <name>pInfo</name></param>
- </command>
- <command successcodes="VK_SUCCESS,VK_OPERATION_DEFERRED_KHR,VK_OPERATION_NOT_DEFERRED_KHR" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkCopyAccelerationStructureToMemoryKHR</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param optional="true"><type>VkDeferredOperationKHR</type> <name>deferredOperation</name></param>
- <param>const <type>VkCopyAccelerationStructureToMemoryInfoKHR</type>* <name>pInfo</name></param>
- </command>
- <command queues="compute" renderpass="outside" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdCopyMemoryToAccelerationStructureKHR</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param>const <type>VkCopyMemoryToAccelerationStructureInfoKHR</type>* <name>pInfo</name></param>
- </command>
- <command successcodes="VK_SUCCESS,VK_OPERATION_DEFERRED_KHR,VK_OPERATION_NOT_DEFERRED_KHR" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkCopyMemoryToAccelerationStructureKHR</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param optional="true"><type>VkDeferredOperationKHR</type> <name>deferredOperation</name></param>
- <param>const <type>VkCopyMemoryToAccelerationStructureInfoKHR</type>* <name>pInfo</name></param>
- </command>
- <command queues="compute" renderpass="outside" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdWriteAccelerationStructuresPropertiesKHR</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>uint32_t</type> <name>accelerationStructureCount</name></param>
- <param len="accelerationStructureCount">const <type>VkAccelerationStructureKHR</type>* <name>pAccelerationStructures</name></param>
- <param><type>VkQueryType</type> <name>queryType</name></param>
- <param><type>VkQueryPool</type> <name>queryPool</name></param>
- <param><type>uint32_t</type> <name>firstQuery</name></param>
- </command>
- <command queues="compute" renderpass="outside" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdWriteAccelerationStructuresPropertiesNV</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>uint32_t</type> <name>accelerationStructureCount</name></param>
- <param len="accelerationStructureCount">const <type>VkAccelerationStructureNV</type>* <name>pAccelerationStructures</name></param>
- <param><type>VkQueryType</type> <name>queryType</name></param>
- <param><type>VkQueryPool</type> <name>queryPool</name></param>
- <param><type>uint32_t</type> <name>firstQuery</name></param>
- </command>
- <command queues="compute" renderpass="outside" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdBuildAccelerationStructureNV</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param>const <type>VkAccelerationStructureInfoNV</type>* <name>pInfo</name></param>
- <param optional="true"><type>VkBuffer</type> <name>instanceData</name></param>
- <param><type>VkDeviceSize</type> <name>instanceOffset</name></param>
- <param><type>VkBool32</type> <name>update</name></param>
- <param><type>VkAccelerationStructureNV</type> <name>dst</name></param>
- <param optional="true"><type>VkAccelerationStructureNV</type> <name>src</name></param>
- <param><type>VkBuffer</type> <name>scratch</name></param>
- <param><type>VkDeviceSize</type> <name>scratchOffset</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkWriteAccelerationStructuresPropertiesKHR</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>uint32_t</type> <name>accelerationStructureCount</name></param>
- <param len="accelerationStructureCount">const <type>VkAccelerationStructureKHR</type>* <name>pAccelerationStructures</name></param>
- <param><type>VkQueryType</type> <name>queryType</name></param>
- <param><type>size_t</type> <name>dataSize</name></param>
- <param len="dataSize"><type>void</type>* <name>pData</name></param>
- <param><type>size_t</type> <name>stride</name></param>
- </command>
- <command queues="compute" renderpass="outside" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdTraceRaysKHR</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param>const <type>VkStridedDeviceAddressRegionKHR</type>* <name>pRaygenShaderBindingTable</name></param>
- <param>const <type>VkStridedDeviceAddressRegionKHR</type>* <name>pMissShaderBindingTable</name></param>
- <param>const <type>VkStridedDeviceAddressRegionKHR</type>* <name>pHitShaderBindingTable</name></param>
- <param>const <type>VkStridedDeviceAddressRegionKHR</type>* <name>pCallableShaderBindingTable</name></param>
- <param><type>uint32_t</type> <name>width</name></param>
- <param><type>uint32_t</type> <name>height</name></param>
- <param><type>uint32_t</type> <name>depth</name></param>
- </command>
- <command queues="compute" renderpass="outside" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdTraceRaysNV</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>VkBuffer</type> <name>raygenShaderBindingTableBuffer</name></param>
- <param><type>VkDeviceSize</type> <name>raygenShaderBindingOffset</name></param>
- <param optional="true"><type>VkBuffer</type> <name>missShaderBindingTableBuffer</name></param>
- <param><type>VkDeviceSize</type> <name>missShaderBindingOffset</name></param>
- <param><type>VkDeviceSize</type> <name>missShaderBindingStride</name></param>
- <param optional="true"><type>VkBuffer</type> <name>hitShaderBindingTableBuffer</name></param>
- <param><type>VkDeviceSize</type> <name>hitShaderBindingOffset</name></param>
- <param><type>VkDeviceSize</type> <name>hitShaderBindingStride</name></param>
- <param optional="true"><type>VkBuffer</type> <name>callableShaderBindingTableBuffer</name></param>
- <param><type>VkDeviceSize</type> <name>callableShaderBindingOffset</name></param>
- <param><type>VkDeviceSize</type> <name>callableShaderBindingStride</name></param>
- <param><type>uint32_t</type> <name>width</name></param>
- <param><type>uint32_t</type> <name>height</name></param>
- <param><type>uint32_t</type> <name>depth</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkGetRayTracingShaderGroupHandlesKHR</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>VkPipeline</type> <name>pipeline</name></param>
- <param><type>uint32_t</type> <name>firstGroup</name></param>
- <param><type>uint32_t</type> <name>groupCount</name></param>
- <param><type>size_t</type> <name>dataSize</name></param>
- <param len="dataSize"><type>void</type>* <name>pData</name></param>
- </command>
- <command name="vkGetRayTracingShaderGroupHandlesNV" alias="vkGetRayTracingShaderGroupHandlesKHR"/>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkGetRayTracingCaptureReplayShaderGroupHandlesKHR</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>VkPipeline</type> <name>pipeline</name></param>
- <param><type>uint32_t</type> <name>firstGroup</name></param>
- <param><type>uint32_t</type> <name>groupCount</name></param>
- <param><type>size_t</type> <name>dataSize</name></param>
- <param len="dataSize"><type>void</type>* <name>pData</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkGetAccelerationStructureHandleNV</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>VkAccelerationStructureNV</type> <name>accelerationStructure</name></param>
- <param><type>size_t</type> <name>dataSize</name></param>
- <param len="dataSize"><type>void</type>* <name>pData</name></param>
- </command>
- <command successcodes="VK_SUCCESS,VK_PIPELINE_COMPILE_REQUIRED_EXT" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_INVALID_SHADER_NV">
- <proto><type>VkResult</type> <name>vkCreateRayTracingPipelinesNV</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param optional="true"><type>VkPipelineCache</type> <name>pipelineCache</name></param>
- <param><type>uint32_t</type> <name>createInfoCount</name></param>
- <param len="createInfoCount">const <type>VkRayTracingPipelineCreateInfoNV</type>* <name>pCreateInfos</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <param len="createInfoCount"><type>VkPipeline</type>* <name>pPipelines</name></param>
- </command>
- <command successcodes="VK_SUCCESS,VK_OPERATION_DEFERRED_KHR,VK_OPERATION_NOT_DEFERRED_KHR,VK_PIPELINE_COMPILE_REQUIRED_EXT" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS">
- <proto><type>VkResult</type> <name>vkCreateRayTracingPipelinesKHR</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param optional="true"><type>VkDeferredOperationKHR</type> <name>deferredOperation</name></param>
- <param optional="true"><type>VkPipelineCache</type> <name>pipelineCache</name></param>
- <param><type>uint32_t</type> <name>createInfoCount</name></param>
- <param len="createInfoCount">const <type>VkRayTracingPipelineCreateInfoKHR</type>* <name>pCreateInfos</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <param len="createInfoCount"><type>VkPipeline</type>* <name>pPipelines</name></param>
- </command>
- <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkGetPhysicalDeviceCooperativeMatrixPropertiesNV</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param optional="false,true"><type>uint32_t</type>* <name>pPropertyCount</name></param>
- <param optional="true" len="pPropertyCount"><type>VkCooperativeMatrixPropertiesNV</type>* <name>pProperties</name></param>
- </command>
- <command queues="compute" renderpass="outside" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdTraceRaysIndirectKHR</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param>const <type>VkStridedDeviceAddressRegionKHR</type>* <name>pRaygenShaderBindingTable</name></param>
- <param>const <type>VkStridedDeviceAddressRegionKHR</type>* <name>pMissShaderBindingTable</name></param>
- <param>const <type>VkStridedDeviceAddressRegionKHR</type>* <name>pHitShaderBindingTable</name></param>
- <param>const <type>VkStridedDeviceAddressRegionKHR</type>* <name>pCallableShaderBindingTable</name></param>
- <param><type>VkDeviceAddress</type> <name>indirectDeviceAddress</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkGetDeviceAccelerationStructureCompatibilityKHR</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkAccelerationStructureVersionInfoKHR</type>* <name>pVersionInfo</name></param>
- <param><type>VkAccelerationStructureCompatibilityKHR</type>* <name>pCompatibility</name></param>
- </command>
- <command>
- <proto><type>VkDeviceSize</type> <name>vkGetRayTracingShaderGroupStackSizeKHR</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>VkPipeline</type> <name>pipeline</name></param>
- <param><type>uint32_t</type> <name>group</name></param>
- <param><type>VkShaderGroupShaderKHR</type> <name>groupShader</name></param>
- </command>
- <command queues="compute" renderpass="outside" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdSetRayTracingPipelineStackSizeKHR</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>uint32_t</type> <name>pipelineStackSize</name></param>
- </command>
- <command>
- <proto><type>uint32_t</type> <name>vkGetImageViewHandleNVX</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkImageViewHandleInfoNVX</type>* <name>pInfo</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_UNKNOWN">
- <proto><type>VkResult</type> <name>vkGetImageViewAddressNVX</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>VkImageView</type> <name>imageView</name></param>
- <param><type>VkImageViewAddressPropertiesNVX</type>* <name>pProperties</name></param>
- </command>
- <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_SURFACE_LOST_KHR">
- <proto><type>VkResult</type> <name>vkGetPhysicalDeviceSurfacePresentModes2EXT</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param>const <type>VkPhysicalDeviceSurfaceInfo2KHR</type>* <name>pSurfaceInfo</name></param>
- <param optional="false,true"><type>uint32_t</type>* <name>pPresentModeCount</name></param>
- <param optional="true" len="pPresentModeCount"><type>VkPresentModeKHR</type>* <name>pPresentModes</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_SURFACE_LOST_KHR">
- <proto><type>VkResult</type> <name>vkGetDeviceGroupSurfacePresentModes2EXT</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkPhysicalDeviceSurfaceInfo2KHR</type>* <name>pSurfaceInfo</name></param>
- <param optional="false,true"><type>VkDeviceGroupPresentModeFlagsKHR</type>* <name>pModes</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_INITIALIZATION_FAILED,VK_ERROR_SURFACE_LOST_KHR">
- <proto><type>VkResult</type> <name>vkAcquireFullScreenExclusiveModeEXT</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>VkSwapchainKHR</type> <name>swapchain</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_SURFACE_LOST_KHR">
- <proto><type>VkResult</type> <name>vkReleaseFullScreenExclusiveModeEXT</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>VkSwapchainKHR</type> <name>swapchain</name></param>
- </command>
- <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_INITIALIZATION_FAILED">
- <proto><type>VkResult</type> <name>vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param><type>uint32_t</type> <name>queueFamilyIndex</name></param>
- <param optional="false,true"><type>uint32_t</type>* <name>pCounterCount</name></param>
- <param optional="true" len="pCounterCount"><type>VkPerformanceCounterKHR</type>* <name>pCounters</name></param>
- <param optional="true" len="pCounterCount"><type>VkPerformanceCounterDescriptionKHR</type>* <name>pCounterDescriptions</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param>const <type>VkQueryPoolPerformanceCreateInfoKHR</type>* <name>pPerformanceQueryCreateInfo</name></param>
- <param><type>uint32_t</type>* <name>pNumPasses</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_TIMEOUT">
- <proto><type>VkResult</type> <name>vkAcquireProfilingLockKHR</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkAcquireProfilingLockInfoKHR</type>* <name>pInfo</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkReleaseProfilingLockKHR</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY">
- <proto><type>VkResult</type> <name>vkGetImageDrmFormatModifierPropertiesEXT</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>VkImage</type> <name>image</name></param>
- <param><type>VkImageDrmFormatModifierPropertiesEXT</type>* <name>pProperties</name></param>
- </command>
- <command>
- <proto><type>uint64_t</type> <name>vkGetBufferOpaqueCaptureAddress</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkBufferDeviceAddressInfo</type>* <name>pInfo</name></param>
- </command>
- <command name="vkGetBufferOpaqueCaptureAddressKHR" alias="vkGetBufferOpaqueCaptureAddress"/>
- <command>
- <proto><type>VkDeviceAddress</type> <name>vkGetBufferDeviceAddress</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkBufferDeviceAddressInfo</type>* <name>pInfo</name></param>
- </command>
- <command name="vkGetBufferDeviceAddressKHR" alias="vkGetBufferDeviceAddress"/>
- <command name="vkGetBufferDeviceAddressEXT" alias="vkGetBufferDeviceAddress"/>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkCreateHeadlessSurfaceEXT</name></proto>
- <param><type>VkInstance</type> <name>instance</name></param>
- <param>const <type>VkHeadlessSurfaceCreateInfoEXT</type>* <name>pCreateInfo</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <param><type>VkSurfaceKHR</type>* <name>pSurface</name></param>
- </command>
- <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param optional="false,true"><type>uint32_t</type>* <name>pCombinationCount</name></param>
- <param optional="true" len="pCombinationCount"><type>VkFramebufferMixedSamplesCombinationNV</type>* <name>pCombinations</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_TOO_MANY_OBJECTS,VK_ERROR_OUT_OF_HOST_MEMORY">
- <proto><type>VkResult</type> <name>vkInitializePerformanceApiINTEL</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkInitializePerformanceApiInfoINTEL</type>* <name>pInitializeInfo</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkUninitializePerformanceApiINTEL</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- </command>
- <command queues="graphics,compute,transfer" renderpass="both" cmdbufferlevel="primary,secondary" successcodes="VK_SUCCESS" errorcodes="VK_ERROR_TOO_MANY_OBJECTS,VK_ERROR_OUT_OF_HOST_MEMORY">
- <proto><type>VkResult</type> <name>vkCmdSetPerformanceMarkerINTEL</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param>const <type>VkPerformanceMarkerInfoINTEL</type>* <name>pMarkerInfo</name></param>
- </command>
- <command queues="graphics,compute,transfer" renderpass="both" cmdbufferlevel="primary,secondary" successcodes="VK_SUCCESS" errorcodes="VK_ERROR_TOO_MANY_OBJECTS,VK_ERROR_OUT_OF_HOST_MEMORY">
- <proto><type>VkResult</type> <name>vkCmdSetPerformanceStreamMarkerINTEL</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param>const <type>VkPerformanceStreamMarkerInfoINTEL</type>* <name>pMarkerInfo</name></param>
- </command>
- <command queues="graphics,compute,transfer" renderpass="both" cmdbufferlevel="primary,secondary" successcodes="VK_SUCCESS" errorcodes="VK_ERROR_TOO_MANY_OBJECTS,VK_ERROR_OUT_OF_HOST_MEMORY">
- <proto><type>VkResult</type> <name>vkCmdSetPerformanceOverrideINTEL</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param>const <type>VkPerformanceOverrideInfoINTEL</type>* <name>pOverrideInfo</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_TOO_MANY_OBJECTS,VK_ERROR_OUT_OF_HOST_MEMORY">
- <proto><type>VkResult</type> <name>vkAcquirePerformanceConfigurationINTEL</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkPerformanceConfigurationAcquireInfoINTEL</type>* <name>pAcquireInfo</name></param>
- <param><type>VkPerformanceConfigurationINTEL</type>* <name>pConfiguration</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_TOO_MANY_OBJECTS,VK_ERROR_OUT_OF_HOST_MEMORY">
- <proto><type>VkResult</type> <name>vkReleasePerformanceConfigurationINTEL</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param optional="true" externsync="true"><type>VkPerformanceConfigurationINTEL</type> <name>configuration</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_TOO_MANY_OBJECTS,VK_ERROR_OUT_OF_HOST_MEMORY">
- <proto><type>VkResult</type> <name>vkQueueSetPerformanceConfigurationINTEL</name></proto>
- <param><type>VkQueue</type> <name>queue</name></param>
- <param><type>VkPerformanceConfigurationINTEL</type> <name>configuration</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_TOO_MANY_OBJECTS,VK_ERROR_OUT_OF_HOST_MEMORY">
- <proto><type>VkResult</type> <name>vkGetPerformanceParameterINTEL</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>VkPerformanceParameterTypeINTEL</type> <name>parameter</name></param>
- <param><type>VkPerformanceValueINTEL</type>* <name>pValue</name></param>
- </command>
- <command>
- <proto><type>uint64_t</type> <name>vkGetDeviceMemoryOpaqueCaptureAddress</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkDeviceMemoryOpaqueCaptureAddressInfo</type>* <name>pInfo</name></param>
- </command>
- <command name="vkGetDeviceMemoryOpaqueCaptureAddressKHR" alias="vkGetDeviceMemoryOpaqueCaptureAddress"/>
- <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkGetPipelineExecutablePropertiesKHR</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkPipelineInfoKHR</type>* <name>pPipelineInfo</name></param>
- <param optional="false,true"><type>uint32_t</type>* <name>pExecutableCount</name></param>
- <param optional="true" len="pExecutableCount"><type>VkPipelineExecutablePropertiesKHR</type>* <name>pProperties</name></param>
- </command>
- <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkGetPipelineExecutableStatisticsKHR</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkPipelineExecutableInfoKHR</type>* <name>pExecutableInfo</name></param>
- <param optional="false,true"><type>uint32_t</type>* <name>pStatisticCount</name></param>
- <param optional="true" len="pStatisticCount"><type>VkPipelineExecutableStatisticKHR</type>* <name>pStatistics</name></param>
- </command>
- <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkGetPipelineExecutableInternalRepresentationsKHR</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkPipelineExecutableInfoKHR</type>* <name>pExecutableInfo</name></param>
- <param optional="false,true"><type>uint32_t</type>* <name>pInternalRepresentationCount</name></param>
- <param optional="true" len="pInternalRepresentationCount"><type>VkPipelineExecutableInternalRepresentationKHR</type>* <name>pInternalRepresentations</name></param>
- </command>
- <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdSetLineStippleEXT</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>uint32_t</type> <name>lineStippleFactor</name></param>
- <param><type>uint16_t</type> <name>lineStipplePattern</name></param>
- </command>
- <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY">
- <proto><type>VkResult</type> <name>vkGetPhysicalDeviceToolPropertiesEXT</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param optional="false,true"><type>uint32_t</type>* <name>pToolCount</name></param>
- <param optional="true" len="pToolCount"><type>VkPhysicalDeviceToolPropertiesEXT</type>* <name>pToolProperties</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR">
- <proto><type>VkResult</type> <name>vkCreateAccelerationStructureKHR</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkAccelerationStructureCreateInfoKHR</type>* <name>pCreateInfo</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <param><type>VkAccelerationStructureKHR</type>* <name>pAccelerationStructure</name></param>
- </command>
- <command queues="compute" renderpass="outside" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdBuildAccelerationStructuresKHR</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>uint32_t</type> <name>infoCount</name></param>
- <param len="infoCount">const <type>VkAccelerationStructureBuildGeometryInfoKHR</type>* <name>pInfos</name></param>
- <param len="infoCount">const <type>VkAccelerationStructureBuildRangeInfoKHR</type>* const* <name>ppBuildRangeInfos</name></param>
- </command>
- <command queues="compute" renderpass="outside" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdBuildAccelerationStructuresIndirectKHR</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>uint32_t</type> <name>infoCount</name></param>
- <param len="infoCount">const <type>VkAccelerationStructureBuildGeometryInfoKHR</type>* <name>pInfos</name></param>
- <param len="infoCount">const <type>VkDeviceAddress</type>* <name>pIndirectDeviceAddresses</name></param>
- <param len="infoCount">const <type>uint32_t</type>* <name>pIndirectStrides</name></param>
- <param len="infoCount">const <type>uint32_t</type>* const* <name>ppMaxPrimitiveCounts</name></param>
- </command>
- <command successcodes="VK_SUCCESS,VK_OPERATION_DEFERRED_KHR,VK_OPERATION_NOT_DEFERRED_KHR" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkBuildAccelerationStructuresKHR</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param optional="true"><type>VkDeferredOperationKHR</type> <name>deferredOperation</name></param>
- <param><type>uint32_t</type> <name>infoCount</name></param>
- <param len="infoCount">const <type>VkAccelerationStructureBuildGeometryInfoKHR</type>* <name>pInfos</name></param>
- <param len="infoCount">const <type>VkAccelerationStructureBuildRangeInfoKHR</type>* const* <name>ppBuildRangeInfos</name></param>
- </command>
- <command>
- <proto><type>VkDeviceAddress</type> <name>vkGetAccelerationStructureDeviceAddressKHR</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkAccelerationStructureDeviceAddressInfoKHR</type>* <name>pInfo</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY">
- <proto><type>VkResult</type> <name>vkCreateDeferredOperationKHR</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <param><type>VkDeferredOperationKHR</type>* <name>pDeferredOperation</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkDestroyDeferredOperationKHR</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param optional="true" externsync="true"><type>VkDeferredOperationKHR</type> <name>operation</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- </command>
- <command>
- <proto><type>uint32_t</type> <name>vkGetDeferredOperationMaxConcurrencyKHR</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>VkDeferredOperationKHR</type> <name>operation</name></param>
- </command>
- <command successcodes="VK_SUCCESS,VK_NOT_READY">
- <proto><type>VkResult</type> <name>vkGetDeferredOperationResultKHR</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>VkDeferredOperationKHR</type> <name>operation</name></param>
- </command>
- <command successcodes="VK_SUCCESS,VK_THREAD_DONE_KHR,VK_THREAD_IDLE_KHR" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
- <proto><type>VkResult</type> <name>vkDeferredOperationJoinKHR</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>VkDeferredOperationKHR</type> <name>operation</name></param>
- </command>
- <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdSetCullModeEXT</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param optional="true"><type>VkCullModeFlags</type> <name>cullMode</name></param>
- </command>
- <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdSetFrontFaceEXT</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>VkFrontFace</type> <name>frontFace</name></param>
- </command>
- <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdSetPrimitiveTopologyEXT</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>VkPrimitiveTopology</type> <name>primitiveTopology</name></param>
- </command>
- <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdSetViewportWithCountEXT</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>uint32_t</type> <name>viewportCount</name></param>
- <param len="viewportCount">const <type>VkViewport</type>* <name>pViewports</name></param>
- </command>
- <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdSetScissorWithCountEXT</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>uint32_t</type> <name>scissorCount</name></param>
- <param len="scissorCount">const <type>VkRect2D</type>* <name>pScissors</name></param>
- </command>
- <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdBindVertexBuffers2EXT</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>uint32_t</type> <name>firstBinding</name></param>
- <param><type>uint32_t</type> <name>bindingCount</name></param>
- <param len="bindingCount" optional="false,true">const <type>VkBuffer</type>* <name>pBuffers</name></param>
- <param len="bindingCount">const <type>VkDeviceSize</type>* <name>pOffsets</name></param>
- <param optional="true" len="bindingCount">const <type>VkDeviceSize</type>* <name>pSizes</name></param>
- <param optional="true" len="bindingCount">const <type>VkDeviceSize</type>* <name>pStrides</name></param>
- </command>
- <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdSetDepthTestEnableEXT</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>VkBool32</type> <name>depthTestEnable</name></param>
- </command>
- <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdSetDepthWriteEnableEXT</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>VkBool32</type> <name>depthWriteEnable</name></param>
- </command>
- <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdSetDepthCompareOpEXT</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>VkCompareOp</type> <name>depthCompareOp</name></param>
- </command>
- <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdSetDepthBoundsTestEnableEXT</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>VkBool32</type> <name>depthBoundsTestEnable</name></param>
- </command>
- <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdSetStencilTestEnableEXT</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>VkBool32</type> <name>stencilTestEnable</name></param>
- </command>
- <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdSetStencilOpEXT</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>VkStencilFaceFlags</type> <name>faceMask</name></param>
- <param><type>VkStencilOp</type> <name>failOp</name></param>
- <param><type>VkStencilOp</type> <name>passOp</name></param>
- <param><type>VkStencilOp</type> <name>depthFailOp</name></param>
- <param><type>VkCompareOp</type> <name>compareOp</name></param>
- </command>
- <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdSetPatchControlPointsEXT</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>uint32_t</type> <name>patchControlPoints</name></param>
- </command>
- <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdSetRasterizerDiscardEnableEXT</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>VkBool32</type> <name>rasterizerDiscardEnable</name></param>
- </command>
- <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdSetDepthBiasEnableEXT</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>VkBool32</type> <name>depthBiasEnable</name></param>
- </command>
- <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdSetLogicOpEXT</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>VkLogicOp</type> <name>logicOp</name></param>
- </command>
- <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdSetPrimitiveRestartEnableEXT</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>VkBool32</type> <name>primitiveRestartEnable</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY">
- <proto><type>VkResult</type> <name>vkCreatePrivateDataSlotEXT</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkPrivateDataSlotCreateInfoEXT</type>* <name>pCreateInfo</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <param><type>VkPrivateDataSlotEXT</type>* <name>pPrivateDataSlot</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkDestroyPrivateDataSlotEXT</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param optional="true" externsync="true"><type>VkPrivateDataSlotEXT</type> <name>privateDataSlot</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY">
- <proto><type>VkResult</type> <name>vkSetPrivateDataEXT</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>VkObjectType</type> <name>objectType</name></param>
- <param objecttype="objectType"><type>uint64_t</type> <name>objectHandle</name></param>
- <param><type>VkPrivateDataSlotEXT</type> <name>privateDataSlot</name></param>
- <param><type>uint64_t</type> <name>data</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkGetPrivateDataEXT</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>VkObjectType</type> <name>objectType</name></param>
- <param objecttype="objectType"><type>uint64_t</type> <name>objectHandle</name></param>
- <param><type>VkPrivateDataSlotEXT</type> <name>privateDataSlot</name></param>
- <param><type>uint64_t</type>* <name>pData</name></param>
- </command>
- <command queues="transfer,graphics,compute" renderpass="outside" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdCopyBuffer2KHR</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param>const <type>VkCopyBufferInfo2KHR</type>* <name>pCopyBufferInfo</name></param>
- </command>
- <command queues="transfer,graphics,compute" renderpass="outside" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdCopyImage2KHR</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param>const <type>VkCopyImageInfo2KHR</type>* <name>pCopyImageInfo</name></param>
- </command>
- <command queues="graphics" renderpass="outside" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdBlitImage2KHR</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param>const <type>VkBlitImageInfo2KHR</type>* <name>pBlitImageInfo</name></param>
- </command>
- <command queues="transfer,graphics,compute" renderpass="outside" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdCopyBufferToImage2KHR</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param>const <type>VkCopyBufferToImageInfo2KHR</type>* <name>pCopyBufferToImageInfo</name></param>
- </command>
- <command queues="transfer,graphics,compute" renderpass="outside" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdCopyImageToBuffer2KHR</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param>const <type>VkCopyImageToBufferInfo2KHR</type>* <name>pCopyImageToBufferInfo</name></param>
- </command>
- <command queues="graphics" renderpass="outside" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdResolveImage2KHR</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param>const <type>VkResolveImageInfo2KHR</type>* <name>pResolveImageInfo</name></param>
- </command>
- <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdSetFragmentShadingRateKHR</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param>const <type>VkExtent2D</type>* <name>pFragmentSize</name></param>
- <param>const <type>VkFragmentShadingRateCombinerOpKHR</type> <name>combinerOps</name>[2]</param>
- </command>
- <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY">
- <proto><type>VkResult</type> <name>vkGetPhysicalDeviceFragmentShadingRatesKHR</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param optional="false,true"><type>uint32_t</type>* <name>pFragmentShadingRateCount</name></param>
- <param optional="true" len="pFragmentShadingRateCount"><type>VkPhysicalDeviceFragmentShadingRateKHR</type>* <name>pFragmentShadingRates</name></param>
- </command>
- <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdSetFragmentShadingRateEnumNV</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>VkFragmentShadingRateNV</type> <name>shadingRate</name></param>
- <param>const <type>VkFragmentShadingRateCombinerOpKHR</type> <name>combinerOps</name>[2]</param>
- </command>
- <command>
- <proto><type>void</type> <name>vkGetAccelerationStructureBuildSizesKHR</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>VkAccelerationStructureBuildTypeKHR</type> <name>buildType</name></param>
- <param>const <type>VkAccelerationStructureBuildGeometryInfoKHR</type>* <name>pBuildInfo</name></param>
- <param optional="true" len="pBuildInfo-&gt;geometryCount">const <type>uint32_t</type>* <name>pMaxPrimitiveCounts</name></param>
- <param><type>VkAccelerationStructureBuildSizesInfoKHR</type>* <name>pSizeInfo</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkQueueCommitDescriptorSetUpdatesGOOGLE</name></proto>
- <param externsync="true"><type>VkQueue</type> <name>queue</name></param>
- <param externsync="true"><type>uint32_t</type> <name>descriptorPoolCount</name></param>
- <param len="descriptorPoolCount" externsync="true">const <type>VkDescriptorPool</type>* <name>pDescriptorPools</name></param>
- <param externsync="true"><type>uint32_t</type> <name>descriptorSetCount</name></param>
- <param len="descriptorSetCount" externsync="true">const <type>VkDescriptorSetLayout</type>* <name>pSetLayouts</name></param>
- <param len="descriptorSetCount" externsync="true">const <type>uint64_t</type>* <name>pDescriptorSetPoolIds</name></param>
- <param len="descriptorSetCount" externsync="true">const <type>uint32_t</type>* <name>pDescriptorSetWhichPool</name></param>
- <param len="descriptorSetCount" externsync="true">const <type>uint32_t</type>* <name>pDescriptorSetPendingAllocation</name></param>
- <param len="descriptorSetCount" externsync="true">const <type>uint32_t</type>* <name>pDescriptorWriteStartingIndices</name></param>
- <param externsync="true"><type>uint32_t</type> <name>pendingDescriptorWriteCount</name></param>
- <param len="pendingDescriptorWriteCount" externsync="true">const <type>VkWriteDescriptorSet</type>* <name>pPendingDescriptorWrites</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkCollectDescriptorPoolIdsGOOGLE</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param externsync="true"><type>VkDescriptorPool</type> <name>descriptorPool</name></param>
- <param optiona="false,true"><type>uint32_t</type>* <name>pPoolIdCount</name></param>
- <param optional="true" len="pPoolIdCount"><type>uint64_t</type>* <name>pPoolIds</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkQueueSignalReleaseImageANDROIDAsyncGOOGLE</name></proto>
- <param><type>VkQueue</type> <name>queue</name></param>
- <param optional="true"><type>uint32_t</type> <name>waitSemaphoreCount</name></param>
- <param noautovalidity="true" len="waitSemaphoreCount">const <type>VkSemaphore</type>* <name>pWaitSemaphores</name></param>
- <param><type>VkImage</type> <name>image</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkQueueFlushCommandsFromAuxMemoryGOOGLE</name></proto>
- <param externsync="true"><type>VkQueue</type> <name>queue</name></param>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>VkDeviceMemory</type> <name>deviceMemory</name></param>
- <param><type>VkDeviceSize</type> <name>dataOffset</name></param>
- <param><type>VkDeviceSize</type> <name>dataSize</name></param>
- </command>
- <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdSetVertexInputEXT</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param optional="true"><type>uint32_t</type> <name>vertexBindingDescriptionCount</name></param>
- <param len="vertexBindingDescriptionCount">const <type>VkVertexInputBindingDescription2EXT</type>* <name>pVertexBindingDescriptions</name></param>
- <param optional="true"><type>uint32_t</type> <name>vertexAttributeDescriptionCount</name></param>
- <param len="vertexAttributeDescriptionCount">const <type>VkVertexInputAttributeDescription2EXT</type>* <name>pVertexAttributeDescriptions</name></param>
- </command>
- <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdSetColorWriteEnableEXT</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>uint32_t</type> <name>attachmentCount</name></param>
- <param len="attachmentCount">const <type>VkBool32</type>* <name>pColorWriteEnables</name></param>
- </command>
- <command queues="graphics,compute" renderpass="outside" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdSetEvent2KHR</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>VkEvent</type> <name>event</name></param>
- <param>const <type>VkDependencyInfoKHR</type>* <name>pDependencyInfo</name></param>
- </command>
- <command queues="graphics,compute" renderpass="outside" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdResetEvent2KHR</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>VkEvent</type> <name>event</name></param>
- <param><type>VkPipelineStageFlags2KHR</type> <name>stageMask</name></param>
- </command>
- <command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdWaitEvents2KHR</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>uint32_t</type> <name>eventCount</name></param>
- <param len="eventCount">const <type>VkEvent</type>* <name>pEvents</name></param>
- <param len="eventCount">const <type>VkDependencyInfoKHR</type>* <name>pDependencyInfos</name></param>
- </command>
- <command queues="transfer,graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdPipelineBarrier2KHR</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param>const <type>VkDependencyInfoKHR</type>* <name>pDependencyInfo</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_DEVICE_LOST">
- <proto><type>VkResult</type> <name>vkQueueSubmit2KHR</name></proto>
- <param externsync="true"><type>VkQueue</type> <name>queue</name></param>
- <param optional="true"><type>uint32_t</type> <name>submitCount</name></param>
- <param len="submitCount">const <type>VkSubmitInfo2KHR</type>* <name>pSubmits</name></param>
- <param optional="true" externsync="true"><type>VkFence</type> <name>fence</name></param>
- </command>
- <command queues="transfer,graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdWriteTimestamp2KHR</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>VkPipelineStageFlags2KHR</type> <name>stage</name></param>
- <param><type>VkQueryPool</type> <name>queryPool</name></param>
- <param><type>uint32_t</type> <name>query</name></param>
- </command>
- <command queues="transfer,graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdWriteBufferMarker2AMD</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param><type>VkPipelineStageFlags2KHR</type> <name>stage</name></param>
- <param><type>VkBuffer</type> <name>dstBuffer</name></param>
- <param><type>VkDeviceSize</type> <name>dstOffset</name></param>
- <param><type>uint32_t</type> <name>marker</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkGetQueueCheckpointData2NV</name></proto>
- <param><type>VkQueue</type> <name>queue</name></param>
- <param optional="false,true"><type>uint32_t</type>* <name>pCheckpointDataCount</name></param>
- <param optional="true" len="pCheckpointDataCount"><type>VkCheckpointData2NV</type>* <name>pCheckpointData</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_EXTENSION_NOT_PRESENT,VK_ERROR_INITIALIZATION_FAILED,VK_ERROR_FEATURE_NOT_PRESENT,VK_ERROR_FORMAT_NOT_SUPPORTED">
- <proto><type>VkResult</type> <name>vkGetPhysicalDeviceVideoCapabilitiesKHR</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param>const <type>VkVideoProfileKHR</type>* <name>pVideoProfile</name></param>
- <param><type>VkVideoCapabilitiesKHR</type>* <name>pCapabilities</name></param>
- </command>
- <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_EXTENSION_NOT_PRESENT,VK_ERROR_INITIALIZATION_FAILED,VK_ERROR_FORMAT_NOT_SUPPORTED">
- <proto><type>VkResult</type> <name>vkGetPhysicalDeviceVideoFormatPropertiesKHR</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param>const <type>VkPhysicalDeviceVideoFormatInfoKHR</type>* <name>pVideoFormatInfo</name></param>
- <param optional="false,true"><type>uint32_t</type>* <name>pVideoFormatPropertyCount</name></param>
- <param optional="true" len="pVideoFormatPropertyCount"><type>VkVideoFormatPropertiesKHR</type>* <name>pVideoFormatProperties</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_INITIALIZATION_FAILED,VK_ERROR_INCOMPATIBLE_DRIVER,VK_ERROR_FEATURE_NOT_PRESENT">
- <proto><type>VkResult</type> <name>vkCreateVideoSessionKHR</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkVideoSessionCreateInfoKHR</type>* <name>pCreateInfo</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <param><type>VkVideoSessionKHR</type>* <name>pVideoSession</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkDestroyVideoSessionKHR</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>VkVideoSessionKHR</type> <name>videoSession</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_INITIALIZATION_FAILED,VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_TOO_MANY_OBJECTS">
- <proto><type>VkResult</type> <name>vkCreateVideoSessionParametersKHR</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkVideoSessionParametersCreateInfoKHR</type>* <name>pCreateInfo</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <param><type>VkVideoSessionParametersKHR</type>* <name>pVideoSessionParameters</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_INITIALIZATION_FAILED,VK_ERROR_TOO_MANY_OBJECTS">
- <proto><type>VkResult</type> <name>vkUpdateVideoSessionParametersKHR</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>VkVideoSessionParametersKHR</type> <name>videoSessionParameters</name></param>
- <param>const <type>VkVideoSessionParametersUpdateInfoKHR</type>* <name>pUpdateInfo</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkDestroyVideoSessionParametersKHR</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>VkVideoSessionParametersKHR</type> <name>videoSessionParameters</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- </command>
- <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_INITIALIZATION_FAILED">
- <proto><type>VkResult</type> <name>vkGetVideoSessionMemoryRequirementsKHR</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>VkVideoSessionKHR</type> <name>videoSession</name></param>
- <param optional="false,true"><type>uint32_t</type>* <name>pVideoSessionMemoryRequirementsCount</name></param>
- <param optional="true" len="pVideoSessionMemoryRequirementsCount"><type>VkVideoGetMemoryPropertiesKHR</type>* <name>pVideoSessionMemoryRequirements</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_INITIALIZATION_FAILED">
- <proto><type>VkResult</type> <name>vkBindVideoSessionMemoryKHR</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>VkVideoSessionKHR</type> <name>videoSession</name></param>
- <param><type>uint32_t</type> <name>videoSessionBindMemoryCount</name></param>
- <param len="videoSessionBindMemoryCount">const <type>VkVideoBindMemoryKHR</type>* <name>pVideoSessionBindMemories</name></param>
- </command>
- <command queues="decode" renderpass="outside" cmdbufferlevel="primary">
- <proto><type>void</type> <name>vkCmdDecodeVideoKHR</name></proto>
- <param><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param>const <type>VkVideoDecodeInfoKHR</type>* <name>pFrameInfo</name></param>
- </command>
- <command queues="decode,encode" renderpass="outside" cmdbufferlevel="primary">
- <proto><type>void</type> <name>vkCmdBeginVideoCodingKHR</name></proto>
- <param><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param>const <type>VkVideoBeginCodingInfoKHR</type>* <name>pBeginInfo</name></param>
- </command>
- <command queues="decode,encode" renderpass="outside" cmdbufferlevel="primary">
- <proto><type>void</type> <name>vkCmdControlVideoCodingKHR</name></proto>
- <param><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param>const <type>VkVideoCodingControlInfoKHR</type>* <name>pCodingControlInfo</name></param>
- </command>
- <command queues="decode,encode" renderpass="outside" cmdbufferlevel="primary">
- <proto><type>void</type> <name>vkCmdEndVideoCodingKHR</name></proto>
- <param><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param>const <type>VkVideoEndCodingInfoKHR</type>* <name>pEndCodingInfo</name></param>
- </command>
- <command queues="encode" renderpass="outside" cmdbufferlevel="primary">
- <proto><type>void</type> <name>vkCmdEncodeVideoKHR</name></proto>
- <param><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param>const <type>VkVideoEncodeInfoKHR</type>* <name>pEncodeInfo</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_INITIALIZATION_FAILED">
- <proto><type>VkResult</type> <name>vkCreateCuModuleNVX</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkCuModuleCreateInfoNVX</type>* <name>pCreateInfo</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <param><type>VkCuModuleNVX</type>* <name>pModule</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_INITIALIZATION_FAILED">
- <proto><type>VkResult</type> <name>vkCreateCuFunctionNVX</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkCuFunctionCreateInfoNVX</type>* <name>pCreateInfo</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <param><type>VkCuFunctionNVX</type>* <name>pFunction</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkDestroyCuModuleNVX</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>VkCuModuleNVX</type> <name>module</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkDestroyCuFunctionNVX</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>VkCuFunctionNVX</type> <name>function</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- </command>
- <command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdCuLaunchKernelNVX</name></proto>
- <param><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param>const <type>VkCuLaunchInfoNVX</type>* <name>pLaunchInfo</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkSetDeviceMemoryPriorityEXT</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>VkDeviceMemory</type> <name>memory</name></param>
- <param><type>float</type> <name>priority</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_INITIALIZATION_FAILED">
- <proto><type>VkResult</type> <name>vkAcquireDrmDisplayEXT</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param><type>int32_t</type> <name>drmFd</name></param>
- <param><type>VkDisplayKHR</type> <name>display</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_INITIALIZATION_FAILED,VK_ERROR_OUT_OF_HOST_MEMORY">
- <proto><type>VkResult</type> <name>vkGetDrmDisplayEXT</name></proto>
- <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
- <param><type>int32_t</type> <name>drmFd</name></param>
- <param><type>uint32_t</type> <name>connectorId</name></param>
- <param><type>VkDisplayKHR</type>* <name>display</name></param>
- </command>
- <command successcodes="VK_SUCCESS,VK_TIMEOUT" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_DEVICE_LOST">
- <proto><type>VkResult</type> <name>vkWaitForPresentKHR</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param externsync="true"><type>VkSwapchainKHR</type> <name>swapchain</name></param>
- <param><type>uint64_t</type> <name>presentId</name></param>
- <param><type>uint64_t</type> <name>timeout</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_INVALID_EXTERNAL_HANDLE,VK_ERROR_INITIALIZATION_FAILED">
- <proto><type>VkResult</type> <name>vkCreateBufferCollectionFUCHSIA</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param>const <type>VkBufferCollectionCreateInfoFUCHSIA</type>* <name>pCreateInfo</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- <param><type>VkBufferCollectionFUCHSIA</type>* <name>pCollection</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_INITIALIZATION_FAILED,VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_FORMAT_NOT_SUPPORTED">
- <proto><type>VkResult</type> <name>vkSetBufferCollectionBufferConstraintsFUCHSIA</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>VkBufferCollectionFUCHSIA</type> <name>collection</name></param>
- <param>const <type>VkBufferConstraintsInfoFUCHSIA</type>* <name>pBufferConstraintsInfo</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_INITIALIZATION_FAILED,VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_FORMAT_NOT_SUPPORTED">
- <proto><type>VkResult</type> <name>vkSetBufferCollectionImageConstraintsFUCHSIA</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>VkBufferCollectionFUCHSIA</type> <name>collection</name></param>
- <param>const <type>VkImageConstraintsInfoFUCHSIA</type>* <name>pImageConstraintsInfo</name></param>
- </command>
- <command>
- <proto><type>void</type> <name>vkDestroyBufferCollectionFUCHSIA</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>VkBufferCollectionFUCHSIA</type> <name>collection</name></param>
- <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
- </command>
- <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_INITIALIZATION_FAILED">
- <proto><type>VkResult</type> <name>vkGetBufferCollectionPropertiesFUCHSIA</name></proto>
- <param><type>VkDevice</type> <name>device</name></param>
- <param><type>VkBufferCollectionFUCHSIA</type> <name>collection</name></param>
- <param><type>VkBufferCollectionPropertiesFUCHSIA</type>* <name>pProperties</name></param>
- </command>
- <command queues="graphics" renderpass="outside" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdBeginRenderingKHR</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- <param>const <type>VkRenderingInfoKHR</type>* <name>pRenderingInfo</name></param>
- </command>
- <command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary">
- <proto><type>void</type> <name>vkCmdEndRenderingKHR</name></proto>
- <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
- </command>
- </commands>
-
- <feature api="vulkan" name="VK_VERSION_1_0" number="1.0" comment="Vulkan core API interface definitions">
- <require comment="Header boilerplate">
- <type name="vk_platform"/>
- <type name="VK_DEFINE_HANDLE"/>
- <type name="VK_USE_64_BIT_PTR_DEFINES"/>
- <type name="VK_DEFINE_NON_DISPATCHABLE_HANDLE"/>
- <type name="VK_NULL_HANDLE"/>
- </require>
- <require comment="Fundamental types used by many commands and structures">
- <type name="VkBool32"/>
- <type name="VkDeviceAddress"/>
- <type name="VkDeviceSize"/>
- <type name="VkExtent2D"/>
- <type name="VkExtent3D"/>
- <type name="VkFlags"/>
- <type name="VkOffset2D"/>
- <type name="VkOffset3D"/>
- <type name="VkRect2D"/>
- <type name="VkResult"/>
- <type name="VkStructureType"/>
- </require>
- <require comment="These types are part of the API, though not directly used in API commands or data structures">
- <type name="VkBaseInStructure"/>
- <type name="VkBaseOutStructure"/>
- <type name="VkBufferMemoryBarrier"/>
- <type name="VkDispatchIndirectCommand"/>
- <type name="VkDrawIndexedIndirectCommand"/>
- <type name="VkDrawIndirectCommand"/>
- <type name="VkImageMemoryBarrier"/>
- <type name="VkMemoryBarrier"/>
- <type name="VkObjectType"/>
- <type name="VkPipelineCacheHeaderVersionOne"/>
- <type name="VkVendorId"/>
- </require>
- <require comment="API version macros">
- <type name="VK_API_VERSION"/>
- <type name="VK_API_VERSION_1_0"/>
- <type name="VK_HEADER_VERSION"/>
- <type name="VK_HEADER_VERSION_COMPLETE"/>
- <type name="VK_MAKE_VERSION"/>
- <type name="VK_VERSION_MAJOR"/>
- <type name="VK_VERSION_MINOR"/>
- <type name="VK_VERSION_PATCH"/>
- <type name="VK_MAKE_API_VERSION"/>
- <type name="VK_API_VERSION_VARIANT"/>
- <type name="VK_API_VERSION_MAJOR"/>
- <type name="VK_API_VERSION_MINOR"/>
- <type name="VK_API_VERSION_PATCH"/>
- </require>
- <require comment="API constants">
- <enum name="VK_ATTACHMENT_UNUSED"/>
- <enum name="VK_FALSE"/>
- <enum name="VK_LOD_CLAMP_NONE"/>
- <enum name="VK_QUEUE_FAMILY_IGNORED"/>
- <enum name="VK_REMAINING_ARRAY_LAYERS"/>
- <enum name="VK_REMAINING_MIP_LEVELS"/>
- <enum name="VK_SUBPASS_EXTERNAL"/>
- <enum name="VK_TRUE"/>
- <enum name="VK_WHOLE_SIZE"/>
- <type name="VkPipelineCacheHeaderVersion"/>
- </require>
- <require comment="Device initialization">
- <type name="PFN_vkAllocationFunction"/>
- <type name="PFN_vkFreeFunction"/>
- <type name="PFN_vkInternalAllocationNotification"/>
- <type name="PFN_vkInternalFreeNotification"/>
- <type name="PFN_vkReallocationFunction"/>
- <type name="PFN_vkVoidFunction"/>
- <type name="VkAllocationCallbacks"/>
- <type name="VkApplicationInfo"/>
- <type name="VkFormat"/>
- <type name="VkFormatFeatureFlagBits"/>
- <type name="VkFormatFeatureFlags"/>
- <type name="VkFormatProperties"/>
- <type name="VkImageCreateFlagBits"/>
- <type name="VkImageCreateFlags"/>
- <type name="VkImageFormatProperties"/>
- <type name="VkImageTiling"/>
- <type name="VkImageType"/>
- <type name="VkImageUsageFlagBits"/>
- <type name="VkImageUsageFlags"/>
- <type name="VkInstance"/>
- <type name="VkInstanceCreateFlags" comment="Will add VkInstanceCreateFlagBits when bits are defined in the future"/>
- <type name="VkInstanceCreateInfo"/>
- <type name="VkInternalAllocationType"/>
- <type name="VkMemoryHeap"/>
- <type name="VkMemoryHeapFlagBits"/>
- <type name="VkMemoryHeapFlags"/>
- <type name="VkMemoryPropertyFlagBits"/>
- <type name="VkMemoryPropertyFlags"/>
- <type name="VkMemoryType"/>
- <type name="VkPhysicalDevice"/>
- <type name="VkPhysicalDeviceFeatures"/>
- <type name="VkPhysicalDeviceLimits"/>
- <type name="VkPhysicalDeviceMemoryProperties"/>
- <type name="VkPhysicalDeviceProperties"/>
- <type name="VkPhysicalDeviceSparseProperties"/>
- <type name="VkPhysicalDeviceType"/>
- <type name="VkQueueFamilyProperties"/>
- <type name="VkQueueFlagBits"/>
- <type name="VkQueueFlags"/>
- <type name="VkSampleCountFlagBits"/>
- <type name="VkSampleCountFlags"/>
- <type name="VkSystemAllocationScope"/>
- <command name="vkCreateInstance"/>
- <command name="vkDestroyInstance"/>
- <command name="vkEnumeratePhysicalDevices"/>
- <command name="vkGetPhysicalDeviceFeatures"/>
- <command name="vkGetPhysicalDeviceFormatProperties"/>
- <command name="vkGetPhysicalDeviceImageFormatProperties"/>
- <command name="vkGetPhysicalDeviceProperties"/>
- <command name="vkGetPhysicalDeviceQueueFamilyProperties"/>
- <command name="vkGetPhysicalDeviceMemoryProperties"/>
- <command name="vkGetInstanceProcAddr"/>
- <command name="vkGetDeviceProcAddr"/>
- </require>
- <require comment="Device commands">
- <type name="VkDevice"/>
- <type name="VkDeviceCreateFlags" comment="Will add VkDeviceCreateFlagBits when bits are defined in the future"/>
- <type name="VkDeviceCreateInfo"/>
- <type name="VkDeviceQueueCreateFlags" comment="VkDeviceQueueCreateFlagBits was added later"/>
- <type name="VkDeviceQueueCreateInfo"/>
- <command name="vkCreateDevice"/>
- <command name="vkDestroyDevice"/>
- </require>
- <require comment="Extension discovery commands">
- <type name="VkExtensionProperties"/>
- <command name="vkEnumerateInstanceExtensionProperties"/>
- <command name="vkEnumerateDeviceExtensionProperties"/>
- </require>
- <require comment="Layer discovery commands">
- <type name="VkLayerProperties"/>
- <command name="vkEnumerateInstanceLayerProperties"/>
- <command name="vkEnumerateDeviceLayerProperties"/>
- </require>
- <require comment="Queue commands">
- <type name="VkPipelineStageFlagBits"/>
- <type name="VkPipelineStageFlags"/>
- <type name="VkQueue"/>
- <type name="VkSubmitInfo"/>
- <command name="vkGetDeviceQueue"/>
- <command name="vkQueueSubmit"/>
- <command name="vkQueueWaitIdle"/>
- <command name="vkDeviceWaitIdle"/>
- </require>
- <require comment="Memory commands">
- <type name="VkMappedMemoryRange"/>
- <type name="VkMemoryAllocateInfo"/>
- <type name="VkMemoryMapFlags"/>
- <command name="vkAllocateMemory"/>
- <command name="vkFreeMemory"/>
- <command name="vkMapMemory"/>
- <command name="vkUnmapMemory"/>
- <command name="vkFlushMappedMemoryRanges"/>
- <command name="vkInvalidateMappedMemoryRanges"/>
- <command name="vkGetDeviceMemoryCommitment"/>
- </require>
- <require comment="Memory management API commands">
- <type name="VkDeviceMemory"/>
- <type name="VkMemoryRequirements"/>
- <command name="vkBindBufferMemory"/>
- <command name="vkBindImageMemory"/>
- <command name="vkGetBufferMemoryRequirements"/>
- <command name="vkGetImageMemoryRequirements"/>
- </require>
- <require comment="Sparse resource memory management API commands">
- <type name="VkBindSparseInfo"/>
- <type name="VkImageAspectFlagBits"/>
- <type name="VkImageAspectFlags"/>
- <type name="VkImageSubresource"/>
- <type name="VkSparseBufferMemoryBindInfo"/>
- <type name="VkSparseImageFormatFlagBits"/>
- <type name="VkSparseImageFormatFlags"/>
- <type name="VkSparseImageFormatProperties"/>
- <type name="VkSparseImageMemoryBind"/>
- <type name="VkSparseImageMemoryBindInfo"/>
- <type name="VkSparseImageMemoryRequirements"/>
- <type name="VkSparseImageOpaqueMemoryBindInfo"/>
- <type name="VkSparseMemoryBind"/>
- <type name="VkSparseMemoryBindFlagBits"/>
- <type name="VkSparseMemoryBindFlags"/>
- <command name="vkGetImageSparseMemoryRequirements"/>
- <command name="vkGetPhysicalDeviceSparseImageFormatProperties"/>
- <command name="vkQueueBindSparse"/>
- </require>
- <require comment="Fence commands">
- <type name="VkFence"/>
- <type name="VkFenceCreateFlagBits"/>
- <type name="VkFenceCreateFlags"/>
- <type name="VkFenceCreateInfo"/>
- <command name="vkCreateFence"/>
- <command name="vkDestroyFence"/>
- <command name="vkResetFences"/>
- <command name="vkGetFenceStatus"/>
- <command name="vkWaitForFences"/>
- </require>
- <require comment="Queue semaphore commands">
- <type name="VkSemaphore"/>
- <type name="VkSemaphoreCreateFlags" comment="Will add VkSemaphoreCreateFlagBits when bits are defined in the future"/>
- <type name="VkSemaphoreCreateInfo"/>
- <command name="vkCreateSemaphore"/>
- <command name="vkDestroySemaphore"/>
- </require>
- <require comment="Event commands">
- <type name="VkEvent"/>
- <type name="VkEventCreateFlags"/>
- <type name="VkEventCreateFlagBits"/>
- <type name="VkEventCreateInfo"/>
- <command name="vkCreateEvent"/>
- <command name="vkDestroyEvent"/>
- <command name="vkGetEventStatus"/>
- <command name="vkSetEvent"/>
- <command name="vkResetEvent"/>
- </require>
- <require comment="Query commands">
- <type name="VkQueryPipelineStatisticFlagBits"/>
- <type name="VkQueryPipelineStatisticFlags"/>
- <type name="VkQueryPool"/>
- <type name="VkQueryPoolCreateFlags" comment="Will add VkQueryPoolCreateFlagBits when bits are defined in the future"/>
- <type name="VkQueryPoolCreateInfo"/>
- <type name="VkQueryResultFlagBits"/>
- <type name="VkQueryResultFlags"/>
- <type name="VkQueryType"/>
- <command name="vkCreateQueryPool"/>
- <command name="vkDestroyQueryPool"/>
- <command name="vkGetQueryPoolResults"/>
- </require>
- <require comment="Buffer commands">
- <type name="VkBuffer"/>
- <type name="VkBufferCreateFlagBits"/>
- <type name="VkBufferCreateFlags"/>
- <type name="VkBufferCreateInfo"/>
- <type name="VkBufferUsageFlagBits"/>
- <type name="VkBufferUsageFlags"/>
- <type name="VkSharingMode"/>
- <command name="vkCreateBuffer"/>
- <command name="vkDestroyBuffer"/>
- </require>
- <require comment="Buffer view commands">
- <type name="VkBufferView"/>
- <type name="VkBufferViewCreateFlags" comment="Will add VkBufferViewFlagBits when bits are defined in the future"/>
- <type name="VkBufferViewCreateInfo"/>
- <command name="vkCreateBufferView"/>
- <command name="vkDestroyBufferView"/>
- </require>
- <require comment="Image commands">
- <type name="VkImage"/>
- <type name="VkImageCreateInfo"/>
- <type name="VkImageLayout"/>
- <type name="VkSubresourceLayout"/>
- <command name="vkCreateImage"/>
- <command name="vkDestroyImage"/>
- <command name="vkGetImageSubresourceLayout"/>
- </require>
- <require comment="Image view commands">
- <type name="VkComponentMapping"/>
- <type name="VkComponentSwizzle"/>
- <type name="VkImageSubresourceRange"/>
- <type name="VkImageView"/>
- <type name="VkImageViewCreateFlagBits"/>
- <type name="VkImageViewCreateFlags"/>
- <type name="VkImageViewCreateInfo"/>
- <type name="VkImageViewType"/>
- <command name="vkCreateImageView"/>
- <command name="vkDestroyImageView"/>
- </require>
- <require comment="Shader commands">
- <type name="VkShaderModule"/>
- <type name="VkShaderModuleCreateFlags"/>
- <type name="VkShaderModuleCreateInfo"/>
- <command name="vkCreateShaderModule"/>
- <command name="vkDestroyShaderModule"/>
- </require>
- <require comment="Pipeline Cache commands">
- <type name="VkPipelineCache"/>
- <type name="VkPipelineCacheCreateFlags" comment="VkPipelineCacheCreateFlagBits was added later"/>
- <type name="VkPipelineCacheCreateInfo"/>
- <command name="vkCreatePipelineCache"/>
- <command name="vkDestroyPipelineCache"/>
- <command name="vkGetPipelineCacheData"/>
- <command name="vkMergePipelineCaches"/>
- </require>
- <require comment="Pipeline commands">
- <type name="VkBlendFactor"/>
- <type name="VkBlendOp"/>
- <type name="VkColorComponentFlagBits"/>
- <type name="VkColorComponentFlags"/>
- <type name="VkCompareOp"/>
- <type name="VkComputePipelineCreateInfo"/>
- <type name="VkCullModeFlagBits"/>
- <type name="VkCullModeFlags"/>
- <type name="VkDynamicState"/>
- <type name="VkFrontFace"/>
- <type name="VkGraphicsPipelineCreateInfo"/>
- <type name="VkLogicOp"/>
- <type name="VkPipeline"/>
- <type name="VkPipelineColorBlendAttachmentState"/>
- <type name="VkPipelineColorBlendStateCreateFlags" comment="Will add VkPipeline*StateFlagBits when bits are defined in the future"/>
- <type name="VkPipelineColorBlendStateCreateInfo"/>
- <type name="VkPipelineCreateFlagBits"/>
- <type name="VkPipelineCreateFlags"/>
- <type name="VkPipelineDepthStencilStateCreateFlags" comment="Will add VkPipeline*StateFlagBits when bits are defined in the future"/>
- <type name="VkPipelineDepthStencilStateCreateInfo"/>
- <type name="VkPipelineDynamicStateCreateFlags" comment="Will add VkPipeline*StateFlagBits when bits are defined in the future"/>
- <type name="VkPipelineDynamicStateCreateInfo"/>
- <type name="VkPipelineInputAssemblyStateCreateFlags" comment="Will add VkPipeline*StateFlagBits when bits are defined in the future"/>
- <type name="VkPipelineInputAssemblyStateCreateInfo"/>
- <type name="VkPipelineLayoutCreateFlags" comment="Will add VkPipelineLayoutCreateFlagBits when bits are defined in the future"/>
- <type name="VkPipelineMultisampleStateCreateFlags" comment="Will add VkPipelineMultisampleStateCreateFlagBits when bits are defined in the future"/>
- <type name="VkPipelineMultisampleStateCreateInfo"/>
- <type name="VkPipelineRasterizationStateCreateFlags" comment="Will add VkPipelineRasterizationStateCreateFlagBits when bits are defined in the future"/>
- <type name="VkPipelineRasterizationStateCreateInfo"/>
- <type name="VkPipelineShaderStageCreateFlagBits"/>
- <type name="VkPipelineShaderStageCreateFlags"/>
- <type name="VkPipelineShaderStageCreateInfo"/>
- <type name="VkPipelineTessellationStateCreateFlags" comment="Will add VkPipelineTessellationStateCreateFlagBits when bits are defined in the future"/>
- <type name="VkPipelineTessellationStateCreateInfo"/>
- <type name="VkPipelineVertexInputStateCreateFlags" comment="Will add VkPipelineVertexInputStateCreateFlagBits when bits are defined in the future"/>
- <type name="VkPipelineVertexInputStateCreateInfo"/>
- <type name="VkPipelineViewportStateCreateFlags" comment="Will add VkPipelineViewportStateCreateFlagBits when bits are defined in the future"/>
- <type name="VkPipelineViewportStateCreateInfo"/>
- <type name="VkPolygonMode"/>
- <type name="VkPrimitiveTopology"/>
- <type name="VkSampleMask"/>
- <type name="VkShaderStageFlagBits"/>
- <type name="VkShaderStageFlags"/>
- <type name="VkSpecializationInfo"/>
- <type name="VkSpecializationMapEntry"/>
- <type name="VkStencilOp"/>
- <type name="VkStencilOpState"/>
- <type name="VkVertexInputAttributeDescription"/>
- <type name="VkVertexInputBindingDescription"/>
- <type name="VkVertexInputRate"/>
- <type name="VkViewport"/>
- <command name="vkCreateGraphicsPipelines"/>
- <command name="vkCreateComputePipelines"/>
- <command name="vkDestroyPipeline"/>
- </require>
- <require comment="Pipeline layout commands">
- <type name="VkPipelineLayout"/>
- <type name="VkPipelineLayoutCreateInfo"/>
- <type name="VkPushConstantRange"/>
- <command name="vkCreatePipelineLayout"/>
- <command name="vkDestroyPipelineLayout"/>
- </require>
- <require comment="Sampler commands">
- <type name="VkBorderColor"/>
- <type name="VkFilter"/>
- <type name="VkSampler"/>
- <type name="VkSamplerAddressMode"/>
- <type name="VkSamplerCreateFlagBits"/>
- <type name="VkSamplerCreateFlags"/>
- <type name="VkSamplerCreateInfo"/>
- <type name="VkSamplerMipmapMode"/>
- <command name="vkCreateSampler"/>
- <command name="vkDestroySampler"/>
- </require>
- <require comment="Descriptor set commands">
- <type name="VkCopyDescriptorSet"/>
- <type name="VkDescriptorBufferInfo"/>
- <type name="VkDescriptorImageInfo"/>
- <type name="VkDescriptorPool"/>
- <type name="VkDescriptorPoolCreateFlagBits"/>
- <type name="VkDescriptorPoolCreateFlags"/>
- <type name="VkDescriptorPoolCreateInfo"/>
- <type name="VkDescriptorPoolResetFlags"/>
- <type name="VkDescriptorPoolSize"/>
- <type name="VkDescriptorSet"/>
- <type name="VkDescriptorSetAllocateInfo"/>
- <type name="VkDescriptorSetLayout"/>
- <type name="VkDescriptorSetLayoutBinding"/>
- <type name="VkDescriptorSetLayoutCreateFlagBits"/>
- <type name="VkDescriptorSetLayoutCreateFlags"/>
- <type name="VkDescriptorSetLayoutCreateInfo"/>
- <type name="VkDescriptorType"/>
- <type name="VkWriteDescriptorSet"/>
- <command name="vkCreateDescriptorSetLayout"/>
- <command name="vkDestroyDescriptorSetLayout"/>
- <command name="vkCreateDescriptorPool"/>
- <command name="vkDestroyDescriptorPool"/>
- <command name="vkResetDescriptorPool"/>
- <command name="vkAllocateDescriptorSets"/>
- <command name="vkFreeDescriptorSets"/>
- <command name="vkUpdateDescriptorSets"/>
- </require>
- <require comment="Pass commands">
- <type name="VkAccessFlagBits"/>
- <type name="VkAccessFlags"/>
- <type name="VkAttachmentDescription"/>
- <type name="VkAttachmentDescriptionFlagBits"/>
- <type name="VkAttachmentDescriptionFlags"/>
- <type name="VkAttachmentLoadOp"/>
- <type name="VkAttachmentReference"/>
- <type name="VkAttachmentStoreOp"/>
- <type name="VkDependencyFlagBits"/>
- <type name="VkDependencyFlags"/>
- <type name="VkFramebuffer"/>
- <type name="VkFramebufferCreateFlagBits"/>
- <type name="VkFramebufferCreateFlags"/>
- <type name="VkFramebufferCreateInfo"/>
- <type name="VkPipelineBindPoint"/>
- <type name="VkRenderPass"/>
- <type name="VkRenderPassCreateFlagBits"/>
- <type name="VkRenderPassCreateFlags"/>
- <type name="VkRenderPassCreateInfo"/>
- <type name="VkSubpassDependency"/>
- <type name="VkSubpassDescription"/>
- <type name="VkSubpassDescriptionFlagBits"/>
- <type name="VkSubpassDescriptionFlags"/>
- <command name="vkCreateFramebuffer"/>
- <command name="vkDestroyFramebuffer"/>
- <command name="vkCreateRenderPass"/>
- <command name="vkDestroyRenderPass"/>
- <command name="vkGetRenderAreaGranularity"/>
- </require>
- <require comment="Command pool commands">
- <type name="VkCommandPool"/>
- <type name="VkCommandPoolCreateFlagBits"/>
- <type name="VkCommandPoolCreateFlags"/>
- <type name="VkCommandPoolCreateInfo"/>
- <type name="VkCommandPoolResetFlagBits"/>
- <type name="VkCommandPoolResetFlags"/>
- <command name="vkCreateCommandPool"/>
- <command name="vkDestroyCommandPool"/>
- <command name="vkResetCommandPool"/>
- </require>
- <require comment="Command buffer commands">
- <type name="VkCommandBuffer"/>
- <type name="VkCommandBufferAllocateInfo"/>
- <type name="VkCommandBufferBeginInfo"/>
- <type name="VkCommandBufferInheritanceInfo"/>
- <type name="VkCommandBufferLevel"/>
- <type name="VkCommandBufferResetFlagBits"/>
- <type name="VkCommandBufferResetFlags"/>
- <type name="VkCommandBufferUsageFlagBits"/>
- <type name="VkCommandBufferUsageFlags"/>
- <type name="VkQueryControlFlagBits"/>
- <type name="VkQueryControlFlags"/>
- <command name="vkAllocateCommandBuffers"/>
- <command name="vkFreeCommandBuffers"/>
- <command name="vkBeginCommandBuffer"/>
- <command name="vkEndCommandBuffer"/>
- <command name="vkResetCommandBuffer"/>
- </require>
- <require comment="Command buffer building commands">
- <type name="VkBufferCopy"/>
- <type name="VkBufferImageCopy"/>
- <type name="VkClearAttachment"/>
- <type name="VkClearColorValue"/>
- <type name="VkClearDepthStencilValue"/>
- <type name="VkClearRect"/>
- <type name="VkClearValue"/>
- <type name="VkImageBlit"/>
- <type name="VkImageCopy"/>
- <type name="VkImageResolve"/>
- <type name="VkImageSubresourceLayers"/>
- <type name="VkIndexType"/>
- <type name="VkRenderPassBeginInfo"/>
- <type name="VkStencilFaceFlagBits"/>
- <type name="VkStencilFaceFlags"/>
- <type name="VkSubpassContents"/>
- <command name="vkCmdBindPipeline"/>
- <command name="vkCmdSetViewport"/>
- <command name="vkCmdSetScissor"/>
- <command name="vkCmdSetLineWidth"/>
- <command name="vkCmdSetDepthBias"/>
- <command name="vkCmdSetBlendConstants"/>
- <command name="vkCmdSetDepthBounds"/>
- <command name="vkCmdSetStencilCompareMask"/>
- <command name="vkCmdSetStencilWriteMask"/>
- <command name="vkCmdSetStencilReference"/>
- <command name="vkCmdBindDescriptorSets"/>
- <command name="vkCmdBindIndexBuffer"/>
- <command name="vkCmdBindVertexBuffers"/>
- <command name="vkCmdDraw"/>
- <command name="vkCmdDrawIndexed"/>
- <command name="vkCmdDrawIndirect"/>
- <command name="vkCmdDrawIndexedIndirect"/>
- <command name="vkCmdDispatch"/>
- <command name="vkCmdDispatchIndirect"/>
- <command name="vkCmdCopyBuffer"/>
- <command name="vkCmdCopyImage"/>
- <command name="vkCmdBlitImage"/>
- <command name="vkCmdCopyBufferToImage"/>
- <command name="vkCmdCopyImageToBuffer"/>
- <command name="vkCmdUpdateBuffer"/>
- <command name="vkCmdFillBuffer"/>
- <command name="vkCmdClearColorImage"/>
- <command name="vkCmdClearDepthStencilImage"/>
- <command name="vkCmdClearAttachments"/>
- <command name="vkCmdResolveImage"/>
- <command name="vkCmdSetEvent"/>
- <command name="vkCmdResetEvent"/>
- <command name="vkCmdWaitEvents"/>
- <command name="vkCmdPipelineBarrier"/>
- <command name="vkCmdBeginQuery"/>
- <command name="vkCmdEndQuery"/>
- <command name="vkCmdResetQueryPool"/>
- <command name="vkCmdWriteTimestamp"/>
- <command name="vkCmdCopyQueryPoolResults"/>
- <command name="vkCmdPushConstants"/>
- <command name="vkCmdBeginRenderPass"/>
- <command name="vkCmdNextSubpass"/>
- <command name="vkCmdEndRenderPass"/>
- <command name="vkCmdExecuteCommands"/>
- </require>
- </feature>
- <feature api="vulkan" name="VK_VERSION_1_1" number="1.1" comment="Vulkan 1.1 core API interface definitions.">
- <require>
- <type name="VK_API_VERSION_1_1"/>
- </require>
- <require comment="Device Initialization">
- <command name="vkEnumerateInstanceVersion"/>
- </require>
- <require comment="Promoted from VK_KHR_relaxed_block_layout, which has no API"/>
- <require comment="Promoted from VK_KHR_storage_buffer_storage_class, which has no API"/>
- <require comment="Originally based on VK_KHR_subgroup (extension 94), but the actual enum block used was, incorrectly, that of extension 95">
- <enum extends="VkStructureType" extnumber="95" offset="0" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES"/>
- <type name="VkPhysicalDeviceSubgroupProperties"/>
- <type name="VkSubgroupFeatureFlags"/>
- <type name="VkSubgroupFeatureFlagBits"/>
- </require>
- <require comment="Promoted from VK_KHR_bind_memory2">
- <command name="vkBindBufferMemory2"/>
- <command name="vkBindImageMemory2"/>
- <enum extends="VkStructureType" extnumber="158" offset="0" name="VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO"/>
- <enum extends="VkStructureType" extnumber="158" offset="1" name="VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO"/>
- <enum bitpos="10" extends="VkImageCreateFlagBits" name="VK_IMAGE_CREATE_ALIAS_BIT"/>
- <type name="VkBindBufferMemoryInfo"/>
- <type name="VkBindImageMemoryInfo"/>
- </require>
- <require comment="Promoted from VK_KHR_16bit_storage">
- <enum extends="VkStructureType" extnumber="84" offset="0" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES"/>
- <type name="VkPhysicalDevice16BitStorageFeatures"/>
- </require>
- <require comment="Promoted from VK_KHR_dedicated_allocation">
- <enum extends="VkStructureType" extnumber="128" offset="0" name="VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS"/>
- <enum extends="VkStructureType" extnumber="128" offset="1" name="VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO"/>
- <type name="VkMemoryDedicatedRequirements"/>
- <type name="VkMemoryDedicatedAllocateInfo"/>
- </require>
- <require comment="Promoted from VK_KHR_device_group">
- <enum extends="VkStructureType" extnumber="61" offset="0" name="VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO"/>
- <comment>offset 1 reserved for the old VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHX enum</comment>
- <comment>offset 2 reserved for the old VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHX enum</comment>
- <enum extends="VkStructureType" extnumber="61" offset="3" name="VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO"/>
- <enum extends="VkStructureType" extnumber="61" offset="4" name="VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO"/>
- <enum extends="VkStructureType" extnumber="61" offset="5" name="VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO"/>
- <enum extends="VkStructureType" extnumber="61" offset="6" name="VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO"/>
- <type name="VkPeerMemoryFeatureFlags"/>
- <type name="VkPeerMemoryFeatureFlagBits"/>
- <type name="VkMemoryAllocateFlags"/>
- <type name="VkMemoryAllocateFlagBits"/>
- <type name="VkMemoryAllocateFlagsInfo"/>
- <type name="VkDeviceGroupRenderPassBeginInfo"/>
- <type name="VkDeviceGroupCommandBufferBeginInfo"/>
- <type name="VkDeviceGroupSubmitInfo"/>
- <type name="VkDeviceGroupBindSparseInfo"/>
- <command name="vkGetDeviceGroupPeerMemoryFeatures"/>
- <command name="vkCmdSetDeviceMask"/>
- <command name="vkCmdDispatchBase"/>
- <enum bitpos="3" extends="VkPipelineCreateFlagBits" name="VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT"/>
- <enum bitpos="4" extends="VkPipelineCreateFlagBits" name="VK_PIPELINE_CREATE_DISPATCH_BASE_BIT"/>
- <enum extends="VkPipelineCreateFlagBits" name="VK_PIPELINE_CREATE_DISPATCH_BASE" alias="VK_PIPELINE_CREATE_DISPATCH_BASE_BIT"/>
- <enum bitpos="2" extends="VkDependencyFlagBits" name="VK_DEPENDENCY_DEVICE_GROUP_BIT" comment="Dependency is across devices"/>
- </require>
- <require comment="Promoted from VK_KHR_device_group + VK_KHR_bind_memory2">
- <enum extends="VkStructureType" extnumber="61" offset="13" name="VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO"/>
- <enum extends="VkStructureType" extnumber="61" offset="14" name="VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO"/>
- <type name="VkBindBufferMemoryDeviceGroupInfo"/>
- <type name="VkBindImageMemoryDeviceGroupInfo"/>
- <enum bitpos="6" extends="VkImageCreateFlagBits" name="VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT" comment="Allows using VkBindImageMemoryDeviceGroupInfo::pSplitInstanceBindRegions when binding memory to the image"/>
- </require>
- <require comment="Promoted from VK_KHR_device_group_creation">
- <enum extends="VkStructureType" extnumber="71" offset="0" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES"/>
- <enum extends="VkStructureType" extnumber="71" offset="1" name="VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO"/>
- <enum name="VK_MAX_DEVICE_GROUP_SIZE"/>
- <type name="VkPhysicalDeviceGroupProperties"/>
- <type name="VkDeviceGroupDeviceCreateInfo"/>
- <command name="vkEnumeratePhysicalDeviceGroups"/>
- <enum bitpos="1" extends="VkMemoryHeapFlagBits" name="VK_MEMORY_HEAP_MULTI_INSTANCE_BIT" comment="If set, heap allocations allocate multiple instances by default"/>
- </require>
- <require comment="Promoted from VK_KHR_get_memory_requirements2">
- <enum extends="VkStructureType" extnumber="147" offset="0" name="VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2"/>
- <enum extends="VkStructureType" extnumber="147" offset="1" name="VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2"/>
- <enum extends="VkStructureType" extnumber="147" offset="2" name="VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2"/>
- <enum extends="VkStructureType" extnumber="147" offset="3" name="VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2"/>
- <enum extends="VkStructureType" extnumber="147" offset="4" name="VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2"/>
- <type name="VkBufferMemoryRequirementsInfo2"/>
- <type name="VkImageMemoryRequirementsInfo2"/>
- <type name="VkImageSparseMemoryRequirementsInfo2"/>
- <type name="VkMemoryRequirements2"/>
- <type name="VkSparseImageMemoryRequirements2"/>
- <command name="vkGetImageMemoryRequirements2"/>
- <command name="vkGetBufferMemoryRequirements2"/>
- <command name="vkGetImageSparseMemoryRequirements2"/>
- </require>
- <require comment="Promoted from VK_KHR_get_physical_device_properties2">
- <enum extends="VkStructureType" extnumber="60" offset="0" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2"/>
- <enum extends="VkStructureType" extnumber="60" offset="1" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2"/>
- <enum extends="VkStructureType" extnumber="60" offset="2" name="VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2"/>
- <enum extends="VkStructureType" extnumber="60" offset="3" name="VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2"/>
- <enum extends="VkStructureType" extnumber="60" offset="4" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2"/>
- <enum extends="VkStructureType" extnumber="60" offset="5" name="VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2"/>
- <enum extends="VkStructureType" extnumber="60" offset="6" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2"/>
- <enum extends="VkStructureType" extnumber="60" offset="7" name="VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2"/>
- <enum extends="VkStructureType" extnumber="60" offset="8" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2"/>
- <type name="VkPhysicalDeviceFeatures2"/>
- <type name="VkPhysicalDeviceProperties2"/>
- <type name="VkFormatProperties2"/>
- <type name="VkImageFormatProperties2"/>
- <type name="VkPhysicalDeviceImageFormatInfo2"/>
- <type name="VkQueueFamilyProperties2"/>
- <type name="VkPhysicalDeviceMemoryProperties2"/>
- <type name="VkSparseImageFormatProperties2"/>
- <type name="VkPhysicalDeviceSparseImageFormatInfo2"/>
- <command name="vkGetPhysicalDeviceFeatures2"/>
- <command name="vkGetPhysicalDeviceProperties2"/>
- <command name="vkGetPhysicalDeviceFormatProperties2"/>
- <command name="vkGetPhysicalDeviceImageFormatProperties2"/>
- <command name="vkGetPhysicalDeviceQueueFamilyProperties2"/>
- <command name="vkGetPhysicalDeviceMemoryProperties2"/>
- <command name="vkGetPhysicalDeviceSparseImageFormatProperties2"/>
- </require>
- <require comment="Promoted from VK_KHR_maintenance1">
- <enum extends="VkResult" extnumber="70" offset="0" dir="-" name="VK_ERROR_OUT_OF_POOL_MEMORY"/>
- <enum bitpos="14" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_TRANSFER_SRC_BIT" comment="Format can be used as the source image of image transfer commands"/>
- <enum bitpos="15" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_TRANSFER_DST_BIT" comment="Format can be used as the destination image of image transfer commands"/>
- <enum bitpos="5" extends="VkImageCreateFlagBits" name="VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT" comment="The 3D image can be viewed as a 2D or 2D array image"/>
- <command name="vkTrimCommandPool"/>
- <comment>Additional dependent types / tokens extending enumerants, not explicitly mentioned</comment>
- <type name="VkCommandPoolTrimFlags"/>
- </require>
- <require comment="Promoted from VK_KHR_maintenance2">
- <enum bitpos="7" extends="VkImageCreateFlagBits" name="VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT"/>
- <enum bitpos="8" extends="VkImageCreateFlagBits" name="VK_IMAGE_CREATE_EXTENDED_USAGE_BIT"/>
- <enum extends="VkStructureType" extnumber="118" offset="0" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES"/>
- <enum extends="VkStructureType" extnumber="118" offset="1" name="VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO"/>
- <enum extends="VkStructureType" extnumber="118" offset="2" name="VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO"/>
- <enum extends="VkStructureType" extnumber="118" offset="3" name="VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO"/>
- <enum extends="VkImageLayout" extnumber="118" offset="0" name="VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL"/>
- <enum extends="VkImageLayout" extnumber="118" offset="1" name="VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL"/>
- <type name="VkPhysicalDevicePointClippingProperties"/>
- <type name="VkPointClippingBehavior"/>
- <type name="VkRenderPassInputAttachmentAspectCreateInfo"/>
- <type name="VkInputAttachmentAspectReference"/>
- <type name="VkImageViewUsageCreateInfo"/>
- <type name="VkTessellationDomainOrigin"/>
- <type name="VkPipelineTessellationDomainOriginStateCreateInfo"/>
- </require>
- <require comment="Promoted from VK_KHR_multiview">
- <enum extends="VkStructureType" extnumber="54" offset="0" name="VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO"/>
- <enum extends="VkStructureType" extnumber="54" offset="1" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES"/>
- <enum extends="VkStructureType" extnumber="54" offset="2" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES"/>
- <enum bitpos="1" extends="VkDependencyFlagBits" name="VK_DEPENDENCY_VIEW_LOCAL_BIT"/>
- <type name="VkRenderPassMultiviewCreateInfo"/>
- <type name="VkPhysicalDeviceMultiviewFeatures"/>
- <type name="VkPhysicalDeviceMultiviewProperties"/>
- </require>
- <require comment="Promoted from VK_KHR_variable_pointers">
- <enum extends="VkStructureType" extnumber="121" offset="0" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES"/>
- <type name="VkPhysicalDeviceVariablePointerFeatures"/>
- <type name="VkPhysicalDeviceVariablePointersFeatures"/>
- </require>
- <require comment="Originally based on VK_KHR_protected_memory (extension 146), which was never published; thus the mystifying large value= numbers below. These are not aliased since they weren't actually promoted from an extension.">
- <enum extends="VkStructureType" extnumber="146" offset="0" name="VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO"/>
- <enum extends="VkStructureType" extnumber="146" offset="1" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES"/>
- <enum extends="VkStructureType" extnumber="146" offset="2" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES"/>
- <enum extends="VkStructureType" extnumber="146" offset="3" name="VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2"/>
- <enum bitpos="4" extends="VkQueueFlagBits" name="VK_QUEUE_PROTECTED_BIT" comment="Queues may support protected operations"/>
- <enum bitpos="0" extends="VkDeviceQueueCreateFlagBits" name="VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT" comment="Queue is a protected-capable device queue"/>
- <type name="VkDeviceQueueCreateFlagBits" comment="This is a temporary workaround for processors not recognizing that VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT above also requires this type"/>
- <enum bitpos="5" extends="VkMemoryPropertyFlagBits" name="VK_MEMORY_PROPERTY_PROTECTED_BIT" comment="Memory is protected"/>
- <enum bitpos="3" extends="VkBufferCreateFlagBits" name="VK_BUFFER_CREATE_PROTECTED_BIT" comment="Buffer requires protected memory"/>
- <enum bitpos="11" extends="VkImageCreateFlagBits" name="VK_IMAGE_CREATE_PROTECTED_BIT" comment="Image requires protected memory"/>
- <enum bitpos="2" extends="VkCommandPoolCreateFlagBits" name="VK_COMMAND_POOL_CREATE_PROTECTED_BIT" comment="Command buffers allocated from pool are protected command buffers"/>
- <type name="VkPhysicalDeviceProtectedMemoryFeatures"/>
- <type name="VkPhysicalDeviceProtectedMemoryProperties"/>
- <type name="VkDeviceQueueInfo2"/>
- <type name="VkProtectedSubmitInfo"/>
- <command name="vkGetDeviceQueue2"/>
- </require>
- <require comment="Promoted from VK_KHR_sampler_ycbcr_conversion">
- <enum extends="VkStructureType" extnumber="157" offset="0" name="VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO"/>
- <enum extends="VkStructureType" extnumber="157" offset="1" name="VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO"/>
- <enum extends="VkStructureType" extnumber="157" offset="2" name="VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO"/>
- <enum extends="VkStructureType" extnumber="157" offset="3" name="VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO"/>
- <enum extends="VkStructureType" extnumber="157" offset="4" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES"/>
- <enum extends="VkStructureType" extnumber="157" offset="5" name="VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES"/>
- <enum extends="VkObjectType" extnumber="157" offset="0" name="VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION"/>
- <enum extends="VkFormat" extnumber="157" offset="0" name="VK_FORMAT_G8B8G8R8_422_UNORM"/>
- <enum extends="VkFormat" extnumber="157" offset="1" name="VK_FORMAT_B8G8R8G8_422_UNORM"/>
- <enum extends="VkFormat" extnumber="157" offset="2" name="VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM"/>
- <enum extends="VkFormat" extnumber="157" offset="3" name="VK_FORMAT_G8_B8R8_2PLANE_420_UNORM"/>
- <enum extends="VkFormat" extnumber="157" offset="4" name="VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM"/>
- <enum extends="VkFormat" extnumber="157" offset="5" name="VK_FORMAT_G8_B8R8_2PLANE_422_UNORM"/>
- <enum extends="VkFormat" extnumber="157" offset="6" name="VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM"/>
- <enum extends="VkFormat" extnumber="157" offset="7" name="VK_FORMAT_R10X6_UNORM_PACK16"/>
- <enum extends="VkFormat" extnumber="157" offset="8" name="VK_FORMAT_R10X6G10X6_UNORM_2PACK16"/>
- <enum extends="VkFormat" extnumber="157" offset="9" name="VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16"/>
- <enum extends="VkFormat" extnumber="157" offset="10" name="VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16"/>
- <enum extends="VkFormat" extnumber="157" offset="11" name="VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16"/>
- <enum extends="VkFormat" extnumber="157" offset="12" name="VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16"/>
- <enum extends="VkFormat" extnumber="157" offset="13" name="VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16"/>
- <enum extends="VkFormat" extnumber="157" offset="14" name="VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16"/>
- <enum extends="VkFormat" extnumber="157" offset="15" name="VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16"/>
- <enum extends="VkFormat" extnumber="157" offset="16" name="VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16"/>
- <enum extends="VkFormat" extnumber="157" offset="17" name="VK_FORMAT_R12X4_UNORM_PACK16"/>
- <enum extends="VkFormat" extnumber="157" offset="18" name="VK_FORMAT_R12X4G12X4_UNORM_2PACK16"/>
- <enum extends="VkFormat" extnumber="157" offset="19" name="VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16"/>
- <enum extends="VkFormat" extnumber="157" offset="20" name="VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16"/>
- <enum extends="VkFormat" extnumber="157" offset="21" name="VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16"/>
- <enum extends="VkFormat" extnumber="157" offset="22" name="VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16"/>
- <enum extends="VkFormat" extnumber="157" offset="23" name="VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16"/>
- <enum extends="VkFormat" extnumber="157" offset="24" name="VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16"/>
- <enum extends="VkFormat" extnumber="157" offset="25" name="VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16"/>
- <enum extends="VkFormat" extnumber="157" offset="26" name="VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16"/>
- <enum extends="VkFormat" extnumber="157" offset="27" name="VK_FORMAT_G16B16G16R16_422_UNORM"/>
- <enum extends="VkFormat" extnumber="157" offset="28" name="VK_FORMAT_B16G16R16G16_422_UNORM"/>
- <enum extends="VkFormat" extnumber="157" offset="29" name="VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM"/>
- <enum extends="VkFormat" extnumber="157" offset="30" name="VK_FORMAT_G16_B16R16_2PLANE_420_UNORM"/>
- <enum extends="VkFormat" extnumber="157" offset="31" name="VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM"/>
- <enum extends="VkFormat" extnumber="157" offset="32" name="VK_FORMAT_G16_B16R16_2PLANE_422_UNORM"/>
- <enum extends="VkFormat" extnumber="157" offset="33" name="VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM"/>
- <enum bitpos="4" extends="VkImageAspectFlagBits" name="VK_IMAGE_ASPECT_PLANE_0_BIT"/>
- <enum bitpos="5" extends="VkImageAspectFlagBits" name="VK_IMAGE_ASPECT_PLANE_1_BIT"/>
- <enum bitpos="6" extends="VkImageAspectFlagBits" name="VK_IMAGE_ASPECT_PLANE_2_BIT"/>
- <enum bitpos="9" extends="VkImageCreateFlagBits" name="VK_IMAGE_CREATE_DISJOINT_BIT"/>
- <enum bitpos="17" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT" comment="Format can have midpoint rather than cosited chroma samples"/>
- <enum bitpos="18" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT" comment="Format can be used with linear filtering whilst color conversion is enabled"/>
- <enum bitpos="19" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT" comment="Format can have different chroma, min and mag filters"/>
- <enum bitpos="20" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT"/>
- <enum bitpos="21" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT"/>
- <enum bitpos="22" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_DISJOINT_BIT" comment="Format supports disjoint planes"/>
- <enum bitpos="23" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT" comment="Format can have cosited rather than midpoint chroma samples"/>
- <type name="VkSamplerYcbcrConversionCreateInfo"/>
- <type name="VkSamplerYcbcrConversionInfo"/>
- <type name="VkBindImagePlaneMemoryInfo"/>
- <type name="VkImagePlaneMemoryRequirementsInfo"/>
- <type name="VkPhysicalDeviceSamplerYcbcrConversionFeatures"/>
- <type name="VkSamplerYcbcrConversionImageFormatProperties"/>
- <command name="vkCreateSamplerYcbcrConversion"/>
- <command name="vkDestroySamplerYcbcrConversion"/>
- <comment>Additional dependent types / tokens extending enumerants, not explicitly mentioned</comment>
- <type name="VkSamplerYcbcrConversion"/>
- <type name="VkSamplerYcbcrModelConversion"/>
- <type name="VkSamplerYcbcrRange"/>
- <type name="VkChromaLocation"/>
- </require>
- <require comment="Promoted from VK_KHR_descriptor_update_template">
- <enum extends="VkStructureType" extnumber="86" offset="0" name="VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO"/>
- <enum extends="VkObjectType" extnumber="86" offset="0" name="VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE"/>
- <command name="vkCreateDescriptorUpdateTemplate"/>
- <command name="vkDestroyDescriptorUpdateTemplate"/>
- <command name="vkUpdateDescriptorSetWithTemplate"/>
- <type name="VkDescriptorUpdateTemplate"/>
- <type name="VkDescriptorUpdateTemplateCreateFlags"/>
- <type name="VkDescriptorUpdateTemplateType"/>
- <type name="VkDescriptorUpdateTemplateEntry"/>
- <type name="VkDescriptorUpdateTemplateCreateInfo"/>
- </require>
- <require comment="Promoted from VK_KHR_external_memory_capabilities">
- <enum extends="VkStructureType" extnumber="72" offset="0" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO"/>
- <enum extends="VkStructureType" extnumber="72" offset="1" name="VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES"/>
- <enum extends="VkStructureType" extnumber="72" offset="2" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO"/>
- <enum extends="VkStructureType" extnumber="72" offset="3" name="VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES"/>
- <enum extends="VkStructureType" extnumber="72" offset="4" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES"/>
- <enum name="VK_LUID_SIZE"/>
- <type name="VkExternalMemoryHandleTypeFlags"/>
- <type name="VkExternalMemoryHandleTypeFlagBits"/>
- <type name="VkExternalMemoryFeatureFlags"/>
- <type name="VkExternalMemoryFeatureFlagBits"/>
- <type name="VkExternalMemoryProperties"/>
- <type name="VkPhysicalDeviceExternalImageFormatInfo"/>
- <type name="VkExternalImageFormatProperties"/>
- <type name="VkPhysicalDeviceExternalBufferInfo"/>
- <type name="VkExternalBufferProperties"/>
- <type name="VkPhysicalDeviceIDProperties"/>
- <command name="vkGetPhysicalDeviceExternalBufferProperties"/>
- </require>
- <require comment="Promoted from VK_KHR_external_memory">
- <enum extends="VkStructureType" extnumber="73" offset="0" name="VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO"/>
- <enum extends="VkStructureType" extnumber="73" offset="1" name="VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO"/>
- <enum extends="VkStructureType" extnumber="73" offset="2" name="VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO"/>
- <enum extends="VkResult" extnumber="73" offset="3" dir="-" name="VK_ERROR_INVALID_EXTERNAL_HANDLE"/>
- <enum name="VK_QUEUE_FAMILY_EXTERNAL"/>
- <type name="VkExternalMemoryImageCreateInfo"/>
- <type name="VkExternalMemoryBufferCreateInfo"/>
- <type name="VkExportMemoryAllocateInfo"/>
- </require>
- <require comment="Promoted from VK_KHR_external_fence_capabilities">
- <enum extends="VkStructureType" extnumber="113" offset="0" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO"/>
- <enum extends="VkStructureType" extnumber="113" offset="1" name="VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES"/>
- <type name="VkExternalFenceHandleTypeFlags"/>
- <type name="VkExternalFenceHandleTypeFlagBits"/>
- <type name="VkExternalFenceFeatureFlags"/>
- <type name="VkExternalFenceFeatureFlagBits"/>
- <type name="VkPhysicalDeviceExternalFenceInfo"/>
- <type name="VkExternalFenceProperties"/>
- <command name="vkGetPhysicalDeviceExternalFenceProperties"/>
- </require>
- <require comment="Promoted from VK_KHR_external_fence">
- <enum extends="VkStructureType" extnumber="114" offset="0" name="VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO"/>
- <type name="VkFenceImportFlags"/>
- <type name="VkFenceImportFlagBits"/>
- <type name="VkExportFenceCreateInfo"/>
- </require>
- <require comment="Promoted from VK_KHR_external_semaphore">
- <enum extends="VkStructureType" extnumber="78" offset="0" name="VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO"/>
- <type name="VkSemaphoreImportFlags"/>
- <type name="VkSemaphoreImportFlagBits"/>
- <type name="VkExportSemaphoreCreateInfo"/>
- </require>
- <require comment="Promoted from VK_KHR_external_semaphore_capabilities">
- <enum extends="VkStructureType" extnumber="77" offset="0" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO"/>
- <enum extends="VkStructureType" extnumber="77" offset="1" name="VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES"/>
- <type name="VkExternalSemaphoreHandleTypeFlags"/>
- <type name="VkExternalSemaphoreHandleTypeFlagBits"/>
- <type name="VkExternalSemaphoreFeatureFlags"/>
- <type name="VkExternalSemaphoreFeatureFlagBits"/>
- <type name="VkPhysicalDeviceExternalSemaphoreInfo"/>
- <type name="VkExternalSemaphoreProperties"/>
- <command name="vkGetPhysicalDeviceExternalSemaphoreProperties"/>
- </require>
- <require comment="Promoted from VK_KHR_maintenance3">
- <enum extends="VkStructureType" extnumber="169" offset="0" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES"/>
- <enum extends="VkStructureType" extnumber="169" offset="1" name="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT"/>
- <type name="VkPhysicalDeviceMaintenance3Properties"/>
- <type name="VkDescriptorSetLayoutSupport"/>
- <command name="vkGetDescriptorSetLayoutSupport"/>
- </require>
- <require comment="Promoted from VK_KHR_shader_draw_parameters, with a feature support query added">
- <enum extends="VkStructureType" extnumber="64" offset="0" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES"/>
- <type name="VkPhysicalDeviceShaderDrawParameterFeatures"/>
- <type name="VkPhysicalDeviceShaderDrawParametersFeatures"/>
- </require>
- </feature>
- <feature api="vulkan" name="VK_VERSION_1_2" number="1.2" comment="Vulkan 1.2 core API interface definitions.">
- <require>
- <type name="VK_API_VERSION_1_2"/>
- </require>
- <require>
- <enum extends="VkStructureType" value="49" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES"/>
- <enum extends="VkStructureType" value="50" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES"/>
- <enum extends="VkStructureType" value="51" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES"/>
- <enum extends="VkStructureType" value="52" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES"/>
- <type name="VkPhysicalDeviceVulkan11Features"/>
- <type name="VkPhysicalDeviceVulkan11Properties"/>
- <type name="VkPhysicalDeviceVulkan12Features"/>
- <type name="VkPhysicalDeviceVulkan12Properties"/>
- </require>
- <require comment="Promoted from VK_KHR_image_format_list (extension 148)">
- <enum offset="0" extends="VkStructureType" extnumber="148" name="VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO"/>
- <type name="VkImageFormatListCreateInfo"/>
- </require>
- <require comment="Promoted from VK_KHR_sampler_mirror_clamp_to_edge (extension 15)">
- <enum value="4" extends="VkSamplerAddressMode" name="VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE" comment="No need to add an extnumber attribute, since this uses a core enum value"/>
- </require>
- <require comment="Promoted from VK_KHR_draw_indirect_count (extension 170)">
- <command name="vkCmdDrawIndirectCount"/>
- <command name="vkCmdDrawIndexedIndirectCount"/>
- </require>
- <require comment="Promoted from VK_KHR_create_renderpass2 (extension 110)">
- <enum offset="0" extends="VkStructureType" extnumber="110" name="VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2"/>
- <enum offset="1" extends="VkStructureType" extnumber="110" name="VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2"/>
- <enum offset="2" extends="VkStructureType" extnumber="110" name="VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2"/>
- <enum offset="3" extends="VkStructureType" extnumber="110" name="VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2"/>
- <enum offset="4" extends="VkStructureType" extnumber="110" name="VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2"/>
- <enum offset="5" extends="VkStructureType" extnumber="110" name="VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO"/>
- <enum offset="6" extends="VkStructureType" extnumber="110" name="VK_STRUCTURE_TYPE_SUBPASS_END_INFO"/>
- <command name="vkCreateRenderPass2"/>
- <command name="vkCmdBeginRenderPass2"/>
- <command name="vkCmdNextSubpass2"/>
- <command name="vkCmdEndRenderPass2"/>
- <type name="VkRenderPassCreateInfo2"/>
- <type name="VkAttachmentDescription2"/>
- <type name="VkAttachmentReference2"/>
- <type name="VkSubpassDescription2"/>
- <type name="VkSubpassDependency2"/>
- <type name="VkSubpassBeginInfo"/>
- <type name="VkSubpassEndInfo"/>
- </require>
- <require comment="Promoted from VK_KHR_8bit_storage (extension 178)">
- <enum offset="0" extends="VkStructureType" extnumber="178" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES"/>
- <type name="VkPhysicalDevice8BitStorageFeatures"/>
- </require>
- <require comment="Promoted from VK_KHR_driver_properties (extension 197)">
- <enum offset="0" extends="VkStructureType" extnumber="197" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES"/>
- <enum name="VK_MAX_DRIVER_NAME_SIZE"/>
- <enum name="VK_MAX_DRIVER_INFO_SIZE"/>
- <type name="VkDriverId"/>
- <type name="VkConformanceVersion"/>
- <type name="VkPhysicalDeviceDriverProperties"/>
- </require>
- <require comment="Promoted from VK_KHR_shader_atomic_int64 (extension 181)">
- <enum offset="0" extends="VkStructureType" extnumber="181" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES"/>
- <type name="VkPhysicalDeviceShaderAtomicInt64Features"/>
- </require>
- <require comment="Promoted from VK_KHR_shader_float16_int8 (extension 83)">
- <enum offset="0" extends="VkStructureType" extnumber="83" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES"/>
- <type name="VkPhysicalDeviceShaderFloat16Int8Features"/>
- </require>
- <require comment="Promoted from VK_KHR_shader_float_controls (extension 198)">
- <enum offset="0" extends="VkStructureType" extnumber="198" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES"/>
- <type name="VkPhysicalDeviceFloatControlsProperties"/>
- <type name="VkShaderFloatControlsIndependence"/>
- </require>
- <require comment="Promoted from VK_EXT_descriptor_indexing (extension 162)">
- <enum offset="0" extends="VkStructureType" extnumber="162" name="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO"/>
- <enum offset="1" extends="VkStructureType" extnumber="162" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES"/>
- <enum offset="2" extends="VkStructureType" extnumber="162" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES"/>
- <enum offset="3" extends="VkStructureType" extnumber="162" name="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO"/>
- <enum offset="4" extends="VkStructureType" extnumber="162" name="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT"/>
- <enum bitpos="1" extends="VkDescriptorPoolCreateFlagBits" name="VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT"/>
- <enum bitpos="1" extends="VkDescriptorSetLayoutCreateFlagBits" name="VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT"/>
- <enum offset="0" dir="-" extends="VkResult" extnumber="162" name="VK_ERROR_FRAGMENTATION"/>
- <type name="VkDescriptorSetLayoutBindingFlagsCreateInfo"/>
- <type name="VkPhysicalDeviceDescriptorIndexingFeatures"/>
- <type name="VkPhysicalDeviceDescriptorIndexingProperties"/>
- <type name="VkDescriptorSetVariableDescriptorCountAllocateInfo"/>
- <type name="VkDescriptorSetVariableDescriptorCountLayoutSupport"/>
- <type name="VkDescriptorBindingFlagBits"/>
- <type name="VkDescriptorBindingFlags"/>
- </require>
- <require comment="Promoted from VK_KHR_depth_stencil_resolve (extension 200)">
- <enum offset="0" extends="VkStructureType" extnumber="200" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES"/>
- <enum offset="1" extends="VkStructureType" extnumber="200" name="VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE"/>
- <type name="VkSubpassDescriptionDepthStencilResolve"/>
- <type name="VkPhysicalDeviceDepthStencilResolveProperties"/>
- <type name="VkResolveModeFlagBits"/>
- <type name="VkResolveModeFlags"/>
- </require>
- <require comment="Promoted from VK_EXT_scalar_block_layout (extension 222))">
- <type name="VkPhysicalDeviceScalarBlockLayoutFeatures"/>
- <enum offset="0" extends="VkStructureType" extnumber="222" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES"/>
- </require>
- <require comment="Promoted from VK_EXT_shader_viewport_index_layer, which has no API (extension 163)"/>
- <require comment="Promoted from VK_EXT_separate_stencil_usage (extension 247)">
- <enum offset="0" extends="VkStructureType" extnumber="247" name="VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO"/>
- <type name="VkImageStencilUsageCreateInfo"/>
- </require>
- <require comment="Promoted from VK_EXT_sampler_filter_minmax (extension 131)">
- <enum offset="0" extends="VkStructureType" extnumber="131" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES"/>
- <enum offset="1" extends="VkStructureType" extnumber="131" name="VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO"/>
- <enum bitpos="16" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT" comment="Format can be used with min/max reduction filtering"/>
- <type name="VkSamplerReductionMode"/>
- <type name="VkSamplerReductionModeCreateInfo"/>
- <type name="VkPhysicalDeviceSamplerFilterMinmaxProperties"/>
- </require>
- <require comment="Promoted from VK_KHR_vulkan_memory_model (extension 212)">
- <enum offset="0" extends="VkStructureType" extnumber="212" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES"/>
- <type name="VkPhysicalDeviceVulkanMemoryModelFeatures"/>
- </require>
- <require comment="Promoted from VK_KHR_imageless_framebuffer (extension 109)">
- <type name="VkPhysicalDeviceImagelessFramebufferFeatures"/>
- <type name="VkFramebufferAttachmentsCreateInfo"/>
- <type name="VkFramebufferAttachmentImageInfo"/>
- <type name="VkRenderPassAttachmentBeginInfo"/>
- <enum offset="0" extends="VkStructureType" extnumber="109" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES"/>
- <enum offset="1" extends="VkStructureType" extnumber="109" name="VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO"/>
- <enum offset="2" extends="VkStructureType" extnumber="109" name="VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO"/>
- <enum offset="3" extends="VkStructureType" extnumber="109" name="VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO"/>
- <enum bitpos="0" extends="VkFramebufferCreateFlagBits" name="VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT"/>
- </require>
- <require comment="Promoted from VK_KHR_uniform_buffer_standard_layout (extension 254)">
- <type name="VkPhysicalDeviceUniformBufferStandardLayoutFeatures"/>
- <enum offset="0" extends="VkStructureType" extnumber="254" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES"/>
- </require>
- <require comment="Promoted from VK_KHR_shader_subgroup_extended_types (extension 176)">
- <enum offset="0" extends="VkStructureType" extnumber="176" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES"/>
- <type name="VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures"/>
- </require>
- <require comment="Promoted from VK_KHR_spirv_1_4 (extension 237)">
- </require>
- <require comment="Promoted from VK_KHR_separate_depth_stencil_layouts (extension 242)">
- <enum offset="0" extends="VkStructureType" extnumber="242" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES"/>
- <enum offset="1" extends="VkStructureType" extnumber="242" name="VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT"/>
- <enum offset="2" extends="VkStructureType" extnumber="242" name="VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT"/>
- <enum offset="0" extends="VkImageLayout" extnumber="242" name="VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL"/>
- <enum offset="1" extends="VkImageLayout" extnumber="242" name="VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL"/>
- <enum offset="2" extends="VkImageLayout" extnumber="242" name="VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL"/>
- <enum offset="3" extends="VkImageLayout" extnumber="242" name="VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL"/>
- <type name="VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures"/>
- <type name="VkAttachmentReferenceStencilLayout"/>
- <type name="VkAttachmentDescriptionStencilLayout"/>
- </require>
- <require comment="Promoted from VK_EXT_host_query_reset (extension 262)">
- <enum offset="0" extends="VkStructureType" extnumber="262" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES"/>
- <type name="VkPhysicalDeviceHostQueryResetFeatures"/>
- <command name="vkResetQueryPool"/>
- </require>
- <require comment="Promoted from VK_KHR_timeline_semaphore (extension 208)">
- <enum offset="0" extends="VkStructureType" extnumber="208" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES"/>
- <enum offset="1" extends="VkStructureType" extnumber="208" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES"/>
- <enum offset="2" extends="VkStructureType" extnumber="208" name="VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO"/>
- <enum offset="3" extends="VkStructureType" extnumber="208" name="VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO"/>
- <enum offset="4" extends="VkStructureType" extnumber="208" name="VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO"/>
- <enum offset="5" extends="VkStructureType" extnumber="208" name="VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO"/>
- <type name="VkSemaphoreType"/>
- <type name="VkPhysicalDeviceTimelineSemaphoreFeatures"/>
- <type name="VkPhysicalDeviceTimelineSemaphoreProperties"/>
- <type name="VkSemaphoreTypeCreateInfo"/>
- <type name="VkTimelineSemaphoreSubmitInfo"/>
- <type name="VkSemaphoreWaitFlagBits"/>
- <type name="VkSemaphoreWaitFlags"/>
- <type name="VkSemaphoreWaitInfo"/>
- <type name="VkSemaphoreSignalInfo"/>
- <command name="vkGetSemaphoreCounterValue"/>
- <command name="vkWaitSemaphores"/>
- <command name="vkSignalSemaphore"/>
- </require>
- <require comment="Promoted from VK_KHR_buffer_device_address (extension 258)">
- <enum offset="0" extends="VkStructureType" extnumber="258" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES"/>
- <enum offset="1" extends="VkStructureType" extnumber="245" name="VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO"/>
- <enum offset="2" extends="VkStructureType" extnumber="258" name="VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO"/>
- <enum offset="3" extends="VkStructureType" extnumber="258" name="VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO"/>
- <enum offset="4" extends="VkStructureType" extnumber="258" name="VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO"/>
- <enum bitpos="17" extends="VkBufferUsageFlagBits" name="VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT"/>
- <enum bitpos="4" extends="VkBufferCreateFlagBits" name="VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT"/>
- <enum bitpos="1" extends="VkMemoryAllocateFlagBits" name="VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT"/>
- <enum bitpos="2" extends="VkMemoryAllocateFlagBits" name="VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT"/>
- <enum offset="0" dir="-" extends="VkResult" extnumber="258" name="VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS"/>
- <type name="VkPhysicalDeviceBufferDeviceAddressFeatures"/>
- <type name="VkBufferDeviceAddressInfo"/>
- <type name="VkBufferOpaqueCaptureAddressCreateInfo"/>
- <type name="VkMemoryOpaqueCaptureAddressAllocateInfo"/>
- <type name="VkDeviceMemoryOpaqueCaptureAddressInfo"/>
- <command name="vkGetBufferDeviceAddress"/>
- <command name="vkGetBufferOpaqueCaptureAddress"/>
- <command name="vkGetDeviceMemoryOpaqueCaptureAddress"/>
- </require>
- </feature>
-
- <extensions comment="Vulkan extension interface definitions">
- <extension name="VK_KHR_surface" number="1" type="instance" author="KHR" contact="James Jones @cubanismo,Ian Elliott @ianelliottus" supported="vulkan">
- <require>
- <enum value="25" name="VK_KHR_SURFACE_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_surface&quot;" name="VK_KHR_SURFACE_EXTENSION_NAME"/>
- <enum offset="0" extends="VkResult" dir="-" name="VK_ERROR_SURFACE_LOST_KHR"/>
- <enum offset="1" extends="VkResult" dir="-" name="VK_ERROR_NATIVE_WINDOW_IN_USE_KHR"/>
- <enum offset="0" extends="VkObjectType" name="VK_OBJECT_TYPE_SURFACE_KHR"/>
- <type name="VkSurfaceKHR"/>
- <type name="VkSurfaceTransformFlagBitsKHR"/>
- <type name="VkPresentModeKHR"/>
- <type name="VkColorSpaceKHR"/>
- <type name="VkCompositeAlphaFlagBitsKHR"/>
- <type name="VkCompositeAlphaFlagsKHR"/>
- <type name="VkSurfaceCapabilitiesKHR"/>
- <type name="VkSurfaceFormatKHR"/>
- <command name="vkDestroySurfaceKHR"/>
- <command name="vkGetPhysicalDeviceSurfaceSupportKHR"/>
- <command name="vkGetPhysicalDeviceSurfaceCapabilitiesKHR"/>
- <command name="vkGetPhysicalDeviceSurfaceFormatsKHR"/>
- <command name="vkGetPhysicalDeviceSurfacePresentModesKHR"/>
- </require>
- </extension>
- <extension name="VK_KHR_swapchain" number="2" type="device" requires="VK_KHR_surface" author="KHR" contact="James Jones @cubanismo,Ian Elliott @ianelliottus" supported="vulkan">
- <require>
- <enum value="70" name="VK_KHR_SWAPCHAIN_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_swapchain&quot;" name="VK_KHR_SWAPCHAIN_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PRESENT_INFO_KHR"/>
- <enum offset="2" extends="VkImageLayout" name="VK_IMAGE_LAYOUT_PRESENT_SRC_KHR"/>
- <enum offset="3" extends="VkResult" name="VK_SUBOPTIMAL_KHR"/>
- <enum offset="4" extends="VkResult" dir="-" name="VK_ERROR_OUT_OF_DATE_KHR"/>
- <enum offset="0" extends="VkObjectType" name="VK_OBJECT_TYPE_SWAPCHAIN_KHR"/>
- <type name="VkSwapchainCreateFlagBitsKHR"/>
- <type name="VkSwapchainCreateFlagsKHR"/>
- <type name="VkSwapchainCreateInfoKHR"/>
- <type name="VkSwapchainKHR"/>
- <type name="VkPresentInfoKHR"/>
- <command name="vkCreateSwapchainKHR"/>
- <command name="vkDestroySwapchainKHR"/>
- <command name="vkGetSwapchainImagesKHR"/>
- <command name="vkAcquireNextImageKHR"/>
- <command name="vkQueuePresentKHR"/>
- </require>
- <require feature="VK_VERSION_1_1">
- <comment>This duplicates definitions in VK_KHR_device_group below</comment>
- <enum extends="VkStructureType" extnumber="61" offset="7" name="VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR"/>
- <enum extends="VkStructureType" extnumber="61" offset="8" name="VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR"/>
- <enum extends="VkStructureType" extnumber="61" offset="9" name="VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR"/>
- <enum extends="VkStructureType" extnumber="61" offset="10" name="VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR"/>
- <enum extends="VkStructureType" extnumber="61" offset="11" name="VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR"/>
- <enum extends="VkStructureType" extnumber="61" offset="12" name="VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR"/>
- <enum bitpos="0" extends="VkSwapchainCreateFlagBitsKHR" name="VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR" comment="Allow images with VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT"/>
- <type name="VkImageSwapchainCreateInfoKHR"/>
- <type name="VkBindImageMemorySwapchainInfoKHR"/>
- <type name="VkAcquireNextImageInfoKHR"/>
- <type name="VkDeviceGroupPresentModeFlagBitsKHR"/>
- <type name="VkDeviceGroupPresentModeFlagsKHR"/>
- <type name="VkDeviceGroupPresentCapabilitiesKHR"/>
- <type name="VkDeviceGroupPresentInfoKHR"/>
- <type name="VkDeviceGroupSwapchainCreateInfoKHR"/>
- <command name="vkGetDeviceGroupPresentCapabilitiesKHR"/>
- <command name="vkGetDeviceGroupSurfacePresentModesKHR"/>
- <command name="vkGetPhysicalDevicePresentRectanglesKHR"/>
- <command name="vkAcquireNextImage2KHR"/>
- <enum bitpos="1" extends="VkSwapchainCreateFlagBitsKHR" name="VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR" comment="Swapchain is protected"/>
- </require>
- </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="23" name="VK_KHR_DISPLAY_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_display&quot;" 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"/>
- <enum offset="0" extends="VkObjectType" name="VK_OBJECT_TYPE_DISPLAY_KHR"/>
- <enum offset="1" extends="VkObjectType" name="VK_OBJECT_TYPE_DISPLAY_MODE_KHR"/>
- <type name="VkDisplayKHR"/>
- <type name="VkDisplayModeCreateFlagsKHR"/>
- <type name="VkDisplayModeCreateInfoKHR"/>
- <type name="VkDisplayModeKHR"/>
- <type name="VkDisplayModeParametersKHR"/>
- <type name="VkDisplayModePropertiesKHR"/>
- <type name="VkDisplayPlaneAlphaFlagBitsKHR"/>
- <type name="VkDisplayPlaneAlphaFlagsKHR"/>
- <type name="VkDisplayPlaneCapabilitiesKHR"/>
- <type name="VkDisplayPlanePropertiesKHR"/>
- <type name="VkDisplayPropertiesKHR"/>
- <type name="VkDisplaySurfaceCreateFlagsKHR"/>
- <type name="VkDisplaySurfaceCreateInfoKHR"/>
- <type name="VkSurfaceTransformFlagsKHR"/>
- <command name="vkGetPhysicalDeviceDisplayPropertiesKHR"/>
- <command name="vkGetPhysicalDeviceDisplayPlanePropertiesKHR"/>
- <command name="vkGetDisplayPlaneSupportedDisplaysKHR"/>
- <command name="vkGetDisplayModePropertiesKHR"/>
- <command name="vkCreateDisplayModeKHR"/>
- <command name="vkGetDisplayPlaneCapabilitiesKHR"/>
- <command name="vkCreateDisplayPlaneSurfaceKHR"/>
- </require>
- </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="10" name="VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_display_swapchain&quot;" 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"/>
- <type name="VkDisplayPresentInfoKHR"/>
- <command name="vkCreateSharedSwapchainsKHR"/>
- </require>
- </extension>
- <extension name="VK_KHR_xlib_surface" number="5" type="instance" requires="VK_KHR_surface" platform="xlib" author="KHR" contact="Jesse Hall @critsec,Ian Elliott @ianelliottus" supported="vulkan">
- <require>
- <enum value="6" name="VK_KHR_XLIB_SURFACE_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_xlib_surface&quot;" name="VK_KHR_XLIB_SURFACE_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR"/>
- <type name="VkXlibSurfaceCreateFlagsKHR"/>
- <type name="VkXlibSurfaceCreateInfoKHR"/>
- <command name="vkCreateXlibSurfaceKHR"/>
- <command name="vkGetPhysicalDeviceXlibPresentationSupportKHR"/>
- </require>
- </extension>
- <extension name="VK_KHR_xcb_surface" number="6" type="instance" requires="VK_KHR_surface" platform="xcb" author="KHR" contact="Jesse Hall @critsec,Ian Elliott @ianelliottus" supported="vulkan">
- <require>
- <enum value="6" name="VK_KHR_XCB_SURFACE_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_xcb_surface&quot;" name="VK_KHR_XCB_SURFACE_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR"/>
- <type name="VkXcbSurfaceCreateFlagsKHR"/>
- <type name="VkXcbSurfaceCreateInfoKHR"/>
- <command name="vkCreateXcbSurfaceKHR"/>
- <command name="vkGetPhysicalDeviceXcbPresentationSupportKHR"/>
- </require>
- </extension>
- <extension name="VK_KHR_wayland_surface" number="7" type="instance" requires="VK_KHR_surface" platform="wayland" author="KHR" contact="Jesse Hall @critsec,Ian Elliott @ianelliottus" supported="vulkan">
- <require>
- <enum value="6" name="VK_KHR_WAYLAND_SURFACE_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_wayland_surface&quot;" name="VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR"/>
- <type name="VkWaylandSurfaceCreateFlagsKHR"/>
- <type name="VkWaylandSurfaceCreateInfoKHR"/>
- <command name="vkCreateWaylandSurfaceKHR"/>
- <command name="vkGetPhysicalDeviceWaylandPresentationSupportKHR"/>
- </require>
- </extension>
- <extension name="VK_KHR_mir_surface" number="8" type="instance" requires="VK_KHR_surface" author="KHR" supported="disabled" comment="Extension permanently disabled. Extension number should not be reused">
- <require>
- <enum value="4" name="VK_KHR_MIR_SURFACE_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_mir_surface&quot;" name="VK_KHR_MIR_SURFACE_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_KHR_android_surface" number="9" type="instance" requires="VK_KHR_surface" platform="android" author="KHR" contact="Jesse Hall @critsec" supported="vulkan">
- <require>
- <enum value="6" name="VK_KHR_ANDROID_SURFACE_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_android_surface&quot;" name="VK_KHR_ANDROID_SURFACE_EXTENSION_NAME"/>
- <type name="ANativeWindow"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR"/>
- <type name="VkAndroidSurfaceCreateFlagsKHR"/>
- <type name="VkAndroidSurfaceCreateInfoKHR"/>
- <command name="vkCreateAndroidSurfaceKHR"/>
- </require>
- </extension>
- <extension name="VK_KHR_win32_surface" number="10" type="instance" requires="VK_KHR_surface" platform="win32" author="KHR" contact="Jesse Hall @critsec,Ian Elliott @ianelliottus" supported="vulkan">
- <require>
- <enum value="6" name="VK_KHR_WIN32_SURFACE_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_win32_surface&quot;" name="VK_KHR_WIN32_SURFACE_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR"/>
- <type name="VkWin32SurfaceCreateFlagsKHR"/>
- <type name="VkWin32SurfaceCreateInfoKHR"/>
- <command name="vkCreateWin32SurfaceKHR"/>
- <command name="vkGetPhysicalDeviceWin32PresentationSupportKHR"/>
- </require>
- </extension>
- <!-- TODO(liyl): spec version 8 has some types that are not supported yet. -->
- <extension name="VK_ANDROID_native_buffer" number="11" type="device" author="ANDROID" platform="android" contact="Jesse Hall @critsec" supported="vulkan">
- <require>
- <enum value="6" name="VK_ANDROID_NATIVE_BUFFER_SPEC_VERSION"/>
- <enum value="11" name="VK_ANDROID_NATIVE_BUFFER_NUMBER"/>
- <enum value="&quot;VK_ANDROID_native_buffer&quot;" name="VK_ANDROID_NATIVE_BUFFER_EXTENSION_NAME"/>
- <enum name="VK_ANDROID_NATIVE_BUFFER_NAME" alias="VK_ANDROID_NATIVE_BUFFER_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_NATIVE_BUFFER_ANDROID"/>
- <type name="VkNativeBufferANDROID"/>
- <command name="vkGetSwapchainGrallocUsageANDROID"/>
- <command name="vkAcquireImageANDROID"/>
- <command name="vkQueueSignalReleaseImageANDROID"/>
- </require>
- </extension>
- <extension name="VK_EXT_debug_report" number="12" type="instance" author="GOOGLE" contact="Courtney Goeltzenleuchter @courtney-g" specialuse="debugging" supported="vulkan" deprecatedby="VK_EXT_debug_utils">
- <require>
- <enum value="10" name="VK_EXT_DEBUG_REPORT_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_debug_report&quot;" name="VK_EXT_DEBUG_REPORT_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT"/>
- <enum alias="VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT" comment="Backwards-compatible alias containing a typo"/>
- <enum offset="1" extends="VkResult" dir="-" name="VK_ERROR_VALIDATION_FAILED_EXT"/>
- <enum offset="0" extends="VkObjectType" name="VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT"/>
- <type name="VkDebugReportCallbackEXT"/>
- <type name="PFN_vkDebugReportCallbackEXT"/>
- <type name="VkDebugReportFlagBitsEXT"/>
- <type name="VkDebugReportFlagsEXT"/>
- <type name="VkDebugReportObjectTypeEXT"/>
- <type name="VkDebugReportCallbackCreateInfoEXT"/>
- <command name="vkCreateDebugReportCallbackEXT"/>
- <command name="vkDestroyDebugReportCallbackEXT"/>
- <command name="vkDebugReportMessageEXT"/>
- </require>
- <require feature="VK_VERSION_1_1">
- <comment>This duplicates definitions in other extensions, below</comment>
- <enum extends="VkDebugReportObjectTypeEXT" extnumber="157" offset="0" name="VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT"/>
- <enum extends="VkDebugReportObjectTypeEXT" extnumber="86" offset="0" name="VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT"/>
- </require>
- </extension>
- <extension name="VK_NV_glsl_shader" number="13" type="device" author="NV" contact="Piers Daniell @pdaniell-nv" supported="vulkan" deprecatedby="">
- <require>
- <enum value="1" name="VK_NV_GLSL_SHADER_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_glsl_shader&quot;" name="VK_NV_GLSL_SHADER_EXTENSION_NAME"/>
- <enum offset="0" extends="VkResult" dir="-" name="VK_ERROR_INVALID_SHADER_NV"/>
- </require>
- </extension>
- <extension name="VK_EXT_depth_range_unrestricted" type="device" number="14" author="NV" contact="Piers Daniell @pdaniell-nv" supported="vulkan">
- <require>
- <enum value="1" name="VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_depth_range_unrestricted&quot;" name="VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_KHR_sampler_mirror_clamp_to_edge" type="device" number="15" author="KHR" contact="Tobias Hector @tobski" supported="vulkan" promotedto="VK_VERSION_1_2">
- <require>
- <enum value="3" name="VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_sampler_mirror_clamp_to_edge&quot;" 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">
- <require>
- <enum value="1" name="VK_IMG_FILTER_CUBIC_SPEC_VERSION"/>
- <enum value="&quot;VK_IMG_filter_cubic&quot;" name="VK_IMG_FILTER_CUBIC_EXTENSION_NAME"/>
- <enum offset="0" extends="VkFilter" name="VK_FILTER_CUBIC_IMG"/>
- <enum bitpos="13" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG" comment="Format can be filtered with VK_FILTER_CUBIC_IMG when being sampled"/>
- </require>
- </extension>
- <extension name="VK_AMD_extension_17" number="17" author="AMD" contact="Daniel Rakos @drakos-amd" supported="disabled">
- <require>
- <enum value="0" name="VK_AMD_EXTENSION_17_SPEC_VERSION"/>
- <enum value="&quot;VK_AMD_extension_17&quot;" name="VK_AMD_EXTENSION_17_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_AMD_extension_18" number="18" author="AMD" contact="Daniel Rakos @drakos-amd" supported="disabled">
- <require>
- <enum value="0" name="VK_AMD_EXTENSION_18_SPEC_VERSION"/>
- <enum value="&quot;VK_AMD_extension_18&quot;" name="VK_AMD_EXTENSION_18_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_AMD_rasterization_order" number="19" type="device" author="AMD" contact="Daniel Rakos @drakos-amd" supported="vulkan">
- <require>
- <enum value="1" name="VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION"/>
- <enum value="&quot;VK_AMD_rasterization_order&quot;" name="VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD"/>
- <type name="VkRasterizationOrderAMD"/>
- <type name="VkPipelineRasterizationStateRasterizationOrderAMD"/>
- </require>
- </extension>
- <extension name="VK_AMD_extension_20" number="20" author="AMD" contact="Daniel Rakos @drakos-amd" supported="disabled">
- <require>
- <enum value="0" name="VK_AMD_EXTENSION_20_SPEC_VERSION"/>
- <enum value="&quot;VK_AMD_extension_20&quot;" name="VK_AMD_EXTENSION_20_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_AMD_shader_trinary_minmax" number="21" type="device" author="AMD" contact="Qun Lin @linqun" supported="vulkan">
- <require>
- <enum value="1" name="VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION"/>
- <enum value="&quot;VK_AMD_shader_trinary_minmax&quot;" name="VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_AMD_shader_explicit_vertex_parameter" number="22" type="device" author="AMD" contact="Qun Lin @linqun" supported="vulkan">
- <require>
- <enum value="1" name="VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION"/>
- <enum value="&quot;VK_AMD_shader_explicit_vertex_parameter&quot;" name="VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_EXT_debug_marker" number="23" type="device" requires="VK_EXT_debug_report" author="Baldur Karlsson" contact="Baldur Karlsson @baldurk" specialuse="debugging" supported="vulkan" promotedto="VK_EXT_debug_utils">
- <require>
- <enum value="4" name="VK_EXT_DEBUG_MARKER_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_debug_marker&quot;" name="VK_EXT_DEBUG_MARKER_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT"/>
- <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT"/>
- <type name="VkDebugReportObjectTypeEXT"/>
- <type name="VkDebugMarkerObjectNameInfoEXT"/>
- <type name="VkDebugMarkerObjectTagInfoEXT"/>
- <type name="VkDebugMarkerMarkerInfoEXT"/>
- <command name="vkDebugMarkerSetObjectTagEXT"/>
- <command name="vkDebugMarkerSetObjectNameEXT"/>
- <command name="vkCmdDebugMarkerBeginEXT"/>
- <command name="vkCmdDebugMarkerEndEXT"/>
- <command name="vkCmdDebugMarkerInsertEXT"/>
- </require>
- </extension>
- <extension name="VK_KHR_video_queue" number="24" type="device" requires="VK_KHR_get_physical_device_properties2,VK_KHR_sampler_ycbcr_conversion" author="KHR" contact="Tony Zlatinski @tzlatinski" provisional="true" platform="provisional" supported="vulkan">
- <require>
- <enum value="2" name="VK_KHR_VIDEO_QUEUE_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_video_queue&quot;" name="VK_KHR_VIDEO_QUEUE_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_PROFILE_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_CAPABILITIES_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_PICTURE_RESOURCE_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum offset="3" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_GET_MEMORY_PROPERTIES_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum offset="4" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_BIND_MEMORY_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum offset="5" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_SESSION_CREATE_INFO_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum offset="6" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum offset="7" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_UPDATE_INFO_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum offset="8" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_BEGIN_CODING_INFO_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum offset="9" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_END_CODING_INFO_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum offset="10" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_CODING_CONTROL_INFO_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum offset="11" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_REFERENCE_SLOT_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum offset="12" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_QUEUE_FAMILY_PROPERTIES_2_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum offset="13" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_PROFILES_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum offset="14" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_FORMAT_INFO_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum offset="15" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_FORMAT_PROPERTIES_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-
- <enum offset="0" extends="VkObjectType" name="VK_OBJECT_TYPE_VIDEO_SESSION_KHR" comment="VkVideoSessionKHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum offset="1" extends="VkObjectType" name="VK_OBJECT_TYPE_VIDEO_SESSION_PARAMETERS_KHR" comment="VkVideoSessionParametersKHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-
- <enum offset="0" extends="VkQueryType" name="VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum bitpos="4" extends="VkQueryResultFlagBits" name="VK_QUERY_RESULT_WITH_STATUS_BIT_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-
- <type name="VkVideoSessionKHR"/>
- <type name="VkVideoSessionParametersKHR"/>
-
- <type name="VkVideoCodecOperationFlagBitsKHR"/>
- <type name="VkVideoCodecOperationFlagsKHR"/>
- <type name="VkVideoChromaSubsamplingFlagBitsKHR"/>
- <type name="VkVideoChromaSubsamplingFlagsKHR"/>
- <type name="VkVideoComponentBitDepthFlagBitsKHR"/>
- <type name="VkVideoComponentBitDepthFlagsKHR"/>
- <type name="VkVideoCapabilityFlagBitsKHR"/>
- <type name="VkVideoCapabilityFlagsKHR"/>
- <type name="VkVideoSessionCreateFlagBitsKHR"/>
- <type name="VkVideoSessionCreateFlagsKHR"/>
- <type name="VkVideoBeginCodingFlagsKHR"/>
- <type name="VkVideoEndCodingFlagsKHR"/>
- <type name="VkVideoCodingControlFlagBitsKHR"/>
- <type name="VkVideoCodingControlFlagsKHR"/>
- <type name="VkVideoCodingQualityPresetFlagBitsKHR"/>
- <type name="VkVideoCodingQualityPresetFlagsKHR"/>
-
- <type name="VkQueryResultStatusKHR"/>
-
- <type name="VkVideoQueueFamilyProperties2KHR"/>
- <type name="VkVideoProfileKHR"/>
- <type name="VkVideoProfilesKHR"/>
- <type name="VkVideoCapabilitiesKHR"/>
- <type name="VkPhysicalDeviceVideoFormatInfoKHR"/>
- <type name="VkVideoFormatPropertiesKHR"/>
- <type name="VkVideoPictureResourceKHR"/>
- <type name="VkVideoReferenceSlotKHR"/>
- <type name="VkVideoGetMemoryPropertiesKHR"/>
- <type name="VkVideoBindMemoryKHR"/>
- <type name="VkVideoSessionCreateInfoKHR"/>
- <type name="VkVideoSessionParametersCreateInfoKHR"/>
- <type name="VkVideoSessionParametersUpdateInfoKHR"/>
- <type name="VkVideoBeginCodingInfoKHR"/>
- <type name="VkVideoEndCodingInfoKHR"/>
- <type name="VkVideoCodingControlInfoKHR"/>
-
- <command name="vkGetPhysicalDeviceVideoCapabilitiesKHR"/>
- <command name="vkGetPhysicalDeviceVideoFormatPropertiesKHR"/>
-
- <command name="vkCreateVideoSessionKHR"/>
- <command name="vkDestroyVideoSessionKHR"/>
- <command name="vkGetVideoSessionMemoryRequirementsKHR"/>
- <command name="vkBindVideoSessionMemoryKHR"/>
- <command name="vkCreateVideoSessionParametersKHR"/>
- <command name="vkUpdateVideoSessionParametersKHR"/>
- <command name="vkDestroyVideoSessionParametersKHR"/>
- <command name="vkCmdBeginVideoCodingKHR"/>
- <command name="vkCmdEndVideoCodingKHR"/>
- <command name="vkCmdControlVideoCodingKHR"/>
- </require>
- </extension>
- <extension name="VK_KHR_video_decode_queue" number="25" type="device" requires="VK_KHR_video_queue,VK_KHR_synchronization2" author="KHR" contact="jake.beju@amd.com" provisional="true" platform="provisional" supported="vulkan">
- <require>
- <enum value="2" name="VK_KHR_VIDEO_DECODE_QUEUE_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_video_decode_queue&quot;" name="VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_DECODE_INFO_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum bitpos="5" extends="VkQueueFlagBits" name="VK_QUEUE_VIDEO_DECODE_BIT_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum bitpos="26" extends="VkPipelineStageFlagBits2KHR" name="VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum bitpos="35" extends="VkAccessFlagBits2KHR" name="VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR" protect="VK_ENABLE_BETA_EXTENSIONS" />
- <enum bitpos="36" extends="VkAccessFlagBits2KHR" name="VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum bitpos="13" extends="VkBufferUsageFlagBits" name="VK_BUFFER_USAGE_VIDEO_DECODE_SRC_BIT_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum bitpos="14" extends="VkBufferUsageFlagBits" name="VK_BUFFER_USAGE_VIDEO_DECODE_DST_BIT_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum bitpos="10" extends="VkImageUsageFlagBits" name="VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum bitpos="11" extends="VkImageUsageFlagBits" name="VK_IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum bitpos="12" extends="VkImageUsageFlagBits" name="VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum bitpos="25" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_VIDEO_DECODE_OUTPUT_BIT_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum bitpos="26" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_VIDEO_DECODE_DPB_BIT_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum offset="0" extends="VkImageLayout" name="VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum offset="1" extends="VkImageLayout" name="VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum offset="2" extends="VkImageLayout" name="VK_IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-
- <type name="VkVideoDecodeFlagBitsKHR"/>
- <type name="VkVideoDecodeFlagsKHR"/>
-
- <type name="VkVideoDecodeInfoKHR"/>
- <command name="vkCmdDecodeVideoKHR"/>
- </require>
- <require extension="VK_KHR_format_feature_flags2">
- <enum bitpos="25" extends="VkFormatFeatureFlagBits2KHR" name="VK_FORMAT_FEATURE_2_VIDEO_DECODE_OUTPUT_BIT_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum bitpos="26" extends="VkFormatFeatureFlagBits2KHR" name="VK_FORMAT_FEATURE_2_VIDEO_DECODE_DPB_BIT_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- </require>
- </extension>
- <extension name="VK_AMD_gcn_shader" number="26" type="device" author="AMD" contact="Dominik Witczak @dominikwitczakamd" supported="vulkan">
- <require>
- <enum value="1" name="VK_AMD_GCN_SHADER_SPEC_VERSION"/>
- <enum value="&quot;VK_AMD_gcn_shader&quot;" name="VK_AMD_GCN_SHADER_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_NV_dedicated_allocation" number="27" type="device" author="NV" contact="Jeff Bolz @jeffbolznv" supported="vulkan" deprecatedby="VK_KHR_dedicated_allocation">
- <require>
- <enum value="1" name="VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_dedicated_allocation&quot;" name="VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV"/>
- <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV"/>
- <type name="VkDedicatedAllocationImageCreateInfoNV"/>
- <type name="VkDedicatedAllocationBufferCreateInfoNV"/>
- <type name="VkDedicatedAllocationMemoryAllocateInfoNV"/>
- </require>
- </extension>
- <extension name="VK_EXT_extension_28" number="28" author="NV" contact="Piers Daniell @pdaniell-nv" supported="disabled">
- <require>
- <enum value="0" name="VK_EXT_EXTENSION_28_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_extension_28&quot;" name="VK_EXT_EXTENSION_28_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_EXT_transform_feedback" number="29" type="device" author="NV" contact="Piers Daniell @pdaniell-nv" specialuse="glemulation,d3demulation,devtools" supported="vulkan" requires="VK_KHR_get_physical_device_properties2">
- <require>
- <enum value="1" name="VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_transform_feedback&quot;" name="VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME"/>
- <command name="vkCmdBindTransformFeedbackBuffersEXT"/>
- <command name="vkCmdBeginTransformFeedbackEXT"/>
- <command name="vkCmdEndTransformFeedbackEXT"/>
- <command name="vkCmdBeginQueryIndexedEXT"/>
- <command name="vkCmdEndQueryIndexedEXT"/>
- <command name="vkCmdDrawIndirectByteCountEXT"/>
-
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT"/>
- <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT"/>
-
- <enum offset="4" extends="VkQueryType" name="VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT"/>
-
- <enum bitpos="11" extends="VkBufferUsageFlagBits" name="VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT"/>
- <enum bitpos="12" extends="VkBufferUsageFlagBits" name="VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT"/>
-
- <enum bitpos="25" extends="VkAccessFlagBits" name="VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT"/>
- <enum bitpos="26" extends="VkAccessFlagBits" name="VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT"/>
- <enum bitpos="27" extends="VkAccessFlagBits" name="VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT"/>
-
- <enum bitpos="24" extends="VkPipelineStageFlagBits" name="VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT"/>
-
- <type name="VkPhysicalDeviceTransformFeedbackFeaturesEXT"/>
- <type name="VkPhysicalDeviceTransformFeedbackPropertiesEXT"/>
- <type name="VkPipelineRasterizationStateStreamCreateInfoEXT"/>
-
- <type name="VkPipelineRasterizationStateStreamCreateFlagsEXT"/>
- </require>
- </extension>
- <extension name="VK_NVX_binary_import" number="30" type="device" author="NVX" contact="Eric Werness @ewerness-nv,Liam Middlebrook @liam-middlebrook" supported="vulkan">
- <require>
- <enum value="1" name="VK_NVX_BINARY_IMPORT_SPEC_VERSION"/>
- <enum value="&quot;VK_NVX_binary_import&quot;" name="VK_NVX_BINARY_IMPORT_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX"/>
- <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX"/>
- <enum offset="0" extends="VkObjectType" name="VK_OBJECT_TYPE_CU_MODULE_NVX"/>
- <enum offset="1" extends="VkObjectType" name="VK_OBJECT_TYPE_CU_FUNCTION_NVX"/>
- <enum offset="0" extends="VkDebugReportObjectTypeEXT" name="VK_DEBUG_REPORT_OBJECT_TYPE_CU_MODULE_NVX_EXT"/>
- <enum offset="1" extends="VkDebugReportObjectTypeEXT" name="VK_DEBUG_REPORT_OBJECT_TYPE_CU_FUNCTION_NVX_EXT"/>
- <type name="VkCuModuleNVX"/>
- <type name="VkCuFunctionNVX"/>
- <type name="VkCuModuleCreateInfoNVX"/>
- <type name="VkCuFunctionCreateInfoNVX"/>
- <type name="VkCuLaunchInfoNVX"/>
- <command name="vkCreateCuModuleNVX"/>
- <command name="vkCreateCuFunctionNVX"/>
- <command name="vkDestroyCuModuleNVX"/>
- <command name="vkDestroyCuFunctionNVX"/>
- <command name="vkCmdCuLaunchKernelNVX"/>
- </require>
- </extension>
- <extension name="VK_NVX_image_view_handle" number="31" type="device" author="NVX" contact="Eric Werness @ewerness-nv" supported="vulkan">
- <require>
- <enum value="2" name="VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION"/>
- <enum value="&quot;VK_NVX_image_view_handle&quot;" name="VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX"/>
- <type name="VkImageViewHandleInfoNVX"/>
- <type name="VkImageViewAddressPropertiesNVX"/>
- <command name="vkGetImageViewHandleNVX"/>
- <command name="vkGetImageViewAddressNVX"/>
- </require>
- </extension>
- <extension name="VK_AMD_extension_32" number="32" author="AMD" contact="Daniel Rakos @drakos-amd" supported="disabled">
- <require>
- <enum value="0" name="VK_AMD_EXTENSION_32_SPEC_VERSION"/>
- <enum value="&quot;VK_AMD_extension_32&quot;" name="VK_AMD_EXTENSION_32_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_AMD_extension_33" number="33" author="AMD" contact="Daniel Rakos @drakos-amd" supported="disabled">
- <require>
- <enum value="0" name="VK_AMD_EXTENSION_33_SPEC_VERSION"/>
- <enum value="&quot;VK_AMD_extension_33&quot;" name="VK_AMD_EXTENSION_33_EXTENSION_NAME"/>
- </require>
- </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="2" name="VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION"/>
- <enum value="&quot;VK_AMD_draw_indirect_count&quot;" name="VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME"/>
- <command name="vkCmdDrawIndirectCountAMD"/>
- <command name="vkCmdDrawIndexedIndirectCountAMD"/>
- </require>
- </extension>
- <extension name="VK_AMD_extension_35" number="35" author="AMD" contact="Daniel Rakos @drakos-amd" supported="disabled">
- <require>
- <enum value="0" name="VK_AMD_EXTENSION_35_SPEC_VERSION"/>
- <enum value="&quot;VK_AMD_extension_35&quot;" name="VK_AMD_EXTENSION_35_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_AMD_negative_viewport_height" number="36" type="device" author="AMD" contact="Matthaeus G. Chajdas @anteru" supported="vulkan" obsoletedby="VK_KHR_maintenance1">
- <require>
- <enum value="1" name="VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION"/>
- <enum value="&quot;VK_AMD_negative_viewport_height&quot;" name="VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_AMD_gpu_shader_half_float" number="37" type="device" author="AMD" contact="Dominik Witczak @dominikwitczakamd" supported="vulkan" deprecatedby="VK_KHR_shader_float16_int8">
- <require>
- <enum value="2" name="VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION"/>
- <enum value="&quot;VK_AMD_gpu_shader_half_float&quot;" name="VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_AMD_shader_ballot" number="38" type="device" author="AMD" contact="Dominik Witczak @dominikwitczakamd" supported="vulkan">
- <require>
- <enum value="1" name="VK_AMD_SHADER_BALLOT_SPEC_VERSION"/>
- <enum value="&quot;VK_AMD_shader_ballot&quot;" name="VK_AMD_SHADER_BALLOT_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_EXT_video_encode_h264" number="39" type="device" requires="VK_KHR_video_encode_queue" author="KHR" contact="Ahmed Abdelkhalek @aabdelkh" provisional="true" platform="provisional" supported="vulkan">
- <require>
- <enum value="2" name="VK_EXT_VIDEO_ENCODE_H264_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_video_encode_h264&quot;" name="VK_EXT_VIDEO_ENCODE_H264_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_CAPABILITIES_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_CREATE_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum offset="3" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum offset="4" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_VCL_FRAME_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum offset="5" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_DPB_SLOT_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum offset="6" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_NALU_SLICE_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum offset="7" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_EMIT_PICTURE_PARAMETERS_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum offset="8" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum bitpos="16" extends="VkVideoCodecOperationFlagBitsKHR" name="VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-
- <type name="VkVideoEncodeH264CapabilityFlagBitsEXT"/>
- <type name="VkVideoEncodeH264CapabilityFlagsEXT"/>
- <type name="VkVideoEncodeH264InputModeFlagBitsEXT"/>
- <type name="VkVideoEncodeH264InputModeFlagsEXT"/>
- <type name="VkVideoEncodeH264OutputModeFlagBitsEXT"/>
- <type name="VkVideoEncodeH264OutputModeFlagsEXT"/>
- <type name="VkVideoEncodeH264CreateFlagBitsEXT"/>
- <type name="VkVideoEncodeH264CreateFlagsEXT"/>
- <type name="VkVideoEncodeH264CapabilitiesEXT"/>
- <type name="VkVideoEncodeH264SessionCreateInfoEXT"/>
- <type name="VkVideoEncodeH264SessionParametersCreateInfoEXT"/>
- <type name="VkVideoEncodeH264SessionParametersAddInfoEXT"/>
- <type name="VkVideoEncodeH264VclFrameInfoEXT"/>
- <type name="VkVideoEncodeH264EmitPictureParametersEXT"/>
- <type name="VkVideoEncodeH264DpbSlotInfoEXT"/>
- <type name="VkVideoEncodeH264NaluSliceEXT"/>
- <type name="VkVideoEncodeH264ProfileEXT"/>
- </require>
- </extension>
- <extension name="VK_EXT_video_encode_h265" number="40" type="device" requires="VK_KHR_video_encode_queue" author="KHR" contact="Ahmed Abdelkhalek @aabdelkh" provisional="true" platform="provisional" supported="vulkan">
- <require>
- <enum value="2" name="VK_EXT_VIDEO_ENCODE_H265_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_video_encode_h265&quot;" name="VK_EXT_VIDEO_ENCODE_H265_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_CAPABILITIES_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_CREATE_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum offset="3" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum offset="4" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_VCL_FRAME_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum offset="5" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_DPB_SLOT_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum offset="6" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_NALU_SLICE_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum offset="7" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_EMIT_PICTURE_PARAMETERS_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum offset="8" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PROFILE_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum offset="9" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_REFERENCE_LISTS_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum bitpos="17" extends="VkVideoCodecOperationFlagBitsKHR" name="VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-
- <type name="VkVideoEncodeH265CapabilityFlagsEXT"/>
- <type name="VkVideoEncodeH265InputModeFlagBitsEXT"/>
- <type name="VkVideoEncodeH265InputModeFlagsEXT"/>
- <type name="VkVideoEncodeH265OutputModeFlagBitsEXT"/>
- <type name="VkVideoEncodeH265OutputModeFlagsEXT"/>
- <type name="VkVideoEncodeH265CreateFlagsEXT" comment="Will add VkVideoEncodeH265CreateFlagBitsEXT when bits are defined in the future"/>
-
- <type name="VkVideoEncodeH265CtbSizeFlagBitsEXT"/>
- <type name="VkVideoEncodeH265CtbSizeFlagsEXT"/>
- <type name="VkVideoEncodeH265CapabilitiesEXT"/>
- <type name="VkVideoEncodeH265SessionCreateInfoEXT"/>
- <type name="VkVideoEncodeH265SessionParametersCreateInfoEXT"/>
- <type name="VkVideoEncodeH265SessionParametersAddInfoEXT"/>
- <type name="VkVideoEncodeH265VclFrameInfoEXT"/>
- <type name="VkVideoEncodeH265EmitPictureParametersEXT"/>
- <type name="VkVideoEncodeH265DpbSlotInfoEXT"/>
- <type name="VkVideoEncodeH265NaluSliceEXT"/>
- <type name="VkVideoEncodeH265ProfileEXT"/>
- <type name="VkVideoEncodeH265ReferenceListsEXT"/>
- </require>
- </extension>
- <extension name="VK_EXT_video_decode_h264" number="41" type="device" requires="VK_KHR_video_decode_queue" author="KHR" contact="peter.fang@amd.com" provisional="true" platform="provisional" supported="vulkan">
- <require>
- <enum value="3" name="VK_EXT_VIDEO_DECODE_H264_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_video_decode_h264&quot;" name="VK_EXT_VIDEO_DECODE_H264_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_CREATE_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum offset="3" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_MVC_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum offset="4" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum offset="5" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum offset="6" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum offset="7" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum bitpos="0" extends="VkVideoCodecOperationFlagBitsKHR" name="VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <type name="VkVideoDecodeH264PictureLayoutFlagBitsEXT"/>
- <type name="VkVideoDecodeH264PictureLayoutFlagsEXT"/>
- <type name="VkVideoDecodeH264CreateFlagsEXT"/>
- <type name="VkVideoDecodeH264ProfileEXT"/>
- <type name="VkVideoDecodeH264CapabilitiesEXT"/>
- <type name="VkVideoDecodeH264SessionCreateInfoEXT"/>
- <type name="VkVideoDecodeH264SessionParametersCreateInfoEXT"/>
- <type name="VkVideoDecodeH264SessionParametersAddInfoEXT"/>
- <type name="VkVideoDecodeH264PictureInfoEXT"/>
- <type name="VkVideoDecodeH264MvcEXT"/>
- <type name="VkVideoDecodeH264DpbSlotInfoEXT"/>
- </require>
- </extension>
- <extension name="VK_AMD_texture_gather_bias_lod" number="42" author="AMD" contact="Rex Xu @amdrexu" supported="vulkan" type="device" requires="VK_KHR_get_physical_device_properties2">
- <require>
- <enum value="1" name="VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION"/>
- <enum value="&quot;VK_AMD_texture_gather_bias_lod&quot;" name="VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD"/>
- <type name="VkTextureLODGatherFormatPropertiesAMD"/>
- </require>
- </extension>
- <extension name="VK_AMD_shader_info" number="43" author="AMD" contact="Jaakko Konttinen @jaakkoamd" supported="vulkan" specialuse="devtools" type="device">
- <require>
- <enum value="1" name="VK_AMD_SHADER_INFO_SPEC_VERSION"/>
- <enum value="&quot;VK_AMD_shader_info&quot;" name="VK_AMD_SHADER_INFO_EXTENSION_NAME"/>
- <type name="VkShaderInfoTypeAMD"/>
- <type name="VkShaderResourceUsageAMD"/>
- <type name="VkShaderStatisticsInfoAMD"/>
- <command name="vkGetShaderInfoAMD"/>
- </require>
- </extension>
- <extension name="VK_AMD_extension_44" number="44" author="AMD" contact="Daniel Rakos @drakos-amd" supported="disabled">
- <require>
- <enum value="0" name="VK_AMD_EXTENSION_44_SPEC_VERSION"/>
- <enum value="&quot;VK_AMD_extension_44&quot;" name="VK_AMD_EXTENSION_44_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_KHR_dynamic_rendering" number="45" author="KHR" type="device" requires="VK_KHR_get_physical_device_properties2" contact="Tobias Hector @tobski" supported="vulkan">
- <require>
- <enum value="1" name="VK_KHR_DYNAMIC_RENDERING_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_dynamic_rendering&quot;" name="VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME"/>
- <command name="vkCmdBeginRenderingKHR"/>
- <command name="vkCmdEndRenderingKHR"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_RENDERING_INFO_KHR"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO_KHR"/>
- <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR"/>
- <enum offset="3" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR"/>
- <enum offset="4" extends="VkStructureType" name="VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR"/>
- <enum offset="0" extends="VkAttachmentStoreOp" extnumber="302" name="VK_ATTACHMENT_STORE_OP_NONE_KHR"/>
- <type name="VkRenderingInfoKHR"/>
- <type name="VkRenderingAttachmentInfoKHR"/>
- <type name="VkPipelineRenderingCreateInfoKHR"/>
- <type name="VkPhysicalDeviceDynamicRenderingFeaturesKHR"/>
- <type name="VkCommandBufferInheritanceRenderingInfoKHR"/>
- <type name="VkRenderingFlagsKHR"/>
- <type name="VkRenderingFlagBitsKHR"/>
- </require>
- <require extension="VK_KHR_fragment_shading_rate">
- <enum bitpos="21" extends="VkPipelineCreateFlagBits" name="VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"/>
- <enum offset="6" extends="VkStructureType" name="VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR"/>
- <type name="VkRenderingFragmentShadingRateAttachmentInfoKHR"/>
- </require>
- <require extension="VK_EXT_fragment_density_map">
- <enum bitpos="22" extends="VkPipelineCreateFlagBits" name="VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT"/>
- <enum offset="7" extends="VkStructureType" name="VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT"/>
- <type name="VkRenderingFragmentDensityMapAttachmentInfoEXT"/>
- </require>
- <require extension="VK_AMD_mixed_attachment_samples">
- <enum offset="8" extends="VkStructureType" name="VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD"/>
- <type name="VkAttachmentSampleCountInfoAMD"/>
- </require>
- <require extension="VK_NV_framebuffer_mixed_samples">
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_NV" alias="VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD"/>
- <type name="VkAttachmentSampleCountInfoNV"/>
- </require>
- <require extension="VK_NVX_multiview_per_view_attributes">
- <enum offset="9" extends="VkStructureType" name="VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX"/>
- <type name="VkMultiviewPerViewAttributesInfoNVX"/>
- </require>
- </extension>
- <extension name="VK_AMD_extension_46" number="46" author="AMD" contact="Daniel Rakos @drakos-amd" supported="disabled">
- <require>
- <enum value="0" name="VK_AMD_EXTENSION_46_SPEC_VERSION"/>
- <enum value="&quot;VK_AMD_extension_46&quot;" name="VK_AMD_EXTENSION_46_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_AMD_shader_image_load_store_lod" number="47" author="AMD" contact="Dominik Witczak @dominikwitczakamd" supported="vulkan" type="device">
- <require>
- <enum value="1" name="VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION"/>
- <enum value="&quot;VK_AMD_shader_image_load_store_lod&quot;" name="VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_NVX_extension_48" number="48" author="NVX" contact="James Jones @cubanismo" supported="disabled">
- <require>
- <enum value="0" name="VK_NVX_EXTENSION_48_SPEC_VERSION"/>
- <enum value="&quot;VK_NVX_extension_48&quot;" name="VK_NVX_EXTENSION_48_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_GOOGLE_extension_49" number="49" author="GOOGLE" contact="Jean-Francois Roy @jfroy" supported="disabled">
- <require>
- <enum value="0" name="VK_GOOGLE_EXTENSION_49_SPEC_VERSION"/>
- <enum value="&quot;VK_GOOGLE_extension_49&quot;" name="VK_GOOGLE_EXTENSION_49_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_GGP_stream_descriptor_surface" number="50" type="instance" requires="VK_KHR_surface" platform="ggp" author="GGP" contact="Jean-Francois Roy @jfroy" supported="vulkan">
- <require>
- <enum value="1" name="VK_GGP_STREAM_DESCRIPTOR_SURFACE_SPEC_VERSION"/>
- <enum value="&quot;VK_GGP_stream_descriptor_surface&quot;" name="VK_GGP_STREAM_DESCRIPTOR_SURFACE_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP"/>
- <type name="VkStreamDescriptorSurfaceCreateFlagsGGP"/>
- <type name="VkStreamDescriptorSurfaceCreateInfoGGP"/>
- <command name="vkCreateStreamDescriptorSurfaceGGP"/>
- </require>
- </extension>
- <extension name="VK_NV_corner_sampled_image" number="51" author="NV" type="device" requires="VK_KHR_get_physical_device_properties2" contact="Daniel Koch @dgkoch" supported="vulkan">
- <require>
- <enum value="2" name="VK_NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_corner_sampled_image&quot;" name="VK_NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME"/>
- <enum bitpos="13" extends="VkImageCreateFlagBits" name="VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV"/>
- <type name="VkPhysicalDeviceCornerSampledImageFeaturesNV"/>
- </require>
- </extension>
- <extension name="VK_NV_extension_52" number="52" author="NV" contact="Daniel Koch @dgkoch" supported="disabled">
- <require>
- <enum value="0" name="VK_NV_EXTENSION_52_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_extension_52&quot;" name="VK_NV_EXTENSION_52_EXTENSION_NAME"/>
- <enum bitpos="0" extends="VkShaderModuleCreateFlagBits" name="VK_SHADER_MODULE_CREATE_RESERVED_0_BIT_NV"/>
- <enum bitpos="2" extends="VkPipelineShaderStageCreateFlagBits" name="VK_PIPELINE_SHADER_STAGE_CREATE_RESERVED_2_BIT_NV"/>
- </require>
- </extension>
- <extension name="VK_NV_extension_53" number="53" author="NV" contact="Jeff Bolz @jeffbolznv" supported="disabled">
- <require>
- <enum value="0" name="VK_NV_EXTENSION_53_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_extension_53&quot;" name="VK_NV_EXTENSION_53_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_KHR_multiview" number="54" type="device" author="KHR" requires="VK_KHR_get_physical_device_properties2" contact="Jeff Bolz @jeffbolznv" supported="vulkan" promotedto="VK_VERSION_1_1">
- <require>
- <enum value="1" name="VK_KHR_MULTIVIEW_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_multiview&quot;" name="VK_KHR_MULTIVIEW_EXTENSION_NAME"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR" alias="VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES"/>
- <enum extends="VkDependencyFlagBits" name="VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR" alias="VK_DEPENDENCY_VIEW_LOCAL_BIT"/>
- <type name="VkRenderPassMultiviewCreateInfoKHR"/>
- <type name="VkPhysicalDeviceMultiviewFeaturesKHR"/>
- <type name="VkPhysicalDeviceMultiviewPropertiesKHR"/>
- </require>
- </extension>
- <extension name="VK_IMG_format_pvrtc" number="55" type="device" author="IMG" contact="Stuart Smith" supported="vulkan">
- <require>
- <enum value="1" name="VK_IMG_FORMAT_PVRTC_SPEC_VERSION"/>
- <enum value="&quot;VK_IMG_format_pvrtc&quot;" name="VK_IMG_FORMAT_PVRTC_EXTENSION_NAME"/>
- <enum offset="0" extends="VkFormat" name="VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG"/>
- <enum offset="1" extends="VkFormat" name="VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG"/>
- <enum offset="2" extends="VkFormat" name="VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG"/>
- <enum offset="3" extends="VkFormat" name="VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG"/>
- <enum offset="4" extends="VkFormat" name="VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG"/>
- <enum offset="5" extends="VkFormat" name="VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG"/>
- <enum offset="6" extends="VkFormat" name="VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG"/>
- <enum offset="7" extends="VkFormat" name="VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG"/>
- </require>
- </extension>
- <extension name="VK_NV_external_memory_capabilities" number="56" type="instance" author="NV" contact="James Jones @cubanismo" supported="vulkan" deprecatedby="VK_KHR_external_memory_capabilities">
- <require>
- <enum value="1" name="VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_external_memory_capabilities&quot;" name="VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME"/>
- <type name="VkExternalMemoryHandleTypeFlagsNV"/>
- <type name="VkExternalMemoryHandleTypeFlagBitsNV"/>
- <type name="VkExternalMemoryFeatureFlagsNV"/>
- <type name="VkExternalMemoryFeatureFlagBitsNV"/>
- <type name="VkExternalImageFormatPropertiesNV"/>
- <command name="vkGetPhysicalDeviceExternalImageFormatPropertiesNV"/>
- </require>
- </extension>
- <extension name="VK_NV_external_memory" number="57" type="device" requires="VK_NV_external_memory_capabilities" author="NV" contact="James Jones @cubanismo" supported="vulkan" deprecatedby="VK_KHR_external_memory">
- <require>
- <enum value="1" name="VK_NV_EXTERNAL_MEMORY_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_external_memory&quot;" name="VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV"/>
- <type name="VkExternalMemoryImageCreateInfoNV"/>
- <type name="VkExportMemoryAllocateInfoNV"/>
- </require>
- </extension>
- <extension name="VK_NV_external_memory_win32" number="58" type="device" requires="VK_NV_external_memory" author="NV" contact="James Jones @cubanismo" platform="win32" supported="vulkan" deprecatedby="VK_KHR_external_memory_win32">
- <require>
- <enum value="1" name="VK_NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_external_memory_win32&quot;" name="VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV"/>
- <type name="VkImportMemoryWin32HandleInfoNV"/>
- <type name="VkExportMemoryWin32HandleInfoNV"/>
- <command name="vkGetMemoryWin32HandleNV"/>
- </require>
- </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="2" name="VK_NV_WIN32_KEYED_MUTEX_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_win32_keyed_mutex&quot;" 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"/>
- </require>
- </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="2" name="VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_get_physical_device_properties2&quot;" 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"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR" alias="VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR" alias="VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR" alias="VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR" alias="VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2"/>
- <type name="VkPhysicalDeviceFeatures2KHR"/>
- <type name="VkPhysicalDeviceProperties2KHR"/>
- <type name="VkFormatProperties2KHR"/>
- <type name="VkImageFormatProperties2KHR"/>
- <type name="VkPhysicalDeviceImageFormatInfo2KHR"/>
- <type name="VkQueueFamilyProperties2KHR"/>
- <type name="VkPhysicalDeviceMemoryProperties2KHR"/>
- <type name="VkSparseImageFormatProperties2KHR"/>
- <type name="VkPhysicalDeviceSparseImageFormatInfo2KHR"/>
- <command name="vkGetPhysicalDeviceFeatures2KHR"/>
- <command name="vkGetPhysicalDeviceProperties2KHR"/>
- <command name="vkGetPhysicalDeviceFormatProperties2KHR"/>
- <command name="vkGetPhysicalDeviceImageFormatProperties2KHR"/>
- <command name="vkGetPhysicalDeviceQueueFamilyProperties2KHR"/>
- <command name="vkGetPhysicalDeviceMemoryProperties2KHR"/>
- <command name="vkGetPhysicalDeviceSparseImageFormatProperties2KHR"/>
- </require>
- </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="4" name="VK_KHR_DEVICE_GROUP_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_device_group&quot;" 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"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR" alias="VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHR" alias="VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR" alias="VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO"/>
- <type name="VkPeerMemoryFeatureFlagsKHR"/>
- <type name="VkPeerMemoryFeatureFlagBitsKHR"/>
- <enum extends="VkPeerMemoryFeatureFlagBits" name="VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR" alias="VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT"/>
- <enum extends="VkPeerMemoryFeatureFlagBits" name="VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR" alias="VK_PEER_MEMORY_FEATURE_COPY_DST_BIT"/>
- <enum extends="VkPeerMemoryFeatureFlagBits" name="VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR" alias="VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT"/>
- <enum extends="VkPeerMemoryFeatureFlagBits" name="VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR" alias="VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT"/>
- <type name="VkMemoryAllocateFlagsKHR"/>
- <type name="VkMemoryAllocateFlagBitsKHR"/>
- <enum extends="VkMemoryAllocateFlagBits" name="VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR" alias="VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT"/>
- <type name="VkMemoryAllocateFlagsInfoKHR"/>
- <type name="VkDeviceGroupRenderPassBeginInfoKHR"/>
- <type name="VkDeviceGroupCommandBufferBeginInfoKHR"/>
- <type name="VkDeviceGroupSubmitInfoKHR"/>
- <type name="VkDeviceGroupBindSparseInfoKHR"/>
- <command name="vkGetDeviceGroupPeerMemoryFeaturesKHR"/>
- <command name="vkCmdSetDeviceMaskKHR"/>
- <command name="vkCmdDispatchBaseKHR"/>
- <enum extends="VkPipelineCreateFlagBits" name="VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR" alias="VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT"/>
- <enum extends="VkPipelineCreateFlagBits" name="VK_PIPELINE_CREATE_DISPATCH_BASE_KHR" alias="VK_PIPELINE_CREATE_DISPATCH_BASE"/>
- <enum extends="VkDependencyFlagBits" name="VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR" alias="VK_DEPENDENCY_DEVICE_GROUP_BIT"/>
- </require>
- <require extension="VK_KHR_bind_memory2">
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR" alias="VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR" alias="VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO"/>
- <type name="VkBindBufferMemoryDeviceGroupInfoKHR"/>
- <type name="VkBindImageMemoryDeviceGroupInfoKHR"/>
- <enum extends="VkImageCreateFlagBits" name="VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR" alias="VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT"/>
- </require>
- <require extension="VK_KHR_surface">
- <enum offset="7" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR"/>
- <type name="VkDeviceGroupPresentModeFlagBitsKHR"/>
- <type name="VkDeviceGroupPresentModeFlagsKHR"/>
- <type name="VkDeviceGroupPresentCapabilitiesKHR"/>
- <command name="vkGetDeviceGroupPresentCapabilitiesKHR"/>
- <command name="vkGetDeviceGroupSurfacePresentModesKHR"/>
- <command name="vkGetPhysicalDevicePresentRectanglesKHR"/>
- </require>
- <require extension="VK_KHR_swapchain">
- <enum offset="8" extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR"/>
- <enum offset="9" extends="VkStructureType" name="VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR"/>
- <enum offset="10" extends="VkStructureType" name="VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR"/>
- <enum offset="11" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR"/>
- <enum offset="12" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR"/>
- <enum bitpos="0" extends="VkSwapchainCreateFlagBitsKHR" name="VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR" comment="Allow images with VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT"/>
- <type name="VkImageSwapchainCreateInfoKHR"/>
- <type name="VkBindImageMemorySwapchainInfoKHR"/>
- <type name="VkAcquireNextImageInfoKHR"/>
- <type name="VkDeviceGroupPresentInfoKHR"/>
- <type name="VkDeviceGroupSwapchainCreateInfoKHR"/>
- <command name="vkAcquireNextImage2KHR"/>
- </require>
- </extension>
- <extension name="VK_EXT_validation_flags" number="62" type="instance" author="GOOGLE" contact="Tobin Ehlis @tobine" specialuse="debugging" supported="vulkan" deprecatedby="VK_EXT_validation_features">
- <require>
- <enum value="2" name="VK_EXT_VALIDATION_FLAGS_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_validation_flags&quot;" name="VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT"/>
- <type name="VkValidationFlagsEXT"/>
- <type name="VkValidationCheckEXT"/>
- </require>
- </extension>
- <extension name="VK_NN_vi_surface" number="63" type="instance" author="NN" contact="Mathias Heyer gitlab:@mheyer" requires="VK_KHR_surface" platform="vi" supported="vulkan">
- <require>
- <enum value="1" name="VK_NN_VI_SURFACE_SPEC_VERSION"/>
- <enum value="&quot;VK_NN_vi_surface&quot;" name="VK_NN_VI_SURFACE_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN"/>
- <type name="VkViSurfaceCreateFlagsNN"/>
- <type name="VkViSurfaceCreateInfoNN"/>
- <command name="vkCreateViSurfaceNN"/>
- </require>
- </extension>
- <extension name="VK_KHR_shader_draw_parameters" number="64" type="device" author="KHR" contact="Daniel Koch @dgkoch" supported="vulkan" promotedto="VK_VERSION_1_1">
- <require>
- <enum value="1" name="VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_shader_draw_parameters&quot;" name="VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_EXT_shader_subgroup_ballot" number="65" type="device" author="NV" contact="Daniel Koch @dgkoch" supported="vulkan" deprecatedby="VK_VERSION_1_2">
- <require>
- <enum value="1" name="VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_shader_subgroup_ballot&quot;" name="VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_EXT_shader_subgroup_vote" number="66" type="device" author="NV" contact="Daniel Koch @dgkoch" supported="vulkan" deprecatedby="VK_VERSION_1_1">
- <require>
- <enum value="1" name="VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_shader_subgroup_vote&quot;" name="VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_EXT_texture_compression_astc_hdr" number="67" type="device" author="ARM" contact="Jan-Harald Fredriksen @janharaldfredriksen-arm" requires="VK_KHR_get_physical_device_properties2" supported="vulkan">
- <require>
- <enum value="1" name="VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_texture_compression_astc_hdr&quot;" name="VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT"/>
- <type name="VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT"/>
- <enum extends="VkFormat" extnumber="67" offset="0" name="VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT"/>
- <enum extends="VkFormat" extnumber="67" offset="1" name="VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT"/>
- <enum extends="VkFormat" extnumber="67" offset="2" name="VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT"/>
- <enum extends="VkFormat" extnumber="67" offset="3" name="VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT"/>
- <enum extends="VkFormat" extnumber="67" offset="4" name="VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT"/>
- <enum extends="VkFormat" extnumber="67" offset="5" name="VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT"/>
- <enum extends="VkFormat" extnumber="67" offset="6" name="VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT"/>
- <enum extends="VkFormat" extnumber="67" offset="7" name="VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT"/>
- <enum extends="VkFormat" extnumber="67" offset="8" name="VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT"/>
- <enum extends="VkFormat" extnumber="67" offset="9" name="VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT"/>
- <enum extends="VkFormat" extnumber="67" offset="10" name="VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT"/>
- <enum extends="VkFormat" extnumber="67" offset="11" name="VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT"/>
- <enum extends="VkFormat" extnumber="67" offset="12" name="VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT"/>
- <enum extends="VkFormat" extnumber="67" offset="13" name="VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT"/>
- </require>
- </extension>
- <extension name="VK_EXT_astc_decode_mode" number="68" type="device" author="ARM" contact="Jan-Harald Fredriksen @janharaldfredriksen-arm" requires="VK_KHR_get_physical_device_properties2" supported="vulkan">
- <require>
- <enum value="1" name="VK_EXT_ASTC_DECODE_MODE_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_astc_decode_mode&quot;" name="VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT"/>
- <type name="VkImageViewASTCDecodeModeEXT"/>
- <type name="VkPhysicalDeviceASTCDecodeFeaturesEXT"/>
- </require>
- </extension>
- <extension name="VK_IMG_extension_69" number="69" type="device" author="IMG" contact="Tobias Hector @tobski" supported="disabled">
- <require>
- <enum value="0" name="VK_IMG_EXTENSION_69_SPEC_VERSION"/>
- <enum value="&quot;VK_IMG_extension_69&quot;" name="VK_IMG_EXTENSION_69_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_KHR_maintenance1" number="70" type="device" author="KHR" contact="Piers Daniell @pdaniell-nv" supported="vulkan" promotedto="VK_VERSION_1_1">
- <require>
- <enum value="2" name="VK_KHR_MAINTENANCE_1_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_maintenance1&quot;" name="VK_KHR_MAINTENANCE_1_EXTENSION_NAME"/>
- <enum alias="VK_KHR_MAINTENANCE_1_SPEC_VERSION" name="VK_KHR_MAINTENANCE1_SPEC_VERSION" comment="Backwards-compatible alias containing a typo"/>
- <enum alias="VK_KHR_MAINTENANCE_1_EXTENSION_NAME" name="VK_KHR_MAINTENANCE1_EXTENSION_NAME" comment="Backwards-compatible alias containing a typo"/>
- <enum extends="VkResult" name="VK_ERROR_OUT_OF_POOL_MEMORY_KHR" alias="VK_ERROR_OUT_OF_POOL_MEMORY"/>
- <enum extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR" alias="VK_FORMAT_FEATURE_TRANSFER_SRC_BIT"/>
- <enum extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR" alias="VK_FORMAT_FEATURE_TRANSFER_DST_BIT"/>
- <enum extends="VkImageCreateFlagBits" name="VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR" alias="VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT"/>
- <type name="VkCommandPoolTrimFlagsKHR"/>
- <command name="vkTrimCommandPoolKHR"/>
- </require>
- </extension>
- <extension name="VK_KHR_device_group_creation" number="71" type="instance" author="KHR" contact="Jeff Bolz @jeffbolznv" supported="vulkan" promotedto="VK_VERSION_1_1">
- <require>
- <enum value="1" name="VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_device_group_creation&quot;" name="VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHR" alias="VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO"/>
- <enum name="VK_MAX_DEVICE_GROUP_SIZE_KHR"/>
- <type name="VkPhysicalDeviceGroupPropertiesKHR"/>
- <type name="VkDeviceGroupDeviceCreateInfoKHR"/>
- <command name="vkEnumeratePhysicalDeviceGroupsKHR"/>
- <enum extends="VkMemoryHeapFlagBits" name="VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR" alias="VK_MEMORY_HEAP_MULTI_INSTANCE_BIT"/>
- </require>
- </extension>
- <extension name="VK_KHR_external_memory_capabilities" number="72" type="instance" author="KHR" requires="VK_KHR_get_physical_device_properties2" contact="James Jones @cubanismo" supported="vulkan" promotedto="VK_VERSION_1_1">
- <require>
- <enum value="1" name="VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_external_memory_capabilities&quot;" name="VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR" alias="VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR" alias="VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES"/>
- <enum name="VK_LUID_SIZE_KHR"/>
- <type name="VkExternalMemoryHandleTypeFlagsKHR"/>
- <type name="VkExternalMemoryHandleTypeFlagBitsKHR"/>
- <enum extends="VkExternalMemoryHandleTypeFlagBits" name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR" alias="VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT"/>
- <enum extends="VkExternalMemoryHandleTypeFlagBits" name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR" alias="VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT"/>
- <enum extends="VkExternalMemoryHandleTypeFlagBits" name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR" alias="VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"/>
- <enum extends="VkExternalMemoryHandleTypeFlagBits" name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR" alias="VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT"/>
- <enum extends="VkExternalMemoryHandleTypeFlagBits" name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR" alias="VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT"/>
- <enum extends="VkExternalMemoryHandleTypeFlagBits" name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR" alias="VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT"/>
- <enum extends="VkExternalMemoryHandleTypeFlagBits" name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR" alias="VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT"/>
- <type name="VkExternalMemoryFeatureFlagsKHR"/>
- <type name="VkExternalMemoryFeatureFlagBitsKHR"/>
- <enum extends="VkExternalMemoryFeatureFlagBits" name="VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR" alias="VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT"/>
- <enum extends="VkExternalMemoryFeatureFlagBits" name="VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR" alias="VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT"/>
- <enum extends="VkExternalMemoryFeatureFlagBits" name="VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR" alias="VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT"/>
- <type name="VkExternalMemoryPropertiesKHR"/>
- <type name="VkPhysicalDeviceExternalImageFormatInfoKHR"/>
- <type name="VkExternalImageFormatPropertiesKHR"/>
- <type name="VkPhysicalDeviceExternalBufferInfoKHR"/>
- <type name="VkExternalBufferPropertiesKHR"/>
- <type name="VkPhysicalDeviceIDPropertiesKHR"/>
- <command name="vkGetPhysicalDeviceExternalBufferPropertiesKHR"/>
- </require>
- </extension>
- <extension name="VK_KHR_external_memory" number="73" type="device" requires="VK_KHR_external_memory_capabilities" author="KHR" contact="James Jones @cubanismo" supported="vulkan" promotedto="VK_VERSION_1_1">
- <require>
- <enum value="1" name="VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_external_memory&quot;" name="VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR" alias="VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR" alias="VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR" alias="VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO"/>
- <enum extends="VkResult" name="VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR" alias="VK_ERROR_INVALID_EXTERNAL_HANDLE"/>
- <enum name="VK_QUEUE_FAMILY_EXTERNAL_KHR"/>
- <type name="VkExternalMemoryImageCreateInfoKHR"/>
- <type name="VkExternalMemoryBufferCreateInfoKHR"/>
- <type name="VkExportMemoryAllocateInfoKHR"/>
- </require>
- </extension>
- <extension name="VK_KHR_external_memory_win32" number="74" type="device" requires="VK_KHR_external_memory" author="KHR" contact="James Jones @cubanismo" platform="win32" supported="vulkan">
- <require>
- <enum value="1" name="VK_KHR_EXTERNAL_MEMORY_WIN32_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_external_memory_win32&quot;" name="VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR"/>
- <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR"/>
- <enum offset="3" extends="VkStructureType" name="VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR"/>
- <type name="VkImportMemoryWin32HandleInfoKHR"/>
- <type name="VkExportMemoryWin32HandleInfoKHR"/>
- <type name="VkMemoryWin32HandlePropertiesKHR"/>
- <type name="VkMemoryGetWin32HandleInfoKHR"/>
- <command name="vkGetMemoryWin32HandleKHR"/>
- <command name="vkGetMemoryWin32HandlePropertiesKHR"/>
- </require>
- </extension>
- <extension name="VK_KHR_external_memory_fd" number="75" type="device" requires="VK_KHR_external_memory" author="KHR" contact="James Jones @cubanismo" supported="vulkan">
- <require>
- <enum value="1" name="VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_external_memory_fd&quot;" name="VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR"/>
- <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR"/>
- <type name="VkImportMemoryFdInfoKHR"/>
- <type name="VkMemoryFdPropertiesKHR"/>
- <type name="VkMemoryGetFdInfoKHR"/>
- <command name="vkGetMemoryFdKHR"/>
- <command name="vkGetMemoryFdPropertiesKHR"/>
- </require>
- </extension>
- <extension name="VK_KHR_win32_keyed_mutex" number="76" type="device" requires="VK_KHR_external_memory_win32" author="KHR" contact="Carsten Rohde @crohde" platform="win32" supported="vulkan">
- <require>
- <enum value="1" name="VK_KHR_WIN32_KEYED_MUTEX_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_win32_keyed_mutex&quot;" name="VK_KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR"/>
- <type name="VkWin32KeyedMutexAcquireReleaseInfoKHR"/>
- </require>
- </extension>
- <extension name="VK_KHR_external_semaphore_capabilities" number="77" type="instance" author="KHR" requires="VK_KHR_get_physical_device_properties2" contact="James Jones @cubanismo" supported="vulkan" promotedto="VK_VERSION_1_1">
- <require>
- <enum value="1" name="VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_external_semaphore_capabilities&quot;" name="VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR" alias="VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES"/>
- <enum name="VK_LUID_SIZE_KHR"/>
- <type name="VkExternalSemaphoreHandleTypeFlagsKHR"/>
- <type name="VkExternalSemaphoreHandleTypeFlagBitsKHR"/>
- <enum extends="VkExternalSemaphoreHandleTypeFlagBits" name="VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR" alias="VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT"/>
- <enum extends="VkExternalSemaphoreHandleTypeFlagBits" name="VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR" alias="VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT"/>
- <enum extends="VkExternalSemaphoreHandleTypeFlagBits" name="VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR" alias="VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"/>
- <enum extends="VkExternalSemaphoreHandleTypeFlagBits" name="VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR" alias="VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT"/>
- <enum extends="VkExternalSemaphoreHandleTypeFlagBits" name="VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR" alias="VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT"/>
- <type name="VkExternalSemaphoreFeatureFlagsKHR"/>
- <type name="VkExternalSemaphoreFeatureFlagBitsKHR"/>
- <enum extends="VkExternalSemaphoreFeatureFlagBits" name="VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR" alias="VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT"/>
- <enum extends="VkExternalSemaphoreFeatureFlagBits" name="VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR" alias="VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT"/>
- <type name="VkPhysicalDeviceExternalSemaphoreInfoKHR"/>
- <type name="VkExternalSemaphorePropertiesKHR"/>
- <type name="VkPhysicalDeviceIDPropertiesKHR"/>
- <command name="vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"/>
- </require>
- </extension>
- <extension name="VK_KHR_external_semaphore" number="78" type="device" requires="VK_KHR_external_semaphore_capabilities" author="KHR" contact="James Jones @cubanismo" supported="vulkan" promotedto="VK_VERSION_1_1">
- <require>
- <enum value="1" name="VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_external_semaphore&quot;" name="VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR" alias="VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO"/>
- <type name="VkSemaphoreImportFlagsKHR"/>
- <type name="VkSemaphoreImportFlagBitsKHR"/>
- <enum extends="VkSemaphoreImportFlagBits" name="VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR" alias="VK_SEMAPHORE_IMPORT_TEMPORARY_BIT"/>
- <type name="VkExportSemaphoreCreateInfoKHR"/>
- </require>
- </extension>
- <extension name="VK_KHR_external_semaphore_win32" number="79" type="device" requires="VK_KHR_external_semaphore" author="KHR" contact="James Jones @cubanismo" platform="win32" supported="vulkan">
- <require>
- <enum value="1" name="VK_KHR_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_external_semaphore_win32&quot;" name="VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR"/>
- <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR"/>
- <enum offset="3" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR"/>
- <type name="VkImportSemaphoreWin32HandleInfoKHR"/>
- <type name="VkExportSemaphoreWin32HandleInfoKHR"/>
- <type name="VkD3D12FenceSubmitInfoKHR"/>
- <type name="VkSemaphoreGetWin32HandleInfoKHR"/>
- <command name="vkImportSemaphoreWin32HandleKHR"/>
- <command name="vkGetSemaphoreWin32HandleKHR"/>
- </require>
- </extension>
- <extension name="VK_KHR_external_semaphore_fd" number="80" type="device" requires="VK_KHR_external_semaphore" author="KHR" contact="James Jones @cubanismo" supported="vulkan">
- <require>
- <enum value="1" name="VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_external_semaphore_fd&quot;" name="VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR"/>
- <type name="VkImportSemaphoreFdInfoKHR"/>
- <type name="VkSemaphoreGetFdInfoKHR"/>
- <command name="vkImportSemaphoreFdKHR"/>
- <command name="vkGetSemaphoreFdKHR"/>
- </require>
- </extension>
- <extension name="VK_KHR_push_descriptor" number="81" type="device" author="KHR" requires="VK_KHR_get_physical_device_properties2" contact="Jeff Bolz @jeffbolznv" supported="vulkan">
- <require>
- <enum value="2" name="VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_push_descriptor&quot;" name="VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR"/>
- <enum bitpos="0" extends="VkDescriptorSetLayoutCreateFlagBits" name="VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR" comment="Descriptors are pushed via flink:vkCmdPushDescriptorSetKHR"/>
- <command name="vkCmdPushDescriptorSetKHR"/>
- <type name="VkPhysicalDevicePushDescriptorPropertiesKHR"/>
- </require>
- <require feature="VK_VERSION_1_1">
- <command name="vkCmdPushDescriptorSetWithTemplateKHR"/>
- <enum value="1" extends="VkDescriptorUpdateTemplateType" name="VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR" comment="Create descriptor update template for pushed descriptor updates"/>
- </require>
- <require extension="VK_KHR_descriptor_update_template">
- <command name="vkCmdPushDescriptorSetWithTemplateKHR"/>
- <enum value="1" extends="VkDescriptorUpdateTemplateType" name="VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR" comment="Create descriptor update template for pushed descriptor updates"/>
- </require>
- </extension>
- <extension name="VK_EXT_conditional_rendering" number="82" type="device" author="NV" contact="Vikram Kushwaha @vkushwaha" supported="vulkan">
- <require>
- <enum value="2" name="VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_conditional_rendering&quot;" 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"/>
- <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT"/>
- <type name="VkConditionalRenderingFlagsEXT"/>
- <type name="VkConditionalRenderingFlagBitsEXT"/>
- <enum bitpos="20" extends="VkAccessFlagBits" name="VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT" comment="read access flag for reading conditional rendering predicate"/>
- <enum bitpos="9" extends="VkBufferUsageFlagBits" name="VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT" comment="Specifies the buffer can be used as predicate in conditional rendering"/>
- <enum bitpos="18" extends="VkPipelineStageFlagBits" name="VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT" comment="A pipeline stage for conditional rendering predicate fetch"/>
- <command name="vkCmdBeginConditionalRenderingEXT"/>
- <command name="vkCmdEndConditionalRenderingEXT"/>
- <type name="VkConditionalRenderingBeginInfoEXT"/>
- <type name="VkPhysicalDeviceConditionalRenderingFeaturesEXT"/>
- <type name="VkCommandBufferInheritanceConditionalRenderingInfoEXT"/>
- </require>
- </extension>
- <extension name="VK_KHR_shader_float16_int8" number="83" type="device" requires="VK_KHR_get_physical_device_properties2" author="KHR" contact="Alexander Galazin @alegal-arm" supported="vulkan" promotedto="VK_VERSION_1_2">
- <require>
- <enum value="1" name="VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_shader_float16_int8&quot;" name="VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES"/>
- <type name="VkPhysicalDeviceShaderFloat16Int8FeaturesKHR"/>
- <type name="VkPhysicalDeviceFloat16Int8FeaturesKHR"/>
- </require>
- </extension>
- <extension name="VK_KHR_16bit_storage" number="84" type="device" requires="VK_KHR_get_physical_device_properties2,VK_KHR_storage_buffer_storage_class" author="KHR" contact="Jan-Harald Fredriksen @janharaldfredriksen-arm" supported="vulkan" promotedto="VK_VERSION_1_1">
- <require>
- <enum value="1" name="VK_KHR_16BIT_STORAGE_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_16bit_storage&quot;" name="VK_KHR_16BIT_STORAGE_EXTENSION_NAME"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES"/>
- <type name="VkPhysicalDevice16BitStorageFeaturesKHR"/>
- </require>
- </extension>
- <extension name="VK_KHR_incremental_present" number="85" type="device" author="KHR" requires="VK_KHR_swapchain" contact="Ian Elliott @ianelliottus" supported="vulkan">
- <require>
- <enum value="2" name="VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_incremental_present&quot;" name="VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR"/>
- <type name="VkPresentRegionsKHR"/>
- <type name="VkPresentRegionKHR"/>
- <type name="VkRectLayerKHR"/>
- </require>
- </extension>
- <extension name="VK_KHR_descriptor_update_template" number="86" type="device" author="KHR" contact="Markus Tavenrath @mtavenrath" supported="vulkan" promotedto="VK_VERSION_1_1">
- <require>
- <enum value="1" name="VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_descriptor_update_template&quot;" name="VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR" alias="VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO"/>
- <enum extends="VkObjectType" name="VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR" alias="VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE"/>
- <command name="vkCreateDescriptorUpdateTemplateKHR"/>
- <command name="vkDestroyDescriptorUpdateTemplateKHR"/>
- <command name="vkUpdateDescriptorSetWithTemplateKHR"/>
- <type name="VkDescriptorUpdateTemplateKHR"/>
- <type name="VkDescriptorUpdateTemplateCreateFlagsKHR"/>
- <type name="VkDescriptorUpdateTemplateTypeKHR"/>
- <type name="VkDescriptorUpdateTemplateEntryKHR"/>
- <type name="VkDescriptorUpdateTemplateCreateInfoKHR"/>
- <enum extends="VkDescriptorUpdateTemplateType" name="VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR" alias="VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET"/>
- </require>
- <require extension="VK_KHR_push_descriptor">
- <command name="vkCmdPushDescriptorSetWithTemplateKHR"/>
- <enum value="1" extends="VkDescriptorUpdateTemplateType" name="VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR" comment="Create descriptor update template for pushed descriptor updates"/>
- </require>
- <require extension="VK_EXT_debug_report">
- <enum extends="VkDebugReportObjectTypeEXT" name="VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT" alias="VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT"/>
- </require>
- </extension>
- <extension name="VK_NVX_device_generated_commands" number="87" type="device" author="NVX" contact="Christoph Kubisch @pixeljetstream" supported="disabled">
- <require>
- <enum value="3" name="VK_NVX_DEVICE_GENERATED_COMMANDS_SPEC_VERSION"/>
- <enum value="&quot;VK_NVX_device_generated_commands&quot;" name="VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_NV_clip_space_w_scaling" number="88" type="device" author="NV" contact="Eric Werness @ewerness-nv" supported="vulkan">
- <require>
- <enum value="1" name="VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_clip_space_w_scaling&quot;" name="VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV"/>
- <enum offset="0" extends="VkDynamicState" name="VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV"/>
- <type name="VkViewportWScalingNV"/>
- <type name="VkPipelineViewportWScalingStateCreateInfoNV"/>
- <command name="vkCmdSetViewportWScalingNV"/>
- </require>
- </extension>
- <extension name="VK_EXT_direct_mode_display" number="89" type="instance" requires="VK_KHR_display" author="NV" contact="James Jones @cubanismo" supported="vulkan">
- <require>
- <enum value="1" name="VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_direct_mode_display&quot;" name="VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME"/>
- <command name="vkReleaseDisplayEXT"/>
- </require>
- </extension>
- <extension name="VK_EXT_acquire_xlib_display" number="90" type="instance" requires="VK_EXT_direct_mode_display" author="NV" contact="James Jones @cubanismo" platform="xlib_xrandr" supported="vulkan">
- <require>
- <enum value="1" name="VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_acquire_xlib_display&quot;" name="VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME"/>
- <command name="vkAcquireXlibDisplayEXT"/>
- <command name="vkGetRandROutputDisplayEXT"/>
- </require>
- </extension>
- <extension name="VK_EXT_display_surface_counter" number="91" type="instance" requires="VK_KHR_display" author="NV" contact="James Jones @cubanismo" supported="vulkan">
- <require>
- <enum value="1" name="VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_display_surface_counter&quot;" name="VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT"/>
- <enum alias="VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT" comment="Backwards-compatible alias containing a typo"/>
- <type name="VkSurfaceCounterFlagsEXT"/>
- <type name="VkSurfaceCounterFlagBitsEXT"/>
- <type name="VkSurfaceCapabilities2EXT"/>
- <command name="vkGetPhysicalDeviceSurfaceCapabilities2EXT"/>
- </require>
- </extension>
- <extension name="VK_EXT_display_control" number="92" type="device" requires="VK_EXT_display_surface_counter,VK_KHR_swapchain" author="NV" contact="James Jones @cubanismo" supported="vulkan">
- <require>
- <enum value="1" name="VK_EXT_DISPLAY_CONTROL_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_display_control&quot;" name="VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT"/>
- <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT"/>
- <enum offset="3" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT"/>
- <type name="VkDisplayPowerStateEXT"/>
- <type name="VkDeviceEventTypeEXT"/>
- <type name="VkDisplayEventTypeEXT"/>
- <type name="VkDisplayPowerInfoEXT"/>
- <type name="VkDeviceEventInfoEXT"/>
- <type name="VkDisplayEventInfoEXT"/>
- <type name="VkSwapchainCounterCreateInfoEXT"/>
- <command name="vkDisplayPowerControlEXT"/>
- <command name="vkRegisterDeviceEventEXT"/>
- <command name="vkRegisterDisplayEventEXT"/>
- <command name="vkGetSwapchainCounterEXT"/>
- </require>
- </extension>
- <extension name="VK_GOOGLE_display_timing" number="93" type="device" author="GOOGLE" requires="VK_KHR_swapchain" contact="Ian Elliott @ianelliottus" supported="vulkan">
- <require>
- <enum value="1" name="VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION"/>
- <enum value="&quot;VK_GOOGLE_display_timing&quot;" name="VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE"/>
- <type name="VkRefreshCycleDurationGOOGLE"/>
- <type name="VkPastPresentationTimingGOOGLE"/>
- <type name="VkPresentTimesInfoGOOGLE"/>
- <type name="VkPresentTimeGOOGLE"/>
- <command name="vkGetRefreshCycleDurationGOOGLE"/>
- <command name="vkGetPastPresentationTimingGOOGLE"/>
- </require>
- </extension>
- <extension name="VK_RESERVED_do_not_use_94" number="94" supported="disabled" comment="Used for functionality subsumed into Vulkan 1.1 and not published as an extension">
- <require>
- <enum value="1" name="VK_RESERVED_DO_NOT_USE_94_SPEC_VERSION"/>
- <enum value="&quot;VK_RESERVED_do_not_use_94&quot;" name="VK_RESERVED_DO_NOT_USE_94_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_NV_sample_mask_override_coverage" number="95" type="device" author="NV" contact="Piers Daniell @pdaniell-nv" supported="vulkan">
- <require>
- <enum value="1" name="VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_sample_mask_override_coverage&quot;" name="VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME"/>
- <comment>
- enum offset=0 was mistakenly used for the 1.1 core enum
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES
- (value=1000094000). Fortunately, no conflict resulted.
- </comment>
- </require>
- </extension>
- <extension name="VK_NV_geometry_shader_passthrough" number="96" type="device" author="NV" contact="Daniel Koch @dgkoch" supported="vulkan">
- <require>
- <enum value="1" name="VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_geometry_shader_passthrough&quot;" name="VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_NV_viewport_array2" number="97" type="device" author="NV" contact="Daniel Koch @dgkoch" supported="vulkan">
- <require>
- <enum value="1" name="VK_NV_VIEWPORT_ARRAY_2_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_viewport_array2&quot;" name="VK_NV_VIEWPORT_ARRAY_2_EXTENSION_NAME"/>
- <enum alias="VK_NV_VIEWPORT_ARRAY_2_SPEC_VERSION" name="VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION" comment="Backwards-compatible alias containing a typo"/>
- <enum alias="VK_NV_VIEWPORT_ARRAY_2_EXTENSION_NAME" name="VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME" comment="Backwards-compatible alias containing a typo"/>
- </require>
- </extension>
- <extension name="VK_NVX_multiview_per_view_attributes" number="98" type="device" requires="VK_KHR_multiview" author="NVX" contact="Jeff Bolz @jeffbolznv" supported="vulkan">
- <require>
- <enum value="1" name="VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION"/>
- <enum value="&quot;VK_NVX_multiview_per_view_attributes&quot;" name="VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX"/>
- <enum bitpos="0" extends="VkSubpassDescriptionFlagBits" name="VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX"/>
- <enum bitpos="1" extends="VkSubpassDescriptionFlagBits" name="VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX"/>
- <type name="VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX"/>
- </require>
- </extension>
- <extension name="VK_NV_viewport_swizzle" number="99" type="device" author="NV" contact="Piers Daniell @pdaniell-nv" supported="vulkan">
- <require>
- <enum value="1" name="VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_viewport_swizzle&quot;" name="VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV"/>
- <type name="VkViewportSwizzleNV"/>
- <type name="VkViewportCoordinateSwizzleNV"/>
- <type name="VkPipelineViewportSwizzleStateCreateInfoNV"/>
- <type name="VkPipelineViewportSwizzleStateCreateFlagsNV"/>
- </require>
- </extension>
- <extension name="VK_EXT_discard_rectangles" number="100" type="device" requires="VK_KHR_get_physical_device_properties2" author="NV" contact="Piers Daniell @pdaniell-nv" supported="vulkan">
- <require>
- <enum value="1" name="VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_discard_rectangles&quot;" name="VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT"/>
- <enum offset="0" extends="VkDynamicState" name="VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT"/>
- <type name="VkPhysicalDeviceDiscardRectanglePropertiesEXT"/>
- <type name="VkPipelineDiscardRectangleStateCreateInfoEXT"/>
- <type name="VkPipelineDiscardRectangleStateCreateFlagsEXT"/>
- <type name="VkDiscardRectangleModeEXT"/>
- <command name="vkCmdSetDiscardRectangleEXT"/>
- </require>
- </extension>
- <extension name="VK_NV_extension_101" number="101" author="NV" contact="Daniel Koch @dgkoch" supported="disabled">
- <require>
- <enum value="0" name="VK_NV_EXTENSION_101_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_extension_101&quot;" name="VK_NV_EXTENSION_101_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_EXT_conservative_rasterization" number="102" type="device" requires="VK_KHR_get_physical_device_properties2" author="NV" contact="Piers Daniell @pdaniell-nv" supported="vulkan">
- <require>
- <enum value="1" name="VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_conservative_rasterization&quot;" name="VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT"/>
- <type name="VkPhysicalDeviceConservativeRasterizationPropertiesEXT"/>
- <type name="VkPipelineRasterizationConservativeStateCreateInfoEXT"/>
- <type name="VkPipelineRasterizationConservativeStateCreateFlagsEXT"/>
- <type name="VkConservativeRasterizationModeEXT"/>
- </require>
- </extension>
- <extension name="VK_EXT_depth_clip_enable" number="103" type="device" author="EXT" contact="Piers Daniell @pdaniell-nv" specialuse="d3demulation" supported="vulkan">
- <require>
- <enum value="1" name="VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_depth_clip_enable&quot;" name="VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT"/>
- <type name="VkPhysicalDeviceDepthClipEnableFeaturesEXT"/>
- <type name="VkPipelineRasterizationDepthClipStateCreateInfoEXT"/>
- <type name="VkPipelineRasterizationDepthClipStateCreateFlagsEXT"/>
- </require>
- </extension>
- <extension name="VK_NV_extension_104" number="104" author="NV" contact="Mathias Schott gitlab:@mschott" supported="disabled">
- <require>
- <enum value="0" name="VK_NV_EXTENSION_104_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_extension_104&quot;" name="VK_NV_EXTENSION_104_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_EXT_swapchain_colorspace" number="105" type="instance" author="GOOGLE" contact="Courtney Goeltzenleuchter @courtney-g" requires="VK_KHR_surface" supported="vulkan">
- <require>
- <enum value="4" name="VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_swapchain_colorspace&quot;" name="VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME"/>
- <enum offset="1" extends="VkColorSpaceKHR" name="VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT"/>
- <enum offset="2" extends="VkColorSpaceKHR" name="VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT"/>
- <enum offset="3" extends="VkColorSpaceKHR" name="VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT"/>
- <enum offset="4" extends="VkColorSpaceKHR" name="VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT"/>
- <enum offset="5" extends="VkColorSpaceKHR" name="VK_COLOR_SPACE_BT709_LINEAR_EXT"/>
- <enum offset="6" extends="VkColorSpaceKHR" name="VK_COLOR_SPACE_BT709_NONLINEAR_EXT"/>
- <enum offset="7" extends="VkColorSpaceKHR" name="VK_COLOR_SPACE_BT2020_LINEAR_EXT"/>
- <enum offset="8" extends="VkColorSpaceKHR" name="VK_COLOR_SPACE_HDR10_ST2084_EXT"/>
- <enum offset="9" extends="VkColorSpaceKHR" name="VK_COLOR_SPACE_DOLBYVISION_EXT"/>
- <enum offset="10" extends="VkColorSpaceKHR" name="VK_COLOR_SPACE_HDR10_HLG_EXT"/>
- <enum offset="11" extends="VkColorSpaceKHR" name="VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT"/>
- <enum offset="12" extends="VkColorSpaceKHR" name="VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT"/>
- <enum offset="13" extends="VkColorSpaceKHR" name="VK_COLOR_SPACE_PASS_THROUGH_EXT"/>
- <enum offset="14" extends="VkColorSpaceKHR" name="VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT"/>
- <enum extends="VkColorSpaceKHR" name="VK_COLOR_SPACE_DCI_P3_LINEAR_EXT" alias="VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT" comment="Deprecated name for backwards compatibility"/>
- </require>
- </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="2" name="VK_EXT_HDR_METADATA_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_hdr_metadata&quot;" name="VK_EXT_HDR_METADATA_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_HDR_METADATA_EXT"/>
- <type name="VkHdrMetadataEXT"/>
- <type name="VkXYColorEXT"/>
- <command name="vkSetHdrMetadataEXT"/>
- </require>
- </extension>
- <extension name="VK_IMG_extension_107" number="107" author="IMG" contact="Michael Worcester @michaelworcester" supported="disabled">
- <require>
- <enum value="0" name="VK_IMG_EXTENSION_107_SPEC_VERSION"/>
- <enum value="&quot;VK_IMG_extension_107&quot;" name="VK_IMG_EXTENSION_107_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_IMG_extension_108" number="108" author="IMG" contact="Michael Worcester @michaelworcester" supported="disabled">
- <require>
- <enum value="0" name="VK_IMG_EXTENSION_108_SPEC_VERSION"/>
- <enum value="&quot;VK_IMG_extension_108&quot;" name="VK_IMG_EXTENSION_108_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_KHR_imageless_framebuffer" requires="VK_KHR_maintenance2,VK_KHR_image_format_list" number="109" author="KHR" contact="Tobias Hector @tobias" type="device" supported="vulkan" promotedto="VK_VERSION_1_2">
- <require>
- <enum value="1" name="VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_imageless_framebuffer&quot;" name="VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME"/>
- <type name="VkPhysicalDeviceImagelessFramebufferFeaturesKHR"/>
- <type name="VkFramebufferAttachmentsCreateInfoKHR"/>
- <type name="VkFramebufferAttachmentImageInfoKHR"/>
- <type name="VkRenderPassAttachmentBeginInfoKHR"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR" alias="VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR" alias="VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR" alias="VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO"/>
- <enum extends="VkFramebufferCreateFlagBits" name="VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR" alias="VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT"/>
- </require>
- </extension>
- <extension name="VK_KHR_create_renderpass2" requires="VK_KHR_multiview,VK_KHR_maintenance2" number="110" contact="Tobias Hector @tobias" type="device" supported="vulkan" promotedto="VK_VERSION_1_2">
- <require>
- <enum value="1" name="VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_create_renderpass2&quot;" name="VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR" alias="VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR" alias="VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR" alias="VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR" alias="VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR" alias="VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR" alias="VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR" alias="VK_STRUCTURE_TYPE_SUBPASS_END_INFO"/>
- <command name="vkCreateRenderPass2KHR"/>
- <command name="vkCmdBeginRenderPass2KHR"/>
- <command name="vkCmdNextSubpass2KHR"/>
- <command name="vkCmdEndRenderPass2KHR"/>
- <type name="VkRenderPassCreateInfo2KHR"/>
- <type name="VkAttachmentDescription2KHR"/>
- <type name="VkAttachmentReference2KHR"/>
- <type name="VkSubpassDescription2KHR"/>
- <type name="VkSubpassDependency2KHR"/>
- <type name="VkSubpassBeginInfoKHR"/>
- <type name="VkSubpassEndInfoKHR"/>
- </require>
- </extension>
- <extension name="VK_IMG_extension_111" number="111" author="IMG" contact="Michael Worcester @michaelworcester" supported="disabled">
- <require>
- <enum value="0" name="VK_IMG_EXTENSION_111_SPEC_VERSION"/>
- <enum value="&quot;VK_IMG_extension_111&quot;" name="VK_IMG_EXTENSION_111_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_KHR_shared_presentable_image" number="112" type="device" requires="VK_KHR_swapchain,VK_KHR_get_physical_device_properties2,VK_KHR_get_surface_capabilities2" author="KHR" contact="Alon Or-bach @alonorbach" supported="vulkan">
- <require>
- <enum value="1" name="VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_shared_presentable_image&quot;" name="VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR"/>
- <enum offset="0" extends="VkPresentModeKHR" name="VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR"/>
- <enum offset="1" extends="VkPresentModeKHR" name="VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR"/>
- <enum offset="0" extends="VkImageLayout" name="VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR"/>
- <type name="VkSharedPresentSurfaceCapabilitiesKHR"/>
- <command name="vkGetSwapchainStatusKHR"/>
- </require>
- </extension>
- <extension name="VK_KHR_external_fence_capabilities" number="113" type="instance" author="KHR" requires="VK_KHR_get_physical_device_properties2" contact="Jesse Hall @critsec" supported="vulkan" promotedto="VK_VERSION_1_1">
- <require>
- <enum value="1" name="VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_external_fence_capabilities&quot;" name="VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR" alias="VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES"/>
- <enum name="VK_LUID_SIZE_KHR"/>
- <type name="VkExternalFenceHandleTypeFlagsKHR"/>
- <type name="VkExternalFenceHandleTypeFlagBitsKHR"/>
- <enum extends="VkExternalFenceHandleTypeFlagBits" name="VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR" alias="VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT"/>
- <enum extends="VkExternalFenceHandleTypeFlagBits" name="VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR" alias="VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT"/>
- <enum extends="VkExternalFenceHandleTypeFlagBits" name="VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR" alias="VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"/>
- <enum extends="VkExternalFenceHandleTypeFlagBits" name="VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR" alias="VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT"/>
- <type name="VkExternalFenceFeatureFlagsKHR"/>
- <type name="VkExternalFenceFeatureFlagBitsKHR"/>
- <enum extends="VkExternalFenceFeatureFlagBits" name="VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR" alias="VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT"/>
- <enum extends="VkExternalFenceFeatureFlagBits" name="VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR" alias="VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT"/>
- <type name="VkPhysicalDeviceExternalFenceInfoKHR"/>
- <type name="VkExternalFencePropertiesKHR"/>
- <type name="VkPhysicalDeviceIDPropertiesKHR"/>
- <command name="vkGetPhysicalDeviceExternalFencePropertiesKHR"/>
- </require>
- </extension>
- <extension name="VK_KHR_external_fence" number="114" type="device" requires="VK_KHR_external_fence_capabilities" author="KHR" contact="Jesse Hall @critsec" supported="vulkan" promotedto="VK_VERSION_1_1">
- <require>
- <enum value="1" name="VK_KHR_EXTERNAL_FENCE_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_external_fence&quot;" name="VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR" alias="VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO"/>
- <type name="VkFenceImportFlagsKHR"/>
- <type name="VkFenceImportFlagBitsKHR"/>
- <enum extends="VkFenceImportFlagBits" name="VK_FENCE_IMPORT_TEMPORARY_BIT_KHR" alias="VK_FENCE_IMPORT_TEMPORARY_BIT"/>
- <type name="VkExportFenceCreateInfoKHR"/>
- </require>
- </extension>
- <extension name="VK_KHR_external_fence_win32" number="115" type="device" requires="VK_KHR_external_fence" author="KHR" contact="Jesse Hall @critsec" platform="win32" supported="vulkan">
- <require>
- <enum value="1" name="VK_KHR_EXTERNAL_FENCE_WIN32_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_external_fence_win32&quot;" name="VK_KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR"/>
- <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR"/>
- <type name="VkImportFenceWin32HandleInfoKHR"/>
- <type name="VkExportFenceWin32HandleInfoKHR"/>
- <type name="VkFenceGetWin32HandleInfoKHR"/>
- <command name="vkImportFenceWin32HandleKHR"/>
- <command name="vkGetFenceWin32HandleKHR"/>
- </require>
- </extension>
- <extension name="VK_KHR_external_fence_fd" number="116" type="device" requires="VK_KHR_external_fence" author="KHR" contact="Jesse Hall @critsec" supported="vulkan">
- <require>
- <enum value="1" name="VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_external_fence_fd&quot;" name="VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR"/>
- <type name="VkImportFenceFdInfoKHR"/>
- <type name="VkFenceGetFdInfoKHR"/>
- <command name="vkImportFenceFdKHR"/>
- <command name="vkGetFenceFdKHR"/>
- </require>
- </extension>
- <extension name="VK_KHR_performance_query" number="117" type="device" requires="VK_KHR_get_physical_device_properties2" author="KHR" contact="Alon Or-bach @alonorbach" specialuse="devtools" supported="vulkan">
- <require>
- <enum value="1" name="VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_performance_query&quot;" name="VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME"/>
- <enum offset="0" extends="VkQueryType" name="VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR"/>
- <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR"/>
- <enum offset="3" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR"/>
- <enum offset="4" extends="VkStructureType" name="VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR"/>
- <enum offset="5" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR"/>
- <enum offset="6" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR"/>
- <type name="VkPhysicalDevicePerformanceQueryFeaturesKHR"/>
- <type name="VkPhysicalDevicePerformanceQueryPropertiesKHR"/>
- <type name="VkPerformanceCounterKHR"/>
- <type name="VkPerformanceCounterDescriptionKHR"/>
- <type name="VkPerformanceCounterDescriptionFlagsKHR"/>
- <type name="VkPerformanceCounterDescriptionFlagBitsKHR"/>
- <type name="VkQueryPoolPerformanceCreateInfoKHR"/>
- <type name="VkPerformanceCounterScopeKHR"/>
- <type name="VkPerformanceCounterStorageKHR"/>
- <type name="VkPerformanceCounterUnitKHR"/>
- <type name="VkPerformanceCounterResultKHR"/>
- <type name="VkAcquireProfilingLockInfoKHR"/>
- <type name="VkAcquireProfilingLockFlagsKHR"/>
- <type name="VkAcquireProfilingLockFlagBitsKHR"/>
- <type name="VkPerformanceQuerySubmitInfoKHR"/>
- <command name="vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR"/>
- <command name="vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR"/>
- <command name="vkAcquireProfilingLockKHR"/>
- <command name="vkReleaseProfilingLockKHR"/>
- </require>
- </extension>
- <extension name="VK_KHR_maintenance2" number="118" type="device" author="KHR" contact="Michael Worcester @michaelworcester" supported="vulkan" promotedto="VK_VERSION_1_1">
- <require>
- <enum value="1" name="VK_KHR_MAINTENANCE_2_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_maintenance2&quot;" name="VK_KHR_MAINTENANCE_2_EXTENSION_NAME"/>
- <enum alias="VK_KHR_MAINTENANCE_2_SPEC_VERSION" name="VK_KHR_MAINTENANCE2_SPEC_VERSION" comment="Backwards-compatible alias containing a typo"/>
- <enum alias="VK_KHR_MAINTENANCE_2_EXTENSION_NAME" name="VK_KHR_MAINTENANCE2_EXTENSION_NAME" comment="Backwards-compatible alias containing a typo"/>
- <enum extends="VkImageCreateFlagBits" name="VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR" alias="VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT"/>
- <enum extends="VkImageCreateFlagBits" name="VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR" alias="VK_IMAGE_CREATE_EXTENDED_USAGE_BIT"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR" alias="VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR" alias="VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR" alias="VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO"/>
- <enum extends="VkImageLayout" name="VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR" alias="VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL"/>
- <enum extends="VkImageLayout" name="VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR" alias="VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL"/>
- <type name="VkPhysicalDevicePointClippingPropertiesKHR"/>
- <type name="VkPointClippingBehaviorKHR"/>
- <enum extends="VkPointClippingBehavior" name="VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR" alias="VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES"/>
- <enum extends="VkPointClippingBehavior" name="VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR" alias="VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY"/>
- <type name="VkRenderPassInputAttachmentAspectCreateInfoKHR"/>
- <type name="VkInputAttachmentAspectReferenceKHR"/>
- <type name="VkImageViewUsageCreateInfoKHR"/>
- <type name="VkTessellationDomainOriginKHR"/>
- <enum extends="VkTessellationDomainOrigin" name="VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR" alias="VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT"/>
- <enum extends="VkTessellationDomainOrigin" name="VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR" alias="VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT"/>
- <type name="VkPipelineTessellationDomainOriginStateCreateInfoKHR"/>
- </require>
- </extension>
- <extension name="VK_KHR_extension_119" number="119" author="KHR" contact="Michael Worcester @michaelworcester" supported="disabled">
- <require>
- <enum value="0" name="VK_KHR_EXTENSION_119_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_extension_119&quot;" name="VK_KHR_EXTENSION_119_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_KHR_get_surface_capabilities2" number="120" type="instance" requires="VK_KHR_surface" author="KHR" contact="James Jones @cubanismo" supported="vulkan">
- <require>
- <enum value="1" name="VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_get_surface_capabilities2&quot;" name="VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR"/>
- <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR"/>
- <type name="VkPhysicalDeviceSurfaceInfo2KHR"/>
- <type name="VkSurfaceCapabilities2KHR"/>
- <type name="VkSurfaceFormat2KHR"/>
- <command name="vkGetPhysicalDeviceSurfaceCapabilities2KHR"/>
- <command name="vkGetPhysicalDeviceSurfaceFormats2KHR"/>
- </require>
- </extension>
- <extension name="VK_KHR_variable_pointers" number="121" type="device" author="KHR" contact="Jesse Hall @critsec" requires="VK_KHR_get_physical_device_properties2,VK_KHR_storage_buffer_storage_class" supported="vulkan" promotedto="VK_VERSION_1_1">
- <require>
- <enum value="1" name="VK_KHR_VARIABLE_POINTERS_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_variable_pointers&quot;" name="VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR"/>
- <type name="VkPhysicalDeviceVariablePointerFeaturesKHR"/>
- <type name="VkPhysicalDeviceVariablePointersFeaturesKHR"/>
- </require>
- </extension>
- <extension name="VK_KHR_get_display_properties2" number="122" type="instance" requires="VK_KHR_display" author="KHR" contact="James Jones @cubanismo" supported="vulkan">
- <require>
- <enum value="1" name="VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_get_display_properties2&quot;" name="VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR"/>
- <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR"/>
- <enum offset="3" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR"/>
- <enum offset="4" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR"/>
- <type name="VkDisplayProperties2KHR"/>
- <type name="VkDisplayPlaneProperties2KHR"/>
- <type name="VkDisplayModeProperties2KHR"/>
- <type name="VkDisplayPlaneInfo2KHR"/>
- <type name="VkDisplayPlaneCapabilities2KHR"/>
- <command name="vkGetPhysicalDeviceDisplayProperties2KHR"/>
- <command name="vkGetPhysicalDeviceDisplayPlaneProperties2KHR"/>
- <command name="vkGetDisplayModeProperties2KHR"/>
- <command name="vkGetDisplayPlaneCapabilities2KHR"/>
- </require>
- </extension>
- <extension name="VK_MVK_ios_surface" number="123" type="instance" requires="VK_KHR_surface" platform="ios" supported="vulkan" author="MVK" contact="Bill Hollings @billhollings" deprecatedby="VK_EXT_metal_surface">
- <require>
- <enum value="3" name="VK_MVK_IOS_SURFACE_SPEC_VERSION"/>
- <enum value="&quot;VK_MVK_ios_surface&quot;" name="VK_MVK_IOS_SURFACE_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK"/>
- <type name="VkIOSSurfaceCreateFlagsMVK"/>
- <type name="VkIOSSurfaceCreateInfoMVK"/>
- <command name="vkCreateIOSSurfaceMVK"/>
- </require>
- </extension>
- <extension name="VK_MVK_macos_surface" number="124" type="instance" requires="VK_KHR_surface" platform="macos" supported="vulkan" author="MVK" contact="Bill Hollings @billhollings" deprecatedby="VK_EXT_metal_surface">
- <require>
- <enum value="3" name="VK_MVK_MACOS_SURFACE_SPEC_VERSION"/>
- <enum value="&quot;VK_MVK_macos_surface&quot;" name="VK_MVK_MACOS_SURFACE_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK"/>
- <type name="VkMacOSSurfaceCreateFlagsMVK"/>
- <type name="VkMacOSSurfaceCreateInfoMVK"/>
- <command name="vkCreateMacOSSurfaceMVK"/>
- </require>
- </extension>
- <extension name="VK_MVK_moltenvk" number="125" type="instance" author="MVK" contact="Bill Hollings @billhollings" supported="vulkan">
- <require>
- <enum value="0" name="VK_MVK_MOLTENVK_SPEC_VERSION"/>
- <enum value="&quot;VK_MVK_moltenvk&quot;" name="VK_MVK_MOLTENVK_EXTENSION_NAME"/>
- <command name="vkGetMTLDeviceMVK"/>
- <command name="vkSetMTLTextureMVK"/>
- <command name="vkGetMTLTextureMVK"/>
- <command name="vkGetMTLBufferMVK"/>
- <command name="vkUseIOSurfaceMVK"/>
- <command name="vkGetIOSurfaceMVK"/>
- </require>
- </extension>
- <extension name="VK_EXT_external_memory_dma_buf" number="126" type="device" requires="VK_KHR_external_memory_fd" author="EXT" contact="Chad Versace @chadversary" supported="vulkan">
- <require>
- <enum value="1" name="VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_external_memory_dma_buf&quot;" name="VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME"/>
- <enum bitpos="9" extends="VkExternalMemoryHandleTypeFlagBits" name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT"/>
- </require>
- </extension>
- <extension name="VK_EXT_queue_family_foreign" number="127" type="device" author="EXT" requires="VK_KHR_external_memory" contact="Chad Versace @chadversary" supported="vulkan">
- <require>
- <enum value="1" name="VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_queue_family_foreign&quot;" name="VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME"/>
- <enum name="VK_QUEUE_FAMILY_FOREIGN_EXT"/>
- </require>
- </extension>
- <extension name="VK_KHR_dedicated_allocation" number="128" type="device" author="KHR" requires="VK_KHR_get_memory_requirements2" contact="James Jones @cubanismo" supported="vulkan" promotedto="VK_VERSION_1_1">
- <require>
- <enum value="3" name="VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_dedicated_allocation&quot;" name="VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR" alias="VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR" alias="VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO"/>
- <type name="VkMemoryDedicatedRequirementsKHR"/>
- <type name="VkMemoryDedicatedAllocateInfoKHR"/>
- </require>
- </extension>
- <extension name="VK_EXT_debug_utils" number="129" type="instance" author="EXT" contact="Mark Young @marky-lunarg" specialuse="debugging" supported="vulkan">
- <require>
- <enum value="2" name="VK_EXT_DEBUG_UTILS_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_debug_utils&quot;" name="VK_EXT_DEBUG_UTILS_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT"/>
- <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT"/>
- <enum offset="3" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT"/>
- <enum offset="4" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT"/>
- <enum offset="0" extends="VkObjectType" name="VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT"/>
- <type name="PFN_vkDebugUtilsMessengerCallbackEXT"/>
- <type name="VkDebugUtilsLabelEXT"/>
- <type name="VkDebugUtilsMessageSeverityFlagBitsEXT"/>
- <type name="VkDebugUtilsMessageSeverityFlagsEXT"/>
- <type name="VkDebugUtilsMessageTypeFlagBitsEXT"/>
- <type name="VkDebugUtilsMessageTypeFlagsEXT"/>
- <type name="VkDebugUtilsMessengerCallbackDataEXT"/>
- <type name="VkDebugUtilsMessengerCallbackDataFlagsEXT"/>
- <type name="VkDebugUtilsMessengerCreateFlagsEXT"/>
- <type name="VkDebugUtilsMessengerCreateInfoEXT"/>
- <type name="VkDebugUtilsMessengerEXT"/>
- <type name="VkDebugUtilsObjectNameInfoEXT"/>
- <type name="VkDebugUtilsObjectTagInfoEXT"/>
- <command name="vkSetDebugUtilsObjectNameEXT"/>
- <command name="vkSetDebugUtilsObjectTagEXT"/>
- <command name="vkQueueBeginDebugUtilsLabelEXT"/>
- <command name="vkQueueEndDebugUtilsLabelEXT"/>
- <command name="vkQueueInsertDebugUtilsLabelEXT"/>
- <command name="vkCmdBeginDebugUtilsLabelEXT"/>
- <command name="vkCmdEndDebugUtilsLabelEXT"/>
- <command name="vkCmdInsertDebugUtilsLabelEXT"/>
- <command name="vkCreateDebugUtilsMessengerEXT"/>
- <command name="vkDestroyDebugUtilsMessengerEXT"/>
- <command name="vkSubmitDebugUtilsMessageEXT"/>
- </require>
- </extension>
- <extension name="VK_ANDROID_external_memory_android_hardware_buffer" number="130" type="device" author="ANDROID" requires="VK_KHR_sampler_ycbcr_conversion,VK_KHR_external_memory,VK_EXT_queue_family_foreign,VK_KHR_dedicated_allocation" platform="android" contact="Jesse Hall @critsec" supported="vulkan">
- <require>
- <enum value="4" name="VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION"/>
- <enum value="&quot;VK_ANDROID_external_memory_android_hardware_buffer&quot;" name="VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME"/>
- <enum bitpos="10" extends="VkExternalMemoryHandleTypeFlagBits" name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID"/>
- <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID"/>
- <enum offset="3" extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID"/>
- <enum offset="4" extends="VkStructureType" name="VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID"/>
- <enum offset="5" extends="VkStructureType" name="VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID"/>
- <type name="VkAndroidHardwareBufferUsageANDROID"/>
- <type name="VkAndroidHardwareBufferPropertiesANDROID"/>
- <type name="VkAndroidHardwareBufferFormatPropertiesANDROID"/>
- <type name="VkImportAndroidHardwareBufferInfoANDROID"/>
- <type name="VkMemoryGetAndroidHardwareBufferInfoANDROID"/>
- <type name="VkExternalFormatANDROID"/>
- <command name="vkGetAndroidHardwareBufferPropertiesANDROID"/>
- <command name="vkGetMemoryAndroidHardwareBufferANDROID"/>
- <type name="AHardwareBuffer"/>
- </require>
- <require extension="VK_KHR_format_feature_flags2">
- <type name="VkAndroidHardwareBufferFormatProperties2ANDROID"/>
- <enum offset="6" extends="VkStructureType" name="VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID"/>
- </require>
- </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" promotedto="VK_VERSION_1_2">
- <require>
- <enum value="2" name="VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_sampler_filter_minmax&quot;" name="VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT" alias="VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO"/>
- <enum extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT" alias="VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT"/>
- <enum extends="VkSamplerReductionMode" name="VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT" alias="VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE"/>
- <enum extends="VkSamplerReductionMode" name="VK_SAMPLER_REDUCTION_MODE_MIN_EXT" alias="VK_SAMPLER_REDUCTION_MODE_MIN"/>
- <enum extends="VkSamplerReductionMode" name="VK_SAMPLER_REDUCTION_MODE_MAX_EXT" alias="VK_SAMPLER_REDUCTION_MODE_MAX"/>
- <type name="VkSamplerReductionModeEXT"/>
- <type name="VkSamplerReductionModeCreateInfoEXT"/>
- <type name="VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT"/>
- </require>
- </extension>
- <extension name="VK_KHR_storage_buffer_storage_class" number="132" type="device" author="KHR" contact="Alexander Galazin @alegal-arm" supported="vulkan" promotedto="VK_VERSION_1_1">
- <require>
- <enum value="1" name="VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_storage_buffer_storage_class&quot;" name="VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_AMD_gpu_shader_int16" number="133" type="device" author="AMD" contact="Qun Lin @linqun" supported="vulkan" deprecatedby="VK_KHR_shader_float16_int8">
- <require>
- <enum value="2" name="VK_AMD_GPU_SHADER_INT16_SPEC_VERSION"/>
- <enum value="&quot;VK_AMD_gpu_shader_int16&quot;" name="VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_AMD_extension_134" number="134" author="AMD" contact="Mais Alnasser @malnasse" supported="disabled">
- <require>
- <enum value="0" name="VK_AMD_EXTENSION_134_SPEC_VERSION"/>
- <enum value="&quot;VK_AMD_extension_134&quot;" name="VK_AMD_EXTENSION_134_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_AMD_extension_135" number="135" author="AMD" contact="Mais Alnasser @malnasse" supported="disabled">
- <require>
- <enum value="0" name="VK_AMD_EXTENSION_135_SPEC_VERSION"/>
- <enum value="&quot;VK_AMD_extension_135&quot;" name="VK_AMD_EXTENSION_135_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_AMD_extension_136" number="136" author="AMD" contact="Mais Alnasser @malnasse" supported="disabled">
- <require>
- <enum value="0" name="VK_AMD_EXTENSION_136_SPEC_VERSION"/>
- <enum value="&quot;VK_AMD_extension_136&quot;" name="VK_AMD_EXTENSION_136_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_AMD_mixed_attachment_samples" number="137" type="device" author="AMD" contact="Matthaeus G. Chajdas @anteru" supported="vulkan">
- <require>
- <enum value="1" name="VK_AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION"/>
- <enum value="&quot;VK_AMD_mixed_attachment_samples&quot;" name="VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_AMD_shader_fragment_mask" number="138" author="AMD" contact="Aaron Hagan @AaronHaganAMD" supported="vulkan" type="device">
- <require>
- <enum value="1" name="VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION"/>
- <enum value="&quot;VK_AMD_shader_fragment_mask&quot;" name="VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_EXT_inline_uniform_block" number="139" type="device" author="EXT" requires="VK_KHR_get_physical_device_properties2,VK_KHR_maintenance1" contact="Daniel Rakos @aqnuep" supported="vulkan">
- <require>
- <enum value="1" name="VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_inline_uniform_block&quot;" name="VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME"/>
- <enum offset="0" extends="VkDescriptorType" name="VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT"/>
- <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT"/>
- <enum offset="3" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT"/>
- <type name="VkPhysicalDeviceInlineUniformBlockFeaturesEXT"/>
- <type name="VkPhysicalDeviceInlineUniformBlockPropertiesEXT"/>
- <type name="VkWriteDescriptorSetInlineUniformBlockEXT"/>
- <type name="VkDescriptorPoolInlineUniformBlockCreateInfoEXT"/>
- </require>
- </extension>
- <extension name="VK_AMD_extension_140" number="140" author="AMD" contact="Mais Alnasser @malnasse" supported="disabled">
- <require>
- <enum value="0" name="VK_AMD_EXTENSION_140_SPEC_VERSION"/>
- <enum value="&quot;VK_AMD_extension_140&quot;" name="VK_AMD_EXTENSION_140_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_EXT_shader_stencil_export" number="141" type="device" author="EXT" contact="Dominik Witczak @dominikwitczakamd" supported="vulkan">
- <require>
- <enum value="1" name="VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_shader_stencil_export&quot;" name="VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_AMD_extension_142" number="142" author="AMD" contact="Mais Alnasser @malnasse" supported="disabled">
- <require>
- <enum value="0" name="VK_AMD_EXTENSION_142_SPEC_VERSION"/>
- <enum value="&quot;VK_AMD_extension_142&quot;" name="VK_AMD_EXTENSION_142_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_AMD_extension_143" number="143" author="AMD" contact="Mais Alnasser @malnasse" supported="disabled">
- <require>
- <enum value="0" name="VK_AMD_EXTENSION_143_SPEC_VERSION"/>
- <enum value="&quot;VK_AMD_extension_143&quot;" name="VK_AMD_EXTENSION_143_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_EXT_sample_locations" number="144" type="device" author="AMD" contact="Daniel Rakos @drakos-amd" supported="vulkan" requires="VK_KHR_get_physical_device_properties2">
- <require>
- <enum value="1" name="VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_sample_locations&quot;" name="VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME"/>
- <enum bitpos="12" extends="VkImageCreateFlagBits" name="VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT"/>
- <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT"/>
- <enum offset="3" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT"/>
- <enum offset="4" extends="VkStructureType" name="VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT"/>
- <enum offset="0" extends="VkDynamicState" name="VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT"/>
- <type name="VkSampleLocationEXT"/>
- <type name="VkSampleLocationsInfoEXT"/>
- <type name="VkAttachmentSampleLocationsEXT"/>
- <type name="VkSubpassSampleLocationsEXT"/>
- <type name="VkRenderPassSampleLocationsBeginInfoEXT"/>
- <type name="VkPipelineSampleLocationsStateCreateInfoEXT"/>
- <type name="VkPhysicalDeviceSampleLocationsPropertiesEXT"/>
- <type name="VkMultisamplePropertiesEXT"/>
- <command name="vkCmdSetSampleLocationsEXT"/>
- <command name="vkGetPhysicalDeviceMultisamplePropertiesEXT"/>
- </require>
- </extension>
- <extension name="VK_KHR_relaxed_block_layout" number="145" type="device" author="KHR" contact="John Kessenich @johnkslang" supported="vulkan" promotedto="VK_VERSION_1_1">
- <require>
- <enum value="1" name="VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_relaxed_block_layout&quot;" name="VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_RESERVED_do_not_use_146" number="146" supported="disabled" comment="Used for functionality subsumed into Vulkan 1.1 and not published as an extension">
- <require>
- <enum value="1" name="VK_RESERVED_DO_NOT_USE_146_SPEC_VERSION"/>
- <enum value="&quot;VK_RESERVED_do_not_use_146&quot;" name="VK_RESERVED_DO_NOT_USE_146_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_KHR_get_memory_requirements2" number="147" type="device" author="KHR" contact="Jason Ekstrand @jekstrand" supported="vulkan" promotedto="VK_VERSION_1_1">
- <require>
- <enum value="1" name="VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_get_memory_requirements2&quot;" name="VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR" alias="VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR" alias="VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR" alias="VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR" alias="VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR" alias="VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2"/>
- <type name="VkBufferMemoryRequirementsInfo2KHR"/>
- <type name="VkImageMemoryRequirementsInfo2KHR"/>
- <type name="VkImageSparseMemoryRequirementsInfo2KHR"/>
- <type name="VkMemoryRequirements2KHR"/>
- <type name="VkSparseImageMemoryRequirements2KHR"/>
- <command name="vkGetImageMemoryRequirements2KHR"/>
- <command name="vkGetBufferMemoryRequirements2KHR"/>
- <command name="vkGetImageSparseMemoryRequirements2KHR"/>
- </require>
- </extension>
- <extension name="VK_KHR_image_format_list" number="148" type="device" author="KHR" contact="Jason Ekstrand @jekstrand" supported="vulkan" promotedto="VK_VERSION_1_2">
- <require>
- <enum value="1" name="VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_image_format_list&quot;" name="VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR" alias="VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO"/>
- <type name="VkImageFormatListCreateInfoKHR"/>
- </require>
- </extension>
- <extension name="VK_EXT_blend_operation_advanced" number="149" type="device" author="NV" contact="Jeff Bolz @jeffbolznv" supported="vulkan">
- <require>
- <enum value="2" name="VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_blend_operation_advanced&quot;" name="VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT"/>
- <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT"/>
- <type name="VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT"/>
- <type name="VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT"/>
- <type name="VkPipelineColorBlendAdvancedStateCreateInfoEXT"/>
- <type name="VkBlendOverlapEXT"/>
- <enum offset="0" extends="VkBlendOp" name="VK_BLEND_OP_ZERO_EXT"/>
- <enum offset="1" extends="VkBlendOp" name="VK_BLEND_OP_SRC_EXT"/>
- <enum offset="2" extends="VkBlendOp" name="VK_BLEND_OP_DST_EXT"/>
- <enum offset="3" extends="VkBlendOp" name="VK_BLEND_OP_SRC_OVER_EXT"/>
- <enum offset="4" extends="VkBlendOp" name="VK_BLEND_OP_DST_OVER_EXT"/>
- <enum offset="5" extends="VkBlendOp" name="VK_BLEND_OP_SRC_IN_EXT"/>
- <enum offset="6" extends="VkBlendOp" name="VK_BLEND_OP_DST_IN_EXT"/>
- <enum offset="7" extends="VkBlendOp" name="VK_BLEND_OP_SRC_OUT_EXT"/>
- <enum offset="8" extends="VkBlendOp" name="VK_BLEND_OP_DST_OUT_EXT"/>
- <enum offset="9" extends="VkBlendOp" name="VK_BLEND_OP_SRC_ATOP_EXT"/>
- <enum offset="10" extends="VkBlendOp" name="VK_BLEND_OP_DST_ATOP_EXT"/>
- <enum offset="11" extends="VkBlendOp" name="VK_BLEND_OP_XOR_EXT"/>
- <enum offset="12" extends="VkBlendOp" name="VK_BLEND_OP_MULTIPLY_EXT"/>
- <enum offset="13" extends="VkBlendOp" name="VK_BLEND_OP_SCREEN_EXT"/>
- <enum offset="14" extends="VkBlendOp" name="VK_BLEND_OP_OVERLAY_EXT"/>
- <enum offset="15" extends="VkBlendOp" name="VK_BLEND_OP_DARKEN_EXT"/>
- <enum offset="16" extends="VkBlendOp" name="VK_BLEND_OP_LIGHTEN_EXT"/>
- <enum offset="17" extends="VkBlendOp" name="VK_BLEND_OP_COLORDODGE_EXT"/>
- <enum offset="18" extends="VkBlendOp" name="VK_BLEND_OP_COLORBURN_EXT"/>
- <enum offset="19" extends="VkBlendOp" name="VK_BLEND_OP_HARDLIGHT_EXT"/>
- <enum offset="20" extends="VkBlendOp" name="VK_BLEND_OP_SOFTLIGHT_EXT"/>
- <enum offset="21" extends="VkBlendOp" name="VK_BLEND_OP_DIFFERENCE_EXT"/>
- <enum offset="22" extends="VkBlendOp" name="VK_BLEND_OP_EXCLUSION_EXT"/>
- <enum offset="23" extends="VkBlendOp" name="VK_BLEND_OP_INVERT_EXT"/>
- <enum offset="24" extends="VkBlendOp" name="VK_BLEND_OP_INVERT_RGB_EXT"/>
- <enum offset="25" extends="VkBlendOp" name="VK_BLEND_OP_LINEARDODGE_EXT"/>
- <enum offset="26" extends="VkBlendOp" name="VK_BLEND_OP_LINEARBURN_EXT"/>
- <enum offset="27" extends="VkBlendOp" name="VK_BLEND_OP_VIVIDLIGHT_EXT"/>
- <enum offset="28" extends="VkBlendOp" name="VK_BLEND_OP_LINEARLIGHT_EXT"/>
- <enum offset="29" extends="VkBlendOp" name="VK_BLEND_OP_PINLIGHT_EXT"/>
- <enum offset="30" extends="VkBlendOp" name="VK_BLEND_OP_HARDMIX_EXT"/>
- <enum offset="31" extends="VkBlendOp" name="VK_BLEND_OP_HSL_HUE_EXT"/>
- <enum offset="32" extends="VkBlendOp" name="VK_BLEND_OP_HSL_SATURATION_EXT"/>
- <enum offset="33" extends="VkBlendOp" name="VK_BLEND_OP_HSL_COLOR_EXT"/>
- <enum offset="34" extends="VkBlendOp" name="VK_BLEND_OP_HSL_LUMINOSITY_EXT"/>
- <enum offset="35" extends="VkBlendOp" name="VK_BLEND_OP_PLUS_EXT"/>
- <enum offset="36" extends="VkBlendOp" name="VK_BLEND_OP_PLUS_CLAMPED_EXT"/>
- <enum offset="37" extends="VkBlendOp" name="VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT"/>
- <enum offset="38" extends="VkBlendOp" name="VK_BLEND_OP_PLUS_DARKER_EXT"/>
- <enum offset="39" extends="VkBlendOp" name="VK_BLEND_OP_MINUS_EXT"/>
- <enum offset="40" extends="VkBlendOp" name="VK_BLEND_OP_MINUS_CLAMPED_EXT"/>
- <enum offset="41" extends="VkBlendOp" name="VK_BLEND_OP_CONTRAST_EXT"/>
- <enum offset="42" extends="VkBlendOp" name="VK_BLEND_OP_INVERT_OVG_EXT"/>
- <enum offset="43" extends="VkBlendOp" name="VK_BLEND_OP_RED_EXT"/>
- <enum offset="44" extends="VkBlendOp" name="VK_BLEND_OP_GREEN_EXT"/>
- <enum offset="45" extends="VkBlendOp" name="VK_BLEND_OP_BLUE_EXT"/>
- <enum bitpos="19" extends="VkAccessFlagBits" name="VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT"/>
- </require>
- </extension>
- <extension name="VK_NV_fragment_coverage_to_color" number="150" type="device" author="NV" contact="Jeff Bolz @jeffbolznv" supported="vulkan">
- <require>
- <enum value="1" name="VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_fragment_coverage_to_color&quot;" name="VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV"/>
- <type name="VkPipelineCoverageToColorStateCreateFlagsNV"/>
- <type name="VkPipelineCoverageToColorStateCreateInfoNV"/>
- </require>
- </extension>
- <extension name="VK_KHR_acceleration_structure" number="151" type="device" requiresCore="1.1" requires="VK_EXT_descriptor_indexing,VK_KHR_buffer_device_address,VK_KHR_deferred_host_operations" author="KHR" contact="Daniel Koch @dgkoch" supported="vulkan" sortorder="1">
- <require>
- <enum value="13" name="VK_KHR_ACCELERATION_STRUCTURE_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_acceleration_structure&quot;" name="VK_KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME"/>
- <enum offset="7" extends="VkStructureType" name="VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR"/>
- <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR"/>
- <enum offset="3" extends="VkStructureType" name="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR"/>
- <enum offset="4" extends="VkStructureType" name="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR"/>
- <enum offset="5" extends="VkStructureType" name="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR"/>
- <enum offset="6" extends="VkStructureType" name="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR"/>
- <enum offset="9" extends="VkStructureType" name="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR"/>
- <enum offset="10" extends="VkStructureType" name="VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR"/>
- <enum offset="11" extends="VkStructureType" name="VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR"/>
- <enum offset="12" extends="VkStructureType" name="VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR"/>
- <enum offset="13" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR"/>
- <enum offset="14" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR"/>
- <enum offset="17" extends="VkStructureType" name="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR"/>
- <enum offset="20" extends="VkStructureType" name="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR"/>
- <enum bitpos="25" extends="VkPipelineStageFlagBits" name="VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR"/>
- <enum offset="0" extends="VkDescriptorType" name="VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR"/>
- <enum bitpos="21" extends="VkAccessFlagBits" name="VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR"/>
- <enum bitpos="22" extends="VkAccessFlagBits" name="VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR"/>
- <enum offset="0" extends="VkQueryType" name="VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR"/>
- <enum offset="1" extends="VkQueryType" name="VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR"/>
- <enum offset="0" extends="VkObjectType" name="VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR"/>
- <enum offset="0" extends="VkDebugReportObjectTypeEXT" name="VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT"/>
- <enum offset="0" extends="VkIndexType" extnumber="166" name="VK_INDEX_TYPE_NONE_KHR"/>
- <enum bitpos="29" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR"/>
- <enum bitpos="19" extends="VkBufferUsageFlagBits" name="VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR"/>
- <enum bitpos="20" extends="VkBufferUsageFlagBits" name="VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR"/>
- <type name="VkAccelerationStructureTypeKHR"/>
- <type name="VkDeviceOrHostAddressKHR"/>
- <type name="VkDeviceOrHostAddressConstKHR"/>
- <type name="VkAccelerationStructureBuildRangeInfoKHR"/>
- <type name="VkAabbPositionsKHR"/>
- <type name="VkAccelerationStructureGeometryTrianglesDataKHR"/>
- <type name="VkTransformMatrixKHR"/>
- <type name="VkAccelerationStructureBuildGeometryInfoKHR"/>
- <type name="VkAccelerationStructureBuildTypeKHR"/>
- <type name="VkAccelerationStructureGeometryAabbsDataKHR"/>
- <type name="VkAccelerationStructureInstanceKHR"/>
- <type name="VkAccelerationStructureGeometryInstancesDataKHR"/>
- <type name="VkAccelerationStructureGeometryDataKHR"/>
- <type name="VkAccelerationStructureGeometryKHR"/>
- <type name="VkGeometryFlagsKHR"/>
- <type name="VkGeometryInstanceFlagsKHR"/>
- <type name="VkGeometryFlagBitsKHR"/>
- <type name="VkGeometryInstanceFlagBitsKHR"/>
- <type name="VkAccelerationStructureCreateInfoKHR"/>
- <type name="VkAccelerationStructureKHR"/>
- <type name="VkBuildAccelerationStructureFlagBitsKHR"/>
- <type name="VkBuildAccelerationStructureFlagsKHR"/>
- <type name="VkCopyAccelerationStructureModeKHR"/>
- <type name="VkGeometryTypeKHR"/>
- <type name="VkWriteDescriptorSetAccelerationStructureKHR"/>
- <type name="VkPhysicalDeviceAccelerationStructureFeaturesKHR"/>
- <type name="VkPhysicalDeviceAccelerationStructurePropertiesKHR"/>
- <type name="VkAccelerationStructureDeviceAddressInfoKHR"/>
- <type name="VkAccelerationStructureVersionInfoKHR"/>
- <type name="VkCopyAccelerationStructureToMemoryInfoKHR"/>
- <type name="VkCopyMemoryToAccelerationStructureInfoKHR"/>
- <type name="VkCopyAccelerationStructureInfoKHR"/>
- <type name="VkAccelerationStructureCompatibilityKHR"/>
- <type name="VkAccelerationStructureCreateFlagBitsKHR"/>
- <type name="VkAccelerationStructureCreateFlagsKHR"/>
- <type name="VkBuildAccelerationStructureModeKHR"/>
- <type name="VkAccelerationStructureBuildSizesInfoKHR"/>
- <command name="vkCreateAccelerationStructureKHR"/>
- <command name="vkDestroyAccelerationStructureKHR"/>
- <command name="vkCmdBuildAccelerationStructuresKHR"/>
- <command name="vkCmdBuildAccelerationStructuresIndirectKHR"/>
- <command name="vkBuildAccelerationStructuresKHR"/>
- <command name="vkCopyAccelerationStructureKHR"/>
- <command name="vkCopyAccelerationStructureToMemoryKHR"/>
- <command name="vkCopyMemoryToAccelerationStructureKHR"/>
- <command name="vkWriteAccelerationStructuresPropertiesKHR"/>
- <command name="vkCmdCopyAccelerationStructureKHR"/>
- <command name="vkCmdCopyAccelerationStructureToMemoryKHR"/>
- <command name="vkCmdCopyMemoryToAccelerationStructureKHR"/>
- <command name="vkGetAccelerationStructureDeviceAddressKHR"/>
- <command name="vkCmdWriteAccelerationStructuresPropertiesKHR"/>
- <command name="vkGetDeviceAccelerationStructureCompatibilityKHR"/>
- <command name="vkGetAccelerationStructureBuildSizesKHR"/>
- </require>
- <require extension="VK_KHR_format_feature_flags2">
- <enum bitpos="29" extends="VkFormatFeatureFlagBits2KHR" name="VK_FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR"/>
- </require>
- </extension>
- <extension name="VK_KHR_ray_tracing_pipeline" number="348" type="device" requiresCore="1.1" requires="VK_KHR_spirv_1_4,VK_KHR_acceleration_structure" author="KHR" contact="Daniel Koch @dgkoch" supported="vulkan" sortorder="1">
- <require>
- <enum value="1" name="VK_KHR_RAY_TRACING_PIPELINE_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_ray_tracing_pipeline&quot;" name="VK_KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME"/>
- <enum name="VK_SHADER_UNUSED_KHR"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR"/>
- <enum offset="15" extends="VkStructureType" extnumber="151" name="VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR"/>
- <enum offset="16" extends="VkStructureType" extnumber="151" name="VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR"/>
- <enum offset="18" extends="VkStructureType" extnumber="151" name="VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR"/>
- <enum bitpos="8" extends="VkShaderStageFlagBits" name="VK_SHADER_STAGE_RAYGEN_BIT_KHR"/>
- <enum bitpos="9" extends="VkShaderStageFlagBits" name="VK_SHADER_STAGE_ANY_HIT_BIT_KHR"/>
- <enum bitpos="10" extends="VkShaderStageFlagBits" name="VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR"/>
- <enum bitpos="11" extends="VkShaderStageFlagBits" name="VK_SHADER_STAGE_MISS_BIT_KHR"/>
- <enum bitpos="12" extends="VkShaderStageFlagBits" name="VK_SHADER_STAGE_INTERSECTION_BIT_KHR"/>
- <enum bitpos="13" extends="VkShaderStageFlagBits" name="VK_SHADER_STAGE_CALLABLE_BIT_KHR"/>
- <enum bitpos="21" extends="VkPipelineStageFlagBits" name="VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR"/>
- <enum bitpos="10" extends="VkBufferUsageFlagBits" name="VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR"/>
- <enum offset="0" extends="VkPipelineBindPoint" extnumber="166" name="VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR"/>
- <enum bitpos="14" extends="VkPipelineCreateFlagBits" name="VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR"/>
- <enum bitpos="15" extends="VkPipelineCreateFlagBits" name="VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR"/>
- <enum bitpos="16" extends="VkPipelineCreateFlagBits" name="VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR"/>
- <enum bitpos="17" extends="VkPipelineCreateFlagBits" name="VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR"/>
- <enum bitpos="12" extends="VkPipelineCreateFlagBits" name="VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR"/>
- <enum bitpos="13" extends="VkPipelineCreateFlagBits" name="VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR"/>
- <enum bitpos="19" extends="VkPipelineCreateFlagBits" name="VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR"/>
- <enum offset="0" extends="VkDynamicState" name="VK_DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR"/>
- <type name="VkRayTracingShaderGroupCreateInfoKHR"/>
- <type name="VkRayTracingShaderGroupTypeKHR"/>
- <type name="VkRayTracingPipelineCreateInfoKHR"/>
- <type name="VkPhysicalDeviceRayTracingPipelineFeaturesKHR"/>
- <type name="VkPhysicalDeviceRayTracingPipelinePropertiesKHR"/>
- <type name="VkStridedDeviceAddressRegionKHR"/>
- <type name="VkTraceRaysIndirectCommandKHR"/>
- <type name="VkRayTracingPipelineInterfaceCreateInfoKHR"/>
- <type name="VkShaderGroupShaderKHR"/>
- <command name="vkCmdTraceRaysKHR"/>
- <command name="vkCreateRayTracingPipelinesKHR"/>
- <command name="vkGetRayTracingShaderGroupHandlesKHR"/>
- <command name="vkGetRayTracingCaptureReplayShaderGroupHandlesKHR"/>
- <command name="vkCmdTraceRaysIndirectKHR"/>
- <command name="vkGetRayTracingShaderGroupStackSizeKHR"/>
- <command name="vkCmdSetRayTracingPipelineStackSizeKHR"/>
- </require>
- </extension>
- <extension name="VK_KHR_ray_query" number="349" type="device" requiresCore="1.1" requires="VK_KHR_spirv_1_4,VK_KHR_acceleration_structure" author="KHR" contact="Daniel Koch @dgkoch" supported="vulkan" sortorder="1">
- <require>
- <enum value="1" name="VK_KHR_RAY_QUERY_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_ray_query&quot;" name="VK_KHR_RAY_QUERY_EXTENSION_NAME"/>
- <enum offset="13" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR"/>
- <type name="VkPhysicalDeviceRayQueryFeaturesKHR"/>
- </require>
- </extension>
- <extension name="VK_NV_extension_152" number="152" author="NV" contact="Jeff Bolz @jeffbolznv" supported="disabled">
- <require>
- <enum value="0" name="VK_NV_EXTENSION_152_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_extension_152&quot;" name="VK_NV_EXTENSION_152_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_NV_framebuffer_mixed_samples" number="153" type="device" author="NV" contact="Jeff Bolz @jeffbolznv" supported="vulkan">
- <require>
- <enum value="1" name="VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_framebuffer_mixed_samples&quot;" name="VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV"/>
- <type name="VkPipelineCoverageModulationStateCreateInfoNV"/>
- <type name="VkPipelineCoverageModulationStateCreateFlagsNV"/>
- <type name="VkCoverageModulationModeNV"/>
- </require>
- </extension>
- <extension name="VK_NV_fill_rectangle" number="154" type="device" author="NV" contact="Jeff Bolz @jeffbolznv" supported="vulkan">
- <require>
- <enum value="1" name="VK_NV_FILL_RECTANGLE_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_fill_rectangle&quot;" name="VK_NV_FILL_RECTANGLE_EXTENSION_NAME"/>
- <enum offset="0" extends="VkPolygonMode" name="VK_POLYGON_MODE_FILL_RECTANGLE_NV"/>
- </require>
- </extension>
- <extension name="VK_NV_shader_sm_builtins" number="155" type="device" requiresCore="1.1" author="NV" contact="Daniel Koch @dgkoch" supported="vulkan">
- <require>
- <enum value="1" name="VK_NV_SHADER_SM_BUILTINS_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_shader_sm_builtins&quot;" name="VK_NV_SHADER_SM_BUILTINS_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV"/>
- <type name="VkPhysicalDeviceShaderSMBuiltinsPropertiesNV"/>
- <type name="VkPhysicalDeviceShaderSMBuiltinsFeaturesNV"/>
- </require>
- </extension>
- <extension name="VK_EXT_post_depth_coverage" number="156" type="device" author="NV" contact="Daniel Koch @dgkoch" supported="vulkan">
- <require>
- <enum value="1" name="VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_post_depth_coverage&quot;" name="VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME"/>
- </require>
- </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="14" name="VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_sampler_ycbcr_conversion&quot;" 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"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR" alias="VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR" alias="VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR" alias="VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES"/>
- <enum extends="VkDebugReportObjectTypeEXT" name="VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT" alias="VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT"/>
- <enum extends="VkObjectType" name="VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR" alias="VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION"/>
- <enum extends="VkFormat" name="VK_FORMAT_G8B8G8R8_422_UNORM_KHR" alias="VK_FORMAT_G8B8G8R8_422_UNORM"/>
- <enum extends="VkFormat" name="VK_FORMAT_B8G8R8G8_422_UNORM_KHR" alias="VK_FORMAT_B8G8R8G8_422_UNORM"/>
- <enum extends="VkFormat" name="VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR" alias="VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM"/>
- <enum extends="VkFormat" name="VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR" alias="VK_FORMAT_G8_B8R8_2PLANE_420_UNORM"/>
- <enum extends="VkFormat" name="VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR" alias="VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM"/>
- <enum extends="VkFormat" name="VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR" alias="VK_FORMAT_G8_B8R8_2PLANE_422_UNORM"/>
- <enum extends="VkFormat" name="VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR" alias="VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM"/>
- <enum extends="VkFormat" name="VK_FORMAT_R10X6_UNORM_PACK16_KHR" alias="VK_FORMAT_R10X6_UNORM_PACK16"/>
- <enum extends="VkFormat" name="VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR" alias="VK_FORMAT_R10X6G10X6_UNORM_2PACK16"/>
- <enum extends="VkFormat" name="VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR" alias="VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16"/>
- <enum extends="VkFormat" name="VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR" alias="VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16"/>
- <enum extends="VkFormat" name="VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR" alias="VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16"/>
- <enum extends="VkFormat" name="VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR" alias="VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16"/>
- <enum extends="VkFormat" name="VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR" alias="VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16"/>
- <enum extends="VkFormat" name="VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR" alias="VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16"/>
- <enum extends="VkFormat" name="VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR" alias="VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16"/>
- <enum extends="VkFormat" name="VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR" alias="VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16"/>
- <enum extends="VkFormat" name="VK_FORMAT_R12X4_UNORM_PACK16_KHR" alias="VK_FORMAT_R12X4_UNORM_PACK16"/>
- <enum extends="VkFormat" name="VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR" alias="VK_FORMAT_R12X4G12X4_UNORM_2PACK16"/>
- <enum extends="VkFormat" name="VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR" alias="VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16"/>
- <enum extends="VkFormat" name="VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR" alias="VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16"/>
- <enum extends="VkFormat" name="VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR" alias="VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16"/>
- <enum extends="VkFormat" name="VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR" alias="VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16"/>
- <enum extends="VkFormat" name="VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR" alias="VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16"/>
- <enum extends="VkFormat" name="VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR" alias="VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16"/>
- <enum extends="VkFormat" name="VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR" alias="VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16"/>
- <enum extends="VkFormat" name="VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR" alias="VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16"/>
- <enum extends="VkFormat" name="VK_FORMAT_G16B16G16R16_422_UNORM_KHR" alias="VK_FORMAT_G16B16G16R16_422_UNORM"/>
- <enum extends="VkFormat" name="VK_FORMAT_B16G16R16G16_422_UNORM_KHR" alias="VK_FORMAT_B16G16R16G16_422_UNORM"/>
- <enum extends="VkFormat" name="VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR" alias="VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM"/>
- <enum extends="VkFormat" name="VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR" alias="VK_FORMAT_G16_B16R16_2PLANE_420_UNORM"/>
- <enum extends="VkFormat" name="VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR" alias="VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM"/>
- <enum extends="VkFormat" name="VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR" alias="VK_FORMAT_G16_B16R16_2PLANE_422_UNORM"/>
- <enum extends="VkFormat" name="VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR" alias="VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM"/>
- <enum extends="VkImageAspectFlagBits" name="VK_IMAGE_ASPECT_PLANE_0_BIT_KHR" alias="VK_IMAGE_ASPECT_PLANE_0_BIT"/>
- <enum extends="VkImageAspectFlagBits" name="VK_IMAGE_ASPECT_PLANE_1_BIT_KHR" alias="VK_IMAGE_ASPECT_PLANE_1_BIT"/>
- <enum extends="VkImageAspectFlagBits" name="VK_IMAGE_ASPECT_PLANE_2_BIT_KHR" alias="VK_IMAGE_ASPECT_PLANE_2_BIT"/>
- <enum extends="VkImageCreateFlagBits" name="VK_IMAGE_CREATE_DISJOINT_BIT_KHR" alias="VK_IMAGE_CREATE_DISJOINT_BIT"/>
- <enum extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR" alias="VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT"/>
- <enum extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR" alias="VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT"/>
- <enum extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR" alias="VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT"/>
- <enum extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR" alias="VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT"/>
- <enum extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR" alias="VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT"/>
- <enum extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_DISJOINT_BIT_KHR" alias="VK_FORMAT_FEATURE_DISJOINT_BIT"/>
- <enum extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR" alias="VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT"/>
- <type name="VkSamplerYcbcrConversionCreateInfoKHR"/>
- <type name="VkSamplerYcbcrConversionInfoKHR"/>
- <type name="VkBindImagePlaneMemoryInfoKHR"/>
- <type name="VkImagePlaneMemoryRequirementsInfoKHR"/>
- <type name="VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR"/>
- <type name="VkSamplerYcbcrConversionImageFormatPropertiesKHR"/>
- <command name="vkCreateSamplerYcbcrConversionKHR"/>
- <command name="vkDestroySamplerYcbcrConversionKHR"/>
- <type name="VkSamplerYcbcrConversionKHR"/>
- <type name="VkSamplerYcbcrModelConversionKHR"/>
- <enum extends="VkSamplerYcbcrModelConversion" name="VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR" alias="VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY"/>
- <enum extends="VkSamplerYcbcrModelConversion" name="VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR" alias="VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY"/>
- <enum extends="VkSamplerYcbcrModelConversion" name="VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR" alias="VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709"/>
- <enum extends="VkSamplerYcbcrModelConversion" name="VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR" alias="VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601"/>
- <enum extends="VkSamplerYcbcrModelConversion" name="VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR" alias="VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020"/>
- <type name="VkSamplerYcbcrRangeKHR"/>
- <enum extends="VkSamplerYcbcrRange" name="VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR" alias="VK_SAMPLER_YCBCR_RANGE_ITU_FULL"/>
- <enum extends="VkSamplerYcbcrRange" name="VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR" alias="VK_SAMPLER_YCBCR_RANGE_ITU_NARROW"/>
- <type name="VkChromaLocationKHR"/>
- <enum extends="VkChromaLocation" name="VK_CHROMA_LOCATION_COSITED_EVEN_KHR" alias="VK_CHROMA_LOCATION_COSITED_EVEN"/>
- <enum extends="VkChromaLocation" name="VK_CHROMA_LOCATION_MIDPOINT_KHR" alias="VK_CHROMA_LOCATION_MIDPOINT"/>
- </require>
- <require extension="VK_EXT_debug_report">
- <enum extends="VkDebugReportObjectTypeEXT" offset="0" name="VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT"/>
- </require>
- </extension>
- <extension name="VK_KHR_bind_memory2" number="158" type="device" author="KHR" contact="Tobias Hector @tobski" supported="vulkan" promotedto="VK_VERSION_1_1">
- <require>
- <enum value="1" name="VK_KHR_BIND_MEMORY_2_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_bind_memory2&quot;" name="VK_KHR_BIND_MEMORY_2_EXTENSION_NAME"/>
- <command name="vkBindBufferMemory2KHR"/>
- <command name="vkBindImageMemory2KHR"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR" alias="VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR" alias="VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO"/>
- <enum extends="VkImageCreateFlagBits" name="VK_IMAGE_CREATE_ALIAS_BIT_KHR" alias="VK_IMAGE_CREATE_ALIAS_BIT"/>
- <type name="VkBindBufferMemoryInfoKHR"/>
- <type name="VkBindImageMemoryInfoKHR"/>
- </require>
- </extension>
- <extension name="VK_EXT_image_drm_format_modifier" number="159" type="device" requires="VK_KHR_bind_memory2,VK_KHR_get_physical_device_properties2,VK_KHR_image_format_list,VK_KHR_sampler_ycbcr_conversion" author="EXT" contact="Chad Versace @chadversary" supported="vulkan">
- <require>
- <enum value="2" name="VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_image_drm_format_modifier&quot;" name="VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME"/>
- <enum offset="0" dir="-" extends="VkResult" name="VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT"/>
- <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT"/>
- <enum offset="3" extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT"/>
- <enum offset="4" extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT"/>
- <enum offset="5" extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT"/>
- <enum offset="0" extends="VkImageTiling" name="VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT"/>
- <enum bitpos="7" extends="VkImageAspectFlagBits" name="VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT"/>
- <enum bitpos="8" extends="VkImageAspectFlagBits" name="VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT"/>
- <enum bitpos="9" extends="VkImageAspectFlagBits" name="VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT"/>
- <enum bitpos="10" extends="VkImageAspectFlagBits" name="VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT"/>
- <type name="VkDrmFormatModifierPropertiesListEXT"/>
- <type name="VkDrmFormatModifierPropertiesEXT"/>
- <type name="VkPhysicalDeviceImageDrmFormatModifierInfoEXT"/>
- <type name="VkImageDrmFormatModifierListCreateInfoEXT"/>
- <type name="VkImageDrmFormatModifierExplicitCreateInfoEXT"/>
- <type name="VkImageDrmFormatModifierPropertiesEXT"/>
- <command name="vkGetImageDrmFormatModifierPropertiesEXT"/>
- </require>
- <require extension="VK_KHR_format_feature_flags2">
- <type name="VkDrmFormatModifierPropertiesList2EXT"/>
- <type name="VkDrmFormatModifierProperties2EXT"/>
- <enum offset="6" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT"/>
- </require>
- </extension>
- <extension name="VK_EXT_extension_160" number="160" author="EXT" contact="Mark Young @marky-lunarg" supported="disabled">
- <require>
- <enum value="0" name="VK_EXT_EXTENSION_160_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_extension_160&quot;" name="VK_EXT_EXTENSION_160_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_EXT_validation_cache" number="161" type="device" author="GOOGLE" contact="Cort Stratton @cdwfs" supported="vulkan">
- <require>
- <enum value="1" name="VK_EXT_VALIDATION_CACHE_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_validation_cache&quot;" name="VK_EXT_VALIDATION_CACHE_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT"/>
- <enum offset="0" extends="VkObjectType" name="VK_OBJECT_TYPE_VALIDATION_CACHE_EXT"/>
- <type name="VkValidationCacheEXT"/>
- <type name="VkValidationCacheCreateInfoEXT"/>
- <type name="VkShaderModuleValidationCacheCreateInfoEXT"/>
- <type name="VkValidationCacheHeaderVersionEXT"/>
- <type name="VkValidationCacheCreateFlagsEXT"/>
- <command name="vkCreateValidationCacheEXT"/>
- <command name="vkDestroyValidationCacheEXT"/>
- <command name="vkMergeValidationCachesEXT"/>
- <command name="vkGetValidationCacheDataEXT"/>
- </require>
- </extension>
- <extension name="VK_EXT_descriptor_indexing" number="162" type="device" requires="VK_KHR_get_physical_device_properties2,VK_KHR_maintenance3" author="NV" contact="Jeff Bolz @jeffbolznv" supported="vulkan" promotedto="VK_VERSION_1_2">
- <require>
- <enum value="2" name="VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_descriptor_indexing&quot;" name="VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT" alias="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT" alias="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT" alias="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT"/>
- <enum extends="VkDescriptorBindingFlagBits" name="VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT" alias="VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT"/>
- <enum extends="VkDescriptorBindingFlagBits" name="VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT" alias="VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT"/>
- <enum extends="VkDescriptorBindingFlagBits" name="VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT" alias="VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT"/>
- <enum extends="VkDescriptorBindingFlagBits" name="VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT" alias="VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT"/>
- <enum extends="VkDescriptorPoolCreateFlagBits" name="VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT" alias="VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT"/>
- <enum extends="VkDescriptorSetLayoutCreateFlagBits" name="VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT" alias="VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT"/>
- <enum extends="VkResult" name="VK_ERROR_FRAGMENTATION_EXT" alias="VK_ERROR_FRAGMENTATION"/>
- <type name="VkDescriptorSetLayoutBindingFlagsCreateInfoEXT"/>
- <type name="VkPhysicalDeviceDescriptorIndexingFeaturesEXT"/>
- <type name="VkPhysicalDeviceDescriptorIndexingPropertiesEXT"/>
- <type name="VkDescriptorSetVariableDescriptorCountAllocateInfoEXT"/>
- <type name="VkDescriptorSetVariableDescriptorCountLayoutSupportEXT"/>
- <type name="VkDescriptorBindingFlagBitsEXT"/>
- <type name="VkDescriptorBindingFlagsEXT"/>
- </require>
- </extension>
- <extension name="VK_EXT_shader_viewport_index_layer" number="163" type="device" author="NV" contact="Daniel Koch @dgkoch" supported="vulkan" promotedto="VK_VERSION_1_2">
- <require>
- <enum value="1" name="VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_shader_viewport_index_layer&quot;" name="VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_KHR_portability_subset" number="164" type="device" requires="VK_KHR_get_physical_device_properties2" author="KHR" contact="Bill Hollings @billhollings" platform="provisional" supported="vulkan" provisional="true">
- <require>
- <enum value="1" name="VK_KHR_PORTABILITY_SUBSET_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_portability_subset&quot;" name="VK_KHR_PORTABILITY_SUBSET_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <type name="VkPhysicalDevicePortabilitySubsetFeaturesKHR"/>
- <type name="VkPhysicalDevicePortabilitySubsetPropertiesKHR"/>
- </require>
- </extension>
- <extension name="VK_NV_shading_rate_image" number="165" type="device" requires="VK_KHR_get_physical_device_properties2" author="NV" contact="Pat Brown @nvpbrown" supported="vulkan">
- <require>
- <enum value="3" name="VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_shading_rate_image&quot;" name="VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV"/>
- <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV"/>
- <enum extends="VkImageLayout" name="VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV" alias="VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR"/>
- <enum offset="4" extends="VkDynamicState" name="VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV"/>
- <enum extends="VkAccessFlagBits" name="VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV" alias="VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR"/>
- <enum extends="VkImageUsageFlagBits" name="VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV" alias="VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"/>
- <enum extends="VkPipelineStageFlagBits" name="VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV" alias="VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"/>
- <enum offset="5" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV"/>
- <enum offset="6" extends="VkDynamicState" name="VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV"/>
- <type name="VkShadingRatePaletteEntryNV"/>
- <type name="VkShadingRatePaletteNV"/>
- <type name="VkPipelineViewportShadingRateImageStateCreateInfoNV"/>
- <type name="VkPhysicalDeviceShadingRateImageFeaturesNV"/>
- <type name="VkPhysicalDeviceShadingRateImagePropertiesNV"/>
- <type name="VkCoarseSampleLocationNV"/>
- <type name="VkCoarseSampleOrderCustomNV"/>
- <type name="VkPipelineViewportCoarseSampleOrderStateCreateInfoNV"/>
- <type name="VkCoarseSampleOrderTypeNV"/>
- <command name="vkCmdBindShadingRateImageNV"/>
- <command name="vkCmdSetViewportShadingRatePaletteNV"/>
- <command name="vkCmdSetCoarseSampleOrderNV"/>
- </require>
- </extension>
- <extension name="VK_NV_ray_tracing" number="166" type="device" requires="VK_KHR_get_physical_device_properties2,VK_KHR_get_memory_requirements2" author="NV" contact="Eric Werness @ewerness-nv" supported="vulkan">
- <require>
- <enum value="3" name="VK_NV_RAY_TRACING_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_ray_tracing&quot;" name="VK_NV_RAY_TRACING_EXTENSION_NAME"/>
- <enum name="VK_SHADER_UNUSED_NV"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV"/>
- <enum offset="3" extends="VkStructureType" name="VK_STRUCTURE_TYPE_GEOMETRY_NV"/>
- <enum offset="4" extends="VkStructureType" name="VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV"/>
- <enum offset="5" extends="VkStructureType" name="VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV"/>
- <enum offset="6" extends="VkStructureType" name="VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV"/>
- <enum offset="7" extends="VkStructureType" name="VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV"/>
- <enum offset="8" extends="VkStructureType" name="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV"/>
- <enum offset="9" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV"/>
- <enum offset="11" extends="VkStructureType" name="VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV"/>
- <enum offset="12" extends="VkStructureType" name="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV"/>
- <enum extends="VkShaderStageFlagBits" name="VK_SHADER_STAGE_RAYGEN_BIT_NV" alias="VK_SHADER_STAGE_RAYGEN_BIT_KHR"/>
- <enum extends="VkShaderStageFlagBits" name="VK_SHADER_STAGE_ANY_HIT_BIT_NV" alias="VK_SHADER_STAGE_ANY_HIT_BIT_KHR"/>
- <enum extends="VkShaderStageFlagBits" name="VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV" alias="VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR"/>
- <enum extends="VkShaderStageFlagBits" name="VK_SHADER_STAGE_MISS_BIT_NV" alias="VK_SHADER_STAGE_MISS_BIT_KHR"/>
- <enum extends="VkShaderStageFlagBits" name="VK_SHADER_STAGE_INTERSECTION_BIT_NV" alias="VK_SHADER_STAGE_INTERSECTION_BIT_KHR"/>
- <enum extends="VkShaderStageFlagBits" name="VK_SHADER_STAGE_CALLABLE_BIT_NV" alias="VK_SHADER_STAGE_CALLABLE_BIT_KHR"/>
- <enum extends="VkPipelineStageFlagBits" name="VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV" alias="VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR"/>
- <enum extends="VkPipelineStageFlagBits" name="VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV" alias="VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR"/>
- <enum extends="VkBufferUsageFlagBits" name="VK_BUFFER_USAGE_RAY_TRACING_BIT_NV" alias="VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR"/>
- <enum extends="VkPipelineBindPoint" name="VK_PIPELINE_BIND_POINT_RAY_TRACING_NV" alias="VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR"/>
- <enum offset="0" extends="VkDescriptorType" name="VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV"/>
- <enum extends="VkAccessFlagBits" name="VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV" alias="VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR"/>
- <enum extends="VkAccessFlagBits" name="VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV" alias="VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR"/>
- <enum offset="0" extends="VkQueryType" name="VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV"/>
- <enum bitpos="5" extends="VkPipelineCreateFlagBits" name="VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV"/>
- <enum offset="0" extends="VkObjectType" name="VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV"/>
- <enum offset="0" extends="VkDebugReportObjectTypeEXT" name="VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT"/>
- <enum extends="VkIndexType" name="VK_INDEX_TYPE_NONE_NV" alias="VK_INDEX_TYPE_NONE_KHR"/>
- <type name="VkRayTracingShaderGroupCreateInfoNV"/>
- <type name="VkRayTracingShaderGroupTypeNV"/>
- <enum extends="VkRayTracingShaderGroupTypeKHR" name="VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV" alias="VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR"/>
- <enum extends="VkRayTracingShaderGroupTypeKHR" name="VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV" alias="VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR"/>
- <enum extends="VkRayTracingShaderGroupTypeKHR" name="VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV" alias="VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR"/>
- <type name="VkRayTracingPipelineCreateInfoNV"/>
- <type name="VkGeometryTypeNV"/>
- <enum extends="VkGeometryTypeKHR" name="VK_GEOMETRY_TYPE_TRIANGLES_NV" alias="VK_GEOMETRY_TYPE_TRIANGLES_KHR"/>
- <enum extends="VkGeometryTypeKHR" name="VK_GEOMETRY_TYPE_AABBS_NV" alias="VK_GEOMETRY_TYPE_AABBS_KHR"/>
- <type name="VkAccelerationStructureTypeNV"/>
- <enum extends="VkAccelerationStructureTypeKHR" name="VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV" alias="VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR"/>
- <enum extends="VkAccelerationStructureTypeKHR" name="VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV" alias="VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR"/>
- <type name="VkGeometryTrianglesNV"/>
- <type name="VkGeometryAABBNV"/>
- <type name="VkGeometryDataNV"/>
- <type name="VkGeometryNV"/>
- <type name="VkGeometryFlagsNV"/>
- <type name="VkGeometryFlagBitsNV"/>
- <enum extends="VkGeometryFlagBitsKHR" name="VK_GEOMETRY_OPAQUE_BIT_NV" alias="VK_GEOMETRY_OPAQUE_BIT_KHR"/>
- <enum extends="VkGeometryFlagBitsKHR" name="VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV" alias="VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR"/>
- <type name="VkGeometryInstanceFlagsNV"/>
- <type name="VkGeometryInstanceFlagBitsNV"/>
- <enum extends="VkGeometryInstanceFlagBitsKHR" name="VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV" alias="VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR"/>
- <enum extends="VkGeometryInstanceFlagBitsKHR" name="VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV" alias="VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR"/>
- <enum extends="VkGeometryInstanceFlagBitsKHR" name="VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV" alias="VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR"/>
- <enum extends="VkGeometryInstanceFlagBitsKHR" name="VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV" alias="VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR"/>
- <type name="VkAccelerationStructureInfoNV"/>
- <type name="VkAccelerationStructureCreateInfoNV"/>
- <type name="VkAccelerationStructureNV"/>
- <type name="VkBuildAccelerationStructureFlagBitsNV"/>
- <enum extends="VkBuildAccelerationStructureFlagBitsKHR" name="VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV" alias="VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR"/>
- <enum extends="VkBuildAccelerationStructureFlagBitsKHR" name="VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV" alias="VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR"/>
- <enum extends="VkBuildAccelerationStructureFlagBitsKHR" name="VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV" alias="VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR"/>
- <enum extends="VkBuildAccelerationStructureFlagBitsKHR" name="VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV" alias="VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR"/>
- <enum extends="VkBuildAccelerationStructureFlagBitsKHR" name="VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV" alias="VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR"/>
- <type name="VkBuildAccelerationStructureFlagsNV"/>
- <type name="VkCopyAccelerationStructureModeNV"/>
- <enum extends="VkCopyAccelerationStructureModeKHR" name="VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV" alias="VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR"/>
- <enum extends="VkCopyAccelerationStructureModeKHR" name="VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV" alias="VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR"/>
- <type name="VkBindAccelerationStructureMemoryInfoNV"/>
- <type name="VkWriteDescriptorSetAccelerationStructureNV"/>
- <type name="VkAccelerationStructureMemoryRequirementsInfoNV"/>
- <type name="VkPhysicalDeviceRayTracingPropertiesNV"/>
- <type name="VkMemoryRequirements2KHR"/>
- <type name="VkAccelerationStructureMemoryRequirementsTypeNV"/>
- <type name="VkTransformMatrixNV"/>
- <type name="VkAabbPositionsNV"/>
- <type name="VkAccelerationStructureInstanceNV"/>
- <command name="vkCreateAccelerationStructureNV"/>
- <command name="vkDestroyAccelerationStructureNV"/>
- <command name="vkGetAccelerationStructureMemoryRequirementsNV"/>
- <command name="vkBindAccelerationStructureMemoryNV"/>
- <command name="vkCmdBuildAccelerationStructureNV"/>
- <command name="vkCmdCopyAccelerationStructureNV"/>
- <command name="vkCmdTraceRaysNV"/>
- <command name="vkCreateRayTracingPipelinesNV"/>
- <command name="vkGetRayTracingShaderGroupHandlesNV"/>
- <command name="vkGetAccelerationStructureHandleNV"/>
- <command name="vkCmdWriteAccelerationStructuresPropertiesNV"/>
- <command name="vkCompileDeferredNV"/>
- </require>
- </extension>
- <extension name="VK_NV_representative_fragment_test" number="167" type="device" author="NV" contact="Kedarnath Thangudu @kthangudu" supported="vulkan">
- <require>
- <enum value="2" name="VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_representative_fragment_test&quot;" 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"/>
- <type name="VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV"/>
- <type name="VkPipelineRepresentativeFragmentTestStateCreateInfoNV"/>
- </require>
- </extension>
- <extension name="VK_NV_extension_168" number="168" author="NV" contact="Daniel Koch @dgkoch" supported="disabled">
- <require>
- <enum value="0" name="VK_NV_EXTENSION_168_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_extension_168&quot;" name="VK_NV_EXTENSION_168_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_KHR_maintenance3" number="169" type="device" requires="VK_KHR_get_physical_device_properties2" author="KHR" contact="Jeff Bolz @jeffbolznv" supported="vulkan" promotedto="VK_VERSION_1_1">
- <require>
- <enum value="1" name="VK_KHR_MAINTENANCE_3_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_maintenance3&quot;" name="VK_KHR_MAINTENANCE_3_EXTENSION_NAME"/>
- <enum alias="VK_KHR_MAINTENANCE_3_SPEC_VERSION" name="VK_KHR_MAINTENANCE3_SPEC_VERSION" comment="Backwards-compatible alias containing a typo"/>
- <enum alias="VK_KHR_MAINTENANCE_3_EXTENSION_NAME" name="VK_KHR_MAINTENANCE3_EXTENSION_NAME" comment="Backwards-compatible alias containing a typo"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR" alias="VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT"/>
- <type name="VkPhysicalDeviceMaintenance3PropertiesKHR"/>
- <type name="VkDescriptorSetLayoutSupportKHR"/>
- <command name="vkGetDescriptorSetLayoutSupportKHR"/>
- </require>
- </extension>
- <extension name="VK_KHR_draw_indirect_count" number="170" type="device" author="KHR" contact="Piers Daniell @pdaniell-nv" supported="vulkan" promotedto="VK_VERSION_1_2">
- <require>
- <enum value="1" name="VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_draw_indirect_count&quot;" name="VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME"/>
- <command name="vkCmdDrawIndirectCountKHR"/>
- <command name="vkCmdDrawIndexedIndirectCountKHR"/>
- </require>
- </extension>
- <extension name="VK_EXT_filter_cubic" number="171" type="device" author="QCOM" contact="Bill Licea-Kane @wwlk" supported="vulkan">
- <require>
- <enum value="3" name="VK_EXT_FILTER_CUBIC_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_filter_cubic&quot;" name="VK_EXT_FILTER_CUBIC_EXTENSION_NAME"/>
- <enum extends="VkFilter" name="VK_FILTER_CUBIC_EXT" alias="VK_FILTER_CUBIC_IMG"/>
- <enum extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT" alias="VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT"/>
- <type name="VkPhysicalDeviceImageViewImageFormatInfoEXT"/>
- <type name="VkFilterCubicImageViewImageFormatPropertiesEXT"/>
- </require>
- </extension>
- <extension name="VK_QCOM_render_pass_shader_resolve" number="172" type="device" author="QCOM" contact="Bill Licea-Kane @wwlk" supported="vulkan">
- <require>
- <enum value="4" name="VK_QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION"/>
- <enum value="&quot;VK_QCOM_render_pass_shader_resolve&quot;" name="VK_QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME"/>
- <enum bitpos="2" extends="VkSubpassDescriptionFlagBits" name="VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM"/>
- <enum bitpos="3" extends="VkSubpassDescriptionFlagBits" name="VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM"/>
- </require>
- </extension>
- <extension name="VK_QCOM_extension_173" number="173" author="QCOM" contact="Bill Licea-Kane @wwlk" supported="disabled">
- <require>
- <enum value="0" name="VK_QCOM_EXTENSION_173_SPEC_VERSION"/>
- <enum value="&quot;VK_QCOM_extension_173&quot;" name="VK_QCOM_EXTENSION_173_EXTENSION_NAME"/>
- <enum bitpos="18" extends="VkBufferUsageFlagBits" name="VK_BUFFER_USAGE_RESERVED_18_BIT_QCOM"/>
- <enum bitpos="16" extends="VkImageUsageFlagBits" name="VK_IMAGE_USAGE_RESERVED_16_BIT_QCOM"/>
- <enum bitpos="17" extends="VkImageUsageFlagBits" name="VK_IMAGE_USAGE_RESERVED_17_BIT_QCOM"/>
- </require>
- </extension>
- <extension name="VK_QCOM_extension_174" number="174" author="QCOM" contact="Bill Licea-Kane @wwlk" supported="disabled">
- <require>
- <enum value="0" name="VK_QCOM_EXTENSION_174_SPEC_VERSION"/>
- <enum value="&quot;VK_QCOM_extension_174&quot;" name="VK_QCOM_EXTENSION_174_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_EXT_global_priority" number="175" type="device" author="EXT" contact="Andres Rodriguez @lostgoat" supported="vulkan">
- <require>
- <enum value="2" name="VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_global_priority&quot;" name="VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT"/>
- <enum offset="1" dir="-" extends="VkResult" name="VK_ERROR_NOT_PERMITTED_EXT"/>
- <type name="VkDeviceQueueGlobalPriorityCreateInfoEXT"/>
- <type name="VkQueueGlobalPriorityEXT"/>
- </require>
- </extension>
- <extension name="VK_KHR_shader_subgroup_extended_types" number="176" type="device" requiresCore="1.1" author="KHR" contact="Neil Henning @sheredom" supported="vulkan" promotedto="VK_VERSION_1_2">
- <require>
- <enum value="1" name="VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_shader_subgroup_extended_types&quot;" name="VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES"/>
- <type name="VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR"/>
- </require>
- </extension>
- <extension name="VK_EXT_extension_177" number="177" author="EXT" contact="Neil Henning @sheredom" supported="disabled">
- <require>
- <enum value="0" name="VK_EXT_EXTENSION_177_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_extension_177&quot;" name="VK_EXT_EXTENSION_177_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_KHR_8bit_storage" number="178" type="device" requires="VK_KHR_get_physical_device_properties2,VK_KHR_storage_buffer_storage_class" author="KHR" contact="Alexander Galazin @alegal-arm" supported="vulkan" promotedto="VK_VERSION_1_2">
- <require>
- <enum value="1" name="VK_KHR_8BIT_STORAGE_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_8bit_storage&quot;" name="VK_KHR_8BIT_STORAGE_EXTENSION_NAME"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES"/>
- <type name="VkPhysicalDevice8BitStorageFeaturesKHR"/>
- </require>
- </extension>
- <extension name="VK_EXT_external_memory_host" number="179" type="device" author="EXT" requires="VK_KHR_external_memory" contact="Daniel Rakos @drakos-amd" supported="vulkan">
- <require>
- <enum value="1" name="VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_external_memory_host&quot;" name="VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT"/>
- <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT"/>
- <enum bitpos="7" extends="VkExternalMemoryHandleTypeFlagBits" name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT"/>
- <enum bitpos="8" extends="VkExternalMemoryHandleTypeFlagBits" name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT"/>
- <type name="VkImportMemoryHostPointerInfoEXT"/>
- <type name="VkMemoryHostPointerPropertiesEXT"/>
- <type name="VkPhysicalDeviceExternalMemoryHostPropertiesEXT"/>
- <command name="vkGetMemoryHostPointerPropertiesEXT"/>
- </require>
- </extension>
- <extension name="VK_AMD_buffer_marker" number="180" type="device" author="AMD" contact="Daniel Rakos @drakos-amd" specialuse="devtools" supported="vulkan">
- <require>
- <enum value="1" name="VK_AMD_BUFFER_MARKER_SPEC_VERSION"/>
- <enum value="&quot;VK_AMD_buffer_marker&quot;" name="VK_AMD_BUFFER_MARKER_EXTENSION_NAME"/>
- <command name="vkCmdWriteBufferMarkerAMD"/>
- </require>
- </extension>
- <extension name="VK_KHR_shader_atomic_int64" number="181" type="device" author="KHR" requires="VK_KHR_get_physical_device_properties2" contact="Aaron Hagan @ahagan" supported="vulkan" promotedto="VK_VERSION_1_2">
- <require>
- <enum value="1" name="VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_shader_atomic_int64&quot;" name="VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES"/>
- <type name="VkPhysicalDeviceShaderAtomicInt64FeaturesKHR"/>
- </require>
- </extension>
- <extension name="VK_KHR_shader_clock" number="182" type="device" author="KHR" requires="VK_KHR_get_physical_device_properties2" contact="Aaron Hagan @ahagan" supported="vulkan">
- <require>
- <enum value="1" name="VK_KHR_SHADER_CLOCK_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_shader_clock&quot;" name="VK_KHR_SHADER_CLOCK_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR"/>
- <type name="VkPhysicalDeviceShaderClockFeaturesKHR"/>
- </require>
- </extension>
- <extension name="VK_AMD_extension_183" number="183" author="AMD" contact="Daniel Rakos @drakos-amd" supported="disabled">
- <require>
- <enum value="0" name="VK_AMD_EXTENSION_183_SPEC_VERSION"/>
- <enum value="&quot;VK_AMD_extension_183&quot;" name="VK_AMD_EXTENSION_183_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_AMD_pipeline_compiler_control" number="184" type="device" author="AMD" contact="Matthaeus G. Chajdas @anteru" supported="vulkan">
- <require>
- <enum value="1" name="VK_AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION"/>
- <enum value="&quot;VK_AMD_pipeline_compiler_control&quot;" name="VK_AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD"/>
- <type name="VkPipelineCompilerControlFlagBitsAMD"/>
- <type name="VkPipelineCompilerControlFlagsAMD"/>
- <type name="VkPipelineCompilerControlCreateInfoAMD"/>
- </require>
- </extension>
- <extension name="VK_EXT_calibrated_timestamps" number="185" type="device" requires="VK_KHR_get_physical_device_properties2" author="EXT" contact="Daniel Rakos @drakos-amd" supported="vulkan">
- <require>
- <enum value="2" name="VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_calibrated_timestamps&quot;" name="VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT"/>
- <type name="VkTimeDomainEXT"/>
- <type name="VkCalibratedTimestampInfoEXT"/>
- <command name="vkGetPhysicalDeviceCalibrateableTimeDomainsEXT"/>
- <command name="vkGetCalibratedTimestampsEXT"/>
- </require>
- </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="2" name="VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION"/>
- <enum value="&quot;VK_AMD_shader_core_properties&quot;" 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"/>
- </require>
- </extension>
- <extension name="VK_AMD_extension_187" number="187" author="AMD" contact="Daniel Rakos @drakos-amd" supported="disabled">
- <require>
- <enum value="0" name="VK_AMD_EXTENSION_187_SPEC_VERSION"/>
- <enum value="&quot;VK_AMD_extension_187&quot;" name="VK_AMD_EXTENSION_187_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_EXT_video_decode_h265" number="188" type="device" requires="VK_KHR_video_decode_queue" author="KHR" contact="peter.fang@amd.com" provisional="true" platform="provisional" supported="vulkan">
- <require>
- <enum value="1" name="VK_EXT_VIDEO_DECODE_H265_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_video_decode_h265&quot;" name="VK_EXT_VIDEO_DECODE_H265_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_CREATE_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum offset="3" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum offset="4" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum offset="5" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum offset="6" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum bitpos="1" extends="VkVideoCodecOperationFlagBitsKHR" name="VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_EXT" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-
- <type name="VkVideoDecodeH265CreateFlagsEXT"/>
- <type name="VkVideoDecodeH265ProfileEXT"/>
- <type name="VkVideoDecodeH265CapabilitiesEXT"/>
- <type name="VkVideoDecodeH265SessionCreateInfoEXT"/>
-
- <type name="VkVideoDecodeH265SessionParametersCreateInfoEXT"/>
- <type name="VkVideoDecodeH265SessionParametersAddInfoEXT"/>
- <type name="VkVideoDecodeH265PictureInfoEXT"/>
- <type name="VkVideoDecodeH265DpbSlotInfoEXT"/>
- </require>
- </extension>
- <extension name="VK_AMD_extension_189" number="189" author="AMD" contact="Daniel Rakos @drakos-amd" supported="disabled">
- <require>
- <enum value="0" name="VK_AMD_EXTENSION_189_SPEC_VERSION"/>
- <enum value="&quot;VK_AMD_extension_189&quot;" name="VK_AMD_EXTENSION_189_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_AMD_memory_overallocation_behavior" number="190" type="device" author="AMD" contact="Martin Dinkov @mdinkov" supported="vulkan">
- <require>
- <enum value="1" name="VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSION"/>
- <enum value="&quot;VK_AMD_memory_overallocation_behavior&quot;" name="VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD"/>
- <type name="VkMemoryOverallocationBehaviorAMD"/>
- <type name="VkDeviceMemoryOverallocationCreateInfoAMD"/>
- </require>
- </extension>
- <extension name="VK_EXT_vertex_attribute_divisor" number="191" type="device" requires="VK_KHR_get_physical_device_properties2" author="NV" contact="Vikram Kushwaha @vkushwaha" supported="vulkan">
- <require>
- <enum value="3" name="VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_vertex_attribute_divisor&quot;" name="VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT"/>
- <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT"/>
- <type name="VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT"/>
- <type name="VkVertexInputBindingDivisorDescriptionEXT"/>
- <type name="VkPipelineVertexInputDivisorStateCreateInfoEXT"/>
- <type name="VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT"/>
- </require>
- </extension>
- <extension name="VK_GGP_frame_token" number="192" type="device" requires="VK_KHR_swapchain,VK_GGP_stream_descriptor_surface" platform="ggp" author="GGP" contact="Jean-Francois Roy @jfroy" supported="vulkan">
- <require>
- <enum value="1" name="VK_GGP_FRAME_TOKEN_SPEC_VERSION"/>
- <enum value="&quot;VK_GGP_frame_token&quot;" name="VK_GGP_FRAME_TOKEN_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP"/>
- <type name="VkPresentFrameTokenGGP"/>
- </require>
- </extension>
- <extension name="VK_EXT_pipeline_creation_feedback" number="193" type="device" author="GOOGLE" contact="Jean-Francois Roy @jfroy" specialuse="devtools" supported="vulkan">
- <require>
- <enum value="1" name="VK_EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_pipeline_creation_feedback&quot;" name="VK_EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT"/>
- <type name="VkPipelineCreationFeedbackFlagBitsEXT"/>
- <type name="VkPipelineCreationFeedbackFlagsEXT"/>
- <type name="VkPipelineCreationFeedbackCreateInfoEXT"/>
- <type name="VkPipelineCreationFeedbackEXT"/>
- </require>
- </extension>
- <extension name="VK_GOOGLE_extension_194" number="194" author="GOOGLE" contact="Jean-Francois Roy @jfroy" supported="disabled">
- <require>
- <enum value="0" name="VK_GOOGLE_EXTENSION_194_SPEC_VERSION"/>
- <enum value="&quot;VK_GOOGLE_extension_194&quot;" name="VK_GOOGLE_EXTENSION_194_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_GOOGLE_extension_195" number="195" author="GOOGLE" contact="Jean-Francois Roy @jfroy" supported="disabled">
- <require>
- <enum value="0" name="VK_GOOGLE_EXTENSION_195_SPEC_VERSION"/>
- <enum value="&quot;VK_GOOGLE_extension_195&quot;" name="VK_GOOGLE_EXTENSION_195_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_GOOGLE_extension_196" number="196" author="GOOGLE" contact="Jean-Francois Roy @jfroy" supported="disabled">
- <require>
- <enum value="0" name="VK_GOOGLE_EXTENSION_196_SPEC_VERSION"/>
- <enum value="&quot;VK_GOOGLE_extension_196&quot;" name="VK_GOOGLE_EXTENSION_196_EXTENSION_NAME"/>
- <enum bitpos="1" extends="VkPipelineCacheCreateFlagBits"
- name="VK_PIPELINE_CACHE_CREATE_RESERVED_1_BIT_EXT"/>
- </require>
- </extension>
- <extension name="VK_KHR_driver_properties" number="197" type="device" requires="VK_KHR_get_physical_device_properties2" author="KHR" contact="Daniel Rakos @drakos-amd" supported="vulkan" promotedto="VK_VERSION_1_2">
- <require>
- <enum value="1" name="VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_driver_properties&quot;" name="VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES"/>
- <enum name="VK_MAX_DRIVER_NAME_SIZE_KHR"/>
- <enum name="VK_MAX_DRIVER_INFO_SIZE_KHR"/>
- <type name="VkDriverIdKHR"/>
- <enum extends="VkDriverId" name="VK_DRIVER_ID_AMD_PROPRIETARY_KHR" alias="VK_DRIVER_ID_AMD_PROPRIETARY"/>
- <enum extends="VkDriverId" name="VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR" alias="VK_DRIVER_ID_AMD_OPEN_SOURCE"/>
- <enum extends="VkDriverId" name="VK_DRIVER_ID_MESA_RADV_KHR" alias="VK_DRIVER_ID_MESA_RADV"/>
- <enum extends="VkDriverId" name="VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR" alias="VK_DRIVER_ID_NVIDIA_PROPRIETARY"/>
- <enum extends="VkDriverId" name="VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR" alias="VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS"/>
- <enum extends="VkDriverId" name="VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR" alias="VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA"/>
- <enum extends="VkDriverId" name="VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR" alias="VK_DRIVER_ID_IMAGINATION_PROPRIETARY"/>
- <enum extends="VkDriverId" name="VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR" alias="VK_DRIVER_ID_QUALCOMM_PROPRIETARY"/>
- <enum extends="VkDriverId" name="VK_DRIVER_ID_ARM_PROPRIETARY_KHR" alias="VK_DRIVER_ID_ARM_PROPRIETARY"/>
- <enum extends="VkDriverId" name="VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR" alias="VK_DRIVER_ID_GOOGLE_SWIFTSHADER"/>
- <enum extends="VkDriverId" name="VK_DRIVER_ID_GGP_PROPRIETARY_KHR" alias="VK_DRIVER_ID_GGP_PROPRIETARY"/>
- <enum extends="VkDriverId" name="VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR" alias="VK_DRIVER_ID_BROADCOM_PROPRIETARY"/>
- <type name="VkConformanceVersionKHR"/>
- <type name="VkPhysicalDeviceDriverPropertiesKHR"/>
- </require>
- </extension>
- <extension name="VK_KHR_shader_float_controls" number="198" type="device" requires="VK_KHR_get_physical_device_properties2" author="KHR" contact="Alexander Galazin @alegal-arm" supported="vulkan" promotedto="VK_VERSION_1_2">
- <require>
- <enum value="4" name="VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_shader_float_controls&quot;" name="VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES"/>
- <type name="VkPhysicalDeviceFloatControlsPropertiesKHR"/>
- <type name="VkShaderFloatControlsIndependenceKHR"/>
- <enum extends="VkShaderFloatControlsIndependence" name="VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR" alias="VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY"/>
- <enum extends="VkShaderFloatControlsIndependence" name="VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR" alias="VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL"/>
- <enum extends="VkShaderFloatControlsIndependence" name="VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR" alias="VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE"/>
- </require>
- </extension>
- <extension name="VK_NV_shader_subgroup_partitioned" number="199" type="device" requiresCore="1.1" author="NV" contact="Jeff Bolz @jeffbolznv" supported="vulkan">
- <require>
- <enum value="1" name="VK_NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_shader_subgroup_partitioned&quot;" name="VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME"/>
- <enum bitpos="8" extends="VkSubgroupFeatureFlagBits" name="VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV"/>
- </require>
- </extension>
- <extension name="VK_KHR_depth_stencil_resolve" number="200" type="device" requires="VK_KHR_create_renderpass2" author="KHR" contact="Jan-Harald Fredriksen @janharald" supported="vulkan" promotedto="VK_VERSION_1_2">
- <require>
- <enum value="1" name="VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_depth_stencil_resolve&quot;" name="VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR" alias="VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE"/>
- <type name="VkSubpassDescriptionDepthStencilResolveKHR"/>
- <type name="VkPhysicalDeviceDepthStencilResolvePropertiesKHR"/>
- <type name="VkResolveModeFlagBitsKHR"/>
- <type name="VkResolveModeFlagsKHR"/>
- <enum extends="VkResolveModeFlagBits" name="VK_RESOLVE_MODE_NONE_KHR" alias="VK_RESOLVE_MODE_NONE"/>
- <enum extends="VkResolveModeFlagBits" name="VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR" alias="VK_RESOLVE_MODE_SAMPLE_ZERO_BIT"/>
- <enum extends="VkResolveModeFlagBits" name="VK_RESOLVE_MODE_AVERAGE_BIT_KHR" alias="VK_RESOLVE_MODE_AVERAGE_BIT"/>
- <enum extends="VkResolveModeFlagBits" name="VK_RESOLVE_MODE_MIN_BIT_KHR" alias="VK_RESOLVE_MODE_MIN_BIT"/>
- <enum extends="VkResolveModeFlagBits" name="VK_RESOLVE_MODE_MAX_BIT_KHR" alias="VK_RESOLVE_MODE_MAX_BIT"/>
- </require>
- </extension>
- <extension name="VK_KHR_swapchain_mutable_format" number="201" type="device" author="KHR" requires="VK_KHR_swapchain,VK_KHR_maintenance2,VK_KHR_image_format_list" contact="Daniel Rakos @drakos-arm" supported="vulkan">
- <require>
- <enum value="1" name="VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_swapchain_mutable_format&quot;" name="VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME"/>
- <enum bitpos="2" extends="VkSwapchainCreateFlagBitsKHR" name="VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR"/>
- </require>
- </extension>
- <extension name="VK_NV_compute_shader_derivatives" number="202" type="device" requires="VK_KHR_get_physical_device_properties2" author="NV" contact="Pat Brown @nvpbrown" supported="vulkan">
- <require>
- <enum value="1" name="VK_NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_compute_shader_derivatives&quot;" name="VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV"/>
- <type name="VkPhysicalDeviceComputeShaderDerivativesFeaturesNV"/>
- </require>
- </extension>
- <extension name="VK_NV_mesh_shader" number="203" type="device" requires="VK_KHR_get_physical_device_properties2" author="NV" contact="Christoph Kubisch @pixeljetstream" supported="vulkan">
- <require>
- <enum value="1" name="VK_NV_MESH_SHADER_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_mesh_shader&quot;" name="VK_NV_MESH_SHADER_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV"/>
- <enum bitpos="6" extends="VkShaderStageFlagBits" name="VK_SHADER_STAGE_TASK_BIT_NV"/>
- <enum bitpos="7" extends="VkShaderStageFlagBits" name="VK_SHADER_STAGE_MESH_BIT_NV"/>
- <enum bitpos="19" extends="VkPipelineStageFlagBits" name="VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV"/>
- <enum bitpos="20" extends="VkPipelineStageFlagBits" name="VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV"/>
- <command name="vkCmdDrawMeshTasksNV"/>
- <command name="vkCmdDrawMeshTasksIndirectNV"/>
- <command name="vkCmdDrawMeshTasksIndirectCountNV"/>
- <type name="VkPhysicalDeviceMeshShaderFeaturesNV"/>
- <type name="VkPhysicalDeviceMeshShaderPropertiesNV"/>
- <type name="VkDrawMeshTasksIndirectCommandNV"/>
- </require>
- </extension>
- <extension name="VK_NV_fragment_shader_barycentric" number="204" type="device" requires="VK_KHR_get_physical_device_properties2" author="NV" contact="Pat Brown @nvpbrown" supported="vulkan">
- <require>
- <enum value="1" name="VK_NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_fragment_shader_barycentric&quot;" name="VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV"/>
- <type name="VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV"/>
- </require>
- </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="2" name="VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_shader_image_footprint&quot;" 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"/>
- </require>
- </extension>
- <extension name="VK_NV_scissor_exclusive" number="206" type="device" requires="VK_KHR_get_physical_device_properties2" author="NV" contact="Pat Brown @nvpbrown" supported="vulkan">
- <require>
- <enum value="1" name="VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_scissor_exclusive&quot;" name="VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV"/>
- <enum offset="1" extends="VkDynamicState" name="VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV"/>
- <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV"/>
- <type name="VkPipelineViewportExclusiveScissorStateCreateInfoNV"/>
- <type name="VkPhysicalDeviceExclusiveScissorFeaturesNV"/>
- <command name="vkCmdSetExclusiveScissorNV"/>
- </require>
- </extension>
- <extension name="VK_NV_device_diagnostic_checkpoints" type="device" number="207" requires="VK_KHR_get_physical_device_properties2" author="NVIDIA" contact="Nuno Subtil @nsubtil" supported="vulkan">
- <require>
- <enum value="2" name="VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_device_diagnostic_checkpoints&quot;" name="VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV"/>
- <type name="VkQueueFamilyCheckpointPropertiesNV"/>
- <type name="VkCheckpointDataNV"/>
- <command name="vkCmdSetCheckpointNV"/>
- <command name="vkGetQueueCheckpointDataNV"/>
- </require>
- </extension>
- <extension name="VK_KHR_timeline_semaphore" number="208" type="device" author="KHR" requires="VK_KHR_get_physical_device_properties2" contact="Jason Ekstrand @jekstrand" supported="vulkan" promotedto="VK_VERSION_1_2">
- <require>
- <enum value="2" name="VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_timeline_semaphore&quot;" name="VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR" alias="VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR" alias="VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR" alias="VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR" alias="VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO"/>
- <enum extends="VkSemaphoreType" name="VK_SEMAPHORE_TYPE_BINARY_KHR" alias="VK_SEMAPHORE_TYPE_BINARY"/>
- <enum extends="VkSemaphoreType" name="VK_SEMAPHORE_TYPE_TIMELINE_KHR" alias="VK_SEMAPHORE_TYPE_TIMELINE"/>
- <enum extends="VkSemaphoreWaitFlagBits" name="VK_SEMAPHORE_WAIT_ANY_BIT_KHR" alias="VK_SEMAPHORE_WAIT_ANY_BIT"/>
- <type name="VkSemaphoreTypeKHR"/>
- <type name="VkPhysicalDeviceTimelineSemaphoreFeaturesKHR"/>
- <type name="VkPhysicalDeviceTimelineSemaphorePropertiesKHR"/>
- <type name="VkSemaphoreTypeCreateInfoKHR"/>
- <type name="VkTimelineSemaphoreSubmitInfoKHR"/>
- <type name="VkSemaphoreWaitFlagBitsKHR"/>
- <type name="VkSemaphoreWaitFlagsKHR"/>
- <type name="VkSemaphoreWaitInfoKHR"/>
- <type name="VkSemaphoreSignalInfoKHR"/>
- <command name="vkGetSemaphoreCounterValueKHR"/>
- <command name="vkWaitSemaphoresKHR"/>
- <command name="vkSignalSemaphoreKHR"/>
- </require>
- </extension>
- <extension name="VK_KHR_extension_209" number="209" type="device" author="KHR" contact="Ian Elliott @ianelliott" supported="disabled">
- <require>
- <enum value="0" name="VK_KHR_EXTENSION_209_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_extension_209&quot;" name="VK_KHR_EXTENSION_209_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_INTEL_shader_integer_functions2" number="210" type="device" requires="VK_KHR_get_physical_device_properties2" author="INTEL" contact="Ian Romanick @ianromanick" supported="vulkan">
- <require>
- <enum value="1" name="VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION"/>
- <enum value="&quot;VK_INTEL_shader_integer_functions2&quot;" name="VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL"/>
- <type name="VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL"/>
- </require>
- </extension>
- <extension name="VK_INTEL_performance_query" number="211" type="device" author="INTEL" contact="Lionel Landwerlin @llandwerlin" specialuse="devtools" supported="vulkan">
- <require>
- <enum value="2" name="VK_INTEL_PERFORMANCE_QUERY_SPEC_VERSION"/>
- <enum value="&quot;VK_INTEL_performance_query&quot;" name="VK_INTEL_PERFORMANCE_QUERY_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL" alias="VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL" comment="Backwards-compatible alias"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL"/>
- <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL"/>
- <enum offset="3" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL"/>
- <enum offset="4" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL"/>
- <enum offset="5" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL"/>
- <enum offset="0" extends="VkQueryType" name="VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL"/>
- <enum offset="0" extends="VkObjectType" name="VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL"/>
- <type name="VkPerformanceConfigurationTypeINTEL"/>
- <type name="VkQueryPoolSamplingModeINTEL"/>
- <type name="VkPerformanceOverrideTypeINTEL"/>
- <type name="VkPerformanceParameterTypeINTEL"/>
- <type name="VkPerformanceValueTypeINTEL"/>
- <type name="VkPerformanceValueDataINTEL"/>
- <type name="VkPerformanceValueINTEL"/>
- <type name="VkInitializePerformanceApiInfoINTEL"/>
- <type name="VkQueryPoolCreateInfoINTEL"/>
- <type name="VkQueryPoolPerformanceQueryCreateInfoINTEL"/>
- <type name="VkPerformanceMarkerInfoINTEL"/>
- <type name="VkPerformanceStreamMarkerInfoINTEL"/>
- <type name="VkPerformanceOverrideInfoINTEL"/>
- <type name="VkPerformanceConfigurationAcquireInfoINTEL"/>
- <type name="VkPerformanceConfigurationINTEL"/>
- <command name="vkInitializePerformanceApiINTEL"/>
- <command name="vkUninitializePerformanceApiINTEL"/>
- <command name="vkCmdSetPerformanceMarkerINTEL"/>
- <command name="vkCmdSetPerformanceStreamMarkerINTEL"/>
- <command name="vkCmdSetPerformanceOverrideINTEL"/>
- <command name="vkAcquirePerformanceConfigurationINTEL"/>
- <command name="vkReleasePerformanceConfigurationINTEL"/>
- <command name="vkQueueSetPerformanceConfigurationINTEL"/>
- <command name="vkGetPerformanceParameterINTEL"/>
- </require>
- </extension>
- <extension name="VK_KHR_vulkan_memory_model" number="212" type="device" author="KHR" contact="Jeff Bolz @jeffbolznv" supported="vulkan" promotedto="VK_VERSION_1_2">
- <require>
- <enum value="3" name="VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_vulkan_memory_model&quot;" name="VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES"/>
- <type name="VkPhysicalDeviceVulkanMemoryModelFeaturesKHR"/>
- </require>
- </extension>
- <extension name="VK_EXT_pci_bus_info" number="213" type="device" author="EXT" requires="VK_KHR_get_physical_device_properties2" contact="Matthaeus G. Chajdas @anteru" supported="vulkan">
- <require>
- <enum value="2" name="VK_EXT_PCI_BUS_INFO_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_pci_bus_info&quot;" name="VK_EXT_PCI_BUS_INFO_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT"/>
- <type name="VkPhysicalDevicePCIBusInfoPropertiesEXT"/>
- </require>
- </extension>
- <extension name="VK_AMD_display_native_hdr" number="214" type="device" author="AMD" requires="VK_KHR_get_physical_device_properties2,VK_KHR_get_surface_capabilities2,VK_KHR_swapchain" contact="Matthaeus G. Chajdas @anteru" supported="vulkan">
- <require>
- <enum value="1" name="VK_AMD_DISPLAY_NATIVE_HDR_SPEC_VERSION"/>
- <enum value="&quot;VK_AMD_display_native_hdr&quot;" name="VK_AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD"/>
- <enum offset="0" extends="VkColorSpaceKHR" name="VK_COLOR_SPACE_DISPLAY_NATIVE_AMD"/>
- <type name="VkDisplayNativeHdrSurfaceCapabilitiesAMD"/>
- <type name="VkSwapchainDisplayNativeHdrCreateInfoAMD"/>
- <command name="vkSetLocalDimmingAMD"/>
- </require>
- </extension>
- <extension name="VK_FUCHSIA_imagepipe_surface" number="215" type="instance" author="FUCHSIA" requires="VK_KHR_surface" platform="fuchsia" contact="Craig Stout @cdotstout" supported="vulkan">
- <require>
- <enum value="1" name="VK_FUCHSIA_IMAGEPIPE_SURFACE_SPEC_VERSION"/>
- <enum value="&quot;VK_FUCHSIA_imagepipe_surface&quot;" name="VK_FUCHSIA_IMAGEPIPE_SURFACE_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA"/>
- <type name="VkImagePipeSurfaceCreateFlagsFUCHSIA"/>
- <type name="VkImagePipeSurfaceCreateInfoFUCHSIA"/>
- <command name="vkCreateImagePipeSurfaceFUCHSIA"/>
- </require>
- </extension>
- <extension name="VK_KHR_shader_terminate_invocation" number="216" type="device" author="KHR" requires="VK_KHR_get_physical_device_properties2" contact="Jesse Hall @critsec" supported="vulkan">
- <require>
- <enum value="1" name="VK_KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_shader_terminate_invocation&quot;" name="VK_KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR"/>
- <type name="VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR"/>
- </require>
- </extension>
- <extension name="VK_GOOGLE_extension_217" number="217" author="GOOGLE" contact="Jesse Hall @critsec" supported="disabled">
- <require>
- <enum value="0" name="VK_GOOGLE_EXTENSION_217_SPEC_VERSION"/>
- <enum value="&quot;VK_GOOGLE_extension_217&quot;" name="VK_GOOGLE_EXTENSION_217_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_EXT_metal_surface" number="218" type="instance" requires="VK_KHR_surface" platform="metal" supported="vulkan" author="EXT" contact="Dzmitry Malyshau @kvark">
- <require>
- <enum value="1" name="VK_EXT_METAL_SURFACE_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_metal_surface&quot;" name="VK_EXT_METAL_SURFACE_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT"/>
- <type name="VkMetalSurfaceCreateFlagsEXT"/>
- <type name="VkMetalSurfaceCreateInfoEXT"/>
- <command name="vkCreateMetalSurfaceEXT"/>
- <type name="CAMetalLayer"/>
- </require>
- </extension>
- <extension name="VK_EXT_fragment_density_map" number="219" type="device" requires="VK_KHR_get_physical_device_properties2" author="EXT" contact="Matthew Netsch @mnetsch" supported="vulkan">
- <require>
- <enum value="2" name="VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_fragment_density_map&quot;" name="VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT"/>
- <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT"/>
- <enum bitpos="14" extends="VkImageCreateFlagBits" name="VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT"/>
- <enum offset="0" extends="VkImageLayout" name="VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT"/>
- <enum bitpos="24" extends="VkAccessFlagBits" name="VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT"/>
- <enum bitpos="24" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT"/>
- <enum bitpos="9" extends="VkImageUsageFlagBits" name="VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT"/>
- <enum bitpos="0" extends="VkImageViewCreateFlagBits" name="VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT"/>
- <enum bitpos="23" extends="VkPipelineStageFlagBits" name="VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT"/>
- <enum bitpos="0" extends="VkSamplerCreateFlagBits" name="VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT"/>
- <enum bitpos="1" extends="VkSamplerCreateFlagBits" name="VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT"/>
- <type name="VkPhysicalDeviceFragmentDensityMapFeaturesEXT"/>
- <type name="VkPhysicalDeviceFragmentDensityMapPropertiesEXT"/>
- <type name="VkRenderPassFragmentDensityMapCreateInfoEXT"/>
- </require>
- <require extension="VK_KHR_format_feature_flags2">
- <enum bitpos="24" extends="VkFormatFeatureFlagBits2KHR" name="VK_FORMAT_FEATURE_2_FRAGMENT_DENSITY_MAP_BIT_EXT"/>
- </require>
- </extension>
- <extension name="VK_EXT_extension_220" number="220" author="EXT" contact="Dzmitry Malyshau @kvark" supported="disabled">
- <require>
- <enum value="0" name="VK_EXT_EXTENSION_220_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_extension_220&quot;" name="VK_EXT_EXTENSION_220_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_KHR_extension_221" number="221" author="KHR" contact="Tobias Hector @tobski" supported="disabled">
- <require>
- <enum value="0" name="VK_KHR_EXTENSION_221_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_extension_221&quot;" name="VK_KHR_EXTENSION_221_EXTENSION_NAME"/>
- <enum bitpos="0" extends="VkRenderPassCreateFlagBits" name="VK_RENDER_PASS_CREATE_RESERVED_0_BIT_KHR"/>
- </require>
- </extension>
- <extension name="VK_EXT_scalar_block_layout" number="222" requires="VK_KHR_get_physical_device_properties2" type="device" author="EXT" contact="Tobias Hector @tobski" supported="vulkan" promotedto="VK_VERSION_1_2">
- <require>
- <enum value="1" name="VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_scalar_block_layout&quot;" name="VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME"/>
- <type name="VkPhysicalDeviceScalarBlockLayoutFeaturesEXT"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES"/>
- </require>
- </extension>
- <extension name="VK_EXT_extension_223" number="223" author="EXT" contact="Tobias Hector @tobski" supported="disabled">
- <require>
- <enum value="0" name="VK_EXT_EXTENSION_223_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_extension_223&quot;" name="VK_EXT_EXTENSION_223_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_GOOGLE_hlsl_functionality1" number="224" type="device" author="GOOGLE" contact="Hai Nguyen @chaoticbob" supported="vulkan">
- <require>
- <enum value="1" name="VK_GOOGLE_HLSL_FUNCTIONALITY_1_SPEC_VERSION"/>
- <enum value="&quot;VK_GOOGLE_hlsl_functionality1&quot;" name="VK_GOOGLE_HLSL_FUNCTIONALITY_1_EXTENSION_NAME"/>
- <enum alias="VK_GOOGLE_HLSL_FUNCTIONALITY_1_SPEC_VERSION" name="VK_GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION" comment="Backwards-compatible alias containing a typo"/>
- <enum alias="VK_GOOGLE_HLSL_FUNCTIONALITY_1_EXTENSION_NAME" name="VK_GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME" comment="Backwards-compatible alias containing a typo"/>
- </require>
- </extension>
- <extension name="VK_GOOGLE_decorate_string" number="225" type="device" author="GOOGLE" contact="Hai Nguyen @chaoticbob" supported="vulkan">
- <require>
- <enum value="1" name="VK_GOOGLE_DECORATE_STRING_SPEC_VERSION"/>
- <enum value="&quot;VK_GOOGLE_decorate_string&quot;" name="VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_EXT_subgroup_size_control" number="226" type="device" requiresCore="1.1" author="EXT" contact="Neil Henning @sheredom" supported="vulkan">
- <require>
- <enum value="2" name="VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_subgroup_size_control&quot;" name="VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME"/>
- <type name="VkPhysicalDeviceSubgroupSizeControlFeaturesEXT"/>
- <type name="VkPhysicalDeviceSubgroupSizeControlPropertiesEXT"/>
- <type name="VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT"/>
- <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT"/>
- <enum bitpos="0" extends="VkPipelineShaderStageCreateFlagBits" name="VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT"/>
- <enum bitpos="1" extends="VkPipelineShaderStageCreateFlagBits" name="VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT"/>
- </require>
- </extension>
- <extension name="VK_KHR_fragment_shading_rate" number="227" type="device" requires="VK_KHR_create_renderpass2,VK_KHR_get_physical_device_properties2" author="KHR" contact="Tobias Hector @tobski" supported="vulkan">
- <require>
- <enum value="2" name="VK_KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_fragment_shading_rate&quot;" name="VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME"/>
- <type name="VkFragmentShadingRateCombinerOpKHR"/>
- <type name="VkFragmentShadingRateAttachmentInfoKHR"/>
- <type name="VkPipelineFragmentShadingRateStateCreateInfoKHR"/>
- <type name="VkPhysicalDeviceFragmentShadingRateFeaturesKHR"/>
- <type name="VkPhysicalDeviceFragmentShadingRatePropertiesKHR"/>
- <type name="VkPhysicalDeviceFragmentShadingRateKHR"/>
- <command name="vkGetPhysicalDeviceFragmentShadingRatesKHR"/>
- <command name="vkCmdSetFragmentShadingRateKHR"/>
- <enum offset="3" extends="VkImageLayout" extnumber="165" name="VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR"/>
- <enum offset="0" extends="VkDynamicState" name="VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR"/>
- <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR"/>
- <enum offset="3" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR"/>
- <enum offset="4" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR"/>
- <enum bitpos="23" extends="VkAccessFlagBits" name="VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR"/>
- <enum bitpos="8" extends="VkImageUsageFlagBits" name="VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"/>
- <enum bitpos="22" extends="VkPipelineStageFlagBits" name="VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"/>
- <enum bitpos="30" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"/>
- </require>
- <require extension="VK_KHR_format_feature_flags2">
- <enum bitpos="30" extends="VkFormatFeatureFlagBits2KHR" name="VK_FORMAT_FEATURE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"/>
- </require>
- </extension>
- <extension name="VK_AMD_shader_core_properties2" number="228" type="device" author="AMD" contact="Matthaeus G. Chajdas @anteru" supported="vulkan" requires="VK_AMD_shader_core_properties">
- <require>
- <enum value="1" name="VK_AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION"/>
- <enum value="&quot;VK_AMD_shader_core_properties2&quot;" name="VK_AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD"/>
- <type name="VkPhysicalDeviceShaderCoreProperties2AMD"/>
- <type name="VkShaderCorePropertiesFlagBitsAMD"/>
- <type name="VkShaderCorePropertiesFlagsAMD"/>
- </require>
- </extension>
- <extension name="VK_AMD_extension_229" number="229" author="AMD" contact="Martin Dinkov @mdinkov" supported="disabled">
- <require>
- <enum value="0" name="VK_AMD_EXTENSION_229_SPEC_VERSION"/>
- <enum value="&quot;VK_AMD_extension_229&quot;" name="VK_AMD_EXTENSION_229_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_AMD_device_coherent_memory" number="230" type="device" author="AMD" contact="Tobias Hector @tobski" supported="vulkan">
- <require>
- <enum value="1" name="VK_AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION"/>
- <enum value="&quot;VK_AMD_device_coherent_memory&quot;" 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">
- <require>
- <enum value="0" name="VK_AMD_EXTENSION_231_SPEC_VERSION"/>
- <enum value="&quot;VK_AMD_extension_231&quot;" name="VK_AMD_EXTENSION_231_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_AMD_extension_232" number="232" author="AMD" contact="Martin Dinkov @mdinkov" supported="disabled">
- <require>
- <enum value="0" name="VK_AMD_EXTENSION_232_SPEC_VERSION"/>
- <enum value="&quot;VK_AMD_extension_232&quot;" name="VK_AMD_EXTENSION_232_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_AMD_extension_233" number="233" author="AMD" contact="Martin Dinkov @mdinkov" supported="disabled">
- <require>
- <enum value="0" name="VK_AMD_EXTENSION_233_SPEC_VERSION"/>
- <enum value="&quot;VK_AMD_extension_233&quot;" name="VK_AMD_EXTENSION_233_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_AMD_extension_234" number="234" author="AMD" contact="Martin Dinkov @mdinkov" supported="disabled">
- <require>
- <enum value="0" name="VK_AMD_EXTENSION_234_SPEC_VERSION"/>
- <enum value="&quot;VK_AMD_extension_234&quot;" name="VK_AMD_EXTENSION_234_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_EXT_shader_image_atomic_int64" number="235" type="device" requires="VK_KHR_get_physical_device_properties2" author="EXT" contact="Tobias Hector @tobski" supported="vulkan">
- <require>
- <enum value="1" name="VK_EXT_SHADER_IMAGE_ATOMIC_INT64_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_shader_image_atomic_int64&quot;" name="VK_EXT_SHADER_IMAGE_ATOMIC_INT64_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT"/>
- <type name="VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT"/>
- </require>
- </extension>
- <extension name="VK_AMD_extension_236" number="236" author="AMD" contact="Martin Dinkov @mdinkov" supported="disabled">
- <require>
- <enum value="0" name="VK_AMD_EXTENSION_236_SPEC_VERSION"/>
- <enum value="&quot;VK_AMD_extension_236&quot;" name="VK_AMD_EXTENSION_236_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_KHR_spirv_1_4" number="237" type="device" requiresCore="1.1" requires="VK_KHR_shader_float_controls" author="KHR" contact="Jesse Hall @critsec" supported="vulkan" promotedto="VK_VERSION_1_2">
- <require>
- <enum value="1" name="VK_KHR_SPIRV_1_4_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_spirv_1_4&quot;" name="VK_KHR_SPIRV_1_4_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_EXT_memory_budget" number="238" type="device" requires="VK_KHR_get_physical_device_properties2" author="EXT" contact="Jeff Bolz @jeffbolznv" supported="vulkan">
- <require>
- <enum value="1" name="VK_EXT_MEMORY_BUDGET_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_memory_budget&quot;" name="VK_EXT_MEMORY_BUDGET_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT"/>
- <type name="VkPhysicalDeviceMemoryBudgetPropertiesEXT"/>
- </require>
- </extension>
- <extension name="VK_EXT_memory_priority" number="239" type="device" requires="VK_KHR_get_physical_device_properties2" author="EXT" contact="Jeff Bolz @jeffbolznv" supported="vulkan">
- <require>
- <enum value="1" name="VK_EXT_MEMORY_PRIORITY_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_memory_priority&quot;" name="VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT"/>
- <type name="VkPhysicalDeviceMemoryPriorityFeaturesEXT"/>
- <type name="VkMemoryPriorityAllocateInfoEXT"/>
- </require>
- </extension>
- <extension name="VK_KHR_surface_protected_capabilities" number="240" type="instance" requiresCore="1.1" requires="VK_KHR_get_surface_capabilities2" author="KHR" contact="Sandeep Shinde @sashinde" supported="vulkan">
- <require>
- <enum value="1" name="VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_surface_protected_capabilities&quot;" name="VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR"/>
- <type name="VkSurfaceProtectedCapabilitiesKHR"/>
- </require>
- </extension>
- <extension name="VK_NV_dedicated_allocation_image_aliasing" number="241" type="device" requires="VK_KHR_dedicated_allocation" author="NVIDIA" contact="Nuno Subtil @nsubtil" supported="vulkan">
- <require>
- <enum value="1" name="VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_dedicated_allocation_image_aliasing&quot;" name="VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV"/>
- <type name="VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV"/>
- </require>
- </extension>
- <extension name="VK_KHR_separate_depth_stencil_layouts" number="242" type="device" requires="VK_KHR_get_physical_device_properties2,VK_KHR_create_renderpass2" author="KHR" contact="Piers Daniell @pdaniell-nv" supported="vulkan" promotedto="VK_VERSION_1_2">
- <require>
- <enum value="1" name="VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_separate_depth_stencil_layouts&quot;" name="VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR" alias="VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR" alias="VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT"/>
- <enum extends="VkImageLayout" name="VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR" alias="VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL"/>
- <enum extends="VkImageLayout" name="VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR" alias="VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL"/>
- <enum extends="VkImageLayout" name="VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR" alias="VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL"/>
- <enum extends="VkImageLayout" name="VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR" alias="VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL"/>
- <type name="VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR"/>
- <type name="VkAttachmentReferenceStencilLayoutKHR"/>
- <type name="VkAttachmentDescriptionStencilLayoutKHR"/>
- </require>
- </extension>
- <extension name="VK_INTEL_extension_243" number="243" author="INTEL" contact="Slawek Grajewski @sgrajewski" supported="disabled">
- <require>
- <enum value="0" name="VK_INTEL_EXTENSION_243_SPEC_VERSION"/>
- <enum value="&quot;VK_INTEL_extension_243&quot;" name="VK_INTEL_EXTENSION_243_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_MESA_extension_244" number="244" author="MESA" contact="Andres Rodriguez @lostgoat" supported="disabled">
- <require>
- <enum value="0" name="VK_MESA_EXTENSION_244_SPEC_VERSION"/>
- <enum value="&quot;VK_MESA_extension_244&quot;" name="VK_MESA_EXTENSION_244_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_EXT_buffer_device_address" number="245" type="device" requires="VK_KHR_get_physical_device_properties2" author="NV" contact="Jeff Bolz @jeffbolznv" deprecatedby="VK_KHR_buffer_device_address" supported="vulkan">
- <require>
- <enum value="2" name="VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_buffer_device_address&quot;" name="VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT" alias="VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO"/>
- <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT"/>
- <enum extends="VkBufferUsageFlagBits" name="VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT" alias="VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT"/>
- <enum extends="VkBufferCreateFlagBits" name="VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT" alias="VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT"/>
- <enum extends="VkResult" name="VK_ERROR_INVALID_DEVICE_ADDRESS_EXT" alias="VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS"/>
- <type name="VkPhysicalDeviceBufferAddressFeaturesEXT"/>
- <type name="VkPhysicalDeviceBufferDeviceAddressFeaturesEXT"/>
- <type name="VkBufferDeviceAddressInfoEXT"/>
- <type name="VkBufferDeviceAddressCreateInfoEXT"/>
- <command name="vkGetBufferDeviceAddressEXT"/>
- </require>
- </extension>
- <extension name="VK_EXT_tooling_info" number="246" type="device" author="EXT" contact="Tobias Hector @tobski" supported="vulkan">
- <require>
- <enum value="1" name="VK_EXT_TOOLING_INFO_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_tooling_info&quot;" name="VK_EXT_TOOLING_INFO_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT"/>
- <type name="VkToolPurposeFlagBitsEXT"/>
- <type name="VkToolPurposeFlagsEXT"/>
- <type name="VkPhysicalDeviceToolPropertiesEXT"/>
- <command name="vkGetPhysicalDeviceToolPropertiesEXT"/>
- </require>
- <require extension="VK_EXT_debug_report">
- <enum bitpos="5" extends="VkToolPurposeFlagBitsEXT" name="VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT"/>
- </require>
- <require extension="VK_EXT_debug_marker">
- <enum bitpos="6" extends="VkToolPurposeFlagBitsEXT" name="VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT"/>
- </require>
- <require extension="VK_EXT_debug_utils">
- <enum bitpos="5" extends="VkToolPurposeFlagBitsEXT" name="VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT"/>
- <enum bitpos="6" extends="VkToolPurposeFlagBitsEXT" name="VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT"/>
- </require>
- </extension>
- <extension name="VK_EXT_separate_stencil_usage" number="247" type="device" author="EXT" contact="Daniel Rakos @drakos-amd" supported="vulkan" promotedto="VK_VERSION_1_2">
- <require>
- <enum value="1" name="VK_EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_separate_stencil_usage&quot;" name="VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT" alias="VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO"/>
- <type name="VkImageStencilUsageCreateInfoEXT"/>
- </require>
- </extension>
- <extension name="VK_EXT_validation_features" number="248" type="instance" author="LUNARG" contact="Karl Schultz @karl-lunarg" specialuse="debugging" supported="vulkan">
- <require>
- <enum value="5" name="VK_EXT_VALIDATION_FEATURES_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_validation_features&quot;" name="VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT"/>
- <type name="VkValidationFeaturesEXT"/>
- <type name="VkValidationFeatureEnableEXT"/>
- <type name="VkValidationFeatureDisableEXT"/>
- </require>
- </extension>
- <extension name="VK_KHR_present_wait" number="249" type="device" requires="VK_KHR_swapchain,VK_KHR_present_id" author="KHR" contact="Keith Packard @keithp" supported="vulkan">
- <require>
- <enum value="1" name="VK_KHR_PRESENT_WAIT_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_present_wait&quot;" name="VK_KHR_PRESENT_WAIT_EXTENSION_NAME"/>
- <command name="vkWaitForPresentKHR"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR"/>
- <type name="VkPhysicalDevicePresentWaitFeaturesKHR"/>
- </require>
- </extension>
- <extension name="VK_NV_cooperative_matrix" number="250" type="device" requires="VK_KHR_get_physical_device_properties2" author="NV" contact="Jeff Bolz @jeffbolznv" supported="vulkan">
- <require>
- <enum value="1" name="VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_cooperative_matrix&quot;" name="VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV"/>
- <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV"/>
- <type name="VkCooperativeMatrixPropertiesNV"/>
- <type name="VkScopeNV"/>
- <type name="VkComponentTypeNV"/>
- <type name="VkPhysicalDeviceCooperativeMatrixFeaturesNV"/>
- <type name="VkPhysicalDeviceCooperativeMatrixPropertiesNV"/>
- <command name="vkGetPhysicalDeviceCooperativeMatrixPropertiesNV"/>
- </require>
- </extension>
- <extension name="VK_NV_coverage_reduction_mode" number="251" requires="VK_NV_framebuffer_mixed_samples" type="device" author="NV" contact="Kedarnath Thangudu @kthangudu" supported="vulkan">
- <require>
- <enum value="1" name="VK_NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_coverage_reduction_mode&quot;" name="VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV"/>
- <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV"/>
- <type name="VkPhysicalDeviceCoverageReductionModeFeaturesNV"/>
- <type name="VkPipelineCoverageReductionStateCreateInfoNV"/>
- <type name="VkPipelineCoverageReductionStateCreateFlagsNV"/>
- <type name="VkCoverageReductionModeNV"/>
- <type name="VkFramebufferMixedSamplesCombinationNV"/>
- <command name="vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV"/>
- </require>
- </extension>
- <extension name="VK_EXT_fragment_shader_interlock" number="252" author="EXT" type="device" requires="VK_KHR_get_physical_device_properties2" contact="Piers Daniell @pdaniell-nv" supported="vulkan">
- <require>
- <enum value="1" name="VK_EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_fragment_shader_interlock&quot;" name="VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT"/>
- <type name="VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT"/>
- </require>
- </extension>
- <extension name="VK_EXT_ycbcr_image_arrays" number="253" type="device" requires="VK_KHR_sampler_ycbcr_conversion" author="EXT" contact="Piers Daniell @pdaniell-nv" supported="vulkan">
- <require>
- <enum value="1" name="VK_EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_ycbcr_image_arrays&quot;" name="VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT"/>
- <type name="VkPhysicalDeviceYcbcrImageArraysFeaturesEXT"/>
- </require>
- </extension>
- <extension name="VK_KHR_uniform_buffer_standard_layout" number="254" requires="VK_KHR_get_physical_device_properties2" type="device" author="KHR" contact="Graeme Leese @gnl21" supported="vulkan" promotedto="VK_VERSION_1_2">
- <require>
- <enum value="1" name="VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_uniform_buffer_standard_layout&quot;" name="VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME"/>
- <type name="VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES"/>
- </require>
- </extension>
- <extension name="VK_EXT_provoking_vertex" number="255" type="device" author="EXT" requires="VK_KHR_get_physical_device_properties2" contact="Jesse Hall @jessehall" specialuse="glemulation" supported="vulkan">
- <require>
- <enum value="1" name="VK_EXT_PROVOKING_VERTEX_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_provoking_vertex&quot;" name="VK_EXT_PROVOKING_VERTEX_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT"/>
- <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT"/>
- <type name="VkPhysicalDeviceProvokingVertexFeaturesEXT"/>
- <type name="VkPhysicalDeviceProvokingVertexPropertiesEXT"/>
- <type name="VkPipelineRasterizationProvokingVertexStateCreateInfoEXT"/>
- <type name="VkProvokingVertexModeEXT"/>
- </require>
- </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="4" name="VK_EXT_FULL_SCREEN_EXCLUSIVE_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_full_screen_exclusive&quot;" 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"/>
- <enum offset="0" extends="VkResult" dir="-" name="VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT"/>
- <type name="VkFullScreenExclusiveEXT"/>
- <type name="VkSurfaceFullScreenExclusiveInfoEXT"/>
- <type name="VkSurfaceCapabilitiesFullScreenExclusiveEXT"/>
- <command name="vkGetPhysicalDeviceSurfacePresentModes2EXT"/>
- <command name="vkAcquireFullScreenExclusiveModeEXT"/>
- <command name="vkReleaseFullScreenExclusiveModeEXT"/>
- </require>
- <require extension="VK_KHR_win32_surface">
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT"/>
- <type name="VkSurfaceFullScreenExclusiveWin32InfoEXT"/>
- </require>
- <require extension="VK_KHR_device_group">
- <command name="vkGetDeviceGroupSurfacePresentModes2EXT"/>
- </require>
- <require feature="VK_VERSION_1_1">
- <command name="vkGetDeviceGroupSurfacePresentModes2EXT"/>
- </require>
- </extension>
- <extension name="VK_EXT_headless_surface" number="257" type="instance" requires="VK_KHR_surface" author="EXT" contact="Lisa Wu @chengtianww" supported="vulkan">
- <require>
- <enum value="1" name="VK_EXT_HEADLESS_SURFACE_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_headless_surface&quot;" name="VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT"/>
- <type name="VkHeadlessSurfaceCreateFlagsEXT"/>
- <type name="VkHeadlessSurfaceCreateInfoEXT"/>
- <command name="vkCreateHeadlessSurfaceEXT"/>
- </require>
- </extension>
- <extension name="VK_KHR_buffer_device_address" number="258" type="device" requires="VK_KHR_get_physical_device_properties2" author="KHR" contact="Jeff Bolz @jeffbolznv" supported="vulkan" promotedto="VK_VERSION_1_2">
- <require>
- <enum value="1" name="VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_buffer_device_address&quot;" name="VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_KHR" alias="VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR" alias="VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR" alias="VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO_KHR" alias="VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO"/>
- <enum extends="VkBufferUsageFlagBits" name="VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR" alias="VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT"/>
- <enum extends="VkBufferCreateFlagBits" name="VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR" alias="VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT"/>
- <enum extends="VkMemoryAllocateFlagBits" name="VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR" alias="VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT"/>
- <enum extends="VkMemoryAllocateFlagBits" name="VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR" alias="VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT"/>
- <enum extends="VkResult" name="VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR" alias="VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS"/>
- <type name="VkPhysicalDeviceBufferDeviceAddressFeaturesKHR"/>
- <type name="VkBufferDeviceAddressInfoKHR"/>
- <type name="VkBufferOpaqueCaptureAddressCreateInfoKHR"/>
- <type name="VkMemoryOpaqueCaptureAddressAllocateInfoKHR"/>
- <type name="VkDeviceMemoryOpaqueCaptureAddressInfoKHR"/>
- <command name="vkGetBufferDeviceAddressKHR"/>
- <command name="vkGetBufferOpaqueCaptureAddressKHR"/>
- <command name="vkGetDeviceMemoryOpaqueCaptureAddressKHR"/>
- </require>
- </extension>
- <extension name="VK_EXT_extension_259" number="259" author="EXT" contact="Jeff Leger @jackohound" supported="disabled">
- <require>
- <enum value="0" name="VK_EXT_EXTENSION_259_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_extension_259&quot;" name="VK_EXT_EXTENSION_259_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_EXT_line_rasterization" number="260" type="device" requires="VK_KHR_get_physical_device_properties2" author="EXT" contact="Jeff Bolz @jeffbolznv" specialuse="cadsupport" supported="vulkan">
- <require>
- <enum value="1" name="VK_EXT_LINE_RASTERIZATION_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_line_rasterization&quot;" name="VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT"/>
- <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT"/>
- <enum offset="0" extends="VkDynamicState" name="VK_DYNAMIC_STATE_LINE_STIPPLE_EXT"/>
- <type name="VkPhysicalDeviceLineRasterizationFeaturesEXT"/>
- <type name="VkPhysicalDeviceLineRasterizationPropertiesEXT"/>
- <type name="VkPipelineRasterizationLineStateCreateInfoEXT"/>
- <type name="VkLineRasterizationModeEXT"/>
- <command name="vkCmdSetLineStippleEXT"/>
- </require>
- </extension>
- <extension name="VK_EXT_shader_atomic_float" number="261" type="device" author="NV" requires="VK_KHR_get_physical_device_properties2" contact="Vikram Kushwaha @vkushwaha-nv" supported="vulkan">
- <require>
- <enum value="1" name="VK_EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_shader_atomic_float&quot;" name="VK_EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT"/>
- <type name="VkPhysicalDeviceShaderAtomicFloatFeaturesEXT"/>
- </require>
- </extension>
- <extension name="VK_EXT_host_query_reset" number="262" author="EXT" contact="Bas Nieuwenhuizen @BNieuwenhuizen" supported="vulkan" type="device" requires="VK_KHR_get_physical_device_properties2" promotedto="VK_VERSION_1_2">
- <require>
- <enum value="1" name="VK_EXT_HOST_QUERY_RESET_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_host_query_reset&quot;" name="VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME"/>
- <enum extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT" alias="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES"/>
- <type name="VkPhysicalDeviceHostQueryResetFeaturesEXT"/>
- <command name="vkResetQueryPoolEXT"/>
- </require>
- </extension>
- <extension name="VK_GGP_extension_263" number="263" author="GGP" contact="Jean-Francois Roy @jfroy" supported="disabled">
- <require>
- <enum value="0" name="VK_GGP_EXTENSION_263_SPEC_VERSION"/>
- <enum value="&quot;VK_GGP_extension_263&quot;" name="VK_GGP_EXTENSION_263_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_BRCM_extension_264" number="264" author="BRCM" contact="Graeme Leese @gnl21" supported="disabled">
- <require>
- <enum value="0" name="VK_BRCM_EXTENSION_264_SPEC_VERSION"/>
- <enum value="&quot;VK_BRCM_extension_264&quot;" name="VK_BRCM_EXTENSION_264_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_BRCM_extension_265" number="265" author="BRCM" contact="Graeme Leese @gnl21" supported="disabled">
- <require>
- <enum value="0" name="VK_BRCM_EXTENSION_265_SPEC_VERSION"/>
- <enum value="&quot;VK_BRCM_extension_265&quot;" name="VK_BRCM_EXTENSION_265_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_EXT_index_type_uint8" number="266" type="device" author="EXT" contact="Piers Daniell @pdaniell-nv" supported="vulkan">
- <require>
- <enum value="1" name="VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_index_type_uint8&quot;" name="VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT"/>
- <enum offset="0" extends="VkIndexType" name="VK_INDEX_TYPE_UINT8_EXT"/>
- <type name="VkPhysicalDeviceIndexTypeUint8FeaturesEXT"/>
- </require>
- </extension>
- <extension name="VK_EXT_extension_267" number="267" type="device" author="EXT" contact="Piers Daniell @pdaniell-nv" supported="disabled">
- <require>
- <enum value="0" name="VK_EXT_EXTENSION_267_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_extension_267&quot;" name="VK_EXT_EXTENSION_267_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_EXT_extended_dynamic_state" number="268" type="device" requires="VK_KHR_get_physical_device_properties2" author="EXT" contact="Piers Daniell @pdaniell-nv" supported="vulkan">
- <require>
- <enum value="1" name="VK_EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_extended_dynamic_state&quot;" name="VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT"/>
- <enum offset="0" extends="VkDynamicState" name="VK_DYNAMIC_STATE_CULL_MODE_EXT"/>
- <enum offset="1" extends="VkDynamicState" name="VK_DYNAMIC_STATE_FRONT_FACE_EXT"/>
- <enum offset="2" extends="VkDynamicState" name="VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT"/>
- <enum offset="3" extends="VkDynamicState" name="VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT"/>
- <enum offset="4" extends="VkDynamicState" name="VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT"/>
- <enum offset="5" extends="VkDynamicState" name="VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT"/>
- <enum offset="6" extends="VkDynamicState" name="VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT"/>
- <enum offset="7" extends="VkDynamicState" name="VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT"/>
- <enum offset="8" extends="VkDynamicState" name="VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT"/>
- <enum offset="9" extends="VkDynamicState" name="VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT"/>
- <enum offset="10" extends="VkDynamicState" name="VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT"/>
- <enum offset="11" extends="VkDynamicState" name="VK_DYNAMIC_STATE_STENCIL_OP_EXT"/>
- <type name="VkPhysicalDeviceExtendedDynamicStateFeaturesEXT"/>
- <command name="vkCmdSetCullModeEXT"/>
- <command name="vkCmdSetFrontFaceEXT"/>
- <command name="vkCmdSetPrimitiveTopologyEXT"/>
- <command name="vkCmdSetViewportWithCountEXT"/>
- <command name="vkCmdSetScissorWithCountEXT"/>
- <command name="vkCmdBindVertexBuffers2EXT"/>
- <command name="vkCmdSetDepthTestEnableEXT"/>
- <command name="vkCmdSetDepthWriteEnableEXT"/>
- <command name="vkCmdSetDepthCompareOpEXT"/>
- <command name="vkCmdSetDepthBoundsTestEnableEXT"/>
- <command name="vkCmdSetStencilTestEnableEXT"/>
- <command name="vkCmdSetStencilOpEXT"/>
- </require>
- </extension>
- <extension name="VK_KHR_deferred_host_operations" number="269" type="device" author="KHR" contact="Josh Barczak @jbarczak" supported="vulkan">
- <require>
- <enum value="4" name="VK_KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_deferred_host_operations&quot;" name="VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME"/>
- <enum offset="0" extends="VkObjectType" name="VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR"/>
- <type name="VkDeferredOperationKHR"/>
- <command name="vkCreateDeferredOperationKHR"/>
- <command name="vkDestroyDeferredOperationKHR"/>
- <command name="vkGetDeferredOperationMaxConcurrencyKHR"/>
- <command name="vkGetDeferredOperationResultKHR"/>
- <command name="vkDeferredOperationJoinKHR" />
- <enum extends="VkResult" offset="0" name="VK_THREAD_IDLE_KHR" />
- <enum extends="VkResult" offset="1" name="VK_THREAD_DONE_KHR" />
- <enum extends="VkResult" offset="2" name="VK_OPERATION_DEFERRED_KHR" />
- <enum extends="VkResult" offset="3" name="VK_OPERATION_NOT_DEFERRED_KHR" />
- </require>
- </extension>
- <extension name="VK_KHR_pipeline_executable_properties" number="270" type="device" requires="VK_KHR_get_physical_device_properties2" author="KHR" contact="Jason Ekstrand @jekstrand" specialuse="devtools" supported="vulkan">
- <require>
- <enum value="1" name="VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_pipeline_executable_properties&quot;" name="VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR"/>
- <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR"/>
- <enum offset="3" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR"/>
- <enum offset="4" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR"/>
- <enum offset="5" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR"/>
- <enum bitpos="6" extends="VkPipelineCreateFlagBits" name="VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR"/>
- <enum bitpos="7" extends="VkPipelineCreateFlagBits" name="VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR"/>
- <type name="VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR"/>
- <type name="VkPipelineInfoKHR"/>
- <type name="VkPipelineExecutablePropertiesKHR"/>
- <type name="VkPipelineExecutableInfoKHR"/>
- <type name="VkPipelineExecutableStatisticFormatKHR"/>
- <type name="VkPipelineExecutableStatisticValueKHR"/>
- <type name="VkPipelineExecutableStatisticKHR"/>
- <type name="VkPipelineExecutableInternalRepresentationKHR"/>
- <command name="vkGetPipelineExecutablePropertiesKHR"/>
- <command name="vkGetPipelineExecutableStatisticsKHR"/>
- <command name="vkGetPipelineExecutableInternalRepresentationsKHR"/>
- </require>
- </extension>
- <extension name="VK_INTEL_extension_271" number="271" type="device" author="INTEL" contact="Jason Ekstrand @jekstrand" supported="disabled">
- <require>
- <enum value="0" name="VK_INTEL_EXTENSION_271_SPEC_VERSION"/>
- <enum value="&quot;VK_INTEL_extension_271&quot;" name="VK_INTEL_EXTENSION_271_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_INTEL_extension_272" number="272" type="device" author="INTEL" contact="Jason Ekstrand @jekstrand" supported="disabled">
- <require>
- <enum value="0" name="VK_INTEL_EXTENSION_272_SPEC_VERSION"/>
- <enum value="&quot;VK_INTEL_extension_272&quot;" name="VK_INTEL_EXTENSION_272_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_INTEL_extension_273" number="273" type="device" author="INTEL" contact="Jason Ekstrand @jekstrand" supported="disabled">
- <require>
- <enum value="0" name="VK_INTEL_EXTENSION_273_SPEC_VERSION"/>
- <enum value="&quot;VK_INTEL_extension_273&quot;" name="VK_INTEL_EXTENSION_273_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_EXT_shader_atomic_float2" number="274" type="device" requires="VK_EXT_shader_atomic_float" author="EXT" contact="Jason Ekstrand @jekstrand" supported="vulkan">
- <require>
- <enum value="1" name="VK_EXT_SHADER_ATOMIC_FLOAT_2_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_shader_atomic_float2&quot;" name="VK_EXT_SHADER_ATOMIC_FLOAT_2_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT"/>
- <type name="VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT"/>
- </require>
- </extension>
- <extension name="VK_KHR_extension_275" number="275" type="instance" author="KHR" contact="Lionel Landwerlin @llandwerlin" supported="disabled">
- <require>
- <enum value="0" name="VK_KHR_EXTENSION_275_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_extension_275&quot;" name="VK_KHR_EXTENSION_275_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_KHR_extension_276" number="276" type="device" author="KHR" contact="James Jones @cubanismo" supported="disabled">
- <require>
- <enum value="0" name="VK_KHR_EXTENSION_276_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_extension_276&quot;" name="VK_KHR_EXTENSION_276_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_EXT_shader_demote_to_helper_invocation" number="277" type="device" requires="VK_KHR_get_physical_device_properties2" author="EXT" contact="Jeff Bolz @jeffbolznv" supported="vulkan">
- <require>
- <enum value="1" name="VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_shader_demote_to_helper_invocation&quot;" name="VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT"/>
- <type name="VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT"/>
- </require>
- </extension>
- <extension name="VK_NV_device_generated_commands" number="278" type="device" requiresCore="1.1" requires="VK_KHR_buffer_device_address" author="NV" contact="Christoph Kubisch @pixeljetstream" supported="vulkan">
- <require>
- <comment>
- This extension requires buffer_device_address functionality.
- VK_EXT_buffer_device_address is also acceptable, but since it is deprecated the KHR version is preferred.
- </comment>
- <enum value="3" name="VK_NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_device_generated_commands&quot;" name="VK_NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV"/>
- <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV"/>
- <enum offset="3" extends="VkStructureType" name="VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV"/>
- <enum offset="4" extends="VkStructureType" name="VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV"/>
- <enum offset="5" extends="VkStructureType" name="VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV"/>
- <enum offset="6" extends="VkStructureType" name="VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV"/>
- <enum offset="7" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV"/>
- <enum bitpos="18" extends="VkPipelineCreateFlagBits" name="VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV"/>
- <enum bitpos="17" extends="VkPipelineStageFlagBits" name="VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV"/>
- <enum bitpos="17" extends="VkAccessFlagBits" name="VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV"/>
- <enum bitpos="18" extends="VkAccessFlagBits" name="VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV"/>
- <enum offset="0" extends="VkObjectType" name="VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV"/>
- <type name="VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV"/>
- <type name="VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV"/>
- <type name="VkGraphicsShaderGroupCreateInfoNV"/>
- <type name="VkGraphicsPipelineShaderGroupsCreateInfoNV"/>
- <type name="VkBindShaderGroupIndirectCommandNV"/>
- <type name="VkBindIndexBufferIndirectCommandNV"/>
- <type name="VkBindVertexBufferIndirectCommandNV"/>
- <type name="VkSetStateFlagsIndirectCommandNV"/>
- <type name="VkIndirectStateFlagBitsNV"/>
- <type name="VkIndirectStateFlagsNV"/>
- <type name="VkIndirectCommandsLayoutNV"/>
- <type name="VkIndirectCommandsTokenTypeNV"/>
- <type name="VkIndirectCommandsLayoutUsageFlagBitsNV"/>
- <type name="VkIndirectCommandsLayoutUsageFlagsNV"/>
- <type name="VkIndirectCommandsStreamNV"/>
- <type name="VkIndirectCommandsLayoutTokenNV"/>
- <type name="VkIndirectCommandsLayoutCreateInfoNV"/>
- <type name="VkGeneratedCommandsInfoNV"/>
- <type name="VkGeneratedCommandsMemoryRequirementsInfoNV"/>
- <command name="vkGetGeneratedCommandsMemoryRequirementsNV"/>
- <command name="vkCmdPreprocessGeneratedCommandsNV"/>
- <command name="vkCmdExecuteGeneratedCommandsNV"/>
- <command name="vkCmdBindPipelineShaderGroupNV"/>
- <command name="vkCreateIndirectCommandsLayoutNV"/>
- <command name="vkDestroyIndirectCommandsLayoutNV"/>
- </require>
- </extension>
- <extension name="VK_NV_inherited_viewport_scissor" number="279" type="device" author="NV" contact="David Zhao Akeley @akeley98" supported="vulkan">
- <require>
- <enum value="1" name="VK_NV_INHERITED_VIEWPORT_SCISSOR_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_inherited_viewport_scissor&quot;" name="VK_NV_INHERITED_VIEWPORT_SCISSOR_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV"/>
- <type name="VkPhysicalDeviceInheritedViewportScissorFeaturesNV"/>
- <type name="VkCommandBufferInheritanceViewportScissorInfoNV"/>
- </require>
- </extension>
- <extension name="VK_KHR_extension_280" number="280" type="device" author="KHR" contact="Kevin Petit @kevinpetit" supported="disabled">
- <require>
- <enum value="0" name="VK_KHR_EXTENSION_280_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_extension_280&quot;" name="VK_KHR_EXTENSION_280_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_KHR_shader_integer_dot_product" number="281" type="device" author="KHR" requires="VK_KHR_get_physical_device_properties2" contact="Kevin Petit @kevinpetit" supported="vulkan">
- <require>
- <enum value="1" name="VK_KHR_SHADER_INTEGER_DOT_PRODUCT_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_shader_integer_dot_product&quot;" name="VK_KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES_KHR"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES_KHR"/>
- <type name="VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR"/>
- <type name="VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR"/>
- </require>
- </extension>
- <extension name="VK_EXT_texel_buffer_alignment" number="282" type="device" requires="VK_KHR_get_physical_device_properties2" author="EXT" contact="Jeff Bolz @jeffbolznv" supported="vulkan">
- <require>
- <enum value="1" name="VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_texel_buffer_alignment&quot;" name="VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT"/>
- <type name="VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT"/>
- <type name="VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT"/>
- </require>
- </extension>
- <extension name="VK_QCOM_render_pass_transform" number="283" type="device" requires="VK_KHR_swapchain,VK_KHR_surface" author="QCOM" contact="Jeff Leger @jackohound" supported="vulkan">
- <require>
- <enum value="2" name="VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION"/>
- <enum value="&quot;VK_QCOM_render_pass_transform&quot;" name="VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM"/>
- <enum bitpos="1" extends="VkRenderPassCreateFlagBits" name="VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM"/>
- <type name="VkRenderPassTransformBeginInfoQCOM"/>
- <type name="VkCommandBufferInheritanceRenderPassTransformInfoQCOM"/>
- </require>
- </extension>
- <extension name="VK_EXT_extension_284" number="284" type="device" author="EXT" contact="Samuel Pitoiset @hakzsam" supported="disabled">
- <require>
- <enum value="0" name="VK_EXT_EXTENSION_284_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_extension_284&quot;" name="VK_EXT_EXTENSION_284_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_EXT_device_memory_report" number="285" type="device" requires="VK_KHR_get_physical_device_properties2" author="EXT" contact="Yiwei Zhang @zhangyiwei" specialuse="devtools" supported="vulkan">
- <require>
- <enum value="2" name="VK_EXT_DEVICE_MEMORY_REPORT_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_device_memory_report&quot;" name="VK_EXT_DEVICE_MEMORY_REPORT_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT"/>
- <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT"/>
- <type name="VkPhysicalDeviceDeviceMemoryReportFeaturesEXT"/>
- <type name="VkDeviceDeviceMemoryReportCreateInfoEXT"/>
- <type name="VkDeviceMemoryReportCallbackDataEXT"/>
- <type name="VkDeviceMemoryReportFlagsEXT"/>
- <type name="VkDeviceMemoryReportEventTypeEXT"/>
- <type name="PFN_vkDeviceMemoryReportCallbackEXT"/>
- </require>
- </extension>
- <extension name="VK_EXT_acquire_drm_display" number="286" type="instance" requires="VK_EXT_direct_mode_display" author="EXT" contact="Drew DeVault sir@cmpwn.com" supported="vulkan">
- <require>
- <enum value="1" name="VK_EXT_ACQUIRE_DRM_DISPLAY_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_acquire_drm_display&quot;" name="VK_EXT_ACQUIRE_DRM_DISPLAY_EXTENSION_NAME"/>
- <command name="vkAcquireDrmDisplayEXT"/>
- <command name="vkGetDrmDisplayEXT"/>
- </require>
- </extension>
- <extension name="VK_EXT_robustness2" number="287" type="device" author="EXT" contact="Liam Middlebrook @liam-middlebrook" supported="vulkan">
- <require>
- <enum value="1" name="VK_EXT_ROBUSTNESS_2_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_robustness2&quot;" name="VK_EXT_ROBUSTNESS_2_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT"/>
- <type name="VkPhysicalDeviceRobustness2FeaturesEXT"/>
- <type name="VkPhysicalDeviceRobustness2PropertiesEXT"/>
- </require>
- </extension>
- <extension name="VK_EXT_custom_border_color" number="288" type="device" author="EXT" contact="Liam Middlebrook @liam-middlebrook" specialuse="glemulation,d3demulation" supported="vulkan">
- <require>
- <enum value="12" name="VK_EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_custom_border_color&quot;" name="VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT"/>
- <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT"/>
- <enum offset="3" extends="VkBorderColor" name="VK_BORDER_COLOR_FLOAT_CUSTOM_EXT"/>
- <enum offset="4" extends="VkBorderColor" name="VK_BORDER_COLOR_INT_CUSTOM_EXT"/>
- <type name="VkSamplerCustomBorderColorCreateInfoEXT"/>
- <type name="VkPhysicalDeviceCustomBorderColorPropertiesEXT"/>
- <type name="VkPhysicalDeviceCustomBorderColorFeaturesEXT"/>
- </require>
- </extension>
- <extension name="VK_EXT_extension_289" number="289" author="EXT" contact="Jan-Harald Fredriksen @janharaldfredriksen-arm" supported="disabled">
- <require>
- <comment>
- These enums are present only to inform downstream
- consumers like KTX2. There is no actual Vulkan extension
- corresponding to the enums.
- </comment>
- <enum value="0" name="VK_EXT_EXTENSION_289_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_extension_289&quot;" name="VK_EXT_EXTENSION_289_EXTENSION_NAME"/>
- <enum extends="VkFormat" extnumber="289" offset="0" name="VK_FORMAT_ASTC_3x3x3_UNORM_BLOCK_EXT"/>
- <enum extends="VkFormat" extnumber="289" offset="1" name="VK_FORMAT_ASTC_3x3x3_SRGB_BLOCK_EXT"/>
- <enum extends="VkFormat" extnumber="289" offset="2" name="VK_FORMAT_ASTC_3x3x3_SFLOAT_BLOCK_EXT"/>
- <enum extends="VkFormat" extnumber="289" offset="3" name="VK_FORMAT_ASTC_4x3x3_UNORM_BLOCK_EXT"/>
- <enum extends="VkFormat" extnumber="289" offset="4" name="VK_FORMAT_ASTC_4x3x3_SRGB_BLOCK_EXT"/>
- <enum extends="VkFormat" extnumber="289" offset="5" name="VK_FORMAT_ASTC_4x3x3_SFLOAT_BLOCK_EXT"/>
- <enum extends="VkFormat" extnumber="289" offset="6" name="VK_FORMAT_ASTC_4x4x3_UNORM_BLOCK_EXT"/>
- <enum extends="VkFormat" extnumber="289" offset="7" name="VK_FORMAT_ASTC_4x4x3_SRGB_BLOCK_EXT"/>
- <enum extends="VkFormat" extnumber="289" offset="8" name="VK_FORMAT_ASTC_4x4x3_SFLOAT_BLOCK_EXT"/>
- <enum extends="VkFormat" extnumber="289" offset="9" name="VK_FORMAT_ASTC_4x4x4_UNORM_BLOCK_EXT"/>
- <enum extends="VkFormat" extnumber="289" offset="10" name="VK_FORMAT_ASTC_4x4x4_SRGB_BLOCK_EXT"/>
- <enum extends="VkFormat" extnumber="289" offset="11" name="VK_FORMAT_ASTC_4x4x4_SFLOAT_BLOCK_EXT"/>
- <enum extends="VkFormat" extnumber="289" offset="12" name="VK_FORMAT_ASTC_5x4x4_UNORM_BLOCK_EXT"/>
- <enum extends="VkFormat" extnumber="289" offset="13" name="VK_FORMAT_ASTC_5x4x4_SRGB_BLOCK_EXT"/>
- <enum extends="VkFormat" extnumber="289" offset="14" name="VK_FORMAT_ASTC_5x4x4_SFLOAT_BLOCK_EXT"/>
- <enum extends="VkFormat" extnumber="289" offset="15" name="VK_FORMAT_ASTC_5x5x4_UNORM_BLOCK_EXT"/>
- <enum extends="VkFormat" extnumber="289" offset="16" name="VK_FORMAT_ASTC_5x5x4_SRGB_BLOCK_EXT"/>
- <enum extends="VkFormat" extnumber="289" offset="17" name="VK_FORMAT_ASTC_5x5x4_SFLOAT_BLOCK_EXT"/>
- <enum extends="VkFormat" extnumber="289" offset="18" name="VK_FORMAT_ASTC_5x5x5_UNORM_BLOCK_EXT"/>
- <enum extends="VkFormat" extnumber="289" offset="19" name="VK_FORMAT_ASTC_5x5x5_SRGB_BLOCK_EXT"/>
- <enum extends="VkFormat" extnumber="289" offset="20" name="VK_FORMAT_ASTC_5x5x5_SFLOAT_BLOCK_EXT"/>
- <enum extends="VkFormat" extnumber="289" offset="21" name="VK_FORMAT_ASTC_6x5x5_UNORM_BLOCK_EXT"/>
- <enum extends="VkFormat" extnumber="289" offset="22" name="VK_FORMAT_ASTC_6x5x5_SRGB_BLOCK_EXT"/>
- <enum extends="VkFormat" extnumber="289" offset="23" name="VK_FORMAT_ASTC_6x5x5_SFLOAT_BLOCK_EXT"/>
- <enum extends="VkFormat" extnumber="289" offset="24" name="VK_FORMAT_ASTC_6x6x5_UNORM_BLOCK_EXT"/>
- <enum extends="VkFormat" extnumber="289" offset="25" name="VK_FORMAT_ASTC_6x6x5_SRGB_BLOCK_EXT"/>
- <enum extends="VkFormat" extnumber="289" offset="26" name="VK_FORMAT_ASTC_6x6x5_SFLOAT_BLOCK_EXT"/>
- <enum extends="VkFormat" extnumber="289" offset="27" name="VK_FORMAT_ASTC_6x6x6_UNORM_BLOCK_EXT"/>
- <enum extends="VkFormat" extnumber="289" offset="28" name="VK_FORMAT_ASTC_6x6x6_SRGB_BLOCK_EXT"/>
- <enum extends="VkFormat" extnumber="289" offset="29" name="VK_FORMAT_ASTC_6x6x6_SFLOAT_BLOCK_EXT"/>
- </require>
- </extension>
- <extension name="VK_GOOGLE_user_type" number="290" type="device" author="GOOGLE" contact="Kaye Mason @chaleur" supported="vulkan">
- <require>
- <enum value="1" name="VK_GOOGLE_USER_TYPE_SPEC_VERSION"/>
- <enum value="&quot;VK_GOOGLE_user_type&quot;" name="VK_GOOGLE_USER_TYPE_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_KHR_pipeline_library" number="291" type="device" author="KHR" contact="Christoph Kubisch @pixeljetstream" supported="vulkan">
- <require>
- <enum value="1" name="VK_KHR_PIPELINE_LIBRARY_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_pipeline_library&quot;" name="VK_KHR_PIPELINE_LIBRARY_EXTENSION_NAME"/>
- <enum bitpos="11" extends="VkPipelineCreateFlagBits" name="VK_PIPELINE_CREATE_LIBRARY_BIT_KHR"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR"/>
- <type name="VkPipelineLibraryCreateInfoKHR"/>
- </require>
- </extension>
- <extension name="VK_NV_extension_292" number="292" author="NV" contact="Daniel Koch @dgkoch" supported="disabled">
- <require>
- <enum value="0" name="VK_NV_EXTENSION_292_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_extension_292&quot;" name="VK_NV_EXTENSION_292_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_NV_extension_293" number="293" author="NV" contact="Daniel Koch @dgkoch" supported="disabled">
- <require>
- <enum value="0" name="VK_NV_EXTENSION_293_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_extension_293&quot;" name="VK_NV_EXTENSION_293_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_KHR_shader_non_semantic_info" number="294" type="device" author="KHR" contact="Baldur Karlsson @baldurk" supported="vulkan">
- <require>
- <enum value="1" name="VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_shader_non_semantic_info&quot;" name="VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_KHR_present_id" number="295" type="device" requires="VK_KHR_swapchain" author="KHR" contact="Keith Packard @keithp" supported="vulkan">
- <require>
- <enum value="1" name="VK_KHR_PRESENT_ID_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_present_id&quot;" name="VK_KHR_PRESENT_ID_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PRESENT_ID_KHR"/>
- <type name="VkPresentIdKHR"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR"/>
- <type name="VkPhysicalDevicePresentIdFeaturesKHR"/>
- </require>
- </extension>
- <extension name="VK_EXT_private_data" number="296" type="device" author="NV" contact="Matthew Rusch @mattruschnv" supported="vulkan">
- <require>
- <enum value="1" name="VK_EXT_PRIVATE_DATA_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_private_data&quot;" name="VK_EXT_PRIVATE_DATA_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT"/>
- <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT"/>
- <enum offset="0" extends="VkObjectType" name="VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT"/>
- <type name="VkPhysicalDevicePrivateDataFeaturesEXT"/>
- <type name="VkDevicePrivateDataCreateInfoEXT"/>
- <type name="VkPrivateDataSlotCreateInfoEXT"/>
- <type name="VkPrivateDataSlotEXT"/>
- <type name="VkPrivateDataSlotCreateFlagsEXT"/>
- <type name="VkPrivateDataSlotCreateFlagBitsEXT"/>
- <command name="vkCreatePrivateDataSlotEXT"/>
- <command name="vkDestroyPrivateDataSlotEXT"/>
- <command name="vkSetPrivateDataEXT"/>
- <command name="vkGetPrivateDataEXT"/>
- </require>
- </extension>
- <extension name="VK_KHR_extension_297" number="297" author="KHR" contact="Corentin Wallez @Kangz" supported="disabled">
- <require>
- <enum value="0" name="VK_KHR_EXTENSION_297_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_extension_297&quot;" name="VK_KHR_EXTENSION_297_EXTENSION_NAME"/>
- <enum bitpos="3" extends="VkPipelineShaderStageCreateFlagBits" name="VK_PIPELINE_SHADER_STAGE_CREATE_RESERVED_3_BIT_KHR"/>
- </require>
- </extension>
- <extension name="VK_EXT_pipeline_creation_cache_control" number="298" type="device" author="AMD" contact="Gregory Grebe @grgrebe_amd" supported="vulkan">
- <require>
- <enum value="3" name="VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_pipeline_creation_cache_control&quot;"
- name="VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType"
- name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT"/>
- <type name="VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT"/>
- <enum bitpos="8" extends="VkPipelineCreateFlagBits"
- name="VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT"/>
- <enum bitpos="9" extends="VkPipelineCreateFlagBits"
- name="VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT"/>
- <enum extends="VkResult" offset="0" name="VK_PIPELINE_COMPILE_REQUIRED_EXT"/>
- <enum extends="VkResult" name="VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT" alias="VK_PIPELINE_COMPILE_REQUIRED_EXT"/>
- <enum bitpos="0" extends="VkPipelineCacheCreateFlagBits"
- name="VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT"/>
- <type name="VkPipelineCacheCreateFlagBits" comment="This is a temporary workaround for processors not recognizing that VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT above also requires this type"/>
- </require>
- </extension>
- <extension name="VK_KHR_extension_299" number="299" author="KHR" contact="Mark Bellamy @mark.bellamy_arm" supported="disabled">
- <require>
- <enum value="0" name="VK_KHR_EXTENSION_299_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_extension_299&quot;" name="VK_KHR_EXTENSION_299_EXTENSION_NAME"/>
- <enum bitpos="2" extends="VkMemoryHeapFlagBits" name="VK_MEMORY_HEAP_RESERVED_2_BIT_KHR"/>
- <enum extends="VkPipelineCacheCreateFlagBits" name="VK_PIPELINE_CACHE_CREATE_RESERVED_1_BIT_KHR" alias="VK_PIPELINE_CACHE_CREATE_RESERVED_1_BIT_EXT"/>
- <enum bitpos="2" extends="VkPipelineCacheCreateFlagBits" name="VK_PIPELINE_CACHE_CREATE_RESERVED_2_BIT_KHR"/>
- </require>
- </extension>
- <extension name="VK_KHR_video_encode_queue" number="300" type="device" requires="VK_KHR_video_queue,VK_KHR_synchronization2" author="KHR" contact="ahmed.abdelkalek@amd.com" provisional="true" platform="provisional" supported="vulkan">
- <require>
- <enum value="3" name="VK_KHR_VIDEO_ENCODE_QUEUE_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_video_encode_queue&quot;" name="VK_KHR_VIDEO_ENCODE_QUEUE_EXTENSION_NAME"/>
- <enum bitpos="27" extends="VkPipelineStageFlagBits2KHR" name="VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR" protect="VK_ENABLE_BETA_EXTENSIONS" />
- <enum bitpos="37" extends="VkAccessFlagBits2KHR" name="VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR" protect="VK_ENABLE_BETA_EXTENSIONS" />
- <enum bitpos="38" extends="VkAccessFlagBits2KHR" name="VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_INFO_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_INFO_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum bitpos="6" extends="VkQueueFlagBits" name="VK_QUEUE_VIDEO_ENCODE_BIT_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum bitpos="15" extends="VkBufferUsageFlagBits" name="VK_BUFFER_USAGE_VIDEO_ENCODE_DST_BIT_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum bitpos="16" extends="VkBufferUsageFlagBits" name="VK_BUFFER_USAGE_VIDEO_ENCODE_SRC_BIT_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum bitpos="13" extends="VkImageUsageFlagBits" name="VK_IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum bitpos="14" extends="VkImageUsageFlagBits" name="VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum bitpos="15" extends="VkImageUsageFlagBits" name="VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum bitpos="27" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum bitpos="28" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum offset="0" extends="VkImageLayout" name="VK_IMAGE_LAYOUT_VIDEO_ENCODE_DST_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum offset="1" extends="VkImageLayout" name="VK_IMAGE_LAYOUT_VIDEO_ENCODE_SRC_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum offset="2" extends="VkImageLayout" name="VK_IMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum offset="0" extends="VkQueryType" name="VK_QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
-
- <type name="VkVideoEncodeFlagBitsKHR"/>
- <type name="VkVideoEncodeFlagsKHR"/>
- <type name="VkVideoEncodeInfoKHR"/>
-
- <type name="VkVideoEncodeRateControlFlagBitsKHR"/>
- <type name="VkVideoEncodeRateControlFlagsKHR"/>
- <type name="VkVideoEncodeRateControlModeFlagBitsKHR"/>
- <type name="VkVideoEncodeRateControlModeFlagsKHR"/>
-
- <type name="VkVideoEncodeRateControlInfoKHR"/>
- <command name="vkCmdEncodeVideoKHR"/>
- </require>
- <require extension="VK_KHR_format_feature_flags2">
- <enum bitpos="27" extends="VkFormatFeatureFlagBits2KHR" name="VK_FORMAT_FEATURE_2_VIDEO_ENCODE_INPUT_BIT_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- <enum bitpos="28" extends="VkFormatFeatureFlagBits2KHR" name="VK_FORMAT_FEATURE_2_VIDEO_ENCODE_DPB_BIT_KHR" protect="VK_ENABLE_BETA_EXTENSIONS"/>
- </require>
- </extension>
- <extension name="VK_NV_device_diagnostics_config" number="301" type="device" requires="VK_KHR_get_physical_device_properties2" author="NV" contact="Kedarnath Thangudu @kthangudu" supported="vulkan">
- <require>
- <enum value="1" name="VK_NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_device_diagnostics_config&quot;" name="VK_NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV"/>
- <type name="VkPhysicalDeviceDiagnosticsConfigFeaturesNV"/>
- <type name="VkDeviceDiagnosticsConfigCreateInfoNV"/>
- <type name="VkDeviceDiagnosticsConfigFlagsNV"/>
- <type name="VkDeviceDiagnosticsConfigFlagBitsNV"/>
- </require>
- </extension>
- <extension name="VK_QCOM_render_pass_store_ops" number="302" type="device" author="QCOM" contact="Bill Licea-Kane @wwlk" supported="vulkan">
- <require>
- <enum value="2" name="VK_QCOM_RENDER_PASS_STORE_OPS_SPEC_VERSION"/>
- <enum value="&quot;VK_QCOM_render_pass_store_ops&quot;" name="VK_QCOM_RENDER_PASS_STORE_OPS_EXTENSION_NAME"/>
- <enum extends="VkAttachmentStoreOp" name="VK_ATTACHMENT_STORE_OP_NONE_QCOM" alias="VK_ATTACHMENT_STORE_OP_NONE_KHR"/>
- </require>
- </extension>
- <extension name="VK_QCOM_extension_303" number="303" author="QCOM" contact="Bill Licea-Kane @wwlk" supported="disabled">
- <require>
- <enum value="0" name="VK_QCOM_EXTENSION_303_SPEC_VERSION"/>
- <enum value="&quot;VK_QCOM_extension_303&quot;" name="VK_QCOM_EXTENSION_303_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_QCOM_extension_304" number="304" author="QCOM" contact="Bill Licea-Kane @wwlk" supported="disabled">
- <require>
- <enum value="0" name="VK_QCOM_EXTENSION_304_SPEC_VERSION"/>
- <enum value="&quot;VK_QCOM_extension_304&quot;" name="VK_QCOM_EXTENSION_304_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_QCOM_extension_305" number="305" author="QCOM" contact="Bill Licea-Kane @wwlk" supported="disabled">
- <require>
- <enum value="0" name="VK_QCOM_EXTENSION_305_SPEC_VERSION"/>
- <enum value="&quot;VK_QCOM_extension_305&quot;" name="VK_QCOM_EXTENSION_305_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_QCOM_extension_306" number="306" author="QCOM" contact="Bill Licea-Kane @wwlk" supported="disabled">
- <require>
- <enum value="0" name="VK_QCOM_EXTENSION_306_SPEC_VERSION"/>
- <enum value="&quot;VK_QCOM_extension_306&quot;" name="VK_QCOM_EXTENSION_306_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_QCOM_extension_307" number="307" author="QCOM" contact="Bill Licea-Kane @wwlk" supported="disabled">
- <require>
- <enum value="0" name="VK_QCOM_EXTENSION_307_SPEC_VERSION"/>
- <enum value="&quot;VK_QCOM_extension_307&quot;" name="VK_QCOM_EXTENSION_307_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_NV_extension_308" number="308" type="device" author="NV" contact="Tristan Lorach @tlorach" supported="disabled">
- <require>
- <enum value="0" name="VK_NV_EXTENSION_308_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_extension_308&quot;" name="VK_NV_EXTENSION_308_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_KHR_extension_309" number="309" author="KHR" contact="Aidan Fabius @afabius" supported="disabled">
- <require>
- <enum value="0" name="VK_KHR_EXTENSION_309_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_extension_309&quot;" name="VK_KHR_EXTENSION_309_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_QCOM_extension_310" number="310" author="QCOM" contact="Jeff Leger @jackohound" supported="disabled">
- <require>
- <enum value="0" name="VK_QCOM_EXTENSION_310_SPEC_VERSION"/>
- <enum value="&quot;VK_QCOM_extension_310&quot;" name="VK_QCOM_EXTENSION_310_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_RESERVED_QCOM"/>
- </require>
- </extension>
- <extension name="VK_NV_extension_311" number="311" author="NV" contact="Charles Hansen @cshansen" supported="disabled">
- <require>
- <enum value="0" name="VK_NV_EXTENSION_311_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_extension_311&quot;" name="VK_NV_EXTENSION_311_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_EXT_extension_312" number="312" author="MVK" contact="Bill Hollings @billhollings" supported="disabled">
- <require>
- <enum value="0" name="VK_EXT_EXTENSION_312_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_extension_312&quot;" name="VK_EXT_EXTENSION_312_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_EXT_extension_313" number="313" author="MVK" contact="Bill Hollings @billhollings" supported="disabled">
- <require>
- <enum value="0" name="VK_EXT_EXTENSION_313_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_extension_313&quot;" name="VK_EXT_EXTENSION_313_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_AMD_extension_314" number="314" author="AMD" contact="Martin Dinkov @mdinkov" supported="disabled">
- <require>
- <enum value="0" name="VK_AMD_EXTENSION_314_SPEC_VERSION"/>
- <enum value="&quot;VK_AMD_extension_314&quot;" name="VK_AMD_EXTENSION_314_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_KHR_synchronization2" number="315" type="device" author="KHR" requires="VK_KHR_get_physical_device_properties2" contact="Tobias Hector @tobski" supported="vulkan">
- <require>
- <enum value="1" name="VK_KHR_SYNCHRONIZATION_2_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_synchronization2&quot;" name="VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_MEMORY_BARRIER_2_KHR"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2_KHR"/>
- <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2_KHR"/>
- <enum offset="3" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEPENDENCY_INFO_KHR"/>
- <enum offset="4" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SUBMIT_INFO_2_KHR"/>
- <enum offset="5" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO_KHR"/>
- <enum offset="6" extends="VkStructureType" name="VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO_KHR"/>
- <enum offset="7" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR"/>
- <enum bitpos="0" extends="VkEventCreateFlagBits" name="VK_EVENT_CREATE_DEVICE_ONLY_BIT_KHR"/>
- <enum offset="0" extends="VkImageLayout" name="VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR"/>
- <enum offset="1" extends="VkImageLayout" name="VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR"/>
- <enum value="0" extends="VkPipelineStageFlagBits" name="VK_PIPELINE_STAGE_NONE_KHR"/>
- <enum value="0" extends="VkAccessFlagBits" name="VK_ACCESS_NONE_KHR"/>
- <type name="VkFlags64"/>
- <type name="VkPipelineStageFlags2KHR"/>
- <type name="VkPipelineStageFlagBits2KHR"/>
- <type name="VkAccessFlags2KHR"/>
- <type name="VkAccessFlagBits2KHR"/>
- <type name="VkMemoryBarrier2KHR"/>
- <type name="VkBufferMemoryBarrier2KHR"/>
- <type name="VkImageMemoryBarrier2KHR"/>
- <type name="VkDependencyInfoKHR"/>
- <type name="VkSubmitInfo2KHR"/>
- <type name="VkSemaphoreSubmitInfoKHR"/>
- <type name="VkCommandBufferSubmitInfoKHR"/>
- <type name="VkSubmitFlagBitsKHR"/>
- <type name="VkSubmitFlagsKHR"/>
- <type name="VkPhysicalDeviceSynchronization2FeaturesKHR"/>
- <command name="vkCmdSetEvent2KHR"/>
- <command name="vkCmdResetEvent2KHR"/>
- <command name="vkCmdWaitEvents2KHR"/>
- <command name="vkCmdPipelineBarrier2KHR"/>
- <command name="vkCmdWriteTimestamp2KHR"/>
- <command name="vkQueueSubmit2KHR"/>
- </require>
- <require extension="VK_EXT_transform_feedback">
- <enum bitpos="24" extends="VkPipelineStageFlagBits2KHR" name="VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT"/>
- <enum bitpos="25" extends="VkAccessFlagBits2KHR" name="VK_ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT"/>
- <enum bitpos="26" extends="VkAccessFlagBits2KHR" name="VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT"/>
- <enum bitpos="27" extends="VkAccessFlagBits2KHR" name="VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT"/>
- </require>
- <require extension="VK_EXT_conditional_rendering">
- <enum bitpos="18" extends="VkPipelineStageFlagBits2KHR" name="VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT" comment="A pipeline stage for conditional rendering predicate fetch"/>
- <enum bitpos="20" extends="VkAccessFlagBits2KHR" name="VK_ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT" comment="read access flag for reading conditional rendering predicate"/>
- </require>
- <require extension="VK_NV_device_generated_commands">
- <enum bitpos="17" extends="VkPipelineStageFlagBits2KHR" name="VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV"/>
- <enum bitpos="17" extends="VkAccessFlagBits2KHR" name="VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV"/>
- <enum bitpos="18" extends="VkAccessFlagBits2KHR" name="VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV"/>
- </require>
- <require extension="VK_KHR_fragment_shading_rate">
- <enum bitpos="22" extends="VkPipelineStageFlagBits2KHR" name="VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"/>
- <enum bitpos="23" extends="VkAccessFlagBits2KHR" name="VK_ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR"/>
- </require>
- <require extension="VK_NV_shading_rate_image">
- <enum extends="VkPipelineStageFlagBits2KHR" name="VK_PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV" alias="VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"/>
- <enum extends="VkAccessFlagBits2KHR" name="VK_ACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV" alias="VK_ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR"/>
- </require>
- <require extension="VK_KHR_acceleration_structure">
- <enum bitpos="25" extends="VkPipelineStageFlagBits2KHR" name="VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR"/>
- <enum bitpos="21" extends="VkAccessFlagBits2KHR" name="VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR"/>
- <enum bitpos="22" extends="VkAccessFlagBits2KHR" name="VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR"/>
- </require>
- <require extension="VK_KHR_ray_tracing_pipeline">
- <enum bitpos="21" extends="VkPipelineStageFlagBits2KHR" name="VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR"/>
- </require>
- <require extension="VK_NV_ray_tracing">
- <enum extends="VkPipelineStageFlagBits2KHR" name="VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_NV" alias="VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR"/>
- <enum extends="VkPipelineStageFlagBits2KHR" name="VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_NV" alias="VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR"/>
- <enum extends="VkAccessFlagBits2KHR" name="VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_NV" alias="VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR"/>
- <enum extends="VkAccessFlagBits2KHR" name="VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_NV" alias="VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR"/>
- </require>
- <require extension="VK_EXT_fragment_density_map">
- <enum bitpos="23" extends="VkPipelineStageFlagBits2KHR" name="VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT"/>
- <enum bitpos="24" extends="VkAccessFlagBits2KHR" name="VK_ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT"/>
- </require>
- <require extension="VK_EXT_blend_operation_advanced">
- <enum bitpos="19" extends="VkAccessFlagBits2KHR" name="VK_ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT"/>
- </require>
- <require extension="VK_NV_mesh_shader">
- <enum bitpos="19" extends="VkPipelineStageFlagBits2KHR" name="VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV"/>
- <enum bitpos="20" extends="VkPipelineStageFlagBits2KHR" name="VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV"/>
- </require>
- <require extension="VK_AMD_buffer_marker">
- <command name="vkCmdWriteBufferMarker2AMD"/>
- </require>
- <require extension="VK_NV_device_diagnostic_checkpoints">
- <type name="VkQueueFamilyCheckpointProperties2NV"/>
- <type name="VkCheckpointData2NV"/>
- <command name="vkGetQueueCheckpointData2NV"/>
- <enum offset="8" extends="VkStructureType" name="VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV"/>
- <enum offset="9" extends="VkStructureType" name="VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV"/>
- </require>
- </extension>
- <extension name="VK_AMD_extension_316" number="316" author="AMD" contact="Martin Dinkov @mdinkov" supported="disabled">
- <require>
- <enum value="0" name="VK_AMD_EXTENSION_316_SPEC_VERSION"/>
- <enum value="&quot;VK_AMD_extension_316&quot;" name="VK_AMD_EXTENSION_316_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_AMD_extension_317" number="317" author="AMD" contact="Martin Dinkov @mdinkov" supported="disabled">
- <require>
- <enum value="0" name="VK_AMD_EXTENSION_317_SPEC_VERSION"/>
- <enum value="&quot;VK_AMD_extension_317&quot;" name="VK_AMD_EXTENSION_317_EXTENSION_NAME"/>
- <enum bitpos="4" extends="VkDescriptorSetLayoutCreateFlagBits" name="VK_DESCRIPTOR_SET_LAYOUT_CREATE_RESERVED_4_BIT_AMD"/>
- <enum bitpos="21" extends="VkBufferUsageFlagBits" name="VK_BUFFER_USAGE_RESERVED_21_BIT_AMD"/>
- <enum bitpos="22" extends="VkBufferUsageFlagBits" name="VK_BUFFER_USAGE_RESERVED_22_BIT_AMD"/>
- <enum bitpos="5" extends="VkBufferCreateFlagBits" name="VK_BUFFER_CREATE_RESERVED_5_BIT_AMD"/>
- <enum bitpos="16" extends="VkImageCreateFlagBits" name="VK_IMAGE_CREATE_RESERVED_16_BIT_AMD"/>
- <enum bitpos="3" extends="VkSamplerCreateFlagBits" name="VK_SAMPLER_CREATE_RESERVED_3_BIT_AMD"/>
- </require>
- </extension>
- <extension name="VK_AMD_extension_318" number="318" author="AMD" contact="Martin Dinkov @mdinkov" supported="disabled">
- <require>
- <enum value="0" name="VK_AMD_EXTENSION_318_SPEC_VERSION"/>
- <enum value="&quot;VK_AMD_extension_318&quot;" name="VK_AMD_EXTENSION_318_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_AMD_extension_319" number="319" author="AMD" contact="Martin Dinkov @mdinkov" supported="disabled">
- <require>
- <enum value="0" name="VK_AMD_EXTENSION_319_SPEC_VERSION"/>
- <enum value="&quot;VK_AMD_extension_319&quot;" name="VK_AMD_EXTENSION_319_EXTENSION_NAME"/>
- <enum bitpos="3" extends="VkDescriptorSetLayoutCreateFlagBits" name="VK_DESCRIPTOR_SET_LAYOUT_CREATE_RESERVED_3_BIT_AMD"/>
- <enum bitpos="0" extends="VkPipelineLayoutCreateFlagBits" name="VK_PIPELINE_LAYOUT_CREATE_RESERVED_0_BIT_AMD"/>
- </require>
- </extension>
- <extension name="VK_AMD_extension_320" number="320" author="AMD" contact="Martin Dinkov @mdinkov" supported="disabled">
- <require>
- <enum value="0" name="VK_AMD_EXTENSION_320_SPEC_VERSION"/>
- <enum value="&quot;VK_AMD_extension_320&quot;" name="VK_AMD_EXTENSION_320_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_AMD_extension_321" number="321" author="AMD" contact="Martin Dinkov @mdinkov" supported="disabled">
- <require>
- <enum value="0" name="VK_AMD_EXTENSION_321_SPEC_VERSION"/>
- <enum value="&quot;VK_AMD_extension_321&quot;" name="VK_AMD_EXTENSION_321_EXTENSION_NAME"/>
- <enum bitpos="23" extends="VkPipelineCreateFlagBits" name="VK_PIPELINE_CREATE_RESERVED_23_BIT_AMD"/>
- <enum bitpos="10" extends="VkPipelineCreateFlagBits" name="VK_PIPELINE_CREATE_RESERVED_10_BIT_AMD"/>
- <enum bitpos="1" extends="VkPipelineLayoutCreateFlagBits" name="VK_PIPELINE_LAYOUT_CREATE_RESERVED_1_BIT_AMD"/>
- </require>
- </extension>
- <extension name="VK_AMD_extension_322" number="322" author="AMD" contact="Martin Dinkov @mdinkov" supported="disabled">
- <require>
- <enum value="0" name="VK_AMD_EXTENSION_322_SPEC_VERSION"/>
- <enum value="&quot;VK_AMD_extension_322&quot;" name="VK_AMD_EXTENSION_322_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_AMD_extension_323" number="323" author="AMD" contact="Martin Dinkov @mdinkov" supported="disabled">
- <require>
- <enum value="0" name="VK_AMD_EXTENSION_323_SPEC_VERSION"/>
- <enum value="&quot;VK_AMD_extension_323&quot;" name="VK_AMD_EXTENSION_323_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_KHR_shader_subgroup_uniform_control_flow" number="324" type="device" requiresCore="1.1" author="KHR" contact="Alan Baker @alan-baker" supported="vulkan">
- <require>
- <enum value="1" name="VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_shader_subgroup_uniform_control_flow&quot;" name="VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR"/>
- <type name="VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR"/>
- </require>
- </extension>
- <extension name="VK_KHR_extension_325" number="325" author="KHR" contact="Ralph Potter gitlab:@r_potter" supported="disabled">
- <require>
- <enum value="0" name="VK_KHR_EXTENSION_325_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_extension_325&quot;" name="VK_KHR_EXTENSION_325_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_KHR_zero_initialize_workgroup_memory" number="326" type="device" requires="VK_KHR_get_physical_device_properties2" author="KHR" contact="Alan Baker @alan-baker" supported="vulkan">
- <require>
- <enum value="1" name="VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_zero_initialize_workgroup_memory&quot;" name="VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES_KHR"/>
- <type name="VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR"/>
- </require>
- </extension>
- <extension name="VK_NV_fragment_shading_rate_enums" number="327" type="device" requires="VK_KHR_fragment_shading_rate" author="NV" contact="Pat Brown @nvpbrown" supported="vulkan">
- <require>
- <enum value="1" name="VK_NV_FRAGMENT_SHADING_RATE_ENUMS_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_fragment_shading_rate_enums&quot;" name="VK_NV_FRAGMENT_SHADING_RATE_ENUMS_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV"/>
- <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV"/>
- <type name="VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV"/>
- <type name="VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV"/>
- <type name="VkPipelineFragmentShadingRateEnumStateCreateInfoNV"/>
- <type name="VkFragmentShadingRateNV"/>
- <type name="VkFragmentShadingRateTypeNV"/>
- <command name="vkCmdSetFragmentShadingRateEnumNV"/>
- </require>
- </extension>
- <extension name="VK_NV_ray_tracing_motion_blur" number="328" type="device" requires="VK_KHR_ray_tracing_pipeline" author="NV" contact="Eric Werness" supported="vulkan">
- <require>
- <enum value="1" name="VK_NV_RAY_TRACING_MOTION_BLUR_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_ray_tracing_motion_blur&quot;" name="VK_NV_RAY_TRACING_MOTION_BLUR_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV"/>
- <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_NV"/>
- <enum bitpos="5" extends="VkBuildAccelerationStructureFlagBitsKHR" name="VK_BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV"/>
- <enum bitpos="2" extends="VkAccelerationStructureCreateFlagBitsKHR" name="VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV"/>
- <enum bitpos="20" extends="VkPipelineCreateFlagBits" name="VK_PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV"/>
- <type name="VkAccelerationStructureGeometryMotionTrianglesDataNV"/>
- <type name="VkAccelerationStructureMotionInfoNV"/>
- <type name="VkAccelerationStructureMotionInstanceNV"/>
- <type name="VkAccelerationStructureMotionInstanceDataNV"/>
- <type name="VkAccelerationStructureMatrixMotionInstanceNV"/>
- <type name="VkAccelerationStructureSRTMotionInstanceNV"/>
- <type name="VkSRTDataNV"/>
- <type name="VkAccelerationStructureMotionInstanceTypeNV"/>
- <type name="VkPhysicalDeviceRayTracingMotionBlurFeaturesNV"/>
- <type name="VkAccelerationStructureMotionInfoFlagsNV"/>
- <type name="VkAccelerationStructureMotionInstanceFlagsNV"/>
- </require>
- </extension>
- <extension name="VK_NV_extension_329" number="329" author="NV" contact="Pat Brown @nvpbrown" supported="disabled">
- <require>
- <enum value="0" name="VK_NV_EXTENSION_329_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_extension_329&quot;" name="VK_NV_EXTENSION_329_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_NV_extension_330" number="330" author="NV" contact="Liam Middlebrook @liam-middlebrook" supported="disabled">
- <require>
- <enum value="0" name="VK_NV_EXTENSION_330_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_extension_330&quot;" name="VK_NV_EXTENSION_330_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_EXT_ycbcr_2plane_444_formats" number="331" type="device" requires="VK_KHR_sampler_ycbcr_conversion" author="EXT" contact="Tony Zlatinski @tzlatinski" supported="vulkan">
- <require>
- <enum value="1" name="VK_EXT_YCBCR_2PLANE_444_FORMATS_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_ycbcr_2plane_444_formats&quot;" name="VK_EXT_YCBCR_2PLANE_444_FORMATS_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT"/>
- <enum offset="0" extends="VkFormat" name="VK_FORMAT_G8_B8R8_2PLANE_444_UNORM_EXT"/>
- <enum offset="1" extends="VkFormat" name="VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT"/>
- <enum offset="2" extends="VkFormat" name="VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT"/>
- <enum offset="3" extends="VkFormat" name="VK_FORMAT_G16_B16R16_2PLANE_444_UNORM_EXT"/>
- <type name="VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT"/>
- </require>
- </extension>
- <extension name="VK_NV_extension_332" number="332" author="NV" contact="Tony Zlatinski @tzlatinski" supported="disabled">
- <require>
- <enum value="0" name="VK_NV_EXTENSION_332_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_extension_332&quot;" name="VK_NV_EXTENSION_332_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_EXT_fragment_density_map2" number="333" type="device" requires="VK_EXT_fragment_density_map" author="EXT" contact="Matthew Netsch @mnetsch" supported="vulkan">
- <require>
- <enum value="1" name="VK_EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_fragment_density_map2&quot;" name="VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT"/>
- <enum bitpos="1" extends="VkImageViewCreateFlagBits" name="VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT"/>
- <type name="VkPhysicalDeviceFragmentDensityMap2FeaturesEXT"/>
- <type name="VkPhysicalDeviceFragmentDensityMap2PropertiesEXT"/>
- </require>
- </extension>
- <extension name="VK_QCOM_rotated_copy_commands" number="334" type="device" requires="VK_KHR_swapchain,VK_KHR_copy_commands2" author="QCOM" contact="Jeff Leger @jackohound" supported="vulkan">
- <require>
- <enum value="1" name="VK_QCOM_ROTATED_COPY_COMMANDS_SPEC_VERSION"/>
- <enum value="&quot;VK_QCOM_rotated_copy_commands&quot;" name="VK_QCOM_ROTATED_COPY_COMMANDS_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM"/>
- <type name="VkCopyCommandTransformInfoQCOM"/>
- </require>
- </extension>
- <extension name="VK_KHR_extension_335" number="335" author="KHR" contact="Mark Bellamy @mark.bellamy_arm" supported="disabled">
- <require>
- <enum value="0" name="VK_KHR_EXTENSION_335_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_extension_335&quot;" name="VK_KHR_EXTENSION_335_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_EXT_image_robustness" number="336" type="device" author="EXT" contact="Graeme Leese @gnl21" supported="vulkan" requires="VK_KHR_get_physical_device_properties2">
- <require>
- <enum value="1" name="VK_EXT_IMAGE_ROBUSTNESS_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_image_robustness&quot;" name="VK_EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT"/>
- <type name="VkPhysicalDeviceImageRobustnessFeaturesEXT"/>
- </require>
- </extension>
- <extension name="VK_KHR_workgroup_memory_explicit_layout" number="337" type="device" requires="VK_KHR_get_physical_device_properties2" author="KHR" contact="Caio Marcelo de Oliveira Filho @cmarcelo" supported="vulkan">
- <require>
- <enum value="1" name="VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_workgroup_memory_explicit_layout&quot;" name="VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR"/>
- <type name="VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR"/>
- </require>
- </extension>
- <extension name="VK_KHR_copy_commands2" number="338" author="KHR" type="device" contact="Jeff Leger @jackohound" supported="vulkan">
- <require>
- <enum value="1" name="VK_KHR_COPY_COMMANDS_2_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_copy_commands2&quot;" name="VK_KHR_COPY_COMMANDS_2_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR"/>
- <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR"/>
- <enum offset="3" extends="VkStructureType" name="VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR"/>
- <enum offset="4" extends="VkStructureType" name="VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR"/>
- <enum offset="5" extends="VkStructureType" name="VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR"/>
- <enum offset="6" extends="VkStructureType" name="VK_STRUCTURE_TYPE_BUFFER_COPY_2_KHR"/>
- <enum offset="7" extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMAGE_COPY_2_KHR"/>
- <enum offset="8" extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMAGE_BLIT_2_KHR"/>
- <enum offset="9" extends="VkStructureType" name="VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR"/>
- <enum offset="10" extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR"/>
- <type name="VkCopyBufferInfo2KHR"/>
- <type name="VkCopyImageInfo2KHR"/>
- <type name="VkCopyBufferToImageInfo2KHR"/>
- <type name="VkCopyImageToBufferInfo2KHR"/>
- <type name="VkBlitImageInfo2KHR"/>
- <type name="VkResolveImageInfo2KHR"/>
- <type name="VkBufferCopy2KHR"/>
- <type name="VkImageCopy2KHR"/>
- <type name="VkImageBlit2KHR"/>
- <type name="VkBufferImageCopy2KHR"/>
- <type name="VkImageResolve2KHR"/>
- <command name="vkCmdCopyBuffer2KHR"/>
- <command name="vkCmdCopyImage2KHR"/>
- <command name="vkCmdCopyBufferToImage2KHR"/>
- <command name="vkCmdCopyImageToBuffer2KHR"/>
- <command name="vkCmdBlitImage2KHR"/>
- <command name="vkCmdResolveImage2KHR"/>
- </require>
- </extension>
- <extension name="VK_ARM_extension_339" number="339" author="ARM" contact="Jan-Harald Fredriksen @janharaldfredriksen-arm" supported="disabled">
- <require>
- <enum value="0" name="VK_ARM_EXTENSION_339_SPEC_VERSION"/>
- <enum value="&quot;VK_ARM_extension_339&quot;" name="VK_ARM_EXTENSION_339_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_EXT_extension_340" number="340" author="EXT" contact="Joshua Ashton @Joshua-Ashton" supported="disabled">
- <require>
- <enum value="0" name="VK_EXT_EXTENSION_340_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_extension_340&quot;" name="VK_EXT_EXTENSION_340_EXTENSION_NAME"/>
- <enum bitpos="19" extends="VkImageUsageFlagBits" name="VK_IMAGE_USAGE_RESERVED_19_BIT_EXT"/>
- </require>
- </extension>
- <extension name="VK_EXT_4444_formats" number="341" type="device" requires="VK_KHR_get_physical_device_properties2" author="EXT" contact="Joshua Ashton @Joshua-Ashton" supported="vulkan">
- <require>
- <enum value="1" name="VK_EXT_4444_FORMATS_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_4444_formats&quot;" name="VK_EXT_4444_FORMATS_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT"/>
- <enum offset="0" extends="VkFormat" name="VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT"/>
- <enum offset="1" extends="VkFormat" name="VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT"/>
- <type name="VkPhysicalDevice4444FormatsFeaturesEXT"/>
- </require>
- </extension>
- <extension name="VK_EXT_extension_342" number="342" author="EXT" contact="Ralph Potter gitlab:@r_potter" supported="disabled">
- <require>
- <enum value="0" name="VK_EXT_EXTENSION_342_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_extension_342&quot;" name="VK_EXT_EXTENSION_342_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_ARM_extension_343" number="343" author="ARM" contact="Jan-Harald Fredriksen @janharaldfredriksen-arm" supported="disabled">
- <require>
- <enum value="0" name="VK_ARM_EXTENSION_343_SPEC_VERSION"/>
- <enum value="&quot;VK_ARM_extension_343&quot;" name="VK_ARM_EXTENSION_343_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_ARM_extension_344" number="344" author="ARM" contact="Jan-Harald Fredriksen @janharaldfredriksen-arm" supported="disabled">
- <require>
- <enum value="0" name="VK_ARM_EXTENSION_344_SPEC_VERSION"/>
- <enum value="&quot;VK_ARM_extension_344&quot;" name="VK_ARM_EXTENSION_344_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_EXT_rgba10x6_formats" number="345" type="device" requires="VK_KHR_sampler_ycbcr_conversion" author="EXT" contact="Jan-Harald Fredriksen @janharaldfredriksen-arm" supported="vulkan">
- <require>
- <enum value="1" name="VK_EXT_RGBA10X6_FORMATS_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_rgba10x6_formats&quot;" name="VK_EXT_RGBA10X6_FORMATS_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT"/>
- <type name="VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT"/>
- </require>
- </extension>
- <extension name="VK_NV_acquire_winrt_display" number="346" type="device" requires="VK_EXT_direct_mode_display" author="NV" contact="Jeff Juliano @jjuliano" platform="win32" supported="vulkan">
- <require>
- <enum value="1" name="VK_NV_ACQUIRE_WINRT_DISPLAY_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_acquire_winrt_display&quot;" name="VK_NV_ACQUIRE_WINRT_DISPLAY_EXTENSION_NAME"/>
- <command name="vkAcquireWinrtDisplayNV"/>
- <command name="vkGetWinrtDisplayNV"/>
- </require>
- </extension>
- <extension name="VK_EXT_directfb_surface" number="347" type="instance" requires="VK_KHR_surface" platform="directfb" supported="vulkan" author="EXT" contact="Nicolas Caramelli @caramelli">
- <require>
- <enum value="1" name="VK_EXT_DIRECTFB_SURFACE_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_directfb_surface&quot;" name="VK_EXT_DIRECTFB_SURFACE_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT"/>
- <type name="VkDirectFBSurfaceCreateFlagsEXT"/>
- <type name="VkDirectFBSurfaceCreateInfoEXT"/>
- <command name="vkCreateDirectFBSurfaceEXT"/>
- <command name="vkGetPhysicalDeviceDirectFBPresentationSupportEXT"/>
- </require>
- </extension>
- <extension name="VK_KHR_extension_350" number="350" author="KHR" contact="Mark Bellamy @mark.bellamy_arm" supported="disabled">
- <require>
- <enum value="0" name="VK_KHR_EXTENSION_350_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_extension_350&quot;" name="VK_KHR_EXTENSION_350_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_NV_extension_351" number="351" author="NV" contact="Liam Middlebrook @liam-middlebrook" supported="disabled">
- <require>
- <enum value="0" name="VK_NV_EXTENSION_351_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_extension_351&quot;" name="VK_NV_EXTENSION_351_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_VALVE_mutable_descriptor_type" number="352" type="device" supported="vulkan" author="VALVE" contact="Joshua Ashton @Joshua-Ashton,Hans-Kristian Arntzen @HansKristian-Work" specialuse="d3demulation" requires="VK_KHR_maintenance3">
- <require>
- <enum value="1" name="VK_VALVE_MUTABLE_DESCRIPTOR_TYPE_SPEC_VERSION"/>
- <enum value="&quot;VK_VALVE_mutable_descriptor_type&quot;" name="VK_VALVE_MUTABLE_DESCRIPTOR_TYPE_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE"/>
- <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE"/>
- <enum offset="0" extends="VkDescriptorType" name="VK_DESCRIPTOR_TYPE_MUTABLE_VALVE"/>
- <enum bitpos="2" extends="VkDescriptorPoolCreateFlagBits" name="VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_VALVE"/>
- <enum bitpos="2" extends="VkDescriptorSetLayoutCreateFlagBits" name="VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_VALVE"/>
- <type name="VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE"/>
- <type name="VkMutableDescriptorTypeListVALVE"/>
- <type name="VkMutableDescriptorTypeCreateInfoVALVE"/>
- </require>
- </extension>
- <extension name="VK_EXT_vertex_input_dynamic_state" number="353" type="device" requires="VK_KHR_get_physical_device_properties2" author="EXT" contact="Piers Daniell @pdaniell-nv" supported="vulkan">
- <require>
- <enum value="2" name="VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_vertex_input_dynamic_state&quot;" name="VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT"/>
- <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT"/>
- <enum offset="0" extends="VkDynamicState" name="VK_DYNAMIC_STATE_VERTEX_INPUT_EXT"/>
- <type name="VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT"/>
- <type name="VkVertexInputBindingDescription2EXT"/>
- <type name="VkVertexInputAttributeDescription2EXT"/>
- <command name="vkCmdSetVertexInputEXT"/>
- </require>
- </extension>
- <extension name="VK_EXT_physical_device_drm" number="354" author="EXT" type="device" contact="Simon Ser @emersion" supported="vulkan" requires="VK_KHR_get_physical_device_properties2">
- <require>
- <enum value="1" name="VK_EXT_PHYSICAL_DEVICE_DRM_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_physical_device_drm&quot;" name="VK_EXT_PHYSICAL_DEVICE_DRM_EXTENSION_NAME"/>
-
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT"/>
-
- <type name="VkPhysicalDeviceDrmPropertiesEXT"/>
- </require>
- </extension>
- <extension name="VK_EXT_extension_355" number="355" author="EXT" contact="Ralph Potter gitlab:@r_potter" supported="disabled">
- <require>
- <enum value="0" name="VK_EXT_EXTENSION_355_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_extension_355&quot;" name="VK_EXT_EXTENSION_355_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_EXT_vertex_attribute_aliasing" number="356" type="device" author="EXT" contact="Shahbaz Youssefi @syoussefi" supported="disabled" specialuse="glemulation">
- <require>
- <enum value="0" name="VK_EXT_VERTEX_ATTRIBUTE_ALIASING_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_vertex_attribute_aliasing&quot;" name="VK_EXT_VERTEX_ATTRIBUTE_ALIASING_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_EXT_primitive_topology_list_restart" number="357" type="device" author="EXT" contact="Shahbaz Youssefi @syoussefi" supported="vulkan" specialuse="glemulation">
- <require>
- <enum value="1" name="VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_primitive_topology_list_restart&quot;" name="VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT"/>
- <type name="VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT"/>
- </require>
- </extension>
- <extension name="VK_KHR_extension_358" number="358" author="KHR" contact="Jeff Bolz @jeffbolznv" supported="disabled">
- <require>
- <enum value="0" name="VK_KHR_EXTENSION_358_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_extension_358&quot;" name="VK_KHR_EXTENSION_358_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_EXT_extension_359" number="359" author="EXT" contact="Bill Hollings @billhollings" supported="disabled" specialuse="glemulation">
- <require>
- <enum value="0" name="VK_EXT_EXTENSION_359_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_extension_359&quot;" name="VK_EXT_EXTENSION_359_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_EXT_extension_360" number="360" author="EXT" contact="Bill Hollings @billhollings" supported="disabled" specialuse="glemulation">
- <require>
- <enum value="0" name="VK_EXT_EXTENSION_360_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_extension_360&quot;" name="VK_EXT_EXTENSION_360_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_KHR_format_feature_flags2" number="361" author="KHR" type="device" requires="VK_KHR_get_physical_device_properties2" contact="Lionel Landwerlin @llandwerlin" supported="vulkan">
- <require>
- <enum value="1" name="VK_KHR_FORMAT_FEATURE_FLAGS_2_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_format_feature_flags2&quot;" name="VK_KHR_FORMAT_FEATURE_FLAGS_2_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3_KHR"/>
- <type name="VkFormatFeatureFlags2KHR"/>
- <type name="VkFormatFeatureFlagBits2KHR"/>
- <type name="VkFormatProperties3KHR"/>
- </require>
- </extension>
- <extension name="VK_EXT_extension_362" number="362" author="EXT" contact="Lionel Duc @nvlduc" supported="disabled">
- <require>
- <enum value="0" name="VK_EXT_EXTENSION_362_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_extension_362&quot;" name="VK_EXT_EXTENSION_362_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_EXT_extension_363" number="363" author="EXT" contact="Kaye Mason @chaleur" supported="disabled">
- <require>
- <enum value="0" name="VK_EXT_EXTENSION_363_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_extension_363&quot;" name="VK_EXT_EXTENSION_363_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_FUCHSIA_extension_364" number="364" author="FUCHSIA" contact="Craig Stout @cdotstout" supported="disabled">
- <require>
- <enum value="0" name="VK_FUCHSIA_EXTENSION_364_SPEC_VERSION"/>
- <enum value="&quot;VK_FUCHSIA_extension_364&quot;" name="VK_FUCHSIA_EXTENSION_364_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_FUCHSIA_external_memory" number="365" type="device" requires="VK_KHR_external_memory_capabilities,VK_KHR_external_memory" author="FUCHSIA" contact="John Rosasco @rosasco" platform="fuchsia" supported="vulkan">
- <require>
- <enum value="1" name="VK_FUCHSIA_EXTERNAL_MEMORY_SPEC_VERSION"/>
- <enum value="&quot;VK_FUCHSIA_external_memory&quot;" name="VK_FUCHSIA_EXTERNAL_MEMORY_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA"/>
- <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA"/>
- <enum bitpos="11" extends="VkExternalMemoryHandleTypeFlagBits" name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA"/>
- <type name="VkImportMemoryZirconHandleInfoFUCHSIA"/>
- <type name="VkMemoryZirconHandlePropertiesFUCHSIA"/>
- <type name="VkMemoryGetZirconHandleInfoFUCHSIA"/>
- <command name="vkGetMemoryZirconHandleFUCHSIA"/>
- <command name="vkGetMemoryZirconHandlePropertiesFUCHSIA"/>
- </require>
- </extension>
- <extension name="VK_FUCHSIA_external_semaphore" number="366" type="device" requires="VK_KHR_external_semaphore_capabilities,VK_KHR_external_semaphore" author="FUCHSIA" contact="John Rosasco @rosasco" platform="fuchsia" supported="vulkan">
- <require>
- <enum value="1" name="VK_FUCHSIA_EXTERNAL_SEMAPHORE_SPEC_VERSION"/>
- <enum value="&quot;VK_FUCHSIA_external_semaphore&quot;" name="VK_FUCHSIA_EXTERNAL_SEMAPHORE_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA"/>
- <enum bitpos="7" extends="VkExternalSemaphoreHandleTypeFlagBits" name="VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA"/>
- <type name="VkImportSemaphoreZirconHandleInfoFUCHSIA"/>
- <type name="VkSemaphoreGetZirconHandleInfoFUCHSIA"/>
- <command name="vkImportSemaphoreZirconHandleFUCHSIA"/>
- <command name="vkGetSemaphoreZirconHandleFUCHSIA"/>
- </require>
- </extension>
- <extension name="VK_FUCHSIA_buffer_collection" number="367" type="device" requires="VK_FUCHSIA_external_memory,VK_KHR_sampler_ycbcr_conversion" author="FUCHSIA" contact="John Rosasco @rosasco" supported="vulkan" platform="fuchsia">
- <require>
- <enum value="2" name="VK_FUCHSIA_BUFFER_COLLECTION_SPEC_VERSION"/>
- <enum value="&quot;VK_FUCHSIA_buffer_collection&quot;" name="VK_FUCHSIA_BUFFER_COLLECTION_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CREATE_INFO_FUCHSIA"/>
- <enum offset="0" extends="VkObjectType" name="VK_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA" comment="VkBufferCollectionFUCHSIA"/>
- <enum offset="0" extends="VkDebugReportObjectTypeEXT" name="VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA_EXT"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIA"/>
- <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_BUFFER_COLLECTION_IMAGE_CREATE_INFO_FUCHSIA"/>
- <enum offset="3" extends="VkStructureType" name="VK_STRUCTURE_TYPE_BUFFER_COLLECTION_PROPERTIES_FUCHSIA"/>
- <enum offset="4" extends="VkStructureType" name="VK_STRUCTURE_TYPE_BUFFER_CONSTRAINTS_INFO_FUCHSIA"/>
- <enum offset="5" extends="VkStructureType" name="VK_STRUCTURE_TYPE_BUFFER_COLLECTION_BUFFER_CREATE_INFO_FUCHSIA"/>
- <enum offset="6" extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMAGE_CONSTRAINTS_INFO_FUCHSIA"/>
- <enum offset="7" extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMAGE_FORMAT_CONSTRAINTS_INFO_FUCHSIA"/>
- <enum offset="8" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SYSMEM_COLOR_SPACE_FUCHSIA"/>
- <enum offset="9" extends="VkStructureType" name="VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CONSTRAINTS_INFO_FUCHSIA"/>
- <type name="VkBufferCollectionFUCHSIA"/>
- <type name="VkBufferCollectionCreateInfoFUCHSIA"/>
- <type name="VkImportMemoryBufferCollectionFUCHSIA"/>
- <type name="VkBufferCollectionImageCreateInfoFUCHSIA"/>
- <type name="VkBufferConstraintsInfoFUCHSIA"/>
- <type name="VkBufferCollectionBufferCreateInfoFUCHSIA"/>
- <type name="VkBufferCollectionPropertiesFUCHSIA"/>
- <type name="VkImageFormatConstraintsFlagsFUCHSIA" comment="Will add VkImageFormatConstraintsFlagBitsFUCHSIA when bits are defined in the future"/>
- <type name="VkSysmemColorSpaceFUCHSIA"/>
- <type name="VkImageConstraintsInfoFlagBitsFUCHSIA"/>
- <type name="VkImageConstraintsInfoFlagsFUCHSIA"/>
- <type name="VkImageConstraintsInfoFUCHSIA"/>
- <type name="VkImageFormatConstraintsInfoFUCHSIA"/>
- <type name="VkBufferCollectionConstraintsInfoFUCHSIA"/>
- <command name="vkCreateBufferCollectionFUCHSIA"/>
- <command name="vkSetBufferCollectionImageConstraintsFUCHSIA"/>
- <command name="vkSetBufferCollectionBufferConstraintsFUCHSIA"/>
- <command name="vkDestroyBufferCollectionFUCHSIA"/>
- <command name="vkGetBufferCollectionPropertiesFUCHSIA"/>
- </require>
- </extension>
- <extension name="VK_FUCHSIA_extension_368" number="368" author="FUCHSIA" contact="Craig Stout @cdotstout" supported="disabled">
- <require>
- <enum value="0" name="VK_FUCHSIA_EXTENSION_368_SPEC_VERSION"/>
- <enum value="&quot;VK_FUCHSIA_extension_368&quot;" name="VK_FUCHSIA_EXTENSION_368_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_QCOM_extension_369" number="369" author="QCOM" contact="Matthew Netsch @mnetsch" supported="disabled">
- <require>
- <enum value="0" name="VK_QCOM_EXTENSION_369_SPEC_VERSION"/>
- <enum value="&quot;VK_QCOM_extension_369&quot;" name="VK_QCOM_EXTENSION_369_EXTENSION_NAME"/>
- <enum bitpos="4" extends="VkDescriptorBindingFlagBits" name="VK_DESCRIPTOR_BINDING_RESERVED_4_BIT_QCOM"/>
- </require>
- </extension>
- <extension name="VK_HUAWEI_subpass_shading" number="370" type="device" author="HUAWEI" contact="Hueilong Wang @wyvernathuawei" requires="VK_KHR_create_renderpass2,VK_KHR_synchronization2" supported="vulkan">
- <require>
- <enum value="2" name="VK_HUAWEI_SUBPASS_SHADING_SPEC_VERSION"/>
- <enum value="&quot;VK_HUAWEI_subpass_shading&quot;" name="VK_HUAWEI_SUBPASS_SHADING_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI"/>
- <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI"/>
- <enum offset="3" extends="VkPipelineBindPoint" extnumber="370" name="VK_PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI"/>
- <enum bitpos="39" extends="VkPipelineStageFlagBits2KHR" name="VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI"/>
- <enum bitpos="14" extends="VkShaderStageFlagBits" name="VK_SHADER_STAGE_SUBPASS_SHADING_BIT_HUAWEI"/>
- <type name="VkSubpassShadingPipelineCreateInfoHUAWEI"/>
- <type name="VkPhysicalDeviceSubpassShadingFeaturesHUAWEI"/>
- <type name="VkPhysicalDeviceSubpassShadingPropertiesHUAWEI"/>
- <command name="vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI"/>
- <command name="vkCmdSubpassShadingHUAWEI"/>
- </require>
- </extension>
- <extension name="VK_HUAWEI_invocation_mask" number="371" type="device" requires="VK_KHR_ray_tracing_pipeline,VK_KHR_synchronization2" author="Huawei" contact="Yunpeng Zhu @yunxingzhu" supported="vulkan">
- <require>
- <enum value="1" name="VK_HUAWEI_INVOCATION_MASK_SPEC_VERSION"/>
- <enum value="&quot;VK_HUAWEI_invocation_mask&quot;" name="VK_HUAWEI_INVOCATION_MASK_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI"/>
- <enum bitpos="39" extends="VkAccessFlagBits2KHR" name="VK_ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI"/>
- <enum bitpos="18" extends="VkImageUsageFlagBits" name="VK_IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI"/>
- <enum bitpos="40" extends="VkPipelineStageFlagBits2KHR" name="VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI"/>
- <type name="VkPhysicalDeviceInvocationMaskFeaturesHUAWEI"/>
- <command name="vkCmdBindInvocationMaskHUAWEI"/>
- </require>
- </extension>
- <extension name="VK_NV_external_memory_rdma" number="372" type="device" requires="VK_KHR_external_memory" author="NV" contact="Carsten Rohde @crohde" supported="vulkan">
- <require>
- <enum value="1" name="VK_NV_EXTERNAL_MEMORY_RDMA_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_external_memory_rdma&quot;" name="VK_NV_EXTERNAL_MEMORY_RDMA_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_MEMORY_GET_REMOTE_ADDRESS_INFO_NV"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV"/>
- <enum bitpos="8" extends="VkMemoryPropertyFlagBits" name="VK_MEMORY_PROPERTY_RDMA_CAPABLE_BIT_NV"/>
- <enum bitpos="12" extends="VkExternalMemoryHandleTypeFlagBits" name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV"/>
- <type name="VkRemoteAddressNV"/>
- <type name="VkMemoryGetRemoteAddressInfoNV"/>
- <type name="VkPhysicalDeviceExternalMemoryRDMAFeaturesNV"/>
- <command name="vkGetMemoryRemoteAddressNV"/>
- </require>
- </extension>
- <extension name="VK_NV_extension_373" number="373" author="NV" contact="Daniel Koch @dgkoch" supported="disabled">
- <require>
- <enum value="0" name="VK_NV_EXTENSION_373_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_extension_373&quot;" name="VK_NV_EXTENSION_373_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_NV_extension_374" number="374" author="NV" contact="Daniel Koch @dgkoch" supported="disabled">
- <require>
- <enum value="0" name="VK_NV_EXTENSION_374_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_extension_374&quot;" name="VK_NV_EXTENSION_374_EXTENSION_NAME"/>
- <enum bitpos="4" extends="VkExternalFenceHandleTypeFlagBits" name="VK_EXTERNAL_FENCE_HANDLE_TYPE_RESERVED_4_BIT_NV"/>
- <enum bitpos="5" extends="VkExternalFenceHandleTypeFlagBits" name="VK_EXTERNAL_FENCE_HANDLE_TYPE_RESERVED_5_BIT_NV"/>
- <enum bitpos="5" extends="VkExternalSemaphoreHandleTypeFlagBits" name="VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_RESERVED_5_BIT_NV"/>
- <enum bitpos="6" extends="VkExternalSemaphoreHandleTypeFlagBits" name="VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_RESERVED_6_BIT_NV"/>
- </require>
- </extension>
- <extension name="VK_NV_extension_375" number="375" author="NV" contact="Daniel Koch @dgkoch" supported="disabled">
- <require>
- <enum value="0" name="VK_NV_EXTENSION_375_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_extension_375&quot;" name="VK_NV_EXTENSION_375_EXTENSION_NAME"/>
- <enum bitpos="13" extends="VkExternalMemoryHandleTypeFlagBits" name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_RESERVED_13_BIT_NV"/>
- </require>
- </extension>
- <extension name="VK_EXT_extension_376" number="376" author="EXT" contact="Shahbaz Youssefi @syoussefi" supported="disabled">
- <require>
- <enum value="0" name="VK_EXT_EXTENSION_376_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_extension_376&quot;" name="VK_EXT_EXTENSION_376_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_EXT_extension_377" number="377" author="EXT" contact="Hugues Evrard @hevrard" supported="disabled">
- <require>
- <enum value="0" name="VK_EXT_EXTENSION_377_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_extension_377&quot;" name="VK_EXT_EXTENSION_377_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_EXT_extended_dynamic_state2" number="378" type="device" requires="VK_KHR_get_physical_device_properties2" author="EXT" contact="Vikram Kushwaha @vkushwaha-nv" supported="vulkan">
- <require>
- <enum value="1" name="VK_EXT_EXTENDED_DYNAMIC_STATE_2_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_extended_dynamic_state2&quot;" name="VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT"/>
- <enum offset="0" extends="VkDynamicState" name="VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT"/>
- <enum offset="1" extends="VkDynamicState" name="VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT"/>
- <enum offset="2" extends="VkDynamicState" name="VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT"/>
- <enum offset="3" extends="VkDynamicState" name="VK_DYNAMIC_STATE_LOGIC_OP_EXT"/>
- <enum offset="4" extends="VkDynamicState" name="VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT"/>
- <type name="VkPhysicalDeviceExtendedDynamicState2FeaturesEXT"/>
- <command name="vkCmdSetPatchControlPointsEXT"/>
- <command name="vkCmdSetRasterizerDiscardEnableEXT"/>
- <command name="vkCmdSetDepthBiasEnableEXT"/>
- <command name="vkCmdSetLogicOpEXT"/>
- <command name="vkCmdSetPrimitiveRestartEnableEXT"/>
- </require>
- </extension>
- <extension name="VK_QNX_screen_surface" number="379" type="instance" requires="VK_KHR_surface" platform="screen" author="QNX" contact="Mike Gorchak @mgorchak-blackberry" supported="vulkan">
- <require>
- <enum value="1" name="VK_QNX_SCREEN_SURFACE_SPEC_VERSION"/>
- <enum value="&quot;VK_QNX_screen_surface&quot;" name="VK_QNX_SCREEN_SURFACE_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX"/>
- <type name="VkScreenSurfaceCreateFlagsQNX"/>
- <type name="VkScreenSurfaceCreateInfoQNX"/>
- <command name="vkCreateScreenSurfaceQNX"/>
- <command name="vkGetPhysicalDeviceScreenPresentationSupportQNX"/>
- </require>
- </extension>
- <extension name="VK_KHR_extension_380" number="380" author="KHR" contact="James Jones @cubanismo" supported="disabled">
- <require>
- <enum value="0" name="VK_KHR_EXTENSION_380_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_extension_380&quot;" name="VK_KHR_EXTENSION_380_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_KHR_extension_381" number="381" author="KHR" contact="James Jones @cubanismo" supported="disabled">
- <require>
- <enum value="0" name="VK_KHR_EXTENSION_381_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_extension_381&quot;" name="VK_KHR_EXTENSION_381_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_EXT_color_write_enable" number="382" type="device" requires="VK_KHR_get_physical_device_properties2" author="EXT" contact="Sharif Elcott @selcott" supported="vulkan">
- <require>
- <enum value="1" name="VK_EXT_COLOR_WRITE_ENABLE_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_color_write_enable&quot;" name="VK_EXT_COLOR_WRITE_ENABLE_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT"/>
- <enum offset="0" extends="VkDynamicState" name="VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT"/>
- <type name="VkPhysicalDeviceColorWriteEnableFeaturesEXT"/>
- <type name="VkPipelineColorWriteCreateInfoEXT"/>
- <command name="vkCmdSetColorWriteEnableEXT"/>
- </require>
- </extension>
- <extension name="VK_EXT_extension_383" number="383" author="EXT" contact="Shahbaz Youssefi @syoussefi" supported="disabled">
- <require>
- <enum value="0" name="VK_EXT_EXTENSION_383_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_extension_383&quot;" name="VK_EXT_EXTENSION_383_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_EXT_extension_384" number="384" type="instance" author="EXT" contact="Chia-I Wu @olvaffe1" supported="disabled">
- <require>
- <enum value="0" name="VK_EXT_EXTENSION_384_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_extension_384&quot;" name="VK_EXT_EXTENSION_384_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_MESA_extension_385" number="385" type="instance" author="MESA" contact="Chia-I Wu @olvaffe1" supported="disabled">
- <require>
- <enum value="0" name="VK_MESA_EXTENSION_385_SPEC_VERSION"/>
- <enum value="&quot;VK_MESA_extension_385&quot;" name="VK_MESA_EXTENSION_385_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_GOOGLE_extension_386" number="386" author="GOOGLE" contact="Chia-I Wu @olvaffe1" supported="disabled">
- <require>
- <enum value="0" name="VK_GOOGLE_EXTENSION_386_SPEC_VERSION"/>
- <enum value="&quot;VK_GOOGLE_extension_386&quot;" name="VK_GOOGLE_EXTENSION_386_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_KHR_extension_387" number="387" author="KHR" contact="Daniel Koch @dgkoch" supported="disabled">
- <require>
- <enum value="0" name="VK_KHR_EXTENSION_387_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_extension_387&quot;" name="VK_KHR_EXTENSION_387_EXTENSION_NAME"/>
- <enum bitpos="28" extends="VkPipelineStageFlagBits2KHR" name="VK_PIPELINE_STAGE_2_RESERVED_387_BIT_KHR"/>
- <enum bitpos="40" extends="VkAccessFlagBits2KHR" name="VK_ACCESS_2_RESERVED_387_BIT_KHR"/>
- </require>
- </extension>
- <extension name="VK_EXT_extension_388" number="388" author="EXT" contact="Alan Baker @alan-baker" supported="disabled">
- <require>
- <enum value="0" name="VK_EXT_EXTENSION_388_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_extension_388&quot;" name="VK_EXT_EXTENSION_388_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_EXT_global_priority_query" number="389" type="device" requires="VK_EXT_global_priority,VK_KHR_get_physical_device_properties2" author="EXT" contact="Yiwei Zhang @zhangyiwei" supported="vulkan">
- <require>
- <enum value="1" name="VK_EXT_GLOBAL_PRIORITY_QUERY_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_global_priority_query&quot;" name="VK_EXT_GLOBAL_PRIORITY_QUERY_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT"/>
- <enum name="VK_MAX_GLOBAL_PRIORITY_SIZE_EXT"/>
- <type name="VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT"/>
- <type name="VkQueueFamilyGlobalPriorityPropertiesEXT"/>
- </require>
- </extension>
- <extension name="VK_EXT_extension_390" number="390" author="EXT" contact="Joshua Ashton @Joshua-Ashton" supported="disabled">
- <require>
- <enum value="0" name="VK_EXT_EXTENSION_390_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_extension_390&quot;" name="VK_EXT_EXTENSION_390_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_EXT_extension_391" number="391" author="EXT" contact="Joshua Ashton @Joshua-Ashton" supported="disabled">
- <require>
- <enum value="0" name="VK_EXT_EXTENSION_391_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_extension_391&quot;" name="VK_EXT_EXTENSION_391_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_EXT_extension_392" number="392" author="EXT" contact="Joshua Ashton @Joshua-Ashton" supported="disabled">
- <require>
- <enum value="0" name="VK_EXT_EXTENSION_392_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_extension_392&quot;" name="VK_EXT_EXTENSION_392_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_EXT_multi_draw" number="393" author="EXT" contact="Mike Blumenkrantz @zmike" type="device" supported="vulkan">
- <require>
- <enum value="1" name="VK_EXT_MULTI_DRAW_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_multi_draw&quot;" name="VK_EXT_MULTI_DRAW_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT"/>
- <type name="VkPhysicalDeviceMultiDrawFeaturesEXT"/>
- <type name="VkPhysicalDeviceMultiDrawPropertiesEXT"/>
- <command name="vkCmdDrawMultiEXT"/>
- <command name="vkCmdDrawMultiIndexedEXT"/>
- <type name="VkMultiDrawInfoEXT"/>
- <type name="VkMultiDrawIndexedInfoEXT"/>
- </require>
- </extension>
- <extension name="VK_EXT_extension_394" number="394" author="EXT" contact="Mike Blumenkrantz @zmike" type="device" supported="disabled">
- <require>
- <enum value="0" name="VK_EXT_EXTENSION_394_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_extension_394&quot;" name="VK_EXT_EXTENSION_394_EXTENSION_NAME"/>
- <enum extends="VkImageCreateFlagBits" bitpos="17" name="VK_IMAGE_CREATE_RESERVED_394_BIT_EXT"/>
- </require>
- </extension>
- <extension name="VK_KHR_extension_395" number="395" author="KHR" contact="Lenny Komow @lkomow" supported="disabled">
- <require>
- <enum value="0" name="VK_KHR_EXTENSION_395_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_extension_395&quot;" name="VK_KHR_EXTENSION_395_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_KHR_extension_396" number="396" author="EXT" contact="Jan-Harald Fredriksen @janharaldfredriksen-arm" supported="disabled">
- <require>
- <enum value="0" name="VK_KHR_EXTENSION_396_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_extension_396&quot;" name="VK_KHR_EXTENSION_396_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_NV_extension_397" number="397" author="NV" contact="Christoph Kubisch @pixeljetstream" supported="disabled">
- <require>
- <enum value="0" name="VK_NV_EXTENSION_397_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_extension_397&quot;" name="VK_NV_EXTENSION_397_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_NV_extension_398" number="398" author="NV" contact="Christoph Kubisch @pixeljetstream" supported="disabled">
- <require>
- <enum value="0" name="VK_NV_EXTENSION_398_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_extension_398&quot;" name="VK_NV_EXTENSION_398_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_JUICE_extension_399" number="399" author="JUICE" contact="Dean Beeler @canadacow" supported="disabled">
- <require>
- <enum value="0" name="VK_JUICE_EXTENSION_399_SPEC_VERSION"/>
- <enum value="&quot;VK_JUICE_extension_399&quot;" name="VK_JUICE_EXTENSION_399_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_JUICE_extension_400" number="400" author="JUICE" contact="David McCloskey @damcclos" supported="disabled">
- <require>
- <enum value="0" name="VK_JUICE_EXTENSION_400_SPEC_VERSION"/>
- <enum value="&quot;VK_JUICE_extension_400&quot;" name="VK_JUICE_EXTENSION_400_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_EXT_load_store_op_none" number="401" author="EXT" type="device" contact="Shahbaz Youssefi @syoussefi" supported="vulkan">
- <require>
- <enum value="1" name="VK_EXT_LOAD_STORE_OP_NONE_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_load_store_op_none&quot;" name="VK_EXT_LOAD_STORE_OP_NONE_EXTENSION_NAME"/>
- <enum offset="0" extends="VkAttachmentLoadOp" name="VK_ATTACHMENT_LOAD_OP_NONE_EXT"/>
- <enum extends="VkAttachmentStoreOp" name="VK_ATTACHMENT_STORE_OP_NONE_EXT" alias="VK_ATTACHMENT_STORE_OP_NONE_KHR"/>
- </require>
- </extension>
- <extension name="VK_FB_extension_402" number="402" author="FB" contact="Artem Bolgar @artyom17" supported="disabled">
- <require>
- <enum value="0" name="VK_FB_EXTENSION_402_SPEC_VERSION"/>
- <enum value="&quot;VK_FB_extension_402&quot;" name="VK_FB_EXTENSION_402_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_FB_extension_403" number="403" author="FB" contact="Artem Bolgar @artyom17" supported="disabled">
- <require>
- <enum value="0" name="VK_FB_EXTENSION_403_SPEC_VERSION"/>
- <enum value="&quot;VK_FB_extension_403&quot;" name="VK_FB_EXTENSION_403_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_FB_extension_404" number="404" author="FB" contact="Artem Bolgar @artyom17" supported="disabled">
- <require>
- <enum value="0" name="VK_FB_EXTENSION_404_SPEC_VERSION"/>
- <enum value="&quot;VK_FB_extension_404&quot;" name="VK_FB_EXTENSION_404_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_HUAWEI_extension_405" number="405" author="HUAWEI" contact="Hueilong Wang @wyvernathuawei" supported="disabled">
- <require>
- <enum value="0" name="VK_HUAWEI_EXTENSION_405_SPEC_VERSION"/>
- <enum value="&quot;VK_HUAWEI_extension_405&quot;" name="VK_HUAWEI_EXTENSION_405_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_HUAWEI_extension_406" number="406" author="HUAWEI" contact="Hueilong Wang @wyvernathuawei" supported="disabled">
- <require>
- <enum value="0" name="VK_HUAWEI_EXTENSION_406_SPEC_VERSION"/>
- <enum value="&quot;VK_HUAWEI_extension_406&quot;" name="VK_HUAWEI_EXTENSION_406_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_GGP_extension_407" number="407" author="GGP" contact="J.D. Rouan @jdrouan" supported="disabled">
- <require>
- <enum value="0" name="VK_GGP_EXTENSION_407_SPEC_VERSION"/>
- <enum value="&quot;VK_GGP_extension_407&quot;" name="VK_GGP_EXTENSION_407_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_GGP_extension_408" number="408" author="GGP" contact="J.D. Rouan @jdrouan" supported="disabled">
- <require>
- <enum value="0" name="VK_GGP_EXTENSION_408_SPEC_VERSION"/>
- <enum value="&quot;VK_GGP_extension_408&quot;" name="VK_GGP_EXTENSION_408_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_GGP_extension_409" number="409" author="GGP" contact="J.D. Rouan @jdrouan" supported="disabled">
- <require>
- <enum value="0" name="VK_GGP_EXTENSION_409_SPEC_VERSION"/>
- <enum value="&quot;VK_GGP_extension_409&quot;" name="VK_GGP_EXTENSION_409_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_GGP_extension_410" number="410" author="GGP" contact="J.D. Rouan @jdrouan" supported="disabled">
- <require>
- <enum value="0" name="VK_GGP_EXTENSION_410_SPEC_VERSION"/>
- <enum value="&quot;VK_GGP_extension_410&quot;" name="VK_GGP_EXTENSION_410_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_GGP_extension_411" number="411" author="GGP" contact="J.D. Rouan @jdrouan" supported="disabled">
- <require>
- <enum value="0" name="VK_GGP_EXTENSION_411_SPEC_VERSION"/>
- <enum value="&quot;VK_GGP_extension_411&quot;" name="VK_GGP_EXTENSION_411_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_EXT_border_color_swizzle" number="412" type="device" author="EXT" contact="Piers Daniell @pdaniell-nv" supported="vulkan" requires="VK_EXT_custom_border_color" specialuse="glemulation,d3demulation">
- <require>
- <enum value="1" name="VK_EXT_BORDER_COLOR_SWIZZLE_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_border_color_swizzle&quot;" name="VK_EXT_BORDER_COLOR_SWIZZLE_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT"/>
- <type name="VkPhysicalDeviceBorderColorSwizzleFeaturesEXT"/>
- <type name="VkSamplerBorderColorComponentMappingCreateInfoEXT"/>
- </require>
- </extension>
- <extension name="VK_EXT_pageable_device_local_memory" number="413" author="EXT" contact="Piers Daniell @pdaniell-nv" type="device" requires="VK_EXT_memory_priority" supported="vulkan">
- <require>
- <enum value="1" name="VK_EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_pageable_device_local_memory&quot;" name="VK_EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT"/>
- <type name="VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT"/>
- <command name="vkSetDeviceMemoryPriorityEXT"/>
- </require>
- </extension>
- <extension name="VK_KHR_maintenance4" number="414" type="device" requiresCore="1.1" author="KHR" contact="Piers Daniell @pdaniell-nv" supported="vulkan">
- <require>
- <enum value="1" name="VK_KHR_MAINTENANCE_4_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_maintenance4&quot;" name="VK_KHR_MAINTENANCE_4_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES_KHR"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES_KHR"/>
- <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS_KHR"/>
- <enum offset="3" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS_KHR"/>
- <type name="VkPhysicalDeviceMaintenance4FeaturesKHR"/>
- <type name="VkPhysicalDeviceMaintenance4PropertiesKHR"/>
- <type name="VkDeviceBufferMemoryRequirementsKHR"/>
- <type name="VkDeviceImageMemoryRequirementsKHR"/>
- <command name="vkGetDeviceBufferMemoryRequirementsKHR"/>
- <command name="vkGetDeviceImageMemoryRequirementsKHR"/>
- <command name="vkGetDeviceImageSparseMemoryRequirementsKHR"/>
- </require>
- </extension>
- <extension name="VK_HUAWEI_extension_415" number="415" author="HUAWEI" contact="Hueilong Wang @wyvernathuawei" supported="disabled">
- <require>
- <enum value="0" name="VK_HUAWEI_EXTENSION_415_SPEC_VERSION"/>
- <enum value="&quot;VK_HUAWEI_extension_415&quot;" name="VK_HUAWEI_EXTENSION_415_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_ARM_extension_416" number="416" author="ARM" contact="Jan-Harald Fredriksen @janharaldfredriksen-arm" supported="disabled">
- <require>
- <enum value="0" name="VK_ARM_EXTENSION_416_SPEC_VERSION"/>
- <enum value="&quot;VK_ARM_extension_416&quot;" name="VK_ARM_EXTENSION_416_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_KHR_extension_417" number="417" author="KHR" contact="Kevin Petit @kevinpetit" supported="disabled">
- <require>
- <enum value="0" name="VK_KHR_EXTENSION_417_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_extension_417&quot;" name="VK_KHR_EXTENSION_417_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_ARM_extension_418" number="418" author="ARM" contact="Kevin Petit @kevinpetit" supported="disabled">
- <require>
- <enum value="0" name="VK_ARM_EXTENSION_418_SPEC_VERSION"/>
- <enum value="&quot;VK_ARM_extension_418&quot;" name="VK_ARM_EXTENSION_418_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_EXT_extension_419" number="419" author="EXT" contact="Mike Blumenkrantz @zmike" type="device" supported="disabled">
- <require>
- <enum value="0" name="VK_EXT_EXTENSION_419_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_extension_419&quot;" name="VK_EXT_EXTENSION_419_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_EXT_extension_420" number="420" author="EXT" contact="Mike Blumenkrantz @zmike" type="device" supported="disabled">
- <require>
- <enum value="0" name="VK_EXT_EXTENSION_420_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_extension_420&quot;" name="VK_EXT_EXTENSION_420_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_KHR_extension_421" number="421" author="KHR" contact="Hans-Kristian Arntzen @HansKristian-Work" supported="disabled">
- <require>
- <enum value="0" name="VK_KHR_EXTENSION_421_SPEC_VERSION"/>
- <enum value="&quot;VK_KHR_extension_421&quot;" name="VK_KHR_EXTENSION_421_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_EXT_extension_422" number="422" author="EXT" contact="Graeme Leese @gnl21" supported="disabled">
- <require>
- <enum value="0" name="VK_EXT_EXTENSION_422_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_extension_422&quot;" name="VK_EXT_EXTENSION_422_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_EXT_disable_cube_map_wrap" number="423" author="EXT" contact="Georg Lehmann @DadSchoorse" supported="disabled">
- <require>
- <enum value="0" name="VK_EXT_DISABLE_CUBE_MAP_WRAP_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_disable_cube_map_wrap&quot;" name="VK_EXT_DISABLE_CUBE_MAP_WRAP_EXTENSION_NAME"/>
- <enum bitpos="2" extends="VkSamplerCreateFlagBits" name="VK_SAMPLER_CREATE_RESERVED_2_BIT_EXT"/>
- </require>
- </extension>
- <extension name="VK_ARM_extension_424" number="424" author="ARM" contact="Jan-Harald Fredriksen @janharaldfredriksen-arm" supported="disabled">
- <require>
- <enum value="0" name="VK_ARM_EXTENSION_424_SPEC_VERSION"/>
- <enum value="&quot;VK_ARM_extension_424&quot;" name="VK_ARM_EXTENSION_424_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_ARM_extension_425" number="425" author="ARM" contact="Jan-Harald Fredriksen @janharaldfredriksen-arm" supported="disabled">
- <require>
- <enum value="0" name="VK_ARM_EXTENSION_425_SPEC_VERSION"/>
- <enum value="&quot;VK_ARM_extension_425&quot;" name="VK_ARM_EXTENSION_425_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_QCOM_extension_426" number="426" author="QCOM" contact="Matthew Netsch @mnetsch" supported="disabled">
- <require>
- <enum value="0" name="VK_QCOM_EXTENSION_426_SPEC_VERSION"/>
- <enum value="&quot;VK_QCOM_extension_426&quot;" name="VK_QCOM_EXTENSION_426_EXTENSION_NAME"/>
- <enum bitpos="15" extends="VkImageCreateFlagBits" name="VK_IMAGE_CREATE_RESERVED_426_BIT_QCOM"/>
- </require>
- </extension>
- <extension name="VK_NV_extension_427" number="427" author="NV" contact="Vikram Kushwaha @vkushwaha-nv" supported="disabled">
- <require>
- <enum value="0" name="VK_NV_EXTENSION_427_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_extension_427&quot;" name="VK_NV_EXTENSION_427_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_NV_extension_428" number="428" author="NV" contact="Vikram Kushwaha @vkushwaha-nv" supported="disabled">
- <require>
- <enum value="0" name="VK_NV_EXTENSION_428_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_extension_428&quot;" name="VK_NV_EXTENSION_428_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_NV_extension_429" number="429" author="NV" contact="Vikram Kushwaha @vkushwaha-nv" supported="disabled">
- <require>
- <enum value="0" name="VK_NV_EXTENSION_429_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_extension_429&quot;" name="VK_NV_EXTENSION_429_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_NV_extension_430" number="430" author="NV" contact="Vikram Kushwaha @vkushwaha-nv" supported="disabled">
- <require>
- <enum value="0" name="VK_NV_EXTENSION_430_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_extension_430&quot;" name="VK_NV_EXTENSION_430_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_NV_extension_431" number="431" author="NV" contact="Sourav Parmar @souravpNV" supported="disabled">
- <require>
- <enum value="0" name="VK_NV_EXTENSION_431_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_extension_431&quot;" name="VK_NV_EXTENSION_431_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_NV_extension_432" number="432" author="NV" contact="Sourav Parmar @souravpNV" supported="disabled">
- <require>
- <enum value="0" name="VK_NV_EXTENSION_432_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_extension_432&quot;" name="VK_NV_EXTENSION_432_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_NV_extension_433" number="433" author="NV" contact="Sourav Parmar @souravpNV" supported="disabled">
- <require>
- <enum value="0" name="VK_NV_EXTENSION_433_SPEC_VERSION"/>
- <enum value="&quot;VK_NV_extension_433&quot;" name="VK_NV_EXTENSION_433_EXTENSION_NAME"/>
- </require>
- </extension>
- <extension name="VK_GOOGLE_gfxstream" number="386" author="GOOGLE" contact="Lingfeng Yang @frank,Roman Kiryanov @rkir,Yilong Li @liyl_google" supported="vulkan" type="instance">
- <require>
- <enum value="0" name="VK_GOOGLE_GFXSTREAM_SPEC_VERSION"/>
- <enum value="386" name="VK_GOOGLE_GFXSTREAM_NUMBER"/>
- <enum value="&quot;VK_GOOGLE_gfxstream&quot;" name="VK_GOOGLE_GFXSTREAM_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMPORT_COLOR_BUFFER_GOOGLE"/>
- <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMPORT_BUFFER_GOOGLE"/>
- <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_CREATE_BLOB_GOOGLE"/>
- <type name="VkImportColorBufferGOOGLE"/>
- <type name="VkImportBufferGOOGLE"/>
- <type name="VkCreateBlobGOOGLE"/>
- <command name="vkMapMemoryIntoAddressSpaceGOOGLE"/>
- <command name="vkUpdateDescriptorSetWithTemplateSizedGOOGLE"/>
- <command name="vkBeginCommandBufferAsyncGOOGLE"/>
- <command name="vkEndCommandBufferAsyncGOOGLE"/>
- <command name="vkResetCommandBufferAsyncGOOGLE"/>
- <command name="vkCommandBufferHostSyncGOOGLE"/>
- <command name="vkCreateImageWithRequirementsGOOGLE"/>
- <command name="vkCreateBufferWithRequirementsGOOGLE"/>
- <command name="vkGetMemoryHostAddressInfoGOOGLE"/>
- <command name="vkFreeMemorySyncGOOGLE"/>
- <command name="vkQueueHostSyncGOOGLE"/>
- <command name="vkQueueSubmitAsyncGOOGLE"/>
- <command name="vkQueueWaitIdleAsyncGOOGLE"/>
- <command name="vkQueueBindSparseAsyncGOOGLE"/>
- <command name="vkGetLinearImageLayoutGOOGLE"/>
- <command name="vkGetLinearImageLayout2GOOGLE"/>
- <command name="vkQueueFlushCommandsGOOGLE"/>
- <command name="vkQueueCommitDescriptorSetUpdatesGOOGLE"/>
- <command name="vkCollectDescriptorPoolIdsGOOGLE"/>
- <command name="vkQueueSignalReleaseImageANDROIDAsyncGOOGLE"/>
- <command name="vkQueueFlushCommandsFromAuxMemoryGOOGLE"/>
- <command name="vkGetBlobGOOGLE"/>
- </require>
- </extension>
- </extensions>
- <spirvextensions comment="SPIR-V Extensions allowed in Vulkan and what is required to use it">
- <spirvextension name="SPV_KHR_variable_pointers">
- <enable version="VK_API_VERSION_1_1"/>
- <enable extension="VK_KHR_variable_pointers"/>
- </spirvextension>
- <spirvextension name="SPV_AMD_shader_explicit_vertex_parameter">
- <enable extension="VK_AMD_shader_explicit_vertex_parameter"/>
- </spirvextension>
- <spirvextension name="SPV_AMD_gcn_shader">
- <enable extension="VK_AMD_gcn_shader"/>
- </spirvextension>
- <spirvextension name="SPV_AMD_gpu_shader_half_float">
- <enable extension="VK_AMD_gpu_shader_half_float"/>
- </spirvextension>
- <spirvextension name="SPV_AMD_gpu_shader_int16">
- <enable extension="VK_AMD_gpu_shader_int16"/>
- </spirvextension>
- <spirvextension name="SPV_AMD_shader_ballot">
- <enable extension="VK_AMD_shader_ballot"/>
- </spirvextension>
- <spirvextension name="SPV_AMD_shader_fragment_mask">
- <enable extension="VK_AMD_shader_fragment_mask"/>
- </spirvextension>
- <spirvextension name="SPV_AMD_shader_image_load_store_lod">
- <enable extension="VK_AMD_shader_image_load_store_lod"/>
- </spirvextension>
- <spirvextension name="SPV_AMD_shader_trinary_minmax">
- <enable extension="VK_AMD_shader_trinary_minmax"/>
- </spirvextension>
- <spirvextension name="SPV_AMD_texture_gather_bias_lod">
- <enable extension="VK_AMD_texture_gather_bias_lod"/>
- </spirvextension>
- <spirvextension name="SPV_KHR_shader_draw_parameters">
- <enable version="VK_API_VERSION_1_1"/>
- <enable extension="VK_KHR_shader_draw_parameters"/>
- </spirvextension>
- <spirvextension name="SPV_KHR_8bit_storage">
- <enable version="VK_API_VERSION_1_2"/>
- <enable extension="VK_KHR_8bit_storage"/>
- </spirvextension>
- <spirvextension name="SPV_KHR_16bit_storage">
- <enable version="VK_API_VERSION_1_1"/>
- <enable extension="VK_KHR_16bit_storage"/>
- </spirvextension>
- <spirvextension name="SPV_KHR_shader_clock">
- <enable extension="VK_KHR_shader_clock"/>
- </spirvextension>
- <spirvextension name="SPV_KHR_float_controls">
- <enable version="VK_API_VERSION_1_2"/>
- <enable extension="VK_KHR_shader_float_controls"/>
- </spirvextension>
- <spirvextension name="SPV_KHR_storage_buffer_storage_class">
- <enable version="VK_API_VERSION_1_1"/>
- <enable extension="VK_KHR_storage_buffer_storage_class"/>
- </spirvextension>
- <spirvextension name="SPV_KHR_post_depth_coverage">
- <enable extension="VK_EXT_post_depth_coverage"/>
- </spirvextension>
- <spirvextension name="SPV_EXT_shader_stencil_export">
- <enable extension="VK_EXT_shader_stencil_export"/>
- </spirvextension>
- <spirvextension name="SPV_KHR_shader_ballot">
- <enable extension="VK_EXT_shader_subgroup_ballot"/>
- </spirvextension>
- <spirvextension name="SPV_KHR_subgroup_vote">
- <enable extension="VK_EXT_shader_subgroup_vote"/>
- </spirvextension>
- <spirvextension name="SPV_NV_sample_mask_override_coverage">
- <enable extension="VK_NV_sample_mask_override_coverage"/>
- </spirvextension>
- <spirvextension name="SPV_NV_geometry_shader_passthrough">
- <enable extension="VK_NV_geometry_shader_passthrough"/>
- </spirvextension>
- <spirvextension name="SPV_NV_mesh_shader">
- <enable extension="VK_NV_mesh_shader"/>
- </spirvextension>
- <spirvextension name="SPV_NV_viewport_array2">
- <enable extension="VK_NV_viewport_array2"/>
- </spirvextension>
- <spirvextension name="SPV_NV_shader_subgroup_partitioned">
- <enable extension="VK_NV_shader_subgroup_partitioned"/>
- </spirvextension>
- <spirvextension name="SPV_EXT_shader_viewport_index_layer">
- <enable version="VK_API_VERSION_1_2"/>
- <enable extension="VK_EXT_shader_viewport_index_layer"/>
- </spirvextension>
- <spirvextension name="SPV_NVX_multiview_per_view_attributes">
- <enable extension="VK_NVX_multiview_per_view_attributes"/>
- </spirvextension>
- <spirvextension name="SPV_EXT_descriptor_indexing">
- <enable version="VK_API_VERSION_1_2"/>
- <enable extension="VK_EXT_descriptor_indexing"/>
- </spirvextension>
- <spirvextension name="SPV_KHR_vulkan_memory_model">
- <enable version="VK_API_VERSION_1_2"/>
- <enable extension="VK_KHR_vulkan_memory_model"/>
- </spirvextension>
- <spirvextension name="SPV_NV_compute_shader_derivatives">
- <enable extension="VK_NV_compute_shader_derivatives"/>
- </spirvextension>
- <spirvextension name="SPV_NV_fragment_shader_barycentric">
- <enable extension="VK_NV_fragment_shader_barycentric"/>
- </spirvextension>
- <spirvextension name="SPV_NV_shader_image_footprint">
- <enable extension="VK_NV_shader_image_footprint"/>
- </spirvextension>
- <spirvextension name="SPV_NV_shading_rate">
- <enable extension="VK_NV_shading_rate_image"/>
- </spirvextension>
- <spirvextension name="SPV_NV_ray_tracing">
- <enable extension="VK_NV_ray_tracing"/>
- </spirvextension>
- <spirvextension name="SPV_KHR_ray_tracing">
- <enable extension="VK_KHR_ray_tracing_pipeline"/>
- </spirvextension>
- <spirvextension name="SPV_KHR_ray_query">
- <enable extension="VK_KHR_ray_query"/>
- </spirvextension>
- <spirvextension name="SPV_GOOGLE_hlsl_functionality1">
- <enable extension="VK_GOOGLE_hlsl_functionality1"/>
- </spirvextension>
- <spirvextension name="SPV_GOOGLE_user_type">
- <enable extension="VK_GOOGLE_user_type"/>
- </spirvextension>
- <spirvextension name="SPV_GOOGLE_decorate_string">
- <enable extension="VK_GOOGLE_decorate_string"/>
- </spirvextension>
- <spirvextension name="SPV_EXT_fragment_invocation_density">
- <enable extension="VK_EXT_fragment_density_map"/>
- </spirvextension>
- <spirvextension name="SPV_KHR_physical_storage_buffer">
- <enable version="VK_API_VERSION_1_2"/>
- <enable extension="VK_KHR_buffer_device_address"/>
- </spirvextension>
- <spirvextension name="SPV_EXT_physical_storage_buffer">
- <enable extension="VK_EXT_buffer_device_address"/>
- </spirvextension>
- <spirvextension name="SPV_NV_cooperative_matrix">
- <enable extension="VK_NV_cooperative_matrix"/>
- </spirvextension>
- <spirvextension name="SPV_NV_shader_sm_builtins">
- <enable extension="VK_NV_shader_sm_builtins"/>
- </spirvextension>
- <spirvextension name="SPV_EXT_fragment_shader_interlock">
- <enable extension="VK_EXT_fragment_shader_interlock"/>
- </spirvextension>
- <spirvextension name="SPV_EXT_demote_to_helper_invocation">
- <enable extension="VK_EXT_shader_demote_to_helper_invocation"/>
- </spirvextension>
- <spirvextension name="SPV_KHR_fragment_shading_rate">
- <enable extension="VK_KHR_fragment_shading_rate"/>
- </spirvextension>
- <spirvextension name="SPV_KHR_non_semantic_info">
- <enable extension="VK_KHR_shader_non_semantic_info"/>
- </spirvextension>
- <spirvextension name="SPV_EXT_shader_image_int64">
- <enable extension="VK_EXT_shader_image_atomic_int64"/>
- </spirvextension>
- <spirvextension name="SPV_KHR_terminate_invocation">
- <enable extension="VK_KHR_shader_terminate_invocation"/>
- </spirvextension>
- <spirvextension name="SPV_KHR_multiview">
- <enable version="VK_API_VERSION_1_1"/>
- <enable extension="VK_KHR_multiview"/>
- </spirvextension>
- <spirvextension name="SPV_KHR_workgroup_memory_explicit_layout">
- <enable extension="VK_KHR_workgroup_memory_explicit_layout"/>
- </spirvextension>
- <spirvextension name="SPV_EXT_shader_atomic_float_add">
- <enable extension="VK_EXT_shader_atomic_float"/>
- </spirvextension>
- <spirvextension name="SPV_KHR_subgroup_uniform_control_flow">
- <enable extension="VK_KHR_shader_subgroup_uniform_control_flow"/>
- </spirvextension>
- <spirvextension name="SPV_EXT_shader_atomic_float_min_max">
- <enable extension="VK_EXT_shader_atomic_float2"/>
- </spirvextension>
- <spirvextension name="SPV_EXT_shader_atomic_float16_add">
- <enable extension="VK_EXT_shader_atomic_float2"/>
- </spirvextension>
- <spirvextension name="SPV_KHR_integer_dot_product">
- <enable extension="VK_KHR_shader_integer_dot_product"/>
- </spirvextension>
- </spirvextensions>
- <spirvcapabilities comment="SPIR-V Capabilities allowed in Vulkan and what is required to use it">
- <spirvcapability name="Matrix">
- <enable version="VK_API_VERSION_1_0"/>
- </spirvcapability>
- <spirvcapability name="Shader">
- <enable version="VK_API_VERSION_1_0"/>
- </spirvcapability>
- <spirvcapability name="InputAttachment">
- <enable version="VK_API_VERSION_1_0"/>
- </spirvcapability>
- <spirvcapability name="Sampled1D">
- <enable version="VK_API_VERSION_1_0"/>
- </spirvcapability>
- <spirvcapability name="Image1D">
- <enable version="VK_API_VERSION_1_0"/>
- </spirvcapability>
- <spirvcapability name="SampledBuffer">
- <enable version="VK_API_VERSION_1_0"/>
- </spirvcapability>
- <spirvcapability name="ImageBuffer">
- <enable version="VK_API_VERSION_1_0"/>
- </spirvcapability>
- <spirvcapability name="ImageQuery">
- <enable version="VK_API_VERSION_1_0"/>
- </spirvcapability>
- <spirvcapability name="DerivativeControl">
- <enable version="VK_API_VERSION_1_0"/>
- </spirvcapability>
- <spirvcapability name="Geometry">
- <enable struct="VkPhysicalDeviceFeatures" feature="geometryShader" requires="VK_VERSION_1_0"/>
- </spirvcapability>
- <spirvcapability name="Tessellation">
- <enable struct="VkPhysicalDeviceFeatures" feature="tessellationShader" requires="VK_VERSION_1_0"/>
- </spirvcapability>
- <spirvcapability name="Float64">
- <enable struct="VkPhysicalDeviceFeatures" feature="shaderFloat64" requires="VK_VERSION_1_0"/>
- </spirvcapability>
- <spirvcapability name="Int64">
- <enable struct="VkPhysicalDeviceFeatures" feature="shaderInt64" requires="VK_VERSION_1_0"/>
- </spirvcapability>
- <spirvcapability name="Int64Atomics">
- <enable struct="VkPhysicalDeviceVulkan12Features" feature="shaderBufferInt64Atomics" requires="VK_VERSION_1_2,VK_KHR_shader_atomic_int64"/>
- <enable struct="VkPhysicalDeviceVulkan12Features" feature="shaderSharedInt64Atomics" requires="VK_VERSION_1_2,VK_KHR_shader_atomic_int64"/>
- <enable struct="VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT" feature="shaderImageInt64Atomics" requires="VK_EXT_shader_image_atomic_int64"/>
- </spirvcapability>
- <spirvcapability name="AtomicFloat16AddEXT">
- <enable struct="VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT" feature="shaderBufferFloat16AtomicAdd" requires="VK_EXT_shader_atomic_float2"/>
- <enable struct="VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT" feature="shaderSharedFloat16AtomicAdd" requires="VK_EXT_shader_atomic_float2"/>
- </spirvcapability>
- <spirvcapability name="AtomicFloat32AddEXT">
- <enable struct="VkPhysicalDeviceShaderAtomicFloatFeaturesEXT" feature="shaderBufferFloat32AtomicAdd" requires="VK_EXT_shader_atomic_float"/>
- <enable struct="VkPhysicalDeviceShaderAtomicFloatFeaturesEXT" feature="shaderSharedFloat32AtomicAdd" requires="VK_EXT_shader_atomic_float"/>
- <enable struct="VkPhysicalDeviceShaderAtomicFloatFeaturesEXT" feature="shaderImageFloat32AtomicAdd" requires="VK_EXT_shader_atomic_float"/>
- </spirvcapability>
- <spirvcapability name="AtomicFloat64AddEXT">
- <enable struct="VkPhysicalDeviceShaderAtomicFloatFeaturesEXT" feature="shaderBufferFloat64AtomicAdd" requires="VK_EXT_shader_atomic_float"/>
- <enable struct="VkPhysicalDeviceShaderAtomicFloatFeaturesEXT" feature="shaderSharedFloat64AtomicAdd" requires="VK_EXT_shader_atomic_float"/>
- </spirvcapability>
- <spirvcapability name="AtomicFloat16MinMaxEXT">
- <enable struct="VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT" feature="shaderBufferFloat16AtomicMinMax" requires="VK_EXT_shader_atomic_float2"/>
- <enable struct="VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT" feature="shaderSharedFloat16AtomicMinMax" requires="VK_EXT_shader_atomic_float2"/>
- </spirvcapability>
- <spirvcapability name="AtomicFloat32MinMaxEXT">
- <enable struct="VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT" feature="shaderBufferFloat32AtomicMinMax" requires="VK_EXT_shader_atomic_float2"/>
- <enable struct="VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT" feature="shaderSharedFloat32AtomicMinMax" requires="VK_EXT_shader_atomic_float2"/>
- <enable struct="VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT" feature="shaderImageFloat32AtomicMinMax" requires="VK_EXT_shader_atomic_float2"/>
- </spirvcapability>
- <spirvcapability name="AtomicFloat64MinMaxEXT">
- <enable struct="VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT" feature="shaderBufferFloat64AtomicMinMax" requires="VK_EXT_shader_atomic_float2"/>
- <enable struct="VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT" feature="shaderSharedFloat64AtomicMinMax" requires="VK_EXT_shader_atomic_float2"/>
- </spirvcapability>
- <spirvcapability name="Int64ImageEXT">
- <enable struct="VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT" feature="shaderImageInt64Atomics" requires="VK_EXT_shader_image_atomic_int64"/>
- </spirvcapability>
- <spirvcapability name="Int16">
- <enable struct="VkPhysicalDeviceFeatures" feature="shaderInt16" requires="VK_VERSION_1_0"/>
- </spirvcapability>
- <spirvcapability name="TessellationPointSize">
- <enable struct="VkPhysicalDeviceFeatures" feature="shaderTessellationAndGeometryPointSize" requires="VK_VERSION_1_0"/>
- </spirvcapability>
- <spirvcapability name="GeometryPointSize">
- <enable struct="VkPhysicalDeviceFeatures" feature="shaderTessellationAndGeometryPointSize" requires="VK_VERSION_1_0"/>
- </spirvcapability>
- <spirvcapability name="ImageGatherExtended">
- <enable struct="VkPhysicalDeviceFeatures" feature="shaderImageGatherExtended" requires="VK_VERSION_1_0"/>
- </spirvcapability>
- <spirvcapability name="StorageImageMultisample">
- <enable struct="VkPhysicalDeviceFeatures" feature="shaderStorageImageMultisample" requires="VK_VERSION_1_0"/>
- </spirvcapability>
- <spirvcapability name="UniformBufferArrayDynamicIndexing">
- <enable struct="VkPhysicalDeviceFeatures" feature="shaderUniformBufferArrayDynamicIndexing" requires="VK_VERSION_1_0"/>
- </spirvcapability>
- <spirvcapability name="SampledImageArrayDynamicIndexing">
- <enable struct="VkPhysicalDeviceFeatures" feature="shaderSampledImageArrayDynamicIndexing" requires="VK_VERSION_1_0"/>
- </spirvcapability>
- <spirvcapability name="StorageBufferArrayDynamicIndexing">
- <enable struct="VkPhysicalDeviceFeatures" feature="shaderStorageBufferArrayDynamicIndexing" requires="VK_VERSION_1_0"/>
- </spirvcapability>
- <spirvcapability name="StorageImageArrayDynamicIndexing">
- <enable struct="VkPhysicalDeviceFeatures" feature="shaderStorageImageArrayDynamicIndexing" requires="VK_VERSION_1_0"/>
- </spirvcapability>
- <spirvcapability name="ClipDistance">
- <enable struct="VkPhysicalDeviceFeatures" feature="shaderClipDistance" requires="VK_VERSION_1_0"/>
- </spirvcapability>
- <spirvcapability name="CullDistance">
- <enable struct="VkPhysicalDeviceFeatures" feature="shaderCullDistance" requires="VK_VERSION_1_0"/>
- </spirvcapability>
- <spirvcapability name="ImageCubeArray">
- <enable struct="VkPhysicalDeviceFeatures" feature="imageCubeArray" requires="VK_VERSION_1_0"/>
- </spirvcapability>
- <spirvcapability name="SampleRateShading">
- <enable struct="VkPhysicalDeviceFeatures" feature="sampleRateShading" requires="VK_VERSION_1_0"/>
- </spirvcapability>
- <spirvcapability name="SparseResidency">
- <enable struct="VkPhysicalDeviceFeatures" feature="shaderResourceResidency" requires="VK_VERSION_1_0"/>
- </spirvcapability>
- <spirvcapability name="MinLod">
- <enable struct="VkPhysicalDeviceFeatures" feature="shaderResourceMinLod" requires="VK_VERSION_1_0"/>
- </spirvcapability>
- <spirvcapability name="SampledCubeArray">
- <enable struct="VkPhysicalDeviceFeatures" feature="imageCubeArray" requires="VK_VERSION_1_0"/>
- </spirvcapability>
- <spirvcapability name="ImageMSArray">
- <enable struct="VkPhysicalDeviceFeatures" feature="shaderStorageImageMultisample" requires="VK_VERSION_1_0"/>
- </spirvcapability>
- <spirvcapability name="StorageImageExtendedFormats">
- <enable version="VK_API_VERSION_1_0"/>
- </spirvcapability>
- <spirvcapability name="InterpolationFunction">
- <enable struct="VkPhysicalDeviceFeatures" feature="sampleRateShading" requires="VK_VERSION_1_0"/>
- </spirvcapability>
- <spirvcapability name="StorageImageReadWithoutFormat">
- <enable struct="VkPhysicalDeviceFeatures" feature="shaderStorageImageReadWithoutFormat" requires="VK_VERSION_1_0"/>
- <enable extension="VK_KHR_format_feature_flags2"/>
- </spirvcapability>
- <spirvcapability name="StorageImageWriteWithoutFormat">
- <enable struct="VkPhysicalDeviceFeatures" feature="shaderStorageImageWriteWithoutFormat" requires="VK_VERSION_1_0"/>
- <enable extension="VK_KHR_format_feature_flags2"/>
- </spirvcapability>
- <spirvcapability name="MultiViewport">
- <enable struct="VkPhysicalDeviceFeatures" feature="multiViewport" requires="VK_VERSION_1_0"/>
- </spirvcapability>
- <spirvcapability name="DrawParameters">
- <enable struct="VkPhysicalDeviceVulkan11Features" feature="shaderDrawParameters" requires="VK_VERSION_1_2"/>
- <enable struct="VkPhysicalDeviceShaderDrawParametersFeatures" feature="shaderDrawParameters" requires="VK_VERSION_1_1"/>
- <enable extension="VK_KHR_shader_draw_parameters"/>
- </spirvcapability>
- <spirvcapability name="MultiView">
- <enable struct="VkPhysicalDeviceVulkan11Features" feature="multiview" requires="VK_VERSION_1_2"/>
- <enable struct="VkPhysicalDeviceMultiviewFeatures" feature="multiview" requires="VK_KHR_multiview"/>
- </spirvcapability>
- <spirvcapability name="DeviceGroup">
- <enable version="VK_API_VERSION_1_1"/>
- <enable extension="VK_KHR_device_group"/>
- </spirvcapability>
- <spirvcapability name="VariablePointersStorageBuffer">
- <enable struct="VkPhysicalDeviceVulkan11Features" feature="variablePointersStorageBuffer" requires="VK_VERSION_1_2"/>
- <enable struct="VkPhysicalDeviceVariablePointersFeatures" feature="variablePointersStorageBuffer" requires="VK_KHR_variable_pointers"/>
- </spirvcapability>
- <spirvcapability name="VariablePointers">
- <enable struct="VkPhysicalDeviceVulkan11Features" feature="variablePointers" requires="VK_VERSION_1_2"/>
- <enable struct="VkPhysicalDeviceVariablePointersFeatures" feature="variablePointers" requires="VK_KHR_variable_pointers"/>
- </spirvcapability>
- <spirvcapability name="ShaderClockKHR">
- <enable extension="VK_KHR_shader_clock"/>
- </spirvcapability>
- <spirvcapability name="StencilExportEXT">
- <enable extension="VK_EXT_shader_stencil_export"/>
- </spirvcapability>
- <spirvcapability name="SubgroupBallotKHR">
- <enable extension="VK_EXT_shader_subgroup_ballot"/>
- </spirvcapability>
- <spirvcapability name="SubgroupVoteKHR">
- <enable extension="VK_EXT_shader_subgroup_vote"/>
- </spirvcapability>
- <spirvcapability name="ImageReadWriteLodAMD">
- <enable extension="VK_AMD_shader_image_load_store_lod"/>
- </spirvcapability>
- <spirvcapability name="ImageGatherBiasLodAMD">
- <enable extension="VK_AMD_texture_gather_bias_lod"/>
- </spirvcapability>
- <spirvcapability name="FragmentMaskAMD">
- <enable extension="VK_AMD_shader_fragment_mask"/>
- </spirvcapability>
- <spirvcapability name="SampleMaskOverrideCoverageNV">
- <enable extension="VK_NV_sample_mask_override_coverage"/>
- </spirvcapability>
- <spirvcapability name="GeometryShaderPassthroughNV">
- <enable extension="VK_NV_geometry_shader_passthrough"/>
- </spirvcapability>
- <spirvcapability name="ShaderViewportIndex">
- <enable struct="VkPhysicalDeviceVulkan12Features" feature="shaderOutputViewportIndex" requires="VK_VERSION_1_2"/>
- </spirvcapability>
- <spirvcapability name="ShaderLayer">
- <enable struct="VkPhysicalDeviceVulkan12Features" feature="shaderOutputLayer" requires="VK_VERSION_1_2"/>
- </spirvcapability>
- <spirvcapability name="ShaderViewportIndexLayerEXT">
- <enable extension="VK_EXT_shader_viewport_index_layer"/>
- </spirvcapability>
- <spirvcapability name="ShaderViewportIndexLayerNV">
- <enable extension="VK_NV_viewport_array2"/>
- </spirvcapability>
- <spirvcapability name="ShaderViewportMaskNV">
- <enable extension="VK_NV_viewport_array2"/>
- </spirvcapability>
- <spirvcapability name="PerViewAttributesNV">
- <enable extension="VK_NVX_multiview_per_view_attributes"/>
- </spirvcapability>
- <spirvcapability name="StorageBuffer16BitAccess">
- <enable struct="VkPhysicalDeviceVulkan11Features" feature="storageBuffer16BitAccess" requires="VK_VERSION_1_2"/>
- <enable struct="VkPhysicalDevice16BitStorageFeatures" feature="storageBuffer16BitAccess" requires="VK_KHR_16bit_storage"/>
- </spirvcapability>
- <spirvcapability name="UniformAndStorageBuffer16BitAccess">
- <enable struct="VkPhysicalDeviceVulkan11Features" feature="uniformAndStorageBuffer16BitAccess" requires="VK_VERSION_1_2"/>
- <enable struct="VkPhysicalDevice16BitStorageFeatures" feature="uniformAndStorageBuffer16BitAccess" requires="VK_KHR_16bit_storage"/>
- </spirvcapability>
- <spirvcapability name="StoragePushConstant16">
- <enable struct="VkPhysicalDeviceVulkan11Features" feature="storagePushConstant16" requires="VK_VERSION_1_2"/>
- <enable struct="VkPhysicalDevice16BitStorageFeatures" feature="storagePushConstant16" requires="VK_KHR_16bit_storage"/>
- </spirvcapability>
- <spirvcapability name="StorageInputOutput16">
- <enable struct="VkPhysicalDeviceVulkan11Features" feature="storageInputOutput16" requires="VK_VERSION_1_2"/>
- <enable struct="VkPhysicalDevice16BitStorageFeatures" feature="storageInputOutput16" requires="VK_KHR_16bit_storage"/>
- </spirvcapability>
- <spirvcapability name="GroupNonUniform">
- <enable property="VkPhysicalDeviceVulkan11Properties" member="subgroupSupportedOperations" value="VK_SUBGROUP_FEATURE_BASIC_BIT" requires="VK_VERSION_1_1"/>
- </spirvcapability>
- <spirvcapability name="GroupNonUniformVote">
- <enable property="VkPhysicalDeviceVulkan11Properties" member="subgroupSupportedOperations" value="VK_SUBGROUP_FEATURE_VOTE_BIT" requires="VK_VERSION_1_1"/>
- </spirvcapability>
- <spirvcapability name="GroupNonUniformArithmetic">
- <enable property="VkPhysicalDeviceVulkan11Properties" member="subgroupSupportedOperations" value="VK_SUBGROUP_FEATURE_ARITHMETIC_BIT" requires="VK_VERSION_1_1"/>
- </spirvcapability>
- <spirvcapability name="GroupNonUniformBallot">
- <enable property="VkPhysicalDeviceVulkan11Properties" member="subgroupSupportedOperations" value="VK_SUBGROUP_FEATURE_BALLOT_BIT" requires="VK_VERSION_1_1"/>
- </spirvcapability>
- <spirvcapability name="GroupNonUniformShuffle">
- <enable property="VkPhysicalDeviceVulkan11Properties" member="subgroupSupportedOperations" value="VK_SUBGROUP_FEATURE_SHUFFLE_BIT" requires="VK_VERSION_1_1"/>
- </spirvcapability>
- <spirvcapability name="GroupNonUniformShuffleRelative">
- <enable property="VkPhysicalDeviceVulkan11Properties" member="subgroupSupportedOperations" value="VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT" requires="VK_VERSION_1_1"/>
- </spirvcapability>
- <spirvcapability name="GroupNonUniformClustered">
- <enable property="VkPhysicalDeviceVulkan11Properties" member="subgroupSupportedOperations" value="VK_SUBGROUP_FEATURE_CLUSTERED_BIT" requires="VK_VERSION_1_1"/>
- </spirvcapability>
- <spirvcapability name="GroupNonUniformQuad">
- <enable property="VkPhysicalDeviceVulkan11Properties" member="subgroupSupportedOperations" value="VK_SUBGROUP_FEATURE_QUAD_BIT" requires="VK_VERSION_1_1"/>
- </spirvcapability>
- <spirvcapability name="GroupNonUniformPartitionedNV">
- <enable property="VkPhysicalDeviceVulkan11Properties" member="subgroupSupportedOperations" value="VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV" requires="VK_NV_shader_subgroup_partitioned"/>
- </spirvcapability>
- <spirvcapability name="SampleMaskPostDepthCoverage">
- <enable extension="VK_EXT_post_depth_coverage"/>
- </spirvcapability>
- <spirvcapability name="ShaderNonUniform">
- <enable version="VK_API_VERSION_1_2"/>
- <enable extension="VK_EXT_descriptor_indexing"/>
- </spirvcapability>
- <spirvcapability name="RuntimeDescriptorArray">
- <enable struct="VkPhysicalDeviceVulkan12Features" feature="runtimeDescriptorArray" requires="VK_VERSION_1_2,VK_EXT_descriptor_indexing"/>
- </spirvcapability>
- <spirvcapability name="InputAttachmentArrayDynamicIndexing">
- <enable struct="VkPhysicalDeviceVulkan12Features" feature="shaderInputAttachmentArrayDynamicIndexing" requires="VK_VERSION_1_2,VK_EXT_descriptor_indexing"/>
- </spirvcapability>
- <spirvcapability name="UniformTexelBufferArrayDynamicIndexing">
- <enable struct="VkPhysicalDeviceVulkan12Features" feature="shaderUniformTexelBufferArrayDynamicIndexing" requires="VK_VERSION_1_2,VK_EXT_descriptor_indexing"/>
- </spirvcapability>
- <spirvcapability name="StorageTexelBufferArrayDynamicIndexing">
- <enable struct="VkPhysicalDeviceVulkan12Features" feature="shaderStorageTexelBufferArrayDynamicIndexing" requires="VK_VERSION_1_2,VK_EXT_descriptor_indexing"/>
- </spirvcapability>
- <spirvcapability name="UniformBufferArrayNonUniformIndexing">
- <enable struct="VkPhysicalDeviceVulkan12Features" feature="shaderUniformBufferArrayNonUniformIndexing" requires="VK_VERSION_1_2,VK_EXT_descriptor_indexing"/>
- </spirvcapability>
- <spirvcapability name="SampledImageArrayNonUniformIndexing">
- <enable struct="VkPhysicalDeviceVulkan12Features" feature="shaderSampledImageArrayNonUniformIndexing" requires="VK_VERSION_1_2,VK_EXT_descriptor_indexing"/>
- </spirvcapability>
- <spirvcapability name="StorageBufferArrayNonUniformIndexing">
- <enable struct="VkPhysicalDeviceVulkan12Features" feature="shaderStorageBufferArrayNonUniformIndexing" requires="VK_VERSION_1_2,VK_EXT_descriptor_indexing"/>
- </spirvcapability>
- <spirvcapability name="StorageImageArrayNonUniformIndexing">
- <enable struct="VkPhysicalDeviceVulkan12Features" feature="shaderStorageImageArrayNonUniformIndexing" requires="VK_VERSION_1_2,VK_EXT_descriptor_indexing"/>
- </spirvcapability>
- <spirvcapability name="InputAttachmentArrayNonUniformIndexing">
- <enable struct="VkPhysicalDeviceVulkan12Features" feature="shaderInputAttachmentArrayNonUniformIndexing" requires="VK_VERSION_1_2,VK_EXT_descriptor_indexing"/>
- </spirvcapability>
- <spirvcapability name="UniformTexelBufferArrayNonUniformIndexing">
- <enable struct="VkPhysicalDeviceVulkan12Features" feature="shaderUniformTexelBufferArrayNonUniformIndexing" requires="VK_VERSION_1_2,VK_EXT_descriptor_indexing"/>
- </spirvcapability>
- <spirvcapability name="StorageTexelBufferArrayNonUniformIndexing">
- <enable struct="VkPhysicalDeviceVulkan12Features" feature="shaderStorageTexelBufferArrayNonUniformIndexing" requires="VK_VERSION_1_2,VK_EXT_descriptor_indexing"/>
- </spirvcapability>
- <spirvcapability name="Float16">
- <enable struct="VkPhysicalDeviceVulkan12Features" feature="shaderFloat16" requires="VK_VERSION_1_2,VK_KHR_shader_float16_int8"/>
- <enable extension="VK_AMD_gpu_shader_half_float"/>
- </spirvcapability>
- <spirvcapability name="Int8">
- <enable struct="VkPhysicalDeviceVulkan12Features" feature="shaderInt8" requires="VK_VERSION_1_2,VK_KHR_shader_float16_int8"/>
- </spirvcapability>
- <spirvcapability name="StorageBuffer8BitAccess">
- <enable struct="VkPhysicalDeviceVulkan12Features" feature="storageBuffer8BitAccess" requires="VK_VERSION_1_2,VK_KHR_8bit_storage"/>
- </spirvcapability>
- <spirvcapability name="UniformAndStorageBuffer8BitAccess">
- <enable struct="VkPhysicalDeviceVulkan12Features" feature="uniformAndStorageBuffer8BitAccess" requires="VK_VERSION_1_2,VK_KHR_8bit_storage"/>
- </spirvcapability>
- <spirvcapability name="StoragePushConstant8">
- <enable struct="VkPhysicalDeviceVulkan12Features" feature="storagePushConstant8" requires="VK_VERSION_1_2,VK_KHR_8bit_storage"/>
- </spirvcapability>
- <spirvcapability name="VulkanMemoryModel">
- <enable struct="VkPhysicalDeviceVulkan12Features" feature="vulkanMemoryModel" requires="VK_VERSION_1_2,VK_KHR_vulkan_memory_model"/>
- </spirvcapability>
- <spirvcapability name="VulkanMemoryModelDeviceScope">
- <enable struct="VkPhysicalDeviceVulkan12Features" feature="vulkanMemoryModelDeviceScope" requires="VK_VERSION_1_2,VK_KHR_vulkan_memory_model"/>
- </spirvcapability>
- <spirvcapability name="DenormPreserve">
- <enable property="VkPhysicalDeviceVulkan12Properties" member="shaderDenormPreserveFloat16" value="VK_TRUE" requires="VK_VERSION_1_2,VK_KHR_shader_float_controls"/>
- <enable property="VkPhysicalDeviceVulkan12Properties" member="shaderDenormPreserveFloat32" value="VK_TRUE" requires="VK_VERSION_1_2,VK_KHR_shader_float_controls"/>
- <enable property="VkPhysicalDeviceVulkan12Properties" member="shaderDenormPreserveFloat64" value="VK_TRUE" requires="VK_VERSION_1_2,VK_KHR_shader_float_controls"/>
- </spirvcapability>
- <spirvcapability name="DenormFlushToZero">
- <enable property="VkPhysicalDeviceVulkan12Properties" member="shaderDenormFlushToZeroFloat16" value="VK_TRUE" requires="VK_VERSION_1_2,VK_KHR_shader_float_controls"/>
- <enable property="VkPhysicalDeviceVulkan12Properties" member="shaderDenormFlushToZeroFloat32" value="VK_TRUE" requires="VK_VERSION_1_2,VK_KHR_shader_float_controls"/>
- <enable property="VkPhysicalDeviceVulkan12Properties" member="shaderDenormFlushToZeroFloat64" value="VK_TRUE" requires="VK_VERSION_1_2,VK_KHR_shader_float_controls"/>
- </spirvcapability>
- <spirvcapability name="SignedZeroInfNanPreserve">
- <enable property="VkPhysicalDeviceVulkan12Properties" member="shaderSignedZeroInfNanPreserveFloat16" value="VK_TRUE" requires="VK_VERSION_1_2,VK_KHR_shader_float_controls"/>
- <enable property="VkPhysicalDeviceVulkan12Properties" member="shaderSignedZeroInfNanPreserveFloat32" value="VK_TRUE" requires="VK_VERSION_1_2,VK_KHR_shader_float_controls"/>
- <enable property="VkPhysicalDeviceVulkan12Properties" member="shaderSignedZeroInfNanPreserveFloat64" value="VK_TRUE" requires="VK_VERSION_1_2,VK_KHR_shader_float_controls"/>
- </spirvcapability>
- <spirvcapability name="RoundingModeRTE">
- <enable property="VkPhysicalDeviceVulkan12Properties" member="shaderRoundingModeRTEFloat16" value="VK_TRUE" requires="VK_VERSION_1_2,VK_KHR_shader_float_controls"/>
- <enable property="VkPhysicalDeviceVulkan12Properties" member="shaderRoundingModeRTEFloat32" value="VK_TRUE" requires="VK_VERSION_1_2,VK_KHR_shader_float_controls"/>
- <enable property="VkPhysicalDeviceVulkan12Properties" member="shaderRoundingModeRTEFloat64" value="VK_TRUE" requires="VK_VERSION_1_2,VK_KHR_shader_float_controls"/>
- </spirvcapability>
- <spirvcapability name="RoundingModeRTZ">
- <enable property="VkPhysicalDeviceVulkan12Properties" member="shaderRoundingModeRTZFloat16" value="VK_TRUE" requires="VK_VERSION_1_2,VK_KHR_shader_float_controls"/>
- <enable property="VkPhysicalDeviceVulkan12Properties" member="shaderRoundingModeRTZFloat32" value="VK_TRUE" requires="VK_VERSION_1_2,VK_KHR_shader_float_controls"/>
- <enable property="VkPhysicalDeviceVulkan12Properties" member="shaderRoundingModeRTZFloat64" value="VK_TRUE" requires="VK_VERSION_1_2,VK_KHR_shader_float_controls"/>
- </spirvcapability>
- <spirvcapability name="ComputeDerivativeGroupQuadsNV">
- <enable struct="VkPhysicalDeviceComputeShaderDerivativesFeaturesNV" feature="computeDerivativeGroupQuads" requires="VK_NV_compute_shader_derivatives"/>
- </spirvcapability>
- <spirvcapability name="ComputeDerivativeGroupLinearNV">
- <enable struct="VkPhysicalDeviceComputeShaderDerivativesFeaturesNV" feature="computeDerivativeGroupLinear" requires="VK_NV_compute_shader_derivatives"/>
- </spirvcapability>
- <spirvcapability name="FragmentBarycentricNV">
- <enable struct="VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV" feature="fragmentShaderBarycentric" requires="VK_NV_fragment_shader_barycentric"/>
- </spirvcapability>
- <spirvcapability name="ImageFootprintNV">
- <enable struct="VkPhysicalDeviceShaderImageFootprintFeaturesNV" feature="imageFootprint" requires="VK_NV_shader_image_footprint"/>
- </spirvcapability>
- <spirvcapability name="ShadingRateNV">
- <enable struct="VkPhysicalDeviceShadingRateImageFeaturesNV" feature="shadingRateImage" requires="VK_NV_shading_rate_image"/>
- </spirvcapability>
- <spirvcapability name="MeshShadingNV">
- <enable extension="VK_NV_mesh_shader"/>
- </spirvcapability>
- <spirvcapability name="RayTracingKHR">
- <enable struct="VkPhysicalDeviceRayTracingPipelineFeaturesKHR" feature="rayTracingPipeline" requires="VK_KHR_ray_tracing_pipeline"/>
- </spirvcapability>
- <spirvcapability name="RayQueryKHR">
- <enable struct="VkPhysicalDeviceRayQueryFeaturesKHR" feature="rayQuery" requires="VK_KHR_ray_query"/>
- </spirvcapability>
- <spirvcapability name="RayTraversalPrimitiveCullingKHR">
- <enable struct="VkPhysicalDeviceRayTracingPipelineFeaturesKHR" feature="rayTraversalPrimitiveCulling" requires="VK_KHR_ray_tracing_pipeline"/>
- </spirvcapability>
- <spirvcapability name="RayTracingNV">
- <enable extension="VK_NV_ray_tracing"/>
- </spirvcapability>
- <spirvcapability name="RayTracingMotionBlurNV">
- <enable struct="VkPhysicalDeviceRayTracingMotionBlurFeaturesNV" feature="rayTracingMotionBlur" requires="VK_NV_ray_tracing_motion_blur"/>
- </spirvcapability>
- <spirvcapability name="TransformFeedback">
- <enable struct="VkPhysicalDeviceTransformFeedbackFeaturesEXT" feature="transformFeedback" requires="VK_EXT_transform_feedback"/>
- </spirvcapability>
- <spirvcapability name="GeometryStreams">
- <enable struct="VkPhysicalDeviceTransformFeedbackFeaturesEXT" feature="geometryStreams" requires="VK_EXT_transform_feedback"/>
- </spirvcapability>
- <spirvcapability name="FragmentDensityEXT">
- <enable struct="VkPhysicalDeviceFragmentDensityMapFeaturesEXT" feature="fragmentDensityMap" requires="VK_EXT_fragment_density_map"/>
- </spirvcapability>
- <spirvcapability name="PhysicalStorageBufferAddresses">
- <enable struct="VkPhysicalDeviceVulkan12Features" feature="bufferDeviceAddress" requires="VK_VERSION_1_2,VK_KHR_buffer_device_address"/>
- <enable struct="VkPhysicalDeviceBufferDeviceAddressFeaturesEXT" feature="bufferDeviceAddress" requires="VK_EXT_buffer_device_address" alias="bufferDeviceAddressEXT"/>
- </spirvcapability>
- <spirvcapability name="CooperativeMatrixNV">
- <enable struct="VkPhysicalDeviceCooperativeMatrixFeaturesNV" feature="cooperativeMatrix" requires="VK_NV_cooperative_matrix"/>
- </spirvcapability>
- <spirvcapability name="IntegerFunctions2INTEL">
- <enable struct="VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL" feature="shaderIntegerFunctions2" requires="VK_INTEL_shader_integer_functions2"/>
- </spirvcapability>
- <spirvcapability name="ShaderSMBuiltinsNV">
- <enable struct="VkPhysicalDeviceShaderSMBuiltinsFeaturesNV" feature="shaderSMBuiltins" requires="VK_NV_shader_sm_builtins"/>
- </spirvcapability>
- <spirvcapability name="FragmentShaderSampleInterlockEXT">
- <enable struct="VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT" feature="fragmentShaderSampleInterlock" requires="VK_EXT_fragment_shader_interlock"/>
- </spirvcapability>
- <spirvcapability name="FragmentShaderPixelInterlockEXT">
- <enable struct="VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT" feature="fragmentShaderPixelInterlock" requires="VK_EXT_fragment_shader_interlock"/>
- </spirvcapability>
- <spirvcapability name="FragmentShaderShadingRateInterlockEXT">
- <enable struct="VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT" feature="fragmentShaderShadingRateInterlock" requires="VK_EXT_fragment_shader_interlock"/>
- <enable struct="VkPhysicalDeviceShadingRateImageFeaturesNV" feature="shadingRateImage" requires="VK_NV_shading_rate_image"/>
- </spirvcapability>
- <spirvcapability name="DemoteToHelperInvocationEXT">
- <enable struct="VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT" feature="shaderDemoteToHelperInvocation" requires="VK_EXT_shader_demote_to_helper_invocation"/>
- </spirvcapability>
- <spirvcapability name="FragmentShadingRateKHR">
- <enable struct="VkPhysicalDeviceFragmentShadingRateFeaturesKHR" feature="pipelineFragmentShadingRate" requires="VK_KHR_fragment_shading_rate"/>
- <enable struct="VkPhysicalDeviceFragmentShadingRateFeaturesKHR" feature="primitiveFragmentShadingRate" requires="VK_KHR_fragment_shading_rate"/>
- <enable struct="VkPhysicalDeviceFragmentShadingRateFeaturesKHR" feature="attachmentFragmentShadingRate" requires="VK_KHR_fragment_shading_rate"/>
- </spirvcapability>
- <spirvcapability name="WorkgroupMemoryExplicitLayoutKHR">
- <enable struct="VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR" feature="workgroupMemoryExplicitLayout" requires="VK_KHR_workgroup_memory_explicit_layout"/>
- </spirvcapability>
- <spirvcapability name="WorkgroupMemoryExplicitLayout8BitAccessKHR">
- <enable struct="VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR" feature="workgroupMemoryExplicitLayout8BitAccess" requires="VK_KHR_workgroup_memory_explicit_layout"/>
- </spirvcapability>
- <spirvcapability name="WorkgroupMemoryExplicitLayout16BitAccessKHR">
- <enable struct="VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR" feature="workgroupMemoryExplicitLayout16BitAccess" requires="VK_KHR_workgroup_memory_explicit_layout"/>
- </spirvcapability>
- <spirvcapability name="DotProductInputAllKHR">
- <enable struct="VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR" feature="shaderIntegerDotProduct" requires="VK_KHR_shader_integer_dot_product"/>
- </spirvcapability>
- <spirvcapability name="DotProductInput4x8BitKHR">
- <enable struct="VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR" feature="shaderIntegerDotProduct" requires="VK_KHR_shader_integer_dot_product"/>
- </spirvcapability>
- <spirvcapability name="DotProductInput4x8BitPackedKHR">
- <enable struct="VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR" feature="shaderIntegerDotProduct" requires="VK_KHR_shader_integer_dot_product"/>
- </spirvcapability>
- <spirvcapability name="DotProductKHR">
- <enable struct="VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR" feature="shaderIntegerDotProduct" requires="VK_KHR_shader_integer_dot_product"/>
- </spirvcapability>
- </spirvcapabilities>
-</registry>
-
diff --git a/common/CMakeLists.txt b/common/CMakeLists.txt
deleted file mode 100644
index 09684e6a..00000000
--- a/common/CMakeLists.txt
+++ /dev/null
@@ -1 +0,0 @@
-add_subdirectory(vulkan) \ No newline at end of file
diff --git a/common/vulkan/Android.bp b/common/vulkan/Android.bp
deleted file mode 100644
index 6267636d..00000000
--- a/common/vulkan/Android.bp
+++ /dev/null
@@ -1,9 +0,0 @@
-cc_library_headers {
- name: "gfxstream_vulkan_headers",
- export_include_dirs: ["include"],
- host_supported: true,
- apex_available: [
- "//apex_available:platform",
- "com.android.virt",
- ],
-}
diff --git a/common/vulkan/CMakeLists.txt b/common/vulkan/CMakeLists.txt
deleted file mode 100644
index d1a78edb..00000000
--- a/common/vulkan/CMakeLists.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-add_library(gfxstream_vulkan_headers INTERFACE)
-target_include_directories(
- gfxstream_vulkan_headers
- INTERFACE include)
-android_license(TARGET gfxstream_vulkan_headers LICENSE Apache-2.0)
diff --git a/common/vulkan/include/vk_video/vulkan_video_codec_h264std.h b/common/vulkan/include/vk_video/vulkan_video_codec_h264std.h
deleted file mode 100644
index 3338fe14..00000000
--- a/common/vulkan/include/vk_video/vulkan_video_codec_h264std.h
+++ /dev/null
@@ -1,312 +0,0 @@
-/*
-** Copyright (c) 2019-2021 The Khronos Group Inc.
-**
-** SPDX-License-Identifier: Apache-2.0
-*/
-
-#ifndef VULKAN_VIDEO_CODEC_H264STD_H_
-#define VULKAN_VIDEO_CODEC_H264STD_H_ 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "vk_video/vulkan_video_codecs_common.h"
-
-// Vulkan 0.9 provisional Vulkan video H.264 encode and decode std specification version number
-#define VK_STD_VULKAN_VIDEO_CODEC_H264_API_VERSION_0_9_5 VK_MAKE_VIDEO_STD_VERSION(0, 9, 5) // Patch version should always be set to 0
-
-// Format must be in the form XX.XX where the first two digits are the major and the second two, the minor.
-#define VK_STD_VULKAN_VIDEO_CODEC_H264_SPEC_VERSION VK_STD_VULKAN_VIDEO_CODEC_H264_API_VERSION_0_9_5
-#define VK_STD_VULKAN_VIDEO_CODEC_H264_EXTENSION_NAME "VK_STD_vulkan_video_codec_h264"
-
-// *************************************************
-// Video H.264 common definitions:
-// *************************************************
-
-#define STD_VIDEO_H264_CPB_CNT_LIST_SIZE 32
-#define STD_VIDEO_H264_SCALING_LIST_4X4_NUM_LISTS 6
-#define STD_VIDEO_H264_SCALING_LIST_4X4_NUM_ELEMENTS 16
-#define STD_VIDEO_H264_SCALING_LIST_8X8_NUM_LISTS 2
-#define STD_VIDEO_H264_SCALING_LIST_8X8_NUM_ELEMENTS 64
-
-typedef enum StdVideoH264ChromaFormatIdc {
- STD_VIDEO_H264_CHROMA_FORMAT_IDC_MONOCHROME = 0,
- STD_VIDEO_H264_CHROMA_FORMAT_IDC_420 = 1,
- STD_VIDEO_H264_CHROMA_FORMAT_IDC_422 = 2,
- STD_VIDEO_H264_CHROMA_FORMAT_IDC_444 = 3,
- STD_VIDEO_H264_CHROMA_FORMAT_IDC_INVALID = 0x7FFFFFFF
-} StdVideoH264ChromaFormatIdc;
-
-typedef enum StdVideoH264ProfileIdc {
- STD_VIDEO_H264_PROFILE_IDC_BASELINE = 66, /* Only constrained baseline is supported */
- STD_VIDEO_H264_PROFILE_IDC_MAIN = 77,
- STD_VIDEO_H264_PROFILE_IDC_HIGH = 100,
- STD_VIDEO_H264_PROFILE_IDC_HIGH_444_PREDICTIVE = 244,
- STD_VIDEO_H264_PROFILE_IDC_INVALID = 0x7FFFFFFF
-} StdVideoH264ProfileIdc;
-
-typedef enum StdVideoH264Level {
- STD_VIDEO_H264_LEVEL_1_0 = 0,
- STD_VIDEO_H264_LEVEL_1_1 = 1,
- STD_VIDEO_H264_LEVEL_1_2 = 2,
- STD_VIDEO_H264_LEVEL_1_3 = 3,
- STD_VIDEO_H264_LEVEL_2_0 = 4,
- STD_VIDEO_H264_LEVEL_2_1 = 5,
- STD_VIDEO_H264_LEVEL_2_2 = 6,
- STD_VIDEO_H264_LEVEL_3_0 = 7,
- STD_VIDEO_H264_LEVEL_3_1 = 8,
- STD_VIDEO_H264_LEVEL_3_2 = 9,
- STD_VIDEO_H264_LEVEL_4_0 = 10,
- STD_VIDEO_H264_LEVEL_4_1 = 11,
- STD_VIDEO_H264_LEVEL_4_2 = 12,
- STD_VIDEO_H264_LEVEL_5_0 = 13,
- STD_VIDEO_H264_LEVEL_5_1 = 14,
- STD_VIDEO_H264_LEVEL_5_2 = 15,
- STD_VIDEO_H264_LEVEL_6_0 = 16,
- STD_VIDEO_H264_LEVEL_6_1 = 17,
- STD_VIDEO_H264_LEVEL_6_2 = 18,
- STD_VIDEO_H264_LEVEL_INVALID = 0x7FFFFFFF
-} StdVideoH264Level;
-
-typedef enum StdVideoH264PocType {
- STD_VIDEO_H264_POC_TYPE_0 = 0,
- STD_VIDEO_H264_POC_TYPE_1 = 1,
- STD_VIDEO_H264_POC_TYPE_2 = 2,
- STD_VIDEO_H264_POC_TYPE_INVALID = 0x7FFFFFFF
-} StdVideoH264PocType;
-
-typedef enum StdVideoH264AspectRatioIdc {
- STD_VIDEO_H264_ASPECT_RATIO_IDC_UNSPECIFIED = 0,
- STD_VIDEO_H264_ASPECT_RATIO_IDC_SQUARE = 1,
- STD_VIDEO_H264_ASPECT_RATIO_IDC_12_11 = 2,
- STD_VIDEO_H264_ASPECT_RATIO_IDC_10_11 = 3,
- STD_VIDEO_H264_ASPECT_RATIO_IDC_16_11 = 4,
- STD_VIDEO_H264_ASPECT_RATIO_IDC_40_33 = 5,
- STD_VIDEO_H264_ASPECT_RATIO_IDC_24_11 = 6,
- STD_VIDEO_H264_ASPECT_RATIO_IDC_20_11 = 7,
- STD_VIDEO_H264_ASPECT_RATIO_IDC_32_11 = 8,
- STD_VIDEO_H264_ASPECT_RATIO_IDC_80_33 = 9,
- STD_VIDEO_H264_ASPECT_RATIO_IDC_18_11 = 10,
- STD_VIDEO_H264_ASPECT_RATIO_IDC_15_11 = 11,
- STD_VIDEO_H264_ASPECT_RATIO_IDC_64_33 = 12,
- STD_VIDEO_H264_ASPECT_RATIO_IDC_160_99 = 13,
- STD_VIDEO_H264_ASPECT_RATIO_IDC_4_3 = 14,
- STD_VIDEO_H264_ASPECT_RATIO_IDC_3_2 = 15,
- STD_VIDEO_H264_ASPECT_RATIO_IDC_2_1 = 16,
- STD_VIDEO_H264_ASPECT_RATIO_IDC_EXTENDED_SAR = 255,
- STD_VIDEO_H264_ASPECT_RATIO_IDC_INVALID = 0x7FFFFFFF
-} StdVideoH264AspectRatioIdc;
-
-typedef enum StdVideoH264WeightedBipredIdc {
- STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_DEFAULT = 0,
- STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_EXPLICIT = 1,
- STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_IMPLICIT = 2,
- STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_INVALID = 0x7FFFFFFF
-} StdVideoH264WeightedBipredIdc;
-
-typedef enum StdVideoH264ModificationOfPicNumsIdc {
- STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_SHORT_TERM_SUBTRACT = 0,
- STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_SHORT_TERM_ADD = 1,
- STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_LONG_TERM = 2,
- STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_END = 3,
- STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_INVALID = 0x7FFFFFFF
-} StdVideoH264ModificationOfPicNumsIdc;
-
-typedef enum StdVideoH264MemMgmtControlOp {
- STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_END = 0,
- STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_UNMARK_SHORT_TERM = 1,
- STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_UNMARK_LONG_TERM = 2,
- STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_MARK_LONG_TERM = 3,
- STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_SET_MAX_LONG_TERM_INDEX = 4,
- STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_UNMARK_ALL = 5,
- STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_MARK_CURRENT_AS_LONG_TERM = 6,
- STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_INVALID = 0x7FFFFFFF
-} StdVideoH264MemMgmtControlOp;
-
-typedef enum StdVideoH264CabacInitIdc {
- STD_VIDEO_H264_CABAC_INIT_IDC_0 = 0,
- STD_VIDEO_H264_CABAC_INIT_IDC_1 = 1,
- STD_VIDEO_H264_CABAC_INIT_IDC_2 = 2,
- STD_VIDEO_H264_CABAC_INIT_IDC_INVALID = 0x7FFFFFFF
-} StdVideoH264CabacInitIdc;
-
-typedef enum StdVideoH264DisableDeblockingFilterIdc {
- STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_DISABLED = 0,
- STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_ENABLED = 1,
- STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_PARTIAL = 2,
- STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_INVALID = 0x7FFFFFFF
-} StdVideoH264DisableDeblockingFilterIdc;
-
-typedef enum StdVideoH264SliceType {
- STD_VIDEO_H264_SLICE_TYPE_P = 0,
- STD_VIDEO_H264_SLICE_TYPE_B = 1,
- STD_VIDEO_H264_SLICE_TYPE_I = 2,
- // reserved STD_VIDEO_H264_SLICE_TYPE_SP = 3,
- // reserved STD_VIDEO_H264_SLICE_TYPE_SI = 4,
- STD_VIDEO_H264_SLICE_TYPE_INVALID = 0x7FFFFFFF
-} StdVideoH264SliceType;
-
-typedef enum StdVideoH264PictureType {
- STD_VIDEO_H264_PICTURE_TYPE_P = 0,
- STD_VIDEO_H264_PICTURE_TYPE_B = 1,
- STD_VIDEO_H264_PICTURE_TYPE_I = 2,
- // reserved STD_VIDEO_H264_PICTURE_TYPE_SP = 3,
- // reserved STD_VIDEO_H264_PICTURE_TYPE_SI = 4,
- STD_VIDEO_H264_PICTURE_TYPE_IDR = 5,
- STD_VIDEO_H264_PICTURE_TYPE_INVALID = 0x7FFFFFFF
-} StdVideoH264PictureType;
-
-typedef enum StdVideoH264NonVclNaluType {
- STD_VIDEO_H264_NON_VCL_NALU_TYPE_SPS = 0,
- STD_VIDEO_H264_NON_VCL_NALU_TYPE_PPS = 1,
- STD_VIDEO_H264_NON_VCL_NALU_TYPE_AUD = 2,
- STD_VIDEO_H264_NON_VCL_NALU_TYPE_PREFIX = 3,
- STD_VIDEO_H264_NON_VCL_NALU_TYPE_END_OF_SEQUENCE = 4,
- STD_VIDEO_H264_NON_VCL_NALU_TYPE_END_OF_STREAM = 5,
- STD_VIDEO_H264_NON_VCL_NALU_TYPE_PRECODED = 6,
- STD_VIDEO_H264_NON_VCL_NALU_TYPE_INVALID = 0x7FFFFFFF
-} StdVideoH264NonVclNaluType;
-
-typedef struct StdVideoH264SpsVuiFlags {
- uint32_t aspect_ratio_info_present_flag : 1;
- uint32_t overscan_info_present_flag : 1;
- uint32_t overscan_appropriate_flag : 1;
- uint32_t video_signal_type_present_flag : 1;
- uint32_t video_full_range_flag : 1;
- uint32_t color_description_present_flag : 1;
- uint32_t chroma_loc_info_present_flag : 1;
- uint32_t timing_info_present_flag : 1;
- uint32_t fixed_frame_rate_flag : 1;
- uint32_t bitstream_restriction_flag : 1;
- uint32_t nal_hrd_parameters_present_flag : 1;
- uint32_t vcl_hrd_parameters_present_flag : 1;
-} StdVideoH264SpsVuiFlags;
-
-typedef struct StdVideoH264HrdParameters { // hrd_parameters
- uint8_t cpb_cnt_minus1;
- uint8_t bit_rate_scale;
- uint8_t cpb_size_scale;
- uint32_t bit_rate_value_minus1[STD_VIDEO_H264_CPB_CNT_LIST_SIZE]; // cpb_cnt_minus1 number of valid elements
- uint32_t cpb_size_value_minus1[STD_VIDEO_H264_CPB_CNT_LIST_SIZE]; // cpb_cnt_minus1 number of valid elements
- uint8_t cbr_flag[STD_VIDEO_H264_CPB_CNT_LIST_SIZE]; // cpb_cnt_minus1 number of valid elements
- uint32_t initial_cpb_removal_delay_length_minus1;
- uint32_t cpb_removal_delay_length_minus1;
- uint32_t dpb_output_delay_length_minus1;
- uint32_t time_offset_length;
-} StdVideoH264HrdParameters;
-
-typedef struct StdVideoH264SequenceParameterSetVui {
- StdVideoH264AspectRatioIdc aspect_ratio_idc;
- uint16_t sar_width;
- uint16_t sar_height;
- uint8_t video_format;
- uint8_t color_primaries;
- uint8_t transfer_characteristics;
- uint8_t matrix_coefficients;
- uint32_t num_units_in_tick;
- uint32_t time_scale;
- StdVideoH264HrdParameters* pHrdParameters; // must be a valid ptr to hrd_parameters, if nal_hrd_parameters_present_flag or vcl_hrd_parameters_present_flag are set
- uint8_t max_num_reorder_frames;
- uint8_t max_dec_frame_buffering;
- StdVideoH264SpsVuiFlags flags;
-} StdVideoH264SequenceParameterSetVui;
-
-typedef struct StdVideoH264SpsFlags {
- uint32_t constraint_set0_flag : 1;
- uint32_t constraint_set1_flag : 1;
- uint32_t constraint_set2_flag : 1;
- uint32_t constraint_set3_flag : 1;
- uint32_t constraint_set4_flag : 1;
- uint32_t constraint_set5_flag : 1;
- uint32_t direct_8x8_inference_flag : 1;
- uint32_t mb_adaptive_frame_field_flag : 1;
- uint32_t frame_mbs_only_flag : 1;
- uint32_t delta_pic_order_always_zero_flag : 1;
- uint32_t separate_colour_plane_flag : 1;
- uint32_t gaps_in_frame_num_value_allowed_flag : 1;
- uint32_t qpprime_y_zero_transform_bypass_flag : 1;
- uint32_t frame_cropping_flag : 1;
- uint32_t seq_scaling_matrix_present_flag : 1;
- uint32_t vui_parameters_present_flag : 1;
-} StdVideoH264SpsFlags;
-
-typedef struct StdVideoH264ScalingLists
-{
- // scaling_list_present_mask has one bit for each
- // seq_scaling_list_present_flag[i] for SPS OR
- // pic_scaling_list_present_flag[i] for PPS,
- // bit 0 - 5 are for each entry of ScalingList4x4
- // bit 6 - 7 are for each entry plus 6 for ScalingList8x8
- uint8_t scaling_list_present_mask;
- // use_default_scaling_matrix_mask has one bit for each
- // UseDefaultScalingMatrix4x4Flag[ i ] and
- // UseDefaultScalingMatrix8x8Flag[ i - 6 ] for SPS OR PPS
- // bit 0 - 5 are for each entry of ScalingList4x4
- // bit 6 - 7 are for each entry plus 6 for ScalingList8x8
- uint8_t use_default_scaling_matrix_mask;
- uint8_t ScalingList4x4[STD_VIDEO_H264_SCALING_LIST_4X4_NUM_LISTS][STD_VIDEO_H264_SCALING_LIST_4X4_NUM_ELEMENTS];
- uint8_t ScalingList8x8[STD_VIDEO_H264_SCALING_LIST_8X8_NUM_LISTS][STD_VIDEO_H264_SCALING_LIST_8X8_NUM_ELEMENTS];
-} StdVideoH264ScalingLists;
-
-typedef struct StdVideoH264SequenceParameterSet
-{
- StdVideoH264ProfileIdc profile_idc;
- StdVideoH264Level level_idc;
- uint8_t seq_parameter_set_id;
- StdVideoH264ChromaFormatIdc chroma_format_idc;
- uint8_t bit_depth_luma_minus8;
- uint8_t bit_depth_chroma_minus8;
- uint8_t log2_max_frame_num_minus4;
- StdVideoH264PocType pic_order_cnt_type;
- uint8_t log2_max_pic_order_cnt_lsb_minus4;
- int32_t offset_for_non_ref_pic;
- int32_t offset_for_top_to_bottom_field;
- uint8_t num_ref_frames_in_pic_order_cnt_cycle;
- uint8_t max_num_ref_frames;
- uint32_t pic_width_in_mbs_minus1;
- uint32_t pic_height_in_map_units_minus1;
- uint32_t frame_crop_left_offset;
- uint32_t frame_crop_right_offset;
- uint32_t frame_crop_top_offset;
- uint32_t frame_crop_bottom_offset;
- StdVideoH264SpsFlags flags;
- // pOffsetForRefFrame is a pointer representing the offset_for_ref_frame array with num_ref_frames_in_pic_order_cnt_cycle number of elements
- // If pOffsetForRefFrame has nullptr value, then num_ref_frames_in_pic_order_cnt_cycle must also be "0".
- int32_t* pOffsetForRefFrame;
- StdVideoH264ScalingLists* pScalingLists; // Must be a valid pointer if seq_scaling_matrix_present_flag is set
- StdVideoH264SequenceParameterSetVui* pSequenceParameterSetVui; // Must be a valid pointer if StdVideoH264SpsFlags:vui_parameters_present_flag is set
-} StdVideoH264SequenceParameterSet;
-
-typedef struct StdVideoH264PpsFlags {
- uint32_t transform_8x8_mode_flag : 1;
- uint32_t redundant_pic_cnt_present_flag : 1;
- uint32_t constrained_intra_pred_flag : 1;
- uint32_t deblocking_filter_control_present_flag : 1;
- uint32_t weighted_bipred_idc_flag : 1;
- uint32_t weighted_pred_flag : 1;
- uint32_t pic_order_present_flag : 1;
- uint32_t entropy_coding_mode_flag : 1;
- uint32_t pic_scaling_matrix_present_flag : 1;
-} StdVideoH264PpsFlags;
-
-typedef struct StdVideoH264PictureParameterSet
-{
- uint8_t seq_parameter_set_id;
- uint8_t pic_parameter_set_id;
- uint8_t num_ref_idx_l0_default_active_minus1;
- uint8_t num_ref_idx_l1_default_active_minus1;
- StdVideoH264WeightedBipredIdc weighted_bipred_idc;
- int8_t pic_init_qp_minus26;
- int8_t pic_init_qs_minus26;
- int8_t chroma_qp_index_offset;
- int8_t second_chroma_qp_index_offset;
- StdVideoH264PpsFlags flags;
- StdVideoH264ScalingLists* pScalingLists; // Must be a valid pointer if StdVideoH264PpsFlags::pic_scaling_matrix_present_flag is set.
-} StdVideoH264PictureParameterSet;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // VULKAN_VIDEO_CODEC_H264STD_H_
diff --git a/common/vulkan/include/vk_video/vulkan_video_codec_h264std_decode.h b/common/vulkan/include/vk_video/vulkan_video_codec_h264std_decode.h
deleted file mode 100644
index cb0d1df5..00000000
--- a/common/vulkan/include/vk_video/vulkan_video_codec_h264std_decode.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
-** Copyright (c) 2019-2020 The Khronos Group Inc.
-**
-** SPDX-License-Identifier: Apache-2.0
-*/
-
-#ifndef VULKAN_VIDEO_CODEC_H264STD_DECODE_H_
-#define VULKAN_VIDEO_CODEC_H264STD_DECODE_H_ 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "vk_video/vulkan_video_codec_h264std.h"
-
-// *************************************************
-// Video H.264 Decode related parameters:
-// *************************************************
-
-#define STD_VIDEO_DECODE_H264_MVC_REF_LIST_SIZE 15
-
-typedef enum StdVideoDecodeH264FieldOrderCount {
- STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_TOP = 0,
- STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_BOTTOM = 1,
- STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_LIST_SIZE = 2,
- STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_INVALID = 0x7FFFFFFF
-} StdVideoDecodeH264FieldOrderCnt;
-
-typedef struct StdVideoDecodeH264PictureInfoFlags {
- uint32_t field_pic_flag : 1; // Is field picture
- uint32_t is_intra : 1; // Is intra picture
- uint32_t IdrPicFlag : 1; // instantaneous decoding refresh (IDR) picture
- uint32_t bottom_field_flag : 1; // bottom (true) or top (false) field if field_pic_flag is set.
- uint32_t is_reference : 1; // This only applies to picture info, and not to the DPB lists.
- uint32_t complementary_field_pair : 1; // complementary field pair, complementary non-reference field pair, complementary reference field pair
-} StdVideoDecodeH264PictureInfoFlags;
-
-typedef struct StdVideoDecodeH264PictureInfo {
- uint8_t seq_parameter_set_id; // Selecting SPS from the Picture Parameters
- uint8_t pic_parameter_set_id; // Selecting PPS from the Picture Parameters and the SPS
- uint16_t reserved; // for structure members 32-bit packing/alignment
- uint16_t frame_num; // 7.4.3 Slice header semantics
- uint16_t idr_pic_id; // 7.4.3 Slice header semantics
- // PicOrderCnt is based on TopFieldOrderCnt and BottomFieldOrderCnt. See 8.2.1 Decoding process for picture order count type 0 - 2
- int32_t PicOrderCnt[STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_LIST_SIZE]; // TopFieldOrderCnt and BottomFieldOrderCnt fields.
- StdVideoDecodeH264PictureInfoFlags flags;
-} StdVideoDecodeH264PictureInfo;
-
-typedef struct StdVideoDecodeH264ReferenceInfoFlags {
- uint32_t top_field_flag : 1; // Reference is used for top field reference.
- uint32_t bottom_field_flag : 1; // Reference is used for bottom field reference.
- uint32_t is_long_term : 1; // this is a long term reference
- uint32_t is_non_existing : 1; // Must be handled in accordance with 8.2.5.2: Decoding process for gaps in frame_num
-} StdVideoDecodeH264ReferenceInfoFlags;
-
-typedef struct StdVideoDecodeH264ReferenceInfo {
- // FrameNum = is_long_term ? long_term_frame_idx : frame_num
- uint16_t FrameNum; // 7.4.3.3 Decoded reference picture marking semantics
- uint16_t reserved; // for structure members 32-bit packing/alignment
- int32_t PicOrderCnt[2]; // TopFieldOrderCnt and BottomFieldOrderCnt fields.
- StdVideoDecodeH264ReferenceInfoFlags flags;
-} StdVideoDecodeH264ReferenceInfo;
-
-typedef struct StdVideoDecodeH264MvcElementFlags {
- uint32_t non_idr : 1;
- uint32_t anchor_pic : 1;
- uint32_t inter_view : 1;
-} StdVideoDecodeH264MvcElementFlags;
-
-typedef struct StdVideoDecodeH264MvcElement {
- StdVideoDecodeH264MvcElementFlags flags;
- uint16_t viewOrderIndex;
- uint16_t viewId;
- uint16_t temporalId; // move out?
- uint16_t priorityId; // move out?
- uint16_t numOfAnchorRefsInL0;
- uint16_t viewIdOfAnchorRefsInL0[STD_VIDEO_DECODE_H264_MVC_REF_LIST_SIZE];
- uint16_t numOfAnchorRefsInL1;
- uint16_t viewIdOfAnchorRefsInL1[STD_VIDEO_DECODE_H264_MVC_REF_LIST_SIZE];
- uint16_t numOfNonAnchorRefsInL0;
- uint16_t viewIdOfNonAnchorRefsInL0[STD_VIDEO_DECODE_H264_MVC_REF_LIST_SIZE];
- uint16_t numOfNonAnchorRefsInL1;
- uint16_t viewIdOfNonAnchorRefsInL1[STD_VIDEO_DECODE_H264_MVC_REF_LIST_SIZE];
-} StdVideoDecodeH264MvcElement;
-
-typedef struct StdVideoDecodeH264Mvc {
- uint32_t viewId0;
- uint32_t mvcElementCount;
- StdVideoDecodeH264MvcElement* pMvcElements;
-} StdVideoDecodeH264Mvc;
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // VULKAN_VIDEO_CODEC_H264STD_DECODE_H_
diff --git a/common/vulkan/include/vk_video/vulkan_video_codec_h264std_encode.h b/common/vulkan/include/vk_video/vulkan_video_codec_h264std_encode.h
deleted file mode 100644
index f3a0d3ad..00000000
--- a/common/vulkan/include/vk_video/vulkan_video_codec_h264std_encode.h
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
-** Copyright (c) 2019-2021 The Khronos Group Inc.
-**
-** SPDX-License-Identifier: Apache-2.0
-*/
-
-#ifndef VULKAN_VIDEO_CODEC_H264STD_ENCODE_H_
-#define VULKAN_VIDEO_CODEC_H264STD_ENCODE_H_ 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "vk_video/vulkan_video_codec_h264std.h"
-
-// *************************************************
-// Video H.264 Encode related parameters:
-// *************************************************
-
-typedef struct StdVideoEncodeH264SliceHeaderFlags {
- uint32_t idr_flag : 1;
- uint32_t is_reference_flag : 1;
- uint32_t num_ref_idx_active_override_flag : 1;
- uint32_t no_output_of_prior_pics_flag : 1;
- uint32_t long_term_reference_flag : 1;
- uint32_t adaptive_ref_pic_marking_mode_flag : 1;
- uint32_t no_prior_references_available_flag : 1;
-} StdVideoEncodeH264SliceHeaderFlags;
-
-typedef struct StdVideoEncodeH264PictureInfoFlags {
- uint32_t idr_flag : 1;
- uint32_t is_reference_flag : 1;
- uint32_t long_term_reference_flag : 1;
-} StdVideoEncodeH264PictureInfoFlags;
-
-typedef struct StdVideoEncodeH264RefMgmtFlags {
- uint32_t ref_pic_list_modification_l0_flag : 1;
- uint32_t ref_pic_list_modification_l1_flag : 1;
-} StdVideoEncodeH264RefMgmtFlags;
-
-typedef struct StdVideoEncodeH264RefListModEntry {
- StdVideoH264ModificationOfPicNumsIdc modification_of_pic_nums_idc;
- uint16_t abs_diff_pic_num_minus1;
- uint16_t long_term_pic_num;
-} StdVideoEncodeH264RefListModEntry;
-
-typedef struct StdVideoEncodeH264RefPicMarkingEntry {
- StdVideoH264MemMgmtControlOp operation;
- uint16_t difference_of_pic_nums_minus1;
- uint16_t long_term_pic_num;
- uint16_t long_term_frame_idx;
- uint16_t max_long_term_frame_idx_plus1;
-} StdVideoEncodeH264RefPicMarkingEntry;
-
-typedef struct StdVideoEncodeH264RefMemMgmtCtrlOperations {
- StdVideoEncodeH264RefMgmtFlags flags;
- uint8_t refList0ModOpCount;
- StdVideoEncodeH264RefListModEntry* pRefList0ModOperations;
- uint8_t refList1ModOpCount;
- StdVideoEncodeH264RefListModEntry* pRefList1ModOperations;
- uint8_t refPicMarkingOpCount;
- StdVideoEncodeH264RefPicMarkingEntry* pRefPicMarkingOperations;
-} StdVideoEncodeH264RefMemMgmtCtrlOperations;
-
-typedef struct StdVideoEncodeH264PictureInfo {
- StdVideoEncodeH264PictureInfoFlags flags;
- StdVideoH264PictureType pictureType;
- uint32_t frameNum;
- uint32_t pictureOrderCount;
- uint16_t long_term_pic_num;
- uint16_t long_term_frame_idx;
-} StdVideoEncodeH264PictureInfo;
-
-typedef struct StdVideoEncodeH264SliceHeader {
- StdVideoEncodeH264SliceHeaderFlags flags;
- StdVideoH264SliceType slice_type;
- uint8_t seq_parameter_set_id;
- uint8_t pic_parameter_set_id;
- uint16_t idr_pic_id;
- uint8_t num_ref_idx_l0_active_minus1;
- uint8_t num_ref_idx_l1_active_minus1;
- StdVideoH264CabacInitIdc cabac_init_idc;
- StdVideoH264DisableDeblockingFilterIdc disable_deblocking_filter_idc;
- int8_t slice_alpha_c0_offset_div2;
- int8_t slice_beta_offset_div2;
- StdVideoEncodeH264RefMemMgmtCtrlOperations* pMemMgmtCtrlOperations;
-} StdVideoEncodeH264SliceHeader;
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // VULKAN_VIDEO_CODEC_H264STD_ENCODE_H_
diff --git a/common/vulkan/include/vk_video/vulkan_video_codec_h265std.h b/common/vulkan/include/vk_video/vulkan_video_codec_h265std.h
deleted file mode 100644
index 179c6b70..00000000
--- a/common/vulkan/include/vk_video/vulkan_video_codec_h265std.h
+++ /dev/null
@@ -1,371 +0,0 @@
-/*
-** Copyright (c) 2019-2021 The Khronos Group Inc.
-**
-** SPDX-License-Identifier: Apache-2.0
-*/
-
-#ifndef VULKAN_VIDEO_CODEC_H265STD_H_
-#define VULKAN_VIDEO_CODEC_H265STD_H_ 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "vk_video/vulkan_video_codecs_common.h"
-
-// Vulkan 0.5 version number WIP
-#define VK_STD_VULKAN_VIDEO_CODEC_H265_API_VERSION_0_9_5 VK_MAKE_VIDEO_STD_VERSION(0, 9, 5) // Patch version should always be set to 0
-
-// Format must be in the form XX.XX where the first two digits are the major and the second two, the minor.
-#define VK_STD_VULKAN_VIDEO_CODEC_H265_SPEC_VERSION VK_STD_VULKAN_VIDEO_CODEC_H265_API_VERSION_0_9_5
-#define VK_STD_VULKAN_VIDEO_CODEC_H265_EXTENSION_NAME "VK_STD_vulkan_video_codec_h265"
-
-#define STD_VIDEO_H265_CPB_CNT_LIST_SIZE 32
-#define STD_VIDEO_H265_SUBLAYERS_MINUS1_LIST_SIZE 7
-#define STD_VIDEO_H265_SCALING_LIST_4X4_NUM_LISTS 6
-#define STD_VIDEO_H265_SCALING_LIST_4X4_NUM_ELEMENTS 16
-#define STD_VIDEO_H265_SCALING_LIST_8X8_NUM_LISTS 6
-#define STD_VIDEO_H265_SCALING_LIST_8X8_NUM_ELEMENTS 64
-#define STD_VIDEO_H265_SCALING_LIST_16X16_NUM_LISTS 6
-#define STD_VIDEO_H265_SCALING_LIST_16X16_NUM_ELEMENTS 64
-#define STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS 2
-#define STD_VIDEO_H265_SCALING_LIST_32X32_NUM_ELEMENTS 64
-#define STD_VIDEO_H265_CHROMA_QP_OFFSET_LIST_SIZE 6
-#define STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_COLS_LIST_SIZE 19
-#define STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_ROWS_LIST_SIZE 21
-#define STD_VIDEO_H265_PREDICTOR_PALETTE_COMPONENTS_LIST_SIZE 3
-#define STD_VIDEO_H265_PREDICTOR_PALETTE_COMP_ENTRIES_LIST_SIZE 128
-
-typedef enum StdVideoH265ChromaFormatIdc {
- STD_VIDEO_H265_CHROMA_FORMAT_IDC_MONOCHROME = 0,
- STD_VIDEO_H265_CHROMA_FORMAT_IDC_420 = 1,
- STD_VIDEO_H265_CHROMA_FORMAT_IDC_422 = 2,
- STD_VIDEO_H265_CHROMA_FORMAT_IDC_444 = 3,
- STD_VIDEO_H265_CHROMA_FORMAT_IDC_INVALID = 0x7FFFFFFF
-} StdVideoH265ChromaFormatIdc;
-
-typedef enum StdVideoH265ProfileIdc {
- STD_VIDEO_H265_PROFILE_IDC_MAIN = 1,
- STD_VIDEO_H265_PROFILE_IDC_MAIN_10 = 2,
- STD_VIDEO_H265_PROFILE_IDC_MAIN_STILL_PICTURE = 3,
- STD_VIDEO_H265_PROFILE_IDC_FORMAT_RANGE_EXTENSIONS = 4,
- STD_VIDEO_H265_PROFILE_IDC_SCC_EXTENSIONS = 9,
- STD_VIDEO_H265_PROFILE_IDC_INVALID = 0x7FFFFFFF
-} StdVideoH265ProfileIdc;
-
-typedef enum StdVideoH265Level {
- STD_VIDEO_H265_LEVEL_1_0 = 0,
- STD_VIDEO_H265_LEVEL_2_0 = 1,
- STD_VIDEO_H265_LEVEL_2_1 = 2,
- STD_VIDEO_H265_LEVEL_3_0 = 3,
- STD_VIDEO_H265_LEVEL_3_1 = 4,
- STD_VIDEO_H265_LEVEL_4_0 = 5,
- STD_VIDEO_H265_LEVEL_4_1 = 6,
- STD_VIDEO_H265_LEVEL_5_0 = 7,
- STD_VIDEO_H265_LEVEL_5_1 = 8,
- STD_VIDEO_H265_LEVEL_5_2 = 9,
- STD_VIDEO_H265_LEVEL_6_0 = 10,
- STD_VIDEO_H265_LEVEL_6_1 = 11,
- STD_VIDEO_H265_LEVEL_6_2 = 12,
- STD_VIDEO_H265_LEVEL_INVALID = 0x7FFFFFFF
-} StdVideoH265Level;
-
-typedef enum StdVideoH265SliceType {
- STD_VIDEO_H265_SLICE_TYPE_B = 0,
- STD_VIDEO_H265_SLICE_TYPE_P = 1,
- STD_VIDEO_H265_SLICE_TYPE_I = 2,
- STD_VIDEO_H265_SLICE_TYPE_INVALID = 0x7FFFFFFF
-} StdVideoH265SliceType;
-
-typedef enum StdVideoH265PictureType {
- STD_VIDEO_H265_PICTURE_TYPE_P = 0,
- STD_VIDEO_H265_PICTURE_TYPE_B = 1,
- STD_VIDEO_H265_PICTURE_TYPE_I = 2,
- STD_VIDEO_H265_PICTURE_TYPE_IDR = 3,
- STD_VIDEO_H265_PICTURE_TYPE_INVALID = 0x7FFFFFFF
-} StdVideoH265PictureType;
-
-typedef struct StdVideoH265DecPicBufMgr
-{
- uint32_t max_latency_increase_plus1[STD_VIDEO_H265_SUBLAYERS_MINUS1_LIST_SIZE];
- uint8_t max_dec_pic_buffering_minus1[STD_VIDEO_H265_SUBLAYERS_MINUS1_LIST_SIZE];
- uint8_t max_num_reorder_pics[STD_VIDEO_H265_SUBLAYERS_MINUS1_LIST_SIZE];
-} StdVideoH265DecPicBufMgr;
-
-typedef struct StdVideoH265SubLayerHrdParameters { // sub_layer_hrd_parameters
- uint32_t bit_rate_value_minus1[STD_VIDEO_H265_CPB_CNT_LIST_SIZE];
- uint32_t cpb_size_value_minus1[STD_VIDEO_H265_CPB_CNT_LIST_SIZE];
- uint32_t cpb_size_du_value_minus1[STD_VIDEO_H265_CPB_CNT_LIST_SIZE];
- uint32_t bit_rate_du_value_minus1[STD_VIDEO_H265_CPB_CNT_LIST_SIZE];
- uint32_t cbr_flag; // each bit represents a range of CpbCounts (bit 0 - cpb_cnt_minus1) per sub-layer
-} StdVideoH265SubLayerHrdParameters;
-
-typedef struct StdVideoH265HrdFlags {
- uint32_t nal_hrd_parameters_present_flag : 1;
- uint32_t vcl_hrd_parameters_present_flag : 1;
- uint32_t sub_pic_hrd_params_present_flag : 1;
- uint32_t sub_pic_cpb_params_in_pic_timing_sei_flag : 1;
- uint32_t fixed_pic_rate_general_flag : 8; // each bit represents a sublayer, bit 0 - vps_max_sub_layers_minus1
- uint32_t fixed_pic_rate_within_cvs_flag : 8; // each bit represents a sublayer, bit 0 - vps_max_sub_layers_minus1
- uint32_t low_delay_hrd_flag : 8; // each bit represents a sublayer, bit 0 - vps_max_sub_layers_minus1
-} StdVideoH265HrdFlags;
-
-typedef struct StdVideoH265HrdParameters {
- uint8_t tick_divisor_minus2;
- uint8_t du_cpb_removal_delay_increment_length_minus1;
- uint8_t dpb_output_delay_du_length_minus1;
- uint8_t bit_rate_scale;
- uint8_t cpb_size_scale;
- uint8_t cpb_size_du_scale;
- uint8_t initial_cpb_removal_delay_length_minus1;
- uint8_t au_cpb_removal_delay_length_minus1;
- uint8_t dpb_output_delay_length_minus1;
- uint8_t cpb_cnt_minus1[STD_VIDEO_H265_SUBLAYERS_MINUS1_LIST_SIZE];
- uint16_t elemental_duration_in_tc_minus1[STD_VIDEO_H265_SUBLAYERS_MINUS1_LIST_SIZE];
- StdVideoH265SubLayerHrdParameters* pSubLayerHrdParametersNal[STD_VIDEO_H265_SUBLAYERS_MINUS1_LIST_SIZE]; // NAL per layer ptr to sub_layer_hrd_parameters
- StdVideoH265SubLayerHrdParameters* pSubLayerHrdParametersVcl[STD_VIDEO_H265_SUBLAYERS_MINUS1_LIST_SIZE]; // VCL per layer ptr to sub_layer_hrd_parameters
- StdVideoH265HrdFlags flags;
-} StdVideoH265HrdParameters;
-
-typedef struct StdVideoH265VpsFlags {
- uint32_t vps_temporal_id_nesting_flag : 1;
- uint32_t vps_sub_layer_ordering_info_present_flag : 1;
- uint32_t vps_timing_info_present_flag : 1;
- uint32_t vps_poc_proportional_to_timing_flag : 1;
-} StdVideoH265VpsFlags;
-
-typedef struct StdVideoH265VideoParameterSet
-{
- uint8_t vps_video_parameter_set_id;
- uint8_t vps_max_sub_layers_minus1;
- uint32_t vps_num_units_in_tick;
- uint32_t vps_time_scale;
- uint32_t vps_num_ticks_poc_diff_one_minus1;
- StdVideoH265DecPicBufMgr* pDecPicBufMgr;
- StdVideoH265HrdParameters* pHrdParameters;
- StdVideoH265VpsFlags flags;
-} StdVideoH265VideoParameterSet;
-
-typedef struct StdVideoH265ScalingLists
-{
- uint8_t ScalingList4x4[STD_VIDEO_H265_SCALING_LIST_4X4_NUM_LISTS][STD_VIDEO_H265_SCALING_LIST_4X4_NUM_ELEMENTS]; // ScalingList[ 0 ][ MatrixID ][ i ] (sizeID = 0)
- uint8_t ScalingList8x8[STD_VIDEO_H265_SCALING_LIST_8X8_NUM_LISTS][STD_VIDEO_H265_SCALING_LIST_8X8_NUM_ELEMENTS]; // ScalingList[ 1 ][ MatrixID ][ i ] (sizeID = 1)
- uint8_t ScalingList16x16[STD_VIDEO_H265_SCALING_LIST_16X16_NUM_LISTS][STD_VIDEO_H265_SCALING_LIST_16X16_NUM_ELEMENTS]; // ScalingList[ 2 ][ MatrixID ][ i ] (sizeID = 2)
- uint8_t ScalingList32x32[STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS][STD_VIDEO_H265_SCALING_LIST_32X32_NUM_ELEMENTS]; // ScalingList[ 3 ][ MatrixID ][ i ] (sizeID = 3)
- uint8_t ScalingListDCCoef16x16[STD_VIDEO_H265_SCALING_LIST_16X16_NUM_LISTS]; // scaling_list_dc_coef_minus8[ sizeID - 2 ][ matrixID ] + 8, sizeID = 2
- uint8_t ScalingListDCCoef32x32[STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS]; // scaling_list_dc_coef_minus8[ sizeID - 2 ][ matrixID ] + 8. sizeID = 3
-} StdVideoH265ScalingLists;
-
-typedef struct StdVideoH265SpsVuiFlags {
- uint32_t aspect_ratio_info_present_flag : 1;
- uint32_t overscan_info_present_flag : 1;
- uint32_t overscan_appropriate_flag : 1;
- uint32_t video_signal_type_present_flag : 1;
- uint32_t video_full_range_flag : 1;
- uint32_t colour_description_present_flag : 1;
- uint32_t chroma_loc_info_present_flag : 1;
- uint32_t neutral_chroma_indication_flag : 1;
- uint32_t field_seq_flag : 1;
- uint32_t frame_field_info_present_flag : 1;
- uint32_t default_display_window_flag : 1;
- uint32_t vui_timing_info_present_flag : 1;
- uint32_t vui_poc_proportional_to_timing_flag : 1;
- uint32_t vui_hrd_parameters_present_flag : 1;
- uint32_t bitstream_restriction_flag : 1;
- uint32_t tiles_fixed_structure_flag : 1;
- uint32_t motion_vectors_over_pic_boundaries_flag : 1;
- uint32_t restricted_ref_pic_lists_flag : 1;
-} StdVideoH265SpsVuiFlags;
-
-typedef struct StdVideoH265SequenceParameterSetVui {
- uint8_t aspect_ratio_idc;
- uint16_t sar_width;
- uint16_t sar_height;
- uint8_t video_format;
- uint8_t colour_primaries;
- uint8_t transfer_characteristics;
- uint8_t matrix_coeffs;
- uint8_t chroma_sample_loc_type_top_field;
- uint8_t chroma_sample_loc_type_bottom_field;
- uint16_t def_disp_win_left_offset;
- uint16_t def_disp_win_right_offset;
- uint16_t def_disp_win_top_offset;
- uint16_t def_disp_win_bottom_offset;
- uint32_t vui_num_units_in_tick;
- uint32_t vui_time_scale;
- uint32_t vui_num_ticks_poc_diff_one_minus1;
- StdVideoH265HrdParameters* pHrdParameters;
- uint16_t min_spatial_segmentation_idc;
- uint8_t max_bytes_per_pic_denom;
- uint8_t max_bits_per_min_cu_denom;
- uint8_t log2_max_mv_length_horizontal;
- uint8_t log2_max_mv_length_vertical;
- StdVideoH265SpsVuiFlags flags;
-} StdVideoH265SequenceParameterSetVui;
-
-typedef struct StdVideoH265PredictorPaletteEntries
-{
- uint16_t PredictorPaletteEntries[STD_VIDEO_H265_PREDICTOR_PALETTE_COMPONENTS_LIST_SIZE][STD_VIDEO_H265_PREDICTOR_PALETTE_COMP_ENTRIES_LIST_SIZE];
-} StdVideoH265PredictorPaletteEntries;
-
-typedef struct StdVideoH265SpsFlags {
- uint32_t sps_temporal_id_nesting_flag : 1;
- uint32_t separate_colour_plane_flag : 1;
- uint32_t scaling_list_enabled_flag : 1;
- uint32_t sps_scaling_list_data_present_flag : 1;
- uint32_t amp_enabled_flag : 1;
- uint32_t sample_adaptive_offset_enabled_flag : 1;
- uint32_t pcm_enabled_flag : 1;
- uint32_t pcm_loop_filter_disabled_flag : 1;
- uint32_t long_term_ref_pics_present_flag : 1;
- uint32_t sps_temporal_mvp_enabled_flag : 1;
- uint32_t strong_intra_smoothing_enabled_flag : 1;
- uint32_t vui_parameters_present_flag : 1;
- uint32_t sps_extension_present_flag : 1;
- uint32_t sps_range_extension_flag : 1;
-
- // extension SPS flags, valid when STD_VIDEO_H265_PROFILE_IDC_FORMAT_RANGE_EXTENSIONS is set
- uint32_t transform_skip_rotation_enabled_flag : 1;
- uint32_t transform_skip_context_enabled_flag : 1;
- uint32_t implicit_rdpcm_enabled_flag : 1;
- uint32_t explicit_rdpcm_enabled_flag : 1;
- uint32_t extended_precision_processing_flag : 1;
- uint32_t intra_smoothing_disabled_flag : 1;
- uint32_t high_precision_offsets_enabled_flag : 1;
- uint32_t persistent_rice_adaptation_enabled_flag : 1;
- uint32_t cabac_bypass_alignment_enabled_flag : 1;
-
- // extension SPS flags, valid when STD_VIDEO_H265_PROFILE_IDC_SCC_EXTENSIONS is set
- uint32_t sps_curr_pic_ref_enabled_flag : 1;
- uint32_t palette_mode_enabled_flag : 1;
- uint32_t sps_palette_predictor_initializer_present_flag : 1;
- uint32_t intra_boundary_filtering_disabled_flag : 1;
-} StdVideoH265SpsFlags;
-
-typedef struct StdVideoH265SequenceParameterSet
-{
- StdVideoH265ProfileIdc profile_idc;
- StdVideoH265Level level_idc;
- uint32_t pic_width_in_luma_samples;
- uint32_t pic_height_in_luma_samples;
- uint8_t sps_video_parameter_set_id;
- uint8_t sps_max_sub_layers_minus1;
- uint8_t sps_seq_parameter_set_id;
- uint8_t chroma_format_idc;
- uint8_t bit_depth_luma_minus8;
- uint8_t bit_depth_chroma_minus8;
- uint8_t log2_max_pic_order_cnt_lsb_minus4;
- uint8_t sps_max_dec_pic_buffering_minus1;
- uint8_t log2_min_luma_coding_block_size_minus3;
- uint8_t log2_diff_max_min_luma_coding_block_size;
- uint8_t log2_min_luma_transform_block_size_minus2;
- uint8_t log2_diff_max_min_luma_transform_block_size;
- uint8_t max_transform_hierarchy_depth_inter;
- uint8_t max_transform_hierarchy_depth_intra;
- uint8_t num_short_term_ref_pic_sets;
- uint8_t num_long_term_ref_pics_sps;
- uint8_t pcm_sample_bit_depth_luma_minus1;
- uint8_t pcm_sample_bit_depth_chroma_minus1;
- uint8_t log2_min_pcm_luma_coding_block_size_minus3;
- uint8_t log2_diff_max_min_pcm_luma_coding_block_size;
- uint32_t conf_win_left_offset;
- uint32_t conf_win_right_offset;
- uint32_t conf_win_top_offset;
- uint32_t conf_win_bottom_offset;
- StdVideoH265DecPicBufMgr* pDecPicBufMgr;
- StdVideoH265SpsFlags flags;
- StdVideoH265ScalingLists* pScalingLists; // Must be a valid pointer if sps_scaling_list_data_present_flag is set
- StdVideoH265SequenceParameterSetVui* pSequenceParameterSetVui; // Must be a valid pointer if StdVideoH265SpsFlags:vui_parameters_present_flag is set palette_max_size;
-
- // extension SPS flags, valid when STD_VIDEO_H265_PROFILE_IDC_SCC_EXTENSIONS is set
- uint8_t palette_max_size;
- uint8_t delta_palette_max_predictor_size;
- uint8_t motion_vector_resolution_control_idc;
- uint8_t sps_num_palette_predictor_initializer_minus1;
- StdVideoH265PredictorPaletteEntries* pPredictorPaletteEntries; // Must be a valid pointer if sps_palette_predictor_initializer_present_flag is set
-} StdVideoH265SequenceParameterSet;
-
-
-typedef struct StdVideoH265PpsFlags {
- uint32_t dependent_slice_segments_enabled_flag : 1;
- uint32_t output_flag_present_flag : 1;
- uint32_t sign_data_hiding_enabled_flag : 1;
- uint32_t cabac_init_present_flag : 1;
- uint32_t constrained_intra_pred_flag : 1;
- uint32_t transform_skip_enabled_flag : 1;
- uint32_t cu_qp_delta_enabled_flag : 1;
- uint32_t pps_slice_chroma_qp_offsets_present_flag : 1;
- uint32_t weighted_pred_flag : 1;
- uint32_t weighted_bipred_flag : 1;
- uint32_t transquant_bypass_enabled_flag : 1;
- uint32_t tiles_enabled_flag : 1;
- uint32_t entropy_coding_sync_enabled_flag : 1;
- uint32_t uniform_spacing_flag : 1;
- uint32_t loop_filter_across_tiles_enabled_flag : 1;
- uint32_t pps_loop_filter_across_slices_enabled_flag : 1;
- uint32_t deblocking_filter_control_present_flag : 1;
- uint32_t deblocking_filter_override_enabled_flag : 1;
- uint32_t pps_deblocking_filter_disabled_flag : 1;
- uint32_t pps_scaling_list_data_present_flag : 1;
- uint32_t lists_modification_present_flag : 1;
- uint32_t slice_segment_header_extension_present_flag : 1;
- uint32_t pps_extension_present_flag : 1;
-
- // extension PPS flags, valid when STD_VIDEO_H265_PROFILE_IDC_FORMAT_RANGE_EXTENSIONS is set
- uint32_t cross_component_prediction_enabled_flag : 1;
- uint32_t chroma_qp_offset_list_enabled_flag : 1;
-
- // extension PPS flags, valid when STD_VIDEO_H265_PROFILE_IDC_SCC_EXTENSIONS is set
- uint32_t pps_curr_pic_ref_enabled_flag : 1;
- uint32_t residual_adaptive_colour_transform_enabled_flag : 1;
- uint32_t pps_slice_act_qp_offsets_present_flag : 1;
- uint32_t pps_palette_predictor_initializer_present_flag : 1;
- uint32_t monochrome_palette_flag : 1;
- uint32_t pps_range_extension_flag : 1;
-} StdVideoH265PpsFlags;
-
-typedef struct StdVideoH265PictureParameterSet
-{
- uint8_t pps_pic_parameter_set_id;
- uint8_t pps_seq_parameter_set_id;
- uint8_t num_extra_slice_header_bits;
- uint8_t num_ref_idx_l0_default_active_minus1;
- uint8_t num_ref_idx_l1_default_active_minus1;
- int8_t init_qp_minus26;
- uint8_t diff_cu_qp_delta_depth;
- int8_t pps_cb_qp_offset;
- int8_t pps_cr_qp_offset;
- uint8_t num_tile_columns_minus1;
- uint8_t num_tile_rows_minus1;
- uint16_t column_width_minus1[STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_COLS_LIST_SIZE];
- uint16_t row_height_minus1[STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_ROWS_LIST_SIZE];
- int8_t pps_beta_offset_div2;
- int8_t pps_tc_offset_div2;
- uint8_t log2_parallel_merge_level_minus2;
- StdVideoH265PpsFlags flags;
- StdVideoH265ScalingLists* pScalingLists; // Must be a valid pointer if pps_scaling_list_data_present_flag is set
-
- // extension PPS, valid when STD_VIDEO_H265_PROFILE_IDC_FORMAT_RANGE_EXTENSIONS is set
- uint8_t log2_max_transform_skip_block_size_minus2;
- uint8_t diff_cu_chroma_qp_offset_depth;
- uint8_t chroma_qp_offset_list_len_minus1;
- int8_t cb_qp_offset_list[STD_VIDEO_H265_CHROMA_QP_OFFSET_LIST_SIZE];
- int8_t cr_qp_offset_list[STD_VIDEO_H265_CHROMA_QP_OFFSET_LIST_SIZE];
- uint8_t log2_sao_offset_scale_luma;
- uint8_t log2_sao_offset_scale_chroma;
-
- // extension PPS, valid when STD_VIDEO_H265_PROFILE_IDC_SCC_EXTENSIONS is set
- int8_t pps_act_y_qp_offset_plus5;
- int8_t pps_act_cb_qp_offset_plus5;
- int8_t pps_act_cr_qp_offset_plus5;
- uint8_t pps_num_palette_predictor_initializer;
- uint8_t luma_bit_depth_entry_minus8;
- uint8_t chroma_bit_depth_entry_minus8;
- StdVideoH265PredictorPaletteEntries* pPredictorPaletteEntries; // Must be a valid pointer if pps_palette_predictor_initializer_present_flag is set
-} StdVideoH265PictureParameterSet;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // VULKAN_VIDEO_CODEC_H265STD_H_
diff --git a/common/vulkan/include/vk_video/vulkan_video_codec_h265std_decode.h b/common/vulkan/include/vk_video/vulkan_video_codec_h265std_decode.h
deleted file mode 100644
index a1efa055..00000000
--- a/common/vulkan/include/vk_video/vulkan_video_codec_h265std_decode.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
-** Copyright (c) 2019-2021 The Khronos Group Inc.
-**
-** SPDX-License-Identifier: Apache-2.0
-*/
-
-#ifndef VULKAN_VIDEO_CODEC_H265STD_DECODE_H_
-#define VULKAN_VIDEO_CODEC_H265STD_DECODE_H_ 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "vk_video/vulkan_video_codec_h265std.h"
-
-// *************************************************
-// Video h265 Decode related parameters:
-// *************************************************
-
-#define STD_VIDEO_DECODE_H265_REF_PIC_SET_LIST_SIZE 8
-
-typedef struct StdVideoDecodeH265PictureInfoFlags {
- uint32_t IrapPicFlag : 1;
- uint32_t IdrPicFlag : 1;
- uint32_t IsReference : 1;
- uint32_t short_term_ref_pic_set_sps_flag : 1;
-} StdVideoDecodeH265PictureInfoFlags;
-
-typedef struct StdVideoDecodeH265PictureInfo {
- uint8_t vps_video_parameter_set_id;
- uint8_t sps_seq_parameter_set_id;
- uint8_t pps_pic_parameter_set_id;
- uint8_t num_short_term_ref_pic_sets;
- int32_t PicOrderCntVal;
- uint16_t NumBitsForSTRefPicSetInSlice; // number of bits used in st_ref_pic_set()
- //when short_term_ref_pic_set_sps_flag is 0; otherwise set to 0.
- uint8_t NumDeltaPocsOfRefRpsIdx; // NumDeltaPocs[ RefRpsIdx ] when short_term_ref_pic_set_sps_flag = 1, otherwise 0
- uint8_t RefPicSetStCurrBefore[STD_VIDEO_DECODE_H265_REF_PIC_SET_LIST_SIZE]; // slotIndex as used in
- // VkVideoReferenceSlotKHR structures representing
- //pReferenceSlots in VkVideoDecodeInfoKHR, 0xff for invalid slotIndex
- uint8_t RefPicSetStCurrAfter[STD_VIDEO_DECODE_H265_REF_PIC_SET_LIST_SIZE]; // slotIndex as used in
- // VkVideoReferenceSlotKHR structures representing
- //pReferenceSlots in VkVideoDecodeInfoKHR, 0xff for invalid slotIndex
- uint8_t RefPicSetLtCurr[STD_VIDEO_DECODE_H265_REF_PIC_SET_LIST_SIZE]; // slotIndex as used in
- // VkVideoReferenceSlotKHR structures representing
- //pReferenceSlots in VkVideoDecodeInfoKHR, 0xff for invalid slotIndex
- StdVideoDecodeH265PictureInfoFlags flags;
-} StdVideoDecodeH265PictureInfo;
-
-typedef struct StdVideoDecodeH265ReferenceInfoFlags {
- uint32_t is_long_term : 1;
- uint32_t is_non_existing : 1;
-} StdVideoDecodeH265ReferenceInfoFlags;
-
-typedef struct StdVideoDecodeH265ReferenceInfo {
- int32_t PicOrderCntVal;
- StdVideoDecodeH265ReferenceInfoFlags flags;
-} StdVideoDecodeH265ReferenceInfo;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // VULKAN_VIDEO_CODEC_H265STD_DECODE_H_
diff --git a/common/vulkan/include/vk_video/vulkan_video_codec_h265std_encode.h b/common/vulkan/include/vk_video/vulkan_video_codec_h265std_encode.h
deleted file mode 100644
index ffffef20..00000000
--- a/common/vulkan/include/vk_video/vulkan_video_codec_h265std_encode.h
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
-** Copyright (c) 2019-2021 The Khronos Group Inc.
-**
-** SPDX-License-Identifier: Apache-2.0
-*/
-
-#ifndef VULKAN_VIDEO_CODEC_H265STD_ENCODE_H_
-#define VULKAN_VIDEO_CODEC_H265STD_ENCODE_H_ 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "vk_video/vulkan_video_codec_h265std.h"
-
-// *************************************************
-// Video h265 Encode related parameters:
-// *************************************************
-
-#define STD_VIDEO_ENCODE_H265_LUMA_LIST_SIZE 15
-#define STD_VIDEO_ENCODE_H265_CHROMA_LIST_SIZE 15
-#define STD_VIDEO_ENCODE_H265_CHROMA_LISTS_NUM 2
-
-typedef struct StdVideoEncodeH265SliceHeaderFlags {
- uint32_t first_slice_segment_in_pic_flag : 1;
- uint32_t no_output_of_prior_pics_flag : 1;
- uint32_t dependent_slice_segment_flag : 1;
- uint32_t short_term_ref_pic_set_sps_flag : 1;
- uint32_t slice_temporal_mvp_enable_flag : 1;
- uint32_t slice_sao_luma_flag : 1;
- uint32_t slice_sao_chroma_flag : 1;
- uint32_t num_ref_idx_active_override_flag : 1;
- uint32_t mvd_l1_zero_flag : 1;
- uint32_t cabac_init_flag : 1;
- uint32_t slice_deblocking_filter_disable_flag : 1;
- uint32_t collocated_from_l0_flag : 1;
- uint32_t slice_loop_filter_across_slices_enabled_flag : 1;
- uint32_t bLastSliceInPic : 1;
- uint32_t reservedBits : 18;
- uint16_t luma_weight_l0_flag; // bit 0 - num_ref_idx_l0_active_minus1
- uint16_t chroma_weight_l0_flag; // bit 0 - num_ref_idx_l0_active_minus1
- uint16_t luma_weight_l1_flag; // bit 0 - num_ref_idx_l1_active_minus1
- uint16_t chroma_weight_l1_flag; // bit 0 - num_ref_idx_l1_active_minus1
-} StdVideoEncodeH265SliceHeaderFlags;
-
-typedef struct StdVideoEncodeH265SliceHeader {
- StdVideoH265SliceType slice_type;
- uint8_t slice_pic_parameter_set_id;
- uint8_t num_short_term_ref_pic_sets;
- uint32_t slice_segment_address;
- uint8_t short_term_ref_pic_set_idx;
- uint8_t num_long_term_sps;
- uint8_t num_long_term_pics;
- uint8_t collocated_ref_idx;
- uint8_t num_ref_idx_l0_active_minus1; // [0, 14]
- uint8_t num_ref_idx_l1_active_minus1; // [0, 14]
- uint8_t luma_log2_weight_denom; // [0, 7]
- int8_t delta_chroma_log2_weight_denom;
- int8_t delta_luma_weight_l0[STD_VIDEO_ENCODE_H265_LUMA_LIST_SIZE];
- int8_t luma_offset_l0[STD_VIDEO_ENCODE_H265_LUMA_LIST_SIZE];
- int8_t delta_chroma_weight_l0[STD_VIDEO_ENCODE_H265_CHROMA_LIST_SIZE][STD_VIDEO_ENCODE_H265_CHROMA_LISTS_NUM];
- int8_t delta_chroma_offset_l0[STD_VIDEO_ENCODE_H265_CHROMA_LIST_SIZE][STD_VIDEO_ENCODE_H265_CHROMA_LISTS_NUM];
- int8_t delta_luma_weight_l1[STD_VIDEO_ENCODE_H265_LUMA_LIST_SIZE];
- int8_t luma_offset_l1[STD_VIDEO_ENCODE_H265_LUMA_LIST_SIZE];
- int8_t delta_chroma_weight_l1[STD_VIDEO_ENCODE_H265_CHROMA_LIST_SIZE][STD_VIDEO_ENCODE_H265_CHROMA_LISTS_NUM];
- int8_t delta_chroma_offset_l1[STD_VIDEO_ENCODE_H265_CHROMA_LIST_SIZE][STD_VIDEO_ENCODE_H265_CHROMA_LISTS_NUM];
- uint8_t MaxNumMergeCand;
- int8_t slice_qp_delta;
- int8_t slice_cb_qp_offset; // [-12, 12]
- int8_t slice_cr_qp_offset; // [-12, 12]
- int8_t slice_beta_offset_div2; // [-6, 6]
- int8_t slice_tc_offset_div2; // [-6, 6]
- int8_t slice_act_y_qp_offset;
- int8_t slice_act_cb_qp_offset;
- int8_t slice_act_cr_qp_offset;
- StdVideoEncodeH265SliceHeaderFlags flags;
-} StdVideoEncodeH265SliceHeader;
-
-typedef struct StdVideoEncodeH265ReferenceModificationFlags {
- uint32_t ref_pic_list_modification_flag_l0 : 1;
- uint32_t ref_pic_list_modification_flag_l1 : 1;
-} StdVideoEncodeH265ReferenceModificationFlags;
-
-typedef struct StdVideoEncodeH265ReferenceModifications {
- StdVideoEncodeH265ReferenceModificationFlags flags;
- uint8_t referenceList0ModificationsCount; // num_ref_idx_l0_active_minus1
- uint8_t* pReferenceList0Modifications; // list_entry_l0
- uint8_t referenceList1ModificationsCount; // num_ref_idx_l1_active_minus1
- uint8_t* pReferenceList1Modifications; // list_entry_l1
-} StdVideoEncodeH265ReferenceModifications;
-
-typedef struct StdVideoEncodeH265PictureInfoFlags {
- uint32_t is_reference_flag : 1;
- uint32_t IrapPicFlag : 1;
- uint32_t long_term_flag : 1;
-} StdVideoEncodeH265PictureInfoFlags;
-
-typedef struct StdVideoEncodeH265PictureInfo {
- StdVideoH265PictureType PictureType;
- uint8_t sps_video_parameter_set_id;
- uint8_t pps_seq_parameter_set_id;
- int32_t PicOrderCntVal;
- uint8_t TemporalId;
- StdVideoEncodeH265PictureInfoFlags flags;
-} StdVideoEncodeH265PictureInfo;
-
-typedef struct StdVideoEncodeH265ReferenceInfoFlags {
- uint32_t is_long_term : 1;
- uint32_t isUsedFlag : 1;
-} StdVideoEncodeH265ReferenceInfoFlags;
-
-typedef struct StdVideoEncodeH265ReferenceInfo {
- int32_t PicOrderCntVal;
- uint8_t TemporalId;
- StdVideoEncodeH265ReferenceInfoFlags flags;
-} StdVideoEncodeH265ReferenceInfo;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // VULKAN_VIDEO_CODEC_H265STD_ENCODE_H_
diff --git a/common/vulkan/include/vk_video/vulkan_video_codecs_common.h b/common/vulkan/include/vk_video/vulkan_video_codecs_common.h
deleted file mode 100644
index 8cc227a6..00000000
--- a/common/vulkan/include/vk_video/vulkan_video_codecs_common.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
-** Copyright (c) 2019-2021 The Khronos Group Inc.
-**
-** SPDX-License-Identifier: Apache-2.0
-*/
-
-#ifndef VULKAN_VIDEO_CODEC_COMMON_H_
-#define VULKAN_VIDEO_CODEC_COMMON_H_ 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define VK_MAKE_VIDEO_STD_VERSION(major, minor, patch) \
- ((((uint32_t)(major)) << 22) | (((uint32_t)(minor)) << 12) | ((uint32_t)(patch)))
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // VULKAN_VIDEO_CODEC_COMMON_H_
diff --git a/common/vulkan/include/vulkan/vk_platform.h b/common/vulkan/include/vulkan/vk_platform.h
deleted file mode 100644
index 18b913ab..00000000
--- a/common/vulkan/include/vulkan/vk_platform.h
+++ /dev/null
@@ -1,84 +0,0 @@
-//
-// File: vk_platform.h
-//
-/*
-** Copyright 2014-2021 The Khronos Group Inc.
-**
-** SPDX-License-Identifier: Apache-2.0
-*/
-
-
-#ifndef VK_PLATFORM_H_
-#define VK_PLATFORM_H_
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif // __cplusplus
-
-/*
-***************************************************************************************************
-* Platform-specific directives and type declarations
-***************************************************************************************************
-*/
-
-/* Platform-specific calling convention macros.
- *
- * Platforms should define these so that Vulkan clients call Vulkan commands
- * with the same calling conventions that the Vulkan implementation expects.
- *
- * VKAPI_ATTR - Placed before the return type in function declarations.
- * Useful for C++11 and GCC/Clang-style function attribute syntax.
- * VKAPI_CALL - Placed after the return type in function declarations.
- * Useful for MSVC-style calling convention syntax.
- * VKAPI_PTR - Placed between the '(' and '*' in function pointer types.
- *
- * Function declaration: VKAPI_ATTR void VKAPI_CALL vkCommand(void);
- * Function pointer type: typedef void (VKAPI_PTR *PFN_vkCommand)(void);
- */
-#if defined(_WIN32)
- // On Windows, Vulkan commands use the stdcall convention
- #define VKAPI_ATTR
- #define VKAPI_CALL __stdcall
- #define VKAPI_PTR VKAPI_CALL
-#elif defined(__ANDROID__) && defined(__ARM_ARCH) && __ARM_ARCH < 7
- #error "Vulkan isn't supported for the 'armeabi' NDK ABI"
-#elif defined(__ANDROID__) && defined(__ARM_ARCH) && __ARM_ARCH >= 7 && defined(__ARM_32BIT_STATE)
- // On Android 32-bit ARM targets, Vulkan functions use the "hardfloat"
- // calling convention, i.e. float parameters are passed in registers. This
- // is true even if the rest of the application passes floats on the stack,
- // as it does by default when compiling for the armeabi-v7a NDK ABI.
- #define VKAPI_ATTR __attribute__((pcs("aapcs-vfp")))
- #define VKAPI_CALL
- #define VKAPI_PTR VKAPI_ATTR
-#else
- // On other platforms, use the default calling convention
- #define VKAPI_ATTR
- #define VKAPI_CALL
- #define VKAPI_PTR
-#endif
-
-#if !defined(VK_NO_STDDEF_H)
- #include <stddef.h>
-#endif // !defined(VK_NO_STDDEF_H)
-
-#if !defined(VK_NO_STDINT_H)
- #if defined(_MSC_VER) && (_MSC_VER < 1600)
- typedef signed __int8 int8_t;
- typedef unsigned __int8 uint8_t;
- typedef signed __int16 int16_t;
- typedef unsigned __int16 uint16_t;
- typedef signed __int32 int32_t;
- typedef unsigned __int32 uint32_t;
- typedef signed __int64 int64_t;
- typedef unsigned __int64 uint64_t;
- #else
- #include <stdint.h>
- #endif
-#endif // !defined(VK_NO_STDINT_H)
-
-#ifdef __cplusplus
-} // extern "C"
-#endif // __cplusplus
-
-#endif
diff --git a/common/vulkan/include/vulkan/vulkan.h b/common/vulkan/include/vulkan/vulkan.h
deleted file mode 100644
index 3f7cdba5..00000000
--- a/common/vulkan/include/vulkan/vulkan.h
+++ /dev/null
@@ -1,92 +0,0 @@
-#ifndef VULKAN_H_
-#define VULKAN_H_ 1
-
-/*
-** Copyright 2015-2021 The Khronos Group Inc.
-**
-** SPDX-License-Identifier: Apache-2.0
-*/
-
-#include "vk_platform.h"
-#include "vulkan_core.h"
-
-#ifdef VK_USE_PLATFORM_ANDROID_KHR
-#include "vulkan_android.h"
-#endif
-
-#ifdef VK_USE_PLATFORM_FUCHSIA
-#include <zircon/types.h>
-#include "vulkan_fuchsia.h"
-#endif
-
-#ifdef VK_USE_PLATFORM_IOS_MVK
-#include "vulkan_ios.h"
-#endif
-
-
-#ifdef VK_USE_PLATFORM_MACOS_MVK
-#include "vulkan_macos.h"
-#endif
-
-#ifdef VK_USE_PLATFORM_METAL_EXT
-#include "vulkan_metal.h"
-#endif
-
-#ifdef VK_USE_PLATFORM_VI_NN
-#include "vulkan_vi.h"
-#endif
-
-
-#ifdef VK_USE_PLATFORM_WAYLAND_KHR
-#include <wayland-client.h>
-#include "vulkan_wayland.h"
-#endif
-
-
-#ifdef VK_USE_PLATFORM_WIN32_KHR
-#include <windows.h>
-#include "vulkan_win32.h"
-#endif
-
-
-#ifdef VK_USE_PLATFORM_XCB_KHR
-#include <xcb/xcb.h>
-#include "vulkan_xcb.h"
-#endif
-
-
-#ifdef VK_USE_PLATFORM_XLIB_KHR
-#include <X11/Xlib.h>
-#include "vulkan_xlib.h"
-#endif
-
-
-#ifdef VK_USE_PLATFORM_DIRECTFB_EXT
-#include <directfb.h>
-#include "vulkan_directfb.h"
-#endif
-
-
-#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
-#include <X11/Xlib.h>
-#include <X11/extensions/Xrandr.h>
-#include "vulkan_xlib_xrandr.h"
-#endif
-
-
-#ifdef VK_USE_PLATFORM_GGP
-#include <ggp_c/vulkan_types.h>
-#include "vulkan_ggp.h"
-#endif
-
-
-#ifdef VK_USE_PLATFORM_SCREEN_QNX
-#include <screen/screen.h>
-#include "vulkan_screen.h"
-#endif
-
-#ifdef VK_ENABLE_BETA_EXTENSIONS
-#include "vulkan_beta.h"
-#endif
-
-#endif // VULKAN_H_
diff --git a/common/vulkan/include/vulkan/vulkan_android.h b/common/vulkan/include/vulkan/vulkan_android.h
deleted file mode 100644
index a8a83067..00000000
--- a/common/vulkan/include/vulkan/vulkan_android.h
+++ /dev/null
@@ -1,125 +0,0 @@
-#ifndef VULKAN_ANDROID_H_
-#define VULKAN_ANDROID_H_ 1
-
-/*
-** Copyright 2015-2021 The Khronos Group Inc.
-**
-** SPDX-License-Identifier: Apache-2.0
-*/
-
-/*
-** This header is generated from the Khronos Vulkan XML API Registry.
-**
-*/
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-
-#define VK_KHR_android_surface 1
-struct ANativeWindow;
-#define VK_KHR_ANDROID_SURFACE_SPEC_VERSION 6
-#define VK_KHR_ANDROID_SURFACE_EXTENSION_NAME "VK_KHR_android_surface"
-typedef VkFlags VkAndroidSurfaceCreateFlagsKHR;
-typedef struct VkAndroidSurfaceCreateInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkAndroidSurfaceCreateFlagsKHR flags;
- struct ANativeWindow* window;
-} VkAndroidSurfaceCreateInfoKHR;
-
-typedef VkResult (VKAPI_PTR *PFN_vkCreateAndroidSurfaceKHR)(VkInstance instance, const VkAndroidSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateAndroidSurfaceKHR(
- VkInstance instance,
- const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkSurfaceKHR* pSurface);
-#endif
-
-
-#define VK_ANDROID_external_memory_android_hardware_buffer 1
-struct AHardwareBuffer;
-#define VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION 4
-#define VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME "VK_ANDROID_external_memory_android_hardware_buffer"
-typedef struct VkAndroidHardwareBufferUsageANDROID {
- VkStructureType sType;
- void* pNext;
- uint64_t androidHardwareBufferUsage;
-} VkAndroidHardwareBufferUsageANDROID;
-
-typedef struct VkAndroidHardwareBufferPropertiesANDROID {
- VkStructureType sType;
- void* pNext;
- VkDeviceSize allocationSize;
- uint32_t memoryTypeBits;
-} VkAndroidHardwareBufferPropertiesANDROID;
-
-typedef struct VkAndroidHardwareBufferFormatPropertiesANDROID {
- VkStructureType sType;
- void* pNext;
- VkFormat format;
- uint64_t externalFormat;
- VkFormatFeatureFlags formatFeatures;
- VkComponentMapping samplerYcbcrConversionComponents;
- VkSamplerYcbcrModelConversion suggestedYcbcrModel;
- VkSamplerYcbcrRange suggestedYcbcrRange;
- VkChromaLocation suggestedXChromaOffset;
- VkChromaLocation suggestedYChromaOffset;
-} VkAndroidHardwareBufferFormatPropertiesANDROID;
-
-typedef struct VkImportAndroidHardwareBufferInfoANDROID {
- VkStructureType sType;
- const void* pNext;
- struct AHardwareBuffer* buffer;
-} VkImportAndroidHardwareBufferInfoANDROID;
-
-typedef struct VkMemoryGetAndroidHardwareBufferInfoANDROID {
- VkStructureType sType;
- const void* pNext;
- VkDeviceMemory memory;
-} VkMemoryGetAndroidHardwareBufferInfoANDROID;
-
-typedef struct VkExternalFormatANDROID {
- VkStructureType sType;
- void* pNext;
- uint64_t externalFormat;
-} VkExternalFormatANDROID;
-
-typedef struct VkAndroidHardwareBufferFormatProperties2ANDROID {
- VkStructureType sType;
- void* pNext;
- VkFormat format;
- uint64_t externalFormat;
- VkFormatFeatureFlags2KHR formatFeatures;
- VkComponentMapping samplerYcbcrConversionComponents;
- VkSamplerYcbcrModelConversion suggestedYcbcrModel;
- VkSamplerYcbcrRange suggestedYcbcrRange;
- VkChromaLocation suggestedXChromaOffset;
- VkChromaLocation suggestedYChromaOffset;
-} VkAndroidHardwareBufferFormatProperties2ANDROID;
-
-typedef VkResult (VKAPI_PTR *PFN_vkGetAndroidHardwareBufferPropertiesANDROID)(VkDevice device, const struct AHardwareBuffer* buffer, VkAndroidHardwareBufferPropertiesANDROID* pProperties);
-typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryAndroidHardwareBufferANDROID)(VkDevice device, const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo, struct AHardwareBuffer** pBuffer);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkGetAndroidHardwareBufferPropertiesANDROID(
- VkDevice device,
- const struct AHardwareBuffer* buffer,
- VkAndroidHardwareBufferPropertiesANDROID* pProperties);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryAndroidHardwareBufferANDROID(
- VkDevice device,
- const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
- struct AHardwareBuffer** pBuffer);
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/common/vulkan/include/vulkan/vulkan_beta.h b/common/vulkan/include/vulkan/vulkan_beta.h
deleted file mode 100644
index d2f34d1c..00000000
--- a/common/vulkan/include/vulkan/vulkan_beta.h
+++ /dev/null
@@ -1,833 +0,0 @@
-#ifndef VULKAN_BETA_H_
-#define VULKAN_BETA_H_ 1
-
-/*
-** Copyright 2015-2021 The Khronos Group Inc.
-**
-** SPDX-License-Identifier: Apache-2.0
-*/
-
-/*
-** This header is generated from the Khronos Vulkan XML API Registry.
-**
-*/
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-
-#define VK_KHR_video_queue 1
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkVideoSessionKHR)
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkVideoSessionParametersKHR)
-#define VK_KHR_VIDEO_QUEUE_SPEC_VERSION 2
-#define VK_KHR_VIDEO_QUEUE_EXTENSION_NAME "VK_KHR_video_queue"
-
-typedef enum VkQueryResultStatusKHR {
- VK_QUERY_RESULT_STATUS_ERROR_KHR = -1,
- VK_QUERY_RESULT_STATUS_NOT_READY_KHR = 0,
- VK_QUERY_RESULT_STATUS_COMPLETE_KHR = 1,
- VK_QUERY_RESULT_STATUS_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkQueryResultStatusKHR;
-
-typedef enum VkVideoCodecOperationFlagBitsKHR {
- VK_VIDEO_CODEC_OPERATION_INVALID_BIT_KHR = 0,
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT = 0x00010000,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT = 0x00020000,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_EXT = 0x00000001,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_EXT = 0x00000002,
-#endif
- VK_VIDEO_CODEC_OPERATION_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkVideoCodecOperationFlagBitsKHR;
-typedef VkFlags VkVideoCodecOperationFlagsKHR;
-
-typedef enum VkVideoChromaSubsamplingFlagBitsKHR {
- VK_VIDEO_CHROMA_SUBSAMPLING_INVALID_BIT_KHR = 0,
- VK_VIDEO_CHROMA_SUBSAMPLING_MONOCHROME_BIT_KHR = 0x00000001,
- VK_VIDEO_CHROMA_SUBSAMPLING_420_BIT_KHR = 0x00000002,
- VK_VIDEO_CHROMA_SUBSAMPLING_422_BIT_KHR = 0x00000004,
- VK_VIDEO_CHROMA_SUBSAMPLING_444_BIT_KHR = 0x00000008,
- VK_VIDEO_CHROMA_SUBSAMPLING_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkVideoChromaSubsamplingFlagBitsKHR;
-typedef VkFlags VkVideoChromaSubsamplingFlagsKHR;
-
-typedef enum VkVideoComponentBitDepthFlagBitsKHR {
- VK_VIDEO_COMPONENT_BIT_DEPTH_INVALID_KHR = 0,
- VK_VIDEO_COMPONENT_BIT_DEPTH_8_BIT_KHR = 0x00000001,
- VK_VIDEO_COMPONENT_BIT_DEPTH_10_BIT_KHR = 0x00000004,
- VK_VIDEO_COMPONENT_BIT_DEPTH_12_BIT_KHR = 0x00000010,
- VK_VIDEO_COMPONENT_BIT_DEPTH_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkVideoComponentBitDepthFlagBitsKHR;
-typedef VkFlags VkVideoComponentBitDepthFlagsKHR;
-
-typedef enum VkVideoCapabilityFlagBitsKHR {
- VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR = 0x00000001,
- VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR = 0x00000002,
- VK_VIDEO_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkVideoCapabilityFlagBitsKHR;
-typedef VkFlags VkVideoCapabilityFlagsKHR;
-
-typedef enum VkVideoSessionCreateFlagBitsKHR {
- VK_VIDEO_SESSION_CREATE_DEFAULT_KHR = 0,
- VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR = 0x00000001,
- VK_VIDEO_SESSION_CREATE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkVideoSessionCreateFlagBitsKHR;
-typedef VkFlags VkVideoSessionCreateFlagsKHR;
-typedef VkFlags VkVideoBeginCodingFlagsKHR;
-typedef VkFlags VkVideoEndCodingFlagsKHR;
-
-typedef enum VkVideoCodingControlFlagBitsKHR {
- VK_VIDEO_CODING_CONTROL_DEFAULT_KHR = 0,
- VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR = 0x00000001,
- VK_VIDEO_CODING_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkVideoCodingControlFlagBitsKHR;
-typedef VkFlags VkVideoCodingControlFlagsKHR;
-
-typedef enum VkVideoCodingQualityPresetFlagBitsKHR {
- VK_VIDEO_CODING_QUALITY_PRESET_NORMAL_BIT_KHR = 0x00000001,
- VK_VIDEO_CODING_QUALITY_PRESET_POWER_BIT_KHR = 0x00000002,
- VK_VIDEO_CODING_QUALITY_PRESET_QUALITY_BIT_KHR = 0x00000004,
- VK_VIDEO_CODING_QUALITY_PRESET_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkVideoCodingQualityPresetFlagBitsKHR;
-typedef VkFlags VkVideoCodingQualityPresetFlagsKHR;
-typedef struct VkVideoQueueFamilyProperties2KHR {
- VkStructureType sType;
- void* pNext;
- VkVideoCodecOperationFlagsKHR videoCodecOperations;
-} VkVideoQueueFamilyProperties2KHR;
-
-typedef struct VkVideoProfileKHR {
- VkStructureType sType;
- void* pNext;
- VkVideoCodecOperationFlagBitsKHR videoCodecOperation;
- VkVideoChromaSubsamplingFlagsKHR chromaSubsampling;
- VkVideoComponentBitDepthFlagsKHR lumaBitDepth;
- VkVideoComponentBitDepthFlagsKHR chromaBitDepth;
-} VkVideoProfileKHR;
-
-typedef struct VkVideoProfilesKHR {
- VkStructureType sType;
- void* pNext;
- uint32_t profileCount;
- const VkVideoProfileKHR* pProfiles;
-} VkVideoProfilesKHR;
-
-typedef struct VkVideoCapabilitiesKHR {
- VkStructureType sType;
- void* pNext;
- VkVideoCapabilityFlagsKHR capabilityFlags;
- VkDeviceSize minBitstreamBufferOffsetAlignment;
- VkDeviceSize minBitstreamBufferSizeAlignment;
- VkExtent2D videoPictureExtentGranularity;
- VkExtent2D minExtent;
- VkExtent2D maxExtent;
- uint32_t maxReferencePicturesSlotsCount;
- uint32_t maxReferencePicturesActiveCount;
-} VkVideoCapabilitiesKHR;
-
-typedef struct VkPhysicalDeviceVideoFormatInfoKHR {
- VkStructureType sType;
- void* pNext;
- VkImageUsageFlags imageUsage;
- const VkVideoProfilesKHR* pVideoProfiles;
-} VkPhysicalDeviceVideoFormatInfoKHR;
-
-typedef struct VkVideoFormatPropertiesKHR {
- VkStructureType sType;
- void* pNext;
- VkFormat format;
-} VkVideoFormatPropertiesKHR;
-
-typedef struct VkVideoPictureResourceKHR {
- VkStructureType sType;
- const void* pNext;
- VkOffset2D codedOffset;
- VkExtent2D codedExtent;
- uint32_t baseArrayLayer;
- VkImageView imageViewBinding;
-} VkVideoPictureResourceKHR;
-
-typedef struct VkVideoReferenceSlotKHR {
- VkStructureType sType;
- const void* pNext;
- int8_t slotIndex;
- const VkVideoPictureResourceKHR* pPictureResource;
-} VkVideoReferenceSlotKHR;
-
-typedef struct VkVideoGetMemoryPropertiesKHR {
- VkStructureType sType;
- const void* pNext;
- uint32_t memoryBindIndex;
- VkMemoryRequirements2* pMemoryRequirements;
-} VkVideoGetMemoryPropertiesKHR;
-
-typedef struct VkVideoBindMemoryKHR {
- VkStructureType sType;
- const void* pNext;
- uint32_t memoryBindIndex;
- VkDeviceMemory memory;
- VkDeviceSize memoryOffset;
- VkDeviceSize memorySize;
-} VkVideoBindMemoryKHR;
-
-typedef struct VkVideoSessionCreateInfoKHR {
- VkStructureType sType;
- const void* pNext;
- uint32_t queueFamilyIndex;
- VkVideoSessionCreateFlagsKHR flags;
- const VkVideoProfileKHR* pVideoProfile;
- VkFormat pictureFormat;
- VkExtent2D maxCodedExtent;
- VkFormat referencePicturesFormat;
- uint32_t maxReferencePicturesSlotsCount;
- uint32_t maxReferencePicturesActiveCount;
-} VkVideoSessionCreateInfoKHR;
-
-typedef struct VkVideoSessionParametersCreateInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkVideoSessionParametersKHR videoSessionParametersTemplate;
- VkVideoSessionKHR videoSession;
-} VkVideoSessionParametersCreateInfoKHR;
-
-typedef struct VkVideoSessionParametersUpdateInfoKHR {
- VkStructureType sType;
- const void* pNext;
- uint32_t updateSequenceCount;
-} VkVideoSessionParametersUpdateInfoKHR;
-
-typedef struct VkVideoBeginCodingInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkVideoBeginCodingFlagsKHR flags;
- VkVideoCodingQualityPresetFlagsKHR codecQualityPreset;
- VkVideoSessionKHR videoSession;
- VkVideoSessionParametersKHR videoSessionParameters;
- uint32_t referenceSlotCount;
- const VkVideoReferenceSlotKHR* pReferenceSlots;
-} VkVideoBeginCodingInfoKHR;
-
-typedef struct VkVideoEndCodingInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkVideoEndCodingFlagsKHR flags;
-} VkVideoEndCodingInfoKHR;
-
-typedef struct VkVideoCodingControlInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkVideoCodingControlFlagsKHR flags;
-} VkVideoCodingControlInfoKHR;
-
-typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR)(VkPhysicalDevice physicalDevice, const VkVideoProfileKHR* pVideoProfile, VkVideoCapabilitiesKHR* pCapabilities);
-typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceVideoFormatInfoKHR* pVideoFormatInfo, uint32_t* pVideoFormatPropertyCount, VkVideoFormatPropertiesKHR* pVideoFormatProperties);
-typedef VkResult (VKAPI_PTR *PFN_vkCreateVideoSessionKHR)(VkDevice device, const VkVideoSessionCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkVideoSessionKHR* pVideoSession);
-typedef void (VKAPI_PTR *PFN_vkDestroyVideoSessionKHR)(VkDevice device, VkVideoSessionKHR videoSession, const VkAllocationCallbacks* pAllocator);
-typedef VkResult (VKAPI_PTR *PFN_vkGetVideoSessionMemoryRequirementsKHR)(VkDevice device, VkVideoSessionKHR videoSession, uint32_t* pVideoSessionMemoryRequirementsCount, VkVideoGetMemoryPropertiesKHR* pVideoSessionMemoryRequirements);
-typedef VkResult (VKAPI_PTR *PFN_vkBindVideoSessionMemoryKHR)(VkDevice device, VkVideoSessionKHR videoSession, uint32_t videoSessionBindMemoryCount, const VkVideoBindMemoryKHR* pVideoSessionBindMemories);
-typedef VkResult (VKAPI_PTR *PFN_vkCreateVideoSessionParametersKHR)(VkDevice device, const VkVideoSessionParametersCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkVideoSessionParametersKHR* pVideoSessionParameters);
-typedef VkResult (VKAPI_PTR *PFN_vkUpdateVideoSessionParametersKHR)(VkDevice device, VkVideoSessionParametersKHR videoSessionParameters, const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo);
-typedef void (VKAPI_PTR *PFN_vkDestroyVideoSessionParametersKHR)(VkDevice device, VkVideoSessionParametersKHR videoSessionParameters, const VkAllocationCallbacks* pAllocator);
-typedef void (VKAPI_PTR *PFN_vkCmdBeginVideoCodingKHR)(VkCommandBuffer commandBuffer, const VkVideoBeginCodingInfoKHR* pBeginInfo);
-typedef void (VKAPI_PTR *PFN_vkCmdEndVideoCodingKHR)(VkCommandBuffer commandBuffer, const VkVideoEndCodingInfoKHR* pEndCodingInfo);
-typedef void (VKAPI_PTR *PFN_vkCmdControlVideoCodingKHR)(VkCommandBuffer commandBuffer, const VkVideoCodingControlInfoKHR* pCodingControlInfo);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceVideoCapabilitiesKHR(
- VkPhysicalDevice physicalDevice,
- const VkVideoProfileKHR* pVideoProfile,
- VkVideoCapabilitiesKHR* pCapabilities);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceVideoFormatPropertiesKHR(
- VkPhysicalDevice physicalDevice,
- const VkPhysicalDeviceVideoFormatInfoKHR* pVideoFormatInfo,
- uint32_t* pVideoFormatPropertyCount,
- VkVideoFormatPropertiesKHR* pVideoFormatProperties);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateVideoSessionKHR(
- VkDevice device,
- const VkVideoSessionCreateInfoKHR* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkVideoSessionKHR* pVideoSession);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroyVideoSessionKHR(
- VkDevice device,
- VkVideoSessionKHR videoSession,
- const VkAllocationCallbacks* pAllocator);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetVideoSessionMemoryRequirementsKHR(
- VkDevice device,
- VkVideoSessionKHR videoSession,
- uint32_t* pVideoSessionMemoryRequirementsCount,
- VkVideoGetMemoryPropertiesKHR* pVideoSessionMemoryRequirements);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkBindVideoSessionMemoryKHR(
- VkDevice device,
- VkVideoSessionKHR videoSession,
- uint32_t videoSessionBindMemoryCount,
- const VkVideoBindMemoryKHR* pVideoSessionBindMemories);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateVideoSessionParametersKHR(
- VkDevice device,
- const VkVideoSessionParametersCreateInfoKHR* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkVideoSessionParametersKHR* pVideoSessionParameters);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkUpdateVideoSessionParametersKHR(
- VkDevice device,
- VkVideoSessionParametersKHR videoSessionParameters,
- const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroyVideoSessionParametersKHR(
- VkDevice device,
- VkVideoSessionParametersKHR videoSessionParameters,
- const VkAllocationCallbacks* pAllocator);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdBeginVideoCodingKHR(
- VkCommandBuffer commandBuffer,
- const VkVideoBeginCodingInfoKHR* pBeginInfo);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdEndVideoCodingKHR(
- VkCommandBuffer commandBuffer,
- const VkVideoEndCodingInfoKHR* pEndCodingInfo);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdControlVideoCodingKHR(
- VkCommandBuffer commandBuffer,
- const VkVideoCodingControlInfoKHR* pCodingControlInfo);
-#endif
-
-
-#define VK_KHR_video_decode_queue 1
-#define VK_KHR_VIDEO_DECODE_QUEUE_SPEC_VERSION 2
-#define VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME "VK_KHR_video_decode_queue"
-
-typedef enum VkVideoDecodeFlagBitsKHR {
- VK_VIDEO_DECODE_DEFAULT_KHR = 0,
- VK_VIDEO_DECODE_RESERVED_0_BIT_KHR = 0x00000001,
- VK_VIDEO_DECODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkVideoDecodeFlagBitsKHR;
-typedef VkFlags VkVideoDecodeFlagsKHR;
-typedef struct VkVideoDecodeInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkVideoDecodeFlagsKHR flags;
- VkOffset2D codedOffset;
- VkExtent2D codedExtent;
- VkBuffer srcBuffer;
- VkDeviceSize srcBufferOffset;
- VkDeviceSize srcBufferRange;
- VkVideoPictureResourceKHR dstPictureResource;
- const VkVideoReferenceSlotKHR* pSetupReferenceSlot;
- uint32_t referenceSlotCount;
- const VkVideoReferenceSlotKHR* pReferenceSlots;
-} VkVideoDecodeInfoKHR;
-
-typedef void (VKAPI_PTR *PFN_vkCmdDecodeVideoKHR)(VkCommandBuffer commandBuffer, const VkVideoDecodeInfoKHR* pFrameInfo);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR void VKAPI_CALL vkCmdDecodeVideoKHR(
- VkCommandBuffer commandBuffer,
- const VkVideoDecodeInfoKHR* pFrameInfo);
-#endif
-
-
-#define VK_KHR_portability_subset 1
-#define VK_KHR_PORTABILITY_SUBSET_SPEC_VERSION 1
-#define VK_KHR_PORTABILITY_SUBSET_EXTENSION_NAME "VK_KHR_portability_subset"
-typedef struct VkPhysicalDevicePortabilitySubsetFeaturesKHR {
- VkStructureType sType;
- void* pNext;
- VkBool32 constantAlphaColorBlendFactors;
- VkBool32 events;
- VkBool32 imageViewFormatReinterpretation;
- VkBool32 imageViewFormatSwizzle;
- VkBool32 imageView2DOn3DImage;
- VkBool32 multisampleArrayImage;
- VkBool32 mutableComparisonSamplers;
- VkBool32 pointPolygons;
- VkBool32 samplerMipLodBias;
- VkBool32 separateStencilMaskRef;
- VkBool32 shaderSampleRateInterpolationFunctions;
- VkBool32 tessellationIsolines;
- VkBool32 tessellationPointMode;
- VkBool32 triangleFans;
- VkBool32 vertexAttributeAccessBeyondStride;
-} VkPhysicalDevicePortabilitySubsetFeaturesKHR;
-
-typedef struct VkPhysicalDevicePortabilitySubsetPropertiesKHR {
- VkStructureType sType;
- void* pNext;
- uint32_t minVertexInputBindingStrideAlignment;
-} VkPhysicalDevicePortabilitySubsetPropertiesKHR;
-
-
-
-#define VK_KHR_video_encode_queue 1
-#define VK_KHR_VIDEO_ENCODE_QUEUE_SPEC_VERSION 3
-#define VK_KHR_VIDEO_ENCODE_QUEUE_EXTENSION_NAME "VK_KHR_video_encode_queue"
-
-typedef enum VkVideoEncodeFlagBitsKHR {
- VK_VIDEO_ENCODE_DEFAULT_KHR = 0,
- VK_VIDEO_ENCODE_RESERVED_0_BIT_KHR = 0x00000001,
- VK_VIDEO_ENCODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkVideoEncodeFlagBitsKHR;
-typedef VkFlags VkVideoEncodeFlagsKHR;
-
-typedef enum VkVideoEncodeRateControlFlagBitsKHR {
- VK_VIDEO_ENCODE_RATE_CONTROL_DEFAULT_KHR = 0,
- VK_VIDEO_ENCODE_RATE_CONTROL_RESET_BIT_KHR = 0x00000001,
- VK_VIDEO_ENCODE_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkVideoEncodeRateControlFlagBitsKHR;
-typedef VkFlags VkVideoEncodeRateControlFlagsKHR;
-
-typedef enum VkVideoEncodeRateControlModeFlagBitsKHR {
- VK_VIDEO_ENCODE_RATE_CONTROL_MODE_NONE_BIT_KHR = 0,
- VK_VIDEO_ENCODE_RATE_CONTROL_MODE_CBR_BIT_KHR = 1,
- VK_VIDEO_ENCODE_RATE_CONTROL_MODE_VBR_BIT_KHR = 2,
- VK_VIDEO_ENCODE_RATE_CONTROL_MODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkVideoEncodeRateControlModeFlagBitsKHR;
-typedef VkFlags VkVideoEncodeRateControlModeFlagsKHR;
-typedef struct VkVideoEncodeInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkVideoEncodeFlagsKHR flags;
- uint32_t qualityLevel;
- VkExtent2D codedExtent;
- VkBuffer dstBitstreamBuffer;
- VkDeviceSize dstBitstreamBufferOffset;
- VkDeviceSize dstBitstreamBufferMaxRange;
- VkVideoPictureResourceKHR srcPictureResource;
- const VkVideoReferenceSlotKHR* pSetupReferenceSlot;
- uint32_t referenceSlotCount;
- const VkVideoReferenceSlotKHR* pReferenceSlots;
-} VkVideoEncodeInfoKHR;
-
-typedef struct VkVideoEncodeRateControlInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkVideoEncodeRateControlFlagsKHR flags;
- VkVideoEncodeRateControlModeFlagBitsKHR rateControlMode;
- uint32_t averageBitrate;
- uint16_t peakToAverageBitrateRatio;
- uint16_t frameRateNumerator;
- uint16_t frameRateDenominator;
- uint32_t virtualBufferSizeInMs;
-} VkVideoEncodeRateControlInfoKHR;
-
-typedef void (VKAPI_PTR *PFN_vkCmdEncodeVideoKHR)(VkCommandBuffer commandBuffer, const VkVideoEncodeInfoKHR* pEncodeInfo);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR void VKAPI_CALL vkCmdEncodeVideoKHR(
- VkCommandBuffer commandBuffer,
- const VkVideoEncodeInfoKHR* pEncodeInfo);
-#endif
-
-
-#define VK_EXT_video_encode_h264 1
-#include "vk_video/vulkan_video_codec_h264std.h"
-#include "vk_video/vulkan_video_codec_h264std_encode.h"
-#define VK_EXT_VIDEO_ENCODE_H264_SPEC_VERSION 2
-#define VK_EXT_VIDEO_ENCODE_H264_EXTENSION_NAME "VK_EXT_video_encode_h264"
-
-typedef enum VkVideoEncodeH264CapabilityFlagBitsEXT {
- VK_VIDEO_ENCODE_H264_CAPABILITY_CABAC_BIT_EXT = 0x00000001,
- VK_VIDEO_ENCODE_H264_CAPABILITY_CAVLC_BIT_EXT = 0x00000002,
- VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_BI_PRED_IMPLICIT_BIT_EXT = 0x00000004,
- VK_VIDEO_ENCODE_H264_CAPABILITY_TRANSFORM_8X8_BIT_EXT = 0x00000008,
- VK_VIDEO_ENCODE_H264_CAPABILITY_CHROMA_QP_OFFSET_BIT_EXT = 0x00000010,
- VK_VIDEO_ENCODE_H264_CAPABILITY_SECOND_CHROMA_QP_OFFSET_BIT_EXT = 0x00000020,
- VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_DISABLED_BIT_EXT = 0x00000040,
- VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_ENABLED_BIT_EXT = 0x00000080,
- VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_PARTIAL_BIT_EXT = 0x00000100,
- VK_VIDEO_ENCODE_H264_CAPABILITY_MULTIPLE_SLICE_PER_FRAME_BIT_EXT = 0x00000200,
- VK_VIDEO_ENCODE_H264_CAPABILITY_EVENLY_DISTRIBUTED_SLICE_SIZE_BIT_EXT = 0x00000400,
- VK_VIDEO_ENCODE_H264_CAPABILITY_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
-} VkVideoEncodeH264CapabilityFlagBitsEXT;
-typedef VkFlags VkVideoEncodeH264CapabilityFlagsEXT;
-
-typedef enum VkVideoEncodeH264InputModeFlagBitsEXT {
- VK_VIDEO_ENCODE_H264_INPUT_MODE_FRAME_BIT_EXT = 0x00000001,
- VK_VIDEO_ENCODE_H264_INPUT_MODE_SLICE_BIT_EXT = 0x00000002,
- VK_VIDEO_ENCODE_H264_INPUT_MODE_NON_VCL_BIT_EXT = 0x00000004,
- VK_VIDEO_ENCODE_H264_INPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
-} VkVideoEncodeH264InputModeFlagBitsEXT;
-typedef VkFlags VkVideoEncodeH264InputModeFlagsEXT;
-
-typedef enum VkVideoEncodeH264OutputModeFlagBitsEXT {
- VK_VIDEO_ENCODE_H264_OUTPUT_MODE_FRAME_BIT_EXT = 0x00000001,
- VK_VIDEO_ENCODE_H264_OUTPUT_MODE_SLICE_BIT_EXT = 0x00000002,
- VK_VIDEO_ENCODE_H264_OUTPUT_MODE_NON_VCL_BIT_EXT = 0x00000004,
- VK_VIDEO_ENCODE_H264_OUTPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
-} VkVideoEncodeH264OutputModeFlagBitsEXT;
-typedef VkFlags VkVideoEncodeH264OutputModeFlagsEXT;
-
-typedef enum VkVideoEncodeH264CreateFlagBitsEXT {
- VK_VIDEO_ENCODE_H264_CREATE_DEFAULT_EXT = 0,
- VK_VIDEO_ENCODE_H264_CREATE_RESERVED_0_BIT_EXT = 0x00000001,
- VK_VIDEO_ENCODE_H264_CREATE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
-} VkVideoEncodeH264CreateFlagBitsEXT;
-typedef VkFlags VkVideoEncodeH264CreateFlagsEXT;
-typedef struct VkVideoEncodeH264CapabilitiesEXT {
- VkStructureType sType;
- const void* pNext;
- VkVideoEncodeH264CapabilityFlagsEXT flags;
- VkVideoEncodeH264InputModeFlagsEXT inputModeFlags;
- VkVideoEncodeH264OutputModeFlagsEXT outputModeFlags;
- VkExtent2D minPictureSizeInMbs;
- VkExtent2D maxPictureSizeInMbs;
- VkExtent2D inputImageDataAlignment;
- uint8_t maxNumL0ReferenceForP;
- uint8_t maxNumL0ReferenceForB;
- uint8_t maxNumL1Reference;
- uint8_t qualityLevelCount;
- VkExtensionProperties stdExtensionVersion;
-} VkVideoEncodeH264CapabilitiesEXT;
-
-typedef struct VkVideoEncodeH264SessionCreateInfoEXT {
- VkStructureType sType;
- const void* pNext;
- VkVideoEncodeH264CreateFlagsEXT flags;
- VkExtent2D maxPictureSizeInMbs;
- const VkExtensionProperties* pStdExtensionVersion;
-} VkVideoEncodeH264SessionCreateInfoEXT;
-
-typedef struct VkVideoEncodeH264SessionParametersAddInfoEXT {
- VkStructureType sType;
- const void* pNext;
- uint32_t spsStdCount;
- const StdVideoH264SequenceParameterSet* pSpsStd;
- uint32_t ppsStdCount;
- const StdVideoH264PictureParameterSet* pPpsStd;
-} VkVideoEncodeH264SessionParametersAddInfoEXT;
-
-typedef struct VkVideoEncodeH264SessionParametersCreateInfoEXT {
- VkStructureType sType;
- const void* pNext;
- uint32_t maxSpsStdCount;
- uint32_t maxPpsStdCount;
- const VkVideoEncodeH264SessionParametersAddInfoEXT* pParametersAddInfo;
-} VkVideoEncodeH264SessionParametersCreateInfoEXT;
-
-typedef struct VkVideoEncodeH264DpbSlotInfoEXT {
- VkStructureType sType;
- const void* pNext;
- int8_t slotIndex;
- const StdVideoEncodeH264PictureInfo* pStdPictureInfo;
-} VkVideoEncodeH264DpbSlotInfoEXT;
-
-typedef struct VkVideoEncodeH264NaluSliceEXT {
- VkStructureType sType;
- const void* pNext;
- const StdVideoEncodeH264SliceHeader* pSliceHeaderStd;
- uint32_t mbCount;
- uint8_t refFinalList0EntryCount;
- const VkVideoEncodeH264DpbSlotInfoEXT* pRefFinalList0Entries;
- uint8_t refFinalList1EntryCount;
- const VkVideoEncodeH264DpbSlotInfoEXT* pRefFinalList1Entries;
- uint32_t precedingNaluBytes;
- uint8_t minQp;
- uint8_t maxQp;
-} VkVideoEncodeH264NaluSliceEXT;
-
-typedef struct VkVideoEncodeH264VclFrameInfoEXT {
- VkStructureType sType;
- const void* pNext;
- uint8_t refDefaultFinalList0EntryCount;
- const VkVideoEncodeH264DpbSlotInfoEXT* pRefDefaultFinalList0Entries;
- uint8_t refDefaultFinalList1EntryCount;
- const VkVideoEncodeH264DpbSlotInfoEXT* pRefDefaultFinalList1Entries;
- uint32_t naluSliceEntryCount;
- const VkVideoEncodeH264NaluSliceEXT* pNaluSliceEntries;
- const VkVideoEncodeH264DpbSlotInfoEXT* pCurrentPictureInfo;
-} VkVideoEncodeH264VclFrameInfoEXT;
-
-typedef struct VkVideoEncodeH264EmitPictureParametersEXT {
- VkStructureType sType;
- const void* pNext;
- uint8_t spsId;
- VkBool32 emitSpsEnable;
- uint32_t ppsIdEntryCount;
- const uint8_t* ppsIdEntries;
-} VkVideoEncodeH264EmitPictureParametersEXT;
-
-typedef struct VkVideoEncodeH264ProfileEXT {
- VkStructureType sType;
- const void* pNext;
- StdVideoH264ProfileIdc stdProfileIdc;
-} VkVideoEncodeH264ProfileEXT;
-
-
-
-#define VK_EXT_video_encode_h265 1
-#include "vk_video/vulkan_video_codec_h265std.h"
-#include "vk_video/vulkan_video_codec_h265std_encode.h"
-#define VK_EXT_VIDEO_ENCODE_H265_SPEC_VERSION 2
-#define VK_EXT_VIDEO_ENCODE_H265_EXTENSION_NAME "VK_EXT_video_encode_h265"
-typedef VkFlags VkVideoEncodeH265CapabilityFlagsEXT;
-
-typedef enum VkVideoEncodeH265InputModeFlagBitsEXT {
- VK_VIDEO_ENCODE_H265_INPUT_MODE_FRAME_BIT_EXT = 0x00000001,
- VK_VIDEO_ENCODE_H265_INPUT_MODE_SLICE_BIT_EXT = 0x00000002,
- VK_VIDEO_ENCODE_H265_INPUT_MODE_NON_VCL_BIT_EXT = 0x00000004,
- VK_VIDEO_ENCODE_H265_INPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
-} VkVideoEncodeH265InputModeFlagBitsEXT;
-typedef VkFlags VkVideoEncodeH265InputModeFlagsEXT;
-
-typedef enum VkVideoEncodeH265OutputModeFlagBitsEXT {
- VK_VIDEO_ENCODE_H265_OUTPUT_MODE_FRAME_BIT_EXT = 0x00000001,
- VK_VIDEO_ENCODE_H265_OUTPUT_MODE_SLICE_BIT_EXT = 0x00000002,
- VK_VIDEO_ENCODE_H265_OUTPUT_MODE_NON_VCL_BIT_EXT = 0x00000004,
- VK_VIDEO_ENCODE_H265_OUTPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
-} VkVideoEncodeH265OutputModeFlagBitsEXT;
-typedef VkFlags VkVideoEncodeH265OutputModeFlagsEXT;
-typedef VkFlags VkVideoEncodeH265CreateFlagsEXT;
-
-typedef enum VkVideoEncodeH265CtbSizeFlagBitsEXT {
- VK_VIDEO_ENCODE_H265_CTB_SIZE_8_BIT_EXT = 0x00000001,
- VK_VIDEO_ENCODE_H265_CTB_SIZE_16_BIT_EXT = 0x00000002,
- VK_VIDEO_ENCODE_H265_CTB_SIZE_32_BIT_EXT = 0x00000004,
- VK_VIDEO_ENCODE_H265_CTB_SIZE_64_BIT_EXT = 0x00000008,
- VK_VIDEO_ENCODE_H265_CTB_SIZE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
-} VkVideoEncodeH265CtbSizeFlagBitsEXT;
-typedef VkFlags VkVideoEncodeH265CtbSizeFlagsEXT;
-typedef struct VkVideoEncodeH265CapabilitiesEXT {
- VkStructureType sType;
- const void* pNext;
- VkVideoEncodeH265CapabilityFlagsEXT flags;
- VkVideoEncodeH265InputModeFlagsEXT inputModeFlags;
- VkVideoEncodeH265OutputModeFlagsEXT outputModeFlags;
- VkVideoEncodeH265CtbSizeFlagsEXT ctbSizes;
- VkExtent2D inputImageDataAlignment;
- uint8_t maxNumL0ReferenceForP;
- uint8_t maxNumL0ReferenceForB;
- uint8_t maxNumL1Reference;
- uint8_t maxNumSubLayers;
- uint8_t qualityLevelCount;
- VkExtensionProperties stdExtensionVersion;
-} VkVideoEncodeH265CapabilitiesEXT;
-
-typedef struct VkVideoEncodeH265SessionCreateInfoEXT {
- VkStructureType sType;
- const void* pNext;
- VkVideoEncodeH265CreateFlagsEXT flags;
- const VkExtensionProperties* pStdExtensionVersion;
-} VkVideoEncodeH265SessionCreateInfoEXT;
-
-typedef struct VkVideoEncodeH265SessionParametersAddInfoEXT {
- VkStructureType sType;
- const void* pNext;
- uint32_t vpsStdCount;
- const StdVideoH265VideoParameterSet* pVpsStd;
- uint32_t spsStdCount;
- const StdVideoH265SequenceParameterSet* pSpsStd;
- uint32_t ppsStdCount;
- const StdVideoH265PictureParameterSet* pPpsStd;
-} VkVideoEncodeH265SessionParametersAddInfoEXT;
-
-typedef struct VkVideoEncodeH265SessionParametersCreateInfoEXT {
- VkStructureType sType;
- const void* pNext;
- uint32_t maxVpsStdCount;
- uint32_t maxSpsStdCount;
- uint32_t maxPpsStdCount;
- const VkVideoEncodeH265SessionParametersAddInfoEXT* pParametersAddInfo;
-} VkVideoEncodeH265SessionParametersCreateInfoEXT;
-
-typedef struct VkVideoEncodeH265DpbSlotInfoEXT {
- VkStructureType sType;
- const void* pNext;
- int8_t slotIndex;
- const StdVideoEncodeH265ReferenceInfo* pStdReferenceInfo;
-} VkVideoEncodeH265DpbSlotInfoEXT;
-
-typedef struct VkVideoEncodeH265ReferenceListsEXT {
- VkStructureType sType;
- const void* pNext;
- uint8_t referenceList0EntryCount;
- const VkVideoEncodeH265DpbSlotInfoEXT* pReferenceList0Entries;
- uint8_t referenceList1EntryCount;
- const VkVideoEncodeH265DpbSlotInfoEXT* pReferenceList1Entries;
- const StdVideoEncodeH265ReferenceModifications* pReferenceModifications;
-} VkVideoEncodeH265ReferenceListsEXT;
-
-typedef struct VkVideoEncodeH265NaluSliceEXT {
- VkStructureType sType;
- const void* pNext;
- uint32_t ctbCount;
- const VkVideoEncodeH265ReferenceListsEXT* pReferenceFinalLists;
- const StdVideoEncodeH265SliceHeader* pSliceHeaderStd;
-} VkVideoEncodeH265NaluSliceEXT;
-
-typedef struct VkVideoEncodeH265VclFrameInfoEXT {
- VkStructureType sType;
- const void* pNext;
- const VkVideoEncodeH265ReferenceListsEXT* pReferenceFinalLists;
- uint32_t naluSliceEntryCount;
- const VkVideoEncodeH265NaluSliceEXT* pNaluSliceEntries;
- const StdVideoEncodeH265PictureInfo* pCurrentPictureInfo;
-} VkVideoEncodeH265VclFrameInfoEXT;
-
-typedef struct VkVideoEncodeH265EmitPictureParametersEXT {
- VkStructureType sType;
- const void* pNext;
- uint8_t vpsId;
- uint8_t spsId;
- VkBool32 emitVpsEnable;
- VkBool32 emitSpsEnable;
- uint32_t ppsIdEntryCount;
- const uint8_t* ppsIdEntries;
-} VkVideoEncodeH265EmitPictureParametersEXT;
-
-typedef struct VkVideoEncodeH265ProfileEXT {
- VkStructureType sType;
- const void* pNext;
- StdVideoH265ProfileIdc stdProfileIdc;
-} VkVideoEncodeH265ProfileEXT;
-
-
-
-#define VK_EXT_video_decode_h264 1
-#include "vk_video/vulkan_video_codec_h264std_decode.h"
-#define VK_EXT_VIDEO_DECODE_H264_SPEC_VERSION 3
-#define VK_EXT_VIDEO_DECODE_H264_EXTENSION_NAME "VK_EXT_video_decode_h264"
-
-typedef enum VkVideoDecodeH264PictureLayoutFlagBitsEXT {
- VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_EXT = 0,
- VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_EXT = 0x00000001,
- VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_EXT = 0x00000002,
- VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
-} VkVideoDecodeH264PictureLayoutFlagBitsEXT;
-typedef VkFlags VkVideoDecodeH264PictureLayoutFlagsEXT;
-typedef VkFlags VkVideoDecodeH264CreateFlagsEXT;
-typedef struct VkVideoDecodeH264ProfileEXT {
- VkStructureType sType;
- const void* pNext;
- StdVideoH264ProfileIdc stdProfileIdc;
- VkVideoDecodeH264PictureLayoutFlagsEXT pictureLayout;
-} VkVideoDecodeH264ProfileEXT;
-
-typedef struct VkVideoDecodeH264CapabilitiesEXT {
- VkStructureType sType;
- void* pNext;
- uint32_t maxLevel;
- VkOffset2D fieldOffsetGranularity;
- VkExtensionProperties stdExtensionVersion;
-} VkVideoDecodeH264CapabilitiesEXT;
-
-typedef struct VkVideoDecodeH264SessionCreateInfoEXT {
- VkStructureType sType;
- const void* pNext;
- VkVideoDecodeH264CreateFlagsEXT flags;
- const VkExtensionProperties* pStdExtensionVersion;
-} VkVideoDecodeH264SessionCreateInfoEXT;
-
-typedef struct VkVideoDecodeH264SessionParametersAddInfoEXT {
- VkStructureType sType;
- const void* pNext;
- uint32_t spsStdCount;
- const StdVideoH264SequenceParameterSet* pSpsStd;
- uint32_t ppsStdCount;
- const StdVideoH264PictureParameterSet* pPpsStd;
-} VkVideoDecodeH264SessionParametersAddInfoEXT;
-
-typedef struct VkVideoDecodeH264SessionParametersCreateInfoEXT {
- VkStructureType sType;
- const void* pNext;
- uint32_t maxSpsStdCount;
- uint32_t maxPpsStdCount;
- const VkVideoDecodeH264SessionParametersAddInfoEXT* pParametersAddInfo;
-} VkVideoDecodeH264SessionParametersCreateInfoEXT;
-
-typedef struct VkVideoDecodeH264PictureInfoEXT {
- VkStructureType sType;
- const void* pNext;
- const StdVideoDecodeH264PictureInfo* pStdPictureInfo;
- uint32_t slicesCount;
- const uint32_t* pSlicesDataOffsets;
-} VkVideoDecodeH264PictureInfoEXT;
-
-typedef struct VkVideoDecodeH264MvcEXT {
- VkStructureType sType;
- const void* pNext;
- const StdVideoDecodeH264Mvc* pStdMvc;
-} VkVideoDecodeH264MvcEXT;
-
-typedef struct VkVideoDecodeH264DpbSlotInfoEXT {
- VkStructureType sType;
- const void* pNext;
- const StdVideoDecodeH264ReferenceInfo* pStdReferenceInfo;
-} VkVideoDecodeH264DpbSlotInfoEXT;
-
-
-
-#define VK_EXT_video_decode_h265 1
-#include "vk_video/vulkan_video_codec_h265std_decode.h"
-#define VK_EXT_VIDEO_DECODE_H265_SPEC_VERSION 1
-#define VK_EXT_VIDEO_DECODE_H265_EXTENSION_NAME "VK_EXT_video_decode_h265"
-typedef VkFlags VkVideoDecodeH265CreateFlagsEXT;
-typedef struct VkVideoDecodeH265ProfileEXT {
- VkStructureType sType;
- const void* pNext;
- StdVideoH265ProfileIdc stdProfileIdc;
-} VkVideoDecodeH265ProfileEXT;
-
-typedef struct VkVideoDecodeH265CapabilitiesEXT {
- VkStructureType sType;
- void* pNext;
- uint32_t maxLevel;
- VkExtensionProperties stdExtensionVersion;
-} VkVideoDecodeH265CapabilitiesEXT;
-
-typedef struct VkVideoDecodeH265SessionCreateInfoEXT {
- VkStructureType sType;
- const void* pNext;
- VkVideoDecodeH265CreateFlagsEXT flags;
- const VkExtensionProperties* pStdExtensionVersion;
-} VkVideoDecodeH265SessionCreateInfoEXT;
-
-typedef struct VkVideoDecodeH265SessionParametersAddInfoEXT {
- VkStructureType sType;
- const void* pNext;
- uint32_t spsStdCount;
- const StdVideoH265SequenceParameterSet* pSpsStd;
- uint32_t ppsStdCount;
- const StdVideoH265PictureParameterSet* pPpsStd;
-} VkVideoDecodeH265SessionParametersAddInfoEXT;
-
-typedef struct VkVideoDecodeH265SessionParametersCreateInfoEXT {
- VkStructureType sType;
- const void* pNext;
- uint32_t maxSpsStdCount;
- uint32_t maxPpsStdCount;
- const VkVideoDecodeH265SessionParametersAddInfoEXT* pParametersAddInfo;
-} VkVideoDecodeH265SessionParametersCreateInfoEXT;
-
-typedef struct VkVideoDecodeH265PictureInfoEXT {
- VkStructureType sType;
- const void* pNext;
- StdVideoDecodeH265PictureInfo* pStdPictureInfo;
- uint32_t slicesCount;
- const uint32_t* pSlicesDataOffsets;
-} VkVideoDecodeH265PictureInfoEXT;
-
-typedef struct VkVideoDecodeH265DpbSlotInfoEXT {
- VkStructureType sType;
- const void* pNext;
- const StdVideoDecodeH265ReferenceInfo* pStdReferenceInfo;
-} VkVideoDecodeH265DpbSlotInfoEXT;
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/common/vulkan/include/vulkan/vulkan_core.h b/common/vulkan/include/vulkan/vulkan_core.h
deleted file mode 100644
index 19e9ffe6..00000000
--- a/common/vulkan/include/vulkan/vulkan_core.h
+++ /dev/null
@@ -1,13625 +0,0 @@
-#ifndef VULKAN_CORE_H_
-#define VULKAN_CORE_H_ 1
-
-/*
-** Copyright 2015-2021 The Khronos Group Inc.
-**
-** SPDX-License-Identifier: Apache-2.0
-*/
-
-/*
-** This header is generated from the Khronos Vulkan XML API Registry.
-**
-*/
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-
-#define VK_VERSION_1_0 1
-#include "vk_platform.h"
-
-#define VK_DEFINE_HANDLE(object) typedef struct object##_T* object;
-
-
-#ifndef VK_USE_64_BIT_PTR_DEFINES
- #if defined(__LP64__) || defined(_WIN64) || (defined(__x86_64__) && !defined(__ILP32__) ) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__)
- #define VK_USE_64_BIT_PTR_DEFINES 1
- #else
- #define VK_USE_64_BIT_PTR_DEFINES 0
- #endif
-#endif
-
-
-#ifndef VK_DEFINE_NON_DISPATCHABLE_HANDLE
- #if (VK_USE_64_BIT_PTR_DEFINES==1)
- #if (defined(__cplusplus) && (__cplusplus >= 201103L)) || (defined(_MSVC_LANG) && (_MSVC_LANG >= 201103L))
- #define VK_NULL_HANDLE nullptr
- #else
- #define VK_NULL_HANDLE ((void*)0)
- #endif
- #else
- #define VK_NULL_HANDLE 0ULL
- #endif
-#endif
-#ifndef VK_NULL_HANDLE
- #define VK_NULL_HANDLE 0
-#endif
-
-
-#ifndef VK_DEFINE_NON_DISPATCHABLE_HANDLE
- #if (VK_USE_64_BIT_PTR_DEFINES==1)
- #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef struct object##_T *object;
- #else
- #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef uint64_t object;
- #endif
-#endif
-
-// DEPRECATED: This define is deprecated. VK_MAKE_API_VERSION should be used instead.
-#define VK_MAKE_VERSION(major, minor, patch) \
- ((((uint32_t)(major)) << 22) | (((uint32_t)(minor)) << 12) | ((uint32_t)(patch)))
-
-// DEPRECATED: This define has been removed. Specific version defines (e.g. VK_API_VERSION_1_0), or the VK_MAKE_VERSION macro, should be used instead.
-//#define VK_API_VERSION VK_MAKE_VERSION(1, 0, 0) // Patch version should always be set to 0
-
-#define VK_MAKE_API_VERSION(variant, major, minor, patch) \
- ((((uint32_t)(variant)) << 29) | (((uint32_t)(major)) << 22) | (((uint32_t)(minor)) << 12) | ((uint32_t)(patch)))
-
-// Vulkan 1.0 version number
-#define VK_API_VERSION_1_0 VK_MAKE_API_VERSION(0, 1, 0, 0)// Patch version should always be set to 0
-
-// Version of this file
-#define VK_HEADER_VERSION 198
-
-// Complete version of this file
-#define VK_HEADER_VERSION_COMPLETE VK_MAKE_API_VERSION(0, 1, 2, VK_HEADER_VERSION)
-
-// DEPRECATED: This define is deprecated. VK_API_VERSION_MAJOR should be used instead.
-#define VK_VERSION_MAJOR(version) ((uint32_t)(version) >> 22)
-
-// DEPRECATED: This define is deprecated. VK_API_VERSION_MINOR should be used instead.
-#define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3FFU)
-
-// DEPRECATED: This define is deprecated. VK_API_VERSION_PATCH should be used instead.
-#define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xFFFU)
-
-#define VK_API_VERSION_VARIANT(version) ((uint32_t)(version) >> 29)
-#define VK_API_VERSION_MAJOR(version) (((uint32_t)(version) >> 22) & 0x7FU)
-#define VK_API_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3FFU)
-#define VK_API_VERSION_PATCH(version) ((uint32_t)(version) & 0xFFFU)
-typedef uint32_t VkBool32;
-typedef uint64_t VkDeviceAddress;
-typedef uint64_t VkDeviceSize;
-typedef uint32_t VkFlags;
-typedef uint32_t VkSampleMask;
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBuffer)
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkImage)
-VK_DEFINE_HANDLE(VkInstance)
-VK_DEFINE_HANDLE(VkPhysicalDevice)
-VK_DEFINE_HANDLE(VkDevice)
-VK_DEFINE_HANDLE(VkQueue)
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSemaphore)
-VK_DEFINE_HANDLE(VkCommandBuffer)
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkFence)
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDeviceMemory)
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkEvent)
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkQueryPool)
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBufferView)
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkImageView)
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkShaderModule)
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipelineCache)
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipelineLayout)
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipeline)
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkRenderPass)
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorSetLayout)
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSampler)
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorSet)
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorPool)
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkFramebuffer)
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkCommandPool)
-#define VK_UUID_SIZE 16U
-#define VK_ATTACHMENT_UNUSED (~0U)
-#define VK_FALSE 0U
-#define VK_LOD_CLAMP_NONE 1000.0F
-#define VK_QUEUE_FAMILY_IGNORED (~0U)
-#define VK_REMAINING_ARRAY_LAYERS (~0U)
-#define VK_REMAINING_MIP_LEVELS (~0U)
-#define VK_SUBPASS_EXTERNAL (~0U)
-#define VK_TRUE 1U
-#define VK_WHOLE_SIZE (~0ULL)
-#define VK_MAX_MEMORY_TYPES 32U
-#define VK_MAX_MEMORY_HEAPS 16U
-#define VK_MAX_PHYSICAL_DEVICE_NAME_SIZE 256U
-#define VK_MAX_EXTENSION_NAME_SIZE 256U
-#define VK_MAX_DESCRIPTION_SIZE 256U
-
-typedef enum VkResult {
- VK_SUCCESS = 0,
- VK_NOT_READY = 1,
- VK_TIMEOUT = 2,
- VK_EVENT_SET = 3,
- VK_EVENT_RESET = 4,
- VK_INCOMPLETE = 5,
- VK_ERROR_OUT_OF_HOST_MEMORY = -1,
- VK_ERROR_OUT_OF_DEVICE_MEMORY = -2,
- VK_ERROR_INITIALIZATION_FAILED = -3,
- VK_ERROR_DEVICE_LOST = -4,
- VK_ERROR_MEMORY_MAP_FAILED = -5,
- VK_ERROR_LAYER_NOT_PRESENT = -6,
- VK_ERROR_EXTENSION_NOT_PRESENT = -7,
- VK_ERROR_FEATURE_NOT_PRESENT = -8,
- VK_ERROR_INCOMPATIBLE_DRIVER = -9,
- VK_ERROR_TOO_MANY_OBJECTS = -10,
- VK_ERROR_FORMAT_NOT_SUPPORTED = -11,
- VK_ERROR_FRAGMENTED_POOL = -12,
- VK_ERROR_UNKNOWN = -13,
- VK_ERROR_OUT_OF_POOL_MEMORY = -1000069000,
- VK_ERROR_INVALID_EXTERNAL_HANDLE = -1000072003,
- VK_ERROR_FRAGMENTATION = -1000161000,
- VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000,
- VK_ERROR_SURFACE_LOST_KHR = -1000000000,
- VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001,
- VK_SUBOPTIMAL_KHR = 1000001003,
- VK_ERROR_OUT_OF_DATE_KHR = -1000001004,
- VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = -1000003001,
- VK_ERROR_VALIDATION_FAILED_EXT = -1000011001,
- VK_ERROR_INVALID_SHADER_NV = -1000012000,
- VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000,
- VK_ERROR_NOT_PERMITTED_EXT = -1000174001,
- VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT = -1000255000,
- VK_THREAD_IDLE_KHR = 1000268000,
- VK_THREAD_DONE_KHR = 1000268001,
- VK_OPERATION_DEFERRED_KHR = 1000268002,
- VK_OPERATION_NOT_DEFERRED_KHR = 1000268003,
- VK_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000,
- VK_ERROR_OUT_OF_POOL_MEMORY_KHR = VK_ERROR_OUT_OF_POOL_MEMORY,
- VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = VK_ERROR_INVALID_EXTERNAL_HANDLE,
- VK_ERROR_FRAGMENTATION_EXT = VK_ERROR_FRAGMENTATION,
- VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS,
- VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS,
- VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT = VK_PIPELINE_COMPILE_REQUIRED_EXT,
- VK_RESULT_MAX_ENUM = 0x7FFFFFFF
-} VkResult;
-
-typedef enum VkStructureType {
- VK_STRUCTURE_TYPE_APPLICATION_INFO = 0,
- VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1,
- VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2,
- VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3,
- VK_STRUCTURE_TYPE_SUBMIT_INFO = 4,
- VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5,
- VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6,
- VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7,
- VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8,
- VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9,
- VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10,
- VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11,
- VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12,
- VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13,
- VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14,
- VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15,
- VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16,
- VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17,
- VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18,
- VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19,
- VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20,
- VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21,
- VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22,
- VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23,
- VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24,
- VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25,
- VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26,
- VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27,
- VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28,
- VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29,
- VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30,
- VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31,
- VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32,
- VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33,
- VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34,
- VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35,
- VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36,
- VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37,
- VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38,
- VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39,
- VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40,
- VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41,
- VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42,
- VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43,
- VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44,
- VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45,
- VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46,
- VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47,
- VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES = 1000094000,
- VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO = 1000157000,
- VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO = 1000157001,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES = 1000083000,
- VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS = 1000127000,
- VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO = 1000127001,
- VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO = 1000060000,
- VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO = 1000060003,
- VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO = 1000060004,
- VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO = 1000060005,
- VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO = 1000060006,
- VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO = 1000060013,
- VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO = 1000060014,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES = 1000070000,
- VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO = 1000070001,
- VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 = 1000146000,
- VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 = 1000146001,
- VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 = 1000146002,
- VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 = 1000146003,
- VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 = 1000146004,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 = 1000059000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 = 1000059001,
- VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 = 1000059002,
- VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 = 1000059003,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 = 1000059004,
- VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 = 1000059005,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 = 1000059006,
- VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 = 1000059007,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 = 1000059008,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES = 1000117000,
- VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO = 1000117001,
- VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO = 1000117002,
- VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO = 1000117003,
- VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO = 1000053000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES = 1000053001,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES = 1000053002,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES = 1000120000,
- VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO = 1000145000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES = 1000145001,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES = 1000145002,
- VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 = 1000145003,
- VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO = 1000156000,
- VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO = 1000156001,
- VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO = 1000156002,
- VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO = 1000156003,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES = 1000156004,
- VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES = 1000156005,
- VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO = 1000085000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO = 1000071000,
- VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES = 1000071001,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO = 1000071002,
- VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES = 1000071003,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES = 1000071004,
- VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO = 1000072000,
- VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO = 1000072001,
- VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO = 1000072002,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO = 1000112000,
- VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES = 1000112001,
- VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO = 1000113000,
- VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO = 1000077000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO = 1000076000,
- VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES = 1000076001,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = 1000168000,
- VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = 1000168001,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES = 1000063000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES = 49,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES = 50,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES = 51,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES = 52,
- VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO = 1000147000,
- VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2 = 1000109000,
- VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2 = 1000109001,
- VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2 = 1000109002,
- VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2 = 1000109003,
- VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2 = 1000109004,
- VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO = 1000109005,
- VK_STRUCTURE_TYPE_SUBPASS_END_INFO = 1000109006,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES = 1000177000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES = 1000196000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES = 1000180000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES = 1000082000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES = 1000197000,
- VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO = 1000161000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES = 1000161001,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES = 1000161002,
- VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO = 1000161003,
- VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT = 1000161004,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES = 1000199000,
- VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE = 1000199001,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES = 1000221000,
- VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO = 1000246000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES = 1000130000,
- VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO = 1000130001,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES = 1000211000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES = 1000108000,
- VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO = 1000108001,
- VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO = 1000108002,
- VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO = 1000108003,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES = 1000253000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES = 1000175000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES = 1000241000,
- VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT = 1000241001,
- VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT = 1000241002,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES = 1000261000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES = 1000207000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES = 1000207001,
- VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO = 1000207002,
- VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO = 1000207003,
- VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO = 1000207004,
- VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO = 1000207005,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES = 1000257000,
- VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO = 1000244001,
- VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO = 1000257002,
- VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO = 1000257003,
- VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO = 1000257004,
- VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000,
- VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001,
- VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = 1000060007,
- VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR = 1000060008,
- VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR = 1000060009,
- VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR = 1000060010,
- VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR = 1000060011,
- VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR = 1000060012,
- VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR = 1000002000,
- VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR = 1000002001,
- VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR = 1000003000,
- VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR = 1000004000,
- VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR = 1000005000,
- VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR = 1000006000,
- VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR = 1000008000,
- VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = 1000009000,
- VK_STRUCTURE_TYPE_NATIVE_BUFFER_ANDROID = 1000010000,
- VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT = 1000011000,
- VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD = 1000018000,
- VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT = 1000022000,
- VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT = 1000022001,
- VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT = 1000022002,
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_PROFILE_KHR = 1000023000,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_CAPABILITIES_KHR = 1000023001,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_PICTURE_RESOURCE_KHR = 1000023002,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_GET_MEMORY_PROPERTIES_KHR = 1000023003,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_BIND_MEMORY_KHR = 1000023004,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_SESSION_CREATE_INFO_KHR = 1000023005,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000023006,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_UPDATE_INFO_KHR = 1000023007,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_BEGIN_CODING_INFO_KHR = 1000023008,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_END_CODING_INFO_KHR = 1000023009,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_CODING_CONTROL_INFO_KHR = 1000023010,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_REFERENCE_SLOT_KHR = 1000023011,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_QUEUE_FAMILY_PROPERTIES_2_KHR = 1000023012,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_PROFILES_KHR = 1000023013,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_FORMAT_INFO_KHR = 1000023014,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_FORMAT_PROPERTIES_KHR = 1000023015,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_DECODE_INFO_KHR = 1000024000,
-#endif
- VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = 1000026000,
- VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = 1000026001,
- VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = 1000026002,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT = 1000028000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT = 1000028001,
- VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT = 1000028002,
- VK_STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX = 1000029000,
- VK_STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX = 1000029001,
- VK_STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX = 1000029002,
- VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX = 1000030000,
- VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX = 1000030001,
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_CAPABILITIES_EXT = 1000038000,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_CREATE_INFO_EXT = 1000038001,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT = 1000038002,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT = 1000038003,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_VCL_FRAME_INFO_EXT = 1000038004,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_DPB_SLOT_INFO_EXT = 1000038005,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_NALU_SLICE_EXT = 1000038006,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_EMIT_PICTURE_PARAMETERS_EXT = 1000038007,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_EXT = 1000038008,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_CAPABILITIES_EXT = 1000039000,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_CREATE_INFO_EXT = 1000039001,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT = 1000039002,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT = 1000039003,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_VCL_FRAME_INFO_EXT = 1000039004,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_DPB_SLOT_INFO_EXT = 1000039005,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_NALU_SLICE_EXT = 1000039006,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_EMIT_PICTURE_PARAMETERS_EXT = 1000039007,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PROFILE_EXT = 1000039008,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_REFERENCE_LISTS_EXT = 1000039009,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_EXT = 1000040000,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_CREATE_INFO_EXT = 1000040001,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_EXT = 1000040002,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_MVC_EXT = 1000040003,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_EXT = 1000040004,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT = 1000040005,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT = 1000040006,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_EXT = 1000040007,
-#endif
- VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000,
- VK_STRUCTURE_TYPE_RENDERING_INFO_KHR = 1000044000,
- VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO_KHR = 1000044001,
- VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR = 1000044002,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR = 1000044003,
- VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR = 1000044004,
- VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR = 1000044006,
- VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT = 1000044007,
- VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD = 1000044008,
- VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX = 1000044009,
- VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP = 1000049000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV = 1000050000,
- VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV = 1000056000,
- VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV = 1000056001,
- VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057000,
- VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057001,
- VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV = 1000058000,
- VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT = 1000061000,
- VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN = 1000062000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = 1000066000,
- VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT = 1000067000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = 1000067001,
- VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073000,
- VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073001,
- VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR = 1000073002,
- VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR = 1000073003,
- VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR = 1000074000,
- VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR = 1000074001,
- VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR = 1000074002,
- VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR = 1000075000,
- VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078000,
- VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078001,
- VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR = 1000078002,
- VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR = 1000078003,
- VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR = 1000079000,
- VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR = 1000079001,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR = 1000080000,
- VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT = 1000081000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT = 1000081001,
- VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT = 1000081002,
- VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000,
- VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV = 1000087000,
- VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT = 1000090000,
- VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT = 1000091000,
- VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT = 1000091001,
- VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT = 1000091002,
- VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT = 1000091003,
- VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE = 1000092000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX = 1000097000,
- VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV = 1000098000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT = 1000099000,
- VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT = 1000099001,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT = 1000101000,
- VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT = 1000101001,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT = 1000102000,
- VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT = 1000102001,
- VK_STRUCTURE_TYPE_HDR_METADATA_EXT = 1000105000,
- VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR = 1000111000,
- VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114000,
- VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114001,
- VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR = 1000114002,
- VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR = 1000115000,
- VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR = 1000115001,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR = 1000116000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR = 1000116001,
- VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR = 1000116002,
- VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR = 1000116003,
- VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR = 1000116004,
- VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR = 1000116005,
- VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR = 1000116006,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR = 1000119000,
- VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR = 1000119001,
- VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR = 1000119002,
- VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR = 1000121000,
- VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR = 1000121001,
- VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR = 1000121002,
- VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR = 1000121003,
- VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR = 1000121004,
- VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK = 1000122000,
- VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK = 1000123000,
- VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT = 1000128000,
- VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT = 1000128001,
- VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT = 1000128002,
- VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT = 1000128003,
- VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT = 1000128004,
- VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID = 1000129000,
- VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID = 1000129001,
- VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID = 1000129002,
- VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129003,
- VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129004,
- VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID = 1000129005,
- VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID = 1000129006,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT = 1000138000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT = 1000138001,
- VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT = 1000138002,
- VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT = 1000138003,
- VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT = 1000143000,
- VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT = 1000143001,
- VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT = 1000143002,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT = 1000143003,
- VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT = 1000143004,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT = 1000148000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT = 1000148001,
- VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT = 1000148002,
- VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV = 1000149000,
- VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR = 1000150007,
- VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR = 1000150000,
- VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR = 1000150002,
- VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR = 1000150003,
- VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR = 1000150004,
- VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR = 1000150005,
- VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR = 1000150006,
- VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR = 1000150009,
- VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR = 1000150010,
- VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR = 1000150011,
- VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR = 1000150012,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR = 1000150013,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR = 1000150014,
- VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR = 1000150017,
- VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR = 1000150020,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR = 1000347000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR = 1000347001,
- VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR = 1000150015,
- VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR = 1000150016,
- VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR = 1000150018,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR = 1000348013,
- VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = 1000152000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV = 1000154000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV = 1000154001,
- VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT = 1000158000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT = 1000158002,
- VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT = 1000158003,
- VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT = 1000158004,
- VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158005,
- VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT = 1000158006,
- VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160000,
- VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001,
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR = 1000163000,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR = 1000163001,
-#endif
- VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV = 1000164000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV = 1000164001,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV = 1000164002,
- VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV = 1000164005,
- VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV = 1000165000,
- VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV = 1000165001,
- VK_STRUCTURE_TYPE_GEOMETRY_NV = 1000165003,
- VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV = 1000165004,
- VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV = 1000165005,
- VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV = 1000165006,
- VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV = 1000165007,
- VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV = 1000165008,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV = 1000165009,
- VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV = 1000165011,
- VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV = 1000165012,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV = 1000166000,
- VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV = 1000166001,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT = 1000170000,
- VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT = 1000170001,
- VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT = 1000174000,
- VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT = 1000178000,
- VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT = 1000178001,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT = 1000178002,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR = 1000181000,
- VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD = 1000183000,
- VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD = 1000185000,
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_EXT = 1000187000,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_CREATE_INFO_EXT = 1000187001,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT = 1000187002,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT = 1000187003,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_EXT = 1000187004,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_EXT = 1000187005,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_EXT = 1000187006,
-#endif
- VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD = 1000189000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT = 1000190000,
- VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT = 1000190001,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT = 1000190002,
- VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP = 1000191000,
- VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000192000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV = 1000202000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV = 1000202001,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = 1000203000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = 1000204000,
- VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV = 1000205000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV = 1000205002,
- VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV = 1000206000,
- VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV = 1000206001,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL = 1000209000,
- VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL = 1000210000,
- VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL = 1000210001,
- VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL = 1000210002,
- VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL = 1000210003,
- VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL = 1000210004,
- VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL = 1000210005,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT = 1000212000,
- VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD = 1000213000,
- VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD = 1000213001,
- VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA = 1000214000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR = 1000215000,
- VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT = 1000217000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT = 1000218000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT = 1000218001,
- VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT = 1000218002,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT = 1000225000,
- VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = 1000225001,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT = 1000225002,
- VK_STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR = 1000226000,
- VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR = 1000226001,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR = 1000226002,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR = 1000226003,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR = 1000226004,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD = 1000227000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD = 1000229000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT = 1000234000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT = 1000237000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT = 1000238000,
- VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT = 1000238001,
- VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR = 1000239000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV = 1000240000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT = 1000244000,
- VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT = 1000244002,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT = 1000245000,
- VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT = 1000247000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR = 1000248000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV = 1000249000,
- VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249001,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249002,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV = 1000250000,
- VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV = 1000250001,
- VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV = 1000250002,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT = 1000251000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT = 1000252000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT = 1000254000,
- VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT = 1000254001,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT = 1000254002,
- VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT = 1000255000,
- VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT = 1000255002,
- VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT = 1000255001,
- VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT = 1000256000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT = 1000259000,
- VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT = 1000259001,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT = 1000259002,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT = 1000260000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT = 1000267000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR = 1000269000,
- VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR = 1000269001,
- VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR = 1000269002,
- VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR = 1000269003,
- VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR = 1000269004,
- VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR = 1000269005,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT = 1000273000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = 1000276000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV = 1000277000,
- VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV = 1000277001,
- VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV = 1000277002,
- VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV = 1000277003,
- VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV = 1000277004,
- VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV = 1000277005,
- VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV = 1000277006,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV = 1000277007,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV = 1000278000,
- VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV = 1000278001,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES_KHR = 1000280000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES_KHR = 1000280001,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = 1000281000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = 1000281001,
- VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM = 1000282000,
- VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM = 1000282001,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT = 1000284000,
- VK_STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT = 1000284001,
- VK_STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT = 1000284002,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = 1000286000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = 1000286001,
- VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT = 1000287000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT = 1000287001,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT = 1000287002,
- VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR = 1000290000,
- VK_STRUCTURE_TYPE_PRESENT_ID_KHR = 1000294000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR = 1000294001,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT = 1000295000,
- VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT = 1000295001,
- VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT = 1000295002,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT = 1000297000,
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_ENCODE_INFO_KHR = 1000299000,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_INFO_KHR = 1000299001,
-#endif
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV = 1000300000,
- VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV = 1000300001,
- VK_STRUCTURE_TYPE_MEMORY_BARRIER_2_KHR = 1000314000,
- VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2_KHR = 1000314001,
- VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2_KHR = 1000314002,
- VK_STRUCTURE_TYPE_DEPENDENCY_INFO_KHR = 1000314003,
- VK_STRUCTURE_TYPE_SUBMIT_INFO_2_KHR = 1000314004,
- VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO_KHR = 1000314005,
- VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO_KHR = 1000314006,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR = 1000314007,
- VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV = 1000314008,
- VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV = 1000314009,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR = 1000323000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES_KHR = 1000325000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV = 1000326000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV = 1000326001,
- VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV = 1000326002,
- VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV = 1000327000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV = 1000327001,
- VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_NV = 1000327002,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT = 1000330000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT = 1000332000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT = 1000332001,
- VK_STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM = 1000333000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT = 1000335000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR = 1000336000,
- VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR = 1000337000,
- VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR = 1000337001,
- VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR = 1000337002,
- VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR = 1000337003,
- VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR = 1000337004,
- VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR = 1000337005,
- VK_STRUCTURE_TYPE_BUFFER_COPY_2_KHR = 1000337006,
- VK_STRUCTURE_TYPE_IMAGE_COPY_2_KHR = 1000337007,
- VK_STRUCTURE_TYPE_IMAGE_BLIT_2_KHR = 1000337008,
- VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR = 1000337009,
- VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR = 1000337010,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT = 1000344000,
- VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT = 1000346000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE = 1000351000,
- VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE = 1000351002,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT = 1000352000,
- VK_STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT = 1000352001,
- VK_STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT = 1000352002,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT = 1000353000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT = 1000356000,
- VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3_KHR = 1000360000,
- VK_STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA = 1000364000,
- VK_STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA = 1000364001,
- VK_STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA = 1000364002,
- VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA = 1000365000,
- VK_STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA = 1000365001,
- VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CREATE_INFO_FUCHSIA = 1000366000,
- VK_STRUCTURE_TYPE_IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIA = 1000366001,
- VK_STRUCTURE_TYPE_BUFFER_COLLECTION_IMAGE_CREATE_INFO_FUCHSIA = 1000366002,
- VK_STRUCTURE_TYPE_BUFFER_COLLECTION_PROPERTIES_FUCHSIA = 1000366003,
- VK_STRUCTURE_TYPE_BUFFER_CONSTRAINTS_INFO_FUCHSIA = 1000366004,
- VK_STRUCTURE_TYPE_BUFFER_COLLECTION_BUFFER_CREATE_INFO_FUCHSIA = 1000366005,
- VK_STRUCTURE_TYPE_IMAGE_CONSTRAINTS_INFO_FUCHSIA = 1000366006,
- VK_STRUCTURE_TYPE_IMAGE_FORMAT_CONSTRAINTS_INFO_FUCHSIA = 1000366007,
- VK_STRUCTURE_TYPE_SYSMEM_COLOR_SPACE_FUCHSIA = 1000366008,
- VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CONSTRAINTS_INFO_FUCHSIA = 1000366009,
- VK_STRUCTURE_TYPE_SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI = 1000369000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI = 1000369001,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI = 1000369002,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI = 1000370000,
- VK_STRUCTURE_TYPE_MEMORY_GET_REMOTE_ADDRESS_INFO_NV = 1000371000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV = 1000371001,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT = 1000377000,
- VK_STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX = 1000378000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT = 1000381000,
- VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT = 1000381001,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT = 1000388000,
- VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT = 1000388001,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT = 1000392000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT = 1000392001,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT = 1000411000,
- VK_STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT = 1000411001,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT = 1000412000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES_KHR = 1000413000,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES_KHR = 1000413001,
- VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS_KHR = 1000413002,
- VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS_KHR = 1000413003,
- VK_STRUCTURE_TYPE_IMPORT_COLOR_BUFFER_GOOGLE = 1000385000,
- VK_STRUCTURE_TYPE_IMPORT_BUFFER_GOOGLE = 1000385001,
- VK_STRUCTURE_TYPE_CREATE_BLOB_GOOGLE = 1000385002,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES,
- VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT,
- VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_NV = VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD,
- VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2,
- VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2,
- VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2,
- VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2,
- VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2,
- VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO,
- VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO,
- VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO,
- VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO,
- VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO,
- VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO,
- VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES,
- VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO,
- VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR = VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO,
- VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR = VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES,
- VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO,
- VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO,
- VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO,
- VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES,
- VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES,
- VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO,
- VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES,
- VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO,
- VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR = VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO,
- VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR = VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO,
- VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2,
- VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2,
- VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2,
- VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2,
- VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2,
- VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR = VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO,
- VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR = VK_STRUCTURE_TYPE_SUBPASS_END_INFO,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO,
- VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES,
- VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES,
- VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO,
- VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO,
- VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR,
- VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS,
- VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES,
- VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO,
- VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR = VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2,
- VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR = VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2,
- VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR = VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2,
- VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR = VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2,
- VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR = VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2,
- VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO,
- VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO,
- VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO,
- VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR = VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO,
- VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR = VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES,
- VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES,
- VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO,
- VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO,
- VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES,
- VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO,
- VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES,
- VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES,
- VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES,
- VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO,
- VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR = VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO,
- VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR = VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO,
- VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR = VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO,
- VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL = VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES,
- VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT,
- VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT,
- VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT = VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO,
- VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES,
- VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_KHR = VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO,
- VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO,
- VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR = VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO,
- VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO,
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES,
- VK_STRUCTURE_TYPE_MAX_ENUM = 0x7FFFFFFF
-} VkStructureType;
-
-typedef enum VkImageLayout {
- VK_IMAGE_LAYOUT_UNDEFINED = 0,
- VK_IMAGE_LAYOUT_GENERAL = 1,
- VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2,
- VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3,
- VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4,
- VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5,
- VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6,
- VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7,
- VK_IMAGE_LAYOUT_PREINITIALIZED = 8,
- VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = 1000117000,
- VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = 1000117001,
- VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL = 1000241000,
- VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL = 1000241001,
- VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL = 1000241002,
- VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = 1000241003,
- VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002,
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR = 1000024000,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR = 1000024001,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR = 1000024002,
-#endif
- VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000,
- VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000,
- VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR = 1000164003,
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_IMAGE_LAYOUT_VIDEO_ENCODE_DST_KHR = 1000299000,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_IMAGE_LAYOUT_VIDEO_ENCODE_SRC_KHR = 1000299001,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_IMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHR = 1000299002,
-#endif
- VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR = 1000314000,
- VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR = 1000314001,
- VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL,
- VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL,
- VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV = VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR,
- VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL,
- VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL,
- VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR = VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL,
- VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR = VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL,
- VK_IMAGE_LAYOUT_MAX_ENUM = 0x7FFFFFFF
-} VkImageLayout;
-
-typedef enum VkObjectType {
- VK_OBJECT_TYPE_UNKNOWN = 0,
- VK_OBJECT_TYPE_INSTANCE = 1,
- VK_OBJECT_TYPE_PHYSICAL_DEVICE = 2,
- VK_OBJECT_TYPE_DEVICE = 3,
- VK_OBJECT_TYPE_QUEUE = 4,
- VK_OBJECT_TYPE_SEMAPHORE = 5,
- VK_OBJECT_TYPE_COMMAND_BUFFER = 6,
- VK_OBJECT_TYPE_FENCE = 7,
- VK_OBJECT_TYPE_DEVICE_MEMORY = 8,
- VK_OBJECT_TYPE_BUFFER = 9,
- VK_OBJECT_TYPE_IMAGE = 10,
- VK_OBJECT_TYPE_EVENT = 11,
- VK_OBJECT_TYPE_QUERY_POOL = 12,
- VK_OBJECT_TYPE_BUFFER_VIEW = 13,
- VK_OBJECT_TYPE_IMAGE_VIEW = 14,
- VK_OBJECT_TYPE_SHADER_MODULE = 15,
- VK_OBJECT_TYPE_PIPELINE_CACHE = 16,
- VK_OBJECT_TYPE_PIPELINE_LAYOUT = 17,
- VK_OBJECT_TYPE_RENDER_PASS = 18,
- VK_OBJECT_TYPE_PIPELINE = 19,
- VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT = 20,
- VK_OBJECT_TYPE_SAMPLER = 21,
- VK_OBJECT_TYPE_DESCRIPTOR_POOL = 22,
- VK_OBJECT_TYPE_DESCRIPTOR_SET = 23,
- VK_OBJECT_TYPE_FRAMEBUFFER = 24,
- VK_OBJECT_TYPE_COMMAND_POOL = 25,
- VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION = 1000156000,
- VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE = 1000085000,
- VK_OBJECT_TYPE_SURFACE_KHR = 1000000000,
- VK_OBJECT_TYPE_SWAPCHAIN_KHR = 1000001000,
- VK_OBJECT_TYPE_DISPLAY_KHR = 1000002000,
- VK_OBJECT_TYPE_DISPLAY_MODE_KHR = 1000002001,
- VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT = 1000011000,
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_OBJECT_TYPE_VIDEO_SESSION_KHR = 1000023000,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_OBJECT_TYPE_VIDEO_SESSION_PARAMETERS_KHR = 1000023001,
-#endif
- VK_OBJECT_TYPE_CU_MODULE_NVX = 1000029000,
- VK_OBJECT_TYPE_CU_FUNCTION_NVX = 1000029001,
- VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT = 1000128000,
- VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR = 1000150000,
- VK_OBJECT_TYPE_VALIDATION_CACHE_EXT = 1000160000,
- VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000,
- VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL = 1000210000,
- VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR = 1000268000,
- VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV = 1000277000,
- VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT = 1000295000,
- VK_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA = 1000366000,
- VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE,
- VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION,
- VK_OBJECT_TYPE_MAX_ENUM = 0x7FFFFFFF
-} VkObjectType;
-
-typedef enum VkPipelineCacheHeaderVersion {
- VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1,
- VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM = 0x7FFFFFFF
-} VkPipelineCacheHeaderVersion;
-
-typedef enum VkVendorId {
- VK_VENDOR_ID_VIV = 0x10001,
- VK_VENDOR_ID_VSI = 0x10002,
- VK_VENDOR_ID_KAZAN = 0x10003,
- VK_VENDOR_ID_CODEPLAY = 0x10004,
- VK_VENDOR_ID_MESA = 0x10005,
- VK_VENDOR_ID_POCL = 0x10006,
- VK_VENDOR_ID_MAX_ENUM = 0x7FFFFFFF
-} VkVendorId;
-
-typedef enum VkSystemAllocationScope {
- VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0,
- VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 1,
- VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 2,
- VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 3,
- VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 4,
- VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM = 0x7FFFFFFF
-} VkSystemAllocationScope;
-
-typedef enum VkInternalAllocationType {
- VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0,
- VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM = 0x7FFFFFFF
-} VkInternalAllocationType;
-
-typedef enum VkFormat {
- VK_FORMAT_UNDEFINED = 0,
- VK_FORMAT_R4G4_UNORM_PACK8 = 1,
- VK_FORMAT_R4G4B4A4_UNORM_PACK16 = 2,
- VK_FORMAT_B4G4R4A4_UNORM_PACK16 = 3,
- VK_FORMAT_R5G6B5_UNORM_PACK16 = 4,
- VK_FORMAT_B5G6R5_UNORM_PACK16 = 5,
- VK_FORMAT_R5G5B5A1_UNORM_PACK16 = 6,
- VK_FORMAT_B5G5R5A1_UNORM_PACK16 = 7,
- VK_FORMAT_A1R5G5B5_UNORM_PACK16 = 8,
- VK_FORMAT_R8_UNORM = 9,
- VK_FORMAT_R8_SNORM = 10,
- VK_FORMAT_R8_USCALED = 11,
- VK_FORMAT_R8_SSCALED = 12,
- VK_FORMAT_R8_UINT = 13,
- VK_FORMAT_R8_SINT = 14,
- VK_FORMAT_R8_SRGB = 15,
- VK_FORMAT_R8G8_UNORM = 16,
- VK_FORMAT_R8G8_SNORM = 17,
- VK_FORMAT_R8G8_USCALED = 18,
- VK_FORMAT_R8G8_SSCALED = 19,
- VK_FORMAT_R8G8_UINT = 20,
- VK_FORMAT_R8G8_SINT = 21,
- VK_FORMAT_R8G8_SRGB = 22,
- VK_FORMAT_R8G8B8_UNORM = 23,
- VK_FORMAT_R8G8B8_SNORM = 24,
- VK_FORMAT_R8G8B8_USCALED = 25,
- VK_FORMAT_R8G8B8_SSCALED = 26,
- VK_FORMAT_R8G8B8_UINT = 27,
- VK_FORMAT_R8G8B8_SINT = 28,
- VK_FORMAT_R8G8B8_SRGB = 29,
- VK_FORMAT_B8G8R8_UNORM = 30,
- VK_FORMAT_B8G8R8_SNORM = 31,
- VK_FORMAT_B8G8R8_USCALED = 32,
- VK_FORMAT_B8G8R8_SSCALED = 33,
- VK_FORMAT_B8G8R8_UINT = 34,
- VK_FORMAT_B8G8R8_SINT = 35,
- VK_FORMAT_B8G8R8_SRGB = 36,
- VK_FORMAT_R8G8B8A8_UNORM = 37,
- VK_FORMAT_R8G8B8A8_SNORM = 38,
- VK_FORMAT_R8G8B8A8_USCALED = 39,
- VK_FORMAT_R8G8B8A8_SSCALED = 40,
- VK_FORMAT_R8G8B8A8_UINT = 41,
- VK_FORMAT_R8G8B8A8_SINT = 42,
- VK_FORMAT_R8G8B8A8_SRGB = 43,
- VK_FORMAT_B8G8R8A8_UNORM = 44,
- VK_FORMAT_B8G8R8A8_SNORM = 45,
- VK_FORMAT_B8G8R8A8_USCALED = 46,
- VK_FORMAT_B8G8R8A8_SSCALED = 47,
- VK_FORMAT_B8G8R8A8_UINT = 48,
- VK_FORMAT_B8G8R8A8_SINT = 49,
- VK_FORMAT_B8G8R8A8_SRGB = 50,
- VK_FORMAT_A8B8G8R8_UNORM_PACK32 = 51,
- VK_FORMAT_A8B8G8R8_SNORM_PACK32 = 52,
- VK_FORMAT_A8B8G8R8_USCALED_PACK32 = 53,
- VK_FORMAT_A8B8G8R8_SSCALED_PACK32 = 54,
- VK_FORMAT_A8B8G8R8_UINT_PACK32 = 55,
- VK_FORMAT_A8B8G8R8_SINT_PACK32 = 56,
- VK_FORMAT_A8B8G8R8_SRGB_PACK32 = 57,
- VK_FORMAT_A2R10G10B10_UNORM_PACK32 = 58,
- VK_FORMAT_A2R10G10B10_SNORM_PACK32 = 59,
- VK_FORMAT_A2R10G10B10_USCALED_PACK32 = 60,
- VK_FORMAT_A2R10G10B10_SSCALED_PACK32 = 61,
- VK_FORMAT_A2R10G10B10_UINT_PACK32 = 62,
- VK_FORMAT_A2R10G10B10_SINT_PACK32 = 63,
- VK_FORMAT_A2B10G10R10_UNORM_PACK32 = 64,
- VK_FORMAT_A2B10G10R10_SNORM_PACK32 = 65,
- VK_FORMAT_A2B10G10R10_USCALED_PACK32 = 66,
- VK_FORMAT_A2B10G10R10_SSCALED_PACK32 = 67,
- VK_FORMAT_A2B10G10R10_UINT_PACK32 = 68,
- VK_FORMAT_A2B10G10R10_SINT_PACK32 = 69,
- VK_FORMAT_R16_UNORM = 70,
- VK_FORMAT_R16_SNORM = 71,
- VK_FORMAT_R16_USCALED = 72,
- VK_FORMAT_R16_SSCALED = 73,
- VK_FORMAT_R16_UINT = 74,
- VK_FORMAT_R16_SINT = 75,
- VK_FORMAT_R16_SFLOAT = 76,
- VK_FORMAT_R16G16_UNORM = 77,
- VK_FORMAT_R16G16_SNORM = 78,
- VK_FORMAT_R16G16_USCALED = 79,
- VK_FORMAT_R16G16_SSCALED = 80,
- VK_FORMAT_R16G16_UINT = 81,
- VK_FORMAT_R16G16_SINT = 82,
- VK_FORMAT_R16G16_SFLOAT = 83,
- VK_FORMAT_R16G16B16_UNORM = 84,
- VK_FORMAT_R16G16B16_SNORM = 85,
- VK_FORMAT_R16G16B16_USCALED = 86,
- VK_FORMAT_R16G16B16_SSCALED = 87,
- VK_FORMAT_R16G16B16_UINT = 88,
- VK_FORMAT_R16G16B16_SINT = 89,
- VK_FORMAT_R16G16B16_SFLOAT = 90,
- VK_FORMAT_R16G16B16A16_UNORM = 91,
- VK_FORMAT_R16G16B16A16_SNORM = 92,
- VK_FORMAT_R16G16B16A16_USCALED = 93,
- VK_FORMAT_R16G16B16A16_SSCALED = 94,
- VK_FORMAT_R16G16B16A16_UINT = 95,
- VK_FORMAT_R16G16B16A16_SINT = 96,
- VK_FORMAT_R16G16B16A16_SFLOAT = 97,
- VK_FORMAT_R32_UINT = 98,
- VK_FORMAT_R32_SINT = 99,
- VK_FORMAT_R32_SFLOAT = 100,
- VK_FORMAT_R32G32_UINT = 101,
- VK_FORMAT_R32G32_SINT = 102,
- VK_FORMAT_R32G32_SFLOAT = 103,
- VK_FORMAT_R32G32B32_UINT = 104,
- VK_FORMAT_R32G32B32_SINT = 105,
- VK_FORMAT_R32G32B32_SFLOAT = 106,
- VK_FORMAT_R32G32B32A32_UINT = 107,
- VK_FORMAT_R32G32B32A32_SINT = 108,
- VK_FORMAT_R32G32B32A32_SFLOAT = 109,
- VK_FORMAT_R64_UINT = 110,
- VK_FORMAT_R64_SINT = 111,
- VK_FORMAT_R64_SFLOAT = 112,
- VK_FORMAT_R64G64_UINT = 113,
- VK_FORMAT_R64G64_SINT = 114,
- VK_FORMAT_R64G64_SFLOAT = 115,
- VK_FORMAT_R64G64B64_UINT = 116,
- VK_FORMAT_R64G64B64_SINT = 117,
- VK_FORMAT_R64G64B64_SFLOAT = 118,
- VK_FORMAT_R64G64B64A64_UINT = 119,
- VK_FORMAT_R64G64B64A64_SINT = 120,
- VK_FORMAT_R64G64B64A64_SFLOAT = 121,
- VK_FORMAT_B10G11R11_UFLOAT_PACK32 = 122,
- VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 = 123,
- VK_FORMAT_D16_UNORM = 124,
- VK_FORMAT_X8_D24_UNORM_PACK32 = 125,
- VK_FORMAT_D32_SFLOAT = 126,
- VK_FORMAT_S8_UINT = 127,
- VK_FORMAT_D16_UNORM_S8_UINT = 128,
- VK_FORMAT_D24_UNORM_S8_UINT = 129,
- VK_FORMAT_D32_SFLOAT_S8_UINT = 130,
- VK_FORMAT_BC1_RGB_UNORM_BLOCK = 131,
- VK_FORMAT_BC1_RGB_SRGB_BLOCK = 132,
- VK_FORMAT_BC1_RGBA_UNORM_BLOCK = 133,
- VK_FORMAT_BC1_RGBA_SRGB_BLOCK = 134,
- VK_FORMAT_BC2_UNORM_BLOCK = 135,
- VK_FORMAT_BC2_SRGB_BLOCK = 136,
- VK_FORMAT_BC3_UNORM_BLOCK = 137,
- VK_FORMAT_BC3_SRGB_BLOCK = 138,
- VK_FORMAT_BC4_UNORM_BLOCK = 139,
- VK_FORMAT_BC4_SNORM_BLOCK = 140,
- VK_FORMAT_BC5_UNORM_BLOCK = 141,
- VK_FORMAT_BC5_SNORM_BLOCK = 142,
- VK_FORMAT_BC6H_UFLOAT_BLOCK = 143,
- VK_FORMAT_BC6H_SFLOAT_BLOCK = 144,
- VK_FORMAT_BC7_UNORM_BLOCK = 145,
- VK_FORMAT_BC7_SRGB_BLOCK = 146,
- VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK = 147,
- VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK = 148,
- VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = 149,
- VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = 150,
- VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = 151,
- VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = 152,
- VK_FORMAT_EAC_R11_UNORM_BLOCK = 153,
- VK_FORMAT_EAC_R11_SNORM_BLOCK = 154,
- VK_FORMAT_EAC_R11G11_UNORM_BLOCK = 155,
- VK_FORMAT_EAC_R11G11_SNORM_BLOCK = 156,
- VK_FORMAT_ASTC_4x4_UNORM_BLOCK = 157,
- VK_FORMAT_ASTC_4x4_SRGB_BLOCK = 158,
- VK_FORMAT_ASTC_5x4_UNORM_BLOCK = 159,
- VK_FORMAT_ASTC_5x4_SRGB_BLOCK = 160,
- VK_FORMAT_ASTC_5x5_UNORM_BLOCK = 161,
- VK_FORMAT_ASTC_5x5_SRGB_BLOCK = 162,
- VK_FORMAT_ASTC_6x5_UNORM_BLOCK = 163,
- VK_FORMAT_ASTC_6x5_SRGB_BLOCK = 164,
- VK_FORMAT_ASTC_6x6_UNORM_BLOCK = 165,
- VK_FORMAT_ASTC_6x6_SRGB_BLOCK = 166,
- VK_FORMAT_ASTC_8x5_UNORM_BLOCK = 167,
- VK_FORMAT_ASTC_8x5_SRGB_BLOCK = 168,
- VK_FORMAT_ASTC_8x6_UNORM_BLOCK = 169,
- VK_FORMAT_ASTC_8x6_SRGB_BLOCK = 170,
- VK_FORMAT_ASTC_8x8_UNORM_BLOCK = 171,
- VK_FORMAT_ASTC_8x8_SRGB_BLOCK = 172,
- VK_FORMAT_ASTC_10x5_UNORM_BLOCK = 173,
- VK_FORMAT_ASTC_10x5_SRGB_BLOCK = 174,
- VK_FORMAT_ASTC_10x6_UNORM_BLOCK = 175,
- VK_FORMAT_ASTC_10x6_SRGB_BLOCK = 176,
- VK_FORMAT_ASTC_10x8_UNORM_BLOCK = 177,
- VK_FORMAT_ASTC_10x8_SRGB_BLOCK = 178,
- VK_FORMAT_ASTC_10x10_UNORM_BLOCK = 179,
- VK_FORMAT_ASTC_10x10_SRGB_BLOCK = 180,
- VK_FORMAT_ASTC_12x10_UNORM_BLOCK = 181,
- VK_FORMAT_ASTC_12x10_SRGB_BLOCK = 182,
- VK_FORMAT_ASTC_12x12_UNORM_BLOCK = 183,
- VK_FORMAT_ASTC_12x12_SRGB_BLOCK = 184,
- VK_FORMAT_G8B8G8R8_422_UNORM = 1000156000,
- VK_FORMAT_B8G8R8G8_422_UNORM = 1000156001,
- VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM = 1000156002,
- VK_FORMAT_G8_B8R8_2PLANE_420_UNORM = 1000156003,
- VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM = 1000156004,
- VK_FORMAT_G8_B8R8_2PLANE_422_UNORM = 1000156005,
- VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM = 1000156006,
- VK_FORMAT_R10X6_UNORM_PACK16 = 1000156007,
- VK_FORMAT_R10X6G10X6_UNORM_2PACK16 = 1000156008,
- VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 = 1000156009,
- VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 = 1000156010,
- VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 = 1000156011,
- VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 = 1000156012,
- VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 = 1000156013,
- VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 = 1000156014,
- VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 = 1000156015,
- VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 = 1000156016,
- VK_FORMAT_R12X4_UNORM_PACK16 = 1000156017,
- VK_FORMAT_R12X4G12X4_UNORM_2PACK16 = 1000156018,
- VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 = 1000156019,
- VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 = 1000156020,
- VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 = 1000156021,
- VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 = 1000156022,
- VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 = 1000156023,
- VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 = 1000156024,
- VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 = 1000156025,
- VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 = 1000156026,
- VK_FORMAT_G16B16G16R16_422_UNORM = 1000156027,
- VK_FORMAT_B16G16R16G16_422_UNORM = 1000156028,
- VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM = 1000156029,
- VK_FORMAT_G16_B16R16_2PLANE_420_UNORM = 1000156030,
- VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM = 1000156031,
- VK_FORMAT_G16_B16R16_2PLANE_422_UNORM = 1000156032,
- VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM = 1000156033,
- VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000,
- VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001,
- VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002,
- VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG = 1000054003,
- VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG = 1000054004,
- VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG = 1000054005,
- VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG = 1000054006,
- VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG = 1000054007,
- VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT = 1000066000,
- VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = 1000066001,
- VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = 1000066002,
- VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT = 1000066003,
- VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT = 1000066004,
- VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT = 1000066005,
- VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT = 1000066006,
- VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT = 1000066007,
- VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT = 1000066008,
- VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT = 1000066009,
- VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT = 1000066010,
- VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT = 1000066011,
- VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT = 1000066012,
- VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT = 1000066013,
- VK_FORMAT_G8_B8R8_2PLANE_444_UNORM_EXT = 1000330000,
- VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT = 1000330001,
- VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT = 1000330002,
- VK_FORMAT_G16_B16R16_2PLANE_444_UNORM_EXT = 1000330003,
- VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT = 1000340000,
- VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT = 1000340001,
- VK_FORMAT_G8B8G8R8_422_UNORM_KHR = VK_FORMAT_G8B8G8R8_422_UNORM,
- VK_FORMAT_B8G8R8G8_422_UNORM_KHR = VK_FORMAT_B8G8R8G8_422_UNORM,
- VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR = VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM,
- VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR = VK_FORMAT_G8_B8R8_2PLANE_420_UNORM,
- VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR = VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM,
- VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR = VK_FORMAT_G8_B8R8_2PLANE_422_UNORM,
- VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR = VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM,
- VK_FORMAT_R10X6_UNORM_PACK16_KHR = VK_FORMAT_R10X6_UNORM_PACK16,
- VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR = VK_FORMAT_R10X6G10X6_UNORM_2PACK16,
- VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR = VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16,
- VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR = VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16,
- VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR = VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16,
- VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16,
- VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16,
- VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16,
- VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16,
- VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16,
- VK_FORMAT_R12X4_UNORM_PACK16_KHR = VK_FORMAT_R12X4_UNORM_PACK16,
- VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR = VK_FORMAT_R12X4G12X4_UNORM_2PACK16,
- VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR = VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16,
- VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR = VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16,
- VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR = VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16,
- VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16,
- VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16,
- VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16,
- VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16,
- VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16,
- VK_FORMAT_G16B16G16R16_422_UNORM_KHR = VK_FORMAT_G16B16G16R16_422_UNORM,
- VK_FORMAT_B16G16R16G16_422_UNORM_KHR = VK_FORMAT_B16G16R16G16_422_UNORM,
- VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR = VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM,
- VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR = VK_FORMAT_G16_B16R16_2PLANE_420_UNORM,
- VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR = VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM,
- VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR = VK_FORMAT_G16_B16R16_2PLANE_422_UNORM,
- VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR = VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM,
- VK_FORMAT_MAX_ENUM = 0x7FFFFFFF
-} VkFormat;
-
-typedef enum VkImageTiling {
- VK_IMAGE_TILING_OPTIMAL = 0,
- VK_IMAGE_TILING_LINEAR = 1,
- VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT = 1000158000,
- VK_IMAGE_TILING_MAX_ENUM = 0x7FFFFFFF
-} VkImageTiling;
-
-typedef enum VkImageType {
- VK_IMAGE_TYPE_1D = 0,
- VK_IMAGE_TYPE_2D = 1,
- VK_IMAGE_TYPE_3D = 2,
- VK_IMAGE_TYPE_MAX_ENUM = 0x7FFFFFFF
-} VkImageType;
-
-typedef enum VkPhysicalDeviceType {
- VK_PHYSICAL_DEVICE_TYPE_OTHER = 0,
- VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1,
- VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2,
- VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 3,
- VK_PHYSICAL_DEVICE_TYPE_CPU = 4,
- VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM = 0x7FFFFFFF
-} VkPhysicalDeviceType;
-
-typedef enum VkQueryType {
- VK_QUERY_TYPE_OCCLUSION = 0,
- VK_QUERY_TYPE_PIPELINE_STATISTICS = 1,
- VK_QUERY_TYPE_TIMESTAMP = 2,
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR = 1000023000,
-#endif
- VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT = 1000028004,
- VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR = 1000116000,
- VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR = 1000150000,
- VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR = 1000150001,
- VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV = 1000165000,
- VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL = 1000210000,
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR = 1000299000,
-#endif
- VK_QUERY_TYPE_MAX_ENUM = 0x7FFFFFFF
-} VkQueryType;
-
-typedef enum VkSharingMode {
- VK_SHARING_MODE_EXCLUSIVE = 0,
- VK_SHARING_MODE_CONCURRENT = 1,
- VK_SHARING_MODE_MAX_ENUM = 0x7FFFFFFF
-} VkSharingMode;
-
-typedef enum VkComponentSwizzle {
- VK_COMPONENT_SWIZZLE_IDENTITY = 0,
- VK_COMPONENT_SWIZZLE_ZERO = 1,
- VK_COMPONENT_SWIZZLE_ONE = 2,
- VK_COMPONENT_SWIZZLE_R = 3,
- VK_COMPONENT_SWIZZLE_G = 4,
- VK_COMPONENT_SWIZZLE_B = 5,
- VK_COMPONENT_SWIZZLE_A = 6,
- VK_COMPONENT_SWIZZLE_MAX_ENUM = 0x7FFFFFFF
-} VkComponentSwizzle;
-
-typedef enum VkImageViewType {
- VK_IMAGE_VIEW_TYPE_1D = 0,
- VK_IMAGE_VIEW_TYPE_2D = 1,
- VK_IMAGE_VIEW_TYPE_3D = 2,
- VK_IMAGE_VIEW_TYPE_CUBE = 3,
- VK_IMAGE_VIEW_TYPE_1D_ARRAY = 4,
- VK_IMAGE_VIEW_TYPE_2D_ARRAY = 5,
- VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6,
- VK_IMAGE_VIEW_TYPE_MAX_ENUM = 0x7FFFFFFF
-} VkImageViewType;
-
-typedef enum VkBlendFactor {
- VK_BLEND_FACTOR_ZERO = 0,
- VK_BLEND_FACTOR_ONE = 1,
- VK_BLEND_FACTOR_SRC_COLOR = 2,
- VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 3,
- VK_BLEND_FACTOR_DST_COLOR = 4,
- VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 5,
- VK_BLEND_FACTOR_SRC_ALPHA = 6,
- VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 7,
- VK_BLEND_FACTOR_DST_ALPHA = 8,
- VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 9,
- VK_BLEND_FACTOR_CONSTANT_COLOR = 10,
- VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 11,
- VK_BLEND_FACTOR_CONSTANT_ALPHA = 12,
- VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 13,
- VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 14,
- VK_BLEND_FACTOR_SRC1_COLOR = 15,
- VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16,
- VK_BLEND_FACTOR_SRC1_ALPHA = 17,
- VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18,
- VK_BLEND_FACTOR_MAX_ENUM = 0x7FFFFFFF
-} VkBlendFactor;
-
-typedef enum VkBlendOp {
- VK_BLEND_OP_ADD = 0,
- VK_BLEND_OP_SUBTRACT = 1,
- VK_BLEND_OP_REVERSE_SUBTRACT = 2,
- VK_BLEND_OP_MIN = 3,
- VK_BLEND_OP_MAX = 4,
- VK_BLEND_OP_ZERO_EXT = 1000148000,
- VK_BLEND_OP_SRC_EXT = 1000148001,
- VK_BLEND_OP_DST_EXT = 1000148002,
- VK_BLEND_OP_SRC_OVER_EXT = 1000148003,
- VK_BLEND_OP_DST_OVER_EXT = 1000148004,
- VK_BLEND_OP_SRC_IN_EXT = 1000148005,
- VK_BLEND_OP_DST_IN_EXT = 1000148006,
- VK_BLEND_OP_SRC_OUT_EXT = 1000148007,
- VK_BLEND_OP_DST_OUT_EXT = 1000148008,
- VK_BLEND_OP_SRC_ATOP_EXT = 1000148009,
- VK_BLEND_OP_DST_ATOP_EXT = 1000148010,
- VK_BLEND_OP_XOR_EXT = 1000148011,
- VK_BLEND_OP_MULTIPLY_EXT = 1000148012,
- VK_BLEND_OP_SCREEN_EXT = 1000148013,
- VK_BLEND_OP_OVERLAY_EXT = 1000148014,
- VK_BLEND_OP_DARKEN_EXT = 1000148015,
- VK_BLEND_OP_LIGHTEN_EXT = 1000148016,
- VK_BLEND_OP_COLORDODGE_EXT = 1000148017,
- VK_BLEND_OP_COLORBURN_EXT = 1000148018,
- VK_BLEND_OP_HARDLIGHT_EXT = 1000148019,
- VK_BLEND_OP_SOFTLIGHT_EXT = 1000148020,
- VK_BLEND_OP_DIFFERENCE_EXT = 1000148021,
- VK_BLEND_OP_EXCLUSION_EXT = 1000148022,
- VK_BLEND_OP_INVERT_EXT = 1000148023,
- VK_BLEND_OP_INVERT_RGB_EXT = 1000148024,
- VK_BLEND_OP_LINEARDODGE_EXT = 1000148025,
- VK_BLEND_OP_LINEARBURN_EXT = 1000148026,
- VK_BLEND_OP_VIVIDLIGHT_EXT = 1000148027,
- VK_BLEND_OP_LINEARLIGHT_EXT = 1000148028,
- VK_BLEND_OP_PINLIGHT_EXT = 1000148029,
- VK_BLEND_OP_HARDMIX_EXT = 1000148030,
- VK_BLEND_OP_HSL_HUE_EXT = 1000148031,
- VK_BLEND_OP_HSL_SATURATION_EXT = 1000148032,
- VK_BLEND_OP_HSL_COLOR_EXT = 1000148033,
- VK_BLEND_OP_HSL_LUMINOSITY_EXT = 1000148034,
- VK_BLEND_OP_PLUS_EXT = 1000148035,
- VK_BLEND_OP_PLUS_CLAMPED_EXT = 1000148036,
- VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT = 1000148037,
- VK_BLEND_OP_PLUS_DARKER_EXT = 1000148038,
- VK_BLEND_OP_MINUS_EXT = 1000148039,
- VK_BLEND_OP_MINUS_CLAMPED_EXT = 1000148040,
- VK_BLEND_OP_CONTRAST_EXT = 1000148041,
- VK_BLEND_OP_INVERT_OVG_EXT = 1000148042,
- VK_BLEND_OP_RED_EXT = 1000148043,
- VK_BLEND_OP_GREEN_EXT = 1000148044,
- VK_BLEND_OP_BLUE_EXT = 1000148045,
- VK_BLEND_OP_MAX_ENUM = 0x7FFFFFFF
-} VkBlendOp;
-
-typedef enum VkCompareOp {
- VK_COMPARE_OP_NEVER = 0,
- VK_COMPARE_OP_LESS = 1,
- VK_COMPARE_OP_EQUAL = 2,
- VK_COMPARE_OP_LESS_OR_EQUAL = 3,
- VK_COMPARE_OP_GREATER = 4,
- VK_COMPARE_OP_NOT_EQUAL = 5,
- VK_COMPARE_OP_GREATER_OR_EQUAL = 6,
- VK_COMPARE_OP_ALWAYS = 7,
- VK_COMPARE_OP_MAX_ENUM = 0x7FFFFFFF
-} VkCompareOp;
-
-typedef enum VkDynamicState {
- VK_DYNAMIC_STATE_VIEWPORT = 0,
- VK_DYNAMIC_STATE_SCISSOR = 1,
- VK_DYNAMIC_STATE_LINE_WIDTH = 2,
- VK_DYNAMIC_STATE_DEPTH_BIAS = 3,
- VK_DYNAMIC_STATE_BLEND_CONSTANTS = 4,
- VK_DYNAMIC_STATE_DEPTH_BOUNDS = 5,
- VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = 6,
- VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = 7,
- VK_DYNAMIC_STATE_STENCIL_REFERENCE = 8,
- VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = 1000087000,
- VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = 1000099000,
- VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT = 1000143000,
- VK_DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR = 1000347000,
- VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV = 1000164004,
- VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV = 1000164006,
- VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV = 1000205001,
- VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR = 1000226000,
- VK_DYNAMIC_STATE_LINE_STIPPLE_EXT = 1000259000,
- VK_DYNAMIC_STATE_CULL_MODE_EXT = 1000267000,
- VK_DYNAMIC_STATE_FRONT_FACE_EXT = 1000267001,
- VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT = 1000267002,
- VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT = 1000267003,
- VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT = 1000267004,
- VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT = 1000267005,
- VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT = 1000267006,
- VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT = 1000267007,
- VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT = 1000267008,
- VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT = 1000267009,
- VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT = 1000267010,
- VK_DYNAMIC_STATE_STENCIL_OP_EXT = 1000267011,
- VK_DYNAMIC_STATE_VERTEX_INPUT_EXT = 1000352000,
- VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT = 1000377000,
- VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT = 1000377001,
- VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT = 1000377002,
- VK_DYNAMIC_STATE_LOGIC_OP_EXT = 1000377003,
- VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT = 1000377004,
- VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT = 1000381000,
- VK_DYNAMIC_STATE_MAX_ENUM = 0x7FFFFFFF
-} VkDynamicState;
-
-typedef enum VkFrontFace {
- VK_FRONT_FACE_COUNTER_CLOCKWISE = 0,
- VK_FRONT_FACE_CLOCKWISE = 1,
- VK_FRONT_FACE_MAX_ENUM = 0x7FFFFFFF
-} VkFrontFace;
-
-typedef enum VkVertexInputRate {
- VK_VERTEX_INPUT_RATE_VERTEX = 0,
- VK_VERTEX_INPUT_RATE_INSTANCE = 1,
- VK_VERTEX_INPUT_RATE_MAX_ENUM = 0x7FFFFFFF
-} VkVertexInputRate;
-
-typedef enum VkPrimitiveTopology {
- VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0,
- VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1,
- VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2,
- VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3,
- VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4,
- VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5,
- VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6,
- VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7,
- VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8,
- VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9,
- VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10,
- VK_PRIMITIVE_TOPOLOGY_MAX_ENUM = 0x7FFFFFFF
-} VkPrimitiveTopology;
-
-typedef enum VkPolygonMode {
- VK_POLYGON_MODE_FILL = 0,
- VK_POLYGON_MODE_LINE = 1,
- VK_POLYGON_MODE_POINT = 2,
- VK_POLYGON_MODE_FILL_RECTANGLE_NV = 1000153000,
- VK_POLYGON_MODE_MAX_ENUM = 0x7FFFFFFF
-} VkPolygonMode;
-
-typedef enum VkStencilOp {
- VK_STENCIL_OP_KEEP = 0,
- VK_STENCIL_OP_ZERO = 1,
- VK_STENCIL_OP_REPLACE = 2,
- VK_STENCIL_OP_INCREMENT_AND_CLAMP = 3,
- VK_STENCIL_OP_DECREMENT_AND_CLAMP = 4,
- VK_STENCIL_OP_INVERT = 5,
- VK_STENCIL_OP_INCREMENT_AND_WRAP = 6,
- VK_STENCIL_OP_DECREMENT_AND_WRAP = 7,
- VK_STENCIL_OP_MAX_ENUM = 0x7FFFFFFF
-} VkStencilOp;
-
-typedef enum VkLogicOp {
- VK_LOGIC_OP_CLEAR = 0,
- VK_LOGIC_OP_AND = 1,
- VK_LOGIC_OP_AND_REVERSE = 2,
- VK_LOGIC_OP_COPY = 3,
- VK_LOGIC_OP_AND_INVERTED = 4,
- VK_LOGIC_OP_NO_OP = 5,
- VK_LOGIC_OP_XOR = 6,
- VK_LOGIC_OP_OR = 7,
- VK_LOGIC_OP_NOR = 8,
- VK_LOGIC_OP_EQUIVALENT = 9,
- VK_LOGIC_OP_INVERT = 10,
- VK_LOGIC_OP_OR_REVERSE = 11,
- VK_LOGIC_OP_COPY_INVERTED = 12,
- VK_LOGIC_OP_OR_INVERTED = 13,
- VK_LOGIC_OP_NAND = 14,
- VK_LOGIC_OP_SET = 15,
- VK_LOGIC_OP_MAX_ENUM = 0x7FFFFFFF
-} VkLogicOp;
-
-typedef enum VkBorderColor {
- VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0,
- VK_BORDER_COLOR_INT_TRANSPARENT_BLACK = 1,
- VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK = 2,
- VK_BORDER_COLOR_INT_OPAQUE_BLACK = 3,
- VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE = 4,
- VK_BORDER_COLOR_INT_OPAQUE_WHITE = 5,
- VK_BORDER_COLOR_FLOAT_CUSTOM_EXT = 1000287003,
- VK_BORDER_COLOR_INT_CUSTOM_EXT = 1000287004,
- VK_BORDER_COLOR_MAX_ENUM = 0x7FFFFFFF
-} VkBorderColor;
-
-typedef enum VkFilter {
- VK_FILTER_NEAREST = 0,
- VK_FILTER_LINEAR = 1,
- VK_FILTER_CUBIC_IMG = 1000015000,
- VK_FILTER_CUBIC_EXT = VK_FILTER_CUBIC_IMG,
- VK_FILTER_MAX_ENUM = 0x7FFFFFFF
-} VkFilter;
-
-typedef enum VkSamplerAddressMode {
- VK_SAMPLER_ADDRESS_MODE_REPEAT = 0,
- VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = 1,
- VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = 2,
- VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = 3,
- VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = 4,
- VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE_KHR = VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE,
- VK_SAMPLER_ADDRESS_MODE_MAX_ENUM = 0x7FFFFFFF
-} VkSamplerAddressMode;
-
-typedef enum VkSamplerMipmapMode {
- VK_SAMPLER_MIPMAP_MODE_NEAREST = 0,
- VK_SAMPLER_MIPMAP_MODE_LINEAR = 1,
- VK_SAMPLER_MIPMAP_MODE_MAX_ENUM = 0x7FFFFFFF
-} VkSamplerMipmapMode;
-
-typedef enum VkDescriptorType {
- VK_DESCRIPTOR_TYPE_SAMPLER = 0,
- VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 1,
- VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 2,
- VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 3,
- VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 4,
- VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 5,
- VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 6,
- VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 7,
- VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 8,
- VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 9,
- VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 10,
- VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT = 1000138000,
- VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR = 1000150000,
- VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000,
- VK_DESCRIPTOR_TYPE_MUTABLE_VALVE = 1000351000,
- VK_DESCRIPTOR_TYPE_MAX_ENUM = 0x7FFFFFFF
-} VkDescriptorType;
-
-typedef enum VkAttachmentLoadOp {
- VK_ATTACHMENT_LOAD_OP_LOAD = 0,
- VK_ATTACHMENT_LOAD_OP_CLEAR = 1,
- VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2,
- VK_ATTACHMENT_LOAD_OP_NONE_EXT = 1000400000,
- VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 0x7FFFFFFF
-} VkAttachmentLoadOp;
-
-typedef enum VkAttachmentStoreOp {
- VK_ATTACHMENT_STORE_OP_STORE = 0,
- VK_ATTACHMENT_STORE_OP_DONT_CARE = 1,
- VK_ATTACHMENT_STORE_OP_NONE_KHR = 1000301000,
- VK_ATTACHMENT_STORE_OP_NONE_QCOM = VK_ATTACHMENT_STORE_OP_NONE_KHR,
- VK_ATTACHMENT_STORE_OP_NONE_EXT = VK_ATTACHMENT_STORE_OP_NONE_KHR,
- VK_ATTACHMENT_STORE_OP_MAX_ENUM = 0x7FFFFFFF
-} VkAttachmentStoreOp;
-
-typedef enum VkPipelineBindPoint {
- VK_PIPELINE_BIND_POINT_GRAPHICS = 0,
- VK_PIPELINE_BIND_POINT_COMPUTE = 1,
- VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR = 1000165000,
- VK_PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI = 1000369003,
- VK_PIPELINE_BIND_POINT_RAY_TRACING_NV = VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR,
- VK_PIPELINE_BIND_POINT_MAX_ENUM = 0x7FFFFFFF
-} VkPipelineBindPoint;
-
-typedef enum VkCommandBufferLevel {
- VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0,
- VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1,
- VK_COMMAND_BUFFER_LEVEL_MAX_ENUM = 0x7FFFFFFF
-} VkCommandBufferLevel;
-
-typedef enum VkIndexType {
- VK_INDEX_TYPE_UINT16 = 0,
- VK_INDEX_TYPE_UINT32 = 1,
- VK_INDEX_TYPE_NONE_KHR = 1000165000,
- VK_INDEX_TYPE_UINT8_EXT = 1000265000,
- VK_INDEX_TYPE_NONE_NV = VK_INDEX_TYPE_NONE_KHR,
- VK_INDEX_TYPE_MAX_ENUM = 0x7FFFFFFF
-} VkIndexType;
-
-typedef enum VkSubpassContents {
- VK_SUBPASS_CONTENTS_INLINE = 0,
- VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1,
- VK_SUBPASS_CONTENTS_MAX_ENUM = 0x7FFFFFFF
-} VkSubpassContents;
-
-typedef enum VkAccessFlagBits {
- VK_ACCESS_INDIRECT_COMMAND_READ_BIT = 0x00000001,
- VK_ACCESS_INDEX_READ_BIT = 0x00000002,
- VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT = 0x00000004,
- VK_ACCESS_UNIFORM_READ_BIT = 0x00000008,
- VK_ACCESS_INPUT_ATTACHMENT_READ_BIT = 0x00000010,
- VK_ACCESS_SHADER_READ_BIT = 0x00000020,
- VK_ACCESS_SHADER_WRITE_BIT = 0x00000040,
- VK_ACCESS_COLOR_ATTACHMENT_READ_BIT = 0x00000080,
- VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT = 0x00000100,
- VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 0x00000200,
- VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 0x00000400,
- VK_ACCESS_TRANSFER_READ_BIT = 0x00000800,
- VK_ACCESS_TRANSFER_WRITE_BIT = 0x00001000,
- VK_ACCESS_HOST_READ_BIT = 0x00002000,
- VK_ACCESS_HOST_WRITE_BIT = 0x00004000,
- VK_ACCESS_MEMORY_READ_BIT = 0x00008000,
- VK_ACCESS_MEMORY_WRITE_BIT = 0x00010000,
- VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = 0x02000000,
- VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = 0x04000000,
- VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = 0x08000000,
- VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT = 0x00100000,
- VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 0x00080000,
- VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR = 0x00200000,
- VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 0x00400000,
- VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 0x01000000,
- VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR = 0x00800000,
- VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 0x00020000,
- VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 0x00040000,
- VK_ACCESS_NONE_KHR = 0,
- VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR,
- VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR,
- VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR,
- VK_ACCESS_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkAccessFlagBits;
-typedef VkFlags VkAccessFlags;
-
-typedef enum VkImageAspectFlagBits {
- VK_IMAGE_ASPECT_COLOR_BIT = 0x00000001,
- VK_IMAGE_ASPECT_DEPTH_BIT = 0x00000002,
- VK_IMAGE_ASPECT_STENCIL_BIT = 0x00000004,
- VK_IMAGE_ASPECT_METADATA_BIT = 0x00000008,
- VK_IMAGE_ASPECT_PLANE_0_BIT = 0x00000010,
- VK_IMAGE_ASPECT_PLANE_1_BIT = 0x00000020,
- VK_IMAGE_ASPECT_PLANE_2_BIT = 0x00000040,
- VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT = 0x00000080,
- VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT = 0x00000100,
- VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT = 0x00000200,
- VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT = 0x00000400,
- VK_IMAGE_ASPECT_PLANE_0_BIT_KHR = VK_IMAGE_ASPECT_PLANE_0_BIT,
- VK_IMAGE_ASPECT_PLANE_1_BIT_KHR = VK_IMAGE_ASPECT_PLANE_1_BIT,
- VK_IMAGE_ASPECT_PLANE_2_BIT_KHR = VK_IMAGE_ASPECT_PLANE_2_BIT,
- VK_IMAGE_ASPECT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkImageAspectFlagBits;
-typedef VkFlags VkImageAspectFlags;
-
-typedef enum VkFormatFeatureFlagBits {
- VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 0x00000001,
- VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 0x00000002,
- VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 0x00000004,
- VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000008,
- VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 0x00000010,
- VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 0x00000020,
- VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 0x00000040,
- VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 0x00000080,
- VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 0x00000100,
- VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000200,
- VK_FORMAT_FEATURE_BLIT_SRC_BIT = 0x00000400,
- VK_FORMAT_FEATURE_BLIT_DST_BIT = 0x00000800,
- VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 0x00001000,
- VK_FORMAT_FEATURE_TRANSFER_SRC_BIT = 0x00004000,
- VK_FORMAT_FEATURE_TRANSFER_DST_BIT = 0x00008000,
- VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT = 0x00020000,
- VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = 0x00040000,
- VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = 0x00080000,
- VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = 0x00100000,
- VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 0x00200000,
- VK_FORMAT_FEATURE_DISJOINT_BIT = 0x00400000,
- VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = 0x00800000,
- VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT = 0x00010000,
- VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 0x00002000,
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_FORMAT_FEATURE_VIDEO_DECODE_OUTPUT_BIT_KHR = 0x02000000,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_FORMAT_FEATURE_VIDEO_DECODE_DPB_BIT_KHR = 0x04000000,
-#endif
- VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = 0x20000000,
- VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 0x01000000,
- VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x40000000,
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR = 0x08000000,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR = 0x10000000,
-#endif
- VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = VK_FORMAT_FEATURE_TRANSFER_SRC_BIT,
- VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = VK_FORMAT_FEATURE_TRANSFER_DST_BIT,
- VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT,
- VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR = VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT,
- VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT,
- VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT,
- VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT,
- VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT,
- VK_FORMAT_FEATURE_DISJOINT_BIT_KHR = VK_FORMAT_FEATURE_DISJOINT_BIT,
- VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR = VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT,
- VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG,
- VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkFormatFeatureFlagBits;
-typedef VkFlags VkFormatFeatureFlags;
-
-typedef enum VkImageCreateFlagBits {
- VK_IMAGE_CREATE_SPARSE_BINDING_BIT = 0x00000001,
- VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002,
- VK_IMAGE_CREATE_SPARSE_ALIASED_BIT = 0x00000004,
- VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = 0x00000008,
- VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT = 0x00000010,
- VK_IMAGE_CREATE_ALIAS_BIT = 0x00000400,
- VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT = 0x00000040,
- VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT = 0x00000020,
- VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT = 0x00000080,
- VK_IMAGE_CREATE_EXTENDED_USAGE_BIT = 0x00000100,
- VK_IMAGE_CREATE_PROTECTED_BIT = 0x00000800,
- VK_IMAGE_CREATE_DISJOINT_BIT = 0x00000200,
- VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV = 0x00002000,
- VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = 0x00001000,
- VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT = 0x00004000,
- VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT,
- VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR = VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT,
- VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR = VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT,
- VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR = VK_IMAGE_CREATE_EXTENDED_USAGE_BIT,
- VK_IMAGE_CREATE_DISJOINT_BIT_KHR = VK_IMAGE_CREATE_DISJOINT_BIT,
- VK_IMAGE_CREATE_ALIAS_BIT_KHR = VK_IMAGE_CREATE_ALIAS_BIT,
- VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkImageCreateFlagBits;
-typedef VkFlags VkImageCreateFlags;
-
-typedef enum VkSampleCountFlagBits {
- VK_SAMPLE_COUNT_1_BIT = 0x00000001,
- VK_SAMPLE_COUNT_2_BIT = 0x00000002,
- VK_SAMPLE_COUNT_4_BIT = 0x00000004,
- VK_SAMPLE_COUNT_8_BIT = 0x00000008,
- VK_SAMPLE_COUNT_16_BIT = 0x00000010,
- VK_SAMPLE_COUNT_32_BIT = 0x00000020,
- VK_SAMPLE_COUNT_64_BIT = 0x00000040,
- VK_SAMPLE_COUNT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkSampleCountFlagBits;
-typedef VkFlags VkSampleCountFlags;
-
-typedef enum VkImageUsageFlagBits {
- VK_IMAGE_USAGE_TRANSFER_SRC_BIT = 0x00000001,
- VK_IMAGE_USAGE_TRANSFER_DST_BIT = 0x00000002,
- VK_IMAGE_USAGE_SAMPLED_BIT = 0x00000004,
- VK_IMAGE_USAGE_STORAGE_BIT = 0x00000008,
- VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 0x00000010,
- VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000020,
- VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 0x00000040,
- VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = 0x00000080,
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR = 0x00000400,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR = 0x00000800,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR = 0x00001000,
-#endif
- VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT = 0x00000200,
- VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x00000100,
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR = 0x00002000,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR = 0x00004000,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR = 0x00008000,
-#endif
- VK_IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI = 0x00040000,
- VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV = VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR,
- VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkImageUsageFlagBits;
-typedef VkFlags VkImageUsageFlags;
-typedef VkFlags VkInstanceCreateFlags;
-
-typedef enum VkMemoryHeapFlagBits {
- VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 0x00000001,
- VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = 0x00000002,
- VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR = VK_MEMORY_HEAP_MULTI_INSTANCE_BIT,
- VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkMemoryHeapFlagBits;
-typedef VkFlags VkMemoryHeapFlags;
-
-typedef enum VkMemoryPropertyFlagBits {
- VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = 0x00000001,
- VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 0x00000002,
- VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = 0x00000004,
- VK_MEMORY_PROPERTY_HOST_CACHED_BIT = 0x00000008,
- VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 0x00000010,
- VK_MEMORY_PROPERTY_PROTECTED_BIT = 0x00000020,
- VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD = 0x00000040,
- VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD = 0x00000080,
- VK_MEMORY_PROPERTY_RDMA_CAPABLE_BIT_NV = 0x00000100,
- VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkMemoryPropertyFlagBits;
-typedef VkFlags VkMemoryPropertyFlags;
-
-typedef enum VkQueueFlagBits {
- VK_QUEUE_GRAPHICS_BIT = 0x00000001,
- VK_QUEUE_COMPUTE_BIT = 0x00000002,
- VK_QUEUE_TRANSFER_BIT = 0x00000004,
- VK_QUEUE_SPARSE_BINDING_BIT = 0x00000008,
- VK_QUEUE_PROTECTED_BIT = 0x00000010,
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_QUEUE_VIDEO_DECODE_BIT_KHR = 0x00000020,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_QUEUE_VIDEO_ENCODE_BIT_KHR = 0x00000040,
-#endif
- VK_QUEUE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkQueueFlagBits;
-typedef VkFlags VkQueueFlags;
-typedef VkFlags VkDeviceCreateFlags;
-
-typedef enum VkDeviceQueueCreateFlagBits {
- VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT = 0x00000001,
- VK_DEVICE_QUEUE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkDeviceQueueCreateFlagBits;
-typedef VkFlags VkDeviceQueueCreateFlags;
-
-typedef enum VkPipelineStageFlagBits {
- VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT = 0x00000001,
- VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT = 0x00000002,
- VK_PIPELINE_STAGE_VERTEX_INPUT_BIT = 0x00000004,
- VK_PIPELINE_STAGE_VERTEX_SHADER_BIT = 0x00000008,
- VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = 0x00000010,
- VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = 0x00000020,
- VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT = 0x00000040,
- VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT = 0x00000080,
- VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = 0x00000100,
- VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = 0x00000200,
- VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = 0x00000400,
- VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT = 0x00000800,
- VK_PIPELINE_STAGE_TRANSFER_BIT = 0x00001000,
- VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = 0x00002000,
- VK_PIPELINE_STAGE_HOST_BIT = 0x00004000,
- VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 0x00008000,
- VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 0x00010000,
- VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT = 0x01000000,
- VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT = 0x00040000,
- VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = 0x02000000,
- VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR = 0x00200000,
- VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV = 0x00080000,
- VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV = 0x00100000,
- VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 0x00800000,
- VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x00400000,
- VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 0x00020000,
- VK_PIPELINE_STAGE_NONE_KHR = 0,
- VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR,
- VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR,
- VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR,
- VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkPipelineStageFlagBits;
-typedef VkFlags VkPipelineStageFlags;
-typedef VkFlags VkMemoryMapFlags;
-
-typedef enum VkSparseMemoryBindFlagBits {
- VK_SPARSE_MEMORY_BIND_METADATA_BIT = 0x00000001,
- VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkSparseMemoryBindFlagBits;
-typedef VkFlags VkSparseMemoryBindFlags;
-
-typedef enum VkSparseImageFormatFlagBits {
- VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = 0x00000001,
- VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT = 0x00000002,
- VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = 0x00000004,
- VK_SPARSE_IMAGE_FORMAT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkSparseImageFormatFlagBits;
-typedef VkFlags VkSparseImageFormatFlags;
-
-typedef enum VkFenceCreateFlagBits {
- VK_FENCE_CREATE_SIGNALED_BIT = 0x00000001,
- VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkFenceCreateFlagBits;
-typedef VkFlags VkFenceCreateFlags;
-typedef VkFlags VkSemaphoreCreateFlags;
-
-typedef enum VkEventCreateFlagBits {
- VK_EVENT_CREATE_DEVICE_ONLY_BIT_KHR = 0x00000001,
- VK_EVENT_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkEventCreateFlagBits;
-typedef VkFlags VkEventCreateFlags;
-
-typedef enum VkQueryPipelineStatisticFlagBits {
- VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = 0x00000001,
- VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT = 0x00000002,
- VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT = 0x00000004,
- VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT = 0x00000008,
- VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT = 0x00000010,
- VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT = 0x00000020,
- VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT = 0x00000040,
- VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT = 0x00000080,
- VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT = 0x00000100,
- VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT = 0x00000200,
- VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = 0x00000400,
- VK_QUERY_PIPELINE_STATISTIC_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkQueryPipelineStatisticFlagBits;
-typedef VkFlags VkQueryPipelineStatisticFlags;
-typedef VkFlags VkQueryPoolCreateFlags;
-
-typedef enum VkQueryResultFlagBits {
- VK_QUERY_RESULT_64_BIT = 0x00000001,
- VK_QUERY_RESULT_WAIT_BIT = 0x00000002,
- VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = 0x00000004,
- VK_QUERY_RESULT_PARTIAL_BIT = 0x00000008,
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_QUERY_RESULT_WITH_STATUS_BIT_KHR = 0x00000010,
-#endif
- VK_QUERY_RESULT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkQueryResultFlagBits;
-typedef VkFlags VkQueryResultFlags;
-
-typedef enum VkBufferCreateFlagBits {
- VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 0x00000001,
- VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002,
- VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 0x00000004,
- VK_BUFFER_CREATE_PROTECTED_BIT = 0x00000008,
- VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 0x00000010,
- VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT,
- VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT,
- VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkBufferCreateFlagBits;
-typedef VkFlags VkBufferCreateFlags;
-
-typedef enum VkBufferUsageFlagBits {
- VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 0x00000001,
- VK_BUFFER_USAGE_TRANSFER_DST_BIT = 0x00000002,
- VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000004,
- VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 0x00000008,
- VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 0x00000010,
- VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 0x00000020,
- VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 0x00000040,
- VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 0x00000080,
- VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 0x00000100,
- VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT = 0x00020000,
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_BUFFER_USAGE_VIDEO_DECODE_SRC_BIT_KHR = 0x00002000,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_BUFFER_USAGE_VIDEO_DECODE_DST_BIT_KHR = 0x00004000,
-#endif
- VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = 0x00000800,
- VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = 0x00001000,
- VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT = 0x00000200,
- VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR = 0x00080000,
- VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR = 0x00100000,
- VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR = 0x00000400,
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_BUFFER_USAGE_VIDEO_ENCODE_DST_BIT_KHR = 0x00008000,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_BUFFER_USAGE_VIDEO_ENCODE_SRC_BIT_KHR = 0x00010000,
-#endif
- VK_BUFFER_USAGE_RAY_TRACING_BIT_NV = VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR,
- VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT = VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT,
- VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR = VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT,
- VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkBufferUsageFlagBits;
-typedef VkFlags VkBufferUsageFlags;
-typedef VkFlags VkBufferViewCreateFlags;
-
-typedef enum VkImageViewCreateFlagBits {
- VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT = 0x00000001,
- VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT = 0x00000002,
- VK_IMAGE_VIEW_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkImageViewCreateFlagBits;
-typedef VkFlags VkImageViewCreateFlags;
-typedef VkFlags VkShaderModuleCreateFlags;
-
-typedef enum VkPipelineCacheCreateFlagBits {
- VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT = 0x00000001,
- VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkPipelineCacheCreateFlagBits;
-typedef VkFlags VkPipelineCacheCreateFlags;
-
-typedef enum VkColorComponentFlagBits {
- VK_COLOR_COMPONENT_R_BIT = 0x00000001,
- VK_COLOR_COMPONENT_G_BIT = 0x00000002,
- VK_COLOR_COMPONENT_B_BIT = 0x00000004,
- VK_COLOR_COMPONENT_A_BIT = 0x00000008,
- VK_COLOR_COMPONENT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkColorComponentFlagBits;
-typedef VkFlags VkColorComponentFlags;
-
-typedef enum VkPipelineCreateFlagBits {
- VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 0x00000001,
- VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 0x00000002,
- VK_PIPELINE_CREATE_DERIVATIVE_BIT = 0x00000004,
- VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = 0x00000008,
- VK_PIPELINE_CREATE_DISPATCH_BASE_BIT = 0x00000010,
- VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x00200000,
- VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 0x00400000,
- VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR = 0x00004000,
- VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR = 0x00008000,
- VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR = 0x00010000,
- VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR = 0x00020000,
- VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR = 0x00001000,
- VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR = 0x00002000,
- VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR = 0x00080000,
- VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV = 0x00000020,
- VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR = 0x00000040,
- VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR = 0x00000080,
- VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV = 0x00040000,
- VK_PIPELINE_CREATE_LIBRARY_BIT_KHR = 0x00000800,
- VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT = 0x00000100,
- VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT = 0x00000200,
- VK_PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV = 0x00100000,
- VK_PIPELINE_CREATE_DISPATCH_BASE = VK_PIPELINE_CREATE_DISPATCH_BASE_BIT,
- VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR = VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT,
- VK_PIPELINE_CREATE_DISPATCH_BASE_KHR = VK_PIPELINE_CREATE_DISPATCH_BASE,
- VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkPipelineCreateFlagBits;
-typedef VkFlags VkPipelineCreateFlags;
-
-typedef enum VkPipelineShaderStageCreateFlagBits {
- VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = 0x00000001,
- VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = 0x00000002,
- VK_PIPELINE_SHADER_STAGE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkPipelineShaderStageCreateFlagBits;
-typedef VkFlags VkPipelineShaderStageCreateFlags;
-
-typedef enum VkShaderStageFlagBits {
- VK_SHADER_STAGE_VERTEX_BIT = 0x00000001,
- VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = 0x00000002,
- VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = 0x00000004,
- VK_SHADER_STAGE_GEOMETRY_BIT = 0x00000008,
- VK_SHADER_STAGE_FRAGMENT_BIT = 0x00000010,
- VK_SHADER_STAGE_COMPUTE_BIT = 0x00000020,
- VK_SHADER_STAGE_ALL_GRAPHICS = 0x0000001F,
- VK_SHADER_STAGE_ALL = 0x7FFFFFFF,
- VK_SHADER_STAGE_RAYGEN_BIT_KHR = 0x00000100,
- VK_SHADER_STAGE_ANY_HIT_BIT_KHR = 0x00000200,
- VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR = 0x00000400,
- VK_SHADER_STAGE_MISS_BIT_KHR = 0x00000800,
- VK_SHADER_STAGE_INTERSECTION_BIT_KHR = 0x00001000,
- VK_SHADER_STAGE_CALLABLE_BIT_KHR = 0x00002000,
- VK_SHADER_STAGE_TASK_BIT_NV = 0x00000040,
- VK_SHADER_STAGE_MESH_BIT_NV = 0x00000080,
- VK_SHADER_STAGE_SUBPASS_SHADING_BIT_HUAWEI = 0x00004000,
- VK_SHADER_STAGE_RAYGEN_BIT_NV = VK_SHADER_STAGE_RAYGEN_BIT_KHR,
- VK_SHADER_STAGE_ANY_HIT_BIT_NV = VK_SHADER_STAGE_ANY_HIT_BIT_KHR,
- VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV = VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR,
- VK_SHADER_STAGE_MISS_BIT_NV = VK_SHADER_STAGE_MISS_BIT_KHR,
- VK_SHADER_STAGE_INTERSECTION_BIT_NV = VK_SHADER_STAGE_INTERSECTION_BIT_KHR,
- VK_SHADER_STAGE_CALLABLE_BIT_NV = VK_SHADER_STAGE_CALLABLE_BIT_KHR,
- VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkShaderStageFlagBits;
-
-typedef enum VkCullModeFlagBits {
- VK_CULL_MODE_NONE = 0,
- VK_CULL_MODE_FRONT_BIT = 0x00000001,
- VK_CULL_MODE_BACK_BIT = 0x00000002,
- VK_CULL_MODE_FRONT_AND_BACK = 0x00000003,
- VK_CULL_MODE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkCullModeFlagBits;
-typedef VkFlags VkCullModeFlags;
-typedef VkFlags VkPipelineVertexInputStateCreateFlags;
-typedef VkFlags VkPipelineInputAssemblyStateCreateFlags;
-typedef VkFlags VkPipelineTessellationStateCreateFlags;
-typedef VkFlags VkPipelineViewportStateCreateFlags;
-typedef VkFlags VkPipelineRasterizationStateCreateFlags;
-typedef VkFlags VkPipelineMultisampleStateCreateFlags;
-typedef VkFlags VkPipelineDepthStencilStateCreateFlags;
-typedef VkFlags VkPipelineColorBlendStateCreateFlags;
-typedef VkFlags VkPipelineDynamicStateCreateFlags;
-typedef VkFlags VkPipelineLayoutCreateFlags;
-typedef VkFlags VkShaderStageFlags;
-
-typedef enum VkSamplerCreateFlagBits {
- VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT = 0x00000001,
- VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT = 0x00000002,
- VK_SAMPLER_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkSamplerCreateFlagBits;
-typedef VkFlags VkSamplerCreateFlags;
-
-typedef enum VkDescriptorPoolCreateFlagBits {
- VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 0x00000001,
- VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT = 0x00000002,
- VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_VALVE = 0x00000004,
- VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT,
- VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkDescriptorPoolCreateFlagBits;
-typedef VkFlags VkDescriptorPoolCreateFlags;
-typedef VkFlags VkDescriptorPoolResetFlags;
-
-typedef enum VkDescriptorSetLayoutCreateFlagBits {
- VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT = 0x00000002,
- VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR = 0x00000001,
- VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_VALVE = 0x00000004,
- VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT = VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT,
- VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkDescriptorSetLayoutCreateFlagBits;
-typedef VkFlags VkDescriptorSetLayoutCreateFlags;
-
-typedef enum VkAttachmentDescriptionFlagBits {
- VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 0x00000001,
- VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkAttachmentDescriptionFlagBits;
-typedef VkFlags VkAttachmentDescriptionFlags;
-
-typedef enum VkDependencyFlagBits {
- VK_DEPENDENCY_BY_REGION_BIT = 0x00000001,
- VK_DEPENDENCY_DEVICE_GROUP_BIT = 0x00000004,
- VK_DEPENDENCY_VIEW_LOCAL_BIT = 0x00000002,
- VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR = VK_DEPENDENCY_VIEW_LOCAL_BIT,
- VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR = VK_DEPENDENCY_DEVICE_GROUP_BIT,
- VK_DEPENDENCY_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkDependencyFlagBits;
-typedef VkFlags VkDependencyFlags;
-
-typedef enum VkFramebufferCreateFlagBits {
- VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT = 0x00000001,
- VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR = VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT,
- VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkFramebufferCreateFlagBits;
-typedef VkFlags VkFramebufferCreateFlags;
-
-typedef enum VkRenderPassCreateFlagBits {
- VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM = 0x00000002,
- VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkRenderPassCreateFlagBits;
-typedef VkFlags VkRenderPassCreateFlags;
-
-typedef enum VkSubpassDescriptionFlagBits {
- VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = 0x00000001,
- VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 0x00000002,
- VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM = 0x00000004,
- VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM = 0x00000008,
- VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkSubpassDescriptionFlagBits;
-typedef VkFlags VkSubpassDescriptionFlags;
-
-typedef enum VkCommandPoolCreateFlagBits {
- VK_COMMAND_POOL_CREATE_TRANSIENT_BIT = 0x00000001,
- VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 0x00000002,
- VK_COMMAND_POOL_CREATE_PROTECTED_BIT = 0x00000004,
- VK_COMMAND_POOL_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkCommandPoolCreateFlagBits;
-typedef VkFlags VkCommandPoolCreateFlags;
-
-typedef enum VkCommandPoolResetFlagBits {
- VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 0x00000001,
- VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkCommandPoolResetFlagBits;
-typedef VkFlags VkCommandPoolResetFlags;
-
-typedef enum VkCommandBufferUsageFlagBits {
- VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = 0x00000001,
- VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = 0x00000002,
- VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = 0x00000004,
- VK_COMMAND_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkCommandBufferUsageFlagBits;
-typedef VkFlags VkCommandBufferUsageFlags;
-
-typedef enum VkQueryControlFlagBits {
- VK_QUERY_CONTROL_PRECISE_BIT = 0x00000001,
- VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkQueryControlFlagBits;
-typedef VkFlags VkQueryControlFlags;
-
-typedef enum VkCommandBufferResetFlagBits {
- VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 0x00000001,
- VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkCommandBufferResetFlagBits;
-typedef VkFlags VkCommandBufferResetFlags;
-
-typedef enum VkStencilFaceFlagBits {
- VK_STENCIL_FACE_FRONT_BIT = 0x00000001,
- VK_STENCIL_FACE_BACK_BIT = 0x00000002,
- VK_STENCIL_FACE_FRONT_AND_BACK = 0x00000003,
- VK_STENCIL_FRONT_AND_BACK = VK_STENCIL_FACE_FRONT_AND_BACK,
- VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkStencilFaceFlagBits;
-typedef VkFlags VkStencilFaceFlags;
-typedef struct VkExtent2D {
- uint32_t width;
- uint32_t height;
-} VkExtent2D;
-
-typedef struct VkExtent3D {
- uint32_t width;
- uint32_t height;
- uint32_t depth;
-} VkExtent3D;
-
-typedef struct VkOffset2D {
- int32_t x;
- int32_t y;
-} VkOffset2D;
-
-typedef struct VkOffset3D {
- int32_t x;
- int32_t y;
- int32_t z;
-} VkOffset3D;
-
-typedef struct VkRect2D {
- VkOffset2D offset;
- VkExtent2D extent;
-} VkRect2D;
-
-typedef struct VkBaseInStructure {
- VkStructureType sType;
- const struct VkBaseInStructure* pNext;
-} VkBaseInStructure;
-
-typedef struct VkBaseOutStructure {
- VkStructureType sType;
- struct VkBaseOutStructure* pNext;
-} VkBaseOutStructure;
-
-typedef struct VkBufferMemoryBarrier {
- VkStructureType sType;
- const void* pNext;
- VkAccessFlags srcAccessMask;
- VkAccessFlags dstAccessMask;
- uint32_t srcQueueFamilyIndex;
- uint32_t dstQueueFamilyIndex;
- VkBuffer buffer;
- VkDeviceSize offset;
- VkDeviceSize size;
-} VkBufferMemoryBarrier;
-
-typedef struct VkDispatchIndirectCommand {
- uint32_t x;
- uint32_t y;
- uint32_t z;
-} VkDispatchIndirectCommand;
-
-typedef struct VkDrawIndexedIndirectCommand {
- uint32_t indexCount;
- uint32_t instanceCount;
- uint32_t firstIndex;
- int32_t vertexOffset;
- uint32_t firstInstance;
-} VkDrawIndexedIndirectCommand;
-
-typedef struct VkDrawIndirectCommand {
- uint32_t vertexCount;
- uint32_t instanceCount;
- uint32_t firstVertex;
- uint32_t firstInstance;
-} VkDrawIndirectCommand;
-
-typedef struct VkImageSubresourceRange {
- VkImageAspectFlags aspectMask;
- uint32_t baseMipLevel;
- uint32_t levelCount;
- uint32_t baseArrayLayer;
- uint32_t layerCount;
-} VkImageSubresourceRange;
-
-typedef struct VkImageMemoryBarrier {
- VkStructureType sType;
- const void* pNext;
- VkAccessFlags srcAccessMask;
- VkAccessFlags dstAccessMask;
- VkImageLayout oldLayout;
- VkImageLayout newLayout;
- uint32_t srcQueueFamilyIndex;
- uint32_t dstQueueFamilyIndex;
- VkImage image;
- VkImageSubresourceRange subresourceRange;
-} VkImageMemoryBarrier;
-
-typedef struct VkMemoryBarrier {
- VkStructureType sType;
- const void* pNext;
- VkAccessFlags srcAccessMask;
- VkAccessFlags dstAccessMask;
-} VkMemoryBarrier;
-
-typedef struct VkPipelineCacheHeaderVersionOne {
- uint32_t headerSize;
- VkPipelineCacheHeaderVersion headerVersion;
- uint32_t vendorID;
- uint32_t deviceID;
- uint8_t pipelineCacheUUID[VK_UUID_SIZE];
-} VkPipelineCacheHeaderVersionOne;
-
-typedef void* (VKAPI_PTR *PFN_vkAllocationFunction)(
- void* pUserData,
- size_t size,
- size_t alignment,
- VkSystemAllocationScope allocationScope);
-
-typedef void (VKAPI_PTR *PFN_vkFreeFunction)(
- void* pUserData,
- void* pMemory);
-
-typedef void (VKAPI_PTR *PFN_vkInternalAllocationNotification)(
- void* pUserData,
- size_t size,
- VkInternalAllocationType allocationType,
- VkSystemAllocationScope allocationScope);
-
-typedef void (VKAPI_PTR *PFN_vkInternalFreeNotification)(
- void* pUserData,
- size_t size,
- VkInternalAllocationType allocationType,
- VkSystemAllocationScope allocationScope);
-
-typedef void* (VKAPI_PTR *PFN_vkReallocationFunction)(
- void* pUserData,
- void* pOriginal,
- size_t size,
- size_t alignment,
- VkSystemAllocationScope allocationScope);
-
-typedef void (VKAPI_PTR *PFN_vkVoidFunction)(void);
-typedef struct VkAllocationCallbacks {
- void* pUserData;
- PFN_vkAllocationFunction pfnAllocation;
- PFN_vkReallocationFunction pfnReallocation;
- PFN_vkFreeFunction pfnFree;
- PFN_vkInternalAllocationNotification pfnInternalAllocation;
- PFN_vkInternalFreeNotification pfnInternalFree;
-} VkAllocationCallbacks;
-
-typedef struct VkApplicationInfo {
- VkStructureType sType;
- const void* pNext;
- const char* pApplicationName;
- uint32_t applicationVersion;
- const char* pEngineName;
- uint32_t engineVersion;
- uint32_t apiVersion;
-} VkApplicationInfo;
-
-typedef struct VkFormatProperties {
- VkFormatFeatureFlags linearTilingFeatures;
- VkFormatFeatureFlags optimalTilingFeatures;
- VkFormatFeatureFlags bufferFeatures;
-} VkFormatProperties;
-
-typedef struct VkImageFormatProperties {
- VkExtent3D maxExtent;
- uint32_t maxMipLevels;
- uint32_t maxArrayLayers;
- VkSampleCountFlags sampleCounts;
- VkDeviceSize maxResourceSize;
-} VkImageFormatProperties;
-
-typedef struct VkInstanceCreateInfo {
- VkStructureType sType;
- const void* pNext;
- VkInstanceCreateFlags flags;
- const VkApplicationInfo* pApplicationInfo;
- uint32_t enabledLayerCount;
- const char* const* ppEnabledLayerNames;
- uint32_t enabledExtensionCount;
- const char* const* ppEnabledExtensionNames;
-} VkInstanceCreateInfo;
-
-typedef struct VkMemoryHeap {
- VkDeviceSize size;
- VkMemoryHeapFlags flags;
-} VkMemoryHeap;
-
-typedef struct VkMemoryType {
- VkMemoryPropertyFlags propertyFlags;
- uint32_t heapIndex;
-} VkMemoryType;
-
-typedef struct VkPhysicalDeviceFeatures {
- VkBool32 robustBufferAccess;
- VkBool32 fullDrawIndexUint32;
- VkBool32 imageCubeArray;
- VkBool32 independentBlend;
- VkBool32 geometryShader;
- VkBool32 tessellationShader;
- VkBool32 sampleRateShading;
- VkBool32 dualSrcBlend;
- VkBool32 logicOp;
- VkBool32 multiDrawIndirect;
- VkBool32 drawIndirectFirstInstance;
- VkBool32 depthClamp;
- VkBool32 depthBiasClamp;
- VkBool32 fillModeNonSolid;
- VkBool32 depthBounds;
- VkBool32 wideLines;
- VkBool32 largePoints;
- VkBool32 alphaToOne;
- VkBool32 multiViewport;
- VkBool32 samplerAnisotropy;
- VkBool32 textureCompressionETC2;
- VkBool32 textureCompressionASTC_LDR;
- VkBool32 textureCompressionBC;
- VkBool32 occlusionQueryPrecise;
- VkBool32 pipelineStatisticsQuery;
- VkBool32 vertexPipelineStoresAndAtomics;
- VkBool32 fragmentStoresAndAtomics;
- VkBool32 shaderTessellationAndGeometryPointSize;
- VkBool32 shaderImageGatherExtended;
- VkBool32 shaderStorageImageExtendedFormats;
- VkBool32 shaderStorageImageMultisample;
- VkBool32 shaderStorageImageReadWithoutFormat;
- VkBool32 shaderStorageImageWriteWithoutFormat;
- VkBool32 shaderUniformBufferArrayDynamicIndexing;
- VkBool32 shaderSampledImageArrayDynamicIndexing;
- VkBool32 shaderStorageBufferArrayDynamicIndexing;
- VkBool32 shaderStorageImageArrayDynamicIndexing;
- VkBool32 shaderClipDistance;
- VkBool32 shaderCullDistance;
- VkBool32 shaderFloat64;
- VkBool32 shaderInt64;
- VkBool32 shaderInt16;
- VkBool32 shaderResourceResidency;
- VkBool32 shaderResourceMinLod;
- VkBool32 sparseBinding;
- VkBool32 sparseResidencyBuffer;
- VkBool32 sparseResidencyImage2D;
- VkBool32 sparseResidencyImage3D;
- VkBool32 sparseResidency2Samples;
- VkBool32 sparseResidency4Samples;
- VkBool32 sparseResidency8Samples;
- VkBool32 sparseResidency16Samples;
- VkBool32 sparseResidencyAliased;
- VkBool32 variableMultisampleRate;
- VkBool32 inheritedQueries;
-} VkPhysicalDeviceFeatures;
-
-typedef struct VkPhysicalDeviceLimits {
- uint32_t maxImageDimension1D;
- uint32_t maxImageDimension2D;
- uint32_t maxImageDimension3D;
- uint32_t maxImageDimensionCube;
- uint32_t maxImageArrayLayers;
- uint32_t maxTexelBufferElements;
- uint32_t maxUniformBufferRange;
- uint32_t maxStorageBufferRange;
- uint32_t maxPushConstantsSize;
- uint32_t maxMemoryAllocationCount;
- uint32_t maxSamplerAllocationCount;
- VkDeviceSize bufferImageGranularity;
- VkDeviceSize sparseAddressSpaceSize;
- uint32_t maxBoundDescriptorSets;
- uint32_t maxPerStageDescriptorSamplers;
- uint32_t maxPerStageDescriptorUniformBuffers;
- uint32_t maxPerStageDescriptorStorageBuffers;
- uint32_t maxPerStageDescriptorSampledImages;
- uint32_t maxPerStageDescriptorStorageImages;
- uint32_t maxPerStageDescriptorInputAttachments;
- uint32_t maxPerStageResources;
- uint32_t maxDescriptorSetSamplers;
- uint32_t maxDescriptorSetUniformBuffers;
- uint32_t maxDescriptorSetUniformBuffersDynamic;
- uint32_t maxDescriptorSetStorageBuffers;
- uint32_t maxDescriptorSetStorageBuffersDynamic;
- uint32_t maxDescriptorSetSampledImages;
- uint32_t maxDescriptorSetStorageImages;
- uint32_t maxDescriptorSetInputAttachments;
- uint32_t maxVertexInputAttributes;
- uint32_t maxVertexInputBindings;
- uint32_t maxVertexInputAttributeOffset;
- uint32_t maxVertexInputBindingStride;
- uint32_t maxVertexOutputComponents;
- uint32_t maxTessellationGenerationLevel;
- uint32_t maxTessellationPatchSize;
- uint32_t maxTessellationControlPerVertexInputComponents;
- uint32_t maxTessellationControlPerVertexOutputComponents;
- uint32_t maxTessellationControlPerPatchOutputComponents;
- uint32_t maxTessellationControlTotalOutputComponents;
- uint32_t maxTessellationEvaluationInputComponents;
- uint32_t maxTessellationEvaluationOutputComponents;
- uint32_t maxGeometryShaderInvocations;
- uint32_t maxGeometryInputComponents;
- uint32_t maxGeometryOutputComponents;
- uint32_t maxGeometryOutputVertices;
- uint32_t maxGeometryTotalOutputComponents;
- uint32_t maxFragmentInputComponents;
- uint32_t maxFragmentOutputAttachments;
- uint32_t maxFragmentDualSrcAttachments;
- uint32_t maxFragmentCombinedOutputResources;
- uint32_t maxComputeSharedMemorySize;
- uint32_t maxComputeWorkGroupCount[3];
- uint32_t maxComputeWorkGroupInvocations;
- uint32_t maxComputeWorkGroupSize[3];
- uint32_t subPixelPrecisionBits;
- uint32_t subTexelPrecisionBits;
- uint32_t mipmapPrecisionBits;
- uint32_t maxDrawIndexedIndexValue;
- uint32_t maxDrawIndirectCount;
- float maxSamplerLodBias;
- float maxSamplerAnisotropy;
- uint32_t maxViewports;
- uint32_t maxViewportDimensions[2];
- float viewportBoundsRange[2];
- uint32_t viewportSubPixelBits;
- size_t minMemoryMapAlignment;
- VkDeviceSize minTexelBufferOffsetAlignment;
- VkDeviceSize minUniformBufferOffsetAlignment;
- VkDeviceSize minStorageBufferOffsetAlignment;
- int32_t minTexelOffset;
- uint32_t maxTexelOffset;
- int32_t minTexelGatherOffset;
- uint32_t maxTexelGatherOffset;
- float minInterpolationOffset;
- float maxInterpolationOffset;
- uint32_t subPixelInterpolationOffsetBits;
- uint32_t maxFramebufferWidth;
- uint32_t maxFramebufferHeight;
- uint32_t maxFramebufferLayers;
- VkSampleCountFlags framebufferColorSampleCounts;
- VkSampleCountFlags framebufferDepthSampleCounts;
- VkSampleCountFlags framebufferStencilSampleCounts;
- VkSampleCountFlags framebufferNoAttachmentsSampleCounts;
- uint32_t maxColorAttachments;
- VkSampleCountFlags sampledImageColorSampleCounts;
- VkSampleCountFlags sampledImageIntegerSampleCounts;
- VkSampleCountFlags sampledImageDepthSampleCounts;
- VkSampleCountFlags sampledImageStencilSampleCounts;
- VkSampleCountFlags storageImageSampleCounts;
- uint32_t maxSampleMaskWords;
- VkBool32 timestampComputeAndGraphics;
- float timestampPeriod;
- uint32_t maxClipDistances;
- uint32_t maxCullDistances;
- uint32_t maxCombinedClipAndCullDistances;
- uint32_t discreteQueuePriorities;
- float pointSizeRange[2];
- float lineWidthRange[2];
- float pointSizeGranularity;
- float lineWidthGranularity;
- VkBool32 strictLines;
- VkBool32 standardSampleLocations;
- VkDeviceSize optimalBufferCopyOffsetAlignment;
- VkDeviceSize optimalBufferCopyRowPitchAlignment;
- VkDeviceSize nonCoherentAtomSize;
-} VkPhysicalDeviceLimits;
-
-typedef struct VkPhysicalDeviceMemoryProperties {
- uint32_t memoryTypeCount;
- VkMemoryType memoryTypes[VK_MAX_MEMORY_TYPES];
- uint32_t memoryHeapCount;
- VkMemoryHeap memoryHeaps[VK_MAX_MEMORY_HEAPS];
-} VkPhysicalDeviceMemoryProperties;
-
-typedef struct VkPhysicalDeviceSparseProperties {
- VkBool32 residencyStandard2DBlockShape;
- VkBool32 residencyStandard2DMultisampleBlockShape;
- VkBool32 residencyStandard3DBlockShape;
- VkBool32 residencyAlignedMipSize;
- VkBool32 residencyNonResidentStrict;
-} VkPhysicalDeviceSparseProperties;
-
-typedef struct VkPhysicalDeviceProperties {
- uint32_t apiVersion;
- uint32_t driverVersion;
- uint32_t vendorID;
- uint32_t deviceID;
- VkPhysicalDeviceType deviceType;
- char deviceName[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE];
- uint8_t pipelineCacheUUID[VK_UUID_SIZE];
- VkPhysicalDeviceLimits limits;
- VkPhysicalDeviceSparseProperties sparseProperties;
-} VkPhysicalDeviceProperties;
-
-typedef struct VkQueueFamilyProperties {
- VkQueueFlags queueFlags;
- uint32_t queueCount;
- uint32_t timestampValidBits;
- VkExtent3D minImageTransferGranularity;
-} VkQueueFamilyProperties;
-
-typedef struct VkDeviceQueueCreateInfo {
- VkStructureType sType;
- const void* pNext;
- VkDeviceQueueCreateFlags flags;
- uint32_t queueFamilyIndex;
- uint32_t queueCount;
- const float* pQueuePriorities;
-} VkDeviceQueueCreateInfo;
-
-typedef struct VkDeviceCreateInfo {
- VkStructureType sType;
- const void* pNext;
- VkDeviceCreateFlags flags;
- uint32_t queueCreateInfoCount;
- const VkDeviceQueueCreateInfo* pQueueCreateInfos;
- uint32_t enabledLayerCount;
- const char* const* ppEnabledLayerNames;
- uint32_t enabledExtensionCount;
- const char* const* ppEnabledExtensionNames;
- const VkPhysicalDeviceFeatures* pEnabledFeatures;
-} VkDeviceCreateInfo;
-
-typedef struct VkExtensionProperties {
- char extensionName[VK_MAX_EXTENSION_NAME_SIZE];
- uint32_t specVersion;
-} VkExtensionProperties;
-
-typedef struct VkLayerProperties {
- char layerName[VK_MAX_EXTENSION_NAME_SIZE];
- uint32_t specVersion;
- uint32_t implementationVersion;
- char description[VK_MAX_DESCRIPTION_SIZE];
-} VkLayerProperties;
-
-typedef struct VkSubmitInfo {
- VkStructureType sType;
- const void* pNext;
- uint32_t waitSemaphoreCount;
- const VkSemaphore* pWaitSemaphores;
- const VkPipelineStageFlags* pWaitDstStageMask;
- uint32_t commandBufferCount;
- const VkCommandBuffer* pCommandBuffers;
- uint32_t signalSemaphoreCount;
- const VkSemaphore* pSignalSemaphores;
-} VkSubmitInfo;
-
-typedef struct VkMappedMemoryRange {
- VkStructureType sType;
- const void* pNext;
- VkDeviceMemory memory;
- VkDeviceSize offset;
- VkDeviceSize size;
-} VkMappedMemoryRange;
-
-typedef struct VkMemoryAllocateInfo {
- VkStructureType sType;
- const void* pNext;
- VkDeviceSize allocationSize;
- uint32_t memoryTypeIndex;
-} VkMemoryAllocateInfo;
-
-typedef struct VkMemoryRequirements {
- VkDeviceSize size;
- VkDeviceSize alignment;
- uint32_t memoryTypeBits;
-} VkMemoryRequirements;
-
-typedef struct VkSparseMemoryBind {
- VkDeviceSize resourceOffset;
- VkDeviceSize size;
- VkDeviceMemory memory;
- VkDeviceSize memoryOffset;
- VkSparseMemoryBindFlags flags;
-} VkSparseMemoryBind;
-
-typedef struct VkSparseBufferMemoryBindInfo {
- VkBuffer buffer;
- uint32_t bindCount;
- const VkSparseMemoryBind* pBinds;
-} VkSparseBufferMemoryBindInfo;
-
-typedef struct VkSparseImageOpaqueMemoryBindInfo {
- VkImage image;
- uint32_t bindCount;
- const VkSparseMemoryBind* pBinds;
-} VkSparseImageOpaqueMemoryBindInfo;
-
-typedef struct VkImageSubresource {
- VkImageAspectFlags aspectMask;
- uint32_t mipLevel;
- uint32_t arrayLayer;
-} VkImageSubresource;
-
-typedef struct VkSparseImageMemoryBind {
- VkImageSubresource subresource;
- VkOffset3D offset;
- VkExtent3D extent;
- VkDeviceMemory memory;
- VkDeviceSize memoryOffset;
- VkSparseMemoryBindFlags flags;
-} VkSparseImageMemoryBind;
-
-typedef struct VkSparseImageMemoryBindInfo {
- VkImage image;
- uint32_t bindCount;
- const VkSparseImageMemoryBind* pBinds;
-} VkSparseImageMemoryBindInfo;
-
-typedef struct VkBindSparseInfo {
- VkStructureType sType;
- const void* pNext;
- uint32_t waitSemaphoreCount;
- const VkSemaphore* pWaitSemaphores;
- uint32_t bufferBindCount;
- const VkSparseBufferMemoryBindInfo* pBufferBinds;
- uint32_t imageOpaqueBindCount;
- const VkSparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds;
- uint32_t imageBindCount;
- const VkSparseImageMemoryBindInfo* pImageBinds;
- uint32_t signalSemaphoreCount;
- const VkSemaphore* pSignalSemaphores;
-} VkBindSparseInfo;
-
-typedef struct VkSparseImageFormatProperties {
- VkImageAspectFlags aspectMask;
- VkExtent3D imageGranularity;
- VkSparseImageFormatFlags flags;
-} VkSparseImageFormatProperties;
-
-typedef struct VkSparseImageMemoryRequirements {
- VkSparseImageFormatProperties formatProperties;
- uint32_t imageMipTailFirstLod;
- VkDeviceSize imageMipTailSize;
- VkDeviceSize imageMipTailOffset;
- VkDeviceSize imageMipTailStride;
-} VkSparseImageMemoryRequirements;
-
-typedef struct VkFenceCreateInfo {
- VkStructureType sType;
- const void* pNext;
- VkFenceCreateFlags flags;
-} VkFenceCreateInfo;
-
-typedef struct VkSemaphoreCreateInfo {
- VkStructureType sType;
- const void* pNext;
- VkSemaphoreCreateFlags flags;
-} VkSemaphoreCreateInfo;
-
-typedef struct VkEventCreateInfo {
- VkStructureType sType;
- const void* pNext;
- VkEventCreateFlags flags;
-} VkEventCreateInfo;
-
-typedef struct VkQueryPoolCreateInfo {
- VkStructureType sType;
- const void* pNext;
- VkQueryPoolCreateFlags flags;
- VkQueryType queryType;
- uint32_t queryCount;
- VkQueryPipelineStatisticFlags pipelineStatistics;
-} VkQueryPoolCreateInfo;
-
-typedef struct VkBufferCreateInfo {
- VkStructureType sType;
- const void* pNext;
- VkBufferCreateFlags flags;
- VkDeviceSize size;
- VkBufferUsageFlags usage;
- VkSharingMode sharingMode;
- uint32_t queueFamilyIndexCount;
- const uint32_t* pQueueFamilyIndices;
-} VkBufferCreateInfo;
-
-typedef struct VkBufferViewCreateInfo {
- VkStructureType sType;
- const void* pNext;
- VkBufferViewCreateFlags flags;
- VkBuffer buffer;
- VkFormat format;
- VkDeviceSize offset;
- VkDeviceSize range;
-} VkBufferViewCreateInfo;
-
-typedef struct VkImageCreateInfo {
- VkStructureType sType;
- const void* pNext;
- VkImageCreateFlags flags;
- VkImageType imageType;
- VkFormat format;
- VkExtent3D extent;
- uint32_t mipLevels;
- uint32_t arrayLayers;
- VkSampleCountFlagBits samples;
- VkImageTiling tiling;
- VkImageUsageFlags usage;
- VkSharingMode sharingMode;
- uint32_t queueFamilyIndexCount;
- const uint32_t* pQueueFamilyIndices;
- VkImageLayout initialLayout;
-} VkImageCreateInfo;
-
-typedef struct VkSubresourceLayout {
- VkDeviceSize offset;
- VkDeviceSize size;
- VkDeviceSize rowPitch;
- VkDeviceSize arrayPitch;
- VkDeviceSize depthPitch;
-} VkSubresourceLayout;
-
-typedef struct VkComponentMapping {
- VkComponentSwizzle r;
- VkComponentSwizzle g;
- VkComponentSwizzle b;
- VkComponentSwizzle a;
-} VkComponentMapping;
-
-typedef struct VkImageViewCreateInfo {
- VkStructureType sType;
- const void* pNext;
- VkImageViewCreateFlags flags;
- VkImage image;
- VkImageViewType viewType;
- VkFormat format;
- VkComponentMapping components;
- VkImageSubresourceRange subresourceRange;
-} VkImageViewCreateInfo;
-
-typedef struct VkShaderModuleCreateInfo {
- VkStructureType sType;
- const void* pNext;
- VkShaderModuleCreateFlags flags;
- size_t codeSize;
- const uint32_t* pCode;
-} VkShaderModuleCreateInfo;
-
-typedef struct VkPipelineCacheCreateInfo {
- VkStructureType sType;
- const void* pNext;
- VkPipelineCacheCreateFlags flags;
- size_t initialDataSize;
- const void* pInitialData;
-} VkPipelineCacheCreateInfo;
-
-typedef struct VkSpecializationMapEntry {
- uint32_t constantID;
- uint32_t offset;
- size_t size;
-} VkSpecializationMapEntry;
-
-typedef struct VkSpecializationInfo {
- uint32_t mapEntryCount;
- const VkSpecializationMapEntry* pMapEntries;
- size_t dataSize;
- const void* pData;
-} VkSpecializationInfo;
-
-typedef struct VkPipelineShaderStageCreateInfo {
- VkStructureType sType;
- const void* pNext;
- VkPipelineShaderStageCreateFlags flags;
- VkShaderStageFlagBits stage;
- VkShaderModule module;
- const char* pName;
- const VkSpecializationInfo* pSpecializationInfo;
-} VkPipelineShaderStageCreateInfo;
-
-typedef struct VkComputePipelineCreateInfo {
- VkStructureType sType;
- const void* pNext;
- VkPipelineCreateFlags flags;
- VkPipelineShaderStageCreateInfo stage;
- VkPipelineLayout layout;
- VkPipeline basePipelineHandle;
- int32_t basePipelineIndex;
-} VkComputePipelineCreateInfo;
-
-typedef struct VkVertexInputBindingDescription {
- uint32_t binding;
- uint32_t stride;
- VkVertexInputRate inputRate;
-} VkVertexInputBindingDescription;
-
-typedef struct VkVertexInputAttributeDescription {
- uint32_t location;
- uint32_t binding;
- VkFormat format;
- uint32_t offset;
-} VkVertexInputAttributeDescription;
-
-typedef struct VkPipelineVertexInputStateCreateInfo {
- VkStructureType sType;
- const void* pNext;
- VkPipelineVertexInputStateCreateFlags flags;
- uint32_t vertexBindingDescriptionCount;
- const VkVertexInputBindingDescription* pVertexBindingDescriptions;
- uint32_t vertexAttributeDescriptionCount;
- const VkVertexInputAttributeDescription* pVertexAttributeDescriptions;
-} VkPipelineVertexInputStateCreateInfo;
-
-typedef struct VkPipelineInputAssemblyStateCreateInfo {
- VkStructureType sType;
- const void* pNext;
- VkPipelineInputAssemblyStateCreateFlags flags;
- VkPrimitiveTopology topology;
- VkBool32 primitiveRestartEnable;
-} VkPipelineInputAssemblyStateCreateInfo;
-
-typedef struct VkPipelineTessellationStateCreateInfo {
- VkStructureType sType;
- const void* pNext;
- VkPipelineTessellationStateCreateFlags flags;
- uint32_t patchControlPoints;
-} VkPipelineTessellationStateCreateInfo;
-
-typedef struct VkViewport {
- float x;
- float y;
- float width;
- float height;
- float minDepth;
- float maxDepth;
-} VkViewport;
-
-typedef struct VkPipelineViewportStateCreateInfo {
- VkStructureType sType;
- const void* pNext;
- VkPipelineViewportStateCreateFlags flags;
- uint32_t viewportCount;
- const VkViewport* pViewports;
- uint32_t scissorCount;
- const VkRect2D* pScissors;
-} VkPipelineViewportStateCreateInfo;
-
-typedef struct VkPipelineRasterizationStateCreateInfo {
- VkStructureType sType;
- const void* pNext;
- VkPipelineRasterizationStateCreateFlags flags;
- VkBool32 depthClampEnable;
- VkBool32 rasterizerDiscardEnable;
- VkPolygonMode polygonMode;
- VkCullModeFlags cullMode;
- VkFrontFace frontFace;
- VkBool32 depthBiasEnable;
- float depthBiasConstantFactor;
- float depthBiasClamp;
- float depthBiasSlopeFactor;
- float lineWidth;
-} VkPipelineRasterizationStateCreateInfo;
-
-typedef struct VkPipelineMultisampleStateCreateInfo {
- VkStructureType sType;
- const void* pNext;
- VkPipelineMultisampleStateCreateFlags flags;
- VkSampleCountFlagBits rasterizationSamples;
- VkBool32 sampleShadingEnable;
- float minSampleShading;
- const VkSampleMask* pSampleMask;
- VkBool32 alphaToCoverageEnable;
- VkBool32 alphaToOneEnable;
-} VkPipelineMultisampleStateCreateInfo;
-
-typedef struct VkStencilOpState {
- VkStencilOp failOp;
- VkStencilOp passOp;
- VkStencilOp depthFailOp;
- VkCompareOp compareOp;
- uint32_t compareMask;
- uint32_t writeMask;
- uint32_t reference;
-} VkStencilOpState;
-
-typedef struct VkPipelineDepthStencilStateCreateInfo {
- VkStructureType sType;
- const void* pNext;
- VkPipelineDepthStencilStateCreateFlags flags;
- VkBool32 depthTestEnable;
- VkBool32 depthWriteEnable;
- VkCompareOp depthCompareOp;
- VkBool32 depthBoundsTestEnable;
- VkBool32 stencilTestEnable;
- VkStencilOpState front;
- VkStencilOpState back;
- float minDepthBounds;
- float maxDepthBounds;
-} VkPipelineDepthStencilStateCreateInfo;
-
-typedef struct VkPipelineColorBlendAttachmentState {
- VkBool32 blendEnable;
- VkBlendFactor srcColorBlendFactor;
- VkBlendFactor dstColorBlendFactor;
- VkBlendOp colorBlendOp;
- VkBlendFactor srcAlphaBlendFactor;
- VkBlendFactor dstAlphaBlendFactor;
- VkBlendOp alphaBlendOp;
- VkColorComponentFlags colorWriteMask;
-} VkPipelineColorBlendAttachmentState;
-
-typedef struct VkPipelineColorBlendStateCreateInfo {
- VkStructureType sType;
- const void* pNext;
- VkPipelineColorBlendStateCreateFlags flags;
- VkBool32 logicOpEnable;
- VkLogicOp logicOp;
- uint32_t attachmentCount;
- const VkPipelineColorBlendAttachmentState* pAttachments;
- float blendConstants[4];
-} VkPipelineColorBlendStateCreateInfo;
-
-typedef struct VkPipelineDynamicStateCreateInfo {
- VkStructureType sType;
- const void* pNext;
- VkPipelineDynamicStateCreateFlags flags;
- uint32_t dynamicStateCount;
- const VkDynamicState* pDynamicStates;
-} VkPipelineDynamicStateCreateInfo;
-
-typedef struct VkGraphicsPipelineCreateInfo {
- VkStructureType sType;
- const void* pNext;
- VkPipelineCreateFlags flags;
- uint32_t stageCount;
- const VkPipelineShaderStageCreateInfo* pStages;
- const VkPipelineVertexInputStateCreateInfo* pVertexInputState;
- const VkPipelineInputAssemblyStateCreateInfo* pInputAssemblyState;
- const VkPipelineTessellationStateCreateInfo* pTessellationState;
- const VkPipelineViewportStateCreateInfo* pViewportState;
- const VkPipelineRasterizationStateCreateInfo* pRasterizationState;
- const VkPipelineMultisampleStateCreateInfo* pMultisampleState;
- const VkPipelineDepthStencilStateCreateInfo* pDepthStencilState;
- const VkPipelineColorBlendStateCreateInfo* pColorBlendState;
- const VkPipelineDynamicStateCreateInfo* pDynamicState;
- VkPipelineLayout layout;
- VkRenderPass renderPass;
- uint32_t subpass;
- VkPipeline basePipelineHandle;
- int32_t basePipelineIndex;
-} VkGraphicsPipelineCreateInfo;
-
-typedef struct VkPushConstantRange {
- VkShaderStageFlags stageFlags;
- uint32_t offset;
- uint32_t size;
-} VkPushConstantRange;
-
-typedef struct VkPipelineLayoutCreateInfo {
- VkStructureType sType;
- const void* pNext;
- VkPipelineLayoutCreateFlags flags;
- uint32_t setLayoutCount;
- const VkDescriptorSetLayout* pSetLayouts;
- uint32_t pushConstantRangeCount;
- const VkPushConstantRange* pPushConstantRanges;
-} VkPipelineLayoutCreateInfo;
-
-typedef struct VkSamplerCreateInfo {
- VkStructureType sType;
- const void* pNext;
- VkSamplerCreateFlags flags;
- VkFilter magFilter;
- VkFilter minFilter;
- VkSamplerMipmapMode mipmapMode;
- VkSamplerAddressMode addressModeU;
- VkSamplerAddressMode addressModeV;
- VkSamplerAddressMode addressModeW;
- float mipLodBias;
- VkBool32 anisotropyEnable;
- float maxAnisotropy;
- VkBool32 compareEnable;
- VkCompareOp compareOp;
- float minLod;
- float maxLod;
- VkBorderColor borderColor;
- VkBool32 unnormalizedCoordinates;
-} VkSamplerCreateInfo;
-
-typedef struct VkCopyDescriptorSet {
- VkStructureType sType;
- const void* pNext;
- VkDescriptorSet srcSet;
- uint32_t srcBinding;
- uint32_t srcArrayElement;
- VkDescriptorSet dstSet;
- uint32_t dstBinding;
- uint32_t dstArrayElement;
- uint32_t descriptorCount;
-} VkCopyDescriptorSet;
-
-typedef struct VkDescriptorBufferInfo {
- VkBuffer buffer;
- VkDeviceSize offset;
- VkDeviceSize range;
-} VkDescriptorBufferInfo;
-
-typedef struct VkDescriptorImageInfo {
- VkSampler sampler;
- VkImageView imageView;
- VkImageLayout imageLayout;
-} VkDescriptorImageInfo;
-
-typedef struct VkDescriptorPoolSize {
- VkDescriptorType type;
- uint32_t descriptorCount;
-} VkDescriptorPoolSize;
-
-typedef struct VkDescriptorPoolCreateInfo {
- VkStructureType sType;
- const void* pNext;
- VkDescriptorPoolCreateFlags flags;
- uint32_t maxSets;
- uint32_t poolSizeCount;
- const VkDescriptorPoolSize* pPoolSizes;
-} VkDescriptorPoolCreateInfo;
-
-typedef struct VkDescriptorSetAllocateInfo {
- VkStructureType sType;
- const void* pNext;
- VkDescriptorPool descriptorPool;
- uint32_t descriptorSetCount;
- const VkDescriptorSetLayout* pSetLayouts;
-} VkDescriptorSetAllocateInfo;
-
-typedef struct VkDescriptorSetLayoutBinding {
- uint32_t binding;
- VkDescriptorType descriptorType;
- uint32_t descriptorCount;
- VkShaderStageFlags stageFlags;
- const VkSampler* pImmutableSamplers;
-} VkDescriptorSetLayoutBinding;
-
-typedef struct VkDescriptorSetLayoutCreateInfo {
- VkStructureType sType;
- const void* pNext;
- VkDescriptorSetLayoutCreateFlags flags;
- uint32_t bindingCount;
- const VkDescriptorSetLayoutBinding* pBindings;
-} VkDescriptorSetLayoutCreateInfo;
-
-typedef struct VkWriteDescriptorSet {
- VkStructureType sType;
- const void* pNext;
- VkDescriptorSet dstSet;
- uint32_t dstBinding;
- uint32_t dstArrayElement;
- uint32_t descriptorCount;
- VkDescriptorType descriptorType;
- const VkDescriptorImageInfo* pImageInfo;
- const VkDescriptorBufferInfo* pBufferInfo;
- const VkBufferView* pTexelBufferView;
-} VkWriteDescriptorSet;
-
-typedef struct VkAttachmentDescription {
- VkAttachmentDescriptionFlags flags;
- VkFormat format;
- VkSampleCountFlagBits samples;
- VkAttachmentLoadOp loadOp;
- VkAttachmentStoreOp storeOp;
- VkAttachmentLoadOp stencilLoadOp;
- VkAttachmentStoreOp stencilStoreOp;
- VkImageLayout initialLayout;
- VkImageLayout finalLayout;
-} VkAttachmentDescription;
-
-typedef struct VkAttachmentReference {
- uint32_t attachment;
- VkImageLayout layout;
-} VkAttachmentReference;
-
-typedef struct VkFramebufferCreateInfo {
- VkStructureType sType;
- const void* pNext;
- VkFramebufferCreateFlags flags;
- VkRenderPass renderPass;
- uint32_t attachmentCount;
-
- const VkImageView* pAttachments;
- uint32_t width;
- uint32_t height;
- uint32_t layers;
-} VkFramebufferCreateInfo;
-
-typedef struct VkSubpassDescription {
- VkSubpassDescriptionFlags flags;
- VkPipelineBindPoint pipelineBindPoint;
- uint32_t inputAttachmentCount;
- const VkAttachmentReference* pInputAttachments;
- uint32_t colorAttachmentCount;
- const VkAttachmentReference* pColorAttachments;
- const VkAttachmentReference* pResolveAttachments;
- const VkAttachmentReference* pDepthStencilAttachment;
- uint32_t preserveAttachmentCount;
- const uint32_t* pPreserveAttachments;
-} VkSubpassDescription;
-
-typedef struct VkSubpassDependency {
- uint32_t srcSubpass;
- uint32_t dstSubpass;
- VkPipelineStageFlags srcStageMask;
- VkPipelineStageFlags dstStageMask;
- VkAccessFlags srcAccessMask;
- VkAccessFlags dstAccessMask;
- VkDependencyFlags dependencyFlags;
-} VkSubpassDependency;
-
-typedef struct VkRenderPassCreateInfo {
- VkStructureType sType;
- const void* pNext;
- VkRenderPassCreateFlags flags;
- uint32_t attachmentCount;
- const VkAttachmentDescription* pAttachments;
- uint32_t subpassCount;
- const VkSubpassDescription* pSubpasses;
- uint32_t dependencyCount;
- const VkSubpassDependency* pDependencies;
-} VkRenderPassCreateInfo;
-
-typedef struct VkCommandPoolCreateInfo {
- VkStructureType sType;
- const void* pNext;
- VkCommandPoolCreateFlags flags;
- uint32_t queueFamilyIndex;
-} VkCommandPoolCreateInfo;
-
-typedef struct VkCommandBufferAllocateInfo {
- VkStructureType sType;
- const void* pNext;
- VkCommandPool commandPool;
- VkCommandBufferLevel level;
- uint32_t commandBufferCount;
-} VkCommandBufferAllocateInfo;
-
-typedef struct VkCommandBufferInheritanceInfo {
- VkStructureType sType;
- const void* pNext;
- VkRenderPass renderPass;
- uint32_t subpass;
- VkFramebuffer framebuffer;
- VkBool32 occlusionQueryEnable;
- VkQueryControlFlags queryFlags;
- VkQueryPipelineStatisticFlags pipelineStatistics;
-} VkCommandBufferInheritanceInfo;
-
-typedef struct VkCommandBufferBeginInfo {
- VkStructureType sType;
- const void* pNext;
- VkCommandBufferUsageFlags flags;
- const VkCommandBufferInheritanceInfo* pInheritanceInfo;
-} VkCommandBufferBeginInfo;
-
-typedef struct VkBufferCopy {
- VkDeviceSize srcOffset;
- VkDeviceSize dstOffset;
- VkDeviceSize size;
-} VkBufferCopy;
-
-typedef struct VkImageSubresourceLayers {
- VkImageAspectFlags aspectMask;
- uint32_t mipLevel;
- uint32_t baseArrayLayer;
- uint32_t layerCount;
-} VkImageSubresourceLayers;
-
-typedef struct VkBufferImageCopy {
- VkDeviceSize bufferOffset;
- uint32_t bufferRowLength;
- uint32_t bufferImageHeight;
- VkImageSubresourceLayers imageSubresource;
- VkOffset3D imageOffset;
- VkExtent3D imageExtent;
-} VkBufferImageCopy;
-
-typedef union VkClearColorValue {
- float float32[4];
- int32_t int32[4];
- uint32_t uint32[4];
-} VkClearColorValue;
-
-typedef struct VkClearDepthStencilValue {
- float depth;
- uint32_t stencil;
-} VkClearDepthStencilValue;
-
-typedef union VkClearValue {
- VkClearColorValue color;
- VkClearDepthStencilValue depthStencil;
-} VkClearValue;
-
-typedef struct VkClearAttachment {
- VkImageAspectFlags aspectMask;
- uint32_t colorAttachment;
- VkClearValue clearValue;
-} VkClearAttachment;
-
-typedef struct VkClearRect {
- VkRect2D rect;
- uint32_t baseArrayLayer;
- uint32_t layerCount;
-} VkClearRect;
-
-typedef struct VkImageBlit {
- VkImageSubresourceLayers srcSubresource;
- VkOffset3D srcOffsets[2];
- VkImageSubresourceLayers dstSubresource;
- VkOffset3D dstOffsets[2];
-} VkImageBlit;
-
-typedef struct VkImageCopy {
- VkImageSubresourceLayers srcSubresource;
- VkOffset3D srcOffset;
- VkImageSubresourceLayers dstSubresource;
- VkOffset3D dstOffset;
- VkExtent3D extent;
-} VkImageCopy;
-
-typedef struct VkImageResolve {
- VkImageSubresourceLayers srcSubresource;
- VkOffset3D srcOffset;
- VkImageSubresourceLayers dstSubresource;
- VkOffset3D dstOffset;
- VkExtent3D extent;
-} VkImageResolve;
-
-typedef struct VkRenderPassBeginInfo {
- VkStructureType sType;
- const void* pNext;
- VkRenderPass renderPass;
- VkFramebuffer framebuffer;
- VkRect2D renderArea;
- uint32_t clearValueCount;
- const VkClearValue* pClearValues;
-} VkRenderPassBeginInfo;
-
-typedef VkResult (VKAPI_PTR *PFN_vkCreateInstance)(const VkInstanceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkInstance* pInstance);
-typedef void (VKAPI_PTR *PFN_vkDestroyInstance)(VkInstance instance, const VkAllocationCallbacks* pAllocator);
-typedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDevices)(VkInstance instance, uint32_t* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices);
-typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFeatures)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures);
-typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties);
-typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceImageFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties);
-typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceProperties)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties);
-typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceQueueFamilyProperties)(VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties* pQueueFamilyProperties);
-typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMemoryProperties)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties);
-typedef PFN_vkVoidFunction (VKAPI_PTR *PFN_vkGetInstanceProcAddr)(VkInstance instance, const char* pName);
-typedef PFN_vkVoidFunction (VKAPI_PTR *PFN_vkGetDeviceProcAddr)(VkDevice device, const char* pName);
-typedef VkResult (VKAPI_PTR *PFN_vkCreateDevice)(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDevice* pDevice);
-typedef void (VKAPI_PTR *PFN_vkDestroyDevice)(VkDevice device, const VkAllocationCallbacks* pAllocator);
-typedef VkResult (VKAPI_PTR *PFN_vkEnumerateInstanceExtensionProperties)(const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties);
-typedef VkResult (VKAPI_PTR *PFN_vkEnumerateDeviceExtensionProperties)(VkPhysicalDevice physicalDevice, const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties);
-typedef VkResult (VKAPI_PTR *PFN_vkEnumerateInstanceLayerProperties)(uint32_t* pPropertyCount, VkLayerProperties* pProperties);
-typedef VkResult (VKAPI_PTR *PFN_vkEnumerateDeviceLayerProperties)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkLayerProperties* pProperties);
-typedef void (VKAPI_PTR *PFN_vkGetDeviceQueue)(VkDevice device, uint32_t queueFamilyIndex, uint32_t queueIndex, VkQueue* pQueue);
-typedef VkResult (VKAPI_PTR *PFN_vkQueueSubmit)(VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence);
-typedef VkResult (VKAPI_PTR *PFN_vkQueueWaitIdle)(VkQueue queue);
-typedef VkResult (VKAPI_PTR *PFN_vkDeviceWaitIdle)(VkDevice device);
-typedef VkResult (VKAPI_PTR *PFN_vkAllocateMemory)(VkDevice device, const VkMemoryAllocateInfo* pAllocateInfo, const VkAllocationCallbacks* pAllocator, VkDeviceMemory* pMemory);
-typedef void (VKAPI_PTR *PFN_vkFreeMemory)(VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks* pAllocator);
-typedef VkResult (VKAPI_PTR *PFN_vkMapMemory)(VkDevice device, VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData);
-typedef void (VKAPI_PTR *PFN_vkUnmapMemory)(VkDevice device, VkDeviceMemory memory);
-typedef VkResult (VKAPI_PTR *PFN_vkFlushMappedMemoryRanges)(VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges);
-typedef VkResult (VKAPI_PTR *PFN_vkInvalidateMappedMemoryRanges)(VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges);
-typedef void (VKAPI_PTR *PFN_vkGetDeviceMemoryCommitment)(VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes);
-typedef VkResult (VKAPI_PTR *PFN_vkBindBufferMemory)(VkDevice device, VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset);
-typedef VkResult (VKAPI_PTR *PFN_vkBindImageMemory)(VkDevice device, VkImage image, VkDeviceMemory memory, VkDeviceSize memoryOffset);
-typedef void (VKAPI_PTR *PFN_vkGetBufferMemoryRequirements)(VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements);
-typedef void (VKAPI_PTR *PFN_vkGetImageMemoryRequirements)(VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements);
-typedef void (VKAPI_PTR *PFN_vkGetImageSparseMemoryRequirements)(VkDevice device, VkImage image, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements* pSparseMemoryRequirements);
-typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceSparseImageFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkSampleCountFlagBits samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t* pPropertyCount, VkSparseImageFormatProperties* pProperties);
-typedef VkResult (VKAPI_PTR *PFN_vkQueueBindSparse)(VkQueue queue, uint32_t bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence);
-typedef VkResult (VKAPI_PTR *PFN_vkCreateFence)(VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence);
-typedef void (VKAPI_PTR *PFN_vkDestroyFence)(VkDevice device, VkFence fence, const VkAllocationCallbacks* pAllocator);
-typedef VkResult (VKAPI_PTR *PFN_vkResetFences)(VkDevice device, uint32_t fenceCount, const VkFence* pFences);
-typedef VkResult (VKAPI_PTR *PFN_vkGetFenceStatus)(VkDevice device, VkFence fence);
-typedef VkResult (VKAPI_PTR *PFN_vkWaitForFences)(VkDevice device, uint32_t fenceCount, const VkFence* pFences, VkBool32 waitAll, uint64_t timeout);
-typedef VkResult (VKAPI_PTR *PFN_vkCreateSemaphore)(VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore);
-typedef void (VKAPI_PTR *PFN_vkDestroySemaphore)(VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator);
-typedef VkResult (VKAPI_PTR *PFN_vkCreateEvent)(VkDevice device, const VkEventCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkEvent* pEvent);
-typedef void (VKAPI_PTR *PFN_vkDestroyEvent)(VkDevice device, VkEvent event, const VkAllocationCallbacks* pAllocator);
-typedef VkResult (VKAPI_PTR *PFN_vkGetEventStatus)(VkDevice device, VkEvent event);
-typedef VkResult (VKAPI_PTR *PFN_vkSetEvent)(VkDevice device, VkEvent event);
-typedef VkResult (VKAPI_PTR *PFN_vkResetEvent)(VkDevice device, VkEvent event);
-typedef VkResult (VKAPI_PTR *PFN_vkCreateQueryPool)(VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkQueryPool* pQueryPool);
-typedef void (VKAPI_PTR *PFN_vkDestroyQueryPool)(VkDevice device, VkQueryPool queryPool, const VkAllocationCallbacks* pAllocator);
-typedef VkResult (VKAPI_PTR *PFN_vkGetQueryPoolResults)(VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, size_t dataSize, void* pData, VkDeviceSize stride, VkQueryResultFlags flags);
-typedef VkResult (VKAPI_PTR *PFN_vkCreateBuffer)(VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer);
-typedef void (VKAPI_PTR *PFN_vkDestroyBuffer)(VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator);
-typedef VkResult (VKAPI_PTR *PFN_vkCreateBufferView)(VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferView* pView);
-typedef void (VKAPI_PTR *PFN_vkDestroyBufferView)(VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks* pAllocator);
-typedef VkResult (VKAPI_PTR *PFN_vkCreateImage)(VkDevice device, const VkImageCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImage* pImage);
-typedef void (VKAPI_PTR *PFN_vkDestroyImage)(VkDevice device, VkImage image, const VkAllocationCallbacks* pAllocator);
-typedef void (VKAPI_PTR *PFN_vkGetImageSubresourceLayout)(VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout);
-typedef VkResult (VKAPI_PTR *PFN_vkCreateImageView)(VkDevice device, const VkImageViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImageView* pView);
-typedef void (VKAPI_PTR *PFN_vkDestroyImageView)(VkDevice device, VkImageView imageView, const VkAllocationCallbacks* pAllocator);
-typedef VkResult (VKAPI_PTR *PFN_vkCreateShaderModule)(VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkShaderModule* pShaderModule);
-typedef void (VKAPI_PTR *PFN_vkDestroyShaderModule)(VkDevice device, VkShaderModule shaderModule, const VkAllocationCallbacks* pAllocator);
-typedef VkResult (VKAPI_PTR *PFN_vkCreatePipelineCache)(VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineCache* pPipelineCache);
-typedef void (VKAPI_PTR *PFN_vkDestroyPipelineCache)(VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks* pAllocator);
-typedef VkResult (VKAPI_PTR *PFN_vkGetPipelineCacheData)(VkDevice device, VkPipelineCache pipelineCache, size_t* pDataSize, void* pData);
-typedef VkResult (VKAPI_PTR *PFN_vkMergePipelineCaches)(VkDevice device, VkPipelineCache dstCache, uint32_t srcCacheCount, const VkPipelineCache* pSrcCaches);
-typedef VkResult (VKAPI_PTR *PFN_vkCreateGraphicsPipelines)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines);
-typedef VkResult (VKAPI_PTR *PFN_vkCreateComputePipelines)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines);
-typedef void (VKAPI_PTR *PFN_vkDestroyPipeline)(VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator);
-typedef VkResult (VKAPI_PTR *PFN_vkCreatePipelineLayout)(VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout);
-typedef void (VKAPI_PTR *PFN_vkDestroyPipelineLayout)(VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocationCallbacks* pAllocator);
-typedef VkResult (VKAPI_PTR *PFN_vkCreateSampler)(VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSampler* pSampler);
-typedef void (VKAPI_PTR *PFN_vkDestroySampler)(VkDevice device, VkSampler sampler, const VkAllocationCallbacks* pAllocator);
-typedef VkResult (VKAPI_PTR *PFN_vkCreateDescriptorSetLayout)(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorSetLayout* pSetLayout);
-typedef void (VKAPI_PTR *PFN_vkDestroyDescriptorSetLayout)(VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocationCallbacks* pAllocator);
-typedef VkResult (VKAPI_PTR *PFN_vkCreateDescriptorPool)(VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorPool* pDescriptorPool);
-typedef void (VKAPI_PTR *PFN_vkDestroyDescriptorPool)(VkDevice device, VkDescriptorPool descriptorPool, const VkAllocationCallbacks* pAllocator);
-typedef VkResult (VKAPI_PTR *PFN_vkResetDescriptorPool)(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags);
-typedef VkResult (VKAPI_PTR *PFN_vkAllocateDescriptorSets)(VkDevice device, const VkDescriptorSetAllocateInfo* pAllocateInfo, VkDescriptorSet* pDescriptorSets);
-typedef VkResult (VKAPI_PTR *PFN_vkFreeDescriptorSets)(VkDevice device, VkDescriptorPool descriptorPool, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets);
-typedef void (VKAPI_PTR *PFN_vkUpdateDescriptorSets)(VkDevice device, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const VkCopyDescriptorSet* pDescriptorCopies);
-typedef VkResult (VKAPI_PTR *PFN_vkCreateFramebuffer)(VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFramebuffer* pFramebuffer);
-typedef void (VKAPI_PTR *PFN_vkDestroyFramebuffer)(VkDevice device, VkFramebuffer framebuffer, const VkAllocationCallbacks* pAllocator);
-typedef VkResult (VKAPI_PTR *PFN_vkCreateRenderPass)(VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass);
-typedef void (VKAPI_PTR *PFN_vkDestroyRenderPass)(VkDevice device, VkRenderPass renderPass, const VkAllocationCallbacks* pAllocator);
-typedef void (VKAPI_PTR *PFN_vkGetRenderAreaGranularity)(VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity);
-typedef VkResult (VKAPI_PTR *PFN_vkCreateCommandPool)(VkDevice device, const VkCommandPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCommandPool* pCommandPool);
-typedef void (VKAPI_PTR *PFN_vkDestroyCommandPool)(VkDevice device, VkCommandPool commandPool, const VkAllocationCallbacks* pAllocator);
-typedef VkResult (VKAPI_PTR *PFN_vkResetCommandPool)(VkDevice device, VkCommandPool commandPool, VkCommandPoolResetFlags flags);
-typedef VkResult (VKAPI_PTR *PFN_vkAllocateCommandBuffers)(VkDevice device, const VkCommandBufferAllocateInfo* pAllocateInfo, VkCommandBuffer* pCommandBuffers);
-typedef void (VKAPI_PTR *PFN_vkFreeCommandBuffers)(VkDevice device, VkCommandPool commandPool, uint32_t commandBufferCount, const VkCommandBuffer* pCommandBuffers);
-typedef VkResult (VKAPI_PTR *PFN_vkBeginCommandBuffer)(VkCommandBuffer commandBuffer, const VkCommandBufferBeginInfo* pBeginInfo);
-typedef VkResult (VKAPI_PTR *PFN_vkEndCommandBuffer)(VkCommandBuffer commandBuffer);
-typedef VkResult (VKAPI_PTR *PFN_vkResetCommandBuffer)(VkCommandBuffer commandBuffer, VkCommandBufferResetFlags flags);
-typedef void (VKAPI_PTR *PFN_vkCmdBindPipeline)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline);
-typedef void (VKAPI_PTR *PFN_vkCmdSetViewport)(VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkViewport* pViewports);
-typedef void (VKAPI_PTR *PFN_vkCmdSetScissor)(VkCommandBuffer commandBuffer, uint32_t firstScissor, uint32_t scissorCount, const VkRect2D* pScissors);
-typedef void (VKAPI_PTR *PFN_vkCmdSetLineWidth)(VkCommandBuffer commandBuffer, float lineWidth);
-typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBias)(VkCommandBuffer commandBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor);
-typedef void (VKAPI_PTR *PFN_vkCmdSetBlendConstants)(VkCommandBuffer commandBuffer, const float blendConstants[4]);
-typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBounds)(VkCommandBuffer commandBuffer, float minDepthBounds, float maxDepthBounds);
-typedef void (VKAPI_PTR *PFN_vkCmdSetStencilCompareMask)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t compareMask);
-typedef void (VKAPI_PTR *PFN_vkCmdSetStencilWriteMask)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t writeMask);
-typedef void (VKAPI_PTR *PFN_vkCmdSetStencilReference)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t reference);
-typedef void (VKAPI_PTR *PFN_vkCmdBindDescriptorSets)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t firstSet, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets, uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets);
-typedef void (VKAPI_PTR *PFN_vkCmdBindIndexBuffer)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType);
-typedef void (VKAPI_PTR *PFN_vkCmdBindVertexBuffers)(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets);
-typedef void (VKAPI_PTR *PFN_vkCmdDraw)(VkCommandBuffer commandBuffer, uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance);
-typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexed)(VkCommandBuffer commandBuffer, uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance);
-typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride);
-typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride);
-typedef void (VKAPI_PTR *PFN_vkCmdDispatch)(VkCommandBuffer commandBuffer, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ);
-typedef void (VKAPI_PTR *PFN_vkCmdDispatchIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset);
-typedef void (VKAPI_PTR *PFN_vkCmdCopyBuffer)(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferCopy* pRegions);
-typedef void (VKAPI_PTR *PFN_vkCmdCopyImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageCopy* pRegions);
-typedef void (VKAPI_PTR *PFN_vkCmdBlitImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageBlit* pRegions, VkFilter filter);
-typedef void (VKAPI_PTR *PFN_vkCmdCopyBufferToImage)(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkBufferImageCopy* pRegions);
-typedef void (VKAPI_PTR *PFN_vkCmdCopyImageToBuffer)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferImageCopy* pRegions);
-typedef void (VKAPI_PTR *PFN_vkCmdUpdateBuffer)(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const void* pData);
-typedef void (VKAPI_PTR *PFN_vkCmdFillBuffer)(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, uint32_t data);
-typedef void (VKAPI_PTR *PFN_vkCmdClearColorImage)(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
-typedef void (VKAPI_PTR *PFN_vkCmdClearDepthStencilImage)(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
-typedef void (VKAPI_PTR *PFN_vkCmdClearAttachments)(VkCommandBuffer commandBuffer, uint32_t attachmentCount, const VkClearAttachment* pAttachments, uint32_t rectCount, const VkClearRect* pRects);
-typedef void (VKAPI_PTR *PFN_vkCmdResolveImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageResolve* pRegions);
-typedef void (VKAPI_PTR *PFN_vkCmdSetEvent)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask);
-typedef void (VKAPI_PTR *PFN_vkCmdResetEvent)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask);
-typedef void (VKAPI_PTR *PFN_vkCmdWaitEvents)(VkCommandBuffer commandBuffer, uint32_t eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, uint32_t memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, uint32_t bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, uint32_t imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers);
-typedef void (VKAPI_PTR *PFN_vkCmdPipelineBarrier)(VkCommandBuffer commandBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, uint32_t memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, uint32_t bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, uint32_t imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers);
-typedef void (VKAPI_PTR *PFN_vkCmdBeginQuery)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, VkQueryControlFlags flags);
-typedef void (VKAPI_PTR *PFN_vkCmdEndQuery)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query);
-typedef void (VKAPI_PTR *PFN_vkCmdResetQueryPool)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount);
-typedef void (VKAPI_PTR *PFN_vkCmdWriteTimestamp)(VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t query);
-typedef void (VKAPI_PTR *PFN_vkCmdCopyQueryPoolResults)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags);
-typedef void (VKAPI_PTR *PFN_vkCmdPushConstants)(VkCommandBuffer commandBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues);
-typedef void (VKAPI_PTR *PFN_vkCmdBeginRenderPass)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkSubpassContents contents);
-typedef void (VKAPI_PTR *PFN_vkCmdNextSubpass)(VkCommandBuffer commandBuffer, VkSubpassContents contents);
-typedef void (VKAPI_PTR *PFN_vkCmdEndRenderPass)(VkCommandBuffer commandBuffer);
-typedef void (VKAPI_PTR *PFN_vkCmdExecuteCommands)(VkCommandBuffer commandBuffer, uint32_t commandBufferCount, const VkCommandBuffer* pCommandBuffers);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateInstance(
- const VkInstanceCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkInstance* pInstance);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroyInstance(
- VkInstance instance,
- const VkAllocationCallbacks* pAllocator);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDevices(
- VkInstance instance,
- uint32_t* pPhysicalDeviceCount,
- VkPhysicalDevice* pPhysicalDevices);
-
-VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFeatures(
- VkPhysicalDevice physicalDevice,
- VkPhysicalDeviceFeatures* pFeatures);
-
-VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFormatProperties(
- VkPhysicalDevice physicalDevice,
- VkFormat format,
- VkFormatProperties* pFormatProperties);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceImageFormatProperties(
- VkPhysicalDevice physicalDevice,
- VkFormat format,
- VkImageType type,
- VkImageTiling tiling,
- VkImageUsageFlags usage,
- VkImageCreateFlags flags,
- VkImageFormatProperties* pImageFormatProperties);
-
-VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceProperties(
- VkPhysicalDevice physicalDevice,
- VkPhysicalDeviceProperties* pProperties);
-
-VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyProperties(
- VkPhysicalDevice physicalDevice,
- uint32_t* pQueueFamilyPropertyCount,
- VkQueueFamilyProperties* pQueueFamilyProperties);
-
-VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMemoryProperties(
- VkPhysicalDevice physicalDevice,
- VkPhysicalDeviceMemoryProperties* pMemoryProperties);
-
-VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vkGetInstanceProcAddr(
- VkInstance instance,
- const char* pName);
-
-VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vkGetDeviceProcAddr(
- VkDevice device,
- const char* pName);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateDevice(
- VkPhysicalDevice physicalDevice,
- const VkDeviceCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkDevice* pDevice);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroyDevice(
- VkDevice device,
- const VkAllocationCallbacks* pAllocator);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceExtensionProperties(
- const char* pLayerName,
- uint32_t* pPropertyCount,
- VkExtensionProperties* pProperties);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateDeviceExtensionProperties(
- VkPhysicalDevice physicalDevice,
- const char* pLayerName,
- uint32_t* pPropertyCount,
- VkExtensionProperties* pProperties);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceLayerProperties(
- uint32_t* pPropertyCount,
- VkLayerProperties* pProperties);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateDeviceLayerProperties(
- VkPhysicalDevice physicalDevice,
- uint32_t* pPropertyCount,
- VkLayerProperties* pProperties);
-
-VKAPI_ATTR void VKAPI_CALL vkGetDeviceQueue(
- VkDevice device,
- uint32_t queueFamilyIndex,
- uint32_t queueIndex,
- VkQueue* pQueue);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkQueueSubmit(
- VkQueue queue,
- uint32_t submitCount,
- const VkSubmitInfo* pSubmits,
- VkFence fence);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkQueueWaitIdle(
- VkQueue queue);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkDeviceWaitIdle(
- VkDevice device);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkAllocateMemory(
- VkDevice device,
- const VkMemoryAllocateInfo* pAllocateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkDeviceMemory* pMemory);
-
-VKAPI_ATTR void VKAPI_CALL vkFreeMemory(
- VkDevice device,
- VkDeviceMemory memory,
- const VkAllocationCallbacks* pAllocator);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkMapMemory(
- VkDevice device,
- VkDeviceMemory memory,
- VkDeviceSize offset,
- VkDeviceSize size,
- VkMemoryMapFlags flags,
- void** ppData);
-
-VKAPI_ATTR void VKAPI_CALL vkUnmapMemory(
- VkDevice device,
- VkDeviceMemory memory);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkFlushMappedMemoryRanges(
- VkDevice device,
- uint32_t memoryRangeCount,
- const VkMappedMemoryRange* pMemoryRanges);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkInvalidateMappedMemoryRanges(
- VkDevice device,
- uint32_t memoryRangeCount,
- const VkMappedMemoryRange* pMemoryRanges);
-
-VKAPI_ATTR void VKAPI_CALL vkGetDeviceMemoryCommitment(
- VkDevice device,
- VkDeviceMemory memory,
- VkDeviceSize* pCommittedMemoryInBytes);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkBindBufferMemory(
- VkDevice device,
- VkBuffer buffer,
- VkDeviceMemory memory,
- VkDeviceSize memoryOffset);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkBindImageMemory(
- VkDevice device,
- VkImage image,
- VkDeviceMemory memory,
- VkDeviceSize memoryOffset);
-
-VKAPI_ATTR void VKAPI_CALL vkGetBufferMemoryRequirements(
- VkDevice device,
- VkBuffer buffer,
- VkMemoryRequirements* pMemoryRequirements);
-
-VKAPI_ATTR void VKAPI_CALL vkGetImageMemoryRequirements(
- VkDevice device,
- VkImage image,
- VkMemoryRequirements* pMemoryRequirements);
-
-VKAPI_ATTR void VKAPI_CALL vkGetImageSparseMemoryRequirements(
- VkDevice device,
- VkImage image,
- uint32_t* pSparseMemoryRequirementCount,
- VkSparseImageMemoryRequirements* pSparseMemoryRequirements);
-
-VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceSparseImageFormatProperties(
- VkPhysicalDevice physicalDevice,
- VkFormat format,
- VkImageType type,
- VkSampleCountFlagBits samples,
- VkImageUsageFlags usage,
- VkImageTiling tiling,
- uint32_t* pPropertyCount,
- VkSparseImageFormatProperties* pProperties);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkQueueBindSparse(
- VkQueue queue,
- uint32_t bindInfoCount,
- const VkBindSparseInfo* pBindInfo,
- VkFence fence);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateFence(
- VkDevice device,
- const VkFenceCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkFence* pFence);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroyFence(
- VkDevice device,
- VkFence fence,
- const VkAllocationCallbacks* pAllocator);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkResetFences(
- VkDevice device,
- uint32_t fenceCount,
- const VkFence* pFences);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetFenceStatus(
- VkDevice device,
- VkFence fence);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkWaitForFences(
- VkDevice device,
- uint32_t fenceCount,
- const VkFence* pFences,
- VkBool32 waitAll,
- uint64_t timeout);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateSemaphore(
- VkDevice device,
- const VkSemaphoreCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkSemaphore* pSemaphore);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroySemaphore(
- VkDevice device,
- VkSemaphore semaphore,
- const VkAllocationCallbacks* pAllocator);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateEvent(
- VkDevice device,
- const VkEventCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkEvent* pEvent);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroyEvent(
- VkDevice device,
- VkEvent event,
- const VkAllocationCallbacks* pAllocator);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetEventStatus(
- VkDevice device,
- VkEvent event);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkSetEvent(
- VkDevice device,
- VkEvent event);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkResetEvent(
- VkDevice device,
- VkEvent event);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateQueryPool(
- VkDevice device,
- const VkQueryPoolCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkQueryPool* pQueryPool);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroyQueryPool(
- VkDevice device,
- VkQueryPool queryPool,
- const VkAllocationCallbacks* pAllocator);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetQueryPoolResults(
- VkDevice device,
- VkQueryPool queryPool,
- uint32_t firstQuery,
- uint32_t queryCount,
- size_t dataSize,
- void* pData,
- VkDeviceSize stride,
- VkQueryResultFlags flags);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateBuffer(
- VkDevice device,
- const VkBufferCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkBuffer* pBuffer);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroyBuffer(
- VkDevice device,
- VkBuffer buffer,
- const VkAllocationCallbacks* pAllocator);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateBufferView(
- VkDevice device,
- const VkBufferViewCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkBufferView* pView);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroyBufferView(
- VkDevice device,
- VkBufferView bufferView,
- const VkAllocationCallbacks* pAllocator);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateImage(
- VkDevice device,
- const VkImageCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkImage* pImage);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroyImage(
- VkDevice device,
- VkImage image,
- const VkAllocationCallbacks* pAllocator);
-
-VKAPI_ATTR void VKAPI_CALL vkGetImageSubresourceLayout(
- VkDevice device,
- VkImage image,
- const VkImageSubresource* pSubresource,
- VkSubresourceLayout* pLayout);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateImageView(
- VkDevice device,
- const VkImageViewCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkImageView* pView);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroyImageView(
- VkDevice device,
- VkImageView imageView,
- const VkAllocationCallbacks* pAllocator);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateShaderModule(
- VkDevice device,
- const VkShaderModuleCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkShaderModule* pShaderModule);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroyShaderModule(
- VkDevice device,
- VkShaderModule shaderModule,
- const VkAllocationCallbacks* pAllocator);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCreatePipelineCache(
- VkDevice device,
- const VkPipelineCacheCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkPipelineCache* pPipelineCache);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroyPipelineCache(
- VkDevice device,
- VkPipelineCache pipelineCache,
- const VkAllocationCallbacks* pAllocator);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineCacheData(
- VkDevice device,
- VkPipelineCache pipelineCache,
- size_t* pDataSize,
- void* pData);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkMergePipelineCaches(
- VkDevice device,
- VkPipelineCache dstCache,
- uint32_t srcCacheCount,
- const VkPipelineCache* pSrcCaches);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateGraphicsPipelines(
- VkDevice device,
- VkPipelineCache pipelineCache,
- uint32_t createInfoCount,
- const VkGraphicsPipelineCreateInfo* pCreateInfos,
- const VkAllocationCallbacks* pAllocator,
- VkPipeline* pPipelines);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateComputePipelines(
- VkDevice device,
- VkPipelineCache pipelineCache,
- uint32_t createInfoCount,
- const VkComputePipelineCreateInfo* pCreateInfos,
- const VkAllocationCallbacks* pAllocator,
- VkPipeline* pPipelines);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroyPipeline(
- VkDevice device,
- VkPipeline pipeline,
- const VkAllocationCallbacks* pAllocator);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCreatePipelineLayout(
- VkDevice device,
- const VkPipelineLayoutCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkPipelineLayout* pPipelineLayout);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroyPipelineLayout(
- VkDevice device,
- VkPipelineLayout pipelineLayout,
- const VkAllocationCallbacks* pAllocator);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateSampler(
- VkDevice device,
- const VkSamplerCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkSampler* pSampler);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroySampler(
- VkDevice device,
- VkSampler sampler,
- const VkAllocationCallbacks* pAllocator);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorSetLayout(
- VkDevice device,
- const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkDescriptorSetLayout* pSetLayout);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorSetLayout(
- VkDevice device,
- VkDescriptorSetLayout descriptorSetLayout,
- const VkAllocationCallbacks* pAllocator);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorPool(
- VkDevice device,
- const VkDescriptorPoolCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkDescriptorPool* pDescriptorPool);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorPool(
- VkDevice device,
- VkDescriptorPool descriptorPool,
- const VkAllocationCallbacks* pAllocator);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkResetDescriptorPool(
- VkDevice device,
- VkDescriptorPool descriptorPool,
- VkDescriptorPoolResetFlags flags);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkAllocateDescriptorSets(
- VkDevice device,
- const VkDescriptorSetAllocateInfo* pAllocateInfo,
- VkDescriptorSet* pDescriptorSets);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkFreeDescriptorSets(
- VkDevice device,
- VkDescriptorPool descriptorPool,
- uint32_t descriptorSetCount,
- const VkDescriptorSet* pDescriptorSets);
-
-VKAPI_ATTR void VKAPI_CALL vkUpdateDescriptorSets(
- VkDevice device,
- uint32_t descriptorWriteCount,
- const VkWriteDescriptorSet* pDescriptorWrites,
- uint32_t descriptorCopyCount,
- const VkCopyDescriptorSet* pDescriptorCopies);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateFramebuffer(
- VkDevice device,
- const VkFramebufferCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkFramebuffer* pFramebuffer);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroyFramebuffer(
- VkDevice device,
- VkFramebuffer framebuffer,
- const VkAllocationCallbacks* pAllocator);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateRenderPass(
- VkDevice device,
- const VkRenderPassCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkRenderPass* pRenderPass);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroyRenderPass(
- VkDevice device,
- VkRenderPass renderPass,
- const VkAllocationCallbacks* pAllocator);
-
-VKAPI_ATTR void VKAPI_CALL vkGetRenderAreaGranularity(
- VkDevice device,
- VkRenderPass renderPass,
- VkExtent2D* pGranularity);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateCommandPool(
- VkDevice device,
- const VkCommandPoolCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkCommandPool* pCommandPool);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroyCommandPool(
- VkDevice device,
- VkCommandPool commandPool,
- const VkAllocationCallbacks* pAllocator);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkResetCommandPool(
- VkDevice device,
- VkCommandPool commandPool,
- VkCommandPoolResetFlags flags);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkAllocateCommandBuffers(
- VkDevice device,
- const VkCommandBufferAllocateInfo* pAllocateInfo,
- VkCommandBuffer* pCommandBuffers);
-
-VKAPI_ATTR void VKAPI_CALL vkFreeCommandBuffers(
- VkDevice device,
- VkCommandPool commandPool,
- uint32_t commandBufferCount,
- const VkCommandBuffer* pCommandBuffers);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkBeginCommandBuffer(
- VkCommandBuffer commandBuffer,
- const VkCommandBufferBeginInfo* pBeginInfo);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkEndCommandBuffer(
- VkCommandBuffer commandBuffer);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkResetCommandBuffer(
- VkCommandBuffer commandBuffer,
- VkCommandBufferResetFlags flags);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdBindPipeline(
- VkCommandBuffer commandBuffer,
- VkPipelineBindPoint pipelineBindPoint,
- VkPipeline pipeline);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdSetViewport(
- VkCommandBuffer commandBuffer,
- uint32_t firstViewport,
- uint32_t viewportCount,
- const VkViewport* pViewports);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdSetScissor(
- VkCommandBuffer commandBuffer,
- uint32_t firstScissor,
- uint32_t scissorCount,
- const VkRect2D* pScissors);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdSetLineWidth(
- VkCommandBuffer commandBuffer,
- float lineWidth);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBias(
- VkCommandBuffer commandBuffer,
- float depthBiasConstantFactor,
- float depthBiasClamp,
- float depthBiasSlopeFactor);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdSetBlendConstants(
- VkCommandBuffer commandBuffer,
- const float blendConstants[4]);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBounds(
- VkCommandBuffer commandBuffer,
- float minDepthBounds,
- float maxDepthBounds);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilCompareMask(
- VkCommandBuffer commandBuffer,
- VkStencilFaceFlags faceMask,
- uint32_t compareMask);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilWriteMask(
- VkCommandBuffer commandBuffer,
- VkStencilFaceFlags faceMask,
- uint32_t writeMask);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilReference(
- VkCommandBuffer commandBuffer,
- VkStencilFaceFlags faceMask,
- uint32_t reference);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdBindDescriptorSets(
- VkCommandBuffer commandBuffer,
- VkPipelineBindPoint pipelineBindPoint,
- VkPipelineLayout layout,
- uint32_t firstSet,
- uint32_t descriptorSetCount,
- const VkDescriptorSet* pDescriptorSets,
- uint32_t dynamicOffsetCount,
- const uint32_t* pDynamicOffsets);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdBindIndexBuffer(
- VkCommandBuffer commandBuffer,
- VkBuffer buffer,
- VkDeviceSize offset,
- VkIndexType indexType);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdBindVertexBuffers(
- VkCommandBuffer commandBuffer,
- uint32_t firstBinding,
- uint32_t bindingCount,
- const VkBuffer* pBuffers,
- const VkDeviceSize* pOffsets);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdDraw(
- VkCommandBuffer commandBuffer,
- uint32_t vertexCount,
- uint32_t instanceCount,
- uint32_t firstVertex,
- uint32_t firstInstance);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexed(
- VkCommandBuffer commandBuffer,
- uint32_t indexCount,
- uint32_t instanceCount,
- uint32_t firstIndex,
- int32_t vertexOffset,
- uint32_t firstInstance);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirect(
- VkCommandBuffer commandBuffer,
- VkBuffer buffer,
- VkDeviceSize offset,
- uint32_t drawCount,
- uint32_t stride);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirect(
- VkCommandBuffer commandBuffer,
- VkBuffer buffer,
- VkDeviceSize offset,
- uint32_t drawCount,
- uint32_t stride);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdDispatch(
- VkCommandBuffer commandBuffer,
- uint32_t groupCountX,
- uint32_t groupCountY,
- uint32_t groupCountZ);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdDispatchIndirect(
- VkCommandBuffer commandBuffer,
- VkBuffer buffer,
- VkDeviceSize offset);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdCopyBuffer(
- VkCommandBuffer commandBuffer,
- VkBuffer srcBuffer,
- VkBuffer dstBuffer,
- uint32_t regionCount,
- const VkBufferCopy* pRegions);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdCopyImage(
- VkCommandBuffer commandBuffer,
- VkImage srcImage,
- VkImageLayout srcImageLayout,
- VkImage dstImage,
- VkImageLayout dstImageLayout,
- uint32_t regionCount,
- const VkImageCopy* pRegions);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdBlitImage(
- VkCommandBuffer commandBuffer,
- VkImage srcImage,
- VkImageLayout srcImageLayout,
- VkImage dstImage,
- VkImageLayout dstImageLayout,
- uint32_t regionCount,
- const VkImageBlit* pRegions,
- VkFilter filter);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdCopyBufferToImage(
- VkCommandBuffer commandBuffer,
- VkBuffer srcBuffer,
- VkImage dstImage,
- VkImageLayout dstImageLayout,
- uint32_t regionCount,
- const VkBufferImageCopy* pRegions);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdCopyImageToBuffer(
- VkCommandBuffer commandBuffer,
- VkImage srcImage,
- VkImageLayout srcImageLayout,
- VkBuffer dstBuffer,
- uint32_t regionCount,
- const VkBufferImageCopy* pRegions);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdUpdateBuffer(
- VkCommandBuffer commandBuffer,
- VkBuffer dstBuffer,
- VkDeviceSize dstOffset,
- VkDeviceSize dataSize,
- const void* pData);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdFillBuffer(
- VkCommandBuffer commandBuffer,
- VkBuffer dstBuffer,
- VkDeviceSize dstOffset,
- VkDeviceSize size,
- uint32_t data);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdClearColorImage(
- VkCommandBuffer commandBuffer,
- VkImage image,
- VkImageLayout imageLayout,
- const VkClearColorValue* pColor,
- uint32_t rangeCount,
- const VkImageSubresourceRange* pRanges);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdClearDepthStencilImage(
- VkCommandBuffer commandBuffer,
- VkImage image,
- VkImageLayout imageLayout,
- const VkClearDepthStencilValue* pDepthStencil,
- uint32_t rangeCount,
- const VkImageSubresourceRange* pRanges);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdClearAttachments(
- VkCommandBuffer commandBuffer,
- uint32_t attachmentCount,
- const VkClearAttachment* pAttachments,
- uint32_t rectCount,
- const VkClearRect* pRects);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdResolveImage(
- VkCommandBuffer commandBuffer,
- VkImage srcImage,
- VkImageLayout srcImageLayout,
- VkImage dstImage,
- VkImageLayout dstImageLayout,
- uint32_t regionCount,
- const VkImageResolve* pRegions);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdSetEvent(
- VkCommandBuffer commandBuffer,
- VkEvent event,
- VkPipelineStageFlags stageMask);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdResetEvent(
- VkCommandBuffer commandBuffer,
- VkEvent event,
- VkPipelineStageFlags stageMask);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdWaitEvents(
- VkCommandBuffer commandBuffer,
- uint32_t eventCount,
- const VkEvent* pEvents,
- VkPipelineStageFlags srcStageMask,
- VkPipelineStageFlags dstStageMask,
- uint32_t memoryBarrierCount,
- const VkMemoryBarrier* pMemoryBarriers,
- uint32_t bufferMemoryBarrierCount,
- const VkBufferMemoryBarrier* pBufferMemoryBarriers,
- uint32_t imageMemoryBarrierCount,
- const VkImageMemoryBarrier* pImageMemoryBarriers);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdPipelineBarrier(
- VkCommandBuffer commandBuffer,
- VkPipelineStageFlags srcStageMask,
- VkPipelineStageFlags dstStageMask,
- VkDependencyFlags dependencyFlags,
- uint32_t memoryBarrierCount,
- const VkMemoryBarrier* pMemoryBarriers,
- uint32_t bufferMemoryBarrierCount,
- const VkBufferMemoryBarrier* pBufferMemoryBarriers,
- uint32_t imageMemoryBarrierCount,
- const VkImageMemoryBarrier* pImageMemoryBarriers);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdBeginQuery(
- VkCommandBuffer commandBuffer,
- VkQueryPool queryPool,
- uint32_t query,
- VkQueryControlFlags flags);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdEndQuery(
- VkCommandBuffer commandBuffer,
- VkQueryPool queryPool,
- uint32_t query);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdResetQueryPool(
- VkCommandBuffer commandBuffer,
- VkQueryPool queryPool,
- uint32_t firstQuery,
- uint32_t queryCount);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdWriteTimestamp(
- VkCommandBuffer commandBuffer,
- VkPipelineStageFlagBits pipelineStage,
- VkQueryPool queryPool,
- uint32_t query);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdCopyQueryPoolResults(
- VkCommandBuffer commandBuffer,
- VkQueryPool queryPool,
- uint32_t firstQuery,
- uint32_t queryCount,
- VkBuffer dstBuffer,
- VkDeviceSize dstOffset,
- VkDeviceSize stride,
- VkQueryResultFlags flags);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdPushConstants(
- VkCommandBuffer commandBuffer,
- VkPipelineLayout layout,
- VkShaderStageFlags stageFlags,
- uint32_t offset,
- uint32_t size,
- const void* pValues);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderPass(
- VkCommandBuffer commandBuffer,
- const VkRenderPassBeginInfo* pRenderPassBegin,
- VkSubpassContents contents);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdNextSubpass(
- VkCommandBuffer commandBuffer,
- VkSubpassContents contents);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdEndRenderPass(
- VkCommandBuffer commandBuffer);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdExecuteCommands(
- VkCommandBuffer commandBuffer,
- uint32_t commandBufferCount,
- const VkCommandBuffer* pCommandBuffers);
-#endif
-
-
-#define VK_VERSION_1_1 1
-// Vulkan 1.1 version number
-#define VK_API_VERSION_1_1 VK_MAKE_API_VERSION(0, 1, 1, 0)// Patch version should always be set to 0
-
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSamplerYcbcrConversion)
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorUpdateTemplate)
-#define VK_MAX_DEVICE_GROUP_SIZE 32U
-#define VK_LUID_SIZE 8U
-#define VK_QUEUE_FAMILY_EXTERNAL (~1U)
-
-typedef enum VkPointClippingBehavior {
- VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES = 0,
- VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY = 1,
- VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR = VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES,
- VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR = VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY,
- VK_POINT_CLIPPING_BEHAVIOR_MAX_ENUM = 0x7FFFFFFF
-} VkPointClippingBehavior;
-
-typedef enum VkTessellationDomainOrigin {
- VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT = 0,
- VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT = 1,
- VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR = VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT,
- VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR = VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT,
- VK_TESSELLATION_DOMAIN_ORIGIN_MAX_ENUM = 0x7FFFFFFF
-} VkTessellationDomainOrigin;
-
-typedef enum VkSamplerYcbcrModelConversion {
- VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY = 0,
- VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY = 1,
- VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709 = 2,
- VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601 = 3,
- VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020 = 4,
- VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY,
- VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY,
- VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709,
- VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601,
- VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020,
- VK_SAMPLER_YCBCR_MODEL_CONVERSION_MAX_ENUM = 0x7FFFFFFF
-} VkSamplerYcbcrModelConversion;
-
-typedef enum VkSamplerYcbcrRange {
- VK_SAMPLER_YCBCR_RANGE_ITU_FULL = 0,
- VK_SAMPLER_YCBCR_RANGE_ITU_NARROW = 1,
- VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR = VK_SAMPLER_YCBCR_RANGE_ITU_FULL,
- VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR = VK_SAMPLER_YCBCR_RANGE_ITU_NARROW,
- VK_SAMPLER_YCBCR_RANGE_MAX_ENUM = 0x7FFFFFFF
-} VkSamplerYcbcrRange;
-
-typedef enum VkChromaLocation {
- VK_CHROMA_LOCATION_COSITED_EVEN = 0,
- VK_CHROMA_LOCATION_MIDPOINT = 1,
- VK_CHROMA_LOCATION_COSITED_EVEN_KHR = VK_CHROMA_LOCATION_COSITED_EVEN,
- VK_CHROMA_LOCATION_MIDPOINT_KHR = VK_CHROMA_LOCATION_MIDPOINT,
- VK_CHROMA_LOCATION_MAX_ENUM = 0x7FFFFFFF
-} VkChromaLocation;
-
-typedef enum VkDescriptorUpdateTemplateType {
- VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET = 0,
- VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR = 1,
- VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET,
- VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_MAX_ENUM = 0x7FFFFFFF
-} VkDescriptorUpdateTemplateType;
-
-typedef enum VkSubgroupFeatureFlagBits {
- VK_SUBGROUP_FEATURE_BASIC_BIT = 0x00000001,
- VK_SUBGROUP_FEATURE_VOTE_BIT = 0x00000002,
- VK_SUBGROUP_FEATURE_ARITHMETIC_BIT = 0x00000004,
- VK_SUBGROUP_FEATURE_BALLOT_BIT = 0x00000008,
- VK_SUBGROUP_FEATURE_SHUFFLE_BIT = 0x00000010,
- VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = 0x00000020,
- VK_SUBGROUP_FEATURE_CLUSTERED_BIT = 0x00000040,
- VK_SUBGROUP_FEATURE_QUAD_BIT = 0x00000080,
- VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV = 0x00000100,
- VK_SUBGROUP_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkSubgroupFeatureFlagBits;
-typedef VkFlags VkSubgroupFeatureFlags;
-
-typedef enum VkPeerMemoryFeatureFlagBits {
- VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT = 0x00000001,
- VK_PEER_MEMORY_FEATURE_COPY_DST_BIT = 0x00000002,
- VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT = 0x00000004,
- VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT = 0x00000008,
- VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR = VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT,
- VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR = VK_PEER_MEMORY_FEATURE_COPY_DST_BIT,
- VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR = VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT,
- VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR = VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT,
- VK_PEER_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkPeerMemoryFeatureFlagBits;
-typedef VkFlags VkPeerMemoryFeatureFlags;
-
-typedef enum VkMemoryAllocateFlagBits {
- VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT = 0x00000001,
- VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT = 0x00000002,
- VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 0x00000004,
- VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR = VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT,
- VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR = VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT,
- VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT,
- VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkMemoryAllocateFlagBits;
-typedef VkFlags VkMemoryAllocateFlags;
-typedef VkFlags VkCommandPoolTrimFlags;
-typedef VkFlags VkDescriptorUpdateTemplateCreateFlags;
-
-typedef enum VkExternalMemoryHandleTypeFlagBits {
- VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT = 0x00000001,
- VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT = 0x00000002,
- VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 0x00000004,
- VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT = 0x00000008,
- VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT = 0x00000010,
- VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT = 0x00000020,
- VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT = 0x00000040,
- VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT = 0x00000200,
- VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID = 0x00000400,
- VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT = 0x00000080,
- VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT = 0x00000100,
- VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA = 0x00000800,
- VK_EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV = 0x00001000,
- VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT,
- VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT,
- VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,
- VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT,
- VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT,
- VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT,
- VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT,
- VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkExternalMemoryHandleTypeFlagBits;
-typedef VkFlags VkExternalMemoryHandleTypeFlags;
-
-typedef enum VkExternalMemoryFeatureFlagBits {
- VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT = 0x00000001,
- VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT = 0x00000002,
- VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT = 0x00000004,
- VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT,
- VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR = VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT,
- VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT,
- VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkExternalMemoryFeatureFlagBits;
-typedef VkFlags VkExternalMemoryFeatureFlags;
-
-typedef enum VkExternalFenceHandleTypeFlagBits {
- VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT = 0x00000001,
- VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 0x00000002,
- VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 0x00000004,
- VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT = 0x00000008,
- VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT,
- VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT,
- VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,
- VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR = VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT,
- VK_EXTERNAL_FENCE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkExternalFenceHandleTypeFlagBits;
-typedef VkFlags VkExternalFenceHandleTypeFlags;
-
-typedef enum VkExternalFenceFeatureFlagBits {
- VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT = 0x00000001,
- VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT = 0x00000002,
- VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR = VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT,
- VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR = VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT,
- VK_EXTERNAL_FENCE_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkExternalFenceFeatureFlagBits;
-typedef VkFlags VkExternalFenceFeatureFlags;
-
-typedef enum VkFenceImportFlagBits {
- VK_FENCE_IMPORT_TEMPORARY_BIT = 0x00000001,
- VK_FENCE_IMPORT_TEMPORARY_BIT_KHR = VK_FENCE_IMPORT_TEMPORARY_BIT,
- VK_FENCE_IMPORT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkFenceImportFlagBits;
-typedef VkFlags VkFenceImportFlags;
-
-typedef enum VkSemaphoreImportFlagBits {
- VK_SEMAPHORE_IMPORT_TEMPORARY_BIT = 0x00000001,
- VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR = VK_SEMAPHORE_IMPORT_TEMPORARY_BIT,
- VK_SEMAPHORE_IMPORT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkSemaphoreImportFlagBits;
-typedef VkFlags VkSemaphoreImportFlags;
-
-typedef enum VkExternalSemaphoreHandleTypeFlagBits {
- VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT = 0x00000001,
- VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 0x00000002,
- VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 0x00000004,
- VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT = 0x00000008,
- VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT = 0x00000010,
- VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA = 0x00000080,
- VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_FENCE_BIT = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT,
- VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT,
- VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT,
- VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,
- VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT,
- VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT,
- VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkExternalSemaphoreHandleTypeFlagBits;
-typedef VkFlags VkExternalSemaphoreHandleTypeFlags;
-
-typedef enum VkExternalSemaphoreFeatureFlagBits {
- VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT = 0x00000001,
- VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT = 0x00000002,
- VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR = VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT,
- VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR = VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT,
- VK_EXTERNAL_SEMAPHORE_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkExternalSemaphoreFeatureFlagBits;
-typedef VkFlags VkExternalSemaphoreFeatureFlags;
-typedef struct VkPhysicalDeviceSubgroupProperties {
- VkStructureType sType;
- void* pNext;
- uint32_t subgroupSize;
- VkShaderStageFlags supportedStages;
- VkSubgroupFeatureFlags supportedOperations;
- VkBool32 quadOperationsInAllStages;
-} VkPhysicalDeviceSubgroupProperties;
-
-typedef struct VkBindBufferMemoryInfo {
- VkStructureType sType;
- const void* pNext;
- VkBuffer buffer;
- VkDeviceMemory memory;
- VkDeviceSize memoryOffset;
-} VkBindBufferMemoryInfo;
-
-typedef struct VkBindImageMemoryInfo {
- VkStructureType sType;
- const void* pNext;
- VkImage image;
- VkDeviceMemory memory;
- VkDeviceSize memoryOffset;
-} VkBindImageMemoryInfo;
-
-typedef struct VkPhysicalDevice16BitStorageFeatures {
- VkStructureType sType;
- void* pNext;
- VkBool32 storageBuffer16BitAccess;
- VkBool32 uniformAndStorageBuffer16BitAccess;
- VkBool32 storagePushConstant16;
- VkBool32 storageInputOutput16;
-} VkPhysicalDevice16BitStorageFeatures;
-
-typedef struct VkMemoryDedicatedRequirements {
- VkStructureType sType;
- void* pNext;
- VkBool32 prefersDedicatedAllocation;
- VkBool32 requiresDedicatedAllocation;
-} VkMemoryDedicatedRequirements;
-
-typedef struct VkMemoryDedicatedAllocateInfo {
- VkStructureType sType;
- const void* pNext;
- VkImage image;
- VkBuffer buffer;
-} VkMemoryDedicatedAllocateInfo;
-
-typedef struct VkMemoryAllocateFlagsInfo {
- VkStructureType sType;
- const void* pNext;
- VkMemoryAllocateFlags flags;
- uint32_t deviceMask;
-} VkMemoryAllocateFlagsInfo;
-
-typedef struct VkDeviceGroupRenderPassBeginInfo {
- VkStructureType sType;
- const void* pNext;
- uint32_t deviceMask;
- uint32_t deviceRenderAreaCount;
- const VkRect2D* pDeviceRenderAreas;
-} VkDeviceGroupRenderPassBeginInfo;
-
-typedef struct VkDeviceGroupCommandBufferBeginInfo {
- VkStructureType sType;
- const void* pNext;
- uint32_t deviceMask;
-} VkDeviceGroupCommandBufferBeginInfo;
-
-typedef struct VkDeviceGroupSubmitInfo {
- VkStructureType sType;
- const void* pNext;
- uint32_t waitSemaphoreCount;
- const uint32_t* pWaitSemaphoreDeviceIndices;
- uint32_t commandBufferCount;
- const uint32_t* pCommandBufferDeviceMasks;
- uint32_t signalSemaphoreCount;
- const uint32_t* pSignalSemaphoreDeviceIndices;
-} VkDeviceGroupSubmitInfo;
-
-typedef struct VkDeviceGroupBindSparseInfo {
- VkStructureType sType;
- const void* pNext;
- uint32_t resourceDeviceIndex;
- uint32_t memoryDeviceIndex;
-} VkDeviceGroupBindSparseInfo;
-
-typedef struct VkBindBufferMemoryDeviceGroupInfo {
- VkStructureType sType;
- const void* pNext;
- uint32_t deviceIndexCount;
- const uint32_t* pDeviceIndices;
-} VkBindBufferMemoryDeviceGroupInfo;
-
-typedef struct VkBindImageMemoryDeviceGroupInfo {
- VkStructureType sType;
- const void* pNext;
- uint32_t deviceIndexCount;
- const uint32_t* pDeviceIndices;
- uint32_t splitInstanceBindRegionCount;
- const VkRect2D* pSplitInstanceBindRegions;
-} VkBindImageMemoryDeviceGroupInfo;
-
-typedef struct VkPhysicalDeviceGroupProperties {
- VkStructureType sType;
- void* pNext;
- uint32_t physicalDeviceCount;
- VkPhysicalDevice physicalDevices[VK_MAX_DEVICE_GROUP_SIZE];
- VkBool32 subsetAllocation;
-} VkPhysicalDeviceGroupProperties;
-
-typedef struct VkDeviceGroupDeviceCreateInfo {
- VkStructureType sType;
- const void* pNext;
- uint32_t physicalDeviceCount;
- const VkPhysicalDevice* pPhysicalDevices;
-} VkDeviceGroupDeviceCreateInfo;
-
-typedef struct VkBufferMemoryRequirementsInfo2 {
- VkStructureType sType;
- const void* pNext;
- VkBuffer buffer;
-} VkBufferMemoryRequirementsInfo2;
-
-typedef struct VkImageMemoryRequirementsInfo2 {
- VkStructureType sType;
- const void* pNext;
- VkImage image;
-} VkImageMemoryRequirementsInfo2;
-
-typedef struct VkImageSparseMemoryRequirementsInfo2 {
- VkStructureType sType;
- const void* pNext;
- VkImage image;
-} VkImageSparseMemoryRequirementsInfo2;
-
-typedef struct VkMemoryRequirements2 {
- VkStructureType sType;
- void* pNext;
- VkMemoryRequirements memoryRequirements;
-} VkMemoryRequirements2;
-
-typedef struct VkSparseImageMemoryRequirements2 {
- VkStructureType sType;
- void* pNext;
- VkSparseImageMemoryRequirements memoryRequirements;
-} VkSparseImageMemoryRequirements2;
-
-typedef struct VkPhysicalDeviceFeatures2 {
- VkStructureType sType;
- void* pNext;
- VkPhysicalDeviceFeatures features;
-} VkPhysicalDeviceFeatures2;
-
-typedef struct VkPhysicalDeviceProperties2 {
- VkStructureType sType;
- void* pNext;
- VkPhysicalDeviceProperties properties;
-} VkPhysicalDeviceProperties2;
-
-typedef struct VkFormatProperties2 {
- VkStructureType sType;
- void* pNext;
- VkFormatProperties formatProperties;
-} VkFormatProperties2;
-
-typedef struct VkImageFormatProperties2 {
- VkStructureType sType;
- void* pNext;
- VkImageFormatProperties imageFormatProperties;
-} VkImageFormatProperties2;
-
-typedef struct VkPhysicalDeviceImageFormatInfo2 {
- VkStructureType sType;
- const void* pNext;
- VkFormat format;
- VkImageType type;
- VkImageTiling tiling;
- VkImageUsageFlags usage;
- VkImageCreateFlags flags;
-} VkPhysicalDeviceImageFormatInfo2;
-
-typedef struct VkQueueFamilyProperties2 {
- VkStructureType sType;
- void* pNext;
- VkQueueFamilyProperties queueFamilyProperties;
-} VkQueueFamilyProperties2;
-
-typedef struct VkPhysicalDeviceMemoryProperties2 {
- VkStructureType sType;
- void* pNext;
- VkPhysicalDeviceMemoryProperties memoryProperties;
-} VkPhysicalDeviceMemoryProperties2;
-
-typedef struct VkSparseImageFormatProperties2 {
- VkStructureType sType;
- void* pNext;
- VkSparseImageFormatProperties properties;
-} VkSparseImageFormatProperties2;
-
-typedef struct VkPhysicalDeviceSparseImageFormatInfo2 {
- VkStructureType sType;
- const void* pNext;
- VkFormat format;
- VkImageType type;
- VkSampleCountFlagBits samples;
- VkImageUsageFlags usage;
- VkImageTiling tiling;
-} VkPhysicalDeviceSparseImageFormatInfo2;
-
-typedef struct VkPhysicalDevicePointClippingProperties {
- VkStructureType sType;
- void* pNext;
- VkPointClippingBehavior pointClippingBehavior;
-} VkPhysicalDevicePointClippingProperties;
-
-typedef struct VkInputAttachmentAspectReference {
- uint32_t subpass;
- uint32_t inputAttachmentIndex;
- VkImageAspectFlags aspectMask;
-} VkInputAttachmentAspectReference;
-
-typedef struct VkRenderPassInputAttachmentAspectCreateInfo {
- VkStructureType sType;
- const void* pNext;
- uint32_t aspectReferenceCount;
- const VkInputAttachmentAspectReference* pAspectReferences;
-} VkRenderPassInputAttachmentAspectCreateInfo;
-
-typedef struct VkImageViewUsageCreateInfo {
- VkStructureType sType;
- const void* pNext;
- VkImageUsageFlags usage;
-} VkImageViewUsageCreateInfo;
-
-typedef struct VkPipelineTessellationDomainOriginStateCreateInfo {
- VkStructureType sType;
- const void* pNext;
- VkTessellationDomainOrigin domainOrigin;
-} VkPipelineTessellationDomainOriginStateCreateInfo;
-
-typedef struct VkRenderPassMultiviewCreateInfo {
- VkStructureType sType;
- const void* pNext;
- uint32_t subpassCount;
- const uint32_t* pViewMasks;
- uint32_t dependencyCount;
- const int32_t* pViewOffsets;
- uint32_t correlationMaskCount;
- const uint32_t* pCorrelationMasks;
-} VkRenderPassMultiviewCreateInfo;
-
-typedef struct VkPhysicalDeviceMultiviewFeatures {
- VkStructureType sType;
- void* pNext;
- VkBool32 multiview;
- VkBool32 multiviewGeometryShader;
- VkBool32 multiviewTessellationShader;
-} VkPhysicalDeviceMultiviewFeatures;
-
-typedef struct VkPhysicalDeviceMultiviewProperties {
- VkStructureType sType;
- void* pNext;
- uint32_t maxMultiviewViewCount;
- uint32_t maxMultiviewInstanceIndex;
-} VkPhysicalDeviceMultiviewProperties;
-
-typedef struct VkPhysicalDeviceVariablePointersFeatures {
- VkStructureType sType;
- void* pNext;
- VkBool32 variablePointersStorageBuffer;
- VkBool32 variablePointers;
-} VkPhysicalDeviceVariablePointersFeatures;
-
-typedef VkPhysicalDeviceVariablePointersFeatures VkPhysicalDeviceVariablePointerFeatures;
-
-typedef struct VkPhysicalDeviceProtectedMemoryFeatures {
- VkStructureType sType;
- void* pNext;
- VkBool32 protectedMemory;
-} VkPhysicalDeviceProtectedMemoryFeatures;
-
-typedef struct VkPhysicalDeviceProtectedMemoryProperties {
- VkStructureType sType;
- void* pNext;
- VkBool32 protectedNoFault;
-} VkPhysicalDeviceProtectedMemoryProperties;
-
-typedef struct VkDeviceQueueInfo2 {
- VkStructureType sType;
- const void* pNext;
- VkDeviceQueueCreateFlags flags;
- uint32_t queueFamilyIndex;
- uint32_t queueIndex;
-} VkDeviceQueueInfo2;
-
-typedef struct VkProtectedSubmitInfo {
- VkStructureType sType;
- const void* pNext;
- VkBool32 protectedSubmit;
-} VkProtectedSubmitInfo;
-
-typedef struct VkSamplerYcbcrConversionCreateInfo {
- VkStructureType sType;
- const void* pNext;
- VkFormat format;
- VkSamplerYcbcrModelConversion ycbcrModel;
- VkSamplerYcbcrRange ycbcrRange;
- VkComponentMapping components;
- VkChromaLocation xChromaOffset;
- VkChromaLocation yChromaOffset;
- VkFilter chromaFilter;
- VkBool32 forceExplicitReconstruction;
-} VkSamplerYcbcrConversionCreateInfo;
-
-typedef struct VkSamplerYcbcrConversionInfo {
- VkStructureType sType;
- const void* pNext;
- VkSamplerYcbcrConversion conversion;
-} VkSamplerYcbcrConversionInfo;
-
-typedef struct VkBindImagePlaneMemoryInfo {
- VkStructureType sType;
- const void* pNext;
- VkImageAspectFlagBits planeAspect;
-} VkBindImagePlaneMemoryInfo;
-
-typedef struct VkImagePlaneMemoryRequirementsInfo {
- VkStructureType sType;
- const void* pNext;
- VkImageAspectFlagBits planeAspect;
-} VkImagePlaneMemoryRequirementsInfo;
-
-typedef struct VkPhysicalDeviceSamplerYcbcrConversionFeatures {
- VkStructureType sType;
- void* pNext;
- VkBool32 samplerYcbcrConversion;
-} VkPhysicalDeviceSamplerYcbcrConversionFeatures;
-
-typedef struct VkSamplerYcbcrConversionImageFormatProperties {
- VkStructureType sType;
- void* pNext;
- uint32_t combinedImageSamplerDescriptorCount;
-} VkSamplerYcbcrConversionImageFormatProperties;
-
-typedef struct VkDescriptorUpdateTemplateEntry {
- uint32_t dstBinding;
- uint32_t dstArrayElement;
- uint32_t descriptorCount;
- VkDescriptorType descriptorType;
- size_t offset;
- size_t stride;
-} VkDescriptorUpdateTemplateEntry;
-
-typedef struct VkDescriptorUpdateTemplateCreateInfo {
- VkStructureType sType;
- const void* pNext;
- VkDescriptorUpdateTemplateCreateFlags flags;
- uint32_t descriptorUpdateEntryCount;
- const VkDescriptorUpdateTemplateEntry* pDescriptorUpdateEntries;
- VkDescriptorUpdateTemplateType templateType;
- VkDescriptorSetLayout descriptorSetLayout;
- VkPipelineBindPoint pipelineBindPoint;
- VkPipelineLayout pipelineLayout;
- uint32_t set;
-} VkDescriptorUpdateTemplateCreateInfo;
-
-typedef struct VkExternalMemoryProperties {
- VkExternalMemoryFeatureFlags externalMemoryFeatures;
- VkExternalMemoryHandleTypeFlags exportFromImportedHandleTypes;
- VkExternalMemoryHandleTypeFlags compatibleHandleTypes;
-} VkExternalMemoryProperties;
-
-typedef struct VkPhysicalDeviceExternalImageFormatInfo {
- VkStructureType sType;
- const void* pNext;
- VkExternalMemoryHandleTypeFlagBits handleType;
-} VkPhysicalDeviceExternalImageFormatInfo;
-
-typedef struct VkExternalImageFormatProperties {
- VkStructureType sType;
- void* pNext;
- VkExternalMemoryProperties externalMemoryProperties;
-} VkExternalImageFormatProperties;
-
-typedef struct VkPhysicalDeviceExternalBufferInfo {
- VkStructureType sType;
- const void* pNext;
- VkBufferCreateFlags flags;
- VkBufferUsageFlags usage;
- VkExternalMemoryHandleTypeFlagBits handleType;
-} VkPhysicalDeviceExternalBufferInfo;
-
-typedef struct VkExternalBufferProperties {
- VkStructureType sType;
- void* pNext;
- VkExternalMemoryProperties externalMemoryProperties;
-} VkExternalBufferProperties;
-
-typedef struct VkPhysicalDeviceIDProperties {
- VkStructureType sType;
- void* pNext;
- uint8_t deviceUUID[VK_UUID_SIZE];
- uint8_t driverUUID[VK_UUID_SIZE];
- uint8_t deviceLUID[VK_LUID_SIZE];
- uint32_t deviceNodeMask;
- VkBool32 deviceLUIDValid;
-} VkPhysicalDeviceIDProperties;
-
-typedef struct VkExternalMemoryImageCreateInfo {
- VkStructureType sType;
- const void* pNext;
- VkExternalMemoryHandleTypeFlags handleTypes;
-} VkExternalMemoryImageCreateInfo;
-
-typedef struct VkExternalMemoryBufferCreateInfo {
- VkStructureType sType;
- const void* pNext;
- VkExternalMemoryHandleTypeFlags handleTypes;
-} VkExternalMemoryBufferCreateInfo;
-
-typedef struct VkExportMemoryAllocateInfo {
- VkStructureType sType;
- const void* pNext;
- VkExternalMemoryHandleTypeFlags handleTypes;
-} VkExportMemoryAllocateInfo;
-
-typedef struct VkPhysicalDeviceExternalFenceInfo {
- VkStructureType sType;
- const void* pNext;
- VkExternalFenceHandleTypeFlagBits handleType;
-} VkPhysicalDeviceExternalFenceInfo;
-
-typedef struct VkExternalFenceProperties {
- VkStructureType sType;
- void* pNext;
- VkExternalFenceHandleTypeFlags exportFromImportedHandleTypes;
- VkExternalFenceHandleTypeFlags compatibleHandleTypes;
- VkExternalFenceFeatureFlags externalFenceFeatures;
-} VkExternalFenceProperties;
-
-typedef struct VkExportFenceCreateInfo {
- VkStructureType sType;
- const void* pNext;
- VkExternalFenceHandleTypeFlags handleTypes;
-} VkExportFenceCreateInfo;
-
-typedef struct VkExportSemaphoreCreateInfo {
- VkStructureType sType;
- const void* pNext;
- VkExternalSemaphoreHandleTypeFlags handleTypes;
-} VkExportSemaphoreCreateInfo;
-
-typedef struct VkPhysicalDeviceExternalSemaphoreInfo {
- VkStructureType sType;
- const void* pNext;
- VkExternalSemaphoreHandleTypeFlagBits handleType;
-} VkPhysicalDeviceExternalSemaphoreInfo;
-
-typedef struct VkExternalSemaphoreProperties {
- VkStructureType sType;
- void* pNext;
- VkExternalSemaphoreHandleTypeFlags exportFromImportedHandleTypes;
- VkExternalSemaphoreHandleTypeFlags compatibleHandleTypes;
- VkExternalSemaphoreFeatureFlags externalSemaphoreFeatures;
-} VkExternalSemaphoreProperties;
-
-typedef struct VkPhysicalDeviceMaintenance3Properties {
- VkStructureType sType;
- void* pNext;
- uint32_t maxPerSetDescriptors;
- VkDeviceSize maxMemoryAllocationSize;
-} VkPhysicalDeviceMaintenance3Properties;
-
-typedef struct VkDescriptorSetLayoutSupport {
- VkStructureType sType;
- void* pNext;
- VkBool32 supported;
-} VkDescriptorSetLayoutSupport;
-
-typedef struct VkPhysicalDeviceShaderDrawParametersFeatures {
- VkStructureType sType;
- void* pNext;
- VkBool32 shaderDrawParameters;
-} VkPhysicalDeviceShaderDrawParametersFeatures;
-
-typedef VkPhysicalDeviceShaderDrawParametersFeatures VkPhysicalDeviceShaderDrawParameterFeatures;
-
-typedef VkResult (VKAPI_PTR *PFN_vkEnumerateInstanceVersion)(uint32_t* pApiVersion);
-typedef VkResult (VKAPI_PTR *PFN_vkBindBufferMemory2)(VkDevice device, uint32_t bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos);
-typedef VkResult (VKAPI_PTR *PFN_vkBindImageMemory2)(VkDevice device, uint32_t bindInfoCount, const VkBindImageMemoryInfo* pBindInfos);
-typedef void (VKAPI_PTR *PFN_vkGetDeviceGroupPeerMemoryFeatures)(VkDevice device, uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, VkPeerMemoryFeatureFlags* pPeerMemoryFeatures);
-typedef void (VKAPI_PTR *PFN_vkCmdSetDeviceMask)(VkCommandBuffer commandBuffer, uint32_t deviceMask);
-typedef void (VKAPI_PTR *PFN_vkCmdDispatchBase)(VkCommandBuffer commandBuffer, uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ);
-typedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDeviceGroups)(VkInstance instance, uint32_t* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties);
-typedef void (VKAPI_PTR *PFN_vkGetImageMemoryRequirements2)(VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements);
-typedef void (VKAPI_PTR *PFN_vkGetBufferMemoryRequirements2)(VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements);
-typedef void (VKAPI_PTR *PFN_vkGetImageSparseMemoryRequirements2)(VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements);
-typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFeatures2)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures);
-typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceProperties2)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties);
-typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFormatProperties2)(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2* pFormatProperties);
-typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceImageFormatProperties2)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, VkImageFormatProperties2* pImageFormatProperties);
-typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceQueueFamilyProperties2)(VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties2* pQueueFamilyProperties);
-typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMemoryProperties2)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties);
-typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceSparseImageFormatProperties2)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, uint32_t* pPropertyCount, VkSparseImageFormatProperties2* pProperties);
-typedef void (VKAPI_PTR *PFN_vkTrimCommandPool)(VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags);
-typedef void (VKAPI_PTR *PFN_vkGetDeviceQueue2)(VkDevice device, const VkDeviceQueueInfo2* pQueueInfo, VkQueue* pQueue);
-typedef VkResult (VKAPI_PTR *PFN_vkCreateSamplerYcbcrConversion)(VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion);
-typedef void (VKAPI_PTR *PFN_vkDestroySamplerYcbcrConversion)(VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks* pAllocator);
-typedef VkResult (VKAPI_PTR *PFN_vkCreateDescriptorUpdateTemplate)(VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate);
-typedef void (VKAPI_PTR *PFN_vkDestroyDescriptorUpdateTemplate)(VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator);
-typedef void (VKAPI_PTR *PFN_vkUpdateDescriptorSetWithTemplate)(VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData);
-typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalBufferProperties)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties);
-typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalFenceProperties)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties);
-typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalSemaphoreProperties)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties);
-typedef void (VKAPI_PTR *PFN_vkGetDescriptorSetLayoutSupport)(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceVersion(
- uint32_t* pApiVersion);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkBindBufferMemory2(
- VkDevice device,
- uint32_t bindInfoCount,
- const VkBindBufferMemoryInfo* pBindInfos);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkBindImageMemory2(
- VkDevice device,
- uint32_t bindInfoCount,
- const VkBindImageMemoryInfo* pBindInfos);
-
-VKAPI_ATTR void VKAPI_CALL vkGetDeviceGroupPeerMemoryFeatures(
- VkDevice device,
- uint32_t heapIndex,
- uint32_t localDeviceIndex,
- uint32_t remoteDeviceIndex,
- VkPeerMemoryFeatureFlags* pPeerMemoryFeatures);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdSetDeviceMask(
- VkCommandBuffer commandBuffer,
- uint32_t deviceMask);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdDispatchBase(
- VkCommandBuffer commandBuffer,
- uint32_t baseGroupX,
- uint32_t baseGroupY,
- uint32_t baseGroupZ,
- uint32_t groupCountX,
- uint32_t groupCountY,
- uint32_t groupCountZ);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDeviceGroups(
- VkInstance instance,
- uint32_t* pPhysicalDeviceGroupCount,
- VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties);
-
-VKAPI_ATTR void VKAPI_CALL vkGetImageMemoryRequirements2(
- VkDevice device,
- const VkImageMemoryRequirementsInfo2* pInfo,
- VkMemoryRequirements2* pMemoryRequirements);
-
-VKAPI_ATTR void VKAPI_CALL vkGetBufferMemoryRequirements2(
- VkDevice device,
- const VkBufferMemoryRequirementsInfo2* pInfo,
- VkMemoryRequirements2* pMemoryRequirements);
-
-VKAPI_ATTR void VKAPI_CALL vkGetImageSparseMemoryRequirements2(
- VkDevice device,
- const VkImageSparseMemoryRequirementsInfo2* pInfo,
- uint32_t* pSparseMemoryRequirementCount,
- VkSparseImageMemoryRequirements2* pSparseMemoryRequirements);
-
-VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFeatures2(
- VkPhysicalDevice physicalDevice,
- VkPhysicalDeviceFeatures2* pFeatures);
-
-VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceProperties2(
- VkPhysicalDevice physicalDevice,
- VkPhysicalDeviceProperties2* pProperties);
-
-VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFormatProperties2(
- VkPhysicalDevice physicalDevice,
- VkFormat format,
- VkFormatProperties2* pFormatProperties);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceImageFormatProperties2(
- VkPhysicalDevice physicalDevice,
- const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
- VkImageFormatProperties2* pImageFormatProperties);
-
-VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyProperties2(
- VkPhysicalDevice physicalDevice,
- uint32_t* pQueueFamilyPropertyCount,
- VkQueueFamilyProperties2* pQueueFamilyProperties);
-
-VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMemoryProperties2(
- VkPhysicalDevice physicalDevice,
- VkPhysicalDeviceMemoryProperties2* pMemoryProperties);
-
-VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceSparseImageFormatProperties2(
- VkPhysicalDevice physicalDevice,
- const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
- uint32_t* pPropertyCount,
- VkSparseImageFormatProperties2* pProperties);
-
-VKAPI_ATTR void VKAPI_CALL vkTrimCommandPool(
- VkDevice device,
- VkCommandPool commandPool,
- VkCommandPoolTrimFlags flags);
-
-VKAPI_ATTR void VKAPI_CALL vkGetDeviceQueue2(
- VkDevice device,
- const VkDeviceQueueInfo2* pQueueInfo,
- VkQueue* pQueue);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateSamplerYcbcrConversion(
- VkDevice device,
- const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkSamplerYcbcrConversion* pYcbcrConversion);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroySamplerYcbcrConversion(
- VkDevice device,
- VkSamplerYcbcrConversion ycbcrConversion,
- const VkAllocationCallbacks* pAllocator);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorUpdateTemplate(
- VkDevice device,
- const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorUpdateTemplate(
- VkDevice device,
- VkDescriptorUpdateTemplate descriptorUpdateTemplate,
- const VkAllocationCallbacks* pAllocator);
-
-VKAPI_ATTR void VKAPI_CALL vkUpdateDescriptorSetWithTemplate(
- VkDevice device,
- VkDescriptorSet descriptorSet,
- VkDescriptorUpdateTemplate descriptorUpdateTemplate,
- const void* pData);
-
-VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalBufferProperties(
- VkPhysicalDevice physicalDevice,
- const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
- VkExternalBufferProperties* pExternalBufferProperties);
-
-VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalFenceProperties(
- VkPhysicalDevice physicalDevice,
- const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
- VkExternalFenceProperties* pExternalFenceProperties);
-
-VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalSemaphoreProperties(
- VkPhysicalDevice physicalDevice,
- const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
- VkExternalSemaphoreProperties* pExternalSemaphoreProperties);
-
-VKAPI_ATTR void VKAPI_CALL vkGetDescriptorSetLayoutSupport(
- VkDevice device,
- const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
- VkDescriptorSetLayoutSupport* pSupport);
-#endif
-
-
-#define VK_VERSION_1_2 1
-// Vulkan 1.2 version number
-#define VK_API_VERSION_1_2 VK_MAKE_API_VERSION(0, 1, 2, 0)// Patch version should always be set to 0
-
-#define VK_MAX_DRIVER_NAME_SIZE 256U
-#define VK_MAX_DRIVER_INFO_SIZE 256U
-
-typedef enum VkDriverId {
- VK_DRIVER_ID_AMD_PROPRIETARY = 1,
- VK_DRIVER_ID_AMD_OPEN_SOURCE = 2,
- VK_DRIVER_ID_MESA_RADV = 3,
- VK_DRIVER_ID_NVIDIA_PROPRIETARY = 4,
- VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS = 5,
- VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA = 6,
- VK_DRIVER_ID_IMAGINATION_PROPRIETARY = 7,
- VK_DRIVER_ID_QUALCOMM_PROPRIETARY = 8,
- VK_DRIVER_ID_ARM_PROPRIETARY = 9,
- VK_DRIVER_ID_GOOGLE_SWIFTSHADER = 10,
- VK_DRIVER_ID_GGP_PROPRIETARY = 11,
- VK_DRIVER_ID_BROADCOM_PROPRIETARY = 12,
- VK_DRIVER_ID_MESA_LLVMPIPE = 13,
- VK_DRIVER_ID_MOLTENVK = 14,
- VK_DRIVER_ID_COREAVI_PROPRIETARY = 15,
- VK_DRIVER_ID_JUICE_PROPRIETARY = 16,
- VK_DRIVER_ID_VERISILICON_PROPRIETARY = 17,
- VK_DRIVER_ID_MESA_TURNIP = 18,
- VK_DRIVER_ID_MESA_V3DV = 19,
- VK_DRIVER_ID_MESA_PANVK = 20,
- VK_DRIVER_ID_AMD_PROPRIETARY_KHR = VK_DRIVER_ID_AMD_PROPRIETARY,
- VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = VK_DRIVER_ID_AMD_OPEN_SOURCE,
- VK_DRIVER_ID_MESA_RADV_KHR = VK_DRIVER_ID_MESA_RADV,
- VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR = VK_DRIVER_ID_NVIDIA_PROPRIETARY,
- VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR = VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS,
- VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR = VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA,
- VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR = VK_DRIVER_ID_IMAGINATION_PROPRIETARY,
- VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR = VK_DRIVER_ID_QUALCOMM_PROPRIETARY,
- VK_DRIVER_ID_ARM_PROPRIETARY_KHR = VK_DRIVER_ID_ARM_PROPRIETARY,
- VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR = VK_DRIVER_ID_GOOGLE_SWIFTSHADER,
- VK_DRIVER_ID_GGP_PROPRIETARY_KHR = VK_DRIVER_ID_GGP_PROPRIETARY,
- VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR = VK_DRIVER_ID_BROADCOM_PROPRIETARY,
- VK_DRIVER_ID_MAX_ENUM = 0x7FFFFFFF
-} VkDriverId;
-
-typedef enum VkShaderFloatControlsIndependence {
- VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY = 0,
- VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL = 1,
- VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE = 2,
- VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY,
- VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL,
- VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE,
- VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM = 0x7FFFFFFF
-} VkShaderFloatControlsIndependence;
-
-typedef enum VkSamplerReductionMode {
- VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE = 0,
- VK_SAMPLER_REDUCTION_MODE_MIN = 1,
- VK_SAMPLER_REDUCTION_MODE_MAX = 2,
- VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE,
- VK_SAMPLER_REDUCTION_MODE_MIN_EXT = VK_SAMPLER_REDUCTION_MODE_MIN,
- VK_SAMPLER_REDUCTION_MODE_MAX_EXT = VK_SAMPLER_REDUCTION_MODE_MAX,
- VK_SAMPLER_REDUCTION_MODE_MAX_ENUM = 0x7FFFFFFF
-} VkSamplerReductionMode;
-
-typedef enum VkSemaphoreType {
- VK_SEMAPHORE_TYPE_BINARY = 0,
- VK_SEMAPHORE_TYPE_TIMELINE = 1,
- VK_SEMAPHORE_TYPE_BINARY_KHR = VK_SEMAPHORE_TYPE_BINARY,
- VK_SEMAPHORE_TYPE_TIMELINE_KHR = VK_SEMAPHORE_TYPE_TIMELINE,
- VK_SEMAPHORE_TYPE_MAX_ENUM = 0x7FFFFFFF
-} VkSemaphoreType;
-
-typedef enum VkResolveModeFlagBits {
- VK_RESOLVE_MODE_NONE = 0,
- VK_RESOLVE_MODE_SAMPLE_ZERO_BIT = 0x00000001,
- VK_RESOLVE_MODE_AVERAGE_BIT = 0x00000002,
- VK_RESOLVE_MODE_MIN_BIT = 0x00000004,
- VK_RESOLVE_MODE_MAX_BIT = 0x00000008,
- VK_RESOLVE_MODE_NONE_KHR = VK_RESOLVE_MODE_NONE,
- VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR = VK_RESOLVE_MODE_SAMPLE_ZERO_BIT,
- VK_RESOLVE_MODE_AVERAGE_BIT_KHR = VK_RESOLVE_MODE_AVERAGE_BIT,
- VK_RESOLVE_MODE_MIN_BIT_KHR = VK_RESOLVE_MODE_MIN_BIT,
- VK_RESOLVE_MODE_MAX_BIT_KHR = VK_RESOLVE_MODE_MAX_BIT,
- VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkResolveModeFlagBits;
-typedef VkFlags VkResolveModeFlags;
-
-typedef enum VkDescriptorBindingFlagBits {
- VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT = 0x00000001,
- VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT = 0x00000002,
- VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT = 0x00000004,
- VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT = 0x00000008,
- VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT = VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT,
- VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT = VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT,
- VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT = VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT,
- VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT = VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT,
- VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkDescriptorBindingFlagBits;
-typedef VkFlags VkDescriptorBindingFlags;
-
-typedef enum VkSemaphoreWaitFlagBits {
- VK_SEMAPHORE_WAIT_ANY_BIT = 0x00000001,
- VK_SEMAPHORE_WAIT_ANY_BIT_KHR = VK_SEMAPHORE_WAIT_ANY_BIT,
- VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
-} VkSemaphoreWaitFlagBits;
-typedef VkFlags VkSemaphoreWaitFlags;
-typedef struct VkPhysicalDeviceVulkan11Features {
- VkStructureType sType;
- void* pNext;
- VkBool32 storageBuffer16BitAccess;
- VkBool32 uniformAndStorageBuffer16BitAccess;
- VkBool32 storagePushConstant16;
- VkBool32 storageInputOutput16;
- VkBool32 multiview;
- VkBool32 multiviewGeometryShader;
- VkBool32 multiviewTessellationShader;
- VkBool32 variablePointersStorageBuffer;
- VkBool32 variablePointers;
- VkBool32 protectedMemory;
- VkBool32 samplerYcbcrConversion;
- VkBool32 shaderDrawParameters;
-} VkPhysicalDeviceVulkan11Features;
-
-typedef struct VkPhysicalDeviceVulkan11Properties {
- VkStructureType sType;
- void* pNext;
- uint8_t deviceUUID[VK_UUID_SIZE];
- uint8_t driverUUID[VK_UUID_SIZE];
- uint8_t deviceLUID[VK_LUID_SIZE];
- uint32_t deviceNodeMask;
- VkBool32 deviceLUIDValid;
- uint32_t subgroupSize;
- VkShaderStageFlags subgroupSupportedStages;
- VkSubgroupFeatureFlags subgroupSupportedOperations;
- VkBool32 subgroupQuadOperationsInAllStages;
- VkPointClippingBehavior pointClippingBehavior;
- uint32_t maxMultiviewViewCount;
- uint32_t maxMultiviewInstanceIndex;
- VkBool32 protectedNoFault;
- uint32_t maxPerSetDescriptors;
- VkDeviceSize maxMemoryAllocationSize;
-} VkPhysicalDeviceVulkan11Properties;
-
-typedef struct VkPhysicalDeviceVulkan12Features {
- VkStructureType sType;
- void* pNext;
- VkBool32 samplerMirrorClampToEdge;
- VkBool32 drawIndirectCount;
- VkBool32 storageBuffer8BitAccess;
- VkBool32 uniformAndStorageBuffer8BitAccess;
- VkBool32 storagePushConstant8;
- VkBool32 shaderBufferInt64Atomics;
- VkBool32 shaderSharedInt64Atomics;
- VkBool32 shaderFloat16;
- VkBool32 shaderInt8;
- VkBool32 descriptorIndexing;
- VkBool32 shaderInputAttachmentArrayDynamicIndexing;
- VkBool32 shaderUniformTexelBufferArrayDynamicIndexing;
- VkBool32 shaderStorageTexelBufferArrayDynamicIndexing;
- VkBool32 shaderUniformBufferArrayNonUniformIndexing;
- VkBool32 shaderSampledImageArrayNonUniformIndexing;
- VkBool32 shaderStorageBufferArrayNonUniformIndexing;
- VkBool32 shaderStorageImageArrayNonUniformIndexing;
- VkBool32 shaderInputAttachmentArrayNonUniformIndexing;
- VkBool32 shaderUniformTexelBufferArrayNonUniformIndexing;
- VkBool32 shaderStorageTexelBufferArrayNonUniformIndexing;
- VkBool32 descriptorBindingUniformBufferUpdateAfterBind;
- VkBool32 descriptorBindingSampledImageUpdateAfterBind;
- VkBool32 descriptorBindingStorageImageUpdateAfterBind;
- VkBool32 descriptorBindingStorageBufferUpdateAfterBind;
- VkBool32 descriptorBindingUniformTexelBufferUpdateAfterBind;
- VkBool32 descriptorBindingStorageTexelBufferUpdateAfterBind;
- VkBool32 descriptorBindingUpdateUnusedWhilePending;
- VkBool32 descriptorBindingPartiallyBound;
- VkBool32 descriptorBindingVariableDescriptorCount;
- VkBool32 runtimeDescriptorArray;
- VkBool32 samplerFilterMinmax;
- VkBool32 scalarBlockLayout;
- VkBool32 imagelessFramebuffer;
- VkBool32 uniformBufferStandardLayout;
- VkBool32 shaderSubgroupExtendedTypes;
- VkBool32 separateDepthStencilLayouts;
- VkBool32 hostQueryReset;
- VkBool32 timelineSemaphore;
- VkBool32 bufferDeviceAddress;
- VkBool32 bufferDeviceAddressCaptureReplay;
- VkBool32 bufferDeviceAddressMultiDevice;
- VkBool32 vulkanMemoryModel;
- VkBool32 vulkanMemoryModelDeviceScope;
- VkBool32 vulkanMemoryModelAvailabilityVisibilityChains;
- VkBool32 shaderOutputViewportIndex;
- VkBool32 shaderOutputLayer;
- VkBool32 subgroupBroadcastDynamicId;
-} VkPhysicalDeviceVulkan12Features;
-
-typedef struct VkConformanceVersion {
- uint8_t major;
- uint8_t minor;
- uint8_t subminor;
- uint8_t patch;
-} VkConformanceVersion;
-
-typedef struct VkPhysicalDeviceVulkan12Properties {
- VkStructureType sType;
- void* pNext;
- VkDriverId driverID;
- char driverName[VK_MAX_DRIVER_NAME_SIZE];
- char driverInfo[VK_MAX_DRIVER_INFO_SIZE];
- VkConformanceVersion conformanceVersion;
- VkShaderFloatControlsIndependence denormBehaviorIndependence;
- VkShaderFloatControlsIndependence roundingModeIndependence;
- VkBool32 shaderSignedZeroInfNanPreserveFloat16;
- VkBool32 shaderSignedZeroInfNanPreserveFloat32;
- VkBool32 shaderSignedZeroInfNanPreserveFloat64;
- VkBool32 shaderDenormPreserveFloat16;
- VkBool32 shaderDenormPreserveFloat32;
- VkBool32 shaderDenormPreserveFloat64;
- VkBool32 shaderDenormFlushToZeroFloat16;
- VkBool32 shaderDenormFlushToZeroFloat32;
- VkBool32 shaderDenormFlushToZeroFloat64;
- VkBool32 shaderRoundingModeRTEFloat16;
- VkBool32 shaderRoundingModeRTEFloat32;
- VkBool32 shaderRoundingModeRTEFloat64;
- VkBool32 shaderRoundingModeRTZFloat16;
- VkBool32 shaderRoundingModeRTZFloat32;
- VkBool32 shaderRoundingModeRTZFloat64;
- uint32_t maxUpdateAfterBindDescriptorsInAllPools;
- VkBool32 shaderUniformBufferArrayNonUniformIndexingNative;
- VkBool32 shaderSampledImageArrayNonUniformIndexingNative;
- VkBool32 shaderStorageBufferArrayNonUniformIndexingNative;
- VkBool32 shaderStorageImageArrayNonUniformIndexingNative;
- VkBool32 shaderInputAttachmentArrayNonUniformIndexingNative;
- VkBool32 robustBufferAccessUpdateAfterBind;
- VkBool32 quadDivergentImplicitLod;
- uint32_t maxPerStageDescriptorUpdateAfterBindSamplers;
- uint32_t maxPerStageDescriptorUpdateAfterBindUniformBuffers;
- uint32_t maxPerStageDescriptorUpdateAfterBindStorageBuffers;
- uint32_t maxPerStageDescriptorUpdateAfterBindSampledImages;
- uint32_t maxPerStageDescriptorUpdateAfterBindStorageImages;
- uint32_t maxPerStageDescriptorUpdateAfterBindInputAttachments;
- uint32_t maxPerStageUpdateAfterBindResources;
- uint32_t maxDescriptorSetUpdateAfterBindSamplers;
- uint32_t maxDescriptorSetUpdateAfterBindUniformBuffers;
- uint32_t maxDescriptorSetUpdateAfterBindUniformBuffersDynamic;
- uint32_t maxDescriptorSetUpdateAfterBindStorageBuffers;
- uint32_t maxDescriptorSetUpdateAfterBindStorageBuffersDynamic;
- uint32_t maxDescriptorSetUpdateAfterBindSampledImages;
- uint32_t maxDescriptorSetUpdateAfterBindStorageImages;
- uint32_t maxDescriptorSetUpdateAfterBindInputAttachments;
- VkResolveModeFlags supportedDepthResolveModes;
- VkResolveModeFlags supportedStencilResolveModes;
- VkBool32 independentResolveNone;
- VkBool32 independentResolve;
- VkBool32 filterMinmaxSingleComponentFormats;
- VkBool32 filterMinmaxImageComponentMapping;
- uint64_t maxTimelineSemaphoreValueDifference;
- VkSampleCountFlags framebufferIntegerColorSampleCounts;
-} VkPhysicalDeviceVulkan12Properties;
-
-typedef struct VkImageFormatListCreateInfo {
- VkStructureType sType;
- const void* pNext;
- uint32_t viewFormatCount;
- const VkFormat* pViewFormats;
-} VkImageFormatListCreateInfo;
-
-typedef struct VkAttachmentDescription2 {
- VkStructureType sType;
- const void* pNext;
- VkAttachmentDescriptionFlags flags;
- VkFormat format;
- VkSampleCountFlagBits samples;
- VkAttachmentLoadOp loadOp;
- VkAttachmentStoreOp storeOp;
- VkAttachmentLoadOp stencilLoadOp;
- VkAttachmentStoreOp stencilStoreOp;
- VkImageLayout initialLayout;
- VkImageLayout finalLayout;
-} VkAttachmentDescription2;
-
-typedef struct VkAttachmentReference2 {
- VkStructureType sType;
- const void* pNext;
- uint32_t attachment;
- VkImageLayout layout;
- VkImageAspectFlags aspectMask;
-} VkAttachmentReference2;
-
-typedef struct VkSubpassDescription2 {
- VkStructureType sType;
- const void* pNext;
- VkSubpassDescriptionFlags flags;
- VkPipelineBindPoint pipelineBindPoint;
- uint32_t viewMask;
- uint32_t inputAttachmentCount;
- const VkAttachmentReference2* pInputAttachments;
- uint32_t colorAttachmentCount;
- const VkAttachmentReference2* pColorAttachments;
- const VkAttachmentReference2* pResolveAttachments;
- const VkAttachmentReference2* pDepthStencilAttachment;
- uint32_t preserveAttachmentCount;
- const uint32_t* pPreserveAttachments;
-} VkSubpassDescription2;
-
-typedef struct VkSubpassDependency2 {
- VkStructureType sType;
- const void* pNext;
- uint32_t srcSubpass;
- uint32_t dstSubpass;
- VkPipelineStageFlags srcStageMask;
- VkPipelineStageFlags dstStageMask;
- VkAccessFlags srcAccessMask;
- VkAccessFlags dstAccessMask;
- VkDependencyFlags dependencyFlags;
- int32_t viewOffset;
-} VkSubpassDependency2;
-
-typedef struct VkRenderPassCreateInfo2 {
- VkStructureType sType;
- const void* pNext;
- VkRenderPassCreateFlags flags;
- uint32_t attachmentCount;
- const VkAttachmentDescription2* pAttachments;
- uint32_t subpassCount;
- const VkSubpassDescription2* pSubpasses;
- uint32_t dependencyCount;
- const VkSubpassDependency2* pDependencies;
- uint32_t correlatedViewMaskCount;
- const uint32_t* pCorrelatedViewMasks;
-} VkRenderPassCreateInfo2;
-
-typedef struct VkSubpassBeginInfo {
- VkStructureType sType;
- const void* pNext;
- VkSubpassContents contents;
-} VkSubpassBeginInfo;
-
-typedef struct VkSubpassEndInfo {
- VkStructureType sType;
- const void* pNext;
-} VkSubpassEndInfo;
-
-typedef struct VkPhysicalDevice8BitStorageFeatures {
- VkStructureType sType;
- void* pNext;
- VkBool32 storageBuffer8BitAccess;
- VkBool32 uniformAndStorageBuffer8BitAccess;
- VkBool32 storagePushConstant8;
-} VkPhysicalDevice8BitStorageFeatures;
-
-typedef struct VkPhysicalDeviceDriverProperties {
- VkStructureType sType;
- void* pNext;
- VkDriverId driverID;
- char driverName[VK_MAX_DRIVER_NAME_SIZE];
- char driverInfo[VK_MAX_DRIVER_INFO_SIZE];
- VkConformanceVersion conformanceVersion;
-} VkPhysicalDeviceDriverProperties;
-
-typedef struct VkPhysicalDeviceShaderAtomicInt64Features {
- VkStructureType sType;
- void* pNext;
- VkBool32 shaderBufferInt64Atomics;
- VkBool32 shaderSharedInt64Atomics;
-} VkPhysicalDeviceShaderAtomicInt64Features;
-
-typedef struct VkPhysicalDeviceShaderFloat16Int8Features {
- VkStructureType sType;
- void* pNext;
- VkBool32 shaderFloat16;
- VkBool32 shaderInt8;
-} VkPhysicalDeviceShaderFloat16Int8Features;
-
-typedef struct VkPhysicalDeviceFloatControlsProperties {
- VkStructureType sType;
- void* pNext;
- VkShaderFloatControlsIndependence denormBehaviorIndependence;
- VkShaderFloatControlsIndependence roundingModeIndependence;
- VkBool32 shaderSignedZeroInfNanPreserveFloat16;
- VkBool32 shaderSignedZeroInfNanPreserveFloat32;
- VkBool32 shaderSignedZeroInfNanPreserveFloat64;
- VkBool32 shaderDenormPreserveFloat16;
- VkBool32 shaderDenormPreserveFloat32;
- VkBool32 shaderDenormPreserveFloat64;
- VkBool32 shaderDenormFlushToZeroFloat16;
- VkBool32 shaderDenormFlushToZeroFloat32;
- VkBool32 shaderDenormFlushToZeroFloat64;
- VkBool32 shaderRoundingModeRTEFloat16;
- VkBool32 shaderRoundingModeRTEFloat32;
- VkBool32 shaderRoundingModeRTEFloat64;
- VkBool32 shaderRoundingModeRTZFloat16;
- VkBool32 shaderRoundingModeRTZFloat32;
- VkBool32 shaderRoundingModeRTZFloat64;
-} VkPhysicalDeviceFloatControlsProperties;
-
-typedef struct VkDescriptorSetLayoutBindingFlagsCreateInfo {
- VkStructureType sType;
- const void* pNext;
- uint32_t bindingCount;
- const VkDescriptorBindingFlags* pBindingFlags;
-} VkDescriptorSetLayoutBindingFlagsCreateInfo;
-
-typedef struct VkPhysicalDeviceDescriptorIndexingFeatures {
- VkStructureType sType;
- void* pNext;
- VkBool32 shaderInputAttachmentArrayDynamicIndexing;
- VkBool32 shaderUniformTexelBufferArrayDynamicIndexing;
- VkBool32 shaderStorageTexelBufferArrayDynamicIndexing;
- VkBool32 shaderUniformBufferArrayNonUniformIndexing;
- VkBool32 shaderSampledImageArrayNonUniformIndexing;
- VkBool32 shaderStorageBufferArrayNonUniformIndexing;
- VkBool32 shaderStorageImageArrayNonUniformIndexing;
- VkBool32 shaderInputAttachmentArrayNonUniformIndexing;
- VkBool32 shaderUniformTexelBufferArrayNonUniformIndexing;
- VkBool32 shaderStorageTexelBufferArrayNonUniformIndexing;
- VkBool32 descriptorBindingUniformBufferUpdateAfterBind;
- VkBool32 descriptorBindingSampledImageUpdateAfterBind;
- VkBool32 descriptorBindingStorageImageUpdateAfterBind;
- VkBool32 descriptorBindingStorageBufferUpdateAfterBind;
- VkBool32 descriptorBindingUniformTexelBufferUpdateAfterBind;
- VkBool32 descriptorBindingStorageTexelBufferUpdateAfterBind;
- VkBool32 descriptorBindingUpdateUnusedWhilePending;
- VkBool32 descriptorBindingPartiallyBound;
- VkBool32 descriptorBindingVariableDescriptorCount;
- VkBool32 runtimeDescriptorArray;
-} VkPhysicalDeviceDescriptorIndexingFeatures;
-
-typedef struct VkPhysicalDeviceDescriptorIndexingProperties {
- VkStructureType sType;
- void* pNext;
- uint32_t maxUpdateAfterBindDescriptorsInAllPools;
- VkBool32 shaderUniformBufferArrayNonUniformIndexingNative;
- VkBool32 shaderSampledImageArrayNonUniformIndexingNative;
- VkBool32 shaderStorageBufferArrayNonUniformIndexingNative;
- VkBool32 shaderStorageImageArrayNonUniformIndexingNative;
- VkBool32 shaderInputAttachmentArrayNonUniformIndexingNative;
- VkBool32 robustBufferAccessUpdateAfterBind;
- VkBool32 quadDivergentImplicitLod;
- uint32_t maxPerStageDescriptorUpdateAfterBindSamplers;
- uint32_t maxPerStageDescriptorUpdateAfterBindUniformBuffers;
- uint32_t maxPerStageDescriptorUpdateAfterBindStorageBuffers;
- uint32_t maxPerStageDescriptorUpdateAfterBindSampledImages;
- uint32_t maxPerStageDescriptorUpdateAfterBindStorageImages;
- uint32_t maxPerStageDescriptorUpdateAfterBindInputAttachments;
- uint32_t maxPerStageUpdateAfterBindResources;
- uint32_t maxDescriptorSetUpdateAfterBindSamplers;
- uint32_t maxDescriptorSetUpdateAfterBindUniformBuffers;
- uint32_t maxDescriptorSetUpdateAfterBindUniformBuffersDynamic;
- uint32_t maxDescriptorSetUpdateAfterBindStorageBuffers;
- uint32_t maxDescriptorSetUpdateAfterBindStorageBuffersDynamic;
- uint32_t maxDescriptorSetUpdateAfterBindSampledImages;
- uint32_t maxDescriptorSetUpdateAfterBindStorageImages;
- uint32_t maxDescriptorSetUpdateAfterBindInputAttachments;
-} VkPhysicalDeviceDescriptorIndexingProperties;
-
-typedef struct VkDescriptorSetVariableDescriptorCountAllocateInfo {
- VkStructureType sType;
- const void* pNext;
- uint32_t descriptorSetCount;
- const uint32_t* pDescriptorCounts;
-} VkDescriptorSetVariableDescriptorCountAllocateInfo;
-
-typedef struct VkDescriptorSetVariableDescriptorCountLayoutSupport {
- VkStructureType sType;
- void* pNext;
- uint32_t maxVariableDescriptorCount;
-} VkDescriptorSetVariableDescriptorCountLayoutSupport;
-
-typedef struct VkSubpassDescriptionDepthStencilResolve {
- VkStructureType sType;
- const void* pNext;
- VkResolveModeFlagBits depthResolveMode;
- VkResolveModeFlagBits stencilResolveMode;
- const VkAttachmentReference2* pDepthStencilResolveAttachment;
-} VkSubpassDescriptionDepthStencilResolve;
-
-typedef struct VkPhysicalDeviceDepthStencilResolveProperties {
- VkStructureType sType;
- void* pNext;
- VkResolveModeFlags supportedDepthResolveModes;
- VkResolveModeFlags supportedStencilResolveModes;
- VkBool32 independentResolveNone;
- VkBool32 independentResolve;
-} VkPhysicalDeviceDepthStencilResolveProperties;
-
-typedef struct VkPhysicalDeviceScalarBlockLayoutFeatures {
- VkStructureType sType;
- void* pNext;
- VkBool32 scalarBlockLayout;
-} VkPhysicalDeviceScalarBlockLayoutFeatures;
-
-typedef struct VkImageStencilUsageCreateInfo {
- VkStructureType sType;
- const void* pNext;
- VkImageUsageFlags stencilUsage;
-} VkImageStencilUsageCreateInfo;
-
-typedef struct VkSamplerReductionModeCreateInfo {
- VkStructureType sType;
- const void* pNext;
- VkSamplerReductionMode reductionMode;
-} VkSamplerReductionModeCreateInfo;
-
-typedef struct VkPhysicalDeviceSamplerFilterMinmaxProperties {
- VkStructureType sType;
- void* pNext;
- VkBool32 filterMinmaxSingleComponentFormats;
- VkBool32 filterMinmaxImageComponentMapping;
-} VkPhysicalDeviceSamplerFilterMinmaxProperties;
-
-typedef struct VkPhysicalDeviceVulkanMemoryModelFeatures {
- VkStructureType sType;
- void* pNext;
- VkBool32 vulkanMemoryModel;
- VkBool32 vulkanMemoryModelDeviceScope;
- VkBool32 vulkanMemoryModelAvailabilityVisibilityChains;
-} VkPhysicalDeviceVulkanMemoryModelFeatures;
-
-typedef struct VkPhysicalDeviceImagelessFramebufferFeatures {
- VkStructureType sType;
- void* pNext;
- VkBool32 imagelessFramebuffer;
-} VkPhysicalDeviceImagelessFramebufferFeatures;
-
-typedef struct VkFramebufferAttachmentImageInfo {
- VkStructureType sType;
- const void* pNext;
- VkImageCreateFlags flags;
- VkImageUsageFlags usage;
- uint32_t width;
- uint32_t height;
- uint32_t layerCount;
- uint32_t viewFormatCount;
- const VkFormat* pViewFormats;
-} VkFramebufferAttachmentImageInfo;
-
-typedef struct VkFramebufferAttachmentsCreateInfo {
- VkStructureType sType;
- const void* pNext;
- uint32_t attachmentImageInfoCount;
- const VkFramebufferAttachmentImageInfo* pAttachmentImageInfos;
-} VkFramebufferAttachmentsCreateInfo;
-
-typedef struct VkRenderPassAttachmentBeginInfo {
- VkStructureType sType;
- const void* pNext;
- uint32_t attachmentCount;
- const VkImageView* pAttachments;
-} VkRenderPassAttachmentBeginInfo;
-
-typedef struct VkPhysicalDeviceUniformBufferStandardLayoutFeatures {
- VkStructureType sType;
- void* pNext;
- VkBool32 uniformBufferStandardLayout;
-} VkPhysicalDeviceUniformBufferStandardLayoutFeatures;
-
-typedef struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures {
- VkStructureType sType;
- void* pNext;
- VkBool32 shaderSubgroupExtendedTypes;
-} VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures;
-
-typedef struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures {
- VkStructureType sType;
- void* pNext;
- VkBool32 separateDepthStencilLayouts;
-} VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures;
-
-typedef struct VkAttachmentReferenceStencilLayout {
- VkStructureType sType;
- void* pNext;
- VkImageLayout stencilLayout;
-} VkAttachmentReferenceStencilLayout;
-
-typedef struct VkAttachmentDescriptionStencilLayout {
- VkStructureType sType;
- void* pNext;
- VkImageLayout stencilInitialLayout;
- VkImageLayout stencilFinalLayout;
-} VkAttachmentDescriptionStencilLayout;
-
-typedef struct VkPhysicalDeviceHostQueryResetFeatures {
- VkStructureType sType;
- void* pNext;
- VkBool32 hostQueryReset;
-} VkPhysicalDeviceHostQueryResetFeatures;
-
-typedef struct VkPhysicalDeviceTimelineSemaphoreFeatures {
- VkStructureType sType;
- void* pNext;
- VkBool32 timelineSemaphore;
-} VkPhysicalDeviceTimelineSemaphoreFeatures;
-
-typedef struct VkPhysicalDeviceTimelineSemaphoreProperties {
- VkStructureType sType;
- void* pNext;
- uint64_t maxTimelineSemaphoreValueDifference;
-} VkPhysicalDeviceTimelineSemaphoreProperties;
-
-typedef struct VkSemaphoreTypeCreateInfo {
- VkStructureType sType;
- const void* pNext;
- VkSemaphoreType semaphoreType;
- uint64_t initialValue;
-} VkSemaphoreTypeCreateInfo;
-
-typedef struct VkTimelineSemaphoreSubmitInfo {
- VkStructureType sType;
- const void* pNext;
- uint32_t waitSemaphoreValueCount;
- const uint64_t* pWaitSemaphoreValues;
- uint32_t signalSemaphoreValueCount;
- const uint64_t* pSignalSemaphoreValues;
-} VkTimelineSemaphoreSubmitInfo;
-
-typedef struct VkSemaphoreWaitInfo {
- VkStructureType sType;
- const void* pNext;
- VkSemaphoreWaitFlags flags;
- uint32_t semaphoreCount;
- const VkSemaphore* pSemaphores;
- const uint64_t* pValues;
-} VkSemaphoreWaitInfo;
-
-typedef struct VkSemaphoreSignalInfo {
- VkStructureType sType;
- const void* pNext;
- VkSemaphore semaphore;
- uint64_t value;
-} VkSemaphoreSignalInfo;
-
-typedef struct VkPhysicalDeviceBufferDeviceAddressFeatures {
- VkStructureType sType;
- void* pNext;
- VkBool32 bufferDeviceAddress;
- VkBool32 bufferDeviceAddressCaptureReplay;
- VkBool32 bufferDeviceAddressMultiDevice;
-} VkPhysicalDeviceBufferDeviceAddressFeatures;
-
-typedef struct VkBufferDeviceAddressInfo {
- VkStructureType sType;
- const void* pNext;
- VkBuffer buffer;
-} VkBufferDeviceAddressInfo;
-
-typedef struct VkBufferOpaqueCaptureAddressCreateInfo {
- VkStructureType sType;
- const void* pNext;
- uint64_t opaqueCaptureAddress;
-} VkBufferOpaqueCaptureAddressCreateInfo;
-
-typedef struct VkMemoryOpaqueCaptureAddressAllocateInfo {
- VkStructureType sType;
- const void* pNext;
- uint64_t opaqueCaptureAddress;
-} VkMemoryOpaqueCaptureAddressAllocateInfo;
-
-typedef struct VkDeviceMemoryOpaqueCaptureAddressInfo {
- VkStructureType sType;
- const void* pNext;
- VkDeviceMemory memory;
-} VkDeviceMemoryOpaqueCaptureAddressInfo;
-
-typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirectCount)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride);
-typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirectCount)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride);
-typedef VkResult (VKAPI_PTR *PFN_vkCreateRenderPass2)(VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass);
-typedef void (VKAPI_PTR *PFN_vkCmdBeginRenderPass2)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, const VkSubpassBeginInfo* pSubpassBeginInfo);
-typedef void (VKAPI_PTR *PFN_vkCmdNextSubpass2)(VkCommandBuffer commandBuffer, const VkSubpassBeginInfo* pSubpassBeginInfo, const VkSubpassEndInfo* pSubpassEndInfo);
-typedef void (VKAPI_PTR *PFN_vkCmdEndRenderPass2)(VkCommandBuffer commandBuffer, const VkSubpassEndInfo* pSubpassEndInfo);
-typedef void (VKAPI_PTR *PFN_vkResetQueryPool)(VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount);
-typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreCounterValue)(VkDevice device, VkSemaphore semaphore, uint64_t* pValue);
-typedef VkResult (VKAPI_PTR *PFN_vkWaitSemaphores)(VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, uint64_t timeout);
-typedef VkResult (VKAPI_PTR *PFN_vkSignalSemaphore)(VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo);
-typedef VkDeviceAddress (VKAPI_PTR *PFN_vkGetBufferDeviceAddress)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo);
-typedef uint64_t (VKAPI_PTR *PFN_vkGetBufferOpaqueCaptureAddress)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo);
-typedef uint64_t (VKAPI_PTR *PFN_vkGetDeviceMemoryOpaqueCaptureAddress)(VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectCount(
- VkCommandBuffer commandBuffer,
- VkBuffer buffer,
- VkDeviceSize offset,
- VkBuffer countBuffer,
- VkDeviceSize countBufferOffset,
- uint32_t maxDrawCount,
- uint32_t stride);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirectCount(
- VkCommandBuffer commandBuffer,
- VkBuffer buffer,
- VkDeviceSize offset,
- VkBuffer countBuffer,
- VkDeviceSize countBufferOffset,
- uint32_t maxDrawCount,
- uint32_t stride);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateRenderPass2(
- VkDevice device,
- const VkRenderPassCreateInfo2* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkRenderPass* pRenderPass);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderPass2(
- VkCommandBuffer commandBuffer,
- const VkRenderPassBeginInfo* pRenderPassBegin,
- const VkSubpassBeginInfo* pSubpassBeginInfo);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdNextSubpass2(
- VkCommandBuffer commandBuffer,
- const VkSubpassBeginInfo* pSubpassBeginInfo,
- const VkSubpassEndInfo* pSubpassEndInfo);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdEndRenderPass2(
- VkCommandBuffer commandBuffer,
- const VkSubpassEndInfo* pSubpassEndInfo);
-
-VKAPI_ATTR void VKAPI_CALL vkResetQueryPool(
- VkDevice device,
- VkQueryPool queryPool,
- uint32_t firstQuery,
- uint32_t queryCount);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreCounterValue(
- VkDevice device,
- VkSemaphore semaphore,
- uint64_t* pValue);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkWaitSemaphores(
- VkDevice device,
- const VkSemaphoreWaitInfo* pWaitInfo,
- uint64_t timeout);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkSignalSemaphore(
- VkDevice device,
- const VkSemaphoreSignalInfo* pSignalInfo);
-
-VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetBufferDeviceAddress(
- VkDevice device,
- const VkBufferDeviceAddressInfo* pInfo);
-
-VKAPI_ATTR uint64_t VKAPI_CALL vkGetBufferOpaqueCaptureAddress(
- VkDevice device,
- const VkBufferDeviceAddressInfo* pInfo);
-
-VKAPI_ATTR uint64_t VKAPI_CALL vkGetDeviceMemoryOpaqueCaptureAddress(
- VkDevice device,
- const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo);
-#endif
-
-
-#define VK_KHR_surface 1
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSurfaceKHR)
-#define VK_KHR_SURFACE_SPEC_VERSION 25
-#define VK_KHR_SURFACE_EXTENSION_NAME "VK_KHR_surface"
-
-typedef enum VkPresentModeKHR {
- VK_PRESENT_MODE_IMMEDIATE_KHR = 0,
- VK_PRESENT_MODE_MAILBOX_KHR = 1,
- VK_PRESENT_MODE_FIFO_KHR = 2,
- VK_PRESENT_MODE_FIFO_RELAXED_KHR = 3,
- VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR = 1000111000,
- VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR = 1000111001,
- VK_PRESENT_MODE_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkPresentModeKHR;
-
-typedef enum VkColorSpaceKHR {
- VK_COLOR_SPACE_SRGB_NONLINEAR_KHR = 0,
- VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT = 1000104001,
- VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT = 1000104002,
- VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT = 1000104003,
- VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT = 1000104004,
- VK_COLOR_SPACE_BT709_LINEAR_EXT = 1000104005,
- VK_COLOR_SPACE_BT709_NONLINEAR_EXT = 1000104006,
- VK_COLOR_SPACE_BT2020_LINEAR_EXT = 1000104007,
- VK_COLOR_SPACE_HDR10_ST2084_EXT = 1000104008,
- VK_COLOR_SPACE_DOLBYVISION_EXT = 1000104009,
- VK_COLOR_SPACE_HDR10_HLG_EXT = 1000104010,
- VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT = 1000104011,
- VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT = 1000104012,
- VK_COLOR_SPACE_PASS_THROUGH_EXT = 1000104013,
- VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT = 1000104014,
- VK_COLOR_SPACE_DISPLAY_NATIVE_AMD = 1000213000,
- VK_COLORSPACE_SRGB_NONLINEAR_KHR = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR,
- VK_COLOR_SPACE_DCI_P3_LINEAR_EXT = VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT,
- VK_COLOR_SPACE_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkColorSpaceKHR;
-
-typedef enum VkSurfaceTransformFlagBitsKHR {
- VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR = 0x00000001,
- VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = 0x00000002,
- VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = 0x00000004,
- VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = 0x00000008,
- VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR = 0x00000010,
- VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR = 0x00000020,
- VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR = 0x00000040,
- VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR = 0x00000080,
- VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR = 0x00000100,
- VK_SURFACE_TRANSFORM_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkSurfaceTransformFlagBitsKHR;
-
-typedef enum VkCompositeAlphaFlagBitsKHR {
- VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR = 0x00000001,
- VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = 0x00000002,
- VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = 0x00000004,
- VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR = 0x00000008,
- VK_COMPOSITE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkCompositeAlphaFlagBitsKHR;
-typedef VkFlags VkCompositeAlphaFlagsKHR;
-typedef VkFlags VkSurfaceTransformFlagsKHR;
-typedef struct VkSurfaceCapabilitiesKHR {
- uint32_t minImageCount;
- uint32_t maxImageCount;
- VkExtent2D currentExtent;
- VkExtent2D minImageExtent;
- VkExtent2D maxImageExtent;
- uint32_t maxImageArrayLayers;
- VkSurfaceTransformFlagsKHR supportedTransforms;
- VkSurfaceTransformFlagBitsKHR currentTransform;
- VkCompositeAlphaFlagsKHR supportedCompositeAlpha;
- VkImageUsageFlags supportedUsageFlags;
-} VkSurfaceCapabilitiesKHR;
-
-typedef struct VkSurfaceFormatKHR {
- VkFormat format;
- VkColorSpaceKHR colorSpace;
-} VkSurfaceFormatKHR;
-
-typedef void (VKAPI_PTR *PFN_vkDestroySurfaceKHR)(VkInstance instance, VkSurfaceKHR surface, const VkAllocationCallbacks* pAllocator);
-typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, VkSurfaceKHR surface, VkBool32* pSupported);
-typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities);
-typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceFormatsKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pSurfaceFormatCount, VkSurfaceFormatKHR* pSurfaceFormats);
-typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfacePresentModesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pPresentModeCount, VkPresentModeKHR* pPresentModes);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR void VKAPI_CALL vkDestroySurfaceKHR(
- VkInstance instance,
- VkSurfaceKHR surface,
- const VkAllocationCallbacks* pAllocator);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceSupportKHR(
- VkPhysicalDevice physicalDevice,
- uint32_t queueFamilyIndex,
- VkSurfaceKHR surface,
- VkBool32* pSupported);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
- VkPhysicalDevice physicalDevice,
- VkSurfaceKHR surface,
- VkSurfaceCapabilitiesKHR* pSurfaceCapabilities);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceFormatsKHR(
- VkPhysicalDevice physicalDevice,
- VkSurfaceKHR surface,
- uint32_t* pSurfaceFormatCount,
- VkSurfaceFormatKHR* pSurfaceFormats);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfacePresentModesKHR(
- VkPhysicalDevice physicalDevice,
- VkSurfaceKHR surface,
- uint32_t* pPresentModeCount,
- VkPresentModeKHR* pPresentModes);
-#endif
-
-
-#define VK_KHR_swapchain 1
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSwapchainKHR)
-#define VK_KHR_SWAPCHAIN_SPEC_VERSION 70
-#define VK_KHR_SWAPCHAIN_EXTENSION_NAME "VK_KHR_swapchain"
-
-typedef enum VkSwapchainCreateFlagBitsKHR {
- VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 0x00000001,
- VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR = 0x00000002,
- VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR = 0x00000004,
- VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkSwapchainCreateFlagBitsKHR;
-typedef VkFlags VkSwapchainCreateFlagsKHR;
-
-typedef enum VkDeviceGroupPresentModeFlagBitsKHR {
- VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR = 0x00000001,
- VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR = 0x00000002,
- VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR = 0x00000004,
- VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR = 0x00000008,
- VK_DEVICE_GROUP_PRESENT_MODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkDeviceGroupPresentModeFlagBitsKHR;
-typedef VkFlags VkDeviceGroupPresentModeFlagsKHR;
-typedef struct VkSwapchainCreateInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkSwapchainCreateFlagsKHR flags;
- VkSurfaceKHR surface;
- uint32_t minImageCount;
- VkFormat imageFormat;
- VkColorSpaceKHR imageColorSpace;
- VkExtent2D imageExtent;
- uint32_t imageArrayLayers;
- VkImageUsageFlags imageUsage;
- VkSharingMode imageSharingMode;
- uint32_t queueFamilyIndexCount;
- const uint32_t* pQueueFamilyIndices;
- VkSurfaceTransformFlagBitsKHR preTransform;
- VkCompositeAlphaFlagBitsKHR compositeAlpha;
- VkPresentModeKHR presentMode;
- VkBool32 clipped;
- VkSwapchainKHR oldSwapchain;
-} VkSwapchainCreateInfoKHR;
-
-typedef struct VkPresentInfoKHR {
- VkStructureType sType;
- const void* pNext;
- uint32_t waitSemaphoreCount;
- const VkSemaphore* pWaitSemaphores;
- uint32_t swapchainCount;
- const VkSwapchainKHR* pSwapchains;
- const uint32_t* pImageIndices;
- VkResult* pResults;
-} VkPresentInfoKHR;
-
-typedef struct VkImageSwapchainCreateInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkSwapchainKHR swapchain;
-} VkImageSwapchainCreateInfoKHR;
-
-typedef struct VkBindImageMemorySwapchainInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkSwapchainKHR swapchain;
- uint32_t imageIndex;
-} VkBindImageMemorySwapchainInfoKHR;
-
-typedef struct VkAcquireNextImageInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkSwapchainKHR swapchain;
- uint64_t timeout;
- VkSemaphore semaphore;
- VkFence fence;
- uint32_t deviceMask;
-} VkAcquireNextImageInfoKHR;
-
-typedef struct VkDeviceGroupPresentCapabilitiesKHR {
- VkStructureType sType;
- void* pNext;
- uint32_t presentMask[VK_MAX_DEVICE_GROUP_SIZE];
- VkDeviceGroupPresentModeFlagsKHR modes;
-} VkDeviceGroupPresentCapabilitiesKHR;
-
-typedef struct VkDeviceGroupPresentInfoKHR {
- VkStructureType sType;
- const void* pNext;
- uint32_t swapchainCount;
- const uint32_t* pDeviceMasks;
- VkDeviceGroupPresentModeFlagBitsKHR mode;
-} VkDeviceGroupPresentInfoKHR;
-
-typedef struct VkDeviceGroupSwapchainCreateInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkDeviceGroupPresentModeFlagsKHR modes;
-} VkDeviceGroupSwapchainCreateInfoKHR;
-
-typedef VkResult (VKAPI_PTR *PFN_vkCreateSwapchainKHR)(VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchain);
-typedef void (VKAPI_PTR *PFN_vkDestroySwapchainKHR)(VkDevice device, VkSwapchainKHR swapchain, const VkAllocationCallbacks* pAllocator);
-typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainImagesKHR)(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pSwapchainImageCount, VkImage* pSwapchainImages);
-typedef VkResult (VKAPI_PTR *PFN_vkAcquireNextImageKHR)(VkDevice device, VkSwapchainKHR swapchain, uint64_t timeout, VkSemaphore semaphore, VkFence fence, uint32_t* pImageIndex);
-typedef VkResult (VKAPI_PTR *PFN_vkQueuePresentKHR)(VkQueue queue, const VkPresentInfoKHR* pPresentInfo);
-typedef VkResult (VKAPI_PTR *PFN_vkGetDeviceGroupPresentCapabilitiesKHR)(VkDevice device, VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities);
-typedef VkResult (VKAPI_PTR *PFN_vkGetDeviceGroupSurfacePresentModesKHR)(VkDevice device, VkSurfaceKHR surface, VkDeviceGroupPresentModeFlagsKHR* pModes);
-typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDevicePresentRectanglesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pRectCount, VkRect2D* pRects);
-typedef VkResult (VKAPI_PTR *PFN_vkAcquireNextImage2KHR)(VkDevice device, const VkAcquireNextImageInfoKHR* pAcquireInfo, uint32_t* pImageIndex);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateSwapchainKHR(
- VkDevice device,
- const VkSwapchainCreateInfoKHR* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkSwapchainKHR* pSwapchain);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroySwapchainKHR(
- VkDevice device,
- VkSwapchainKHR swapchain,
- const VkAllocationCallbacks* pAllocator);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainImagesKHR(
- VkDevice device,
- VkSwapchainKHR swapchain,
- uint32_t* pSwapchainImageCount,
- VkImage* pSwapchainImages);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkAcquireNextImageKHR(
- VkDevice device,
- VkSwapchainKHR swapchain,
- uint64_t timeout,
- VkSemaphore semaphore,
- VkFence fence,
- uint32_t* pImageIndex);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkQueuePresentKHR(
- VkQueue queue,
- const VkPresentInfoKHR* pPresentInfo);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceGroupPresentCapabilitiesKHR(
- VkDevice device,
- VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceGroupSurfacePresentModesKHR(
- VkDevice device,
- VkSurfaceKHR surface,
- VkDeviceGroupPresentModeFlagsKHR* pModes);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDevicePresentRectanglesKHR(
- VkPhysicalDevice physicalDevice,
- VkSurfaceKHR surface,
- uint32_t* pRectCount,
- VkRect2D* pRects);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkAcquireNextImage2KHR(
- VkDevice device,
- const VkAcquireNextImageInfoKHR* pAcquireInfo,
- uint32_t* pImageIndex);
-#endif
-
-
-#define VK_KHR_display 1
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayKHR)
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayModeKHR)
-#define VK_KHR_DISPLAY_SPEC_VERSION 23
-#define VK_KHR_DISPLAY_EXTENSION_NAME "VK_KHR_display"
-typedef VkFlags VkDisplayModeCreateFlagsKHR;
-
-typedef enum VkDisplayPlaneAlphaFlagBitsKHR {
- VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR = 0x00000001,
- VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = 0x00000002,
- VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = 0x00000004,
- VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = 0x00000008,
- VK_DISPLAY_PLANE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkDisplayPlaneAlphaFlagBitsKHR;
-typedef VkFlags VkDisplayPlaneAlphaFlagsKHR;
-typedef VkFlags VkDisplaySurfaceCreateFlagsKHR;
-typedef struct VkDisplayModeParametersKHR {
- VkExtent2D visibleRegion;
- uint32_t refreshRate;
-} VkDisplayModeParametersKHR;
-
-typedef struct VkDisplayModeCreateInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkDisplayModeCreateFlagsKHR flags;
- VkDisplayModeParametersKHR parameters;
-} VkDisplayModeCreateInfoKHR;
-
-typedef struct VkDisplayModePropertiesKHR {
- VkDisplayModeKHR displayMode;
- VkDisplayModeParametersKHR parameters;
-} VkDisplayModePropertiesKHR;
-
-typedef struct VkDisplayPlaneCapabilitiesKHR {
- VkDisplayPlaneAlphaFlagsKHR supportedAlpha;
- VkOffset2D minSrcPosition;
- VkOffset2D maxSrcPosition;
- VkExtent2D minSrcExtent;
- VkExtent2D maxSrcExtent;
- VkOffset2D minDstPosition;
- VkOffset2D maxDstPosition;
- VkExtent2D minDstExtent;
- VkExtent2D maxDstExtent;
-} VkDisplayPlaneCapabilitiesKHR;
-
-typedef struct VkDisplayPlanePropertiesKHR {
- VkDisplayKHR currentDisplay;
- uint32_t currentStackIndex;
-} VkDisplayPlanePropertiesKHR;
-
-typedef struct VkDisplayPropertiesKHR {
- VkDisplayKHR display;
- const char* displayName;
- VkExtent2D physicalDimensions;
- VkExtent2D physicalResolution;
- VkSurfaceTransformFlagsKHR supportedTransforms;
- VkBool32 planeReorderPossible;
- VkBool32 persistentContent;
-} VkDisplayPropertiesKHR;
-
-typedef struct VkDisplaySurfaceCreateInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkDisplaySurfaceCreateFlagsKHR flags;
- VkDisplayModeKHR displayMode;
- uint32_t planeIndex;
- uint32_t planeStackIndex;
- VkSurfaceTransformFlagBitsKHR transform;
- float globalAlpha;
- VkDisplayPlaneAlphaFlagBitsKHR alphaMode;
- VkExtent2D imageExtent;
-} VkDisplaySurfaceCreateInfoKHR;
-
-typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPropertiesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPropertiesKHR* pProperties);
-typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPlanePropertiesKHR* pProperties);
-typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneSupportedDisplaysKHR)(VkPhysicalDevice physicalDevice, uint32_t planeIndex, uint32_t* pDisplayCount, VkDisplayKHR* pDisplays);
-typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayModePropertiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t* pPropertyCount, VkDisplayModePropertiesKHR* pProperties);
-typedef VkResult (VKAPI_PTR *PFN_vkCreateDisplayModeKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, const VkDisplayModeCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDisplayModeKHR* pMode);
-typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneCapabilitiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode, uint32_t planeIndex, VkDisplayPlaneCapabilitiesKHR* pCapabilities);
-typedef VkResult (VKAPI_PTR *PFN_vkCreateDisplayPlaneSurfaceKHR)(VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayPropertiesKHR(
- VkPhysicalDevice physicalDevice,
- uint32_t* pPropertyCount,
- VkDisplayPropertiesKHR* pProperties);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
- VkPhysicalDevice physicalDevice,
- uint32_t* pPropertyCount,
- VkDisplayPlanePropertiesKHR* pProperties);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayPlaneSupportedDisplaysKHR(
- VkPhysicalDevice physicalDevice,
- uint32_t planeIndex,
- uint32_t* pDisplayCount,
- VkDisplayKHR* pDisplays);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayModePropertiesKHR(
- VkPhysicalDevice physicalDevice,
- VkDisplayKHR display,
- uint32_t* pPropertyCount,
- VkDisplayModePropertiesKHR* pProperties);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateDisplayModeKHR(
- VkPhysicalDevice physicalDevice,
- VkDisplayKHR display,
- const VkDisplayModeCreateInfoKHR* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkDisplayModeKHR* pMode);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayPlaneCapabilitiesKHR(
- VkPhysicalDevice physicalDevice,
- VkDisplayModeKHR mode,
- uint32_t planeIndex,
- VkDisplayPlaneCapabilitiesKHR* pCapabilities);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateDisplayPlaneSurfaceKHR(
- VkInstance instance,
- const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkSurfaceKHR* pSurface);
-#endif
-
-
-#define VK_KHR_display_swapchain 1
-#define VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION 10
-#define VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME "VK_KHR_display_swapchain"
-typedef struct VkDisplayPresentInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkRect2D srcRect;
- VkRect2D dstRect;
- VkBool32 persistent;
-} VkDisplayPresentInfoKHR;
-
-typedef VkResult (VKAPI_PTR *PFN_vkCreateSharedSwapchainsKHR)(VkDevice device, uint32_t swapchainCount, const VkSwapchainCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchains);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateSharedSwapchainsKHR(
- VkDevice device,
- uint32_t swapchainCount,
- const VkSwapchainCreateInfoKHR* pCreateInfos,
- const VkAllocationCallbacks* pAllocator,
- VkSwapchainKHR* pSwapchains);
-#endif
-
-
-#define VK_KHR_sampler_mirror_clamp_to_edge 1
-#define VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION 3
-#define VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME "VK_KHR_sampler_mirror_clamp_to_edge"
-
-
-#define VK_KHR_dynamic_rendering 1
-#define VK_KHR_DYNAMIC_RENDERING_SPEC_VERSION 1
-#define VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME "VK_KHR_dynamic_rendering"
-
-typedef enum VkRenderingFlagBitsKHR {
- VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT_KHR = 0x00000001,
- VK_RENDERING_SUSPENDING_BIT_KHR = 0x00000002,
- VK_RENDERING_RESUMING_BIT_KHR = 0x00000004,
- VK_RENDERING_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkRenderingFlagBitsKHR;
-typedef VkFlags VkRenderingFlagsKHR;
-typedef struct VkRenderingAttachmentInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkImageView imageView;
- VkImageLayout imageLayout;
- VkResolveModeFlagBits resolveMode;
- VkImageView resolveImageView;
- VkImageLayout resolveImageLayout;
- VkAttachmentLoadOp loadOp;
- VkAttachmentStoreOp storeOp;
- VkClearValue clearValue;
-} VkRenderingAttachmentInfoKHR;
-
-typedef struct VkRenderingInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkRenderingFlagsKHR flags;
- VkRect2D renderArea;
- uint32_t layerCount;
- uint32_t viewMask;
- uint32_t colorAttachmentCount;
- const VkRenderingAttachmentInfoKHR* pColorAttachments;
- const VkRenderingAttachmentInfoKHR* pDepthAttachment;
- const VkRenderingAttachmentInfoKHR* pStencilAttachment;
-} VkRenderingInfoKHR;
-
-typedef struct VkPipelineRenderingCreateInfoKHR {
- VkStructureType sType;
- const void* pNext;
- uint32_t viewMask;
- uint32_t colorAttachmentCount;
- const VkFormat* pColorAttachmentFormats;
- VkFormat depthAttachmentFormat;
- VkFormat stencilAttachmentFormat;
-} VkPipelineRenderingCreateInfoKHR;
-
-typedef struct VkPhysicalDeviceDynamicRenderingFeaturesKHR {
- VkStructureType sType;
- void* pNext;
- VkBool32 dynamicRendering;
-} VkPhysicalDeviceDynamicRenderingFeaturesKHR;
-
-typedef struct VkCommandBufferInheritanceRenderingInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkRenderingFlagsKHR flags;
- uint32_t viewMask;
- uint32_t colorAttachmentCount;
- const VkFormat* pColorAttachmentFormats;
- VkFormat depthAttachmentFormat;
- VkFormat stencilAttachmentFormat;
- VkSampleCountFlagBits rasterizationSamples;
-} VkCommandBufferInheritanceRenderingInfoKHR;
-
-typedef struct VkRenderingFragmentShadingRateAttachmentInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkImageView imageView;
- VkImageLayout imageLayout;
- VkExtent2D shadingRateAttachmentTexelSize;
-} VkRenderingFragmentShadingRateAttachmentInfoKHR;
-
-typedef struct VkRenderingFragmentDensityMapAttachmentInfoEXT {
- VkStructureType sType;
- const void* pNext;
- VkImageView imageView;
- VkImageLayout imageLayout;
-} VkRenderingFragmentDensityMapAttachmentInfoEXT;
-
-typedef struct VkAttachmentSampleCountInfoAMD {
- VkStructureType sType;
- const void* pNext;
- uint32_t colorAttachmentCount;
- const VkSampleCountFlagBits* pColorAttachmentSamples;
- VkSampleCountFlagBits depthStencilAttachmentSamples;
-} VkAttachmentSampleCountInfoAMD;
-
-typedef VkAttachmentSampleCountInfoAMD VkAttachmentSampleCountInfoNV;
-
-typedef struct VkMultiviewPerViewAttributesInfoNVX {
- VkStructureType sType;
- const void* pNext;
- VkBool32 perViewAttributes;
- VkBool32 perViewAttributesPositionXOnly;
-} VkMultiviewPerViewAttributesInfoNVX;
-
-typedef void (VKAPI_PTR *PFN_vkCmdBeginRenderingKHR)(VkCommandBuffer commandBuffer, const VkRenderingInfoKHR* pRenderingInfo);
-typedef void (VKAPI_PTR *PFN_vkCmdEndRenderingKHR)(VkCommandBuffer commandBuffer);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderingKHR(
- VkCommandBuffer commandBuffer,
- const VkRenderingInfoKHR* pRenderingInfo);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdEndRenderingKHR(
- VkCommandBuffer commandBuffer);
-#endif
-
-
-#define VK_KHR_multiview 1
-#define VK_KHR_MULTIVIEW_SPEC_VERSION 1
-#define VK_KHR_MULTIVIEW_EXTENSION_NAME "VK_KHR_multiview"
-typedef VkRenderPassMultiviewCreateInfo VkRenderPassMultiviewCreateInfoKHR;
-
-typedef VkPhysicalDeviceMultiviewFeatures VkPhysicalDeviceMultiviewFeaturesKHR;
-
-typedef VkPhysicalDeviceMultiviewProperties VkPhysicalDeviceMultiviewPropertiesKHR;
-
-
-
-#define VK_KHR_get_physical_device_properties2 1
-#define VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION 2
-#define VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME "VK_KHR_get_physical_device_properties2"
-typedef VkPhysicalDeviceFeatures2 VkPhysicalDeviceFeatures2KHR;
-
-typedef VkPhysicalDeviceProperties2 VkPhysicalDeviceProperties2KHR;
-
-typedef VkFormatProperties2 VkFormatProperties2KHR;
-
-typedef VkImageFormatProperties2 VkImageFormatProperties2KHR;
-
-typedef VkPhysicalDeviceImageFormatInfo2 VkPhysicalDeviceImageFormatInfo2KHR;
-
-typedef VkQueueFamilyProperties2 VkQueueFamilyProperties2KHR;
-
-typedef VkPhysicalDeviceMemoryProperties2 VkPhysicalDeviceMemoryProperties2KHR;
-
-typedef VkSparseImageFormatProperties2 VkSparseImageFormatProperties2KHR;
-
-typedef VkPhysicalDeviceSparseImageFormatInfo2 VkPhysicalDeviceSparseImageFormatInfo2KHR;
-
-typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFeatures2KHR)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures);
-typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceProperties2KHR)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties);
-typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFormatProperties2KHR)(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2* pFormatProperties);
-typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceImageFormatProperties2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, VkImageFormatProperties2* pImageFormatProperties);
-typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR)(VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties2* pQueueFamilyProperties);
-typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMemoryProperties2KHR)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties);
-typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, uint32_t* pPropertyCount, VkSparseImageFormatProperties2* pProperties);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFeatures2KHR(
- VkPhysicalDevice physicalDevice,
- VkPhysicalDeviceFeatures2* pFeatures);
-
-VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceProperties2KHR(
- VkPhysicalDevice physicalDevice,
- VkPhysicalDeviceProperties2* pProperties);
-
-VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFormatProperties2KHR(
- VkPhysicalDevice physicalDevice,
- VkFormat format,
- VkFormatProperties2* pFormatProperties);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceImageFormatProperties2KHR(
- VkPhysicalDevice physicalDevice,
- const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
- VkImageFormatProperties2* pImageFormatProperties);
-
-VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyProperties2KHR(
- VkPhysicalDevice physicalDevice,
- uint32_t* pQueueFamilyPropertyCount,
- VkQueueFamilyProperties2* pQueueFamilyProperties);
-
-VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMemoryProperties2KHR(
- VkPhysicalDevice physicalDevice,
- VkPhysicalDeviceMemoryProperties2* pMemoryProperties);
-
-VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
- VkPhysicalDevice physicalDevice,
- const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
- uint32_t* pPropertyCount,
- VkSparseImageFormatProperties2* pProperties);
-#endif
-
-
-#define VK_KHR_device_group 1
-#define VK_KHR_DEVICE_GROUP_SPEC_VERSION 4
-#define VK_KHR_DEVICE_GROUP_EXTENSION_NAME "VK_KHR_device_group"
-typedef VkPeerMemoryFeatureFlags VkPeerMemoryFeatureFlagsKHR;
-
-typedef VkPeerMemoryFeatureFlagBits VkPeerMemoryFeatureFlagBitsKHR;
-
-typedef VkMemoryAllocateFlags VkMemoryAllocateFlagsKHR;
-
-typedef VkMemoryAllocateFlagBits VkMemoryAllocateFlagBitsKHR;
-
-typedef VkMemoryAllocateFlagsInfo VkMemoryAllocateFlagsInfoKHR;
-
-typedef VkDeviceGroupRenderPassBeginInfo VkDeviceGroupRenderPassBeginInfoKHR;
-
-typedef VkDeviceGroupCommandBufferBeginInfo VkDeviceGroupCommandBufferBeginInfoKHR;
-
-typedef VkDeviceGroupSubmitInfo VkDeviceGroupSubmitInfoKHR;
-
-typedef VkDeviceGroupBindSparseInfo VkDeviceGroupBindSparseInfoKHR;
-
-typedef VkBindBufferMemoryDeviceGroupInfo VkBindBufferMemoryDeviceGroupInfoKHR;
-
-typedef VkBindImageMemoryDeviceGroupInfo VkBindImageMemoryDeviceGroupInfoKHR;
-
-typedef void (VKAPI_PTR *PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR)(VkDevice device, uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, VkPeerMemoryFeatureFlags* pPeerMemoryFeatures);
-typedef void (VKAPI_PTR *PFN_vkCmdSetDeviceMaskKHR)(VkCommandBuffer commandBuffer, uint32_t deviceMask);
-typedef void (VKAPI_PTR *PFN_vkCmdDispatchBaseKHR)(VkCommandBuffer commandBuffer, uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR void VKAPI_CALL vkGetDeviceGroupPeerMemoryFeaturesKHR(
- VkDevice device,
- uint32_t heapIndex,
- uint32_t localDeviceIndex,
- uint32_t remoteDeviceIndex,
- VkPeerMemoryFeatureFlags* pPeerMemoryFeatures);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdSetDeviceMaskKHR(
- VkCommandBuffer commandBuffer,
- uint32_t deviceMask);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdDispatchBaseKHR(
- VkCommandBuffer commandBuffer,
- uint32_t baseGroupX,
- uint32_t baseGroupY,
- uint32_t baseGroupZ,
- uint32_t groupCountX,
- uint32_t groupCountY,
- uint32_t groupCountZ);
-#endif
-
-
-#define VK_KHR_shader_draw_parameters 1
-#define VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION 1
-#define VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME "VK_KHR_shader_draw_parameters"
-
-
-#define VK_KHR_maintenance1 1
-#define VK_KHR_MAINTENANCE_1_SPEC_VERSION 2
-#define VK_KHR_MAINTENANCE_1_EXTENSION_NAME "VK_KHR_maintenance1"
-#define VK_KHR_MAINTENANCE1_SPEC_VERSION VK_KHR_MAINTENANCE_1_SPEC_VERSION
-#define VK_KHR_MAINTENANCE1_EXTENSION_NAME VK_KHR_MAINTENANCE_1_EXTENSION_NAME
-typedef VkCommandPoolTrimFlags VkCommandPoolTrimFlagsKHR;
-
-typedef void (VKAPI_PTR *PFN_vkTrimCommandPoolKHR)(VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR void VKAPI_CALL vkTrimCommandPoolKHR(
- VkDevice device,
- VkCommandPool commandPool,
- VkCommandPoolTrimFlags flags);
-#endif
-
-
-#define VK_KHR_device_group_creation 1
-#define VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION 1
-#define VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME "VK_KHR_device_group_creation"
-#define VK_MAX_DEVICE_GROUP_SIZE_KHR VK_MAX_DEVICE_GROUP_SIZE
-typedef VkPhysicalDeviceGroupProperties VkPhysicalDeviceGroupPropertiesKHR;
-
-typedef VkDeviceGroupDeviceCreateInfo VkDeviceGroupDeviceCreateInfoKHR;
-
-typedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDeviceGroupsKHR)(VkInstance instance, uint32_t* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDeviceGroupsKHR(
- VkInstance instance,
- uint32_t* pPhysicalDeviceGroupCount,
- VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties);
-#endif
-
-
-#define VK_KHR_external_memory_capabilities 1
-#define VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION 1
-#define VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME "VK_KHR_external_memory_capabilities"
-#define VK_LUID_SIZE_KHR VK_LUID_SIZE
-typedef VkExternalMemoryHandleTypeFlags VkExternalMemoryHandleTypeFlagsKHR;
-
-typedef VkExternalMemoryHandleTypeFlagBits VkExternalMemoryHandleTypeFlagBitsKHR;
-
-typedef VkExternalMemoryFeatureFlags VkExternalMemoryFeatureFlagsKHR;
-
-typedef VkExternalMemoryFeatureFlagBits VkExternalMemoryFeatureFlagBitsKHR;
-
-typedef VkExternalMemoryProperties VkExternalMemoryPropertiesKHR;
-
-typedef VkPhysicalDeviceExternalImageFormatInfo VkPhysicalDeviceExternalImageFormatInfoKHR;
-
-typedef VkExternalImageFormatProperties VkExternalImageFormatPropertiesKHR;
-
-typedef VkPhysicalDeviceExternalBufferInfo VkPhysicalDeviceExternalBufferInfoKHR;
-
-typedef VkExternalBufferProperties VkExternalBufferPropertiesKHR;
-
-typedef VkPhysicalDeviceIDProperties VkPhysicalDeviceIDPropertiesKHR;
-
-typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalBufferPropertiesKHR(
- VkPhysicalDevice physicalDevice,
- const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
- VkExternalBufferProperties* pExternalBufferProperties);
-#endif
-
-
-#define VK_KHR_external_memory 1
-#define VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION 1
-#define VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME "VK_KHR_external_memory"
-#define VK_QUEUE_FAMILY_EXTERNAL_KHR VK_QUEUE_FAMILY_EXTERNAL
-typedef VkExternalMemoryImageCreateInfo VkExternalMemoryImageCreateInfoKHR;
-
-typedef VkExternalMemoryBufferCreateInfo VkExternalMemoryBufferCreateInfoKHR;
-
-typedef VkExportMemoryAllocateInfo VkExportMemoryAllocateInfoKHR;
-
-
-
-#define VK_KHR_external_memory_fd 1
-#define VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION 1
-#define VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME "VK_KHR_external_memory_fd"
-typedef struct VkImportMemoryFdInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkExternalMemoryHandleTypeFlagBits handleType;
- int fd;
-} VkImportMemoryFdInfoKHR;
-
-typedef struct VkMemoryFdPropertiesKHR {
- VkStructureType sType;
- void* pNext;
- uint32_t memoryTypeBits;
-} VkMemoryFdPropertiesKHR;
-
-typedef struct VkMemoryGetFdInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkDeviceMemory memory;
- VkExternalMemoryHandleTypeFlagBits handleType;
-} VkMemoryGetFdInfoKHR;
-
-typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryFdKHR)(VkDevice device, const VkMemoryGetFdInfoKHR* pGetFdInfo, int* pFd);
-typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryFdPropertiesKHR)(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, int fd, VkMemoryFdPropertiesKHR* pMemoryFdProperties);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryFdKHR(
- VkDevice device,
- const VkMemoryGetFdInfoKHR* pGetFdInfo,
- int* pFd);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryFdPropertiesKHR(
- VkDevice device,
- VkExternalMemoryHandleTypeFlagBits handleType,
- int fd,
- VkMemoryFdPropertiesKHR* pMemoryFdProperties);
-#endif
-
-
-#define VK_KHR_external_semaphore_capabilities 1
-#define VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION 1
-#define VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME "VK_KHR_external_semaphore_capabilities"
-typedef VkExternalSemaphoreHandleTypeFlags VkExternalSemaphoreHandleTypeFlagsKHR;
-
-typedef VkExternalSemaphoreHandleTypeFlagBits VkExternalSemaphoreHandleTypeFlagBitsKHR;
-
-typedef VkExternalSemaphoreFeatureFlags VkExternalSemaphoreFeatureFlagsKHR;
-
-typedef VkExternalSemaphoreFeatureFlagBits VkExternalSemaphoreFeatureFlagBitsKHR;
-
-typedef VkPhysicalDeviceExternalSemaphoreInfo VkPhysicalDeviceExternalSemaphoreInfoKHR;
-
-typedef VkExternalSemaphoreProperties VkExternalSemaphorePropertiesKHR;
-
-typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
- VkPhysicalDevice physicalDevice,
- const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
- VkExternalSemaphoreProperties* pExternalSemaphoreProperties);
-#endif
-
-
-#define VK_KHR_external_semaphore 1
-#define VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION 1
-#define VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME "VK_KHR_external_semaphore"
-typedef VkSemaphoreImportFlags VkSemaphoreImportFlagsKHR;
-
-typedef VkSemaphoreImportFlagBits VkSemaphoreImportFlagBitsKHR;
-
-typedef VkExportSemaphoreCreateInfo VkExportSemaphoreCreateInfoKHR;
-
-
-
-#define VK_KHR_external_semaphore_fd 1
-#define VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION 1
-#define VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME "VK_KHR_external_semaphore_fd"
-typedef struct VkImportSemaphoreFdInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkSemaphore semaphore;
- VkSemaphoreImportFlags flags;
- VkExternalSemaphoreHandleTypeFlagBits handleType;
- int fd;
-} VkImportSemaphoreFdInfoKHR;
-
-typedef struct VkSemaphoreGetFdInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkSemaphore semaphore;
- VkExternalSemaphoreHandleTypeFlagBits handleType;
-} VkSemaphoreGetFdInfoKHR;
-
-typedef VkResult (VKAPI_PTR *PFN_vkImportSemaphoreFdKHR)(VkDevice device, const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo);
-typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreFdKHR)(VkDevice device, const VkSemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkImportSemaphoreFdKHR(
- VkDevice device,
- const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreFdKHR(
- VkDevice device,
- const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
- int* pFd);
-#endif
-
-
-#define VK_KHR_push_descriptor 1
-#define VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION 2
-#define VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME "VK_KHR_push_descriptor"
-typedef struct VkPhysicalDevicePushDescriptorPropertiesKHR {
- VkStructureType sType;
- void* pNext;
- uint32_t maxPushDescriptors;
-} VkPhysicalDevicePushDescriptorPropertiesKHR;
-
-typedef void (VKAPI_PTR *PFN_vkCmdPushDescriptorSetKHR)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites);
-typedef void (VKAPI_PTR *PFN_vkCmdPushDescriptorSetWithTemplateKHR)(VkCommandBuffer commandBuffer, VkDescriptorUpdateTemplate descriptorUpdateTemplate, VkPipelineLayout layout, uint32_t set, const void* pData);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR void VKAPI_CALL vkCmdPushDescriptorSetKHR(
- VkCommandBuffer commandBuffer,
- VkPipelineBindPoint pipelineBindPoint,
- VkPipelineLayout layout,
- uint32_t set,
- uint32_t descriptorWriteCount,
- const VkWriteDescriptorSet* pDescriptorWrites);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdPushDescriptorSetWithTemplateKHR(
- VkCommandBuffer commandBuffer,
- VkDescriptorUpdateTemplate descriptorUpdateTemplate,
- VkPipelineLayout layout,
- uint32_t set,
- const void* pData);
-#endif
-
-
-#define VK_KHR_shader_float16_int8 1
-#define VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION 1
-#define VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME "VK_KHR_shader_float16_int8"
-typedef VkPhysicalDeviceShaderFloat16Int8Features VkPhysicalDeviceShaderFloat16Int8FeaturesKHR;
-
-typedef VkPhysicalDeviceShaderFloat16Int8Features VkPhysicalDeviceFloat16Int8FeaturesKHR;
-
-
-
-#define VK_KHR_16bit_storage 1
-#define VK_KHR_16BIT_STORAGE_SPEC_VERSION 1
-#define VK_KHR_16BIT_STORAGE_EXTENSION_NAME "VK_KHR_16bit_storage"
-typedef VkPhysicalDevice16BitStorageFeatures VkPhysicalDevice16BitStorageFeaturesKHR;
-
-
-
-#define VK_KHR_incremental_present 1
-#define VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION 2
-#define VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME "VK_KHR_incremental_present"
-typedef struct VkRectLayerKHR {
- VkOffset2D offset;
- VkExtent2D extent;
- uint32_t layer;
-} VkRectLayerKHR;
-
-typedef struct VkPresentRegionKHR {
- uint32_t rectangleCount;
- const VkRectLayerKHR* pRectangles;
-} VkPresentRegionKHR;
-
-typedef struct VkPresentRegionsKHR {
- VkStructureType sType;
- const void* pNext;
- uint32_t swapchainCount;
- const VkPresentRegionKHR* pRegions;
-} VkPresentRegionsKHR;
-
-
-
-#define VK_KHR_descriptor_update_template 1
-typedef VkDescriptorUpdateTemplate VkDescriptorUpdateTemplateKHR;
-
-#define VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION 1
-#define VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME "VK_KHR_descriptor_update_template"
-typedef VkDescriptorUpdateTemplateType VkDescriptorUpdateTemplateTypeKHR;
-
-typedef VkDescriptorUpdateTemplateCreateFlags VkDescriptorUpdateTemplateCreateFlagsKHR;
-
-typedef VkDescriptorUpdateTemplateEntry VkDescriptorUpdateTemplateEntryKHR;
-
-typedef VkDescriptorUpdateTemplateCreateInfo VkDescriptorUpdateTemplateCreateInfoKHR;
-
-typedef VkResult (VKAPI_PTR *PFN_vkCreateDescriptorUpdateTemplateKHR)(VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate);
-typedef void (VKAPI_PTR *PFN_vkDestroyDescriptorUpdateTemplateKHR)(VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator);
-typedef void (VKAPI_PTR *PFN_vkUpdateDescriptorSetWithTemplateKHR)(VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorUpdateTemplateKHR(
- VkDevice device,
- const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorUpdateTemplateKHR(
- VkDevice device,
- VkDescriptorUpdateTemplate descriptorUpdateTemplate,
- const VkAllocationCallbacks* pAllocator);
-
-VKAPI_ATTR void VKAPI_CALL vkUpdateDescriptorSetWithTemplateKHR(
- VkDevice device,
- VkDescriptorSet descriptorSet,
- VkDescriptorUpdateTemplate descriptorUpdateTemplate,
- const void* pData);
-#endif
-
-
-#define VK_KHR_imageless_framebuffer 1
-#define VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION 1
-#define VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME "VK_KHR_imageless_framebuffer"
-typedef VkPhysicalDeviceImagelessFramebufferFeatures VkPhysicalDeviceImagelessFramebufferFeaturesKHR;
-
-typedef VkFramebufferAttachmentsCreateInfo VkFramebufferAttachmentsCreateInfoKHR;
-
-typedef VkFramebufferAttachmentImageInfo VkFramebufferAttachmentImageInfoKHR;
-
-typedef VkRenderPassAttachmentBeginInfo VkRenderPassAttachmentBeginInfoKHR;
-
-
-
-#define VK_KHR_create_renderpass2 1
-#define VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION 1
-#define VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME "VK_KHR_create_renderpass2"
-typedef VkRenderPassCreateInfo2 VkRenderPassCreateInfo2KHR;
-
-typedef VkAttachmentDescription2 VkAttachmentDescription2KHR;
-
-typedef VkAttachmentReference2 VkAttachmentReference2KHR;
-
-typedef VkSubpassDescription2 VkSubpassDescription2KHR;
-
-typedef VkSubpassDependency2 VkSubpassDependency2KHR;
-
-typedef VkSubpassBeginInfo VkSubpassBeginInfoKHR;
-
-typedef VkSubpassEndInfo VkSubpassEndInfoKHR;
-
-typedef VkResult (VKAPI_PTR *PFN_vkCreateRenderPass2KHR)(VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass);
-typedef void (VKAPI_PTR *PFN_vkCmdBeginRenderPass2KHR)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, const VkSubpassBeginInfo* pSubpassBeginInfo);
-typedef void (VKAPI_PTR *PFN_vkCmdNextSubpass2KHR)(VkCommandBuffer commandBuffer, const VkSubpassBeginInfo* pSubpassBeginInfo, const VkSubpassEndInfo* pSubpassEndInfo);
-typedef void (VKAPI_PTR *PFN_vkCmdEndRenderPass2KHR)(VkCommandBuffer commandBuffer, const VkSubpassEndInfo* pSubpassEndInfo);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateRenderPass2KHR(
- VkDevice device,
- const VkRenderPassCreateInfo2* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkRenderPass* pRenderPass);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderPass2KHR(
- VkCommandBuffer commandBuffer,
- const VkRenderPassBeginInfo* pRenderPassBegin,
- const VkSubpassBeginInfo* pSubpassBeginInfo);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdNextSubpass2KHR(
- VkCommandBuffer commandBuffer,
- const VkSubpassBeginInfo* pSubpassBeginInfo,
- const VkSubpassEndInfo* pSubpassEndInfo);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdEndRenderPass2KHR(
- VkCommandBuffer commandBuffer,
- const VkSubpassEndInfo* pSubpassEndInfo);
-#endif
-
-
-#define VK_KHR_shared_presentable_image 1
-#define VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION 1
-#define VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME "VK_KHR_shared_presentable_image"
-typedef struct VkSharedPresentSurfaceCapabilitiesKHR {
- VkStructureType sType;
- void* pNext;
- VkImageUsageFlags sharedPresentSupportedUsageFlags;
-} VkSharedPresentSurfaceCapabilitiesKHR;
-
-typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainStatusKHR)(VkDevice device, VkSwapchainKHR swapchain);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainStatusKHR(
- VkDevice device,
- VkSwapchainKHR swapchain);
-#endif
-
-
-#define VK_KHR_external_fence_capabilities 1
-#define VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION 1
-#define VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME "VK_KHR_external_fence_capabilities"
-typedef VkExternalFenceHandleTypeFlags VkExternalFenceHandleTypeFlagsKHR;
-
-typedef VkExternalFenceHandleTypeFlagBits VkExternalFenceHandleTypeFlagBitsKHR;
-
-typedef VkExternalFenceFeatureFlags VkExternalFenceFeatureFlagsKHR;
-
-typedef VkExternalFenceFeatureFlagBits VkExternalFenceFeatureFlagBitsKHR;
-
-typedef VkPhysicalDeviceExternalFenceInfo VkPhysicalDeviceExternalFenceInfoKHR;
-
-typedef VkExternalFenceProperties VkExternalFencePropertiesKHR;
-
-typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalFencePropertiesKHR(
- VkPhysicalDevice physicalDevice,
- const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
- VkExternalFenceProperties* pExternalFenceProperties);
-#endif
-
-
-#define VK_KHR_external_fence 1
-#define VK_KHR_EXTERNAL_FENCE_SPEC_VERSION 1
-#define VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME "VK_KHR_external_fence"
-typedef VkFenceImportFlags VkFenceImportFlagsKHR;
-
-typedef VkFenceImportFlagBits VkFenceImportFlagBitsKHR;
-
-typedef VkExportFenceCreateInfo VkExportFenceCreateInfoKHR;
-
-
-
-#define VK_KHR_external_fence_fd 1
-#define VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION 1
-#define VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME "VK_KHR_external_fence_fd"
-typedef struct VkImportFenceFdInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkFence fence;
- VkFenceImportFlags flags;
- VkExternalFenceHandleTypeFlagBits handleType;
- int fd;
-} VkImportFenceFdInfoKHR;
-
-typedef struct VkFenceGetFdInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkFence fence;
- VkExternalFenceHandleTypeFlagBits handleType;
-} VkFenceGetFdInfoKHR;
-
-typedef VkResult (VKAPI_PTR *PFN_vkImportFenceFdKHR)(VkDevice device, const VkImportFenceFdInfoKHR* pImportFenceFdInfo);
-typedef VkResult (VKAPI_PTR *PFN_vkGetFenceFdKHR)(VkDevice device, const VkFenceGetFdInfoKHR* pGetFdInfo, int* pFd);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkImportFenceFdKHR(
- VkDevice device,
- const VkImportFenceFdInfoKHR* pImportFenceFdInfo);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetFenceFdKHR(
- VkDevice device,
- const VkFenceGetFdInfoKHR* pGetFdInfo,
- int* pFd);
-#endif
-
-
-#define VK_KHR_performance_query 1
-#define VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION 1
-#define VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME "VK_KHR_performance_query"
-
-typedef enum VkPerformanceCounterUnitKHR {
- VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR = 0,
- VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR = 1,
- VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR = 2,
- VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR = 3,
- VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR = 4,
- VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR = 5,
- VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR = 6,
- VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR = 7,
- VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR = 8,
- VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR = 9,
- VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR = 10,
- VK_PERFORMANCE_COUNTER_UNIT_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkPerformanceCounterUnitKHR;
-
-typedef enum VkPerformanceCounterScopeKHR {
- VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR = 0,
- VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR = 1,
- VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR = 2,
- VK_QUERY_SCOPE_COMMAND_BUFFER_KHR = VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR,
- VK_QUERY_SCOPE_RENDER_PASS_KHR = VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR,
- VK_QUERY_SCOPE_COMMAND_KHR = VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR,
- VK_PERFORMANCE_COUNTER_SCOPE_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkPerformanceCounterScopeKHR;
-
-typedef enum VkPerformanceCounterStorageKHR {
- VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR = 0,
- VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR = 1,
- VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR = 2,
- VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR = 3,
- VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR = 4,
- VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR = 5,
- VK_PERFORMANCE_COUNTER_STORAGE_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkPerformanceCounterStorageKHR;
-
-typedef enum VkPerformanceCounterDescriptionFlagBitsKHR {
- VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR = 0x00000001,
- VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR = 0x00000002,
- VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR = VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR,
- VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR = VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR,
- VK_PERFORMANCE_COUNTER_DESCRIPTION_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkPerformanceCounterDescriptionFlagBitsKHR;
-typedef VkFlags VkPerformanceCounterDescriptionFlagsKHR;
-
-typedef enum VkAcquireProfilingLockFlagBitsKHR {
- VK_ACQUIRE_PROFILING_LOCK_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkAcquireProfilingLockFlagBitsKHR;
-typedef VkFlags VkAcquireProfilingLockFlagsKHR;
-typedef struct VkPhysicalDevicePerformanceQueryFeaturesKHR {
- VkStructureType sType;
- void* pNext;
- VkBool32 performanceCounterQueryPools;
- VkBool32 performanceCounterMultipleQueryPools;
-} VkPhysicalDevicePerformanceQueryFeaturesKHR;
-
-typedef struct VkPhysicalDevicePerformanceQueryPropertiesKHR {
- VkStructureType sType;
- void* pNext;
- VkBool32 allowCommandBufferQueryCopies;
-} VkPhysicalDevicePerformanceQueryPropertiesKHR;
-
-typedef struct VkPerformanceCounterKHR {
- VkStructureType sType;
- void* pNext;
- VkPerformanceCounterUnitKHR unit;
- VkPerformanceCounterScopeKHR scope;
- VkPerformanceCounterStorageKHR storage;
- uint8_t uuid[VK_UUID_SIZE];
-} VkPerformanceCounterKHR;
-
-typedef struct VkPerformanceCounterDescriptionKHR {
- VkStructureType sType;
- void* pNext;
- VkPerformanceCounterDescriptionFlagsKHR flags;
- char name[VK_MAX_DESCRIPTION_SIZE];
- char category[VK_MAX_DESCRIPTION_SIZE];
- char description[VK_MAX_DESCRIPTION_SIZE];
-} VkPerformanceCounterDescriptionKHR;
-
-typedef struct VkQueryPoolPerformanceCreateInfoKHR {
- VkStructureType sType;
- const void* pNext;
- uint32_t queueFamilyIndex;
- uint32_t counterIndexCount;
- const uint32_t* pCounterIndices;
-} VkQueryPoolPerformanceCreateInfoKHR;
-
-typedef union VkPerformanceCounterResultKHR {
- int32_t int32;
- int64_t int64;
- uint32_t uint32;
- uint64_t uint64;
- float float32;
- double float64;
-} VkPerformanceCounterResultKHR;
-
-typedef struct VkAcquireProfilingLockInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkAcquireProfilingLockFlagsKHR flags;
- uint64_t timeout;
-} VkAcquireProfilingLockInfoKHR;
-
-typedef struct VkPerformanceQuerySubmitInfoKHR {
- VkStructureType sType;
- const void* pNext;
- uint32_t counterPassIndex;
-} VkPerformanceQuerySubmitInfoKHR;
-
-typedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, uint32_t* pCounterCount, VkPerformanceCounterKHR* pCounters, VkPerformanceCounterDescriptionKHR* pCounterDescriptions);
-typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR)(VkPhysicalDevice physicalDevice, const VkQueryPoolPerformanceCreateInfoKHR* pPerformanceQueryCreateInfo, uint32_t* pNumPasses);
-typedef VkResult (VKAPI_PTR *PFN_vkAcquireProfilingLockKHR)(VkDevice device, const VkAcquireProfilingLockInfoKHR* pInfo);
-typedef void (VKAPI_PTR *PFN_vkReleaseProfilingLockKHR)(VkDevice device);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(
- VkPhysicalDevice physicalDevice,
- uint32_t queueFamilyIndex,
- uint32_t* pCounterCount,
- VkPerformanceCounterKHR* pCounters,
- VkPerformanceCounterDescriptionKHR* pCounterDescriptions);
-
-VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(
- VkPhysicalDevice physicalDevice,
- const VkQueryPoolPerformanceCreateInfoKHR* pPerformanceQueryCreateInfo,
- uint32_t* pNumPasses);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkAcquireProfilingLockKHR(
- VkDevice device,
- const VkAcquireProfilingLockInfoKHR* pInfo);
-
-VKAPI_ATTR void VKAPI_CALL vkReleaseProfilingLockKHR(
- VkDevice device);
-#endif
-
-
-#define VK_KHR_maintenance2 1
-#define VK_KHR_MAINTENANCE_2_SPEC_VERSION 1
-#define VK_KHR_MAINTENANCE_2_EXTENSION_NAME "VK_KHR_maintenance2"
-#define VK_KHR_MAINTENANCE2_SPEC_VERSION VK_KHR_MAINTENANCE_2_SPEC_VERSION
-#define VK_KHR_MAINTENANCE2_EXTENSION_NAME VK_KHR_MAINTENANCE_2_EXTENSION_NAME
-typedef VkPointClippingBehavior VkPointClippingBehaviorKHR;
-
-typedef VkTessellationDomainOrigin VkTessellationDomainOriginKHR;
-
-typedef VkPhysicalDevicePointClippingProperties VkPhysicalDevicePointClippingPropertiesKHR;
-
-typedef VkRenderPassInputAttachmentAspectCreateInfo VkRenderPassInputAttachmentAspectCreateInfoKHR;
-
-typedef VkInputAttachmentAspectReference VkInputAttachmentAspectReferenceKHR;
-
-typedef VkImageViewUsageCreateInfo VkImageViewUsageCreateInfoKHR;
-
-typedef VkPipelineTessellationDomainOriginStateCreateInfo VkPipelineTessellationDomainOriginStateCreateInfoKHR;
-
-
-
-#define VK_KHR_get_surface_capabilities2 1
-#define VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION 1
-#define VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME "VK_KHR_get_surface_capabilities2"
-typedef struct VkPhysicalDeviceSurfaceInfo2KHR {
- VkStructureType sType;
- const void* pNext;
- VkSurfaceKHR surface;
-} VkPhysicalDeviceSurfaceInfo2KHR;
-
-typedef struct VkSurfaceCapabilities2KHR {
- VkStructureType sType;
- void* pNext;
- VkSurfaceCapabilitiesKHR surfaceCapabilities;
-} VkSurfaceCapabilities2KHR;
-
-typedef struct VkSurfaceFormat2KHR {
- VkStructureType sType;
- void* pNext;
- VkSurfaceFormatKHR surfaceFormat;
-} VkSurfaceFormat2KHR;
-
-typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkSurfaceCapabilities2KHR* pSurfaceCapabilities);
-typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceFormats2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pSurfaceFormatCount, VkSurfaceFormat2KHR* pSurfaceFormats);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilities2KHR(
- VkPhysicalDevice physicalDevice,
- const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
- VkSurfaceCapabilities2KHR* pSurfaceCapabilities);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceFormats2KHR(
- VkPhysicalDevice physicalDevice,
- const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
- uint32_t* pSurfaceFormatCount,
- VkSurfaceFormat2KHR* pSurfaceFormats);
-#endif
-
-
-#define VK_KHR_variable_pointers 1
-#define VK_KHR_VARIABLE_POINTERS_SPEC_VERSION 1
-#define VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME "VK_KHR_variable_pointers"
-typedef VkPhysicalDeviceVariablePointersFeatures VkPhysicalDeviceVariablePointerFeaturesKHR;
-
-typedef VkPhysicalDeviceVariablePointersFeatures VkPhysicalDeviceVariablePointersFeaturesKHR;
-
-
-
-#define VK_KHR_get_display_properties2 1
-#define VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION 1
-#define VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME "VK_KHR_get_display_properties2"
-typedef struct VkDisplayProperties2KHR {
- VkStructureType sType;
- void* pNext;
- VkDisplayPropertiesKHR displayProperties;
-} VkDisplayProperties2KHR;
-
-typedef struct VkDisplayPlaneProperties2KHR {
- VkStructureType sType;
- void* pNext;
- VkDisplayPlanePropertiesKHR displayPlaneProperties;
-} VkDisplayPlaneProperties2KHR;
-
-typedef struct VkDisplayModeProperties2KHR {
- VkStructureType sType;
- void* pNext;
- VkDisplayModePropertiesKHR displayModeProperties;
-} VkDisplayModeProperties2KHR;
-
-typedef struct VkDisplayPlaneInfo2KHR {
- VkStructureType sType;
- const void* pNext;
- VkDisplayModeKHR mode;
- uint32_t planeIndex;
-} VkDisplayPlaneInfo2KHR;
-
-typedef struct VkDisplayPlaneCapabilities2KHR {
- VkStructureType sType;
- void* pNext;
- VkDisplayPlaneCapabilitiesKHR capabilities;
-} VkDisplayPlaneCapabilities2KHR;
-
-typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayProperties2KHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayProperties2KHR* pProperties);
-typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPlaneProperties2KHR* pProperties);
-typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayModeProperties2KHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t* pPropertyCount, VkDisplayModeProperties2KHR* pProperties);
-typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneCapabilities2KHR)(VkPhysicalDevice physicalDevice, const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo, VkDisplayPlaneCapabilities2KHR* pCapabilities);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayProperties2KHR(
- VkPhysicalDevice physicalDevice,
- uint32_t* pPropertyCount,
- VkDisplayProperties2KHR* pProperties);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
- VkPhysicalDevice physicalDevice,
- uint32_t* pPropertyCount,
- VkDisplayPlaneProperties2KHR* pProperties);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayModeProperties2KHR(
- VkPhysicalDevice physicalDevice,
- VkDisplayKHR display,
- uint32_t* pPropertyCount,
- VkDisplayModeProperties2KHR* pProperties);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayPlaneCapabilities2KHR(
- VkPhysicalDevice physicalDevice,
- const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo,
- VkDisplayPlaneCapabilities2KHR* pCapabilities);
-#endif
-
-
-#define VK_KHR_dedicated_allocation 1
-#define VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION 3
-#define VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME "VK_KHR_dedicated_allocation"
-typedef VkMemoryDedicatedRequirements VkMemoryDedicatedRequirementsKHR;
-
-typedef VkMemoryDedicatedAllocateInfo VkMemoryDedicatedAllocateInfoKHR;
-
-
-
-#define VK_KHR_storage_buffer_storage_class 1
-#define VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION 1
-#define VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME "VK_KHR_storage_buffer_storage_class"
-
-
-#define VK_KHR_relaxed_block_layout 1
-#define VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION 1
-#define VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME "VK_KHR_relaxed_block_layout"
-
-
-#define VK_KHR_get_memory_requirements2 1
-#define VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION 1
-#define VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME "VK_KHR_get_memory_requirements2"
-typedef VkBufferMemoryRequirementsInfo2 VkBufferMemoryRequirementsInfo2KHR;
-
-typedef VkImageMemoryRequirementsInfo2 VkImageMemoryRequirementsInfo2KHR;
-
-typedef VkImageSparseMemoryRequirementsInfo2 VkImageSparseMemoryRequirementsInfo2KHR;
-
-typedef VkMemoryRequirements2 VkMemoryRequirements2KHR;
-
-typedef VkSparseImageMemoryRequirements2 VkSparseImageMemoryRequirements2KHR;
-
-typedef void (VKAPI_PTR *PFN_vkGetImageMemoryRequirements2KHR)(VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements);
-typedef void (VKAPI_PTR *PFN_vkGetBufferMemoryRequirements2KHR)(VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements);
-typedef void (VKAPI_PTR *PFN_vkGetImageSparseMemoryRequirements2KHR)(VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR void VKAPI_CALL vkGetImageMemoryRequirements2KHR(
- VkDevice device,
- const VkImageMemoryRequirementsInfo2* pInfo,
- VkMemoryRequirements2* pMemoryRequirements);
-
-VKAPI_ATTR void VKAPI_CALL vkGetBufferMemoryRequirements2KHR(
- VkDevice device,
- const VkBufferMemoryRequirementsInfo2* pInfo,
- VkMemoryRequirements2* pMemoryRequirements);
-
-VKAPI_ATTR void VKAPI_CALL vkGetImageSparseMemoryRequirements2KHR(
- VkDevice device,
- const VkImageSparseMemoryRequirementsInfo2* pInfo,
- uint32_t* pSparseMemoryRequirementCount,
- VkSparseImageMemoryRequirements2* pSparseMemoryRequirements);
-#endif
-
-
-#define VK_KHR_image_format_list 1
-#define VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION 1
-#define VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME "VK_KHR_image_format_list"
-typedef VkImageFormatListCreateInfo VkImageFormatListCreateInfoKHR;
-
-
-
-#define VK_KHR_sampler_ycbcr_conversion 1
-typedef VkSamplerYcbcrConversion VkSamplerYcbcrConversionKHR;
-
-#define VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION 14
-#define VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME "VK_KHR_sampler_ycbcr_conversion"
-typedef VkSamplerYcbcrModelConversion VkSamplerYcbcrModelConversionKHR;
-
-typedef VkSamplerYcbcrRange VkSamplerYcbcrRangeKHR;
-
-typedef VkChromaLocation VkChromaLocationKHR;
-
-typedef VkSamplerYcbcrConversionCreateInfo VkSamplerYcbcrConversionCreateInfoKHR;
-
-typedef VkSamplerYcbcrConversionInfo VkSamplerYcbcrConversionInfoKHR;
-
-typedef VkBindImagePlaneMemoryInfo VkBindImagePlaneMemoryInfoKHR;
-
-typedef VkImagePlaneMemoryRequirementsInfo VkImagePlaneMemoryRequirementsInfoKHR;
-
-typedef VkPhysicalDeviceSamplerYcbcrConversionFeatures VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR;
-
-typedef VkSamplerYcbcrConversionImageFormatProperties VkSamplerYcbcrConversionImageFormatPropertiesKHR;
-
-typedef VkResult (VKAPI_PTR *PFN_vkCreateSamplerYcbcrConversionKHR)(VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion);
-typedef void (VKAPI_PTR *PFN_vkDestroySamplerYcbcrConversionKHR)(VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks* pAllocator);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateSamplerYcbcrConversionKHR(
- VkDevice device,
- const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkSamplerYcbcrConversion* pYcbcrConversion);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroySamplerYcbcrConversionKHR(
- VkDevice device,
- VkSamplerYcbcrConversion ycbcrConversion,
- const VkAllocationCallbacks* pAllocator);
-#endif
-
-
-#define VK_KHR_bind_memory2 1
-#define VK_KHR_BIND_MEMORY_2_SPEC_VERSION 1
-#define VK_KHR_BIND_MEMORY_2_EXTENSION_NAME "VK_KHR_bind_memory2"
-typedef VkBindBufferMemoryInfo VkBindBufferMemoryInfoKHR;
-
-typedef VkBindImageMemoryInfo VkBindImageMemoryInfoKHR;
-
-typedef VkResult (VKAPI_PTR *PFN_vkBindBufferMemory2KHR)(VkDevice device, uint32_t bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos);
-typedef VkResult (VKAPI_PTR *PFN_vkBindImageMemory2KHR)(VkDevice device, uint32_t bindInfoCount, const VkBindImageMemoryInfo* pBindInfos);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkBindBufferMemory2KHR(
- VkDevice device,
- uint32_t bindInfoCount,
- const VkBindBufferMemoryInfo* pBindInfos);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkBindImageMemory2KHR(
- VkDevice device,
- uint32_t bindInfoCount,
- const VkBindImageMemoryInfo* pBindInfos);
-#endif
-
-
-#define VK_KHR_maintenance3 1
-#define VK_KHR_MAINTENANCE_3_SPEC_VERSION 1
-#define VK_KHR_MAINTENANCE_3_EXTENSION_NAME "VK_KHR_maintenance3"
-#define VK_KHR_MAINTENANCE3_SPEC_VERSION VK_KHR_MAINTENANCE_3_SPEC_VERSION
-#define VK_KHR_MAINTENANCE3_EXTENSION_NAME VK_KHR_MAINTENANCE_3_EXTENSION_NAME
-typedef VkPhysicalDeviceMaintenance3Properties VkPhysicalDeviceMaintenance3PropertiesKHR;
-
-typedef VkDescriptorSetLayoutSupport VkDescriptorSetLayoutSupportKHR;
-
-typedef void (VKAPI_PTR *PFN_vkGetDescriptorSetLayoutSupportKHR)(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR void VKAPI_CALL vkGetDescriptorSetLayoutSupportKHR(
- VkDevice device,
- const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
- VkDescriptorSetLayoutSupport* pSupport);
-#endif
-
-
-#define VK_KHR_draw_indirect_count 1
-#define VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION 1
-#define VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME "VK_KHR_draw_indirect_count"
-typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirectCountKHR)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride);
-typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirectCountKHR)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectCountKHR(
- VkCommandBuffer commandBuffer,
- VkBuffer buffer,
- VkDeviceSize offset,
- VkBuffer countBuffer,
- VkDeviceSize countBufferOffset,
- uint32_t maxDrawCount,
- uint32_t stride);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirectCountKHR(
- VkCommandBuffer commandBuffer,
- VkBuffer buffer,
- VkDeviceSize offset,
- VkBuffer countBuffer,
- VkDeviceSize countBufferOffset,
- uint32_t maxDrawCount,
- uint32_t stride);
-#endif
-
-
-#define VK_KHR_shader_subgroup_extended_types 1
-#define VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION 1
-#define VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME "VK_KHR_shader_subgroup_extended_types"
-typedef VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR;
-
-
-
-#define VK_KHR_8bit_storage 1
-#define VK_KHR_8BIT_STORAGE_SPEC_VERSION 1
-#define VK_KHR_8BIT_STORAGE_EXTENSION_NAME "VK_KHR_8bit_storage"
-typedef VkPhysicalDevice8BitStorageFeatures VkPhysicalDevice8BitStorageFeaturesKHR;
-
-
-
-#define VK_KHR_shader_atomic_int64 1
-#define VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION 1
-#define VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME "VK_KHR_shader_atomic_int64"
-typedef VkPhysicalDeviceShaderAtomicInt64Features VkPhysicalDeviceShaderAtomicInt64FeaturesKHR;
-
-
-
-#define VK_KHR_shader_clock 1
-#define VK_KHR_SHADER_CLOCK_SPEC_VERSION 1
-#define VK_KHR_SHADER_CLOCK_EXTENSION_NAME "VK_KHR_shader_clock"
-typedef struct VkPhysicalDeviceShaderClockFeaturesKHR {
- VkStructureType sType;
- void* pNext;
- VkBool32 shaderSubgroupClock;
- VkBool32 shaderDeviceClock;
-} VkPhysicalDeviceShaderClockFeaturesKHR;
-
-
-
-#define VK_KHR_driver_properties 1
-#define VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION 1
-#define VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME "VK_KHR_driver_properties"
-#define VK_MAX_DRIVER_NAME_SIZE_KHR VK_MAX_DRIVER_NAME_SIZE
-#define VK_MAX_DRIVER_INFO_SIZE_KHR VK_MAX_DRIVER_INFO_SIZE
-typedef VkDriverId VkDriverIdKHR;
-
-typedef VkConformanceVersion VkConformanceVersionKHR;
-
-typedef VkPhysicalDeviceDriverProperties VkPhysicalDeviceDriverPropertiesKHR;
-
-
-
-#define VK_KHR_shader_float_controls 1
-#define VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION 4
-#define VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME "VK_KHR_shader_float_controls"
-typedef VkShaderFloatControlsIndependence VkShaderFloatControlsIndependenceKHR;
-
-typedef VkPhysicalDeviceFloatControlsProperties VkPhysicalDeviceFloatControlsPropertiesKHR;
-
-
-
-#define VK_KHR_depth_stencil_resolve 1
-#define VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION 1
-#define VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME "VK_KHR_depth_stencil_resolve"
-typedef VkResolveModeFlagBits VkResolveModeFlagBitsKHR;
-
-typedef VkResolveModeFlags VkResolveModeFlagsKHR;
-
-typedef VkSubpassDescriptionDepthStencilResolve VkSubpassDescriptionDepthStencilResolveKHR;
-
-typedef VkPhysicalDeviceDepthStencilResolveProperties VkPhysicalDeviceDepthStencilResolvePropertiesKHR;
-
-
-
-#define VK_KHR_swapchain_mutable_format 1
-#define VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION 1
-#define VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME "VK_KHR_swapchain_mutable_format"
-
-
-#define VK_KHR_timeline_semaphore 1
-#define VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION 2
-#define VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME "VK_KHR_timeline_semaphore"
-typedef VkSemaphoreType VkSemaphoreTypeKHR;
-
-typedef VkSemaphoreWaitFlagBits VkSemaphoreWaitFlagBitsKHR;
-
-typedef VkSemaphoreWaitFlags VkSemaphoreWaitFlagsKHR;
-
-typedef VkPhysicalDeviceTimelineSemaphoreFeatures VkPhysicalDeviceTimelineSemaphoreFeaturesKHR;
-
-typedef VkPhysicalDeviceTimelineSemaphoreProperties VkPhysicalDeviceTimelineSemaphorePropertiesKHR;
-
-typedef VkSemaphoreTypeCreateInfo VkSemaphoreTypeCreateInfoKHR;
-
-typedef VkTimelineSemaphoreSubmitInfo VkTimelineSemaphoreSubmitInfoKHR;
-
-typedef VkSemaphoreWaitInfo VkSemaphoreWaitInfoKHR;
-
-typedef VkSemaphoreSignalInfo VkSemaphoreSignalInfoKHR;
-
-typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreCounterValueKHR)(VkDevice device, VkSemaphore semaphore, uint64_t* pValue);
-typedef VkResult (VKAPI_PTR *PFN_vkWaitSemaphoresKHR)(VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, uint64_t timeout);
-typedef VkResult (VKAPI_PTR *PFN_vkSignalSemaphoreKHR)(VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreCounterValueKHR(
- VkDevice device,
- VkSemaphore semaphore,
- uint64_t* pValue);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkWaitSemaphoresKHR(
- VkDevice device,
- const VkSemaphoreWaitInfo* pWaitInfo,
- uint64_t timeout);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkSignalSemaphoreKHR(
- VkDevice device,
- const VkSemaphoreSignalInfo* pSignalInfo);
-#endif
-
-
-#define VK_KHR_vulkan_memory_model 1
-#define VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION 3
-#define VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME "VK_KHR_vulkan_memory_model"
-typedef VkPhysicalDeviceVulkanMemoryModelFeatures VkPhysicalDeviceVulkanMemoryModelFeaturesKHR;
-
-
-
-#define VK_KHR_shader_terminate_invocation 1
-#define VK_KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION 1
-#define VK_KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME "VK_KHR_shader_terminate_invocation"
-typedef struct VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR {
- VkStructureType sType;
- void* pNext;
- VkBool32 shaderTerminateInvocation;
-} VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR;
-
-
-
-#define VK_KHR_fragment_shading_rate 1
-#define VK_KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION 2
-#define VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME "VK_KHR_fragment_shading_rate"
-
-typedef enum VkFragmentShadingRateCombinerOpKHR {
- VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR = 0,
- VK_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR = 1,
- VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_KHR = 2,
- VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_KHR = 3,
- VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHR = 4,
- VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkFragmentShadingRateCombinerOpKHR;
-typedef struct VkFragmentShadingRateAttachmentInfoKHR {
- VkStructureType sType;
- const void* pNext;
- const VkAttachmentReference2* pFragmentShadingRateAttachment;
- VkExtent2D shadingRateAttachmentTexelSize;
-} VkFragmentShadingRateAttachmentInfoKHR;
-
-typedef struct VkPipelineFragmentShadingRateStateCreateInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkExtent2D fragmentSize;
- VkFragmentShadingRateCombinerOpKHR combinerOps[2];
-} VkPipelineFragmentShadingRateStateCreateInfoKHR;
-
-typedef struct VkPhysicalDeviceFragmentShadingRateFeaturesKHR {
- VkStructureType sType;
- void* pNext;
- VkBool32 pipelineFragmentShadingRate;
- VkBool32 primitiveFragmentShadingRate;
- VkBool32 attachmentFragmentShadingRate;
-} VkPhysicalDeviceFragmentShadingRateFeaturesKHR;
-
-typedef struct VkPhysicalDeviceFragmentShadingRatePropertiesKHR {
- VkStructureType sType;
- void* pNext;
- VkExtent2D minFragmentShadingRateAttachmentTexelSize;
- VkExtent2D maxFragmentShadingRateAttachmentTexelSize;
- uint32_t maxFragmentShadingRateAttachmentTexelSizeAspectRatio;
- VkBool32 primitiveFragmentShadingRateWithMultipleViewports;
- VkBool32 layeredShadingRateAttachments;
- VkBool32 fragmentShadingRateNonTrivialCombinerOps;
- VkExtent2D maxFragmentSize;
- uint32_t maxFragmentSizeAspectRatio;
- uint32_t maxFragmentShadingRateCoverageSamples;
- VkSampleCountFlagBits maxFragmentShadingRateRasterizationSamples;
- VkBool32 fragmentShadingRateWithShaderDepthStencilWrites;
- VkBool32 fragmentShadingRateWithSampleMask;
- VkBool32 fragmentShadingRateWithShaderSampleMask;
- VkBool32 fragmentShadingRateWithConservativeRasterization;
- VkBool32 fragmentShadingRateWithFragmentShaderInterlock;
- VkBool32 fragmentShadingRateWithCustomSampleLocations;
- VkBool32 fragmentShadingRateStrictMultiplyCombiner;
-} VkPhysicalDeviceFragmentShadingRatePropertiesKHR;
-
-typedef struct VkPhysicalDeviceFragmentShadingRateKHR {
- VkStructureType sType;
- void* pNext;
- VkSampleCountFlags sampleCounts;
- VkExtent2D fragmentSize;
-} VkPhysicalDeviceFragmentShadingRateKHR;
-
-typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pFragmentShadingRateCount, VkPhysicalDeviceFragmentShadingRateKHR* pFragmentShadingRates);
-typedef void (VKAPI_PTR *PFN_vkCmdSetFragmentShadingRateKHR)(VkCommandBuffer commandBuffer, const VkExtent2D* pFragmentSize, const VkFragmentShadingRateCombinerOpKHR combinerOps[2]);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceFragmentShadingRatesKHR(
- VkPhysicalDevice physicalDevice,
- uint32_t* pFragmentShadingRateCount,
- VkPhysicalDeviceFragmentShadingRateKHR* pFragmentShadingRates);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdSetFragmentShadingRateKHR(
- VkCommandBuffer commandBuffer,
- const VkExtent2D* pFragmentSize,
- const VkFragmentShadingRateCombinerOpKHR combinerOps[2]);
-#endif
-
-
-#define VK_KHR_spirv_1_4 1
-#define VK_KHR_SPIRV_1_4_SPEC_VERSION 1
-#define VK_KHR_SPIRV_1_4_EXTENSION_NAME "VK_KHR_spirv_1_4"
-
-
-#define VK_KHR_surface_protected_capabilities 1
-#define VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION 1
-#define VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME "VK_KHR_surface_protected_capabilities"
-typedef struct VkSurfaceProtectedCapabilitiesKHR {
- VkStructureType sType;
- const void* pNext;
- VkBool32 supportsProtected;
-} VkSurfaceProtectedCapabilitiesKHR;
-
-
-
-#define VK_KHR_separate_depth_stencil_layouts 1
-#define VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION 1
-#define VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME "VK_KHR_separate_depth_stencil_layouts"
-typedef VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR;
-
-typedef VkAttachmentReferenceStencilLayout VkAttachmentReferenceStencilLayoutKHR;
-
-typedef VkAttachmentDescriptionStencilLayout VkAttachmentDescriptionStencilLayoutKHR;
-
-
-
-#define VK_KHR_present_wait 1
-#define VK_KHR_PRESENT_WAIT_SPEC_VERSION 1
-#define VK_KHR_PRESENT_WAIT_EXTENSION_NAME "VK_KHR_present_wait"
-typedef struct VkPhysicalDevicePresentWaitFeaturesKHR {
- VkStructureType sType;
- void* pNext;
- VkBool32 presentWait;
-} VkPhysicalDevicePresentWaitFeaturesKHR;
-
-typedef VkResult (VKAPI_PTR *PFN_vkWaitForPresentKHR)(VkDevice device, VkSwapchainKHR swapchain, uint64_t presentId, uint64_t timeout);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkWaitForPresentKHR(
- VkDevice device,
- VkSwapchainKHR swapchain,
- uint64_t presentId,
- uint64_t timeout);
-#endif
-
-
-#define VK_KHR_uniform_buffer_standard_layout 1
-#define VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION 1
-#define VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME "VK_KHR_uniform_buffer_standard_layout"
-typedef VkPhysicalDeviceUniformBufferStandardLayoutFeatures VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR;
-
-
-
-#define VK_KHR_buffer_device_address 1
-#define VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION 1
-#define VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME "VK_KHR_buffer_device_address"
-typedef VkPhysicalDeviceBufferDeviceAddressFeatures VkPhysicalDeviceBufferDeviceAddressFeaturesKHR;
-
-typedef VkBufferDeviceAddressInfo VkBufferDeviceAddressInfoKHR;
-
-typedef VkBufferOpaqueCaptureAddressCreateInfo VkBufferOpaqueCaptureAddressCreateInfoKHR;
-
-typedef VkMemoryOpaqueCaptureAddressAllocateInfo VkMemoryOpaqueCaptureAddressAllocateInfoKHR;
-
-typedef VkDeviceMemoryOpaqueCaptureAddressInfo VkDeviceMemoryOpaqueCaptureAddressInfoKHR;
-
-typedef VkDeviceAddress (VKAPI_PTR *PFN_vkGetBufferDeviceAddressKHR)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo);
-typedef uint64_t (VKAPI_PTR *PFN_vkGetBufferOpaqueCaptureAddressKHR)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo);
-typedef uint64_t (VKAPI_PTR *PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR)(VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetBufferDeviceAddressKHR(
- VkDevice device,
- const VkBufferDeviceAddressInfo* pInfo);
-
-VKAPI_ATTR uint64_t VKAPI_CALL vkGetBufferOpaqueCaptureAddressKHR(
- VkDevice device,
- const VkBufferDeviceAddressInfo* pInfo);
-
-VKAPI_ATTR uint64_t VKAPI_CALL vkGetDeviceMemoryOpaqueCaptureAddressKHR(
- VkDevice device,
- const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo);
-#endif
-
-
-#define VK_KHR_deferred_host_operations 1
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDeferredOperationKHR)
-#define VK_KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION 4
-#define VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME "VK_KHR_deferred_host_operations"
-typedef VkResult (VKAPI_PTR *PFN_vkCreateDeferredOperationKHR)(VkDevice device, const VkAllocationCallbacks* pAllocator, VkDeferredOperationKHR* pDeferredOperation);
-typedef void (VKAPI_PTR *PFN_vkDestroyDeferredOperationKHR)(VkDevice device, VkDeferredOperationKHR operation, const VkAllocationCallbacks* pAllocator);
-typedef uint32_t (VKAPI_PTR *PFN_vkGetDeferredOperationMaxConcurrencyKHR)(VkDevice device, VkDeferredOperationKHR operation);
-typedef VkResult (VKAPI_PTR *PFN_vkGetDeferredOperationResultKHR)(VkDevice device, VkDeferredOperationKHR operation);
-typedef VkResult (VKAPI_PTR *PFN_vkDeferredOperationJoinKHR)(VkDevice device, VkDeferredOperationKHR operation);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateDeferredOperationKHR(
- VkDevice device,
- const VkAllocationCallbacks* pAllocator,
- VkDeferredOperationKHR* pDeferredOperation);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroyDeferredOperationKHR(
- VkDevice device,
- VkDeferredOperationKHR operation,
- const VkAllocationCallbacks* pAllocator);
-
-VKAPI_ATTR uint32_t VKAPI_CALL vkGetDeferredOperationMaxConcurrencyKHR(
- VkDevice device,
- VkDeferredOperationKHR operation);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetDeferredOperationResultKHR(
- VkDevice device,
- VkDeferredOperationKHR operation);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkDeferredOperationJoinKHR(
- VkDevice device,
- VkDeferredOperationKHR operation);
-#endif
-
-
-#define VK_KHR_pipeline_executable_properties 1
-#define VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION 1
-#define VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME "VK_KHR_pipeline_executable_properties"
-
-typedef enum VkPipelineExecutableStatisticFormatKHR {
- VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR = 0,
- VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR = 1,
- VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR = 2,
- VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR = 3,
- VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkPipelineExecutableStatisticFormatKHR;
-typedef struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR {
- VkStructureType sType;
- void* pNext;
- VkBool32 pipelineExecutableInfo;
-} VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR;
-
-typedef struct VkPipelineInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkPipeline pipeline;
-} VkPipelineInfoKHR;
-
-typedef struct VkPipelineExecutablePropertiesKHR {
- VkStructureType sType;
- void* pNext;
- VkShaderStageFlags stages;
- char name[VK_MAX_DESCRIPTION_SIZE];
- char description[VK_MAX_DESCRIPTION_SIZE];
- uint32_t subgroupSize;
-} VkPipelineExecutablePropertiesKHR;
-
-typedef struct VkPipelineExecutableInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkPipeline pipeline;
- uint32_t executableIndex;
-} VkPipelineExecutableInfoKHR;
-
-typedef union VkPipelineExecutableStatisticValueKHR {
- VkBool32 b32;
- int64_t i64;
- uint64_t u64;
- double f64;
-} VkPipelineExecutableStatisticValueKHR;
-
-typedef struct VkPipelineExecutableStatisticKHR {
- VkStructureType sType;
- void* pNext;
- char name[VK_MAX_DESCRIPTION_SIZE];
- char description[VK_MAX_DESCRIPTION_SIZE];
- VkPipelineExecutableStatisticFormatKHR format;
- VkPipelineExecutableStatisticValueKHR value;
-} VkPipelineExecutableStatisticKHR;
-
-typedef struct VkPipelineExecutableInternalRepresentationKHR {
- VkStructureType sType;
- void* pNext;
- char name[VK_MAX_DESCRIPTION_SIZE];
- char description[VK_MAX_DESCRIPTION_SIZE];
- VkBool32 isText;
- size_t dataSize;
- void* pData;
-} VkPipelineExecutableInternalRepresentationKHR;
-
-typedef VkResult (VKAPI_PTR *PFN_vkGetPipelineExecutablePropertiesKHR)(VkDevice device, const VkPipelineInfoKHR* pPipelineInfo, uint32_t* pExecutableCount, VkPipelineExecutablePropertiesKHR* pProperties);
-typedef VkResult (VKAPI_PTR *PFN_vkGetPipelineExecutableStatisticsKHR)(VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, uint32_t* pStatisticCount, VkPipelineExecutableStatisticKHR* pStatistics);
-typedef VkResult (VKAPI_PTR *PFN_vkGetPipelineExecutableInternalRepresentationsKHR)(VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, uint32_t* pInternalRepresentationCount, VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineExecutablePropertiesKHR(
- VkDevice device,
- const VkPipelineInfoKHR* pPipelineInfo,
- uint32_t* pExecutableCount,
- VkPipelineExecutablePropertiesKHR* pProperties);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineExecutableStatisticsKHR(
- VkDevice device,
- const VkPipelineExecutableInfoKHR* pExecutableInfo,
- uint32_t* pStatisticCount,
- VkPipelineExecutableStatisticKHR* pStatistics);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineExecutableInternalRepresentationsKHR(
- VkDevice device,
- const VkPipelineExecutableInfoKHR* pExecutableInfo,
- uint32_t* pInternalRepresentationCount,
- VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations);
-#endif
-
-
-#define VK_KHR_shader_integer_dot_product 1
-#define VK_KHR_SHADER_INTEGER_DOT_PRODUCT_SPEC_VERSION 1
-#define VK_KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME "VK_KHR_shader_integer_dot_product"
-typedef struct VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR {
- VkStructureType sType;
- void* pNext;
- VkBool32 shaderIntegerDotProduct;
-} VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR;
-
-typedef struct VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR {
- VkStructureType sType;
- void* pNext;
- VkBool32 integerDotProduct8BitUnsignedAccelerated;
- VkBool32 integerDotProduct8BitSignedAccelerated;
- VkBool32 integerDotProduct8BitMixedSignednessAccelerated;
- VkBool32 integerDotProduct4x8BitPackedUnsignedAccelerated;
- VkBool32 integerDotProduct4x8BitPackedSignedAccelerated;
- VkBool32 integerDotProduct4x8BitPackedMixedSignednessAccelerated;
- VkBool32 integerDotProduct16BitUnsignedAccelerated;
- VkBool32 integerDotProduct16BitSignedAccelerated;
- VkBool32 integerDotProduct16BitMixedSignednessAccelerated;
- VkBool32 integerDotProduct32BitUnsignedAccelerated;
- VkBool32 integerDotProduct32BitSignedAccelerated;
- VkBool32 integerDotProduct32BitMixedSignednessAccelerated;
- VkBool32 integerDotProduct64BitUnsignedAccelerated;
- VkBool32 integerDotProduct64BitSignedAccelerated;
- VkBool32 integerDotProduct64BitMixedSignednessAccelerated;
- VkBool32 integerDotProductAccumulatingSaturating8BitUnsignedAccelerated;
- VkBool32 integerDotProductAccumulatingSaturating8BitSignedAccelerated;
- VkBool32 integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated;
- VkBool32 integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated;
- VkBool32 integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated;
- VkBool32 integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated;
- VkBool32 integerDotProductAccumulatingSaturating16BitUnsignedAccelerated;
- VkBool32 integerDotProductAccumulatingSaturating16BitSignedAccelerated;
- VkBool32 integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated;
- VkBool32 integerDotProductAccumulatingSaturating32BitUnsignedAccelerated;
- VkBool32 integerDotProductAccumulatingSaturating32BitSignedAccelerated;
- VkBool32 integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated;
- VkBool32 integerDotProductAccumulatingSaturating64BitUnsignedAccelerated;
- VkBool32 integerDotProductAccumulatingSaturating64BitSignedAccelerated;
- VkBool32 integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated;
-} VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR;
-
-
-
-#define VK_KHR_pipeline_library 1
-#define VK_KHR_PIPELINE_LIBRARY_SPEC_VERSION 1
-#define VK_KHR_PIPELINE_LIBRARY_EXTENSION_NAME "VK_KHR_pipeline_library"
-typedef struct VkPipelineLibraryCreateInfoKHR {
- VkStructureType sType;
- const void* pNext;
- uint32_t libraryCount;
- const VkPipeline* pLibraries;
-} VkPipelineLibraryCreateInfoKHR;
-
-
-
-#define VK_KHR_shader_non_semantic_info 1
-#define VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION 1
-#define VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME "VK_KHR_shader_non_semantic_info"
-
-
-#define VK_KHR_present_id 1
-#define VK_KHR_PRESENT_ID_SPEC_VERSION 1
-#define VK_KHR_PRESENT_ID_EXTENSION_NAME "VK_KHR_present_id"
-typedef struct VkPresentIdKHR {
- VkStructureType sType;
- const void* pNext;
- uint32_t swapchainCount;
- const uint64_t* pPresentIds;
-} VkPresentIdKHR;
-
-typedef struct VkPhysicalDevicePresentIdFeaturesKHR {
- VkStructureType sType;
- void* pNext;
- VkBool32 presentId;
-} VkPhysicalDevicePresentIdFeaturesKHR;
-
-
-
-#define VK_KHR_synchronization2 1
-typedef uint64_t VkFlags64;
-#define VK_KHR_SYNCHRONIZATION_2_SPEC_VERSION 1
-#define VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME "VK_KHR_synchronization2"
-typedef VkFlags64 VkPipelineStageFlags2KHR;
-
-// Flag bits for VkPipelineStageFlagBits2KHR
-typedef VkFlags64 VkPipelineStageFlagBits2KHR;
-static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_NONE_KHR = 0ULL;
-static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR = 0x00000001ULL;
-static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR = 0x00000002ULL;
-static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT_KHR = 0x00000004ULL;
-static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR = 0x00000008ULL;
-static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR = 0x00000010ULL;
-static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR = 0x00000020ULL;
-static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR = 0x00000040ULL;
-static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR = 0x00000080ULL;
-static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR = 0x00000100ULL;
-static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR = 0x00000200ULL;
-static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR = 0x00000400ULL;
-static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR = 0x00000800ULL;
-static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT_KHR = 0x00001000ULL;
-static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR = 0x00001000ULL;
-static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR = 0x00002000ULL;
-static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_HOST_BIT_KHR = 0x00004000ULL;
-static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR = 0x00008000ULL;
-static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR = 0x00010000ULL;
-static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_COPY_BIT_KHR = 0x100000000ULL;
-static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR = 0x200000000ULL;
-static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_BLIT_BIT_KHR = 0x400000000ULL;
-static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR = 0x800000000ULL;
-static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR = 0x1000000000ULL;
-static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR = 0x2000000000ULL;
-static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT_KHR = 0x4000000000ULL;
-#ifdef VK_ENABLE_BETA_EXTENSIONS
-static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR = 0x04000000ULL;
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
-static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR = 0x08000000ULL;
-#endif
-static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT = 0x01000000ULL;
-static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT = 0x00040000ULL;
-static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV = 0x00020000ULL;
-static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x00400000ULL;
-static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV = 0x00400000ULL;
-static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = 0x02000000ULL;
-static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR = 0x00200000ULL;
-static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_NV = 0x00200000ULL;
-static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_NV = 0x02000000ULL;
-static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 0x00800000ULL;
-static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV = 0x00080000ULL;
-static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV = 0x00100000ULL;
-static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI = 0x8000000000ULL;
-static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI = 0x10000000000ULL;
-
-typedef VkFlags64 VkAccessFlags2KHR;
-
-// Flag bits for VkAccessFlagBits2KHR
-typedef VkFlags64 VkAccessFlagBits2KHR;
-static const VkAccessFlagBits2KHR VK_ACCESS_2_NONE_KHR = 0ULL;
-static const VkAccessFlagBits2KHR VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT_KHR = 0x00000001ULL;
-static const VkAccessFlagBits2KHR VK_ACCESS_2_INDEX_READ_BIT_KHR = 0x00000002ULL;
-static const VkAccessFlagBits2KHR VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT_KHR = 0x00000004ULL;
-static const VkAccessFlagBits2KHR VK_ACCESS_2_UNIFORM_READ_BIT_KHR = 0x00000008ULL;
-static const VkAccessFlagBits2KHR VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT_KHR = 0x00000010ULL;
-static const VkAccessFlagBits2KHR VK_ACCESS_2_SHADER_READ_BIT_KHR = 0x00000020ULL;
-static const VkAccessFlagBits2KHR VK_ACCESS_2_SHADER_WRITE_BIT_KHR = 0x00000040ULL;
-static const VkAccessFlagBits2KHR VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT_KHR = 0x00000080ULL;
-static const VkAccessFlagBits2KHR VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT_KHR = 0x00000100ULL;
-static const VkAccessFlagBits2KHR VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT_KHR = 0x00000200ULL;
-static const VkAccessFlagBits2KHR VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT_KHR = 0x00000400ULL;
-static const VkAccessFlagBits2KHR VK_ACCESS_2_TRANSFER_READ_BIT_KHR = 0x00000800ULL;
-static const VkAccessFlagBits2KHR VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR = 0x00001000ULL;
-static const VkAccessFlagBits2KHR VK_ACCESS_2_HOST_READ_BIT_KHR = 0x00002000ULL;
-static const VkAccessFlagBits2KHR VK_ACCESS_2_HOST_WRITE_BIT_KHR = 0x00004000ULL;
-static const VkAccessFlagBits2KHR VK_ACCESS_2_MEMORY_READ_BIT_KHR = 0x00008000ULL;
-static const VkAccessFlagBits2KHR VK_ACCESS_2_MEMORY_WRITE_BIT_KHR = 0x00010000ULL;
-static const VkAccessFlagBits2KHR VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR = 0x100000000ULL;
-static const VkAccessFlagBits2KHR VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR = 0x200000000ULL;
-static const VkAccessFlagBits2KHR VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR = 0x400000000ULL;
-#ifdef VK_ENABLE_BETA_EXTENSIONS
-static const VkAccessFlagBits2KHR VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR = 0x800000000ULL;
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
-static const VkAccessFlagBits2KHR VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR = 0x1000000000ULL;
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
-static const VkAccessFlagBits2KHR VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR = 0x2000000000ULL;
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
-static const VkAccessFlagBits2KHR VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR = 0x4000000000ULL;
-#endif
-static const VkAccessFlagBits2KHR VK_ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = 0x02000000ULL;
-static const VkAccessFlagBits2KHR VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = 0x04000000ULL;
-static const VkAccessFlagBits2KHR VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = 0x08000000ULL;
-static const VkAccessFlagBits2KHR VK_ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT = 0x00100000ULL;
-static const VkAccessFlagBits2KHR VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV = 0x00020000ULL;
-static const VkAccessFlagBits2KHR VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV = 0x00040000ULL;
-static const VkAccessFlagBits2KHR VK_ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR = 0x00800000ULL;
-static const VkAccessFlagBits2KHR VK_ACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV = 0x00800000ULL;
-static const VkAccessFlagBits2KHR VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR = 0x00200000ULL;
-static const VkAccessFlagBits2KHR VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 0x00400000ULL;
-static const VkAccessFlagBits2KHR VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_NV = 0x00200000ULL;
-static const VkAccessFlagBits2KHR VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_NV = 0x00400000ULL;
-static const VkAccessFlagBits2KHR VK_ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 0x01000000ULL;
-static const VkAccessFlagBits2KHR VK_ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 0x00080000ULL;
-static const VkAccessFlagBits2KHR VK_ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI = 0x8000000000ULL;
-
-
-typedef enum VkSubmitFlagBitsKHR {
- VK_SUBMIT_PROTECTED_BIT_KHR = 0x00000001,
- VK_SUBMIT_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkSubmitFlagBitsKHR;
-typedef VkFlags VkSubmitFlagsKHR;
-typedef struct VkMemoryBarrier2KHR {
- VkStructureType sType;
- const void* pNext;
- VkPipelineStageFlags2KHR srcStageMask;
- VkAccessFlags2KHR srcAccessMask;
- VkPipelineStageFlags2KHR dstStageMask;
- VkAccessFlags2KHR dstAccessMask;
-} VkMemoryBarrier2KHR;
-
-typedef struct VkBufferMemoryBarrier2KHR {
- VkStructureType sType;
- const void* pNext;
- VkPipelineStageFlags2KHR srcStageMask;
- VkAccessFlags2KHR srcAccessMask;
- VkPipelineStageFlags2KHR dstStageMask;
- VkAccessFlags2KHR dstAccessMask;
- uint32_t srcQueueFamilyIndex;
- uint32_t dstQueueFamilyIndex;
- VkBuffer buffer;
- VkDeviceSize offset;
- VkDeviceSize size;
-} VkBufferMemoryBarrier2KHR;
-
-typedef struct VkImageMemoryBarrier2KHR {
- VkStructureType sType;
- const void* pNext;
- VkPipelineStageFlags2KHR srcStageMask;
- VkAccessFlags2KHR srcAccessMask;
- VkPipelineStageFlags2KHR dstStageMask;
- VkAccessFlags2KHR dstAccessMask;
- VkImageLayout oldLayout;
- VkImageLayout newLayout;
- uint32_t srcQueueFamilyIndex;
- uint32_t dstQueueFamilyIndex;
- VkImage image;
- VkImageSubresourceRange subresourceRange;
-} VkImageMemoryBarrier2KHR;
-
-typedef struct VkDependencyInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkDependencyFlags dependencyFlags;
- uint32_t memoryBarrierCount;
- const VkMemoryBarrier2KHR* pMemoryBarriers;
- uint32_t bufferMemoryBarrierCount;
- const VkBufferMemoryBarrier2KHR* pBufferMemoryBarriers;
- uint32_t imageMemoryBarrierCount;
- const VkImageMemoryBarrier2KHR* pImageMemoryBarriers;
-} VkDependencyInfoKHR;
-
-typedef struct VkSemaphoreSubmitInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkSemaphore semaphore;
- uint64_t value;
- VkPipelineStageFlags2KHR stageMask;
- uint32_t deviceIndex;
-} VkSemaphoreSubmitInfoKHR;
-
-typedef struct VkCommandBufferSubmitInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkCommandBuffer commandBuffer;
- uint32_t deviceMask;
-} VkCommandBufferSubmitInfoKHR;
-
-typedef struct VkSubmitInfo2KHR {
- VkStructureType sType;
- const void* pNext;
- VkSubmitFlagsKHR flags;
- uint32_t waitSemaphoreInfoCount;
- const VkSemaphoreSubmitInfoKHR* pWaitSemaphoreInfos;
- uint32_t commandBufferInfoCount;
- const VkCommandBufferSubmitInfoKHR* pCommandBufferInfos;
- uint32_t signalSemaphoreInfoCount;
- const VkSemaphoreSubmitInfoKHR* pSignalSemaphoreInfos;
-} VkSubmitInfo2KHR;
-
-typedef struct VkPhysicalDeviceSynchronization2FeaturesKHR {
- VkStructureType sType;
- void* pNext;
- VkBool32 synchronization2;
-} VkPhysicalDeviceSynchronization2FeaturesKHR;
-
-typedef struct VkQueueFamilyCheckpointProperties2NV {
- VkStructureType sType;
- void* pNext;
- VkPipelineStageFlags2KHR checkpointExecutionStageMask;
-} VkQueueFamilyCheckpointProperties2NV;
-
-typedef struct VkCheckpointData2NV {
- VkStructureType sType;
- void* pNext;
- VkPipelineStageFlags2KHR stage;
- void* pCheckpointMarker;
-} VkCheckpointData2NV;
-
-typedef void (VKAPI_PTR *PFN_vkCmdSetEvent2KHR)(VkCommandBuffer commandBuffer, VkEvent event, const VkDependencyInfoKHR* pDependencyInfo);
-typedef void (VKAPI_PTR *PFN_vkCmdResetEvent2KHR)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags2KHR stageMask);
-typedef void (VKAPI_PTR *PFN_vkCmdWaitEvents2KHR)(VkCommandBuffer commandBuffer, uint32_t eventCount, const VkEvent* pEvents, const VkDependencyInfoKHR* pDependencyInfos);
-typedef void (VKAPI_PTR *PFN_vkCmdPipelineBarrier2KHR)(VkCommandBuffer commandBuffer, const VkDependencyInfoKHR* pDependencyInfo);
-typedef void (VKAPI_PTR *PFN_vkCmdWriteTimestamp2KHR)(VkCommandBuffer commandBuffer, VkPipelineStageFlags2KHR stage, VkQueryPool queryPool, uint32_t query);
-typedef VkResult (VKAPI_PTR *PFN_vkQueueSubmit2KHR)(VkQueue queue, uint32_t submitCount, const VkSubmitInfo2KHR* pSubmits, VkFence fence);
-typedef void (VKAPI_PTR *PFN_vkCmdWriteBufferMarker2AMD)(VkCommandBuffer commandBuffer, VkPipelineStageFlags2KHR stage, VkBuffer dstBuffer, VkDeviceSize dstOffset, uint32_t marker);
-typedef void (VKAPI_PTR *PFN_vkGetQueueCheckpointData2NV)(VkQueue queue, uint32_t* pCheckpointDataCount, VkCheckpointData2NV* pCheckpointData);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR void VKAPI_CALL vkCmdSetEvent2KHR(
- VkCommandBuffer commandBuffer,
- VkEvent event,
- const VkDependencyInfoKHR* pDependencyInfo);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdResetEvent2KHR(
- VkCommandBuffer commandBuffer,
- VkEvent event,
- VkPipelineStageFlags2KHR stageMask);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdWaitEvents2KHR(
- VkCommandBuffer commandBuffer,
- uint32_t eventCount,
- const VkEvent* pEvents,
- const VkDependencyInfoKHR* pDependencyInfos);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdPipelineBarrier2KHR(
- VkCommandBuffer commandBuffer,
- const VkDependencyInfoKHR* pDependencyInfo);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdWriteTimestamp2KHR(
- VkCommandBuffer commandBuffer,
- VkPipelineStageFlags2KHR stage,
- VkQueryPool queryPool,
- uint32_t query);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkQueueSubmit2KHR(
- VkQueue queue,
- uint32_t submitCount,
- const VkSubmitInfo2KHR* pSubmits,
- VkFence fence);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdWriteBufferMarker2AMD(
- VkCommandBuffer commandBuffer,
- VkPipelineStageFlags2KHR stage,
- VkBuffer dstBuffer,
- VkDeviceSize dstOffset,
- uint32_t marker);
-
-VKAPI_ATTR void VKAPI_CALL vkGetQueueCheckpointData2NV(
- VkQueue queue,
- uint32_t* pCheckpointDataCount,
- VkCheckpointData2NV* pCheckpointData);
-#endif
-
-
-#define VK_KHR_shader_subgroup_uniform_control_flow 1
-#define VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_SPEC_VERSION 1
-#define VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_EXTENSION_NAME "VK_KHR_shader_subgroup_uniform_control_flow"
-typedef struct VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR {
- VkStructureType sType;
- void* pNext;
- VkBool32 shaderSubgroupUniformControlFlow;
-} VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR;
-
-
-
-#define VK_KHR_zero_initialize_workgroup_memory 1
-#define VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_SPEC_VERSION 1
-#define VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_EXTENSION_NAME "VK_KHR_zero_initialize_workgroup_memory"
-typedef struct VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR {
- VkStructureType sType;
- void* pNext;
- VkBool32 shaderZeroInitializeWorkgroupMemory;
-} VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR;
-
-
-
-#define VK_KHR_workgroup_memory_explicit_layout 1
-#define VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_SPEC_VERSION 1
-#define VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME "VK_KHR_workgroup_memory_explicit_layout"
-typedef struct VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR {
- VkStructureType sType;
- void* pNext;
- VkBool32 workgroupMemoryExplicitLayout;
- VkBool32 workgroupMemoryExplicitLayoutScalarBlockLayout;
- VkBool32 workgroupMemoryExplicitLayout8BitAccess;
- VkBool32 workgroupMemoryExplicitLayout16BitAccess;
-} VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR;
-
-
-
-#define VK_KHR_copy_commands2 1
-#define VK_KHR_COPY_COMMANDS_2_SPEC_VERSION 1
-#define VK_KHR_COPY_COMMANDS_2_EXTENSION_NAME "VK_KHR_copy_commands2"
-typedef struct VkBufferCopy2KHR {
- VkStructureType sType;
- const void* pNext;
- VkDeviceSize srcOffset;
- VkDeviceSize dstOffset;
- VkDeviceSize size;
-} VkBufferCopy2KHR;
-
-typedef struct VkCopyBufferInfo2KHR {
- VkStructureType sType;
- const void* pNext;
- VkBuffer srcBuffer;
- VkBuffer dstBuffer;
- uint32_t regionCount;
- const VkBufferCopy2KHR* pRegions;
-} VkCopyBufferInfo2KHR;
-
-typedef struct VkImageCopy2KHR {
- VkStructureType sType;
- const void* pNext;
- VkImageSubresourceLayers srcSubresource;
- VkOffset3D srcOffset;
- VkImageSubresourceLayers dstSubresource;
- VkOffset3D dstOffset;
- VkExtent3D extent;
-} VkImageCopy2KHR;
-
-typedef struct VkCopyImageInfo2KHR {
- VkStructureType sType;
- const void* pNext;
- VkImage srcImage;
- VkImageLayout srcImageLayout;
- VkImage dstImage;
- VkImageLayout dstImageLayout;
- uint32_t regionCount;
- const VkImageCopy2KHR* pRegions;
-} VkCopyImageInfo2KHR;
-
-typedef struct VkBufferImageCopy2KHR {
- VkStructureType sType;
- const void* pNext;
- VkDeviceSize bufferOffset;
- uint32_t bufferRowLength;
- uint32_t bufferImageHeight;
- VkImageSubresourceLayers imageSubresource;
- VkOffset3D imageOffset;
- VkExtent3D imageExtent;
-} VkBufferImageCopy2KHR;
-
-typedef struct VkCopyBufferToImageInfo2KHR {
- VkStructureType sType;
- const void* pNext;
- VkBuffer srcBuffer;
- VkImage dstImage;
- VkImageLayout dstImageLayout;
- uint32_t regionCount;
- const VkBufferImageCopy2KHR* pRegions;
-} VkCopyBufferToImageInfo2KHR;
-
-typedef struct VkCopyImageToBufferInfo2KHR {
- VkStructureType sType;
- const void* pNext;
- VkImage srcImage;
- VkImageLayout srcImageLayout;
- VkBuffer dstBuffer;
- uint32_t regionCount;
- const VkBufferImageCopy2KHR* pRegions;
-} VkCopyImageToBufferInfo2KHR;
-
-typedef struct VkImageBlit2KHR {
- VkStructureType sType;
- const void* pNext;
- VkImageSubresourceLayers srcSubresource;
- VkOffset3D srcOffsets[2];
- VkImageSubresourceLayers dstSubresource;
- VkOffset3D dstOffsets[2];
-} VkImageBlit2KHR;
-
-typedef struct VkBlitImageInfo2KHR {
- VkStructureType sType;
- const void* pNext;
- VkImage srcImage;
- VkImageLayout srcImageLayout;
- VkImage dstImage;
- VkImageLayout dstImageLayout;
- uint32_t regionCount;
- const VkImageBlit2KHR* pRegions;
- VkFilter filter;
-} VkBlitImageInfo2KHR;
-
-typedef struct VkImageResolve2KHR {
- VkStructureType sType;
- const void* pNext;
- VkImageSubresourceLayers srcSubresource;
- VkOffset3D srcOffset;
- VkImageSubresourceLayers dstSubresource;
- VkOffset3D dstOffset;
- VkExtent3D extent;
-} VkImageResolve2KHR;
-
-typedef struct VkResolveImageInfo2KHR {
- VkStructureType sType;
- const void* pNext;
- VkImage srcImage;
- VkImageLayout srcImageLayout;
- VkImage dstImage;
- VkImageLayout dstImageLayout;
- uint32_t regionCount;
- const VkImageResolve2KHR* pRegions;
-} VkResolveImageInfo2KHR;
-
-typedef void (VKAPI_PTR *PFN_vkCmdCopyBuffer2KHR)(VkCommandBuffer commandBuffer, const VkCopyBufferInfo2KHR* pCopyBufferInfo);
-typedef void (VKAPI_PTR *PFN_vkCmdCopyImage2KHR)(VkCommandBuffer commandBuffer, const VkCopyImageInfo2KHR* pCopyImageInfo);
-typedef void (VKAPI_PTR *PFN_vkCmdCopyBufferToImage2KHR)(VkCommandBuffer commandBuffer, const VkCopyBufferToImageInfo2KHR* pCopyBufferToImageInfo);
-typedef void (VKAPI_PTR *PFN_vkCmdCopyImageToBuffer2KHR)(VkCommandBuffer commandBuffer, const VkCopyImageToBufferInfo2KHR* pCopyImageToBufferInfo);
-typedef void (VKAPI_PTR *PFN_vkCmdBlitImage2KHR)(VkCommandBuffer commandBuffer, const VkBlitImageInfo2KHR* pBlitImageInfo);
-typedef void (VKAPI_PTR *PFN_vkCmdResolveImage2KHR)(VkCommandBuffer commandBuffer, const VkResolveImageInfo2KHR* pResolveImageInfo);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR void VKAPI_CALL vkCmdCopyBuffer2KHR(
- VkCommandBuffer commandBuffer,
- const VkCopyBufferInfo2KHR* pCopyBufferInfo);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdCopyImage2KHR(
- VkCommandBuffer commandBuffer,
- const VkCopyImageInfo2KHR* pCopyImageInfo);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdCopyBufferToImage2KHR(
- VkCommandBuffer commandBuffer,
- const VkCopyBufferToImageInfo2KHR* pCopyBufferToImageInfo);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdCopyImageToBuffer2KHR(
- VkCommandBuffer commandBuffer,
- const VkCopyImageToBufferInfo2KHR* pCopyImageToBufferInfo);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdBlitImage2KHR(
- VkCommandBuffer commandBuffer,
- const VkBlitImageInfo2KHR* pBlitImageInfo);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdResolveImage2KHR(
- VkCommandBuffer commandBuffer,
- const VkResolveImageInfo2KHR* pResolveImageInfo);
-#endif
-
-
-#define VK_KHR_format_feature_flags2 1
-#define VK_KHR_FORMAT_FEATURE_FLAGS_2_SPEC_VERSION 1
-#define VK_KHR_FORMAT_FEATURE_FLAGS_2_EXTENSION_NAME "VK_KHR_format_feature_flags2"
-typedef VkFlags64 VkFormatFeatureFlags2KHR;
-
-// Flag bits for VkFormatFeatureFlagBits2KHR
-typedef VkFlags64 VkFormatFeatureFlagBits2KHR;
-static const VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT_KHR = 0x00000001ULL;
-static const VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT_KHR = 0x00000002ULL;
-static const VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT_KHR = 0x00000004ULL;
-static const VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT_KHR = 0x00000008ULL;
-static const VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT_KHR = 0x00000010ULL;
-static const VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT_KHR = 0x00000020ULL;
-static const VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_VERTEX_BUFFER_BIT_KHR = 0x00000040ULL;
-static const VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT_KHR = 0x00000080ULL;
-static const VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT_KHR = 0x00000100ULL;
-static const VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT_KHR = 0x00000200ULL;
-static const VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_BLIT_SRC_BIT_KHR = 0x00000400ULL;
-static const VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_BLIT_DST_BIT_KHR = 0x00000800ULL;
-static const VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT_KHR = 0x00001000ULL;
-static const VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 0x00002000ULL;
-static const VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT_KHR = 0x00004000ULL;
-static const VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT_KHR = 0x00008000ULL;
-static const VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT_KHR = 0x00010000ULL;
-static const VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT_KHR = 0x00020000ULL;
-static const VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR = 0x00040000ULL;
-static const VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR = 0x00080000ULL;
-static const VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR = 0x00100000ULL;
-static const VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR = 0x00200000ULL;
-static const VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_DISJOINT_BIT_KHR = 0x00400000ULL;
-static const VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT_KHR = 0x00800000ULL;
-static const VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR = 0x80000000ULL;
-static const VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR = 0x100000000ULL;
-static const VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHR = 0x200000000ULL;
-#ifdef VK_ENABLE_BETA_EXTENSIONS
-static const VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_VIDEO_DECODE_OUTPUT_BIT_KHR = 0x02000000ULL;
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
-static const VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_VIDEO_DECODE_DPB_BIT_KHR = 0x04000000ULL;
-#endif
-static const VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = 0x20000000ULL;
-static const VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_FRAGMENT_DENSITY_MAP_BIT_EXT = 0x01000000ULL;
-static const VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x40000000ULL;
-#ifdef VK_ENABLE_BETA_EXTENSIONS
-static const VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_VIDEO_ENCODE_INPUT_BIT_KHR = 0x08000000ULL;
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
-static const VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_VIDEO_ENCODE_DPB_BIT_KHR = 0x10000000ULL;
-#endif
-
-typedef struct VkFormatProperties3KHR {
- VkStructureType sType;
- void* pNext;
- VkFormatFeatureFlags2KHR linearTilingFeatures;
- VkFormatFeatureFlags2KHR optimalTilingFeatures;
- VkFormatFeatureFlags2KHR bufferFeatures;
-} VkFormatProperties3KHR;
-
-
-
-#define VK_KHR_maintenance4 1
-#define VK_KHR_MAINTENANCE_4_SPEC_VERSION 1
-#define VK_KHR_MAINTENANCE_4_EXTENSION_NAME "VK_KHR_maintenance4"
-typedef struct VkPhysicalDeviceMaintenance4FeaturesKHR {
- VkStructureType sType;
- void* pNext;
- VkBool32 maintenance4;
-} VkPhysicalDeviceMaintenance4FeaturesKHR;
-
-typedef struct VkPhysicalDeviceMaintenance4PropertiesKHR {
- VkStructureType sType;
- void* pNext;
- VkDeviceSize maxBufferSize;
-} VkPhysicalDeviceMaintenance4PropertiesKHR;
-
-typedef struct VkDeviceBufferMemoryRequirementsKHR {
- VkStructureType sType;
- const void* pNext;
- const VkBufferCreateInfo* pCreateInfo;
-} VkDeviceBufferMemoryRequirementsKHR;
-
-typedef struct VkDeviceImageMemoryRequirementsKHR {
- VkStructureType sType;
- const void* pNext;
- const VkImageCreateInfo* pCreateInfo;
- VkImageAspectFlagBits planeAspect;
-} VkDeviceImageMemoryRequirementsKHR;
-
-typedef void (VKAPI_PTR *PFN_vkGetDeviceBufferMemoryRequirementsKHR)(VkDevice device, const VkDeviceBufferMemoryRequirementsKHR* pInfo, VkMemoryRequirements2* pMemoryRequirements);
-typedef void (VKAPI_PTR *PFN_vkGetDeviceImageMemoryRequirementsKHR)(VkDevice device, const VkDeviceImageMemoryRequirementsKHR* pInfo, VkMemoryRequirements2* pMemoryRequirements);
-typedef void (VKAPI_PTR *PFN_vkGetDeviceImageSparseMemoryRequirementsKHR)(VkDevice device, const VkDeviceImageMemoryRequirementsKHR* pInfo, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR void VKAPI_CALL vkGetDeviceBufferMemoryRequirementsKHR(
- VkDevice device,
- const VkDeviceBufferMemoryRequirementsKHR* pInfo,
- VkMemoryRequirements2* pMemoryRequirements);
-
-VKAPI_ATTR void VKAPI_CALL vkGetDeviceImageMemoryRequirementsKHR(
- VkDevice device,
- const VkDeviceImageMemoryRequirementsKHR* pInfo,
- VkMemoryRequirements2* pMemoryRequirements);
-
-VKAPI_ATTR void VKAPI_CALL vkGetDeviceImageSparseMemoryRequirementsKHR(
- VkDevice device,
- const VkDeviceImageMemoryRequirementsKHR* pInfo,
- uint32_t* pSparseMemoryRequirementCount,
- VkSparseImageMemoryRequirements2* pSparseMemoryRequirements);
-#endif
-
-
-#define VK_ANDROID_native_buffer 1
-#define VK_ANDROID_NATIVE_BUFFER_SPEC_VERSION 6
-#define VK_ANDROID_NATIVE_BUFFER_NUMBER 11
-#define VK_ANDROID_NATIVE_BUFFER_EXTENSION_NAME "VK_ANDROID_native_buffer"
-#define VK_ANDROID_NATIVE_BUFFER_NAME VK_ANDROID_NATIVE_BUFFER_EXTENSION_NAME
-typedef struct VkNativeBufferANDROID {
- VkStructureType sType;
- const void* pNext;
- const uint32_t* handle;
- int stride;
- int format;
- int usage;
- uint64_t consumer;
- uint64_t producer;
-} VkNativeBufferANDROID;
-
-typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainGrallocUsageANDROID)(VkDevice device, VkFormat format, VkImageUsageFlags imageUsage, int* grallocUsage);
-typedef VkResult (VKAPI_PTR *PFN_vkAcquireImageANDROID)(VkDevice device, VkImage image, int nativeFenceFd, VkSemaphore semaphore, VkFence fence);
-typedef VkResult (VKAPI_PTR *PFN_vkQueueSignalReleaseImageANDROID)(VkQueue queue, uint32_t waitSemaphoreCount, const VkSemaphore* pWaitSemaphores, VkImage image, int* pNativeFenceFd);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainGrallocUsageANDROID(
- VkDevice device,
- VkFormat format,
- VkImageUsageFlags imageUsage,
- int* grallocUsage);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkAcquireImageANDROID(
- VkDevice device,
- VkImage image,
- int nativeFenceFd,
- VkSemaphore semaphore,
- VkFence fence);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkQueueSignalReleaseImageANDROID(
- VkQueue queue,
- uint32_t waitSemaphoreCount,
- const VkSemaphore* pWaitSemaphores,
- VkImage image,
- int* pNativeFenceFd);
-#endif
-
-
-#define VK_EXT_debug_report 1
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDebugReportCallbackEXT)
-#define VK_EXT_DEBUG_REPORT_SPEC_VERSION 10
-#define VK_EXT_DEBUG_REPORT_EXTENSION_NAME "VK_EXT_debug_report"
-
-typedef enum VkDebugReportObjectTypeEXT {
- VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT = 0,
- VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT = 1,
- VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT = 2,
- VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT = 3,
- VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT = 4,
- VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT = 5,
- VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT = 6,
- VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT = 7,
- VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT = 8,
- VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT = 9,
- VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT = 10,
- VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT = 11,
- VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT = 12,
- VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT = 13,
- VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT = 14,
- VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT = 15,
- VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT = 16,
- VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT = 17,
- VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT = 18,
- VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT = 19,
- VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT = 20,
- VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT = 21,
- VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT = 22,
- VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT = 23,
- VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT = 24,
- VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT = 25,
- VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT = 26,
- VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT = 27,
- VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT = 28,
- VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT = 29,
- VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT = 30,
- VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT = 33,
- VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT = 1000156000,
- VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT = 1000085000,
- VK_DEBUG_REPORT_OBJECT_TYPE_CU_MODULE_NVX_EXT = 1000029000,
- VK_DEBUG_REPORT_OBJECT_TYPE_CU_FUNCTION_NVX_EXT = 1000029001,
- VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT = 1000150000,
- VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT = 1000165000,
- VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA_EXT = 1000366000,
- VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT,
- VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT,
- VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT,
- VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT,
- VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF
-} VkDebugReportObjectTypeEXT;
-
-typedef enum VkDebugReportFlagBitsEXT {
- VK_DEBUG_REPORT_INFORMATION_BIT_EXT = 0x00000001,
- VK_DEBUG_REPORT_WARNING_BIT_EXT = 0x00000002,
- VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT = 0x00000004,
- VK_DEBUG_REPORT_ERROR_BIT_EXT = 0x00000008,
- VK_DEBUG_REPORT_DEBUG_BIT_EXT = 0x00000010,
- VK_DEBUG_REPORT_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
-} VkDebugReportFlagBitsEXT;
-typedef VkFlags VkDebugReportFlagsEXT;
-typedef VkBool32 (VKAPI_PTR *PFN_vkDebugReportCallbackEXT)(
- VkDebugReportFlagsEXT flags,
- VkDebugReportObjectTypeEXT objectType,
- uint64_t object,
- size_t location,
- int32_t messageCode,
- const char* pLayerPrefix,
- const char* pMessage,
- void* pUserData);
-
-typedef struct VkDebugReportCallbackCreateInfoEXT {
- VkStructureType sType;
- const void* pNext;
- VkDebugReportFlagsEXT flags;
- PFN_vkDebugReportCallbackEXT pfnCallback;
- void* pUserData;
-} VkDebugReportCallbackCreateInfoEXT;
-
-typedef VkResult (VKAPI_PTR *PFN_vkCreateDebugReportCallbackEXT)(VkInstance instance, const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugReportCallbackEXT* pCallback);
-typedef void (VKAPI_PTR *PFN_vkDestroyDebugReportCallbackEXT)(VkInstance instance, VkDebugReportCallbackEXT callback, const VkAllocationCallbacks* pAllocator);
-typedef void (VKAPI_PTR *PFN_vkDebugReportMessageEXT)(VkInstance instance, VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objectType, uint64_t object, size_t location, int32_t messageCode, const char* pLayerPrefix, const char* pMessage);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateDebugReportCallbackEXT(
- VkInstance instance,
- const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkDebugReportCallbackEXT* pCallback);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroyDebugReportCallbackEXT(
- VkInstance instance,
- VkDebugReportCallbackEXT callback,
- const VkAllocationCallbacks* pAllocator);
-
-VKAPI_ATTR void VKAPI_CALL vkDebugReportMessageEXT(
- VkInstance instance,
- VkDebugReportFlagsEXT flags,
- VkDebugReportObjectTypeEXT objectType,
- uint64_t object,
- size_t location,
- int32_t messageCode,
- const char* pLayerPrefix,
- const char* pMessage);
-#endif
-
-
-#define VK_NV_glsl_shader 1
-#define VK_NV_GLSL_SHADER_SPEC_VERSION 1
-#define VK_NV_GLSL_SHADER_EXTENSION_NAME "VK_NV_glsl_shader"
-
-
-#define VK_EXT_depth_range_unrestricted 1
-#define VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION 1
-#define VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME "VK_EXT_depth_range_unrestricted"
-
-
-#define VK_IMG_filter_cubic 1
-#define VK_IMG_FILTER_CUBIC_SPEC_VERSION 1
-#define VK_IMG_FILTER_CUBIC_EXTENSION_NAME "VK_IMG_filter_cubic"
-
-
-#define VK_AMD_rasterization_order 1
-#define VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION 1
-#define VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME "VK_AMD_rasterization_order"
-
-typedef enum VkRasterizationOrderAMD {
- VK_RASTERIZATION_ORDER_STRICT_AMD = 0,
- VK_RASTERIZATION_ORDER_RELAXED_AMD = 1,
- VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 0x7FFFFFFF
-} VkRasterizationOrderAMD;
-typedef struct VkPipelineRasterizationStateRasterizationOrderAMD {
- VkStructureType sType;
- const void* pNext;
- VkRasterizationOrderAMD rasterizationOrder;
-} VkPipelineRasterizationStateRasterizationOrderAMD;
-
-
-
-#define VK_AMD_shader_trinary_minmax 1
-#define VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION 1
-#define VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME "VK_AMD_shader_trinary_minmax"
-
-
-#define VK_AMD_shader_explicit_vertex_parameter 1
-#define VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION 1
-#define VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME "VK_AMD_shader_explicit_vertex_parameter"
-
-
-#define VK_EXT_debug_marker 1
-#define VK_EXT_DEBUG_MARKER_SPEC_VERSION 4
-#define VK_EXT_DEBUG_MARKER_EXTENSION_NAME "VK_EXT_debug_marker"
-typedef struct VkDebugMarkerObjectNameInfoEXT {
- VkStructureType sType;
- const void* pNext;
- VkDebugReportObjectTypeEXT objectType;
- uint64_t object;
- const char* pObjectName;
-} VkDebugMarkerObjectNameInfoEXT;
-
-typedef struct VkDebugMarkerObjectTagInfoEXT {
- VkStructureType sType;
- const void* pNext;
- VkDebugReportObjectTypeEXT objectType;
- uint64_t object;
- uint64_t tagName;
- size_t tagSize;
- const void* pTag;
-} VkDebugMarkerObjectTagInfoEXT;
-
-typedef struct VkDebugMarkerMarkerInfoEXT {
- VkStructureType sType;
- const void* pNext;
- const char* pMarkerName;
- float color[4];
-} VkDebugMarkerMarkerInfoEXT;
-
-typedef VkResult (VKAPI_PTR *PFN_vkDebugMarkerSetObjectTagEXT)(VkDevice device, const VkDebugMarkerObjectTagInfoEXT* pTagInfo);
-typedef VkResult (VKAPI_PTR *PFN_vkDebugMarkerSetObjectNameEXT)(VkDevice device, const VkDebugMarkerObjectNameInfoEXT* pNameInfo);
-typedef void (VKAPI_PTR *PFN_vkCmdDebugMarkerBeginEXT)(VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo);
-typedef void (VKAPI_PTR *PFN_vkCmdDebugMarkerEndEXT)(VkCommandBuffer commandBuffer);
-typedef void (VKAPI_PTR *PFN_vkCmdDebugMarkerInsertEXT)(VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkDebugMarkerSetObjectTagEXT(
- VkDevice device,
- const VkDebugMarkerObjectTagInfoEXT* pTagInfo);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkDebugMarkerSetObjectNameEXT(
- VkDevice device,
- const VkDebugMarkerObjectNameInfoEXT* pNameInfo);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerBeginEXT(
- VkCommandBuffer commandBuffer,
- const VkDebugMarkerMarkerInfoEXT* pMarkerInfo);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerEndEXT(
- VkCommandBuffer commandBuffer);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerInsertEXT(
- VkCommandBuffer commandBuffer,
- const VkDebugMarkerMarkerInfoEXT* pMarkerInfo);
-#endif
-
-
-#define VK_AMD_gcn_shader 1
-#define VK_AMD_GCN_SHADER_SPEC_VERSION 1
-#define VK_AMD_GCN_SHADER_EXTENSION_NAME "VK_AMD_gcn_shader"
-
-
-#define VK_NV_dedicated_allocation 1
-#define VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION 1
-#define VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME "VK_NV_dedicated_allocation"
-typedef struct VkDedicatedAllocationImageCreateInfoNV {
- VkStructureType sType;
- const void* pNext;
- VkBool32 dedicatedAllocation;
-} VkDedicatedAllocationImageCreateInfoNV;
-
-typedef struct VkDedicatedAllocationBufferCreateInfoNV {
- VkStructureType sType;
- const void* pNext;
- VkBool32 dedicatedAllocation;
-} VkDedicatedAllocationBufferCreateInfoNV;
-
-typedef struct VkDedicatedAllocationMemoryAllocateInfoNV {
- VkStructureType sType;
- const void* pNext;
- VkImage image;
- VkBuffer buffer;
-} VkDedicatedAllocationMemoryAllocateInfoNV;
-
-
-
-#define VK_EXT_transform_feedback 1
-#define VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION 1
-#define VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME "VK_EXT_transform_feedback"
-typedef VkFlags VkPipelineRasterizationStateStreamCreateFlagsEXT;
-typedef struct VkPhysicalDeviceTransformFeedbackFeaturesEXT {
- VkStructureType sType;
- void* pNext;
- VkBool32 transformFeedback;
- VkBool32 geometryStreams;
-} VkPhysicalDeviceTransformFeedbackFeaturesEXT;
-
-typedef struct VkPhysicalDeviceTransformFeedbackPropertiesEXT {
- VkStructureType sType;
- void* pNext;
- uint32_t maxTransformFeedbackStreams;
- uint32_t maxTransformFeedbackBuffers;
- VkDeviceSize maxTransformFeedbackBufferSize;
- uint32_t maxTransformFeedbackStreamDataSize;
- uint32_t maxTransformFeedbackBufferDataSize;
- uint32_t maxTransformFeedbackBufferDataStride;
- VkBool32 transformFeedbackQueries;
- VkBool32 transformFeedbackStreamsLinesTriangles;
- VkBool32 transformFeedbackRasterizationStreamSelect;
- VkBool32 transformFeedbackDraw;
-} VkPhysicalDeviceTransformFeedbackPropertiesEXT;
-
-typedef struct VkPipelineRasterizationStateStreamCreateInfoEXT {
- VkStructureType sType;
- const void* pNext;
- VkPipelineRasterizationStateStreamCreateFlagsEXT flags;
- uint32_t rasterizationStream;
-} VkPipelineRasterizationStateStreamCreateInfoEXT;
-
-typedef void (VKAPI_PTR *PFN_vkCmdBindTransformFeedbackBuffersEXT)(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes);
-typedef void (VKAPI_PTR *PFN_vkCmdBeginTransformFeedbackEXT)(VkCommandBuffer commandBuffer, uint32_t firstCounterBuffer, uint32_t counterBufferCount, const VkBuffer* pCounterBuffers, const VkDeviceSize* pCounterBufferOffsets);
-typedef void (VKAPI_PTR *PFN_vkCmdEndTransformFeedbackEXT)(VkCommandBuffer commandBuffer, uint32_t firstCounterBuffer, uint32_t counterBufferCount, const VkBuffer* pCounterBuffers, const VkDeviceSize* pCounterBufferOffsets);
-typedef void (VKAPI_PTR *PFN_vkCmdBeginQueryIndexedEXT)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, VkQueryControlFlags flags, uint32_t index);
-typedef void (VKAPI_PTR *PFN_vkCmdEndQueryIndexedEXT)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, uint32_t index);
-typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirectByteCountEXT)(VkCommandBuffer commandBuffer, uint32_t instanceCount, uint32_t firstInstance, VkBuffer counterBuffer, VkDeviceSize counterBufferOffset, uint32_t counterOffset, uint32_t vertexStride);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR void VKAPI_CALL vkCmdBindTransformFeedbackBuffersEXT(
- VkCommandBuffer commandBuffer,
- uint32_t firstBinding,
- uint32_t bindingCount,
- const VkBuffer* pBuffers,
- const VkDeviceSize* pOffsets,
- const VkDeviceSize* pSizes);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdBeginTransformFeedbackEXT(
- VkCommandBuffer commandBuffer,
- uint32_t firstCounterBuffer,
- uint32_t counterBufferCount,
- const VkBuffer* pCounterBuffers,
- const VkDeviceSize* pCounterBufferOffsets);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdEndTransformFeedbackEXT(
- VkCommandBuffer commandBuffer,
- uint32_t firstCounterBuffer,
- uint32_t counterBufferCount,
- const VkBuffer* pCounterBuffers,
- const VkDeviceSize* pCounterBufferOffsets);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdBeginQueryIndexedEXT(
- VkCommandBuffer commandBuffer,
- VkQueryPool queryPool,
- uint32_t query,
- VkQueryControlFlags flags,
- uint32_t index);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdEndQueryIndexedEXT(
- VkCommandBuffer commandBuffer,
- VkQueryPool queryPool,
- uint32_t query,
- uint32_t index);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectByteCountEXT(
- VkCommandBuffer commandBuffer,
- uint32_t instanceCount,
- uint32_t firstInstance,
- VkBuffer counterBuffer,
- VkDeviceSize counterBufferOffset,
- uint32_t counterOffset,
- uint32_t vertexStride);
-#endif
-
-
-#define VK_NVX_binary_import 1
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkCuModuleNVX)
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkCuFunctionNVX)
-#define VK_NVX_BINARY_IMPORT_SPEC_VERSION 1
-#define VK_NVX_BINARY_IMPORT_EXTENSION_NAME "VK_NVX_binary_import"
-typedef struct VkCuModuleCreateInfoNVX {
- VkStructureType sType;
- const void* pNext;
- size_t dataSize;
- const void* pData;
-} VkCuModuleCreateInfoNVX;
-
-typedef struct VkCuFunctionCreateInfoNVX {
- VkStructureType sType;
- const void* pNext;
- VkCuModuleNVX module;
- const char* pName;
-} VkCuFunctionCreateInfoNVX;
-
-typedef struct VkCuLaunchInfoNVX {
- VkStructureType sType;
- const void* pNext;
- VkCuFunctionNVX function;
- uint32_t gridDimX;
- uint32_t gridDimY;
- uint32_t gridDimZ;
- uint32_t blockDimX;
- uint32_t blockDimY;
- uint32_t blockDimZ;
- uint32_t sharedMemBytes;
- size_t paramCount;
- const void* const * pParams;
- size_t extraCount;
- const void* const * pExtras;
-} VkCuLaunchInfoNVX;
-
-typedef VkResult (VKAPI_PTR *PFN_vkCreateCuModuleNVX)(VkDevice device, const VkCuModuleCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCuModuleNVX* pModule);
-typedef VkResult (VKAPI_PTR *PFN_vkCreateCuFunctionNVX)(VkDevice device, const VkCuFunctionCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCuFunctionNVX* pFunction);
-typedef void (VKAPI_PTR *PFN_vkDestroyCuModuleNVX)(VkDevice device, VkCuModuleNVX module, const VkAllocationCallbacks* pAllocator);
-typedef void (VKAPI_PTR *PFN_vkDestroyCuFunctionNVX)(VkDevice device, VkCuFunctionNVX function, const VkAllocationCallbacks* pAllocator);
-typedef void (VKAPI_PTR *PFN_vkCmdCuLaunchKernelNVX)(VkCommandBuffer commandBuffer, const VkCuLaunchInfoNVX* pLaunchInfo);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateCuModuleNVX(
- VkDevice device,
- const VkCuModuleCreateInfoNVX* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkCuModuleNVX* pModule);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateCuFunctionNVX(
- VkDevice device,
- const VkCuFunctionCreateInfoNVX* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkCuFunctionNVX* pFunction);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroyCuModuleNVX(
- VkDevice device,
- VkCuModuleNVX module,
- const VkAllocationCallbacks* pAllocator);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroyCuFunctionNVX(
- VkDevice device,
- VkCuFunctionNVX function,
- const VkAllocationCallbacks* pAllocator);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdCuLaunchKernelNVX(
- VkCommandBuffer commandBuffer,
- const VkCuLaunchInfoNVX* pLaunchInfo);
-#endif
-
-
-#define VK_NVX_image_view_handle 1
-#define VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION 2
-#define VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME "VK_NVX_image_view_handle"
-typedef struct VkImageViewHandleInfoNVX {
- VkStructureType sType;
- const void* pNext;
- VkImageView imageView;
- VkDescriptorType descriptorType;
- VkSampler sampler;
-} VkImageViewHandleInfoNVX;
-
-typedef struct VkImageViewAddressPropertiesNVX {
- VkStructureType sType;
- void* pNext;
- VkDeviceAddress deviceAddress;
- VkDeviceSize size;
-} VkImageViewAddressPropertiesNVX;
-
-typedef uint32_t (VKAPI_PTR *PFN_vkGetImageViewHandleNVX)(VkDevice device, const VkImageViewHandleInfoNVX* pInfo);
-typedef VkResult (VKAPI_PTR *PFN_vkGetImageViewAddressNVX)(VkDevice device, VkImageView imageView, VkImageViewAddressPropertiesNVX* pProperties);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR uint32_t VKAPI_CALL vkGetImageViewHandleNVX(
- VkDevice device,
- const VkImageViewHandleInfoNVX* pInfo);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetImageViewAddressNVX(
- VkDevice device,
- VkImageView imageView,
- VkImageViewAddressPropertiesNVX* pProperties);
-#endif
-
-
-#define VK_AMD_draw_indirect_count 1
-#define VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION 2
-#define VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME "VK_AMD_draw_indirect_count"
-typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirectCountAMD)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride);
-typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirectCountAMD)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectCountAMD(
- VkCommandBuffer commandBuffer,
- VkBuffer buffer,
- VkDeviceSize offset,
- VkBuffer countBuffer,
- VkDeviceSize countBufferOffset,
- uint32_t maxDrawCount,
- uint32_t stride);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirectCountAMD(
- VkCommandBuffer commandBuffer,
- VkBuffer buffer,
- VkDeviceSize offset,
- VkBuffer countBuffer,
- VkDeviceSize countBufferOffset,
- uint32_t maxDrawCount,
- uint32_t stride);
-#endif
-
-
-#define VK_AMD_negative_viewport_height 1
-#define VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION 1
-#define VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME "VK_AMD_negative_viewport_height"
-
-
-#define VK_AMD_gpu_shader_half_float 1
-#define VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION 2
-#define VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME "VK_AMD_gpu_shader_half_float"
-
-
-#define VK_AMD_shader_ballot 1
-#define VK_AMD_SHADER_BALLOT_SPEC_VERSION 1
-#define VK_AMD_SHADER_BALLOT_EXTENSION_NAME "VK_AMD_shader_ballot"
-
-
-#define VK_AMD_texture_gather_bias_lod 1
-#define VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION 1
-#define VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME "VK_AMD_texture_gather_bias_lod"
-typedef struct VkTextureLODGatherFormatPropertiesAMD {
- VkStructureType sType;
- void* pNext;
- VkBool32 supportsTextureGatherLODBiasAMD;
-} VkTextureLODGatherFormatPropertiesAMD;
-
-
-
-#define VK_AMD_shader_info 1
-#define VK_AMD_SHADER_INFO_SPEC_VERSION 1
-#define VK_AMD_SHADER_INFO_EXTENSION_NAME "VK_AMD_shader_info"
-
-typedef enum VkShaderInfoTypeAMD {
- VK_SHADER_INFO_TYPE_STATISTICS_AMD = 0,
- VK_SHADER_INFO_TYPE_BINARY_AMD = 1,
- VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD = 2,
- VK_SHADER_INFO_TYPE_MAX_ENUM_AMD = 0x7FFFFFFF
-} VkShaderInfoTypeAMD;
-typedef struct VkShaderResourceUsageAMD {
- uint32_t numUsedVgprs;
- uint32_t numUsedSgprs;
- uint32_t ldsSizePerLocalWorkGroup;
- size_t ldsUsageSizeInBytes;
- size_t scratchMemUsageInBytes;
-} VkShaderResourceUsageAMD;
-
-typedef struct VkShaderStatisticsInfoAMD {
- VkShaderStageFlags shaderStageMask;
- VkShaderResourceUsageAMD resourceUsage;
- uint32_t numPhysicalVgprs;
- uint32_t numPhysicalSgprs;
- uint32_t numAvailableVgprs;
- uint32_t numAvailableSgprs;
- uint32_t computeWorkGroupSize[3];
-} VkShaderStatisticsInfoAMD;
-
-typedef VkResult (VKAPI_PTR *PFN_vkGetShaderInfoAMD)(VkDevice device, VkPipeline pipeline, VkShaderStageFlagBits shaderStage, VkShaderInfoTypeAMD infoType, size_t* pInfoSize, void* pInfo);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkGetShaderInfoAMD(
- VkDevice device,
- VkPipeline pipeline,
- VkShaderStageFlagBits shaderStage,
- VkShaderInfoTypeAMD infoType,
- size_t* pInfoSize,
- void* pInfo);
-#endif
-
-
-#define VK_AMD_shader_image_load_store_lod 1
-#define VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION 1
-#define VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME "VK_AMD_shader_image_load_store_lod"
-
-
-#define VK_NV_corner_sampled_image 1
-#define VK_NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION 2
-#define VK_NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME "VK_NV_corner_sampled_image"
-typedef struct VkPhysicalDeviceCornerSampledImageFeaturesNV {
- VkStructureType sType;
- void* pNext;
- VkBool32 cornerSampledImage;
-} VkPhysicalDeviceCornerSampledImageFeaturesNV;
-
-
-
-#define VK_IMG_format_pvrtc 1
-#define VK_IMG_FORMAT_PVRTC_SPEC_VERSION 1
-#define VK_IMG_FORMAT_PVRTC_EXTENSION_NAME "VK_IMG_format_pvrtc"
-
-
-#define VK_NV_external_memory_capabilities 1
-#define VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION 1
-#define VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME "VK_NV_external_memory_capabilities"
-
-typedef enum VkExternalMemoryHandleTypeFlagBitsNV {
- VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV = 0x00000001,
- VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV = 0x00000002,
- VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV = 0x00000004,
- VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV = 0x00000008,
- VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF
-} VkExternalMemoryHandleTypeFlagBitsNV;
-typedef VkFlags VkExternalMemoryHandleTypeFlagsNV;
-
-typedef enum VkExternalMemoryFeatureFlagBitsNV {
- VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV = 0x00000001,
- VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV = 0x00000002,
- VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV = 0x00000004,
- VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF
-} VkExternalMemoryFeatureFlagBitsNV;
-typedef VkFlags VkExternalMemoryFeatureFlagsNV;
-typedef struct VkExternalImageFormatPropertiesNV {
- VkImageFormatProperties imageFormatProperties;
- VkExternalMemoryFeatureFlagsNV externalMemoryFeatures;
- VkExternalMemoryHandleTypeFlagsNV exportFromImportedHandleTypes;
- VkExternalMemoryHandleTypeFlagsNV compatibleHandleTypes;
-} VkExternalImageFormatPropertiesNV;
-
-typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkExternalMemoryHandleTypeFlagsNV externalHandleType, VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
- VkPhysicalDevice physicalDevice,
- VkFormat format,
- VkImageType type,
- VkImageTiling tiling,
- VkImageUsageFlags usage,
- VkImageCreateFlags flags,
- VkExternalMemoryHandleTypeFlagsNV externalHandleType,
- VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties);
-#endif
-
-
-#define VK_NV_external_memory 1
-#define VK_NV_EXTERNAL_MEMORY_SPEC_VERSION 1
-#define VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME "VK_NV_external_memory"
-typedef struct VkExternalMemoryImageCreateInfoNV {
- VkStructureType sType;
- const void* pNext;
- VkExternalMemoryHandleTypeFlagsNV handleTypes;
-} VkExternalMemoryImageCreateInfoNV;
-
-typedef struct VkExportMemoryAllocateInfoNV {
- VkStructureType sType;
- const void* pNext;
- VkExternalMemoryHandleTypeFlagsNV handleTypes;
-} VkExportMemoryAllocateInfoNV;
-
-
-
-#define VK_EXT_validation_flags 1
-#define VK_EXT_VALIDATION_FLAGS_SPEC_VERSION 2
-#define VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME "VK_EXT_validation_flags"
-
-typedef enum VkValidationCheckEXT {
- VK_VALIDATION_CHECK_ALL_EXT = 0,
- VK_VALIDATION_CHECK_SHADERS_EXT = 1,
- VK_VALIDATION_CHECK_MAX_ENUM_EXT = 0x7FFFFFFF
-} VkValidationCheckEXT;
-typedef struct VkValidationFlagsEXT {
- VkStructureType sType;
- const void* pNext;
- uint32_t disabledValidationCheckCount;
- const VkValidationCheckEXT* pDisabledValidationChecks;
-} VkValidationFlagsEXT;
-
-
-
-#define VK_EXT_shader_subgroup_ballot 1
-#define VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION 1
-#define VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME "VK_EXT_shader_subgroup_ballot"
-
-
-#define VK_EXT_shader_subgroup_vote 1
-#define VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION 1
-#define VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME "VK_EXT_shader_subgroup_vote"
-
-
-#define VK_EXT_texture_compression_astc_hdr 1
-#define VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION 1
-#define VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME "VK_EXT_texture_compression_astc_hdr"
-typedef struct VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT {
- VkStructureType sType;
- void* pNext;
- VkBool32 textureCompressionASTC_HDR;
-} VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT;
-
-
-
-#define VK_EXT_astc_decode_mode 1
-#define VK_EXT_ASTC_DECODE_MODE_SPEC_VERSION 1
-#define VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME "VK_EXT_astc_decode_mode"
-typedef struct VkImageViewASTCDecodeModeEXT {
- VkStructureType sType;
- const void* pNext;
- VkFormat decodeMode;
-} VkImageViewASTCDecodeModeEXT;
-
-typedef struct VkPhysicalDeviceASTCDecodeFeaturesEXT {
- VkStructureType sType;
- void* pNext;
- VkBool32 decodeModeSharedExponent;
-} VkPhysicalDeviceASTCDecodeFeaturesEXT;
-
-
-
-#define VK_EXT_conditional_rendering 1
-#define VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION 2
-#define VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME "VK_EXT_conditional_rendering"
-
-typedef enum VkConditionalRenderingFlagBitsEXT {
- VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 0x00000001,
- VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
-} VkConditionalRenderingFlagBitsEXT;
-typedef VkFlags VkConditionalRenderingFlagsEXT;
-typedef struct VkConditionalRenderingBeginInfoEXT {
- VkStructureType sType;
- const void* pNext;
- VkBuffer buffer;
- VkDeviceSize offset;
- VkConditionalRenderingFlagsEXT flags;
-} VkConditionalRenderingBeginInfoEXT;
-
-typedef struct VkPhysicalDeviceConditionalRenderingFeaturesEXT {
- VkStructureType sType;
- void* pNext;
- VkBool32 conditionalRendering;
- VkBool32 inheritedConditionalRendering;
-} VkPhysicalDeviceConditionalRenderingFeaturesEXT;
-
-typedef struct VkCommandBufferInheritanceConditionalRenderingInfoEXT {
- VkStructureType sType;
- const void* pNext;
- VkBool32 conditionalRenderingEnable;
-} VkCommandBufferInheritanceConditionalRenderingInfoEXT;
-
-typedef void (VKAPI_PTR *PFN_vkCmdBeginConditionalRenderingEXT)(VkCommandBuffer commandBuffer, const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin);
-typedef void (VKAPI_PTR *PFN_vkCmdEndConditionalRenderingEXT)(VkCommandBuffer commandBuffer);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR void VKAPI_CALL vkCmdBeginConditionalRenderingEXT(
- VkCommandBuffer commandBuffer,
- const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdEndConditionalRenderingEXT(
- VkCommandBuffer commandBuffer);
-#endif
-
-
-#define VK_NV_clip_space_w_scaling 1
-#define VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION 1
-#define VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME "VK_NV_clip_space_w_scaling"
-typedef struct VkViewportWScalingNV {
- float xcoeff;
- float ycoeff;
-} VkViewportWScalingNV;
-
-typedef struct VkPipelineViewportWScalingStateCreateInfoNV {
- VkStructureType sType;
- const void* pNext;
- VkBool32 viewportWScalingEnable;
- uint32_t viewportCount;
- const VkViewportWScalingNV* pViewportWScalings;
-} VkPipelineViewportWScalingStateCreateInfoNV;
-
-typedef void (VKAPI_PTR *PFN_vkCmdSetViewportWScalingNV)(VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkViewportWScalingNV* pViewportWScalings);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR void VKAPI_CALL vkCmdSetViewportWScalingNV(
- VkCommandBuffer commandBuffer,
- uint32_t firstViewport,
- uint32_t viewportCount,
- const VkViewportWScalingNV* pViewportWScalings);
-#endif
-
-
-#define VK_EXT_direct_mode_display 1
-#define VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION 1
-#define VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME "VK_EXT_direct_mode_display"
-typedef VkResult (VKAPI_PTR *PFN_vkReleaseDisplayEXT)(VkPhysicalDevice physicalDevice, VkDisplayKHR display);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkReleaseDisplayEXT(
- VkPhysicalDevice physicalDevice,
- VkDisplayKHR display);
-#endif
-
-
-#define VK_EXT_display_surface_counter 1
-#define VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION 1
-#define VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME "VK_EXT_display_surface_counter"
-
-typedef enum VkSurfaceCounterFlagBitsEXT {
- VK_SURFACE_COUNTER_VBLANK_BIT_EXT = 0x00000001,
- VK_SURFACE_COUNTER_VBLANK_EXT = VK_SURFACE_COUNTER_VBLANK_BIT_EXT,
- VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
-} VkSurfaceCounterFlagBitsEXT;
-typedef VkFlags VkSurfaceCounterFlagsEXT;
-typedef struct VkSurfaceCapabilities2EXT {
- VkStructureType sType;
- void* pNext;
- uint32_t minImageCount;
- uint32_t maxImageCount;
- VkExtent2D currentExtent;
- VkExtent2D minImageExtent;
- VkExtent2D maxImageExtent;
- uint32_t maxImageArrayLayers;
- VkSurfaceTransformFlagsKHR supportedTransforms;
- VkSurfaceTransformFlagBitsKHR currentTransform;
- VkCompositeAlphaFlagsKHR supportedCompositeAlpha;
- VkImageUsageFlags supportedUsageFlags;
- VkSurfaceCounterFlagsEXT supportedSurfaceCounters;
-} VkSurfaceCapabilities2EXT;
-
-typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilities2EXT* pSurfaceCapabilities);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilities2EXT(
- VkPhysicalDevice physicalDevice,
- VkSurfaceKHR surface,
- VkSurfaceCapabilities2EXT* pSurfaceCapabilities);
-#endif
-
-
-#define VK_EXT_display_control 1
-#define VK_EXT_DISPLAY_CONTROL_SPEC_VERSION 1
-#define VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME "VK_EXT_display_control"
-
-typedef enum VkDisplayPowerStateEXT {
- VK_DISPLAY_POWER_STATE_OFF_EXT = 0,
- VK_DISPLAY_POWER_STATE_SUSPEND_EXT = 1,
- VK_DISPLAY_POWER_STATE_ON_EXT = 2,
- VK_DISPLAY_POWER_STATE_MAX_ENUM_EXT = 0x7FFFFFFF
-} VkDisplayPowerStateEXT;
-
-typedef enum VkDeviceEventTypeEXT {
- VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0,
- VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF
-} VkDeviceEventTypeEXT;
-
-typedef enum VkDisplayEventTypeEXT {
- VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0,
- VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF
-} VkDisplayEventTypeEXT;
-typedef struct VkDisplayPowerInfoEXT {
- VkStructureType sType;
- const void* pNext;
- VkDisplayPowerStateEXT powerState;
-} VkDisplayPowerInfoEXT;
-
-typedef struct VkDeviceEventInfoEXT {
- VkStructureType sType;
- const void* pNext;
- VkDeviceEventTypeEXT deviceEvent;
-} VkDeviceEventInfoEXT;
-
-typedef struct VkDisplayEventInfoEXT {
- VkStructureType sType;
- const void* pNext;
- VkDisplayEventTypeEXT displayEvent;
-} VkDisplayEventInfoEXT;
-
-typedef struct VkSwapchainCounterCreateInfoEXT {
- VkStructureType sType;
- const void* pNext;
- VkSurfaceCounterFlagsEXT surfaceCounters;
-} VkSwapchainCounterCreateInfoEXT;
-
-typedef VkResult (VKAPI_PTR *PFN_vkDisplayPowerControlEXT)(VkDevice device, VkDisplayKHR display, const VkDisplayPowerInfoEXT* pDisplayPowerInfo);
-typedef VkResult (VKAPI_PTR *PFN_vkRegisterDeviceEventEXT)(VkDevice device, const VkDeviceEventInfoEXT* pDeviceEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence);
-typedef VkResult (VKAPI_PTR *PFN_vkRegisterDisplayEventEXT)(VkDevice device, VkDisplayKHR display, const VkDisplayEventInfoEXT* pDisplayEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence);
-typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainCounterEXT)(VkDevice device, VkSwapchainKHR swapchain, VkSurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkDisplayPowerControlEXT(
- VkDevice device,
- VkDisplayKHR display,
- const VkDisplayPowerInfoEXT* pDisplayPowerInfo);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkRegisterDeviceEventEXT(
- VkDevice device,
- const VkDeviceEventInfoEXT* pDeviceEventInfo,
- const VkAllocationCallbacks* pAllocator,
- VkFence* pFence);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkRegisterDisplayEventEXT(
- VkDevice device,
- VkDisplayKHR display,
- const VkDisplayEventInfoEXT* pDisplayEventInfo,
- const VkAllocationCallbacks* pAllocator,
- VkFence* pFence);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainCounterEXT(
- VkDevice device,
- VkSwapchainKHR swapchain,
- VkSurfaceCounterFlagBitsEXT counter,
- uint64_t* pCounterValue);
-#endif
-
-
-#define VK_GOOGLE_display_timing 1
-#define VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION 1
-#define VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME "VK_GOOGLE_display_timing"
-typedef struct VkRefreshCycleDurationGOOGLE {
- uint64_t refreshDuration;
-} VkRefreshCycleDurationGOOGLE;
-
-typedef struct VkPastPresentationTimingGOOGLE {
- uint32_t presentID;
- uint64_t desiredPresentTime;
- uint64_t actualPresentTime;
- uint64_t earliestPresentTime;
- uint64_t presentMargin;
-} VkPastPresentationTimingGOOGLE;
-
-typedef struct VkPresentTimeGOOGLE {
- uint32_t presentID;
- uint64_t desiredPresentTime;
-} VkPresentTimeGOOGLE;
-
-typedef struct VkPresentTimesInfoGOOGLE {
- VkStructureType sType;
- const void* pNext;
- uint32_t swapchainCount;
- const VkPresentTimeGOOGLE* pTimes;
-} VkPresentTimesInfoGOOGLE;
-
-typedef VkResult (VKAPI_PTR *PFN_vkGetRefreshCycleDurationGOOGLE)(VkDevice device, VkSwapchainKHR swapchain, VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties);
-typedef VkResult (VKAPI_PTR *PFN_vkGetPastPresentationTimingGOOGLE)(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pPresentationTimingCount, VkPastPresentationTimingGOOGLE* pPresentationTimings);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkGetRefreshCycleDurationGOOGLE(
- VkDevice device,
- VkSwapchainKHR swapchain,
- VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetPastPresentationTimingGOOGLE(
- VkDevice device,
- VkSwapchainKHR swapchain,
- uint32_t* pPresentationTimingCount,
- VkPastPresentationTimingGOOGLE* pPresentationTimings);
-#endif
-
-
-#define VK_NV_sample_mask_override_coverage 1
-#define VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION 1
-#define VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME "VK_NV_sample_mask_override_coverage"
-
-
-#define VK_NV_geometry_shader_passthrough 1
-#define VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION 1
-#define VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME "VK_NV_geometry_shader_passthrough"
-
-
-#define VK_NV_viewport_array2 1
-#define VK_NV_VIEWPORT_ARRAY_2_SPEC_VERSION 1
-#define VK_NV_VIEWPORT_ARRAY_2_EXTENSION_NAME "VK_NV_viewport_array2"
-#define VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION VK_NV_VIEWPORT_ARRAY_2_SPEC_VERSION
-#define VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME VK_NV_VIEWPORT_ARRAY_2_EXTENSION_NAME
-
-
-#define VK_NVX_multiview_per_view_attributes 1
-#define VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION 1
-#define VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME "VK_NVX_multiview_per_view_attributes"
-typedef struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {
- VkStructureType sType;
- void* pNext;
- VkBool32 perViewPositionAllComponents;
-} VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX;
-
-
-
-#define VK_NV_viewport_swizzle 1
-#define VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION 1
-#define VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME "VK_NV_viewport_swizzle"
-
-typedef enum VkViewportCoordinateSwizzleNV {
- VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV = 0,
- VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV = 1,
- VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV = 2,
- VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV = 3,
- VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV = 4,
- VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV = 5,
- VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV = 6,
- VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV = 7,
- VK_VIEWPORT_COORDINATE_SWIZZLE_MAX_ENUM_NV = 0x7FFFFFFF
-} VkViewportCoordinateSwizzleNV;
-typedef VkFlags VkPipelineViewportSwizzleStateCreateFlagsNV;
-typedef struct VkViewportSwizzleNV {
- VkViewportCoordinateSwizzleNV x;
- VkViewportCoordinateSwizzleNV y;
- VkViewportCoordinateSwizzleNV z;
- VkViewportCoordinateSwizzleNV w;
-} VkViewportSwizzleNV;
-
-typedef struct VkPipelineViewportSwizzleStateCreateInfoNV {
- VkStructureType sType;
- const void* pNext;
- VkPipelineViewportSwizzleStateCreateFlagsNV flags;
- uint32_t viewportCount;
- const VkViewportSwizzleNV* pViewportSwizzles;
-} VkPipelineViewportSwizzleStateCreateInfoNV;
-
-
-
-#define VK_EXT_discard_rectangles 1
-#define VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION 1
-#define VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME "VK_EXT_discard_rectangles"
-
-typedef enum VkDiscardRectangleModeEXT {
- VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0,
- VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1,
- VK_DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT = 0x7FFFFFFF
-} VkDiscardRectangleModeEXT;
-typedef VkFlags VkPipelineDiscardRectangleStateCreateFlagsEXT;
-typedef struct VkPhysicalDeviceDiscardRectanglePropertiesEXT {
- VkStructureType sType;
- void* pNext;
- uint32_t maxDiscardRectangles;
-} VkPhysicalDeviceDiscardRectanglePropertiesEXT;
-
-typedef struct VkPipelineDiscardRectangleStateCreateInfoEXT {
- VkStructureType sType;
- const void* pNext;
- VkPipelineDiscardRectangleStateCreateFlagsEXT flags;
- VkDiscardRectangleModeEXT discardRectangleMode;
- uint32_t discardRectangleCount;
- const VkRect2D* pDiscardRectangles;
-} VkPipelineDiscardRectangleStateCreateInfoEXT;
-
-typedef void (VKAPI_PTR *PFN_vkCmdSetDiscardRectangleEXT)(VkCommandBuffer commandBuffer, uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const VkRect2D* pDiscardRectangles);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR void VKAPI_CALL vkCmdSetDiscardRectangleEXT(
- VkCommandBuffer commandBuffer,
- uint32_t firstDiscardRectangle,
- uint32_t discardRectangleCount,
- const VkRect2D* pDiscardRectangles);
-#endif
-
-
-#define VK_EXT_conservative_rasterization 1
-#define VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION 1
-#define VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME "VK_EXT_conservative_rasterization"
-
-typedef enum VkConservativeRasterizationModeEXT {
- VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT = 0,
- VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT = 1,
- VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT = 2,
- VK_CONSERVATIVE_RASTERIZATION_MODE_MAX_ENUM_EXT = 0x7FFFFFFF
-} VkConservativeRasterizationModeEXT;
-typedef VkFlags VkPipelineRasterizationConservativeStateCreateFlagsEXT;
-typedef struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT {
- VkStructureType sType;
- void* pNext;
- float primitiveOverestimationSize;
- float maxExtraPrimitiveOverestimationSize;
- float extraPrimitiveOverestimationSizeGranularity;
- VkBool32 primitiveUnderestimation;
- VkBool32 conservativePointAndLineRasterization;
- VkBool32 degenerateTrianglesRasterized;
- VkBool32 degenerateLinesRasterized;
- VkBool32 fullyCoveredFragmentShaderInputVariable;
- VkBool32 conservativeRasterizationPostDepthCoverage;
-} VkPhysicalDeviceConservativeRasterizationPropertiesEXT;
-
-typedef struct VkPipelineRasterizationConservativeStateCreateInfoEXT {
- VkStructureType sType;
- const void* pNext;
- VkPipelineRasterizationConservativeStateCreateFlagsEXT flags;
- VkConservativeRasterizationModeEXT conservativeRasterizationMode;
- float extraPrimitiveOverestimationSize;
-} VkPipelineRasterizationConservativeStateCreateInfoEXT;
-
-
-
-#define VK_EXT_depth_clip_enable 1
-#define VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION 1
-#define VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME "VK_EXT_depth_clip_enable"
-typedef VkFlags VkPipelineRasterizationDepthClipStateCreateFlagsEXT;
-typedef struct VkPhysicalDeviceDepthClipEnableFeaturesEXT {
- VkStructureType sType;
- void* pNext;
- VkBool32 depthClipEnable;
-} VkPhysicalDeviceDepthClipEnableFeaturesEXT;
-
-typedef struct VkPipelineRasterizationDepthClipStateCreateInfoEXT {
- VkStructureType sType;
- const void* pNext;
- VkPipelineRasterizationDepthClipStateCreateFlagsEXT flags;
- VkBool32 depthClipEnable;
-} VkPipelineRasterizationDepthClipStateCreateInfoEXT;
-
-
-
-#define VK_EXT_swapchain_colorspace 1
-#define VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION 4
-#define VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME "VK_EXT_swapchain_colorspace"
-
-
-#define VK_EXT_hdr_metadata 1
-#define VK_EXT_HDR_METADATA_SPEC_VERSION 2
-#define VK_EXT_HDR_METADATA_EXTENSION_NAME "VK_EXT_hdr_metadata"
-typedef struct VkXYColorEXT {
- float x;
- float y;
-} VkXYColorEXT;
-
-typedef struct VkHdrMetadataEXT {
- VkStructureType sType;
- const void* pNext;
- VkXYColorEXT displayPrimaryRed;
- VkXYColorEXT displayPrimaryGreen;
- VkXYColorEXT displayPrimaryBlue;
- VkXYColorEXT whitePoint;
- float maxLuminance;
- float minLuminance;
- float maxContentLightLevel;
- float maxFrameAverageLightLevel;
-} VkHdrMetadataEXT;
-
-typedef void (VKAPI_PTR *PFN_vkSetHdrMetadataEXT)(VkDevice device, uint32_t swapchainCount, const VkSwapchainKHR* pSwapchains, const VkHdrMetadataEXT* pMetadata);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR void VKAPI_CALL vkSetHdrMetadataEXT(
- VkDevice device,
- uint32_t swapchainCount,
- const VkSwapchainKHR* pSwapchains,
- const VkHdrMetadataEXT* pMetadata);
-#endif
-
-
-#define VK_MVK_moltenvk 1
-#define VK_MVK_MOLTENVK_SPEC_VERSION 0
-#define VK_MVK_MOLTENVK_EXTENSION_NAME "VK_MVK_moltenvk"
-typedef void (VKAPI_PTR *PFN_vkGetMTLDeviceMVK)(VkPhysicalDevice physicalDevice, void** pMTLDevice);
-typedef VkResult (VKAPI_PTR *PFN_vkSetMTLTextureMVK)(VkImage image, void* mtlTexture);
-typedef void (VKAPI_PTR *PFN_vkGetMTLTextureMVK)(VkImage image, void** pMTLTexture);
-typedef void (VKAPI_PTR *PFN_vkGetMTLBufferMVK)(VkBuffer buffer, void** pMTLBuffer);
-typedef VkResult (VKAPI_PTR *PFN_vkUseIOSurfaceMVK)(VkImage image, void* ioSurface);
-typedef void (VKAPI_PTR *PFN_vkGetIOSurfaceMVK)(VkImage image, void** pIOSurface);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR void VKAPI_CALL vkGetMTLDeviceMVK(
- VkPhysicalDevice physicalDevice,
- void** pMTLDevice);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkSetMTLTextureMVK(
- VkImage image,
- void* mtlTexture);
-
-VKAPI_ATTR void VKAPI_CALL vkGetMTLTextureMVK(
- VkImage image,
- void** pMTLTexture);
-
-VKAPI_ATTR void VKAPI_CALL vkGetMTLBufferMVK(
- VkBuffer buffer,
- void** pMTLBuffer);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkUseIOSurfaceMVK(
- VkImage image,
- void* ioSurface);
-
-VKAPI_ATTR void VKAPI_CALL vkGetIOSurfaceMVK(
- VkImage image,
- void** pIOSurface);
-#endif
-
-
-#define VK_EXT_external_memory_dma_buf 1
-#define VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION 1
-#define VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME "VK_EXT_external_memory_dma_buf"
-
-
-#define VK_EXT_queue_family_foreign 1
-#define VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION 1
-#define VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME "VK_EXT_queue_family_foreign"
-#define VK_QUEUE_FAMILY_FOREIGN_EXT (~2U)
-
-
-#define VK_EXT_debug_utils 1
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDebugUtilsMessengerEXT)
-#define VK_EXT_DEBUG_UTILS_SPEC_VERSION 2
-#define VK_EXT_DEBUG_UTILS_EXTENSION_NAME "VK_EXT_debug_utils"
-typedef VkFlags VkDebugUtilsMessengerCallbackDataFlagsEXT;
-
-typedef enum VkDebugUtilsMessageSeverityFlagBitsEXT {
- VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT = 0x00000001,
- VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT = 0x00000010,
- VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT = 0x00000100,
- VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT = 0x00001000,
- VK_DEBUG_UTILS_MESSAGE_SEVERITY_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
-} VkDebugUtilsMessageSeverityFlagBitsEXT;
-
-typedef enum VkDebugUtilsMessageTypeFlagBitsEXT {
- VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT = 0x00000001,
- VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT = 0x00000002,
- VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT = 0x00000004,
- VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
-} VkDebugUtilsMessageTypeFlagBitsEXT;
-typedef VkFlags VkDebugUtilsMessageTypeFlagsEXT;
-typedef VkFlags VkDebugUtilsMessageSeverityFlagsEXT;
-typedef VkFlags VkDebugUtilsMessengerCreateFlagsEXT;
-typedef struct VkDebugUtilsLabelEXT {
- VkStructureType sType;
- const void* pNext;
- const char* pLabelName;
- float color[4];
-} VkDebugUtilsLabelEXT;
-
-typedef struct VkDebugUtilsObjectNameInfoEXT {
- VkStructureType sType;
- const void* pNext;
- VkObjectType objectType;
- uint64_t objectHandle;
- const char* pObjectName;
-} VkDebugUtilsObjectNameInfoEXT;
-
-typedef struct VkDebugUtilsMessengerCallbackDataEXT {
- VkStructureType sType;
- const void* pNext;
- VkDebugUtilsMessengerCallbackDataFlagsEXT flags;
- const char* pMessageIdName;
- int32_t messageIdNumber;
- const char* pMessage;
- uint32_t queueLabelCount;
- VkDebugUtilsLabelEXT* pQueueLabels;
- uint32_t cmdBufLabelCount;
- VkDebugUtilsLabelEXT* pCmdBufLabels;
- uint32_t objectCount;
- VkDebugUtilsObjectNameInfoEXT* pObjects;
-} VkDebugUtilsMessengerCallbackDataEXT;
-
-typedef VkBool32 (VKAPI_PTR *PFN_vkDebugUtilsMessengerCallbackEXT)(
- VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
- VkDebugUtilsMessageTypeFlagsEXT messageTypes,
- const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData,
- void* pUserData);
-
-typedef struct VkDebugUtilsMessengerCreateInfoEXT {
- VkStructureType sType;
- const void* pNext;
- VkDebugUtilsMessengerCreateFlagsEXT flags;
- VkDebugUtilsMessageSeverityFlagsEXT messageSeverity;
- VkDebugUtilsMessageTypeFlagsEXT messageType;
- PFN_vkDebugUtilsMessengerCallbackEXT pfnUserCallback;
- void* pUserData;
-} VkDebugUtilsMessengerCreateInfoEXT;
-
-typedef struct VkDebugUtilsObjectTagInfoEXT {
- VkStructureType sType;
- const void* pNext;
- VkObjectType objectType;
- uint64_t objectHandle;
- uint64_t tagName;
- size_t tagSize;
- const void* pTag;
-} VkDebugUtilsObjectTagInfoEXT;
-
-typedef VkResult (VKAPI_PTR *PFN_vkSetDebugUtilsObjectNameEXT)(VkDevice device, const VkDebugUtilsObjectNameInfoEXT* pNameInfo);
-typedef VkResult (VKAPI_PTR *PFN_vkSetDebugUtilsObjectTagEXT)(VkDevice device, const VkDebugUtilsObjectTagInfoEXT* pTagInfo);
-typedef void (VKAPI_PTR *PFN_vkQueueBeginDebugUtilsLabelEXT)(VkQueue queue, const VkDebugUtilsLabelEXT* pLabelInfo);
-typedef void (VKAPI_PTR *PFN_vkQueueEndDebugUtilsLabelEXT)(VkQueue queue);
-typedef void (VKAPI_PTR *PFN_vkQueueInsertDebugUtilsLabelEXT)(VkQueue queue, const VkDebugUtilsLabelEXT* pLabelInfo);
-typedef void (VKAPI_PTR *PFN_vkCmdBeginDebugUtilsLabelEXT)(VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo);
-typedef void (VKAPI_PTR *PFN_vkCmdEndDebugUtilsLabelEXT)(VkCommandBuffer commandBuffer);
-typedef void (VKAPI_PTR *PFN_vkCmdInsertDebugUtilsLabelEXT)(VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo);
-typedef VkResult (VKAPI_PTR *PFN_vkCreateDebugUtilsMessengerEXT)(VkInstance instance, const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugUtilsMessengerEXT* pMessenger);
-typedef void (VKAPI_PTR *PFN_vkDestroyDebugUtilsMessengerEXT)(VkInstance instance, VkDebugUtilsMessengerEXT messenger, const VkAllocationCallbacks* pAllocator);
-typedef void (VKAPI_PTR *PFN_vkSubmitDebugUtilsMessageEXT)(VkInstance instance, VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, VkDebugUtilsMessageTypeFlagsEXT messageTypes, const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkSetDebugUtilsObjectNameEXT(
- VkDevice device,
- const VkDebugUtilsObjectNameInfoEXT* pNameInfo);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkSetDebugUtilsObjectTagEXT(
- VkDevice device,
- const VkDebugUtilsObjectTagInfoEXT* pTagInfo);
-
-VKAPI_ATTR void VKAPI_CALL vkQueueBeginDebugUtilsLabelEXT(
- VkQueue queue,
- const VkDebugUtilsLabelEXT* pLabelInfo);
-
-VKAPI_ATTR void VKAPI_CALL vkQueueEndDebugUtilsLabelEXT(
- VkQueue queue);
-
-VKAPI_ATTR void VKAPI_CALL vkQueueInsertDebugUtilsLabelEXT(
- VkQueue queue,
- const VkDebugUtilsLabelEXT* pLabelInfo);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdBeginDebugUtilsLabelEXT(
- VkCommandBuffer commandBuffer,
- const VkDebugUtilsLabelEXT* pLabelInfo);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdEndDebugUtilsLabelEXT(
- VkCommandBuffer commandBuffer);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdInsertDebugUtilsLabelEXT(
- VkCommandBuffer commandBuffer,
- const VkDebugUtilsLabelEXT* pLabelInfo);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateDebugUtilsMessengerEXT(
- VkInstance instance,
- const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkDebugUtilsMessengerEXT* pMessenger);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroyDebugUtilsMessengerEXT(
- VkInstance instance,
- VkDebugUtilsMessengerEXT messenger,
- const VkAllocationCallbacks* pAllocator);
-
-VKAPI_ATTR void VKAPI_CALL vkSubmitDebugUtilsMessageEXT(
- VkInstance instance,
- VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
- VkDebugUtilsMessageTypeFlagsEXT messageTypes,
- const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData);
-#endif
-
-
-#define VK_EXT_sampler_filter_minmax 1
-#define VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION 2
-#define VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME "VK_EXT_sampler_filter_minmax"
-typedef VkSamplerReductionMode VkSamplerReductionModeEXT;
-
-typedef VkSamplerReductionModeCreateInfo VkSamplerReductionModeCreateInfoEXT;
-
-typedef VkPhysicalDeviceSamplerFilterMinmaxProperties VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT;
-
-
-
-#define VK_AMD_gpu_shader_int16 1
-#define VK_AMD_GPU_SHADER_INT16_SPEC_VERSION 2
-#define VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME "VK_AMD_gpu_shader_int16"
-
-
-#define VK_AMD_mixed_attachment_samples 1
-#define VK_AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION 1
-#define VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME "VK_AMD_mixed_attachment_samples"
-
-
-#define VK_AMD_shader_fragment_mask 1
-#define VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION 1
-#define VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME "VK_AMD_shader_fragment_mask"
-
-
-#define VK_EXT_inline_uniform_block 1
-#define VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION 1
-#define VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME "VK_EXT_inline_uniform_block"
-typedef struct VkPhysicalDeviceInlineUniformBlockFeaturesEXT {
- VkStructureType sType;
- void* pNext;
- VkBool32 inlineUniformBlock;
- VkBool32 descriptorBindingInlineUniformBlockUpdateAfterBind;
-} VkPhysicalDeviceInlineUniformBlockFeaturesEXT;
-
-typedef struct VkPhysicalDeviceInlineUniformBlockPropertiesEXT {
- VkStructureType sType;
- void* pNext;
- uint32_t maxInlineUniformBlockSize;
- uint32_t maxPerStageDescriptorInlineUniformBlocks;
- uint32_t maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks;
- uint32_t maxDescriptorSetInlineUniformBlocks;
- uint32_t maxDescriptorSetUpdateAfterBindInlineUniformBlocks;
-} VkPhysicalDeviceInlineUniformBlockPropertiesEXT;
-
-typedef struct VkWriteDescriptorSetInlineUniformBlockEXT {
- VkStructureType sType;
- const void* pNext;
- uint32_t dataSize;
- const void* pData;
-} VkWriteDescriptorSetInlineUniformBlockEXT;
-
-typedef struct VkDescriptorPoolInlineUniformBlockCreateInfoEXT {
- VkStructureType sType;
- const void* pNext;
- uint32_t maxInlineUniformBlockBindings;
-} VkDescriptorPoolInlineUniformBlockCreateInfoEXT;
-
-
-
-#define VK_EXT_shader_stencil_export 1
-#define VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION 1
-#define VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME "VK_EXT_shader_stencil_export"
-
-
-#define VK_EXT_sample_locations 1
-#define VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION 1
-#define VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME "VK_EXT_sample_locations"
-typedef struct VkSampleLocationEXT {
- float x;
- float y;
-} VkSampleLocationEXT;
-
-typedef struct VkSampleLocationsInfoEXT {
- VkStructureType sType;
- const void* pNext;
- VkSampleCountFlagBits sampleLocationsPerPixel;
- VkExtent2D sampleLocationGridSize;
- uint32_t sampleLocationsCount;
- const VkSampleLocationEXT* pSampleLocations;
-} VkSampleLocationsInfoEXT;
-
-typedef struct VkAttachmentSampleLocationsEXT {
- uint32_t attachmentIndex;
- VkSampleLocationsInfoEXT sampleLocationsInfo;
-} VkAttachmentSampleLocationsEXT;
-
-typedef struct VkSubpassSampleLocationsEXT {
- uint32_t subpassIndex;
- VkSampleLocationsInfoEXT sampleLocationsInfo;
-} VkSubpassSampleLocationsEXT;
-
-typedef struct VkRenderPassSampleLocationsBeginInfoEXT {
- VkStructureType sType;
- const void* pNext;
- uint32_t attachmentInitialSampleLocationsCount;
- const VkAttachmentSampleLocationsEXT* pAttachmentInitialSampleLocations;
- uint32_t postSubpassSampleLocationsCount;
- const VkSubpassSampleLocationsEXT* pPostSubpassSampleLocations;
-} VkRenderPassSampleLocationsBeginInfoEXT;
-
-typedef struct VkPipelineSampleLocationsStateCreateInfoEXT {
- VkStructureType sType;
- const void* pNext;
- VkBool32 sampleLocationsEnable;
- VkSampleLocationsInfoEXT sampleLocationsInfo;
-} VkPipelineSampleLocationsStateCreateInfoEXT;
-
-typedef struct VkPhysicalDeviceSampleLocationsPropertiesEXT {
- VkStructureType sType;
- void* pNext;
- VkSampleCountFlags sampleLocationSampleCounts;
- VkExtent2D maxSampleLocationGridSize;
- float sampleLocationCoordinateRange[2];
- uint32_t sampleLocationSubPixelBits;
- VkBool32 variableSampleLocations;
-} VkPhysicalDeviceSampleLocationsPropertiesEXT;
-
-typedef struct VkMultisamplePropertiesEXT {
- VkStructureType sType;
- void* pNext;
- VkExtent2D maxSampleLocationGridSize;
-} VkMultisamplePropertiesEXT;
-
-typedef void (VKAPI_PTR *PFN_vkCmdSetSampleLocationsEXT)(VkCommandBuffer commandBuffer, const VkSampleLocationsInfoEXT* pSampleLocationsInfo);
-typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT)(VkPhysicalDevice physicalDevice, VkSampleCountFlagBits samples, VkMultisamplePropertiesEXT* pMultisampleProperties);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR void VKAPI_CALL vkCmdSetSampleLocationsEXT(
- VkCommandBuffer commandBuffer,
- const VkSampleLocationsInfoEXT* pSampleLocationsInfo);
-
-VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMultisamplePropertiesEXT(
- VkPhysicalDevice physicalDevice,
- VkSampleCountFlagBits samples,
- VkMultisamplePropertiesEXT* pMultisampleProperties);
-#endif
-
-
-#define VK_EXT_blend_operation_advanced 1
-#define VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION 2
-#define VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME "VK_EXT_blend_operation_advanced"
-
-typedef enum VkBlendOverlapEXT {
- VK_BLEND_OVERLAP_UNCORRELATED_EXT = 0,
- VK_BLEND_OVERLAP_DISJOINT_EXT = 1,
- VK_BLEND_OVERLAP_CONJOINT_EXT = 2,
- VK_BLEND_OVERLAP_MAX_ENUM_EXT = 0x7FFFFFFF
-} VkBlendOverlapEXT;
-typedef struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT {
- VkStructureType sType;
- void* pNext;
- VkBool32 advancedBlendCoherentOperations;
-} VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT;
-
-typedef struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT {
- VkStructureType sType;
- void* pNext;
- uint32_t advancedBlendMaxColorAttachments;
- VkBool32 advancedBlendIndependentBlend;
- VkBool32 advancedBlendNonPremultipliedSrcColor;
- VkBool32 advancedBlendNonPremultipliedDstColor;
- VkBool32 advancedBlendCorrelatedOverlap;
- VkBool32 advancedBlendAllOperations;
-} VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT;
-
-typedef struct VkPipelineColorBlendAdvancedStateCreateInfoEXT {
- VkStructureType sType;
- const void* pNext;
- VkBool32 srcPremultiplied;
- VkBool32 dstPremultiplied;
- VkBlendOverlapEXT blendOverlap;
-} VkPipelineColorBlendAdvancedStateCreateInfoEXT;
-
-
-
-#define VK_NV_fragment_coverage_to_color 1
-#define VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION 1
-#define VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME "VK_NV_fragment_coverage_to_color"
-typedef VkFlags VkPipelineCoverageToColorStateCreateFlagsNV;
-typedef struct VkPipelineCoverageToColorStateCreateInfoNV {
- VkStructureType sType;
- const void* pNext;
- VkPipelineCoverageToColorStateCreateFlagsNV flags;
- VkBool32 coverageToColorEnable;
- uint32_t coverageToColorLocation;
-} VkPipelineCoverageToColorStateCreateInfoNV;
-
-
-
-#define VK_NV_framebuffer_mixed_samples 1
-#define VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION 1
-#define VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME "VK_NV_framebuffer_mixed_samples"
-
-typedef enum VkCoverageModulationModeNV {
- VK_COVERAGE_MODULATION_MODE_NONE_NV = 0,
- VK_COVERAGE_MODULATION_MODE_RGB_NV = 1,
- VK_COVERAGE_MODULATION_MODE_ALPHA_NV = 2,
- VK_COVERAGE_MODULATION_MODE_RGBA_NV = 3,
- VK_COVERAGE_MODULATION_MODE_MAX_ENUM_NV = 0x7FFFFFFF
-} VkCoverageModulationModeNV;
-typedef VkFlags VkPipelineCoverageModulationStateCreateFlagsNV;
-typedef struct VkPipelineCoverageModulationStateCreateInfoNV {
- VkStructureType sType;
- const void* pNext;
- VkPipelineCoverageModulationStateCreateFlagsNV flags;
- VkCoverageModulationModeNV coverageModulationMode;
- VkBool32 coverageModulationTableEnable;
- uint32_t coverageModulationTableCount;
- const float* pCoverageModulationTable;
-} VkPipelineCoverageModulationStateCreateInfoNV;
-
-
-
-#define VK_NV_fill_rectangle 1
-#define VK_NV_FILL_RECTANGLE_SPEC_VERSION 1
-#define VK_NV_FILL_RECTANGLE_EXTENSION_NAME "VK_NV_fill_rectangle"
-
-
-#define VK_NV_shader_sm_builtins 1
-#define VK_NV_SHADER_SM_BUILTINS_SPEC_VERSION 1
-#define VK_NV_SHADER_SM_BUILTINS_EXTENSION_NAME "VK_NV_shader_sm_builtins"
-typedef struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV {
- VkStructureType sType;
- void* pNext;
- uint32_t shaderSMCount;
- uint32_t shaderWarpsPerSM;
-} VkPhysicalDeviceShaderSMBuiltinsPropertiesNV;
-
-typedef struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV {
- VkStructureType sType;
- void* pNext;
- VkBool32 shaderSMBuiltins;
-} VkPhysicalDeviceShaderSMBuiltinsFeaturesNV;
-
-
-
-#define VK_EXT_post_depth_coverage 1
-#define VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION 1
-#define VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME "VK_EXT_post_depth_coverage"
-
-
-#define VK_EXT_image_drm_format_modifier 1
-#define VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION 2
-#define VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME "VK_EXT_image_drm_format_modifier"
-typedef struct VkDrmFormatModifierPropertiesEXT {
- uint64_t drmFormatModifier;
- uint32_t drmFormatModifierPlaneCount;
- VkFormatFeatureFlags drmFormatModifierTilingFeatures;
-} VkDrmFormatModifierPropertiesEXT;
-
-typedef struct VkDrmFormatModifierPropertiesListEXT {
- VkStructureType sType;
- void* pNext;
- uint32_t drmFormatModifierCount;
- VkDrmFormatModifierPropertiesEXT* pDrmFormatModifierProperties;
-} VkDrmFormatModifierPropertiesListEXT;
-
-typedef struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT {
- VkStructureType sType;
- const void* pNext;
- uint64_t drmFormatModifier;
- VkSharingMode sharingMode;
- uint32_t queueFamilyIndexCount;
- const uint32_t* pQueueFamilyIndices;
-} VkPhysicalDeviceImageDrmFormatModifierInfoEXT;
-
-typedef struct VkImageDrmFormatModifierListCreateInfoEXT {
- VkStructureType sType;
- const void* pNext;
- uint32_t drmFormatModifierCount;
- const uint64_t* pDrmFormatModifiers;
-} VkImageDrmFormatModifierListCreateInfoEXT;
-
-typedef struct VkImageDrmFormatModifierExplicitCreateInfoEXT {
- VkStructureType sType;
- const void* pNext;
- uint64_t drmFormatModifier;
- uint32_t drmFormatModifierPlaneCount;
- const VkSubresourceLayout* pPlaneLayouts;
-} VkImageDrmFormatModifierExplicitCreateInfoEXT;
-
-typedef struct VkImageDrmFormatModifierPropertiesEXT {
- VkStructureType sType;
- void* pNext;
- uint64_t drmFormatModifier;
-} VkImageDrmFormatModifierPropertiesEXT;
-
-typedef struct VkDrmFormatModifierProperties2EXT {
- uint64_t drmFormatModifier;
- uint32_t drmFormatModifierPlaneCount;
- VkFormatFeatureFlags2KHR drmFormatModifierTilingFeatures;
-} VkDrmFormatModifierProperties2EXT;
-
-typedef struct VkDrmFormatModifierPropertiesList2EXT {
- VkStructureType sType;
- void* pNext;
- uint32_t drmFormatModifierCount;
- VkDrmFormatModifierProperties2EXT* pDrmFormatModifierProperties;
-} VkDrmFormatModifierPropertiesList2EXT;
-
-typedef VkResult (VKAPI_PTR *PFN_vkGetImageDrmFormatModifierPropertiesEXT)(VkDevice device, VkImage image, VkImageDrmFormatModifierPropertiesEXT* pProperties);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkGetImageDrmFormatModifierPropertiesEXT(
- VkDevice device,
- VkImage image,
- VkImageDrmFormatModifierPropertiesEXT* pProperties);
-#endif
-
-
-#define VK_EXT_validation_cache 1
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkValidationCacheEXT)
-#define VK_EXT_VALIDATION_CACHE_SPEC_VERSION 1
-#define VK_EXT_VALIDATION_CACHE_EXTENSION_NAME "VK_EXT_validation_cache"
-
-typedef enum VkValidationCacheHeaderVersionEXT {
- VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1,
- VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 0x7FFFFFFF
-} VkValidationCacheHeaderVersionEXT;
-typedef VkFlags VkValidationCacheCreateFlagsEXT;
-typedef struct VkValidationCacheCreateInfoEXT {
- VkStructureType sType;
- const void* pNext;
- VkValidationCacheCreateFlagsEXT flags;
- size_t initialDataSize;
- const void* pInitialData;
-} VkValidationCacheCreateInfoEXT;
-
-typedef struct VkShaderModuleValidationCacheCreateInfoEXT {
- VkStructureType sType;
- const void* pNext;
- VkValidationCacheEXT validationCache;
-} VkShaderModuleValidationCacheCreateInfoEXT;
-
-typedef VkResult (VKAPI_PTR *PFN_vkCreateValidationCacheEXT)(VkDevice device, const VkValidationCacheCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkValidationCacheEXT* pValidationCache);
-typedef void (VKAPI_PTR *PFN_vkDestroyValidationCacheEXT)(VkDevice device, VkValidationCacheEXT validationCache, const VkAllocationCallbacks* pAllocator);
-typedef VkResult (VKAPI_PTR *PFN_vkMergeValidationCachesEXT)(VkDevice device, VkValidationCacheEXT dstCache, uint32_t srcCacheCount, const VkValidationCacheEXT* pSrcCaches);
-typedef VkResult (VKAPI_PTR *PFN_vkGetValidationCacheDataEXT)(VkDevice device, VkValidationCacheEXT validationCache, size_t* pDataSize, void* pData);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateValidationCacheEXT(
- VkDevice device,
- const VkValidationCacheCreateInfoEXT* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkValidationCacheEXT* pValidationCache);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroyValidationCacheEXT(
- VkDevice device,
- VkValidationCacheEXT validationCache,
- const VkAllocationCallbacks* pAllocator);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkMergeValidationCachesEXT(
- VkDevice device,
- VkValidationCacheEXT dstCache,
- uint32_t srcCacheCount,
- const VkValidationCacheEXT* pSrcCaches);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetValidationCacheDataEXT(
- VkDevice device,
- VkValidationCacheEXT validationCache,
- size_t* pDataSize,
- void* pData);
-#endif
-
-
-#define VK_EXT_descriptor_indexing 1
-#define VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION 2
-#define VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME "VK_EXT_descriptor_indexing"
-typedef VkDescriptorBindingFlagBits VkDescriptorBindingFlagBitsEXT;
-
-typedef VkDescriptorBindingFlags VkDescriptorBindingFlagsEXT;
-
-typedef VkDescriptorSetLayoutBindingFlagsCreateInfo VkDescriptorSetLayoutBindingFlagsCreateInfoEXT;
-
-typedef VkPhysicalDeviceDescriptorIndexingFeatures VkPhysicalDeviceDescriptorIndexingFeaturesEXT;
-
-typedef VkPhysicalDeviceDescriptorIndexingProperties VkPhysicalDeviceDescriptorIndexingPropertiesEXT;
-
-typedef VkDescriptorSetVariableDescriptorCountAllocateInfo VkDescriptorSetVariableDescriptorCountAllocateInfoEXT;
-
-typedef VkDescriptorSetVariableDescriptorCountLayoutSupport VkDescriptorSetVariableDescriptorCountLayoutSupportEXT;
-
-
-
-#define VK_EXT_shader_viewport_index_layer 1
-#define VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION 1
-#define VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME "VK_EXT_shader_viewport_index_layer"
-
-
-#define VK_NV_shading_rate_image 1
-#define VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION 3
-#define VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME "VK_NV_shading_rate_image"
-
-typedef enum VkShadingRatePaletteEntryNV {
- VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV = 0,
- VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV = 1,
- VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV = 2,
- VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV = 3,
- VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV = 4,
- VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV = 5,
- VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV = 6,
- VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV = 7,
- VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV = 8,
- VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV = 9,
- VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV = 10,
- VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV = 11,
- VK_SHADING_RATE_PALETTE_ENTRY_MAX_ENUM_NV = 0x7FFFFFFF
-} VkShadingRatePaletteEntryNV;
-
-typedef enum VkCoarseSampleOrderTypeNV {
- VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV = 0,
- VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV = 1,
- VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV = 2,
- VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV = 3,
- VK_COARSE_SAMPLE_ORDER_TYPE_MAX_ENUM_NV = 0x7FFFFFFF
-} VkCoarseSampleOrderTypeNV;
-typedef struct VkShadingRatePaletteNV {
- uint32_t shadingRatePaletteEntryCount;
- const VkShadingRatePaletteEntryNV* pShadingRatePaletteEntries;
-} VkShadingRatePaletteNV;
-
-typedef struct VkPipelineViewportShadingRateImageStateCreateInfoNV {
- VkStructureType sType;
- const void* pNext;
- VkBool32 shadingRateImageEnable;
- uint32_t viewportCount;
- const VkShadingRatePaletteNV* pShadingRatePalettes;
-} VkPipelineViewportShadingRateImageStateCreateInfoNV;
-
-typedef struct VkPhysicalDeviceShadingRateImageFeaturesNV {
- VkStructureType sType;
- void* pNext;
- VkBool32 shadingRateImage;
- VkBool32 shadingRateCoarseSampleOrder;
-} VkPhysicalDeviceShadingRateImageFeaturesNV;
-
-typedef struct VkPhysicalDeviceShadingRateImagePropertiesNV {
- VkStructureType sType;
- void* pNext;
- VkExtent2D shadingRateTexelSize;
- uint32_t shadingRatePaletteSize;
- uint32_t shadingRateMaxCoarseSamples;
-} VkPhysicalDeviceShadingRateImagePropertiesNV;
-
-typedef struct VkCoarseSampleLocationNV {
- uint32_t pixelX;
- uint32_t pixelY;
- uint32_t sample;
-} VkCoarseSampleLocationNV;
-
-typedef struct VkCoarseSampleOrderCustomNV {
- VkShadingRatePaletteEntryNV shadingRate;
- uint32_t sampleCount;
- uint32_t sampleLocationCount;
- const VkCoarseSampleLocationNV* pSampleLocations;
-} VkCoarseSampleOrderCustomNV;
-
-typedef struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV {
- VkStructureType sType;
- const void* pNext;
- VkCoarseSampleOrderTypeNV sampleOrderType;
- uint32_t customSampleOrderCount;
- const VkCoarseSampleOrderCustomNV* pCustomSampleOrders;
-} VkPipelineViewportCoarseSampleOrderStateCreateInfoNV;
-
-typedef void (VKAPI_PTR *PFN_vkCmdBindShadingRateImageNV)(VkCommandBuffer commandBuffer, VkImageView imageView, VkImageLayout imageLayout);
-typedef void (VKAPI_PTR *PFN_vkCmdSetViewportShadingRatePaletteNV)(VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkShadingRatePaletteNV* pShadingRatePalettes);
-typedef void (VKAPI_PTR *PFN_vkCmdSetCoarseSampleOrderNV)(VkCommandBuffer commandBuffer, VkCoarseSampleOrderTypeNV sampleOrderType, uint32_t customSampleOrderCount, const VkCoarseSampleOrderCustomNV* pCustomSampleOrders);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR void VKAPI_CALL vkCmdBindShadingRateImageNV(
- VkCommandBuffer commandBuffer,
- VkImageView imageView,
- VkImageLayout imageLayout);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdSetViewportShadingRatePaletteNV(
- VkCommandBuffer commandBuffer,
- uint32_t firstViewport,
- uint32_t viewportCount,
- const VkShadingRatePaletteNV* pShadingRatePalettes);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdSetCoarseSampleOrderNV(
- VkCommandBuffer commandBuffer,
- VkCoarseSampleOrderTypeNV sampleOrderType,
- uint32_t customSampleOrderCount,
- const VkCoarseSampleOrderCustomNV* pCustomSampleOrders);
-#endif
-
-
-#define VK_NV_ray_tracing 1
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkAccelerationStructureNV)
-#define VK_NV_RAY_TRACING_SPEC_VERSION 3
-#define VK_NV_RAY_TRACING_EXTENSION_NAME "VK_NV_ray_tracing"
-#define VK_SHADER_UNUSED_KHR (~0U)
-#define VK_SHADER_UNUSED_NV VK_SHADER_UNUSED_KHR
-
-typedef enum VkRayTracingShaderGroupTypeKHR {
- VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR = 0,
- VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR = 1,
- VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR = 2,
- VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV = VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR,
- VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV = VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR,
- VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV = VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR,
- VK_RAY_TRACING_SHADER_GROUP_TYPE_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkRayTracingShaderGroupTypeKHR;
-typedef VkRayTracingShaderGroupTypeKHR VkRayTracingShaderGroupTypeNV;
-
-
-typedef enum VkGeometryTypeKHR {
- VK_GEOMETRY_TYPE_TRIANGLES_KHR = 0,
- VK_GEOMETRY_TYPE_AABBS_KHR = 1,
- VK_GEOMETRY_TYPE_INSTANCES_KHR = 2,
- VK_GEOMETRY_TYPE_TRIANGLES_NV = VK_GEOMETRY_TYPE_TRIANGLES_KHR,
- VK_GEOMETRY_TYPE_AABBS_NV = VK_GEOMETRY_TYPE_AABBS_KHR,
- VK_GEOMETRY_TYPE_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkGeometryTypeKHR;
-typedef VkGeometryTypeKHR VkGeometryTypeNV;
-
-
-typedef enum VkAccelerationStructureTypeKHR {
- VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR = 0,
- VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR = 1,
- VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR = 2,
- VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV = VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR,
- VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV = VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR,
- VK_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkAccelerationStructureTypeKHR;
-typedef VkAccelerationStructureTypeKHR VkAccelerationStructureTypeNV;
-
-
-typedef enum VkCopyAccelerationStructureModeKHR {
- VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR = 0,
- VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR = 1,
- VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR = 2,
- VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR = 3,
- VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV = VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR,
- VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV = VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR,
- VK_COPY_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkCopyAccelerationStructureModeKHR;
-typedef VkCopyAccelerationStructureModeKHR VkCopyAccelerationStructureModeNV;
-
-
-typedef enum VkAccelerationStructureMemoryRequirementsTypeNV {
- VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV = 0,
- VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV = 1,
- VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV = 2,
- VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_MAX_ENUM_NV = 0x7FFFFFFF
-} VkAccelerationStructureMemoryRequirementsTypeNV;
-
-typedef enum VkGeometryFlagBitsKHR {
- VK_GEOMETRY_OPAQUE_BIT_KHR = 0x00000001,
- VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR = 0x00000002,
- VK_GEOMETRY_OPAQUE_BIT_NV = VK_GEOMETRY_OPAQUE_BIT_KHR,
- VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV = VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR,
- VK_GEOMETRY_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkGeometryFlagBitsKHR;
-typedef VkFlags VkGeometryFlagsKHR;
-typedef VkGeometryFlagsKHR VkGeometryFlagsNV;
-
-typedef VkGeometryFlagBitsKHR VkGeometryFlagBitsNV;
-
-
-typedef enum VkGeometryInstanceFlagBitsKHR {
- VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = 0x00000001,
- VK_GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR = 0x00000002,
- VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 0x00000004,
- VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 0x00000008,
- VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = VK_GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR,
- VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV = VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR,
- VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV = VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR,
- VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV = VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR,
- VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV = VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR,
- VK_GEOMETRY_INSTANCE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkGeometryInstanceFlagBitsKHR;
-typedef VkFlags VkGeometryInstanceFlagsKHR;
-typedef VkGeometryInstanceFlagsKHR VkGeometryInstanceFlagsNV;
-
-typedef VkGeometryInstanceFlagBitsKHR VkGeometryInstanceFlagBitsNV;
-
-
-typedef enum VkBuildAccelerationStructureFlagBitsKHR {
- VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR = 0x00000001,
- VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR = 0x00000002,
- VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR = 0x00000004,
- VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR = 0x00000008,
- VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR = 0x00000010,
- VK_BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV = 0x00000020,
- VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV = VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR,
- VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV = VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR,
- VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV = VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR,
- VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV = VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR,
- VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV = VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR,
- VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkBuildAccelerationStructureFlagBitsKHR;
-typedef VkFlags VkBuildAccelerationStructureFlagsKHR;
-typedef VkBuildAccelerationStructureFlagsKHR VkBuildAccelerationStructureFlagsNV;
-
-typedef VkBuildAccelerationStructureFlagBitsKHR VkBuildAccelerationStructureFlagBitsNV;
-
-typedef struct VkRayTracingShaderGroupCreateInfoNV {
- VkStructureType sType;
- const void* pNext;
- VkRayTracingShaderGroupTypeKHR type;
- uint32_t generalShader;
- uint32_t closestHitShader;
- uint32_t anyHitShader;
- uint32_t intersectionShader;
-} VkRayTracingShaderGroupCreateInfoNV;
-
-typedef struct VkRayTracingPipelineCreateInfoNV {
- VkStructureType sType;
- const void* pNext;
- VkPipelineCreateFlags flags;
- uint32_t stageCount;
- const VkPipelineShaderStageCreateInfo* pStages;
- uint32_t groupCount;
- const VkRayTracingShaderGroupCreateInfoNV* pGroups;
- uint32_t maxRecursionDepth;
- VkPipelineLayout layout;
- VkPipeline basePipelineHandle;
- int32_t basePipelineIndex;
-} VkRayTracingPipelineCreateInfoNV;
-
-typedef struct VkGeometryTrianglesNV {
- VkStructureType sType;
- const void* pNext;
- VkBuffer vertexData;
- VkDeviceSize vertexOffset;
- uint32_t vertexCount;
- VkDeviceSize vertexStride;
- VkFormat vertexFormat;
- VkBuffer indexData;
- VkDeviceSize indexOffset;
- uint32_t indexCount;
- VkIndexType indexType;
- VkBuffer transformData;
- VkDeviceSize transformOffset;
-} VkGeometryTrianglesNV;
-
-typedef struct VkGeometryAABBNV {
- VkStructureType sType;
- const void* pNext;
- VkBuffer aabbData;
- uint32_t numAABBs;
- uint32_t stride;
- VkDeviceSize offset;
-} VkGeometryAABBNV;
-
-typedef struct VkGeometryDataNV {
- VkGeometryTrianglesNV triangles;
- VkGeometryAABBNV aabbs;
-} VkGeometryDataNV;
-
-typedef struct VkGeometryNV {
- VkStructureType sType;
- const void* pNext;
- VkGeometryTypeKHR geometryType;
- VkGeometryDataNV geometry;
- VkGeometryFlagsKHR flags;
-} VkGeometryNV;
-
-typedef struct VkAccelerationStructureInfoNV {
- VkStructureType sType;
- const void* pNext;
- VkAccelerationStructureTypeNV type;
- VkBuildAccelerationStructureFlagsNV flags;
- uint32_t instanceCount;
- uint32_t geometryCount;
- const VkGeometryNV* pGeometries;
-} VkAccelerationStructureInfoNV;
-
-typedef struct VkAccelerationStructureCreateInfoNV {
- VkStructureType sType;
- const void* pNext;
- VkDeviceSize compactedSize;
- VkAccelerationStructureInfoNV info;
-} VkAccelerationStructureCreateInfoNV;
-
-typedef struct VkBindAccelerationStructureMemoryInfoNV {
- VkStructureType sType;
- const void* pNext;
- VkAccelerationStructureNV accelerationStructure;
- VkDeviceMemory memory;
- VkDeviceSize memoryOffset;
- uint32_t deviceIndexCount;
- const uint32_t* pDeviceIndices;
-} VkBindAccelerationStructureMemoryInfoNV;
-
-typedef struct VkWriteDescriptorSetAccelerationStructureNV {
- VkStructureType sType;
- const void* pNext;
- uint32_t accelerationStructureCount;
- const VkAccelerationStructureNV* pAccelerationStructures;
-} VkWriteDescriptorSetAccelerationStructureNV;
-
-typedef struct VkAccelerationStructureMemoryRequirementsInfoNV {
- VkStructureType sType;
- const void* pNext;
- VkAccelerationStructureMemoryRequirementsTypeNV type;
- VkAccelerationStructureNV accelerationStructure;
-} VkAccelerationStructureMemoryRequirementsInfoNV;
-
-typedef struct VkPhysicalDeviceRayTracingPropertiesNV {
- VkStructureType sType;
- void* pNext;
- uint32_t shaderGroupHandleSize;
- uint32_t maxRecursionDepth;
- uint32_t maxShaderGroupStride;
- uint32_t shaderGroupBaseAlignment;
- uint64_t maxGeometryCount;
- uint64_t maxInstanceCount;
- uint64_t maxTriangleCount;
- uint32_t maxDescriptorSetAccelerationStructures;
-} VkPhysicalDeviceRayTracingPropertiesNV;
-
-typedef struct VkTransformMatrixKHR {
- float matrix[3][4];
-} VkTransformMatrixKHR;
-
-typedef VkTransformMatrixKHR VkTransformMatrixNV;
-
-typedef struct VkAabbPositionsKHR {
- float minX;
- float minY;
- float minZ;
- float maxX;
- float maxY;
- float maxZ;
-} VkAabbPositionsKHR;
-
-typedef VkAabbPositionsKHR VkAabbPositionsNV;
-
-typedef struct VkAccelerationStructureInstanceKHR {
- VkTransformMatrixKHR transform;
- uint32_t instanceCustomIndex:24;
- uint32_t mask:8;
- uint32_t instanceShaderBindingTableRecordOffset:24;
- VkGeometryInstanceFlagsKHR flags:8;
- uint64_t accelerationStructureReference;
-} VkAccelerationStructureInstanceKHR;
-
-typedef VkAccelerationStructureInstanceKHR VkAccelerationStructureInstanceNV;
-
-typedef VkResult (VKAPI_PTR *PFN_vkCreateAccelerationStructureNV)(VkDevice device, const VkAccelerationStructureCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkAccelerationStructureNV* pAccelerationStructure);
-typedef void (VKAPI_PTR *PFN_vkDestroyAccelerationStructureNV)(VkDevice device, VkAccelerationStructureNV accelerationStructure, const VkAllocationCallbacks* pAllocator);
-typedef void (VKAPI_PTR *PFN_vkGetAccelerationStructureMemoryRequirementsNV)(VkDevice device, const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo, VkMemoryRequirements2KHR* pMemoryRequirements);
-typedef VkResult (VKAPI_PTR *PFN_vkBindAccelerationStructureMemoryNV)(VkDevice device, uint32_t bindInfoCount, const VkBindAccelerationStructureMemoryInfoNV* pBindInfos);
-typedef void (VKAPI_PTR *PFN_vkCmdBuildAccelerationStructureNV)(VkCommandBuffer commandBuffer, const VkAccelerationStructureInfoNV* pInfo, VkBuffer instanceData, VkDeviceSize instanceOffset, VkBool32 update, VkAccelerationStructureNV dst, VkAccelerationStructureNV src, VkBuffer scratch, VkDeviceSize scratchOffset);
-typedef void (VKAPI_PTR *PFN_vkCmdCopyAccelerationStructureNV)(VkCommandBuffer commandBuffer, VkAccelerationStructureNV dst, VkAccelerationStructureNV src, VkCopyAccelerationStructureModeKHR mode);
-typedef void (VKAPI_PTR *PFN_vkCmdTraceRaysNV)(VkCommandBuffer commandBuffer, VkBuffer raygenShaderBindingTableBuffer, VkDeviceSize raygenShaderBindingOffset, VkBuffer missShaderBindingTableBuffer, VkDeviceSize missShaderBindingOffset, VkDeviceSize missShaderBindingStride, VkBuffer hitShaderBindingTableBuffer, VkDeviceSize hitShaderBindingOffset, VkDeviceSize hitShaderBindingStride, VkBuffer callableShaderBindingTableBuffer, VkDeviceSize callableShaderBindingOffset, VkDeviceSize callableShaderBindingStride, uint32_t width, uint32_t height, uint32_t depth);
-typedef VkResult (VKAPI_PTR *PFN_vkCreateRayTracingPipelinesNV)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkRayTracingPipelineCreateInfoNV* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines);
-typedef VkResult (VKAPI_PTR *PFN_vkGetRayTracingShaderGroupHandlesKHR)(VkDevice device, VkPipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, void* pData);
-typedef VkResult (VKAPI_PTR *PFN_vkGetRayTracingShaderGroupHandlesNV)(VkDevice device, VkPipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, void* pData);
-typedef VkResult (VKAPI_PTR *PFN_vkGetAccelerationStructureHandleNV)(VkDevice device, VkAccelerationStructureNV accelerationStructure, size_t dataSize, void* pData);
-typedef void (VKAPI_PTR *PFN_vkCmdWriteAccelerationStructuresPropertiesNV)(VkCommandBuffer commandBuffer, uint32_t accelerationStructureCount, const VkAccelerationStructureNV* pAccelerationStructures, VkQueryType queryType, VkQueryPool queryPool, uint32_t firstQuery);
-typedef VkResult (VKAPI_PTR *PFN_vkCompileDeferredNV)(VkDevice device, VkPipeline pipeline, uint32_t shader);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateAccelerationStructureNV(
- VkDevice device,
- const VkAccelerationStructureCreateInfoNV* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkAccelerationStructureNV* pAccelerationStructure);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroyAccelerationStructureNV(
- VkDevice device,
- VkAccelerationStructureNV accelerationStructure,
- const VkAllocationCallbacks* pAllocator);
-
-VKAPI_ATTR void VKAPI_CALL vkGetAccelerationStructureMemoryRequirementsNV(
- VkDevice device,
- const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo,
- VkMemoryRequirements2KHR* pMemoryRequirements);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkBindAccelerationStructureMemoryNV(
- VkDevice device,
- uint32_t bindInfoCount,
- const VkBindAccelerationStructureMemoryInfoNV* pBindInfos);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdBuildAccelerationStructureNV(
- VkCommandBuffer commandBuffer,
- const VkAccelerationStructureInfoNV* pInfo,
- VkBuffer instanceData,
- VkDeviceSize instanceOffset,
- VkBool32 update,
- VkAccelerationStructureNV dst,
- VkAccelerationStructureNV src,
- VkBuffer scratch,
- VkDeviceSize scratchOffset);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdCopyAccelerationStructureNV(
- VkCommandBuffer commandBuffer,
- VkAccelerationStructureNV dst,
- VkAccelerationStructureNV src,
- VkCopyAccelerationStructureModeKHR mode);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdTraceRaysNV(
- VkCommandBuffer commandBuffer,
- VkBuffer raygenShaderBindingTableBuffer,
- VkDeviceSize raygenShaderBindingOffset,
- VkBuffer missShaderBindingTableBuffer,
- VkDeviceSize missShaderBindingOffset,
- VkDeviceSize missShaderBindingStride,
- VkBuffer hitShaderBindingTableBuffer,
- VkDeviceSize hitShaderBindingOffset,
- VkDeviceSize hitShaderBindingStride,
- VkBuffer callableShaderBindingTableBuffer,
- VkDeviceSize callableShaderBindingOffset,
- VkDeviceSize callableShaderBindingStride,
- uint32_t width,
- uint32_t height,
- uint32_t depth);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateRayTracingPipelinesNV(
- VkDevice device,
- VkPipelineCache pipelineCache,
- uint32_t createInfoCount,
- const VkRayTracingPipelineCreateInfoNV* pCreateInfos,
- const VkAllocationCallbacks* pAllocator,
- VkPipeline* pPipelines);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetRayTracingShaderGroupHandlesKHR(
- VkDevice device,
- VkPipeline pipeline,
- uint32_t firstGroup,
- uint32_t groupCount,
- size_t dataSize,
- void* pData);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetRayTracingShaderGroupHandlesNV(
- VkDevice device,
- VkPipeline pipeline,
- uint32_t firstGroup,
- uint32_t groupCount,
- size_t dataSize,
- void* pData);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetAccelerationStructureHandleNV(
- VkDevice device,
- VkAccelerationStructureNV accelerationStructure,
- size_t dataSize,
- void* pData);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdWriteAccelerationStructuresPropertiesNV(
- VkCommandBuffer commandBuffer,
- uint32_t accelerationStructureCount,
- const VkAccelerationStructureNV* pAccelerationStructures,
- VkQueryType queryType,
- VkQueryPool queryPool,
- uint32_t firstQuery);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCompileDeferredNV(
- VkDevice device,
- VkPipeline pipeline,
- uint32_t shader);
-#endif
-
-
-#define VK_NV_representative_fragment_test 1
-#define VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION 2
-#define VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME "VK_NV_representative_fragment_test"
-typedef struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV {
- VkStructureType sType;
- void* pNext;
- VkBool32 representativeFragmentTest;
-} VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV;
-
-typedef struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV {
- VkStructureType sType;
- const void* pNext;
- VkBool32 representativeFragmentTestEnable;
-} VkPipelineRepresentativeFragmentTestStateCreateInfoNV;
-
-
-
-#define VK_EXT_filter_cubic 1
-#define VK_EXT_FILTER_CUBIC_SPEC_VERSION 3
-#define VK_EXT_FILTER_CUBIC_EXTENSION_NAME "VK_EXT_filter_cubic"
-typedef struct VkPhysicalDeviceImageViewImageFormatInfoEXT {
- VkStructureType sType;
- void* pNext;
- VkImageViewType imageViewType;
-} VkPhysicalDeviceImageViewImageFormatInfoEXT;
-
-typedef struct VkFilterCubicImageViewImageFormatPropertiesEXT {
- VkStructureType sType;
- void* pNext;
- VkBool32 filterCubic;
- VkBool32 filterCubicMinmax;
-} VkFilterCubicImageViewImageFormatPropertiesEXT;
-
-
-
-#define VK_QCOM_render_pass_shader_resolve 1
-#define VK_QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION 4
-#define VK_QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME "VK_QCOM_render_pass_shader_resolve"
-
-
-#define VK_EXT_global_priority 1
-#define VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION 2
-#define VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME "VK_EXT_global_priority"
-
-typedef enum VkQueueGlobalPriorityEXT {
- VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT = 128,
- VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT = 256,
- VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT = 512,
- VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT = 1024,
- VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM_EXT = 0x7FFFFFFF
-} VkQueueGlobalPriorityEXT;
-typedef struct VkDeviceQueueGlobalPriorityCreateInfoEXT {
- VkStructureType sType;
- const void* pNext;
- VkQueueGlobalPriorityEXT globalPriority;
-} VkDeviceQueueGlobalPriorityCreateInfoEXT;
-
-
-
-#define VK_EXT_external_memory_host 1
-#define VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION 1
-#define VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME "VK_EXT_external_memory_host"
-typedef struct VkImportMemoryHostPointerInfoEXT {
- VkStructureType sType;
- const void* pNext;
- VkExternalMemoryHandleTypeFlagBits handleType;
- void* pHostPointer;
-} VkImportMemoryHostPointerInfoEXT;
-
-typedef struct VkMemoryHostPointerPropertiesEXT {
- VkStructureType sType;
- void* pNext;
- uint32_t memoryTypeBits;
-} VkMemoryHostPointerPropertiesEXT;
-
-typedef struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT {
- VkStructureType sType;
- void* pNext;
- VkDeviceSize minImportedHostPointerAlignment;
-} VkPhysicalDeviceExternalMemoryHostPropertiesEXT;
-
-typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryHostPointerPropertiesEXT)(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, const void* pHostPointer, VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryHostPointerPropertiesEXT(
- VkDevice device,
- VkExternalMemoryHandleTypeFlagBits handleType,
- const void* pHostPointer,
- VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties);
-#endif
-
-
-#define VK_AMD_buffer_marker 1
-#define VK_AMD_BUFFER_MARKER_SPEC_VERSION 1
-#define VK_AMD_BUFFER_MARKER_EXTENSION_NAME "VK_AMD_buffer_marker"
-typedef void (VKAPI_PTR *PFN_vkCmdWriteBufferMarkerAMD)(VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkBuffer dstBuffer, VkDeviceSize dstOffset, uint32_t marker);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR void VKAPI_CALL vkCmdWriteBufferMarkerAMD(
- VkCommandBuffer commandBuffer,
- VkPipelineStageFlagBits pipelineStage,
- VkBuffer dstBuffer,
- VkDeviceSize dstOffset,
- uint32_t marker);
-#endif
-
-
-#define VK_AMD_pipeline_compiler_control 1
-#define VK_AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION 1
-#define VK_AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME "VK_AMD_pipeline_compiler_control"
-
-typedef enum VkPipelineCompilerControlFlagBitsAMD {
- VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 0x7FFFFFFF
-} VkPipelineCompilerControlFlagBitsAMD;
-typedef VkFlags VkPipelineCompilerControlFlagsAMD;
-typedef struct VkPipelineCompilerControlCreateInfoAMD {
- VkStructureType sType;
- const void* pNext;
- VkPipelineCompilerControlFlagsAMD compilerControlFlags;
-} VkPipelineCompilerControlCreateInfoAMD;
-
-
-
-#define VK_EXT_calibrated_timestamps 1
-#define VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION 2
-#define VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME "VK_EXT_calibrated_timestamps"
-
-typedef enum VkTimeDomainEXT {
- VK_TIME_DOMAIN_DEVICE_EXT = 0,
- VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT = 1,
- VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT = 2,
- VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT = 3,
- VK_TIME_DOMAIN_MAX_ENUM_EXT = 0x7FFFFFFF
-} VkTimeDomainEXT;
-typedef struct VkCalibratedTimestampInfoEXT {
- VkStructureType sType;
- const void* pNext;
- VkTimeDomainEXT timeDomain;
-} VkCalibratedTimestampInfoEXT;
-
-typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT)(VkPhysicalDevice physicalDevice, uint32_t* pTimeDomainCount, VkTimeDomainEXT* pTimeDomains);
-typedef VkResult (VKAPI_PTR *PFN_vkGetCalibratedTimestampsEXT)(VkDevice device, uint32_t timestampCount, const VkCalibratedTimestampInfoEXT* pTimestampInfos, uint64_t* pTimestamps, uint64_t* pMaxDeviation);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(
- VkPhysicalDevice physicalDevice,
- uint32_t* pTimeDomainCount,
- VkTimeDomainEXT* pTimeDomains);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetCalibratedTimestampsEXT(
- VkDevice device,
- uint32_t timestampCount,
- const VkCalibratedTimestampInfoEXT* pTimestampInfos,
- uint64_t* pTimestamps,
- uint64_t* pMaxDeviation);
-#endif
-
-
-#define VK_AMD_shader_core_properties 1
-#define VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION 2
-#define VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME "VK_AMD_shader_core_properties"
-typedef struct VkPhysicalDeviceShaderCorePropertiesAMD {
- VkStructureType sType;
- void* pNext;
- uint32_t shaderEngineCount;
- uint32_t shaderArraysPerEngineCount;
- uint32_t computeUnitsPerShaderArray;
- uint32_t simdPerComputeUnit;
- uint32_t wavefrontsPerSimd;
- uint32_t wavefrontSize;
- uint32_t sgprsPerSimd;
- uint32_t minSgprAllocation;
- uint32_t maxSgprAllocation;
- uint32_t sgprAllocationGranularity;
- uint32_t vgprsPerSimd;
- uint32_t minVgprAllocation;
- uint32_t maxVgprAllocation;
- uint32_t vgprAllocationGranularity;
-} VkPhysicalDeviceShaderCorePropertiesAMD;
-
-
-
-#define VK_AMD_memory_overallocation_behavior 1
-#define VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSION 1
-#define VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME "VK_AMD_memory_overallocation_behavior"
-
-typedef enum VkMemoryOverallocationBehaviorAMD {
- VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD = 0,
- VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD = 1,
- VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD = 2,
- VK_MEMORY_OVERALLOCATION_BEHAVIOR_MAX_ENUM_AMD = 0x7FFFFFFF
-} VkMemoryOverallocationBehaviorAMD;
-typedef struct VkDeviceMemoryOverallocationCreateInfoAMD {
- VkStructureType sType;
- const void* pNext;
- VkMemoryOverallocationBehaviorAMD overallocationBehavior;
-} VkDeviceMemoryOverallocationCreateInfoAMD;
-
-
-
-#define VK_EXT_vertex_attribute_divisor 1
-#define VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION 3
-#define VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME "VK_EXT_vertex_attribute_divisor"
-typedef struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT {
- VkStructureType sType;
- void* pNext;
- uint32_t maxVertexAttribDivisor;
-} VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT;
-
-typedef struct VkVertexInputBindingDivisorDescriptionEXT {
- uint32_t binding;
- uint32_t divisor;
-} VkVertexInputBindingDivisorDescriptionEXT;
-
-typedef struct VkPipelineVertexInputDivisorStateCreateInfoEXT {
- VkStructureType sType;
- const void* pNext;
- uint32_t vertexBindingDivisorCount;
- const VkVertexInputBindingDivisorDescriptionEXT* pVertexBindingDivisors;
-} VkPipelineVertexInputDivisorStateCreateInfoEXT;
-
-typedef struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT {
- VkStructureType sType;
- void* pNext;
- VkBool32 vertexAttributeInstanceRateDivisor;
- VkBool32 vertexAttributeInstanceRateZeroDivisor;
-} VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT;
-
-
-
-#define VK_EXT_pipeline_creation_feedback 1
-#define VK_EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION 1
-#define VK_EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME "VK_EXT_pipeline_creation_feedback"
-
-typedef enum VkPipelineCreationFeedbackFlagBitsEXT {
- VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT = 0x00000001,
- VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT = 0x00000002,
- VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT = 0x00000004,
- VK_PIPELINE_CREATION_FEEDBACK_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
-} VkPipelineCreationFeedbackFlagBitsEXT;
-typedef VkFlags VkPipelineCreationFeedbackFlagsEXT;
-typedef struct VkPipelineCreationFeedbackEXT {
- VkPipelineCreationFeedbackFlagsEXT flags;
- uint64_t duration;
-} VkPipelineCreationFeedbackEXT;
-
-typedef struct VkPipelineCreationFeedbackCreateInfoEXT {
- VkStructureType sType;
- const void* pNext;
- VkPipelineCreationFeedbackEXT* pPipelineCreationFeedback;
- uint32_t pipelineStageCreationFeedbackCount;
- VkPipelineCreationFeedbackEXT* pPipelineStageCreationFeedbacks;
-} VkPipelineCreationFeedbackCreateInfoEXT;
-
-
-
-#define VK_NV_shader_subgroup_partitioned 1
-#define VK_NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION 1
-#define VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME "VK_NV_shader_subgroup_partitioned"
-
-
-#define VK_NV_compute_shader_derivatives 1
-#define VK_NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION 1
-#define VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME "VK_NV_compute_shader_derivatives"
-typedef struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV {
- VkStructureType sType;
- void* pNext;
- VkBool32 computeDerivativeGroupQuads;
- VkBool32 computeDerivativeGroupLinear;
-} VkPhysicalDeviceComputeShaderDerivativesFeaturesNV;
-
-
-
-#define VK_NV_mesh_shader 1
-#define VK_NV_MESH_SHADER_SPEC_VERSION 1
-#define VK_NV_MESH_SHADER_EXTENSION_NAME "VK_NV_mesh_shader"
-typedef struct VkPhysicalDeviceMeshShaderFeaturesNV {
- VkStructureType sType;
- void* pNext;
- VkBool32 taskShader;
- VkBool32 meshShader;
-} VkPhysicalDeviceMeshShaderFeaturesNV;
-
-typedef struct VkPhysicalDeviceMeshShaderPropertiesNV {
- VkStructureType sType;
- void* pNext;
- uint32_t maxDrawMeshTasksCount;
- uint32_t maxTaskWorkGroupInvocations;
- uint32_t maxTaskWorkGroupSize[3];
- uint32_t maxTaskTotalMemorySize;
- uint32_t maxTaskOutputCount;
- uint32_t maxMeshWorkGroupInvocations;
- uint32_t maxMeshWorkGroupSize[3];
- uint32_t maxMeshTotalMemorySize;
- uint32_t maxMeshOutputVertices;
- uint32_t maxMeshOutputPrimitives;
- uint32_t maxMeshMultiviewViewCount;
- uint32_t meshOutputPerVertexGranularity;
- uint32_t meshOutputPerPrimitiveGranularity;
-} VkPhysicalDeviceMeshShaderPropertiesNV;
-
-typedef struct VkDrawMeshTasksIndirectCommandNV {
- uint32_t taskCount;
- uint32_t firstTask;
-} VkDrawMeshTasksIndirectCommandNV;
-
-typedef void (VKAPI_PTR *PFN_vkCmdDrawMeshTasksNV)(VkCommandBuffer commandBuffer, uint32_t taskCount, uint32_t firstTask);
-typedef void (VKAPI_PTR *PFN_vkCmdDrawMeshTasksIndirectNV)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride);
-typedef void (VKAPI_PTR *PFN_vkCmdDrawMeshTasksIndirectCountNV)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR void VKAPI_CALL vkCmdDrawMeshTasksNV(
- VkCommandBuffer commandBuffer,
- uint32_t taskCount,
- uint32_t firstTask);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdDrawMeshTasksIndirectNV(
- VkCommandBuffer commandBuffer,
- VkBuffer buffer,
- VkDeviceSize offset,
- uint32_t drawCount,
- uint32_t stride);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdDrawMeshTasksIndirectCountNV(
- VkCommandBuffer commandBuffer,
- VkBuffer buffer,
- VkDeviceSize offset,
- VkBuffer countBuffer,
- VkDeviceSize countBufferOffset,
- uint32_t maxDrawCount,
- uint32_t stride);
-#endif
-
-
-#define VK_NV_fragment_shader_barycentric 1
-#define VK_NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION 1
-#define VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME "VK_NV_fragment_shader_barycentric"
-typedef struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV {
- VkStructureType sType;
- void* pNext;
- VkBool32 fragmentShaderBarycentric;
-} VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV;
-
-
-
-#define VK_NV_shader_image_footprint 1
-#define VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION 2
-#define VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME "VK_NV_shader_image_footprint"
-typedef struct VkPhysicalDeviceShaderImageFootprintFeaturesNV {
- VkStructureType sType;
- void* pNext;
- VkBool32 imageFootprint;
-} VkPhysicalDeviceShaderImageFootprintFeaturesNV;
-
-
-
-#define VK_NV_scissor_exclusive 1
-#define VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION 1
-#define VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME "VK_NV_scissor_exclusive"
-typedef struct VkPipelineViewportExclusiveScissorStateCreateInfoNV {
- VkStructureType sType;
- const void* pNext;
- uint32_t exclusiveScissorCount;
- const VkRect2D* pExclusiveScissors;
-} VkPipelineViewportExclusiveScissorStateCreateInfoNV;
-
-typedef struct VkPhysicalDeviceExclusiveScissorFeaturesNV {
- VkStructureType sType;
- void* pNext;
- VkBool32 exclusiveScissor;
-} VkPhysicalDeviceExclusiveScissorFeaturesNV;
-
-typedef void (VKAPI_PTR *PFN_vkCmdSetExclusiveScissorNV)(VkCommandBuffer commandBuffer, uint32_t firstExclusiveScissor, uint32_t exclusiveScissorCount, const VkRect2D* pExclusiveScissors);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR void VKAPI_CALL vkCmdSetExclusiveScissorNV(
- VkCommandBuffer commandBuffer,
- uint32_t firstExclusiveScissor,
- uint32_t exclusiveScissorCount,
- const VkRect2D* pExclusiveScissors);
-#endif
-
-
-#define VK_NV_device_diagnostic_checkpoints 1
-#define VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION 2
-#define VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME "VK_NV_device_diagnostic_checkpoints"
-typedef struct VkQueueFamilyCheckpointPropertiesNV {
- VkStructureType sType;
- void* pNext;
- VkPipelineStageFlags checkpointExecutionStageMask;
-} VkQueueFamilyCheckpointPropertiesNV;
-
-typedef struct VkCheckpointDataNV {
- VkStructureType sType;
- void* pNext;
- VkPipelineStageFlagBits stage;
- void* pCheckpointMarker;
-} VkCheckpointDataNV;
-
-typedef void (VKAPI_PTR *PFN_vkCmdSetCheckpointNV)(VkCommandBuffer commandBuffer, const void* pCheckpointMarker);
-typedef void (VKAPI_PTR *PFN_vkGetQueueCheckpointDataNV)(VkQueue queue, uint32_t* pCheckpointDataCount, VkCheckpointDataNV* pCheckpointData);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR void VKAPI_CALL vkCmdSetCheckpointNV(
- VkCommandBuffer commandBuffer,
- const void* pCheckpointMarker);
-
-VKAPI_ATTR void VKAPI_CALL vkGetQueueCheckpointDataNV(
- VkQueue queue,
- uint32_t* pCheckpointDataCount,
- VkCheckpointDataNV* pCheckpointData);
-#endif
-
-
-#define VK_INTEL_shader_integer_functions2 1
-#define VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION 1
-#define VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME "VK_INTEL_shader_integer_functions2"
-typedef struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL {
- VkStructureType sType;
- void* pNext;
- VkBool32 shaderIntegerFunctions2;
-} VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL;
-
-
-
-#define VK_INTEL_performance_query 1
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPerformanceConfigurationINTEL)
-#define VK_INTEL_PERFORMANCE_QUERY_SPEC_VERSION 2
-#define VK_INTEL_PERFORMANCE_QUERY_EXTENSION_NAME "VK_INTEL_performance_query"
-
-typedef enum VkPerformanceConfigurationTypeINTEL {
- VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL = 0,
- VK_PERFORMANCE_CONFIGURATION_TYPE_MAX_ENUM_INTEL = 0x7FFFFFFF
-} VkPerformanceConfigurationTypeINTEL;
-
-typedef enum VkQueryPoolSamplingModeINTEL {
- VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0,
- VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL = 0x7FFFFFFF
-} VkQueryPoolSamplingModeINTEL;
-
-typedef enum VkPerformanceOverrideTypeINTEL {
- VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL = 0,
- VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL = 1,
- VK_PERFORMANCE_OVERRIDE_TYPE_MAX_ENUM_INTEL = 0x7FFFFFFF
-} VkPerformanceOverrideTypeINTEL;
-
-typedef enum VkPerformanceParameterTypeINTEL {
- VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL = 0,
- VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL = 1,
- VK_PERFORMANCE_PARAMETER_TYPE_MAX_ENUM_INTEL = 0x7FFFFFFF
-} VkPerformanceParameterTypeINTEL;
-
-typedef enum VkPerformanceValueTypeINTEL {
- VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL = 0,
- VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL = 1,
- VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL = 2,
- VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL = 3,
- VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL = 4,
- VK_PERFORMANCE_VALUE_TYPE_MAX_ENUM_INTEL = 0x7FFFFFFF
-} VkPerformanceValueTypeINTEL;
-typedef union VkPerformanceValueDataINTEL {
- uint32_t value32;
- uint64_t value64;
- float valueFloat;
- VkBool32 valueBool;
- const char* valueString;
-} VkPerformanceValueDataINTEL;
-
-typedef struct VkPerformanceValueINTEL {
- VkPerformanceValueTypeINTEL type;
- VkPerformanceValueDataINTEL data;
-} VkPerformanceValueINTEL;
-
-typedef struct VkInitializePerformanceApiInfoINTEL {
- VkStructureType sType;
- const void* pNext;
- void* pUserData;
-} VkInitializePerformanceApiInfoINTEL;
-
-typedef struct VkQueryPoolPerformanceQueryCreateInfoINTEL {
- VkStructureType sType;
- const void* pNext;
- VkQueryPoolSamplingModeINTEL performanceCountersSampling;
-} VkQueryPoolPerformanceQueryCreateInfoINTEL;
-
-typedef VkQueryPoolPerformanceQueryCreateInfoINTEL VkQueryPoolCreateInfoINTEL;
-
-typedef struct VkPerformanceMarkerInfoINTEL {
- VkStructureType sType;
- const void* pNext;
- uint64_t marker;
-} VkPerformanceMarkerInfoINTEL;
-
-typedef struct VkPerformanceStreamMarkerInfoINTEL {
- VkStructureType sType;
- const void* pNext;
- uint32_t marker;
-} VkPerformanceStreamMarkerInfoINTEL;
-
-typedef struct VkPerformanceOverrideInfoINTEL {
- VkStructureType sType;
- const void* pNext;
- VkPerformanceOverrideTypeINTEL type;
- VkBool32 enable;
- uint64_t parameter;
-} VkPerformanceOverrideInfoINTEL;
-
-typedef struct VkPerformanceConfigurationAcquireInfoINTEL {
- VkStructureType sType;
- const void* pNext;
- VkPerformanceConfigurationTypeINTEL type;
-} VkPerformanceConfigurationAcquireInfoINTEL;
-
-typedef VkResult (VKAPI_PTR *PFN_vkInitializePerformanceApiINTEL)(VkDevice device, const VkInitializePerformanceApiInfoINTEL* pInitializeInfo);
-typedef void (VKAPI_PTR *PFN_vkUninitializePerformanceApiINTEL)(VkDevice device);
-typedef VkResult (VKAPI_PTR *PFN_vkCmdSetPerformanceMarkerINTEL)(VkCommandBuffer commandBuffer, const VkPerformanceMarkerInfoINTEL* pMarkerInfo);
-typedef VkResult (VKAPI_PTR *PFN_vkCmdSetPerformanceStreamMarkerINTEL)(VkCommandBuffer commandBuffer, const VkPerformanceStreamMarkerInfoINTEL* pMarkerInfo);
-typedef VkResult (VKAPI_PTR *PFN_vkCmdSetPerformanceOverrideINTEL)(VkCommandBuffer commandBuffer, const VkPerformanceOverrideInfoINTEL* pOverrideInfo);
-typedef VkResult (VKAPI_PTR *PFN_vkAcquirePerformanceConfigurationINTEL)(VkDevice device, const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo, VkPerformanceConfigurationINTEL* pConfiguration);
-typedef VkResult (VKAPI_PTR *PFN_vkReleasePerformanceConfigurationINTEL)(VkDevice device, VkPerformanceConfigurationINTEL configuration);
-typedef VkResult (VKAPI_PTR *PFN_vkQueueSetPerformanceConfigurationINTEL)(VkQueue queue, VkPerformanceConfigurationINTEL configuration);
-typedef VkResult (VKAPI_PTR *PFN_vkGetPerformanceParameterINTEL)(VkDevice device, VkPerformanceParameterTypeINTEL parameter, VkPerformanceValueINTEL* pValue);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkInitializePerformanceApiINTEL(
- VkDevice device,
- const VkInitializePerformanceApiInfoINTEL* pInitializeInfo);
-
-VKAPI_ATTR void VKAPI_CALL vkUninitializePerformanceApiINTEL(
- VkDevice device);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCmdSetPerformanceMarkerINTEL(
- VkCommandBuffer commandBuffer,
- const VkPerformanceMarkerInfoINTEL* pMarkerInfo);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCmdSetPerformanceStreamMarkerINTEL(
- VkCommandBuffer commandBuffer,
- const VkPerformanceStreamMarkerInfoINTEL* pMarkerInfo);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCmdSetPerformanceOverrideINTEL(
- VkCommandBuffer commandBuffer,
- const VkPerformanceOverrideInfoINTEL* pOverrideInfo);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkAcquirePerformanceConfigurationINTEL(
- VkDevice device,
- const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo,
- VkPerformanceConfigurationINTEL* pConfiguration);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkReleasePerformanceConfigurationINTEL(
- VkDevice device,
- VkPerformanceConfigurationINTEL configuration);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkQueueSetPerformanceConfigurationINTEL(
- VkQueue queue,
- VkPerformanceConfigurationINTEL configuration);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetPerformanceParameterINTEL(
- VkDevice device,
- VkPerformanceParameterTypeINTEL parameter,
- VkPerformanceValueINTEL* pValue);
-#endif
-
-
-#define VK_EXT_pci_bus_info 1
-#define VK_EXT_PCI_BUS_INFO_SPEC_VERSION 2
-#define VK_EXT_PCI_BUS_INFO_EXTENSION_NAME "VK_EXT_pci_bus_info"
-typedef struct VkPhysicalDevicePCIBusInfoPropertiesEXT {
- VkStructureType sType;
- void* pNext;
- uint32_t pciDomain;
- uint32_t pciBus;
- uint32_t pciDevice;
- uint32_t pciFunction;
-} VkPhysicalDevicePCIBusInfoPropertiesEXT;
-
-
-
-#define VK_AMD_display_native_hdr 1
-#define VK_AMD_DISPLAY_NATIVE_HDR_SPEC_VERSION 1
-#define VK_AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME "VK_AMD_display_native_hdr"
-typedef struct VkDisplayNativeHdrSurfaceCapabilitiesAMD {
- VkStructureType sType;
- void* pNext;
- VkBool32 localDimmingSupport;
-} VkDisplayNativeHdrSurfaceCapabilitiesAMD;
-
-typedef struct VkSwapchainDisplayNativeHdrCreateInfoAMD {
- VkStructureType sType;
- const void* pNext;
- VkBool32 localDimmingEnable;
-} VkSwapchainDisplayNativeHdrCreateInfoAMD;
-
-typedef void (VKAPI_PTR *PFN_vkSetLocalDimmingAMD)(VkDevice device, VkSwapchainKHR swapChain, VkBool32 localDimmingEnable);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR void VKAPI_CALL vkSetLocalDimmingAMD(
- VkDevice device,
- VkSwapchainKHR swapChain,
- VkBool32 localDimmingEnable);
-#endif
-
-
-#define VK_EXT_fragment_density_map 1
-#define VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION 2
-#define VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME "VK_EXT_fragment_density_map"
-typedef struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT {
- VkStructureType sType;
- void* pNext;
- VkBool32 fragmentDensityMap;
- VkBool32 fragmentDensityMapDynamic;
- VkBool32 fragmentDensityMapNonSubsampledImages;
-} VkPhysicalDeviceFragmentDensityMapFeaturesEXT;
-
-typedef struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT {
- VkStructureType sType;
- void* pNext;
- VkExtent2D minFragmentDensityTexelSize;
- VkExtent2D maxFragmentDensityTexelSize;
- VkBool32 fragmentDensityInvocations;
-} VkPhysicalDeviceFragmentDensityMapPropertiesEXT;
-
-typedef struct VkRenderPassFragmentDensityMapCreateInfoEXT {
- VkStructureType sType;
- const void* pNext;
- VkAttachmentReference fragmentDensityMapAttachment;
-} VkRenderPassFragmentDensityMapCreateInfoEXT;
-
-
-
-#define VK_EXT_scalar_block_layout 1
-#define VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION 1
-#define VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME "VK_EXT_scalar_block_layout"
-typedef VkPhysicalDeviceScalarBlockLayoutFeatures VkPhysicalDeviceScalarBlockLayoutFeaturesEXT;
-
-
-
-#define VK_GOOGLE_hlsl_functionality1 1
-#define VK_GOOGLE_HLSL_FUNCTIONALITY_1_SPEC_VERSION 1
-#define VK_GOOGLE_HLSL_FUNCTIONALITY_1_EXTENSION_NAME "VK_GOOGLE_hlsl_functionality1"
-#define VK_GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION VK_GOOGLE_HLSL_FUNCTIONALITY_1_SPEC_VERSION
-#define VK_GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME VK_GOOGLE_HLSL_FUNCTIONALITY_1_EXTENSION_NAME
-
-
-#define VK_GOOGLE_decorate_string 1
-#define VK_GOOGLE_DECORATE_STRING_SPEC_VERSION 1
-#define VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME "VK_GOOGLE_decorate_string"
-
-
-#define VK_EXT_subgroup_size_control 1
-#define VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION 2
-#define VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME "VK_EXT_subgroup_size_control"
-typedef struct VkPhysicalDeviceSubgroupSizeControlFeaturesEXT {
- VkStructureType sType;
- void* pNext;
- VkBool32 subgroupSizeControl;
- VkBool32 computeFullSubgroups;
-} VkPhysicalDeviceSubgroupSizeControlFeaturesEXT;
-
-typedef struct VkPhysicalDeviceSubgroupSizeControlPropertiesEXT {
- VkStructureType sType;
- void* pNext;
- uint32_t minSubgroupSize;
- uint32_t maxSubgroupSize;
- uint32_t maxComputeWorkgroupSubgroups;
- VkShaderStageFlags requiredSubgroupSizeStages;
-} VkPhysicalDeviceSubgroupSizeControlPropertiesEXT;
-
-typedef struct VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT {
- VkStructureType sType;
- void* pNext;
- uint32_t requiredSubgroupSize;
-} VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT;
-
-
-
-#define VK_AMD_shader_core_properties2 1
-#define VK_AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION 1
-#define VK_AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME "VK_AMD_shader_core_properties2"
-
-typedef enum VkShaderCorePropertiesFlagBitsAMD {
- VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 0x7FFFFFFF
-} VkShaderCorePropertiesFlagBitsAMD;
-typedef VkFlags VkShaderCorePropertiesFlagsAMD;
-typedef struct VkPhysicalDeviceShaderCoreProperties2AMD {
- VkStructureType sType;
- void* pNext;
- VkShaderCorePropertiesFlagsAMD shaderCoreFeatures;
- uint32_t activeComputeUnitCount;
-} VkPhysicalDeviceShaderCoreProperties2AMD;
-
-
-
-#define VK_AMD_device_coherent_memory 1
-#define VK_AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION 1
-#define VK_AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME "VK_AMD_device_coherent_memory"
-typedef struct VkPhysicalDeviceCoherentMemoryFeaturesAMD {
- VkStructureType sType;
- void* pNext;
- VkBool32 deviceCoherentMemory;
-} VkPhysicalDeviceCoherentMemoryFeaturesAMD;
-
-
-
-#define VK_EXT_shader_image_atomic_int64 1
-#define VK_EXT_SHADER_IMAGE_ATOMIC_INT64_SPEC_VERSION 1
-#define VK_EXT_SHADER_IMAGE_ATOMIC_INT64_EXTENSION_NAME "VK_EXT_shader_image_atomic_int64"
-typedef struct VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT {
- VkStructureType sType;
- void* pNext;
- VkBool32 shaderImageInt64Atomics;
- VkBool32 sparseImageInt64Atomics;
-} VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT;
-
-
-
-#define VK_EXT_memory_budget 1
-#define VK_EXT_MEMORY_BUDGET_SPEC_VERSION 1
-#define VK_EXT_MEMORY_BUDGET_EXTENSION_NAME "VK_EXT_memory_budget"
-typedef struct VkPhysicalDeviceMemoryBudgetPropertiesEXT {
- VkStructureType sType;
- void* pNext;
- VkDeviceSize heapBudget[VK_MAX_MEMORY_HEAPS];
- VkDeviceSize heapUsage[VK_MAX_MEMORY_HEAPS];
-} VkPhysicalDeviceMemoryBudgetPropertiesEXT;
-
-
-
-#define VK_EXT_memory_priority 1
-#define VK_EXT_MEMORY_PRIORITY_SPEC_VERSION 1
-#define VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME "VK_EXT_memory_priority"
-typedef struct VkPhysicalDeviceMemoryPriorityFeaturesEXT {
- VkStructureType sType;
- void* pNext;
- VkBool32 memoryPriority;
-} VkPhysicalDeviceMemoryPriorityFeaturesEXT;
-
-typedef struct VkMemoryPriorityAllocateInfoEXT {
- VkStructureType sType;
- const void* pNext;
- float priority;
-} VkMemoryPriorityAllocateInfoEXT;
-
-
-
-#define VK_NV_dedicated_allocation_image_aliasing 1
-#define VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION 1
-#define VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME "VK_NV_dedicated_allocation_image_aliasing"
-typedef struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV {
- VkStructureType sType;
- void* pNext;
- VkBool32 dedicatedAllocationImageAliasing;
-} VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV;
-
-
-
-#define VK_EXT_buffer_device_address 1
-#define VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION 2
-#define VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME "VK_EXT_buffer_device_address"
-typedef struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT {
- VkStructureType sType;
- void* pNext;
- VkBool32 bufferDeviceAddress;
- VkBool32 bufferDeviceAddressCaptureReplay;
- VkBool32 bufferDeviceAddressMultiDevice;
-} VkPhysicalDeviceBufferDeviceAddressFeaturesEXT;
-
-typedef VkPhysicalDeviceBufferDeviceAddressFeaturesEXT VkPhysicalDeviceBufferAddressFeaturesEXT;
-
-typedef VkBufferDeviceAddressInfo VkBufferDeviceAddressInfoEXT;
-
-typedef struct VkBufferDeviceAddressCreateInfoEXT {
- VkStructureType sType;
- const void* pNext;
- VkDeviceAddress deviceAddress;
-} VkBufferDeviceAddressCreateInfoEXT;
-
-typedef VkDeviceAddress (VKAPI_PTR *PFN_vkGetBufferDeviceAddressEXT)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetBufferDeviceAddressEXT(
- VkDevice device,
- const VkBufferDeviceAddressInfo* pInfo);
-#endif
-
-
-#define VK_EXT_tooling_info 1
-#define VK_EXT_TOOLING_INFO_SPEC_VERSION 1
-#define VK_EXT_TOOLING_INFO_EXTENSION_NAME "VK_EXT_tooling_info"
-
-typedef enum VkToolPurposeFlagBitsEXT {
- VK_TOOL_PURPOSE_VALIDATION_BIT_EXT = 0x00000001,
- VK_TOOL_PURPOSE_PROFILING_BIT_EXT = 0x00000002,
- VK_TOOL_PURPOSE_TRACING_BIT_EXT = 0x00000004,
- VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT = 0x00000008,
- VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT = 0x00000010,
- VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT = 0x00000020,
- VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT = 0x00000040,
- VK_TOOL_PURPOSE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
-} VkToolPurposeFlagBitsEXT;
-typedef VkFlags VkToolPurposeFlagsEXT;
-typedef struct VkPhysicalDeviceToolPropertiesEXT {
- VkStructureType sType;
- void* pNext;
- char name[VK_MAX_EXTENSION_NAME_SIZE];
- char version[VK_MAX_EXTENSION_NAME_SIZE];
- VkToolPurposeFlagsEXT purposes;
- char description[VK_MAX_DESCRIPTION_SIZE];
- char layer[VK_MAX_EXTENSION_NAME_SIZE];
-} VkPhysicalDeviceToolPropertiesEXT;
-
-typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceToolPropertiesEXT)(VkPhysicalDevice physicalDevice, uint32_t* pToolCount, VkPhysicalDeviceToolPropertiesEXT* pToolProperties);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceToolPropertiesEXT(
- VkPhysicalDevice physicalDevice,
- uint32_t* pToolCount,
- VkPhysicalDeviceToolPropertiesEXT* pToolProperties);
-#endif
-
-
-#define VK_EXT_separate_stencil_usage 1
-#define VK_EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION 1
-#define VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME "VK_EXT_separate_stencil_usage"
-typedef VkImageStencilUsageCreateInfo VkImageStencilUsageCreateInfoEXT;
-
-
-
-#define VK_EXT_validation_features 1
-#define VK_EXT_VALIDATION_FEATURES_SPEC_VERSION 5
-#define VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME "VK_EXT_validation_features"
-
-typedef enum VkValidationFeatureEnableEXT {
- VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT = 0,
- VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT = 1,
- VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT = 2,
- VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT = 3,
- VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT = 4,
- VK_VALIDATION_FEATURE_ENABLE_MAX_ENUM_EXT = 0x7FFFFFFF
-} VkValidationFeatureEnableEXT;
-
-typedef enum VkValidationFeatureDisableEXT {
- VK_VALIDATION_FEATURE_DISABLE_ALL_EXT = 0,
- VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT = 1,
- VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT = 2,
- VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT = 3,
- VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT = 4,
- VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT = 5,
- VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT = 6,
- VK_VALIDATION_FEATURE_DISABLE_SHADER_VALIDATION_CACHE_EXT = 7,
- VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 0x7FFFFFFF
-} VkValidationFeatureDisableEXT;
-typedef struct VkValidationFeaturesEXT {
- VkStructureType sType;
- const void* pNext;
- uint32_t enabledValidationFeatureCount;
- const VkValidationFeatureEnableEXT* pEnabledValidationFeatures;
- uint32_t disabledValidationFeatureCount;
- const VkValidationFeatureDisableEXT* pDisabledValidationFeatures;
-} VkValidationFeaturesEXT;
-
-
-
-#define VK_NV_cooperative_matrix 1
-#define VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION 1
-#define VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME "VK_NV_cooperative_matrix"
-
-typedef enum VkComponentTypeNV {
- VK_COMPONENT_TYPE_FLOAT16_NV = 0,
- VK_COMPONENT_TYPE_FLOAT32_NV = 1,
- VK_COMPONENT_TYPE_FLOAT64_NV = 2,
- VK_COMPONENT_TYPE_SINT8_NV = 3,
- VK_COMPONENT_TYPE_SINT16_NV = 4,
- VK_COMPONENT_TYPE_SINT32_NV = 5,
- VK_COMPONENT_TYPE_SINT64_NV = 6,
- VK_COMPONENT_TYPE_UINT8_NV = 7,
- VK_COMPONENT_TYPE_UINT16_NV = 8,
- VK_COMPONENT_TYPE_UINT32_NV = 9,
- VK_COMPONENT_TYPE_UINT64_NV = 10,
- VK_COMPONENT_TYPE_MAX_ENUM_NV = 0x7FFFFFFF
-} VkComponentTypeNV;
-
-typedef enum VkScopeNV {
- VK_SCOPE_DEVICE_NV = 1,
- VK_SCOPE_WORKGROUP_NV = 2,
- VK_SCOPE_SUBGROUP_NV = 3,
- VK_SCOPE_QUEUE_FAMILY_NV = 5,
- VK_SCOPE_MAX_ENUM_NV = 0x7FFFFFFF
-} VkScopeNV;
-typedef struct VkCooperativeMatrixPropertiesNV {
- VkStructureType sType;
- void* pNext;
- uint32_t MSize;
- uint32_t NSize;
- uint32_t KSize;
- VkComponentTypeNV AType;
- VkComponentTypeNV BType;
- VkComponentTypeNV CType;
- VkComponentTypeNV DType;
- VkScopeNV scope;
-} VkCooperativeMatrixPropertiesNV;
-
-typedef struct VkPhysicalDeviceCooperativeMatrixFeaturesNV {
- VkStructureType sType;
- void* pNext;
- VkBool32 cooperativeMatrix;
- VkBool32 cooperativeMatrixRobustBufferAccess;
-} VkPhysicalDeviceCooperativeMatrixFeaturesNV;
-
-typedef struct VkPhysicalDeviceCooperativeMatrixPropertiesNV {
- VkStructureType sType;
- void* pNext;
- VkShaderStageFlags cooperativeMatrixSupportedStages;
-} VkPhysicalDeviceCooperativeMatrixPropertiesNV;
-
-typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkCooperativeMatrixPropertiesNV* pProperties);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(
- VkPhysicalDevice physicalDevice,
- uint32_t* pPropertyCount,
- VkCooperativeMatrixPropertiesNV* pProperties);
-#endif
-
-
-#define VK_NV_coverage_reduction_mode 1
-#define VK_NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION 1
-#define VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME "VK_NV_coverage_reduction_mode"
-
-typedef enum VkCoverageReductionModeNV {
- VK_COVERAGE_REDUCTION_MODE_MERGE_NV = 0,
- VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV = 1,
- VK_COVERAGE_REDUCTION_MODE_MAX_ENUM_NV = 0x7FFFFFFF
-} VkCoverageReductionModeNV;
-typedef VkFlags VkPipelineCoverageReductionStateCreateFlagsNV;
-typedef struct VkPhysicalDeviceCoverageReductionModeFeaturesNV {
- VkStructureType sType;
- void* pNext;
- VkBool32 coverageReductionMode;
-} VkPhysicalDeviceCoverageReductionModeFeaturesNV;
-
-typedef struct VkPipelineCoverageReductionStateCreateInfoNV {
- VkStructureType sType;
- const void* pNext;
- VkPipelineCoverageReductionStateCreateFlagsNV flags;
- VkCoverageReductionModeNV coverageReductionMode;
-} VkPipelineCoverageReductionStateCreateInfoNV;
-
-typedef struct VkFramebufferMixedSamplesCombinationNV {
- VkStructureType sType;
- void* pNext;
- VkCoverageReductionModeNV coverageReductionMode;
- VkSampleCountFlagBits rasterizationSamples;
- VkSampleCountFlags depthStencilSamples;
- VkSampleCountFlags colorSamples;
-} VkFramebufferMixedSamplesCombinationNV;
-
-typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV)(VkPhysicalDevice physicalDevice, uint32_t* pCombinationCount, VkFramebufferMixedSamplesCombinationNV* pCombinations);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(
- VkPhysicalDevice physicalDevice,
- uint32_t* pCombinationCount,
- VkFramebufferMixedSamplesCombinationNV* pCombinations);
-#endif
-
-
-#define VK_EXT_fragment_shader_interlock 1
-#define VK_EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION 1
-#define VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME "VK_EXT_fragment_shader_interlock"
-typedef struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT {
- VkStructureType sType;
- void* pNext;
- VkBool32 fragmentShaderSampleInterlock;
- VkBool32 fragmentShaderPixelInterlock;
- VkBool32 fragmentShaderShadingRateInterlock;
-} VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT;
-
-
-
-#define VK_EXT_ycbcr_image_arrays 1
-#define VK_EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION 1
-#define VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME "VK_EXT_ycbcr_image_arrays"
-typedef struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT {
- VkStructureType sType;
- void* pNext;
- VkBool32 ycbcrImageArrays;
-} VkPhysicalDeviceYcbcrImageArraysFeaturesEXT;
-
-
-
-#define VK_EXT_provoking_vertex 1
-#define VK_EXT_PROVOKING_VERTEX_SPEC_VERSION 1
-#define VK_EXT_PROVOKING_VERTEX_EXTENSION_NAME "VK_EXT_provoking_vertex"
-
-typedef enum VkProvokingVertexModeEXT {
- VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT = 0,
- VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT = 1,
- VK_PROVOKING_VERTEX_MODE_MAX_ENUM_EXT = 0x7FFFFFFF
-} VkProvokingVertexModeEXT;
-typedef struct VkPhysicalDeviceProvokingVertexFeaturesEXT {
- VkStructureType sType;
- void* pNext;
- VkBool32 provokingVertexLast;
- VkBool32 transformFeedbackPreservesProvokingVertex;
-} VkPhysicalDeviceProvokingVertexFeaturesEXT;
-
-typedef struct VkPhysicalDeviceProvokingVertexPropertiesEXT {
- VkStructureType sType;
- void* pNext;
- VkBool32 provokingVertexModePerPipeline;
- VkBool32 transformFeedbackPreservesTriangleFanProvokingVertex;
-} VkPhysicalDeviceProvokingVertexPropertiesEXT;
-
-typedef struct VkPipelineRasterizationProvokingVertexStateCreateInfoEXT {
- VkStructureType sType;
- const void* pNext;
- VkProvokingVertexModeEXT provokingVertexMode;
-} VkPipelineRasterizationProvokingVertexStateCreateInfoEXT;
-
-
-
-#define VK_EXT_headless_surface 1
-#define VK_EXT_HEADLESS_SURFACE_SPEC_VERSION 1
-#define VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME "VK_EXT_headless_surface"
-typedef VkFlags VkHeadlessSurfaceCreateFlagsEXT;
-typedef struct VkHeadlessSurfaceCreateInfoEXT {
- VkStructureType sType;
- const void* pNext;
- VkHeadlessSurfaceCreateFlagsEXT flags;
-} VkHeadlessSurfaceCreateInfoEXT;
-
-typedef VkResult (VKAPI_PTR *PFN_vkCreateHeadlessSurfaceEXT)(VkInstance instance, const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateHeadlessSurfaceEXT(
- VkInstance instance,
- const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkSurfaceKHR* pSurface);
-#endif
-
-
-#define VK_EXT_line_rasterization 1
-#define VK_EXT_LINE_RASTERIZATION_SPEC_VERSION 1
-#define VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME "VK_EXT_line_rasterization"
-
-typedef enum VkLineRasterizationModeEXT {
- VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT = 0,
- VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT = 1,
- VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT = 2,
- VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT = 3,
- VK_LINE_RASTERIZATION_MODE_MAX_ENUM_EXT = 0x7FFFFFFF
-} VkLineRasterizationModeEXT;
-typedef struct VkPhysicalDeviceLineRasterizationFeaturesEXT {
- VkStructureType sType;
- void* pNext;
- VkBool32 rectangularLines;
- VkBool32 bresenhamLines;
- VkBool32 smoothLines;
- VkBool32 stippledRectangularLines;
- VkBool32 stippledBresenhamLines;
- VkBool32 stippledSmoothLines;
-} VkPhysicalDeviceLineRasterizationFeaturesEXT;
-
-typedef struct VkPhysicalDeviceLineRasterizationPropertiesEXT {
- VkStructureType sType;
- void* pNext;
- uint32_t lineSubPixelPrecisionBits;
-} VkPhysicalDeviceLineRasterizationPropertiesEXT;
-
-typedef struct VkPipelineRasterizationLineStateCreateInfoEXT {
- VkStructureType sType;
- const void* pNext;
- VkLineRasterizationModeEXT lineRasterizationMode;
- VkBool32 stippledLineEnable;
- uint32_t lineStippleFactor;
- uint16_t lineStipplePattern;
-} VkPipelineRasterizationLineStateCreateInfoEXT;
-
-typedef void (VKAPI_PTR *PFN_vkCmdSetLineStippleEXT)(VkCommandBuffer commandBuffer, uint32_t lineStippleFactor, uint16_t lineStipplePattern);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR void VKAPI_CALL vkCmdSetLineStippleEXT(
- VkCommandBuffer commandBuffer,
- uint32_t lineStippleFactor,
- uint16_t lineStipplePattern);
-#endif
-
-
-#define VK_EXT_shader_atomic_float 1
-#define VK_EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION 1
-#define VK_EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME "VK_EXT_shader_atomic_float"
-typedef struct VkPhysicalDeviceShaderAtomicFloatFeaturesEXT {
- VkStructureType sType;
- void* pNext;
- VkBool32 shaderBufferFloat32Atomics;
- VkBool32 shaderBufferFloat32AtomicAdd;
- VkBool32 shaderBufferFloat64Atomics;
- VkBool32 shaderBufferFloat64AtomicAdd;
- VkBool32 shaderSharedFloat32Atomics;
- VkBool32 shaderSharedFloat32AtomicAdd;
- VkBool32 shaderSharedFloat64Atomics;
- VkBool32 shaderSharedFloat64AtomicAdd;
- VkBool32 shaderImageFloat32Atomics;
- VkBool32 shaderImageFloat32AtomicAdd;
- VkBool32 sparseImageFloat32Atomics;
- VkBool32 sparseImageFloat32AtomicAdd;
-} VkPhysicalDeviceShaderAtomicFloatFeaturesEXT;
-
-
-
-#define VK_EXT_host_query_reset 1
-#define VK_EXT_HOST_QUERY_RESET_SPEC_VERSION 1
-#define VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME "VK_EXT_host_query_reset"
-typedef VkPhysicalDeviceHostQueryResetFeatures VkPhysicalDeviceHostQueryResetFeaturesEXT;
-
-typedef void (VKAPI_PTR *PFN_vkResetQueryPoolEXT)(VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR void VKAPI_CALL vkResetQueryPoolEXT(
- VkDevice device,
- VkQueryPool queryPool,
- uint32_t firstQuery,
- uint32_t queryCount);
-#endif
-
-
-#define VK_EXT_index_type_uint8 1
-#define VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION 1
-#define VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME "VK_EXT_index_type_uint8"
-typedef struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT {
- VkStructureType sType;
- void* pNext;
- VkBool32 indexTypeUint8;
-} VkPhysicalDeviceIndexTypeUint8FeaturesEXT;
-
-
-
-#define VK_EXT_extended_dynamic_state 1
-#define VK_EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION 1
-#define VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME "VK_EXT_extended_dynamic_state"
-typedef struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT {
- VkStructureType sType;
- void* pNext;
- VkBool32 extendedDynamicState;
-} VkPhysicalDeviceExtendedDynamicStateFeaturesEXT;
-
-typedef void (VKAPI_PTR *PFN_vkCmdSetCullModeEXT)(VkCommandBuffer commandBuffer, VkCullModeFlags cullMode);
-typedef void (VKAPI_PTR *PFN_vkCmdSetFrontFaceEXT)(VkCommandBuffer commandBuffer, VkFrontFace frontFace);
-typedef void (VKAPI_PTR *PFN_vkCmdSetPrimitiveTopologyEXT)(VkCommandBuffer commandBuffer, VkPrimitiveTopology primitiveTopology);
-typedef void (VKAPI_PTR *PFN_vkCmdSetViewportWithCountEXT)(VkCommandBuffer commandBuffer, uint32_t viewportCount, const VkViewport* pViewports);
-typedef void (VKAPI_PTR *PFN_vkCmdSetScissorWithCountEXT)(VkCommandBuffer commandBuffer, uint32_t scissorCount, const VkRect2D* pScissors);
-typedef void (VKAPI_PTR *PFN_vkCmdBindVertexBuffers2EXT)(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes, const VkDeviceSize* pStrides);
-typedef void (VKAPI_PTR *PFN_vkCmdSetDepthTestEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 depthTestEnable);
-typedef void (VKAPI_PTR *PFN_vkCmdSetDepthWriteEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 depthWriteEnable);
-typedef void (VKAPI_PTR *PFN_vkCmdSetDepthCompareOpEXT)(VkCommandBuffer commandBuffer, VkCompareOp depthCompareOp);
-typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBoundsTestEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 depthBoundsTestEnable);
-typedef void (VKAPI_PTR *PFN_vkCmdSetStencilTestEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 stencilTestEnable);
-typedef void (VKAPI_PTR *PFN_vkCmdSetStencilOpEXT)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, VkStencilOp failOp, VkStencilOp passOp, VkStencilOp depthFailOp, VkCompareOp compareOp);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR void VKAPI_CALL vkCmdSetCullModeEXT(
- VkCommandBuffer commandBuffer,
- VkCullModeFlags cullMode);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdSetFrontFaceEXT(
- VkCommandBuffer commandBuffer,
- VkFrontFace frontFace);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdSetPrimitiveTopologyEXT(
- VkCommandBuffer commandBuffer,
- VkPrimitiveTopology primitiveTopology);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdSetViewportWithCountEXT(
- VkCommandBuffer commandBuffer,
- uint32_t viewportCount,
- const VkViewport* pViewports);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdSetScissorWithCountEXT(
- VkCommandBuffer commandBuffer,
- uint32_t scissorCount,
- const VkRect2D* pScissors);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdBindVertexBuffers2EXT(
- VkCommandBuffer commandBuffer,
- uint32_t firstBinding,
- uint32_t bindingCount,
- const VkBuffer* pBuffers,
- const VkDeviceSize* pOffsets,
- const VkDeviceSize* pSizes,
- const VkDeviceSize* pStrides);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthTestEnableEXT(
- VkCommandBuffer commandBuffer,
- VkBool32 depthTestEnable);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthWriteEnableEXT(
- VkCommandBuffer commandBuffer,
- VkBool32 depthWriteEnable);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthCompareOpEXT(
- VkCommandBuffer commandBuffer,
- VkCompareOp depthCompareOp);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBoundsTestEnableEXT(
- VkCommandBuffer commandBuffer,
- VkBool32 depthBoundsTestEnable);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilTestEnableEXT(
- VkCommandBuffer commandBuffer,
- VkBool32 stencilTestEnable);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilOpEXT(
- VkCommandBuffer commandBuffer,
- VkStencilFaceFlags faceMask,
- VkStencilOp failOp,
- VkStencilOp passOp,
- VkStencilOp depthFailOp,
- VkCompareOp compareOp);
-#endif
-
-
-#define VK_EXT_shader_atomic_float2 1
-#define VK_EXT_SHADER_ATOMIC_FLOAT_2_SPEC_VERSION 1
-#define VK_EXT_SHADER_ATOMIC_FLOAT_2_EXTENSION_NAME "VK_EXT_shader_atomic_float2"
-typedef struct VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT {
- VkStructureType sType;
- void* pNext;
- VkBool32 shaderBufferFloat16Atomics;
- VkBool32 shaderBufferFloat16AtomicAdd;
- VkBool32 shaderBufferFloat16AtomicMinMax;
- VkBool32 shaderBufferFloat32AtomicMinMax;
- VkBool32 shaderBufferFloat64AtomicMinMax;
- VkBool32 shaderSharedFloat16Atomics;
- VkBool32 shaderSharedFloat16AtomicAdd;
- VkBool32 shaderSharedFloat16AtomicMinMax;
- VkBool32 shaderSharedFloat32AtomicMinMax;
- VkBool32 shaderSharedFloat64AtomicMinMax;
- VkBool32 shaderImageFloat32AtomicMinMax;
- VkBool32 sparseImageFloat32AtomicMinMax;
-} VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT;
-
-
-
-#define VK_EXT_shader_demote_to_helper_invocation 1
-#define VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION 1
-#define VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME "VK_EXT_shader_demote_to_helper_invocation"
-typedef struct VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT {
- VkStructureType sType;
- void* pNext;
- VkBool32 shaderDemoteToHelperInvocation;
-} VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT;
-
-
-
-#define VK_NV_device_generated_commands 1
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkIndirectCommandsLayoutNV)
-#define VK_NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION 3
-#define VK_NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME "VK_NV_device_generated_commands"
-
-typedef enum VkIndirectCommandsTokenTypeNV {
- VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV = 0,
- VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV = 1,
- VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV = 2,
- VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV = 3,
- VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV = 4,
- VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV = 5,
- VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV = 6,
- VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV = 7,
- VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 0x7FFFFFFF
-} VkIndirectCommandsTokenTypeNV;
-
-typedef enum VkIndirectStateFlagBitsNV {
- VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 0x00000001,
- VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF
-} VkIndirectStateFlagBitsNV;
-typedef VkFlags VkIndirectStateFlagsNV;
-
-typedef enum VkIndirectCommandsLayoutUsageFlagBitsNV {
- VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV = 0x00000001,
- VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV = 0x00000002,
- VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV = 0x00000004,
- VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF
-} VkIndirectCommandsLayoutUsageFlagBitsNV;
-typedef VkFlags VkIndirectCommandsLayoutUsageFlagsNV;
-typedef struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV {
- VkStructureType sType;
- void* pNext;
- uint32_t maxGraphicsShaderGroupCount;
- uint32_t maxIndirectSequenceCount;
- uint32_t maxIndirectCommandsTokenCount;
- uint32_t maxIndirectCommandsStreamCount;
- uint32_t maxIndirectCommandsTokenOffset;
- uint32_t maxIndirectCommandsStreamStride;
- uint32_t minSequencesCountBufferOffsetAlignment;
- uint32_t minSequencesIndexBufferOffsetAlignment;
- uint32_t minIndirectCommandsBufferOffsetAlignment;
-} VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV;
-
-typedef struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV {
- VkStructureType sType;
- void* pNext;
- VkBool32 deviceGeneratedCommands;
-} VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV;
-
-typedef struct VkGraphicsShaderGroupCreateInfoNV {
- VkStructureType sType;
- const void* pNext;
- uint32_t stageCount;
- const VkPipelineShaderStageCreateInfo* pStages;
- const VkPipelineVertexInputStateCreateInfo* pVertexInputState;
- const VkPipelineTessellationStateCreateInfo* pTessellationState;
-} VkGraphicsShaderGroupCreateInfoNV;
-
-typedef struct VkGraphicsPipelineShaderGroupsCreateInfoNV {
- VkStructureType sType;
- const void* pNext;
- uint32_t groupCount;
- const VkGraphicsShaderGroupCreateInfoNV* pGroups;
- uint32_t pipelineCount;
- const VkPipeline* pPipelines;
-} VkGraphicsPipelineShaderGroupsCreateInfoNV;
-
-typedef struct VkBindShaderGroupIndirectCommandNV {
- uint32_t groupIndex;
-} VkBindShaderGroupIndirectCommandNV;
-
-typedef struct VkBindIndexBufferIndirectCommandNV {
- VkDeviceAddress bufferAddress;
- uint32_t size;
- VkIndexType indexType;
-} VkBindIndexBufferIndirectCommandNV;
-
-typedef struct VkBindVertexBufferIndirectCommandNV {
- VkDeviceAddress bufferAddress;
- uint32_t size;
- uint32_t stride;
-} VkBindVertexBufferIndirectCommandNV;
-
-typedef struct VkSetStateFlagsIndirectCommandNV {
- uint32_t data;
-} VkSetStateFlagsIndirectCommandNV;
-
-typedef struct VkIndirectCommandsStreamNV {
- VkBuffer buffer;
- VkDeviceSize offset;
-} VkIndirectCommandsStreamNV;
-
-typedef struct VkIndirectCommandsLayoutTokenNV {
- VkStructureType sType;
- const void* pNext;
- VkIndirectCommandsTokenTypeNV tokenType;
- uint32_t stream;
- uint32_t offset;
- uint32_t vertexBindingUnit;
- VkBool32 vertexDynamicStride;
- VkPipelineLayout pushconstantPipelineLayout;
- VkShaderStageFlags pushconstantShaderStageFlags;
- uint32_t pushconstantOffset;
- uint32_t pushconstantSize;
- VkIndirectStateFlagsNV indirectStateFlags;
- uint32_t indexTypeCount;
- const VkIndexType* pIndexTypes;
- const uint32_t* pIndexTypeValues;
-} VkIndirectCommandsLayoutTokenNV;
-
-typedef struct VkIndirectCommandsLayoutCreateInfoNV {
- VkStructureType sType;
- const void* pNext;
- VkIndirectCommandsLayoutUsageFlagsNV flags;
- VkPipelineBindPoint pipelineBindPoint;
- uint32_t tokenCount;
- const VkIndirectCommandsLayoutTokenNV* pTokens;
- uint32_t streamCount;
- const uint32_t* pStreamStrides;
-} VkIndirectCommandsLayoutCreateInfoNV;
-
-typedef struct VkGeneratedCommandsInfoNV {
- VkStructureType sType;
- const void* pNext;
- VkPipelineBindPoint pipelineBindPoint;
- VkPipeline pipeline;
- VkIndirectCommandsLayoutNV indirectCommandsLayout;
- uint32_t streamCount;
- const VkIndirectCommandsStreamNV* pStreams;
- uint32_t sequencesCount;
- VkBuffer preprocessBuffer;
- VkDeviceSize preprocessOffset;
- VkDeviceSize preprocessSize;
- VkBuffer sequencesCountBuffer;
- VkDeviceSize sequencesCountOffset;
- VkBuffer sequencesIndexBuffer;
- VkDeviceSize sequencesIndexOffset;
-} VkGeneratedCommandsInfoNV;
-
-typedef struct VkGeneratedCommandsMemoryRequirementsInfoNV {
- VkStructureType sType;
- const void* pNext;
- VkPipelineBindPoint pipelineBindPoint;
- VkPipeline pipeline;
- VkIndirectCommandsLayoutNV indirectCommandsLayout;
- uint32_t maxSequencesCount;
-} VkGeneratedCommandsMemoryRequirementsInfoNV;
-
-typedef void (VKAPI_PTR *PFN_vkGetGeneratedCommandsMemoryRequirementsNV)(VkDevice device, const VkGeneratedCommandsMemoryRequirementsInfoNV* pInfo, VkMemoryRequirements2* pMemoryRequirements);
-typedef void (VKAPI_PTR *PFN_vkCmdPreprocessGeneratedCommandsNV)(VkCommandBuffer commandBuffer, const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo);
-typedef void (VKAPI_PTR *PFN_vkCmdExecuteGeneratedCommandsNV)(VkCommandBuffer commandBuffer, VkBool32 isPreprocessed, const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo);
-typedef void (VKAPI_PTR *PFN_vkCmdBindPipelineShaderGroupNV)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline, uint32_t groupIndex);
-typedef VkResult (VKAPI_PTR *PFN_vkCreateIndirectCommandsLayoutNV)(VkDevice device, const VkIndirectCommandsLayoutCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkIndirectCommandsLayoutNV* pIndirectCommandsLayout);
-typedef void (VKAPI_PTR *PFN_vkDestroyIndirectCommandsLayoutNV)(VkDevice device, VkIndirectCommandsLayoutNV indirectCommandsLayout, const VkAllocationCallbacks* pAllocator);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR void VKAPI_CALL vkGetGeneratedCommandsMemoryRequirementsNV(
- VkDevice device,
- const VkGeneratedCommandsMemoryRequirementsInfoNV* pInfo,
- VkMemoryRequirements2* pMemoryRequirements);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdPreprocessGeneratedCommandsNV(
- VkCommandBuffer commandBuffer,
- const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdExecuteGeneratedCommandsNV(
- VkCommandBuffer commandBuffer,
- VkBool32 isPreprocessed,
- const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdBindPipelineShaderGroupNV(
- VkCommandBuffer commandBuffer,
- VkPipelineBindPoint pipelineBindPoint,
- VkPipeline pipeline,
- uint32_t groupIndex);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateIndirectCommandsLayoutNV(
- VkDevice device,
- const VkIndirectCommandsLayoutCreateInfoNV* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkIndirectCommandsLayoutNV* pIndirectCommandsLayout);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroyIndirectCommandsLayoutNV(
- VkDevice device,
- VkIndirectCommandsLayoutNV indirectCommandsLayout,
- const VkAllocationCallbacks* pAllocator);
-#endif
-
-
-#define VK_NV_inherited_viewport_scissor 1
-#define VK_NV_INHERITED_VIEWPORT_SCISSOR_SPEC_VERSION 1
-#define VK_NV_INHERITED_VIEWPORT_SCISSOR_EXTENSION_NAME "VK_NV_inherited_viewport_scissor"
-typedef struct VkPhysicalDeviceInheritedViewportScissorFeaturesNV {
- VkStructureType sType;
- void* pNext;
- VkBool32 inheritedViewportScissor2D;
-} VkPhysicalDeviceInheritedViewportScissorFeaturesNV;
-
-typedef struct VkCommandBufferInheritanceViewportScissorInfoNV {
- VkStructureType sType;
- const void* pNext;
- VkBool32 viewportScissor2D;
- uint32_t viewportDepthCount;
- const VkViewport* pViewportDepths;
-} VkCommandBufferInheritanceViewportScissorInfoNV;
-
-
-
-#define VK_EXT_texel_buffer_alignment 1
-#define VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION 1
-#define VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME "VK_EXT_texel_buffer_alignment"
-typedef struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT {
- VkStructureType sType;
- void* pNext;
- VkBool32 texelBufferAlignment;
-} VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT;
-
-typedef struct VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT {
- VkStructureType sType;
- void* pNext;
- VkDeviceSize storageTexelBufferOffsetAlignmentBytes;
- VkBool32 storageTexelBufferOffsetSingleTexelAlignment;
- VkDeviceSize uniformTexelBufferOffsetAlignmentBytes;
- VkBool32 uniformTexelBufferOffsetSingleTexelAlignment;
-} VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT;
-
-
-
-#define VK_QCOM_render_pass_transform 1
-#define VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION 2
-#define VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME "VK_QCOM_render_pass_transform"
-typedef struct VkRenderPassTransformBeginInfoQCOM {
- VkStructureType sType;
- void* pNext;
- VkSurfaceTransformFlagBitsKHR transform;
-} VkRenderPassTransformBeginInfoQCOM;
-
-typedef struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM {
- VkStructureType sType;
- void* pNext;
- VkSurfaceTransformFlagBitsKHR transform;
- VkRect2D renderArea;
-} VkCommandBufferInheritanceRenderPassTransformInfoQCOM;
-
-
-
-#define VK_EXT_device_memory_report 1
-#define VK_EXT_DEVICE_MEMORY_REPORT_SPEC_VERSION 2
-#define VK_EXT_DEVICE_MEMORY_REPORT_EXTENSION_NAME "VK_EXT_device_memory_report"
-
-typedef enum VkDeviceMemoryReportEventTypeEXT {
- VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATE_EXT = 0,
- VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_FREE_EXT = 1,
- VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_IMPORT_EXT = 2,
- VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_UNIMPORT_EXT = 3,
- VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATION_FAILED_EXT = 4,
- VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF
-} VkDeviceMemoryReportEventTypeEXT;
-typedef VkFlags VkDeviceMemoryReportFlagsEXT;
-typedef struct VkPhysicalDeviceDeviceMemoryReportFeaturesEXT {
- VkStructureType sType;
- void* pNext;
- VkBool32 deviceMemoryReport;
-} VkPhysicalDeviceDeviceMemoryReportFeaturesEXT;
-
-typedef struct VkDeviceMemoryReportCallbackDataEXT {
- VkStructureType sType;
- void* pNext;
- VkDeviceMemoryReportFlagsEXT flags;
- VkDeviceMemoryReportEventTypeEXT type;
- uint64_t memoryObjectId;
- VkDeviceSize size;
- VkObjectType objectType;
- uint64_t objectHandle;
- uint32_t heapIndex;
-} VkDeviceMemoryReportCallbackDataEXT;
-
-typedef void (VKAPI_PTR *PFN_vkDeviceMemoryReportCallbackEXT)(
- const VkDeviceMemoryReportCallbackDataEXT* pCallbackData,
- void* pUserData);
-
-typedef struct VkDeviceDeviceMemoryReportCreateInfoEXT {
- VkStructureType sType;
- const void* pNext;
- VkDeviceMemoryReportFlagsEXT flags;
- PFN_vkDeviceMemoryReportCallbackEXT pfnUserCallback;
- void* pUserData;
-} VkDeviceDeviceMemoryReportCreateInfoEXT;
-
-
-
-#define VK_EXT_acquire_drm_display 1
-#define VK_EXT_ACQUIRE_DRM_DISPLAY_SPEC_VERSION 1
-#define VK_EXT_ACQUIRE_DRM_DISPLAY_EXTENSION_NAME "VK_EXT_acquire_drm_display"
-typedef VkResult (VKAPI_PTR *PFN_vkAcquireDrmDisplayEXT)(VkPhysicalDevice physicalDevice, int32_t drmFd, VkDisplayKHR display);
-typedef VkResult (VKAPI_PTR *PFN_vkGetDrmDisplayEXT)(VkPhysicalDevice physicalDevice, int32_t drmFd, uint32_t connectorId, VkDisplayKHR* display);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkAcquireDrmDisplayEXT(
- VkPhysicalDevice physicalDevice,
- int32_t drmFd,
- VkDisplayKHR display);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetDrmDisplayEXT(
- VkPhysicalDevice physicalDevice,
- int32_t drmFd,
- uint32_t connectorId,
- VkDisplayKHR* display);
-#endif
-
-
-#define VK_EXT_robustness2 1
-#define VK_EXT_ROBUSTNESS_2_SPEC_VERSION 1
-#define VK_EXT_ROBUSTNESS_2_EXTENSION_NAME "VK_EXT_robustness2"
-typedef struct VkPhysicalDeviceRobustness2FeaturesEXT {
- VkStructureType sType;
- void* pNext;
- VkBool32 robustBufferAccess2;
- VkBool32 robustImageAccess2;
- VkBool32 nullDescriptor;
-} VkPhysicalDeviceRobustness2FeaturesEXT;
-
-typedef struct VkPhysicalDeviceRobustness2PropertiesEXT {
- VkStructureType sType;
- void* pNext;
- VkDeviceSize robustStorageBufferAccessSizeAlignment;
- VkDeviceSize robustUniformBufferAccessSizeAlignment;
-} VkPhysicalDeviceRobustness2PropertiesEXT;
-
-
-
-#define VK_EXT_custom_border_color 1
-#define VK_EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION 12
-#define VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME "VK_EXT_custom_border_color"
-typedef struct VkSamplerCustomBorderColorCreateInfoEXT {
- VkStructureType sType;
- const void* pNext;
- VkClearColorValue customBorderColor;
- VkFormat format;
-} VkSamplerCustomBorderColorCreateInfoEXT;
-
-typedef struct VkPhysicalDeviceCustomBorderColorPropertiesEXT {
- VkStructureType sType;
- void* pNext;
- uint32_t maxCustomBorderColorSamplers;
-} VkPhysicalDeviceCustomBorderColorPropertiesEXT;
-
-typedef struct VkPhysicalDeviceCustomBorderColorFeaturesEXT {
- VkStructureType sType;
- void* pNext;
- VkBool32 customBorderColors;
- VkBool32 customBorderColorWithoutFormat;
-} VkPhysicalDeviceCustomBorderColorFeaturesEXT;
-
-
-
-#define VK_GOOGLE_user_type 1
-#define VK_GOOGLE_USER_TYPE_SPEC_VERSION 1
-#define VK_GOOGLE_USER_TYPE_EXTENSION_NAME "VK_GOOGLE_user_type"
-
-
-#define VK_EXT_private_data 1
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPrivateDataSlotEXT)
-#define VK_EXT_PRIVATE_DATA_SPEC_VERSION 1
-#define VK_EXT_PRIVATE_DATA_EXTENSION_NAME "VK_EXT_private_data"
-
-typedef enum VkPrivateDataSlotCreateFlagBitsEXT {
- VK_PRIVATE_DATA_SLOT_CREATE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
-} VkPrivateDataSlotCreateFlagBitsEXT;
-typedef VkFlags VkPrivateDataSlotCreateFlagsEXT;
-typedef struct VkPhysicalDevicePrivateDataFeaturesEXT {
- VkStructureType sType;
- void* pNext;
- VkBool32 privateData;
-} VkPhysicalDevicePrivateDataFeaturesEXT;
-
-typedef struct VkDevicePrivateDataCreateInfoEXT {
- VkStructureType sType;
- const void* pNext;
- uint32_t privateDataSlotRequestCount;
-} VkDevicePrivateDataCreateInfoEXT;
-
-typedef struct VkPrivateDataSlotCreateInfoEXT {
- VkStructureType sType;
- const void* pNext;
- VkPrivateDataSlotCreateFlagsEXT flags;
-} VkPrivateDataSlotCreateInfoEXT;
-
-typedef VkResult (VKAPI_PTR *PFN_vkCreatePrivateDataSlotEXT)(VkDevice device, const VkPrivateDataSlotCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPrivateDataSlotEXT* pPrivateDataSlot);
-typedef void (VKAPI_PTR *PFN_vkDestroyPrivateDataSlotEXT)(VkDevice device, VkPrivateDataSlotEXT privateDataSlot, const VkAllocationCallbacks* pAllocator);
-typedef VkResult (VKAPI_PTR *PFN_vkSetPrivateDataEXT)(VkDevice device, VkObjectType objectType, uint64_t objectHandle, VkPrivateDataSlotEXT privateDataSlot, uint64_t data);
-typedef void (VKAPI_PTR *PFN_vkGetPrivateDataEXT)(VkDevice device, VkObjectType objectType, uint64_t objectHandle, VkPrivateDataSlotEXT privateDataSlot, uint64_t* pData);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkCreatePrivateDataSlotEXT(
- VkDevice device,
- const VkPrivateDataSlotCreateInfoEXT* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkPrivateDataSlotEXT* pPrivateDataSlot);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroyPrivateDataSlotEXT(
- VkDevice device,
- VkPrivateDataSlotEXT privateDataSlot,
- const VkAllocationCallbacks* pAllocator);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkSetPrivateDataEXT(
- VkDevice device,
- VkObjectType objectType,
- uint64_t objectHandle,
- VkPrivateDataSlotEXT privateDataSlot,
- uint64_t data);
-
-VKAPI_ATTR void VKAPI_CALL vkGetPrivateDataEXT(
- VkDevice device,
- VkObjectType objectType,
- uint64_t objectHandle,
- VkPrivateDataSlotEXT privateDataSlot,
- uint64_t* pData);
-#endif
-
-
-#define VK_EXT_pipeline_creation_cache_control 1
-#define VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION 3
-#define VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME "VK_EXT_pipeline_creation_cache_control"
-typedef struct VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT {
- VkStructureType sType;
- void* pNext;
- VkBool32 pipelineCreationCacheControl;
-} VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT;
-
-
-
-#define VK_NV_device_diagnostics_config 1
-#define VK_NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION 1
-#define VK_NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME "VK_NV_device_diagnostics_config"
-
-typedef enum VkDeviceDiagnosticsConfigFlagBitsNV {
- VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV = 0x00000001,
- VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV = 0x00000002,
- VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV = 0x00000004,
- VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF
-} VkDeviceDiagnosticsConfigFlagBitsNV;
-typedef VkFlags VkDeviceDiagnosticsConfigFlagsNV;
-typedef struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV {
- VkStructureType sType;
- void* pNext;
- VkBool32 diagnosticsConfig;
-} VkPhysicalDeviceDiagnosticsConfigFeaturesNV;
-
-typedef struct VkDeviceDiagnosticsConfigCreateInfoNV {
- VkStructureType sType;
- const void* pNext;
- VkDeviceDiagnosticsConfigFlagsNV flags;
-} VkDeviceDiagnosticsConfigCreateInfoNV;
-
-
-
-#define VK_QCOM_render_pass_store_ops 1
-#define VK_QCOM_RENDER_PASS_STORE_OPS_SPEC_VERSION 2
-#define VK_QCOM_RENDER_PASS_STORE_OPS_EXTENSION_NAME "VK_QCOM_render_pass_store_ops"
-
-
-#define VK_NV_fragment_shading_rate_enums 1
-#define VK_NV_FRAGMENT_SHADING_RATE_ENUMS_SPEC_VERSION 1
-#define VK_NV_FRAGMENT_SHADING_RATE_ENUMS_EXTENSION_NAME "VK_NV_fragment_shading_rate_enums"
-
-typedef enum VkFragmentShadingRateTypeNV {
- VK_FRAGMENT_SHADING_RATE_TYPE_FRAGMENT_SIZE_NV = 0,
- VK_FRAGMENT_SHADING_RATE_TYPE_ENUMS_NV = 1,
- VK_FRAGMENT_SHADING_RATE_TYPE_MAX_ENUM_NV = 0x7FFFFFFF
-} VkFragmentShadingRateTypeNV;
-
-typedef enum VkFragmentShadingRateNV {
- VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV = 0,
- VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV = 1,
- VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X1_PIXELS_NV = 4,
- VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X2_PIXELS_NV = 5,
- VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X4_PIXELS_NV = 6,
- VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X2_PIXELS_NV = 9,
- VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X4_PIXELS_NV = 10,
- VK_FRAGMENT_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV = 11,
- VK_FRAGMENT_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV = 12,
- VK_FRAGMENT_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV = 13,
- VK_FRAGMENT_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV = 14,
- VK_FRAGMENT_SHADING_RATE_NO_INVOCATIONS_NV = 15,
- VK_FRAGMENT_SHADING_RATE_MAX_ENUM_NV = 0x7FFFFFFF
-} VkFragmentShadingRateNV;
-typedef struct VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV {
- VkStructureType sType;
- void* pNext;
- VkBool32 fragmentShadingRateEnums;
- VkBool32 supersampleFragmentShadingRates;
- VkBool32 noInvocationFragmentShadingRates;
-} VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV;
-
-typedef struct VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV {
- VkStructureType sType;
- void* pNext;
- VkSampleCountFlagBits maxFragmentShadingRateInvocationCount;
-} VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV;
-
-typedef struct VkPipelineFragmentShadingRateEnumStateCreateInfoNV {
- VkStructureType sType;
- const void* pNext;
- VkFragmentShadingRateTypeNV shadingRateType;
- VkFragmentShadingRateNV shadingRate;
- VkFragmentShadingRateCombinerOpKHR combinerOps[2];
-} VkPipelineFragmentShadingRateEnumStateCreateInfoNV;
-
-typedef void (VKAPI_PTR *PFN_vkCmdSetFragmentShadingRateEnumNV)(VkCommandBuffer commandBuffer, VkFragmentShadingRateNV shadingRate, const VkFragmentShadingRateCombinerOpKHR combinerOps[2]);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR void VKAPI_CALL vkCmdSetFragmentShadingRateEnumNV(
- VkCommandBuffer commandBuffer,
- VkFragmentShadingRateNV shadingRate,
- const VkFragmentShadingRateCombinerOpKHR combinerOps[2]);
-#endif
-
-
-#define VK_NV_ray_tracing_motion_blur 1
-#define VK_NV_RAY_TRACING_MOTION_BLUR_SPEC_VERSION 1
-#define VK_NV_RAY_TRACING_MOTION_BLUR_EXTENSION_NAME "VK_NV_ray_tracing_motion_blur"
-
-typedef enum VkAccelerationStructureMotionInstanceTypeNV {
- VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV = 0,
- VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV = 1,
- VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV = 2,
- VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MAX_ENUM_NV = 0x7FFFFFFF
-} VkAccelerationStructureMotionInstanceTypeNV;
-typedef VkFlags VkAccelerationStructureMotionInfoFlagsNV;
-typedef VkFlags VkAccelerationStructureMotionInstanceFlagsNV;
-typedef union VkDeviceOrHostAddressConstKHR {
- VkDeviceAddress deviceAddress;
- const void* hostAddress;
-} VkDeviceOrHostAddressConstKHR;
-
-typedef struct VkAccelerationStructureGeometryMotionTrianglesDataNV {
- VkStructureType sType;
- const void* pNext;
- VkDeviceOrHostAddressConstKHR vertexData;
-} VkAccelerationStructureGeometryMotionTrianglesDataNV;
-
-typedef struct VkAccelerationStructureMotionInfoNV {
- VkStructureType sType;
- const void* pNext;
- uint32_t maxInstances;
- VkAccelerationStructureMotionInfoFlagsNV flags;
-} VkAccelerationStructureMotionInfoNV;
-
-typedef struct VkAccelerationStructureMatrixMotionInstanceNV {
- VkTransformMatrixKHR transformT0;
- VkTransformMatrixKHR transformT1;
- uint32_t instanceCustomIndex:24;
- uint32_t mask:8;
- uint32_t instanceShaderBindingTableRecordOffset:24;
- VkGeometryInstanceFlagsKHR flags:8;
- uint64_t accelerationStructureReference;
-} VkAccelerationStructureMatrixMotionInstanceNV;
-
-typedef struct VkSRTDataNV {
- float sx;
- float a;
- float b;
- float pvx;
- float sy;
- float c;
- float pvy;
- float sz;
- float pvz;
- float qx;
- float qy;
- float qz;
- float qw;
- float tx;
- float ty;
- float tz;
-} VkSRTDataNV;
-
-typedef struct VkAccelerationStructureSRTMotionInstanceNV {
- VkSRTDataNV transformT0;
- VkSRTDataNV transformT1;
- uint32_t instanceCustomIndex:24;
- uint32_t mask:8;
- uint32_t instanceShaderBindingTableRecordOffset:24;
- VkGeometryInstanceFlagsKHR flags:8;
- uint64_t accelerationStructureReference;
-} VkAccelerationStructureSRTMotionInstanceNV;
-
-typedef union VkAccelerationStructureMotionInstanceDataNV {
- VkAccelerationStructureInstanceKHR staticInstance;
- VkAccelerationStructureMatrixMotionInstanceNV matrixMotionInstance;
- VkAccelerationStructureSRTMotionInstanceNV srtMotionInstance;
-} VkAccelerationStructureMotionInstanceDataNV;
-
-typedef struct VkAccelerationStructureMotionInstanceNV {
- VkAccelerationStructureMotionInstanceTypeNV type;
- VkAccelerationStructureMotionInstanceFlagsNV flags;
- VkAccelerationStructureMotionInstanceDataNV data;
-} VkAccelerationStructureMotionInstanceNV;
-
-typedef struct VkPhysicalDeviceRayTracingMotionBlurFeaturesNV {
- VkStructureType sType;
- void* pNext;
- VkBool32 rayTracingMotionBlur;
- VkBool32 rayTracingMotionBlurPipelineTraceRaysIndirect;
-} VkPhysicalDeviceRayTracingMotionBlurFeaturesNV;
-
-
-
-#define VK_EXT_ycbcr_2plane_444_formats 1
-#define VK_EXT_YCBCR_2PLANE_444_FORMATS_SPEC_VERSION 1
-#define VK_EXT_YCBCR_2PLANE_444_FORMATS_EXTENSION_NAME "VK_EXT_ycbcr_2plane_444_formats"
-typedef struct VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT {
- VkStructureType sType;
- void* pNext;
- VkBool32 ycbcr2plane444Formats;
-} VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT;
-
-
-
-#define VK_EXT_fragment_density_map2 1
-#define VK_EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION 1
-#define VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME "VK_EXT_fragment_density_map2"
-typedef struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT {
- VkStructureType sType;
- void* pNext;
- VkBool32 fragmentDensityMapDeferred;
-} VkPhysicalDeviceFragmentDensityMap2FeaturesEXT;
-
-typedef struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT {
- VkStructureType sType;
- void* pNext;
- VkBool32 subsampledLoads;
- VkBool32 subsampledCoarseReconstructionEarlyAccess;
- uint32_t maxSubsampledArrayLayers;
- uint32_t maxDescriptorSetSubsampledSamplers;
-} VkPhysicalDeviceFragmentDensityMap2PropertiesEXT;
-
-
-
-#define VK_QCOM_rotated_copy_commands 1
-#define VK_QCOM_ROTATED_COPY_COMMANDS_SPEC_VERSION 1
-#define VK_QCOM_ROTATED_COPY_COMMANDS_EXTENSION_NAME "VK_QCOM_rotated_copy_commands"
-typedef struct VkCopyCommandTransformInfoQCOM {
- VkStructureType sType;
- const void* pNext;
- VkSurfaceTransformFlagBitsKHR transform;
-} VkCopyCommandTransformInfoQCOM;
-
-
-
-#define VK_EXT_image_robustness 1
-#define VK_EXT_IMAGE_ROBUSTNESS_SPEC_VERSION 1
-#define VK_EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME "VK_EXT_image_robustness"
-typedef struct VkPhysicalDeviceImageRobustnessFeaturesEXT {
- VkStructureType sType;
- void* pNext;
- VkBool32 robustImageAccess;
-} VkPhysicalDeviceImageRobustnessFeaturesEXT;
-
-
-
-#define VK_EXT_4444_formats 1
-#define VK_EXT_4444_FORMATS_SPEC_VERSION 1
-#define VK_EXT_4444_FORMATS_EXTENSION_NAME "VK_EXT_4444_formats"
-typedef struct VkPhysicalDevice4444FormatsFeaturesEXT {
- VkStructureType sType;
- void* pNext;
- VkBool32 formatA4R4G4B4;
- VkBool32 formatA4B4G4R4;
-} VkPhysicalDevice4444FormatsFeaturesEXT;
-
-
-
-#define VK_EXT_rgba10x6_formats 1
-#define VK_EXT_RGBA10X6_FORMATS_SPEC_VERSION 1
-#define VK_EXT_RGBA10X6_FORMATS_EXTENSION_NAME "VK_EXT_rgba10x6_formats"
-typedef struct VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT {
- VkStructureType sType;
- void* pNext;
- VkBool32 formatRgba10x6WithoutYCbCrSampler;
-} VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT;
-
-
-
-#define VK_NV_acquire_winrt_display 1
-#define VK_NV_ACQUIRE_WINRT_DISPLAY_SPEC_VERSION 1
-#define VK_NV_ACQUIRE_WINRT_DISPLAY_EXTENSION_NAME "VK_NV_acquire_winrt_display"
-typedef VkResult (VKAPI_PTR *PFN_vkAcquireWinrtDisplayNV)(VkPhysicalDevice physicalDevice, VkDisplayKHR display);
-typedef VkResult (VKAPI_PTR *PFN_vkGetWinrtDisplayNV)(VkPhysicalDevice physicalDevice, uint32_t deviceRelativeId, VkDisplayKHR* pDisplay);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkAcquireWinrtDisplayNV(
- VkPhysicalDevice physicalDevice,
- VkDisplayKHR display);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetWinrtDisplayNV(
- VkPhysicalDevice physicalDevice,
- uint32_t deviceRelativeId,
- VkDisplayKHR* pDisplay);
-#endif
-
-
-#define VK_VALVE_mutable_descriptor_type 1
-#define VK_VALVE_MUTABLE_DESCRIPTOR_TYPE_SPEC_VERSION 1
-#define VK_VALVE_MUTABLE_DESCRIPTOR_TYPE_EXTENSION_NAME "VK_VALVE_mutable_descriptor_type"
-typedef struct VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE {
- VkStructureType sType;
- void* pNext;
- VkBool32 mutableDescriptorType;
-} VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE;
-
-typedef struct VkMutableDescriptorTypeListVALVE {
- uint32_t descriptorTypeCount;
- const VkDescriptorType* pDescriptorTypes;
-} VkMutableDescriptorTypeListVALVE;
-
-typedef struct VkMutableDescriptorTypeCreateInfoVALVE {
- VkStructureType sType;
- const void* pNext;
- uint32_t mutableDescriptorTypeListCount;
- const VkMutableDescriptorTypeListVALVE* pMutableDescriptorTypeLists;
-} VkMutableDescriptorTypeCreateInfoVALVE;
-
-
-
-#define VK_EXT_vertex_input_dynamic_state 1
-#define VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_SPEC_VERSION 2
-#define VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME "VK_EXT_vertex_input_dynamic_state"
-typedef struct VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT {
- VkStructureType sType;
- void* pNext;
- VkBool32 vertexInputDynamicState;
-} VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT;
-
-typedef struct VkVertexInputBindingDescription2EXT {
- VkStructureType sType;
- void* pNext;
- uint32_t binding;
- uint32_t stride;
- VkVertexInputRate inputRate;
- uint32_t divisor;
-} VkVertexInputBindingDescription2EXT;
-
-typedef struct VkVertexInputAttributeDescription2EXT {
- VkStructureType sType;
- void* pNext;
- uint32_t location;
- uint32_t binding;
- VkFormat format;
- uint32_t offset;
-} VkVertexInputAttributeDescription2EXT;
-
-typedef void (VKAPI_PTR *PFN_vkCmdSetVertexInputEXT)(VkCommandBuffer commandBuffer, uint32_t vertexBindingDescriptionCount, const VkVertexInputBindingDescription2EXT* pVertexBindingDescriptions, uint32_t vertexAttributeDescriptionCount, const VkVertexInputAttributeDescription2EXT* pVertexAttributeDescriptions);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR void VKAPI_CALL vkCmdSetVertexInputEXT(
- VkCommandBuffer commandBuffer,
- uint32_t vertexBindingDescriptionCount,
- const VkVertexInputBindingDescription2EXT* pVertexBindingDescriptions,
- uint32_t vertexAttributeDescriptionCount,
- const VkVertexInputAttributeDescription2EXT* pVertexAttributeDescriptions);
-#endif
-
-
-#define VK_EXT_physical_device_drm 1
-#define VK_EXT_PHYSICAL_DEVICE_DRM_SPEC_VERSION 1
-#define VK_EXT_PHYSICAL_DEVICE_DRM_EXTENSION_NAME "VK_EXT_physical_device_drm"
-typedef struct VkPhysicalDeviceDrmPropertiesEXT {
- VkStructureType sType;
- void* pNext;
- VkBool32 hasPrimary;
- VkBool32 hasRender;
- int64_t primaryMajor;
- int64_t primaryMinor;
- int64_t renderMajor;
- int64_t renderMinor;
-} VkPhysicalDeviceDrmPropertiesEXT;
-
-
-
-#define VK_EXT_primitive_topology_list_restart 1
-#define VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_SPEC_VERSION 1
-#define VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_EXTENSION_NAME "VK_EXT_primitive_topology_list_restart"
-typedef struct VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT {
- VkStructureType sType;
- void* pNext;
- VkBool32 primitiveTopologyListRestart;
- VkBool32 primitiveTopologyPatchListRestart;
-} VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT;
-
-
-
-#define VK_HUAWEI_subpass_shading 1
-#define VK_HUAWEI_SUBPASS_SHADING_SPEC_VERSION 2
-#define VK_HUAWEI_SUBPASS_SHADING_EXTENSION_NAME "VK_HUAWEI_subpass_shading"
-typedef struct VkSubpassShadingPipelineCreateInfoHUAWEI {
- VkStructureType sType;
- void* pNext;
- VkRenderPass renderPass;
- uint32_t subpass;
-} VkSubpassShadingPipelineCreateInfoHUAWEI;
-
-typedef struct VkPhysicalDeviceSubpassShadingFeaturesHUAWEI {
- VkStructureType sType;
- void* pNext;
- VkBool32 subpassShading;
-} VkPhysicalDeviceSubpassShadingFeaturesHUAWEI;
-
-typedef struct VkPhysicalDeviceSubpassShadingPropertiesHUAWEI {
- VkStructureType sType;
- void* pNext;
- uint32_t maxSubpassShadingWorkgroupSizeAspectRatio;
-} VkPhysicalDeviceSubpassShadingPropertiesHUAWEI;
-
-typedef VkResult (VKAPI_PTR *PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI)(VkDevice device, VkRenderPass renderpass, VkExtent2D* pMaxWorkgroupSize);
-typedef void (VKAPI_PTR *PFN_vkCmdSubpassShadingHUAWEI)(VkCommandBuffer commandBuffer);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(
- VkDevice device,
- VkRenderPass renderpass,
- VkExtent2D* pMaxWorkgroupSize);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdSubpassShadingHUAWEI(
- VkCommandBuffer commandBuffer);
-#endif
-
-
-#define VK_HUAWEI_invocation_mask 1
-#define VK_HUAWEI_INVOCATION_MASK_SPEC_VERSION 1
-#define VK_HUAWEI_INVOCATION_MASK_EXTENSION_NAME "VK_HUAWEI_invocation_mask"
-typedef struct VkPhysicalDeviceInvocationMaskFeaturesHUAWEI {
- VkStructureType sType;
- void* pNext;
- VkBool32 invocationMask;
-} VkPhysicalDeviceInvocationMaskFeaturesHUAWEI;
-
-typedef void (VKAPI_PTR *PFN_vkCmdBindInvocationMaskHUAWEI)(VkCommandBuffer commandBuffer, VkImageView imageView, VkImageLayout imageLayout);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR void VKAPI_CALL vkCmdBindInvocationMaskHUAWEI(
- VkCommandBuffer commandBuffer,
- VkImageView imageView,
- VkImageLayout imageLayout);
-#endif
-
-
-#define VK_NV_external_memory_rdma 1
-typedef void* VkRemoteAddressNV;
-#define VK_NV_EXTERNAL_MEMORY_RDMA_SPEC_VERSION 1
-#define VK_NV_EXTERNAL_MEMORY_RDMA_EXTENSION_NAME "VK_NV_external_memory_rdma"
-typedef struct VkMemoryGetRemoteAddressInfoNV {
- VkStructureType sType;
- const void* pNext;
- VkDeviceMemory memory;
- VkExternalMemoryHandleTypeFlagBits handleType;
-} VkMemoryGetRemoteAddressInfoNV;
-
-typedef struct VkPhysicalDeviceExternalMemoryRDMAFeaturesNV {
- VkStructureType sType;
- void* pNext;
- VkBool32 externalMemoryRDMA;
-} VkPhysicalDeviceExternalMemoryRDMAFeaturesNV;
-
-typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryRemoteAddressNV)(VkDevice device, const VkMemoryGetRemoteAddressInfoNV* pMemoryGetRemoteAddressInfo, VkRemoteAddressNV* pAddress);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryRemoteAddressNV(
- VkDevice device,
- const VkMemoryGetRemoteAddressInfoNV* pMemoryGetRemoteAddressInfo,
- VkRemoteAddressNV* pAddress);
-#endif
-
-
-#define VK_EXT_extended_dynamic_state2 1
-#define VK_EXT_EXTENDED_DYNAMIC_STATE_2_SPEC_VERSION 1
-#define VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME "VK_EXT_extended_dynamic_state2"
-typedef struct VkPhysicalDeviceExtendedDynamicState2FeaturesEXT {
- VkStructureType sType;
- void* pNext;
- VkBool32 extendedDynamicState2;
- VkBool32 extendedDynamicState2LogicOp;
- VkBool32 extendedDynamicState2PatchControlPoints;
-} VkPhysicalDeviceExtendedDynamicState2FeaturesEXT;
-
-typedef void (VKAPI_PTR *PFN_vkCmdSetPatchControlPointsEXT)(VkCommandBuffer commandBuffer, uint32_t patchControlPoints);
-typedef void (VKAPI_PTR *PFN_vkCmdSetRasterizerDiscardEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 rasterizerDiscardEnable);
-typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBiasEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 depthBiasEnable);
-typedef void (VKAPI_PTR *PFN_vkCmdSetLogicOpEXT)(VkCommandBuffer commandBuffer, VkLogicOp logicOp);
-typedef void (VKAPI_PTR *PFN_vkCmdSetPrimitiveRestartEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 primitiveRestartEnable);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR void VKAPI_CALL vkCmdSetPatchControlPointsEXT(
- VkCommandBuffer commandBuffer,
- uint32_t patchControlPoints);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdSetRasterizerDiscardEnableEXT(
- VkCommandBuffer commandBuffer,
- VkBool32 rasterizerDiscardEnable);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBiasEnableEXT(
- VkCommandBuffer commandBuffer,
- VkBool32 depthBiasEnable);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdSetLogicOpEXT(
- VkCommandBuffer commandBuffer,
- VkLogicOp logicOp);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdSetPrimitiveRestartEnableEXT(
- VkCommandBuffer commandBuffer,
- VkBool32 primitiveRestartEnable);
-#endif
-
-
-#define VK_EXT_color_write_enable 1
-#define VK_EXT_COLOR_WRITE_ENABLE_SPEC_VERSION 1
-#define VK_EXT_COLOR_WRITE_ENABLE_EXTENSION_NAME "VK_EXT_color_write_enable"
-typedef struct VkPhysicalDeviceColorWriteEnableFeaturesEXT {
- VkStructureType sType;
- void* pNext;
- VkBool32 colorWriteEnable;
-} VkPhysicalDeviceColorWriteEnableFeaturesEXT;
-
-typedef struct VkPipelineColorWriteCreateInfoEXT {
- VkStructureType sType;
- const void* pNext;
- uint32_t attachmentCount;
- const VkBool32* pColorWriteEnables;
-} VkPipelineColorWriteCreateInfoEXT;
-
-typedef void (VKAPI_PTR *PFN_vkCmdSetColorWriteEnableEXT)(VkCommandBuffer commandBuffer, uint32_t attachmentCount, const VkBool32* pColorWriteEnables);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR void VKAPI_CALL vkCmdSetColorWriteEnableEXT(
- VkCommandBuffer commandBuffer,
- uint32_t attachmentCount,
- const VkBool32* pColorWriteEnables);
-#endif
-
-
-#define VK_EXT_global_priority_query 1
-#define VK_MAX_GLOBAL_PRIORITY_SIZE_EXT 16U
-#define VK_EXT_GLOBAL_PRIORITY_QUERY_SPEC_VERSION 1
-#define VK_EXT_GLOBAL_PRIORITY_QUERY_EXTENSION_NAME "VK_EXT_global_priority_query"
-typedef struct VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT {
- VkStructureType sType;
- void* pNext;
- VkBool32 globalPriorityQuery;
-} VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT;
-
-typedef struct VkQueueFamilyGlobalPriorityPropertiesEXT {
- VkStructureType sType;
- void* pNext;
- uint32_t priorityCount;
- VkQueueGlobalPriorityEXT priorities[VK_MAX_GLOBAL_PRIORITY_SIZE_EXT];
-} VkQueueFamilyGlobalPriorityPropertiesEXT;
-
-
-
-#define VK_EXT_multi_draw 1
-#define VK_EXT_MULTI_DRAW_SPEC_VERSION 1
-#define VK_EXT_MULTI_DRAW_EXTENSION_NAME "VK_EXT_multi_draw"
-typedef struct VkPhysicalDeviceMultiDrawFeaturesEXT {
- VkStructureType sType;
- void* pNext;
- VkBool32 multiDraw;
-} VkPhysicalDeviceMultiDrawFeaturesEXT;
-
-typedef struct VkPhysicalDeviceMultiDrawPropertiesEXT {
- VkStructureType sType;
- void* pNext;
- uint32_t maxMultiDrawCount;
-} VkPhysicalDeviceMultiDrawPropertiesEXT;
-
-typedef struct VkMultiDrawInfoEXT {
- uint32_t firstVertex;
- uint32_t vertexCount;
-} VkMultiDrawInfoEXT;
-
-typedef struct VkMultiDrawIndexedInfoEXT {
- uint32_t firstIndex;
- uint32_t indexCount;
- int32_t vertexOffset;
-} VkMultiDrawIndexedInfoEXT;
-
-typedef void (VKAPI_PTR *PFN_vkCmdDrawMultiEXT)(VkCommandBuffer commandBuffer, uint32_t drawCount, const VkMultiDrawInfoEXT* pVertexInfo, uint32_t instanceCount, uint32_t firstInstance, uint32_t stride);
-typedef void (VKAPI_PTR *PFN_vkCmdDrawMultiIndexedEXT)(VkCommandBuffer commandBuffer, uint32_t drawCount, const VkMultiDrawIndexedInfoEXT* pIndexInfo, uint32_t instanceCount, uint32_t firstInstance, uint32_t stride, const int32_t* pVertexOffset);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR void VKAPI_CALL vkCmdDrawMultiEXT(
- VkCommandBuffer commandBuffer,
- uint32_t drawCount,
- const VkMultiDrawInfoEXT* pVertexInfo,
- uint32_t instanceCount,
- uint32_t firstInstance,
- uint32_t stride);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdDrawMultiIndexedEXT(
- VkCommandBuffer commandBuffer,
- uint32_t drawCount,
- const VkMultiDrawIndexedInfoEXT* pIndexInfo,
- uint32_t instanceCount,
- uint32_t firstInstance,
- uint32_t stride,
- const int32_t* pVertexOffset);
-#endif
-
-
-#define VK_EXT_load_store_op_none 1
-#define VK_EXT_LOAD_STORE_OP_NONE_SPEC_VERSION 1
-#define VK_EXT_LOAD_STORE_OP_NONE_EXTENSION_NAME "VK_EXT_load_store_op_none"
-
-
-#define VK_EXT_border_color_swizzle 1
-#define VK_EXT_BORDER_COLOR_SWIZZLE_SPEC_VERSION 1
-#define VK_EXT_BORDER_COLOR_SWIZZLE_EXTENSION_NAME "VK_EXT_border_color_swizzle"
-typedef struct VkPhysicalDeviceBorderColorSwizzleFeaturesEXT {
- VkStructureType sType;
- void* pNext;
- VkBool32 borderColorSwizzle;
- VkBool32 borderColorSwizzleFromImage;
-} VkPhysicalDeviceBorderColorSwizzleFeaturesEXT;
-
-typedef struct VkSamplerBorderColorComponentMappingCreateInfoEXT {
- VkStructureType sType;
- const void* pNext;
- VkComponentMapping components;
- VkBool32 srgb;
-} VkSamplerBorderColorComponentMappingCreateInfoEXT;
-
-
-
-#define VK_EXT_pageable_device_local_memory 1
-#define VK_EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_SPEC_VERSION 1
-#define VK_EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_EXTENSION_NAME "VK_EXT_pageable_device_local_memory"
-typedef struct VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT {
- VkStructureType sType;
- void* pNext;
- VkBool32 pageableDeviceLocalMemory;
-} VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT;
-
-typedef void (VKAPI_PTR *PFN_vkSetDeviceMemoryPriorityEXT)(VkDevice device, VkDeviceMemory memory, float priority);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR void VKAPI_CALL vkSetDeviceMemoryPriorityEXT(
- VkDevice device,
- VkDeviceMemory memory,
- float priority);
-#endif
-
-
-#define VK_KHR_acceleration_structure 1
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkAccelerationStructureKHR)
-#define VK_KHR_ACCELERATION_STRUCTURE_SPEC_VERSION 13
-#define VK_KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME "VK_KHR_acceleration_structure"
-
-typedef enum VkBuildAccelerationStructureModeKHR {
- VK_BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR = 0,
- VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR = 1,
- VK_BUILD_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkBuildAccelerationStructureModeKHR;
-
-typedef enum VkAccelerationStructureBuildTypeKHR {
- VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR = 0,
- VK_ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR = 1,
- VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR = 2,
- VK_ACCELERATION_STRUCTURE_BUILD_TYPE_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkAccelerationStructureBuildTypeKHR;
-
-typedef enum VkAccelerationStructureCompatibilityKHR {
- VK_ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR = 0,
- VK_ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR = 1,
- VK_ACCELERATION_STRUCTURE_COMPATIBILITY_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkAccelerationStructureCompatibilityKHR;
-
-typedef enum VkAccelerationStructureCreateFlagBitsKHR {
- VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 0x00000001,
- VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV = 0x00000004,
- VK_ACCELERATION_STRUCTURE_CREATE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkAccelerationStructureCreateFlagBitsKHR;
-typedef VkFlags VkAccelerationStructureCreateFlagsKHR;
-typedef union VkDeviceOrHostAddressKHR {
- VkDeviceAddress deviceAddress;
- void* hostAddress;
-} VkDeviceOrHostAddressKHR;
-
-typedef struct VkAccelerationStructureBuildRangeInfoKHR {
- uint32_t primitiveCount;
- uint32_t primitiveOffset;
- uint32_t firstVertex;
- uint32_t transformOffset;
-} VkAccelerationStructureBuildRangeInfoKHR;
-
-typedef struct VkAccelerationStructureGeometryTrianglesDataKHR {
- VkStructureType sType;
- const void* pNext;
- VkFormat vertexFormat;
- VkDeviceOrHostAddressConstKHR vertexData;
- VkDeviceSize vertexStride;
- uint32_t maxVertex;
- VkIndexType indexType;
- VkDeviceOrHostAddressConstKHR indexData;
- VkDeviceOrHostAddressConstKHR transformData;
-} VkAccelerationStructureGeometryTrianglesDataKHR;
-
-typedef struct VkAccelerationStructureGeometryAabbsDataKHR {
- VkStructureType sType;
- const void* pNext;
- VkDeviceOrHostAddressConstKHR data;
- VkDeviceSize stride;
-} VkAccelerationStructureGeometryAabbsDataKHR;
-
-typedef struct VkAccelerationStructureGeometryInstancesDataKHR {
- VkStructureType sType;
- const void* pNext;
- VkBool32 arrayOfPointers;
- VkDeviceOrHostAddressConstKHR data;
-} VkAccelerationStructureGeometryInstancesDataKHR;
-
-typedef union VkAccelerationStructureGeometryDataKHR {
- VkAccelerationStructureGeometryTrianglesDataKHR triangles;
- VkAccelerationStructureGeometryAabbsDataKHR aabbs;
- VkAccelerationStructureGeometryInstancesDataKHR instances;
-} VkAccelerationStructureGeometryDataKHR;
-
-typedef struct VkAccelerationStructureGeometryKHR {
- VkStructureType sType;
- const void* pNext;
- VkGeometryTypeKHR geometryType;
- VkAccelerationStructureGeometryDataKHR geometry;
- VkGeometryFlagsKHR flags;
-} VkAccelerationStructureGeometryKHR;
-
-typedef struct VkAccelerationStructureBuildGeometryInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkAccelerationStructureTypeKHR type;
- VkBuildAccelerationStructureFlagsKHR flags;
- VkBuildAccelerationStructureModeKHR mode;
- VkAccelerationStructureKHR srcAccelerationStructure;
- VkAccelerationStructureKHR dstAccelerationStructure;
- uint32_t geometryCount;
- const VkAccelerationStructureGeometryKHR* pGeometries;
- const VkAccelerationStructureGeometryKHR* const* ppGeometries;
- VkDeviceOrHostAddressKHR scratchData;
-} VkAccelerationStructureBuildGeometryInfoKHR;
-
-typedef struct VkAccelerationStructureCreateInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkAccelerationStructureCreateFlagsKHR createFlags;
- VkBuffer buffer;
- VkDeviceSize offset;
- VkDeviceSize size;
- VkAccelerationStructureTypeKHR type;
- VkDeviceAddress deviceAddress;
-} VkAccelerationStructureCreateInfoKHR;
-
-typedef struct VkWriteDescriptorSetAccelerationStructureKHR {
- VkStructureType sType;
- const void* pNext;
- uint32_t accelerationStructureCount;
- const VkAccelerationStructureKHR* pAccelerationStructures;
-} VkWriteDescriptorSetAccelerationStructureKHR;
-
-typedef struct VkPhysicalDeviceAccelerationStructureFeaturesKHR {
- VkStructureType sType;
- void* pNext;
- VkBool32 accelerationStructure;
- VkBool32 accelerationStructureCaptureReplay;
- VkBool32 accelerationStructureIndirectBuild;
- VkBool32 accelerationStructureHostCommands;
- VkBool32 descriptorBindingAccelerationStructureUpdateAfterBind;
-} VkPhysicalDeviceAccelerationStructureFeaturesKHR;
-
-typedef struct VkPhysicalDeviceAccelerationStructurePropertiesKHR {
- VkStructureType sType;
- void* pNext;
- uint64_t maxGeometryCount;
- uint64_t maxInstanceCount;
- uint64_t maxPrimitiveCount;
- uint32_t maxPerStageDescriptorAccelerationStructures;
- uint32_t maxPerStageDescriptorUpdateAfterBindAccelerationStructures;
- uint32_t maxDescriptorSetAccelerationStructures;
- uint32_t maxDescriptorSetUpdateAfterBindAccelerationStructures;
- uint32_t minAccelerationStructureScratchOffsetAlignment;
-} VkPhysicalDeviceAccelerationStructurePropertiesKHR;
-
-typedef struct VkAccelerationStructureDeviceAddressInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkAccelerationStructureKHR accelerationStructure;
-} VkAccelerationStructureDeviceAddressInfoKHR;
-
-typedef struct VkAccelerationStructureVersionInfoKHR {
- VkStructureType sType;
- const void* pNext;
- const uint8_t* pVersionData;
-} VkAccelerationStructureVersionInfoKHR;
-
-typedef struct VkCopyAccelerationStructureToMemoryInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkAccelerationStructureKHR src;
- VkDeviceOrHostAddressKHR dst;
- VkCopyAccelerationStructureModeKHR mode;
-} VkCopyAccelerationStructureToMemoryInfoKHR;
-
-typedef struct VkCopyMemoryToAccelerationStructureInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkDeviceOrHostAddressConstKHR src;
- VkAccelerationStructureKHR dst;
- VkCopyAccelerationStructureModeKHR mode;
-} VkCopyMemoryToAccelerationStructureInfoKHR;
-
-typedef struct VkCopyAccelerationStructureInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkAccelerationStructureKHR src;
- VkAccelerationStructureKHR dst;
- VkCopyAccelerationStructureModeKHR mode;
-} VkCopyAccelerationStructureInfoKHR;
-
-typedef struct VkAccelerationStructureBuildSizesInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkDeviceSize accelerationStructureSize;
- VkDeviceSize updateScratchSize;
- VkDeviceSize buildScratchSize;
-} VkAccelerationStructureBuildSizesInfoKHR;
-
-typedef VkResult (VKAPI_PTR *PFN_vkCreateAccelerationStructureKHR)(VkDevice device, const VkAccelerationStructureCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkAccelerationStructureKHR* pAccelerationStructure);
-typedef void (VKAPI_PTR *PFN_vkDestroyAccelerationStructureKHR)(VkDevice device, VkAccelerationStructureKHR accelerationStructure, const VkAllocationCallbacks* pAllocator);
-typedef void (VKAPI_PTR *PFN_vkCmdBuildAccelerationStructuresKHR)(VkCommandBuffer commandBuffer, uint32_t infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos);
-typedef void (VKAPI_PTR *PFN_vkCmdBuildAccelerationStructuresIndirectKHR)(VkCommandBuffer commandBuffer, uint32_t infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkDeviceAddress* pIndirectDeviceAddresses, const uint32_t* pIndirectStrides, const uint32_t* const* ppMaxPrimitiveCounts);
-typedef VkResult (VKAPI_PTR *PFN_vkBuildAccelerationStructuresKHR)(VkDevice device, VkDeferredOperationKHR deferredOperation, uint32_t infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos);
-typedef VkResult (VKAPI_PTR *PFN_vkCopyAccelerationStructureKHR)(VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyAccelerationStructureInfoKHR* pInfo);
-typedef VkResult (VKAPI_PTR *PFN_vkCopyAccelerationStructureToMemoryKHR)(VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo);
-typedef VkResult (VKAPI_PTR *PFN_vkCopyMemoryToAccelerationStructureKHR)(VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo);
-typedef VkResult (VKAPI_PTR *PFN_vkWriteAccelerationStructuresPropertiesKHR)(VkDevice device, uint32_t accelerationStructureCount, const VkAccelerationStructureKHR* pAccelerationStructures, VkQueryType queryType, size_t dataSize, void* pData, size_t stride);
-typedef void (VKAPI_PTR *PFN_vkCmdCopyAccelerationStructureKHR)(VkCommandBuffer commandBuffer, const VkCopyAccelerationStructureInfoKHR* pInfo);
-typedef void (VKAPI_PTR *PFN_vkCmdCopyAccelerationStructureToMemoryKHR)(VkCommandBuffer commandBuffer, const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo);
-typedef void (VKAPI_PTR *PFN_vkCmdCopyMemoryToAccelerationStructureKHR)(VkCommandBuffer commandBuffer, const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo);
-typedef VkDeviceAddress (VKAPI_PTR *PFN_vkGetAccelerationStructureDeviceAddressKHR)(VkDevice device, const VkAccelerationStructureDeviceAddressInfoKHR* pInfo);
-typedef void (VKAPI_PTR *PFN_vkCmdWriteAccelerationStructuresPropertiesKHR)(VkCommandBuffer commandBuffer, uint32_t accelerationStructureCount, const VkAccelerationStructureKHR* pAccelerationStructures, VkQueryType queryType, VkQueryPool queryPool, uint32_t firstQuery);
-typedef void (VKAPI_PTR *PFN_vkGetDeviceAccelerationStructureCompatibilityKHR)(VkDevice device, const VkAccelerationStructureVersionInfoKHR* pVersionInfo, VkAccelerationStructureCompatibilityKHR* pCompatibility);
-typedef void (VKAPI_PTR *PFN_vkGetAccelerationStructureBuildSizesKHR)(VkDevice device, VkAccelerationStructureBuildTypeKHR buildType, const VkAccelerationStructureBuildGeometryInfoKHR* pBuildInfo, const uint32_t* pMaxPrimitiveCounts, VkAccelerationStructureBuildSizesInfoKHR* pSizeInfo);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateAccelerationStructureKHR(
- VkDevice device,
- const VkAccelerationStructureCreateInfoKHR* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkAccelerationStructureKHR* pAccelerationStructure);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroyAccelerationStructureKHR(
- VkDevice device,
- VkAccelerationStructureKHR accelerationStructure,
- const VkAllocationCallbacks* pAllocator);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdBuildAccelerationStructuresKHR(
- VkCommandBuffer commandBuffer,
- uint32_t infoCount,
- const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
- const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdBuildAccelerationStructuresIndirectKHR(
- VkCommandBuffer commandBuffer,
- uint32_t infoCount,
- const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
- const VkDeviceAddress* pIndirectDeviceAddresses,
- const uint32_t* pIndirectStrides,
- const uint32_t* const* ppMaxPrimitiveCounts);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkBuildAccelerationStructuresKHR(
- VkDevice device,
- VkDeferredOperationKHR deferredOperation,
- uint32_t infoCount,
- const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
- const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCopyAccelerationStructureKHR(
- VkDevice device,
- VkDeferredOperationKHR deferredOperation,
- const VkCopyAccelerationStructureInfoKHR* pInfo);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCopyAccelerationStructureToMemoryKHR(
- VkDevice device,
- VkDeferredOperationKHR deferredOperation,
- const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCopyMemoryToAccelerationStructureKHR(
- VkDevice device,
- VkDeferredOperationKHR deferredOperation,
- const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkWriteAccelerationStructuresPropertiesKHR(
- VkDevice device,
- uint32_t accelerationStructureCount,
- const VkAccelerationStructureKHR* pAccelerationStructures,
- VkQueryType queryType,
- size_t dataSize,
- void* pData,
- size_t stride);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdCopyAccelerationStructureKHR(
- VkCommandBuffer commandBuffer,
- const VkCopyAccelerationStructureInfoKHR* pInfo);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdCopyAccelerationStructureToMemoryKHR(
- VkCommandBuffer commandBuffer,
- const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdCopyMemoryToAccelerationStructureKHR(
- VkCommandBuffer commandBuffer,
- const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo);
-
-VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetAccelerationStructureDeviceAddressKHR(
- VkDevice device,
- const VkAccelerationStructureDeviceAddressInfoKHR* pInfo);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdWriteAccelerationStructuresPropertiesKHR(
- VkCommandBuffer commandBuffer,
- uint32_t accelerationStructureCount,
- const VkAccelerationStructureKHR* pAccelerationStructures,
- VkQueryType queryType,
- VkQueryPool queryPool,
- uint32_t firstQuery);
-
-VKAPI_ATTR void VKAPI_CALL vkGetDeviceAccelerationStructureCompatibilityKHR(
- VkDevice device,
- const VkAccelerationStructureVersionInfoKHR* pVersionInfo,
- VkAccelerationStructureCompatibilityKHR* pCompatibility);
-
-VKAPI_ATTR void VKAPI_CALL vkGetAccelerationStructureBuildSizesKHR(
- VkDevice device,
- VkAccelerationStructureBuildTypeKHR buildType,
- const VkAccelerationStructureBuildGeometryInfoKHR* pBuildInfo,
- const uint32_t* pMaxPrimitiveCounts,
- VkAccelerationStructureBuildSizesInfoKHR* pSizeInfo);
-#endif
-
-
-#define VK_KHR_ray_tracing_pipeline 1
-#define VK_KHR_RAY_TRACING_PIPELINE_SPEC_VERSION 1
-#define VK_KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME "VK_KHR_ray_tracing_pipeline"
-
-typedef enum VkShaderGroupShaderKHR {
- VK_SHADER_GROUP_SHADER_GENERAL_KHR = 0,
- VK_SHADER_GROUP_SHADER_CLOSEST_HIT_KHR = 1,
- VK_SHADER_GROUP_SHADER_ANY_HIT_KHR = 2,
- VK_SHADER_GROUP_SHADER_INTERSECTION_KHR = 3,
- VK_SHADER_GROUP_SHADER_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkShaderGroupShaderKHR;
-typedef struct VkRayTracingShaderGroupCreateInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkRayTracingShaderGroupTypeKHR type;
- uint32_t generalShader;
- uint32_t closestHitShader;
- uint32_t anyHitShader;
- uint32_t intersectionShader;
- const void* pShaderGroupCaptureReplayHandle;
-} VkRayTracingShaderGroupCreateInfoKHR;
-
-typedef struct VkRayTracingPipelineInterfaceCreateInfoKHR {
- VkStructureType sType;
- const void* pNext;
- uint32_t maxPipelineRayPayloadSize;
- uint32_t maxPipelineRayHitAttributeSize;
-} VkRayTracingPipelineInterfaceCreateInfoKHR;
-
-typedef struct VkRayTracingPipelineCreateInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkPipelineCreateFlags flags;
- uint32_t stageCount;
- const VkPipelineShaderStageCreateInfo* pStages;
- uint32_t groupCount;
- const VkRayTracingShaderGroupCreateInfoKHR* pGroups;
- uint32_t maxPipelineRayRecursionDepth;
- const VkPipelineLibraryCreateInfoKHR* pLibraryInfo;
- const VkRayTracingPipelineInterfaceCreateInfoKHR* pLibraryInterface;
- const VkPipelineDynamicStateCreateInfo* pDynamicState;
- VkPipelineLayout layout;
- VkPipeline basePipelineHandle;
- int32_t basePipelineIndex;
-} VkRayTracingPipelineCreateInfoKHR;
-
-typedef struct VkPhysicalDeviceRayTracingPipelineFeaturesKHR {
- VkStructureType sType;
- void* pNext;
- VkBool32 rayTracingPipeline;
- VkBool32 rayTracingPipelineShaderGroupHandleCaptureReplay;
- VkBool32 rayTracingPipelineShaderGroupHandleCaptureReplayMixed;
- VkBool32 rayTracingPipelineTraceRaysIndirect;
- VkBool32 rayTraversalPrimitiveCulling;
-} VkPhysicalDeviceRayTracingPipelineFeaturesKHR;
-
-typedef struct VkPhysicalDeviceRayTracingPipelinePropertiesKHR {
- VkStructureType sType;
- void* pNext;
- uint32_t shaderGroupHandleSize;
- uint32_t maxRayRecursionDepth;
- uint32_t maxShaderGroupStride;
- uint32_t shaderGroupBaseAlignment;
- uint32_t shaderGroupHandleCaptureReplaySize;
- uint32_t maxRayDispatchInvocationCount;
- uint32_t shaderGroupHandleAlignment;
- uint32_t maxRayHitAttributeSize;
-} VkPhysicalDeviceRayTracingPipelinePropertiesKHR;
-
-typedef struct VkStridedDeviceAddressRegionKHR {
- VkDeviceAddress deviceAddress;
- VkDeviceSize stride;
- VkDeviceSize size;
-} VkStridedDeviceAddressRegionKHR;
-
-typedef struct VkTraceRaysIndirectCommandKHR {
- uint32_t width;
- uint32_t height;
- uint32_t depth;
-} VkTraceRaysIndirectCommandKHR;
-
-typedef void (VKAPI_PTR *PFN_vkCmdTraceRaysKHR)(VkCommandBuffer commandBuffer, const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable, uint32_t width, uint32_t height, uint32_t depth);
-typedef VkResult (VKAPI_PTR *PFN_vkCreateRayTracingPipelinesKHR)(VkDevice device, VkDeferredOperationKHR deferredOperation, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkRayTracingPipelineCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines);
-typedef VkResult (VKAPI_PTR *PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR)(VkDevice device, VkPipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, void* pData);
-typedef void (VKAPI_PTR *PFN_vkCmdTraceRaysIndirectKHR)(VkCommandBuffer commandBuffer, const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable, VkDeviceAddress indirectDeviceAddress);
-typedef VkDeviceSize (VKAPI_PTR *PFN_vkGetRayTracingShaderGroupStackSizeKHR)(VkDevice device, VkPipeline pipeline, uint32_t group, VkShaderGroupShaderKHR groupShader);
-typedef void (VKAPI_PTR *PFN_vkCmdSetRayTracingPipelineStackSizeKHR)(VkCommandBuffer commandBuffer, uint32_t pipelineStackSize);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR void VKAPI_CALL vkCmdTraceRaysKHR(
- VkCommandBuffer commandBuffer,
- const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable,
- const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable,
- const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable,
- const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable,
- uint32_t width,
- uint32_t height,
- uint32_t depth);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateRayTracingPipelinesKHR(
- VkDevice device,
- VkDeferredOperationKHR deferredOperation,
- VkPipelineCache pipelineCache,
- uint32_t createInfoCount,
- const VkRayTracingPipelineCreateInfoKHR* pCreateInfos,
- const VkAllocationCallbacks* pAllocator,
- VkPipeline* pPipelines);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(
- VkDevice device,
- VkPipeline pipeline,
- uint32_t firstGroup,
- uint32_t groupCount,
- size_t dataSize,
- void* pData);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdTraceRaysIndirectKHR(
- VkCommandBuffer commandBuffer,
- const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable,
- const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable,
- const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable,
- const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable,
- VkDeviceAddress indirectDeviceAddress);
-
-VKAPI_ATTR VkDeviceSize VKAPI_CALL vkGetRayTracingShaderGroupStackSizeKHR(
- VkDevice device,
- VkPipeline pipeline,
- uint32_t group,
- VkShaderGroupShaderKHR groupShader);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdSetRayTracingPipelineStackSizeKHR(
- VkCommandBuffer commandBuffer,
- uint32_t pipelineStackSize);
-#endif
-
-
-#define VK_KHR_ray_query 1
-#define VK_KHR_RAY_QUERY_SPEC_VERSION 1
-#define VK_KHR_RAY_QUERY_EXTENSION_NAME "VK_KHR_ray_query"
-typedef struct VkPhysicalDeviceRayQueryFeaturesKHR {
- VkStructureType sType;
- void* pNext;
- VkBool32 rayQuery;
-} VkPhysicalDeviceRayQueryFeaturesKHR;
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/common/vulkan/include/vulkan/vulkan_directfb.h b/common/vulkan/include/vulkan/vulkan_directfb.h
deleted file mode 100644
index 8eaac6e4..00000000
--- a/common/vulkan/include/vulkan/vulkan_directfb.h
+++ /dev/null
@@ -1,54 +0,0 @@
-#ifndef VULKAN_DIRECTFB_H_
-#define VULKAN_DIRECTFB_H_ 1
-
-/*
-** Copyright 2015-2021 The Khronos Group Inc.
-**
-** SPDX-License-Identifier: Apache-2.0
-*/
-
-/*
-** This header is generated from the Khronos Vulkan XML API Registry.
-**
-*/
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-
-#define VK_EXT_directfb_surface 1
-#define VK_EXT_DIRECTFB_SURFACE_SPEC_VERSION 1
-#define VK_EXT_DIRECTFB_SURFACE_EXTENSION_NAME "VK_EXT_directfb_surface"
-typedef VkFlags VkDirectFBSurfaceCreateFlagsEXT;
-typedef struct VkDirectFBSurfaceCreateInfoEXT {
- VkStructureType sType;
- const void* pNext;
- VkDirectFBSurfaceCreateFlagsEXT flags;
- IDirectFB* dfb;
- IDirectFBSurface* surface;
-} VkDirectFBSurfaceCreateInfoEXT;
-
-typedef VkResult (VKAPI_PTR *PFN_vkCreateDirectFBSurfaceEXT)(VkInstance instance, const VkDirectFBSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
-typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, IDirectFB* dfb);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateDirectFBSurfaceEXT(
- VkInstance instance,
- const VkDirectFBSurfaceCreateInfoEXT* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkSurfaceKHR* pSurface);
-
-VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceDirectFBPresentationSupportEXT(
- VkPhysicalDevice physicalDevice,
- uint32_t queueFamilyIndex,
- IDirectFB* dfb);
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/common/vulkan/include/vulkan/vulkan_fuchsia.h b/common/vulkan/include/vulkan/vulkan_fuchsia.h
deleted file mode 100644
index 44b4ace3..00000000
--- a/common/vulkan/include/vulkan/vulkan_fuchsia.h
+++ /dev/null
@@ -1,258 +0,0 @@
-#ifndef VULKAN_FUCHSIA_H_
-#define VULKAN_FUCHSIA_H_ 1
-
-/*
-** Copyright 2015-2021 The Khronos Group Inc.
-**
-** SPDX-License-Identifier: Apache-2.0
-*/
-
-/*
-** This header is generated from the Khronos Vulkan XML API Registry.
-**
-*/
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-
-#define VK_FUCHSIA_imagepipe_surface 1
-#define VK_FUCHSIA_IMAGEPIPE_SURFACE_SPEC_VERSION 1
-#define VK_FUCHSIA_IMAGEPIPE_SURFACE_EXTENSION_NAME "VK_FUCHSIA_imagepipe_surface"
-typedef VkFlags VkImagePipeSurfaceCreateFlagsFUCHSIA;
-typedef struct VkImagePipeSurfaceCreateInfoFUCHSIA {
- VkStructureType sType;
- const void* pNext;
- VkImagePipeSurfaceCreateFlagsFUCHSIA flags;
- zx_handle_t imagePipeHandle;
-} VkImagePipeSurfaceCreateInfoFUCHSIA;
-
-typedef VkResult (VKAPI_PTR *PFN_vkCreateImagePipeSurfaceFUCHSIA)(VkInstance instance, const VkImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateImagePipeSurfaceFUCHSIA(
- VkInstance instance,
- const VkImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkSurfaceKHR* pSurface);
-#endif
-
-
-#define VK_FUCHSIA_external_memory 1
-#define VK_FUCHSIA_EXTERNAL_MEMORY_SPEC_VERSION 1
-#define VK_FUCHSIA_EXTERNAL_MEMORY_EXTENSION_NAME "VK_FUCHSIA_external_memory"
-typedef struct VkImportMemoryZirconHandleInfoFUCHSIA {
- VkStructureType sType;
- const void* pNext;
- VkExternalMemoryHandleTypeFlagBits handleType;
- zx_handle_t handle;
-} VkImportMemoryZirconHandleInfoFUCHSIA;
-
-typedef struct VkMemoryZirconHandlePropertiesFUCHSIA {
- VkStructureType sType;
- void* pNext;
- uint32_t memoryTypeBits;
-} VkMemoryZirconHandlePropertiesFUCHSIA;
-
-typedef struct VkMemoryGetZirconHandleInfoFUCHSIA {
- VkStructureType sType;
- const void* pNext;
- VkDeviceMemory memory;
- VkExternalMemoryHandleTypeFlagBits handleType;
-} VkMemoryGetZirconHandleInfoFUCHSIA;
-
-typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryZirconHandleFUCHSIA)(VkDevice device, const VkMemoryGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo, zx_handle_t* pZirconHandle);
-typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryZirconHandlePropertiesFUCHSIA)(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, zx_handle_t zirconHandle, VkMemoryZirconHandlePropertiesFUCHSIA* pMemoryZirconHandleProperties);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryZirconHandleFUCHSIA(
- VkDevice device,
- const VkMemoryGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo,
- zx_handle_t* pZirconHandle);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryZirconHandlePropertiesFUCHSIA(
- VkDevice device,
- VkExternalMemoryHandleTypeFlagBits handleType,
- zx_handle_t zirconHandle,
- VkMemoryZirconHandlePropertiesFUCHSIA* pMemoryZirconHandleProperties);
-#endif
-
-
-#define VK_FUCHSIA_external_semaphore 1
-#define VK_FUCHSIA_EXTERNAL_SEMAPHORE_SPEC_VERSION 1
-#define VK_FUCHSIA_EXTERNAL_SEMAPHORE_EXTENSION_NAME "VK_FUCHSIA_external_semaphore"
-typedef struct VkImportSemaphoreZirconHandleInfoFUCHSIA {
- VkStructureType sType;
- const void* pNext;
- VkSemaphore semaphore;
- VkSemaphoreImportFlags flags;
- VkExternalSemaphoreHandleTypeFlagBits handleType;
- zx_handle_t zirconHandle;
-} VkImportSemaphoreZirconHandleInfoFUCHSIA;
-
-typedef struct VkSemaphoreGetZirconHandleInfoFUCHSIA {
- VkStructureType sType;
- const void* pNext;
- VkSemaphore semaphore;
- VkExternalSemaphoreHandleTypeFlagBits handleType;
-} VkSemaphoreGetZirconHandleInfoFUCHSIA;
-
-typedef VkResult (VKAPI_PTR *PFN_vkImportSemaphoreZirconHandleFUCHSIA)(VkDevice device, const VkImportSemaphoreZirconHandleInfoFUCHSIA* pImportSemaphoreZirconHandleInfo);
-typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreZirconHandleFUCHSIA)(VkDevice device, const VkSemaphoreGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo, zx_handle_t* pZirconHandle);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkImportSemaphoreZirconHandleFUCHSIA(
- VkDevice device,
- const VkImportSemaphoreZirconHandleInfoFUCHSIA* pImportSemaphoreZirconHandleInfo);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreZirconHandleFUCHSIA(
- VkDevice device,
- const VkSemaphoreGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo,
- zx_handle_t* pZirconHandle);
-#endif
-
-
-#define VK_FUCHSIA_buffer_collection 1
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBufferCollectionFUCHSIA)
-#define VK_FUCHSIA_BUFFER_COLLECTION_SPEC_VERSION 2
-#define VK_FUCHSIA_BUFFER_COLLECTION_EXTENSION_NAME "VK_FUCHSIA_buffer_collection"
-typedef VkFlags VkImageFormatConstraintsFlagsFUCHSIA;
-
-typedef enum VkImageConstraintsInfoFlagBitsFUCHSIA {
- VK_IMAGE_CONSTRAINTS_INFO_CPU_READ_RARELY_FUCHSIA = 0x00000001,
- VK_IMAGE_CONSTRAINTS_INFO_CPU_READ_OFTEN_FUCHSIA = 0x00000002,
- VK_IMAGE_CONSTRAINTS_INFO_CPU_WRITE_RARELY_FUCHSIA = 0x00000004,
- VK_IMAGE_CONSTRAINTS_INFO_CPU_WRITE_OFTEN_FUCHSIA = 0x00000008,
- VK_IMAGE_CONSTRAINTS_INFO_PROTECTED_OPTIONAL_FUCHSIA = 0x00000010,
- VK_IMAGE_CONSTRAINTS_INFO_FLAG_BITS_MAX_ENUM_FUCHSIA = 0x7FFFFFFF
-} VkImageConstraintsInfoFlagBitsFUCHSIA;
-typedef VkFlags VkImageConstraintsInfoFlagsFUCHSIA;
-typedef struct VkBufferCollectionCreateInfoFUCHSIA {
- VkStructureType sType;
- const void* pNext;
- zx_handle_t collectionToken;
-} VkBufferCollectionCreateInfoFUCHSIA;
-
-typedef struct VkImportMemoryBufferCollectionFUCHSIA {
- VkStructureType sType;
- const void* pNext;
- VkBufferCollectionFUCHSIA collection;
- uint32_t index;
-} VkImportMemoryBufferCollectionFUCHSIA;
-
-typedef struct VkBufferCollectionImageCreateInfoFUCHSIA {
- VkStructureType sType;
- const void* pNext;
- VkBufferCollectionFUCHSIA collection;
- uint32_t index;
-} VkBufferCollectionImageCreateInfoFUCHSIA;
-
-typedef struct VkBufferCollectionConstraintsInfoFUCHSIA {
- VkStructureType sType;
- const void* pNext;
- uint32_t minBufferCount;
- uint32_t maxBufferCount;
- uint32_t minBufferCountForCamping;
- uint32_t minBufferCountForDedicatedSlack;
- uint32_t minBufferCountForSharedSlack;
-} VkBufferCollectionConstraintsInfoFUCHSIA;
-
-typedef struct VkBufferConstraintsInfoFUCHSIA {
- VkStructureType sType;
- const void* pNext;
- VkBufferCreateInfo createInfo;
- VkFormatFeatureFlags requiredFormatFeatures;
- VkBufferCollectionConstraintsInfoFUCHSIA bufferCollectionConstraints;
-} VkBufferConstraintsInfoFUCHSIA;
-
-typedef struct VkBufferCollectionBufferCreateInfoFUCHSIA {
- VkStructureType sType;
- const void* pNext;
- VkBufferCollectionFUCHSIA collection;
- uint32_t index;
-} VkBufferCollectionBufferCreateInfoFUCHSIA;
-
-typedef struct VkSysmemColorSpaceFUCHSIA {
- VkStructureType sType;
- const void* pNext;
- uint32_t colorSpace;
-} VkSysmemColorSpaceFUCHSIA;
-
-typedef struct VkBufferCollectionPropertiesFUCHSIA {
- VkStructureType sType;
- void* pNext;
- uint32_t memoryTypeBits;
- uint32_t bufferCount;
- uint32_t createInfoIndex;
- uint64_t sysmemPixelFormat;
- VkFormatFeatureFlags formatFeatures;
- VkSysmemColorSpaceFUCHSIA sysmemColorSpaceIndex;
- VkComponentMapping samplerYcbcrConversionComponents;
- VkSamplerYcbcrModelConversion suggestedYcbcrModel;
- VkSamplerYcbcrRange suggestedYcbcrRange;
- VkChromaLocation suggestedXChromaOffset;
- VkChromaLocation suggestedYChromaOffset;
-} VkBufferCollectionPropertiesFUCHSIA;
-
-typedef struct VkImageFormatConstraintsInfoFUCHSIA {
- VkStructureType sType;
- const void* pNext;
- VkImageCreateInfo imageCreateInfo;
- VkFormatFeatureFlags requiredFormatFeatures;
- VkImageFormatConstraintsFlagsFUCHSIA flags;
- uint64_t sysmemPixelFormat;
- uint32_t colorSpaceCount;
- const VkSysmemColorSpaceFUCHSIA* pColorSpaces;
-} VkImageFormatConstraintsInfoFUCHSIA;
-
-typedef struct VkImageConstraintsInfoFUCHSIA {
- VkStructureType sType;
- const void* pNext;
- uint32_t formatConstraintsCount;
- const VkImageFormatConstraintsInfoFUCHSIA* pFormatConstraints;
- VkBufferCollectionConstraintsInfoFUCHSIA bufferCollectionConstraints;
- VkImageConstraintsInfoFlagsFUCHSIA flags;
-} VkImageConstraintsInfoFUCHSIA;
-
-typedef VkResult (VKAPI_PTR *PFN_vkCreateBufferCollectionFUCHSIA)(VkDevice device, const VkBufferCollectionCreateInfoFUCHSIA* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferCollectionFUCHSIA* pCollection);
-typedef VkResult (VKAPI_PTR *PFN_vkSetBufferCollectionImageConstraintsFUCHSIA)(VkDevice device, VkBufferCollectionFUCHSIA collection, const VkImageConstraintsInfoFUCHSIA* pImageConstraintsInfo);
-typedef VkResult (VKAPI_PTR *PFN_vkSetBufferCollectionBufferConstraintsFUCHSIA)(VkDevice device, VkBufferCollectionFUCHSIA collection, const VkBufferConstraintsInfoFUCHSIA* pBufferConstraintsInfo);
-typedef void (VKAPI_PTR *PFN_vkDestroyBufferCollectionFUCHSIA)(VkDevice device, VkBufferCollectionFUCHSIA collection, const VkAllocationCallbacks* pAllocator);
-typedef VkResult (VKAPI_PTR *PFN_vkGetBufferCollectionPropertiesFUCHSIA)(VkDevice device, VkBufferCollectionFUCHSIA collection, VkBufferCollectionPropertiesFUCHSIA* pProperties);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateBufferCollectionFUCHSIA(
- VkDevice device,
- const VkBufferCollectionCreateInfoFUCHSIA* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkBufferCollectionFUCHSIA* pCollection);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkSetBufferCollectionImageConstraintsFUCHSIA(
- VkDevice device,
- VkBufferCollectionFUCHSIA collection,
- const VkImageConstraintsInfoFUCHSIA* pImageConstraintsInfo);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkSetBufferCollectionBufferConstraintsFUCHSIA(
- VkDevice device,
- VkBufferCollectionFUCHSIA collection,
- const VkBufferConstraintsInfoFUCHSIA* pBufferConstraintsInfo);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroyBufferCollectionFUCHSIA(
- VkDevice device,
- VkBufferCollectionFUCHSIA collection,
- const VkAllocationCallbacks* pAllocator);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetBufferCollectionPropertiesFUCHSIA(
- VkDevice device,
- VkBufferCollectionFUCHSIA collection,
- VkBufferCollectionPropertiesFUCHSIA* pProperties);
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/common/vulkan/include/vulkan/vulkan_ggp.h b/common/vulkan/include/vulkan/vulkan_ggp.h
deleted file mode 100644
index 9a6a582c..00000000
--- a/common/vulkan/include/vulkan/vulkan_ggp.h
+++ /dev/null
@@ -1,58 +0,0 @@
-#ifndef VULKAN_GGP_H_
-#define VULKAN_GGP_H_ 1
-
-/*
-** Copyright 2015-2021 The Khronos Group Inc.
-**
-** SPDX-License-Identifier: Apache-2.0
-*/
-
-/*
-** This header is generated from the Khronos Vulkan XML API Registry.
-**
-*/
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-
-#define VK_GGP_stream_descriptor_surface 1
-#define VK_GGP_STREAM_DESCRIPTOR_SURFACE_SPEC_VERSION 1
-#define VK_GGP_STREAM_DESCRIPTOR_SURFACE_EXTENSION_NAME "VK_GGP_stream_descriptor_surface"
-typedef VkFlags VkStreamDescriptorSurfaceCreateFlagsGGP;
-typedef struct VkStreamDescriptorSurfaceCreateInfoGGP {
- VkStructureType sType;
- const void* pNext;
- VkStreamDescriptorSurfaceCreateFlagsGGP flags;
- GgpStreamDescriptor streamDescriptor;
-} VkStreamDescriptorSurfaceCreateInfoGGP;
-
-typedef VkResult (VKAPI_PTR *PFN_vkCreateStreamDescriptorSurfaceGGP)(VkInstance instance, const VkStreamDescriptorSurfaceCreateInfoGGP* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateStreamDescriptorSurfaceGGP(
- VkInstance instance,
- const VkStreamDescriptorSurfaceCreateInfoGGP* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkSurfaceKHR* pSurface);
-#endif
-
-
-#define VK_GGP_frame_token 1
-#define VK_GGP_FRAME_TOKEN_SPEC_VERSION 1
-#define VK_GGP_FRAME_TOKEN_EXTENSION_NAME "VK_GGP_frame_token"
-typedef struct VkPresentFrameTokenGGP {
- VkStructureType sType;
- const void* pNext;
- GgpFrameToken frameToken;
-} VkPresentFrameTokenGGP;
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/common/vulkan/include/vulkan/vulkan_ios.h b/common/vulkan/include/vulkan/vulkan_ios.h
deleted file mode 100644
index 6e7e6afe..00000000
--- a/common/vulkan/include/vulkan/vulkan_ios.h
+++ /dev/null
@@ -1,47 +0,0 @@
-#ifndef VULKAN_IOS_H_
-#define VULKAN_IOS_H_ 1
-
-/*
-** Copyright 2015-2021 The Khronos Group Inc.
-**
-** SPDX-License-Identifier: Apache-2.0
-*/
-
-/*
-** This header is generated from the Khronos Vulkan XML API Registry.
-**
-*/
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-
-#define VK_MVK_ios_surface 1
-#define VK_MVK_IOS_SURFACE_SPEC_VERSION 3
-#define VK_MVK_IOS_SURFACE_EXTENSION_NAME "VK_MVK_ios_surface"
-typedef VkFlags VkIOSSurfaceCreateFlagsMVK;
-typedef struct VkIOSSurfaceCreateInfoMVK {
- VkStructureType sType;
- const void* pNext;
- VkIOSSurfaceCreateFlagsMVK flags;
- const void* pView;
-} VkIOSSurfaceCreateInfoMVK;
-
-typedef VkResult (VKAPI_PTR *PFN_vkCreateIOSSurfaceMVK)(VkInstance instance, const VkIOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateIOSSurfaceMVK(
- VkInstance instance,
- const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkSurfaceKHR* pSurface);
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/common/vulkan/include/vulkan/vulkan_macos.h b/common/vulkan/include/vulkan/vulkan_macos.h
deleted file mode 100644
index c49b123d..00000000
--- a/common/vulkan/include/vulkan/vulkan_macos.h
+++ /dev/null
@@ -1,47 +0,0 @@
-#ifndef VULKAN_MACOS_H_
-#define VULKAN_MACOS_H_ 1
-
-/*
-** Copyright 2015-2021 The Khronos Group Inc.
-**
-** SPDX-License-Identifier: Apache-2.0
-*/
-
-/*
-** This header is generated from the Khronos Vulkan XML API Registry.
-**
-*/
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-
-#define VK_MVK_macos_surface 1
-#define VK_MVK_MACOS_SURFACE_SPEC_VERSION 3
-#define VK_MVK_MACOS_SURFACE_EXTENSION_NAME "VK_MVK_macos_surface"
-typedef VkFlags VkMacOSSurfaceCreateFlagsMVK;
-typedef struct VkMacOSSurfaceCreateInfoMVK {
- VkStructureType sType;
- const void* pNext;
- VkMacOSSurfaceCreateFlagsMVK flags;
- const void* pView;
-} VkMacOSSurfaceCreateInfoMVK;
-
-typedef VkResult (VKAPI_PTR *PFN_vkCreateMacOSSurfaceMVK)(VkInstance instance, const VkMacOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateMacOSSurfaceMVK(
- VkInstance instance,
- const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkSurfaceKHR* pSurface);
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/common/vulkan/include/vulkan/vulkan_metal.h b/common/vulkan/include/vulkan/vulkan_metal.h
deleted file mode 100644
index 5cf4a703..00000000
--- a/common/vulkan/include/vulkan/vulkan_metal.h
+++ /dev/null
@@ -1,54 +0,0 @@
-#ifndef VULKAN_METAL_H_
-#define VULKAN_METAL_H_ 1
-
-/*
-** Copyright 2015-2021 The Khronos Group Inc.
-**
-** SPDX-License-Identifier: Apache-2.0
-*/
-
-/*
-** This header is generated from the Khronos Vulkan XML API Registry.
-**
-*/
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-
-#define VK_EXT_metal_surface 1
-
-#ifdef __OBJC__
-@class CAMetalLayer;
-#else
-typedef void CAMetalLayer;
-#endif
-
-#define VK_EXT_METAL_SURFACE_SPEC_VERSION 1
-#define VK_EXT_METAL_SURFACE_EXTENSION_NAME "VK_EXT_metal_surface"
-typedef VkFlags VkMetalSurfaceCreateFlagsEXT;
-typedef struct VkMetalSurfaceCreateInfoEXT {
- VkStructureType sType;
- const void* pNext;
- VkMetalSurfaceCreateFlagsEXT flags;
- const CAMetalLayer* pLayer;
-} VkMetalSurfaceCreateInfoEXT;
-
-typedef VkResult (VKAPI_PTR *PFN_vkCreateMetalSurfaceEXT)(VkInstance instance, const VkMetalSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateMetalSurfaceEXT(
- VkInstance instance,
- const VkMetalSurfaceCreateInfoEXT* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkSurfaceKHR* pSurface);
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/common/vulkan/include/vulkan/vulkan_screen.h b/common/vulkan/include/vulkan/vulkan_screen.h
deleted file mode 100644
index 92ad9bfa..00000000
--- a/common/vulkan/include/vulkan/vulkan_screen.h
+++ /dev/null
@@ -1,54 +0,0 @@
-#ifndef VULKAN_SCREEN_H_
-#define VULKAN_SCREEN_H_ 1
-
-/*
-** Copyright 2015-2021 The Khronos Group Inc.
-**
-** SPDX-License-Identifier: Apache-2.0
-*/
-
-/*
-** This header is generated from the Khronos Vulkan XML API Registry.
-**
-*/
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-
-#define VK_QNX_screen_surface 1
-#define VK_QNX_SCREEN_SURFACE_SPEC_VERSION 1
-#define VK_QNX_SCREEN_SURFACE_EXTENSION_NAME "VK_QNX_screen_surface"
-typedef VkFlags VkScreenSurfaceCreateFlagsQNX;
-typedef struct VkScreenSurfaceCreateInfoQNX {
- VkStructureType sType;
- const void* pNext;
- VkScreenSurfaceCreateFlagsQNX flags;
- struct _screen_context* context;
- struct _screen_window* window;
-} VkScreenSurfaceCreateInfoQNX;
-
-typedef VkResult (VKAPI_PTR *PFN_vkCreateScreenSurfaceQNX)(VkInstance instance, const VkScreenSurfaceCreateInfoQNX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
-typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceScreenPresentationSupportQNX)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, struct _screen_window* window);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateScreenSurfaceQNX(
- VkInstance instance,
- const VkScreenSurfaceCreateInfoQNX* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkSurfaceKHR* pSurface);
-
-VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceScreenPresentationSupportQNX(
- VkPhysicalDevice physicalDevice,
- uint32_t queueFamilyIndex,
- struct _screen_window* window);
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/common/vulkan/include/vulkan/vulkan_vi.h b/common/vulkan/include/vulkan/vulkan_vi.h
deleted file mode 100644
index 9e0dcca2..00000000
--- a/common/vulkan/include/vulkan/vulkan_vi.h
+++ /dev/null
@@ -1,47 +0,0 @@
-#ifndef VULKAN_VI_H_
-#define VULKAN_VI_H_ 1
-
-/*
-** Copyright 2015-2021 The Khronos Group Inc.
-**
-** SPDX-License-Identifier: Apache-2.0
-*/
-
-/*
-** This header is generated from the Khronos Vulkan XML API Registry.
-**
-*/
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-
-#define VK_NN_vi_surface 1
-#define VK_NN_VI_SURFACE_SPEC_VERSION 1
-#define VK_NN_VI_SURFACE_EXTENSION_NAME "VK_NN_vi_surface"
-typedef VkFlags VkViSurfaceCreateFlagsNN;
-typedef struct VkViSurfaceCreateInfoNN {
- VkStructureType sType;
- const void* pNext;
- VkViSurfaceCreateFlagsNN flags;
- void* window;
-} VkViSurfaceCreateInfoNN;
-
-typedef VkResult (VKAPI_PTR *PFN_vkCreateViSurfaceNN)(VkInstance instance, const VkViSurfaceCreateInfoNN* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateViSurfaceNN(
- VkInstance instance,
- const VkViSurfaceCreateInfoNN* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkSurfaceKHR* pSurface);
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/common/vulkan/include/vulkan/vulkan_wayland.h b/common/vulkan/include/vulkan/vulkan_wayland.h
deleted file mode 100644
index 2a329be9..00000000
--- a/common/vulkan/include/vulkan/vulkan_wayland.h
+++ /dev/null
@@ -1,54 +0,0 @@
-#ifndef VULKAN_WAYLAND_H_
-#define VULKAN_WAYLAND_H_ 1
-
-/*
-** Copyright 2015-2021 The Khronos Group Inc.
-**
-** SPDX-License-Identifier: Apache-2.0
-*/
-
-/*
-** This header is generated from the Khronos Vulkan XML API Registry.
-**
-*/
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-
-#define VK_KHR_wayland_surface 1
-#define VK_KHR_WAYLAND_SURFACE_SPEC_VERSION 6
-#define VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME "VK_KHR_wayland_surface"
-typedef VkFlags VkWaylandSurfaceCreateFlagsKHR;
-typedef struct VkWaylandSurfaceCreateInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkWaylandSurfaceCreateFlagsKHR flags;
- struct wl_display* display;
- struct wl_surface* surface;
-} VkWaylandSurfaceCreateInfoKHR;
-
-typedef VkResult (VKAPI_PTR *PFN_vkCreateWaylandSurfaceKHR)(VkInstance instance, const VkWaylandSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
-typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, struct wl_display* display);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateWaylandSurfaceKHR(
- VkInstance instance,
- const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkSurfaceKHR* pSurface);
-
-VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceWaylandPresentationSupportKHR(
- VkPhysicalDevice physicalDevice,
- uint32_t queueFamilyIndex,
- struct wl_display* display);
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/common/vulkan/include/vulkan/vulkan_win32.h b/common/vulkan/include/vulkan/vulkan_win32.h
deleted file mode 100644
index 1b680f0b..00000000
--- a/common/vulkan/include/vulkan/vulkan_win32.h
+++ /dev/null
@@ -1,315 +0,0 @@
-#ifndef VULKAN_WIN32_H_
-#define VULKAN_WIN32_H_ 1
-
-/*
-** Copyright 2015-2021 The Khronos Group Inc.
-**
-** SPDX-License-Identifier: Apache-2.0
-*/
-
-/*
-** This header is generated from the Khronos Vulkan XML API Registry.
-**
-*/
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-
-#define VK_KHR_win32_surface 1
-#define VK_KHR_WIN32_SURFACE_SPEC_VERSION 6
-#define VK_KHR_WIN32_SURFACE_EXTENSION_NAME "VK_KHR_win32_surface"
-typedef VkFlags VkWin32SurfaceCreateFlagsKHR;
-typedef struct VkWin32SurfaceCreateInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkWin32SurfaceCreateFlagsKHR flags;
- HINSTANCE hinstance;
- HWND hwnd;
-} VkWin32SurfaceCreateInfoKHR;
-
-typedef VkResult (VKAPI_PTR *PFN_vkCreateWin32SurfaceKHR)(VkInstance instance, const VkWin32SurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
-typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateWin32SurfaceKHR(
- VkInstance instance,
- const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkSurfaceKHR* pSurface);
-
-VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceWin32PresentationSupportKHR(
- VkPhysicalDevice physicalDevice,
- uint32_t queueFamilyIndex);
-#endif
-
-
-#define VK_KHR_external_memory_win32 1
-#define VK_KHR_EXTERNAL_MEMORY_WIN32_SPEC_VERSION 1
-#define VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME "VK_KHR_external_memory_win32"
-typedef struct VkImportMemoryWin32HandleInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkExternalMemoryHandleTypeFlagBits handleType;
- HANDLE handle;
- LPCWSTR name;
-} VkImportMemoryWin32HandleInfoKHR;
-
-typedef struct VkExportMemoryWin32HandleInfoKHR {
- VkStructureType sType;
- const void* pNext;
- const SECURITY_ATTRIBUTES* pAttributes;
- DWORD dwAccess;
- LPCWSTR name;
-} VkExportMemoryWin32HandleInfoKHR;
-
-typedef struct VkMemoryWin32HandlePropertiesKHR {
- VkStructureType sType;
- void* pNext;
- uint32_t memoryTypeBits;
-} VkMemoryWin32HandlePropertiesKHR;
-
-typedef struct VkMemoryGetWin32HandleInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkDeviceMemory memory;
- VkExternalMemoryHandleTypeFlagBits handleType;
-} VkMemoryGetWin32HandleInfoKHR;
-
-typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryWin32HandleKHR)(VkDevice device, const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle);
-typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryWin32HandlePropertiesKHR)(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, HANDLE handle, VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryWin32HandleKHR(
- VkDevice device,
- const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
- HANDLE* pHandle);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryWin32HandlePropertiesKHR(
- VkDevice device,
- VkExternalMemoryHandleTypeFlagBits handleType,
- HANDLE handle,
- VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties);
-#endif
-
-
-#define VK_KHR_win32_keyed_mutex 1
-#define VK_KHR_WIN32_KEYED_MUTEX_SPEC_VERSION 1
-#define VK_KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME "VK_KHR_win32_keyed_mutex"
-typedef struct VkWin32KeyedMutexAcquireReleaseInfoKHR {
- VkStructureType sType;
- const void* pNext;
- uint32_t acquireCount;
- const VkDeviceMemory* pAcquireSyncs;
- const uint64_t* pAcquireKeys;
- const uint32_t* pAcquireTimeouts;
- uint32_t releaseCount;
- const VkDeviceMemory* pReleaseSyncs;
- const uint64_t* pReleaseKeys;
-} VkWin32KeyedMutexAcquireReleaseInfoKHR;
-
-
-
-#define VK_KHR_external_semaphore_win32 1
-#define VK_KHR_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION 1
-#define VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME "VK_KHR_external_semaphore_win32"
-typedef struct VkImportSemaphoreWin32HandleInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkSemaphore semaphore;
- VkSemaphoreImportFlags flags;
- VkExternalSemaphoreHandleTypeFlagBits handleType;
- HANDLE handle;
- LPCWSTR name;
-} VkImportSemaphoreWin32HandleInfoKHR;
-
-typedef struct VkExportSemaphoreWin32HandleInfoKHR {
- VkStructureType sType;
- const void* pNext;
- const SECURITY_ATTRIBUTES* pAttributes;
- DWORD dwAccess;
- LPCWSTR name;
-} VkExportSemaphoreWin32HandleInfoKHR;
-
-typedef struct VkD3D12FenceSubmitInfoKHR {
- VkStructureType sType;
- const void* pNext;
- uint32_t waitSemaphoreValuesCount;
- const uint64_t* pWaitSemaphoreValues;
- uint32_t signalSemaphoreValuesCount;
- const uint64_t* pSignalSemaphoreValues;
-} VkD3D12FenceSubmitInfoKHR;
-
-typedef struct VkSemaphoreGetWin32HandleInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkSemaphore semaphore;
- VkExternalSemaphoreHandleTypeFlagBits handleType;
-} VkSemaphoreGetWin32HandleInfoKHR;
-
-typedef VkResult (VKAPI_PTR *PFN_vkImportSemaphoreWin32HandleKHR)(VkDevice device, const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo);
-typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreWin32HandleKHR)(VkDevice device, const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkImportSemaphoreWin32HandleKHR(
- VkDevice device,
- const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreWin32HandleKHR(
- VkDevice device,
- const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
- HANDLE* pHandle);
-#endif
-
-
-#define VK_KHR_external_fence_win32 1
-#define VK_KHR_EXTERNAL_FENCE_WIN32_SPEC_VERSION 1
-#define VK_KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME "VK_KHR_external_fence_win32"
-typedef struct VkImportFenceWin32HandleInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkFence fence;
- VkFenceImportFlags flags;
- VkExternalFenceHandleTypeFlagBits handleType;
- HANDLE handle;
- LPCWSTR name;
-} VkImportFenceWin32HandleInfoKHR;
-
-typedef struct VkExportFenceWin32HandleInfoKHR {
- VkStructureType sType;
- const void* pNext;
- const SECURITY_ATTRIBUTES* pAttributes;
- DWORD dwAccess;
- LPCWSTR name;
-} VkExportFenceWin32HandleInfoKHR;
-
-typedef struct VkFenceGetWin32HandleInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkFence fence;
- VkExternalFenceHandleTypeFlagBits handleType;
-} VkFenceGetWin32HandleInfoKHR;
-
-typedef VkResult (VKAPI_PTR *PFN_vkImportFenceWin32HandleKHR)(VkDevice device, const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo);
-typedef VkResult (VKAPI_PTR *PFN_vkGetFenceWin32HandleKHR)(VkDevice device, const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkImportFenceWin32HandleKHR(
- VkDevice device,
- const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetFenceWin32HandleKHR(
- VkDevice device,
- const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
- HANDLE* pHandle);
-#endif
-
-
-#define VK_NV_external_memory_win32 1
-#define VK_NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION 1
-#define VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME "VK_NV_external_memory_win32"
-typedef struct VkImportMemoryWin32HandleInfoNV {
- VkStructureType sType;
- const void* pNext;
- VkExternalMemoryHandleTypeFlagsNV handleType;
- HANDLE handle;
-} VkImportMemoryWin32HandleInfoNV;
-
-typedef struct VkExportMemoryWin32HandleInfoNV {
- VkStructureType sType;
- const void* pNext;
- const SECURITY_ATTRIBUTES* pAttributes;
- DWORD dwAccess;
-} VkExportMemoryWin32HandleInfoNV;
-
-typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryWin32HandleNV)(VkDevice device, VkDeviceMemory memory, VkExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryWin32HandleNV(
- VkDevice device,
- VkDeviceMemory memory,
- VkExternalMemoryHandleTypeFlagsNV handleType,
- HANDLE* pHandle);
-#endif
-
-
-#define VK_NV_win32_keyed_mutex 1
-#define VK_NV_WIN32_KEYED_MUTEX_SPEC_VERSION 2
-#define VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME "VK_NV_win32_keyed_mutex"
-typedef struct VkWin32KeyedMutexAcquireReleaseInfoNV {
- VkStructureType sType;
- const void* pNext;
- uint32_t acquireCount;
- const VkDeviceMemory* pAcquireSyncs;
- const uint64_t* pAcquireKeys;
- const uint32_t* pAcquireTimeoutMilliseconds;
- uint32_t releaseCount;
- const VkDeviceMemory* pReleaseSyncs;
- const uint64_t* pReleaseKeys;
-} VkWin32KeyedMutexAcquireReleaseInfoNV;
-
-
-
-#define VK_EXT_full_screen_exclusive 1
-#define VK_EXT_FULL_SCREEN_EXCLUSIVE_SPEC_VERSION 4
-#define VK_EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME "VK_EXT_full_screen_exclusive"
-
-typedef enum VkFullScreenExclusiveEXT {
- VK_FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT = 0,
- VK_FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT = 1,
- VK_FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT = 2,
- VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT = 3,
- VK_FULL_SCREEN_EXCLUSIVE_MAX_ENUM_EXT = 0x7FFFFFFF
-} VkFullScreenExclusiveEXT;
-typedef struct VkSurfaceFullScreenExclusiveInfoEXT {
- VkStructureType sType;
- void* pNext;
- VkFullScreenExclusiveEXT fullScreenExclusive;
-} VkSurfaceFullScreenExclusiveInfoEXT;
-
-typedef struct VkSurfaceCapabilitiesFullScreenExclusiveEXT {
- VkStructureType sType;
- void* pNext;
- VkBool32 fullScreenExclusiveSupported;
-} VkSurfaceCapabilitiesFullScreenExclusiveEXT;
-
-typedef struct VkSurfaceFullScreenExclusiveWin32InfoEXT {
- VkStructureType sType;
- const void* pNext;
- HMONITOR hmonitor;
-} VkSurfaceFullScreenExclusiveWin32InfoEXT;
-
-typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pPresentModeCount, VkPresentModeKHR* pPresentModes);
-typedef VkResult (VKAPI_PTR *PFN_vkAcquireFullScreenExclusiveModeEXT)(VkDevice device, VkSwapchainKHR swapchain);
-typedef VkResult (VKAPI_PTR *PFN_vkReleaseFullScreenExclusiveModeEXT)(VkDevice device, VkSwapchainKHR swapchain);
-typedef VkResult (VKAPI_PTR *PFN_vkGetDeviceGroupSurfacePresentModes2EXT)(VkDevice device, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkDeviceGroupPresentModeFlagsKHR* pModes);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfacePresentModes2EXT(
- VkPhysicalDevice physicalDevice,
- const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
- uint32_t* pPresentModeCount,
- VkPresentModeKHR* pPresentModes);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkAcquireFullScreenExclusiveModeEXT(
- VkDevice device,
- VkSwapchainKHR swapchain);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkReleaseFullScreenExclusiveModeEXT(
- VkDevice device,
- VkSwapchainKHR swapchain);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceGroupSurfacePresentModes2EXT(
- VkDevice device,
- const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
- VkDeviceGroupPresentModeFlagsKHR* pModes);
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/common/vulkan/include/vulkan/vulkan_xcb.h b/common/vulkan/include/vulkan/vulkan_xcb.h
deleted file mode 100644
index 5ba2ad85..00000000
--- a/common/vulkan/include/vulkan/vulkan_xcb.h
+++ /dev/null
@@ -1,55 +0,0 @@
-#ifndef VULKAN_XCB_H_
-#define VULKAN_XCB_H_ 1
-
-/*
-** Copyright 2015-2021 The Khronos Group Inc.
-**
-** SPDX-License-Identifier: Apache-2.0
-*/
-
-/*
-** This header is generated from the Khronos Vulkan XML API Registry.
-**
-*/
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-
-#define VK_KHR_xcb_surface 1
-#define VK_KHR_XCB_SURFACE_SPEC_VERSION 6
-#define VK_KHR_XCB_SURFACE_EXTENSION_NAME "VK_KHR_xcb_surface"
-typedef VkFlags VkXcbSurfaceCreateFlagsKHR;
-typedef struct VkXcbSurfaceCreateInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkXcbSurfaceCreateFlagsKHR flags;
- xcb_connection_t* connection;
- xcb_window_t window;
-} VkXcbSurfaceCreateInfoKHR;
-
-typedef VkResult (VKAPI_PTR *PFN_vkCreateXcbSurfaceKHR)(VkInstance instance, const VkXcbSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
-typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateXcbSurfaceKHR(
- VkInstance instance,
- const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkSurfaceKHR* pSurface);
-
-VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceXcbPresentationSupportKHR(
- VkPhysicalDevice physicalDevice,
- uint32_t queueFamilyIndex,
- xcb_connection_t* connection,
- xcb_visualid_t visual_id);
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/common/vulkan/include/vulkan/vulkan_xlib.h b/common/vulkan/include/vulkan/vulkan_xlib.h
deleted file mode 100644
index 75c75dc2..00000000
--- a/common/vulkan/include/vulkan/vulkan_xlib.h
+++ /dev/null
@@ -1,55 +0,0 @@
-#ifndef VULKAN_XLIB_H_
-#define VULKAN_XLIB_H_ 1
-
-/*
-** Copyright 2015-2021 The Khronos Group Inc.
-**
-** SPDX-License-Identifier: Apache-2.0
-*/
-
-/*
-** This header is generated from the Khronos Vulkan XML API Registry.
-**
-*/
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-
-#define VK_KHR_xlib_surface 1
-#define VK_KHR_XLIB_SURFACE_SPEC_VERSION 6
-#define VK_KHR_XLIB_SURFACE_EXTENSION_NAME "VK_KHR_xlib_surface"
-typedef VkFlags VkXlibSurfaceCreateFlagsKHR;
-typedef struct VkXlibSurfaceCreateInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkXlibSurfaceCreateFlagsKHR flags;
- Display* dpy;
- Window window;
-} VkXlibSurfaceCreateInfoKHR;
-
-typedef VkResult (VKAPI_PTR *PFN_vkCreateXlibSurfaceKHR)(VkInstance instance, const VkXlibSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
-typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, Display* dpy, VisualID visualID);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateXlibSurfaceKHR(
- VkInstance instance,
- const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkSurfaceKHR* pSurface);
-
-VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceXlibPresentationSupportKHR(
- VkPhysicalDevice physicalDevice,
- uint32_t queueFamilyIndex,
- Display* dpy,
- VisualID visualID);
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/common/vulkan/include/vulkan/vulkan_xlib_xrandr.h b/common/vulkan/include/vulkan/vulkan_xlib_xrandr.h
deleted file mode 100644
index fa274934..00000000
--- a/common/vulkan/include/vulkan/vulkan_xlib_xrandr.h
+++ /dev/null
@@ -1,45 +0,0 @@
-#ifndef VULKAN_XLIB_XRANDR_H_
-#define VULKAN_XLIB_XRANDR_H_ 1
-
-/*
-** Copyright 2015-2021 The Khronos Group Inc.
-**
-** SPDX-License-Identifier: Apache-2.0
-*/
-
-/*
-** This header is generated from the Khronos Vulkan XML API Registry.
-**
-*/
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-
-#define VK_EXT_acquire_xlib_display 1
-#define VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION 1
-#define VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME "VK_EXT_acquire_xlib_display"
-typedef VkResult (VKAPI_PTR *PFN_vkAcquireXlibDisplayEXT)(VkPhysicalDevice physicalDevice, Display* dpy, VkDisplayKHR display);
-typedef VkResult (VKAPI_PTR *PFN_vkGetRandROutputDisplayEXT)(VkPhysicalDevice physicalDevice, Display* dpy, RROutput rrOutput, VkDisplayKHR* pDisplay);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkAcquireXlibDisplayEXT(
- VkPhysicalDevice physicalDevice,
- Display* dpy,
- VkDisplayKHR display);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetRandROutputDisplayEXT(
- VkPhysicalDevice physicalDevice,
- Display* dpy,
- RROutput rrOutput,
- VkDisplayKHR* pDisplay);
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif