mirror of https://github.com/auygun/kaliber.git
Compare commits
1 Commits
1e25c61dab
...
7b675e2569
Author | SHA1 | Date |
---|---|---|
Attila Uygun | 7b675e2569 |
|
@ -63,11 +63,8 @@ CXXFLAGS += -std=c++20
|
||||||
|
|
||||||
# Vulkan config
|
# Vulkan config
|
||||||
CFLAGS += -DVK_USE_PLATFORM_XLIB_KHR
|
CFLAGS += -DVK_USE_PLATFORM_XLIB_KHR
|
||||||
CFLAGS += -DVULKAN_NON_CMAKE_BUILD
|
CFLAGS += -DVMA_STATIC_VULKAN_FUNCTIONS=1
|
||||||
CFLAGS += -DSYSCONFDIR='"/etc"'
|
CFLAGS += -I$(SRC_ROOT)/third_party/vulkan/include
|
||||||
CFLAGS += -DFALLBACK_DATA_DIRS='"/usr/local/share:/usr/share"'
|
|
||||||
CFLAGS += -DFALLBACK_CONFIG_DIRS='"/etc/xdg"'
|
|
||||||
CFLAGS += -DHAVE_SECURE_GETENV
|
|
||||||
CXXFLAGS += -I$(SRC_ROOT)/third_party/glslang
|
CXXFLAGS += -I$(SRC_ROOT)/third_party/glslang
|
||||||
|
|
||||||
# --- Internal functions ---
|
# --- Internal functions ---
|
||||||
|
@ -194,16 +191,7 @@ THIRD_PARTY_SRC := \
|
||||||
$(SRC_ROOT)/third_party/texture_compressor/texture_compressor_etc1.cc \
|
$(SRC_ROOT)/third_party/texture_compressor/texture_compressor_etc1.cc \
|
||||||
$(SRC_ROOT)/third_party/texture_compressor/texture_compressor.cc \
|
$(SRC_ROOT)/third_party/texture_compressor/texture_compressor.cc \
|
||||||
$(SRC_ROOT)/third_party/vma/vk_mem_alloc.cpp \
|
$(SRC_ROOT)/third_party/vma/vk_mem_alloc.cpp \
|
||||||
$(SRC_ROOT)/third_party/vulkan/loader/cJSON.c \
|
$(SRC_ROOT)/third_party/volk/volk.c
|
||||||
$(SRC_ROOT)/third_party/vulkan/loader/debug_utils.c \
|
|
||||||
$(SRC_ROOT)/third_party/vulkan/loader/dev_ext_trampoline.c \
|
|
||||||
$(SRC_ROOT)/third_party/vulkan/loader/extension_manual.c \
|
|
||||||
$(SRC_ROOT)/third_party/vulkan/loader/loader.c \
|
|
||||||
$(SRC_ROOT)/third_party/vulkan/loader/murmurhash.c \
|
|
||||||
$(SRC_ROOT)/third_party/vulkan/loader/phys_dev_ext.c \
|
|
||||||
$(SRC_ROOT)/third_party/vulkan/loader/trampoline.c \
|
|
||||||
$(SRC_ROOT)/third_party/vulkan/loader/unknown_ext_chain.c \
|
|
||||||
$(SRC_ROOT)/third_party/vulkan/loader/wsi.c
|
|
||||||
|
|
||||||
$(BUILD_DIR)/third_party/%.o: $(SRC_ROOT)/third_party/%.c
|
$(BUILD_DIR)/third_party/%.o: $(SRC_ROOT)/third_party/%.c
|
||||||
@mkdir -p $(@D)
|
@mkdir -p $(@D)
|
||||||
|
|
|
@ -41,6 +41,10 @@ bool VulkanContext::Initialize() {
|
||||||
LOG << "Vulkan is not availbale.";
|
LOG << "Vulkan is not availbale.";
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
if (volkInitialize() != VK_SUCCESS) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (!CreatePhysicalDevice())
|
if (!CreatePhysicalDevice())
|
||||||
|
@ -418,6 +422,8 @@ bool VulkanContext::CreatePhysicalDevice() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
volkLoadInstance(instance_);
|
||||||
|
|
||||||
// Make initial call to query gpu_count.
|
// Make initial call to query gpu_count.
|
||||||
VkResult err = vkEnumeratePhysicalDevices(instance_, &gpu_count, nullptr);
|
VkResult err = vkEnumeratePhysicalDevices(instance_, &gpu_count, nullptr);
|
||||||
if (err) {
|
if (err) {
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
#if defined(__ANDROID__)
|
#if defined(__ANDROID__)
|
||||||
#include "third_party/android/vulkan_wrapper.h"
|
#include "third_party/android/vulkan_wrapper.h"
|
||||||
#else
|
#else
|
||||||
#include "third_party/vulkan/vulkan.h"
|
#include "third_party/volk/volk.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(__ANDROID__)
|
#if defined(__ANDROID__)
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#if defined(__ANDROID__)
|
|
||||||
#define VK_NO_PROTOTYPES 1
|
|
||||||
#pragma clang diagnostic ignored "-Wunused-variable"
|
|
||||||
#endif
|
|
||||||
#define VMA_IMPLEMENTATION
|
#define VMA_IMPLEMENTATION
|
||||||
#pragma clang diagnostic ignored "-Wnullability-completeness"
|
#ifdef DEBUG_ENABLED
|
||||||
|
#ifndef _MSC_VER
|
||||||
|
#define _DEBUG
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
#include "vk_mem_alloc.h"
|
#include "vk_mem_alloc.h"
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,19 @@
|
||||||
|
Copyright (c) 2018-2022 Arseny Kapoulkine
|
||||||
|
|
||||||
|
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.
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,202 @@
|
||||||
|
|
||||||
|
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.
|
|
@ -0,0 +1,310 @@
|
||||||
|
#ifndef VULKAN_VIDEO_CODEC_H264STD_H_
|
||||||
|
#define VULKAN_VIDEO_CODEC_H264STD_H_ 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
** Copyright 2015-2022 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 vulkan_video_codec_h264std 1
|
||||||
|
#include <stdint.h>
|
||||||
|
#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 6
|
||||||
|
#define STD_VIDEO_H264_SCALING_LIST_8X8_NUM_ELEMENTS 64
|
||||||
|
#define STD_VIDEO_H264_MAX_NUM_LIST_REF 32
|
||||||
|
#define STD_VIDEO_H264_MAX_CHROMA_PLANES 2
|
||||||
|
|
||||||
|
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,
|
||||||
|
STD_VIDEO_H264_CHROMA_FORMAT_IDC_MAX_ENUM = 0x7FFFFFFF
|
||||||
|
} StdVideoH264ChromaFormatIdc;
|
||||||
|
|
||||||
|
typedef enum StdVideoH264ProfileIdc {
|
||||||
|
STD_VIDEO_H264_PROFILE_IDC_BASELINE = 66,
|
||||||
|
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,
|
||||||
|
STD_VIDEO_H264_PROFILE_IDC_MAX_ENUM = 0x7FFFFFFF
|
||||||
|
} StdVideoH264ProfileIdc;
|
||||||
|
|
||||||
|
typedef enum StdVideoH264LevelIdc {
|
||||||
|
STD_VIDEO_H264_LEVEL_IDC_1_0 = 0,
|
||||||
|
STD_VIDEO_H264_LEVEL_IDC_1_1 = 1,
|
||||||
|
STD_VIDEO_H264_LEVEL_IDC_1_2 = 2,
|
||||||
|
STD_VIDEO_H264_LEVEL_IDC_1_3 = 3,
|
||||||
|
STD_VIDEO_H264_LEVEL_IDC_2_0 = 4,
|
||||||
|
STD_VIDEO_H264_LEVEL_IDC_2_1 = 5,
|
||||||
|
STD_VIDEO_H264_LEVEL_IDC_2_2 = 6,
|
||||||
|
STD_VIDEO_H264_LEVEL_IDC_3_0 = 7,
|
||||||
|
STD_VIDEO_H264_LEVEL_IDC_3_1 = 8,
|
||||||
|
STD_VIDEO_H264_LEVEL_IDC_3_2 = 9,
|
||||||
|
STD_VIDEO_H264_LEVEL_IDC_4_0 = 10,
|
||||||
|
STD_VIDEO_H264_LEVEL_IDC_4_1 = 11,
|
||||||
|
STD_VIDEO_H264_LEVEL_IDC_4_2 = 12,
|
||||||
|
STD_VIDEO_H264_LEVEL_IDC_5_0 = 13,
|
||||||
|
STD_VIDEO_H264_LEVEL_IDC_5_1 = 14,
|
||||||
|
STD_VIDEO_H264_LEVEL_IDC_5_2 = 15,
|
||||||
|
STD_VIDEO_H264_LEVEL_IDC_6_0 = 16,
|
||||||
|
STD_VIDEO_H264_LEVEL_IDC_6_1 = 17,
|
||||||
|
STD_VIDEO_H264_LEVEL_IDC_6_2 = 18,
|
||||||
|
STD_VIDEO_H264_LEVEL_IDC_INVALID = 0x7FFFFFFF,
|
||||||
|
STD_VIDEO_H264_LEVEL_IDC_MAX_ENUM = 0x7FFFFFFF
|
||||||
|
} StdVideoH264LevelIdc;
|
||||||
|
|
||||||
|
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,
|
||||||
|
STD_VIDEO_H264_POC_TYPE_MAX_ENUM = 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,
|
||||||
|
STD_VIDEO_H264_ASPECT_RATIO_IDC_MAX_ENUM = 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,
|
||||||
|
STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_MAX_ENUM = 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,
|
||||||
|
STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_MAX_ENUM = 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,
|
||||||
|
STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_MAX_ENUM = 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,
|
||||||
|
STD_VIDEO_H264_CABAC_INIT_IDC_MAX_ENUM = 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,
|
||||||
|
STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_MAX_ENUM = 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,
|
||||||
|
STD_VIDEO_H264_SLICE_TYPE_INVALID = 0x7FFFFFFF,
|
||||||
|
STD_VIDEO_H264_SLICE_TYPE_MAX_ENUM = 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,
|
||||||
|
STD_VIDEO_H264_PICTURE_TYPE_IDR = 5,
|
||||||
|
STD_VIDEO_H264_PICTURE_TYPE_INVALID = 0x7FFFFFFF,
|
||||||
|
STD_VIDEO_H264_PICTURE_TYPE_MAX_ENUM = 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,
|
||||||
|
STD_VIDEO_H264_NON_VCL_NALU_TYPE_MAX_ENUM = 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 {
|
||||||
|
uint8_t cpb_cnt_minus1;
|
||||||
|
uint8_t bit_rate_scale;
|
||||||
|
uint8_t cpb_size_scale;
|
||||||
|
uint8_t reserved1;
|
||||||
|
uint32_t bit_rate_value_minus1[STD_VIDEO_H264_CPB_CNT_LIST_SIZE];
|
||||||
|
uint32_t cpb_size_value_minus1[STD_VIDEO_H264_CPB_CNT_LIST_SIZE];
|
||||||
|
uint8_t cbr_flag[STD_VIDEO_H264_CPB_CNT_LIST_SIZE];
|
||||||
|
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 {
|
||||||
|
StdVideoH264SpsVuiFlags flags;
|
||||||
|
StdVideoH264AspectRatioIdc 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_coefficients;
|
||||||
|
uint32_t num_units_in_tick;
|
||||||
|
uint32_t time_scale;
|
||||||
|
uint8_t max_num_reorder_frames;
|
||||||
|
uint8_t max_dec_frame_buffering;
|
||||||
|
uint8_t chroma_sample_loc_type_top_field;
|
||||||
|
uint8_t chroma_sample_loc_type_bottom_field;
|
||||||
|
uint32_t reserved1;
|
||||||
|
const StdVideoH264HrdParameters* pHrdParameters;
|
||||||
|
} 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 {
|
||||||
|
uint16_t scaling_list_present_mask;
|
||||||
|
uint16_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 {
|
||||||
|
StdVideoH264SpsFlags flags;
|
||||||
|
StdVideoH264ProfileIdc profile_idc;
|
||||||
|
StdVideoH264LevelIdc level_idc;
|
||||||
|
StdVideoH264ChromaFormatIdc chroma_format_idc;
|
||||||
|
uint8_t seq_parameter_set_id;
|
||||||
|
uint8_t bit_depth_luma_minus8;
|
||||||
|
uint8_t bit_depth_chroma_minus8;
|
||||||
|
uint8_t log2_max_frame_num_minus4;
|
||||||
|
StdVideoH264PocType pic_order_cnt_type;
|
||||||
|
int32_t offset_for_non_ref_pic;
|
||||||
|
int32_t offset_for_top_to_bottom_field;
|
||||||
|
uint8_t log2_max_pic_order_cnt_lsb_minus4;
|
||||||
|
uint8_t num_ref_frames_in_pic_order_cnt_cycle;
|
||||||
|
uint8_t max_num_ref_frames;
|
||||||
|
uint8_t reserved1;
|
||||||
|
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;
|
||||||
|
uint32_t reserved2;
|
||||||
|
const int32_t* pOffsetForRefFrame;
|
||||||
|
const StdVideoH264ScalingLists* pScalingLists;
|
||||||
|
const StdVideoH264SequenceParameterSetVui* pSequenceParameterSetVui;
|
||||||
|
} 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_pred_flag : 1;
|
||||||
|
uint32_t bottom_field_pic_order_in_frame_present_flag : 1;
|
||||||
|
uint32_t entropy_coding_mode_flag : 1;
|
||||||
|
uint32_t pic_scaling_matrix_present_flag : 1;
|
||||||
|
} StdVideoH264PpsFlags;
|
||||||
|
|
||||||
|
typedef struct StdVideoH264PictureParameterSet {
|
||||||
|
StdVideoH264PpsFlags flags;
|
||||||
|
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;
|
||||||
|
const StdVideoH264ScalingLists* pScalingLists;
|
||||||
|
} StdVideoH264PictureParameterSet;
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
|
@ -0,0 +1,75 @@
|
||||||
|
#ifndef VULKAN_VIDEO_CODEC_H264STD_DECODE_H_
|
||||||
|
#define VULKAN_VIDEO_CODEC_H264STD_DECODE_H_ 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
** Copyright 2015-2022 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 vulkan_video_codec_h264std_decode 1
|
||||||
|
// Vulkan 0.9 provisional Vulkan video H.264 decode std specification version number
|
||||||
|
#define VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_0_9_8 VK_MAKE_VIDEO_STD_VERSION(0, 9, 8) // Patch version should always be set to 0
|
||||||
|
|
||||||
|
#define STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_LIST_SIZE 2
|
||||||
|
#define VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_SPEC_VERSION VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_0_9_8
|
||||||
|
#define VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_EXTENSION_NAME "VK_STD_vulkan_video_codec_h264_decode"
|
||||||
|
|
||||||
|
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_INVALID = 0x7FFFFFFF,
|
||||||
|
STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_MAX_ENUM = 0x7FFFFFFF
|
||||||
|
} StdVideoDecodeH264FieldOrderCount;
|
||||||
|
typedef struct StdVideoDecodeH264PictureInfoFlags {
|
||||||
|
uint32_t field_pic_flag : 1;
|
||||||
|
uint32_t is_intra : 1;
|
||||||
|
uint32_t IdrPicFlag : 1;
|
||||||
|
uint32_t bottom_field_flag : 1;
|
||||||
|
uint32_t is_reference : 1;
|
||||||
|
uint32_t complementary_field_pair : 1;
|
||||||
|
} StdVideoDecodeH264PictureInfoFlags;
|
||||||
|
|
||||||
|
typedef struct StdVideoDecodeH264PictureInfo {
|
||||||
|
StdVideoDecodeH264PictureInfoFlags flags;
|
||||||
|
uint8_t seq_parameter_set_id;
|
||||||
|
uint8_t pic_parameter_set_id;
|
||||||
|
uint8_t reserved1;
|
||||||
|
uint8_t reserved2;
|
||||||
|
uint16_t frame_num;
|
||||||
|
uint16_t idr_pic_id;
|
||||||
|
int32_t PicOrderCnt[STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_LIST_SIZE];
|
||||||
|
} StdVideoDecodeH264PictureInfo;
|
||||||
|
|
||||||
|
typedef struct StdVideoDecodeH264ReferenceInfoFlags {
|
||||||
|
uint32_t top_field_flag : 1;
|
||||||
|
uint32_t bottom_field_flag : 1;
|
||||||
|
uint32_t used_for_long_term_reference : 1;
|
||||||
|
uint32_t is_non_existing : 1;
|
||||||
|
} StdVideoDecodeH264ReferenceInfoFlags;
|
||||||
|
|
||||||
|
typedef struct StdVideoDecodeH264ReferenceInfo {
|
||||||
|
StdVideoDecodeH264ReferenceInfoFlags flags;
|
||||||
|
uint16_t FrameNum;
|
||||||
|
uint16_t reserved;
|
||||||
|
int32_t PicOrderCnt[STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_LIST_SIZE];
|
||||||
|
} StdVideoDecodeH264ReferenceInfo;
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
132
src/third_party/vulkan/include/vk_video/vulkan_video_codec_h264std_encode.h
vendored
Normal file
132
src/third_party/vulkan/include/vk_video/vulkan_video_codec_h264std_encode.h
vendored
Normal file
|
@ -0,0 +1,132 @@
|
||||||
|
#ifndef VULKAN_VIDEO_CODEC_H264STD_ENCODE_H_
|
||||||
|
#define VULKAN_VIDEO_CODEC_H264STD_ENCODE_H_ 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
** Copyright 2015-2022 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 vulkan_video_codec_h264std_encode 1
|
||||||
|
// Vulkan 0.9 provisional Vulkan video H.264 encode std specification version number
|
||||||
|
#define VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_API_VERSION_0_9_8 VK_MAKE_VIDEO_STD_VERSION(0, 9, 8) // Patch version should always be set to 0
|
||||||
|
|
||||||
|
#define VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_SPEC_VERSION VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_API_VERSION_0_9_8
|
||||||
|
#define VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_EXTENSION_NAME "VK_STD_vulkan_video_codec_h264_encode"
|
||||||
|
typedef struct StdVideoEncodeH264WeightTableFlags {
|
||||||
|
uint32_t luma_weight_l0_flag;
|
||||||
|
uint32_t chroma_weight_l0_flag;
|
||||||
|
uint32_t luma_weight_l1_flag;
|
||||||
|
uint32_t chroma_weight_l1_flag;
|
||||||
|
} StdVideoEncodeH264WeightTableFlags;
|
||||||
|
|
||||||
|
typedef struct StdVideoEncodeH264WeightTable {
|
||||||
|
StdVideoEncodeH264WeightTableFlags flags;
|
||||||
|
uint8_t luma_log2_weight_denom;
|
||||||
|
uint8_t chroma_log2_weight_denom;
|
||||||
|
int8_t luma_weight_l0[STD_VIDEO_H264_MAX_NUM_LIST_REF];
|
||||||
|
int8_t luma_offset_l0[STD_VIDEO_H264_MAX_NUM_LIST_REF];
|
||||||
|
int8_t chroma_weight_l0[STD_VIDEO_H264_MAX_NUM_LIST_REF][STD_VIDEO_H264_MAX_CHROMA_PLANES];
|
||||||
|
int8_t chroma_offset_l0[STD_VIDEO_H264_MAX_NUM_LIST_REF][STD_VIDEO_H264_MAX_CHROMA_PLANES];
|
||||||
|
int8_t luma_weight_l1[STD_VIDEO_H264_MAX_NUM_LIST_REF];
|
||||||
|
int8_t luma_offset_l1[STD_VIDEO_H264_MAX_NUM_LIST_REF];
|
||||||
|
int8_t chroma_weight_l1[STD_VIDEO_H264_MAX_NUM_LIST_REF][STD_VIDEO_H264_MAX_CHROMA_PLANES];
|
||||||
|
int8_t chroma_offset_l1[STD_VIDEO_H264_MAX_NUM_LIST_REF][STD_VIDEO_H264_MAX_CHROMA_PLANES];
|
||||||
|
} StdVideoEncodeH264WeightTable;
|
||||||
|
|
||||||
|
typedef struct StdVideoEncodeH264SliceHeaderFlags {
|
||||||
|
uint32_t direct_spatial_mv_pred_flag : 1;
|
||||||
|
uint32_t num_ref_idx_active_override_flag : 1;
|
||||||
|
uint32_t no_output_of_prior_pics_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 used_for_long_term_reference : 1;
|
||||||
|
} StdVideoEncodeH264PictureInfoFlags;
|
||||||
|
|
||||||
|
typedef struct StdVideoEncodeH264ReferenceInfoFlags {
|
||||||
|
uint32_t used_for_long_term_reference : 1;
|
||||||
|
} StdVideoEncodeH264ReferenceInfoFlags;
|
||||||
|
|
||||||
|
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;
|
||||||
|
const StdVideoEncodeH264RefListModEntry* pRefList0ModOperations;
|
||||||
|
uint8_t refList1ModOpCount;
|
||||||
|
const StdVideoEncodeH264RefListModEntry* pRefList1ModOperations;
|
||||||
|
uint8_t refPicMarkingOpCount;
|
||||||
|
const StdVideoEncodeH264RefPicMarkingEntry* pRefPicMarkingOperations;
|
||||||
|
} StdVideoEncodeH264RefMemMgmtCtrlOperations;
|
||||||
|
|
||||||
|
typedef struct StdVideoEncodeH264PictureInfo {
|
||||||
|
StdVideoEncodeH264PictureInfoFlags flags;
|
||||||
|
uint8_t seq_parameter_set_id;
|
||||||
|
uint8_t pic_parameter_set_id;
|
||||||
|
StdVideoH264PictureType pictureType;
|
||||||
|
uint32_t frame_num;
|
||||||
|
int32_t PicOrderCnt;
|
||||||
|
} StdVideoEncodeH264PictureInfo;
|
||||||
|
|
||||||
|
typedef struct StdVideoEncodeH264ReferenceInfo {
|
||||||
|
StdVideoEncodeH264ReferenceInfoFlags flags;
|
||||||
|
uint32_t FrameNum;
|
||||||
|
int32_t PicOrderCnt;
|
||||||
|
uint16_t long_term_pic_num;
|
||||||
|
uint16_t long_term_frame_idx;
|
||||||
|
} StdVideoEncodeH264ReferenceInfo;
|
||||||
|
|
||||||
|
typedef struct StdVideoEncodeH264SliceHeader {
|
||||||
|
StdVideoEncodeH264SliceHeaderFlags flags;
|
||||||
|
uint32_t first_mb_in_slice;
|
||||||
|
StdVideoH264SliceType slice_type;
|
||||||
|
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;
|
||||||
|
const StdVideoEncodeH264WeightTable* pWeightTable;
|
||||||
|
} StdVideoEncodeH264SliceHeader;
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
|
@ -0,0 +1,443 @@
|
||||||
|
#ifndef VULKAN_VIDEO_CODEC_H265STD_H_
|
||||||
|
#define VULKAN_VIDEO_CODEC_H265STD_H_ 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
** Copyright 2015-2022 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 vulkan_video_codec_h265std 1
|
||||||
|
#define STD_VIDEO_H265_SUBLAYERS_LIST_SIZE 7
|
||||||
|
#define STD_VIDEO_H265_CPB_CNT_LIST_SIZE 32
|
||||||
|
#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_PREDICTOR_PALETTE_COMPONENTS_LIST_SIZE 3
|
||||||
|
#define STD_VIDEO_H265_PREDICTOR_PALETTE_COMP_ENTRIES_LIST_SIZE 128
|
||||||
|
#define STD_VIDEO_H265_MAX_DPB_SIZE 16
|
||||||
|
#define STD_VIDEO_H265_MAX_LONG_TERM_REF_PICS_SPS 32
|
||||||
|
#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_MAX_NUM_LIST_REF 15
|
||||||
|
#define STD_VIDEO_H265_MAX_CHROMA_PLANES 2
|
||||||
|
#define STD_VIDEO_H265_MAX_SHORT_TERM_REF_PIC_SETS 64
|
||||||
|
#define STD_VIDEO_H265_MAX_LONG_TERM_PICS 16
|
||||||
|
#define STD_VIDEO_H265_MAX_DELTA_POC 48
|
||||||
|
|
||||||
|
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,
|
||||||
|
STD_VIDEO_H265_CHROMA_FORMAT_IDC_MAX_ENUM = 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,
|
||||||
|
STD_VIDEO_H265_PROFILE_IDC_MAX_ENUM = 0x7FFFFFFF
|
||||||
|
} StdVideoH265ProfileIdc;
|
||||||
|
|
||||||
|
typedef enum StdVideoH265LevelIdc {
|
||||||
|
STD_VIDEO_H265_LEVEL_IDC_1_0 = 0,
|
||||||
|
STD_VIDEO_H265_LEVEL_IDC_2_0 = 1,
|
||||||
|
STD_VIDEO_H265_LEVEL_IDC_2_1 = 2,
|
||||||
|
STD_VIDEO_H265_LEVEL_IDC_3_0 = 3,
|
||||||
|
STD_VIDEO_H265_LEVEL_IDC_3_1 = 4,
|
||||||
|
STD_VIDEO_H265_LEVEL_IDC_4_0 = 5,
|
||||||
|
STD_VIDEO_H265_LEVEL_IDC_4_1 = 6,
|
||||||
|
STD_VIDEO_H265_LEVEL_IDC_5_0 = 7,
|
||||||
|
STD_VIDEO_H265_LEVEL_IDC_5_1 = 8,
|
||||||
|
STD_VIDEO_H265_LEVEL_IDC_5_2 = 9,
|
||||||
|
STD_VIDEO_H265_LEVEL_IDC_6_0 = 10,
|
||||||
|
STD_VIDEO_H265_LEVEL_IDC_6_1 = 11,
|
||||||
|
STD_VIDEO_H265_LEVEL_IDC_6_2 = 12,
|
||||||
|
STD_VIDEO_H265_LEVEL_IDC_INVALID = 0x7FFFFFFF,
|
||||||
|
STD_VIDEO_H265_LEVEL_IDC_MAX_ENUM = 0x7FFFFFFF
|
||||||
|
} StdVideoH265LevelIdc;
|
||||||
|
|
||||||
|
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,
|
||||||
|
STD_VIDEO_H265_SLICE_TYPE_MAX_ENUM = 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,
|
||||||
|
STD_VIDEO_H265_PICTURE_TYPE_MAX_ENUM = 0x7FFFFFFF
|
||||||
|
} StdVideoH265PictureType;
|
||||||
|
|
||||||
|
typedef enum StdVideoH265AspectRatioIdc {
|
||||||
|
STD_VIDEO_H265_ASPECT_RATIO_IDC_UNSPECIFIED = 0,
|
||||||
|
STD_VIDEO_H265_ASPECT_RATIO_IDC_SQUARE = 1,
|
||||||
|
STD_VIDEO_H265_ASPECT_RATIO_IDC_12_11 = 2,
|
||||||
|
STD_VIDEO_H265_ASPECT_RATIO_IDC_10_11 = 3,
|
||||||
|
STD_VIDEO_H265_ASPECT_RATIO_IDC_16_11 = 4,
|
||||||
|
STD_VIDEO_H265_ASPECT_RATIO_IDC_40_33 = 5,
|
||||||
|
STD_VIDEO_H265_ASPECT_RATIO_IDC_24_11 = 6,
|
||||||
|
STD_VIDEO_H265_ASPECT_RATIO_IDC_20_11 = 7,
|
||||||
|
STD_VIDEO_H265_ASPECT_RATIO_IDC_32_11 = 8,
|
||||||
|
STD_VIDEO_H265_ASPECT_RATIO_IDC_80_33 = 9,
|
||||||
|
STD_VIDEO_H265_ASPECT_RATIO_IDC_18_11 = 10,
|
||||||
|
STD_VIDEO_H265_ASPECT_RATIO_IDC_15_11 = 11,
|
||||||
|
STD_VIDEO_H265_ASPECT_RATIO_IDC_64_33 = 12,
|
||||||
|
STD_VIDEO_H265_ASPECT_RATIO_IDC_160_99 = 13,
|
||||||
|
STD_VIDEO_H265_ASPECT_RATIO_IDC_4_3 = 14,
|
||||||
|
STD_VIDEO_H265_ASPECT_RATIO_IDC_3_2 = 15,
|
||||||
|
STD_VIDEO_H265_ASPECT_RATIO_IDC_2_1 = 16,
|
||||||
|
STD_VIDEO_H265_ASPECT_RATIO_IDC_EXTENDED_SAR = 255,
|
||||||
|
STD_VIDEO_H265_ASPECT_RATIO_IDC_INVALID = 0x7FFFFFFF,
|
||||||
|
STD_VIDEO_H265_ASPECT_RATIO_IDC_MAX_ENUM = 0x7FFFFFFF
|
||||||
|
} StdVideoH265AspectRatioIdc;
|
||||||
|
typedef struct StdVideoH265DecPicBufMgr {
|
||||||
|
uint32_t max_latency_increase_plus1[STD_VIDEO_H265_SUBLAYERS_LIST_SIZE];
|
||||||
|
uint8_t max_dec_pic_buffering_minus1[STD_VIDEO_H265_SUBLAYERS_LIST_SIZE];
|
||||||
|
uint8_t max_num_reorder_pics[STD_VIDEO_H265_SUBLAYERS_LIST_SIZE];
|
||||||
|
} StdVideoH265DecPicBufMgr;
|
||||||
|
|
||||||
|
typedef struct StdVideoH265SubLayerHrdParameters {
|
||||||
|
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;
|
||||||
|
} 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;
|
||||||
|
uint32_t fixed_pic_rate_within_cvs_flag : 8;
|
||||||
|
uint32_t low_delay_hrd_flag : 8;
|
||||||
|
} StdVideoH265HrdFlags;
|
||||||
|
|
||||||
|
typedef struct StdVideoH265HrdParameters {
|
||||||
|
StdVideoH265HrdFlags flags;
|
||||||
|
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_LIST_SIZE];
|
||||||
|
uint16_t elemental_duration_in_tc_minus1[STD_VIDEO_H265_SUBLAYERS_LIST_SIZE];
|
||||||
|
uint16_t reserved[3];
|
||||||
|
const StdVideoH265SubLayerHrdParameters* pSubLayerHrdParametersNal;
|
||||||
|
const StdVideoH265SubLayerHrdParameters* pSubLayerHrdParametersVcl;
|
||||||
|
} 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 StdVideoH265ProfileTierLevelFlags {
|
||||||
|
uint32_t general_tier_flag : 1;
|
||||||
|
uint32_t general_progressive_source_flag : 1;
|
||||||
|
uint32_t general_interlaced_source_flag : 1;
|
||||||
|
uint32_t general_non_packed_constraint_flag : 1;
|
||||||
|
uint32_t general_frame_only_constraint_flag : 1;
|
||||||
|
} StdVideoH265ProfileTierLevelFlags;
|
||||||
|
|
||||||
|
typedef struct StdVideoH265ProfileTierLevel {
|
||||||
|
StdVideoH265ProfileTierLevelFlags flags;
|
||||||
|
StdVideoH265ProfileIdc general_profile_idc;
|
||||||
|
StdVideoH265LevelIdc general_level_idc;
|
||||||
|
} StdVideoH265ProfileTierLevel;
|
||||||
|
|
||||||
|
typedef struct StdVideoH265VideoParameterSet {
|
||||||
|
StdVideoH265VpsFlags flags;
|
||||||
|
uint8_t vps_video_parameter_set_id;
|
||||||
|
uint8_t vps_max_sub_layers_minus1;
|
||||||
|
uint8_t reserved1;
|
||||||
|
uint8_t reserved2;
|
||||||
|
uint32_t vps_num_units_in_tick;
|
||||||
|
uint32_t vps_time_scale;
|
||||||
|
uint32_t vps_num_ticks_poc_diff_one_minus1;
|
||||||
|
uint32_t reserved3;
|
||||||
|
const StdVideoH265DecPicBufMgr* pDecPicBufMgr;
|
||||||
|
const StdVideoH265HrdParameters* pHrdParameters;
|
||||||
|
const StdVideoH265ProfileTierLevel* pProfileTierLevel;
|
||||||
|
} StdVideoH265VideoParameterSet;
|
||||||
|
|
||||||
|
typedef struct StdVideoH265ScalingLists {
|
||||||
|
uint8_t ScalingList4x4[STD_VIDEO_H265_SCALING_LIST_4X4_NUM_LISTS][STD_VIDEO_H265_SCALING_LIST_4X4_NUM_ELEMENTS];
|
||||||
|
uint8_t ScalingList8x8[STD_VIDEO_H265_SCALING_LIST_8X8_NUM_LISTS][STD_VIDEO_H265_SCALING_LIST_8X8_NUM_ELEMENTS];
|
||||||
|
uint8_t ScalingList16x16[STD_VIDEO_H265_SCALING_LIST_16X16_NUM_LISTS][STD_VIDEO_H265_SCALING_LIST_16X16_NUM_ELEMENTS];
|
||||||
|
uint8_t ScalingList32x32[STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS][STD_VIDEO_H265_SCALING_LIST_32X32_NUM_ELEMENTS];
|
||||||
|
uint8_t ScalingListDCCoef16x16[STD_VIDEO_H265_SCALING_LIST_16X16_NUM_LISTS];
|
||||||
|
uint8_t ScalingListDCCoef32x32[STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS];
|
||||||
|
} 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 {
|
||||||
|
StdVideoH265SpsVuiFlags flags;
|
||||||
|
StdVideoH265AspectRatioIdc 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;
|
||||||
|
uint8_t reserved1;
|
||||||
|
uint8_t reserved2;
|
||||||
|
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;
|
||||||
|
uint16_t min_spatial_segmentation_idc;
|
||||||
|
uint16_t reserved3;
|
||||||
|
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;
|
||||||
|
const StdVideoH265HrdParameters* pHrdParameters;
|
||||||
|
} 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 conformance_window_flag : 1;
|
||||||
|
uint32_t sps_sub_layer_ordering_info_present_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;
|
||||||
|
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;
|
||||||
|
uint32_t sps_scc_extension_flag : 1;
|
||||||
|
uint32_t sps_curr_pic_ref_enabled_flag : 1;
|
||||||
|
uint32_t palette_mode_enabled_flag : 1;
|
||||||
|
uint32_t sps_palette_predictor_initializers_present_flag : 1;
|
||||||
|
uint32_t intra_boundary_filtering_disabled_flag : 1;
|
||||||
|
} StdVideoH265SpsFlags;
|
||||||
|
|
||||||
|
typedef struct StdVideoH265ShortTermRefPicSetFlags {
|
||||||
|
uint32_t inter_ref_pic_set_prediction_flag : 1;
|
||||||
|
uint32_t delta_rps_sign : 1;
|
||||||
|
} StdVideoH265ShortTermRefPicSetFlags;
|
||||||
|
|
||||||
|
typedef struct StdVideoH265ShortTermRefPicSet {
|
||||||
|
StdVideoH265ShortTermRefPicSetFlags flags;
|
||||||
|
uint32_t delta_idx_minus1;
|
||||||
|
uint16_t use_delta_flag;
|
||||||
|
uint16_t abs_delta_rps_minus1;
|
||||||
|
uint16_t used_by_curr_pic_flag;
|
||||||
|
uint16_t used_by_curr_pic_s0_flag;
|
||||||
|
uint16_t used_by_curr_pic_s1_flag;
|
||||||
|
uint16_t reserved1;
|
||||||
|
uint8_t reserved2;
|
||||||
|
uint8_t reserved3;
|
||||||
|
uint8_t num_negative_pics;
|
||||||
|
uint8_t num_positive_pics;
|
||||||
|
uint16_t delta_poc_s0_minus1[STD_VIDEO_H265_MAX_DPB_SIZE];
|
||||||
|
uint16_t delta_poc_s1_minus1[STD_VIDEO_H265_MAX_DPB_SIZE];
|
||||||
|
} StdVideoH265ShortTermRefPicSet;
|
||||||
|
|
||||||
|
typedef struct StdVideoH265LongTermRefPicsSps {
|
||||||
|
uint32_t used_by_curr_pic_lt_sps_flag;
|
||||||
|
uint32_t lt_ref_pic_poc_lsb_sps[STD_VIDEO_H265_MAX_LONG_TERM_REF_PICS_SPS];
|
||||||
|
} StdVideoH265LongTermRefPicsSps;
|
||||||
|
|
||||||
|
typedef struct StdVideoH265SequenceParameterSet {
|
||||||
|
StdVideoH265SpsFlags flags;
|
||||||
|
StdVideoH265ChromaFormatIdc chroma_format_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 bit_depth_luma_minus8;
|
||||||
|
uint8_t bit_depth_chroma_minus8;
|
||||||
|
uint8_t log2_max_pic_order_cnt_lsb_minus4;
|
||||||
|
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;
|
||||||
|
uint8_t reserved1;
|
||||||
|
uint8_t reserved2;
|
||||||
|
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_initializers_minus1;
|
||||||
|
uint32_t conf_win_left_offset;
|
||||||
|
uint32_t conf_win_right_offset;
|
||||||
|
uint32_t conf_win_top_offset;
|
||||||
|
uint32_t conf_win_bottom_offset;
|
||||||
|
const StdVideoH265ProfileTierLevel* pProfileTierLevel;
|
||||||
|
const StdVideoH265DecPicBufMgr* pDecPicBufMgr;
|
||||||
|
const StdVideoH265ScalingLists* pScalingLists;
|
||||||
|
const StdVideoH265ShortTermRefPicSet* pShortTermRefPicSet;
|
||||||
|
const StdVideoH265LongTermRefPicsSps* pLongTermRefPicsSps;
|
||||||
|
const StdVideoH265SequenceParameterSetVui* pSequenceParameterSetVui;
|
||||||
|
const StdVideoH265PredictorPaletteEntries* pPredictorPaletteEntries;
|
||||||
|
} 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;
|
||||||
|
uint32_t cross_component_prediction_enabled_flag : 1;
|
||||||
|
uint32_t chroma_qp_offset_list_enabled_flag : 1;
|
||||||
|
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_initializers_present_flag : 1;
|
||||||
|
uint32_t monochrome_palette_flag : 1;
|
||||||
|
uint32_t pps_range_extension_flag : 1;
|
||||||
|
} StdVideoH265PpsFlags;
|
||||||
|
|
||||||
|
typedef struct StdVideoH265PictureParameterSet {
|
||||||
|
StdVideoH265PpsFlags flags;
|
||||||
|
uint8_t pps_pic_parameter_set_id;
|
||||||
|
uint8_t pps_seq_parameter_set_id;
|
||||||
|
uint8_t sps_video_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;
|
||||||
|
int8_t pps_beta_offset_div2;
|
||||||
|
int8_t pps_tc_offset_div2;
|
||||||
|
uint8_t log2_parallel_merge_level_minus2;
|
||||||
|
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;
|
||||||
|
int8_t pps_act_y_qp_offset_plus5;
|
||||||
|
int8_t pps_act_cb_qp_offset_plus5;
|
||||||
|
int8_t pps_act_cr_qp_offset_plus3;
|
||||||
|
uint8_t pps_num_palette_predictor_initializers;
|
||||||
|
uint8_t luma_bit_depth_entry_minus8;
|
||||||
|
uint8_t chroma_bit_depth_entry_minus8;
|
||||||
|
uint8_t num_tile_columns_minus1;
|
||||||
|
uint8_t num_tile_rows_minus1;
|
||||||
|
uint8_t reserved1;
|
||||||
|
uint8_t reserved2;
|
||||||
|
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];
|
||||||
|
uint32_t reserved3;
|
||||||
|
const StdVideoH265ScalingLists* pScalingLists;
|
||||||
|
const StdVideoH265PredictorPaletteEntries* pPredictorPaletteEntries;
|
||||||
|
} StdVideoH265PictureParameterSet;
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
|
@ -0,0 +1,65 @@
|
||||||
|
#ifndef VULKAN_VIDEO_CODEC_H265STD_DECODE_H_
|
||||||
|
#define VULKAN_VIDEO_CODEC_H265STD_DECODE_H_ 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
** Copyright 2015-2022 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 vulkan_video_codec_h265std_decode 1
|
||||||
|
// Vulkan 0.9 provisional Vulkan video H.265 decode std specification version number
|
||||||
|
#define VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_0_9_9 VK_MAKE_VIDEO_STD_VERSION(0, 9, 9) // Patch version should always be set to 0
|
||||||
|
|
||||||
|
#define STD_VIDEO_DECODE_H265_REF_PIC_SET_LIST_SIZE 8
|
||||||
|
#define VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_SPEC_VERSION VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_0_9_9
|
||||||
|
#define VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_EXTENSION_NAME "VK_STD_vulkan_video_codec_h265_decode"
|
||||||
|
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 {
|
||||||
|
StdVideoDecodeH265PictureInfoFlags flags;
|
||||||
|
uint8_t sps_video_parameter_set_id;
|
||||||
|
uint8_t pps_seq_parameter_set_id;
|
||||||
|
uint8_t pps_pic_parameter_set_id;
|
||||||
|
uint8_t NumDeltaPocsOfRefRpsIdx;
|
||||||
|
int32_t PicOrderCntVal;
|
||||||
|
uint16_t NumBitsForSTRefPicSetInSlice;
|
||||||
|
uint16_t reserved;
|
||||||
|
uint8_t RefPicSetStCurrBefore[STD_VIDEO_DECODE_H265_REF_PIC_SET_LIST_SIZE];
|
||||||
|
uint8_t RefPicSetStCurrAfter[STD_VIDEO_DECODE_H265_REF_PIC_SET_LIST_SIZE];
|
||||||
|
uint8_t RefPicSetLtCurr[STD_VIDEO_DECODE_H265_REF_PIC_SET_LIST_SIZE];
|
||||||
|
} StdVideoDecodeH265PictureInfo;
|
||||||
|
|
||||||
|
typedef struct StdVideoDecodeH265ReferenceInfoFlags {
|
||||||
|
uint32_t used_for_long_term_reference : 1;
|
||||||
|
uint32_t unused_for_reference : 1;
|
||||||
|
} StdVideoDecodeH265ReferenceInfoFlags;
|
||||||
|
|
||||||
|
typedef struct StdVideoDecodeH265ReferenceInfo {
|
||||||
|
StdVideoDecodeH265ReferenceInfoFlags flags;
|
||||||
|
int32_t PicOrderCntVal;
|
||||||
|
} StdVideoDecodeH265ReferenceInfo;
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
146
src/third_party/vulkan/include/vk_video/vulkan_video_codec_h265std_encode.h
vendored
Normal file
146
src/third_party/vulkan/include/vk_video/vulkan_video_codec_h265std_encode.h
vendored
Normal file
|
@ -0,0 +1,146 @@
|
||||||
|
#ifndef VULKAN_VIDEO_CODEC_H265STD_ENCODE_H_
|
||||||
|
#define VULKAN_VIDEO_CODEC_H265STD_ENCODE_H_ 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
** Copyright 2015-2022 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 vulkan_video_codec_h265std_encode 1
|
||||||
|
// Vulkan 0.9 provisional Vulkan video H.265 encode std specification version number
|
||||||
|
#define VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_API_VERSION_0_9_9 VK_MAKE_VIDEO_STD_VERSION(0, 9, 9) // Patch version should always be set to 0
|
||||||
|
|
||||||
|
#define VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_SPEC_VERSION VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_API_VERSION_0_9_9
|
||||||
|
#define VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_EXTENSION_NAME "VK_STD_vulkan_video_codec_h265_encode"
|
||||||
|
typedef struct StdVideoEncodeH265WeightTableFlags {
|
||||||
|
uint16_t luma_weight_l0_flag;
|
||||||
|
uint16_t chroma_weight_l0_flag;
|
||||||
|
uint16_t luma_weight_l1_flag;
|
||||||
|
uint16_t chroma_weight_l1_flag;
|
||||||
|
} StdVideoEncodeH265WeightTableFlags;
|
||||||
|
|
||||||
|
typedef struct StdVideoEncodeH265WeightTable {
|
||||||
|
StdVideoEncodeH265WeightTableFlags flags;
|
||||||
|
uint8_t luma_log2_weight_denom;
|
||||||
|
int8_t delta_chroma_log2_weight_denom;
|
||||||
|
int8_t delta_luma_weight_l0[STD_VIDEO_H265_MAX_NUM_LIST_REF];
|
||||||
|
int8_t luma_offset_l0[STD_VIDEO_H265_MAX_NUM_LIST_REF];
|
||||||
|
int8_t delta_chroma_weight_l0[STD_VIDEO_H265_MAX_NUM_LIST_REF][STD_VIDEO_H265_MAX_CHROMA_PLANES];
|
||||||
|
int8_t delta_chroma_offset_l0[STD_VIDEO_H265_MAX_NUM_LIST_REF][STD_VIDEO_H265_MAX_CHROMA_PLANES];
|
||||||
|
int8_t delta_luma_weight_l1[STD_VIDEO_H265_MAX_NUM_LIST_REF];
|
||||||
|
int8_t luma_offset_l1[STD_VIDEO_H265_MAX_NUM_LIST_REF];
|
||||||
|
int8_t delta_chroma_weight_l1[STD_VIDEO_H265_MAX_NUM_LIST_REF][STD_VIDEO_H265_MAX_CHROMA_PLANES];
|
||||||
|
int8_t delta_chroma_offset_l1[STD_VIDEO_H265_MAX_NUM_LIST_REF][STD_VIDEO_H265_MAX_CHROMA_PLANES];
|
||||||
|
} StdVideoEncodeH265WeightTable;
|
||||||
|
|
||||||
|
typedef struct StdVideoEncodeH265SliceSegmentHeaderFlags {
|
||||||
|
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 pic_output_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 cu_chroma_qp_offset_enabled_flag : 1;
|
||||||
|
uint32_t deblocking_filter_override_flag : 1;
|
||||||
|
uint32_t slice_deblocking_filter_disabled_flag : 1;
|
||||||
|
uint32_t collocated_from_l0_flag : 1;
|
||||||
|
uint32_t slice_loop_filter_across_slices_enabled_flag : 1;
|
||||||
|
} StdVideoEncodeH265SliceSegmentHeaderFlags;
|
||||||
|
|
||||||
|
typedef struct StdVideoEncodeH265SliceSegmentLongTermRefPics {
|
||||||
|
uint8_t num_long_term_sps;
|
||||||
|
uint8_t num_long_term_pics;
|
||||||
|
uint8_t lt_idx_sps[STD_VIDEO_H265_MAX_LONG_TERM_REF_PICS_SPS];
|
||||||
|
uint8_t poc_lsb_lt[STD_VIDEO_H265_MAX_LONG_TERM_PICS];
|
||||||
|
uint16_t used_by_curr_pic_lt_flag;
|
||||||
|
uint8_t delta_poc_msb_present_flag[STD_VIDEO_H265_MAX_DELTA_POC];
|
||||||
|
uint8_t delta_poc_msb_cycle_lt[STD_VIDEO_H265_MAX_DELTA_POC];
|
||||||
|
} StdVideoEncodeH265SliceSegmentLongTermRefPics;
|
||||||
|
|
||||||
|
typedef struct StdVideoEncodeH265SliceSegmentHeader {
|
||||||
|
StdVideoEncodeH265SliceSegmentHeaderFlags flags;
|
||||||
|
StdVideoH265SliceType slice_type;
|
||||||
|
uint32_t slice_segment_address;
|
||||||
|
uint8_t short_term_ref_pic_set_idx;
|
||||||
|
uint8_t collocated_ref_idx;
|
||||||
|
uint8_t num_ref_idx_l0_active_minus1;
|
||||||
|
uint8_t num_ref_idx_l1_active_minus1;
|
||||||
|
uint8_t MaxNumMergeCand;
|
||||||
|
int8_t slice_cb_qp_offset;
|
||||||
|
int8_t slice_cr_qp_offset;
|
||||||
|
int8_t slice_beta_offset_div2;
|
||||||
|
int8_t slice_tc_offset_div2;
|
||||||
|
int8_t slice_act_y_qp_offset;
|
||||||
|
int8_t slice_act_cb_qp_offset;
|
||||||
|
int8_t slice_act_cr_qp_offset;
|
||||||
|
const StdVideoH265ShortTermRefPicSet* pShortTermRefPicSet;
|
||||||
|
const StdVideoEncodeH265SliceSegmentLongTermRefPics* pLongTermRefPics;
|
||||||
|
const StdVideoEncodeH265WeightTable* pWeightTable;
|
||||||
|
} StdVideoEncodeH265SliceSegmentHeader;
|
||||||
|
|
||||||
|
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;
|
||||||
|
const uint8_t* pReferenceList0Modifications;
|
||||||
|
uint8_t referenceList1ModificationsCount;
|
||||||
|
const uint8_t* pReferenceList1Modifications;
|
||||||
|
} StdVideoEncodeH265ReferenceModifications;
|
||||||
|
|
||||||
|
typedef struct StdVideoEncodeH265PictureInfoFlags {
|
||||||
|
uint32_t is_reference_flag : 1;
|
||||||
|
uint32_t IrapPicFlag : 1;
|
||||||
|
uint32_t long_term_flag : 1;
|
||||||
|
uint32_t discardable_flag : 1;
|
||||||
|
uint32_t cross_layer_bla_flag : 1;
|
||||||
|
} StdVideoEncodeH265PictureInfoFlags;
|
||||||
|
|
||||||
|
typedef struct StdVideoEncodeH265PictureInfo {
|
||||||
|
StdVideoEncodeH265PictureInfoFlags flags;
|
||||||
|
StdVideoH265PictureType PictureType;
|
||||||
|
uint8_t sps_video_parameter_set_id;
|
||||||
|
uint8_t pps_seq_parameter_set_id;
|
||||||
|
uint8_t pps_pic_parameter_set_id;
|
||||||
|
int32_t PicOrderCntVal;
|
||||||
|
uint8_t TemporalId;
|
||||||
|
} StdVideoEncodeH265PictureInfo;
|
||||||
|
|
||||||
|
typedef struct StdVideoEncodeH265ReferenceInfoFlags {
|
||||||
|
uint32_t used_for_long_term_reference : 1;
|
||||||
|
uint32_t unused_for_reference : 1;
|
||||||
|
} StdVideoEncodeH265ReferenceInfoFlags;
|
||||||
|
|
||||||
|
typedef struct StdVideoEncodeH265ReferenceInfo {
|
||||||
|
StdVideoEncodeH265ReferenceInfoFlags flags;
|
||||||
|
int32_t PicOrderCntVal;
|
||||||
|
uint8_t TemporalId;
|
||||||
|
} StdVideoEncodeH265ReferenceInfo;
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
|
@ -0,0 +1,31 @@
|
||||||
|
#ifndef VULKAN_VIDEO_CODECS_COMMON_H_
|
||||||
|
#define VULKAN_VIDEO_CODECS_COMMON_H_ 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
** Copyright 2015-2022 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 vulkan_video_codecs_common 1
|
||||||
|
#define VK_MAKE_VIDEO_STD_VERSION(major, minor, patch) \
|
||||||
|
((((uint32_t)(major)) << 22) | (((uint32_t)(minor)) << 12) | ((uint32_t)(patch)))
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
|
@ -33,7 +33,7 @@
|
||||||
// Version 2 - Add Loader/ICD Interface version negotiation
|
// Version 2 - Add Loader/ICD Interface version negotiation
|
||||||
// via vk_icdNegotiateLoaderICDInterfaceVersion.
|
// via vk_icdNegotiateLoaderICDInterfaceVersion.
|
||||||
// Version 3 - Add ICD creation/destruction of KHR_surface objects.
|
// Version 3 - Add ICD creation/destruction of KHR_surface objects.
|
||||||
// Version 4 - Add unknown physical device extension qyering via
|
// Version 4 - Add unknown physical device extension querying via
|
||||||
// vk_icdGetPhysicalDeviceProcAddr.
|
// vk_icdGetPhysicalDeviceProcAddr.
|
||||||
// Version 5 - Tells ICDs that the loader is now paying attention to the
|
// Version 5 - Tells ICDs that the loader is now paying attention to the
|
||||||
// application version of Vulkan passed into the ApplicationInfo
|
// application version of Vulkan passed into the ApplicationInfo
|
||||||
|
@ -122,6 +122,7 @@ typedef enum {
|
||||||
VK_ICD_WSI_PLATFORM_DIRECTFB,
|
VK_ICD_WSI_PLATFORM_DIRECTFB,
|
||||||
VK_ICD_WSI_PLATFORM_VI,
|
VK_ICD_WSI_PLATFORM_VI,
|
||||||
VK_ICD_WSI_PLATFORM_GGP,
|
VK_ICD_WSI_PLATFORM_GGP,
|
||||||
|
VK_ICD_WSI_PLATFORM_SCREEN,
|
||||||
} VkIcdWsiPlatform;
|
} VkIcdWsiPlatform;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
@ -233,4 +234,12 @@ typedef struct {
|
||||||
} VkIcdSurfaceVi;
|
} VkIcdSurfaceVi;
|
||||||
#endif // VK_USE_PLATFORM_VI_NN
|
#endif // VK_USE_PLATFORM_VI_NN
|
||||||
|
|
||||||
|
#ifdef VK_USE_PLATFORM_SCREEN_QNX
|
||||||
|
typedef struct {
|
||||||
|
VkIcdSurfaceBase base;
|
||||||
|
struct _screen_context *context;
|
||||||
|
struct _screen_window *window;
|
||||||
|
} VkIcdSurfaceScreen;
|
||||||
|
#endif // VK_USE_PLATFORM_SCREEN_QNX
|
||||||
|
|
||||||
#endif // VKICD_H
|
#endif // VKICD_H
|
|
@ -2,7 +2,7 @@
|
||||||
// File: vk_platform.h
|
// File: vk_platform.h
|
||||||
//
|
//
|
||||||
/*
|
/*
|
||||||
** Copyright (c) 2014-2020 The Khronos Group Inc.
|
** Copyright 2014-2022 The Khronos Group Inc.
|
||||||
**
|
**
|
||||||
** SPDX-License-Identifier: Apache-2.0
|
** SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
|
@ -42,7 +42,7 @@ extern "C"
|
||||||
#define VKAPI_CALL __stdcall
|
#define VKAPI_CALL __stdcall
|
||||||
#define VKAPI_PTR VKAPI_CALL
|
#define VKAPI_PTR VKAPI_CALL
|
||||||
#elif defined(__ANDROID__) && defined(__ARM_ARCH) && __ARM_ARCH < 7
|
#elif defined(__ANDROID__) && defined(__ARM_ARCH) && __ARM_ARCH < 7
|
||||||
#error "Vulkan isn't supported for the 'armeabi' NDK ABI"
|
#error "Vulkan is not supported for the 'armeabi' NDK ABI"
|
||||||
#elif defined(__ANDROID__) && defined(__ARM_ARCH) && __ARM_ARCH >= 7 && defined(__ARM_32BIT_STATE)
|
#elif defined(__ANDROID__) && defined(__ARM_ARCH) && __ARM_ARCH >= 7 && defined(__ARM_32BIT_STATE)
|
||||||
// On Android 32-bit ARM targets, Vulkan functions use the "hardfloat"
|
// On Android 32-bit ARM targets, Vulkan functions use the "hardfloat"
|
||||||
// calling convention, i.e. float parameters are passed in registers. This
|
// calling convention, i.e. float parameters are passed in registers. This
|
||||||
|
@ -58,7 +58,9 @@ extern "C"
|
||||||
#define VKAPI_PTR
|
#define VKAPI_PTR
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if !defined(VK_NO_STDDEF_H)
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
|
#endif // !defined(VK_NO_STDDEF_H)
|
||||||
|
|
||||||
#if !defined(VK_NO_STDINT_H)
|
#if !defined(VK_NO_STDINT_H)
|
||||||
#if defined(_MSC_VER) && (_MSC_VER < 1600)
|
#if defined(_MSC_VER) && (_MSC_VER < 1600)
|
|
@ -2,7 +2,7 @@
|
||||||
#define VULKAN_H_ 1
|
#define VULKAN_H_ 1
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Copyright (c) 2015-2020 The Khronos Group Inc.
|
** Copyright 2015-2022 The Khronos Group Inc.
|
||||||
**
|
**
|
||||||
** SPDX-License-Identifier: Apache-2.0
|
** SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
|
@ -38,7 +38,6 @@
|
||||||
|
|
||||||
|
|
||||||
#ifdef VK_USE_PLATFORM_WAYLAND_KHR
|
#ifdef VK_USE_PLATFORM_WAYLAND_KHR
|
||||||
#include <wayland-client.h>
|
|
||||||
#include "vulkan_wayland.h"
|
#include "vulkan_wayland.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -80,6 +79,11 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef VK_USE_PLATFORM_SCREEN_QNX
|
||||||
|
#include <screen/screen.h>
|
||||||
|
#include "vulkan_screen.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef VK_ENABLE_BETA_EXTENSIONS
|
#ifdef VK_ENABLE_BETA_EXTENSIONS
|
||||||
#include "vulkan_beta.h"
|
#include "vulkan_beta.h"
|
||||||
#endif
|
#endif
|
File diff suppressed because it is too large
Load Diff
|
@ -2,7 +2,7 @@
|
||||||
#define VULKAN_ANDROID_H_ 1
|
#define VULKAN_ANDROID_H_ 1
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Copyright (c) 2015-2020 The Khronos Group Inc.
|
** Copyright 2015-2022 The Khronos Group Inc.
|
||||||
**
|
**
|
||||||
** SPDX-License-Identifier: Apache-2.0
|
** SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
|
@ -44,7 +44,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateAndroidSurfaceKHR(
|
||||||
|
|
||||||
#define VK_ANDROID_external_memory_android_hardware_buffer 1
|
#define VK_ANDROID_external_memory_android_hardware_buffer 1
|
||||||
struct AHardwareBuffer;
|
struct AHardwareBuffer;
|
||||||
#define VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION 3
|
#define VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION 5
|
||||||
#define VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME "VK_ANDROID_external_memory_android_hardware_buffer"
|
#define VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME "VK_ANDROID_external_memory_android_hardware_buffer"
|
||||||
typedef struct VkAndroidHardwareBufferUsageANDROID {
|
typedef struct VkAndroidHardwareBufferUsageANDROID {
|
||||||
VkStructureType sType;
|
VkStructureType sType;
|
||||||
|
@ -90,6 +90,19 @@ typedef struct VkExternalFormatANDROID {
|
||||||
uint64_t externalFormat;
|
uint64_t externalFormat;
|
||||||
} VkExternalFormatANDROID;
|
} VkExternalFormatANDROID;
|
||||||
|
|
||||||
|
typedef struct VkAndroidHardwareBufferFormatProperties2ANDROID {
|
||||||
|
VkStructureType sType;
|
||||||
|
void* pNext;
|
||||||
|
VkFormat format;
|
||||||
|
uint64_t externalFormat;
|
||||||
|
VkFormatFeatureFlags2 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_vkGetAndroidHardwareBufferPropertiesANDROID)(VkDevice device, const struct AHardwareBuffer* buffer, VkAndroidHardwareBufferPropertiesANDROID* pProperties);
|
||||||
typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryAndroidHardwareBufferANDROID)(VkDevice device, const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo, struct AHardwareBuffer** pBuffer);
|
typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryAndroidHardwareBufferANDROID)(VkDevice device, const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo, struct AHardwareBuffer** pBuffer);
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -2,7 +2,7 @@
|
||||||
#define VULKAN_DIRECTFB_H_ 1
|
#define VULKAN_DIRECTFB_H_ 1
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Copyright (c) 2015-2020 The Khronos Group Inc.
|
** Copyright 2015-2022 The Khronos Group Inc.
|
||||||
**
|
**
|
||||||
** SPDX-License-Identifier: Apache-2.0
|
** SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,258 @@
|
||||||
|
#ifndef VULKAN_FUCHSIA_H_
|
||||||
|
#define VULKAN_FUCHSIA_H_ 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
** Copyright 2015-2022 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
|
File diff suppressed because it is too large
Load Diff
|
@ -2,7 +2,7 @@
|
||||||
#define VULKAN_GGP_H_ 1
|
#define VULKAN_GGP_H_ 1
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Copyright (c) 2015-2020 The Khronos Group Inc.
|
** Copyright 2015-2022 The Khronos Group Inc.
|
||||||
**
|
**
|
||||||
** SPDX-License-Identifier: Apache-2.0
|
** SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -2,7 +2,7 @@
|
||||||
#define VULKAN_IOS_H_ 1
|
#define VULKAN_IOS_H_ 1
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Copyright (c) 2015-2020 The Khronos Group Inc.
|
** Copyright 2015-2022 The Khronos Group Inc.
|
||||||
**
|
**
|
||||||
** SPDX-License-Identifier: Apache-2.0
|
** SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
|
@ -2,7 +2,7 @@
|
||||||
#define VULKAN_MACOS_H_ 1
|
#define VULKAN_MACOS_H_ 1
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Copyright (c) 2015-2020 The Khronos Group Inc.
|
** Copyright 2015-2022 The Khronos Group Inc.
|
||||||
**
|
**
|
||||||
** SPDX-License-Identifier: Apache-2.0
|
** SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
|
@ -0,0 +1,193 @@
|
||||||
|
#ifndef VULKAN_METAL_H_
|
||||||
|
#define VULKAN_METAL_H_ 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
** Copyright 2015-2022 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
|
||||||
|
|
||||||
|
|
||||||
|
#define VK_EXT_metal_objects 1
|
||||||
|
#ifdef __OBJC__
|
||||||
|
@protocol MTLDevice;
|
||||||
|
typedef id<MTLDevice> MTLDevice_id;
|
||||||
|
#else
|
||||||
|
typedef void* MTLDevice_id;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __OBJC__
|
||||||
|
@protocol MTLCommandQueue;
|
||||||
|
typedef id<MTLCommandQueue> MTLCommandQueue_id;
|
||||||
|
#else
|
||||||
|
typedef void* MTLCommandQueue_id;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __OBJC__
|
||||||
|
@protocol MTLBuffer;
|
||||||
|
typedef id<MTLBuffer> MTLBuffer_id;
|
||||||
|
#else
|
||||||
|
typedef void* MTLBuffer_id;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __OBJC__
|
||||||
|
@protocol MTLTexture;
|
||||||
|
typedef id<MTLTexture> MTLTexture_id;
|
||||||
|
#else
|
||||||
|
typedef void* MTLTexture_id;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef struct __IOSurface* IOSurfaceRef;
|
||||||
|
#ifdef __OBJC__
|
||||||
|
@protocol MTLSharedEvent;
|
||||||
|
typedef id<MTLSharedEvent> MTLSharedEvent_id;
|
||||||
|
#else
|
||||||
|
typedef void* MTLSharedEvent_id;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define VK_EXT_METAL_OBJECTS_SPEC_VERSION 1
|
||||||
|
#define VK_EXT_METAL_OBJECTS_EXTENSION_NAME "VK_EXT_metal_objects"
|
||||||
|
|
||||||
|
typedef enum VkExportMetalObjectTypeFlagBitsEXT {
|
||||||
|
VK_EXPORT_METAL_OBJECT_TYPE_METAL_DEVICE_BIT_EXT = 0x00000001,
|
||||||
|
VK_EXPORT_METAL_OBJECT_TYPE_METAL_COMMAND_QUEUE_BIT_EXT = 0x00000002,
|
||||||
|
VK_EXPORT_METAL_OBJECT_TYPE_METAL_BUFFER_BIT_EXT = 0x00000004,
|
||||||
|
VK_EXPORT_METAL_OBJECT_TYPE_METAL_TEXTURE_BIT_EXT = 0x00000008,
|
||||||
|
VK_EXPORT_METAL_OBJECT_TYPE_METAL_IOSURFACE_BIT_EXT = 0x00000010,
|
||||||
|
VK_EXPORT_METAL_OBJECT_TYPE_METAL_SHARED_EVENT_BIT_EXT = 0x00000020,
|
||||||
|
VK_EXPORT_METAL_OBJECT_TYPE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
|
||||||
|
} VkExportMetalObjectTypeFlagBitsEXT;
|
||||||
|
typedef VkFlags VkExportMetalObjectTypeFlagsEXT;
|
||||||
|
typedef struct VkExportMetalObjectCreateInfoEXT {
|
||||||
|
VkStructureType sType;
|
||||||
|
const void* pNext;
|
||||||
|
VkExportMetalObjectTypeFlagBitsEXT exportObjectType;
|
||||||
|
} VkExportMetalObjectCreateInfoEXT;
|
||||||
|
|
||||||
|
typedef struct VkExportMetalObjectsInfoEXT {
|
||||||
|
VkStructureType sType;
|
||||||
|
const void* pNext;
|
||||||
|
} VkExportMetalObjectsInfoEXT;
|
||||||
|
|
||||||
|
typedef struct VkExportMetalDeviceInfoEXT {
|
||||||
|
VkStructureType sType;
|
||||||
|
const void* pNext;
|
||||||
|
MTLDevice_id mtlDevice;
|
||||||
|
} VkExportMetalDeviceInfoEXT;
|
||||||
|
|
||||||
|
typedef struct VkExportMetalCommandQueueInfoEXT {
|
||||||
|
VkStructureType sType;
|
||||||
|
const void* pNext;
|
||||||
|
VkQueue queue;
|
||||||
|
MTLCommandQueue_id mtlCommandQueue;
|
||||||
|
} VkExportMetalCommandQueueInfoEXT;
|
||||||
|
|
||||||
|
typedef struct VkExportMetalBufferInfoEXT {
|
||||||
|
VkStructureType sType;
|
||||||
|
const void* pNext;
|
||||||
|
VkDeviceMemory memory;
|
||||||
|
MTLBuffer_id mtlBuffer;
|
||||||
|
} VkExportMetalBufferInfoEXT;
|
||||||
|
|
||||||
|
typedef struct VkImportMetalBufferInfoEXT {
|
||||||
|
VkStructureType sType;
|
||||||
|
const void* pNext;
|
||||||
|
MTLBuffer_id mtlBuffer;
|
||||||
|
} VkImportMetalBufferInfoEXT;
|
||||||
|
|
||||||
|
typedef struct VkExportMetalTextureInfoEXT {
|
||||||
|
VkStructureType sType;
|
||||||
|
const void* pNext;
|
||||||
|
VkImage image;
|
||||||
|
VkImageView imageView;
|
||||||
|
VkBufferView bufferView;
|
||||||
|
VkImageAspectFlagBits plane;
|
||||||
|
MTLTexture_id mtlTexture;
|
||||||
|
} VkExportMetalTextureInfoEXT;
|
||||||
|
|
||||||
|
typedef struct VkImportMetalTextureInfoEXT {
|
||||||
|
VkStructureType sType;
|
||||||
|
const void* pNext;
|
||||||
|
VkImageAspectFlagBits plane;
|
||||||
|
MTLTexture_id mtlTexture;
|
||||||
|
} VkImportMetalTextureInfoEXT;
|
||||||
|
|
||||||
|
typedef struct VkExportMetalIOSurfaceInfoEXT {
|
||||||
|
VkStructureType sType;
|
||||||
|
const void* pNext;
|
||||||
|
VkImage image;
|
||||||
|
IOSurfaceRef ioSurface;
|
||||||
|
} VkExportMetalIOSurfaceInfoEXT;
|
||||||
|
|
||||||
|
typedef struct VkImportMetalIOSurfaceInfoEXT {
|
||||||
|
VkStructureType sType;
|
||||||
|
const void* pNext;
|
||||||
|
IOSurfaceRef ioSurface;
|
||||||
|
} VkImportMetalIOSurfaceInfoEXT;
|
||||||
|
|
||||||
|
typedef struct VkExportMetalSharedEventInfoEXT {
|
||||||
|
VkStructureType sType;
|
||||||
|
const void* pNext;
|
||||||
|
VkSemaphore semaphore;
|
||||||
|
VkEvent event;
|
||||||
|
MTLSharedEvent_id mtlSharedEvent;
|
||||||
|
} VkExportMetalSharedEventInfoEXT;
|
||||||
|
|
||||||
|
typedef struct VkImportMetalSharedEventInfoEXT {
|
||||||
|
VkStructureType sType;
|
||||||
|
const void* pNext;
|
||||||
|
MTLSharedEvent_id mtlSharedEvent;
|
||||||
|
} VkImportMetalSharedEventInfoEXT;
|
||||||
|
|
||||||
|
typedef void (VKAPI_PTR *PFN_vkExportMetalObjectsEXT)(VkDevice device, VkExportMetalObjectsInfoEXT* pMetalObjectsInfo);
|
||||||
|
|
||||||
|
#ifndef VK_NO_PROTOTYPES
|
||||||
|
VKAPI_ATTR void VKAPI_CALL vkExportMetalObjectsEXT(
|
||||||
|
VkDevice device,
|
||||||
|
VkExportMetalObjectsInfoEXT* pMetalObjectsInfo);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,54 @@
|
||||||
|
#ifndef VULKAN_SCREEN_H_
|
||||||
|
#define VULKAN_SCREEN_H_ 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
** Copyright 2015-2022 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
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -2,7 +2,7 @@
|
||||||
#define VULKAN_VI_H_ 1
|
#define VULKAN_VI_H_ 1
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Copyright (c) 2015-2020 The Khronos Group Inc.
|
** Copyright 2015-2022 The Khronos Group Inc.
|
||||||
**
|
**
|
||||||
** SPDX-License-Identifier: Apache-2.0
|
** SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
|
@ -2,7 +2,7 @@
|
||||||
#define VULKAN_WAYLAND_H_ 1
|
#define VULKAN_WAYLAND_H_ 1
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Copyright (c) 2015-2020 The Khronos Group Inc.
|
** Copyright 2015-2022 The Khronos Group Inc.
|
||||||
**
|
**
|
||||||
** SPDX-License-Identifier: Apache-2.0
|
** SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
|
@ -2,7 +2,7 @@
|
||||||
#define VULKAN_WIN32_H_ 1
|
#define VULKAN_WIN32_H_ 1
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Copyright (c) 2015-2020 The Khronos Group Inc.
|
** Copyright 2015-2022 The Khronos Group Inc.
|
||||||
**
|
**
|
||||||
** SPDX-License-Identifier: Apache-2.0
|
** SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
|
@ -2,7 +2,7 @@
|
||||||
#define VULKAN_XCB_H_ 1
|
#define VULKAN_XCB_H_ 1
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Copyright (c) 2015-2020 The Khronos Group Inc.
|
** Copyright 2015-2022 The Khronos Group Inc.
|
||||||
**
|
**
|
||||||
** SPDX-License-Identifier: Apache-2.0
|
** SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
|
@ -2,7 +2,7 @@
|
||||||
#define VULKAN_XLIB_H_ 1
|
#define VULKAN_XLIB_H_ 1
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Copyright (c) 2015-2020 The Khronos Group Inc.
|
** Copyright 2015-2022 The Khronos Group Inc.
|
||||||
**
|
**
|
||||||
** SPDX-License-Identifier: Apache-2.0
|
** SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
|
@ -2,7 +2,7 @@
|
||||||
#define VULKAN_XLIB_XRANDR_H_ 1
|
#define VULKAN_XLIB_XRANDR_H_ 1
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Copyright (c) 2015-2020 The Khronos Group Inc.
|
** Copyright 2015-2022 The Khronos Group Inc.
|
||||||
**
|
**
|
||||||
** SPDX-License-Identifier: Apache-2.0
|
** SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
|
@ -1,80 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2019 The Khronos Group Inc.
|
|
||||||
* Copyright (c) 2019 Valve Corporation
|
|
||||||
* Copyright (c) 2019 LunarG, 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.
|
|
||||||
*
|
|
||||||
* Author: Lenny Komow <lenny@lunarg.com>
|
|
||||||
*/
|
|
||||||
|
|
||||||
typedef struct LoaderEnumAdapters2 {
|
|
||||||
ULONG adapter_count;
|
|
||||||
struct {
|
|
||||||
UINT handle;
|
|
||||||
LUID luid;
|
|
||||||
ULONG source_count;
|
|
||||||
BOOL present_move_regions_preferred;
|
|
||||||
} * adapters;
|
|
||||||
} LoaderEnumAdapters2;
|
|
||||||
|
|
||||||
typedef _Check_return_ NTSTATUS(APIENTRY *PFN_LoaderEnumAdapters2)(const LoaderEnumAdapters2 *);
|
|
||||||
|
|
||||||
typedef enum AdapterInfoType {
|
|
||||||
LOADER_QUERY_TYPE_REGISTRY = 48,
|
|
||||||
} AdapterInfoType;
|
|
||||||
|
|
||||||
typedef struct LoaderQueryAdapterInfo {
|
|
||||||
UINT handle;
|
|
||||||
AdapterInfoType type;
|
|
||||||
VOID *private_data;
|
|
||||||
UINT private_data_size;
|
|
||||||
} LoaderQueryAdapterInfo;
|
|
||||||
|
|
||||||
typedef _Check_return_ NTSTATUS(APIENTRY *PFN_LoaderQueryAdapterInfo)(const LoaderQueryAdapterInfo *);
|
|
||||||
|
|
||||||
typedef enum LoaderQueryRegistryType {
|
|
||||||
LOADER_QUERY_REGISTRY_ADAPTER_KEY = 1,
|
|
||||||
} LoaderQueryRegistryType;
|
|
||||||
|
|
||||||
typedef enum LoaderQueryRegistryStatus {
|
|
||||||
LOADER_QUERY_REGISTRY_STATUS_SUCCESS = 0,
|
|
||||||
LOADER_QUERY_REGISTRY_STATUS_BUFFER_OVERFLOW = 1,
|
|
||||||
} LoaderQueryRegistryStatus;
|
|
||||||
|
|
||||||
typedef struct LoaderQueryRegistryFlags {
|
|
||||||
union {
|
|
||||||
struct {
|
|
||||||
UINT translate_path : 1;
|
|
||||||
UINT mutable_value : 1;
|
|
||||||
UINT reserved : 30;
|
|
||||||
};
|
|
||||||
UINT value;
|
|
||||||
};
|
|
||||||
} LoaderQueryRegistryFlags;
|
|
||||||
|
|
||||||
typedef struct LoaderQueryRegistryInfo {
|
|
||||||
LoaderQueryRegistryType query_type;
|
|
||||||
LoaderQueryRegistryFlags query_flags;
|
|
||||||
WCHAR value_name[MAX_PATH];
|
|
||||||
ULONG value_type;
|
|
||||||
ULONG physical_adapter_index;
|
|
||||||
ULONG output_value_size;
|
|
||||||
LoaderQueryRegistryStatus status;
|
|
||||||
union {
|
|
||||||
DWORD output_dword;
|
|
||||||
UINT64 output_qword;
|
|
||||||
WCHAR output_string[1];
|
|
||||||
BYTE output_binary[1];
|
|
||||||
};
|
|
||||||
} LoaderQueryRegistryInfo;
|
|
|
@ -1,94 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2017-2018 The Khronos Group Inc.
|
|
||||||
* Copyright (c) 2017-2018 Valve Corporation
|
|
||||||
* Copyright (c) 2017-2018 LunarG, 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.
|
|
||||||
*
|
|
||||||
* Author: Lenny Komow <lenny@lunarg.com>
|
|
||||||
*/
|
|
||||||
|
|
||||||
// This code generates an assembly file which provides offsets to get struct members from assembly code.
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include "loader.h"
|
|
||||||
|
|
||||||
#if !defined(_MSC_VER) || (_MSC_VER >= 1900)
|
|
||||||
#define SIZE_T_FMT "%-8zu"
|
|
||||||
#else
|
|
||||||
#define SIZE_T_FMT "%-8lu"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
struct ValueInfo
|
|
||||||
{
|
|
||||||
const char *name;
|
|
||||||
size_t value;
|
|
||||||
const char *comment;
|
|
||||||
};
|
|
||||||
|
|
||||||
int main(int argc, char **argv) {
|
|
||||||
const char *assembler = NULL;
|
|
||||||
for (int i = 0; i < argc; ++i) {
|
|
||||||
if (!strcmp(argv[i], "MASM")) {
|
|
||||||
assembler = "MASM";
|
|
||||||
} else if (!strcmp(argv[i], "GAS")) {
|
|
||||||
assembler = "GAS";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (assembler == NULL) {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
struct ValueInfo values[] = {
|
|
||||||
{ .name = "VK_DEBUG_REPORT_ERROR_BIT_EXT", .value = (size_t) VK_DEBUG_REPORT_ERROR_BIT_EXT,
|
|
||||||
.comment = "The numerical value of the enum value 'VK_DEBUG_REPORT_ERROR_BIT_EXT'" },
|
|
||||||
{ .name = "PTR_SIZE", .value = sizeof(void*),
|
|
||||||
.comment = "The size of a pointer" },
|
|
||||||
{ .name = "HASH_SIZE", .value = sizeof(struct loader_dispatch_hash_entry),
|
|
||||||
.comment = "The size of a 'loader_dispatch_hash_entry' struct" },
|
|
||||||
{ .name = "HASH_OFFSET_INSTANCE", .value = offsetof(struct loader_instance, phys_dev_ext_disp_hash),
|
|
||||||
.comment = "The offset of 'phys_dev_ext_disp_hash' within a 'loader_instance' struct" },
|
|
||||||
{ .name = "PHYS_DEV_OFFSET_INST_DISPATCH", .value = offsetof(struct loader_instance_dispatch_table, phys_dev_ext),
|
|
||||||
.comment = "The offset of 'phys_dev_ext' within in 'loader_instance_dispatch_table' struct" },
|
|
||||||
{ .name = "PHYS_DEV_OFFSET_PHYS_DEV_TRAMP", .value = offsetof(struct loader_physical_device_tramp, phys_dev),
|
|
||||||
.comment = "The offset of 'phys_dev' within a 'loader_physical_device_tramp' struct" },
|
|
||||||
{ .name = "ICD_TERM_OFFSET_PHYS_DEV_TERM", .value = offsetof(struct loader_physical_device_term, this_icd_term),
|
|
||||||
.comment = "The offset of 'this_icd_term' within a 'loader_physical_device_term' struct" },
|
|
||||||
{ .name = "PHYS_DEV_OFFSET_PHYS_DEV_TERM", .value = offsetof(struct loader_physical_device_term, phys_dev),
|
|
||||||
.comment = "The offset of 'phys_dev' within a 'loader_physical_device_term' struct" },
|
|
||||||
{ .name = "INSTANCE_OFFSET_ICD_TERM", .value = offsetof(struct loader_icd_term, this_instance),
|
|
||||||
.comment = "The offset of 'this_instance' within a 'loader_icd_term' struct" },
|
|
||||||
{ .name = "DISPATCH_OFFSET_ICD_TERM", .value = offsetof(struct loader_icd_term, phys_dev_ext),
|
|
||||||
.comment = "The offset of 'phys_dev_ext' within a 'loader_icd_term' struct" },
|
|
||||||
{ .name = "FUNC_NAME_OFFSET_HASH", .value = offsetof(struct loader_dispatch_hash_entry, func_name),
|
|
||||||
.comment = "The offset of 'func_name' within a 'loader_dispatch_hash_entry' struct" },
|
|
||||||
{ .name = "EXT_OFFSET_DEVICE_DISPATCH", .value = offsetof(struct loader_dev_dispatch_table, ext_dispatch),
|
|
||||||
.comment = "The offset of 'ext_dispatch' within a 'loader_dev_dispatch_table' struct" },
|
|
||||||
};
|
|
||||||
|
|
||||||
FILE *file = fopen("gen_defines.asm", "w");
|
|
||||||
fprintf(file, "\n");
|
|
||||||
if (!strcmp(assembler, "MASM")) {
|
|
||||||
for (size_t i = 0; i < sizeof(values)/sizeof(values[0]); ++i) {
|
|
||||||
fprintf(file, "%-32s equ " SIZE_T_FMT "; %s\n", values[i].name, values[i].value, values[i].comment);
|
|
||||||
}
|
|
||||||
} else if (!strcmp(assembler, "GAS")) {
|
|
||||||
#ifdef __x86_64__
|
|
||||||
fprintf(file, ".set X86_64, 1\n");
|
|
||||||
#endif // __x86_64__
|
|
||||||
for (size_t i = 0; i < sizeof(values)/sizeof(values[0]); ++i) {
|
|
||||||
fprintf(file, ".set %-32s, " SIZE_T_FMT "# %s\n", values[i].name, values[i].value, values[i].comment);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return fclose(file);
|
|
||||||
}
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,174 +0,0 @@
|
||||||
/*
|
|
||||||
Copyright (c) 2009 Dave Gamble
|
|
||||||
Copyright (c) 2015-2016 The Khronos Group Inc.
|
|
||||||
Copyright (c) 2015-2016 Valve Corporation
|
|
||||||
Copyright (c) 2015-2016 LunarG, 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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef cJSON__h
|
|
||||||
#define cJSON__h
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* cJSON Types: */
|
|
||||||
#define cJSON_False 0
|
|
||||||
#define cJSON_True 1
|
|
||||||
#define cJSON_NULL 2
|
|
||||||
#define cJSON_Number 3
|
|
||||||
#define cJSON_String 4
|
|
||||||
#define cJSON_Array 5
|
|
||||||
#define cJSON_Object 6
|
|
||||||
|
|
||||||
#define cJSON_IsReference 256
|
|
||||||
#define cJSON_StringIsConst 512
|
|
||||||
|
|
||||||
/* The cJSON structure: */
|
|
||||||
typedef struct cJSON {
|
|
||||||
struct cJSON *next, *prev; /* next/prev allow you to walk array/object
|
|
||||||
chains. Alternatively, use
|
|
||||||
GetArraySize/GetArrayItem/GetObjectItem */
|
|
||||||
struct cJSON *child; /* An array or object item will have a child pointer
|
|
||||||
pointing to a chain of the items in the
|
|
||||||
array/object. */
|
|
||||||
|
|
||||||
int type; /* The type of the item, as above. */
|
|
||||||
|
|
||||||
char *valuestring; /* The item's string, if type==cJSON_String */
|
|
||||||
int valueint; /* The item's number, if type==cJSON_Number */
|
|
||||||
double valuedouble; /* The item's number, if type==cJSON_Number */
|
|
||||||
|
|
||||||
char *string; /* The item's name string, if this item is the child of, or is
|
|
||||||
in the list of subitems of an object. */
|
|
||||||
} cJSON;
|
|
||||||
|
|
||||||
typedef struct cJSON_Hooks {
|
|
||||||
void *(*malloc_fn)(size_t sz);
|
|
||||||
void (*free_fn)(void *ptr);
|
|
||||||
} cJSON_Hooks;
|
|
||||||
|
|
||||||
/* Supply malloc, realloc and free functions to cJSON */
|
|
||||||
extern void cJSON_InitHooks(cJSON_Hooks *hooks);
|
|
||||||
|
|
||||||
/* Supply a block of JSON, and this returns a cJSON object you can interrogate.
|
|
||||||
* Call cJSON_Delete when finished. */
|
|
||||||
extern cJSON *cJSON_Parse(const char *value);
|
|
||||||
/* Render a cJSON entity to text for transfer/storage. Free the char* when
|
|
||||||
* finished. */
|
|
||||||
extern char *cJSON_Print(cJSON *item);
|
|
||||||
/* Render a cJSON entity to text for transfer/storage without any formatting.
|
|
||||||
* Free the char* when finished. */
|
|
||||||
extern char *cJSON_PrintUnformatted(cJSON *item);
|
|
||||||
/* Render a cJSON entity to text using a buffered strategy. prebuffer is a guess
|
|
||||||
* at the final size. guessing well reduces reallocation. fmt=0 gives
|
|
||||||
* unformatted, =1 gives formatted */
|
|
||||||
extern char *cJSON_PrintBuffered(cJSON *item, int prebuffer, int fmt);
|
|
||||||
/* Delete a cJSON entity and all subentities. */
|
|
||||||
extern void cJSON_Delete(cJSON *c);
|
|
||||||
/* Delete an item allocated inside the JSON parser*/
|
|
||||||
extern void cJSON_Free(void *p);
|
|
||||||
|
|
||||||
/* Returns the number of items in an array (or object). */
|
|
||||||
extern int cJSON_GetArraySize(cJSON *array);
|
|
||||||
/* Retrieve item number "item" from array "array". Returns NULL if unsuccessful.
|
|
||||||
*/
|
|
||||||
extern cJSON *cJSON_GetArrayItem(cJSON *array, int item);
|
|
||||||
/* Get item "string" from object. Case insensitive. */
|
|
||||||
extern cJSON *cJSON_GetObjectItem(cJSON *object, const char *string);
|
|
||||||
|
|
||||||
/* For analysing failed parses. This returns a pointer to the parse error.
|
|
||||||
* You'll probably need to look a few chars back to make sense of it. Defined
|
|
||||||
* when cJSON_Parse() returns 0. 0 when cJSON_Parse() succeeds. */
|
|
||||||
extern const char *cJSON_GetErrorPtr(void);
|
|
||||||
|
|
||||||
/* These calls create a cJSON item of the appropriate type. */
|
|
||||||
extern cJSON *cJSON_CreateNull(void);
|
|
||||||
extern cJSON *cJSON_CreateTrue(void);
|
|
||||||
extern cJSON *cJSON_CreateFalse(void);
|
|
||||||
extern cJSON *cJSON_CreateBool(int b);
|
|
||||||
extern cJSON *cJSON_CreateNumber(double num);
|
|
||||||
extern cJSON *cJSON_CreateString(const char *string);
|
|
||||||
extern cJSON *cJSON_CreateArray(void);
|
|
||||||
extern cJSON *cJSON_CreateObject(void);
|
|
||||||
|
|
||||||
/* These utilities create an Array of count items. */
|
|
||||||
extern cJSON *cJSON_CreateIntArray(const int *numbers, int count);
|
|
||||||
extern cJSON *cJSON_CreateFloatArray(const float *numbers, int count);
|
|
||||||
extern cJSON *cJSON_CreateDoubleArray(const double *numbers, int count);
|
|
||||||
extern cJSON *cJSON_CreateStringArray(const char **strings, int count);
|
|
||||||
|
|
||||||
/* Append item to the specified array/object. */
|
|
||||||
extern void cJSON_AddItemToArray(cJSON *array, cJSON *item);
|
|
||||||
extern void cJSON_AddItemToObject(cJSON *object, const char *string, cJSON *item);
|
|
||||||
extern void cJSON_AddItemToObjectCS(cJSON *object, const char *string,
|
|
||||||
cJSON *item); /* Use this when string is definitely const (i.e. a literal,
|
|
||||||
or as good as), and will definitely survive the cJSON
|
|
||||||
object */
|
|
||||||
/* Append reference to item to the specified array/object. Use this when you
|
|
||||||
* want to add an existing cJSON to a new cJSON, but don't want to corrupt your
|
|
||||||
* existing cJSON. */
|
|
||||||
extern void cJSON_AddItemReferenceToArray(cJSON *array, cJSON *item);
|
|
||||||
extern void cJSON_AddItemReferenceToObject(cJSON *object, const char *string, cJSON *item);
|
|
||||||
|
|
||||||
/* Remove/Detatch items from Arrays/Objects. */
|
|
||||||
extern cJSON *cJSON_DetachItemFromArray(cJSON *array, int which);
|
|
||||||
extern void cJSON_DeleteItemFromArray(cJSON *array, int which);
|
|
||||||
extern cJSON *cJSON_DetachItemFromObject(cJSON *object, const char *string);
|
|
||||||
extern void cJSON_DeleteItemFromObject(cJSON *object, const char *string);
|
|
||||||
|
|
||||||
/* Update array items. */
|
|
||||||
extern void cJSON_InsertItemInArray(cJSON *array, int which, cJSON *newitem); /* Shifts pre-existing items to the right. */
|
|
||||||
extern void cJSON_ReplaceItemInArray(cJSON *array, int which, cJSON *newitem);
|
|
||||||
extern void cJSON_ReplaceItemInObject(cJSON *object, const char *string, cJSON *newitem);
|
|
||||||
|
|
||||||
/* Duplicate a cJSON item */
|
|
||||||
extern cJSON *cJSON_Duplicate(cJSON *item, int recurse);
|
|
||||||
/* Duplicate will create a new, identical cJSON item to the one you pass, in new
|
|
||||||
memory that will
|
|
||||||
need to be released. With recurse!=0, it will duplicate any children connected
|
|
||||||
to the item.
|
|
||||||
The item->next and ->prev pointers are always zero on return from Duplicate. */
|
|
||||||
|
|
||||||
/* ParseWithOpts allows you to require (and check) that the JSON is null
|
|
||||||
* terminated, and to retrieve the pointer to the final byte parsed. */
|
|
||||||
extern cJSON *cJSON_ParseWithOpts(const char *value, const char **return_parse_end, int require_null_terminated);
|
|
||||||
|
|
||||||
extern void cJSON_Minify(char *json);
|
|
||||||
|
|
||||||
/* Macros for creating things quickly. */
|
|
||||||
#define cJSON_AddNullToObject(object, name) cJSON_AddItemToObject(object, name, cJSON_CreateNull())
|
|
||||||
#define cJSON_AddTrueToObject(object, name) cJSON_AddItemToObject(object, name, cJSON_CreateTrue())
|
|
||||||
#define cJSON_AddFalseToObject(object, name) cJSON_AddItemToObject(object, name, cJSON_CreateFalse())
|
|
||||||
#define cJSON_AddBoolToObject(object, name, b) cJSON_AddItemToObject(object, name, cJSON_CreateBool(b))
|
|
||||||
#define cJSON_AddNumberToObject(object, name, n) cJSON_AddItemToObject(object, name, cJSON_CreateNumber(n))
|
|
||||||
#define cJSON_AddStringToObject(object, name, s) cJSON_AddItemToObject(object, name, cJSON_CreateString(s))
|
|
||||||
|
|
||||||
/* When assigning an integer value, it needs to be propagated to valuedouble
|
|
||||||
* too. */
|
|
||||||
#define cJSON_SetIntValue(object, val) ((object) ? (object)->valueint = (object)->valuedouble = (val) : (val))
|
|
||||||
#define cJSON_SetNumberValue(object, val) ((object) ? (object)->valueint = (object)->valuedouble = (val) : (val))
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -1,996 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2015-2017 The Khronos Group Inc.
|
|
||||||
* Copyright (c) 2015-2017 Valve Corporation
|
|
||||||
* Copyright (c) 2015-2017 LunarG, Inc.
|
|
||||||
* Copyright (C) 2015-2016 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.
|
|
||||||
*
|
|
||||||
* Author: Courtney Goeltzenleuchter <courtney@LunarG.com>
|
|
||||||
* Author: Jon Ashburn <jon@LunarG.com>
|
|
||||||
* Author: Mark Young <marky@lunarg.com>
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _GNU_SOURCE
|
|
||||||
#define _GNU_SOURCE
|
|
||||||
#endif
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <inttypes.h>
|
|
||||||
#ifndef WIN32
|
|
||||||
#include <signal.h>
|
|
||||||
#else
|
|
||||||
#endif
|
|
||||||
#include "vk_loader_platform.h"
|
|
||||||
#include "debug_utils.h"
|
|
||||||
#include "../vk_layer.h"
|
|
||||||
#include "vk_object_types.h"
|
|
||||||
|
|
||||||
// VK_EXT_debug_report related items
|
|
||||||
|
|
||||||
VkResult util_CreateDebugUtilsMessenger(struct loader_instance *inst, const VkDebugUtilsMessengerCreateInfoEXT *pCreateInfo,
|
|
||||||
const VkAllocationCallbacks *pAllocator, VkDebugUtilsMessengerEXT messenger) {
|
|
||||||
VkLayerDbgFunctionNode *pNewDbgFuncNode = NULL;
|
|
||||||
|
|
||||||
#if (DEBUG_DISABLE_APP_ALLOCATORS == 1)
|
|
||||||
{
|
|
||||||
#else
|
|
||||||
if (pAllocator != NULL) {
|
|
||||||
pNewDbgFuncNode = (VkLayerDbgFunctionNode *)pAllocator->pfnAllocation(pAllocator->pUserData, sizeof(VkLayerDbgFunctionNode),
|
|
||||||
sizeof(int *), VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
|
|
||||||
} else {
|
|
||||||
#endif
|
|
||||||
pNewDbgFuncNode = (VkLayerDbgFunctionNode *)loader_instance_heap_alloc(inst, sizeof(VkLayerDbgFunctionNode),
|
|
||||||
VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
|
|
||||||
}
|
|
||||||
if (!pNewDbgFuncNode) {
|
|
||||||
return VK_ERROR_OUT_OF_HOST_MEMORY;
|
|
||||||
}
|
|
||||||
memset(pNewDbgFuncNode, 0, sizeof(VkLayerDbgFunctionNode));
|
|
||||||
|
|
||||||
pNewDbgFuncNode->is_messenger = true;
|
|
||||||
pNewDbgFuncNode->messenger.messenger = messenger;
|
|
||||||
pNewDbgFuncNode->messenger.pfnUserCallback = pCreateInfo->pfnUserCallback;
|
|
||||||
pNewDbgFuncNode->messenger.messageSeverity = pCreateInfo->messageSeverity;
|
|
||||||
pNewDbgFuncNode->messenger.messageType = pCreateInfo->messageType;
|
|
||||||
pNewDbgFuncNode->pUserData = pCreateInfo->pUserData;
|
|
||||||
pNewDbgFuncNode->pNext = inst->DbgFunctionHead;
|
|
||||||
inst->DbgFunctionHead = pNewDbgFuncNode;
|
|
||||||
|
|
||||||
return VK_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL
|
|
||||||
debug_utils_CreateDebugUtilsMessengerEXT(VkInstance instance, const VkDebugUtilsMessengerCreateInfoEXT *pCreateInfo,
|
|
||||||
const VkAllocationCallbacks *pAllocator, VkDebugUtilsMessengerEXT *pMessenger) {
|
|
||||||
struct loader_instance *inst = loader_get_instance(instance);
|
|
||||||
loader_platform_thread_lock_mutex(&loader_lock);
|
|
||||||
VkResult result = inst->disp->layer_inst_disp.CreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger);
|
|
||||||
loader_platform_thread_unlock_mutex(&loader_lock);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
VkBool32 util_SubmitDebugUtilsMessageEXT(const struct loader_instance *inst, VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
|
|
||||||
VkDebugUtilsMessageTypeFlagsEXT messageTypes,
|
|
||||||
const VkDebugUtilsMessengerCallbackDataEXT *pCallbackData) {
|
|
||||||
VkBool32 bail = false;
|
|
||||||
|
|
||||||
if (NULL != pCallbackData) {
|
|
||||||
VkLayerDbgFunctionNode *pTrav = inst->DbgFunctionHead;
|
|
||||||
VkDebugReportObjectTypeEXT object_type = VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT;
|
|
||||||
VkDebugReportFlagsEXT object_flags = 0;
|
|
||||||
uint64_t object_handle = 0;
|
|
||||||
|
|
||||||
debug_utils_AnnotFlagsToReportFlags(messageSeverity, messageTypes, &object_flags);
|
|
||||||
if (0 < pCallbackData->objectCount) {
|
|
||||||
debug_utils_AnnotObjectToDebugReportObject(pCallbackData->pObjects, &object_type, &object_handle);
|
|
||||||
}
|
|
||||||
|
|
||||||
while (pTrav) {
|
|
||||||
if (pTrav->is_messenger && (pTrav->messenger.messageSeverity & messageSeverity) &&
|
|
||||||
(pTrav->messenger.messageType & messageTypes)) {
|
|
||||||
if (pTrav->messenger.pfnUserCallback(messageSeverity, messageTypes, pCallbackData, pTrav->pUserData)) {
|
|
||||||
bail = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!pTrav->is_messenger && pTrav->report.msgFlags & object_flags) {
|
|
||||||
if (pTrav->report.pfnMsgCallback(object_flags, object_type, object_handle, 0, pCallbackData->messageIdNumber,
|
|
||||||
pCallbackData->pMessageIdName, pCallbackData->pMessage, pTrav->pUserData)) {
|
|
||||||
bail = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pTrav = pTrav->pNext;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return bail;
|
|
||||||
}
|
|
||||||
|
|
||||||
void util_DestroyDebugUtilsMessenger(struct loader_instance *inst, VkDebugUtilsMessengerEXT messenger,
|
|
||||||
const VkAllocationCallbacks *pAllocator) {
|
|
||||||
VkLayerDbgFunctionNode *pTrav = inst->DbgFunctionHead;
|
|
||||||
VkLayerDbgFunctionNode *pPrev = pTrav;
|
|
||||||
|
|
||||||
while (pTrav) {
|
|
||||||
if (pTrav->is_messenger && pTrav->messenger.messenger == messenger) {
|
|
||||||
pPrev->pNext = pTrav->pNext;
|
|
||||||
if (inst->DbgFunctionHead == pTrav) inst->DbgFunctionHead = pTrav->pNext;
|
|
||||||
#if (DEBUG_DISABLE_APP_ALLOCATORS == 1)
|
|
||||||
{
|
|
||||||
#else
|
|
||||||
if (pAllocator != NULL) {
|
|
||||||
pAllocator->pfnFree(pAllocator->pUserData, pTrav);
|
|
||||||
} else {
|
|
||||||
#endif
|
|
||||||
loader_instance_heap_free(inst, pTrav);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
pPrev = pTrav;
|
|
||||||
pTrav = pTrav->pNext;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// This utility (used by vkInstanceCreateInfo(), looks at a pNext chain. It
|
|
||||||
// counts any VkDebugUtilsMessengerCreateInfoEXT structs that it finds. It
|
|
||||||
// then allocates array that can hold that many structs, as well as that many
|
|
||||||
// VkDebugUtilsMessengerEXT handles. It then copies each
|
|
||||||
// VkDebugUtilsMessengerCreateInfoEXT, and initializes each handle.
|
|
||||||
VkResult util_CopyDebugUtilsMessengerCreateInfos(const void *pChain, const VkAllocationCallbacks *pAllocator,
|
|
||||||
uint32_t *num_messengers, VkDebugUtilsMessengerCreateInfoEXT **infos,
|
|
||||||
VkDebugUtilsMessengerEXT **messengers) {
|
|
||||||
uint32_t n = *num_messengers = 0;
|
|
||||||
VkDebugUtilsMessengerCreateInfoEXT *pInfos = NULL;
|
|
||||||
VkDebugUtilsMessengerEXT *pMessengers = NULL;
|
|
||||||
|
|
||||||
const void *pNext = pChain;
|
|
||||||
while (pNext) {
|
|
||||||
// 1st, count the number VkDebugUtilsMessengerCreateInfoEXT:
|
|
||||||
if (((VkDebugUtilsMessengerCreateInfoEXT *)pNext)->sType == VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT) {
|
|
||||||
n++;
|
|
||||||
}
|
|
||||||
pNext = (void *)((VkDebugUtilsMessengerCreateInfoEXT *)pNext)->pNext;
|
|
||||||
}
|
|
||||||
if (n == 0) {
|
|
||||||
return VK_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 2nd, allocate memory for each VkDebugUtilsMessengerCreateInfoEXT:
|
|
||||||
#if (DEBUG_DISABLE_APP_ALLOCATORS == 1)
|
|
||||||
{
|
|
||||||
#else
|
|
||||||
if (pAllocator != NULL) {
|
|
||||||
pInfos = *infos = ((VkDebugUtilsMessengerCreateInfoEXT *)pAllocator->pfnAllocation(
|
|
||||||
pAllocator->pUserData, n * sizeof(VkDebugUtilsMessengerCreateInfoEXT), sizeof(void *),
|
|
||||||
VK_SYSTEM_ALLOCATION_SCOPE_OBJECT));
|
|
||||||
} else {
|
|
||||||
#endif
|
|
||||||
pInfos = *infos = ((VkDebugUtilsMessengerCreateInfoEXT *)malloc(n * sizeof(VkDebugUtilsMessengerCreateInfoEXT)));
|
|
||||||
}
|
|
||||||
if (!pInfos) {
|
|
||||||
return VK_ERROR_OUT_OF_HOST_MEMORY;
|
|
||||||
}
|
|
||||||
// 3rd, allocate memory for a unique handle for each callback:
|
|
||||||
#if (DEBUG_DISABLE_APP_ALLOCATORS == 1)
|
|
||||||
{
|
|
||||||
#else
|
|
||||||
if (pAllocator != NULL) {
|
|
||||||
pMessengers = *messengers = ((VkDebugUtilsMessengerEXT *)pAllocator->pfnAllocation(
|
|
||||||
pAllocator->pUserData, n * sizeof(VkDebugUtilsMessengerEXT), sizeof(void *), VK_SYSTEM_ALLOCATION_SCOPE_OBJECT));
|
|
||||||
if (NULL == pMessengers) {
|
|
||||||
pAllocator->pfnFree(pAllocator->pUserData, pInfos);
|
|
||||||
return VK_ERROR_OUT_OF_HOST_MEMORY;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
#endif
|
|
||||||
pMessengers = *messengers = ((VkDebugUtilsMessengerEXT *)malloc(n * sizeof(VkDebugUtilsMessengerEXT)));
|
|
||||||
if (NULL == pMessengers) {
|
|
||||||
free(pInfos);
|
|
||||||
return VK_ERROR_OUT_OF_HOST_MEMORY;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// 4th, copy each VkDebugUtilsMessengerCreateInfoEXT for use by
|
|
||||||
// vkDestroyInstance, and assign a unique handle to each messenger (just
|
|
||||||
// use the address of the copied VkDebugUtilsMessengerCreateInfoEXT):
|
|
||||||
pNext = pChain;
|
|
||||||
while (pNext) {
|
|
||||||
if (((VkInstanceCreateInfo *)pNext)->sType == VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT) {
|
|
||||||
memcpy(pInfos, pNext, sizeof(VkDebugUtilsMessengerCreateInfoEXT));
|
|
||||||
*pMessengers++ = (VkDebugUtilsMessengerEXT)(uintptr_t)pInfos++;
|
|
||||||
}
|
|
||||||
pNext = (void *)((VkInstanceCreateInfo *)pNext)->pNext;
|
|
||||||
}
|
|
||||||
|
|
||||||
*num_messengers = n;
|
|
||||||
return VK_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
void util_FreeDebugUtilsMessengerCreateInfos(const VkAllocationCallbacks *pAllocator, VkDebugUtilsMessengerCreateInfoEXT *infos,
|
|
||||||
VkDebugUtilsMessengerEXT *messengers) {
|
|
||||||
#if (DEBUG_DISABLE_APP_ALLOCATORS == 1)
|
|
||||||
{
|
|
||||||
#else
|
|
||||||
if (pAllocator != NULL) {
|
|
||||||
pAllocator->pfnFree(pAllocator->pUserData, infos);
|
|
||||||
pAllocator->pfnFree(pAllocator->pUserData, messengers);
|
|
||||||
} else {
|
|
||||||
#endif
|
|
||||||
free(infos);
|
|
||||||
free(messengers);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
VkResult util_CreateDebugUtilsMessengers(struct loader_instance *inst, const VkAllocationCallbacks *pAllocator,
|
|
||||||
uint32_t num_messengers, VkDebugUtilsMessengerCreateInfoEXT *infos,
|
|
||||||
VkDebugUtilsMessengerEXT *messengers) {
|
|
||||||
VkResult rtn = VK_SUCCESS;
|
|
||||||
for (uint32_t i = 0; i < num_messengers; i++) {
|
|
||||||
rtn = util_CreateDebugUtilsMessenger(inst, &infos[i], pAllocator, messengers[i]);
|
|
||||||
if (rtn != VK_SUCCESS) {
|
|
||||||
for (uint32_t j = 0; j < i; j++) {
|
|
||||||
util_DestroyDebugUtilsMessenger(inst, messengers[j], pAllocator);
|
|
||||||
}
|
|
||||||
return rtn;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return rtn;
|
|
||||||
}
|
|
||||||
|
|
||||||
void util_DestroyDebugUtilsMessengers(struct loader_instance *inst, const VkAllocationCallbacks *pAllocator,
|
|
||||||
uint32_t num_messengers, VkDebugUtilsMessengerEXT *messengers) {
|
|
||||||
for (uint32_t i = 0; i < num_messengers; i++) {
|
|
||||||
util_DestroyDebugUtilsMessenger(inst, messengers[i], pAllocator);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL debug_utils_SubmitDebugUtilsMessageEXT(
|
|
||||||
VkInstance instance, VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, VkDebugUtilsMessageTypeFlagsEXT messageTypes,
|
|
||||||
const VkDebugUtilsMessengerCallbackDataEXT *pCallbackData) {
|
|
||||||
struct loader_instance *inst = loader_get_instance(instance);
|
|
||||||
|
|
||||||
inst->disp->layer_inst_disp.SubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData);
|
|
||||||
}
|
|
||||||
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL debug_utils_DestroyDebugUtilsMessengerEXT(VkInstance instance, VkDebugUtilsMessengerEXT messenger,
|
|
||||||
const VkAllocationCallbacks *pAllocator) {
|
|
||||||
struct loader_instance *inst = loader_get_instance(instance);
|
|
||||||
loader_platform_thread_lock_mutex(&loader_lock);
|
|
||||||
|
|
||||||
inst->disp->layer_inst_disp.DestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator);
|
|
||||||
|
|
||||||
loader_platform_thread_unlock_mutex(&loader_lock);
|
|
||||||
}
|
|
||||||
|
|
||||||
// This is the instance chain terminator function for CreateDebugUtilsMessenger
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateDebugUtilsMessengerEXT(VkInstance instance,
|
|
||||||
const VkDebugUtilsMessengerCreateInfoEXT *pCreateInfo,
|
|
||||||
const VkAllocationCallbacks *pAllocator,
|
|
||||||
VkDebugUtilsMessengerEXT *pMessenger) {
|
|
||||||
VkDebugUtilsMessengerEXT *icd_info = NULL;
|
|
||||||
const struct loader_icd_term *icd_term;
|
|
||||||
struct loader_instance *inst = (struct loader_instance *)instance;
|
|
||||||
VkResult res = VK_SUCCESS;
|
|
||||||
uint32_t storage_idx;
|
|
||||||
VkLayerDbgFunctionNode *pNewDbgFuncNode = NULL;
|
|
||||||
|
|
||||||
#if (DEBUG_DISABLE_APP_ALLOCATORS == 1)
|
|
||||||
{
|
|
||||||
#else
|
|
||||||
if (pAllocator != NULL) {
|
|
||||||
icd_info = ((VkDebugUtilsMessengerEXT *)pAllocator->pfnAllocation(pAllocator->pUserData,
|
|
||||||
inst->total_icd_count * sizeof(VkDebugUtilsMessengerEXT),
|
|
||||||
sizeof(void *), VK_SYSTEM_ALLOCATION_SCOPE_OBJECT));
|
|
||||||
if (icd_info) {
|
|
||||||
memset(icd_info, 0, inst->total_icd_count * sizeof(VkDebugUtilsMessengerEXT));
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
#endif
|
|
||||||
icd_info = calloc(sizeof(VkDebugUtilsMessengerEXT), inst->total_icd_count);
|
|
||||||
}
|
|
||||||
if (!icd_info) {
|
|
||||||
res = VK_ERROR_OUT_OF_HOST_MEMORY;
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
storage_idx = 0;
|
|
||||||
for (icd_term = inst->icd_terms; icd_term; icd_term = icd_term->next) {
|
|
||||||
if (!icd_term->dispatch.CreateDebugUtilsMessengerEXT) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
res = icd_term->dispatch.CreateDebugUtilsMessengerEXT(icd_term->instance, pCreateInfo, pAllocator, &icd_info[storage_idx]);
|
|
||||||
|
|
||||||
if (res != VK_SUCCESS) {
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
storage_idx++;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Setup the debug report callback in the terminator since a layer may want
|
|
||||||
// to grab the information itself (RenderDoc) and then return back to the
|
|
||||||
// user callback a sub-set of the messages.
|
|
||||||
#if (DEBUG_DISABLE_APP_ALLOCATORS == 0)
|
|
||||||
if (pAllocator != NULL) {
|
|
||||||
pNewDbgFuncNode = (VkLayerDbgFunctionNode *)pAllocator->pfnAllocation(pAllocator->pUserData, sizeof(VkLayerDbgFunctionNode),
|
|
||||||
sizeof(int *), VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
|
|
||||||
} else {
|
|
||||||
#else
|
|
||||||
{
|
|
||||||
#endif
|
|
||||||
pNewDbgFuncNode = (VkLayerDbgFunctionNode *)loader_instance_heap_alloc(inst, sizeof(VkLayerDbgFunctionNode),
|
|
||||||
VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
|
|
||||||
}
|
|
||||||
if (!pNewDbgFuncNode) {
|
|
||||||
res = VK_ERROR_OUT_OF_HOST_MEMORY;
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
memset(pNewDbgFuncNode, 0, sizeof(VkLayerDbgFunctionNode));
|
|
||||||
|
|
||||||
pNewDbgFuncNode->is_messenger = true;
|
|
||||||
pNewDbgFuncNode->messenger.pfnUserCallback = pCreateInfo->pfnUserCallback;
|
|
||||||
pNewDbgFuncNode->messenger.messageSeverity = pCreateInfo->messageSeverity;
|
|
||||||
pNewDbgFuncNode->messenger.messageType = pCreateInfo->messageType;
|
|
||||||
pNewDbgFuncNode->pUserData = pCreateInfo->pUserData;
|
|
||||||
pNewDbgFuncNode->pNext = inst->DbgFunctionHead;
|
|
||||||
inst->DbgFunctionHead = pNewDbgFuncNode;
|
|
||||||
|
|
||||||
*(VkDebugUtilsMessengerEXT **)pMessenger = icd_info;
|
|
||||||
pNewDbgFuncNode->messenger.messenger = *pMessenger;
|
|
||||||
|
|
||||||
out:
|
|
||||||
|
|
||||||
// Roll back on errors
|
|
||||||
if (VK_SUCCESS != res) {
|
|
||||||
storage_idx = 0;
|
|
||||||
for (icd_term = inst->icd_terms; icd_term; icd_term = icd_term->next) {
|
|
||||||
if (NULL == icd_term->dispatch.DestroyDebugUtilsMessengerEXT) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (icd_info && icd_info[storage_idx]) {
|
|
||||||
icd_term->dispatch.DestroyDebugUtilsMessengerEXT(icd_term->instance, icd_info[storage_idx], pAllocator);
|
|
||||||
}
|
|
||||||
storage_idx++;
|
|
||||||
}
|
|
||||||
|
|
||||||
#if (DEBUG_DISABLE_APP_ALLOCATORS == 1)
|
|
||||||
{
|
|
||||||
#else
|
|
||||||
if (pAllocator != NULL) {
|
|
||||||
if (NULL != pNewDbgFuncNode) {
|
|
||||||
pAllocator->pfnFree(pAllocator->pUserData, pNewDbgFuncNode);
|
|
||||||
}
|
|
||||||
if (NULL != icd_info) {
|
|
||||||
pAllocator->pfnFree(pAllocator->pUserData, icd_info);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
#endif
|
|
||||||
if (NULL != pNewDbgFuncNode) {
|
|
||||||
free(pNewDbgFuncNode);
|
|
||||||
}
|
|
||||||
if (NULL != icd_info) {
|
|
||||||
free(icd_info);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
// This is the instance chain terminator function for DestroyDebugUtilsMessenger
|
|
||||||
VKAPI_ATTR void VKAPI_CALL terminator_DestroyDebugUtilsMessengerEXT(VkInstance instance, VkDebugUtilsMessengerEXT messenger,
|
|
||||||
const VkAllocationCallbacks *pAllocator) {
|
|
||||||
uint32_t storage_idx;
|
|
||||||
VkDebugUtilsMessengerEXT *icd_info;
|
|
||||||
const struct loader_icd_term *icd_term;
|
|
||||||
|
|
||||||
struct loader_instance *inst = (struct loader_instance *)instance;
|
|
||||||
icd_info = *(VkDebugUtilsMessengerEXT **)&messenger;
|
|
||||||
storage_idx = 0;
|
|
||||||
for (icd_term = inst->icd_terms; icd_term; icd_term = icd_term->next) {
|
|
||||||
if (NULL == icd_term->dispatch.DestroyDebugUtilsMessengerEXT) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (icd_info[storage_idx]) {
|
|
||||||
icd_term->dispatch.DestroyDebugUtilsMessengerEXT(icd_term->instance, icd_info[storage_idx], pAllocator);
|
|
||||||
}
|
|
||||||
storage_idx++;
|
|
||||||
}
|
|
||||||
|
|
||||||
util_DestroyDebugUtilsMessenger(inst, messenger, pAllocator);
|
|
||||||
|
|
||||||
#if (DEBUG_DISABLE_APP_ALLOCATORS == 1)
|
|
||||||
{
|
|
||||||
#else
|
|
||||||
if (pAllocator != NULL) {
|
|
||||||
pAllocator->pfnFree(pAllocator->pUserData, icd_info);
|
|
||||||
} else {
|
|
||||||
#endif
|
|
||||||
free(icd_info);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// This is the instance chain terminator function for SubmitDebugUtilsMessageEXT
|
|
||||||
VKAPI_ATTR void VKAPI_CALL terminator_SubmitDebugUtilsMessageEXT(VkInstance instance,
|
|
||||||
VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
|
|
||||||
VkDebugUtilsMessageTypeFlagsEXT messageTypes,
|
|
||||||
const VkDebugUtilsMessengerCallbackDataEXT *pCallbackData) {
|
|
||||||
loader_platform_thread_lock_mutex(&loader_lock);
|
|
||||||
// NOTE: Just make the callback ourselves because there could be one or more ICDs that support this extension
|
|
||||||
// and each one will trigger the callback to the user. This would result in multiple callback triggers
|
|
||||||
// per message. Instead, if we get a messaged up to here, then just trigger the message ourselves and
|
|
||||||
// return. This would still allow the ICDs to trigger their own messages, but won't get any external ones.
|
|
||||||
struct loader_instance *inst = (struct loader_instance *)instance;
|
|
||||||
util_SubmitDebugUtilsMessageEXT(inst, messageSeverity, messageTypes, pCallbackData);
|
|
||||||
loader_platform_thread_unlock_mutex(&loader_lock);
|
|
||||||
}
|
|
||||||
|
|
||||||
// VK_EXT_debug_report related items
|
|
||||||
|
|
||||||
VkResult util_CreateDebugReportCallback(struct loader_instance *inst, VkDebugReportCallbackCreateInfoEXT *pCreateInfo,
|
|
||||||
const VkAllocationCallbacks *pAllocator, VkDebugReportCallbackEXT callback) {
|
|
||||||
VkLayerDbgFunctionNode *pNewDbgFuncNode = NULL;
|
|
||||||
|
|
||||||
#if (DEBUG_DISABLE_APP_ALLOCATORS == 1)
|
|
||||||
{
|
|
||||||
#else
|
|
||||||
if (pAllocator != NULL) {
|
|
||||||
pNewDbgFuncNode = (VkLayerDbgFunctionNode *)pAllocator->pfnAllocation(pAllocator->pUserData, sizeof(VkLayerDbgFunctionNode),
|
|
||||||
sizeof(int *), VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
|
|
||||||
} else {
|
|
||||||
#endif
|
|
||||||
pNewDbgFuncNode = (VkLayerDbgFunctionNode *)loader_instance_heap_alloc(inst, sizeof(VkLayerDbgFunctionNode),
|
|
||||||
VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
|
|
||||||
}
|
|
||||||
if (!pNewDbgFuncNode) {
|
|
||||||
return VK_ERROR_OUT_OF_HOST_MEMORY;
|
|
||||||
}
|
|
||||||
memset(pNewDbgFuncNode, 0, sizeof(VkLayerDbgFunctionNode));
|
|
||||||
|
|
||||||
pNewDbgFuncNode->is_messenger = false;
|
|
||||||
pNewDbgFuncNode->report.msgCallback = callback;
|
|
||||||
pNewDbgFuncNode->report.pfnMsgCallback = pCreateInfo->pfnCallback;
|
|
||||||
pNewDbgFuncNode->report.msgFlags = pCreateInfo->flags;
|
|
||||||
pNewDbgFuncNode->pUserData = pCreateInfo->pUserData;
|
|
||||||
pNewDbgFuncNode->pNext = inst->DbgFunctionHead;
|
|
||||||
inst->DbgFunctionHead = pNewDbgFuncNode;
|
|
||||||
|
|
||||||
return VK_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL
|
|
||||||
debug_utils_CreateDebugReportCallbackEXT(VkInstance instance, const VkDebugReportCallbackCreateInfoEXT *pCreateInfo,
|
|
||||||
const VkAllocationCallbacks *pAllocator, VkDebugReportCallbackEXT *pCallback) {
|
|
||||||
struct loader_instance *inst = loader_get_instance(instance);
|
|
||||||
loader_platform_thread_lock_mutex(&loader_lock);
|
|
||||||
VkResult result = inst->disp->layer_inst_disp.CreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback);
|
|
||||||
loader_platform_thread_unlock_mutex(&loader_lock);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Utility function to handle reporting
|
|
||||||
VkBool32 util_DebugReportMessage(const struct loader_instance *inst, VkFlags msgFlags, VkDebugReportObjectTypeEXT objectType,
|
|
||||||
uint64_t srcObject, size_t location, int32_t msgCode, const char *pLayerPrefix, const char *pMsg) {
|
|
||||||
VkBool32 bail = false;
|
|
||||||
VkLayerDbgFunctionNode *pTrav = inst->DbgFunctionHead;
|
|
||||||
VkDebugUtilsMessageSeverityFlagBitsEXT severity;
|
|
||||||
VkDebugUtilsMessageTypeFlagsEXT types;
|
|
||||||
VkDebugUtilsMessengerCallbackDataEXT callback_data;
|
|
||||||
VkDebugUtilsObjectNameInfoEXT object_name;
|
|
||||||
|
|
||||||
debug_utils_ReportFlagsToAnnotFlags(msgFlags, false, &severity, &types);
|
|
||||||
debug_utils_ReportObjectToAnnotObject(objectType, srcObject, &object_name);
|
|
||||||
|
|
||||||
callback_data.sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT;
|
|
||||||
callback_data.pNext = NULL;
|
|
||||||
callback_data.flags = 0;
|
|
||||||
callback_data.pMessageIdName = pLayerPrefix;
|
|
||||||
callback_data.messageIdNumber = msgCode;
|
|
||||||
callback_data.pMessage = pMsg;
|
|
||||||
callback_data.cmdBufLabelCount = 0;
|
|
||||||
callback_data.pCmdBufLabels = NULL;
|
|
||||||
callback_data.queueLabelCount = 0;
|
|
||||||
callback_data.pQueueLabels = NULL;
|
|
||||||
callback_data.objectCount = 1;
|
|
||||||
callback_data.pObjects = &object_name;
|
|
||||||
|
|
||||||
while (pTrav) {
|
|
||||||
if (!pTrav->is_messenger && pTrav->report.msgFlags & msgFlags) {
|
|
||||||
if (pTrav->report.pfnMsgCallback(msgFlags, objectType, srcObject, location, msgCode, pLayerPrefix, pMsg,
|
|
||||||
pTrav->pUserData)) {
|
|
||||||
bail = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (pTrav->is_messenger && (pTrav->messenger.messageSeverity & severity) && (pTrav->messenger.messageType & types)) {
|
|
||||||
if (pTrav->messenger.pfnUserCallback(severity, types, &callback_data, pTrav->pUserData)) {
|
|
||||||
bail = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pTrav = pTrav->pNext;
|
|
||||||
}
|
|
||||||
|
|
||||||
return bail;
|
|
||||||
}
|
|
||||||
|
|
||||||
void util_DestroyDebugReportCallback(struct loader_instance *inst, VkDebugReportCallbackEXT callback,
|
|
||||||
const VkAllocationCallbacks *pAllocator) {
|
|
||||||
VkLayerDbgFunctionNode *pTrav = inst->DbgFunctionHead;
|
|
||||||
VkLayerDbgFunctionNode *pPrev = pTrav;
|
|
||||||
|
|
||||||
while (pTrav) {
|
|
||||||
if (!pTrav->is_messenger && pTrav->report.msgCallback == callback) {
|
|
||||||
pPrev->pNext = pTrav->pNext;
|
|
||||||
if (inst->DbgFunctionHead == pTrav) inst->DbgFunctionHead = pTrav->pNext;
|
|
||||||
#if (DEBUG_DISABLE_APP_ALLOCATORS == 1)
|
|
||||||
{
|
|
||||||
#else
|
|
||||||
if (pAllocator != NULL) {
|
|
||||||
pAllocator->pfnFree(pAllocator->pUserData, pTrav);
|
|
||||||
} else {
|
|
||||||
#endif
|
|
||||||
loader_instance_heap_free(inst, pTrav);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
pPrev = pTrav;
|
|
||||||
pTrav = pTrav->pNext;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// This utility (used by vkInstanceCreateInfo(), looks at a pNext chain. It
|
|
||||||
// counts any VkDebugReportCallbackCreateInfoEXT structs that it finds. It
|
|
||||||
// then allocates array that can hold that many structs, as well as that many
|
|
||||||
// VkDebugReportCallbackEXT handles. It then copies each
|
|
||||||
// VkDebugReportCallbackCreateInfoEXT, and initializes each handle.
|
|
||||||
VkResult util_CopyDebugReportCreateInfos(const void *pChain, const VkAllocationCallbacks *pAllocator, uint32_t *num_callbacks,
|
|
||||||
VkDebugReportCallbackCreateInfoEXT **infos, VkDebugReportCallbackEXT **callbacks) {
|
|
||||||
uint32_t n = *num_callbacks = 0;
|
|
||||||
VkDebugReportCallbackCreateInfoEXT *pInfos = NULL;
|
|
||||||
VkDebugReportCallbackEXT *pCallbacks = NULL;
|
|
||||||
|
|
||||||
const void *pNext = pChain;
|
|
||||||
while (pNext) {
|
|
||||||
// 1st, count the number VkDebugReportCallbackCreateInfoEXT:
|
|
||||||
if (((VkDebugReportCallbackCreateInfoEXT *)pNext)->sType == VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT) {
|
|
||||||
n++;
|
|
||||||
}
|
|
||||||
pNext = (void *)((VkDebugReportCallbackCreateInfoEXT *)pNext)->pNext;
|
|
||||||
}
|
|
||||||
if (n == 0) {
|
|
||||||
return VK_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 2nd, allocate memory for each VkDebugReportCallbackCreateInfoEXT:
|
|
||||||
#if (DEBUG_DISABLE_APP_ALLOCATORS == 1)
|
|
||||||
{
|
|
||||||
#else
|
|
||||||
if (pAllocator != NULL) {
|
|
||||||
pInfos = *infos = ((VkDebugReportCallbackCreateInfoEXT *)pAllocator->pfnAllocation(
|
|
||||||
pAllocator->pUserData, n * sizeof(VkDebugReportCallbackCreateInfoEXT), sizeof(void *),
|
|
||||||
VK_SYSTEM_ALLOCATION_SCOPE_OBJECT));
|
|
||||||
} else {
|
|
||||||
#endif
|
|
||||||
pInfos = *infos = ((VkDebugReportCallbackCreateInfoEXT *)malloc(n * sizeof(VkDebugReportCallbackCreateInfoEXT)));
|
|
||||||
}
|
|
||||||
if (!pInfos) {
|
|
||||||
return VK_ERROR_OUT_OF_HOST_MEMORY;
|
|
||||||
}
|
|
||||||
// 3rd, allocate memory for a unique handle for each callback:
|
|
||||||
#if (DEBUG_DISABLE_APP_ALLOCATORS == 1)
|
|
||||||
{
|
|
||||||
#else
|
|
||||||
if (pAllocator != NULL) {
|
|
||||||
pCallbacks = *callbacks = ((VkDebugReportCallbackEXT *)pAllocator->pfnAllocation(
|
|
||||||
pAllocator->pUserData, n * sizeof(VkDebugReportCallbackEXT), sizeof(void *), VK_SYSTEM_ALLOCATION_SCOPE_OBJECT));
|
|
||||||
if (!pCallbacks) {
|
|
||||||
pAllocator->pfnFree(pAllocator->pUserData, pInfos);
|
|
||||||
return VK_ERROR_OUT_OF_HOST_MEMORY;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
#endif
|
|
||||||
pCallbacks = *callbacks = ((VkDebugReportCallbackEXT *)malloc(n * sizeof(VkDebugReportCallbackEXT)));
|
|
||||||
if (!pCallbacks) {
|
|
||||||
free(pInfos);
|
|
||||||
return VK_ERROR_OUT_OF_HOST_MEMORY;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// 4th, copy each VkDebugReportCallbackCreateInfoEXT for use by
|
|
||||||
// vkDestroyInstance, and assign a unique handle to each callback (just
|
|
||||||
// use the address of the copied VkDebugReportCallbackCreateInfoEXT):
|
|
||||||
pNext = pChain;
|
|
||||||
while (pNext) {
|
|
||||||
if (((VkInstanceCreateInfo *)pNext)->sType == VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT) {
|
|
||||||
memcpy(pInfos, pNext, sizeof(VkDebugReportCallbackCreateInfoEXT));
|
|
||||||
*pCallbacks++ = (VkDebugReportCallbackEXT)(uintptr_t)pInfos++;
|
|
||||||
}
|
|
||||||
pNext = (void *)((VkInstanceCreateInfo *)pNext)->pNext;
|
|
||||||
}
|
|
||||||
|
|
||||||
*num_callbacks = n;
|
|
||||||
return VK_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
void util_FreeDebugReportCreateInfos(const VkAllocationCallbacks *pAllocator, VkDebugReportCallbackCreateInfoEXT *infos,
|
|
||||||
VkDebugReportCallbackEXT *callbacks) {
|
|
||||||
#if (DEBUG_DISABLE_APP_ALLOCATORS == 1)
|
|
||||||
{
|
|
||||||
#else
|
|
||||||
if (pAllocator != NULL) {
|
|
||||||
pAllocator->pfnFree(pAllocator->pUserData, infos);
|
|
||||||
pAllocator->pfnFree(pAllocator->pUserData, callbacks);
|
|
||||||
} else {
|
|
||||||
#endif
|
|
||||||
free(infos);
|
|
||||||
free(callbacks);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
VkResult util_CreateDebugReportCallbacks(struct loader_instance *inst, const VkAllocationCallbacks *pAllocator,
|
|
||||||
uint32_t num_callbacks, VkDebugReportCallbackCreateInfoEXT *infos,
|
|
||||||
VkDebugReportCallbackEXT *callbacks) {
|
|
||||||
VkResult rtn = VK_SUCCESS;
|
|
||||||
for (uint32_t i = 0; i < num_callbacks; i++) {
|
|
||||||
rtn = util_CreateDebugReportCallback(inst, &infos[i], pAllocator, callbacks[i]);
|
|
||||||
if (rtn != VK_SUCCESS) {
|
|
||||||
for (uint32_t j = 0; j < i; j++) {
|
|
||||||
util_DestroyDebugReportCallback(inst, callbacks[j], pAllocator);
|
|
||||||
}
|
|
||||||
return rtn;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return rtn;
|
|
||||||
}
|
|
||||||
|
|
||||||
void util_DestroyDebugReportCallbacks(struct loader_instance *inst, const VkAllocationCallbacks *pAllocator, uint32_t num_callbacks,
|
|
||||||
VkDebugReportCallbackEXT *callbacks) {
|
|
||||||
for (uint32_t i = 0; i < num_callbacks; i++) {
|
|
||||||
util_DestroyDebugReportCallback(inst, callbacks[i], pAllocator);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL debug_utils_DestroyDebugReportCallbackEXT(VkInstance instance, VkDebugReportCallbackEXT callback,
|
|
||||||
const VkAllocationCallbacks *pAllocator) {
|
|
||||||
struct loader_instance *inst = loader_get_instance(instance);
|
|
||||||
loader_platform_thread_lock_mutex(&loader_lock);
|
|
||||||
|
|
||||||
inst->disp->layer_inst_disp.DestroyDebugReportCallbackEXT(instance, callback, pAllocator);
|
|
||||||
|
|
||||||
loader_platform_thread_unlock_mutex(&loader_lock);
|
|
||||||
}
|
|
||||||
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL debug_utils_DebugReportMessageEXT(VkInstance instance, VkDebugReportFlagsEXT flags,
|
|
||||||
VkDebugReportObjectTypeEXT objType, uint64_t object,
|
|
||||||
size_t location, int32_t msgCode, const char *pLayerPrefix,
|
|
||||||
const char *pMsg) {
|
|
||||||
struct loader_instance *inst = loader_get_instance(instance);
|
|
||||||
|
|
||||||
inst->disp->layer_inst_disp.DebugReportMessageEXT(instance, flags, objType, object, location, msgCode, pLayerPrefix, pMsg);
|
|
||||||
}
|
|
||||||
|
|
||||||
// This is the instance chain terminator function
|
|
||||||
// for CreateDebugReportCallback
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateDebugReportCallbackEXT(VkInstance instance,
|
|
||||||
const VkDebugReportCallbackCreateInfoEXT *pCreateInfo,
|
|
||||||
const VkAllocationCallbacks *pAllocator,
|
|
||||||
VkDebugReportCallbackEXT *pCallback) {
|
|
||||||
VkDebugReportCallbackEXT *icd_info = NULL;
|
|
||||||
const struct loader_icd_term *icd_term;
|
|
||||||
struct loader_instance *inst = (struct loader_instance *)instance;
|
|
||||||
VkResult res = VK_SUCCESS;
|
|
||||||
uint32_t storage_idx;
|
|
||||||
VkLayerDbgFunctionNode *pNewDbgFuncNode = NULL;
|
|
||||||
|
|
||||||
#if (DEBUG_DISABLE_APP_ALLOCATORS == 1)
|
|
||||||
{
|
|
||||||
#else
|
|
||||||
if (pAllocator != NULL) {
|
|
||||||
icd_info = ((VkDebugReportCallbackEXT *)pAllocator->pfnAllocation(pAllocator->pUserData,
|
|
||||||
inst->total_icd_count * sizeof(VkDebugReportCallbackEXT),
|
|
||||||
sizeof(void *), VK_SYSTEM_ALLOCATION_SCOPE_OBJECT));
|
|
||||||
if (icd_info) {
|
|
||||||
memset(icd_info, 0, inst->total_icd_count * sizeof(VkDebugReportCallbackEXT));
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
#endif
|
|
||||||
icd_info = calloc(sizeof(VkDebugReportCallbackEXT), inst->total_icd_count);
|
|
||||||
}
|
|
||||||
if (!icd_info) {
|
|
||||||
res = VK_ERROR_OUT_OF_HOST_MEMORY;
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
storage_idx = 0;
|
|
||||||
for (icd_term = inst->icd_terms; icd_term; icd_term = icd_term->next) {
|
|
||||||
if (!icd_term->dispatch.CreateDebugReportCallbackEXT) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
res = icd_term->dispatch.CreateDebugReportCallbackEXT(icd_term->instance, pCreateInfo, pAllocator, &icd_info[storage_idx]);
|
|
||||||
|
|
||||||
if (res != VK_SUCCESS) {
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
storage_idx++;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Setup the debug report callback in the terminator since a layer may want
|
|
||||||
// to grab the information itself (RenderDoc) and then return back to the
|
|
||||||
// user callback a sub-set of the messages.
|
|
||||||
#if (DEBUG_DISABLE_APP_ALLOCATORS == 0)
|
|
||||||
if (pAllocator != NULL) {
|
|
||||||
pNewDbgFuncNode = (VkLayerDbgFunctionNode *)pAllocator->pfnAllocation(pAllocator->pUserData, sizeof(VkLayerDbgFunctionNode),
|
|
||||||
sizeof(int *), VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
|
|
||||||
} else {
|
|
||||||
#else
|
|
||||||
{
|
|
||||||
#endif
|
|
||||||
pNewDbgFuncNode = (VkLayerDbgFunctionNode *)loader_instance_heap_alloc(inst, sizeof(VkLayerDbgFunctionNode),
|
|
||||||
VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
|
|
||||||
}
|
|
||||||
if (!pNewDbgFuncNode) {
|
|
||||||
res = VK_ERROR_OUT_OF_HOST_MEMORY;
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
memset(pNewDbgFuncNode, 0, sizeof(VkLayerDbgFunctionNode));
|
|
||||||
|
|
||||||
pNewDbgFuncNode->is_messenger = false;
|
|
||||||
pNewDbgFuncNode->report.pfnMsgCallback = pCreateInfo->pfnCallback;
|
|
||||||
pNewDbgFuncNode->report.msgFlags = pCreateInfo->flags;
|
|
||||||
pNewDbgFuncNode->pUserData = pCreateInfo->pUserData;
|
|
||||||
pNewDbgFuncNode->pNext = inst->DbgFunctionHead;
|
|
||||||
inst->DbgFunctionHead = pNewDbgFuncNode;
|
|
||||||
|
|
||||||
*(VkDebugReportCallbackEXT **)pCallback = icd_info;
|
|
||||||
pNewDbgFuncNode->report.msgCallback = *pCallback;
|
|
||||||
|
|
||||||
out:
|
|
||||||
|
|
||||||
// Roll back on errors
|
|
||||||
if (VK_SUCCESS != res) {
|
|
||||||
storage_idx = 0;
|
|
||||||
for (icd_term = inst->icd_terms; icd_term; icd_term = icd_term->next) {
|
|
||||||
if (NULL == icd_term->dispatch.DestroyDebugReportCallbackEXT) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (icd_info && icd_info[storage_idx]) {
|
|
||||||
icd_term->dispatch.DestroyDebugReportCallbackEXT(icd_term->instance, icd_info[storage_idx], pAllocator);
|
|
||||||
}
|
|
||||||
storage_idx++;
|
|
||||||
}
|
|
||||||
|
|
||||||
#if (DEBUG_DISABLE_APP_ALLOCATORS == 1)
|
|
||||||
{
|
|
||||||
#else
|
|
||||||
if (pAllocator != NULL) {
|
|
||||||
if (NULL != pNewDbgFuncNode) {
|
|
||||||
pAllocator->pfnFree(pAllocator->pUserData, pNewDbgFuncNode);
|
|
||||||
}
|
|
||||||
if (NULL != icd_info) {
|
|
||||||
pAllocator->pfnFree(pAllocator->pUserData, icd_info);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
#endif
|
|
||||||
if (NULL != pNewDbgFuncNode) {
|
|
||||||
free(pNewDbgFuncNode);
|
|
||||||
}
|
|
||||||
if (NULL != icd_info) {
|
|
||||||
free(icd_info);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
// This is the instance chain terminator function for DestroyDebugReportCallback
|
|
||||||
VKAPI_ATTR void VKAPI_CALL terminator_DestroyDebugReportCallbackEXT(VkInstance instance, VkDebugReportCallbackEXT callback,
|
|
||||||
const VkAllocationCallbacks *pAllocator) {
|
|
||||||
uint32_t storage_idx;
|
|
||||||
VkDebugReportCallbackEXT *icd_info;
|
|
||||||
const struct loader_icd_term *icd_term;
|
|
||||||
|
|
||||||
struct loader_instance *inst = (struct loader_instance *)instance;
|
|
||||||
icd_info = *(VkDebugReportCallbackEXT **)&callback;
|
|
||||||
storage_idx = 0;
|
|
||||||
for (icd_term = inst->icd_terms; icd_term; icd_term = icd_term->next) {
|
|
||||||
if (NULL == icd_term->dispatch.DestroyDebugReportCallbackEXT) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (icd_info[storage_idx]) {
|
|
||||||
icd_term->dispatch.DestroyDebugReportCallbackEXT(icd_term->instance, icd_info[storage_idx], pAllocator);
|
|
||||||
}
|
|
||||||
storage_idx++;
|
|
||||||
}
|
|
||||||
|
|
||||||
util_DestroyDebugReportCallback(inst, callback, pAllocator);
|
|
||||||
|
|
||||||
#if (DEBUG_DISABLE_APP_ALLOCATORS == 1)
|
|
||||||
{
|
|
||||||
#else
|
|
||||||
if (pAllocator != NULL) {
|
|
||||||
pAllocator->pfnFree(pAllocator->pUserData, icd_info);
|
|
||||||
} else {
|
|
||||||
#endif
|
|
||||||
free(icd_info);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// This is the instance chain terminator function for DebugReportMessage
|
|
||||||
VKAPI_ATTR void VKAPI_CALL terminator_DebugReportMessageEXT(VkInstance instance, VkDebugReportFlagsEXT flags,
|
|
||||||
VkDebugReportObjectTypeEXT objType, uint64_t object, size_t location,
|
|
||||||
int32_t msgCode, const char *pLayerPrefix, const char *pMsg) {
|
|
||||||
const struct loader_icd_term *icd_term;
|
|
||||||
|
|
||||||
struct loader_instance *inst = (struct loader_instance *)instance;
|
|
||||||
|
|
||||||
loader_platform_thread_lock_mutex(&loader_lock);
|
|
||||||
for (icd_term = inst->icd_terms; icd_term; icd_term = icd_term->next) {
|
|
||||||
if (icd_term->dispatch.DebugReportMessageEXT != NULL) {
|
|
||||||
icd_term->dispatch.DebugReportMessageEXT(icd_term->instance, flags, objType, object, location, msgCode, pLayerPrefix,
|
|
||||||
pMsg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Now that all ICDs have seen the message, call the necessary callbacks. Ignoring "bail" return value
|
|
||||||
// as there is nothing to bail from at this point.
|
|
||||||
|
|
||||||
util_DebugReportMessage(inst, flags, objType, object, location, msgCode, pLayerPrefix, pMsg);
|
|
||||||
|
|
||||||
loader_platform_thread_unlock_mutex(&loader_lock);
|
|
||||||
}
|
|
||||||
|
|
||||||
// General utilities
|
|
||||||
|
|
||||||
static const VkExtensionProperties debug_utils_extension_info[] = {
|
|
||||||
{VK_EXT_DEBUG_REPORT_EXTENSION_NAME, VK_EXT_DEBUG_REPORT_SPEC_VERSION},
|
|
||||||
{VK_EXT_DEBUG_UTILS_EXTENSION_NAME, VK_EXT_DEBUG_UTILS_SPEC_VERSION},
|
|
||||||
};
|
|
||||||
|
|
||||||
void debug_utils_AddInstanceExtensions(const struct loader_instance *inst, struct loader_extension_list *ext_list) {
|
|
||||||
loader_add_to_ext_list(inst, ext_list, sizeof(debug_utils_extension_info) / sizeof(VkExtensionProperties),
|
|
||||||
debug_utils_extension_info);
|
|
||||||
}
|
|
||||||
|
|
||||||
void debug_utils_CreateInstance(struct loader_instance *ptr_instance, const VkInstanceCreateInfo *pCreateInfo) {
|
|
||||||
ptr_instance->enabled_known_extensions.ext_debug_report = 0;
|
|
||||||
ptr_instance->enabled_known_extensions.ext_debug_utils = 0;
|
|
||||||
|
|
||||||
for (uint32_t i = 0; i < pCreateInfo->enabledExtensionCount; i++) {
|
|
||||||
if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_EXT_DEBUG_REPORT_EXTENSION_NAME) == 0) {
|
|
||||||
ptr_instance->enabled_known_extensions.ext_debug_report = 1;
|
|
||||||
} else if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_EXT_DEBUG_UTILS_EXTENSION_NAME) == 0) {
|
|
||||||
ptr_instance->enabled_known_extensions.ext_debug_utils = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool debug_utils_InstanceGpa(struct loader_instance *ptr_instance, const char *name, void **addr) {
|
|
||||||
bool ret_type = false;
|
|
||||||
|
|
||||||
*addr = NULL;
|
|
||||||
|
|
||||||
if (!strcmp("vkCreateDebugReportCallbackEXT", name)) {
|
|
||||||
*addr = ptr_instance->enabled_known_extensions.ext_debug_report == 1 ? (void *)debug_utils_CreateDebugReportCallbackEXT : NULL;
|
|
||||||
ret_type = true;
|
|
||||||
} else if (!strcmp("vkDestroyDebugReportCallbackEXT", name)) {
|
|
||||||
*addr = ptr_instance->enabled_known_extensions.ext_debug_report == 1 ? (void *)debug_utils_DestroyDebugReportCallbackEXT : NULL;
|
|
||||||
ret_type = true;
|
|
||||||
} else if (!strcmp("vkDebugReportMessageEXT", name)) {
|
|
||||||
*addr = ptr_instance->enabled_known_extensions.ext_debug_report == 1 ? (void *)debug_utils_DebugReportMessageEXT : NULL;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (!strcmp("vkCreateDebugUtilsMessengerEXT", name)) {
|
|
||||||
*addr = ptr_instance->enabled_known_extensions.ext_debug_utils == 1 ? (void *)debug_utils_CreateDebugUtilsMessengerEXT : NULL;
|
|
||||||
ret_type = true;
|
|
||||||
} else if (!strcmp("vkDestroyDebugUtilsMessengerEXT", name)) {
|
|
||||||
*addr = ptr_instance->enabled_known_extensions.ext_debug_utils == 1 ? (void *)debug_utils_DestroyDebugUtilsMessengerEXT : NULL;
|
|
||||||
ret_type = true;
|
|
||||||
} else if (!strcmp("vkSubmitDebugUtilsMessageEXT", name)) {
|
|
||||||
*addr = ptr_instance->enabled_known_extensions.ext_debug_utils == 1 ? (void *)debug_utils_SubmitDebugUtilsMessageEXT : NULL;
|
|
||||||
ret_type = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret_type;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool debug_utils_ReportFlagsToAnnotFlags(VkDebugReportFlagsEXT dr_flags, bool default_flag_is_spec,
|
|
||||||
VkDebugUtilsMessageSeverityFlagBitsEXT *da_severity,
|
|
||||||
VkDebugUtilsMessageTypeFlagsEXT *da_type) {
|
|
||||||
bool type_set = false;
|
|
||||||
if (NULL == da_severity || NULL == da_type) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
*da_type = 0;
|
|
||||||
*da_severity = 0;
|
|
||||||
|
|
||||||
if ((dr_flags & VK_DEBUG_REPORT_INFORMATION_BIT_EXT) != 0) {
|
|
||||||
*da_severity = VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT;
|
|
||||||
*da_type |= VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT;
|
|
||||||
type_set = true;
|
|
||||||
} else if ((dr_flags & (VK_DEBUG_REPORT_WARNING_BIT_EXT | VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT)) != 0) {
|
|
||||||
*da_severity = VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT;
|
|
||||||
} else if ((dr_flags & VK_DEBUG_REPORT_ERROR_BIT_EXT) != 0) {
|
|
||||||
*da_severity = VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT;
|
|
||||||
} else if ((dr_flags & VK_DEBUG_REPORT_DEBUG_BIT_EXT) != 0) {
|
|
||||||
*da_severity = VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT;
|
|
||||||
*da_type |= VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT;
|
|
||||||
type_set = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((dr_flags & VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT) != 0) {
|
|
||||||
*da_type |= VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT;
|
|
||||||
} else if (!type_set) {
|
|
||||||
if (default_flag_is_spec) {
|
|
||||||
*da_type |= VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT;
|
|
||||||
} else {
|
|
||||||
*da_type |= VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool debug_utils_AnnotFlagsToReportFlags(VkDebugUtilsMessageSeverityFlagBitsEXT da_severity,
|
|
||||||
VkDebugUtilsMessageTypeFlagsEXT da_type, VkDebugReportFlagsEXT *dr_flags) {
|
|
||||||
if (NULL == dr_flags) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
*dr_flags = 0;
|
|
||||||
|
|
||||||
if ((da_severity & VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT) != 0) {
|
|
||||||
*dr_flags |= VK_DEBUG_REPORT_ERROR_BIT_EXT;
|
|
||||||
} else if ((da_severity & VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT) != 0) {
|
|
||||||
if ((da_type & VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT) != 0) {
|
|
||||||
*dr_flags |= VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT;
|
|
||||||
} else {
|
|
||||||
*dr_flags |= VK_DEBUG_REPORT_WARNING_BIT_EXT;
|
|
||||||
}
|
|
||||||
} else if ((da_severity & VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT) != 0) {
|
|
||||||
*dr_flags |= VK_DEBUG_REPORT_INFORMATION_BIT_EXT;
|
|
||||||
} else if ((da_severity & VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT) != 0) {
|
|
||||||
*dr_flags |= VK_DEBUG_REPORT_DEBUG_BIT_EXT;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool debug_utils_ReportObjectToAnnotObject(VkDebugReportObjectTypeEXT dr_object_type, uint64_t object_handle,
|
|
||||||
VkDebugUtilsObjectNameInfoEXT *da_object_name_info) {
|
|
||||||
if (NULL == da_object_name_info) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
da_object_name_info->sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT;
|
|
||||||
da_object_name_info->pNext = NULL;
|
|
||||||
da_object_name_info->objectHandle = (uint64_t)(uintptr_t)object_handle;
|
|
||||||
da_object_name_info->pObjectName = NULL;
|
|
||||||
da_object_name_info->objectType = convertDebugReportObjectToCoreObject(dr_object_type);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool debug_utils_AnnotObjectToDebugReportObject(const VkDebugUtilsObjectNameInfoEXT *da_object_name_info,
|
|
||||||
VkDebugReportObjectTypeEXT *dr_object_type, uint64_t *dr_object_handle) {
|
|
||||||
if (NULL == da_object_name_info || NULL == dr_object_type || NULL == dr_object_handle) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
*dr_object_type = convertCoreObjectToDebugReportObject(da_object_name_info->objectType);
|
|
||||||
*dr_object_handle = da_object_name_info->objectHandle;
|
|
||||||
return true;
|
|
||||||
}
|
|
|
@ -1,101 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2015-2017 The Khronos Group Inc.
|
|
||||||
* Copyright (c) 2015-2017 Valve Corporation
|
|
||||||
* Copyright (c) 2015-2017 LunarG, Inc.
|
|
||||||
* Copyright (C) 2015-2016 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.
|
|
||||||
*
|
|
||||||
* Author: Courtney Goeltzenleuchter <courtney@LunarG.com>
|
|
||||||
* Author: Jon Ashburn <jon@lunarg.com>
|
|
||||||
* Author: Mark Young <markyk@lunarg.com>
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "vk_loader_platform.h"
|
|
||||||
#include "loader.h"
|
|
||||||
|
|
||||||
// General utilities
|
|
||||||
|
|
||||||
void debug_utils_AddInstanceExtensions(const struct loader_instance *inst, struct loader_extension_list *ext_list);
|
|
||||||
void debug_utils_CreateInstance(struct loader_instance *ptr_instance, const VkInstanceCreateInfo *pCreateInfo);
|
|
||||||
bool debug_utils_InstanceGpa(struct loader_instance *ptr_instance, const char *name, void **addr);
|
|
||||||
bool debug_utils_ReportFlagsToAnnotFlags(VkDebugReportFlagsEXT dr_flags, bool default_flag_is_spec,
|
|
||||||
VkDebugUtilsMessageSeverityFlagBitsEXT *da_severity,
|
|
||||||
VkDebugUtilsMessageTypeFlagsEXT *da_type);
|
|
||||||
bool debug_utils_AnnotFlagsToReportFlags(VkDebugUtilsMessageSeverityFlagBitsEXT da_severity,
|
|
||||||
VkDebugUtilsMessageTypeFlagsEXT da_type, VkDebugReportFlagsEXT *dr_flags);
|
|
||||||
bool debug_utils_ReportObjectToAnnotObject(VkDebugReportObjectTypeEXT dr_object_type, uint64_t object_handle,
|
|
||||||
VkDebugUtilsObjectNameInfoEXT *da_object_name_info);
|
|
||||||
bool debug_utils_AnnotObjectToDebugReportObject(const VkDebugUtilsObjectNameInfoEXT *da_object_name_info,
|
|
||||||
VkDebugReportObjectTypeEXT *dr_object_type, uint64_t *dr_object_handle);
|
|
||||||
|
|
||||||
// VK_EXT_debug_utils related items
|
|
||||||
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateDebugUtilsMessengerEXT(VkInstance instance,
|
|
||||||
const VkDebugUtilsMessengerCreateInfoEXT *pCreateInfo,
|
|
||||||
const VkAllocationCallbacks *pAllocator,
|
|
||||||
VkDebugUtilsMessengerEXT *pMessenger);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL terminator_DestroyDebugUtilsMessengerEXT(VkInstance instance, VkDebugUtilsMessengerEXT messenger,
|
|
||||||
const VkAllocationCallbacks *pAllocator);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL terminator_SubmitDebugUtilsMessageEXT(VkInstance instance,
|
|
||||||
VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
|
|
||||||
VkDebugUtilsMessageTypeFlagsEXT messageTypes,
|
|
||||||
const VkDebugUtilsMessengerCallbackDataEXT *pCallbackData);
|
|
||||||
VkResult util_CreateDebugUtilsMessenger(struct loader_instance *inst, const VkDebugUtilsMessengerCreateInfoEXT *pCreateInfo,
|
|
||||||
const VkAllocationCallbacks *pAllocator, VkDebugUtilsMessengerEXT messenger);
|
|
||||||
VkResult util_CreateDebugUtilsMessengers(struct loader_instance *inst, const VkAllocationCallbacks *pAllocator,
|
|
||||||
uint32_t num_messengers, VkDebugUtilsMessengerCreateInfoEXT *infos,
|
|
||||||
VkDebugUtilsMessengerEXT *messengers);
|
|
||||||
VkBool32 util_SubmitDebugUtilsMessageEXT(const struct loader_instance *inst, VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
|
|
||||||
VkDebugUtilsMessageTypeFlagsEXT messageTypes,
|
|
||||||
const VkDebugUtilsMessengerCallbackDataEXT *pCallbackData);
|
|
||||||
VkResult util_CopyDebugUtilsMessengerCreateInfos(const void *pChain, const VkAllocationCallbacks *pAllocator,
|
|
||||||
uint32_t *num_messengers, VkDebugUtilsMessengerCreateInfoEXT **infos,
|
|
||||||
VkDebugUtilsMessengerEXT **messengers);
|
|
||||||
void util_DestroyDebugUtilsMessenger(struct loader_instance *inst, VkDebugUtilsMessengerEXT messenger,
|
|
||||||
const VkAllocationCallbacks *pAllocator);
|
|
||||||
void util_DestroyDebugUtilsMessengers(struct loader_instance *inst, const VkAllocationCallbacks *pAllocator,
|
|
||||||
uint32_t num_messengers, VkDebugUtilsMessengerEXT *messengers);
|
|
||||||
void util_FreeDebugUtilsMessengerCreateInfos(const VkAllocationCallbacks *pAllocator, VkDebugUtilsMessengerCreateInfoEXT *infos,
|
|
||||||
VkDebugUtilsMessengerEXT *messengers);
|
|
||||||
|
|
||||||
// VK_EXT_debug_report related items
|
|
||||||
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateDebugReportCallbackEXT(VkInstance instance,
|
|
||||||
const VkDebugReportCallbackCreateInfoEXT *pCreateInfo,
|
|
||||||
const VkAllocationCallbacks *pAllocator,
|
|
||||||
VkDebugReportCallbackEXT *pCallback);
|
|
||||||
|
|
||||||
VKAPI_ATTR void VKAPI_CALL terminator_DestroyDebugReportCallbackEXT(VkInstance instance, VkDebugReportCallbackEXT callback,
|
|
||||||
const VkAllocationCallbacks *pAllocator);
|
|
||||||
|
|
||||||
VKAPI_ATTR void VKAPI_CALL terminator_DebugReportMessageEXT(VkInstance instance, VkDebugReportFlagsEXT flags,
|
|
||||||
VkDebugReportObjectTypeEXT objType, uint64_t object, size_t location,
|
|
||||||
int32_t msgCode, const char *pLayerPrefix, const char *pMsg);
|
|
||||||
|
|
||||||
VkResult util_CreateDebugReportCallback(struct loader_instance *inst, VkDebugReportCallbackCreateInfoEXT *pCreateInfo,
|
|
||||||
const VkAllocationCallbacks *pAllocator, VkDebugReportCallbackEXT callback);
|
|
||||||
VkResult util_CreateDebugReportCallbacks(struct loader_instance *inst, const VkAllocationCallbacks *pAllocator,
|
|
||||||
uint32_t num_callbacks, VkDebugReportCallbackCreateInfoEXT *infos,
|
|
||||||
VkDebugReportCallbackEXT *callbacks);
|
|
||||||
VkBool32 util_DebugReportMessage(const struct loader_instance *inst, VkFlags msgFlags, VkDebugReportObjectTypeEXT objectType,
|
|
||||||
uint64_t srcObject, size_t location, int32_t msgCode, const char *pLayerPrefix, const char *pMsg);
|
|
||||||
VkResult util_CopyDebugReportCreateInfos(const void *pChain, const VkAllocationCallbacks *pAllocator, uint32_t *num_callbacks,
|
|
||||||
VkDebugReportCallbackCreateInfoEXT **infos, VkDebugReportCallbackEXT **callbacks);
|
|
||||||
void util_DestroyDebugReportCallback(struct loader_instance *inst, VkDebugReportCallbackEXT callback,
|
|
||||||
const VkAllocationCallbacks *pAllocator);
|
|
||||||
void util_DestroyDebugReportCallbacks(struct loader_instance *inst, const VkAllocationCallbacks *pAllocator, uint32_t num_callbacks,
|
|
||||||
VkDebugReportCallbackEXT *callbacks);
|
|
||||||
void util_FreeDebugReportCreateInfos(const VkAllocationCallbacks *pAllocator, VkDebugReportCallbackCreateInfoEXT *infos,
|
|
||||||
VkDebugReportCallbackEXT *callbacks);
|
|
|
@ -1,538 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2015-2016 The Khronos Group Inc.
|
|
||||||
* Copyright (c) 2015-2016 Valve Corporation
|
|
||||||
* Copyright (c) 2015-2016 LunarG, 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.
|
|
||||||
*
|
|
||||||
* Author: Jon Ashburn <jon@lunarg.com>
|
|
||||||
* Author: Lenny Komow <lenny@lunarg.com>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "vk_loader_platform.h"
|
|
||||||
#include "loader.h"
|
|
||||||
#if defined(__GNUC__) && !defined(__clang__)
|
|
||||||
#pragma GCC optimize(3) // force gcc to use tail-calls
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Clang-format does not understand macros.
|
|
||||||
// clang-format off
|
|
||||||
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext0(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext1(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext2(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext3(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext4(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext5(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext6(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext7(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext8(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext9(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext10(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext11(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext12(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext13(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext14(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext15(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext16(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext17(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext18(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext19(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext20(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext21(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext22(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext23(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext24(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext25(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext26(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext27(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext28(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext29(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext30(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext31(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext32(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext33(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext34(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext35(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext36(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext37(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext38(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext39(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext40(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext41(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext42(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext43(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext44(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext45(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext46(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext47(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext48(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext49(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext50(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext51(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext52(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext53(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext54(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext55(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext56(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext57(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext58(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext59(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext60(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext61(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext62(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext63(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext64(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext65(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext66(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext67(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext68(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext69(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext70(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext71(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext72(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext73(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext74(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext75(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext76(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext77(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext78(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext79(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext80(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext81(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext82(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext83(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext84(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext85(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext86(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext87(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext88(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext89(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext90(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext91(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext92(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext93(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext94(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext95(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext96(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext97(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext98(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext99(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext100(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext101(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext102(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext103(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext104(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext105(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext106(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext107(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext108(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext109(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext110(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext111(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext112(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext113(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext114(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext115(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext116(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext117(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext118(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext119(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext120(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext121(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext122(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext123(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext124(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext125(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext126(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext127(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext128(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext129(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext130(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext131(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext132(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext133(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext134(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext135(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext136(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext137(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext138(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext139(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext140(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext141(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext142(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext143(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext144(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext145(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext146(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext147(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext148(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext149(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext150(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext151(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext152(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext153(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext154(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext155(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext156(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext157(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext158(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext159(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext160(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext161(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext162(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext163(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext164(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext165(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext166(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext167(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext168(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext169(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext170(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext171(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext172(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext173(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext174(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext175(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext176(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext177(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext178(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext179(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext180(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext181(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext182(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext183(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext184(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext185(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext186(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext187(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext188(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext189(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext190(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext191(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext192(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext193(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext194(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext195(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext196(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext197(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext198(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext199(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext200(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext201(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext202(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext203(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext204(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext205(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext206(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext207(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext208(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext209(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext210(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext211(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext212(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext213(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext214(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext215(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext216(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext217(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext218(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext219(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext220(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext221(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext222(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext223(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext224(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext225(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext226(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext227(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext228(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext229(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext230(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext231(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext232(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext233(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext234(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext235(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext236(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext237(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext238(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext239(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext240(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext241(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext242(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext243(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext244(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext245(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext246(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext247(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext248(VkDevice device);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext249(VkDevice device);
|
|
||||||
|
|
||||||
void *loader_get_dev_ext_trampoline(uint32_t index) {
|
|
||||||
switch (index) {
|
|
||||||
#define CASE_HANDLE(num) case num: return vkdev_ext##num
|
|
||||||
CASE_HANDLE(0);
|
|
||||||
CASE_HANDLE(1);
|
|
||||||
CASE_HANDLE(2);
|
|
||||||
CASE_HANDLE(3);
|
|
||||||
CASE_HANDLE(4);
|
|
||||||
CASE_HANDLE(5);
|
|
||||||
CASE_HANDLE(6);
|
|
||||||
CASE_HANDLE(7);
|
|
||||||
CASE_HANDLE(8);
|
|
||||||
CASE_HANDLE(9);
|
|
||||||
CASE_HANDLE(10);
|
|
||||||
CASE_HANDLE(11);
|
|
||||||
CASE_HANDLE(12);
|
|
||||||
CASE_HANDLE(13);
|
|
||||||
CASE_HANDLE(14);
|
|
||||||
CASE_HANDLE(15);
|
|
||||||
CASE_HANDLE(16);
|
|
||||||
CASE_HANDLE(17);
|
|
||||||
CASE_HANDLE(18);
|
|
||||||
CASE_HANDLE(19);
|
|
||||||
CASE_HANDLE(20);
|
|
||||||
CASE_HANDLE(21);
|
|
||||||
CASE_HANDLE(22);
|
|
||||||
CASE_HANDLE(23);
|
|
||||||
CASE_HANDLE(24);
|
|
||||||
CASE_HANDLE(25);
|
|
||||||
CASE_HANDLE(26);
|
|
||||||
CASE_HANDLE(27);
|
|
||||||
CASE_HANDLE(28);
|
|
||||||
CASE_HANDLE(29);
|
|
||||||
CASE_HANDLE(30);
|
|
||||||
CASE_HANDLE(31);
|
|
||||||
CASE_HANDLE(32);
|
|
||||||
CASE_HANDLE(33);
|
|
||||||
CASE_HANDLE(34);
|
|
||||||
CASE_HANDLE(35);
|
|
||||||
CASE_HANDLE(36);
|
|
||||||
CASE_HANDLE(37);
|
|
||||||
CASE_HANDLE(38);
|
|
||||||
CASE_HANDLE(39);
|
|
||||||
CASE_HANDLE(40);
|
|
||||||
CASE_HANDLE(41);
|
|
||||||
CASE_HANDLE(42);
|
|
||||||
CASE_HANDLE(43);
|
|
||||||
CASE_HANDLE(44);
|
|
||||||
CASE_HANDLE(45);
|
|
||||||
CASE_HANDLE(46);
|
|
||||||
CASE_HANDLE(47);
|
|
||||||
CASE_HANDLE(48);
|
|
||||||
CASE_HANDLE(49);
|
|
||||||
CASE_HANDLE(50);
|
|
||||||
CASE_HANDLE(51);
|
|
||||||
CASE_HANDLE(52);
|
|
||||||
CASE_HANDLE(53);
|
|
||||||
CASE_HANDLE(54);
|
|
||||||
CASE_HANDLE(55);
|
|
||||||
CASE_HANDLE(56);
|
|
||||||
CASE_HANDLE(57);
|
|
||||||
CASE_HANDLE(58);
|
|
||||||
CASE_HANDLE(59);
|
|
||||||
CASE_HANDLE(60);
|
|
||||||
CASE_HANDLE(61);
|
|
||||||
CASE_HANDLE(62);
|
|
||||||
CASE_HANDLE(63);
|
|
||||||
CASE_HANDLE(64);
|
|
||||||
CASE_HANDLE(65);
|
|
||||||
CASE_HANDLE(66);
|
|
||||||
CASE_HANDLE(67);
|
|
||||||
CASE_HANDLE(68);
|
|
||||||
CASE_HANDLE(69);
|
|
||||||
CASE_HANDLE(70);
|
|
||||||
CASE_HANDLE(71);
|
|
||||||
CASE_HANDLE(72);
|
|
||||||
CASE_HANDLE(73);
|
|
||||||
CASE_HANDLE(74);
|
|
||||||
CASE_HANDLE(75);
|
|
||||||
CASE_HANDLE(76);
|
|
||||||
CASE_HANDLE(77);
|
|
||||||
CASE_HANDLE(78);
|
|
||||||
CASE_HANDLE(79);
|
|
||||||
CASE_HANDLE(80);
|
|
||||||
CASE_HANDLE(81);
|
|
||||||
CASE_HANDLE(82);
|
|
||||||
CASE_HANDLE(83);
|
|
||||||
CASE_HANDLE(84);
|
|
||||||
CASE_HANDLE(85);
|
|
||||||
CASE_HANDLE(86);
|
|
||||||
CASE_HANDLE(87);
|
|
||||||
CASE_HANDLE(88);
|
|
||||||
CASE_HANDLE(89);
|
|
||||||
CASE_HANDLE(90);
|
|
||||||
CASE_HANDLE(91);
|
|
||||||
CASE_HANDLE(92);
|
|
||||||
CASE_HANDLE(93);
|
|
||||||
CASE_HANDLE(94);
|
|
||||||
CASE_HANDLE(95);
|
|
||||||
CASE_HANDLE(96);
|
|
||||||
CASE_HANDLE(97);
|
|
||||||
CASE_HANDLE(98);
|
|
||||||
CASE_HANDLE(99);
|
|
||||||
CASE_HANDLE(100);
|
|
||||||
CASE_HANDLE(101);
|
|
||||||
CASE_HANDLE(102);
|
|
||||||
CASE_HANDLE(103);
|
|
||||||
CASE_HANDLE(104);
|
|
||||||
CASE_HANDLE(105);
|
|
||||||
CASE_HANDLE(106);
|
|
||||||
CASE_HANDLE(107);
|
|
||||||
CASE_HANDLE(108);
|
|
||||||
CASE_HANDLE(109);
|
|
||||||
CASE_HANDLE(110);
|
|
||||||
CASE_HANDLE(111);
|
|
||||||
CASE_HANDLE(112);
|
|
||||||
CASE_HANDLE(113);
|
|
||||||
CASE_HANDLE(114);
|
|
||||||
CASE_HANDLE(115);
|
|
||||||
CASE_HANDLE(116);
|
|
||||||
CASE_HANDLE(117);
|
|
||||||
CASE_HANDLE(118);
|
|
||||||
CASE_HANDLE(119);
|
|
||||||
CASE_HANDLE(120);
|
|
||||||
CASE_HANDLE(121);
|
|
||||||
CASE_HANDLE(122);
|
|
||||||
CASE_HANDLE(123);
|
|
||||||
CASE_HANDLE(124);
|
|
||||||
CASE_HANDLE(125);
|
|
||||||
CASE_HANDLE(126);
|
|
||||||
CASE_HANDLE(127);
|
|
||||||
CASE_HANDLE(128);
|
|
||||||
CASE_HANDLE(129);
|
|
||||||
CASE_HANDLE(130);
|
|
||||||
CASE_HANDLE(131);
|
|
||||||
CASE_HANDLE(132);
|
|
||||||
CASE_HANDLE(133);
|
|
||||||
CASE_HANDLE(134);
|
|
||||||
CASE_HANDLE(135);
|
|
||||||
CASE_HANDLE(136);
|
|
||||||
CASE_HANDLE(137);
|
|
||||||
CASE_HANDLE(138);
|
|
||||||
CASE_HANDLE(139);
|
|
||||||
CASE_HANDLE(140);
|
|
||||||
CASE_HANDLE(141);
|
|
||||||
CASE_HANDLE(142);
|
|
||||||
CASE_HANDLE(143);
|
|
||||||
CASE_HANDLE(144);
|
|
||||||
CASE_HANDLE(145);
|
|
||||||
CASE_HANDLE(146);
|
|
||||||
CASE_HANDLE(147);
|
|
||||||
CASE_HANDLE(148);
|
|
||||||
CASE_HANDLE(149);
|
|
||||||
CASE_HANDLE(150);
|
|
||||||
CASE_HANDLE(151);
|
|
||||||
CASE_HANDLE(152);
|
|
||||||
CASE_HANDLE(153);
|
|
||||||
CASE_HANDLE(154);
|
|
||||||
CASE_HANDLE(155);
|
|
||||||
CASE_HANDLE(156);
|
|
||||||
CASE_HANDLE(157);
|
|
||||||
CASE_HANDLE(158);
|
|
||||||
CASE_HANDLE(159);
|
|
||||||
CASE_HANDLE(160);
|
|
||||||
CASE_HANDLE(161);
|
|
||||||
CASE_HANDLE(162);
|
|
||||||
CASE_HANDLE(163);
|
|
||||||
CASE_HANDLE(164);
|
|
||||||
CASE_HANDLE(165);
|
|
||||||
CASE_HANDLE(166);
|
|
||||||
CASE_HANDLE(167);
|
|
||||||
CASE_HANDLE(168);
|
|
||||||
CASE_HANDLE(169);
|
|
||||||
CASE_HANDLE(170);
|
|
||||||
CASE_HANDLE(171);
|
|
||||||
CASE_HANDLE(172);
|
|
||||||
CASE_HANDLE(173);
|
|
||||||
CASE_HANDLE(174);
|
|
||||||
CASE_HANDLE(175);
|
|
||||||
CASE_HANDLE(176);
|
|
||||||
CASE_HANDLE(177);
|
|
||||||
CASE_HANDLE(178);
|
|
||||||
CASE_HANDLE(179);
|
|
||||||
CASE_HANDLE(180);
|
|
||||||
CASE_HANDLE(181);
|
|
||||||
CASE_HANDLE(182);
|
|
||||||
CASE_HANDLE(183);
|
|
||||||
CASE_HANDLE(184);
|
|
||||||
CASE_HANDLE(185);
|
|
||||||
CASE_HANDLE(186);
|
|
||||||
CASE_HANDLE(187);
|
|
||||||
CASE_HANDLE(188);
|
|
||||||
CASE_HANDLE(189);
|
|
||||||
CASE_HANDLE(190);
|
|
||||||
CASE_HANDLE(191);
|
|
||||||
CASE_HANDLE(192);
|
|
||||||
CASE_HANDLE(193);
|
|
||||||
CASE_HANDLE(194);
|
|
||||||
CASE_HANDLE(195);
|
|
||||||
CASE_HANDLE(196);
|
|
||||||
CASE_HANDLE(197);
|
|
||||||
CASE_HANDLE(198);
|
|
||||||
CASE_HANDLE(199);
|
|
||||||
CASE_HANDLE(200);
|
|
||||||
CASE_HANDLE(201);
|
|
||||||
CASE_HANDLE(202);
|
|
||||||
CASE_HANDLE(203);
|
|
||||||
CASE_HANDLE(204);
|
|
||||||
CASE_HANDLE(205);
|
|
||||||
CASE_HANDLE(206);
|
|
||||||
CASE_HANDLE(207);
|
|
||||||
CASE_HANDLE(208);
|
|
||||||
CASE_HANDLE(209);
|
|
||||||
CASE_HANDLE(210);
|
|
||||||
CASE_HANDLE(211);
|
|
||||||
CASE_HANDLE(212);
|
|
||||||
CASE_HANDLE(213);
|
|
||||||
CASE_HANDLE(214);
|
|
||||||
CASE_HANDLE(215);
|
|
||||||
CASE_HANDLE(216);
|
|
||||||
CASE_HANDLE(217);
|
|
||||||
CASE_HANDLE(218);
|
|
||||||
CASE_HANDLE(219);
|
|
||||||
CASE_HANDLE(220);
|
|
||||||
CASE_HANDLE(221);
|
|
||||||
CASE_HANDLE(222);
|
|
||||||
CASE_HANDLE(223);
|
|
||||||
CASE_HANDLE(224);
|
|
||||||
CASE_HANDLE(225);
|
|
||||||
CASE_HANDLE(226);
|
|
||||||
CASE_HANDLE(227);
|
|
||||||
CASE_HANDLE(228);
|
|
||||||
CASE_HANDLE(229);
|
|
||||||
CASE_HANDLE(230);
|
|
||||||
CASE_HANDLE(231);
|
|
||||||
CASE_HANDLE(232);
|
|
||||||
CASE_HANDLE(233);
|
|
||||||
CASE_HANDLE(234);
|
|
||||||
CASE_HANDLE(235);
|
|
||||||
CASE_HANDLE(236);
|
|
||||||
CASE_HANDLE(237);
|
|
||||||
CASE_HANDLE(238);
|
|
||||||
CASE_HANDLE(239);
|
|
||||||
CASE_HANDLE(240);
|
|
||||||
CASE_HANDLE(241);
|
|
||||||
CASE_HANDLE(242);
|
|
||||||
CASE_HANDLE(243);
|
|
||||||
CASE_HANDLE(244);
|
|
||||||
CASE_HANDLE(245);
|
|
||||||
CASE_HANDLE(246);
|
|
||||||
CASE_HANDLE(247);
|
|
||||||
CASE_HANDLE(248);
|
|
||||||
CASE_HANDLE(249);
|
|
||||||
}
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
|
|
@ -1,128 +0,0 @@
|
||||||
/*
|
|
||||||
|
|
||||||
Implementation of POSIX directory browsing functions and types for Win32.
|
|
||||||
|
|
||||||
Author: Kevlin Henney (kevlin@acm.org, kevlin@curbralan.com)
|
|
||||||
History: Created March 1997. Updated June 2003 and July 2012.
|
|
||||||
Rights: See end of file.
|
|
||||||
|
|
||||||
*/
|
|
||||||
#include "dirent_on_windows.h"
|
|
||||||
#include <errno.h>
|
|
||||||
#include <io.h> /* _findfirst and _findnext set errno iff they return -1 */
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include "vk_loader_platform.h"
|
|
||||||
#include "loader.h"
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
typedef ptrdiff_t handle_type; /* C99's intptr_t not sufficiently portable */
|
|
||||||
|
|
||||||
struct DIR {
|
|
||||||
handle_type handle; /* -1 for failed rewind */
|
|
||||||
struct _finddata_t info;
|
|
||||||
struct dirent result; /* d_name null iff first time */
|
|
||||||
char *name; /* null-terminated char string */
|
|
||||||
};
|
|
||||||
|
|
||||||
DIR *opendir(const char *name) {
|
|
||||||
DIR *dir = 0;
|
|
||||||
|
|
||||||
if (name && name[0]) {
|
|
||||||
size_t base_length = strlen(name);
|
|
||||||
const char *all = /* search pattern must end with suitable wildcard */
|
|
||||||
strchr("/\\", name[base_length - 1]) ? "*" : "/*";
|
|
||||||
|
|
||||||
if ((dir = (DIR *)loader_instance_tls_heap_alloc(sizeof *dir)) != 0 &&
|
|
||||||
(dir->name = (char *)loader_instance_tls_heap_alloc(base_length + strlen(all) + 1)) != 0) {
|
|
||||||
strcat(strcpy(dir->name, name), all);
|
|
||||||
|
|
||||||
if ((dir->handle = (handle_type)_findfirst(dir->name, &dir->info)) != -1) {
|
|
||||||
dir->result.d_name = 0;
|
|
||||||
} else /* rollback */
|
|
||||||
{
|
|
||||||
loader_instance_tls_heap_free(dir->name);
|
|
||||||
loader_instance_tls_heap_free(dir);
|
|
||||||
dir = 0;
|
|
||||||
}
|
|
||||||
} else /* rollback */
|
|
||||||
{
|
|
||||||
loader_instance_tls_heap_free(dir);
|
|
||||||
dir = 0;
|
|
||||||
errno = ENOMEM;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
errno = EINVAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
return dir;
|
|
||||||
}
|
|
||||||
|
|
||||||
int closedir(DIR *dir) {
|
|
||||||
int result = -1;
|
|
||||||
|
|
||||||
if (dir) {
|
|
||||||
if (dir->handle != -1) {
|
|
||||||
result = _findclose(dir->handle);
|
|
||||||
}
|
|
||||||
|
|
||||||
loader_instance_tls_heap_free(dir->name);
|
|
||||||
loader_instance_tls_heap_free(dir);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (result == -1) /* map all errors to EBADF */
|
|
||||||
{
|
|
||||||
errno = EBADF;
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
struct dirent *readdir(DIR *dir) {
|
|
||||||
struct dirent *result = 0;
|
|
||||||
|
|
||||||
if (dir && dir->handle != -1) {
|
|
||||||
if (!dir->result.d_name || _findnext(dir->handle, &dir->info) != -1) {
|
|
||||||
result = &dir->result;
|
|
||||||
result->d_name = dir->info.name;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
errno = EBADF;
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
void rewinddir(DIR *dir) {
|
|
||||||
if (dir && dir->handle != -1) {
|
|
||||||
_findclose(dir->handle);
|
|
||||||
dir->handle = (handle_type)_findfirst(dir->name, &dir->info);
|
|
||||||
dir->result.d_name = 0;
|
|
||||||
} else {
|
|
||||||
errno = EBADF;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
|
||||||
|
|
||||||
Copyright Kevlin Henney, 1997, 2003, 2012. All rights reserved.
|
|
||||||
Copyright (c) 2015 The Khronos Group Inc.
|
|
||||||
Copyright (c) 2015 Valve Corporation
|
|
||||||
Copyright (c) 2015 LunarG, Inc.
|
|
||||||
Permission to use, copy, modify, and distribute this software and its
|
|
||||||
documentation for any purpose is hereby granted without fee, provided
|
|
||||||
that this copyright and permissions notice appear in all copies and
|
|
||||||
derivatives.
|
|
||||||
|
|
||||||
This software is supplied "as is" without express or implied warranty.
|
|
||||||
|
|
||||||
But that said, if there are any problems please get in touch.
|
|
||||||
|
|
||||||
*/
|
|
|
@ -1,51 +0,0 @@
|
||||||
#ifndef DIRENT_INCLUDED
|
|
||||||
#define DIRENT_INCLUDED
|
|
||||||
|
|
||||||
/*
|
|
||||||
|
|
||||||
Declaration of POSIX directory browsing functions and types for Win32.
|
|
||||||
|
|
||||||
Author: Kevlin Henney (kevlin@acm.org, kevlin@curbralan.com)
|
|
||||||
History: Created March 1997. Updated June 2003.
|
|
||||||
Rights: See end of file.
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
typedef struct DIR DIR;
|
|
||||||
|
|
||||||
struct dirent {
|
|
||||||
char *d_name;
|
|
||||||
};
|
|
||||||
|
|
||||||
DIR *opendir(const char *);
|
|
||||||
int closedir(DIR *);
|
|
||||||
struct dirent *readdir(DIR *);
|
|
||||||
void rewinddir(DIR *);
|
|
||||||
|
|
||||||
/*
|
|
||||||
|
|
||||||
Copyright Kevlin Henney, 1997, 2003. All rights reserved.
|
|
||||||
Copyright (c) 2015 The Khronos Group Inc.
|
|
||||||
Copyright (c) 2015 Valve Corporation
|
|
||||||
Copyright (c) 2015 LunarG, Inc.
|
|
||||||
|
|
||||||
Permission to use, copy, modify, and distribute this software and its
|
|
||||||
documentation for any purpose is hereby granted without fee, provided
|
|
||||||
that this copyright and permissions notice appear in all copies and
|
|
||||||
derivatives.
|
|
||||||
|
|
||||||
This software is supplied "as is" without express or implied warranty.
|
|
||||||
|
|
||||||
But that said, if there are any problems please get in touch.
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -1,23 +0,0 @@
|
||||||
#include "dxgi_loader.h"
|
|
||||||
|
|
||||||
#include <strsafe.h>
|
|
||||||
|
|
||||||
static HMODULE load_dxgi_module() {
|
|
||||||
TCHAR systemPath[MAX_PATH] = "";
|
|
||||||
GetSystemDirectory(systemPath, MAX_PATH);
|
|
||||||
StringCchCat(systemPath, MAX_PATH, TEXT("\\dxgi.dll"));
|
|
||||||
|
|
||||||
return LoadLibrary(systemPath);
|
|
||||||
}
|
|
||||||
|
|
||||||
typedef HRESULT (APIENTRY *PFN_CreateDXGIFactory1)(REFIID riid, void **ppFactory);
|
|
||||||
|
|
||||||
HRESULT dyn_CreateDXGIFactory1(REFIID riid, void **ppFactory) {
|
|
||||||
PFN_CreateDXGIFactory1 fpCreateDXGIFactory1 =
|
|
||||||
(PFN_CreateDXGIFactory1)GetProcAddress(load_dxgi_module(), "CreateDXGIFactory1");
|
|
||||||
|
|
||||||
if (fpCreateDXGIFactory1 != NULL)
|
|
||||||
return fpCreateDXGIFactory1(riid, ppFactory);
|
|
||||||
|
|
||||||
return DXGI_ERROR_NOT_FOUND;
|
|
||||||
}
|
|
|
@ -1,8 +0,0 @@
|
||||||
#ifndef DXGI_LOADER_H
|
|
||||||
#define DXGI_LOADER_H
|
|
||||||
|
|
||||||
#include <dxgi1_2.h>
|
|
||||||
|
|
||||||
HRESULT dyn_CreateDXGIFactory1(REFIID riid, void **ppFactory);
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -1,315 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2015-2017 The Khronos Group Inc.
|
|
||||||
* Copyright (c) 2015-2017 Valve Corporation
|
|
||||||
* Copyright (c) 2015-2017 LunarG, 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.
|
|
||||||
*
|
|
||||||
* Author: Mark Young <marky@lunarg.com>
|
|
||||||
* Author: Lenny Komow <lenny@lunarg.com>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _GNU_SOURCE
|
|
||||||
#define _GNU_SOURCE
|
|
||||||
#endif
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include "vk_loader_platform.h"
|
|
||||||
#include "loader.h"
|
|
||||||
#include "vk_loader_extensions.h"
|
|
||||||
#include "../vk_icd.h"
|
|
||||||
#include "wsi.h"
|
|
||||||
#include "debug_utils.h"
|
|
||||||
|
|
||||||
// ---- Manually added trampoline/terminator functions
|
|
||||||
|
|
||||||
// These functions, for whatever reason, require more complex changes than
|
|
||||||
// can easily be automatically generated.
|
|
||||||
|
|
||||||
// ---- VK_NV_external_memory_capabilities extension trampoline/terminators
|
|
||||||
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL
|
|
||||||
GetPhysicalDeviceExternalImageFormatPropertiesNV(
|
|
||||||
VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type,
|
|
||||||
VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags,
|
|
||||||
VkExternalMemoryHandleTypeFlagsNV externalHandleType,
|
|
||||||
VkExternalImageFormatPropertiesNV *pExternalImageFormatProperties) {
|
|
||||||
const VkLayerInstanceDispatchTable *disp;
|
|
||||||
VkPhysicalDevice unwrapped_phys_dev = loader_unwrap_physical_device(physicalDevice);
|
|
||||||
disp = loader_get_instance_layer_dispatch(physicalDevice);
|
|
||||||
|
|
||||||
return disp->GetPhysicalDeviceExternalImageFormatPropertiesNV(
|
|
||||||
unwrapped_phys_dev, format, type, tiling, usage, flags,
|
|
||||||
externalHandleType, pExternalImageFormatProperties);
|
|
||||||
}
|
|
||||||
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL
|
|
||||||
terminator_GetPhysicalDeviceExternalImageFormatPropertiesNV(
|
|
||||||
VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type,
|
|
||||||
VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags,
|
|
||||||
VkExternalMemoryHandleTypeFlagsNV externalHandleType,
|
|
||||||
VkExternalImageFormatPropertiesNV *pExternalImageFormatProperties) {
|
|
||||||
struct loader_physical_device_term *phys_dev_term =
|
|
||||||
(struct loader_physical_device_term *)physicalDevice;
|
|
||||||
struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
|
|
||||||
|
|
||||||
if (!icd_term->dispatch.GetPhysicalDeviceExternalImageFormatPropertiesNV) {
|
|
||||||
if (externalHandleType) {
|
|
||||||
return VK_ERROR_FORMAT_NOT_SUPPORTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!icd_term->dispatch.GetPhysicalDeviceImageFormatProperties) {
|
|
||||||
return VK_ERROR_INITIALIZATION_FAILED;
|
|
||||||
}
|
|
||||||
|
|
||||||
pExternalImageFormatProperties->externalMemoryFeatures = 0;
|
|
||||||
pExternalImageFormatProperties->exportFromImportedHandleTypes = 0;
|
|
||||||
pExternalImageFormatProperties->compatibleHandleTypes = 0;
|
|
||||||
|
|
||||||
return icd_term->dispatch.GetPhysicalDeviceImageFormatProperties(
|
|
||||||
phys_dev_term->phys_dev, format, type, tiling, usage, flags,
|
|
||||||
&pExternalImageFormatProperties->imageFormatProperties);
|
|
||||||
}
|
|
||||||
|
|
||||||
return icd_term->dispatch.GetPhysicalDeviceExternalImageFormatPropertiesNV(
|
|
||||||
phys_dev_term->phys_dev, format, type, tiling, usage, flags,
|
|
||||||
externalHandleType, pExternalImageFormatProperties);
|
|
||||||
}
|
|
||||||
|
|
||||||
// ---- VK_EXT_display_surface_counter extension trampoline/terminators
|
|
||||||
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceSurfaceCapabilities2EXT(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface,
|
|
||||||
VkSurfaceCapabilities2EXT *pSurfaceCapabilities) {
|
|
||||||
const VkLayerInstanceDispatchTable *disp;
|
|
||||||
VkPhysicalDevice unwrapped_phys_dev = loader_unwrap_physical_device(physicalDevice);
|
|
||||||
disp = loader_get_instance_layer_dispatch(physicalDevice);
|
|
||||||
return disp->GetPhysicalDeviceSurfaceCapabilities2EXT(unwrapped_phys_dev, surface, pSurfaceCapabilities);
|
|
||||||
}
|
|
||||||
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceSurfaceCapabilities2EXT(
|
|
||||||
VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilities2EXT *pSurfaceCapabilities) {
|
|
||||||
struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)physicalDevice;
|
|
||||||
struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
|
|
||||||
|
|
||||||
VkIcdSurface *icd_surface = (VkIcdSurface *)(surface);
|
|
||||||
uint8_t icd_index = phys_dev_term->icd_index;
|
|
||||||
|
|
||||||
// Unwrap the surface if needed
|
|
||||||
VkSurfaceKHR unwrapped_surface = surface;
|
|
||||||
if (icd_surface->real_icd_surfaces != NULL && (void *)icd_surface->real_icd_surfaces[icd_index] != NULL) {
|
|
||||||
unwrapped_surface = icd_surface->real_icd_surfaces[icd_index];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (icd_term->dispatch.GetPhysicalDeviceSurfaceCapabilities2EXT != NULL) {
|
|
||||||
// Pass the call to the driver
|
|
||||||
return icd_term->dispatch.GetPhysicalDeviceSurfaceCapabilities2EXT(phys_dev_term->phys_dev, unwrapped_surface,
|
|
||||||
pSurfaceCapabilities);
|
|
||||||
} else {
|
|
||||||
// Emulate the call
|
|
||||||
loader_log(icd_term->this_instance, VK_DEBUG_REPORT_INFORMATION_BIT_EXT, 0,
|
|
||||||
"vkGetPhysicalDeviceSurfaceCapabilities2EXT: Emulating call in ICD \"%s\" using "
|
|
||||||
"vkGetPhysicalDeviceSurfaceCapabilitiesKHR",
|
|
||||||
icd_term->scanned_icd->lib_name);
|
|
||||||
|
|
||||||
VkSurfaceCapabilitiesKHR surface_caps;
|
|
||||||
VkResult res =
|
|
||||||
icd_term->dispatch.GetPhysicalDeviceSurfaceCapabilitiesKHR(phys_dev_term->phys_dev, unwrapped_surface, &surface_caps);
|
|
||||||
pSurfaceCapabilities->minImageCount = surface_caps.minImageCount;
|
|
||||||
pSurfaceCapabilities->maxImageCount = surface_caps.maxImageCount;
|
|
||||||
pSurfaceCapabilities->currentExtent = surface_caps.currentExtent;
|
|
||||||
pSurfaceCapabilities->minImageExtent = surface_caps.minImageExtent;
|
|
||||||
pSurfaceCapabilities->maxImageExtent = surface_caps.maxImageExtent;
|
|
||||||
pSurfaceCapabilities->maxImageArrayLayers = surface_caps.maxImageArrayLayers;
|
|
||||||
pSurfaceCapabilities->supportedTransforms = surface_caps.supportedTransforms;
|
|
||||||
pSurfaceCapabilities->currentTransform = surface_caps.currentTransform;
|
|
||||||
pSurfaceCapabilities->supportedCompositeAlpha = surface_caps.supportedCompositeAlpha;
|
|
||||||
pSurfaceCapabilities->supportedUsageFlags = surface_caps.supportedUsageFlags;
|
|
||||||
pSurfaceCapabilities->supportedSurfaceCounters = 0;
|
|
||||||
|
|
||||||
if (pSurfaceCapabilities->pNext != NULL) {
|
|
||||||
loader_log(icd_term->this_instance, VK_DEBUG_REPORT_WARNING_BIT_EXT, 0,
|
|
||||||
"vkGetPhysicalDeviceSurfaceCapabilities2EXT: Emulation found unrecognized structure type in "
|
|
||||||
"pSurfaceCapabilities->pNext - this struct will be ignored");
|
|
||||||
}
|
|
||||||
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// ---- VK_EXT_direct_mode_display extension trampoline/terminators
|
|
||||||
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL ReleaseDisplayEXT(VkPhysicalDevice physicalDevice, VkDisplayKHR display) {
|
|
||||||
const VkLayerInstanceDispatchTable *disp;
|
|
||||||
VkPhysicalDevice unwrapped_phys_dev = loader_unwrap_physical_device(physicalDevice);
|
|
||||||
disp = loader_get_instance_layer_dispatch(physicalDevice);
|
|
||||||
return disp->ReleaseDisplayEXT(unwrapped_phys_dev, display);
|
|
||||||
}
|
|
||||||
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_ReleaseDisplayEXT(VkPhysicalDevice physicalDevice, VkDisplayKHR display) {
|
|
||||||
struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)physicalDevice;
|
|
||||||
struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
|
|
||||||
|
|
||||||
if (icd_term->dispatch.ReleaseDisplayEXT == NULL) {
|
|
||||||
loader_log(icd_term->this_instance, VK_DEBUG_REPORT_ERROR_BIT_EXT, 0,
|
|
||||||
"ICD \"%s\" associated with VkPhysicalDevice does not support vkReleaseDisplayEXT - Consequently, the call is "
|
|
||||||
"invalid because it should not be possible to acquire a display on this device",
|
|
||||||
icd_term->scanned_icd->lib_name);
|
|
||||||
}
|
|
||||||
return icd_term->dispatch.ReleaseDisplayEXT(phys_dev_term->phys_dev, display);
|
|
||||||
}
|
|
||||||
|
|
||||||
// ---- VK_EXT_acquire_xlib_display extension trampoline/terminators
|
|
||||||
|
|
||||||
#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL AcquireXlibDisplayEXT(VkPhysicalDevice physicalDevice, Display *dpy, VkDisplayKHR display) {
|
|
||||||
const VkLayerInstanceDispatchTable *disp;
|
|
||||||
VkPhysicalDevice unwrapped_phys_dev = loader_unwrap_physical_device(physicalDevice);
|
|
||||||
disp = loader_get_instance_layer_dispatch(physicalDevice);
|
|
||||||
return disp->AcquireXlibDisplayEXT(unwrapped_phys_dev, dpy, display);
|
|
||||||
}
|
|
||||||
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_AcquireXlibDisplayEXT(VkPhysicalDevice physicalDevice, Display *dpy,
|
|
||||||
VkDisplayKHR display) {
|
|
||||||
struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)physicalDevice;
|
|
||||||
struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
|
|
||||||
|
|
||||||
if (icd_term->dispatch.AcquireXlibDisplayEXT != NULL) {
|
|
||||||
// Pass the call to the driver
|
|
||||||
return icd_term->dispatch.AcquireXlibDisplayEXT(phys_dev_term->phys_dev, dpy, display);
|
|
||||||
} else {
|
|
||||||
// Emulate the call
|
|
||||||
loader_log(icd_term->this_instance, VK_DEBUG_REPORT_INFORMATION_BIT_EXT, 0,
|
|
||||||
"vkAcquireXLibDisplayEXT: Emulating call in ICD \"%s\" by returning error", icd_term->scanned_icd->lib_name);
|
|
||||||
|
|
||||||
// Fail for the unsupported command
|
|
||||||
return VK_ERROR_INITIALIZATION_FAILED;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL GetRandROutputDisplayEXT(VkPhysicalDevice physicalDevice, Display *dpy, RROutput rrOutput,
|
|
||||||
VkDisplayKHR *pDisplay) {
|
|
||||||
const VkLayerInstanceDispatchTable *disp;
|
|
||||||
VkPhysicalDevice unwrapped_phys_dev = loader_unwrap_physical_device(physicalDevice);
|
|
||||||
disp = loader_get_instance_layer_dispatch(physicalDevice);
|
|
||||||
return disp->GetRandROutputDisplayEXT(unwrapped_phys_dev, dpy, rrOutput, pDisplay);
|
|
||||||
}
|
|
||||||
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_GetRandROutputDisplayEXT(VkPhysicalDevice physicalDevice, Display *dpy, RROutput rrOutput,
|
|
||||||
VkDisplayKHR *pDisplay) {
|
|
||||||
struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)physicalDevice;
|
|
||||||
struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
|
|
||||||
|
|
||||||
if (icd_term->dispatch.GetRandROutputDisplayEXT != NULL) {
|
|
||||||
// Pass the call to the driver
|
|
||||||
return icd_term->dispatch.GetRandROutputDisplayEXT(phys_dev_term->phys_dev, dpy, rrOutput, pDisplay);
|
|
||||||
} else {
|
|
||||||
// Emulate the call
|
|
||||||
loader_log(icd_term->this_instance, VK_DEBUG_REPORT_INFORMATION_BIT_EXT, 0,
|
|
||||||
"vkGetRandROutputDisplayEXT: Emulating call in ICD \"%s\" by returning null display",
|
|
||||||
icd_term->scanned_icd->lib_name);
|
|
||||||
|
|
||||||
// Return a null handle to indicate this can't be done
|
|
||||||
*pDisplay = VK_NULL_HANDLE;
|
|
||||||
return VK_SUCCESS;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT
|
|
||||||
|
|
||||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceSurfacePresentModes2EXT(
|
|
||||||
VkPhysicalDevice physicalDevice,
|
|
||||||
const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
|
|
||||||
uint32_t* pPresentModeCount,
|
|
||||||
VkPresentModeKHR* pPresentModes) {
|
|
||||||
const VkLayerInstanceDispatchTable *disp;
|
|
||||||
VkPhysicalDevice unwrapped_phys_dev = loader_unwrap_physical_device(physicalDevice);
|
|
||||||
disp = loader_get_instance_layer_dispatch(physicalDevice);
|
|
||||||
return disp->GetPhysicalDeviceSurfacePresentModes2EXT(unwrapped_phys_dev, pSurfaceInfo, pPresentModeCount, pPresentModes);
|
|
||||||
}
|
|
||||||
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceSurfacePresentModes2EXT(
|
|
||||||
VkPhysicalDevice physicalDevice,
|
|
||||||
const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
|
|
||||||
uint32_t* pPresentModeCount,
|
|
||||||
VkPresentModeKHR* pPresentModes) {
|
|
||||||
struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)physicalDevice;
|
|
||||||
struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
|
|
||||||
if (NULL == icd_term->dispatch.GetPhysicalDeviceSurfacePresentModes2EXT) {
|
|
||||||
loader_log(icd_term->this_instance, VK_DEBUG_REPORT_ERROR_BIT_EXT, 0,
|
|
||||||
"ICD associated with VkPhysicalDevice does not support GetPhysicalDeviceSurfacePresentModes2EXT");
|
|
||||||
}
|
|
||||||
VkIcdSurface *icd_surface = (VkIcdSurface *)(pSurfaceInfo->surface);
|
|
||||||
uint8_t icd_index = phys_dev_term->icd_index;
|
|
||||||
if (NULL != icd_surface->real_icd_surfaces && NULL != (void *)icd_surface->real_icd_surfaces[icd_index]) {
|
|
||||||
const VkPhysicalDeviceSurfaceInfo2KHR surface_info_copy = {
|
|
||||||
.sType = pSurfaceInfo->sType,
|
|
||||||
.pNext = pSurfaceInfo->pNext,
|
|
||||||
.surface = icd_surface->real_icd_surfaces[icd_index],
|
|
||||||
};
|
|
||||||
return icd_term->dispatch.GetPhysicalDeviceSurfacePresentModes2EXT(phys_dev_term->phys_dev, &surface_info_copy, pPresentModeCount, pPresentModes);
|
|
||||||
}
|
|
||||||
return icd_term->dispatch.GetPhysicalDeviceSurfacePresentModes2EXT(phys_dev_term->phys_dev, pSurfaceInfo, pPresentModeCount, pPresentModes);
|
|
||||||
}
|
|
||||||
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL GetDeviceGroupSurfacePresentModes2EXT(
|
|
||||||
VkDevice device,
|
|
||||||
const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
|
|
||||||
VkDeviceGroupPresentModeFlagsKHR* pModes) {
|
|
||||||
const VkLayerDispatchTable *disp = loader_get_dispatch(device);
|
|
||||||
return disp->GetDeviceGroupSurfacePresentModes2EXT(device, pSurfaceInfo, pModes);
|
|
||||||
}
|
|
||||||
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_GetDeviceGroupSurfacePresentModes2EXT(
|
|
||||||
VkDevice device,
|
|
||||||
const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
|
|
||||||
VkDeviceGroupPresentModeFlagsKHR* pModes) {
|
|
||||||
uint32_t icd_index = 0;
|
|
||||||
struct loader_device *dev;
|
|
||||||
struct loader_icd_term *icd_term = loader_get_icd_and_device(device, &dev, &icd_index);
|
|
||||||
if (NULL != icd_term && NULL != icd_term->dispatch.GetDeviceGroupSurfacePresentModes2EXT) {
|
|
||||||
VkIcdSurface *icd_surface = (VkIcdSurface *)(uintptr_t)pSurfaceInfo->surface;
|
|
||||||
if (NULL != icd_surface->real_icd_surfaces && (VkSurfaceKHR)NULL != icd_surface->real_icd_surfaces[icd_index]) {
|
|
||||||
const VkPhysicalDeviceSurfaceInfo2KHR surface_info_copy = {
|
|
||||||
.sType = pSurfaceInfo->sType,
|
|
||||||
.pNext = pSurfaceInfo->pNext,
|
|
||||||
.surface = icd_surface->real_icd_surfaces[icd_index],
|
|
||||||
};
|
|
||||||
return icd_term->dispatch.GetDeviceGroupSurfacePresentModes2EXT(device, &surface_info_copy, pModes);
|
|
||||||
}
|
|
||||||
return icd_term->dispatch.GetDeviceGroupSurfacePresentModes2EXT(device, pSurfaceInfo, pModes);
|
|
||||||
}
|
|
||||||
return VK_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif // VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
|
|
||||||
// ---- VK_EXT_tooling_info extension trampoline/terminators
|
|
||||||
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceToolPropertiesEXT(
|
|
||||||
VkPhysicalDevice physicalDevice,
|
|
||||||
uint32_t* pToolCount,
|
|
||||||
VkPhysicalDeviceToolPropertiesEXT* pToolProperties) {
|
|
||||||
const VkLayerInstanceDispatchTable *disp;
|
|
||||||
VkPhysicalDevice unwrapped_phys_dev = loader_unwrap_physical_device(physicalDevice);
|
|
||||||
disp = loader_get_instance_layer_dispatch(physicalDevice);
|
|
||||||
return disp->GetPhysicalDeviceToolPropertiesEXT(unwrapped_phys_dev, pToolCount, pToolProperties);
|
|
||||||
}
|
|
||||||
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceToolPropertiesEXT(
|
|
||||||
VkPhysicalDevice physicalDevice,
|
|
||||||
uint32_t* pToolCount,
|
|
||||||
VkPhysicalDeviceToolPropertiesEXT* pToolProperties) {
|
|
||||||
return VK_SUCCESS;
|
|
||||||
}
|
|
|
@ -1,100 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2015-2017 The Khronos Group Inc.
|
|
||||||
* Copyright (c) 2015-2017 Valve Corporation
|
|
||||||
* Copyright (c) 2015-2017 LunarG, 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.
|
|
||||||
*
|
|
||||||
* Author: Mark Young <marky@lunarg.com>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
// ---- Manually added trampoline/terminator functions
|
|
||||||
|
|
||||||
// These functions, for whatever reason, require more complex changes than
|
|
||||||
// can easily be automatically generated.
|
|
||||||
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL
|
|
||||||
GetPhysicalDeviceExternalImageFormatPropertiesNV(
|
|
||||||
VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type,
|
|
||||||
VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags,
|
|
||||||
VkExternalMemoryHandleTypeFlagsNV externalHandleType,
|
|
||||||
VkExternalImageFormatPropertiesNV *pExternalImageFormatProperties);
|
|
||||||
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL
|
|
||||||
terminator_GetPhysicalDeviceExternalImageFormatPropertiesNV(
|
|
||||||
VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type,
|
|
||||||
VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags,
|
|
||||||
VkExternalMemoryHandleTypeFlagsNV externalHandleType,
|
|
||||||
VkExternalImageFormatPropertiesNV *pExternalImageFormatProperties);
|
|
||||||
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceSurfaceCapabilities2EXT(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface,
|
|
||||||
VkSurfaceCapabilities2EXT* pSurfaceCapabilities);
|
|
||||||
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceSurfaceCapabilities2EXT(VkPhysicalDevice physicalDevice,
|
|
||||||
VkSurfaceKHR surface,
|
|
||||||
VkSurfaceCapabilities2EXT* pSurfaceCapabilities);
|
|
||||||
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL ReleaseDisplayEXT(VkPhysicalDevice physicalDevice, VkDisplayKHR display);
|
|
||||||
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_ReleaseDisplayEXT(VkPhysicalDevice physicalDevice, VkDisplayKHR display);
|
|
||||||
|
|
||||||
#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL AcquireXlibDisplayEXT(VkPhysicalDevice physicalDevice, Display* dpy, VkDisplayKHR display);
|
|
||||||
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_AcquireXlibDisplayEXT(VkPhysicalDevice physicalDevice, Display* dpy,
|
|
||||||
VkDisplayKHR display);
|
|
||||||
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL GetRandROutputDisplayEXT(VkPhysicalDevice physicalDevice, Display* dpy, RROutput rrOutput,
|
|
||||||
VkDisplayKHR* pDisplay);
|
|
||||||
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_GetRandROutputDisplayEXT(VkPhysicalDevice physicalDevice, Display* dpy, RROutput rrOutput,
|
|
||||||
VkDisplayKHR* pDisplay);
|
|
||||||
#endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT
|
|
||||||
|
|
||||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceSurfacePresentModes2EXT(
|
|
||||||
VkPhysicalDevice physicalDevice,
|
|
||||||
const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
|
|
||||||
uint32_t* pPresentModeCount,
|
|
||||||
VkPresentModeKHR* pPresentModes);
|
|
||||||
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceSurfacePresentModes2EXT(
|
|
||||||
VkPhysicalDevice physicalDevice,
|
|
||||||
const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
|
|
||||||
uint32_t* pPresentModeCount,
|
|
||||||
VkPresentModeKHR* pPresentModes);
|
|
||||||
#endif // VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL GetDeviceGroupSurfacePresentModes2EXT(
|
|
||||||
VkDevice device,
|
|
||||||
const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
|
|
||||||
VkDeviceGroupPresentModeFlagsKHR* pModes);
|
|
||||||
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_GetDeviceGroupSurfacePresentModes2EXT(
|
|
||||||
VkDevice device,
|
|
||||||
const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
|
|
||||||
VkDeviceGroupPresentModeFlagsKHR* pModes);
|
|
||||||
|
|
||||||
// ---- VK_EXT_tooling_info extension trampoline/terminators
|
|
||||||
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceToolPropertiesEXT(
|
|
||||||
VkPhysicalDevice physicalDevice,
|
|
||||||
uint32_t* pToolCount,
|
|
||||||
VkPhysicalDeviceToolPropertiesEXT* pToolProperties);
|
|
||||||
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceToolPropertiesEXT(
|
|
||||||
VkPhysicalDevice physicalDevice,
|
|
||||||
uint32_t* pToolCount,
|
|
||||||
VkPhysicalDeviceToolPropertiesEXT* pToolProperties);
|
|
|
@ -1,249 +0,0 @@
|
||||||
/*
|
|
||||||
*
|
|
||||||
* Copyright (c) 2015-18, 2020 The Khronos Group Inc.
|
|
||||||
* Copyright (c) 2015-18, 2020 Valve Corporation
|
|
||||||
* Copyright (c) 2015-18, 2020 LunarG, 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.
|
|
||||||
*
|
|
||||||
* Author: Jon Ashburn <jon@lunarg.com>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <string.h>
|
|
||||||
#include "debug_utils.h"
|
|
||||||
#include "wsi.h"
|
|
||||||
|
|
||||||
static inline void *trampolineGetProcAddr(struct loader_instance *inst, const char *funcName) {
|
|
||||||
// Don't include or check global functions
|
|
||||||
if (!strcmp(funcName, "vkGetInstanceProcAddr")) return vkGetInstanceProcAddr;
|
|
||||||
if (!strcmp(funcName, "vkDestroyInstance")) return vkDestroyInstance;
|
|
||||||
if (!strcmp(funcName, "vkEnumeratePhysicalDevices")) return vkEnumeratePhysicalDevices;
|
|
||||||
if (!strcmp(funcName, "vkGetPhysicalDeviceFeatures")) return vkGetPhysicalDeviceFeatures;
|
|
||||||
if (!strcmp(funcName, "vkGetPhysicalDeviceFormatProperties")) return vkGetPhysicalDeviceFormatProperties;
|
|
||||||
if (!strcmp(funcName, "vkGetPhysicalDeviceImageFormatProperties")) return vkGetPhysicalDeviceImageFormatProperties;
|
|
||||||
if (!strcmp(funcName, "vkGetPhysicalDeviceSparseImageFormatProperties")) return vkGetPhysicalDeviceSparseImageFormatProperties;
|
|
||||||
if (!strcmp(funcName, "vkGetPhysicalDeviceProperties")) return vkGetPhysicalDeviceProperties;
|
|
||||||
if (!strcmp(funcName, "vkGetPhysicalDeviceQueueFamilyProperties")) return vkGetPhysicalDeviceQueueFamilyProperties;
|
|
||||||
if (!strcmp(funcName, "vkGetPhysicalDeviceMemoryProperties")) return vkGetPhysicalDeviceMemoryProperties;
|
|
||||||
if (!strcmp(funcName, "vkEnumerateDeviceLayerProperties")) return vkEnumerateDeviceLayerProperties;
|
|
||||||
if (!strcmp(funcName, "vkEnumerateDeviceExtensionProperties")) return vkEnumerateDeviceExtensionProperties;
|
|
||||||
if (!strcmp(funcName, "vkCreateDevice")) return vkCreateDevice;
|
|
||||||
if (!strcmp(funcName, "vkGetDeviceProcAddr")) return vkGetDeviceProcAddr;
|
|
||||||
if (!strcmp(funcName, "vkDestroyDevice")) return vkDestroyDevice;
|
|
||||||
if (!strcmp(funcName, "vkGetDeviceQueue")) return vkGetDeviceQueue;
|
|
||||||
if (!strcmp(funcName, "vkQueueSubmit")) return vkQueueSubmit;
|
|
||||||
if (!strcmp(funcName, "vkQueueWaitIdle")) return vkQueueWaitIdle;
|
|
||||||
if (!strcmp(funcName, "vkDeviceWaitIdle")) return vkDeviceWaitIdle;
|
|
||||||
if (!strcmp(funcName, "vkAllocateMemory")) return vkAllocateMemory;
|
|
||||||
if (!strcmp(funcName, "vkFreeMemory")) return vkFreeMemory;
|
|
||||||
if (!strcmp(funcName, "vkMapMemory")) return vkMapMemory;
|
|
||||||
if (!strcmp(funcName, "vkUnmapMemory")) return vkUnmapMemory;
|
|
||||||
if (!strcmp(funcName, "vkFlushMappedMemoryRanges")) return vkFlushMappedMemoryRanges;
|
|
||||||
if (!strcmp(funcName, "vkInvalidateMappedMemoryRanges")) return vkInvalidateMappedMemoryRanges;
|
|
||||||
if (!strcmp(funcName, "vkGetDeviceMemoryCommitment")) return vkGetDeviceMemoryCommitment;
|
|
||||||
if (!strcmp(funcName, "vkGetImageSparseMemoryRequirements")) return vkGetImageSparseMemoryRequirements;
|
|
||||||
if (!strcmp(funcName, "vkGetImageMemoryRequirements")) return vkGetImageMemoryRequirements;
|
|
||||||
if (!strcmp(funcName, "vkGetBufferMemoryRequirements")) return vkGetBufferMemoryRequirements;
|
|
||||||
if (!strcmp(funcName, "vkBindImageMemory")) return vkBindImageMemory;
|
|
||||||
if (!strcmp(funcName, "vkBindBufferMemory")) return vkBindBufferMemory;
|
|
||||||
if (!strcmp(funcName, "vkQueueBindSparse")) return vkQueueBindSparse;
|
|
||||||
if (!strcmp(funcName, "vkCreateFence")) return vkCreateFence;
|
|
||||||
if (!strcmp(funcName, "vkDestroyFence")) return vkDestroyFence;
|
|
||||||
if (!strcmp(funcName, "vkGetFenceStatus")) return vkGetFenceStatus;
|
|
||||||
if (!strcmp(funcName, "vkResetFences")) return vkResetFences;
|
|
||||||
if (!strcmp(funcName, "vkWaitForFences")) return vkWaitForFences;
|
|
||||||
if (!strcmp(funcName, "vkCreateSemaphore")) return vkCreateSemaphore;
|
|
||||||
if (!strcmp(funcName, "vkDestroySemaphore")) return vkDestroySemaphore;
|
|
||||||
if (!strcmp(funcName, "vkCreateEvent")) return vkCreateEvent;
|
|
||||||
if (!strcmp(funcName, "vkDestroyEvent")) return vkDestroyEvent;
|
|
||||||
if (!strcmp(funcName, "vkGetEventStatus")) return vkGetEventStatus;
|
|
||||||
if (!strcmp(funcName, "vkSetEvent")) return vkSetEvent;
|
|
||||||
if (!strcmp(funcName, "vkResetEvent")) return vkResetEvent;
|
|
||||||
if (!strcmp(funcName, "vkCreateQueryPool")) return vkCreateQueryPool;
|
|
||||||
if (!strcmp(funcName, "vkDestroyQueryPool")) return vkDestroyQueryPool;
|
|
||||||
if (!strcmp(funcName, "vkGetQueryPoolResults")) return vkGetQueryPoolResults;
|
|
||||||
if (!strcmp(funcName, "vkCreateBuffer")) return vkCreateBuffer;
|
|
||||||
if (!strcmp(funcName, "vkDestroyBuffer")) return vkDestroyBuffer;
|
|
||||||
if (!strcmp(funcName, "vkCreateBufferView")) return vkCreateBufferView;
|
|
||||||
if (!strcmp(funcName, "vkDestroyBufferView")) return vkDestroyBufferView;
|
|
||||||
if (!strcmp(funcName, "vkCreateImage")) return vkCreateImage;
|
|
||||||
if (!strcmp(funcName, "vkDestroyImage")) return vkDestroyImage;
|
|
||||||
if (!strcmp(funcName, "vkGetImageSubresourceLayout")) return vkGetImageSubresourceLayout;
|
|
||||||
if (!strcmp(funcName, "vkCreateImageView")) return vkCreateImageView;
|
|
||||||
if (!strcmp(funcName, "vkDestroyImageView")) return vkDestroyImageView;
|
|
||||||
if (!strcmp(funcName, "vkCreateShaderModule")) return vkCreateShaderModule;
|
|
||||||
if (!strcmp(funcName, "vkDestroyShaderModule")) return vkDestroyShaderModule;
|
|
||||||
if (!strcmp(funcName, "vkCreatePipelineCache")) return vkCreatePipelineCache;
|
|
||||||
if (!strcmp(funcName, "vkDestroyPipelineCache")) return vkDestroyPipelineCache;
|
|
||||||
if (!strcmp(funcName, "vkGetPipelineCacheData")) return vkGetPipelineCacheData;
|
|
||||||
if (!strcmp(funcName, "vkMergePipelineCaches")) return vkMergePipelineCaches;
|
|
||||||
if (!strcmp(funcName, "vkCreateGraphicsPipelines")) return vkCreateGraphicsPipelines;
|
|
||||||
if (!strcmp(funcName, "vkCreateComputePipelines")) return vkCreateComputePipelines;
|
|
||||||
if (!strcmp(funcName, "vkDestroyPipeline")) return vkDestroyPipeline;
|
|
||||||
if (!strcmp(funcName, "vkCreatePipelineLayout")) return vkCreatePipelineLayout;
|
|
||||||
if (!strcmp(funcName, "vkDestroyPipelineLayout")) return vkDestroyPipelineLayout;
|
|
||||||
if (!strcmp(funcName, "vkCreateSampler")) return vkCreateSampler;
|
|
||||||
if (!strcmp(funcName, "vkDestroySampler")) return vkDestroySampler;
|
|
||||||
if (!strcmp(funcName, "vkCreateDescriptorSetLayout")) return vkCreateDescriptorSetLayout;
|
|
||||||
if (!strcmp(funcName, "vkDestroyDescriptorSetLayout")) return vkDestroyDescriptorSetLayout;
|
|
||||||
if (!strcmp(funcName, "vkCreateDescriptorPool")) return vkCreateDescriptorPool;
|
|
||||||
if (!strcmp(funcName, "vkDestroyDescriptorPool")) return vkDestroyDescriptorPool;
|
|
||||||
if (!strcmp(funcName, "vkResetDescriptorPool")) return vkResetDescriptorPool;
|
|
||||||
if (!strcmp(funcName, "vkAllocateDescriptorSets")) return vkAllocateDescriptorSets;
|
|
||||||
if (!strcmp(funcName, "vkFreeDescriptorSets")) return vkFreeDescriptorSets;
|
|
||||||
if (!strcmp(funcName, "vkUpdateDescriptorSets")) return vkUpdateDescriptorSets;
|
|
||||||
if (!strcmp(funcName, "vkCreateFramebuffer")) return vkCreateFramebuffer;
|
|
||||||
if (!strcmp(funcName, "vkDestroyFramebuffer")) return vkDestroyFramebuffer;
|
|
||||||
if (!strcmp(funcName, "vkCreateRenderPass")) return vkCreateRenderPass;
|
|
||||||
if (!strcmp(funcName, "vkDestroyRenderPass")) return vkDestroyRenderPass;
|
|
||||||
if (!strcmp(funcName, "vkGetRenderAreaGranularity")) return vkGetRenderAreaGranularity;
|
|
||||||
if (!strcmp(funcName, "vkCreateCommandPool")) return vkCreateCommandPool;
|
|
||||||
if (!strcmp(funcName, "vkDestroyCommandPool")) return vkDestroyCommandPool;
|
|
||||||
if (!strcmp(funcName, "vkResetCommandPool")) return vkResetCommandPool;
|
|
||||||
if (!strcmp(funcName, "vkAllocateCommandBuffers")) return vkAllocateCommandBuffers;
|
|
||||||
if (!strcmp(funcName, "vkFreeCommandBuffers")) return vkFreeCommandBuffers;
|
|
||||||
if (!strcmp(funcName, "vkBeginCommandBuffer")) return vkBeginCommandBuffer;
|
|
||||||
if (!strcmp(funcName, "vkEndCommandBuffer")) return vkEndCommandBuffer;
|
|
||||||
if (!strcmp(funcName, "vkResetCommandBuffer")) return vkResetCommandBuffer;
|
|
||||||
if (!strcmp(funcName, "vkCmdBindPipeline")) return vkCmdBindPipeline;
|
|
||||||
if (!strcmp(funcName, "vkCmdBindDescriptorSets")) return vkCmdBindDescriptorSets;
|
|
||||||
if (!strcmp(funcName, "vkCmdBindVertexBuffers")) return vkCmdBindVertexBuffers;
|
|
||||||
if (!strcmp(funcName, "vkCmdBindIndexBuffer")) return vkCmdBindIndexBuffer;
|
|
||||||
if (!strcmp(funcName, "vkCmdSetViewport")) return vkCmdSetViewport;
|
|
||||||
if (!strcmp(funcName, "vkCmdSetScissor")) return vkCmdSetScissor;
|
|
||||||
if (!strcmp(funcName, "vkCmdSetLineWidth")) return vkCmdSetLineWidth;
|
|
||||||
if (!strcmp(funcName, "vkCmdSetDepthBias")) return vkCmdSetDepthBias;
|
|
||||||
if (!strcmp(funcName, "vkCmdSetBlendConstants")) return vkCmdSetBlendConstants;
|
|
||||||
if (!strcmp(funcName, "vkCmdSetDepthBounds")) return vkCmdSetDepthBounds;
|
|
||||||
if (!strcmp(funcName, "vkCmdSetStencilCompareMask")) return vkCmdSetStencilCompareMask;
|
|
||||||
if (!strcmp(funcName, "vkCmdSetStencilWriteMask")) return vkCmdSetStencilWriteMask;
|
|
||||||
if (!strcmp(funcName, "vkCmdSetStencilReference")) return vkCmdSetStencilReference;
|
|
||||||
if (!strcmp(funcName, "vkCmdDraw")) return vkCmdDraw;
|
|
||||||
if (!strcmp(funcName, "vkCmdDrawIndexed")) return vkCmdDrawIndexed;
|
|
||||||
if (!strcmp(funcName, "vkCmdDrawIndirect")) return vkCmdDrawIndirect;
|
|
||||||
if (!strcmp(funcName, "vkCmdDrawIndexedIndirect")) return vkCmdDrawIndexedIndirect;
|
|
||||||
if (!strcmp(funcName, "vkCmdDispatch")) return vkCmdDispatch;
|
|
||||||
if (!strcmp(funcName, "vkCmdDispatchIndirect")) return vkCmdDispatchIndirect;
|
|
||||||
if (!strcmp(funcName, "vkCmdCopyBuffer")) return vkCmdCopyBuffer;
|
|
||||||
if (!strcmp(funcName, "vkCmdCopyImage")) return vkCmdCopyImage;
|
|
||||||
if (!strcmp(funcName, "vkCmdBlitImage")) return vkCmdBlitImage;
|
|
||||||
if (!strcmp(funcName, "vkCmdCopyBufferToImage")) return vkCmdCopyBufferToImage;
|
|
||||||
if (!strcmp(funcName, "vkCmdCopyImageToBuffer")) return vkCmdCopyImageToBuffer;
|
|
||||||
if (!strcmp(funcName, "vkCmdUpdateBuffer")) return vkCmdUpdateBuffer;
|
|
||||||
if (!strcmp(funcName, "vkCmdFillBuffer")) return vkCmdFillBuffer;
|
|
||||||
if (!strcmp(funcName, "vkCmdClearColorImage")) return vkCmdClearColorImage;
|
|
||||||
if (!strcmp(funcName, "vkCmdClearDepthStencilImage")) return vkCmdClearDepthStencilImage;
|
|
||||||
if (!strcmp(funcName, "vkCmdClearAttachments")) return vkCmdClearAttachments;
|
|
||||||
if (!strcmp(funcName, "vkCmdResolveImage")) return vkCmdResolveImage;
|
|
||||||
if (!strcmp(funcName, "vkCmdSetEvent")) return vkCmdSetEvent;
|
|
||||||
if (!strcmp(funcName, "vkCmdResetEvent")) return vkCmdResetEvent;
|
|
||||||
if (!strcmp(funcName, "vkCmdWaitEvents")) return vkCmdWaitEvents;
|
|
||||||
if (!strcmp(funcName, "vkCmdPipelineBarrier")) return vkCmdPipelineBarrier;
|
|
||||||
if (!strcmp(funcName, "vkCmdBeginQuery")) return vkCmdBeginQuery;
|
|
||||||
if (!strcmp(funcName, "vkCmdEndQuery")) return vkCmdEndQuery;
|
|
||||||
if (!strcmp(funcName, "vkCmdResetQueryPool")) return vkCmdResetQueryPool;
|
|
||||||
if (!strcmp(funcName, "vkCmdWriteTimestamp")) return vkCmdWriteTimestamp;
|
|
||||||
if (!strcmp(funcName, "vkCmdCopyQueryPoolResults")) return vkCmdCopyQueryPoolResults;
|
|
||||||
if (!strcmp(funcName, "vkCmdPushConstants")) return vkCmdPushConstants;
|
|
||||||
if (!strcmp(funcName, "vkCmdBeginRenderPass")) return vkCmdBeginRenderPass;
|
|
||||||
if (!strcmp(funcName, "vkCmdNextSubpass")) return vkCmdNextSubpass;
|
|
||||||
if (!strcmp(funcName, "vkCmdEndRenderPass")) return vkCmdEndRenderPass;
|
|
||||||
if (!strcmp(funcName, "vkCmdExecuteCommands")) return vkCmdExecuteCommands;
|
|
||||||
|
|
||||||
// Core 1.1 functions
|
|
||||||
if (!strcmp(funcName, "vkEnumeratePhysicalDeviceGroups")) return vkEnumeratePhysicalDeviceGroups;
|
|
||||||
if (!strcmp(funcName, "vkGetPhysicalDeviceFeatures2")) return vkGetPhysicalDeviceFeatures2;
|
|
||||||
if (!strcmp(funcName, "vkGetPhysicalDeviceProperties2")) return vkGetPhysicalDeviceProperties2;
|
|
||||||
if (!strcmp(funcName, "vkGetPhysicalDeviceFormatProperties2")) return vkGetPhysicalDeviceFormatProperties2;
|
|
||||||
if (!strcmp(funcName, "vkGetPhysicalDeviceImageFormatProperties2")) return vkGetPhysicalDeviceImageFormatProperties2;
|
|
||||||
if (!strcmp(funcName, "vkGetPhysicalDeviceQueueFamilyProperties2")) return vkGetPhysicalDeviceQueueFamilyProperties2;
|
|
||||||
if (!strcmp(funcName, "vkGetPhysicalDeviceMemoryProperties2")) return vkGetPhysicalDeviceMemoryProperties2;
|
|
||||||
if (!strcmp(funcName, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
|
|
||||||
return vkGetPhysicalDeviceSparseImageFormatProperties2;
|
|
||||||
if (!strcmp(funcName, "vkGetPhysicalDeviceExternalBufferProperties")) return vkGetPhysicalDeviceExternalBufferProperties;
|
|
||||||
if (!strcmp(funcName, "vkGetPhysicalDeviceExternalSemaphoreProperties")) return vkGetPhysicalDeviceExternalSemaphoreProperties;
|
|
||||||
if (!strcmp(funcName, "vkGetPhysicalDeviceExternalFenceProperties")) return vkGetPhysicalDeviceExternalFenceProperties;
|
|
||||||
if (!strcmp(funcName, "vkBindBufferMemory2")) return vkBindBufferMemory2;
|
|
||||||
if (!strcmp(funcName, "vkBindImageMemory2")) return vkBindImageMemory2;
|
|
||||||
if (!strcmp(funcName, "vkGetDeviceGroupPeerMemoryFeatures")) return vkGetDeviceGroupPeerMemoryFeatures;
|
|
||||||
if (!strcmp(funcName, "vkCmdSetDeviceMask")) return vkCmdSetDeviceMask;
|
|
||||||
if (!strcmp(funcName, "vkCmdDispatchBase")) return vkCmdDispatchBase;
|
|
||||||
if (!strcmp(funcName, "vkGetImageMemoryRequirements2")) return vkGetImageMemoryRequirements2;
|
|
||||||
if (!strcmp(funcName, "vkTrimCommandPool")) return vkTrimCommandPool;
|
|
||||||
if (!strcmp(funcName, "vkGetDeviceQueue2")) return vkGetDeviceQueue2;
|
|
||||||
if (!strcmp(funcName, "vkCreateSamplerYcbcrConversion")) return vkCreateSamplerYcbcrConversion;
|
|
||||||
if (!strcmp(funcName, "vkDestroySamplerYcbcrConversion")) return vkDestroySamplerYcbcrConversion;
|
|
||||||
if (!strcmp(funcName, "vkGetDescriptorSetLayoutSupport")) return vkGetDescriptorSetLayoutSupport;
|
|
||||||
if (!strcmp(funcName, "vkCreateDescriptorUpdateTemplate")) return vkCreateDescriptorUpdateTemplate;
|
|
||||||
if (!strcmp(funcName, "vkDestroyDescriptorUpdateTemplate")) return vkDestroyDescriptorUpdateTemplate;
|
|
||||||
if (!strcmp(funcName, "vkUpdateDescriptorSetWithTemplate")) return vkUpdateDescriptorSetWithTemplate;
|
|
||||||
if (!strcmp(funcName, "vkGetImageSparseMemoryRequirements2")) return vkGetImageSparseMemoryRequirements2;
|
|
||||||
if (!strcmp(funcName, "vkGetBufferMemoryRequirements2")) return vkGetBufferMemoryRequirements2;
|
|
||||||
|
|
||||||
// Core 1.2 functions
|
|
||||||
if (!strcmp(funcName, "vkCreateRenderPass2")) return vkCreateRenderPass2;
|
|
||||||
if (!strcmp(funcName, "vkCmdBeginRenderPass2")) return vkCmdBeginRenderPass2;
|
|
||||||
if (!strcmp(funcName, "vkCmdNextSubpass2")) return vkCmdNextSubpass2;
|
|
||||||
if (!strcmp(funcName, "vkCmdEndRenderPass2")) return vkCmdEndRenderPass2;
|
|
||||||
if (!strcmp(funcName, "vkCmdDrawIndirectCount")) return vkCmdDrawIndirectCount;
|
|
||||||
if (!strcmp(funcName, "vkCmdDrawIndexedIndirectCount")) return vkCmdDrawIndexedIndirectCount;
|
|
||||||
if (!strcmp(funcName, "vkGetSemaphoreCounterValue")) return vkGetSemaphoreCounterValue;
|
|
||||||
if (!strcmp(funcName, "vkWaitSemaphores")) return vkWaitSemaphores;
|
|
||||||
if (!strcmp(funcName, "vkSignalSemaphore")) return vkSignalSemaphore;
|
|
||||||
if (!strcmp(funcName, "vkGetBufferDeviceAddress")) return vkGetBufferDeviceAddress;
|
|
||||||
if (!strcmp(funcName, "vkGetBufferOpaqueCaptureAddress")) return vkGetBufferOpaqueCaptureAddress;
|
|
||||||
if (!strcmp(funcName, "vkGetDeviceMemoryOpaqueCaptureAddress")) return vkGetDeviceMemoryOpaqueCaptureAddress;
|
|
||||||
if (!strcmp(funcName, "vkResetQueryPool")) return vkResetQueryPool;
|
|
||||||
|
|
||||||
// Instance extensions
|
|
||||||
void *addr;
|
|
||||||
if (debug_utils_InstanceGpa(inst, funcName, &addr)) return addr;
|
|
||||||
|
|
||||||
if (wsi_swapchain_instance_gpa(inst, funcName, &addr)) return addr;
|
|
||||||
|
|
||||||
if (extension_instance_gpa(inst, funcName, &addr)) return addr;
|
|
||||||
|
|
||||||
// Unknown physical device extensions
|
|
||||||
if (loader_phys_dev_ext_gpa(inst, funcName, true, &addr, NULL)) return addr;
|
|
||||||
|
|
||||||
// Unknown device extensions
|
|
||||||
addr = loader_dev_ext_gpa(inst, funcName);
|
|
||||||
return addr;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void *globalGetProcAddr(const char *name) {
|
|
||||||
if (!name || name[0] != 'v' || name[1] != 'k') return NULL;
|
|
||||||
|
|
||||||
name += 2;
|
|
||||||
if (!strcmp(name, "CreateInstance")) return vkCreateInstance;
|
|
||||||
if (!strcmp(name, "EnumerateInstanceExtensionProperties")) return vkEnumerateInstanceExtensionProperties;
|
|
||||||
if (!strcmp(name, "EnumerateInstanceLayerProperties")) return vkEnumerateInstanceLayerProperties;
|
|
||||||
if (!strcmp(name, "EnumerateInstanceVersion")) return vkEnumerateInstanceVersion;
|
|
||||||
if (!strcmp(name, "GetInstanceProcAddr")) return vkGetInstanceProcAddr;
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void *loader_non_passthrough_gdpa(const char *name) {
|
|
||||||
if (!name || name[0] != 'v' || name[1] != 'k') return NULL;
|
|
||||||
|
|
||||||
name += 2;
|
|
||||||
|
|
||||||
if (!strcmp(name, "GetDeviceProcAddr")) return vkGetDeviceProcAddr;
|
|
||||||
if (!strcmp(name, "DestroyDevice")) return vkDestroyDevice;
|
|
||||||
if (!strcmp(name, "GetDeviceQueue")) return vkGetDeviceQueue;
|
|
||||||
if (!strcmp(name, "GetDeviceQueue2")) return vkGetDeviceQueue2;
|
|
||||||
if (!strcmp(name, "AllocateCommandBuffers")) return vkAllocateCommandBuffers;
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,547 +0,0 @@
|
||||||
/*
|
|
||||||
*
|
|
||||||
* Copyright (c) 2014-2019 The Khronos Group Inc.
|
|
||||||
* Copyright (c) 2014-2019 Valve Corporation
|
|
||||||
* Copyright (c) 2014-2019 LunarG, Inc.
|
|
||||||
* Copyright (C) 2015 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.
|
|
||||||
*
|
|
||||||
* Author: Jon Ashburn <jon@lunarg.com>
|
|
||||||
* Author: Courtney Goeltzenleuchter <courtney@LunarG.com>
|
|
||||||
* Author: Chia-I Wu <olvaffe@gmail.com>
|
|
||||||
* Author: Chia-I Wu <olv@lunarg.com>
|
|
||||||
* Author: Mark Lobodzinski <mark@LunarG.com>
|
|
||||||
* Author: Lenny Komow <lenny@lunarg.com>
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef LOADER_H
|
|
||||||
#define LOADER_H
|
|
||||||
|
|
||||||
#include "../vulkan.h"
|
|
||||||
#include "vk_loader_platform.h"
|
|
||||||
#include "vk_loader_layer.h"
|
|
||||||
#include "../vk_layer.h"
|
|
||||||
#include "../vk_icd.h"
|
|
||||||
#include <assert.h>
|
|
||||||
#include "vk_layer_dispatch_table.h"
|
|
||||||
#include "vk_loader_extensions.h"
|
|
||||||
|
|
||||||
#if defined(__GNUC__) && __GNUC__ >= 4
|
|
||||||
#define LOADER_EXPORT __attribute__((visibility("default")))
|
|
||||||
#elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590)
|
|
||||||
#define LOADER_EXPORT __attribute__((visibility("default")))
|
|
||||||
#else
|
|
||||||
#define LOADER_EXPORT
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// A debug option to disable allocators at compile time to investigate future issues.
|
|
||||||
#define DEBUG_DISABLE_APP_ALLOCATORS 0
|
|
||||||
|
|
||||||
#define MAX_STRING_SIZE 1024
|
|
||||||
|
|
||||||
// This is defined in vk_layer.h, but if there's problems we need to create the define
|
|
||||||
// here.
|
|
||||||
#ifndef MAX_NUM_UNKNOWN_EXTS
|
|
||||||
#define MAX_NUM_UNKNOWN_EXTS 250
|
|
||||||
#endif
|
|
||||||
|
|
||||||
enum layer_type_flags {
|
|
||||||
VK_LAYER_TYPE_FLAG_INSTANCE_LAYER = 0x1, // If not set, indicates Device layer
|
|
||||||
VK_LAYER_TYPE_FLAG_EXPLICIT_LAYER = 0x2, // If not set, indicates Implicit layer
|
|
||||||
VK_LAYER_TYPE_FLAG_META_LAYER = 0x4, // If not set, indicates standard layer
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef enum VkStringErrorFlagBits {
|
|
||||||
VK_STRING_ERROR_NONE = 0x00000000,
|
|
||||||
VK_STRING_ERROR_LENGTH = 0x00000001,
|
|
||||||
VK_STRING_ERROR_BAD_DATA = 0x00000002,
|
|
||||||
VK_STRING_ERROR_NULL_PTR = 0x00000004,
|
|
||||||
} VkStringErrorFlagBits;
|
|
||||||
typedef VkFlags VkStringErrorFlags;
|
|
||||||
|
|
||||||
static const int MaxLoaderStringLength = 256;
|
|
||||||
static const char UTF8_ONE_BYTE_CODE = 0xC0;
|
|
||||||
static const char UTF8_ONE_BYTE_MASK = 0xE0;
|
|
||||||
static const char UTF8_TWO_BYTE_CODE = 0xE0;
|
|
||||||
static const char UTF8_TWO_BYTE_MASK = 0xF0;
|
|
||||||
static const char UTF8_THREE_BYTE_CODE = 0xF0;
|
|
||||||
static const char UTF8_THREE_BYTE_MASK = 0xF8;
|
|
||||||
static const char UTF8_DATA_BYTE_CODE = 0x80;
|
|
||||||
static const char UTF8_DATA_BYTE_MASK = 0xC0;
|
|
||||||
|
|
||||||
// form of all dynamic lists/arrays
|
|
||||||
// only the list element should be changed
|
|
||||||
struct loader_generic_list {
|
|
||||||
size_t capacity;
|
|
||||||
uint32_t count;
|
|
||||||
void *list;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct loader_extension_list {
|
|
||||||
size_t capacity;
|
|
||||||
uint32_t count;
|
|
||||||
VkExtensionProperties *list;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct loader_dev_ext_props {
|
|
||||||
VkExtensionProperties props;
|
|
||||||
uint32_t entrypoint_count;
|
|
||||||
char **entrypoints;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct loader_device_extension_list {
|
|
||||||
size_t capacity;
|
|
||||||
uint32_t count;
|
|
||||||
struct loader_dev_ext_props *list;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct loader_name_value {
|
|
||||||
char name[MAX_STRING_SIZE];
|
|
||||||
char value[MAX_STRING_SIZE];
|
|
||||||
};
|
|
||||||
|
|
||||||
struct loader_layer_functions {
|
|
||||||
char str_gipa[MAX_STRING_SIZE];
|
|
||||||
char str_gdpa[MAX_STRING_SIZE];
|
|
||||||
char str_negotiate_interface[MAX_STRING_SIZE];
|
|
||||||
PFN_vkNegotiateLoaderLayerInterfaceVersion negotiate_layer_interface;
|
|
||||||
PFN_vkGetInstanceProcAddr get_instance_proc_addr;
|
|
||||||
PFN_vkGetDeviceProcAddr get_device_proc_addr;
|
|
||||||
PFN_GetPhysicalDeviceProcAddr get_physical_device_proc_addr;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct loader_override_expiration {
|
|
||||||
uint16_t year;
|
|
||||||
uint8_t month;
|
|
||||||
uint8_t day;
|
|
||||||
uint8_t hour;
|
|
||||||
uint8_t minute;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct loader_layer_properties {
|
|
||||||
VkLayerProperties info;
|
|
||||||
enum layer_type_flags type_flags;
|
|
||||||
uint32_t interface_version; // PFN_vkNegotiateLoaderLayerInterfaceVersion
|
|
||||||
char lib_name[MAX_STRING_SIZE];
|
|
||||||
loader_platform_dl_handle lib_handle;
|
|
||||||
struct loader_layer_functions functions;
|
|
||||||
struct loader_extension_list instance_extension_list;
|
|
||||||
struct loader_device_extension_list device_extension_list;
|
|
||||||
struct loader_name_value disable_env_var;
|
|
||||||
struct loader_name_value enable_env_var;
|
|
||||||
uint32_t num_component_layers;
|
|
||||||
char (*component_layer_names)[MAX_STRING_SIZE];
|
|
||||||
struct {
|
|
||||||
char enumerate_instance_extension_properties[MAX_STRING_SIZE];
|
|
||||||
char enumerate_instance_layer_properties[MAX_STRING_SIZE];
|
|
||||||
char enumerate_instance_version[MAX_STRING_SIZE];
|
|
||||||
} pre_instance_functions;
|
|
||||||
uint32_t num_override_paths;
|
|
||||||
char (*override_paths)[MAX_STRING_SIZE];
|
|
||||||
bool is_override;
|
|
||||||
bool has_expiration;
|
|
||||||
struct loader_override_expiration expiration;
|
|
||||||
bool keep;
|
|
||||||
uint32_t num_blacklist_layers;
|
|
||||||
char (*blacklist_layer_names)[MAX_STRING_SIZE];
|
|
||||||
uint32_t num_app_key_paths;
|
|
||||||
char (*app_key_paths)[MAX_STRING_SIZE];
|
|
||||||
};
|
|
||||||
|
|
||||||
struct loader_layer_list {
|
|
||||||
size_t capacity;
|
|
||||||
uint32_t count;
|
|
||||||
struct loader_layer_properties *list;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct loader_dispatch_hash_list {
|
|
||||||
size_t capacity;
|
|
||||||
uint32_t count;
|
|
||||||
uint32_t *index; // index into the dev_ext dispatch table
|
|
||||||
};
|
|
||||||
|
|
||||||
// loader_dispatch_hash_entry and loader_dev_ext_dispatch_table.dev_ext have
|
|
||||||
// one to one correspondence; one loader_dispatch_hash_entry for one dev_ext
|
|
||||||
// dispatch entry.
|
|
||||||
// Also have a one to one correspondence with functions in dev_ext_trampoline.c
|
|
||||||
struct loader_dispatch_hash_entry {
|
|
||||||
char *func_name;
|
|
||||||
struct loader_dispatch_hash_list list; // to handle hashing collisions
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef VkResult(VKAPI_PTR *PFN_vkDevExt)(VkDevice device);
|
|
||||||
struct loader_dev_ext_dispatch_table {
|
|
||||||
PFN_vkDevExt dev_ext[MAX_NUM_UNKNOWN_EXTS];
|
|
||||||
};
|
|
||||||
|
|
||||||
struct loader_dev_dispatch_table {
|
|
||||||
VkLayerDispatchTable core_dispatch;
|
|
||||||
struct loader_dev_ext_dispatch_table ext_dispatch;
|
|
||||||
};
|
|
||||||
|
|
||||||
// per CreateDevice structure
|
|
||||||
struct loader_device {
|
|
||||||
struct loader_dev_dispatch_table loader_dispatch;
|
|
||||||
VkDevice chain_device; // device object from the dispatch chain
|
|
||||||
VkDevice icd_device; // device object from the icd
|
|
||||||
struct loader_physical_device_term *phys_dev_term;
|
|
||||||
|
|
||||||
// List of activated layers.
|
|
||||||
// app_ is the version based on exactly what the application asked for.
|
|
||||||
// This is what must be returned to the application on Enumerate calls.
|
|
||||||
// expanded_ is the version based on expanding meta-layers into their
|
|
||||||
// individual component layers. This is what is used internally.
|
|
||||||
struct loader_layer_list app_activated_layer_list;
|
|
||||||
struct loader_layer_list expanded_activated_layer_list;
|
|
||||||
|
|
||||||
VkAllocationCallbacks alloc_callbacks;
|
|
||||||
|
|
||||||
// List of activated device extensions that have terminators implemented in the loader
|
|
||||||
struct {
|
|
||||||
bool khr_swapchain_enabled;
|
|
||||||
bool khr_display_swapchain_enabled;
|
|
||||||
bool khr_device_group_enabled;
|
|
||||||
bool ext_debug_marker_enabled;
|
|
||||||
bool ext_debug_utils_enabled;
|
|
||||||
bool ext_full_screen_exclusive_enabled;
|
|
||||||
} extensions;
|
|
||||||
|
|
||||||
struct loader_device *next;
|
|
||||||
};
|
|
||||||
|
|
||||||
// Per ICD information
|
|
||||||
|
|
||||||
// Per ICD structure
|
|
||||||
struct loader_icd_term {
|
|
||||||
// pointers to find other structs
|
|
||||||
const struct loader_scanned_icd *scanned_icd;
|
|
||||||
const struct loader_instance *this_instance;
|
|
||||||
struct loader_device *logical_device_list;
|
|
||||||
VkInstance instance; // instance object from the icd
|
|
||||||
struct loader_icd_term_dispatch dispatch;
|
|
||||||
|
|
||||||
struct loader_icd_term *next;
|
|
||||||
|
|
||||||
PFN_PhysDevExt phys_dev_ext[MAX_NUM_UNKNOWN_EXTS];
|
|
||||||
};
|
|
||||||
|
|
||||||
// Per ICD library structure
|
|
||||||
struct loader_icd_tramp_list {
|
|
||||||
size_t capacity;
|
|
||||||
uint32_t count;
|
|
||||||
struct loader_scanned_icd *scanned_list;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct loader_instance_dispatch_table {
|
|
||||||
VkLayerInstanceDispatchTable layer_inst_disp; // must be first entry in structure
|
|
||||||
|
|
||||||
// Physical device functions unknown to the loader
|
|
||||||
PFN_PhysDevExt phys_dev_ext[MAX_NUM_UNKNOWN_EXTS];
|
|
||||||
};
|
|
||||||
|
|
||||||
// Per instance structure
|
|
||||||
struct loader_instance {
|
|
||||||
struct loader_instance_dispatch_table *disp; // must be first entry in structure
|
|
||||||
|
|
||||||
// Vulkan API version the app is intending to use.
|
|
||||||
uint16_t app_api_major_version;
|
|
||||||
uint16_t app_api_minor_version;
|
|
||||||
|
|
||||||
// We need to manually track physical devices over time. If the user
|
|
||||||
// re-queries the information, we don't want to delete old data or
|
|
||||||
// create new data unless necessary.
|
|
||||||
uint32_t total_gpu_count;
|
|
||||||
uint32_t phys_dev_count_term;
|
|
||||||
struct loader_physical_device_term **phys_devs_term;
|
|
||||||
uint32_t phys_dev_count_tramp;
|
|
||||||
struct loader_physical_device_tramp **phys_devs_tramp;
|
|
||||||
|
|
||||||
// We also need to manually track physical device groups, but we don't need
|
|
||||||
// loader specific structures since we have that content in the physical
|
|
||||||
// device stored internal to the public structures.
|
|
||||||
uint32_t phys_dev_group_count_term;
|
|
||||||
struct VkPhysicalDeviceGroupProperties **phys_dev_groups_term;
|
|
||||||
uint32_t phys_dev_group_count_tramp;
|
|
||||||
struct VkPhysicalDeviceGroupProperties **phys_dev_groups_tramp;
|
|
||||||
|
|
||||||
struct loader_instance *next;
|
|
||||||
|
|
||||||
uint32_t total_icd_count;
|
|
||||||
struct loader_icd_term *icd_terms;
|
|
||||||
struct loader_icd_tramp_list icd_tramp_list;
|
|
||||||
|
|
||||||
struct loader_dispatch_hash_entry dev_ext_disp_hash[MAX_NUM_UNKNOWN_EXTS];
|
|
||||||
struct loader_dispatch_hash_entry phys_dev_ext_disp_hash[MAX_NUM_UNKNOWN_EXTS];
|
|
||||||
|
|
||||||
struct loader_msg_callback_map_entry *icd_msg_callback_map;
|
|
||||||
|
|
||||||
struct loader_layer_list instance_layer_list;
|
|
||||||
bool override_layer_present;
|
|
||||||
|
|
||||||
// List of activated layers.
|
|
||||||
// app_ is the version based on exactly what the application asked for.
|
|
||||||
// This is what must be returned to the application on Enumerate calls.
|
|
||||||
// expanded_ is the version based on expanding meta-layers into their
|
|
||||||
// individual component layers. This is what is used internally.
|
|
||||||
struct loader_layer_list app_activated_layer_list;
|
|
||||||
struct loader_layer_list expanded_activated_layer_list;
|
|
||||||
|
|
||||||
VkInstance instance; // layers/ICD instance returned to trampoline
|
|
||||||
|
|
||||||
struct loader_extension_list ext_list; // icds and loaders extensions
|
|
||||||
union loader_instance_extension_enables enabled_known_extensions;
|
|
||||||
|
|
||||||
VkLayerDbgFunctionNode *DbgFunctionHead;
|
|
||||||
uint32_t num_tmp_report_callbacks;
|
|
||||||
VkDebugReportCallbackCreateInfoEXT *tmp_report_create_infos;
|
|
||||||
VkDebugReportCallbackEXT *tmp_report_callbacks;
|
|
||||||
uint32_t num_tmp_messengers;
|
|
||||||
VkDebugUtilsMessengerCreateInfoEXT *tmp_messenger_create_infos;
|
|
||||||
VkDebugUtilsMessengerEXT *tmp_messengers;
|
|
||||||
|
|
||||||
VkAllocationCallbacks alloc_callbacks;
|
|
||||||
|
|
||||||
bool wsi_surface_enabled;
|
|
||||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
bool wsi_win32_surface_enabled;
|
|
||||||
#endif
|
|
||||||
#ifdef VK_USE_PLATFORM_WAYLAND_KHR
|
|
||||||
bool wsi_wayland_surface_enabled;
|
|
||||||
#endif
|
|
||||||
#ifdef VK_USE_PLATFORM_XCB_KHR
|
|
||||||
bool wsi_xcb_surface_enabled;
|
|
||||||
#endif
|
|
||||||
#ifdef VK_USE_PLATFORM_XLIB_KHR
|
|
||||||
bool wsi_xlib_surface_enabled;
|
|
||||||
#endif
|
|
||||||
#ifdef VK_USE_PLATFORM_DIRECTFB_EXT
|
|
||||||
bool wsi_directfb_surface_enabled;
|
|
||||||
#endif
|
|
||||||
#ifdef VK_USE_PLATFORM_ANDROID_KHR
|
|
||||||
bool wsi_android_surface_enabled;
|
|
||||||
#endif
|
|
||||||
#ifdef VK_USE_PLATFORM_MACOS_MVK
|
|
||||||
bool wsi_macos_surface_enabled;
|
|
||||||
#endif
|
|
||||||
#ifdef VK_USE_PLATFORM_IOS_MVK
|
|
||||||
bool wsi_ios_surface_enabled;
|
|
||||||
#endif
|
|
||||||
#ifdef VK_USE_PLATFORM_GGP
|
|
||||||
bool wsi_ggp_surface_enabled;
|
|
||||||
#endif
|
|
||||||
bool wsi_headless_surface_enabled;
|
|
||||||
#if defined(VK_USE_PLATFORM_METAL_EXT)
|
|
||||||
bool wsi_metal_surface_enabled;
|
|
||||||
#endif
|
|
||||||
#ifdef VK_USE_PLATFORM_FUCHSIA
|
|
||||||
bool wsi_imagepipe_surface_enabled;
|
|
||||||
#endif
|
|
||||||
bool wsi_display_enabled;
|
|
||||||
bool wsi_display_props2_enabled;
|
|
||||||
};
|
|
||||||
|
|
||||||
// VkPhysicalDevice requires special treatment by loader. Firstly, terminator
|
|
||||||
// code must be able to get the struct loader_icd_term to call into the proper
|
|
||||||
// driver (multiple ICD/gpu case). This can be accomplished by wrapping the
|
|
||||||
// created VkPhysicalDevice in loader terminate_EnumeratePhysicalDevices().
|
|
||||||
// Secondly, the loader must be able to handle wrapped by layer VkPhysicalDevice
|
|
||||||
// in trampoline code. This implies, that the loader trampoline code must also
|
|
||||||
// wrap the VkPhysicalDevice object in trampoline code. Thus, loader has to
|
|
||||||
// wrap the VkPhysicalDevice created object twice. In trampoline code it can't
|
|
||||||
// rely on the terminator object wrapping since a layer may also wrap. Since
|
|
||||||
// trampoline code wraps the VkPhysicalDevice this means all loader trampoline
|
|
||||||
// code that passes a VkPhysicalDevice should unwrap it.
|
|
||||||
|
|
||||||
// Per enumerated PhysicalDevice structure, used to wrap in trampoline code and
|
|
||||||
// also same structure used to wrap in terminator code
|
|
||||||
struct loader_physical_device_tramp {
|
|
||||||
struct loader_instance_dispatch_table *disp; // must be first entry in structure
|
|
||||||
struct loader_instance *this_instance;
|
|
||||||
VkPhysicalDevice phys_dev; // object from layers/loader terminator
|
|
||||||
};
|
|
||||||
|
|
||||||
// Per enumerated PhysicalDevice structure, used to wrap in terminator code
|
|
||||||
struct loader_physical_device_term {
|
|
||||||
struct loader_instance_dispatch_table *disp; // must be first entry in structure
|
|
||||||
struct loader_icd_term *this_icd_term;
|
|
||||||
uint8_t icd_index;
|
|
||||||
VkPhysicalDevice phys_dev; // object from ICD
|
|
||||||
};
|
|
||||||
|
|
||||||
struct loader_struct {
|
|
||||||
struct loader_instance *instances;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct loader_scanned_icd {
|
|
||||||
char *lib_name;
|
|
||||||
loader_platform_dl_handle handle;
|
|
||||||
uint32_t api_version;
|
|
||||||
uint32_t interface_version;
|
|
||||||
PFN_vkGetInstanceProcAddr GetInstanceProcAddr;
|
|
||||||
PFN_GetPhysicalDeviceProcAddr GetPhysicalDeviceProcAddr;
|
|
||||||
PFN_vkCreateInstance CreateInstance;
|
|
||||||
PFN_vkEnumerateInstanceExtensionProperties EnumerateInstanceExtensionProperties;
|
|
||||||
#if defined(VK_USE_PLATFORM_WIN32_KHR)
|
|
||||||
PFN_vk_icdEnumerateAdapterPhysicalDevices EnumerateAdapterPhysicalDevices;
|
|
||||||
#endif
|
|
||||||
};
|
|
||||||
|
|
||||||
static inline struct loader_instance *loader_instance(VkInstance instance) { return (struct loader_instance *)instance; }
|
|
||||||
|
|
||||||
static inline VkPhysicalDevice loader_unwrap_physical_device(VkPhysicalDevice physicalDevice) {
|
|
||||||
struct loader_physical_device_tramp *phys_dev = (struct loader_physical_device_tramp *)physicalDevice;
|
|
||||||
return phys_dev->phys_dev;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void loader_set_dispatch(void *obj, const void *data) { *((const void **)obj) = data; }
|
|
||||||
|
|
||||||
static inline VkLayerDispatchTable *loader_get_dispatch(const void *obj) { return *((VkLayerDispatchTable **)obj); }
|
|
||||||
|
|
||||||
static inline struct loader_dev_dispatch_table *loader_get_dev_dispatch(const void *obj) {
|
|
||||||
return *((struct loader_dev_dispatch_table **)obj);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline VkLayerInstanceDispatchTable *loader_get_instance_layer_dispatch(const void *obj) {
|
|
||||||
return *((VkLayerInstanceDispatchTable **)obj);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline struct loader_instance_dispatch_table *loader_get_instance_dispatch(const void *obj) {
|
|
||||||
return *((struct loader_instance_dispatch_table **)obj);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void loader_init_dispatch(void *obj, const void *data) {
|
|
||||||
#ifdef DEBUG
|
|
||||||
assert(valid_loader_magic_value(obj) &&
|
|
||||||
"Incompatible ICD, first dword must be initialized to "
|
|
||||||
"ICD_LOADER_MAGIC. See loader/README.md for details.");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
loader_set_dispatch(obj, data);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Global variables used across files
|
|
||||||
extern struct loader_struct loader;
|
|
||||||
extern THREAD_LOCAL_DECL struct loader_instance *tls_instance;
|
|
||||||
extern loader_platform_thread_mutex loader_lock;
|
|
||||||
extern loader_platform_thread_mutex loader_json_lock;
|
|
||||||
extern loader_platform_thread_mutex loader_preload_icd_lock;
|
|
||||||
|
|
||||||
struct loader_msg_callback_map_entry {
|
|
||||||
VkDebugReportCallbackEXT icd_obj;
|
|
||||||
VkDebugReportCallbackEXT loader_obj;
|
|
||||||
};
|
|
||||||
|
|
||||||
// Helper function definitions
|
|
||||||
void *loader_instance_heap_alloc(const struct loader_instance *instance, size_t size, VkSystemAllocationScope allocationScope);
|
|
||||||
void loader_instance_heap_free(const struct loader_instance *instance, void *pMemory);
|
|
||||||
void *loader_instance_heap_realloc(const struct loader_instance *instance, void *pMemory, size_t orig_size, size_t size,
|
|
||||||
VkSystemAllocationScope alloc_scope);
|
|
||||||
void *loader_instance_tls_heap_alloc(size_t size);
|
|
||||||
void loader_instance_tls_heap_free(void *pMemory);
|
|
||||||
void *loader_device_heap_alloc(const struct loader_device *device, size_t size, VkSystemAllocationScope allocationScope);
|
|
||||||
void loader_device_heap_free(const struct loader_device *device, void *pMemory);
|
|
||||||
void *loader_device_heap_realloc(const struct loader_device *device, void *pMemory, size_t orig_size, size_t size,
|
|
||||||
VkSystemAllocationScope alloc_scope);
|
|
||||||
|
|
||||||
void loader_log(const struct loader_instance *inst, VkFlags msg_type, int32_t msg_code, const char *format, ...);
|
|
||||||
|
|
||||||
bool compare_vk_extension_properties(const VkExtensionProperties *op1, const VkExtensionProperties *op2);
|
|
||||||
|
|
||||||
VkResult loaderValidateLayers(const struct loader_instance *inst, const uint32_t layer_count,
|
|
||||||
const char *const *ppEnabledLayerNames, const struct loader_layer_list *list);
|
|
||||||
|
|
||||||
VkResult loader_validate_instance_extensions(struct loader_instance *inst, const struct loader_extension_list *icd_exts,
|
|
||||||
const struct loader_layer_list *instance_layer,
|
|
||||||
const VkInstanceCreateInfo *pCreateInfo);
|
|
||||||
|
|
||||||
void loader_initialize(void);
|
|
||||||
void loader_preload_icds(void);
|
|
||||||
void loader_unload_preloaded_icds(void);
|
|
||||||
bool has_vk_extension_property_array(const VkExtensionProperties *vk_ext_prop, const uint32_t count,
|
|
||||||
const VkExtensionProperties *ext_array);
|
|
||||||
bool has_vk_extension_property(const VkExtensionProperties *vk_ext_prop, const struct loader_extension_list *ext_list);
|
|
||||||
|
|
||||||
VkResult loader_add_to_ext_list(const struct loader_instance *inst, struct loader_extension_list *ext_list,
|
|
||||||
uint32_t prop_list_count, const VkExtensionProperties *props);
|
|
||||||
VkResult loader_add_to_dev_ext_list(const struct loader_instance *inst, struct loader_device_extension_list *ext_list,
|
|
||||||
const VkExtensionProperties *props, uint32_t entry_count, char **entrys);
|
|
||||||
VkResult loader_add_device_extensions(const struct loader_instance *inst,
|
|
||||||
PFN_vkEnumerateDeviceExtensionProperties fpEnumerateDeviceExtensionProperties,
|
|
||||||
VkPhysicalDevice physical_device, const char *lib_name,
|
|
||||||
struct loader_extension_list *ext_list);
|
|
||||||
VkResult loader_init_generic_list(const struct loader_instance *inst, struct loader_generic_list *list_info, size_t element_size);
|
|
||||||
void loader_destroy_generic_list(const struct loader_instance *inst, struct loader_generic_list *list);
|
|
||||||
void loaderDestroyLayerList(const struct loader_instance *inst, struct loader_device *device, struct loader_layer_list *layer_list);
|
|
||||||
void loaderDeleteLayerListAndProperties(const struct loader_instance *inst, struct loader_layer_list *layer_list);
|
|
||||||
VkResult loaderAddLayerNameToList(const struct loader_instance *inst, const char *name, const enum layer_type_flags type_flags,
|
|
||||||
const struct loader_layer_list *source_list, struct loader_layer_list *target_list,
|
|
||||||
struct loader_layer_list *expanded_target_list);
|
|
||||||
void loader_scanned_icd_clear(const struct loader_instance *inst, struct loader_icd_tramp_list *icd_tramp_list);
|
|
||||||
VkResult loader_icd_scan(const struct loader_instance *inst, struct loader_icd_tramp_list *icd_tramp_list);
|
|
||||||
void loaderScanForLayers(struct loader_instance *inst, struct loader_layer_list *instance_layers);
|
|
||||||
void loaderScanForImplicitLayers(struct loader_instance *inst, struct loader_layer_list *instance_layers);
|
|
||||||
bool loaderImplicitLayerIsEnabled(const struct loader_instance *inst, const struct loader_layer_properties *prop);
|
|
||||||
VkResult loader_get_icd_loader_instance_extensions(const struct loader_instance *inst, struct loader_icd_tramp_list *icd_tramp_list,
|
|
||||||
struct loader_extension_list *inst_exts);
|
|
||||||
struct loader_icd_term *loader_get_icd_and_device(const void *device, struct loader_device **found_dev, uint32_t *icd_index);
|
|
||||||
void loader_init_dispatch_dev_ext(struct loader_instance *inst, struct loader_device *dev);
|
|
||||||
void *loader_dev_ext_gpa(struct loader_instance *inst, const char *funcName);
|
|
||||||
void *loader_get_dev_ext_trampoline(uint32_t index);
|
|
||||||
bool loader_phys_dev_ext_gpa(struct loader_instance *inst, const char *funcName, bool perform_checking, void **tramp_addr,
|
|
||||||
void **term_addr);
|
|
||||||
void *loader_get_phys_dev_ext_tramp(uint32_t index);
|
|
||||||
void *loader_get_phys_dev_ext_termin(uint32_t index);
|
|
||||||
struct loader_instance *loader_get_instance(const VkInstance instance);
|
|
||||||
void loaderDeactivateLayers(const struct loader_instance *instance, struct loader_device *device, struct loader_layer_list *list);
|
|
||||||
struct loader_device *loader_create_logical_device(const struct loader_instance *inst, const VkAllocationCallbacks *pAllocator);
|
|
||||||
void loader_add_logical_device(const struct loader_instance *inst, struct loader_icd_term *icd_term,
|
|
||||||
struct loader_device *found_dev);
|
|
||||||
void loader_remove_logical_device(const struct loader_instance *inst, struct loader_icd_term *icd_term,
|
|
||||||
struct loader_device *found_dev, const VkAllocationCallbacks *pAllocator);
|
|
||||||
// NOTE: Outside of loader, this entry-point is only provided for error
|
|
||||||
// cleanup.
|
|
||||||
void loader_destroy_logical_device(const struct loader_instance *inst, struct loader_device *dev,
|
|
||||||
const VkAllocationCallbacks *pAllocator);
|
|
||||||
|
|
||||||
VkResult loaderEnableInstanceLayers(struct loader_instance *inst, const VkInstanceCreateInfo *pCreateInfo,
|
|
||||||
const struct loader_layer_list *instance_layers);
|
|
||||||
|
|
||||||
VkResult loader_create_instance_chain(const VkInstanceCreateInfo *pCreateInfo, const VkAllocationCallbacks *pAllocator,
|
|
||||||
struct loader_instance *inst, VkInstance *created_instance);
|
|
||||||
|
|
||||||
void loaderActivateInstanceLayerExtensions(struct loader_instance *inst, VkInstance created_inst);
|
|
||||||
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL loader_layer_create_device(VkInstance instance, VkPhysicalDevice physicalDevice,
|
|
||||||
const VkDeviceCreateInfo *pCreateInfo,
|
|
||||||
const VkAllocationCallbacks *pAllocator, VkDevice *pDevice,
|
|
||||||
PFN_vkGetInstanceProcAddr layerGIPA, PFN_vkGetDeviceProcAddr *nextGDPA);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL loader_layer_destroy_device(VkDevice device, const VkAllocationCallbacks *pAllocator,
|
|
||||||
PFN_vkDestroyDevice destroyFunction);
|
|
||||||
|
|
||||||
VkResult loader_create_device_chain(const VkPhysicalDevice pd, const VkDeviceCreateInfo *pCreateInfo,
|
|
||||||
const VkAllocationCallbacks *pAllocator, const struct loader_instance *inst,
|
|
||||||
struct loader_device *dev, PFN_vkGetInstanceProcAddr callingLayer,
|
|
||||||
PFN_vkGetDeviceProcAddr *layerNextGDPA);
|
|
||||||
|
|
||||||
VkResult loader_validate_device_extensions(struct loader_instance *this_instance,
|
|
||||||
const struct loader_layer_list *activated_device_layers,
|
|
||||||
const struct loader_extension_list *icd_exts, const VkDeviceCreateInfo *pCreateInfo);
|
|
||||||
|
|
||||||
VkResult setupLoaderTrampPhysDevs(VkInstance instance);
|
|
||||||
VkResult setupLoaderTermPhysDevs(struct loader_instance *inst);
|
|
||||||
|
|
||||||
VkStringErrorFlags vk_string_validate(const int max_length, const char *char_array);
|
|
||||||
|
|
||||||
#endif // LOADER_H
|
|
|
@ -1,98 +0,0 @@
|
||||||
|
|
||||||
/**
|
|
||||||
* `murmurhash.h' - murmurhash
|
|
||||||
*
|
|
||||||
* copyright (c) 2014 joseph werle <joseph.werle@gmail.com>
|
|
||||||
* Copyright (c) 2015-2016 The Khronos Group Inc.
|
|
||||||
* Copyright (c) 2015-2016 Valve Corporation
|
|
||||||
* Copyright (c) 2015-2016 LunarG, Inc.
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
* of this software and/or associated documentation files (the "Materials"), to
|
|
||||||
* deal in the Materials without restriction, including without limitation the
|
|
||||||
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
|
||||||
* sell copies of the Materials, and to permit persons to whom the Materials are
|
|
||||||
* furnished to do so, subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice(s) and this permission notice shall be included in
|
|
||||||
* all copies or substantial portions of the Materials.
|
|
||||||
*
|
|
||||||
* THE MATERIALS ARE 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 MATERIALS OR THE
|
|
||||||
* USE OR OTHER DEALINGS IN THE MATERIALS.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdint.h>
|
|
||||||
#include "murmurhash.h"
|
|
||||||
|
|
||||||
uint32_t murmurhash(const char *key, size_t len, uint32_t seed) {
|
|
||||||
uint32_t c1 = 0xcc9e2d51;
|
|
||||||
uint32_t c2 = 0x1b873593;
|
|
||||||
uint32_t r1 = 15;
|
|
||||||
uint32_t r2 = 13;
|
|
||||||
uint32_t m = 5;
|
|
||||||
uint32_t n = 0xe6546b64;
|
|
||||||
uint32_t h = 0;
|
|
||||||
uint32_t k = 0;
|
|
||||||
uint8_t *d = (uint8_t *)key; // 32 bit extract from `key'
|
|
||||||
const uint32_t *chunks = NULL;
|
|
||||||
const uint8_t *tail = NULL; // tail - last 8 bytes
|
|
||||||
int i = 0;
|
|
||||||
int l = (int)len / 4; // chunk length
|
|
||||||
|
|
||||||
h = seed;
|
|
||||||
|
|
||||||
chunks = (const uint32_t *)(d + l * 4); // body
|
|
||||||
tail = (const uint8_t *)(d + l * 4); // last 8 byte chunk of `key'
|
|
||||||
|
|
||||||
// for each 4 byte chunk of `key'
|
|
||||||
for (i = -l; i != 0; ++i) {
|
|
||||||
// next 4 byte chunk of `key'
|
|
||||||
k = chunks[i];
|
|
||||||
|
|
||||||
// encode next 4 byte chunk of `key'
|
|
||||||
k *= c1;
|
|
||||||
k = (k << r1) | (k >> (32 - r1));
|
|
||||||
k *= c2;
|
|
||||||
|
|
||||||
// append to hash
|
|
||||||
h ^= k;
|
|
||||||
h = (h << r2) | (h >> (32 - r2));
|
|
||||||
h = h * m + n;
|
|
||||||
}
|
|
||||||
|
|
||||||
k = 0;
|
|
||||||
|
|
||||||
// remainder
|
|
||||||
switch (len & 3) { // `len % 4'
|
|
||||||
case 3:
|
|
||||||
k ^= (tail[2] << 16);
|
|
||||||
// fall through
|
|
||||||
case 2:
|
|
||||||
k ^= (tail[1] << 8);
|
|
||||||
// fall through
|
|
||||||
case 1:
|
|
||||||
k ^= tail[0];
|
|
||||||
k *= c1;
|
|
||||||
k = (k << r1) | (k >> (32 - r1));
|
|
||||||
k *= c2;
|
|
||||||
h ^= k;
|
|
||||||
}
|
|
||||||
|
|
||||||
h ^= len;
|
|
||||||
|
|
||||||
h ^= (h >> 16);
|
|
||||||
h *= 0x85ebca6b;
|
|
||||||
h ^= (h >> 13);
|
|
||||||
h *= 0xc2b2ae35;
|
|
||||||
h ^= (h >> 16);
|
|
||||||
|
|
||||||
return h;
|
|
||||||
}
|
|
|
@ -1,52 +0,0 @@
|
||||||
|
|
||||||
/**
|
|
||||||
* `murmurhash.h' - murmurhash
|
|
||||||
*
|
|
||||||
* copyright (c) 2014 joseph werle <joseph.werle@gmail.com>
|
|
||||||
* Copyright (c) 2015-2016 The Khronos Group Inc.
|
|
||||||
* Copyright (c) 2015-2016 Valve Corporation
|
|
||||||
* Copyright (c) 2015-2016 LunarG, Inc.
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
* of this software and/or associated documentation files (the "Materials"), to
|
|
||||||
* deal in the Materials without restriction, including without limitation the
|
|
||||||
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
|
||||||
* sell copies of the Materials, and to permit persons to whom the Materials are
|
|
||||||
* furnished to do so, subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice(s) and this permission notice shall be included in
|
|
||||||
* all copies or substantial portions of the Materials.
|
|
||||||
*
|
|
||||||
* THE MATERIALS ARE 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 MATERIALS OR THE
|
|
||||||
* USE OR OTHER DEALINGS IN THE MATERIALS.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef MURMURHASH_H
|
|
||||||
#define MURMURHASH_H 1
|
|
||||||
|
|
||||||
#include <stdint.h>
|
|
||||||
|
|
||||||
#define MURMURHASH_VERSION "0.0.3"
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns a murmur hash of `key' based on `seed'
|
|
||||||
* using the MurmurHash3 algorithm
|
|
||||||
*/
|
|
||||||
|
|
||||||
uint32_t murmurhash(const char *key, size_t len, uint32_t seed);
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1,819 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2017 The Khronos Group Inc.
|
|
||||||
* Copyright (c) 2017 Valve Corporation
|
|
||||||
* Copyright (c) 2017 LunarG, 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.
|
|
||||||
*
|
|
||||||
* Author Jon Ashburn <jon@lunarg.com>
|
|
||||||
* Author: Lenny Komow <lenny@lunarg.com>
|
|
||||||
*/
|
|
||||||
|
|
||||||
// This code is used to pass on physical device extensions through the call chain. It must do this without creating a stack frame,
|
|
||||||
// because the actual parameters of the call are not known. Since the first parameter is known to be a VkPhysicalDevice, it can
|
|
||||||
// unwrap the physical device, overwriting the wrapped device, and then jump to the next function in the call chain. This code
|
|
||||||
// attempts to accomplish this by relying on tail-call optimizations, but there is no guarantee that this will work. As a result,
|
|
||||||
// this code is only compiled on systems where an assembly alternative has not been written.
|
|
||||||
|
|
||||||
#include "vk_loader_platform.h"
|
|
||||||
#include "loader.h"
|
|
||||||
|
|
||||||
#if defined(__GNUC__) && !defined(__clang__)
|
|
||||||
#pragma GCC optimize(3) // force gcc to use tail-calls
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Trampoline function macro for unknown physical device extension command.
|
|
||||||
#define PhysDevExtTramp(num) \
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkPhysDevExtTramp##num(VkPhysicalDevice physical_device) { \
|
|
||||||
const struct loader_instance_dispatch_table *disp; \
|
|
||||||
disp = loader_get_instance_dispatch(physical_device); \
|
|
||||||
disp->phys_dev_ext[num](loader_unwrap_physical_device(physical_device)); \
|
|
||||||
}
|
|
||||||
|
|
||||||
// Terminator function macro for unknown physical device extension command.
|
|
||||||
#define PhysDevExtTermin(num) \
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkPhysDevExtTermin##num(VkPhysicalDevice physical_device) { \
|
|
||||||
struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)physical_device; \
|
|
||||||
struct loader_icd_term *icd_term = phys_dev_term->this_icd_term; \
|
|
||||||
struct loader_instance *inst = (struct loader_instance *)icd_term->this_instance; \
|
|
||||||
if (NULL == icd_term->phys_dev_ext[num]) { \
|
|
||||||
loader_log(inst, VK_DEBUG_REPORT_ERROR_BIT_EXT, 0, "Extension %s not supported for this physical device", \
|
|
||||||
inst->phys_dev_ext_disp_hash[num].func_name); \
|
|
||||||
} \
|
|
||||||
icd_term->phys_dev_ext[num](phys_dev_term->phys_dev); \
|
|
||||||
}
|
|
||||||
|
|
||||||
// Trampoline function macro for unknown physical device extension command.
|
|
||||||
#define DevExtTramp(num) \
|
|
||||||
VKAPI_ATTR void VKAPI_CALL vkdev_ext##num(VkDevice device) { \
|
|
||||||
const struct loader_dev_dispatch_table *disp; \
|
|
||||||
disp = loader_get_dev_dispatch(device); \
|
|
||||||
disp->ext_dispatch.dev_ext[num](device); \
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Instantiations of the trampoline
|
|
||||||
PhysDevExtTramp(0)
|
|
||||||
PhysDevExtTramp(1)
|
|
||||||
PhysDevExtTramp(2)
|
|
||||||
PhysDevExtTramp(3)
|
|
||||||
PhysDevExtTramp(4)
|
|
||||||
PhysDevExtTramp(5)
|
|
||||||
PhysDevExtTramp(6)
|
|
||||||
PhysDevExtTramp(7)
|
|
||||||
PhysDevExtTramp(8)
|
|
||||||
PhysDevExtTramp(9)
|
|
||||||
PhysDevExtTramp(10)
|
|
||||||
PhysDevExtTramp(11)
|
|
||||||
PhysDevExtTramp(12)
|
|
||||||
PhysDevExtTramp(13)
|
|
||||||
PhysDevExtTramp(14)
|
|
||||||
PhysDevExtTramp(15)
|
|
||||||
PhysDevExtTramp(16)
|
|
||||||
PhysDevExtTramp(17)
|
|
||||||
PhysDevExtTramp(18)
|
|
||||||
PhysDevExtTramp(19)
|
|
||||||
PhysDevExtTramp(20)
|
|
||||||
PhysDevExtTramp(21)
|
|
||||||
PhysDevExtTramp(22)
|
|
||||||
PhysDevExtTramp(23)
|
|
||||||
PhysDevExtTramp(24)
|
|
||||||
PhysDevExtTramp(25)
|
|
||||||
PhysDevExtTramp(26)
|
|
||||||
PhysDevExtTramp(27)
|
|
||||||
PhysDevExtTramp(28)
|
|
||||||
PhysDevExtTramp(29)
|
|
||||||
PhysDevExtTramp(30)
|
|
||||||
PhysDevExtTramp(31)
|
|
||||||
PhysDevExtTramp(32)
|
|
||||||
PhysDevExtTramp(33)
|
|
||||||
PhysDevExtTramp(34)
|
|
||||||
PhysDevExtTramp(35)
|
|
||||||
PhysDevExtTramp(36)
|
|
||||||
PhysDevExtTramp(37)
|
|
||||||
PhysDevExtTramp(38)
|
|
||||||
PhysDevExtTramp(39)
|
|
||||||
PhysDevExtTramp(40)
|
|
||||||
PhysDevExtTramp(41)
|
|
||||||
PhysDevExtTramp(42)
|
|
||||||
PhysDevExtTramp(43)
|
|
||||||
PhysDevExtTramp(44)
|
|
||||||
PhysDevExtTramp(45)
|
|
||||||
PhysDevExtTramp(46)
|
|
||||||
PhysDevExtTramp(47)
|
|
||||||
PhysDevExtTramp(48)
|
|
||||||
PhysDevExtTramp(49)
|
|
||||||
PhysDevExtTramp(50)
|
|
||||||
PhysDevExtTramp(51)
|
|
||||||
PhysDevExtTramp(52)
|
|
||||||
PhysDevExtTramp(53)
|
|
||||||
PhysDevExtTramp(54)
|
|
||||||
PhysDevExtTramp(55)
|
|
||||||
PhysDevExtTramp(56)
|
|
||||||
PhysDevExtTramp(57)
|
|
||||||
PhysDevExtTramp(58)
|
|
||||||
PhysDevExtTramp(59)
|
|
||||||
PhysDevExtTramp(60)
|
|
||||||
PhysDevExtTramp(61)
|
|
||||||
PhysDevExtTramp(62)
|
|
||||||
PhysDevExtTramp(63)
|
|
||||||
PhysDevExtTramp(64)
|
|
||||||
PhysDevExtTramp(65)
|
|
||||||
PhysDevExtTramp(66)
|
|
||||||
PhysDevExtTramp(67)
|
|
||||||
PhysDevExtTramp(68)
|
|
||||||
PhysDevExtTramp(69)
|
|
||||||
PhysDevExtTramp(70)
|
|
||||||
PhysDevExtTramp(71)
|
|
||||||
PhysDevExtTramp(72)
|
|
||||||
PhysDevExtTramp(73)
|
|
||||||
PhysDevExtTramp(74)
|
|
||||||
PhysDevExtTramp(75)
|
|
||||||
PhysDevExtTramp(76)
|
|
||||||
PhysDevExtTramp(77)
|
|
||||||
PhysDevExtTramp(78)
|
|
||||||
PhysDevExtTramp(79)
|
|
||||||
PhysDevExtTramp(80)
|
|
||||||
PhysDevExtTramp(81)
|
|
||||||
PhysDevExtTramp(82)
|
|
||||||
PhysDevExtTramp(83)
|
|
||||||
PhysDevExtTramp(84)
|
|
||||||
PhysDevExtTramp(85)
|
|
||||||
PhysDevExtTramp(86)
|
|
||||||
PhysDevExtTramp(87)
|
|
||||||
PhysDevExtTramp(88)
|
|
||||||
PhysDevExtTramp(89)
|
|
||||||
PhysDevExtTramp(90)
|
|
||||||
PhysDevExtTramp(91)
|
|
||||||
PhysDevExtTramp(92)
|
|
||||||
PhysDevExtTramp(93)
|
|
||||||
PhysDevExtTramp(94)
|
|
||||||
PhysDevExtTramp(95)
|
|
||||||
PhysDevExtTramp(96)
|
|
||||||
PhysDevExtTramp(97)
|
|
||||||
PhysDevExtTramp(98)
|
|
||||||
PhysDevExtTramp(99)
|
|
||||||
PhysDevExtTramp(100)
|
|
||||||
PhysDevExtTramp(101)
|
|
||||||
PhysDevExtTramp(102)
|
|
||||||
PhysDevExtTramp(103)
|
|
||||||
PhysDevExtTramp(104)
|
|
||||||
PhysDevExtTramp(105)
|
|
||||||
PhysDevExtTramp(106)
|
|
||||||
PhysDevExtTramp(107)
|
|
||||||
PhysDevExtTramp(108)
|
|
||||||
PhysDevExtTramp(109)
|
|
||||||
PhysDevExtTramp(110)
|
|
||||||
PhysDevExtTramp(111)
|
|
||||||
PhysDevExtTramp(112)
|
|
||||||
PhysDevExtTramp(113)
|
|
||||||
PhysDevExtTramp(114)
|
|
||||||
PhysDevExtTramp(115)
|
|
||||||
PhysDevExtTramp(116)
|
|
||||||
PhysDevExtTramp(117)
|
|
||||||
PhysDevExtTramp(118)
|
|
||||||
PhysDevExtTramp(119)
|
|
||||||
PhysDevExtTramp(120)
|
|
||||||
PhysDevExtTramp(121)
|
|
||||||
PhysDevExtTramp(122)
|
|
||||||
PhysDevExtTramp(123)
|
|
||||||
PhysDevExtTramp(124)
|
|
||||||
PhysDevExtTramp(125)
|
|
||||||
PhysDevExtTramp(126)
|
|
||||||
PhysDevExtTramp(127)
|
|
||||||
PhysDevExtTramp(128)
|
|
||||||
PhysDevExtTramp(129)
|
|
||||||
PhysDevExtTramp(130)
|
|
||||||
PhysDevExtTramp(131)
|
|
||||||
PhysDevExtTramp(132)
|
|
||||||
PhysDevExtTramp(133)
|
|
||||||
PhysDevExtTramp(134)
|
|
||||||
PhysDevExtTramp(135)
|
|
||||||
PhysDevExtTramp(136)
|
|
||||||
PhysDevExtTramp(137)
|
|
||||||
PhysDevExtTramp(138)
|
|
||||||
PhysDevExtTramp(139)
|
|
||||||
PhysDevExtTramp(140)
|
|
||||||
PhysDevExtTramp(141)
|
|
||||||
PhysDevExtTramp(142)
|
|
||||||
PhysDevExtTramp(143)
|
|
||||||
PhysDevExtTramp(144)
|
|
||||||
PhysDevExtTramp(145)
|
|
||||||
PhysDevExtTramp(146)
|
|
||||||
PhysDevExtTramp(147)
|
|
||||||
PhysDevExtTramp(148)
|
|
||||||
PhysDevExtTramp(149)
|
|
||||||
PhysDevExtTramp(150)
|
|
||||||
PhysDevExtTramp(151)
|
|
||||||
PhysDevExtTramp(152)
|
|
||||||
PhysDevExtTramp(153)
|
|
||||||
PhysDevExtTramp(154)
|
|
||||||
PhysDevExtTramp(155)
|
|
||||||
PhysDevExtTramp(156)
|
|
||||||
PhysDevExtTramp(157)
|
|
||||||
PhysDevExtTramp(158)
|
|
||||||
PhysDevExtTramp(159)
|
|
||||||
PhysDevExtTramp(160)
|
|
||||||
PhysDevExtTramp(161)
|
|
||||||
PhysDevExtTramp(162)
|
|
||||||
PhysDevExtTramp(163)
|
|
||||||
PhysDevExtTramp(164)
|
|
||||||
PhysDevExtTramp(165)
|
|
||||||
PhysDevExtTramp(166)
|
|
||||||
PhysDevExtTramp(167)
|
|
||||||
PhysDevExtTramp(168)
|
|
||||||
PhysDevExtTramp(169)
|
|
||||||
PhysDevExtTramp(170)
|
|
||||||
PhysDevExtTramp(171)
|
|
||||||
PhysDevExtTramp(172)
|
|
||||||
PhysDevExtTramp(173)
|
|
||||||
PhysDevExtTramp(174)
|
|
||||||
PhysDevExtTramp(175)
|
|
||||||
PhysDevExtTramp(176)
|
|
||||||
PhysDevExtTramp(177)
|
|
||||||
PhysDevExtTramp(178)
|
|
||||||
PhysDevExtTramp(179)
|
|
||||||
PhysDevExtTramp(180)
|
|
||||||
PhysDevExtTramp(181)
|
|
||||||
PhysDevExtTramp(182)
|
|
||||||
PhysDevExtTramp(183)
|
|
||||||
PhysDevExtTramp(184)
|
|
||||||
PhysDevExtTramp(185)
|
|
||||||
PhysDevExtTramp(186)
|
|
||||||
PhysDevExtTramp(187)
|
|
||||||
PhysDevExtTramp(188)
|
|
||||||
PhysDevExtTramp(189)
|
|
||||||
PhysDevExtTramp(190)
|
|
||||||
PhysDevExtTramp(191)
|
|
||||||
PhysDevExtTramp(192)
|
|
||||||
PhysDevExtTramp(193)
|
|
||||||
PhysDevExtTramp(194)
|
|
||||||
PhysDevExtTramp(195)
|
|
||||||
PhysDevExtTramp(196)
|
|
||||||
PhysDevExtTramp(197)
|
|
||||||
PhysDevExtTramp(198)
|
|
||||||
PhysDevExtTramp(199)
|
|
||||||
PhysDevExtTramp(200)
|
|
||||||
PhysDevExtTramp(201)
|
|
||||||
PhysDevExtTramp(202)
|
|
||||||
PhysDevExtTramp(203)
|
|
||||||
PhysDevExtTramp(204)
|
|
||||||
PhysDevExtTramp(205)
|
|
||||||
PhysDevExtTramp(206)
|
|
||||||
PhysDevExtTramp(207)
|
|
||||||
PhysDevExtTramp(208)
|
|
||||||
PhysDevExtTramp(209)
|
|
||||||
PhysDevExtTramp(210)
|
|
||||||
PhysDevExtTramp(211)
|
|
||||||
PhysDevExtTramp(212)
|
|
||||||
PhysDevExtTramp(213)
|
|
||||||
PhysDevExtTramp(214)
|
|
||||||
PhysDevExtTramp(215)
|
|
||||||
PhysDevExtTramp(216)
|
|
||||||
PhysDevExtTramp(217)
|
|
||||||
PhysDevExtTramp(218)
|
|
||||||
PhysDevExtTramp(219)
|
|
||||||
PhysDevExtTramp(220)
|
|
||||||
PhysDevExtTramp(221)
|
|
||||||
PhysDevExtTramp(222)
|
|
||||||
PhysDevExtTramp(223)
|
|
||||||
PhysDevExtTramp(224)
|
|
||||||
PhysDevExtTramp(225)
|
|
||||||
PhysDevExtTramp(226)
|
|
||||||
PhysDevExtTramp(227)
|
|
||||||
PhysDevExtTramp(228)
|
|
||||||
PhysDevExtTramp(229)
|
|
||||||
PhysDevExtTramp(230)
|
|
||||||
PhysDevExtTramp(231)
|
|
||||||
PhysDevExtTramp(232)
|
|
||||||
PhysDevExtTramp(233)
|
|
||||||
PhysDevExtTramp(234)
|
|
||||||
PhysDevExtTramp(235)
|
|
||||||
PhysDevExtTramp(236)
|
|
||||||
PhysDevExtTramp(237)
|
|
||||||
PhysDevExtTramp(238)
|
|
||||||
PhysDevExtTramp(239)
|
|
||||||
PhysDevExtTramp(240)
|
|
||||||
PhysDevExtTramp(241)
|
|
||||||
PhysDevExtTramp(242)
|
|
||||||
PhysDevExtTramp(243)
|
|
||||||
PhysDevExtTramp(244)
|
|
||||||
PhysDevExtTramp(245)
|
|
||||||
PhysDevExtTramp(246)
|
|
||||||
PhysDevExtTramp(247)
|
|
||||||
PhysDevExtTramp(248)
|
|
||||||
PhysDevExtTramp(249)
|
|
||||||
|
|
||||||
// Instantiations of the terminator
|
|
||||||
PhysDevExtTermin(0)
|
|
||||||
PhysDevExtTermin(1)
|
|
||||||
PhysDevExtTermin(2)
|
|
||||||
PhysDevExtTermin(3)
|
|
||||||
PhysDevExtTermin(4)
|
|
||||||
PhysDevExtTermin(5)
|
|
||||||
PhysDevExtTermin(6)
|
|
||||||
PhysDevExtTermin(7)
|
|
||||||
PhysDevExtTermin(8)
|
|
||||||
PhysDevExtTermin(9)
|
|
||||||
PhysDevExtTermin(10)
|
|
||||||
PhysDevExtTermin(11)
|
|
||||||
PhysDevExtTermin(12)
|
|
||||||
PhysDevExtTermin(13)
|
|
||||||
PhysDevExtTermin(14)
|
|
||||||
PhysDevExtTermin(15)
|
|
||||||
PhysDevExtTermin(16)
|
|
||||||
PhysDevExtTermin(17)
|
|
||||||
PhysDevExtTermin(18)
|
|
||||||
PhysDevExtTermin(19)
|
|
||||||
PhysDevExtTermin(20)
|
|
||||||
PhysDevExtTermin(21)
|
|
||||||
PhysDevExtTermin(22)
|
|
||||||
PhysDevExtTermin(23)
|
|
||||||
PhysDevExtTermin(24)
|
|
||||||
PhysDevExtTermin(25)
|
|
||||||
PhysDevExtTermin(26)
|
|
||||||
PhysDevExtTermin(27)
|
|
||||||
PhysDevExtTermin(28)
|
|
||||||
PhysDevExtTermin(29)
|
|
||||||
PhysDevExtTermin(30)
|
|
||||||
PhysDevExtTermin(31)
|
|
||||||
PhysDevExtTermin(32)
|
|
||||||
PhysDevExtTermin(33)
|
|
||||||
PhysDevExtTermin(34)
|
|
||||||
PhysDevExtTermin(35)
|
|
||||||
PhysDevExtTermin(36)
|
|
||||||
PhysDevExtTermin(37)
|
|
||||||
PhysDevExtTermin(38)
|
|
||||||
PhysDevExtTermin(39)
|
|
||||||
PhysDevExtTermin(40)
|
|
||||||
PhysDevExtTermin(41)
|
|
||||||
PhysDevExtTermin(42)
|
|
||||||
PhysDevExtTermin(43)
|
|
||||||
PhysDevExtTermin(44)
|
|
||||||
PhysDevExtTermin(45)
|
|
||||||
PhysDevExtTermin(46)
|
|
||||||
PhysDevExtTermin(47)
|
|
||||||
PhysDevExtTermin(48)
|
|
||||||
PhysDevExtTermin(49)
|
|
||||||
PhysDevExtTermin(50)
|
|
||||||
PhysDevExtTermin(51)
|
|
||||||
PhysDevExtTermin(52)
|
|
||||||
PhysDevExtTermin(53)
|
|
||||||
PhysDevExtTermin(54)
|
|
||||||
PhysDevExtTermin(55)
|
|
||||||
PhysDevExtTermin(56)
|
|
||||||
PhysDevExtTermin(57)
|
|
||||||
PhysDevExtTermin(58)
|
|
||||||
PhysDevExtTermin(59)
|
|
||||||
PhysDevExtTermin(60)
|
|
||||||
PhysDevExtTermin(61)
|
|
||||||
PhysDevExtTermin(62)
|
|
||||||
PhysDevExtTermin(63)
|
|
||||||
PhysDevExtTermin(64)
|
|
||||||
PhysDevExtTermin(65)
|
|
||||||
PhysDevExtTermin(66)
|
|
||||||
PhysDevExtTermin(67)
|
|
||||||
PhysDevExtTermin(68)
|
|
||||||
PhysDevExtTermin(69)
|
|
||||||
PhysDevExtTermin(70)
|
|
||||||
PhysDevExtTermin(71)
|
|
||||||
PhysDevExtTermin(72)
|
|
||||||
PhysDevExtTermin(73)
|
|
||||||
PhysDevExtTermin(74)
|
|
||||||
PhysDevExtTermin(75)
|
|
||||||
PhysDevExtTermin(76)
|
|
||||||
PhysDevExtTermin(77)
|
|
||||||
PhysDevExtTermin(78)
|
|
||||||
PhysDevExtTermin(79)
|
|
||||||
PhysDevExtTermin(80)
|
|
||||||
PhysDevExtTermin(81)
|
|
||||||
PhysDevExtTermin(82)
|
|
||||||
PhysDevExtTermin(83)
|
|
||||||
PhysDevExtTermin(84)
|
|
||||||
PhysDevExtTermin(85)
|
|
||||||
PhysDevExtTermin(86)
|
|
||||||
PhysDevExtTermin(87)
|
|
||||||
PhysDevExtTermin(88)
|
|
||||||
PhysDevExtTermin(89)
|
|
||||||
PhysDevExtTermin(90)
|
|
||||||
PhysDevExtTermin(91)
|
|
||||||
PhysDevExtTermin(92)
|
|
||||||
PhysDevExtTermin(93)
|
|
||||||
PhysDevExtTermin(94)
|
|
||||||
PhysDevExtTermin(95)
|
|
||||||
PhysDevExtTermin(96)
|
|
||||||
PhysDevExtTermin(97)
|
|
||||||
PhysDevExtTermin(98)
|
|
||||||
PhysDevExtTermin(99)
|
|
||||||
PhysDevExtTermin(100)
|
|
||||||
PhysDevExtTermin(101)
|
|
||||||
PhysDevExtTermin(102)
|
|
||||||
PhysDevExtTermin(103)
|
|
||||||
PhysDevExtTermin(104)
|
|
||||||
PhysDevExtTermin(105)
|
|
||||||
PhysDevExtTermin(106)
|
|
||||||
PhysDevExtTermin(107)
|
|
||||||
PhysDevExtTermin(108)
|
|
||||||
PhysDevExtTermin(109)
|
|
||||||
PhysDevExtTermin(110)
|
|
||||||
PhysDevExtTermin(111)
|
|
||||||
PhysDevExtTermin(112)
|
|
||||||
PhysDevExtTermin(113)
|
|
||||||
PhysDevExtTermin(114)
|
|
||||||
PhysDevExtTermin(115)
|
|
||||||
PhysDevExtTermin(116)
|
|
||||||
PhysDevExtTermin(117)
|
|
||||||
PhysDevExtTermin(118)
|
|
||||||
PhysDevExtTermin(119)
|
|
||||||
PhysDevExtTermin(120)
|
|
||||||
PhysDevExtTermin(121)
|
|
||||||
PhysDevExtTermin(122)
|
|
||||||
PhysDevExtTermin(123)
|
|
||||||
PhysDevExtTermin(124)
|
|
||||||
PhysDevExtTermin(125)
|
|
||||||
PhysDevExtTermin(126)
|
|
||||||
PhysDevExtTermin(127)
|
|
||||||
PhysDevExtTermin(128)
|
|
||||||
PhysDevExtTermin(129)
|
|
||||||
PhysDevExtTermin(130)
|
|
||||||
PhysDevExtTermin(131)
|
|
||||||
PhysDevExtTermin(132)
|
|
||||||
PhysDevExtTermin(133)
|
|
||||||
PhysDevExtTermin(134)
|
|
||||||
PhysDevExtTermin(135)
|
|
||||||
PhysDevExtTermin(136)
|
|
||||||
PhysDevExtTermin(137)
|
|
||||||
PhysDevExtTermin(138)
|
|
||||||
PhysDevExtTermin(139)
|
|
||||||
PhysDevExtTermin(140)
|
|
||||||
PhysDevExtTermin(141)
|
|
||||||
PhysDevExtTermin(142)
|
|
||||||
PhysDevExtTermin(143)
|
|
||||||
PhysDevExtTermin(144)
|
|
||||||
PhysDevExtTermin(145)
|
|
||||||
PhysDevExtTermin(146)
|
|
||||||
PhysDevExtTermin(147)
|
|
||||||
PhysDevExtTermin(148)
|
|
||||||
PhysDevExtTermin(149)
|
|
||||||
PhysDevExtTermin(150)
|
|
||||||
PhysDevExtTermin(151)
|
|
||||||
PhysDevExtTermin(152)
|
|
||||||
PhysDevExtTermin(153)
|
|
||||||
PhysDevExtTermin(154)
|
|
||||||
PhysDevExtTermin(155)
|
|
||||||
PhysDevExtTermin(156)
|
|
||||||
PhysDevExtTermin(157)
|
|
||||||
PhysDevExtTermin(158)
|
|
||||||
PhysDevExtTermin(159)
|
|
||||||
PhysDevExtTermin(160)
|
|
||||||
PhysDevExtTermin(161)
|
|
||||||
PhysDevExtTermin(162)
|
|
||||||
PhysDevExtTermin(163)
|
|
||||||
PhysDevExtTermin(164)
|
|
||||||
PhysDevExtTermin(165)
|
|
||||||
PhysDevExtTermin(166)
|
|
||||||
PhysDevExtTermin(167)
|
|
||||||
PhysDevExtTermin(168)
|
|
||||||
PhysDevExtTermin(169)
|
|
||||||
PhysDevExtTermin(170)
|
|
||||||
PhysDevExtTermin(171)
|
|
||||||
PhysDevExtTermin(172)
|
|
||||||
PhysDevExtTermin(173)
|
|
||||||
PhysDevExtTermin(174)
|
|
||||||
PhysDevExtTermin(175)
|
|
||||||
PhysDevExtTermin(176)
|
|
||||||
PhysDevExtTermin(177)
|
|
||||||
PhysDevExtTermin(178)
|
|
||||||
PhysDevExtTermin(179)
|
|
||||||
PhysDevExtTermin(180)
|
|
||||||
PhysDevExtTermin(181)
|
|
||||||
PhysDevExtTermin(182)
|
|
||||||
PhysDevExtTermin(183)
|
|
||||||
PhysDevExtTermin(184)
|
|
||||||
PhysDevExtTermin(185)
|
|
||||||
PhysDevExtTermin(186)
|
|
||||||
PhysDevExtTermin(187)
|
|
||||||
PhysDevExtTermin(188)
|
|
||||||
PhysDevExtTermin(189)
|
|
||||||
PhysDevExtTermin(190)
|
|
||||||
PhysDevExtTermin(191)
|
|
||||||
PhysDevExtTermin(192)
|
|
||||||
PhysDevExtTermin(193)
|
|
||||||
PhysDevExtTermin(194)
|
|
||||||
PhysDevExtTermin(195)
|
|
||||||
PhysDevExtTermin(196)
|
|
||||||
PhysDevExtTermin(197)
|
|
||||||
PhysDevExtTermin(198)
|
|
||||||
PhysDevExtTermin(199)
|
|
||||||
PhysDevExtTermin(200)
|
|
||||||
PhysDevExtTermin(201)
|
|
||||||
PhysDevExtTermin(202)
|
|
||||||
PhysDevExtTermin(203)
|
|
||||||
PhysDevExtTermin(204)
|
|
||||||
PhysDevExtTermin(205)
|
|
||||||
PhysDevExtTermin(206)
|
|
||||||
PhysDevExtTermin(207)
|
|
||||||
PhysDevExtTermin(208)
|
|
||||||
PhysDevExtTermin(209)
|
|
||||||
PhysDevExtTermin(210)
|
|
||||||
PhysDevExtTermin(211)
|
|
||||||
PhysDevExtTermin(212)
|
|
||||||
PhysDevExtTermin(213)
|
|
||||||
PhysDevExtTermin(214)
|
|
||||||
PhysDevExtTermin(215)
|
|
||||||
PhysDevExtTermin(216)
|
|
||||||
PhysDevExtTermin(217)
|
|
||||||
PhysDevExtTermin(218)
|
|
||||||
PhysDevExtTermin(219)
|
|
||||||
PhysDevExtTermin(220)
|
|
||||||
PhysDevExtTermin(221)
|
|
||||||
PhysDevExtTermin(222)
|
|
||||||
PhysDevExtTermin(223)
|
|
||||||
PhysDevExtTermin(224)
|
|
||||||
PhysDevExtTermin(225)
|
|
||||||
PhysDevExtTermin(226)
|
|
||||||
PhysDevExtTermin(227)
|
|
||||||
PhysDevExtTermin(228)
|
|
||||||
PhysDevExtTermin(229)
|
|
||||||
PhysDevExtTermin(230)
|
|
||||||
PhysDevExtTermin(231)
|
|
||||||
PhysDevExtTermin(232)
|
|
||||||
PhysDevExtTermin(233)
|
|
||||||
PhysDevExtTermin(234)
|
|
||||||
PhysDevExtTermin(235)
|
|
||||||
PhysDevExtTermin(236)
|
|
||||||
PhysDevExtTermin(237)
|
|
||||||
PhysDevExtTermin(238)
|
|
||||||
PhysDevExtTermin(239)
|
|
||||||
PhysDevExtTermin(240)
|
|
||||||
PhysDevExtTermin(241)
|
|
||||||
PhysDevExtTermin(242)
|
|
||||||
PhysDevExtTermin(243)
|
|
||||||
PhysDevExtTermin(244)
|
|
||||||
PhysDevExtTermin(245)
|
|
||||||
PhysDevExtTermin(246)
|
|
||||||
PhysDevExtTermin(247)
|
|
||||||
PhysDevExtTermin(248)
|
|
||||||
PhysDevExtTermin(249)
|
|
||||||
|
|
||||||
// Instantiations of the device trampoline
|
|
||||||
DevExtTramp(0)
|
|
||||||
DevExtTramp(1)
|
|
||||||
DevExtTramp(2)
|
|
||||||
DevExtTramp(3)
|
|
||||||
DevExtTramp(4)
|
|
||||||
DevExtTramp(5)
|
|
||||||
DevExtTramp(6)
|
|
||||||
DevExtTramp(7)
|
|
||||||
DevExtTramp(8)
|
|
||||||
DevExtTramp(9)
|
|
||||||
DevExtTramp(10)
|
|
||||||
DevExtTramp(11)
|
|
||||||
DevExtTramp(12)
|
|
||||||
DevExtTramp(13)
|
|
||||||
DevExtTramp(14)
|
|
||||||
DevExtTramp(15)
|
|
||||||
DevExtTramp(16)
|
|
||||||
DevExtTramp(17)
|
|
||||||
DevExtTramp(18)
|
|
||||||
DevExtTramp(19)
|
|
||||||
DevExtTramp(20)
|
|
||||||
DevExtTramp(21)
|
|
||||||
DevExtTramp(22)
|
|
||||||
DevExtTramp(23)
|
|
||||||
DevExtTramp(24)
|
|
||||||
DevExtTramp(25)
|
|
||||||
DevExtTramp(26)
|
|
||||||
DevExtTramp(27)
|
|
||||||
DevExtTramp(28)
|
|
||||||
DevExtTramp(29)
|
|
||||||
DevExtTramp(30)
|
|
||||||
DevExtTramp(31)
|
|
||||||
DevExtTramp(32)
|
|
||||||
DevExtTramp(33)
|
|
||||||
DevExtTramp(34)
|
|
||||||
DevExtTramp(35)
|
|
||||||
DevExtTramp(36)
|
|
||||||
DevExtTramp(37)
|
|
||||||
DevExtTramp(38)
|
|
||||||
DevExtTramp(39)
|
|
||||||
DevExtTramp(40)
|
|
||||||
DevExtTramp(41)
|
|
||||||
DevExtTramp(42)
|
|
||||||
DevExtTramp(43)
|
|
||||||
DevExtTramp(44)
|
|
||||||
DevExtTramp(45)
|
|
||||||
DevExtTramp(46)
|
|
||||||
DevExtTramp(47)
|
|
||||||
DevExtTramp(48)
|
|
||||||
DevExtTramp(49)
|
|
||||||
DevExtTramp(50)
|
|
||||||
DevExtTramp(51)
|
|
||||||
DevExtTramp(52)
|
|
||||||
DevExtTramp(53)
|
|
||||||
DevExtTramp(54)
|
|
||||||
DevExtTramp(55)
|
|
||||||
DevExtTramp(56)
|
|
||||||
DevExtTramp(57)
|
|
||||||
DevExtTramp(58)
|
|
||||||
DevExtTramp(59)
|
|
||||||
DevExtTramp(60)
|
|
||||||
DevExtTramp(61)
|
|
||||||
DevExtTramp(62)
|
|
||||||
DevExtTramp(63)
|
|
||||||
DevExtTramp(64)
|
|
||||||
DevExtTramp(65)
|
|
||||||
DevExtTramp(66)
|
|
||||||
DevExtTramp(67)
|
|
||||||
DevExtTramp(68)
|
|
||||||
DevExtTramp(69)
|
|
||||||
DevExtTramp(70)
|
|
||||||
DevExtTramp(71)
|
|
||||||
DevExtTramp(72)
|
|
||||||
DevExtTramp(73)
|
|
||||||
DevExtTramp(74)
|
|
||||||
DevExtTramp(75)
|
|
||||||
DevExtTramp(76)
|
|
||||||
DevExtTramp(77)
|
|
||||||
DevExtTramp(78)
|
|
||||||
DevExtTramp(79)
|
|
||||||
DevExtTramp(80)
|
|
||||||
DevExtTramp(81)
|
|
||||||
DevExtTramp(82)
|
|
||||||
DevExtTramp(83)
|
|
||||||
DevExtTramp(84)
|
|
||||||
DevExtTramp(85)
|
|
||||||
DevExtTramp(86)
|
|
||||||
DevExtTramp(87)
|
|
||||||
DevExtTramp(88)
|
|
||||||
DevExtTramp(89)
|
|
||||||
DevExtTramp(90)
|
|
||||||
DevExtTramp(91)
|
|
||||||
DevExtTramp(92)
|
|
||||||
DevExtTramp(93)
|
|
||||||
DevExtTramp(94)
|
|
||||||
DevExtTramp(95)
|
|
||||||
DevExtTramp(96)
|
|
||||||
DevExtTramp(97)
|
|
||||||
DevExtTramp(98)
|
|
||||||
DevExtTramp(99)
|
|
||||||
DevExtTramp(100)
|
|
||||||
DevExtTramp(101)
|
|
||||||
DevExtTramp(102)
|
|
||||||
DevExtTramp(103)
|
|
||||||
DevExtTramp(104)
|
|
||||||
DevExtTramp(105)
|
|
||||||
DevExtTramp(106)
|
|
||||||
DevExtTramp(107)
|
|
||||||
DevExtTramp(108)
|
|
||||||
DevExtTramp(109)
|
|
||||||
DevExtTramp(110)
|
|
||||||
DevExtTramp(111)
|
|
||||||
DevExtTramp(112)
|
|
||||||
DevExtTramp(113)
|
|
||||||
DevExtTramp(114)
|
|
||||||
DevExtTramp(115)
|
|
||||||
DevExtTramp(116)
|
|
||||||
DevExtTramp(117)
|
|
||||||
DevExtTramp(118)
|
|
||||||
DevExtTramp(119)
|
|
||||||
DevExtTramp(120)
|
|
||||||
DevExtTramp(121)
|
|
||||||
DevExtTramp(122)
|
|
||||||
DevExtTramp(123)
|
|
||||||
DevExtTramp(124)
|
|
||||||
DevExtTramp(125)
|
|
||||||
DevExtTramp(126)
|
|
||||||
DevExtTramp(127)
|
|
||||||
DevExtTramp(128)
|
|
||||||
DevExtTramp(129)
|
|
||||||
DevExtTramp(130)
|
|
||||||
DevExtTramp(131)
|
|
||||||
DevExtTramp(132)
|
|
||||||
DevExtTramp(133)
|
|
||||||
DevExtTramp(134)
|
|
||||||
DevExtTramp(135)
|
|
||||||
DevExtTramp(136)
|
|
||||||
DevExtTramp(137)
|
|
||||||
DevExtTramp(138)
|
|
||||||
DevExtTramp(139)
|
|
||||||
DevExtTramp(140)
|
|
||||||
DevExtTramp(141)
|
|
||||||
DevExtTramp(142)
|
|
||||||
DevExtTramp(143)
|
|
||||||
DevExtTramp(144)
|
|
||||||
DevExtTramp(145)
|
|
||||||
DevExtTramp(146)
|
|
||||||
DevExtTramp(147)
|
|
||||||
DevExtTramp(148)
|
|
||||||
DevExtTramp(149)
|
|
||||||
DevExtTramp(150)
|
|
||||||
DevExtTramp(151)
|
|
||||||
DevExtTramp(152)
|
|
||||||
DevExtTramp(153)
|
|
||||||
DevExtTramp(154)
|
|
||||||
DevExtTramp(155)
|
|
||||||
DevExtTramp(156)
|
|
||||||
DevExtTramp(157)
|
|
||||||
DevExtTramp(158)
|
|
||||||
DevExtTramp(159)
|
|
||||||
DevExtTramp(160)
|
|
||||||
DevExtTramp(161)
|
|
||||||
DevExtTramp(162)
|
|
||||||
DevExtTramp(163)
|
|
||||||
DevExtTramp(164)
|
|
||||||
DevExtTramp(165)
|
|
||||||
DevExtTramp(166)
|
|
||||||
DevExtTramp(167)
|
|
||||||
DevExtTramp(168)
|
|
||||||
DevExtTramp(169)
|
|
||||||
DevExtTramp(170)
|
|
||||||
DevExtTramp(171)
|
|
||||||
DevExtTramp(172)
|
|
||||||
DevExtTramp(173)
|
|
||||||
DevExtTramp(174)
|
|
||||||
DevExtTramp(175)
|
|
||||||
DevExtTramp(176)
|
|
||||||
DevExtTramp(177)
|
|
||||||
DevExtTramp(178)
|
|
||||||
DevExtTramp(179)
|
|
||||||
DevExtTramp(180)
|
|
||||||
DevExtTramp(181)
|
|
||||||
DevExtTramp(182)
|
|
||||||
DevExtTramp(183)
|
|
||||||
DevExtTramp(184)
|
|
||||||
DevExtTramp(185)
|
|
||||||
DevExtTramp(186)
|
|
||||||
DevExtTramp(187)
|
|
||||||
DevExtTramp(188)
|
|
||||||
DevExtTramp(189)
|
|
||||||
DevExtTramp(190)
|
|
||||||
DevExtTramp(191)
|
|
||||||
DevExtTramp(192)
|
|
||||||
DevExtTramp(193)
|
|
||||||
DevExtTramp(194)
|
|
||||||
DevExtTramp(195)
|
|
||||||
DevExtTramp(196)
|
|
||||||
DevExtTramp(197)
|
|
||||||
DevExtTramp(198)
|
|
||||||
DevExtTramp(199)
|
|
||||||
DevExtTramp(200)
|
|
||||||
DevExtTramp(201)
|
|
||||||
DevExtTramp(202)
|
|
||||||
DevExtTramp(203)
|
|
||||||
DevExtTramp(204)
|
|
||||||
DevExtTramp(205)
|
|
||||||
DevExtTramp(206)
|
|
||||||
DevExtTramp(207)
|
|
||||||
DevExtTramp(208)
|
|
||||||
DevExtTramp(209)
|
|
||||||
DevExtTramp(210)
|
|
||||||
DevExtTramp(211)
|
|
||||||
DevExtTramp(212)
|
|
||||||
DevExtTramp(213)
|
|
||||||
DevExtTramp(214)
|
|
||||||
DevExtTramp(215)
|
|
||||||
DevExtTramp(216)
|
|
||||||
DevExtTramp(217)
|
|
||||||
DevExtTramp(218)
|
|
||||||
DevExtTramp(219)
|
|
||||||
DevExtTramp(220)
|
|
||||||
DevExtTramp(221)
|
|
||||||
DevExtTramp(222)
|
|
||||||
DevExtTramp(223)
|
|
||||||
DevExtTramp(224)
|
|
||||||
DevExtTramp(225)
|
|
||||||
DevExtTramp(226)
|
|
||||||
DevExtTramp(227)
|
|
||||||
DevExtTramp(228)
|
|
||||||
DevExtTramp(229)
|
|
||||||
DevExtTramp(230)
|
|
||||||
DevExtTramp(231)
|
|
||||||
DevExtTramp(232)
|
|
||||||
DevExtTramp(233)
|
|
||||||
DevExtTramp(234)
|
|
||||||
DevExtTramp(235)
|
|
||||||
DevExtTramp(236)
|
|
||||||
DevExtTramp(237)
|
|
||||||
DevExtTramp(238)
|
|
||||||
DevExtTramp(239)
|
|
||||||
DevExtTramp(240)
|
|
||||||
DevExtTramp(241)
|
|
||||||
DevExtTramp(242)
|
|
||||||
DevExtTramp(243)
|
|
||||||
DevExtTramp(244)
|
|
||||||
DevExtTramp(245)
|
|
||||||
DevExtTramp(246)
|
|
||||||
DevExtTramp(247)
|
|
||||||
DevExtTramp(248)
|
|
||||||
DevExtTramp(249)
|
|
|
@ -1,951 +0,0 @@
|
||||||
#pragma once
|
|
||||||
// *** THIS FILE IS GENERATED - DO NOT EDIT ***
|
|
||||||
// See dispatch_helper_generator.py for modifications
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Copyright (c) 2015-2017 The Khronos Group Inc.
|
|
||||||
* Copyright (c) 2015-2017 Valve Corporation
|
|
||||||
* Copyright (c) 2015-2017 LunarG, 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.
|
|
||||||
*
|
|
||||||
* Author: Courtney Goeltzenleuchter <courtney@LunarG.com>
|
|
||||||
* Author: Jon Ashburn <jon@lunarg.com>
|
|
||||||
* Author: Mark Lobodzinski <mark@lunarg.com>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "../vulkan.h"
|
|
||||||
#include "../vk_layer.h"
|
|
||||||
#include <string.h>
|
|
||||||
#include "vk_layer_dispatch_table.h"
|
|
||||||
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubCreateSwapchainKHR(VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchain) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubDestroySwapchainKHR(VkDevice device, VkSwapchainKHR swapchain, const VkAllocationCallbacks* pAllocator) { };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubGetSwapchainImagesKHR(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pSwapchainImageCount, VkImage* pSwapchainImages) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubAcquireNextImageKHR(VkDevice device, VkSwapchainKHR swapchain, uint64_t timeout, VkSemaphore semaphore, VkFence fence, uint32_t* pImageIndex) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubQueuePresentKHR(VkQueue queue, const VkPresentInfoKHR* pPresentInfo) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubGetDeviceGroupPresentCapabilitiesKHR(VkDevice device, VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubGetDeviceGroupSurfacePresentModesKHR(VkDevice device, VkSurfaceKHR surface, VkDeviceGroupPresentModeFlagsKHR* pModes) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubAcquireNextImage2KHR(VkDevice device, const VkAcquireNextImageInfoKHR* pAcquireInfo, uint32_t* pImageIndex) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubCreateSharedSwapchainsKHR(VkDevice device, uint32_t swapchainCount, const VkSwapchainCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchains) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubGetDeviceGroupPeerMemoryFeaturesKHR(VkDevice device, uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, VkPeerMemoryFeatureFlags* pPeerMemoryFeatures) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdSetDeviceMaskKHR(VkCommandBuffer commandBuffer, uint32_t deviceMask) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdDispatchBaseKHR(VkCommandBuffer commandBuffer, uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubTrimCommandPoolKHR(VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags) { };
|
|
||||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubGetMemoryWin32HandleKHR(VkDevice device, const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle) { return VK_SUCCESS; };
|
|
||||||
#endif // VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubGetMemoryWin32HandlePropertiesKHR(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, HANDLE handle, VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties) { return VK_SUCCESS; };
|
|
||||||
#endif // VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubGetMemoryFdKHR(VkDevice device, const VkMemoryGetFdInfoKHR* pGetFdInfo, int* pFd) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubGetMemoryFdPropertiesKHR(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, int fd, VkMemoryFdPropertiesKHR* pMemoryFdProperties) { return VK_SUCCESS; };
|
|
||||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubImportSemaphoreWin32HandleKHR(VkDevice device, const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo) { return VK_SUCCESS; };
|
|
||||||
#endif // VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubGetSemaphoreWin32HandleKHR(VkDevice device, const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle) { return VK_SUCCESS; };
|
|
||||||
#endif // VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubImportSemaphoreFdKHR(VkDevice device, const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubGetSemaphoreFdKHR(VkDevice device, const VkSemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdPushDescriptorSetKHR(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdPushDescriptorSetWithTemplateKHR(VkCommandBuffer commandBuffer, VkDescriptorUpdateTemplate descriptorUpdateTemplate, VkPipelineLayout layout, uint32_t set, const void* pData) { };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubCreateDescriptorUpdateTemplateKHR(VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubDestroyDescriptorUpdateTemplateKHR(VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubUpdateDescriptorSetWithTemplateKHR(VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData) { };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubCreateRenderPass2KHR(VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdBeginRenderPass2KHR(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, const VkSubpassBeginInfo* pSubpassBeginInfo) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdNextSubpass2KHR(VkCommandBuffer commandBuffer, const VkSubpassBeginInfo* pSubpassBeginInfo, const VkSubpassEndInfo* pSubpassEndInfo) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdEndRenderPass2KHR(VkCommandBuffer commandBuffer, const VkSubpassEndInfo* pSubpassEndInfo) { };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubGetSwapchainStatusKHR(VkDevice device, VkSwapchainKHR swapchain) { return VK_SUCCESS; };
|
|
||||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubImportFenceWin32HandleKHR(VkDevice device, const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo) { return VK_SUCCESS; };
|
|
||||||
#endif // VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubGetFenceWin32HandleKHR(VkDevice device, const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle) { return VK_SUCCESS; };
|
|
||||||
#endif // VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubImportFenceFdKHR(VkDevice device, const VkImportFenceFdInfoKHR* pImportFenceFdInfo) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubGetFenceFdKHR(VkDevice device, const VkFenceGetFdInfoKHR* pGetFdInfo, int* pFd) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubAcquireProfilingLockKHR(VkDevice device, const VkAcquireProfilingLockInfoKHR* pInfo) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubReleaseProfilingLockKHR(VkDevice device) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubGetImageMemoryRequirements2KHR(VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubGetBufferMemoryRequirements2KHR(VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubGetImageSparseMemoryRequirements2KHR(VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements) { };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubCreateSamplerYcbcrConversionKHR(VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubDestroySamplerYcbcrConversionKHR(VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks* pAllocator) { };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubBindBufferMemory2KHR(VkDevice device, uint32_t bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubBindImageMemory2KHR(VkDevice device, uint32_t bindInfoCount, const VkBindImageMemoryInfo* pBindInfos) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubGetDescriptorSetLayoutSupportKHR(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdDrawIndirectCountKHR(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdDrawIndexedIndirectCountKHR(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride) { };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubGetSemaphoreCounterValueKHR(VkDevice device, VkSemaphore semaphore, uint64_t* pValue) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubWaitSemaphoresKHR(VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, uint64_t timeout) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubSignalSemaphoreKHR(VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdSetFragmentShadingRateKHR(VkCommandBuffer commandBuffer, const VkExtent2D* pFragmentSize, const VkFragmentShadingRateCombinerOpKHR combinerOps[2]) { };
|
|
||||||
static VKAPI_ATTR VkDeviceAddress VKAPI_CALL StubGetBufferDeviceAddressKHR(VkDevice device, const VkBufferDeviceAddressInfo* pInfo) { return 0L; };
|
|
||||||
static VKAPI_ATTR uint64_t VKAPI_CALL StubGetBufferOpaqueCaptureAddressKHR(VkDevice device, const VkBufferDeviceAddressInfo* pInfo) { return 0L; };
|
|
||||||
static VKAPI_ATTR uint64_t VKAPI_CALL StubGetDeviceMemoryOpaqueCaptureAddressKHR(VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo) { return 0L; };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubCreateDeferredOperationKHR(VkDevice device, const VkAllocationCallbacks* pAllocator, VkDeferredOperationKHR* pDeferredOperation) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubDestroyDeferredOperationKHR(VkDevice device, VkDeferredOperationKHR operation, const VkAllocationCallbacks* pAllocator) { };
|
|
||||||
static VKAPI_ATTR uint32_t VKAPI_CALL StubGetDeferredOperationMaxConcurrencyKHR(VkDevice device, VkDeferredOperationKHR operation) { return 0; };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubGetDeferredOperationResultKHR(VkDevice device, VkDeferredOperationKHR operation) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubDeferredOperationJoinKHR(VkDevice device, VkDeferredOperationKHR operation) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubGetPipelineExecutablePropertiesKHR(VkDevice device, const VkPipelineInfoKHR* pPipelineInfo, uint32_t* pExecutableCount, VkPipelineExecutablePropertiesKHR* pProperties) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubGetPipelineExecutableStatisticsKHR(VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, uint32_t* pStatisticCount, VkPipelineExecutableStatisticKHR* pStatistics) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubGetPipelineExecutableInternalRepresentationsKHR(VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, uint32_t* pInternalRepresentationCount, VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdCopyBuffer2KHR(VkCommandBuffer commandBuffer, const VkCopyBufferInfo2KHR* pCopyBufferInfo) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdCopyImage2KHR(VkCommandBuffer commandBuffer, const VkCopyImageInfo2KHR* pCopyImageInfo) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdCopyBufferToImage2KHR(VkCommandBuffer commandBuffer, const VkCopyBufferToImageInfo2KHR* pCopyBufferToImageInfo) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdCopyImageToBuffer2KHR(VkCommandBuffer commandBuffer, const VkCopyImageToBufferInfo2KHR* pCopyImageToBufferInfo) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdBlitImage2KHR(VkCommandBuffer commandBuffer, const VkBlitImageInfo2KHR* pBlitImageInfo) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdResolveImage2KHR(VkCommandBuffer commandBuffer, const VkResolveImageInfo2KHR* pResolveImageInfo) { };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubDebugMarkerSetObjectTagEXT(VkDevice device, const VkDebugMarkerObjectTagInfoEXT* pTagInfo) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubDebugMarkerSetObjectNameEXT(VkDevice device, const VkDebugMarkerObjectNameInfoEXT* pNameInfo) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdDebugMarkerBeginEXT(VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdDebugMarkerEndEXT(VkCommandBuffer commandBuffer) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdDebugMarkerInsertEXT(VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdBindTransformFeedbackBuffersEXT(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdBeginTransformFeedbackEXT(VkCommandBuffer commandBuffer, uint32_t firstCounterBuffer, uint32_t counterBufferCount, const VkBuffer* pCounterBuffers, const VkDeviceSize* pCounterBufferOffsets) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdEndTransformFeedbackEXT(VkCommandBuffer commandBuffer, uint32_t firstCounterBuffer, uint32_t counterBufferCount, const VkBuffer* pCounterBuffers, const VkDeviceSize* pCounterBufferOffsets) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdBeginQueryIndexedEXT(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, VkQueryControlFlags flags, uint32_t index) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdEndQueryIndexedEXT(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, uint32_t index) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdDrawIndirectByteCountEXT(VkCommandBuffer commandBuffer, uint32_t instanceCount, uint32_t firstInstance, VkBuffer counterBuffer, VkDeviceSize counterBufferOffset, uint32_t counterOffset, uint32_t vertexStride) { };
|
|
||||||
static VKAPI_ATTR uint32_t VKAPI_CALL StubGetImageViewHandleNVX(VkDevice device, const VkImageViewHandleInfoNVX* pInfo) { return 0; };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubGetImageViewAddressNVX(VkDevice device, VkImageView imageView, VkImageViewAddressPropertiesNVX* pProperties) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdDrawIndirectCountAMD(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdDrawIndexedIndirectCountAMD(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride) { };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubGetShaderInfoAMD(VkDevice device, VkPipeline pipeline, VkShaderStageFlagBits shaderStage, VkShaderInfoTypeAMD infoType, size_t* pInfoSize, void* pInfo) { return VK_SUCCESS; };
|
|
||||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubGetMemoryWin32HandleNV(VkDevice device, VkDeviceMemory memory, VkExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle) { return VK_SUCCESS; };
|
|
||||||
#endif // VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdBeginConditionalRenderingEXT(VkCommandBuffer commandBuffer, const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdEndConditionalRenderingEXT(VkCommandBuffer commandBuffer) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdSetViewportWScalingNV(VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkViewportWScalingNV* pViewportWScalings) { };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubDisplayPowerControlEXT(VkDevice device, VkDisplayKHR display, const VkDisplayPowerInfoEXT* pDisplayPowerInfo) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubRegisterDeviceEventEXT(VkDevice device, const VkDeviceEventInfoEXT* pDeviceEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubRegisterDisplayEventEXT(VkDevice device, VkDisplayKHR display, const VkDisplayEventInfoEXT* pDisplayEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubGetSwapchainCounterEXT(VkDevice device, VkSwapchainKHR swapchain, VkSurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubGetRefreshCycleDurationGOOGLE(VkDevice device, VkSwapchainKHR swapchain, VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubGetPastPresentationTimingGOOGLE(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pPresentationTimingCount, VkPastPresentationTimingGOOGLE* pPresentationTimings) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdSetDiscardRectangleEXT(VkCommandBuffer commandBuffer, uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const VkRect2D* pDiscardRectangles) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubSetHdrMetadataEXT(VkDevice device, uint32_t swapchainCount, const VkSwapchainKHR* pSwapchains, const VkHdrMetadataEXT* pMetadata) { };
|
|
||||||
#ifdef VK_USE_PLATFORM_ANDROID_KHR
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubGetAndroidHardwareBufferPropertiesANDROID(VkDevice device, const struct AHardwareBuffer* buffer, VkAndroidHardwareBufferPropertiesANDROID* pProperties) { return VK_SUCCESS; };
|
|
||||||
#endif // VK_USE_PLATFORM_ANDROID_KHR
|
|
||||||
#ifdef VK_USE_PLATFORM_ANDROID_KHR
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubGetMemoryAndroidHardwareBufferANDROID(VkDevice device, const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo, struct AHardwareBuffer** pBuffer) { return VK_SUCCESS; };
|
|
||||||
#endif // VK_USE_PLATFORM_ANDROID_KHR
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdSetSampleLocationsEXT(VkCommandBuffer commandBuffer, const VkSampleLocationsInfoEXT* pSampleLocationsInfo) { };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubGetImageDrmFormatModifierPropertiesEXT(VkDevice device, VkImage image, VkImageDrmFormatModifierPropertiesEXT* pProperties) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubCreateValidationCacheEXT(VkDevice device, const VkValidationCacheCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkValidationCacheEXT* pValidationCache) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubDestroyValidationCacheEXT(VkDevice device, VkValidationCacheEXT validationCache, const VkAllocationCallbacks* pAllocator) { };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubMergeValidationCachesEXT(VkDevice device, VkValidationCacheEXT dstCache, uint32_t srcCacheCount, const VkValidationCacheEXT* pSrcCaches) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubGetValidationCacheDataEXT(VkDevice device, VkValidationCacheEXT validationCache, size_t* pDataSize, void* pData) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdBindShadingRateImageNV(VkCommandBuffer commandBuffer, VkImageView imageView, VkImageLayout imageLayout) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdSetViewportShadingRatePaletteNV(VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkShadingRatePaletteNV* pShadingRatePalettes) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdSetCoarseSampleOrderNV(VkCommandBuffer commandBuffer, VkCoarseSampleOrderTypeNV sampleOrderType, uint32_t customSampleOrderCount, const VkCoarseSampleOrderCustomNV* pCustomSampleOrders) { };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubCreateAccelerationStructureNV(VkDevice device, const VkAccelerationStructureCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkAccelerationStructureNV* pAccelerationStructure) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubDestroyAccelerationStructureNV(VkDevice device, VkAccelerationStructureNV accelerationStructure, const VkAllocationCallbacks* pAllocator) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubGetAccelerationStructureMemoryRequirementsNV(VkDevice device, const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo, VkMemoryRequirements2KHR* pMemoryRequirements) { };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubBindAccelerationStructureMemoryNV(VkDevice device, uint32_t bindInfoCount, const VkBindAccelerationStructureMemoryInfoNV* pBindInfos) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdBuildAccelerationStructureNV(VkCommandBuffer commandBuffer, const VkAccelerationStructureInfoNV* pInfo, VkBuffer instanceData, VkDeviceSize instanceOffset, VkBool32 update, VkAccelerationStructureNV dst, VkAccelerationStructureNV src, VkBuffer scratch, VkDeviceSize scratchOffset) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdCopyAccelerationStructureNV(VkCommandBuffer commandBuffer, VkAccelerationStructureNV dst, VkAccelerationStructureNV src, VkCopyAccelerationStructureModeKHR mode) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdTraceRaysNV(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) { };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubCreateRayTracingPipelinesNV(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkRayTracingPipelineCreateInfoNV* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubGetRayTracingShaderGroupHandlesKHR(VkDevice device, VkPipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, void* pData) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubGetRayTracingShaderGroupHandlesNV(VkDevice device, VkPipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, void* pData) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubGetAccelerationStructureHandleNV(VkDevice device, VkAccelerationStructureNV accelerationStructure, size_t dataSize, void* pData) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdWriteAccelerationStructuresPropertiesNV(VkCommandBuffer commandBuffer, uint32_t accelerationStructureCount, const VkAccelerationStructureNV* pAccelerationStructures, VkQueryType queryType, VkQueryPool queryPool, uint32_t firstQuery) { };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubCompileDeferredNV(VkDevice device, VkPipeline pipeline, uint32_t shader) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubGetMemoryHostPointerPropertiesEXT(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, const void* pHostPointer, VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdWriteBufferMarkerAMD(VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkBuffer dstBuffer, VkDeviceSize dstOffset, uint32_t marker) { };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubGetCalibratedTimestampsEXT(VkDevice device, uint32_t timestampCount, const VkCalibratedTimestampInfoEXT* pTimestampInfos, uint64_t* pTimestamps, uint64_t* pMaxDeviation) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdDrawMeshTasksNV(VkCommandBuffer commandBuffer, uint32_t taskCount, uint32_t firstTask) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdDrawMeshTasksIndirectNV(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdDrawMeshTasksIndirectCountNV(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdSetExclusiveScissorNV(VkCommandBuffer commandBuffer, uint32_t firstExclusiveScissor, uint32_t exclusiveScissorCount, const VkRect2D* pExclusiveScissors) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdSetCheckpointNV(VkCommandBuffer commandBuffer, const void* pCheckpointMarker) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubGetQueueCheckpointDataNV(VkQueue queue, uint32_t* pCheckpointDataCount, VkCheckpointDataNV* pCheckpointData) { };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubInitializePerformanceApiINTEL(VkDevice device, const VkInitializePerformanceApiInfoINTEL* pInitializeInfo) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubUninitializePerformanceApiINTEL(VkDevice device) { };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubCmdSetPerformanceMarkerINTEL(VkCommandBuffer commandBuffer, const VkPerformanceMarkerInfoINTEL* pMarkerInfo) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubCmdSetPerformanceStreamMarkerINTEL(VkCommandBuffer commandBuffer, const VkPerformanceStreamMarkerInfoINTEL* pMarkerInfo) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubCmdSetPerformanceOverrideINTEL(VkCommandBuffer commandBuffer, const VkPerformanceOverrideInfoINTEL* pOverrideInfo) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubAcquirePerformanceConfigurationINTEL(VkDevice device, const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo, VkPerformanceConfigurationINTEL* pConfiguration) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubReleasePerformanceConfigurationINTEL(VkDevice device, VkPerformanceConfigurationINTEL configuration) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubQueueSetPerformanceConfigurationINTEL(VkQueue queue, VkPerformanceConfigurationINTEL configuration) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubGetPerformanceParameterINTEL(VkDevice device, VkPerformanceParameterTypeINTEL parameter, VkPerformanceValueINTEL* pValue) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubSetLocalDimmingAMD(VkDevice device, VkSwapchainKHR swapChain, VkBool32 localDimmingEnable) { };
|
|
||||||
static VKAPI_ATTR VkDeviceAddress VKAPI_CALL StubGetBufferDeviceAddressEXT(VkDevice device, const VkBufferDeviceAddressInfo* pInfo) { return 0L; };
|
|
||||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubAcquireFullScreenExclusiveModeEXT(VkDevice device, VkSwapchainKHR swapchain) { return VK_SUCCESS; };
|
|
||||||
#endif // VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubReleaseFullScreenExclusiveModeEXT(VkDevice device, VkSwapchainKHR swapchain) { return VK_SUCCESS; };
|
|
||||||
#endif // VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubGetDeviceGroupSurfacePresentModes2EXT(VkDevice device, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkDeviceGroupPresentModeFlagsKHR* pModes) { return VK_SUCCESS; };
|
|
||||||
#endif // VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdSetLineStippleEXT(VkCommandBuffer commandBuffer, uint32_t lineStippleFactor, uint16_t lineStipplePattern) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubResetQueryPoolEXT(VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdSetCullModeEXT(VkCommandBuffer commandBuffer, VkCullModeFlags cullMode) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdSetFrontFaceEXT(VkCommandBuffer commandBuffer, VkFrontFace frontFace) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdSetPrimitiveTopologyEXT(VkCommandBuffer commandBuffer, VkPrimitiveTopology primitiveTopology) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdSetViewportWithCountEXT(VkCommandBuffer commandBuffer, uint32_t viewportCount, const VkViewport* pViewports) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdSetScissorWithCountEXT(VkCommandBuffer commandBuffer, uint32_t scissorCount, const VkRect2D* pScissors) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdBindVertexBuffers2EXT(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes, const VkDeviceSize* pStrides) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdSetDepthTestEnableEXT(VkCommandBuffer commandBuffer, VkBool32 depthTestEnable) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdSetDepthWriteEnableEXT(VkCommandBuffer commandBuffer, VkBool32 depthWriteEnable) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdSetDepthCompareOpEXT(VkCommandBuffer commandBuffer, VkCompareOp depthCompareOp) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdSetDepthBoundsTestEnableEXT(VkCommandBuffer commandBuffer, VkBool32 depthBoundsTestEnable) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdSetStencilTestEnableEXT(VkCommandBuffer commandBuffer, VkBool32 stencilTestEnable) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdSetStencilOpEXT(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, VkStencilOp failOp, VkStencilOp passOp, VkStencilOp depthFailOp, VkCompareOp compareOp) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubGetGeneratedCommandsMemoryRequirementsNV(VkDevice device, const VkGeneratedCommandsMemoryRequirementsInfoNV* pInfo, VkMemoryRequirements2* pMemoryRequirements) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdPreprocessGeneratedCommandsNV(VkCommandBuffer commandBuffer, const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdExecuteGeneratedCommandsNV(VkCommandBuffer commandBuffer, VkBool32 isPreprocessed, const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdBindPipelineShaderGroupNV(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline, uint32_t groupIndex) { };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubCreateIndirectCommandsLayoutNV(VkDevice device, const VkIndirectCommandsLayoutCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkIndirectCommandsLayoutNV* pIndirectCommandsLayout) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubDestroyIndirectCommandsLayoutNV(VkDevice device, VkIndirectCommandsLayoutNV indirectCommandsLayout, const VkAllocationCallbacks* pAllocator) { };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubCreatePrivateDataSlotEXT(VkDevice device, const VkPrivateDataSlotCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPrivateDataSlotEXT* pPrivateDataSlot) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubDestroyPrivateDataSlotEXT(VkDevice device, VkPrivateDataSlotEXT privateDataSlot, const VkAllocationCallbacks* pAllocator) { };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubSetPrivateDataEXT(VkDevice device, VkObjectType objectType, uint64_t objectHandle, VkPrivateDataSlotEXT privateDataSlot, uint64_t data) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubGetPrivateDataEXT(VkDevice device, VkObjectType objectType, uint64_t objectHandle, VkPrivateDataSlotEXT privateDataSlot, uint64_t* pData) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdSetFragmentShadingRateEnumNV(VkCommandBuffer commandBuffer, VkFragmentShadingRateNV shadingRate, const VkFragmentShadingRateCombinerOpKHR combinerOps[2]) { };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubCreateAccelerationStructureKHR(VkDevice device, const VkAccelerationStructureCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkAccelerationStructureKHR* pAccelerationStructure) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubDestroyAccelerationStructureKHR(VkDevice device, VkAccelerationStructureKHR accelerationStructure, const VkAllocationCallbacks* pAllocator) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdBuildAccelerationStructuresKHR(VkCommandBuffer commandBuffer, uint32_t infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdBuildAccelerationStructuresIndirectKHR(VkCommandBuffer commandBuffer, uint32_t infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkDeviceAddress* pIndirectDeviceAddresses, const uint32_t* pIndirectStrides, const uint32_t* const* ppMaxPrimitiveCounts) { };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubBuildAccelerationStructuresKHR(VkDevice device, VkDeferredOperationKHR deferredOperation, uint32_t infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubCopyAccelerationStructureKHR(VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyAccelerationStructureInfoKHR* pInfo) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubCopyAccelerationStructureToMemoryKHR(VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubCopyMemoryToAccelerationStructureKHR(VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubWriteAccelerationStructuresPropertiesKHR(VkDevice device, uint32_t accelerationStructureCount, const VkAccelerationStructureKHR* pAccelerationStructures, VkQueryType queryType, size_t dataSize, void* pData, size_t stride) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdCopyAccelerationStructureKHR(VkCommandBuffer commandBuffer, const VkCopyAccelerationStructureInfoKHR* pInfo) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdCopyAccelerationStructureToMemoryKHR(VkCommandBuffer commandBuffer, const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdCopyMemoryToAccelerationStructureKHR(VkCommandBuffer commandBuffer, const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo) { };
|
|
||||||
static VKAPI_ATTR VkDeviceAddress VKAPI_CALL StubGetAccelerationStructureDeviceAddressKHR(VkDevice device, const VkAccelerationStructureDeviceAddressInfoKHR* pInfo) { return 0L; };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdWriteAccelerationStructuresPropertiesKHR(VkCommandBuffer commandBuffer, uint32_t accelerationStructureCount, const VkAccelerationStructureKHR* pAccelerationStructures, VkQueryType queryType, VkQueryPool queryPool, uint32_t firstQuery) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubGetDeviceAccelerationStructureCompatibilityKHR(VkDevice device, const VkAccelerationStructureVersionInfoKHR* pVersionInfo, VkAccelerationStructureCompatibilityKHR* pCompatibility) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubGetAccelerationStructureBuildSizesKHR(VkDevice device, VkAccelerationStructureBuildTypeKHR buildType, const VkAccelerationStructureBuildGeometryInfoKHR* pBuildInfo, const uint32_t* pMaxPrimitiveCounts, VkAccelerationStructureBuildSizesInfoKHR* pSizeInfo) { };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdTraceRaysKHR(VkCommandBuffer commandBuffer, const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable, uint32_t width, uint32_t height, uint32_t depth) { };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubCreateRayTracingPipelinesKHR(VkDevice device, VkDeferredOperationKHR deferredOperation, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkRayTracingPipelineCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR VkResult VKAPI_CALL StubGetRayTracingCaptureReplayShaderGroupHandlesKHR(VkDevice device, VkPipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, void* pData) { return VK_SUCCESS; };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdTraceRaysIndirectKHR(VkCommandBuffer commandBuffer, const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable, VkDeviceAddress indirectDeviceAddress) { };
|
|
||||||
static VKAPI_ATTR VkDeviceSize VKAPI_CALL StubGetRayTracingShaderGroupStackSizeKHR(VkDevice device, VkPipeline pipeline, uint32_t group, VkShaderGroupShaderKHR groupShader) { return 0L; };
|
|
||||||
static VKAPI_ATTR void VKAPI_CALL StubCmdSetRayTracingPipelineStackSizeKHR(VkCommandBuffer commandBuffer, uint32_t pipelineStackSize) { };
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static inline void layer_init_device_dispatch_table(VkDevice device, VkLayerDispatchTable *table, PFN_vkGetDeviceProcAddr gpa) {
|
|
||||||
memset(table, 0, sizeof(*table));
|
|
||||||
// Device function pointers
|
|
||||||
table->GetDeviceProcAddr = gpa;
|
|
||||||
table->DestroyDevice = (PFN_vkDestroyDevice) gpa(device, "vkDestroyDevice");
|
|
||||||
table->GetDeviceQueue = (PFN_vkGetDeviceQueue) gpa(device, "vkGetDeviceQueue");
|
|
||||||
table->QueueSubmit = (PFN_vkQueueSubmit) gpa(device, "vkQueueSubmit");
|
|
||||||
table->QueueWaitIdle = (PFN_vkQueueWaitIdle) gpa(device, "vkQueueWaitIdle");
|
|
||||||
table->DeviceWaitIdle = (PFN_vkDeviceWaitIdle) gpa(device, "vkDeviceWaitIdle");
|
|
||||||
table->AllocateMemory = (PFN_vkAllocateMemory) gpa(device, "vkAllocateMemory");
|
|
||||||
table->FreeMemory = (PFN_vkFreeMemory) gpa(device, "vkFreeMemory");
|
|
||||||
table->MapMemory = (PFN_vkMapMemory) gpa(device, "vkMapMemory");
|
|
||||||
table->UnmapMemory = (PFN_vkUnmapMemory) gpa(device, "vkUnmapMemory");
|
|
||||||
table->FlushMappedMemoryRanges = (PFN_vkFlushMappedMemoryRanges) gpa(device, "vkFlushMappedMemoryRanges");
|
|
||||||
table->InvalidateMappedMemoryRanges = (PFN_vkInvalidateMappedMemoryRanges) gpa(device, "vkInvalidateMappedMemoryRanges");
|
|
||||||
table->GetDeviceMemoryCommitment = (PFN_vkGetDeviceMemoryCommitment) gpa(device, "vkGetDeviceMemoryCommitment");
|
|
||||||
table->BindBufferMemory = (PFN_vkBindBufferMemory) gpa(device, "vkBindBufferMemory");
|
|
||||||
table->BindImageMemory = (PFN_vkBindImageMemory) gpa(device, "vkBindImageMemory");
|
|
||||||
table->GetBufferMemoryRequirements = (PFN_vkGetBufferMemoryRequirements) gpa(device, "vkGetBufferMemoryRequirements");
|
|
||||||
table->GetImageMemoryRequirements = (PFN_vkGetImageMemoryRequirements) gpa(device, "vkGetImageMemoryRequirements");
|
|
||||||
table->GetImageSparseMemoryRequirements = (PFN_vkGetImageSparseMemoryRequirements) gpa(device, "vkGetImageSparseMemoryRequirements");
|
|
||||||
table->QueueBindSparse = (PFN_vkQueueBindSparse) gpa(device, "vkQueueBindSparse");
|
|
||||||
table->CreateFence = (PFN_vkCreateFence) gpa(device, "vkCreateFence");
|
|
||||||
table->DestroyFence = (PFN_vkDestroyFence) gpa(device, "vkDestroyFence");
|
|
||||||
table->ResetFences = (PFN_vkResetFences) gpa(device, "vkResetFences");
|
|
||||||
table->GetFenceStatus = (PFN_vkGetFenceStatus) gpa(device, "vkGetFenceStatus");
|
|
||||||
table->WaitForFences = (PFN_vkWaitForFences) gpa(device, "vkWaitForFences");
|
|
||||||
table->CreateSemaphore = (PFN_vkCreateSemaphore) gpa(device, "vkCreateSemaphore");
|
|
||||||
table->DestroySemaphore = (PFN_vkDestroySemaphore) gpa(device, "vkDestroySemaphore");
|
|
||||||
table->CreateEvent = (PFN_vkCreateEvent) gpa(device, "vkCreateEvent");
|
|
||||||
table->DestroyEvent = (PFN_vkDestroyEvent) gpa(device, "vkDestroyEvent");
|
|
||||||
table->GetEventStatus = (PFN_vkGetEventStatus) gpa(device, "vkGetEventStatus");
|
|
||||||
table->SetEvent = (PFN_vkSetEvent) gpa(device, "vkSetEvent");
|
|
||||||
table->ResetEvent = (PFN_vkResetEvent) gpa(device, "vkResetEvent");
|
|
||||||
table->CreateQueryPool = (PFN_vkCreateQueryPool) gpa(device, "vkCreateQueryPool");
|
|
||||||
table->DestroyQueryPool = (PFN_vkDestroyQueryPool) gpa(device, "vkDestroyQueryPool");
|
|
||||||
table->GetQueryPoolResults = (PFN_vkGetQueryPoolResults) gpa(device, "vkGetQueryPoolResults");
|
|
||||||
table->CreateBuffer = (PFN_vkCreateBuffer) gpa(device, "vkCreateBuffer");
|
|
||||||
table->DestroyBuffer = (PFN_vkDestroyBuffer) gpa(device, "vkDestroyBuffer");
|
|
||||||
table->CreateBufferView = (PFN_vkCreateBufferView) gpa(device, "vkCreateBufferView");
|
|
||||||
table->DestroyBufferView = (PFN_vkDestroyBufferView) gpa(device, "vkDestroyBufferView");
|
|
||||||
table->CreateImage = (PFN_vkCreateImage) gpa(device, "vkCreateImage");
|
|
||||||
table->DestroyImage = (PFN_vkDestroyImage) gpa(device, "vkDestroyImage");
|
|
||||||
table->GetImageSubresourceLayout = (PFN_vkGetImageSubresourceLayout) gpa(device, "vkGetImageSubresourceLayout");
|
|
||||||
table->CreateImageView = (PFN_vkCreateImageView) gpa(device, "vkCreateImageView");
|
|
||||||
table->DestroyImageView = (PFN_vkDestroyImageView) gpa(device, "vkDestroyImageView");
|
|
||||||
table->CreateShaderModule = (PFN_vkCreateShaderModule) gpa(device, "vkCreateShaderModule");
|
|
||||||
table->DestroyShaderModule = (PFN_vkDestroyShaderModule) gpa(device, "vkDestroyShaderModule");
|
|
||||||
table->CreatePipelineCache = (PFN_vkCreatePipelineCache) gpa(device, "vkCreatePipelineCache");
|
|
||||||
table->DestroyPipelineCache = (PFN_vkDestroyPipelineCache) gpa(device, "vkDestroyPipelineCache");
|
|
||||||
table->GetPipelineCacheData = (PFN_vkGetPipelineCacheData) gpa(device, "vkGetPipelineCacheData");
|
|
||||||
table->MergePipelineCaches = (PFN_vkMergePipelineCaches) gpa(device, "vkMergePipelineCaches");
|
|
||||||
table->CreateGraphicsPipelines = (PFN_vkCreateGraphicsPipelines) gpa(device, "vkCreateGraphicsPipelines");
|
|
||||||
table->CreateComputePipelines = (PFN_vkCreateComputePipelines) gpa(device, "vkCreateComputePipelines");
|
|
||||||
table->DestroyPipeline = (PFN_vkDestroyPipeline) gpa(device, "vkDestroyPipeline");
|
|
||||||
table->CreatePipelineLayout = (PFN_vkCreatePipelineLayout) gpa(device, "vkCreatePipelineLayout");
|
|
||||||
table->DestroyPipelineLayout = (PFN_vkDestroyPipelineLayout) gpa(device, "vkDestroyPipelineLayout");
|
|
||||||
table->CreateSampler = (PFN_vkCreateSampler) gpa(device, "vkCreateSampler");
|
|
||||||
table->DestroySampler = (PFN_vkDestroySampler) gpa(device, "vkDestroySampler");
|
|
||||||
table->CreateDescriptorSetLayout = (PFN_vkCreateDescriptorSetLayout) gpa(device, "vkCreateDescriptorSetLayout");
|
|
||||||
table->DestroyDescriptorSetLayout = (PFN_vkDestroyDescriptorSetLayout) gpa(device, "vkDestroyDescriptorSetLayout");
|
|
||||||
table->CreateDescriptorPool = (PFN_vkCreateDescriptorPool) gpa(device, "vkCreateDescriptorPool");
|
|
||||||
table->DestroyDescriptorPool = (PFN_vkDestroyDescriptorPool) gpa(device, "vkDestroyDescriptorPool");
|
|
||||||
table->ResetDescriptorPool = (PFN_vkResetDescriptorPool) gpa(device, "vkResetDescriptorPool");
|
|
||||||
table->AllocateDescriptorSets = (PFN_vkAllocateDescriptorSets) gpa(device, "vkAllocateDescriptorSets");
|
|
||||||
table->FreeDescriptorSets = (PFN_vkFreeDescriptorSets) gpa(device, "vkFreeDescriptorSets");
|
|
||||||
table->UpdateDescriptorSets = (PFN_vkUpdateDescriptorSets) gpa(device, "vkUpdateDescriptorSets");
|
|
||||||
table->CreateFramebuffer = (PFN_vkCreateFramebuffer) gpa(device, "vkCreateFramebuffer");
|
|
||||||
table->DestroyFramebuffer = (PFN_vkDestroyFramebuffer) gpa(device, "vkDestroyFramebuffer");
|
|
||||||
table->CreateRenderPass = (PFN_vkCreateRenderPass) gpa(device, "vkCreateRenderPass");
|
|
||||||
table->DestroyRenderPass = (PFN_vkDestroyRenderPass) gpa(device, "vkDestroyRenderPass");
|
|
||||||
table->GetRenderAreaGranularity = (PFN_vkGetRenderAreaGranularity) gpa(device, "vkGetRenderAreaGranularity");
|
|
||||||
table->CreateCommandPool = (PFN_vkCreateCommandPool) gpa(device, "vkCreateCommandPool");
|
|
||||||
table->DestroyCommandPool = (PFN_vkDestroyCommandPool) gpa(device, "vkDestroyCommandPool");
|
|
||||||
table->ResetCommandPool = (PFN_vkResetCommandPool) gpa(device, "vkResetCommandPool");
|
|
||||||
table->AllocateCommandBuffers = (PFN_vkAllocateCommandBuffers) gpa(device, "vkAllocateCommandBuffers");
|
|
||||||
table->FreeCommandBuffers = (PFN_vkFreeCommandBuffers) gpa(device, "vkFreeCommandBuffers");
|
|
||||||
table->BeginCommandBuffer = (PFN_vkBeginCommandBuffer) gpa(device, "vkBeginCommandBuffer");
|
|
||||||
table->EndCommandBuffer = (PFN_vkEndCommandBuffer) gpa(device, "vkEndCommandBuffer");
|
|
||||||
table->ResetCommandBuffer = (PFN_vkResetCommandBuffer) gpa(device, "vkResetCommandBuffer");
|
|
||||||
table->CmdBindPipeline = (PFN_vkCmdBindPipeline) gpa(device, "vkCmdBindPipeline");
|
|
||||||
table->CmdSetViewport = (PFN_vkCmdSetViewport) gpa(device, "vkCmdSetViewport");
|
|
||||||
table->CmdSetScissor = (PFN_vkCmdSetScissor) gpa(device, "vkCmdSetScissor");
|
|
||||||
table->CmdSetLineWidth = (PFN_vkCmdSetLineWidth) gpa(device, "vkCmdSetLineWidth");
|
|
||||||
table->CmdSetDepthBias = (PFN_vkCmdSetDepthBias) gpa(device, "vkCmdSetDepthBias");
|
|
||||||
table->CmdSetBlendConstants = (PFN_vkCmdSetBlendConstants) gpa(device, "vkCmdSetBlendConstants");
|
|
||||||
table->CmdSetDepthBounds = (PFN_vkCmdSetDepthBounds) gpa(device, "vkCmdSetDepthBounds");
|
|
||||||
table->CmdSetStencilCompareMask = (PFN_vkCmdSetStencilCompareMask) gpa(device, "vkCmdSetStencilCompareMask");
|
|
||||||
table->CmdSetStencilWriteMask = (PFN_vkCmdSetStencilWriteMask) gpa(device, "vkCmdSetStencilWriteMask");
|
|
||||||
table->CmdSetStencilReference = (PFN_vkCmdSetStencilReference) gpa(device, "vkCmdSetStencilReference");
|
|
||||||
table->CmdBindDescriptorSets = (PFN_vkCmdBindDescriptorSets) gpa(device, "vkCmdBindDescriptorSets");
|
|
||||||
table->CmdBindIndexBuffer = (PFN_vkCmdBindIndexBuffer) gpa(device, "vkCmdBindIndexBuffer");
|
|
||||||
table->CmdBindVertexBuffers = (PFN_vkCmdBindVertexBuffers) gpa(device, "vkCmdBindVertexBuffers");
|
|
||||||
table->CmdDraw = (PFN_vkCmdDraw) gpa(device, "vkCmdDraw");
|
|
||||||
table->CmdDrawIndexed = (PFN_vkCmdDrawIndexed) gpa(device, "vkCmdDrawIndexed");
|
|
||||||
table->CmdDrawIndirect = (PFN_vkCmdDrawIndirect) gpa(device, "vkCmdDrawIndirect");
|
|
||||||
table->CmdDrawIndexedIndirect = (PFN_vkCmdDrawIndexedIndirect) gpa(device, "vkCmdDrawIndexedIndirect");
|
|
||||||
table->CmdDispatch = (PFN_vkCmdDispatch) gpa(device, "vkCmdDispatch");
|
|
||||||
table->CmdDispatchIndirect = (PFN_vkCmdDispatchIndirect) gpa(device, "vkCmdDispatchIndirect");
|
|
||||||
table->CmdCopyBuffer = (PFN_vkCmdCopyBuffer) gpa(device, "vkCmdCopyBuffer");
|
|
||||||
table->CmdCopyImage = (PFN_vkCmdCopyImage) gpa(device, "vkCmdCopyImage");
|
|
||||||
table->CmdBlitImage = (PFN_vkCmdBlitImage) gpa(device, "vkCmdBlitImage");
|
|
||||||
table->CmdCopyBufferToImage = (PFN_vkCmdCopyBufferToImage) gpa(device, "vkCmdCopyBufferToImage");
|
|
||||||
table->CmdCopyImageToBuffer = (PFN_vkCmdCopyImageToBuffer) gpa(device, "vkCmdCopyImageToBuffer");
|
|
||||||
table->CmdUpdateBuffer = (PFN_vkCmdUpdateBuffer) gpa(device, "vkCmdUpdateBuffer");
|
|
||||||
table->CmdFillBuffer = (PFN_vkCmdFillBuffer) gpa(device, "vkCmdFillBuffer");
|
|
||||||
table->CmdClearColorImage = (PFN_vkCmdClearColorImage) gpa(device, "vkCmdClearColorImage");
|
|
||||||
table->CmdClearDepthStencilImage = (PFN_vkCmdClearDepthStencilImage) gpa(device, "vkCmdClearDepthStencilImage");
|
|
||||||
table->CmdClearAttachments = (PFN_vkCmdClearAttachments) gpa(device, "vkCmdClearAttachments");
|
|
||||||
table->CmdResolveImage = (PFN_vkCmdResolveImage) gpa(device, "vkCmdResolveImage");
|
|
||||||
table->CmdSetEvent = (PFN_vkCmdSetEvent) gpa(device, "vkCmdSetEvent");
|
|
||||||
table->CmdResetEvent = (PFN_vkCmdResetEvent) gpa(device, "vkCmdResetEvent");
|
|
||||||
table->CmdWaitEvents = (PFN_vkCmdWaitEvents) gpa(device, "vkCmdWaitEvents");
|
|
||||||
table->CmdPipelineBarrier = (PFN_vkCmdPipelineBarrier) gpa(device, "vkCmdPipelineBarrier");
|
|
||||||
table->CmdBeginQuery = (PFN_vkCmdBeginQuery) gpa(device, "vkCmdBeginQuery");
|
|
||||||
table->CmdEndQuery = (PFN_vkCmdEndQuery) gpa(device, "vkCmdEndQuery");
|
|
||||||
table->CmdResetQueryPool = (PFN_vkCmdResetQueryPool) gpa(device, "vkCmdResetQueryPool");
|
|
||||||
table->CmdWriteTimestamp = (PFN_vkCmdWriteTimestamp) gpa(device, "vkCmdWriteTimestamp");
|
|
||||||
table->CmdCopyQueryPoolResults = (PFN_vkCmdCopyQueryPoolResults) gpa(device, "vkCmdCopyQueryPoolResults");
|
|
||||||
table->CmdPushConstants = (PFN_vkCmdPushConstants) gpa(device, "vkCmdPushConstants");
|
|
||||||
table->CmdBeginRenderPass = (PFN_vkCmdBeginRenderPass) gpa(device, "vkCmdBeginRenderPass");
|
|
||||||
table->CmdNextSubpass = (PFN_vkCmdNextSubpass) gpa(device, "vkCmdNextSubpass");
|
|
||||||
table->CmdEndRenderPass = (PFN_vkCmdEndRenderPass) gpa(device, "vkCmdEndRenderPass");
|
|
||||||
table->CmdExecuteCommands = (PFN_vkCmdExecuteCommands) gpa(device, "vkCmdExecuteCommands");
|
|
||||||
table->BindBufferMemory2 = (PFN_vkBindBufferMemory2) gpa(device, "vkBindBufferMemory2");
|
|
||||||
table->BindImageMemory2 = (PFN_vkBindImageMemory2) gpa(device, "vkBindImageMemory2");
|
|
||||||
table->GetDeviceGroupPeerMemoryFeatures = (PFN_vkGetDeviceGroupPeerMemoryFeatures) gpa(device, "vkGetDeviceGroupPeerMemoryFeatures");
|
|
||||||
table->CmdSetDeviceMask = (PFN_vkCmdSetDeviceMask) gpa(device, "vkCmdSetDeviceMask");
|
|
||||||
table->CmdDispatchBase = (PFN_vkCmdDispatchBase) gpa(device, "vkCmdDispatchBase");
|
|
||||||
table->GetImageMemoryRequirements2 = (PFN_vkGetImageMemoryRequirements2) gpa(device, "vkGetImageMemoryRequirements2");
|
|
||||||
table->GetBufferMemoryRequirements2 = (PFN_vkGetBufferMemoryRequirements2) gpa(device, "vkGetBufferMemoryRequirements2");
|
|
||||||
table->GetImageSparseMemoryRequirements2 = (PFN_vkGetImageSparseMemoryRequirements2) gpa(device, "vkGetImageSparseMemoryRequirements2");
|
|
||||||
table->TrimCommandPool = (PFN_vkTrimCommandPool) gpa(device, "vkTrimCommandPool");
|
|
||||||
table->GetDeviceQueue2 = (PFN_vkGetDeviceQueue2) gpa(device, "vkGetDeviceQueue2");
|
|
||||||
table->CreateSamplerYcbcrConversion = (PFN_vkCreateSamplerYcbcrConversion) gpa(device, "vkCreateSamplerYcbcrConversion");
|
|
||||||
table->DestroySamplerYcbcrConversion = (PFN_vkDestroySamplerYcbcrConversion) gpa(device, "vkDestroySamplerYcbcrConversion");
|
|
||||||
table->CreateDescriptorUpdateTemplate = (PFN_vkCreateDescriptorUpdateTemplate) gpa(device, "vkCreateDescriptorUpdateTemplate");
|
|
||||||
table->DestroyDescriptorUpdateTemplate = (PFN_vkDestroyDescriptorUpdateTemplate) gpa(device, "vkDestroyDescriptorUpdateTemplate");
|
|
||||||
table->UpdateDescriptorSetWithTemplate = (PFN_vkUpdateDescriptorSetWithTemplate) gpa(device, "vkUpdateDescriptorSetWithTemplate");
|
|
||||||
table->GetDescriptorSetLayoutSupport = (PFN_vkGetDescriptorSetLayoutSupport) gpa(device, "vkGetDescriptorSetLayoutSupport");
|
|
||||||
table->CmdDrawIndirectCount = (PFN_vkCmdDrawIndirectCount) gpa(device, "vkCmdDrawIndirectCount");
|
|
||||||
table->CmdDrawIndexedIndirectCount = (PFN_vkCmdDrawIndexedIndirectCount) gpa(device, "vkCmdDrawIndexedIndirectCount");
|
|
||||||
table->CreateRenderPass2 = (PFN_vkCreateRenderPass2) gpa(device, "vkCreateRenderPass2");
|
|
||||||
table->CmdBeginRenderPass2 = (PFN_vkCmdBeginRenderPass2) gpa(device, "vkCmdBeginRenderPass2");
|
|
||||||
table->CmdNextSubpass2 = (PFN_vkCmdNextSubpass2) gpa(device, "vkCmdNextSubpass2");
|
|
||||||
table->CmdEndRenderPass2 = (PFN_vkCmdEndRenderPass2) gpa(device, "vkCmdEndRenderPass2");
|
|
||||||
table->ResetQueryPool = (PFN_vkResetQueryPool) gpa(device, "vkResetQueryPool");
|
|
||||||
table->GetSemaphoreCounterValue = (PFN_vkGetSemaphoreCounterValue) gpa(device, "vkGetSemaphoreCounterValue");
|
|
||||||
table->WaitSemaphores = (PFN_vkWaitSemaphores) gpa(device, "vkWaitSemaphores");
|
|
||||||
table->SignalSemaphore = (PFN_vkSignalSemaphore) gpa(device, "vkSignalSemaphore");
|
|
||||||
table->GetBufferDeviceAddress = (PFN_vkGetBufferDeviceAddress) gpa(device, "vkGetBufferDeviceAddress");
|
|
||||||
table->GetBufferOpaqueCaptureAddress = (PFN_vkGetBufferOpaqueCaptureAddress) gpa(device, "vkGetBufferOpaqueCaptureAddress");
|
|
||||||
table->GetDeviceMemoryOpaqueCaptureAddress = (PFN_vkGetDeviceMemoryOpaqueCaptureAddress) gpa(device, "vkGetDeviceMemoryOpaqueCaptureAddress");
|
|
||||||
table->CreateSwapchainKHR = (PFN_vkCreateSwapchainKHR) gpa(device, "vkCreateSwapchainKHR");
|
|
||||||
if (table->CreateSwapchainKHR == nullptr) { table->CreateSwapchainKHR = (PFN_vkCreateSwapchainKHR)StubCreateSwapchainKHR; }
|
|
||||||
table->DestroySwapchainKHR = (PFN_vkDestroySwapchainKHR) gpa(device, "vkDestroySwapchainKHR");
|
|
||||||
if (table->DestroySwapchainKHR == nullptr) { table->DestroySwapchainKHR = (PFN_vkDestroySwapchainKHR)StubDestroySwapchainKHR; }
|
|
||||||
table->GetSwapchainImagesKHR = (PFN_vkGetSwapchainImagesKHR) gpa(device, "vkGetSwapchainImagesKHR");
|
|
||||||
if (table->GetSwapchainImagesKHR == nullptr) { table->GetSwapchainImagesKHR = (PFN_vkGetSwapchainImagesKHR)StubGetSwapchainImagesKHR; }
|
|
||||||
table->AcquireNextImageKHR = (PFN_vkAcquireNextImageKHR) gpa(device, "vkAcquireNextImageKHR");
|
|
||||||
if (table->AcquireNextImageKHR == nullptr) { table->AcquireNextImageKHR = (PFN_vkAcquireNextImageKHR)StubAcquireNextImageKHR; }
|
|
||||||
table->QueuePresentKHR = (PFN_vkQueuePresentKHR) gpa(device, "vkQueuePresentKHR");
|
|
||||||
if (table->QueuePresentKHR == nullptr) { table->QueuePresentKHR = (PFN_vkQueuePresentKHR)StubQueuePresentKHR; }
|
|
||||||
table->GetDeviceGroupPresentCapabilitiesKHR = (PFN_vkGetDeviceGroupPresentCapabilitiesKHR) gpa(device, "vkGetDeviceGroupPresentCapabilitiesKHR");
|
|
||||||
if (table->GetDeviceGroupPresentCapabilitiesKHR == nullptr) { table->GetDeviceGroupPresentCapabilitiesKHR = (PFN_vkGetDeviceGroupPresentCapabilitiesKHR)StubGetDeviceGroupPresentCapabilitiesKHR; }
|
|
||||||
table->GetDeviceGroupSurfacePresentModesKHR = (PFN_vkGetDeviceGroupSurfacePresentModesKHR) gpa(device, "vkGetDeviceGroupSurfacePresentModesKHR");
|
|
||||||
if (table->GetDeviceGroupSurfacePresentModesKHR == nullptr) { table->GetDeviceGroupSurfacePresentModesKHR = (PFN_vkGetDeviceGroupSurfacePresentModesKHR)StubGetDeviceGroupSurfacePresentModesKHR; }
|
|
||||||
table->AcquireNextImage2KHR = (PFN_vkAcquireNextImage2KHR) gpa(device, "vkAcquireNextImage2KHR");
|
|
||||||
if (table->AcquireNextImage2KHR == nullptr) { table->AcquireNextImage2KHR = (PFN_vkAcquireNextImage2KHR)StubAcquireNextImage2KHR; }
|
|
||||||
table->CreateSharedSwapchainsKHR = (PFN_vkCreateSharedSwapchainsKHR) gpa(device, "vkCreateSharedSwapchainsKHR");
|
|
||||||
if (table->CreateSharedSwapchainsKHR == nullptr) { table->CreateSharedSwapchainsKHR = (PFN_vkCreateSharedSwapchainsKHR)StubCreateSharedSwapchainsKHR; }
|
|
||||||
table->GetDeviceGroupPeerMemoryFeaturesKHR = (PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR) gpa(device, "vkGetDeviceGroupPeerMemoryFeaturesKHR");
|
|
||||||
if (table->GetDeviceGroupPeerMemoryFeaturesKHR == nullptr) { table->GetDeviceGroupPeerMemoryFeaturesKHR = (PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR)StubGetDeviceGroupPeerMemoryFeaturesKHR; }
|
|
||||||
table->CmdSetDeviceMaskKHR = (PFN_vkCmdSetDeviceMaskKHR) gpa(device, "vkCmdSetDeviceMaskKHR");
|
|
||||||
if (table->CmdSetDeviceMaskKHR == nullptr) { table->CmdSetDeviceMaskKHR = (PFN_vkCmdSetDeviceMaskKHR)StubCmdSetDeviceMaskKHR; }
|
|
||||||
table->CmdDispatchBaseKHR = (PFN_vkCmdDispatchBaseKHR) gpa(device, "vkCmdDispatchBaseKHR");
|
|
||||||
if (table->CmdDispatchBaseKHR == nullptr) { table->CmdDispatchBaseKHR = (PFN_vkCmdDispatchBaseKHR)StubCmdDispatchBaseKHR; }
|
|
||||||
table->TrimCommandPoolKHR = (PFN_vkTrimCommandPoolKHR) gpa(device, "vkTrimCommandPoolKHR");
|
|
||||||
if (table->TrimCommandPoolKHR == nullptr) { table->TrimCommandPoolKHR = (PFN_vkTrimCommandPoolKHR)StubTrimCommandPoolKHR; }
|
|
||||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
table->GetMemoryWin32HandleKHR = (PFN_vkGetMemoryWin32HandleKHR) gpa(device, "vkGetMemoryWin32HandleKHR");
|
|
||||||
if (table->GetMemoryWin32HandleKHR == nullptr) { table->GetMemoryWin32HandleKHR = (PFN_vkGetMemoryWin32HandleKHR)StubGetMemoryWin32HandleKHR; }
|
|
||||||
#endif // VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
table->GetMemoryWin32HandlePropertiesKHR = (PFN_vkGetMemoryWin32HandlePropertiesKHR) gpa(device, "vkGetMemoryWin32HandlePropertiesKHR");
|
|
||||||
if (table->GetMemoryWin32HandlePropertiesKHR == nullptr) { table->GetMemoryWin32HandlePropertiesKHR = (PFN_vkGetMemoryWin32HandlePropertiesKHR)StubGetMemoryWin32HandlePropertiesKHR; }
|
|
||||||
#endif // VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
table->GetMemoryFdKHR = (PFN_vkGetMemoryFdKHR) gpa(device, "vkGetMemoryFdKHR");
|
|
||||||
if (table->GetMemoryFdKHR == nullptr) { table->GetMemoryFdKHR = (PFN_vkGetMemoryFdKHR)StubGetMemoryFdKHR; }
|
|
||||||
table->GetMemoryFdPropertiesKHR = (PFN_vkGetMemoryFdPropertiesKHR) gpa(device, "vkGetMemoryFdPropertiesKHR");
|
|
||||||
if (table->GetMemoryFdPropertiesKHR == nullptr) { table->GetMemoryFdPropertiesKHR = (PFN_vkGetMemoryFdPropertiesKHR)StubGetMemoryFdPropertiesKHR; }
|
|
||||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
table->ImportSemaphoreWin32HandleKHR = (PFN_vkImportSemaphoreWin32HandleKHR) gpa(device, "vkImportSemaphoreWin32HandleKHR");
|
|
||||||
if (table->ImportSemaphoreWin32HandleKHR == nullptr) { table->ImportSemaphoreWin32HandleKHR = (PFN_vkImportSemaphoreWin32HandleKHR)StubImportSemaphoreWin32HandleKHR; }
|
|
||||||
#endif // VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
table->GetSemaphoreWin32HandleKHR = (PFN_vkGetSemaphoreWin32HandleKHR) gpa(device, "vkGetSemaphoreWin32HandleKHR");
|
|
||||||
if (table->GetSemaphoreWin32HandleKHR == nullptr) { table->GetSemaphoreWin32HandleKHR = (PFN_vkGetSemaphoreWin32HandleKHR)StubGetSemaphoreWin32HandleKHR; }
|
|
||||||
#endif // VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
table->ImportSemaphoreFdKHR = (PFN_vkImportSemaphoreFdKHR) gpa(device, "vkImportSemaphoreFdKHR");
|
|
||||||
if (table->ImportSemaphoreFdKHR == nullptr) { table->ImportSemaphoreFdKHR = (PFN_vkImportSemaphoreFdKHR)StubImportSemaphoreFdKHR; }
|
|
||||||
table->GetSemaphoreFdKHR = (PFN_vkGetSemaphoreFdKHR) gpa(device, "vkGetSemaphoreFdKHR");
|
|
||||||
if (table->GetSemaphoreFdKHR == nullptr) { table->GetSemaphoreFdKHR = (PFN_vkGetSemaphoreFdKHR)StubGetSemaphoreFdKHR; }
|
|
||||||
table->CmdPushDescriptorSetKHR = (PFN_vkCmdPushDescriptorSetKHR) gpa(device, "vkCmdPushDescriptorSetKHR");
|
|
||||||
if (table->CmdPushDescriptorSetKHR == nullptr) { table->CmdPushDescriptorSetKHR = (PFN_vkCmdPushDescriptorSetKHR)StubCmdPushDescriptorSetKHR; }
|
|
||||||
table->CmdPushDescriptorSetWithTemplateKHR = (PFN_vkCmdPushDescriptorSetWithTemplateKHR) gpa(device, "vkCmdPushDescriptorSetWithTemplateKHR");
|
|
||||||
if (table->CmdPushDescriptorSetWithTemplateKHR == nullptr) { table->CmdPushDescriptorSetWithTemplateKHR = (PFN_vkCmdPushDescriptorSetWithTemplateKHR)StubCmdPushDescriptorSetWithTemplateKHR; }
|
|
||||||
table->CreateDescriptorUpdateTemplateKHR = (PFN_vkCreateDescriptorUpdateTemplateKHR) gpa(device, "vkCreateDescriptorUpdateTemplateKHR");
|
|
||||||
if (table->CreateDescriptorUpdateTemplateKHR == nullptr) { table->CreateDescriptorUpdateTemplateKHR = (PFN_vkCreateDescriptorUpdateTemplateKHR)StubCreateDescriptorUpdateTemplateKHR; }
|
|
||||||
table->DestroyDescriptorUpdateTemplateKHR = (PFN_vkDestroyDescriptorUpdateTemplateKHR) gpa(device, "vkDestroyDescriptorUpdateTemplateKHR");
|
|
||||||
if (table->DestroyDescriptorUpdateTemplateKHR == nullptr) { table->DestroyDescriptorUpdateTemplateKHR = (PFN_vkDestroyDescriptorUpdateTemplateKHR)StubDestroyDescriptorUpdateTemplateKHR; }
|
|
||||||
table->UpdateDescriptorSetWithTemplateKHR = (PFN_vkUpdateDescriptorSetWithTemplateKHR) gpa(device, "vkUpdateDescriptorSetWithTemplateKHR");
|
|
||||||
if (table->UpdateDescriptorSetWithTemplateKHR == nullptr) { table->UpdateDescriptorSetWithTemplateKHR = (PFN_vkUpdateDescriptorSetWithTemplateKHR)StubUpdateDescriptorSetWithTemplateKHR; }
|
|
||||||
table->CreateRenderPass2KHR = (PFN_vkCreateRenderPass2KHR) gpa(device, "vkCreateRenderPass2KHR");
|
|
||||||
if (table->CreateRenderPass2KHR == nullptr) { table->CreateRenderPass2KHR = (PFN_vkCreateRenderPass2KHR)StubCreateRenderPass2KHR; }
|
|
||||||
table->CmdBeginRenderPass2KHR = (PFN_vkCmdBeginRenderPass2KHR) gpa(device, "vkCmdBeginRenderPass2KHR");
|
|
||||||
if (table->CmdBeginRenderPass2KHR == nullptr) { table->CmdBeginRenderPass2KHR = (PFN_vkCmdBeginRenderPass2KHR)StubCmdBeginRenderPass2KHR; }
|
|
||||||
table->CmdNextSubpass2KHR = (PFN_vkCmdNextSubpass2KHR) gpa(device, "vkCmdNextSubpass2KHR");
|
|
||||||
if (table->CmdNextSubpass2KHR == nullptr) { table->CmdNextSubpass2KHR = (PFN_vkCmdNextSubpass2KHR)StubCmdNextSubpass2KHR; }
|
|
||||||
table->CmdEndRenderPass2KHR = (PFN_vkCmdEndRenderPass2KHR) gpa(device, "vkCmdEndRenderPass2KHR");
|
|
||||||
if (table->CmdEndRenderPass2KHR == nullptr) { table->CmdEndRenderPass2KHR = (PFN_vkCmdEndRenderPass2KHR)StubCmdEndRenderPass2KHR; }
|
|
||||||
table->GetSwapchainStatusKHR = (PFN_vkGetSwapchainStatusKHR) gpa(device, "vkGetSwapchainStatusKHR");
|
|
||||||
if (table->GetSwapchainStatusKHR == nullptr) { table->GetSwapchainStatusKHR = (PFN_vkGetSwapchainStatusKHR)StubGetSwapchainStatusKHR; }
|
|
||||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
table->ImportFenceWin32HandleKHR = (PFN_vkImportFenceWin32HandleKHR) gpa(device, "vkImportFenceWin32HandleKHR");
|
|
||||||
if (table->ImportFenceWin32HandleKHR == nullptr) { table->ImportFenceWin32HandleKHR = (PFN_vkImportFenceWin32HandleKHR)StubImportFenceWin32HandleKHR; }
|
|
||||||
#endif // VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
table->GetFenceWin32HandleKHR = (PFN_vkGetFenceWin32HandleKHR) gpa(device, "vkGetFenceWin32HandleKHR");
|
|
||||||
if (table->GetFenceWin32HandleKHR == nullptr) { table->GetFenceWin32HandleKHR = (PFN_vkGetFenceWin32HandleKHR)StubGetFenceWin32HandleKHR; }
|
|
||||||
#endif // VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
table->ImportFenceFdKHR = (PFN_vkImportFenceFdKHR) gpa(device, "vkImportFenceFdKHR");
|
|
||||||
if (table->ImportFenceFdKHR == nullptr) { table->ImportFenceFdKHR = (PFN_vkImportFenceFdKHR)StubImportFenceFdKHR; }
|
|
||||||
table->GetFenceFdKHR = (PFN_vkGetFenceFdKHR) gpa(device, "vkGetFenceFdKHR");
|
|
||||||
if (table->GetFenceFdKHR == nullptr) { table->GetFenceFdKHR = (PFN_vkGetFenceFdKHR)StubGetFenceFdKHR; }
|
|
||||||
table->AcquireProfilingLockKHR = (PFN_vkAcquireProfilingLockKHR) gpa(device, "vkAcquireProfilingLockKHR");
|
|
||||||
if (table->AcquireProfilingLockKHR == nullptr) { table->AcquireProfilingLockKHR = (PFN_vkAcquireProfilingLockKHR)StubAcquireProfilingLockKHR; }
|
|
||||||
table->ReleaseProfilingLockKHR = (PFN_vkReleaseProfilingLockKHR) gpa(device, "vkReleaseProfilingLockKHR");
|
|
||||||
if (table->ReleaseProfilingLockKHR == nullptr) { table->ReleaseProfilingLockKHR = (PFN_vkReleaseProfilingLockKHR)StubReleaseProfilingLockKHR; }
|
|
||||||
table->GetImageMemoryRequirements2KHR = (PFN_vkGetImageMemoryRequirements2KHR) gpa(device, "vkGetImageMemoryRequirements2KHR");
|
|
||||||
if (table->GetImageMemoryRequirements2KHR == nullptr) { table->GetImageMemoryRequirements2KHR = (PFN_vkGetImageMemoryRequirements2KHR)StubGetImageMemoryRequirements2KHR; }
|
|
||||||
table->GetBufferMemoryRequirements2KHR = (PFN_vkGetBufferMemoryRequirements2KHR) gpa(device, "vkGetBufferMemoryRequirements2KHR");
|
|
||||||
if (table->GetBufferMemoryRequirements2KHR == nullptr) { table->GetBufferMemoryRequirements2KHR = (PFN_vkGetBufferMemoryRequirements2KHR)StubGetBufferMemoryRequirements2KHR; }
|
|
||||||
table->GetImageSparseMemoryRequirements2KHR = (PFN_vkGetImageSparseMemoryRequirements2KHR) gpa(device, "vkGetImageSparseMemoryRequirements2KHR");
|
|
||||||
if (table->GetImageSparseMemoryRequirements2KHR == nullptr) { table->GetImageSparseMemoryRequirements2KHR = (PFN_vkGetImageSparseMemoryRequirements2KHR)StubGetImageSparseMemoryRequirements2KHR; }
|
|
||||||
table->CreateSamplerYcbcrConversionKHR = (PFN_vkCreateSamplerYcbcrConversionKHR) gpa(device, "vkCreateSamplerYcbcrConversionKHR");
|
|
||||||
if (table->CreateSamplerYcbcrConversionKHR == nullptr) { table->CreateSamplerYcbcrConversionKHR = (PFN_vkCreateSamplerYcbcrConversionKHR)StubCreateSamplerYcbcrConversionKHR; }
|
|
||||||
table->DestroySamplerYcbcrConversionKHR = (PFN_vkDestroySamplerYcbcrConversionKHR) gpa(device, "vkDestroySamplerYcbcrConversionKHR");
|
|
||||||
if (table->DestroySamplerYcbcrConversionKHR == nullptr) { table->DestroySamplerYcbcrConversionKHR = (PFN_vkDestroySamplerYcbcrConversionKHR)StubDestroySamplerYcbcrConversionKHR; }
|
|
||||||
table->BindBufferMemory2KHR = (PFN_vkBindBufferMemory2KHR) gpa(device, "vkBindBufferMemory2KHR");
|
|
||||||
if (table->BindBufferMemory2KHR == nullptr) { table->BindBufferMemory2KHR = (PFN_vkBindBufferMemory2KHR)StubBindBufferMemory2KHR; }
|
|
||||||
table->BindImageMemory2KHR = (PFN_vkBindImageMemory2KHR) gpa(device, "vkBindImageMemory2KHR");
|
|
||||||
if (table->BindImageMemory2KHR == nullptr) { table->BindImageMemory2KHR = (PFN_vkBindImageMemory2KHR)StubBindImageMemory2KHR; }
|
|
||||||
table->GetDescriptorSetLayoutSupportKHR = (PFN_vkGetDescriptorSetLayoutSupportKHR) gpa(device, "vkGetDescriptorSetLayoutSupportKHR");
|
|
||||||
if (table->GetDescriptorSetLayoutSupportKHR == nullptr) { table->GetDescriptorSetLayoutSupportKHR = (PFN_vkGetDescriptorSetLayoutSupportKHR)StubGetDescriptorSetLayoutSupportKHR; }
|
|
||||||
table->CmdDrawIndirectCountKHR = (PFN_vkCmdDrawIndirectCountKHR) gpa(device, "vkCmdDrawIndirectCountKHR");
|
|
||||||
if (table->CmdDrawIndirectCountKHR == nullptr) { table->CmdDrawIndirectCountKHR = (PFN_vkCmdDrawIndirectCountKHR)StubCmdDrawIndirectCountKHR; }
|
|
||||||
table->CmdDrawIndexedIndirectCountKHR = (PFN_vkCmdDrawIndexedIndirectCountKHR) gpa(device, "vkCmdDrawIndexedIndirectCountKHR");
|
|
||||||
if (table->CmdDrawIndexedIndirectCountKHR == nullptr) { table->CmdDrawIndexedIndirectCountKHR = (PFN_vkCmdDrawIndexedIndirectCountKHR)StubCmdDrawIndexedIndirectCountKHR; }
|
|
||||||
table->GetSemaphoreCounterValueKHR = (PFN_vkGetSemaphoreCounterValueKHR) gpa(device, "vkGetSemaphoreCounterValueKHR");
|
|
||||||
if (table->GetSemaphoreCounterValueKHR == nullptr) { table->GetSemaphoreCounterValueKHR = (PFN_vkGetSemaphoreCounterValueKHR)StubGetSemaphoreCounterValueKHR; }
|
|
||||||
table->WaitSemaphoresKHR = (PFN_vkWaitSemaphoresKHR) gpa(device, "vkWaitSemaphoresKHR");
|
|
||||||
if (table->WaitSemaphoresKHR == nullptr) { table->WaitSemaphoresKHR = (PFN_vkWaitSemaphoresKHR)StubWaitSemaphoresKHR; }
|
|
||||||
table->SignalSemaphoreKHR = (PFN_vkSignalSemaphoreKHR) gpa(device, "vkSignalSemaphoreKHR");
|
|
||||||
if (table->SignalSemaphoreKHR == nullptr) { table->SignalSemaphoreKHR = (PFN_vkSignalSemaphoreKHR)StubSignalSemaphoreKHR; }
|
|
||||||
table->CmdSetFragmentShadingRateKHR = (PFN_vkCmdSetFragmentShadingRateKHR) gpa(device, "vkCmdSetFragmentShadingRateKHR");
|
|
||||||
if (table->CmdSetFragmentShadingRateKHR == nullptr) { table->CmdSetFragmentShadingRateKHR = (PFN_vkCmdSetFragmentShadingRateKHR)StubCmdSetFragmentShadingRateKHR; }
|
|
||||||
table->GetBufferDeviceAddressKHR = (PFN_vkGetBufferDeviceAddressKHR) gpa(device, "vkGetBufferDeviceAddressKHR");
|
|
||||||
if (table->GetBufferDeviceAddressKHR == nullptr) { table->GetBufferDeviceAddressKHR = (PFN_vkGetBufferDeviceAddressKHR)StubGetBufferDeviceAddressKHR; }
|
|
||||||
table->GetBufferOpaqueCaptureAddressKHR = (PFN_vkGetBufferOpaqueCaptureAddressKHR) gpa(device, "vkGetBufferOpaqueCaptureAddressKHR");
|
|
||||||
if (table->GetBufferOpaqueCaptureAddressKHR == nullptr) { table->GetBufferOpaqueCaptureAddressKHR = (PFN_vkGetBufferOpaqueCaptureAddressKHR)StubGetBufferOpaqueCaptureAddressKHR; }
|
|
||||||
table->GetDeviceMemoryOpaqueCaptureAddressKHR = (PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR) gpa(device, "vkGetDeviceMemoryOpaqueCaptureAddressKHR");
|
|
||||||
if (table->GetDeviceMemoryOpaqueCaptureAddressKHR == nullptr) { table->GetDeviceMemoryOpaqueCaptureAddressKHR = (PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR)StubGetDeviceMemoryOpaqueCaptureAddressKHR; }
|
|
||||||
table->CreateDeferredOperationKHR = (PFN_vkCreateDeferredOperationKHR) gpa(device, "vkCreateDeferredOperationKHR");
|
|
||||||
if (table->CreateDeferredOperationKHR == nullptr) { table->CreateDeferredOperationKHR = (PFN_vkCreateDeferredOperationKHR)StubCreateDeferredOperationKHR; }
|
|
||||||
table->DestroyDeferredOperationKHR = (PFN_vkDestroyDeferredOperationKHR) gpa(device, "vkDestroyDeferredOperationKHR");
|
|
||||||
if (table->DestroyDeferredOperationKHR == nullptr) { table->DestroyDeferredOperationKHR = (PFN_vkDestroyDeferredOperationKHR)StubDestroyDeferredOperationKHR; }
|
|
||||||
table->GetDeferredOperationMaxConcurrencyKHR = (PFN_vkGetDeferredOperationMaxConcurrencyKHR) gpa(device, "vkGetDeferredOperationMaxConcurrencyKHR");
|
|
||||||
if (table->GetDeferredOperationMaxConcurrencyKHR == nullptr) { table->GetDeferredOperationMaxConcurrencyKHR = (PFN_vkGetDeferredOperationMaxConcurrencyKHR)StubGetDeferredOperationMaxConcurrencyKHR; }
|
|
||||||
table->GetDeferredOperationResultKHR = (PFN_vkGetDeferredOperationResultKHR) gpa(device, "vkGetDeferredOperationResultKHR");
|
|
||||||
if (table->GetDeferredOperationResultKHR == nullptr) { table->GetDeferredOperationResultKHR = (PFN_vkGetDeferredOperationResultKHR)StubGetDeferredOperationResultKHR; }
|
|
||||||
table->DeferredOperationJoinKHR = (PFN_vkDeferredOperationJoinKHR) gpa(device, "vkDeferredOperationJoinKHR");
|
|
||||||
if (table->DeferredOperationJoinKHR == nullptr) { table->DeferredOperationJoinKHR = (PFN_vkDeferredOperationJoinKHR)StubDeferredOperationJoinKHR; }
|
|
||||||
table->GetPipelineExecutablePropertiesKHR = (PFN_vkGetPipelineExecutablePropertiesKHR) gpa(device, "vkGetPipelineExecutablePropertiesKHR");
|
|
||||||
if (table->GetPipelineExecutablePropertiesKHR == nullptr) { table->GetPipelineExecutablePropertiesKHR = (PFN_vkGetPipelineExecutablePropertiesKHR)StubGetPipelineExecutablePropertiesKHR; }
|
|
||||||
table->GetPipelineExecutableStatisticsKHR = (PFN_vkGetPipelineExecutableStatisticsKHR) gpa(device, "vkGetPipelineExecutableStatisticsKHR");
|
|
||||||
if (table->GetPipelineExecutableStatisticsKHR == nullptr) { table->GetPipelineExecutableStatisticsKHR = (PFN_vkGetPipelineExecutableStatisticsKHR)StubGetPipelineExecutableStatisticsKHR; }
|
|
||||||
table->GetPipelineExecutableInternalRepresentationsKHR = (PFN_vkGetPipelineExecutableInternalRepresentationsKHR) gpa(device, "vkGetPipelineExecutableInternalRepresentationsKHR");
|
|
||||||
if (table->GetPipelineExecutableInternalRepresentationsKHR == nullptr) { table->GetPipelineExecutableInternalRepresentationsKHR = (PFN_vkGetPipelineExecutableInternalRepresentationsKHR)StubGetPipelineExecutableInternalRepresentationsKHR; }
|
|
||||||
table->CmdCopyBuffer2KHR = (PFN_vkCmdCopyBuffer2KHR) gpa(device, "vkCmdCopyBuffer2KHR");
|
|
||||||
if (table->CmdCopyBuffer2KHR == nullptr) { table->CmdCopyBuffer2KHR = (PFN_vkCmdCopyBuffer2KHR)StubCmdCopyBuffer2KHR; }
|
|
||||||
table->CmdCopyImage2KHR = (PFN_vkCmdCopyImage2KHR) gpa(device, "vkCmdCopyImage2KHR");
|
|
||||||
if (table->CmdCopyImage2KHR == nullptr) { table->CmdCopyImage2KHR = (PFN_vkCmdCopyImage2KHR)StubCmdCopyImage2KHR; }
|
|
||||||
table->CmdCopyBufferToImage2KHR = (PFN_vkCmdCopyBufferToImage2KHR) gpa(device, "vkCmdCopyBufferToImage2KHR");
|
|
||||||
if (table->CmdCopyBufferToImage2KHR == nullptr) { table->CmdCopyBufferToImage2KHR = (PFN_vkCmdCopyBufferToImage2KHR)StubCmdCopyBufferToImage2KHR; }
|
|
||||||
table->CmdCopyImageToBuffer2KHR = (PFN_vkCmdCopyImageToBuffer2KHR) gpa(device, "vkCmdCopyImageToBuffer2KHR");
|
|
||||||
if (table->CmdCopyImageToBuffer2KHR == nullptr) { table->CmdCopyImageToBuffer2KHR = (PFN_vkCmdCopyImageToBuffer2KHR)StubCmdCopyImageToBuffer2KHR; }
|
|
||||||
table->CmdBlitImage2KHR = (PFN_vkCmdBlitImage2KHR) gpa(device, "vkCmdBlitImage2KHR");
|
|
||||||
if (table->CmdBlitImage2KHR == nullptr) { table->CmdBlitImage2KHR = (PFN_vkCmdBlitImage2KHR)StubCmdBlitImage2KHR; }
|
|
||||||
table->CmdResolveImage2KHR = (PFN_vkCmdResolveImage2KHR) gpa(device, "vkCmdResolveImage2KHR");
|
|
||||||
if (table->CmdResolveImage2KHR == nullptr) { table->CmdResolveImage2KHR = (PFN_vkCmdResolveImage2KHR)StubCmdResolveImage2KHR; }
|
|
||||||
table->DebugMarkerSetObjectTagEXT = (PFN_vkDebugMarkerSetObjectTagEXT) gpa(device, "vkDebugMarkerSetObjectTagEXT");
|
|
||||||
if (table->DebugMarkerSetObjectTagEXT == nullptr) { table->DebugMarkerSetObjectTagEXT = (PFN_vkDebugMarkerSetObjectTagEXT)StubDebugMarkerSetObjectTagEXT; }
|
|
||||||
table->DebugMarkerSetObjectNameEXT = (PFN_vkDebugMarkerSetObjectNameEXT) gpa(device, "vkDebugMarkerSetObjectNameEXT");
|
|
||||||
if (table->DebugMarkerSetObjectNameEXT == nullptr) { table->DebugMarkerSetObjectNameEXT = (PFN_vkDebugMarkerSetObjectNameEXT)StubDebugMarkerSetObjectNameEXT; }
|
|
||||||
table->CmdDebugMarkerBeginEXT = (PFN_vkCmdDebugMarkerBeginEXT) gpa(device, "vkCmdDebugMarkerBeginEXT");
|
|
||||||
if (table->CmdDebugMarkerBeginEXT == nullptr) { table->CmdDebugMarkerBeginEXT = (PFN_vkCmdDebugMarkerBeginEXT)StubCmdDebugMarkerBeginEXT; }
|
|
||||||
table->CmdDebugMarkerEndEXT = (PFN_vkCmdDebugMarkerEndEXT) gpa(device, "vkCmdDebugMarkerEndEXT");
|
|
||||||
if (table->CmdDebugMarkerEndEXT == nullptr) { table->CmdDebugMarkerEndEXT = (PFN_vkCmdDebugMarkerEndEXT)StubCmdDebugMarkerEndEXT; }
|
|
||||||
table->CmdDebugMarkerInsertEXT = (PFN_vkCmdDebugMarkerInsertEXT) gpa(device, "vkCmdDebugMarkerInsertEXT");
|
|
||||||
if (table->CmdDebugMarkerInsertEXT == nullptr) { table->CmdDebugMarkerInsertEXT = (PFN_vkCmdDebugMarkerInsertEXT)StubCmdDebugMarkerInsertEXT; }
|
|
||||||
table->CmdBindTransformFeedbackBuffersEXT = (PFN_vkCmdBindTransformFeedbackBuffersEXT) gpa(device, "vkCmdBindTransformFeedbackBuffersEXT");
|
|
||||||
if (table->CmdBindTransformFeedbackBuffersEXT == nullptr) { table->CmdBindTransformFeedbackBuffersEXT = (PFN_vkCmdBindTransformFeedbackBuffersEXT)StubCmdBindTransformFeedbackBuffersEXT; }
|
|
||||||
table->CmdBeginTransformFeedbackEXT = (PFN_vkCmdBeginTransformFeedbackEXT) gpa(device, "vkCmdBeginTransformFeedbackEXT");
|
|
||||||
if (table->CmdBeginTransformFeedbackEXT == nullptr) { table->CmdBeginTransformFeedbackEXT = (PFN_vkCmdBeginTransformFeedbackEXT)StubCmdBeginTransformFeedbackEXT; }
|
|
||||||
table->CmdEndTransformFeedbackEXT = (PFN_vkCmdEndTransformFeedbackEXT) gpa(device, "vkCmdEndTransformFeedbackEXT");
|
|
||||||
if (table->CmdEndTransformFeedbackEXT == nullptr) { table->CmdEndTransformFeedbackEXT = (PFN_vkCmdEndTransformFeedbackEXT)StubCmdEndTransformFeedbackEXT; }
|
|
||||||
table->CmdBeginQueryIndexedEXT = (PFN_vkCmdBeginQueryIndexedEXT) gpa(device, "vkCmdBeginQueryIndexedEXT");
|
|
||||||
if (table->CmdBeginQueryIndexedEXT == nullptr) { table->CmdBeginQueryIndexedEXT = (PFN_vkCmdBeginQueryIndexedEXT)StubCmdBeginQueryIndexedEXT; }
|
|
||||||
table->CmdEndQueryIndexedEXT = (PFN_vkCmdEndQueryIndexedEXT) gpa(device, "vkCmdEndQueryIndexedEXT");
|
|
||||||
if (table->CmdEndQueryIndexedEXT == nullptr) { table->CmdEndQueryIndexedEXT = (PFN_vkCmdEndQueryIndexedEXT)StubCmdEndQueryIndexedEXT; }
|
|
||||||
table->CmdDrawIndirectByteCountEXT = (PFN_vkCmdDrawIndirectByteCountEXT) gpa(device, "vkCmdDrawIndirectByteCountEXT");
|
|
||||||
if (table->CmdDrawIndirectByteCountEXT == nullptr) { table->CmdDrawIndirectByteCountEXT = (PFN_vkCmdDrawIndirectByteCountEXT)StubCmdDrawIndirectByteCountEXT; }
|
|
||||||
table->GetImageViewHandleNVX = (PFN_vkGetImageViewHandleNVX) gpa(device, "vkGetImageViewHandleNVX");
|
|
||||||
if (table->GetImageViewHandleNVX == nullptr) { table->GetImageViewHandleNVX = (PFN_vkGetImageViewHandleNVX)StubGetImageViewHandleNVX; }
|
|
||||||
table->GetImageViewAddressNVX = (PFN_vkGetImageViewAddressNVX) gpa(device, "vkGetImageViewAddressNVX");
|
|
||||||
if (table->GetImageViewAddressNVX == nullptr) { table->GetImageViewAddressNVX = (PFN_vkGetImageViewAddressNVX)StubGetImageViewAddressNVX; }
|
|
||||||
table->CmdDrawIndirectCountAMD = (PFN_vkCmdDrawIndirectCountAMD) gpa(device, "vkCmdDrawIndirectCountAMD");
|
|
||||||
if (table->CmdDrawIndirectCountAMD == nullptr) { table->CmdDrawIndirectCountAMD = (PFN_vkCmdDrawIndirectCountAMD)StubCmdDrawIndirectCountAMD; }
|
|
||||||
table->CmdDrawIndexedIndirectCountAMD = (PFN_vkCmdDrawIndexedIndirectCountAMD) gpa(device, "vkCmdDrawIndexedIndirectCountAMD");
|
|
||||||
if (table->CmdDrawIndexedIndirectCountAMD == nullptr) { table->CmdDrawIndexedIndirectCountAMD = (PFN_vkCmdDrawIndexedIndirectCountAMD)StubCmdDrawIndexedIndirectCountAMD; }
|
|
||||||
table->GetShaderInfoAMD = (PFN_vkGetShaderInfoAMD) gpa(device, "vkGetShaderInfoAMD");
|
|
||||||
if (table->GetShaderInfoAMD == nullptr) { table->GetShaderInfoAMD = (PFN_vkGetShaderInfoAMD)StubGetShaderInfoAMD; }
|
|
||||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
table->GetMemoryWin32HandleNV = (PFN_vkGetMemoryWin32HandleNV) gpa(device, "vkGetMemoryWin32HandleNV");
|
|
||||||
if (table->GetMemoryWin32HandleNV == nullptr) { table->GetMemoryWin32HandleNV = (PFN_vkGetMemoryWin32HandleNV)StubGetMemoryWin32HandleNV; }
|
|
||||||
#endif // VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
table->CmdBeginConditionalRenderingEXT = (PFN_vkCmdBeginConditionalRenderingEXT) gpa(device, "vkCmdBeginConditionalRenderingEXT");
|
|
||||||
if (table->CmdBeginConditionalRenderingEXT == nullptr) { table->CmdBeginConditionalRenderingEXT = (PFN_vkCmdBeginConditionalRenderingEXT)StubCmdBeginConditionalRenderingEXT; }
|
|
||||||
table->CmdEndConditionalRenderingEXT = (PFN_vkCmdEndConditionalRenderingEXT) gpa(device, "vkCmdEndConditionalRenderingEXT");
|
|
||||||
if (table->CmdEndConditionalRenderingEXT == nullptr) { table->CmdEndConditionalRenderingEXT = (PFN_vkCmdEndConditionalRenderingEXT)StubCmdEndConditionalRenderingEXT; }
|
|
||||||
table->CmdSetViewportWScalingNV = (PFN_vkCmdSetViewportWScalingNV) gpa(device, "vkCmdSetViewportWScalingNV");
|
|
||||||
if (table->CmdSetViewportWScalingNV == nullptr) { table->CmdSetViewportWScalingNV = (PFN_vkCmdSetViewportWScalingNV)StubCmdSetViewportWScalingNV; }
|
|
||||||
table->DisplayPowerControlEXT = (PFN_vkDisplayPowerControlEXT) gpa(device, "vkDisplayPowerControlEXT");
|
|
||||||
if (table->DisplayPowerControlEXT == nullptr) { table->DisplayPowerControlEXT = (PFN_vkDisplayPowerControlEXT)StubDisplayPowerControlEXT; }
|
|
||||||
table->RegisterDeviceEventEXT = (PFN_vkRegisterDeviceEventEXT) gpa(device, "vkRegisterDeviceEventEXT");
|
|
||||||
if (table->RegisterDeviceEventEXT == nullptr) { table->RegisterDeviceEventEXT = (PFN_vkRegisterDeviceEventEXT)StubRegisterDeviceEventEXT; }
|
|
||||||
table->RegisterDisplayEventEXT = (PFN_vkRegisterDisplayEventEXT) gpa(device, "vkRegisterDisplayEventEXT");
|
|
||||||
if (table->RegisterDisplayEventEXT == nullptr) { table->RegisterDisplayEventEXT = (PFN_vkRegisterDisplayEventEXT)StubRegisterDisplayEventEXT; }
|
|
||||||
table->GetSwapchainCounterEXT = (PFN_vkGetSwapchainCounterEXT) gpa(device, "vkGetSwapchainCounterEXT");
|
|
||||||
if (table->GetSwapchainCounterEXT == nullptr) { table->GetSwapchainCounterEXT = (PFN_vkGetSwapchainCounterEXT)StubGetSwapchainCounterEXT; }
|
|
||||||
table->GetRefreshCycleDurationGOOGLE = (PFN_vkGetRefreshCycleDurationGOOGLE) gpa(device, "vkGetRefreshCycleDurationGOOGLE");
|
|
||||||
if (table->GetRefreshCycleDurationGOOGLE == nullptr) { table->GetRefreshCycleDurationGOOGLE = (PFN_vkGetRefreshCycleDurationGOOGLE)StubGetRefreshCycleDurationGOOGLE; }
|
|
||||||
table->GetPastPresentationTimingGOOGLE = (PFN_vkGetPastPresentationTimingGOOGLE) gpa(device, "vkGetPastPresentationTimingGOOGLE");
|
|
||||||
if (table->GetPastPresentationTimingGOOGLE == nullptr) { table->GetPastPresentationTimingGOOGLE = (PFN_vkGetPastPresentationTimingGOOGLE)StubGetPastPresentationTimingGOOGLE; }
|
|
||||||
table->CmdSetDiscardRectangleEXT = (PFN_vkCmdSetDiscardRectangleEXT) gpa(device, "vkCmdSetDiscardRectangleEXT");
|
|
||||||
if (table->CmdSetDiscardRectangleEXT == nullptr) { table->CmdSetDiscardRectangleEXT = (PFN_vkCmdSetDiscardRectangleEXT)StubCmdSetDiscardRectangleEXT; }
|
|
||||||
table->SetHdrMetadataEXT = (PFN_vkSetHdrMetadataEXT) gpa(device, "vkSetHdrMetadataEXT");
|
|
||||||
if (table->SetHdrMetadataEXT == nullptr) { table->SetHdrMetadataEXT = (PFN_vkSetHdrMetadataEXT)StubSetHdrMetadataEXT; }
|
|
||||||
table->SetDebugUtilsObjectNameEXT = (PFN_vkSetDebugUtilsObjectNameEXT) gpa(device, "vkSetDebugUtilsObjectNameEXT");
|
|
||||||
table->SetDebugUtilsObjectTagEXT = (PFN_vkSetDebugUtilsObjectTagEXT) gpa(device, "vkSetDebugUtilsObjectTagEXT");
|
|
||||||
table->QueueBeginDebugUtilsLabelEXT = (PFN_vkQueueBeginDebugUtilsLabelEXT) gpa(device, "vkQueueBeginDebugUtilsLabelEXT");
|
|
||||||
table->QueueEndDebugUtilsLabelEXT = (PFN_vkQueueEndDebugUtilsLabelEXT) gpa(device, "vkQueueEndDebugUtilsLabelEXT");
|
|
||||||
table->QueueInsertDebugUtilsLabelEXT = (PFN_vkQueueInsertDebugUtilsLabelEXT) gpa(device, "vkQueueInsertDebugUtilsLabelEXT");
|
|
||||||
table->CmdBeginDebugUtilsLabelEXT = (PFN_vkCmdBeginDebugUtilsLabelEXT) gpa(device, "vkCmdBeginDebugUtilsLabelEXT");
|
|
||||||
table->CmdEndDebugUtilsLabelEXT = (PFN_vkCmdEndDebugUtilsLabelEXT) gpa(device, "vkCmdEndDebugUtilsLabelEXT");
|
|
||||||
table->CmdInsertDebugUtilsLabelEXT = (PFN_vkCmdInsertDebugUtilsLabelEXT) gpa(device, "vkCmdInsertDebugUtilsLabelEXT");
|
|
||||||
#ifdef VK_USE_PLATFORM_ANDROID_KHR
|
|
||||||
table->GetAndroidHardwareBufferPropertiesANDROID = (PFN_vkGetAndroidHardwareBufferPropertiesANDROID) gpa(device, "vkGetAndroidHardwareBufferPropertiesANDROID");
|
|
||||||
if (table->GetAndroidHardwareBufferPropertiesANDROID == nullptr) { table->GetAndroidHardwareBufferPropertiesANDROID = (PFN_vkGetAndroidHardwareBufferPropertiesANDROID)StubGetAndroidHardwareBufferPropertiesANDROID; }
|
|
||||||
#endif // VK_USE_PLATFORM_ANDROID_KHR
|
|
||||||
#ifdef VK_USE_PLATFORM_ANDROID_KHR
|
|
||||||
table->GetMemoryAndroidHardwareBufferANDROID = (PFN_vkGetMemoryAndroidHardwareBufferANDROID) gpa(device, "vkGetMemoryAndroidHardwareBufferANDROID");
|
|
||||||
if (table->GetMemoryAndroidHardwareBufferANDROID == nullptr) { table->GetMemoryAndroidHardwareBufferANDROID = (PFN_vkGetMemoryAndroidHardwareBufferANDROID)StubGetMemoryAndroidHardwareBufferANDROID; }
|
|
||||||
#endif // VK_USE_PLATFORM_ANDROID_KHR
|
|
||||||
table->CmdSetSampleLocationsEXT = (PFN_vkCmdSetSampleLocationsEXT) gpa(device, "vkCmdSetSampleLocationsEXT");
|
|
||||||
if (table->CmdSetSampleLocationsEXT == nullptr) { table->CmdSetSampleLocationsEXT = (PFN_vkCmdSetSampleLocationsEXT)StubCmdSetSampleLocationsEXT; }
|
|
||||||
table->GetImageDrmFormatModifierPropertiesEXT = (PFN_vkGetImageDrmFormatModifierPropertiesEXT) gpa(device, "vkGetImageDrmFormatModifierPropertiesEXT");
|
|
||||||
if (table->GetImageDrmFormatModifierPropertiesEXT == nullptr) { table->GetImageDrmFormatModifierPropertiesEXT = (PFN_vkGetImageDrmFormatModifierPropertiesEXT)StubGetImageDrmFormatModifierPropertiesEXT; }
|
|
||||||
table->CreateValidationCacheEXT = (PFN_vkCreateValidationCacheEXT) gpa(device, "vkCreateValidationCacheEXT");
|
|
||||||
if (table->CreateValidationCacheEXT == nullptr) { table->CreateValidationCacheEXT = (PFN_vkCreateValidationCacheEXT)StubCreateValidationCacheEXT; }
|
|
||||||
table->DestroyValidationCacheEXT = (PFN_vkDestroyValidationCacheEXT) gpa(device, "vkDestroyValidationCacheEXT");
|
|
||||||
if (table->DestroyValidationCacheEXT == nullptr) { table->DestroyValidationCacheEXT = (PFN_vkDestroyValidationCacheEXT)StubDestroyValidationCacheEXT; }
|
|
||||||
table->MergeValidationCachesEXT = (PFN_vkMergeValidationCachesEXT) gpa(device, "vkMergeValidationCachesEXT");
|
|
||||||
if (table->MergeValidationCachesEXT == nullptr) { table->MergeValidationCachesEXT = (PFN_vkMergeValidationCachesEXT)StubMergeValidationCachesEXT; }
|
|
||||||
table->GetValidationCacheDataEXT = (PFN_vkGetValidationCacheDataEXT) gpa(device, "vkGetValidationCacheDataEXT");
|
|
||||||
if (table->GetValidationCacheDataEXT == nullptr) { table->GetValidationCacheDataEXT = (PFN_vkGetValidationCacheDataEXT)StubGetValidationCacheDataEXT; }
|
|
||||||
table->CmdBindShadingRateImageNV = (PFN_vkCmdBindShadingRateImageNV) gpa(device, "vkCmdBindShadingRateImageNV");
|
|
||||||
if (table->CmdBindShadingRateImageNV == nullptr) { table->CmdBindShadingRateImageNV = (PFN_vkCmdBindShadingRateImageNV)StubCmdBindShadingRateImageNV; }
|
|
||||||
table->CmdSetViewportShadingRatePaletteNV = (PFN_vkCmdSetViewportShadingRatePaletteNV) gpa(device, "vkCmdSetViewportShadingRatePaletteNV");
|
|
||||||
if (table->CmdSetViewportShadingRatePaletteNV == nullptr) { table->CmdSetViewportShadingRatePaletteNV = (PFN_vkCmdSetViewportShadingRatePaletteNV)StubCmdSetViewportShadingRatePaletteNV; }
|
|
||||||
table->CmdSetCoarseSampleOrderNV = (PFN_vkCmdSetCoarseSampleOrderNV) gpa(device, "vkCmdSetCoarseSampleOrderNV");
|
|
||||||
if (table->CmdSetCoarseSampleOrderNV == nullptr) { table->CmdSetCoarseSampleOrderNV = (PFN_vkCmdSetCoarseSampleOrderNV)StubCmdSetCoarseSampleOrderNV; }
|
|
||||||
table->CreateAccelerationStructureNV = (PFN_vkCreateAccelerationStructureNV) gpa(device, "vkCreateAccelerationStructureNV");
|
|
||||||
if (table->CreateAccelerationStructureNV == nullptr) { table->CreateAccelerationStructureNV = (PFN_vkCreateAccelerationStructureNV)StubCreateAccelerationStructureNV; }
|
|
||||||
table->DestroyAccelerationStructureNV = (PFN_vkDestroyAccelerationStructureNV) gpa(device, "vkDestroyAccelerationStructureNV");
|
|
||||||
if (table->DestroyAccelerationStructureNV == nullptr) { table->DestroyAccelerationStructureNV = (PFN_vkDestroyAccelerationStructureNV)StubDestroyAccelerationStructureNV; }
|
|
||||||
table->GetAccelerationStructureMemoryRequirementsNV = (PFN_vkGetAccelerationStructureMemoryRequirementsNV) gpa(device, "vkGetAccelerationStructureMemoryRequirementsNV");
|
|
||||||
if (table->GetAccelerationStructureMemoryRequirementsNV == nullptr) { table->GetAccelerationStructureMemoryRequirementsNV = (PFN_vkGetAccelerationStructureMemoryRequirementsNV)StubGetAccelerationStructureMemoryRequirementsNV; }
|
|
||||||
table->BindAccelerationStructureMemoryNV = (PFN_vkBindAccelerationStructureMemoryNV) gpa(device, "vkBindAccelerationStructureMemoryNV");
|
|
||||||
if (table->BindAccelerationStructureMemoryNV == nullptr) { table->BindAccelerationStructureMemoryNV = (PFN_vkBindAccelerationStructureMemoryNV)StubBindAccelerationStructureMemoryNV; }
|
|
||||||
table->CmdBuildAccelerationStructureNV = (PFN_vkCmdBuildAccelerationStructureNV) gpa(device, "vkCmdBuildAccelerationStructureNV");
|
|
||||||
if (table->CmdBuildAccelerationStructureNV == nullptr) { table->CmdBuildAccelerationStructureNV = (PFN_vkCmdBuildAccelerationStructureNV)StubCmdBuildAccelerationStructureNV; }
|
|
||||||
table->CmdCopyAccelerationStructureNV = (PFN_vkCmdCopyAccelerationStructureNV) gpa(device, "vkCmdCopyAccelerationStructureNV");
|
|
||||||
if (table->CmdCopyAccelerationStructureNV == nullptr) { table->CmdCopyAccelerationStructureNV = (PFN_vkCmdCopyAccelerationStructureNV)StubCmdCopyAccelerationStructureNV; }
|
|
||||||
table->CmdTraceRaysNV = (PFN_vkCmdTraceRaysNV) gpa(device, "vkCmdTraceRaysNV");
|
|
||||||
if (table->CmdTraceRaysNV == nullptr) { table->CmdTraceRaysNV = (PFN_vkCmdTraceRaysNV)StubCmdTraceRaysNV; }
|
|
||||||
table->CreateRayTracingPipelinesNV = (PFN_vkCreateRayTracingPipelinesNV) gpa(device, "vkCreateRayTracingPipelinesNV");
|
|
||||||
if (table->CreateRayTracingPipelinesNV == nullptr) { table->CreateRayTracingPipelinesNV = (PFN_vkCreateRayTracingPipelinesNV)StubCreateRayTracingPipelinesNV; }
|
|
||||||
table->GetRayTracingShaderGroupHandlesKHR = (PFN_vkGetRayTracingShaderGroupHandlesKHR) gpa(device, "vkGetRayTracingShaderGroupHandlesKHR");
|
|
||||||
if (table->GetRayTracingShaderGroupHandlesKHR == nullptr) { table->GetRayTracingShaderGroupHandlesKHR = (PFN_vkGetRayTracingShaderGroupHandlesKHR)StubGetRayTracingShaderGroupHandlesKHR; }
|
|
||||||
table->GetRayTracingShaderGroupHandlesNV = (PFN_vkGetRayTracingShaderGroupHandlesNV) gpa(device, "vkGetRayTracingShaderGroupHandlesNV");
|
|
||||||
if (table->GetRayTracingShaderGroupHandlesNV == nullptr) { table->GetRayTracingShaderGroupHandlesNV = (PFN_vkGetRayTracingShaderGroupHandlesNV)StubGetRayTracingShaderGroupHandlesNV; }
|
|
||||||
table->GetAccelerationStructureHandleNV = (PFN_vkGetAccelerationStructureHandleNV) gpa(device, "vkGetAccelerationStructureHandleNV");
|
|
||||||
if (table->GetAccelerationStructureHandleNV == nullptr) { table->GetAccelerationStructureHandleNV = (PFN_vkGetAccelerationStructureHandleNV)StubGetAccelerationStructureHandleNV; }
|
|
||||||
table->CmdWriteAccelerationStructuresPropertiesNV = (PFN_vkCmdWriteAccelerationStructuresPropertiesNV) gpa(device, "vkCmdWriteAccelerationStructuresPropertiesNV");
|
|
||||||
if (table->CmdWriteAccelerationStructuresPropertiesNV == nullptr) { table->CmdWriteAccelerationStructuresPropertiesNV = (PFN_vkCmdWriteAccelerationStructuresPropertiesNV)StubCmdWriteAccelerationStructuresPropertiesNV; }
|
|
||||||
table->CompileDeferredNV = (PFN_vkCompileDeferredNV) gpa(device, "vkCompileDeferredNV");
|
|
||||||
if (table->CompileDeferredNV == nullptr) { table->CompileDeferredNV = (PFN_vkCompileDeferredNV)StubCompileDeferredNV; }
|
|
||||||
table->GetMemoryHostPointerPropertiesEXT = (PFN_vkGetMemoryHostPointerPropertiesEXT) gpa(device, "vkGetMemoryHostPointerPropertiesEXT");
|
|
||||||
if (table->GetMemoryHostPointerPropertiesEXT == nullptr) { table->GetMemoryHostPointerPropertiesEXT = (PFN_vkGetMemoryHostPointerPropertiesEXT)StubGetMemoryHostPointerPropertiesEXT; }
|
|
||||||
table->CmdWriteBufferMarkerAMD = (PFN_vkCmdWriteBufferMarkerAMD) gpa(device, "vkCmdWriteBufferMarkerAMD");
|
|
||||||
if (table->CmdWriteBufferMarkerAMD == nullptr) { table->CmdWriteBufferMarkerAMD = (PFN_vkCmdWriteBufferMarkerAMD)StubCmdWriteBufferMarkerAMD; }
|
|
||||||
table->GetCalibratedTimestampsEXT = (PFN_vkGetCalibratedTimestampsEXT) gpa(device, "vkGetCalibratedTimestampsEXT");
|
|
||||||
if (table->GetCalibratedTimestampsEXT == nullptr) { table->GetCalibratedTimestampsEXT = (PFN_vkGetCalibratedTimestampsEXT)StubGetCalibratedTimestampsEXT; }
|
|
||||||
table->CmdDrawMeshTasksNV = (PFN_vkCmdDrawMeshTasksNV) gpa(device, "vkCmdDrawMeshTasksNV");
|
|
||||||
if (table->CmdDrawMeshTasksNV == nullptr) { table->CmdDrawMeshTasksNV = (PFN_vkCmdDrawMeshTasksNV)StubCmdDrawMeshTasksNV; }
|
|
||||||
table->CmdDrawMeshTasksIndirectNV = (PFN_vkCmdDrawMeshTasksIndirectNV) gpa(device, "vkCmdDrawMeshTasksIndirectNV");
|
|
||||||
if (table->CmdDrawMeshTasksIndirectNV == nullptr) { table->CmdDrawMeshTasksIndirectNV = (PFN_vkCmdDrawMeshTasksIndirectNV)StubCmdDrawMeshTasksIndirectNV; }
|
|
||||||
table->CmdDrawMeshTasksIndirectCountNV = (PFN_vkCmdDrawMeshTasksIndirectCountNV) gpa(device, "vkCmdDrawMeshTasksIndirectCountNV");
|
|
||||||
if (table->CmdDrawMeshTasksIndirectCountNV == nullptr) { table->CmdDrawMeshTasksIndirectCountNV = (PFN_vkCmdDrawMeshTasksIndirectCountNV)StubCmdDrawMeshTasksIndirectCountNV; }
|
|
||||||
table->CmdSetExclusiveScissorNV = (PFN_vkCmdSetExclusiveScissorNV) gpa(device, "vkCmdSetExclusiveScissorNV");
|
|
||||||
if (table->CmdSetExclusiveScissorNV == nullptr) { table->CmdSetExclusiveScissorNV = (PFN_vkCmdSetExclusiveScissorNV)StubCmdSetExclusiveScissorNV; }
|
|
||||||
table->CmdSetCheckpointNV = (PFN_vkCmdSetCheckpointNV) gpa(device, "vkCmdSetCheckpointNV");
|
|
||||||
if (table->CmdSetCheckpointNV == nullptr) { table->CmdSetCheckpointNV = (PFN_vkCmdSetCheckpointNV)StubCmdSetCheckpointNV; }
|
|
||||||
table->GetQueueCheckpointDataNV = (PFN_vkGetQueueCheckpointDataNV) gpa(device, "vkGetQueueCheckpointDataNV");
|
|
||||||
if (table->GetQueueCheckpointDataNV == nullptr) { table->GetQueueCheckpointDataNV = (PFN_vkGetQueueCheckpointDataNV)StubGetQueueCheckpointDataNV; }
|
|
||||||
table->InitializePerformanceApiINTEL = (PFN_vkInitializePerformanceApiINTEL) gpa(device, "vkInitializePerformanceApiINTEL");
|
|
||||||
if (table->InitializePerformanceApiINTEL == nullptr) { table->InitializePerformanceApiINTEL = (PFN_vkInitializePerformanceApiINTEL)StubInitializePerformanceApiINTEL; }
|
|
||||||
table->UninitializePerformanceApiINTEL = (PFN_vkUninitializePerformanceApiINTEL) gpa(device, "vkUninitializePerformanceApiINTEL");
|
|
||||||
if (table->UninitializePerformanceApiINTEL == nullptr) { table->UninitializePerformanceApiINTEL = (PFN_vkUninitializePerformanceApiINTEL)StubUninitializePerformanceApiINTEL; }
|
|
||||||
table->CmdSetPerformanceMarkerINTEL = (PFN_vkCmdSetPerformanceMarkerINTEL) gpa(device, "vkCmdSetPerformanceMarkerINTEL");
|
|
||||||
if (table->CmdSetPerformanceMarkerINTEL == nullptr) { table->CmdSetPerformanceMarkerINTEL = (PFN_vkCmdSetPerformanceMarkerINTEL)StubCmdSetPerformanceMarkerINTEL; }
|
|
||||||
table->CmdSetPerformanceStreamMarkerINTEL = (PFN_vkCmdSetPerformanceStreamMarkerINTEL) gpa(device, "vkCmdSetPerformanceStreamMarkerINTEL");
|
|
||||||
if (table->CmdSetPerformanceStreamMarkerINTEL == nullptr) { table->CmdSetPerformanceStreamMarkerINTEL = (PFN_vkCmdSetPerformanceStreamMarkerINTEL)StubCmdSetPerformanceStreamMarkerINTEL; }
|
|
||||||
table->CmdSetPerformanceOverrideINTEL = (PFN_vkCmdSetPerformanceOverrideINTEL) gpa(device, "vkCmdSetPerformanceOverrideINTEL");
|
|
||||||
if (table->CmdSetPerformanceOverrideINTEL == nullptr) { table->CmdSetPerformanceOverrideINTEL = (PFN_vkCmdSetPerformanceOverrideINTEL)StubCmdSetPerformanceOverrideINTEL; }
|
|
||||||
table->AcquirePerformanceConfigurationINTEL = (PFN_vkAcquirePerformanceConfigurationINTEL) gpa(device, "vkAcquirePerformanceConfigurationINTEL");
|
|
||||||
if (table->AcquirePerformanceConfigurationINTEL == nullptr) { table->AcquirePerformanceConfigurationINTEL = (PFN_vkAcquirePerformanceConfigurationINTEL)StubAcquirePerformanceConfigurationINTEL; }
|
|
||||||
table->ReleasePerformanceConfigurationINTEL = (PFN_vkReleasePerformanceConfigurationINTEL) gpa(device, "vkReleasePerformanceConfigurationINTEL");
|
|
||||||
if (table->ReleasePerformanceConfigurationINTEL == nullptr) { table->ReleasePerformanceConfigurationINTEL = (PFN_vkReleasePerformanceConfigurationINTEL)StubReleasePerformanceConfigurationINTEL; }
|
|
||||||
table->QueueSetPerformanceConfigurationINTEL = (PFN_vkQueueSetPerformanceConfigurationINTEL) gpa(device, "vkQueueSetPerformanceConfigurationINTEL");
|
|
||||||
if (table->QueueSetPerformanceConfigurationINTEL == nullptr) { table->QueueSetPerformanceConfigurationINTEL = (PFN_vkQueueSetPerformanceConfigurationINTEL)StubQueueSetPerformanceConfigurationINTEL; }
|
|
||||||
table->GetPerformanceParameterINTEL = (PFN_vkGetPerformanceParameterINTEL) gpa(device, "vkGetPerformanceParameterINTEL");
|
|
||||||
if (table->GetPerformanceParameterINTEL == nullptr) { table->GetPerformanceParameterINTEL = (PFN_vkGetPerformanceParameterINTEL)StubGetPerformanceParameterINTEL; }
|
|
||||||
table->SetLocalDimmingAMD = (PFN_vkSetLocalDimmingAMD) gpa(device, "vkSetLocalDimmingAMD");
|
|
||||||
if (table->SetLocalDimmingAMD == nullptr) { table->SetLocalDimmingAMD = (PFN_vkSetLocalDimmingAMD)StubSetLocalDimmingAMD; }
|
|
||||||
table->GetBufferDeviceAddressEXT = (PFN_vkGetBufferDeviceAddressEXT) gpa(device, "vkGetBufferDeviceAddressEXT");
|
|
||||||
if (table->GetBufferDeviceAddressEXT == nullptr) { table->GetBufferDeviceAddressEXT = (PFN_vkGetBufferDeviceAddressEXT)StubGetBufferDeviceAddressEXT; }
|
|
||||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
table->AcquireFullScreenExclusiveModeEXT = (PFN_vkAcquireFullScreenExclusiveModeEXT) gpa(device, "vkAcquireFullScreenExclusiveModeEXT");
|
|
||||||
if (table->AcquireFullScreenExclusiveModeEXT == nullptr) { table->AcquireFullScreenExclusiveModeEXT = (PFN_vkAcquireFullScreenExclusiveModeEXT)StubAcquireFullScreenExclusiveModeEXT; }
|
|
||||||
#endif // VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
table->ReleaseFullScreenExclusiveModeEXT = (PFN_vkReleaseFullScreenExclusiveModeEXT) gpa(device, "vkReleaseFullScreenExclusiveModeEXT");
|
|
||||||
if (table->ReleaseFullScreenExclusiveModeEXT == nullptr) { table->ReleaseFullScreenExclusiveModeEXT = (PFN_vkReleaseFullScreenExclusiveModeEXT)StubReleaseFullScreenExclusiveModeEXT; }
|
|
||||||
#endif // VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
table->GetDeviceGroupSurfacePresentModes2EXT = (PFN_vkGetDeviceGroupSurfacePresentModes2EXT) gpa(device, "vkGetDeviceGroupSurfacePresentModes2EXT");
|
|
||||||
if (table->GetDeviceGroupSurfacePresentModes2EXT == nullptr) { table->GetDeviceGroupSurfacePresentModes2EXT = (PFN_vkGetDeviceGroupSurfacePresentModes2EXT)StubGetDeviceGroupSurfacePresentModes2EXT; }
|
|
||||||
#endif // VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
table->CmdSetLineStippleEXT = (PFN_vkCmdSetLineStippleEXT) gpa(device, "vkCmdSetLineStippleEXT");
|
|
||||||
if (table->CmdSetLineStippleEXT == nullptr) { table->CmdSetLineStippleEXT = (PFN_vkCmdSetLineStippleEXT)StubCmdSetLineStippleEXT; }
|
|
||||||
table->ResetQueryPoolEXT = (PFN_vkResetQueryPoolEXT) gpa(device, "vkResetQueryPoolEXT");
|
|
||||||
if (table->ResetQueryPoolEXT == nullptr) { table->ResetQueryPoolEXT = (PFN_vkResetQueryPoolEXT)StubResetQueryPoolEXT; }
|
|
||||||
table->CmdSetCullModeEXT = (PFN_vkCmdSetCullModeEXT) gpa(device, "vkCmdSetCullModeEXT");
|
|
||||||
if (table->CmdSetCullModeEXT == nullptr) { table->CmdSetCullModeEXT = (PFN_vkCmdSetCullModeEXT)StubCmdSetCullModeEXT; }
|
|
||||||
table->CmdSetFrontFaceEXT = (PFN_vkCmdSetFrontFaceEXT) gpa(device, "vkCmdSetFrontFaceEXT");
|
|
||||||
if (table->CmdSetFrontFaceEXT == nullptr) { table->CmdSetFrontFaceEXT = (PFN_vkCmdSetFrontFaceEXT)StubCmdSetFrontFaceEXT; }
|
|
||||||
table->CmdSetPrimitiveTopologyEXT = (PFN_vkCmdSetPrimitiveTopologyEXT) gpa(device, "vkCmdSetPrimitiveTopologyEXT");
|
|
||||||
if (table->CmdSetPrimitiveTopologyEXT == nullptr) { table->CmdSetPrimitiveTopologyEXT = (PFN_vkCmdSetPrimitiveTopologyEXT)StubCmdSetPrimitiveTopologyEXT; }
|
|
||||||
table->CmdSetViewportWithCountEXT = (PFN_vkCmdSetViewportWithCountEXT) gpa(device, "vkCmdSetViewportWithCountEXT");
|
|
||||||
if (table->CmdSetViewportWithCountEXT == nullptr) { table->CmdSetViewportWithCountEXT = (PFN_vkCmdSetViewportWithCountEXT)StubCmdSetViewportWithCountEXT; }
|
|
||||||
table->CmdSetScissorWithCountEXT = (PFN_vkCmdSetScissorWithCountEXT) gpa(device, "vkCmdSetScissorWithCountEXT");
|
|
||||||
if (table->CmdSetScissorWithCountEXT == nullptr) { table->CmdSetScissorWithCountEXT = (PFN_vkCmdSetScissorWithCountEXT)StubCmdSetScissorWithCountEXT; }
|
|
||||||
table->CmdBindVertexBuffers2EXT = (PFN_vkCmdBindVertexBuffers2EXT) gpa(device, "vkCmdBindVertexBuffers2EXT");
|
|
||||||
if (table->CmdBindVertexBuffers2EXT == nullptr) { table->CmdBindVertexBuffers2EXT = (PFN_vkCmdBindVertexBuffers2EXT)StubCmdBindVertexBuffers2EXT; }
|
|
||||||
table->CmdSetDepthTestEnableEXT = (PFN_vkCmdSetDepthTestEnableEXT) gpa(device, "vkCmdSetDepthTestEnableEXT");
|
|
||||||
if (table->CmdSetDepthTestEnableEXT == nullptr) { table->CmdSetDepthTestEnableEXT = (PFN_vkCmdSetDepthTestEnableEXT)StubCmdSetDepthTestEnableEXT; }
|
|
||||||
table->CmdSetDepthWriteEnableEXT = (PFN_vkCmdSetDepthWriteEnableEXT) gpa(device, "vkCmdSetDepthWriteEnableEXT");
|
|
||||||
if (table->CmdSetDepthWriteEnableEXT == nullptr) { table->CmdSetDepthWriteEnableEXT = (PFN_vkCmdSetDepthWriteEnableEXT)StubCmdSetDepthWriteEnableEXT; }
|
|
||||||
table->CmdSetDepthCompareOpEXT = (PFN_vkCmdSetDepthCompareOpEXT) gpa(device, "vkCmdSetDepthCompareOpEXT");
|
|
||||||
if (table->CmdSetDepthCompareOpEXT == nullptr) { table->CmdSetDepthCompareOpEXT = (PFN_vkCmdSetDepthCompareOpEXT)StubCmdSetDepthCompareOpEXT; }
|
|
||||||
table->CmdSetDepthBoundsTestEnableEXT = (PFN_vkCmdSetDepthBoundsTestEnableEXT) gpa(device, "vkCmdSetDepthBoundsTestEnableEXT");
|
|
||||||
if (table->CmdSetDepthBoundsTestEnableEXT == nullptr) { table->CmdSetDepthBoundsTestEnableEXT = (PFN_vkCmdSetDepthBoundsTestEnableEXT)StubCmdSetDepthBoundsTestEnableEXT; }
|
|
||||||
table->CmdSetStencilTestEnableEXT = (PFN_vkCmdSetStencilTestEnableEXT) gpa(device, "vkCmdSetStencilTestEnableEXT");
|
|
||||||
if (table->CmdSetStencilTestEnableEXT == nullptr) { table->CmdSetStencilTestEnableEXT = (PFN_vkCmdSetStencilTestEnableEXT)StubCmdSetStencilTestEnableEXT; }
|
|
||||||
table->CmdSetStencilOpEXT = (PFN_vkCmdSetStencilOpEXT) gpa(device, "vkCmdSetStencilOpEXT");
|
|
||||||
if (table->CmdSetStencilOpEXT == nullptr) { table->CmdSetStencilOpEXT = (PFN_vkCmdSetStencilOpEXT)StubCmdSetStencilOpEXT; }
|
|
||||||
table->GetGeneratedCommandsMemoryRequirementsNV = (PFN_vkGetGeneratedCommandsMemoryRequirementsNV) gpa(device, "vkGetGeneratedCommandsMemoryRequirementsNV");
|
|
||||||
if (table->GetGeneratedCommandsMemoryRequirementsNV == nullptr) { table->GetGeneratedCommandsMemoryRequirementsNV = (PFN_vkGetGeneratedCommandsMemoryRequirementsNV)StubGetGeneratedCommandsMemoryRequirementsNV; }
|
|
||||||
table->CmdPreprocessGeneratedCommandsNV = (PFN_vkCmdPreprocessGeneratedCommandsNV) gpa(device, "vkCmdPreprocessGeneratedCommandsNV");
|
|
||||||
if (table->CmdPreprocessGeneratedCommandsNV == nullptr) { table->CmdPreprocessGeneratedCommandsNV = (PFN_vkCmdPreprocessGeneratedCommandsNV)StubCmdPreprocessGeneratedCommandsNV; }
|
|
||||||
table->CmdExecuteGeneratedCommandsNV = (PFN_vkCmdExecuteGeneratedCommandsNV) gpa(device, "vkCmdExecuteGeneratedCommandsNV");
|
|
||||||
if (table->CmdExecuteGeneratedCommandsNV == nullptr) { table->CmdExecuteGeneratedCommandsNV = (PFN_vkCmdExecuteGeneratedCommandsNV)StubCmdExecuteGeneratedCommandsNV; }
|
|
||||||
table->CmdBindPipelineShaderGroupNV = (PFN_vkCmdBindPipelineShaderGroupNV) gpa(device, "vkCmdBindPipelineShaderGroupNV");
|
|
||||||
if (table->CmdBindPipelineShaderGroupNV == nullptr) { table->CmdBindPipelineShaderGroupNV = (PFN_vkCmdBindPipelineShaderGroupNV)StubCmdBindPipelineShaderGroupNV; }
|
|
||||||
table->CreateIndirectCommandsLayoutNV = (PFN_vkCreateIndirectCommandsLayoutNV) gpa(device, "vkCreateIndirectCommandsLayoutNV");
|
|
||||||
if (table->CreateIndirectCommandsLayoutNV == nullptr) { table->CreateIndirectCommandsLayoutNV = (PFN_vkCreateIndirectCommandsLayoutNV)StubCreateIndirectCommandsLayoutNV; }
|
|
||||||
table->DestroyIndirectCommandsLayoutNV = (PFN_vkDestroyIndirectCommandsLayoutNV) gpa(device, "vkDestroyIndirectCommandsLayoutNV");
|
|
||||||
if (table->DestroyIndirectCommandsLayoutNV == nullptr) { table->DestroyIndirectCommandsLayoutNV = (PFN_vkDestroyIndirectCommandsLayoutNV)StubDestroyIndirectCommandsLayoutNV; }
|
|
||||||
table->CreatePrivateDataSlotEXT = (PFN_vkCreatePrivateDataSlotEXT) gpa(device, "vkCreatePrivateDataSlotEXT");
|
|
||||||
if (table->CreatePrivateDataSlotEXT == nullptr) { table->CreatePrivateDataSlotEXT = (PFN_vkCreatePrivateDataSlotEXT)StubCreatePrivateDataSlotEXT; }
|
|
||||||
table->DestroyPrivateDataSlotEXT = (PFN_vkDestroyPrivateDataSlotEXT) gpa(device, "vkDestroyPrivateDataSlotEXT");
|
|
||||||
if (table->DestroyPrivateDataSlotEXT == nullptr) { table->DestroyPrivateDataSlotEXT = (PFN_vkDestroyPrivateDataSlotEXT)StubDestroyPrivateDataSlotEXT; }
|
|
||||||
table->SetPrivateDataEXT = (PFN_vkSetPrivateDataEXT) gpa(device, "vkSetPrivateDataEXT");
|
|
||||||
if (table->SetPrivateDataEXT == nullptr) { table->SetPrivateDataEXT = (PFN_vkSetPrivateDataEXT)StubSetPrivateDataEXT; }
|
|
||||||
table->GetPrivateDataEXT = (PFN_vkGetPrivateDataEXT) gpa(device, "vkGetPrivateDataEXT");
|
|
||||||
if (table->GetPrivateDataEXT == nullptr) { table->GetPrivateDataEXT = (PFN_vkGetPrivateDataEXT)StubGetPrivateDataEXT; }
|
|
||||||
table->CmdSetFragmentShadingRateEnumNV = (PFN_vkCmdSetFragmentShadingRateEnumNV) gpa(device, "vkCmdSetFragmentShadingRateEnumNV");
|
|
||||||
if (table->CmdSetFragmentShadingRateEnumNV == nullptr) { table->CmdSetFragmentShadingRateEnumNV = (PFN_vkCmdSetFragmentShadingRateEnumNV)StubCmdSetFragmentShadingRateEnumNV; }
|
|
||||||
table->CreateAccelerationStructureKHR = (PFN_vkCreateAccelerationStructureKHR) gpa(device, "vkCreateAccelerationStructureKHR");
|
|
||||||
if (table->CreateAccelerationStructureKHR == nullptr) { table->CreateAccelerationStructureKHR = (PFN_vkCreateAccelerationStructureKHR)StubCreateAccelerationStructureKHR; }
|
|
||||||
table->DestroyAccelerationStructureKHR = (PFN_vkDestroyAccelerationStructureKHR) gpa(device, "vkDestroyAccelerationStructureKHR");
|
|
||||||
if (table->DestroyAccelerationStructureKHR == nullptr) { table->DestroyAccelerationStructureKHR = (PFN_vkDestroyAccelerationStructureKHR)StubDestroyAccelerationStructureKHR; }
|
|
||||||
table->CmdBuildAccelerationStructuresKHR = (PFN_vkCmdBuildAccelerationStructuresKHR) gpa(device, "vkCmdBuildAccelerationStructuresKHR");
|
|
||||||
if (table->CmdBuildAccelerationStructuresKHR == nullptr) { table->CmdBuildAccelerationStructuresKHR = (PFN_vkCmdBuildAccelerationStructuresKHR)StubCmdBuildAccelerationStructuresKHR; }
|
|
||||||
table->CmdBuildAccelerationStructuresIndirectKHR = (PFN_vkCmdBuildAccelerationStructuresIndirectKHR) gpa(device, "vkCmdBuildAccelerationStructuresIndirectKHR");
|
|
||||||
if (table->CmdBuildAccelerationStructuresIndirectKHR == nullptr) { table->CmdBuildAccelerationStructuresIndirectKHR = (PFN_vkCmdBuildAccelerationStructuresIndirectKHR)StubCmdBuildAccelerationStructuresIndirectKHR; }
|
|
||||||
table->BuildAccelerationStructuresKHR = (PFN_vkBuildAccelerationStructuresKHR) gpa(device, "vkBuildAccelerationStructuresKHR");
|
|
||||||
if (table->BuildAccelerationStructuresKHR == nullptr) { table->BuildAccelerationStructuresKHR = (PFN_vkBuildAccelerationStructuresKHR)StubBuildAccelerationStructuresKHR; }
|
|
||||||
table->CopyAccelerationStructureKHR = (PFN_vkCopyAccelerationStructureKHR) gpa(device, "vkCopyAccelerationStructureKHR");
|
|
||||||
if (table->CopyAccelerationStructureKHR == nullptr) { table->CopyAccelerationStructureKHR = (PFN_vkCopyAccelerationStructureKHR)StubCopyAccelerationStructureKHR; }
|
|
||||||
table->CopyAccelerationStructureToMemoryKHR = (PFN_vkCopyAccelerationStructureToMemoryKHR) gpa(device, "vkCopyAccelerationStructureToMemoryKHR");
|
|
||||||
if (table->CopyAccelerationStructureToMemoryKHR == nullptr) { table->CopyAccelerationStructureToMemoryKHR = (PFN_vkCopyAccelerationStructureToMemoryKHR)StubCopyAccelerationStructureToMemoryKHR; }
|
|
||||||
table->CopyMemoryToAccelerationStructureKHR = (PFN_vkCopyMemoryToAccelerationStructureKHR) gpa(device, "vkCopyMemoryToAccelerationStructureKHR");
|
|
||||||
if (table->CopyMemoryToAccelerationStructureKHR == nullptr) { table->CopyMemoryToAccelerationStructureKHR = (PFN_vkCopyMemoryToAccelerationStructureKHR)StubCopyMemoryToAccelerationStructureKHR; }
|
|
||||||
table->WriteAccelerationStructuresPropertiesKHR = (PFN_vkWriteAccelerationStructuresPropertiesKHR) gpa(device, "vkWriteAccelerationStructuresPropertiesKHR");
|
|
||||||
if (table->WriteAccelerationStructuresPropertiesKHR == nullptr) { table->WriteAccelerationStructuresPropertiesKHR = (PFN_vkWriteAccelerationStructuresPropertiesKHR)StubWriteAccelerationStructuresPropertiesKHR; }
|
|
||||||
table->CmdCopyAccelerationStructureKHR = (PFN_vkCmdCopyAccelerationStructureKHR) gpa(device, "vkCmdCopyAccelerationStructureKHR");
|
|
||||||
if (table->CmdCopyAccelerationStructureKHR == nullptr) { table->CmdCopyAccelerationStructureKHR = (PFN_vkCmdCopyAccelerationStructureKHR)StubCmdCopyAccelerationStructureKHR; }
|
|
||||||
table->CmdCopyAccelerationStructureToMemoryKHR = (PFN_vkCmdCopyAccelerationStructureToMemoryKHR) gpa(device, "vkCmdCopyAccelerationStructureToMemoryKHR");
|
|
||||||
if (table->CmdCopyAccelerationStructureToMemoryKHR == nullptr) { table->CmdCopyAccelerationStructureToMemoryKHR = (PFN_vkCmdCopyAccelerationStructureToMemoryKHR)StubCmdCopyAccelerationStructureToMemoryKHR; }
|
|
||||||
table->CmdCopyMemoryToAccelerationStructureKHR = (PFN_vkCmdCopyMemoryToAccelerationStructureKHR) gpa(device, "vkCmdCopyMemoryToAccelerationStructureKHR");
|
|
||||||
if (table->CmdCopyMemoryToAccelerationStructureKHR == nullptr) { table->CmdCopyMemoryToAccelerationStructureKHR = (PFN_vkCmdCopyMemoryToAccelerationStructureKHR)StubCmdCopyMemoryToAccelerationStructureKHR; }
|
|
||||||
table->GetAccelerationStructureDeviceAddressKHR = (PFN_vkGetAccelerationStructureDeviceAddressKHR) gpa(device, "vkGetAccelerationStructureDeviceAddressKHR");
|
|
||||||
if (table->GetAccelerationStructureDeviceAddressKHR == nullptr) { table->GetAccelerationStructureDeviceAddressKHR = (PFN_vkGetAccelerationStructureDeviceAddressKHR)StubGetAccelerationStructureDeviceAddressKHR; }
|
|
||||||
table->CmdWriteAccelerationStructuresPropertiesKHR = (PFN_vkCmdWriteAccelerationStructuresPropertiesKHR) gpa(device, "vkCmdWriteAccelerationStructuresPropertiesKHR");
|
|
||||||
if (table->CmdWriteAccelerationStructuresPropertiesKHR == nullptr) { table->CmdWriteAccelerationStructuresPropertiesKHR = (PFN_vkCmdWriteAccelerationStructuresPropertiesKHR)StubCmdWriteAccelerationStructuresPropertiesKHR; }
|
|
||||||
table->GetDeviceAccelerationStructureCompatibilityKHR = (PFN_vkGetDeviceAccelerationStructureCompatibilityKHR) gpa(device, "vkGetDeviceAccelerationStructureCompatibilityKHR");
|
|
||||||
if (table->GetDeviceAccelerationStructureCompatibilityKHR == nullptr) { table->GetDeviceAccelerationStructureCompatibilityKHR = (PFN_vkGetDeviceAccelerationStructureCompatibilityKHR)StubGetDeviceAccelerationStructureCompatibilityKHR; }
|
|
||||||
table->GetAccelerationStructureBuildSizesKHR = (PFN_vkGetAccelerationStructureBuildSizesKHR) gpa(device, "vkGetAccelerationStructureBuildSizesKHR");
|
|
||||||
if (table->GetAccelerationStructureBuildSizesKHR == nullptr) { table->GetAccelerationStructureBuildSizesKHR = (PFN_vkGetAccelerationStructureBuildSizesKHR)StubGetAccelerationStructureBuildSizesKHR; }
|
|
||||||
table->CmdTraceRaysKHR = (PFN_vkCmdTraceRaysKHR) gpa(device, "vkCmdTraceRaysKHR");
|
|
||||||
if (table->CmdTraceRaysKHR == nullptr) { table->CmdTraceRaysKHR = (PFN_vkCmdTraceRaysKHR)StubCmdTraceRaysKHR; }
|
|
||||||
table->CreateRayTracingPipelinesKHR = (PFN_vkCreateRayTracingPipelinesKHR) gpa(device, "vkCreateRayTracingPipelinesKHR");
|
|
||||||
if (table->CreateRayTracingPipelinesKHR == nullptr) { table->CreateRayTracingPipelinesKHR = (PFN_vkCreateRayTracingPipelinesKHR)StubCreateRayTracingPipelinesKHR; }
|
|
||||||
table->GetRayTracingCaptureReplayShaderGroupHandlesKHR = (PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR) gpa(device, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR");
|
|
||||||
if (table->GetRayTracingCaptureReplayShaderGroupHandlesKHR == nullptr) { table->GetRayTracingCaptureReplayShaderGroupHandlesKHR = (PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR)StubGetRayTracingCaptureReplayShaderGroupHandlesKHR; }
|
|
||||||
table->CmdTraceRaysIndirectKHR = (PFN_vkCmdTraceRaysIndirectKHR) gpa(device, "vkCmdTraceRaysIndirectKHR");
|
|
||||||
if (table->CmdTraceRaysIndirectKHR == nullptr) { table->CmdTraceRaysIndirectKHR = (PFN_vkCmdTraceRaysIndirectKHR)StubCmdTraceRaysIndirectKHR; }
|
|
||||||
table->GetRayTracingShaderGroupStackSizeKHR = (PFN_vkGetRayTracingShaderGroupStackSizeKHR) gpa(device, "vkGetRayTracingShaderGroupStackSizeKHR");
|
|
||||||
if (table->GetRayTracingShaderGroupStackSizeKHR == nullptr) { table->GetRayTracingShaderGroupStackSizeKHR = (PFN_vkGetRayTracingShaderGroupStackSizeKHR)StubGetRayTracingShaderGroupStackSizeKHR; }
|
|
||||||
table->CmdSetRayTracingPipelineStackSizeKHR = (PFN_vkCmdSetRayTracingPipelineStackSizeKHR) gpa(device, "vkCmdSetRayTracingPipelineStackSizeKHR");
|
|
||||||
if (table->CmdSetRayTracingPipelineStackSizeKHR == nullptr) { table->CmdSetRayTracingPipelineStackSizeKHR = (PFN_vkCmdSetRayTracingPipelineStackSizeKHR)StubCmdSetRayTracingPipelineStackSizeKHR; }
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static inline void layer_init_instance_dispatch_table(VkInstance instance, VkLayerInstanceDispatchTable *table, PFN_vkGetInstanceProcAddr gpa) {
|
|
||||||
memset(table, 0, sizeof(*table));
|
|
||||||
// Instance function pointers
|
|
||||||
table->DestroyInstance = (PFN_vkDestroyInstance) gpa(instance, "vkDestroyInstance");
|
|
||||||
table->EnumeratePhysicalDevices = (PFN_vkEnumeratePhysicalDevices) gpa(instance, "vkEnumeratePhysicalDevices");
|
|
||||||
table->GetPhysicalDeviceFeatures = (PFN_vkGetPhysicalDeviceFeatures) gpa(instance, "vkGetPhysicalDeviceFeatures");
|
|
||||||
table->GetPhysicalDeviceFormatProperties = (PFN_vkGetPhysicalDeviceFormatProperties) gpa(instance, "vkGetPhysicalDeviceFormatProperties");
|
|
||||||
table->GetPhysicalDeviceImageFormatProperties = (PFN_vkGetPhysicalDeviceImageFormatProperties) gpa(instance, "vkGetPhysicalDeviceImageFormatProperties");
|
|
||||||
table->GetPhysicalDeviceProperties = (PFN_vkGetPhysicalDeviceProperties) gpa(instance, "vkGetPhysicalDeviceProperties");
|
|
||||||
table->GetPhysicalDeviceQueueFamilyProperties = (PFN_vkGetPhysicalDeviceQueueFamilyProperties) gpa(instance, "vkGetPhysicalDeviceQueueFamilyProperties");
|
|
||||||
table->GetPhysicalDeviceMemoryProperties = (PFN_vkGetPhysicalDeviceMemoryProperties) gpa(instance, "vkGetPhysicalDeviceMemoryProperties");
|
|
||||||
table->GetInstanceProcAddr = gpa;
|
|
||||||
table->EnumerateDeviceExtensionProperties = (PFN_vkEnumerateDeviceExtensionProperties) gpa(instance, "vkEnumerateDeviceExtensionProperties");
|
|
||||||
table->EnumerateDeviceLayerProperties = (PFN_vkEnumerateDeviceLayerProperties) gpa(instance, "vkEnumerateDeviceLayerProperties");
|
|
||||||
table->GetPhysicalDeviceSparseImageFormatProperties = (PFN_vkGetPhysicalDeviceSparseImageFormatProperties) gpa(instance, "vkGetPhysicalDeviceSparseImageFormatProperties");
|
|
||||||
table->EnumeratePhysicalDeviceGroups = (PFN_vkEnumeratePhysicalDeviceGroups) gpa(instance, "vkEnumeratePhysicalDeviceGroups");
|
|
||||||
table->GetPhysicalDeviceFeatures2 = (PFN_vkGetPhysicalDeviceFeatures2) gpa(instance, "vkGetPhysicalDeviceFeatures2");
|
|
||||||
table->GetPhysicalDeviceProperties2 = (PFN_vkGetPhysicalDeviceProperties2) gpa(instance, "vkGetPhysicalDeviceProperties2");
|
|
||||||
table->GetPhysicalDeviceFormatProperties2 = (PFN_vkGetPhysicalDeviceFormatProperties2) gpa(instance, "vkGetPhysicalDeviceFormatProperties2");
|
|
||||||
table->GetPhysicalDeviceImageFormatProperties2 = (PFN_vkGetPhysicalDeviceImageFormatProperties2) gpa(instance, "vkGetPhysicalDeviceImageFormatProperties2");
|
|
||||||
table->GetPhysicalDeviceQueueFamilyProperties2 = (PFN_vkGetPhysicalDeviceQueueFamilyProperties2) gpa(instance, "vkGetPhysicalDeviceQueueFamilyProperties2");
|
|
||||||
table->GetPhysicalDeviceMemoryProperties2 = (PFN_vkGetPhysicalDeviceMemoryProperties2) gpa(instance, "vkGetPhysicalDeviceMemoryProperties2");
|
|
||||||
table->GetPhysicalDeviceSparseImageFormatProperties2 = (PFN_vkGetPhysicalDeviceSparseImageFormatProperties2) gpa(instance, "vkGetPhysicalDeviceSparseImageFormatProperties2");
|
|
||||||
table->GetPhysicalDeviceExternalBufferProperties = (PFN_vkGetPhysicalDeviceExternalBufferProperties) gpa(instance, "vkGetPhysicalDeviceExternalBufferProperties");
|
|
||||||
table->GetPhysicalDeviceExternalFenceProperties = (PFN_vkGetPhysicalDeviceExternalFenceProperties) gpa(instance, "vkGetPhysicalDeviceExternalFenceProperties");
|
|
||||||
table->GetPhysicalDeviceExternalSemaphoreProperties = (PFN_vkGetPhysicalDeviceExternalSemaphoreProperties) gpa(instance, "vkGetPhysicalDeviceExternalSemaphoreProperties");
|
|
||||||
table->DestroySurfaceKHR = (PFN_vkDestroySurfaceKHR) gpa(instance, "vkDestroySurfaceKHR");
|
|
||||||
table->GetPhysicalDeviceSurfaceSupportKHR = (PFN_vkGetPhysicalDeviceSurfaceSupportKHR) gpa(instance, "vkGetPhysicalDeviceSurfaceSupportKHR");
|
|
||||||
table->GetPhysicalDeviceSurfaceCapabilitiesKHR = (PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR) gpa(instance, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR");
|
|
||||||
table->GetPhysicalDeviceSurfaceFormatsKHR = (PFN_vkGetPhysicalDeviceSurfaceFormatsKHR) gpa(instance, "vkGetPhysicalDeviceSurfaceFormatsKHR");
|
|
||||||
table->GetPhysicalDeviceSurfacePresentModesKHR = (PFN_vkGetPhysicalDeviceSurfacePresentModesKHR) gpa(instance, "vkGetPhysicalDeviceSurfacePresentModesKHR");
|
|
||||||
table->GetPhysicalDevicePresentRectanglesKHR = (PFN_vkGetPhysicalDevicePresentRectanglesKHR) gpa(instance, "vkGetPhysicalDevicePresentRectanglesKHR");
|
|
||||||
table->GetPhysicalDeviceDisplayPropertiesKHR = (PFN_vkGetPhysicalDeviceDisplayPropertiesKHR) gpa(instance, "vkGetPhysicalDeviceDisplayPropertiesKHR");
|
|
||||||
table->GetPhysicalDeviceDisplayPlanePropertiesKHR = (PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR) gpa(instance, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR");
|
|
||||||
table->GetDisplayPlaneSupportedDisplaysKHR = (PFN_vkGetDisplayPlaneSupportedDisplaysKHR) gpa(instance, "vkGetDisplayPlaneSupportedDisplaysKHR");
|
|
||||||
table->GetDisplayModePropertiesKHR = (PFN_vkGetDisplayModePropertiesKHR) gpa(instance, "vkGetDisplayModePropertiesKHR");
|
|
||||||
table->CreateDisplayModeKHR = (PFN_vkCreateDisplayModeKHR) gpa(instance, "vkCreateDisplayModeKHR");
|
|
||||||
table->GetDisplayPlaneCapabilitiesKHR = (PFN_vkGetDisplayPlaneCapabilitiesKHR) gpa(instance, "vkGetDisplayPlaneCapabilitiesKHR");
|
|
||||||
table->CreateDisplayPlaneSurfaceKHR = (PFN_vkCreateDisplayPlaneSurfaceKHR) gpa(instance, "vkCreateDisplayPlaneSurfaceKHR");
|
|
||||||
#ifdef VK_USE_PLATFORM_XLIB_KHR
|
|
||||||
table->CreateXlibSurfaceKHR = (PFN_vkCreateXlibSurfaceKHR) gpa(instance, "vkCreateXlibSurfaceKHR");
|
|
||||||
#endif // VK_USE_PLATFORM_XLIB_KHR
|
|
||||||
#ifdef VK_USE_PLATFORM_XLIB_KHR
|
|
||||||
table->GetPhysicalDeviceXlibPresentationSupportKHR = (PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR) gpa(instance, "vkGetPhysicalDeviceXlibPresentationSupportKHR");
|
|
||||||
#endif // VK_USE_PLATFORM_XLIB_KHR
|
|
||||||
#ifdef VK_USE_PLATFORM_XCB_KHR
|
|
||||||
table->CreateXcbSurfaceKHR = (PFN_vkCreateXcbSurfaceKHR) gpa(instance, "vkCreateXcbSurfaceKHR");
|
|
||||||
#endif // VK_USE_PLATFORM_XCB_KHR
|
|
||||||
#ifdef VK_USE_PLATFORM_XCB_KHR
|
|
||||||
table->GetPhysicalDeviceXcbPresentationSupportKHR = (PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR) gpa(instance, "vkGetPhysicalDeviceXcbPresentationSupportKHR");
|
|
||||||
#endif // VK_USE_PLATFORM_XCB_KHR
|
|
||||||
#ifdef VK_USE_PLATFORM_WAYLAND_KHR
|
|
||||||
table->CreateWaylandSurfaceKHR = (PFN_vkCreateWaylandSurfaceKHR) gpa(instance, "vkCreateWaylandSurfaceKHR");
|
|
||||||
#endif // VK_USE_PLATFORM_WAYLAND_KHR
|
|
||||||
#ifdef VK_USE_PLATFORM_WAYLAND_KHR
|
|
||||||
table->GetPhysicalDeviceWaylandPresentationSupportKHR = (PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR) gpa(instance, "vkGetPhysicalDeviceWaylandPresentationSupportKHR");
|
|
||||||
#endif // VK_USE_PLATFORM_WAYLAND_KHR
|
|
||||||
#ifdef VK_USE_PLATFORM_ANDROID_KHR
|
|
||||||
table->CreateAndroidSurfaceKHR = (PFN_vkCreateAndroidSurfaceKHR) gpa(instance, "vkCreateAndroidSurfaceKHR");
|
|
||||||
#endif // VK_USE_PLATFORM_ANDROID_KHR
|
|
||||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
table->CreateWin32SurfaceKHR = (PFN_vkCreateWin32SurfaceKHR) gpa(instance, "vkCreateWin32SurfaceKHR");
|
|
||||||
#endif // VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
table->GetPhysicalDeviceWin32PresentationSupportKHR = (PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR) gpa(instance, "vkGetPhysicalDeviceWin32PresentationSupportKHR");
|
|
||||||
#endif // VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
table->GetPhysicalDeviceFeatures2KHR = (PFN_vkGetPhysicalDeviceFeatures2KHR) gpa(instance, "vkGetPhysicalDeviceFeatures2KHR");
|
|
||||||
table->GetPhysicalDeviceProperties2KHR = (PFN_vkGetPhysicalDeviceProperties2KHR) gpa(instance, "vkGetPhysicalDeviceProperties2KHR");
|
|
||||||
table->GetPhysicalDeviceFormatProperties2KHR = (PFN_vkGetPhysicalDeviceFormatProperties2KHR) gpa(instance, "vkGetPhysicalDeviceFormatProperties2KHR");
|
|
||||||
table->GetPhysicalDeviceImageFormatProperties2KHR = (PFN_vkGetPhysicalDeviceImageFormatProperties2KHR) gpa(instance, "vkGetPhysicalDeviceImageFormatProperties2KHR");
|
|
||||||
table->GetPhysicalDeviceQueueFamilyProperties2KHR = (PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR) gpa(instance, "vkGetPhysicalDeviceQueueFamilyProperties2KHR");
|
|
||||||
table->GetPhysicalDeviceMemoryProperties2KHR = (PFN_vkGetPhysicalDeviceMemoryProperties2KHR) gpa(instance, "vkGetPhysicalDeviceMemoryProperties2KHR");
|
|
||||||
table->GetPhysicalDeviceSparseImageFormatProperties2KHR = (PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR) gpa(instance, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR");
|
|
||||||
table->EnumeratePhysicalDeviceGroupsKHR = (PFN_vkEnumeratePhysicalDeviceGroupsKHR) gpa(instance, "vkEnumeratePhysicalDeviceGroupsKHR");
|
|
||||||
table->GetPhysicalDeviceExternalBufferPropertiesKHR = (PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR) gpa(instance, "vkGetPhysicalDeviceExternalBufferPropertiesKHR");
|
|
||||||
table->GetPhysicalDeviceExternalSemaphorePropertiesKHR = (PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR) gpa(instance, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR");
|
|
||||||
table->GetPhysicalDeviceExternalFencePropertiesKHR = (PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR) gpa(instance, "vkGetPhysicalDeviceExternalFencePropertiesKHR");
|
|
||||||
table->EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = (PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR) gpa(instance, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR");
|
|
||||||
table->GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = (PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR) gpa(instance, "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR");
|
|
||||||
table->GetPhysicalDeviceSurfaceCapabilities2KHR = (PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR) gpa(instance, "vkGetPhysicalDeviceSurfaceCapabilities2KHR");
|
|
||||||
table->GetPhysicalDeviceSurfaceFormats2KHR = (PFN_vkGetPhysicalDeviceSurfaceFormats2KHR) gpa(instance, "vkGetPhysicalDeviceSurfaceFormats2KHR");
|
|
||||||
table->GetPhysicalDeviceDisplayProperties2KHR = (PFN_vkGetPhysicalDeviceDisplayProperties2KHR) gpa(instance, "vkGetPhysicalDeviceDisplayProperties2KHR");
|
|
||||||
table->GetPhysicalDeviceDisplayPlaneProperties2KHR = (PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR) gpa(instance, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR");
|
|
||||||
table->GetDisplayModeProperties2KHR = (PFN_vkGetDisplayModeProperties2KHR) gpa(instance, "vkGetDisplayModeProperties2KHR");
|
|
||||||
table->GetDisplayPlaneCapabilities2KHR = (PFN_vkGetDisplayPlaneCapabilities2KHR) gpa(instance, "vkGetDisplayPlaneCapabilities2KHR");
|
|
||||||
table->GetPhysicalDeviceFragmentShadingRatesKHR = (PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR) gpa(instance, "vkGetPhysicalDeviceFragmentShadingRatesKHR");
|
|
||||||
table->CreateDebugReportCallbackEXT = (PFN_vkCreateDebugReportCallbackEXT) gpa(instance, "vkCreateDebugReportCallbackEXT");
|
|
||||||
table->DestroyDebugReportCallbackEXT = (PFN_vkDestroyDebugReportCallbackEXT) gpa(instance, "vkDestroyDebugReportCallbackEXT");
|
|
||||||
table->DebugReportMessageEXT = (PFN_vkDebugReportMessageEXT) gpa(instance, "vkDebugReportMessageEXT");
|
|
||||||
#ifdef VK_USE_PLATFORM_GGP
|
|
||||||
table->CreateStreamDescriptorSurfaceGGP = (PFN_vkCreateStreamDescriptorSurfaceGGP) gpa(instance, "vkCreateStreamDescriptorSurfaceGGP");
|
|
||||||
#endif // VK_USE_PLATFORM_GGP
|
|
||||||
table->GetPhysicalDeviceExternalImageFormatPropertiesNV = (PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV) gpa(instance, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV");
|
|
||||||
#ifdef VK_USE_PLATFORM_VI_NN
|
|
||||||
table->CreateViSurfaceNN = (PFN_vkCreateViSurfaceNN) gpa(instance, "vkCreateViSurfaceNN");
|
|
||||||
#endif // VK_USE_PLATFORM_VI_NN
|
|
||||||
table->ReleaseDisplayEXT = (PFN_vkReleaseDisplayEXT) gpa(instance, "vkReleaseDisplayEXT");
|
|
||||||
#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
|
|
||||||
table->AcquireXlibDisplayEXT = (PFN_vkAcquireXlibDisplayEXT) gpa(instance, "vkAcquireXlibDisplayEXT");
|
|
||||||
#endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT
|
|
||||||
#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
|
|
||||||
table->GetRandROutputDisplayEXT = (PFN_vkGetRandROutputDisplayEXT) gpa(instance, "vkGetRandROutputDisplayEXT");
|
|
||||||
#endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT
|
|
||||||
table->GetPhysicalDeviceSurfaceCapabilities2EXT = (PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT) gpa(instance, "vkGetPhysicalDeviceSurfaceCapabilities2EXT");
|
|
||||||
#ifdef VK_USE_PLATFORM_IOS_MVK
|
|
||||||
table->CreateIOSSurfaceMVK = (PFN_vkCreateIOSSurfaceMVK) gpa(instance, "vkCreateIOSSurfaceMVK");
|
|
||||||
#endif // VK_USE_PLATFORM_IOS_MVK
|
|
||||||
#ifdef VK_USE_PLATFORM_MACOS_MVK
|
|
||||||
table->CreateMacOSSurfaceMVK = (PFN_vkCreateMacOSSurfaceMVK) gpa(instance, "vkCreateMacOSSurfaceMVK");
|
|
||||||
#endif // VK_USE_PLATFORM_MACOS_MVK
|
|
||||||
table->CreateDebugUtilsMessengerEXT = (PFN_vkCreateDebugUtilsMessengerEXT) gpa(instance, "vkCreateDebugUtilsMessengerEXT");
|
|
||||||
table->DestroyDebugUtilsMessengerEXT = (PFN_vkDestroyDebugUtilsMessengerEXT) gpa(instance, "vkDestroyDebugUtilsMessengerEXT");
|
|
||||||
table->SubmitDebugUtilsMessageEXT = (PFN_vkSubmitDebugUtilsMessageEXT) gpa(instance, "vkSubmitDebugUtilsMessageEXT");
|
|
||||||
table->GetPhysicalDeviceMultisamplePropertiesEXT = (PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT) gpa(instance, "vkGetPhysicalDeviceMultisamplePropertiesEXT");
|
|
||||||
table->GetPhysicalDeviceCalibrateableTimeDomainsEXT = (PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT) gpa(instance, "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT");
|
|
||||||
#ifdef VK_USE_PLATFORM_FUCHSIA
|
|
||||||
table->CreateImagePipeSurfaceFUCHSIA = (PFN_vkCreateImagePipeSurfaceFUCHSIA) gpa(instance, "vkCreateImagePipeSurfaceFUCHSIA");
|
|
||||||
#endif // VK_USE_PLATFORM_FUCHSIA
|
|
||||||
#ifdef VK_USE_PLATFORM_METAL_EXT
|
|
||||||
table->CreateMetalSurfaceEXT = (PFN_vkCreateMetalSurfaceEXT) gpa(instance, "vkCreateMetalSurfaceEXT");
|
|
||||||
#endif // VK_USE_PLATFORM_METAL_EXT
|
|
||||||
table->GetPhysicalDeviceToolPropertiesEXT = (PFN_vkGetPhysicalDeviceToolPropertiesEXT) gpa(instance, "vkGetPhysicalDeviceToolPropertiesEXT");
|
|
||||||
table->GetPhysicalDeviceCooperativeMatrixPropertiesNV = (PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV) gpa(instance, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV");
|
|
||||||
table->GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = (PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV) gpa(instance, "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV");
|
|
||||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
table->GetPhysicalDeviceSurfacePresentModes2EXT = (PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT) gpa(instance, "vkGetPhysicalDeviceSurfacePresentModes2EXT");
|
|
||||||
#endif // VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
table->CreateHeadlessSurfaceEXT = (PFN_vkCreateHeadlessSurfaceEXT) gpa(instance, "vkCreateHeadlessSurfaceEXT");
|
|
||||||
#ifdef VK_USE_PLATFORM_DIRECTFB_EXT
|
|
||||||
table->CreateDirectFBSurfaceEXT = (PFN_vkCreateDirectFBSurfaceEXT) gpa(instance, "vkCreateDirectFBSurfaceEXT");
|
|
||||||
#endif // VK_USE_PLATFORM_DIRECTFB_EXT
|
|
||||||
#ifdef VK_USE_PLATFORM_DIRECTFB_EXT
|
|
||||||
table->GetPhysicalDeviceDirectFBPresentationSupportEXT = (PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT) gpa(instance, "vkGetPhysicalDeviceDirectFBPresentationSupportEXT");
|
|
||||||
#endif // VK_USE_PLATFORM_DIRECTFB_EXT
|
|
||||||
}
|
|
|
@ -1,757 +0,0 @@
|
||||||
// *** THIS FILE IS GENERATED - DO NOT EDIT ***
|
|
||||||
// See loader_extension_generator.py for modifications
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Copyright (c) 2015-2017 The Khronos Group Inc.
|
|
||||||
* Copyright (c) 2015-2017 Valve Corporation
|
|
||||||
* Copyright (c) 2015-2017 LunarG, 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.
|
|
||||||
*
|
|
||||||
* Author: Mark Lobodzinski <mark@lunarg.com>
|
|
||||||
* Author: Mark Young <marky@lunarg.com>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
typedef PFN_vkVoidFunction (VKAPI_PTR *PFN_GetPhysicalDeviceProcAddr)(VkInstance instance, const char* pName);
|
|
||||||
|
|
||||||
// Instance function pointer dispatch table
|
|
||||||
typedef struct VkLayerInstanceDispatchTable_ {
|
|
||||||
// Manually add in GetPhysicalDeviceProcAddr entry
|
|
||||||
PFN_GetPhysicalDeviceProcAddr GetPhysicalDeviceProcAddr;
|
|
||||||
|
|
||||||
// ---- Core 1_0 commands
|
|
||||||
PFN_vkCreateInstance CreateInstance;
|
|
||||||
PFN_vkDestroyInstance DestroyInstance;
|
|
||||||
PFN_vkEnumeratePhysicalDevices EnumeratePhysicalDevices;
|
|
||||||
PFN_vkGetPhysicalDeviceFeatures GetPhysicalDeviceFeatures;
|
|
||||||
PFN_vkGetPhysicalDeviceFormatProperties GetPhysicalDeviceFormatProperties;
|
|
||||||
PFN_vkGetPhysicalDeviceImageFormatProperties GetPhysicalDeviceImageFormatProperties;
|
|
||||||
PFN_vkGetPhysicalDeviceProperties GetPhysicalDeviceProperties;
|
|
||||||
PFN_vkGetPhysicalDeviceQueueFamilyProperties GetPhysicalDeviceQueueFamilyProperties;
|
|
||||||
PFN_vkGetPhysicalDeviceMemoryProperties GetPhysicalDeviceMemoryProperties;
|
|
||||||
PFN_vkGetInstanceProcAddr GetInstanceProcAddr;
|
|
||||||
PFN_vkCreateDevice CreateDevice;
|
|
||||||
PFN_vkEnumerateInstanceExtensionProperties EnumerateInstanceExtensionProperties;
|
|
||||||
PFN_vkEnumerateDeviceExtensionProperties EnumerateDeviceExtensionProperties;
|
|
||||||
PFN_vkEnumerateInstanceLayerProperties EnumerateInstanceLayerProperties;
|
|
||||||
PFN_vkEnumerateDeviceLayerProperties EnumerateDeviceLayerProperties;
|
|
||||||
PFN_vkGetPhysicalDeviceSparseImageFormatProperties GetPhysicalDeviceSparseImageFormatProperties;
|
|
||||||
|
|
||||||
// ---- Core 1_1 commands
|
|
||||||
PFN_vkEnumerateInstanceVersion EnumerateInstanceVersion;
|
|
||||||
PFN_vkEnumeratePhysicalDeviceGroups EnumeratePhysicalDeviceGroups;
|
|
||||||
PFN_vkGetPhysicalDeviceFeatures2 GetPhysicalDeviceFeatures2;
|
|
||||||
PFN_vkGetPhysicalDeviceProperties2 GetPhysicalDeviceProperties2;
|
|
||||||
PFN_vkGetPhysicalDeviceFormatProperties2 GetPhysicalDeviceFormatProperties2;
|
|
||||||
PFN_vkGetPhysicalDeviceImageFormatProperties2 GetPhysicalDeviceImageFormatProperties2;
|
|
||||||
PFN_vkGetPhysicalDeviceQueueFamilyProperties2 GetPhysicalDeviceQueueFamilyProperties2;
|
|
||||||
PFN_vkGetPhysicalDeviceMemoryProperties2 GetPhysicalDeviceMemoryProperties2;
|
|
||||||
PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 GetPhysicalDeviceSparseImageFormatProperties2;
|
|
||||||
PFN_vkGetPhysicalDeviceExternalBufferProperties GetPhysicalDeviceExternalBufferProperties;
|
|
||||||
PFN_vkGetPhysicalDeviceExternalFenceProperties GetPhysicalDeviceExternalFenceProperties;
|
|
||||||
PFN_vkGetPhysicalDeviceExternalSemaphoreProperties GetPhysicalDeviceExternalSemaphoreProperties;
|
|
||||||
|
|
||||||
// ---- VK_KHR_surface extension commands
|
|
||||||
PFN_vkDestroySurfaceKHR DestroySurfaceKHR;
|
|
||||||
PFN_vkGetPhysicalDeviceSurfaceSupportKHR GetPhysicalDeviceSurfaceSupportKHR;
|
|
||||||
PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR GetPhysicalDeviceSurfaceCapabilitiesKHR;
|
|
||||||
PFN_vkGetPhysicalDeviceSurfaceFormatsKHR GetPhysicalDeviceSurfaceFormatsKHR;
|
|
||||||
PFN_vkGetPhysicalDeviceSurfacePresentModesKHR GetPhysicalDeviceSurfacePresentModesKHR;
|
|
||||||
|
|
||||||
// ---- VK_KHR_swapchain extension commands
|
|
||||||
PFN_vkGetPhysicalDevicePresentRectanglesKHR GetPhysicalDevicePresentRectanglesKHR;
|
|
||||||
|
|
||||||
// ---- VK_KHR_display extension commands
|
|
||||||
PFN_vkGetPhysicalDeviceDisplayPropertiesKHR GetPhysicalDeviceDisplayPropertiesKHR;
|
|
||||||
PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR GetPhysicalDeviceDisplayPlanePropertiesKHR;
|
|
||||||
PFN_vkGetDisplayPlaneSupportedDisplaysKHR GetDisplayPlaneSupportedDisplaysKHR;
|
|
||||||
PFN_vkGetDisplayModePropertiesKHR GetDisplayModePropertiesKHR;
|
|
||||||
PFN_vkCreateDisplayModeKHR CreateDisplayModeKHR;
|
|
||||||
PFN_vkGetDisplayPlaneCapabilitiesKHR GetDisplayPlaneCapabilitiesKHR;
|
|
||||||
PFN_vkCreateDisplayPlaneSurfaceKHR CreateDisplayPlaneSurfaceKHR;
|
|
||||||
|
|
||||||
// ---- VK_KHR_xlib_surface extension commands
|
|
||||||
#ifdef VK_USE_PLATFORM_XLIB_KHR
|
|
||||||
PFN_vkCreateXlibSurfaceKHR CreateXlibSurfaceKHR;
|
|
||||||
#endif // VK_USE_PLATFORM_XLIB_KHR
|
|
||||||
#ifdef VK_USE_PLATFORM_XLIB_KHR
|
|
||||||
PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR GetPhysicalDeviceXlibPresentationSupportKHR;
|
|
||||||
#endif // VK_USE_PLATFORM_XLIB_KHR
|
|
||||||
|
|
||||||
// ---- VK_KHR_xcb_surface extension commands
|
|
||||||
#ifdef VK_USE_PLATFORM_XCB_KHR
|
|
||||||
PFN_vkCreateXcbSurfaceKHR CreateXcbSurfaceKHR;
|
|
||||||
#endif // VK_USE_PLATFORM_XCB_KHR
|
|
||||||
#ifdef VK_USE_PLATFORM_XCB_KHR
|
|
||||||
PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR GetPhysicalDeviceXcbPresentationSupportKHR;
|
|
||||||
#endif // VK_USE_PLATFORM_XCB_KHR
|
|
||||||
|
|
||||||
// ---- VK_KHR_wayland_surface extension commands
|
|
||||||
#ifdef VK_USE_PLATFORM_WAYLAND_KHR
|
|
||||||
PFN_vkCreateWaylandSurfaceKHR CreateWaylandSurfaceKHR;
|
|
||||||
#endif // VK_USE_PLATFORM_WAYLAND_KHR
|
|
||||||
#ifdef VK_USE_PLATFORM_WAYLAND_KHR
|
|
||||||
PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR GetPhysicalDeviceWaylandPresentationSupportKHR;
|
|
||||||
#endif // VK_USE_PLATFORM_WAYLAND_KHR
|
|
||||||
|
|
||||||
// ---- VK_KHR_android_surface extension commands
|
|
||||||
#ifdef VK_USE_PLATFORM_ANDROID_KHR
|
|
||||||
PFN_vkCreateAndroidSurfaceKHR CreateAndroidSurfaceKHR;
|
|
||||||
#endif // VK_USE_PLATFORM_ANDROID_KHR
|
|
||||||
|
|
||||||
// ---- VK_KHR_win32_surface extension commands
|
|
||||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
PFN_vkCreateWin32SurfaceKHR CreateWin32SurfaceKHR;
|
|
||||||
#endif // VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR GetPhysicalDeviceWin32PresentationSupportKHR;
|
|
||||||
#endif // VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
|
|
||||||
// ---- VK_KHR_get_physical_device_properties2 extension commands
|
|
||||||
PFN_vkGetPhysicalDeviceFeatures2KHR GetPhysicalDeviceFeatures2KHR;
|
|
||||||
PFN_vkGetPhysicalDeviceProperties2KHR GetPhysicalDeviceProperties2KHR;
|
|
||||||
PFN_vkGetPhysicalDeviceFormatProperties2KHR GetPhysicalDeviceFormatProperties2KHR;
|
|
||||||
PFN_vkGetPhysicalDeviceImageFormatProperties2KHR GetPhysicalDeviceImageFormatProperties2KHR;
|
|
||||||
PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR GetPhysicalDeviceQueueFamilyProperties2KHR;
|
|
||||||
PFN_vkGetPhysicalDeviceMemoryProperties2KHR GetPhysicalDeviceMemoryProperties2KHR;
|
|
||||||
PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR GetPhysicalDeviceSparseImageFormatProperties2KHR;
|
|
||||||
|
|
||||||
// ---- VK_KHR_device_group_creation extension commands
|
|
||||||
PFN_vkEnumeratePhysicalDeviceGroupsKHR EnumeratePhysicalDeviceGroupsKHR;
|
|
||||||
|
|
||||||
// ---- VK_KHR_external_memory_capabilities extension commands
|
|
||||||
PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR GetPhysicalDeviceExternalBufferPropertiesKHR;
|
|
||||||
|
|
||||||
// ---- VK_KHR_external_semaphore_capabilities extension commands
|
|
||||||
PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR GetPhysicalDeviceExternalSemaphorePropertiesKHR;
|
|
||||||
|
|
||||||
// ---- VK_KHR_external_fence_capabilities extension commands
|
|
||||||
PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR GetPhysicalDeviceExternalFencePropertiesKHR;
|
|
||||||
|
|
||||||
// ---- VK_KHR_performance_query extension commands
|
|
||||||
PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR;
|
|
||||||
PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR;
|
|
||||||
|
|
||||||
// ---- VK_KHR_get_surface_capabilities2 extension commands
|
|
||||||
PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR GetPhysicalDeviceSurfaceCapabilities2KHR;
|
|
||||||
PFN_vkGetPhysicalDeviceSurfaceFormats2KHR GetPhysicalDeviceSurfaceFormats2KHR;
|
|
||||||
|
|
||||||
// ---- VK_KHR_get_display_properties2 extension commands
|
|
||||||
PFN_vkGetPhysicalDeviceDisplayProperties2KHR GetPhysicalDeviceDisplayProperties2KHR;
|
|
||||||
PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR GetPhysicalDeviceDisplayPlaneProperties2KHR;
|
|
||||||
PFN_vkGetDisplayModeProperties2KHR GetDisplayModeProperties2KHR;
|
|
||||||
PFN_vkGetDisplayPlaneCapabilities2KHR GetDisplayPlaneCapabilities2KHR;
|
|
||||||
|
|
||||||
// ---- VK_KHR_fragment_shading_rate extension commands
|
|
||||||
PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR GetPhysicalDeviceFragmentShadingRatesKHR;
|
|
||||||
|
|
||||||
// ---- VK_EXT_debug_report extension commands
|
|
||||||
PFN_vkCreateDebugReportCallbackEXT CreateDebugReportCallbackEXT;
|
|
||||||
PFN_vkDestroyDebugReportCallbackEXT DestroyDebugReportCallbackEXT;
|
|
||||||
PFN_vkDebugReportMessageEXT DebugReportMessageEXT;
|
|
||||||
|
|
||||||
// ---- VK_GGP_stream_descriptor_surface extension commands
|
|
||||||
#ifdef VK_USE_PLATFORM_GGP
|
|
||||||
PFN_vkCreateStreamDescriptorSurfaceGGP CreateStreamDescriptorSurfaceGGP;
|
|
||||||
#endif // VK_USE_PLATFORM_GGP
|
|
||||||
|
|
||||||
// ---- VK_NV_external_memory_capabilities extension commands
|
|
||||||
PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV GetPhysicalDeviceExternalImageFormatPropertiesNV;
|
|
||||||
|
|
||||||
// ---- VK_NN_vi_surface extension commands
|
|
||||||
#ifdef VK_USE_PLATFORM_VI_NN
|
|
||||||
PFN_vkCreateViSurfaceNN CreateViSurfaceNN;
|
|
||||||
#endif // VK_USE_PLATFORM_VI_NN
|
|
||||||
|
|
||||||
// ---- VK_EXT_direct_mode_display extension commands
|
|
||||||
PFN_vkReleaseDisplayEXT ReleaseDisplayEXT;
|
|
||||||
|
|
||||||
// ---- VK_EXT_acquire_xlib_display extension commands
|
|
||||||
#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
|
|
||||||
PFN_vkAcquireXlibDisplayEXT AcquireXlibDisplayEXT;
|
|
||||||
#endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT
|
|
||||||
#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
|
|
||||||
PFN_vkGetRandROutputDisplayEXT GetRandROutputDisplayEXT;
|
|
||||||
#endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT
|
|
||||||
|
|
||||||
// ---- VK_EXT_display_surface_counter extension commands
|
|
||||||
PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT GetPhysicalDeviceSurfaceCapabilities2EXT;
|
|
||||||
|
|
||||||
// ---- VK_MVK_ios_surface extension commands
|
|
||||||
#ifdef VK_USE_PLATFORM_IOS_MVK
|
|
||||||
PFN_vkCreateIOSSurfaceMVK CreateIOSSurfaceMVK;
|
|
||||||
#endif // VK_USE_PLATFORM_IOS_MVK
|
|
||||||
|
|
||||||
// ---- VK_MVK_macos_surface extension commands
|
|
||||||
#ifdef VK_USE_PLATFORM_MACOS_MVK
|
|
||||||
PFN_vkCreateMacOSSurfaceMVK CreateMacOSSurfaceMVK;
|
|
||||||
#endif // VK_USE_PLATFORM_MACOS_MVK
|
|
||||||
|
|
||||||
// ---- VK_EXT_debug_utils extension commands
|
|
||||||
PFN_vkCreateDebugUtilsMessengerEXT CreateDebugUtilsMessengerEXT;
|
|
||||||
PFN_vkDestroyDebugUtilsMessengerEXT DestroyDebugUtilsMessengerEXT;
|
|
||||||
PFN_vkSubmitDebugUtilsMessageEXT SubmitDebugUtilsMessageEXT;
|
|
||||||
|
|
||||||
// ---- VK_EXT_sample_locations extension commands
|
|
||||||
PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT GetPhysicalDeviceMultisamplePropertiesEXT;
|
|
||||||
|
|
||||||
// ---- VK_EXT_calibrated_timestamps extension commands
|
|
||||||
PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT GetPhysicalDeviceCalibrateableTimeDomainsEXT;
|
|
||||||
|
|
||||||
// ---- VK_FUCHSIA_imagepipe_surface extension commands
|
|
||||||
#ifdef VK_USE_PLATFORM_FUCHSIA
|
|
||||||
PFN_vkCreateImagePipeSurfaceFUCHSIA CreateImagePipeSurfaceFUCHSIA;
|
|
||||||
#endif // VK_USE_PLATFORM_FUCHSIA
|
|
||||||
|
|
||||||
// ---- VK_EXT_metal_surface extension commands
|
|
||||||
#ifdef VK_USE_PLATFORM_METAL_EXT
|
|
||||||
PFN_vkCreateMetalSurfaceEXT CreateMetalSurfaceEXT;
|
|
||||||
#endif // VK_USE_PLATFORM_METAL_EXT
|
|
||||||
|
|
||||||
// ---- VK_EXT_tooling_info extension commands
|
|
||||||
PFN_vkGetPhysicalDeviceToolPropertiesEXT GetPhysicalDeviceToolPropertiesEXT;
|
|
||||||
|
|
||||||
// ---- VK_NV_cooperative_matrix extension commands
|
|
||||||
PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV GetPhysicalDeviceCooperativeMatrixPropertiesNV;
|
|
||||||
|
|
||||||
// ---- VK_NV_coverage_reduction_mode extension commands
|
|
||||||
PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV;
|
|
||||||
|
|
||||||
// ---- VK_EXT_full_screen_exclusive extension commands
|
|
||||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT GetPhysicalDeviceSurfacePresentModes2EXT;
|
|
||||||
#endif // VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
|
|
||||||
// ---- VK_EXT_headless_surface extension commands
|
|
||||||
PFN_vkCreateHeadlessSurfaceEXT CreateHeadlessSurfaceEXT;
|
|
||||||
|
|
||||||
// ---- VK_EXT_directfb_surface extension commands
|
|
||||||
#ifdef VK_USE_PLATFORM_DIRECTFB_EXT
|
|
||||||
PFN_vkCreateDirectFBSurfaceEXT CreateDirectFBSurfaceEXT;
|
|
||||||
#endif // VK_USE_PLATFORM_DIRECTFB_EXT
|
|
||||||
#ifdef VK_USE_PLATFORM_DIRECTFB_EXT
|
|
||||||
PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT GetPhysicalDeviceDirectFBPresentationSupportEXT;
|
|
||||||
#endif // VK_USE_PLATFORM_DIRECTFB_EXT
|
|
||||||
} VkLayerInstanceDispatchTable;
|
|
||||||
|
|
||||||
// Device function pointer dispatch table
|
|
||||||
typedef struct VkLayerDispatchTable_ {
|
|
||||||
|
|
||||||
// ---- Core 1_0 commands
|
|
||||||
PFN_vkGetDeviceProcAddr GetDeviceProcAddr;
|
|
||||||
PFN_vkDestroyDevice DestroyDevice;
|
|
||||||
PFN_vkGetDeviceQueue GetDeviceQueue;
|
|
||||||
PFN_vkQueueSubmit QueueSubmit;
|
|
||||||
PFN_vkQueueWaitIdle QueueWaitIdle;
|
|
||||||
PFN_vkDeviceWaitIdle DeviceWaitIdle;
|
|
||||||
PFN_vkAllocateMemory AllocateMemory;
|
|
||||||
PFN_vkFreeMemory FreeMemory;
|
|
||||||
PFN_vkMapMemory MapMemory;
|
|
||||||
PFN_vkUnmapMemory UnmapMemory;
|
|
||||||
PFN_vkFlushMappedMemoryRanges FlushMappedMemoryRanges;
|
|
||||||
PFN_vkInvalidateMappedMemoryRanges InvalidateMappedMemoryRanges;
|
|
||||||
PFN_vkGetDeviceMemoryCommitment GetDeviceMemoryCommitment;
|
|
||||||
PFN_vkBindBufferMemory BindBufferMemory;
|
|
||||||
PFN_vkBindImageMemory BindImageMemory;
|
|
||||||
PFN_vkGetBufferMemoryRequirements GetBufferMemoryRequirements;
|
|
||||||
PFN_vkGetImageMemoryRequirements GetImageMemoryRequirements;
|
|
||||||
PFN_vkGetImageSparseMemoryRequirements GetImageSparseMemoryRequirements;
|
|
||||||
PFN_vkQueueBindSparse QueueBindSparse;
|
|
||||||
PFN_vkCreateFence CreateFence;
|
|
||||||
PFN_vkDestroyFence DestroyFence;
|
|
||||||
PFN_vkResetFences ResetFences;
|
|
||||||
PFN_vkGetFenceStatus GetFenceStatus;
|
|
||||||
PFN_vkWaitForFences WaitForFences;
|
|
||||||
PFN_vkCreateSemaphore CreateSemaphore;
|
|
||||||
PFN_vkDestroySemaphore DestroySemaphore;
|
|
||||||
PFN_vkCreateEvent CreateEvent;
|
|
||||||
PFN_vkDestroyEvent DestroyEvent;
|
|
||||||
PFN_vkGetEventStatus GetEventStatus;
|
|
||||||
PFN_vkSetEvent SetEvent;
|
|
||||||
PFN_vkResetEvent ResetEvent;
|
|
||||||
PFN_vkCreateQueryPool CreateQueryPool;
|
|
||||||
PFN_vkDestroyQueryPool DestroyQueryPool;
|
|
||||||
PFN_vkGetQueryPoolResults GetQueryPoolResults;
|
|
||||||
PFN_vkCreateBuffer CreateBuffer;
|
|
||||||
PFN_vkDestroyBuffer DestroyBuffer;
|
|
||||||
PFN_vkCreateBufferView CreateBufferView;
|
|
||||||
PFN_vkDestroyBufferView DestroyBufferView;
|
|
||||||
PFN_vkCreateImage CreateImage;
|
|
||||||
PFN_vkDestroyImage DestroyImage;
|
|
||||||
PFN_vkGetImageSubresourceLayout GetImageSubresourceLayout;
|
|
||||||
PFN_vkCreateImageView CreateImageView;
|
|
||||||
PFN_vkDestroyImageView DestroyImageView;
|
|
||||||
PFN_vkCreateShaderModule CreateShaderModule;
|
|
||||||
PFN_vkDestroyShaderModule DestroyShaderModule;
|
|
||||||
PFN_vkCreatePipelineCache CreatePipelineCache;
|
|
||||||
PFN_vkDestroyPipelineCache DestroyPipelineCache;
|
|
||||||
PFN_vkGetPipelineCacheData GetPipelineCacheData;
|
|
||||||
PFN_vkMergePipelineCaches MergePipelineCaches;
|
|
||||||
PFN_vkCreateGraphicsPipelines CreateGraphicsPipelines;
|
|
||||||
PFN_vkCreateComputePipelines CreateComputePipelines;
|
|
||||||
PFN_vkDestroyPipeline DestroyPipeline;
|
|
||||||
PFN_vkCreatePipelineLayout CreatePipelineLayout;
|
|
||||||
PFN_vkDestroyPipelineLayout DestroyPipelineLayout;
|
|
||||||
PFN_vkCreateSampler CreateSampler;
|
|
||||||
PFN_vkDestroySampler DestroySampler;
|
|
||||||
PFN_vkCreateDescriptorSetLayout CreateDescriptorSetLayout;
|
|
||||||
PFN_vkDestroyDescriptorSetLayout DestroyDescriptorSetLayout;
|
|
||||||
PFN_vkCreateDescriptorPool CreateDescriptorPool;
|
|
||||||
PFN_vkDestroyDescriptorPool DestroyDescriptorPool;
|
|
||||||
PFN_vkResetDescriptorPool ResetDescriptorPool;
|
|
||||||
PFN_vkAllocateDescriptorSets AllocateDescriptorSets;
|
|
||||||
PFN_vkFreeDescriptorSets FreeDescriptorSets;
|
|
||||||
PFN_vkUpdateDescriptorSets UpdateDescriptorSets;
|
|
||||||
PFN_vkCreateFramebuffer CreateFramebuffer;
|
|
||||||
PFN_vkDestroyFramebuffer DestroyFramebuffer;
|
|
||||||
PFN_vkCreateRenderPass CreateRenderPass;
|
|
||||||
PFN_vkDestroyRenderPass DestroyRenderPass;
|
|
||||||
PFN_vkGetRenderAreaGranularity GetRenderAreaGranularity;
|
|
||||||
PFN_vkCreateCommandPool CreateCommandPool;
|
|
||||||
PFN_vkDestroyCommandPool DestroyCommandPool;
|
|
||||||
PFN_vkResetCommandPool ResetCommandPool;
|
|
||||||
PFN_vkAllocateCommandBuffers AllocateCommandBuffers;
|
|
||||||
PFN_vkFreeCommandBuffers FreeCommandBuffers;
|
|
||||||
PFN_vkBeginCommandBuffer BeginCommandBuffer;
|
|
||||||
PFN_vkEndCommandBuffer EndCommandBuffer;
|
|
||||||
PFN_vkResetCommandBuffer ResetCommandBuffer;
|
|
||||||
PFN_vkCmdBindPipeline CmdBindPipeline;
|
|
||||||
PFN_vkCmdSetViewport CmdSetViewport;
|
|
||||||
PFN_vkCmdSetScissor CmdSetScissor;
|
|
||||||
PFN_vkCmdSetLineWidth CmdSetLineWidth;
|
|
||||||
PFN_vkCmdSetDepthBias CmdSetDepthBias;
|
|
||||||
PFN_vkCmdSetBlendConstants CmdSetBlendConstants;
|
|
||||||
PFN_vkCmdSetDepthBounds CmdSetDepthBounds;
|
|
||||||
PFN_vkCmdSetStencilCompareMask CmdSetStencilCompareMask;
|
|
||||||
PFN_vkCmdSetStencilWriteMask CmdSetStencilWriteMask;
|
|
||||||
PFN_vkCmdSetStencilReference CmdSetStencilReference;
|
|
||||||
PFN_vkCmdBindDescriptorSets CmdBindDescriptorSets;
|
|
||||||
PFN_vkCmdBindIndexBuffer CmdBindIndexBuffer;
|
|
||||||
PFN_vkCmdBindVertexBuffers CmdBindVertexBuffers;
|
|
||||||
PFN_vkCmdDraw CmdDraw;
|
|
||||||
PFN_vkCmdDrawIndexed CmdDrawIndexed;
|
|
||||||
PFN_vkCmdDrawIndirect CmdDrawIndirect;
|
|
||||||
PFN_vkCmdDrawIndexedIndirect CmdDrawIndexedIndirect;
|
|
||||||
PFN_vkCmdDispatch CmdDispatch;
|
|
||||||
PFN_vkCmdDispatchIndirect CmdDispatchIndirect;
|
|
||||||
PFN_vkCmdCopyBuffer CmdCopyBuffer;
|
|
||||||
PFN_vkCmdCopyImage CmdCopyImage;
|
|
||||||
PFN_vkCmdBlitImage CmdBlitImage;
|
|
||||||
PFN_vkCmdCopyBufferToImage CmdCopyBufferToImage;
|
|
||||||
PFN_vkCmdCopyImageToBuffer CmdCopyImageToBuffer;
|
|
||||||
PFN_vkCmdUpdateBuffer CmdUpdateBuffer;
|
|
||||||
PFN_vkCmdFillBuffer CmdFillBuffer;
|
|
||||||
PFN_vkCmdClearColorImage CmdClearColorImage;
|
|
||||||
PFN_vkCmdClearDepthStencilImage CmdClearDepthStencilImage;
|
|
||||||
PFN_vkCmdClearAttachments CmdClearAttachments;
|
|
||||||
PFN_vkCmdResolveImage CmdResolveImage;
|
|
||||||
PFN_vkCmdSetEvent CmdSetEvent;
|
|
||||||
PFN_vkCmdResetEvent CmdResetEvent;
|
|
||||||
PFN_vkCmdWaitEvents CmdWaitEvents;
|
|
||||||
PFN_vkCmdPipelineBarrier CmdPipelineBarrier;
|
|
||||||
PFN_vkCmdBeginQuery CmdBeginQuery;
|
|
||||||
PFN_vkCmdEndQuery CmdEndQuery;
|
|
||||||
PFN_vkCmdResetQueryPool CmdResetQueryPool;
|
|
||||||
PFN_vkCmdWriteTimestamp CmdWriteTimestamp;
|
|
||||||
PFN_vkCmdCopyQueryPoolResults CmdCopyQueryPoolResults;
|
|
||||||
PFN_vkCmdPushConstants CmdPushConstants;
|
|
||||||
PFN_vkCmdBeginRenderPass CmdBeginRenderPass;
|
|
||||||
PFN_vkCmdNextSubpass CmdNextSubpass;
|
|
||||||
PFN_vkCmdEndRenderPass CmdEndRenderPass;
|
|
||||||
PFN_vkCmdExecuteCommands CmdExecuteCommands;
|
|
||||||
|
|
||||||
// ---- Core 1_1 commands
|
|
||||||
PFN_vkBindBufferMemory2 BindBufferMemory2;
|
|
||||||
PFN_vkBindImageMemory2 BindImageMemory2;
|
|
||||||
PFN_vkGetDeviceGroupPeerMemoryFeatures GetDeviceGroupPeerMemoryFeatures;
|
|
||||||
PFN_vkCmdSetDeviceMask CmdSetDeviceMask;
|
|
||||||
PFN_vkCmdDispatchBase CmdDispatchBase;
|
|
||||||
PFN_vkGetImageMemoryRequirements2 GetImageMemoryRequirements2;
|
|
||||||
PFN_vkGetBufferMemoryRequirements2 GetBufferMemoryRequirements2;
|
|
||||||
PFN_vkGetImageSparseMemoryRequirements2 GetImageSparseMemoryRequirements2;
|
|
||||||
PFN_vkTrimCommandPool TrimCommandPool;
|
|
||||||
PFN_vkGetDeviceQueue2 GetDeviceQueue2;
|
|
||||||
PFN_vkCreateSamplerYcbcrConversion CreateSamplerYcbcrConversion;
|
|
||||||
PFN_vkDestroySamplerYcbcrConversion DestroySamplerYcbcrConversion;
|
|
||||||
PFN_vkCreateDescriptorUpdateTemplate CreateDescriptorUpdateTemplate;
|
|
||||||
PFN_vkDestroyDescriptorUpdateTemplate DestroyDescriptorUpdateTemplate;
|
|
||||||
PFN_vkUpdateDescriptorSetWithTemplate UpdateDescriptorSetWithTemplate;
|
|
||||||
PFN_vkGetDescriptorSetLayoutSupport GetDescriptorSetLayoutSupport;
|
|
||||||
|
|
||||||
// ---- Core 1_2 commands
|
|
||||||
PFN_vkCmdDrawIndirectCount CmdDrawIndirectCount;
|
|
||||||
PFN_vkCmdDrawIndexedIndirectCount CmdDrawIndexedIndirectCount;
|
|
||||||
PFN_vkCreateRenderPass2 CreateRenderPass2;
|
|
||||||
PFN_vkCmdBeginRenderPass2 CmdBeginRenderPass2;
|
|
||||||
PFN_vkCmdNextSubpass2 CmdNextSubpass2;
|
|
||||||
PFN_vkCmdEndRenderPass2 CmdEndRenderPass2;
|
|
||||||
PFN_vkResetQueryPool ResetQueryPool;
|
|
||||||
PFN_vkGetSemaphoreCounterValue GetSemaphoreCounterValue;
|
|
||||||
PFN_vkWaitSemaphores WaitSemaphores;
|
|
||||||
PFN_vkSignalSemaphore SignalSemaphore;
|
|
||||||
PFN_vkGetBufferDeviceAddress GetBufferDeviceAddress;
|
|
||||||
PFN_vkGetBufferOpaqueCaptureAddress GetBufferOpaqueCaptureAddress;
|
|
||||||
PFN_vkGetDeviceMemoryOpaqueCaptureAddress GetDeviceMemoryOpaqueCaptureAddress;
|
|
||||||
|
|
||||||
// ---- VK_KHR_swapchain extension commands
|
|
||||||
PFN_vkCreateSwapchainKHR CreateSwapchainKHR;
|
|
||||||
PFN_vkDestroySwapchainKHR DestroySwapchainKHR;
|
|
||||||
PFN_vkGetSwapchainImagesKHR GetSwapchainImagesKHR;
|
|
||||||
PFN_vkAcquireNextImageKHR AcquireNextImageKHR;
|
|
||||||
PFN_vkQueuePresentKHR QueuePresentKHR;
|
|
||||||
PFN_vkGetDeviceGroupPresentCapabilitiesKHR GetDeviceGroupPresentCapabilitiesKHR;
|
|
||||||
PFN_vkGetDeviceGroupSurfacePresentModesKHR GetDeviceGroupSurfacePresentModesKHR;
|
|
||||||
PFN_vkAcquireNextImage2KHR AcquireNextImage2KHR;
|
|
||||||
|
|
||||||
// ---- VK_KHR_display_swapchain extension commands
|
|
||||||
PFN_vkCreateSharedSwapchainsKHR CreateSharedSwapchainsKHR;
|
|
||||||
|
|
||||||
// ---- VK_KHR_device_group extension commands
|
|
||||||
PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR GetDeviceGroupPeerMemoryFeaturesKHR;
|
|
||||||
PFN_vkCmdSetDeviceMaskKHR CmdSetDeviceMaskKHR;
|
|
||||||
PFN_vkCmdDispatchBaseKHR CmdDispatchBaseKHR;
|
|
||||||
|
|
||||||
// ---- VK_KHR_maintenance1 extension commands
|
|
||||||
PFN_vkTrimCommandPoolKHR TrimCommandPoolKHR;
|
|
||||||
|
|
||||||
// ---- VK_KHR_external_memory_win32 extension commands
|
|
||||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
PFN_vkGetMemoryWin32HandleKHR GetMemoryWin32HandleKHR;
|
|
||||||
#endif // VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
PFN_vkGetMemoryWin32HandlePropertiesKHR GetMemoryWin32HandlePropertiesKHR;
|
|
||||||
#endif // VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
|
|
||||||
// ---- VK_KHR_external_memory_fd extension commands
|
|
||||||
PFN_vkGetMemoryFdKHR GetMemoryFdKHR;
|
|
||||||
PFN_vkGetMemoryFdPropertiesKHR GetMemoryFdPropertiesKHR;
|
|
||||||
|
|
||||||
// ---- VK_KHR_external_semaphore_win32 extension commands
|
|
||||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
PFN_vkImportSemaphoreWin32HandleKHR ImportSemaphoreWin32HandleKHR;
|
|
||||||
#endif // VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
PFN_vkGetSemaphoreWin32HandleKHR GetSemaphoreWin32HandleKHR;
|
|
||||||
#endif // VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
|
|
||||||
// ---- VK_KHR_external_semaphore_fd extension commands
|
|
||||||
PFN_vkImportSemaphoreFdKHR ImportSemaphoreFdKHR;
|
|
||||||
PFN_vkGetSemaphoreFdKHR GetSemaphoreFdKHR;
|
|
||||||
|
|
||||||
// ---- VK_KHR_push_descriptor extension commands
|
|
||||||
PFN_vkCmdPushDescriptorSetKHR CmdPushDescriptorSetKHR;
|
|
||||||
PFN_vkCmdPushDescriptorSetWithTemplateKHR CmdPushDescriptorSetWithTemplateKHR;
|
|
||||||
|
|
||||||
// ---- VK_KHR_descriptor_update_template extension commands
|
|
||||||
PFN_vkCreateDescriptorUpdateTemplateKHR CreateDescriptorUpdateTemplateKHR;
|
|
||||||
PFN_vkDestroyDescriptorUpdateTemplateKHR DestroyDescriptorUpdateTemplateKHR;
|
|
||||||
PFN_vkUpdateDescriptorSetWithTemplateKHR UpdateDescriptorSetWithTemplateKHR;
|
|
||||||
|
|
||||||
// ---- VK_KHR_create_renderpass2 extension commands
|
|
||||||
PFN_vkCreateRenderPass2KHR CreateRenderPass2KHR;
|
|
||||||
PFN_vkCmdBeginRenderPass2KHR CmdBeginRenderPass2KHR;
|
|
||||||
PFN_vkCmdNextSubpass2KHR CmdNextSubpass2KHR;
|
|
||||||
PFN_vkCmdEndRenderPass2KHR CmdEndRenderPass2KHR;
|
|
||||||
|
|
||||||
// ---- VK_KHR_shared_presentable_image extension commands
|
|
||||||
PFN_vkGetSwapchainStatusKHR GetSwapchainStatusKHR;
|
|
||||||
|
|
||||||
// ---- VK_KHR_external_fence_win32 extension commands
|
|
||||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
PFN_vkImportFenceWin32HandleKHR ImportFenceWin32HandleKHR;
|
|
||||||
#endif // VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
PFN_vkGetFenceWin32HandleKHR GetFenceWin32HandleKHR;
|
|
||||||
#endif // VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
|
|
||||||
// ---- VK_KHR_external_fence_fd extension commands
|
|
||||||
PFN_vkImportFenceFdKHR ImportFenceFdKHR;
|
|
||||||
PFN_vkGetFenceFdKHR GetFenceFdKHR;
|
|
||||||
|
|
||||||
// ---- VK_KHR_performance_query extension commands
|
|
||||||
PFN_vkAcquireProfilingLockKHR AcquireProfilingLockKHR;
|
|
||||||
PFN_vkReleaseProfilingLockKHR ReleaseProfilingLockKHR;
|
|
||||||
|
|
||||||
// ---- VK_KHR_get_memory_requirements2 extension commands
|
|
||||||
PFN_vkGetImageMemoryRequirements2KHR GetImageMemoryRequirements2KHR;
|
|
||||||
PFN_vkGetBufferMemoryRequirements2KHR GetBufferMemoryRequirements2KHR;
|
|
||||||
PFN_vkGetImageSparseMemoryRequirements2KHR GetImageSparseMemoryRequirements2KHR;
|
|
||||||
|
|
||||||
// ---- VK_KHR_sampler_ycbcr_conversion extension commands
|
|
||||||
PFN_vkCreateSamplerYcbcrConversionKHR CreateSamplerYcbcrConversionKHR;
|
|
||||||
PFN_vkDestroySamplerYcbcrConversionKHR DestroySamplerYcbcrConversionKHR;
|
|
||||||
|
|
||||||
// ---- VK_KHR_bind_memory2 extension commands
|
|
||||||
PFN_vkBindBufferMemory2KHR BindBufferMemory2KHR;
|
|
||||||
PFN_vkBindImageMemory2KHR BindImageMemory2KHR;
|
|
||||||
|
|
||||||
// ---- VK_KHR_maintenance3 extension commands
|
|
||||||
PFN_vkGetDescriptorSetLayoutSupportKHR GetDescriptorSetLayoutSupportKHR;
|
|
||||||
|
|
||||||
// ---- VK_KHR_draw_indirect_count extension commands
|
|
||||||
PFN_vkCmdDrawIndirectCountKHR CmdDrawIndirectCountKHR;
|
|
||||||
PFN_vkCmdDrawIndexedIndirectCountKHR CmdDrawIndexedIndirectCountKHR;
|
|
||||||
|
|
||||||
// ---- VK_KHR_timeline_semaphore extension commands
|
|
||||||
PFN_vkGetSemaphoreCounterValueKHR GetSemaphoreCounterValueKHR;
|
|
||||||
PFN_vkWaitSemaphoresKHR WaitSemaphoresKHR;
|
|
||||||
PFN_vkSignalSemaphoreKHR SignalSemaphoreKHR;
|
|
||||||
|
|
||||||
// ---- VK_KHR_fragment_shading_rate extension commands
|
|
||||||
PFN_vkCmdSetFragmentShadingRateKHR CmdSetFragmentShadingRateKHR;
|
|
||||||
|
|
||||||
// ---- VK_KHR_buffer_device_address extension commands
|
|
||||||
PFN_vkGetBufferDeviceAddressKHR GetBufferDeviceAddressKHR;
|
|
||||||
PFN_vkGetBufferOpaqueCaptureAddressKHR GetBufferOpaqueCaptureAddressKHR;
|
|
||||||
PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR GetDeviceMemoryOpaqueCaptureAddressKHR;
|
|
||||||
|
|
||||||
// ---- VK_KHR_deferred_host_operations extension commands
|
|
||||||
PFN_vkCreateDeferredOperationKHR CreateDeferredOperationKHR;
|
|
||||||
PFN_vkDestroyDeferredOperationKHR DestroyDeferredOperationKHR;
|
|
||||||
PFN_vkGetDeferredOperationMaxConcurrencyKHR GetDeferredOperationMaxConcurrencyKHR;
|
|
||||||
PFN_vkGetDeferredOperationResultKHR GetDeferredOperationResultKHR;
|
|
||||||
PFN_vkDeferredOperationJoinKHR DeferredOperationJoinKHR;
|
|
||||||
|
|
||||||
// ---- VK_KHR_pipeline_executable_properties extension commands
|
|
||||||
PFN_vkGetPipelineExecutablePropertiesKHR GetPipelineExecutablePropertiesKHR;
|
|
||||||
PFN_vkGetPipelineExecutableStatisticsKHR GetPipelineExecutableStatisticsKHR;
|
|
||||||
PFN_vkGetPipelineExecutableInternalRepresentationsKHR GetPipelineExecutableInternalRepresentationsKHR;
|
|
||||||
|
|
||||||
// ---- VK_KHR_copy_commands2 extension commands
|
|
||||||
PFN_vkCmdCopyBuffer2KHR CmdCopyBuffer2KHR;
|
|
||||||
PFN_vkCmdCopyImage2KHR CmdCopyImage2KHR;
|
|
||||||
PFN_vkCmdCopyBufferToImage2KHR CmdCopyBufferToImage2KHR;
|
|
||||||
PFN_vkCmdCopyImageToBuffer2KHR CmdCopyImageToBuffer2KHR;
|
|
||||||
PFN_vkCmdBlitImage2KHR CmdBlitImage2KHR;
|
|
||||||
PFN_vkCmdResolveImage2KHR CmdResolveImage2KHR;
|
|
||||||
|
|
||||||
// ---- VK_EXT_debug_marker extension commands
|
|
||||||
PFN_vkDebugMarkerSetObjectTagEXT DebugMarkerSetObjectTagEXT;
|
|
||||||
PFN_vkDebugMarkerSetObjectNameEXT DebugMarkerSetObjectNameEXT;
|
|
||||||
PFN_vkCmdDebugMarkerBeginEXT CmdDebugMarkerBeginEXT;
|
|
||||||
PFN_vkCmdDebugMarkerEndEXT CmdDebugMarkerEndEXT;
|
|
||||||
PFN_vkCmdDebugMarkerInsertEXT CmdDebugMarkerInsertEXT;
|
|
||||||
|
|
||||||
// ---- VK_EXT_transform_feedback extension commands
|
|
||||||
PFN_vkCmdBindTransformFeedbackBuffersEXT CmdBindTransformFeedbackBuffersEXT;
|
|
||||||
PFN_vkCmdBeginTransformFeedbackEXT CmdBeginTransformFeedbackEXT;
|
|
||||||
PFN_vkCmdEndTransformFeedbackEXT CmdEndTransformFeedbackEXT;
|
|
||||||
PFN_vkCmdBeginQueryIndexedEXT CmdBeginQueryIndexedEXT;
|
|
||||||
PFN_vkCmdEndQueryIndexedEXT CmdEndQueryIndexedEXT;
|
|
||||||
PFN_vkCmdDrawIndirectByteCountEXT CmdDrawIndirectByteCountEXT;
|
|
||||||
|
|
||||||
// ---- VK_NVX_image_view_handle extension commands
|
|
||||||
PFN_vkGetImageViewHandleNVX GetImageViewHandleNVX;
|
|
||||||
PFN_vkGetImageViewAddressNVX GetImageViewAddressNVX;
|
|
||||||
|
|
||||||
// ---- VK_AMD_draw_indirect_count extension commands
|
|
||||||
PFN_vkCmdDrawIndirectCountAMD CmdDrawIndirectCountAMD;
|
|
||||||
PFN_vkCmdDrawIndexedIndirectCountAMD CmdDrawIndexedIndirectCountAMD;
|
|
||||||
|
|
||||||
// ---- VK_AMD_shader_info extension commands
|
|
||||||
PFN_vkGetShaderInfoAMD GetShaderInfoAMD;
|
|
||||||
|
|
||||||
// ---- VK_NV_external_memory_win32 extension commands
|
|
||||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
PFN_vkGetMemoryWin32HandleNV GetMemoryWin32HandleNV;
|
|
||||||
#endif // VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
|
|
||||||
// ---- VK_EXT_conditional_rendering extension commands
|
|
||||||
PFN_vkCmdBeginConditionalRenderingEXT CmdBeginConditionalRenderingEXT;
|
|
||||||
PFN_vkCmdEndConditionalRenderingEXT CmdEndConditionalRenderingEXT;
|
|
||||||
|
|
||||||
// ---- VK_NV_clip_space_w_scaling extension commands
|
|
||||||
PFN_vkCmdSetViewportWScalingNV CmdSetViewportWScalingNV;
|
|
||||||
|
|
||||||
// ---- VK_EXT_display_control extension commands
|
|
||||||
PFN_vkDisplayPowerControlEXT DisplayPowerControlEXT;
|
|
||||||
PFN_vkRegisterDeviceEventEXT RegisterDeviceEventEXT;
|
|
||||||
PFN_vkRegisterDisplayEventEXT RegisterDisplayEventEXT;
|
|
||||||
PFN_vkGetSwapchainCounterEXT GetSwapchainCounterEXT;
|
|
||||||
|
|
||||||
// ---- VK_GOOGLE_display_timing extension commands
|
|
||||||
PFN_vkGetRefreshCycleDurationGOOGLE GetRefreshCycleDurationGOOGLE;
|
|
||||||
PFN_vkGetPastPresentationTimingGOOGLE GetPastPresentationTimingGOOGLE;
|
|
||||||
|
|
||||||
// ---- VK_EXT_discard_rectangles extension commands
|
|
||||||
PFN_vkCmdSetDiscardRectangleEXT CmdSetDiscardRectangleEXT;
|
|
||||||
|
|
||||||
// ---- VK_EXT_hdr_metadata extension commands
|
|
||||||
PFN_vkSetHdrMetadataEXT SetHdrMetadataEXT;
|
|
||||||
|
|
||||||
// ---- VK_EXT_debug_utils extension commands
|
|
||||||
PFN_vkSetDebugUtilsObjectNameEXT SetDebugUtilsObjectNameEXT;
|
|
||||||
PFN_vkSetDebugUtilsObjectTagEXT SetDebugUtilsObjectTagEXT;
|
|
||||||
PFN_vkQueueBeginDebugUtilsLabelEXT QueueBeginDebugUtilsLabelEXT;
|
|
||||||
PFN_vkQueueEndDebugUtilsLabelEXT QueueEndDebugUtilsLabelEXT;
|
|
||||||
PFN_vkQueueInsertDebugUtilsLabelEXT QueueInsertDebugUtilsLabelEXT;
|
|
||||||
PFN_vkCmdBeginDebugUtilsLabelEXT CmdBeginDebugUtilsLabelEXT;
|
|
||||||
PFN_vkCmdEndDebugUtilsLabelEXT CmdEndDebugUtilsLabelEXT;
|
|
||||||
PFN_vkCmdInsertDebugUtilsLabelEXT CmdInsertDebugUtilsLabelEXT;
|
|
||||||
|
|
||||||
// ---- VK_ANDROID_external_memory_android_hardware_buffer extension commands
|
|
||||||
#ifdef VK_USE_PLATFORM_ANDROID_KHR
|
|
||||||
PFN_vkGetAndroidHardwareBufferPropertiesANDROID GetAndroidHardwareBufferPropertiesANDROID;
|
|
||||||
#endif // VK_USE_PLATFORM_ANDROID_KHR
|
|
||||||
#ifdef VK_USE_PLATFORM_ANDROID_KHR
|
|
||||||
PFN_vkGetMemoryAndroidHardwareBufferANDROID GetMemoryAndroidHardwareBufferANDROID;
|
|
||||||
#endif // VK_USE_PLATFORM_ANDROID_KHR
|
|
||||||
|
|
||||||
// ---- VK_EXT_sample_locations extension commands
|
|
||||||
PFN_vkCmdSetSampleLocationsEXT CmdSetSampleLocationsEXT;
|
|
||||||
|
|
||||||
// ---- VK_EXT_image_drm_format_modifier extension commands
|
|
||||||
PFN_vkGetImageDrmFormatModifierPropertiesEXT GetImageDrmFormatModifierPropertiesEXT;
|
|
||||||
|
|
||||||
// ---- VK_EXT_validation_cache extension commands
|
|
||||||
PFN_vkCreateValidationCacheEXT CreateValidationCacheEXT;
|
|
||||||
PFN_vkDestroyValidationCacheEXT DestroyValidationCacheEXT;
|
|
||||||
PFN_vkMergeValidationCachesEXT MergeValidationCachesEXT;
|
|
||||||
PFN_vkGetValidationCacheDataEXT GetValidationCacheDataEXT;
|
|
||||||
|
|
||||||
// ---- VK_NV_shading_rate_image extension commands
|
|
||||||
PFN_vkCmdBindShadingRateImageNV CmdBindShadingRateImageNV;
|
|
||||||
PFN_vkCmdSetViewportShadingRatePaletteNV CmdSetViewportShadingRatePaletteNV;
|
|
||||||
PFN_vkCmdSetCoarseSampleOrderNV CmdSetCoarseSampleOrderNV;
|
|
||||||
|
|
||||||
// ---- VK_NV_ray_tracing extension commands
|
|
||||||
PFN_vkCreateAccelerationStructureNV CreateAccelerationStructureNV;
|
|
||||||
PFN_vkDestroyAccelerationStructureNV DestroyAccelerationStructureNV;
|
|
||||||
PFN_vkGetAccelerationStructureMemoryRequirementsNV GetAccelerationStructureMemoryRequirementsNV;
|
|
||||||
PFN_vkBindAccelerationStructureMemoryNV BindAccelerationStructureMemoryNV;
|
|
||||||
PFN_vkCmdBuildAccelerationStructureNV CmdBuildAccelerationStructureNV;
|
|
||||||
PFN_vkCmdCopyAccelerationStructureNV CmdCopyAccelerationStructureNV;
|
|
||||||
PFN_vkCmdTraceRaysNV CmdTraceRaysNV;
|
|
||||||
PFN_vkCreateRayTracingPipelinesNV CreateRayTracingPipelinesNV;
|
|
||||||
PFN_vkGetRayTracingShaderGroupHandlesKHR GetRayTracingShaderGroupHandlesKHR;
|
|
||||||
PFN_vkGetRayTracingShaderGroupHandlesNV GetRayTracingShaderGroupHandlesNV;
|
|
||||||
PFN_vkGetAccelerationStructureHandleNV GetAccelerationStructureHandleNV;
|
|
||||||
PFN_vkCmdWriteAccelerationStructuresPropertiesNV CmdWriteAccelerationStructuresPropertiesNV;
|
|
||||||
PFN_vkCompileDeferredNV CompileDeferredNV;
|
|
||||||
|
|
||||||
// ---- VK_EXT_external_memory_host extension commands
|
|
||||||
PFN_vkGetMemoryHostPointerPropertiesEXT GetMemoryHostPointerPropertiesEXT;
|
|
||||||
|
|
||||||
// ---- VK_AMD_buffer_marker extension commands
|
|
||||||
PFN_vkCmdWriteBufferMarkerAMD CmdWriteBufferMarkerAMD;
|
|
||||||
|
|
||||||
// ---- VK_EXT_calibrated_timestamps extension commands
|
|
||||||
PFN_vkGetCalibratedTimestampsEXT GetCalibratedTimestampsEXT;
|
|
||||||
|
|
||||||
// ---- VK_NV_mesh_shader extension commands
|
|
||||||
PFN_vkCmdDrawMeshTasksNV CmdDrawMeshTasksNV;
|
|
||||||
PFN_vkCmdDrawMeshTasksIndirectNV CmdDrawMeshTasksIndirectNV;
|
|
||||||
PFN_vkCmdDrawMeshTasksIndirectCountNV CmdDrawMeshTasksIndirectCountNV;
|
|
||||||
|
|
||||||
// ---- VK_NV_scissor_exclusive extension commands
|
|
||||||
PFN_vkCmdSetExclusiveScissorNV CmdSetExclusiveScissorNV;
|
|
||||||
|
|
||||||
// ---- VK_NV_device_diagnostic_checkpoints extension commands
|
|
||||||
PFN_vkCmdSetCheckpointNV CmdSetCheckpointNV;
|
|
||||||
PFN_vkGetQueueCheckpointDataNV GetQueueCheckpointDataNV;
|
|
||||||
|
|
||||||
// ---- VK_INTEL_performance_query extension commands
|
|
||||||
PFN_vkInitializePerformanceApiINTEL InitializePerformanceApiINTEL;
|
|
||||||
PFN_vkUninitializePerformanceApiINTEL UninitializePerformanceApiINTEL;
|
|
||||||
PFN_vkCmdSetPerformanceMarkerINTEL CmdSetPerformanceMarkerINTEL;
|
|
||||||
PFN_vkCmdSetPerformanceStreamMarkerINTEL CmdSetPerformanceStreamMarkerINTEL;
|
|
||||||
PFN_vkCmdSetPerformanceOverrideINTEL CmdSetPerformanceOverrideINTEL;
|
|
||||||
PFN_vkAcquirePerformanceConfigurationINTEL AcquirePerformanceConfigurationINTEL;
|
|
||||||
PFN_vkReleasePerformanceConfigurationINTEL ReleasePerformanceConfigurationINTEL;
|
|
||||||
PFN_vkQueueSetPerformanceConfigurationINTEL QueueSetPerformanceConfigurationINTEL;
|
|
||||||
PFN_vkGetPerformanceParameterINTEL GetPerformanceParameterINTEL;
|
|
||||||
|
|
||||||
// ---- VK_AMD_display_native_hdr extension commands
|
|
||||||
PFN_vkSetLocalDimmingAMD SetLocalDimmingAMD;
|
|
||||||
|
|
||||||
// ---- VK_EXT_buffer_device_address extension commands
|
|
||||||
PFN_vkGetBufferDeviceAddressEXT GetBufferDeviceAddressEXT;
|
|
||||||
|
|
||||||
// ---- VK_EXT_full_screen_exclusive extension commands
|
|
||||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
PFN_vkAcquireFullScreenExclusiveModeEXT AcquireFullScreenExclusiveModeEXT;
|
|
||||||
#endif // VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
PFN_vkReleaseFullScreenExclusiveModeEXT ReleaseFullScreenExclusiveModeEXT;
|
|
||||||
#endif // VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
PFN_vkGetDeviceGroupSurfacePresentModes2EXT GetDeviceGroupSurfacePresentModes2EXT;
|
|
||||||
#endif // VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
|
|
||||||
// ---- VK_EXT_line_rasterization extension commands
|
|
||||||
PFN_vkCmdSetLineStippleEXT CmdSetLineStippleEXT;
|
|
||||||
|
|
||||||
// ---- VK_EXT_host_query_reset extension commands
|
|
||||||
PFN_vkResetQueryPoolEXT ResetQueryPoolEXT;
|
|
||||||
|
|
||||||
// ---- VK_EXT_extended_dynamic_state extension commands
|
|
||||||
PFN_vkCmdSetCullModeEXT CmdSetCullModeEXT;
|
|
||||||
PFN_vkCmdSetFrontFaceEXT CmdSetFrontFaceEXT;
|
|
||||||
PFN_vkCmdSetPrimitiveTopologyEXT CmdSetPrimitiveTopologyEXT;
|
|
||||||
PFN_vkCmdSetViewportWithCountEXT CmdSetViewportWithCountEXT;
|
|
||||||
PFN_vkCmdSetScissorWithCountEXT CmdSetScissorWithCountEXT;
|
|
||||||
PFN_vkCmdBindVertexBuffers2EXT CmdBindVertexBuffers2EXT;
|
|
||||||
PFN_vkCmdSetDepthTestEnableEXT CmdSetDepthTestEnableEXT;
|
|
||||||
PFN_vkCmdSetDepthWriteEnableEXT CmdSetDepthWriteEnableEXT;
|
|
||||||
PFN_vkCmdSetDepthCompareOpEXT CmdSetDepthCompareOpEXT;
|
|
||||||
PFN_vkCmdSetDepthBoundsTestEnableEXT CmdSetDepthBoundsTestEnableEXT;
|
|
||||||
PFN_vkCmdSetStencilTestEnableEXT CmdSetStencilTestEnableEXT;
|
|
||||||
PFN_vkCmdSetStencilOpEXT CmdSetStencilOpEXT;
|
|
||||||
|
|
||||||
// ---- VK_NV_device_generated_commands extension commands
|
|
||||||
PFN_vkGetGeneratedCommandsMemoryRequirementsNV GetGeneratedCommandsMemoryRequirementsNV;
|
|
||||||
PFN_vkCmdPreprocessGeneratedCommandsNV CmdPreprocessGeneratedCommandsNV;
|
|
||||||
PFN_vkCmdExecuteGeneratedCommandsNV CmdExecuteGeneratedCommandsNV;
|
|
||||||
PFN_vkCmdBindPipelineShaderGroupNV CmdBindPipelineShaderGroupNV;
|
|
||||||
PFN_vkCreateIndirectCommandsLayoutNV CreateIndirectCommandsLayoutNV;
|
|
||||||
PFN_vkDestroyIndirectCommandsLayoutNV DestroyIndirectCommandsLayoutNV;
|
|
||||||
|
|
||||||
// ---- VK_EXT_private_data extension commands
|
|
||||||
PFN_vkCreatePrivateDataSlotEXT CreatePrivateDataSlotEXT;
|
|
||||||
PFN_vkDestroyPrivateDataSlotEXT DestroyPrivateDataSlotEXT;
|
|
||||||
PFN_vkSetPrivateDataEXT SetPrivateDataEXT;
|
|
||||||
PFN_vkGetPrivateDataEXT GetPrivateDataEXT;
|
|
||||||
|
|
||||||
// ---- VK_NV_fragment_shading_rate_enums extension commands
|
|
||||||
PFN_vkCmdSetFragmentShadingRateEnumNV CmdSetFragmentShadingRateEnumNV;
|
|
||||||
|
|
||||||
// ---- VK_KHR_acceleration_structure extension commands
|
|
||||||
PFN_vkCreateAccelerationStructureKHR CreateAccelerationStructureKHR;
|
|
||||||
PFN_vkDestroyAccelerationStructureKHR DestroyAccelerationStructureKHR;
|
|
||||||
PFN_vkCmdBuildAccelerationStructuresKHR CmdBuildAccelerationStructuresKHR;
|
|
||||||
PFN_vkCmdBuildAccelerationStructuresIndirectKHR CmdBuildAccelerationStructuresIndirectKHR;
|
|
||||||
PFN_vkBuildAccelerationStructuresKHR BuildAccelerationStructuresKHR;
|
|
||||||
PFN_vkCopyAccelerationStructureKHR CopyAccelerationStructureKHR;
|
|
||||||
PFN_vkCopyAccelerationStructureToMemoryKHR CopyAccelerationStructureToMemoryKHR;
|
|
||||||
PFN_vkCopyMemoryToAccelerationStructureKHR CopyMemoryToAccelerationStructureKHR;
|
|
||||||
PFN_vkWriteAccelerationStructuresPropertiesKHR WriteAccelerationStructuresPropertiesKHR;
|
|
||||||
PFN_vkCmdCopyAccelerationStructureKHR CmdCopyAccelerationStructureKHR;
|
|
||||||
PFN_vkCmdCopyAccelerationStructureToMemoryKHR CmdCopyAccelerationStructureToMemoryKHR;
|
|
||||||
PFN_vkCmdCopyMemoryToAccelerationStructureKHR CmdCopyMemoryToAccelerationStructureKHR;
|
|
||||||
PFN_vkGetAccelerationStructureDeviceAddressKHR GetAccelerationStructureDeviceAddressKHR;
|
|
||||||
PFN_vkCmdWriteAccelerationStructuresPropertiesKHR CmdWriteAccelerationStructuresPropertiesKHR;
|
|
||||||
PFN_vkGetDeviceAccelerationStructureCompatibilityKHR GetDeviceAccelerationStructureCompatibilityKHR;
|
|
||||||
PFN_vkGetAccelerationStructureBuildSizesKHR GetAccelerationStructureBuildSizesKHR;
|
|
||||||
|
|
||||||
// ---- VK_KHR_ray_tracing_pipeline extension commands
|
|
||||||
PFN_vkCmdTraceRaysKHR CmdTraceRaysKHR;
|
|
||||||
PFN_vkCreateRayTracingPipelinesKHR CreateRayTracingPipelinesKHR;
|
|
||||||
PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR GetRayTracingCaptureReplayShaderGroupHandlesKHR;
|
|
||||||
PFN_vkCmdTraceRaysIndirectKHR CmdTraceRaysIndirectKHR;
|
|
||||||
PFN_vkGetRayTracingShaderGroupStackSizeKHR GetRayTracingShaderGroupStackSizeKHR;
|
|
||||||
PFN_vkCmdSetRayTracingPipelineStackSizeKHR CmdSetRayTracingPipelineStackSizeKHR;
|
|
||||||
} VkLayerDispatchTable;
|
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,462 +0,0 @@
|
||||||
// *** THIS FILE IS GENERATED - DO NOT EDIT ***
|
|
||||||
// See loader_extension_generator.py for modifications
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Copyright (c) 2015-2017 The Khronos Group Inc.
|
|
||||||
* Copyright (c) 2015-2017 Valve Corporation
|
|
||||||
* Copyright (c) 2015-2017 LunarG, 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.
|
|
||||||
*
|
|
||||||
* Author: Mark Lobodzinski <mark@lunarg.com>
|
|
||||||
* Author: Mark Young <marky@lunarg.com>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
// Structures defined externally, but used here
|
|
||||||
struct loader_instance;
|
|
||||||
struct loader_device;
|
|
||||||
struct loader_icd_term;
|
|
||||||
struct loader_dev_dispatch_table;
|
|
||||||
|
|
||||||
// Device extension error function
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL vkDevExtError(VkDevice dev);
|
|
||||||
|
|
||||||
// Extension interception for vkGetInstanceProcAddr function, so we can return
|
|
||||||
// the appropriate information for any instance extensions we know about.
|
|
||||||
bool extension_instance_gpa(struct loader_instance *ptr_instance, const char *name, void **addr);
|
|
||||||
|
|
||||||
// Extension interception for vkCreateInstance function, so we can properly
|
|
||||||
// detect and enable any instance extension information for extensions we know
|
|
||||||
// about.
|
|
||||||
void extensions_create_instance(struct loader_instance *ptr_instance, const VkInstanceCreateInfo *pCreateInfo);
|
|
||||||
|
|
||||||
// Extension interception for vkGetDeviceProcAddr function, so we can return
|
|
||||||
// an appropriate terminator if this is one of those few device commands requiring
|
|
||||||
// a terminator.
|
|
||||||
PFN_vkVoidFunction get_extension_device_proc_terminator(struct loader_device *dev, const char *pName);
|
|
||||||
|
|
||||||
// Dispatch table properly filled in with appropriate terminators for the
|
|
||||||
// supported extensions.
|
|
||||||
extern const VkLayerInstanceDispatchTable instance_disp;
|
|
||||||
|
|
||||||
// Array of extension strings for instance extensions we support.
|
|
||||||
extern const char *const LOADER_INSTANCE_EXTENSIONS[];
|
|
||||||
|
|
||||||
VKAPI_ATTR bool VKAPI_CALL loader_icd_init_entries(struct loader_icd_term *icd_term, VkInstance inst,
|
|
||||||
const PFN_vkGetInstanceProcAddr fp_gipa);
|
|
||||||
|
|
||||||
// Init Device function pointer dispatch table with core commands
|
|
||||||
VKAPI_ATTR void VKAPI_CALL loader_init_device_dispatch_table(struct loader_dev_dispatch_table *dev_table, PFN_vkGetDeviceProcAddr gpa,
|
|
||||||
VkDevice dev);
|
|
||||||
|
|
||||||
// Init Device function pointer dispatch table with extension commands
|
|
||||||
VKAPI_ATTR void VKAPI_CALL loader_init_device_extension_dispatch_table(struct loader_dev_dispatch_table *dev_table,
|
|
||||||
PFN_vkGetInstanceProcAddr gipa,
|
|
||||||
PFN_vkGetDeviceProcAddr gdpa,
|
|
||||||
VkInstance inst,
|
|
||||||
VkDevice dev);
|
|
||||||
|
|
||||||
// Init Instance function pointer dispatch table with core commands
|
|
||||||
VKAPI_ATTR void VKAPI_CALL loader_init_instance_core_dispatch_table(VkLayerInstanceDispatchTable *table, PFN_vkGetInstanceProcAddr gpa,
|
|
||||||
VkInstance inst);
|
|
||||||
|
|
||||||
// Init Instance function pointer dispatch table with core commands
|
|
||||||
VKAPI_ATTR void VKAPI_CALL loader_init_instance_extension_dispatch_table(VkLayerInstanceDispatchTable *table, PFN_vkGetInstanceProcAddr gpa,
|
|
||||||
VkInstance inst);
|
|
||||||
|
|
||||||
// Device command lookup function
|
|
||||||
VKAPI_ATTR void* VKAPI_CALL loader_lookup_device_dispatch_table(const VkLayerDispatchTable *table, const char *name);
|
|
||||||
|
|
||||||
// Instance command lookup function
|
|
||||||
VKAPI_ATTR void* VKAPI_CALL loader_lookup_instance_dispatch_table(const VkLayerInstanceDispatchTable *table, const char *name,
|
|
||||||
bool *found_name);
|
|
||||||
|
|
||||||
VKAPI_ATTR bool VKAPI_CALL loader_icd_init_entries(struct loader_icd_term *icd_term, VkInstance inst,
|
|
||||||
const PFN_vkGetInstanceProcAddr fp_gipa);
|
|
||||||
|
|
||||||
// Loader core instance terminators
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateInstance(
|
|
||||||
const VkInstanceCreateInfo* pCreateInfo,
|
|
||||||
const VkAllocationCallbacks* pAllocator,
|
|
||||||
VkInstance* pInstance);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL terminator_DestroyInstance(
|
|
||||||
VkInstance instance,
|
|
||||||
const VkAllocationCallbacks* pAllocator);
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_EnumeratePhysicalDevices(
|
|
||||||
VkInstance instance,
|
|
||||||
uint32_t* pPhysicalDeviceCount,
|
|
||||||
VkPhysicalDevice* pPhysicalDevices);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceFeatures(
|
|
||||||
VkPhysicalDevice physicalDevice,
|
|
||||||
VkPhysicalDeviceFeatures* pFeatures);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceFormatProperties(
|
|
||||||
VkPhysicalDevice physicalDevice,
|
|
||||||
VkFormat format,
|
|
||||||
VkFormatProperties* pFormatProperties);
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceImageFormatProperties(
|
|
||||||
VkPhysicalDevice physicalDevice,
|
|
||||||
VkFormat format,
|
|
||||||
VkImageType type,
|
|
||||||
VkImageTiling tiling,
|
|
||||||
VkImageUsageFlags usage,
|
|
||||||
VkImageCreateFlags flags,
|
|
||||||
VkImageFormatProperties* pImageFormatProperties);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceProperties(
|
|
||||||
VkPhysicalDevice physicalDevice,
|
|
||||||
VkPhysicalDeviceProperties* pProperties);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceQueueFamilyProperties(
|
|
||||||
VkPhysicalDevice physicalDevice,
|
|
||||||
uint32_t* pQueueFamilyPropertyCount,
|
|
||||||
VkQueueFamilyProperties* pQueueFamilyProperties);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceMemoryProperties(
|
|
||||||
VkPhysicalDevice physicalDevice,
|
|
||||||
VkPhysicalDeviceMemoryProperties* pMemoryProperties);
|
|
||||||
VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL terminator_GetInstanceProcAddr(
|
|
||||||
VkInstance instance,
|
|
||||||
const char* pName);
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateDevice(
|
|
||||||
VkPhysicalDevice physicalDevice,
|
|
||||||
const VkDeviceCreateInfo* pCreateInfo,
|
|
||||||
const VkAllocationCallbacks* pAllocator,
|
|
||||||
VkDevice* pDevice);
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_EnumerateInstanceExtensionProperties(
|
|
||||||
const VkEnumerateInstanceExtensionPropertiesChain* chain,
|
|
||||||
const char* pLayerName,
|
|
||||||
uint32_t* pPropertyCount,
|
|
||||||
VkExtensionProperties* pProperties);
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_EnumerateDeviceExtensionProperties(
|
|
||||||
VkPhysicalDevice physicalDevice,
|
|
||||||
const char* pLayerName,
|
|
||||||
uint32_t* pPropertyCount,
|
|
||||||
VkExtensionProperties* pProperties);
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_EnumerateInstanceLayerProperties(
|
|
||||||
const VkEnumerateInstanceLayerPropertiesChain* chain,
|
|
||||||
uint32_t* pPropertyCount,
|
|
||||||
VkLayerProperties* pProperties);
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_EnumerateDeviceLayerProperties(
|
|
||||||
VkPhysicalDevice physicalDevice,
|
|
||||||
uint32_t* pPropertyCount,
|
|
||||||
VkLayerProperties* pProperties);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceSparseImageFormatProperties(
|
|
||||||
VkPhysicalDevice physicalDevice,
|
|
||||||
VkFormat format,
|
|
||||||
VkImageType type,
|
|
||||||
VkSampleCountFlagBits samples,
|
|
||||||
VkImageUsageFlags usage,
|
|
||||||
VkImageTiling tiling,
|
|
||||||
uint32_t* pPropertyCount,
|
|
||||||
VkSparseImageFormatProperties* pProperties);
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_EnumerateInstanceVersion(
|
|
||||||
const VkEnumerateInstanceVersionChain* chain,
|
|
||||||
uint32_t* pApiVersion);
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_EnumeratePhysicalDeviceGroups(
|
|
||||||
VkInstance instance,
|
|
||||||
uint32_t* pPhysicalDeviceGroupCount,
|
|
||||||
VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceFeatures2(
|
|
||||||
VkPhysicalDevice physicalDevice,
|
|
||||||
VkPhysicalDeviceFeatures2* pFeatures);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceProperties2(
|
|
||||||
VkPhysicalDevice physicalDevice,
|
|
||||||
VkPhysicalDeviceProperties2* pProperties);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceFormatProperties2(
|
|
||||||
VkPhysicalDevice physicalDevice,
|
|
||||||
VkFormat format,
|
|
||||||
VkFormatProperties2* pFormatProperties);
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceImageFormatProperties2(
|
|
||||||
VkPhysicalDevice physicalDevice,
|
|
||||||
const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
|
|
||||||
VkImageFormatProperties2* pImageFormatProperties);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceQueueFamilyProperties2(
|
|
||||||
VkPhysicalDevice physicalDevice,
|
|
||||||
uint32_t* pQueueFamilyPropertyCount,
|
|
||||||
VkQueueFamilyProperties2* pQueueFamilyProperties);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceMemoryProperties2(
|
|
||||||
VkPhysicalDevice physicalDevice,
|
|
||||||
VkPhysicalDeviceMemoryProperties2* pMemoryProperties);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceSparseImageFormatProperties2(
|
|
||||||
VkPhysicalDevice physicalDevice,
|
|
||||||
const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
|
|
||||||
uint32_t* pPropertyCount,
|
|
||||||
VkSparseImageFormatProperties2* pProperties);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceExternalBufferProperties(
|
|
||||||
VkPhysicalDevice physicalDevice,
|
|
||||||
const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
|
|
||||||
VkExternalBufferProperties* pExternalBufferProperties);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceExternalFenceProperties(
|
|
||||||
VkPhysicalDevice physicalDevice,
|
|
||||||
const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
|
|
||||||
VkExternalFenceProperties* pExternalFenceProperties);
|
|
||||||
VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceExternalSemaphoreProperties(
|
|
||||||
VkPhysicalDevice physicalDevice,
|
|
||||||
const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
|
|
||||||
VkExternalSemaphoreProperties* pExternalSemaphoreProperties);
|
|
||||||
|
|
||||||
// ICD function pointer dispatch table
|
|
||||||
struct loader_icd_term_dispatch {
|
|
||||||
|
|
||||||
// ---- Core 1_0 commands
|
|
||||||
PFN_vkCreateInstance CreateInstance;
|
|
||||||
PFN_vkDestroyInstance DestroyInstance;
|
|
||||||
PFN_vkEnumeratePhysicalDevices EnumeratePhysicalDevices;
|
|
||||||
PFN_vkGetPhysicalDeviceFeatures GetPhysicalDeviceFeatures;
|
|
||||||
PFN_vkGetPhysicalDeviceFormatProperties GetPhysicalDeviceFormatProperties;
|
|
||||||
PFN_vkGetPhysicalDeviceImageFormatProperties GetPhysicalDeviceImageFormatProperties;
|
|
||||||
PFN_vkGetPhysicalDeviceProperties GetPhysicalDeviceProperties;
|
|
||||||
PFN_vkGetPhysicalDeviceQueueFamilyProperties GetPhysicalDeviceQueueFamilyProperties;
|
|
||||||
PFN_vkGetPhysicalDeviceMemoryProperties GetPhysicalDeviceMemoryProperties;
|
|
||||||
PFN_vkGetDeviceProcAddr GetDeviceProcAddr;
|
|
||||||
PFN_vkCreateDevice CreateDevice;
|
|
||||||
PFN_vkEnumerateInstanceExtensionProperties EnumerateInstanceExtensionProperties;
|
|
||||||
PFN_vkEnumerateDeviceExtensionProperties EnumerateDeviceExtensionProperties;
|
|
||||||
PFN_vkEnumerateInstanceLayerProperties EnumerateInstanceLayerProperties;
|
|
||||||
PFN_vkGetPhysicalDeviceSparseImageFormatProperties GetPhysicalDeviceSparseImageFormatProperties;
|
|
||||||
|
|
||||||
// ---- Core 1_1 commands
|
|
||||||
PFN_vkEnumerateInstanceVersion EnumerateInstanceVersion;
|
|
||||||
PFN_vkEnumeratePhysicalDeviceGroups EnumeratePhysicalDeviceGroups;
|
|
||||||
PFN_vkGetPhysicalDeviceFeatures2 GetPhysicalDeviceFeatures2;
|
|
||||||
PFN_vkGetPhysicalDeviceProperties2 GetPhysicalDeviceProperties2;
|
|
||||||
PFN_vkGetPhysicalDeviceFormatProperties2 GetPhysicalDeviceFormatProperties2;
|
|
||||||
PFN_vkGetPhysicalDeviceImageFormatProperties2 GetPhysicalDeviceImageFormatProperties2;
|
|
||||||
PFN_vkGetPhysicalDeviceQueueFamilyProperties2 GetPhysicalDeviceQueueFamilyProperties2;
|
|
||||||
PFN_vkGetPhysicalDeviceMemoryProperties2 GetPhysicalDeviceMemoryProperties2;
|
|
||||||
PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 GetPhysicalDeviceSparseImageFormatProperties2;
|
|
||||||
PFN_vkGetPhysicalDeviceExternalBufferProperties GetPhysicalDeviceExternalBufferProperties;
|
|
||||||
PFN_vkGetPhysicalDeviceExternalFenceProperties GetPhysicalDeviceExternalFenceProperties;
|
|
||||||
PFN_vkGetPhysicalDeviceExternalSemaphoreProperties GetPhysicalDeviceExternalSemaphoreProperties;
|
|
||||||
|
|
||||||
// ---- VK_KHR_surface extension commands
|
|
||||||
PFN_vkDestroySurfaceKHR DestroySurfaceKHR;
|
|
||||||
PFN_vkGetPhysicalDeviceSurfaceSupportKHR GetPhysicalDeviceSurfaceSupportKHR;
|
|
||||||
PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR GetPhysicalDeviceSurfaceCapabilitiesKHR;
|
|
||||||
PFN_vkGetPhysicalDeviceSurfaceFormatsKHR GetPhysicalDeviceSurfaceFormatsKHR;
|
|
||||||
PFN_vkGetPhysicalDeviceSurfacePresentModesKHR GetPhysicalDeviceSurfacePresentModesKHR;
|
|
||||||
|
|
||||||
// ---- VK_KHR_swapchain extension commands
|
|
||||||
PFN_vkCreateSwapchainKHR CreateSwapchainKHR;
|
|
||||||
PFN_vkGetDeviceGroupSurfacePresentModesKHR GetDeviceGroupSurfacePresentModesKHR;
|
|
||||||
PFN_vkGetPhysicalDevicePresentRectanglesKHR GetPhysicalDevicePresentRectanglesKHR;
|
|
||||||
|
|
||||||
// ---- VK_KHR_display extension commands
|
|
||||||
PFN_vkGetPhysicalDeviceDisplayPropertiesKHR GetPhysicalDeviceDisplayPropertiesKHR;
|
|
||||||
PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR GetPhysicalDeviceDisplayPlanePropertiesKHR;
|
|
||||||
PFN_vkGetDisplayPlaneSupportedDisplaysKHR GetDisplayPlaneSupportedDisplaysKHR;
|
|
||||||
PFN_vkGetDisplayModePropertiesKHR GetDisplayModePropertiesKHR;
|
|
||||||
PFN_vkCreateDisplayModeKHR CreateDisplayModeKHR;
|
|
||||||
PFN_vkGetDisplayPlaneCapabilitiesKHR GetDisplayPlaneCapabilitiesKHR;
|
|
||||||
PFN_vkCreateDisplayPlaneSurfaceKHR CreateDisplayPlaneSurfaceKHR;
|
|
||||||
|
|
||||||
// ---- VK_KHR_display_swapchain extension commands
|
|
||||||
PFN_vkCreateSharedSwapchainsKHR CreateSharedSwapchainsKHR;
|
|
||||||
|
|
||||||
// ---- VK_KHR_xlib_surface extension commands
|
|
||||||
#ifdef VK_USE_PLATFORM_XLIB_KHR
|
|
||||||
PFN_vkCreateXlibSurfaceKHR CreateXlibSurfaceKHR;
|
|
||||||
#endif // VK_USE_PLATFORM_XLIB_KHR
|
|
||||||
#ifdef VK_USE_PLATFORM_XLIB_KHR
|
|
||||||
PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR GetPhysicalDeviceXlibPresentationSupportKHR;
|
|
||||||
#endif // VK_USE_PLATFORM_XLIB_KHR
|
|
||||||
|
|
||||||
// ---- VK_KHR_xcb_surface extension commands
|
|
||||||
#ifdef VK_USE_PLATFORM_XCB_KHR
|
|
||||||
PFN_vkCreateXcbSurfaceKHR CreateXcbSurfaceKHR;
|
|
||||||
#endif // VK_USE_PLATFORM_XCB_KHR
|
|
||||||
#ifdef VK_USE_PLATFORM_XCB_KHR
|
|
||||||
PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR GetPhysicalDeviceXcbPresentationSupportKHR;
|
|
||||||
#endif // VK_USE_PLATFORM_XCB_KHR
|
|
||||||
|
|
||||||
// ---- VK_KHR_wayland_surface extension commands
|
|
||||||
#ifdef VK_USE_PLATFORM_WAYLAND_KHR
|
|
||||||
PFN_vkCreateWaylandSurfaceKHR CreateWaylandSurfaceKHR;
|
|
||||||
#endif // VK_USE_PLATFORM_WAYLAND_KHR
|
|
||||||
#ifdef VK_USE_PLATFORM_WAYLAND_KHR
|
|
||||||
PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR GetPhysicalDeviceWaylandPresentationSupportKHR;
|
|
||||||
#endif // VK_USE_PLATFORM_WAYLAND_KHR
|
|
||||||
|
|
||||||
// ---- VK_KHR_android_surface extension commands
|
|
||||||
#ifdef VK_USE_PLATFORM_ANDROID_KHR
|
|
||||||
PFN_vkCreateAndroidSurfaceKHR CreateAndroidSurfaceKHR;
|
|
||||||
#endif // VK_USE_PLATFORM_ANDROID_KHR
|
|
||||||
|
|
||||||
// ---- VK_KHR_win32_surface extension commands
|
|
||||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
PFN_vkCreateWin32SurfaceKHR CreateWin32SurfaceKHR;
|
|
||||||
#endif // VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR GetPhysicalDeviceWin32PresentationSupportKHR;
|
|
||||||
#endif // VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
|
|
||||||
// ---- VK_KHR_get_physical_device_properties2 extension commands
|
|
||||||
PFN_vkGetPhysicalDeviceFeatures2KHR GetPhysicalDeviceFeatures2KHR;
|
|
||||||
PFN_vkGetPhysicalDeviceProperties2KHR GetPhysicalDeviceProperties2KHR;
|
|
||||||
PFN_vkGetPhysicalDeviceFormatProperties2KHR GetPhysicalDeviceFormatProperties2KHR;
|
|
||||||
PFN_vkGetPhysicalDeviceImageFormatProperties2KHR GetPhysicalDeviceImageFormatProperties2KHR;
|
|
||||||
PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR GetPhysicalDeviceQueueFamilyProperties2KHR;
|
|
||||||
PFN_vkGetPhysicalDeviceMemoryProperties2KHR GetPhysicalDeviceMemoryProperties2KHR;
|
|
||||||
PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR GetPhysicalDeviceSparseImageFormatProperties2KHR;
|
|
||||||
|
|
||||||
// ---- VK_KHR_device_group_creation extension commands
|
|
||||||
PFN_vkEnumeratePhysicalDeviceGroupsKHR EnumeratePhysicalDeviceGroupsKHR;
|
|
||||||
|
|
||||||
// ---- VK_KHR_external_memory_capabilities extension commands
|
|
||||||
PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR GetPhysicalDeviceExternalBufferPropertiesKHR;
|
|
||||||
|
|
||||||
// ---- VK_KHR_external_semaphore_capabilities extension commands
|
|
||||||
PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR GetPhysicalDeviceExternalSemaphorePropertiesKHR;
|
|
||||||
|
|
||||||
// ---- VK_KHR_external_fence_capabilities extension commands
|
|
||||||
PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR GetPhysicalDeviceExternalFencePropertiesKHR;
|
|
||||||
|
|
||||||
// ---- VK_KHR_performance_query extension commands
|
|
||||||
PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR;
|
|
||||||
PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR;
|
|
||||||
|
|
||||||
// ---- VK_KHR_get_surface_capabilities2 extension commands
|
|
||||||
PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR GetPhysicalDeviceSurfaceCapabilities2KHR;
|
|
||||||
PFN_vkGetPhysicalDeviceSurfaceFormats2KHR GetPhysicalDeviceSurfaceFormats2KHR;
|
|
||||||
|
|
||||||
// ---- VK_KHR_get_display_properties2 extension commands
|
|
||||||
PFN_vkGetPhysicalDeviceDisplayProperties2KHR GetPhysicalDeviceDisplayProperties2KHR;
|
|
||||||
PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR GetPhysicalDeviceDisplayPlaneProperties2KHR;
|
|
||||||
PFN_vkGetDisplayModeProperties2KHR GetDisplayModeProperties2KHR;
|
|
||||||
PFN_vkGetDisplayPlaneCapabilities2KHR GetDisplayPlaneCapabilities2KHR;
|
|
||||||
|
|
||||||
// ---- VK_KHR_fragment_shading_rate extension commands
|
|
||||||
PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR GetPhysicalDeviceFragmentShadingRatesKHR;
|
|
||||||
|
|
||||||
// ---- VK_EXT_debug_report extension commands
|
|
||||||
PFN_vkCreateDebugReportCallbackEXT CreateDebugReportCallbackEXT;
|
|
||||||
PFN_vkDestroyDebugReportCallbackEXT DestroyDebugReportCallbackEXT;
|
|
||||||
PFN_vkDebugReportMessageEXT DebugReportMessageEXT;
|
|
||||||
|
|
||||||
// ---- VK_EXT_debug_marker extension commands
|
|
||||||
PFN_vkDebugMarkerSetObjectTagEXT DebugMarkerSetObjectTagEXT;
|
|
||||||
PFN_vkDebugMarkerSetObjectNameEXT DebugMarkerSetObjectNameEXT;
|
|
||||||
|
|
||||||
// ---- VK_GGP_stream_descriptor_surface extension commands
|
|
||||||
#ifdef VK_USE_PLATFORM_GGP
|
|
||||||
PFN_vkCreateStreamDescriptorSurfaceGGP CreateStreamDescriptorSurfaceGGP;
|
|
||||||
#endif // VK_USE_PLATFORM_GGP
|
|
||||||
|
|
||||||
// ---- VK_NV_external_memory_capabilities extension commands
|
|
||||||
PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV GetPhysicalDeviceExternalImageFormatPropertiesNV;
|
|
||||||
|
|
||||||
// ---- VK_NN_vi_surface extension commands
|
|
||||||
#ifdef VK_USE_PLATFORM_VI_NN
|
|
||||||
PFN_vkCreateViSurfaceNN CreateViSurfaceNN;
|
|
||||||
#endif // VK_USE_PLATFORM_VI_NN
|
|
||||||
|
|
||||||
// ---- VK_EXT_direct_mode_display extension commands
|
|
||||||
PFN_vkReleaseDisplayEXT ReleaseDisplayEXT;
|
|
||||||
|
|
||||||
// ---- VK_EXT_acquire_xlib_display extension commands
|
|
||||||
#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
|
|
||||||
PFN_vkAcquireXlibDisplayEXT AcquireXlibDisplayEXT;
|
|
||||||
#endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT
|
|
||||||
#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
|
|
||||||
PFN_vkGetRandROutputDisplayEXT GetRandROutputDisplayEXT;
|
|
||||||
#endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT
|
|
||||||
|
|
||||||
// ---- VK_EXT_display_surface_counter extension commands
|
|
||||||
PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT GetPhysicalDeviceSurfaceCapabilities2EXT;
|
|
||||||
|
|
||||||
// ---- VK_MVK_ios_surface extension commands
|
|
||||||
#ifdef VK_USE_PLATFORM_IOS_MVK
|
|
||||||
PFN_vkCreateIOSSurfaceMVK CreateIOSSurfaceMVK;
|
|
||||||
#endif // VK_USE_PLATFORM_IOS_MVK
|
|
||||||
|
|
||||||
// ---- VK_MVK_macos_surface extension commands
|
|
||||||
#ifdef VK_USE_PLATFORM_MACOS_MVK
|
|
||||||
PFN_vkCreateMacOSSurfaceMVK CreateMacOSSurfaceMVK;
|
|
||||||
#endif // VK_USE_PLATFORM_MACOS_MVK
|
|
||||||
|
|
||||||
// ---- VK_EXT_debug_utils extension commands
|
|
||||||
PFN_vkSetDebugUtilsObjectNameEXT SetDebugUtilsObjectNameEXT;
|
|
||||||
PFN_vkSetDebugUtilsObjectTagEXT SetDebugUtilsObjectTagEXT;
|
|
||||||
PFN_vkQueueBeginDebugUtilsLabelEXT QueueBeginDebugUtilsLabelEXT;
|
|
||||||
PFN_vkQueueEndDebugUtilsLabelEXT QueueEndDebugUtilsLabelEXT;
|
|
||||||
PFN_vkQueueInsertDebugUtilsLabelEXT QueueInsertDebugUtilsLabelEXT;
|
|
||||||
PFN_vkCmdBeginDebugUtilsLabelEXT CmdBeginDebugUtilsLabelEXT;
|
|
||||||
PFN_vkCmdEndDebugUtilsLabelEXT CmdEndDebugUtilsLabelEXT;
|
|
||||||
PFN_vkCmdInsertDebugUtilsLabelEXT CmdInsertDebugUtilsLabelEXT;
|
|
||||||
PFN_vkCreateDebugUtilsMessengerEXT CreateDebugUtilsMessengerEXT;
|
|
||||||
PFN_vkDestroyDebugUtilsMessengerEXT DestroyDebugUtilsMessengerEXT;
|
|
||||||
PFN_vkSubmitDebugUtilsMessageEXT SubmitDebugUtilsMessageEXT;
|
|
||||||
|
|
||||||
// ---- VK_EXT_sample_locations extension commands
|
|
||||||
PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT GetPhysicalDeviceMultisamplePropertiesEXT;
|
|
||||||
|
|
||||||
// ---- VK_EXT_calibrated_timestamps extension commands
|
|
||||||
PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT GetPhysicalDeviceCalibrateableTimeDomainsEXT;
|
|
||||||
|
|
||||||
// ---- VK_FUCHSIA_imagepipe_surface extension commands
|
|
||||||
#ifdef VK_USE_PLATFORM_FUCHSIA
|
|
||||||
PFN_vkCreateImagePipeSurfaceFUCHSIA CreateImagePipeSurfaceFUCHSIA;
|
|
||||||
#endif // VK_USE_PLATFORM_FUCHSIA
|
|
||||||
|
|
||||||
// ---- VK_EXT_metal_surface extension commands
|
|
||||||
#ifdef VK_USE_PLATFORM_METAL_EXT
|
|
||||||
PFN_vkCreateMetalSurfaceEXT CreateMetalSurfaceEXT;
|
|
||||||
#endif // VK_USE_PLATFORM_METAL_EXT
|
|
||||||
|
|
||||||
// ---- VK_EXT_tooling_info extension commands
|
|
||||||
PFN_vkGetPhysicalDeviceToolPropertiesEXT GetPhysicalDeviceToolPropertiesEXT;
|
|
||||||
|
|
||||||
// ---- VK_NV_cooperative_matrix extension commands
|
|
||||||
PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV GetPhysicalDeviceCooperativeMatrixPropertiesNV;
|
|
||||||
|
|
||||||
// ---- VK_NV_coverage_reduction_mode extension commands
|
|
||||||
PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV;
|
|
||||||
|
|
||||||
// ---- VK_EXT_full_screen_exclusive extension commands
|
|
||||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT GetPhysicalDeviceSurfacePresentModes2EXT;
|
|
||||||
#endif // VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
PFN_vkGetDeviceGroupSurfacePresentModes2EXT GetDeviceGroupSurfacePresentModes2EXT;
|
|
||||||
#endif // VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
|
|
||||||
// ---- VK_EXT_headless_surface extension commands
|
|
||||||
PFN_vkCreateHeadlessSurfaceEXT CreateHeadlessSurfaceEXT;
|
|
||||||
|
|
||||||
// ---- VK_EXT_directfb_surface extension commands
|
|
||||||
#ifdef VK_USE_PLATFORM_DIRECTFB_EXT
|
|
||||||
PFN_vkCreateDirectFBSurfaceEXT CreateDirectFBSurfaceEXT;
|
|
||||||
#endif // VK_USE_PLATFORM_DIRECTFB_EXT
|
|
||||||
#ifdef VK_USE_PLATFORM_DIRECTFB_EXT
|
|
||||||
PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT GetPhysicalDeviceDirectFBPresentationSupportEXT;
|
|
||||||
#endif // VK_USE_PLATFORM_DIRECTFB_EXT
|
|
||||||
};
|
|
||||||
|
|
||||||
union loader_instance_extension_enables {
|
|
||||||
struct {
|
|
||||||
uint8_t khr_get_physical_device_properties2 : 1;
|
|
||||||
uint8_t khr_device_group_creation : 1;
|
|
||||||
uint8_t khr_external_memory_capabilities : 1;
|
|
||||||
uint8_t khr_external_semaphore_capabilities : 1;
|
|
||||||
uint8_t khr_external_fence_capabilities : 1;
|
|
||||||
uint8_t ext_debug_report : 1;
|
|
||||||
uint8_t nv_external_memory_capabilities : 1;
|
|
||||||
uint8_t nn_vi_surface : 1;
|
|
||||||
uint8_t ext_direct_mode_display : 1;
|
|
||||||
uint8_t ext_acquire_xlib_display : 1;
|
|
||||||
uint8_t ext_display_surface_counter : 1;
|
|
||||||
uint8_t ext_debug_utils : 1;
|
|
||||||
};
|
|
||||||
uint64_t padding[4];
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
|
@ -1,46 +0,0 @@
|
||||||
/*
|
|
||||||
*
|
|
||||||
* Copyright (c) 2016 The Khronos Group Inc.
|
|
||||||
* Copyright (c) 2016 Valve Corporation
|
|
||||||
* Copyright (c) 2016 LunarG, 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.
|
|
||||||
*
|
|
||||||
* Author: Mark Lobodzinski <mark@lunarg.com>
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
// Linked list node for tree of debug callbacks
|
|
||||||
typedef struct VkDebugReportContent {
|
|
||||||
VkDebugReportCallbackEXT msgCallback;
|
|
||||||
PFN_vkDebugReportCallbackEXT pfnMsgCallback;
|
|
||||||
VkFlags msgFlags;
|
|
||||||
} VkDebugReportContent;
|
|
||||||
|
|
||||||
typedef struct VkDebugUtilsMessengerContent {
|
|
||||||
VkDebugUtilsMessengerEXT messenger;
|
|
||||||
VkDebugUtilsMessageSeverityFlagsEXT messageSeverity;
|
|
||||||
VkDebugUtilsMessageTypeFlagsEXT messageType;
|
|
||||||
PFN_vkDebugUtilsMessengerCallbackEXT pfnUserCallback;
|
|
||||||
} VkDebugUtilsMessengerContent;
|
|
||||||
|
|
||||||
typedef struct VkLayerDbgFunctionNode_ {
|
|
||||||
bool is_messenger;
|
|
||||||
union {
|
|
||||||
VkDebugReportContent report;
|
|
||||||
VkDebugUtilsMessengerContent messenger;
|
|
||||||
};
|
|
||||||
void *pUserData;
|
|
||||||
struct VkLayerDbgFunctionNode_ *pNext;
|
|
||||||
} VkLayerDbgFunctionNode;
|
|
|
@ -1,432 +0,0 @@
|
||||||
/*
|
|
||||||
*
|
|
||||||
* Copyright (c) 2015-2018 The Khronos Group Inc.
|
|
||||||
* Copyright (c) 2015-2018 Valve Corporation
|
|
||||||
* Copyright (c) 2015-2018 LunarG, 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.
|
|
||||||
*
|
|
||||||
* Author: Ian Elliot <ian@lunarg.com>
|
|
||||||
* Author: Jon Ashburn <jon@lunarg.com>
|
|
||||||
* Author: Lenny Komow <lenny@lunarg.com>
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#if defined(_WIN32)
|
|
||||||
// WinSock2.h must be included *BEFORE* windows.h
|
|
||||||
#include <winsock2.h>
|
|
||||||
#endif // _WIN32
|
|
||||||
|
|
||||||
#if defined(__Fuchsia__)
|
|
||||||
#include "dlopen_fuchsia.h"
|
|
||||||
#endif // defined(__Fuchsia__)
|
|
||||||
|
|
||||||
#include "../vk_platform.h"
|
|
||||||
#include "../vk_sdk_platform.h"
|
|
||||||
|
|
||||||
#if defined(__linux__) || defined(__APPLE__) || defined(__Fuchsia__)
|
|
||||||
/* Linux-specific common code: */
|
|
||||||
|
|
||||||
// Headers:
|
|
||||||
//#ifndef _GNU_SOURCE
|
|
||||||
//#define _GNU_SOURCE 1
|
|
||||||
//#endif
|
|
||||||
#include <unistd.h>
|
|
||||||
// Note: The following file is for dynamic loading:
|
|
||||||
#include <dlfcn.h>
|
|
||||||
#include <pthread.h>
|
|
||||||
#include <assert.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <stdbool.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <libgen.h>
|
|
||||||
|
|
||||||
// VK Library Filenames, Paths, etc.:
|
|
||||||
#define PATH_SEPARATOR ':'
|
|
||||||
#define DIRECTORY_SYMBOL '/'
|
|
||||||
|
|
||||||
#define VULKAN_DIR "vulkan/"
|
|
||||||
#define VULKAN_ICDCONF_DIR "icd.d"
|
|
||||||
#define VULKAN_ICD_DIR "icd"
|
|
||||||
#define VULKAN_SETTINGSCONF_DIR "settings.d"
|
|
||||||
#define VULKAN_ELAYERCONF_DIR "explicit_layer.d"
|
|
||||||
#define VULKAN_ILAYERCONF_DIR "implicit_layer.d"
|
|
||||||
#define VULKAN_LAYER_DIR "layer"
|
|
||||||
|
|
||||||
#define VK_DRIVERS_INFO_RELATIVE_DIR VULKAN_DIR VULKAN_ICDCONF_DIR
|
|
||||||
#define VK_SETTINGS_INFO_RELATIVE_DIR VULKAN_DIR VULKAN_SETTINGSCONF_DIR
|
|
||||||
#define VK_ELAYERS_INFO_RELATIVE_DIR VULKAN_DIR VULKAN_ELAYERCONF_DIR
|
|
||||||
#define VK_ILAYERS_INFO_RELATIVE_DIR VULKAN_DIR VULKAN_ILAYERCONF_DIR
|
|
||||||
|
|
||||||
#define VK_DRIVERS_INFO_REGISTRY_LOC ""
|
|
||||||
#define VK_SETTINGS_INFO_REGISTRY_LOC ""
|
|
||||||
#define VK_ELAYERS_INFO_REGISTRY_LOC ""
|
|
||||||
#define VK_ILAYERS_INFO_REGISTRY_LOC ""
|
|
||||||
|
|
||||||
#if !defined(DEFAULT_VK_LAYERS_PATH)
|
|
||||||
#define DEFAULT_VK_LAYERS_PATH ""
|
|
||||||
#endif
|
|
||||||
#if !defined(LAYERS_SOURCE_PATH)
|
|
||||||
#define LAYERS_SOURCE_PATH NULL
|
|
||||||
#endif
|
|
||||||
#define LAYERS_PATH_ENV "VK_LAYER_PATH"
|
|
||||||
#define ENABLED_LAYERS_ENV "VK_INSTANCE_LAYERS"
|
|
||||||
|
|
||||||
// C99:
|
|
||||||
#define PRINTF_SIZE_T_SPECIFIER "%zu"
|
|
||||||
|
|
||||||
// File IO
|
|
||||||
static inline bool loader_platform_file_exists(const char *path) {
|
|
||||||
if (access(path, F_OK))
|
|
||||||
return false;
|
|
||||||
else
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline bool loader_platform_is_path_absolute(const char *path) {
|
|
||||||
if (path[0] == '/')
|
|
||||||
return true;
|
|
||||||
else
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline char *loader_platform_dirname(char *path) { return dirname(path); }
|
|
||||||
|
|
||||||
#if defined(__linux__)
|
|
||||||
|
|
||||||
// find application path + name. Path cannot be longer than 1024, returns NULL if it is greater than that.
|
|
||||||
static inline char *loader_platform_executable_path(char *buffer, size_t size) {
|
|
||||||
ssize_t count = readlink("/proc/self/exe", buffer, size);
|
|
||||||
if (count == -1) return NULL;
|
|
||||||
if (count == 0) return NULL;
|
|
||||||
buffer[count] = '\0';
|
|
||||||
return buffer;
|
|
||||||
}
|
|
||||||
#elif defined(__APPLE__) // defined(__linux__)
|
|
||||||
#include <libproc.h>
|
|
||||||
static inline char *loader_platform_executable_path(char *buffer, size_t size) {
|
|
||||||
pid_t pid = getpid();
|
|
||||||
int ret = proc_pidpath(pid, buffer, size);
|
|
||||||
if (ret <= 0) return NULL;
|
|
||||||
buffer[ret] = '\0';
|
|
||||||
return buffer;
|
|
||||||
}
|
|
||||||
#elif defined(__Fuchsia__)
|
|
||||||
static inline char *loader_platform_executable_path(char *buffer, size_t size) { return NULL; }
|
|
||||||
#endif // defined (__APPLE__)
|
|
||||||
|
|
||||||
// Compatability with compilers that don't support __has_feature
|
|
||||||
#ifndef __has_feature
|
|
||||||
#define __has_feature(x) 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if __has_feature(address_sanitizer) || defined(__SANITIZE_ADDRESS__)
|
|
||||||
#define LOADER_ADDRESS_SANITIZER
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Dynamic Loading of libraries:
|
|
||||||
typedef void *loader_platform_dl_handle;
|
|
||||||
// When loading the library, we use RTLD_LAZY so that not all symbols have to be
|
|
||||||
// resolved at this time (which improves performance). Note that if not all symbols
|
|
||||||
// can be resolved, this could cause crashes later. Use the LD_BIND_NOW environment
|
|
||||||
// variable to force all symbols to be resolved here.
|
|
||||||
#define LOADER_DLOPEN_MODE (RTLD_LAZY | RTLD_LOCAL)
|
|
||||||
|
|
||||||
#if defined(__Fuchsia__)
|
|
||||||
static inline loader_platform_dl_handle loader_platform_open_driver(const char *libPath) {
|
|
||||||
return dlopen_fuchsia(libPath, LOADER_DLOPEN_MODE, true);
|
|
||||||
}
|
|
||||||
static inline loader_platform_dl_handle loader_platform_open_library(const char *libPath) {
|
|
||||||
return dlopen_fuchsia(libPath, LOADER_DLOPEN_MODE, false);
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
static inline loader_platform_dl_handle loader_platform_open_library(const char *libPath) {
|
|
||||||
return dlopen(libPath, LOADER_DLOPEN_MODE);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static inline const char *loader_platform_open_library_error(const char *libPath) {
|
|
||||||
#ifdef __Fuchsia__
|
|
||||||
return dlerror_fuchsia();
|
|
||||||
#else
|
|
||||||
return dlerror();
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
static inline void loader_platform_close_library(loader_platform_dl_handle library) { dlclose(library); }
|
|
||||||
static inline void *loader_platform_get_proc_address(loader_platform_dl_handle library, const char *name) {
|
|
||||||
assert(library);
|
|
||||||
assert(name);
|
|
||||||
return dlsym(library, name);
|
|
||||||
}
|
|
||||||
static inline const char *loader_platform_get_proc_address_error(const char *name) { return dlerror(); }
|
|
||||||
|
|
||||||
// Threads:
|
|
||||||
typedef pthread_t loader_platform_thread;
|
|
||||||
#define THREAD_LOCAL_DECL __thread
|
|
||||||
|
|
||||||
// The once init functionality is not used on Linux
|
|
||||||
#define LOADER_PLATFORM_THREAD_ONCE_DECLARATION(var)
|
|
||||||
#define LOADER_PLATFORM_THREAD_ONCE_DEFINITION(var)
|
|
||||||
#define LOADER_PLATFORM_THREAD_ONCE(ctl, func)
|
|
||||||
|
|
||||||
// Thread IDs:
|
|
||||||
typedef pthread_t loader_platform_thread_id;
|
|
||||||
static inline loader_platform_thread_id loader_platform_get_thread_id() { return pthread_self(); }
|
|
||||||
|
|
||||||
// Thread mutex:
|
|
||||||
typedef pthread_mutex_t loader_platform_thread_mutex;
|
|
||||||
static inline void loader_platform_thread_create_mutex(loader_platform_thread_mutex *pMutex) { pthread_mutex_init(pMutex, NULL); }
|
|
||||||
static inline void loader_platform_thread_lock_mutex(loader_platform_thread_mutex *pMutex) { pthread_mutex_lock(pMutex); }
|
|
||||||
static inline void loader_platform_thread_unlock_mutex(loader_platform_thread_mutex *pMutex) { pthread_mutex_unlock(pMutex); }
|
|
||||||
static inline void loader_platform_thread_delete_mutex(loader_platform_thread_mutex *pMutex) { pthread_mutex_destroy(pMutex); }
|
|
||||||
typedef pthread_cond_t loader_platform_thread_cond;
|
|
||||||
static inline void loader_platform_thread_init_cond(loader_platform_thread_cond *pCond) { pthread_cond_init(pCond, NULL); }
|
|
||||||
static inline void loader_platform_thread_cond_wait(loader_platform_thread_cond *pCond, loader_platform_thread_mutex *pMutex) {
|
|
||||||
pthread_cond_wait(pCond, pMutex);
|
|
||||||
}
|
|
||||||
static inline void loader_platform_thread_cond_broadcast(loader_platform_thread_cond *pCond) { pthread_cond_broadcast(pCond); }
|
|
||||||
|
|
||||||
#define loader_stack_alloc(size) alloca(size)
|
|
||||||
|
|
||||||
#elif defined(_WIN32) // defined(__linux__)
|
|
||||||
/* Windows-specific common code: */
|
|
||||||
// WinBase.h defines CreateSemaphore and synchapi.h defines CreateEvent
|
|
||||||
// undefine them to avoid conflicts with VkLayerDispatchTable struct members.
|
|
||||||
#ifdef CreateSemaphore
|
|
||||||
#undef CreateSemaphore
|
|
||||||
#endif
|
|
||||||
#ifdef CreateEvent
|
|
||||||
#undef CreateEvent
|
|
||||||
#endif
|
|
||||||
#include <assert.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <io.h>
|
|
||||||
#include <stdbool.h>
|
|
||||||
#include <shlwapi.h>
|
|
||||||
#include <direct.h>
|
|
||||||
#ifdef __cplusplus
|
|
||||||
#include <iostream>
|
|
||||||
#include <string>
|
|
||||||
#endif // __cplusplus
|
|
||||||
|
|
||||||
// VK Library Filenames, Paths, etc.:
|
|
||||||
#define PATH_SEPARATOR ';'
|
|
||||||
#define DIRECTORY_SYMBOL '\\'
|
|
||||||
#define DEFAULT_VK_REGISTRY_HIVE HKEY_LOCAL_MACHINE
|
|
||||||
#define DEFAULT_VK_REGISTRY_HIVE_STR "HKEY_LOCAL_MACHINE"
|
|
||||||
#define SECONDARY_VK_REGISTRY_HIVE HKEY_CURRENT_USER
|
|
||||||
#define SECONDARY_VK_REGISTRY_HIVE_STR "HKEY_CURRENT_USER"
|
|
||||||
|
|
||||||
#define VK_DRIVERS_INFO_RELATIVE_DIR ""
|
|
||||||
#define VK_SETTINGS_INFO_RELATIVE_DIR ""
|
|
||||||
#define VK_ELAYERS_INFO_RELATIVE_DIR ""
|
|
||||||
#define VK_ILAYERS_INFO_RELATIVE_DIR ""
|
|
||||||
|
|
||||||
#ifdef _WIN64
|
|
||||||
#define HKR_VK_DRIVER_NAME API_NAME "DriverName"
|
|
||||||
#else
|
|
||||||
#define HKR_VK_DRIVER_NAME API_NAME "DriverNameWow"
|
|
||||||
#endif
|
|
||||||
#define VK_DRIVERS_INFO_REGISTRY_LOC "SOFTWARE\\Khronos\\" API_NAME "\\Drivers"
|
|
||||||
#define VK_SETTINGS_INFO_REGISTRY_LOC "SOFTWARE\\Khronos\\" API_NAME "\\Settings"
|
|
||||||
#define VK_ELAYERS_INFO_REGISTRY_LOC "SOFTWARE\\Khronos\\" API_NAME "\\ExplicitLayers"
|
|
||||||
#define VK_ILAYERS_INFO_REGISTRY_LOC "SOFTWARE\\Khronos\\" API_NAME "\\ImplicitLayers"
|
|
||||||
|
|
||||||
#if !defined(DEFAULT_VK_LAYERS_PATH)
|
|
||||||
#define DEFAULT_VK_LAYERS_PATH ""
|
|
||||||
#endif
|
|
||||||
#if !defined(LAYERS_SOURCE_PATH)
|
|
||||||
#define LAYERS_SOURCE_PATH NULL
|
|
||||||
#endif
|
|
||||||
#define LAYERS_PATH_ENV "VK_LAYER_PATH"
|
|
||||||
#define ENABLED_LAYERS_ENV "VK_INSTANCE_LAYERS"
|
|
||||||
|
|
||||||
#define PRINTF_SIZE_T_SPECIFIER "%Iu"
|
|
||||||
|
|
||||||
#if defined(_WIN32)
|
|
||||||
// Get the key for the plug n play driver registry
|
|
||||||
// The string returned by this function should NOT be freed
|
|
||||||
static inline const char *LoaderPnpDriverRegistry() {
|
|
||||||
BOOL is_wow;
|
|
||||||
IsWow64Process(GetCurrentProcess(), &is_wow);
|
|
||||||
return is_wow ? "VulkanDriverNameWow" : "VulkanDriverName";
|
|
||||||
}
|
|
||||||
static inline const wchar_t *LoaderPnpDriverRegistryWide() {
|
|
||||||
BOOL is_wow;
|
|
||||||
IsWow64Process(GetCurrentProcess(), &is_wow);
|
|
||||||
return is_wow ? L"VulkanDriverNameWow" : L"VulkanDriverName";
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get the key for the plug 'n play explicit layer registry
|
|
||||||
// The string returned by this function should NOT be freed
|
|
||||||
static inline const char *LoaderPnpELayerRegistry() {
|
|
||||||
BOOL is_wow;
|
|
||||||
IsWow64Process(GetCurrentProcess(), &is_wow);
|
|
||||||
return is_wow ? "VulkanExplicitLayersWow" : "VulkanExplicitLayers";
|
|
||||||
}
|
|
||||||
static inline const wchar_t *LoaderPnpELayerRegistryWide() {
|
|
||||||
BOOL is_wow;
|
|
||||||
IsWow64Process(GetCurrentProcess(), &is_wow);
|
|
||||||
return is_wow ? L"VulkanExplicitLayersWow" : L"VulkanExplicitLayers";
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get the key for the plug 'n play implicit layer registry
|
|
||||||
// The string returned by this function should NOT be freed
|
|
||||||
static inline const char *LoaderPnpILayerRegistry() {
|
|
||||||
BOOL is_wow;
|
|
||||||
IsWow64Process(GetCurrentProcess(), &is_wow);
|
|
||||||
return is_wow ? "VulkanImplicitLayersWow" : "VulkanImplicitLayers";
|
|
||||||
}
|
|
||||||
static inline const wchar_t *LoaderPnpILayerRegistryWide() {
|
|
||||||
BOOL is_wow;
|
|
||||||
IsWow64Process(GetCurrentProcess(), &is_wow);
|
|
||||||
return is_wow ? L"VulkanImplicitLayersWow" : L"VulkanImplicitLayers";
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// File IO
|
|
||||||
static bool loader_platform_file_exists(const char *path) {
|
|
||||||
if ((_access(path, 0)) == -1)
|
|
||||||
return false;
|
|
||||||
else
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool loader_platform_is_path_absolute(const char *path) {
|
|
||||||
if (!path || !*path) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (*path == DIRECTORY_SYMBOL || path[1] == ':') {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// WIN32 runtime doesn't have dirname().
|
|
||||||
static inline char *loader_platform_dirname(char *path) {
|
|
||||||
char *current, *next;
|
|
||||||
|
|
||||||
// TODO/TBD: Do we need to deal with the Windows's ":" character?
|
|
||||||
|
|
||||||
for (current = path; *current != '\0'; current = next) {
|
|
||||||
next = strchr(current, DIRECTORY_SYMBOL);
|
|
||||||
if (next == NULL) {
|
|
||||||
if (current != path) *(current - 1) = '\0';
|
|
||||||
return path;
|
|
||||||
} else {
|
|
||||||
// Point one character past the DIRECTORY_SYMBOL:
|
|
||||||
next++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return path;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline char *loader_platform_executable_path(char *buffer, size_t size) {
|
|
||||||
DWORD ret = GetModuleFileName(NULL, buffer, (DWORD)size);
|
|
||||||
if (ret == 0) return NULL;
|
|
||||||
if (ret > size) return NULL;
|
|
||||||
buffer[ret] = '\0';
|
|
||||||
return buffer;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Dynamic Loading:
|
|
||||||
typedef HMODULE loader_platform_dl_handle;
|
|
||||||
static loader_platform_dl_handle loader_platform_open_library(const char *lib_path) {
|
|
||||||
// Try loading the library the original way first.
|
|
||||||
loader_platform_dl_handle lib_handle = LoadLibrary(lib_path);
|
|
||||||
if (lib_handle == NULL && GetLastError() == ERROR_MOD_NOT_FOUND) {
|
|
||||||
// If that failed, then try loading it with broader search folders.
|
|
||||||
lib_handle = LoadLibraryEx(lib_path, NULL, LOAD_LIBRARY_SEARCH_DEFAULT_DIRS | LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR);
|
|
||||||
}
|
|
||||||
return lib_handle;
|
|
||||||
}
|
|
||||||
static char *loader_platform_open_library_error(const char *libPath) {
|
|
||||||
static char errorMsg[164];
|
|
||||||
(void)snprintf(errorMsg, 163, "Failed to open dynamic library \"%s\" with error %lu", libPath, GetLastError());
|
|
||||||
return errorMsg;
|
|
||||||
}
|
|
||||||
static void loader_platform_close_library(loader_platform_dl_handle library) { FreeLibrary(library); }
|
|
||||||
static void *loader_platform_get_proc_address(loader_platform_dl_handle library, const char *name) {
|
|
||||||
assert(library);
|
|
||||||
assert(name);
|
|
||||||
return (void *)GetProcAddress(library, name);
|
|
||||||
}
|
|
||||||
static char *loader_platform_get_proc_address_error(const char *name) {
|
|
||||||
static char errorMsg[120];
|
|
||||||
(void)snprintf(errorMsg, 119, "Failed to find function \"%s\" in dynamic library", name);
|
|
||||||
return errorMsg;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Threads:
|
|
||||||
typedef HANDLE loader_platform_thread;
|
|
||||||
|
|
||||||
// __declspec(thread) is not supported by MinGW compiler (ignored with warning or
|
|
||||||
// cause error depending on compiler switches)
|
|
||||||
//
|
|
||||||
// __thread should be used instead
|
|
||||||
//
|
|
||||||
// __MINGW32__ defined for both 32 and 64 bit MinGW compilers, so it is enough to
|
|
||||||
// detect any (32 or 64) flavor of MinGW compiler.
|
|
||||||
//
|
|
||||||
// @note __GNUC__ could be used as a more generic way to detect _any_
|
|
||||||
// GCC[-compatible] compiler on Windows, but this fix was tested
|
|
||||||
// only with MinGW, so keep it explicit at the moment.
|
|
||||||
#if defined(__MINGW32__)
|
|
||||||
#define THREAD_LOCAL_DECL __thread
|
|
||||||
#else
|
|
||||||
#define THREAD_LOCAL_DECL __declspec(thread)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// The once init functionality is not used when building a DLL on Windows. This is because there is no way to clean up the
|
|
||||||
// resources allocated by anything allocated by once init. This isn't a problem for static libraries, but it is for dynamic
|
|
||||||
// ones. When building a DLL, we use DllMain() instead to allow properly cleaning up resources.
|
|
||||||
#define LOADER_PLATFORM_THREAD_ONCE_DECLARATION(var)
|
|
||||||
#define LOADER_PLATFORM_THREAD_ONCE_DEFINITION(var)
|
|
||||||
#define LOADER_PLATFORM_THREAD_ONCE(ctl, func)
|
|
||||||
|
|
||||||
// Thread IDs:
|
|
||||||
typedef DWORD loader_platform_thread_id;
|
|
||||||
static loader_platform_thread_id loader_platform_get_thread_id() { return GetCurrentThreadId(); }
|
|
||||||
|
|
||||||
// Thread mutex:
|
|
||||||
typedef CRITICAL_SECTION loader_platform_thread_mutex;
|
|
||||||
static void loader_platform_thread_create_mutex(loader_platform_thread_mutex *pMutex) { InitializeCriticalSection(pMutex); }
|
|
||||||
static void loader_platform_thread_lock_mutex(loader_platform_thread_mutex *pMutex) { EnterCriticalSection(pMutex); }
|
|
||||||
static void loader_platform_thread_unlock_mutex(loader_platform_thread_mutex *pMutex) { LeaveCriticalSection(pMutex); }
|
|
||||||
static void loader_platform_thread_delete_mutex(loader_platform_thread_mutex *pMutex) { DeleteCriticalSection(pMutex); }
|
|
||||||
typedef CONDITION_VARIABLE loader_platform_thread_cond;
|
|
||||||
static void loader_platform_thread_init_cond(loader_platform_thread_cond *pCond) { InitializeConditionVariable(pCond); }
|
|
||||||
static void loader_platform_thread_cond_wait(loader_platform_thread_cond *pCond, loader_platform_thread_mutex *pMutex) {
|
|
||||||
SleepConditionVariableCS(pCond, pMutex, INFINITE);
|
|
||||||
}
|
|
||||||
static void loader_platform_thread_cond_broadcast(loader_platform_thread_cond *pCond) { WakeAllConditionVariable(pCond); }
|
|
||||||
|
|
||||||
#define loader_stack_alloc(size) _alloca(size)
|
|
||||||
#else // defined(_WIN32)
|
|
||||||
|
|
||||||
#error The "loader_platform.h" file must be modified for this OS.
|
|
||||||
|
|
||||||
// NOTE: In order to support another OS, an #elif needs to be added (above the
|
|
||||||
// "#else // defined(_WIN32)") for that OS, and OS-specific versions of the
|
|
||||||
// contents of this file must be created.
|
|
||||||
|
|
||||||
// NOTE: Other OS-specific changes are also needed for this OS. Search for
|
|
||||||
// files with "WIN32" in it, as a quick way to find files that must be changed.
|
|
||||||
|
|
||||||
#endif // defined(_WIN32)
|
|
||||||
|
|
||||||
// returns true if the given string appears to be a relative or absolute
|
|
||||||
// path, as opposed to a bare filename.
|
|
||||||
static inline bool loader_platform_is_path(const char *path) { return strchr(path, DIRECTORY_SYMBOL) != NULL; }
|
|
|
@ -1,387 +0,0 @@
|
||||||
// *** THIS FILE IS GENERATED - DO NOT EDIT ***
|
|
||||||
// See helper_file_generator.py for modifications
|
|
||||||
|
|
||||||
|
|
||||||
/***************************************************************************
|
|
||||||
*
|
|
||||||
* Copyright (c) 2015-2017 The Khronos Group Inc.
|
|
||||||
* Copyright (c) 2015-2017 Valve Corporation
|
|
||||||
* Copyright (c) 2015-2017 LunarG, Inc.
|
|
||||||
* Copyright (c) 2015-2017 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.
|
|
||||||
*
|
|
||||||
* Author: Mark Lobodzinski <mark@lunarg.com>
|
|
||||||
* Author: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
||||||
* Author: Tobin Ehlis <tobine@google.com>
|
|
||||||
* Author: Chris Forbes <chrisforbes@google.com>
|
|
||||||
* Author: John Zulauf<jzulauf@lunarg.com>
|
|
||||||
*
|
|
||||||
****************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include "../vulkan.h"
|
|
||||||
|
|
||||||
// Object Type enum for validation layer internal object handling
|
|
||||||
typedef enum VulkanObjectType {
|
|
||||||
kVulkanObjectTypeUnknown = 0,
|
|
||||||
kVulkanObjectTypeBuffer = 1,
|
|
||||||
kVulkanObjectTypeImage = 2,
|
|
||||||
kVulkanObjectTypeInstance = 3,
|
|
||||||
kVulkanObjectTypePhysicalDevice = 4,
|
|
||||||
kVulkanObjectTypeDevice = 5,
|
|
||||||
kVulkanObjectTypeQueue = 6,
|
|
||||||
kVulkanObjectTypeSemaphore = 7,
|
|
||||||
kVulkanObjectTypeCommandBuffer = 8,
|
|
||||||
kVulkanObjectTypeFence = 9,
|
|
||||||
kVulkanObjectTypeDeviceMemory = 10,
|
|
||||||
kVulkanObjectTypeEvent = 11,
|
|
||||||
kVulkanObjectTypeQueryPool = 12,
|
|
||||||
kVulkanObjectTypeBufferView = 13,
|
|
||||||
kVulkanObjectTypeImageView = 14,
|
|
||||||
kVulkanObjectTypeShaderModule = 15,
|
|
||||||
kVulkanObjectTypePipelineCache = 16,
|
|
||||||
kVulkanObjectTypePipelineLayout = 17,
|
|
||||||
kVulkanObjectTypePipeline = 18,
|
|
||||||
kVulkanObjectTypeRenderPass = 19,
|
|
||||||
kVulkanObjectTypeDescriptorSetLayout = 20,
|
|
||||||
kVulkanObjectTypeSampler = 21,
|
|
||||||
kVulkanObjectTypeDescriptorSet = 22,
|
|
||||||
kVulkanObjectTypeDescriptorPool = 23,
|
|
||||||
kVulkanObjectTypeFramebuffer = 24,
|
|
||||||
kVulkanObjectTypeCommandPool = 25,
|
|
||||||
kVulkanObjectTypeSamplerYcbcrConversion = 26,
|
|
||||||
kVulkanObjectTypeDescriptorUpdateTemplate = 27,
|
|
||||||
kVulkanObjectTypeSurfaceKHR = 28,
|
|
||||||
kVulkanObjectTypeSwapchainKHR = 29,
|
|
||||||
kVulkanObjectTypeDisplayKHR = 30,
|
|
||||||
kVulkanObjectTypeDisplayModeKHR = 31,
|
|
||||||
kVulkanObjectTypeDeferredOperationKHR = 32,
|
|
||||||
kVulkanObjectTypeDebugReportCallbackEXT = 33,
|
|
||||||
kVulkanObjectTypeDebugUtilsMessengerEXT = 34,
|
|
||||||
kVulkanObjectTypeValidationCacheEXT = 35,
|
|
||||||
kVulkanObjectTypeAccelerationStructureNV = 36,
|
|
||||||
kVulkanObjectTypePerformanceConfigurationINTEL = 37,
|
|
||||||
kVulkanObjectTypeIndirectCommandsLayoutNV = 38,
|
|
||||||
kVulkanObjectTypePrivateDataSlotEXT = 39,
|
|
||||||
kVulkanObjectTypeAccelerationStructureKHR = 40,
|
|
||||||
kVulkanObjectTypeMax = 41,
|
|
||||||
// Aliases for backwards compatibilty of "promoted" types
|
|
||||||
kVulkanObjectTypeDescriptorUpdateTemplateKHR = kVulkanObjectTypeDescriptorUpdateTemplate,
|
|
||||||
kVulkanObjectTypeSamplerYcbcrConversionKHR = kVulkanObjectTypeSamplerYcbcrConversion,
|
|
||||||
} VulkanObjectType;
|
|
||||||
|
|
||||||
// Array of object name strings for OBJECT_TYPE enum conversion
|
|
||||||
static const char * const object_string[kVulkanObjectTypeMax] = {
|
|
||||||
"Unknown",
|
|
||||||
"Buffer",
|
|
||||||
"Image",
|
|
||||||
"Instance",
|
|
||||||
"PhysicalDevice",
|
|
||||||
"Device",
|
|
||||||
"Queue",
|
|
||||||
"Semaphore",
|
|
||||||
"CommandBuffer",
|
|
||||||
"Fence",
|
|
||||||
"DeviceMemory",
|
|
||||||
"Event",
|
|
||||||
"QueryPool",
|
|
||||||
"BufferView",
|
|
||||||
"ImageView",
|
|
||||||
"ShaderModule",
|
|
||||||
"PipelineCache",
|
|
||||||
"PipelineLayout",
|
|
||||||
"Pipeline",
|
|
||||||
"RenderPass",
|
|
||||||
"DescriptorSetLayout",
|
|
||||||
"Sampler",
|
|
||||||
"DescriptorSet",
|
|
||||||
"DescriptorPool",
|
|
||||||
"Framebuffer",
|
|
||||||
"CommandPool",
|
|
||||||
"SamplerYcbcrConversion",
|
|
||||||
"DescriptorUpdateTemplate",
|
|
||||||
"SurfaceKHR",
|
|
||||||
"SwapchainKHR",
|
|
||||||
"DisplayKHR",
|
|
||||||
"DisplayModeKHR",
|
|
||||||
"DeferredOperationKHR",
|
|
||||||
"DebugReportCallbackEXT",
|
|
||||||
"DebugUtilsMessengerEXT",
|
|
||||||
"ValidationCacheEXT",
|
|
||||||
"AccelerationStructureNV",
|
|
||||||
"PerformanceConfigurationINTEL",
|
|
||||||
"IndirectCommandsLayoutNV",
|
|
||||||
"PrivateDataSlotEXT",
|
|
||||||
"AccelerationStructureKHR",
|
|
||||||
};
|
|
||||||
|
|
||||||
// Helper array to get Vulkan VK_EXT_debug_report object type enum from the internal layers version
|
|
||||||
const VkDebugReportObjectTypeEXT get_debug_report_enum[] = {
|
|
||||||
VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, // kVulkanObjectTypeUnknown
|
|
||||||
VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT, // kVulkanObjectTypeBuffer
|
|
||||||
VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT, // kVulkanObjectTypeImage
|
|
||||||
VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT, // kVulkanObjectTypeInstance
|
|
||||||
VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT, // kVulkanObjectTypePhysicalDevice
|
|
||||||
VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT, // kVulkanObjectTypeDevice
|
|
||||||
VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT, // kVulkanObjectTypeQueue
|
|
||||||
VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT, // kVulkanObjectTypeSemaphore
|
|
||||||
VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, // kVulkanObjectTypeCommandBuffer
|
|
||||||
VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT, // kVulkanObjectTypeFence
|
|
||||||
VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT, // kVulkanObjectTypeDeviceMemory
|
|
||||||
VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT, // kVulkanObjectTypeEvent
|
|
||||||
VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT, // kVulkanObjectTypeQueryPool
|
|
||||||
VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT, // kVulkanObjectTypeBufferView
|
|
||||||
VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT, // kVulkanObjectTypeImageView
|
|
||||||
VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT, // kVulkanObjectTypeShaderModule
|
|
||||||
VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT, // kVulkanObjectTypePipelineCache
|
|
||||||
VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT, // kVulkanObjectTypePipelineLayout
|
|
||||||
VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT, // kVulkanObjectTypePipeline
|
|
||||||
VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT, // kVulkanObjectTypeRenderPass
|
|
||||||
VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT, // kVulkanObjectTypeDescriptorSetLayout
|
|
||||||
VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT, // kVulkanObjectTypeSampler
|
|
||||||
VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT, // kVulkanObjectTypeDescriptorSet
|
|
||||||
VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT, // kVulkanObjectTypeDescriptorPool
|
|
||||||
VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT, // kVulkanObjectTypeFramebuffer
|
|
||||||
VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT, // kVulkanObjectTypeCommandPool
|
|
||||||
VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT, // kVulkanObjectTypeSamplerYcbcrConversion
|
|
||||||
VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT, // kVulkanObjectTypeDescriptorUpdateTemplate
|
|
||||||
VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT, // kVulkanObjectTypeSurfaceKHR
|
|
||||||
VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT, // kVulkanObjectTypeSwapchainKHR
|
|
||||||
VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT, // kVulkanObjectTypeDisplayKHR
|
|
||||||
VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT, // kVulkanObjectTypeDisplayModeKHR
|
|
||||||
VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, // kVulkanObjectTypeDeferredOperationKHR
|
|
||||||
VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT, // kVulkanObjectTypeDebugReportCallbackEXT
|
|
||||||
VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, // kVulkanObjectTypeDebugUtilsMessengerEXT
|
|
||||||
VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT, // kVulkanObjectTypeValidationCacheEXT
|
|
||||||
VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT, // kVulkanObjectTypeAccelerationStructureNV
|
|
||||||
VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, // kVulkanObjectTypePerformanceConfigurationINTEL
|
|
||||||
VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, // kVulkanObjectTypeIndirectCommandsLayoutNV
|
|
||||||
VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, // kVulkanObjectTypePrivateDataSlotEXT
|
|
||||||
VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT, // kVulkanObjectTypeAccelerationStructureKHR
|
|
||||||
};
|
|
||||||
|
|
||||||
// Helper array to get Official Vulkan VkObjectType enum from the internal layers version
|
|
||||||
const VkObjectType get_object_type_enum[] = {
|
|
||||||
VK_OBJECT_TYPE_UNKNOWN, // kVulkanObjectTypeUnknown
|
|
||||||
VK_OBJECT_TYPE_BUFFER, // kVulkanObjectTypeBuffer
|
|
||||||
VK_OBJECT_TYPE_IMAGE, // kVulkanObjectTypeImage
|
|
||||||
VK_OBJECT_TYPE_INSTANCE, // kVulkanObjectTypeInstance
|
|
||||||
VK_OBJECT_TYPE_PHYSICAL_DEVICE, // kVulkanObjectTypePhysicalDevice
|
|
||||||
VK_OBJECT_TYPE_DEVICE, // kVulkanObjectTypeDevice
|
|
||||||
VK_OBJECT_TYPE_QUEUE, // kVulkanObjectTypeQueue
|
|
||||||
VK_OBJECT_TYPE_SEMAPHORE, // kVulkanObjectTypeSemaphore
|
|
||||||
VK_OBJECT_TYPE_COMMAND_BUFFER, // kVulkanObjectTypeCommandBuffer
|
|
||||||
VK_OBJECT_TYPE_FENCE, // kVulkanObjectTypeFence
|
|
||||||
VK_OBJECT_TYPE_DEVICE_MEMORY, // kVulkanObjectTypeDeviceMemory
|
|
||||||
VK_OBJECT_TYPE_EVENT, // kVulkanObjectTypeEvent
|
|
||||||
VK_OBJECT_TYPE_QUERY_POOL, // kVulkanObjectTypeQueryPool
|
|
||||||
VK_OBJECT_TYPE_BUFFER_VIEW, // kVulkanObjectTypeBufferView
|
|
||||||
VK_OBJECT_TYPE_IMAGE_VIEW, // kVulkanObjectTypeImageView
|
|
||||||
VK_OBJECT_TYPE_SHADER_MODULE, // kVulkanObjectTypeShaderModule
|
|
||||||
VK_OBJECT_TYPE_PIPELINE_CACHE, // kVulkanObjectTypePipelineCache
|
|
||||||
VK_OBJECT_TYPE_PIPELINE_LAYOUT, // kVulkanObjectTypePipelineLayout
|
|
||||||
VK_OBJECT_TYPE_PIPELINE, // kVulkanObjectTypePipeline
|
|
||||||
VK_OBJECT_TYPE_RENDER_PASS, // kVulkanObjectTypeRenderPass
|
|
||||||
VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT, // kVulkanObjectTypeDescriptorSetLayout
|
|
||||||
VK_OBJECT_TYPE_SAMPLER, // kVulkanObjectTypeSampler
|
|
||||||
VK_OBJECT_TYPE_DESCRIPTOR_SET, // kVulkanObjectTypeDescriptorSet
|
|
||||||
VK_OBJECT_TYPE_DESCRIPTOR_POOL, // kVulkanObjectTypeDescriptorPool
|
|
||||||
VK_OBJECT_TYPE_FRAMEBUFFER, // kVulkanObjectTypeFramebuffer
|
|
||||||
VK_OBJECT_TYPE_COMMAND_POOL, // kVulkanObjectTypeCommandPool
|
|
||||||
VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION, // kVulkanObjectTypeSamplerYcbcrConversion
|
|
||||||
VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE, // kVulkanObjectTypeDescriptorUpdateTemplate
|
|
||||||
VK_OBJECT_TYPE_SURFACE_KHR, // kVulkanObjectTypeSurfaceKHR
|
|
||||||
VK_OBJECT_TYPE_SWAPCHAIN_KHR, // kVulkanObjectTypeSwapchainKHR
|
|
||||||
VK_OBJECT_TYPE_DISPLAY_KHR, // kVulkanObjectTypeDisplayKHR
|
|
||||||
VK_OBJECT_TYPE_DISPLAY_MODE_KHR, // kVulkanObjectTypeDisplayModeKHR
|
|
||||||
VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR, // kVulkanObjectTypeDeferredOperationKHR
|
|
||||||
VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT, // kVulkanObjectTypeDebugReportCallbackEXT
|
|
||||||
VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT, // kVulkanObjectTypeDebugUtilsMessengerEXT
|
|
||||||
VK_OBJECT_TYPE_VALIDATION_CACHE_EXT, // kVulkanObjectTypeValidationCacheEXT
|
|
||||||
VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV, // kVulkanObjectTypeAccelerationStructureNV
|
|
||||||
VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL, // kVulkanObjectTypePerformanceConfigurationINTEL
|
|
||||||
VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV, // kVulkanObjectTypeIndirectCommandsLayoutNV
|
|
||||||
VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT, // kVulkanObjectTypePrivateDataSlotEXT
|
|
||||||
VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR, // kVulkanObjectTypeAccelerationStructureKHR
|
|
||||||
};
|
|
||||||
|
|
||||||
// Helper function to convert from VkDebugReportObjectTypeEXT to VkObjectType
|
|
||||||
static inline VkObjectType convertDebugReportObjectToCoreObject(VkDebugReportObjectTypeEXT debug_report_obj){
|
|
||||||
if (debug_report_obj == VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT) {
|
|
||||||
return VK_OBJECT_TYPE_UNKNOWN;
|
|
||||||
} else if (debug_report_obj == VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT) {
|
|
||||||
return VK_OBJECT_TYPE_UNKNOWN;
|
|
||||||
} else if (debug_report_obj == VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT) {
|
|
||||||
return VK_OBJECT_TYPE_INSTANCE;
|
|
||||||
} else if (debug_report_obj == VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT) {
|
|
||||||
return VK_OBJECT_TYPE_PHYSICAL_DEVICE;
|
|
||||||
} else if (debug_report_obj == VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT) {
|
|
||||||
return VK_OBJECT_TYPE_DEVICE;
|
|
||||||
} else if (debug_report_obj == VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT) {
|
|
||||||
return VK_OBJECT_TYPE_QUEUE;
|
|
||||||
} else if (debug_report_obj == VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT) {
|
|
||||||
return VK_OBJECT_TYPE_SEMAPHORE;
|
|
||||||
} else if (debug_report_obj == VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT) {
|
|
||||||
return VK_OBJECT_TYPE_COMMAND_BUFFER;
|
|
||||||
} else if (debug_report_obj == VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT) {
|
|
||||||
return VK_OBJECT_TYPE_FENCE;
|
|
||||||
} else if (debug_report_obj == VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT) {
|
|
||||||
return VK_OBJECT_TYPE_DEVICE_MEMORY;
|
|
||||||
} else if (debug_report_obj == VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT) {
|
|
||||||
return VK_OBJECT_TYPE_BUFFER;
|
|
||||||
} else if (debug_report_obj == VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT) {
|
|
||||||
return VK_OBJECT_TYPE_IMAGE;
|
|
||||||
} else if (debug_report_obj == VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT) {
|
|
||||||
return VK_OBJECT_TYPE_EVENT;
|
|
||||||
} else if (debug_report_obj == VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT) {
|
|
||||||
return VK_OBJECT_TYPE_QUERY_POOL;
|
|
||||||
} else if (debug_report_obj == VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT) {
|
|
||||||
return VK_OBJECT_TYPE_BUFFER_VIEW;
|
|
||||||
} else if (debug_report_obj == VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT) {
|
|
||||||
return VK_OBJECT_TYPE_IMAGE_VIEW;
|
|
||||||
} else if (debug_report_obj == VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT) {
|
|
||||||
return VK_OBJECT_TYPE_SHADER_MODULE;
|
|
||||||
} else if (debug_report_obj == VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT) {
|
|
||||||
return VK_OBJECT_TYPE_PIPELINE_CACHE;
|
|
||||||
} else if (debug_report_obj == VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT) {
|
|
||||||
return VK_OBJECT_TYPE_PIPELINE_LAYOUT;
|
|
||||||
} else if (debug_report_obj == VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT) {
|
|
||||||
return VK_OBJECT_TYPE_RENDER_PASS;
|
|
||||||
} else if (debug_report_obj == VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT) {
|
|
||||||
return VK_OBJECT_TYPE_PIPELINE;
|
|
||||||
} else if (debug_report_obj == VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT) {
|
|
||||||
return VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT;
|
|
||||||
} else if (debug_report_obj == VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT) {
|
|
||||||
return VK_OBJECT_TYPE_SAMPLER;
|
|
||||||
} else if (debug_report_obj == VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT) {
|
|
||||||
return VK_OBJECT_TYPE_DESCRIPTOR_POOL;
|
|
||||||
} else if (debug_report_obj == VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT) {
|
|
||||||
return VK_OBJECT_TYPE_DESCRIPTOR_SET;
|
|
||||||
} else if (debug_report_obj == VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT) {
|
|
||||||
return VK_OBJECT_TYPE_FRAMEBUFFER;
|
|
||||||
} else if (debug_report_obj == VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT) {
|
|
||||||
return VK_OBJECT_TYPE_COMMAND_POOL;
|
|
||||||
} else if (debug_report_obj == VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT) {
|
|
||||||
return VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION;
|
|
||||||
} else if (debug_report_obj == VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT) {
|
|
||||||
return VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE;
|
|
||||||
} else if (debug_report_obj == VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT) {
|
|
||||||
return VK_OBJECT_TYPE_SURFACE_KHR;
|
|
||||||
} else if (debug_report_obj == VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT) {
|
|
||||||
return VK_OBJECT_TYPE_SWAPCHAIN_KHR;
|
|
||||||
} else if (debug_report_obj == VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT) {
|
|
||||||
return VK_OBJECT_TYPE_DISPLAY_KHR;
|
|
||||||
} else if (debug_report_obj == VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT) {
|
|
||||||
return VK_OBJECT_TYPE_DISPLAY_MODE_KHR;
|
|
||||||
} else if (debug_report_obj == VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT) {
|
|
||||||
return VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT;
|
|
||||||
} else if (debug_report_obj == VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT) {
|
|
||||||
return VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR;
|
|
||||||
} else if (debug_report_obj == VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT) {
|
|
||||||
return VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR;
|
|
||||||
} else if (debug_report_obj == VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT) {
|
|
||||||
return VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR;
|
|
||||||
} else if (debug_report_obj == VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT) {
|
|
||||||
return VK_OBJECT_TYPE_VALIDATION_CACHE_EXT;
|
|
||||||
} else if (debug_report_obj == VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT) {
|
|
||||||
return VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV;
|
|
||||||
}
|
|
||||||
return VK_OBJECT_TYPE_UNKNOWN;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Helper function to convert from VkDebugReportObjectTypeEXT to VkObjectType
|
|
||||||
static inline VkDebugReportObjectTypeEXT convertCoreObjectToDebugReportObject(VkObjectType core_report_obj){
|
|
||||||
if (core_report_obj == VK_OBJECT_TYPE_UNKNOWN) {
|
|
||||||
return VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT;
|
|
||||||
} else if (core_report_obj == VK_OBJECT_TYPE_UNKNOWN) {
|
|
||||||
return VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT;
|
|
||||||
} else if (core_report_obj == VK_OBJECT_TYPE_INSTANCE) {
|
|
||||||
return VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT;
|
|
||||||
} else if (core_report_obj == VK_OBJECT_TYPE_PHYSICAL_DEVICE) {
|
|
||||||
return VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT;
|
|
||||||
} else if (core_report_obj == VK_OBJECT_TYPE_DEVICE) {
|
|
||||||
return VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT;
|
|
||||||
} else if (core_report_obj == VK_OBJECT_TYPE_QUEUE) {
|
|
||||||
return VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT;
|
|
||||||
} else if (core_report_obj == VK_OBJECT_TYPE_SEMAPHORE) {
|
|
||||||
return VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT;
|
|
||||||
} else if (core_report_obj == VK_OBJECT_TYPE_COMMAND_BUFFER) {
|
|
||||||
return VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT;
|
|
||||||
} else if (core_report_obj == VK_OBJECT_TYPE_FENCE) {
|
|
||||||
return VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT;
|
|
||||||
} else if (core_report_obj == VK_OBJECT_TYPE_DEVICE_MEMORY) {
|
|
||||||
return VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT;
|
|
||||||
} else if (core_report_obj == VK_OBJECT_TYPE_BUFFER) {
|
|
||||||
return VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT;
|
|
||||||
} else if (core_report_obj == VK_OBJECT_TYPE_IMAGE) {
|
|
||||||
return VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT;
|
|
||||||
} else if (core_report_obj == VK_OBJECT_TYPE_EVENT) {
|
|
||||||
return VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT;
|
|
||||||
} else if (core_report_obj == VK_OBJECT_TYPE_QUERY_POOL) {
|
|
||||||
return VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT;
|
|
||||||
} else if (core_report_obj == VK_OBJECT_TYPE_BUFFER_VIEW) {
|
|
||||||
return VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT;
|
|
||||||
} else if (core_report_obj == VK_OBJECT_TYPE_IMAGE_VIEW) {
|
|
||||||
return VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT;
|
|
||||||
} else if (core_report_obj == VK_OBJECT_TYPE_SHADER_MODULE) {
|
|
||||||
return VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT;
|
|
||||||
} else if (core_report_obj == VK_OBJECT_TYPE_PIPELINE_CACHE) {
|
|
||||||
return VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT;
|
|
||||||
} else if (core_report_obj == VK_OBJECT_TYPE_PIPELINE_LAYOUT) {
|
|
||||||
return VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT;
|
|
||||||
} else if (core_report_obj == VK_OBJECT_TYPE_RENDER_PASS) {
|
|
||||||
return VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT;
|
|
||||||
} else if (core_report_obj == VK_OBJECT_TYPE_PIPELINE) {
|
|
||||||
return VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT;
|
|
||||||
} else if (core_report_obj == VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT) {
|
|
||||||
return VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT;
|
|
||||||
} else if (core_report_obj == VK_OBJECT_TYPE_SAMPLER) {
|
|
||||||
return VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT;
|
|
||||||
} else if (core_report_obj == VK_OBJECT_TYPE_DESCRIPTOR_POOL) {
|
|
||||||
return VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT;
|
|
||||||
} else if (core_report_obj == VK_OBJECT_TYPE_DESCRIPTOR_SET) {
|
|
||||||
return VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT;
|
|
||||||
} else if (core_report_obj == VK_OBJECT_TYPE_FRAMEBUFFER) {
|
|
||||||
return VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT;
|
|
||||||
} else if (core_report_obj == VK_OBJECT_TYPE_COMMAND_POOL) {
|
|
||||||
return VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT;
|
|
||||||
} else if (core_report_obj == VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION) {
|
|
||||||
return VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT;
|
|
||||||
} else if (core_report_obj == VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE) {
|
|
||||||
return VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT;
|
|
||||||
} else if (core_report_obj == VK_OBJECT_TYPE_SURFACE_KHR) {
|
|
||||||
return VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT;
|
|
||||||
} else if (core_report_obj == VK_OBJECT_TYPE_SWAPCHAIN_KHR) {
|
|
||||||
return VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT;
|
|
||||||
} else if (core_report_obj == VK_OBJECT_TYPE_DISPLAY_KHR) {
|
|
||||||
return VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT;
|
|
||||||
} else if (core_report_obj == VK_OBJECT_TYPE_DISPLAY_MODE_KHR) {
|
|
||||||
return VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT;
|
|
||||||
} else if (core_report_obj == VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT) {
|
|
||||||
return VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT;
|
|
||||||
} else if (core_report_obj == VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR) {
|
|
||||||
return VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT;
|
|
||||||
} else if (core_report_obj == VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR) {
|
|
||||||
return VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT;
|
|
||||||
} else if (core_report_obj == VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR) {
|
|
||||||
return VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT;
|
|
||||||
} else if (core_report_obj == VK_OBJECT_TYPE_VALIDATION_CACHE_EXT) {
|
|
||||||
return VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT;
|
|
||||||
} else if (core_report_obj == VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV) {
|
|
||||||
return VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT;
|
|
||||||
}
|
|
||||||
return VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT;
|
|
||||||
}
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,219 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2015-2016 The Khronos Group Inc.
|
|
||||||
* Copyright (c) 2015-2016 Valve Corporation
|
|
||||||
* Copyright (c) 2015-2016 LunarG, 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.
|
|
||||||
*
|
|
||||||
* Author: Ian Elliott <ian@lunarg.com>
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef WSI_H
|
|
||||||
#define WSI_H
|
|
||||||
|
|
||||||
#include "vk_loader_platform.h"
|
|
||||||
#include "loader.h"
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
union {
|
|
||||||
#ifdef VK_USE_PLATFORM_WAYLAND_KHR
|
|
||||||
VkIcdSurfaceWayland wayland_surf;
|
|
||||||
#endif // VK_USE_PLATFORM_WAYLAND_KHR
|
|
||||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
VkIcdSurfaceWin32 win_surf;
|
|
||||||
#endif // VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
#ifdef VK_USE_PLATFORM_XCB_KHR
|
|
||||||
VkIcdSurfaceXcb xcb_surf;
|
|
||||||
#endif // VK_USE_PLATFORM_XCB_KHR
|
|
||||||
#ifdef VK_USE_PLATFORM_XLIB_KHR
|
|
||||||
VkIcdSurfaceXlib xlib_surf;
|
|
||||||
#endif // VK_USE_PLATFORM_XLIB_KHR
|
|
||||||
#ifdef VK_USE_PLATFORM_DIRECTFB_EXT
|
|
||||||
VkIcdSurfaceDirectFB directfb_surf;
|
|
||||||
#endif // VK_USE_PLATFORM_DIRECTFB_EXT
|
|
||||||
#ifdef VK_USE_PLATFORM_MACOS_MVK
|
|
||||||
VkIcdSurfaceMacOS macos_surf;
|
|
||||||
#endif // VK_USE_PLATFORM_MACOS_MVK
|
|
||||||
#ifdef VK_USE_PLATFORM_GGP
|
|
||||||
VkIcdSurfaceGgp ggp_surf;
|
|
||||||
#endif // VK_USE_PLATFORM_GGP
|
|
||||||
#ifdef VK_USE_PLATFORM_FUCHSIA
|
|
||||||
VkIcdSurfaceImagePipe imagepipe_surf;
|
|
||||||
#endif // VK_USE_PLATFORM_FUCHSIA
|
|
||||||
#ifdef VK_USE_PLATFORM_METAL_EXT
|
|
||||||
VkIcdSurfaceMetal metal_surf;
|
|
||||||
#endif // VK_USE_PLATFORM_METAL_EXT
|
|
||||||
VkIcdSurfaceDisplay display_surf;
|
|
||||||
VkIcdSurfaceHeadless headless_surf;
|
|
||||||
};
|
|
||||||
uint32_t base_size; // Size of VkIcdSurfaceBase
|
|
||||||
uint32_t platform_size; // Size of corresponding VkIcdSurfaceXXX
|
|
||||||
uint32_t non_platform_offset; // Start offset to base_size
|
|
||||||
uint32_t entire_size; // Size of entire VkIcdSurface
|
|
||||||
VkSurfaceKHR *real_icd_surfaces;
|
|
||||||
} VkIcdSurface;
|
|
||||||
|
|
||||||
bool wsi_swapchain_instance_gpa(struct loader_instance *ptr_instance, const char *name, void **addr);
|
|
||||||
|
|
||||||
void wsi_create_instance(struct loader_instance *ptr_instance, const VkInstanceCreateInfo *pCreateInfo);
|
|
||||||
bool wsi_unsupported_instance_extension(const VkExtensionProperties *ext_prop);
|
|
||||||
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateHeadlessSurfaceEXT(VkInstance instance,
|
|
||||||
const VkHeadlessSurfaceCreateInfoEXT *pCreateInfo,
|
|
||||||
const VkAllocationCallbacks *pAllocator, VkSurfaceKHR *pSurface);
|
|
||||||
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateSwapchainKHR(VkDevice device, const VkSwapchainCreateInfoKHR *pCreateInfo,
|
|
||||||
const VkAllocationCallbacks *pAllocator, VkSwapchainKHR *pSwapchain);
|
|
||||||
|
|
||||||
VKAPI_ATTR void VKAPI_CALL terminator_DestroySurfaceKHR(VkInstance instance, VkSurfaceKHR surface,
|
|
||||||
const VkAllocationCallbacks *pAllocator);
|
|
||||||
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceSurfaceSupportKHR(VkPhysicalDevice physicalDevice,
|
|
||||||
uint32_t queueFamilyIndex, VkSurfaceKHR surface,
|
|
||||||
VkBool32 *pSupported);
|
|
||||||
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceSurfaceCapabilitiesKHR(VkPhysicalDevice physicalDevice,
|
|
||||||
VkSurfaceKHR surface,
|
|
||||||
VkSurfaceCapabilitiesKHR *pSurfaceCapabilities);
|
|
||||||
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceSurfaceFormatsKHR(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface,
|
|
||||||
uint32_t *pSurfaceFormatCount,
|
|
||||||
VkSurfaceFormatKHR *pSurfaceFormats);
|
|
||||||
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceSurfacePresentModesKHR(VkPhysicalDevice physicalDevice,
|
|
||||||
VkSurfaceKHR surface, uint32_t *pPresentModeCount,
|
|
||||||
VkPresentModeKHR *pPresentModes);
|
|
||||||
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_GetDeviceGroupSurfacePresentModesKHR(
|
|
||||||
VkDevice device,
|
|
||||||
VkSurfaceKHR surface,
|
|
||||||
VkDeviceGroupPresentModeFlagsKHR* pModes);
|
|
||||||
|
|
||||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateWin32SurfaceKHR(VkInstance instance, const VkWin32SurfaceCreateInfoKHR *pCreateInfo,
|
|
||||||
const VkAllocationCallbacks *pAllocator, VkSurfaceKHR *pSurface);
|
|
||||||
VKAPI_ATTR VkBool32 VKAPI_CALL terminator_GetPhysicalDeviceWin32PresentationSupportKHR(VkPhysicalDevice physicalDevice,
|
|
||||||
uint32_t queueFamilyIndex);
|
|
||||||
#endif
|
|
||||||
#ifdef VK_USE_PLATFORM_WAYLAND_KHR
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateWaylandSurfaceKHR(VkInstance instance,
|
|
||||||
const VkWaylandSurfaceCreateInfoKHR *pCreateInfo,
|
|
||||||
const VkAllocationCallbacks *pAllocator, VkSurfaceKHR *pSurface);
|
|
||||||
VKAPI_ATTR VkBool32 VKAPI_CALL terminator_GetPhysicalDeviceWaylandPresentationSupportKHR(VkPhysicalDevice physicalDevice,
|
|
||||||
uint32_t queueFamilyIndex,
|
|
||||||
struct wl_display *display);
|
|
||||||
#endif
|
|
||||||
#ifdef VK_USE_PLATFORM_XCB_KHR
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateXcbSurfaceKHR(VkInstance instance, const VkXcbSurfaceCreateInfoKHR *pCreateInfo,
|
|
||||||
const VkAllocationCallbacks *pAllocator, VkSurfaceKHR *pSurface);
|
|
||||||
|
|
||||||
VKAPI_ATTR VkBool32 VKAPI_CALL terminator_GetPhysicalDeviceXcbPresentationSupportKHR(VkPhysicalDevice physicalDevice,
|
|
||||||
uint32_t queueFamilyIndex,
|
|
||||||
xcb_connection_t *connection,
|
|
||||||
xcb_visualid_t visual_id);
|
|
||||||
#endif
|
|
||||||
#ifdef VK_USE_PLATFORM_XLIB_KHR
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateXlibSurfaceKHR(VkInstance instance, const VkXlibSurfaceCreateInfoKHR *pCreateInfo,
|
|
||||||
const VkAllocationCallbacks *pAllocator, VkSurfaceKHR *pSurface);
|
|
||||||
VKAPI_ATTR VkBool32 VKAPI_CALL terminator_GetPhysicalDeviceXlibPresentationSupportKHR(VkPhysicalDevice physicalDevice,
|
|
||||||
uint32_t queueFamilyIndex, Display *dpy,
|
|
||||||
VisualID visualID);
|
|
||||||
#endif
|
|
||||||
#ifdef VK_USE_PLATFORM_DIRECTFB_EXT
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateDirectFBSurfaceEXT(VkInstance instance,
|
|
||||||
const VkDirectFBSurfaceCreateInfoEXT *pCreateInfo,
|
|
||||||
const VkAllocationCallbacks *pAllocator, VkSurfaceKHR *pSurface);
|
|
||||||
VKAPI_ATTR VkBool32 VKAPI_CALL terminator_GetPhysicalDeviceDirectFBPresentationSupportEXT(VkPhysicalDevice physicalDevice,
|
|
||||||
uint32_t queueFamilyIndex,
|
|
||||||
IDirectFB *dfb);
|
|
||||||
#endif
|
|
||||||
#ifdef VK_USE_PLATFORM_MACOS_MVK
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateMacOSSurfaceMVK(VkInstance instance, const VkMacOSSurfaceCreateInfoMVK *pCreateInfo,
|
|
||||||
const VkAllocationCallbacks *pAllocator, VkSurfaceKHR *pSurface);
|
|
||||||
#endif
|
|
||||||
#ifdef VK_USE_PLATFORM_IOS_MVK
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateIOSSurfaceMVK(VkInstance instance, const VkIOSSurfaceCreateInfoMVK *pCreateInfo,
|
|
||||||
const VkAllocationCallbacks *pAllocator, VkSurfaceKHR *pSurface);
|
|
||||||
#endif
|
|
||||||
#ifdef VK_USE_PLATFORM_GGP
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL
|
|
||||||
terminator_CreateStreamDescriptorSurfaceGGP(VkInstance instance, const VkStreamDescriptorSurfaceCreateInfoGGP *pCreateInfo,
|
|
||||||
const VkAllocationCallbacks *pAllocator, VkSurfaceKHR *pSurface);
|
|
||||||
#endif
|
|
||||||
#if defined(VK_USE_PLATFORM_METAL_EXT)
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateMetalSurfaceEXT(VkInstance instance, const VkMetalSurfaceCreateInfoEXT *pCreateInfo,
|
|
||||||
const VkAllocationCallbacks *pAllocator, VkSurfaceKHR *pSurface);
|
|
||||||
#endif
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceDisplayPropertiesKHR(VkPhysicalDevice physicalDevice,
|
|
||||||
uint32_t *pPropertyCount,
|
|
||||||
VkDisplayPropertiesKHR *pProperties);
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceDisplayPlanePropertiesKHR(VkPhysicalDevice physicalDevice,
|
|
||||||
uint32_t *pPropertyCount,
|
|
||||||
VkDisplayPlanePropertiesKHR *pProperties);
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_GetDisplayPlaneSupportedDisplaysKHR(VkPhysicalDevice physicalDevice, uint32_t planeIndex,
|
|
||||||
uint32_t *pDisplayCount, VkDisplayKHR *pDisplays);
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_GetDisplayModePropertiesKHR(VkPhysicalDevice physicalDevice, VkDisplayKHR display,
|
|
||||||
uint32_t *pPropertyCount,
|
|
||||||
VkDisplayModePropertiesKHR *pProperties);
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateDisplayModeKHR(VkPhysicalDevice physicalDevice, VkDisplayKHR display,
|
|
||||||
const VkDisplayModeCreateInfoKHR *pCreateInfo,
|
|
||||||
const VkAllocationCallbacks *pAllocator, VkDisplayModeKHR *pMode);
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_GetDisplayPlaneCapabilitiesKHR(VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode,
|
|
||||||
uint32_t planeIndex,
|
|
||||||
VkDisplayPlaneCapabilitiesKHR *pCapabilities);
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateDisplayPlaneSurfaceKHR(VkInstance instance,
|
|
||||||
const VkDisplaySurfaceCreateInfoKHR *pCreateInfo,
|
|
||||||
const VkAllocationCallbacks *pAllocator,
|
|
||||||
VkSurfaceKHR *pSurface);
|
|
||||||
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateSharedSwapchainsKHR(VkDevice device, uint32_t swapchainCount,
|
|
||||||
const VkSwapchainCreateInfoKHR *pCreateInfos,
|
|
||||||
const VkAllocationCallbacks *pAllocator,
|
|
||||||
VkSwapchainKHR *pSwapchains);
|
|
||||||
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDevicePresentRectanglesKHR(VkPhysicalDevice physicalDevice,
|
|
||||||
VkSurfaceKHR surface,
|
|
||||||
uint32_t* pRectCount,
|
|
||||||
VkRect2D* pRects);
|
|
||||||
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceDisplayProperties2KHR(VkPhysicalDevice physicalDevice,
|
|
||||||
uint32_t *pPropertyCount,
|
|
||||||
VkDisplayProperties2KHR *pProperties);
|
|
||||||
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceDisplayPlaneProperties2KHR(VkPhysicalDevice physicalDevice,
|
|
||||||
uint32_t *pPropertyCount,
|
|
||||||
VkDisplayPlaneProperties2KHR *pProperties);
|
|
||||||
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_GetDisplayModeProperties2KHR(VkPhysicalDevice physicalDevice, VkDisplayKHR display,
|
|
||||||
uint32_t *pPropertyCount,
|
|
||||||
VkDisplayModeProperties2KHR *pProperties);
|
|
||||||
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_GetDisplayPlaneCapabilities2KHR(VkPhysicalDevice physicalDevice,
|
|
||||||
const VkDisplayPlaneInfo2KHR *pDisplayPlaneInfo,
|
|
||||||
VkDisplayPlaneCapabilities2KHR *pCapabilities);
|
|
||||||
#ifdef VK_USE_PLATFORM_FUCHSIA
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateImagePipeSurfaceFUCHSIA(VkInstance instance, const VkImagePipeSurfaceCreateInfoFUCHSIA *pCreateInfo,
|
|
||||||
const VkAllocationCallbacks *pAllocator, VkSurfaceKHR *pSurface);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceSurfaceCapabilities2KHR(
|
|
||||||
VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR *pSurfaceInfo,
|
|
||||||
VkSurfaceCapabilities2KHR *pSurfaceCapabilities);
|
|
||||||
|
|
||||||
VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceSurfaceFormats2KHR(VkPhysicalDevice physicalDevice,
|
|
||||||
const VkPhysicalDeviceSurfaceInfo2KHR *pSurfaceInfo,
|
|
||||||
uint32_t *pSurfaceFormatCount,
|
|
||||||
VkSurfaceFormat2KHR *pSurfaceFormats);
|
|
||||||
|
|
||||||
#endif // WSI_H
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
|
@ -1,56 +0,0 @@
|
||||||
#ifndef VULKAN_BETA_H_
|
|
||||||
#define VULKAN_BETA_H_ 1
|
|
||||||
|
|
||||||
/*
|
|
||||||
** Copyright (c) 2015-2020 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_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;
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -1,47 +0,0 @@
|
||||||
#ifndef VULKAN_FUCHSIA_H_
|
|
||||||
#define VULKAN_FUCHSIA_H_ 1
|
|
||||||
|
|
||||||
/*
|
|
||||||
** Copyright (c) 2015-2020 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
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -1,54 +0,0 @@
|
||||||
#ifndef VULKAN_METAL_H_
|
|
||||||
#define VULKAN_METAL_H_ 1
|
|
||||||
|
|
||||||
/*
|
|
||||||
** Copyright (c) 2015-2020 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
|
|
Loading…
Reference in New Issue