mirror of
https://github.com/KhronosGroup/Vulkan-Headers.git
synced 2025-04-05 13:14:58 +00:00
Compare commits
16 commits
Author | SHA1 | Date | |
---|---|---|---|
|
5ceb9ed481 | ||
|
2ac81691ba | ||
|
a523083f72 | ||
|
cb28cd1819 | ||
|
24ce771ec1 | ||
|
cafcda9360 | ||
|
2b1e9e7409 | ||
|
a72b4466b3 | ||
|
fdc7404466 | ||
|
9417d66dcf | ||
|
78c359741d | ||
|
d64e9e156a | ||
|
cacef3039d | ||
|
0f0cfd88d7 | ||
|
952f776f65 | ||
|
234c4b7370 |
33 changed files with 34222 additions and 4809 deletions
56
.github/workflows/ci.yml
vendored
56
.github/workflows/ci.yml
vendored
|
@ -21,7 +21,7 @@ jobs:
|
|||
strategy:
|
||||
matrix:
|
||||
os: [ ubuntu-latest, macos-latest ]
|
||||
cmake-version: [ '3.15', 'latest']
|
||||
cmake-version: [ '3.22.1', 'latest']
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: lukka/get-cmake@latest
|
||||
|
@ -39,7 +39,7 @@ jobs:
|
|||
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name
|
||||
strategy:
|
||||
matrix:
|
||||
cmake-version: [ '3.15', 'latest']
|
||||
cmake-version: [ '3.22.1', 'latest']
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: lukka/get-cmake@latest
|
||||
|
@ -74,6 +74,58 @@ jobs:
|
|||
- run: ctest --output-on-failure
|
||||
working-directory: build
|
||||
|
||||
cmake-unix-modules:
|
||||
runs-on: ${{ matrix.os }}
|
||||
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name
|
||||
strategy:
|
||||
matrix:
|
||||
os: [ ubuntu-latest ]
|
||||
cmake-version: [ 'latest' ]
|
||||
compiler: [ clang++-18 ]
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: lukka/get-cmake@latest
|
||||
with:
|
||||
cmakeVersion: ${{ matrix.cmake-version }}
|
||||
- uses: ilammy/msvc-dev-cmd@v1
|
||||
- run: |
|
||||
cmake -S . -B build \
|
||||
-D VULKAN_HEADERS_ENABLE_TESTS=ON \
|
||||
-D VULKAN_HEADERS_ENABLE_INSTALL=ON \
|
||||
-D VULKAN_HEADERS_ENABLE_MODULE=ON \
|
||||
-D VULKAN_HEADERS_ENABLE_MODULE_STD=OFF \
|
||||
-D CMAKE_CXX_COMPILER=${{ matrix.compiler }} \
|
||||
-G Ninja
|
||||
- run: cmake --build ./build
|
||||
- run: cmake --install build/ --prefix build/install
|
||||
- run: CXX=${{ matrix.compiler }} ctest --output-on-failure
|
||||
working-directory: build
|
||||
|
||||
cmake-windows-modules:
|
||||
runs-on: ${{ matrix.os }}
|
||||
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name
|
||||
strategy:
|
||||
matrix:
|
||||
os: [ windows-latest ]
|
||||
cmake-version: [ 'latest' ]
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: lukka/get-cmake@latest
|
||||
with:
|
||||
cmakeVersion: ${{ matrix.cmake-version }}
|
||||
- uses: ilammy/msvc-dev-cmd@v1
|
||||
- run: |
|
||||
cmake -S . -B build `
|
||||
-D VULKAN_HEADERS_ENABLE_TESTS=ON `
|
||||
-D VULKAN_HEADERS_ENABLE_INSTALL=ON `
|
||||
-D VULKAN_HEADERS_ENABLE_MODULE=ON `
|
||||
-D VULKAN_HEADERS_ENABLE_MODULE_STD=OFF `
|
||||
-G Ninja
|
||||
- run: cmake --build ./build
|
||||
- run: cmake --install build/ --prefix build/install
|
||||
- run: ctest --output-on-failure
|
||||
working-directory: build
|
||||
|
||||
reuse:
|
||||
runs-on: ubuntu-latest
|
||||
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name
|
||||
|
|
5
BUILD.gn
5
BUILD.gn
|
@ -13,7 +13,10 @@ config("vulkan_headers_config") {
|
|||
defines += [ "VK_USE_PLATFORM_WIN32_KHR" ]
|
||||
}
|
||||
if (defined(vulkan_use_x11) && vulkan_use_x11) {
|
||||
defines += [ "VK_USE_PLATFORM_XCB_KHR" ]
|
||||
defines += [
|
||||
"VK_USE_PLATFORM_XCB_KHR",
|
||||
"VK_USE_PLATFORM_XLIB_KHR",
|
||||
]
|
||||
}
|
||||
if (defined(vulkan_use_wayland) && vulkan_use_wayland) {
|
||||
defines += [ "VK_USE_PLATFORM_WAYLAND_KHR" ]
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
#
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# ~~~
|
||||
cmake_minimum_required(VERSION 3.15)
|
||||
cmake_minimum_required(VERSION 3.22.1)
|
||||
|
||||
# NOTE: Parsing the version like this is suboptimal but neccessary due to our release process:
|
||||
# https://github.com/KhronosGroup/Vulkan-Headers/pull/346
|
||||
|
@ -38,48 +38,68 @@ vlk_get_header_version()
|
|||
|
||||
project(VULKAN_HEADERS LANGUAGES C CXX VERSION ${VK_VERSION_STRING})
|
||||
|
||||
# options for Vulkan-Headers and the Vulkan-Hpp C++20 module
|
||||
option(VULKAN_HEADERS_ENABLE_TESTS "Test Vulkan-Headers" ${PROJECT_IS_TOP_LEVEL})
|
||||
option(VULKAN_HEADERS_ENABLE_INSTALL "Install Vulkan-Headers" ${PROJECT_IS_TOP_LEVEL})
|
||||
option(VULKAN_HEADERS_ENABLE_MODULE "Enables building of the Vulkan C++20 module; requires minimum CMake version 3.28" OFF)
|
||||
option(VULKAN_HEADERS_ENABLE_MODULE_STD "Enables building of the Vulkan C++20 module with import std; requires minimum CMake version 3.30" OFF)
|
||||
|
||||
# set up Vulkan-Headers
|
||||
add_library(Vulkan-Headers INTERFACE)
|
||||
add_library(Vulkan::Headers ALIAS Vulkan-Headers)
|
||||
target_include_directories(Vulkan-Headers INTERFACE $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>)
|
||||
|
||||
if ((CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" AND (MSVC_VERSION GREATER_EQUAL "1941")) OR
|
||||
# clang-cl doesn't currently support modules
|
||||
(CMAKE_CXX_COMPILER_ID STREQUAL "Clang"
|
||||
AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "16.0"
|
||||
AND (NOT CMAKE_C_COMPILER_FRONTEND_VARIANT MATCHES "MSVC")
|
||||
AND (NOT CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS STREQUAL CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS-NOTFOUND)) OR
|
||||
(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "14.0"))
|
||||
set(COMPILER_SUPPORTS_CXX_MODULES TRUE)
|
||||
endif()
|
||||
|
||||
option(VULKAN_HEADERS_ENABLE_MODULE "Enables building of the Vulkan C++ module" OFF)
|
||||
|
||||
if (VULKAN_HEADERS_ENABLE_MODULE AND (NOT COMPILER_SUPPORTS_CXX_MODULES OR CMAKE_VERSION VERSION_LESS "3.28"))
|
||||
message(WARNING "Vulkan C++ module support is requested but was disabled due to lacking support on this platform")
|
||||
endif()
|
||||
|
||||
if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.28" AND VULKAN_HEADERS_ENABLE_MODULE AND COMPILER_SUPPORTS_CXX_MODULES)
|
||||
add_library(Vulkan-Module)
|
||||
add_library(Vulkan::VulkanHppModule ALIAS Vulkan-Module)
|
||||
target_sources(Vulkan-Module
|
||||
PUBLIC
|
||||
FILE_SET module
|
||||
TYPE CXX_MODULES
|
||||
BASE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/include"
|
||||
FILES "${CMAKE_CURRENT_SOURCE_DIR}/include/vulkan/vulkan.cppm"
|
||||
if (VULKAN_HEADERS_ENABLE_MODULE)
|
||||
# check for compiler support
|
||||
if ((CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" AND (MSVC_VERSION GREATER_EQUAL "1941")) OR
|
||||
# clang-cl doesn't currently support modules
|
||||
(CMAKE_CXX_COMPILER_ID STREQUAL "Clang"
|
||||
AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "16.0"
|
||||
AND (NOT CMAKE_C_COMPILER_FRONTEND_VARIANT MATCHES "MSVC")
|
||||
AND (NOT CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS STREQUAL CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS-NOTFOUND)) OR
|
||||
(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "14.0")
|
||||
)
|
||||
target_compile_features(Vulkan-Module PUBLIC cxx_std_20)
|
||||
target_link_libraries(Vulkan-Module PUBLIC Vulkan-Headers)
|
||||
endif ()
|
||||
# check for CMake support
|
||||
if(VULKAN_HEADERS_ENABLE_MODULE_STD AND CMAKE_VERSION VERSION_LESS "3.30")
|
||||
message(FATAL_ERROR "Vulkan-Hpp: C++20 module with import std requires CMake 3.30 or later")
|
||||
elseif (CMAKE_VERSION VERSION_LESS "3.28")
|
||||
message(FATAL_ERROR "Vulkan-Hpp: C++20 module requires CMake 3.28 or later")
|
||||
endif()
|
||||
|
||||
# set up Vulkan-HppModule
|
||||
add_library(Vulkan-HppModule)
|
||||
add_library(Vulkan::HppModule ALIAS Vulkan-HppModule)
|
||||
target_sources(Vulkan-HppModule
|
||||
PUBLIC
|
||||
FILE_SET module
|
||||
TYPE CXX_MODULES
|
||||
FILES "${CMAKE_CURRENT_SOURCE_DIR}/include/vulkan/vulkan.cppm")
|
||||
if (VULKAN_HEADERS_ENABLE_MODULE_STD)
|
||||
target_compile_features(Vulkan-HppModule
|
||||
PRIVATE cxx_std_23
|
||||
INTERFACE cxx_std_20) # only C++20 is required to consume this module
|
||||
set_target_properties(Vulkan-HppModule PROPERTIES CXX_MODULE_STD ON)
|
||||
else()
|
||||
target_compile_features(Vulkan-HppModule PUBLIC cxx_std_20)
|
||||
endif()
|
||||
target_link_libraries(Vulkan-HppModule PUBLIC Vulkan::Headers)
|
||||
|
||||
if (CMAKE_VERSION VERSION_LESS "3.21")
|
||||
# https://cmake.org/cmake/help/latest/variable/PROJECT_IS_TOP_LEVEL.html
|
||||
string(COMPARE EQUAL ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_SOURCE_DIR} PROJECT_IS_TOP_LEVEL)
|
||||
# Clang 16's module support can be broken with extensions enabled
|
||||
if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL "16.0")
|
||||
set_target_properties(Vulkan-HppModule PROPERTIES CXX_EXTENSIONS OFF)
|
||||
endif()
|
||||
|
||||
# set up fallback targets to notify about name deprecation
|
||||
add_library(Vulkan-Module INTERFACE)
|
||||
add_library(Vulkan::Module ALIAS Vulkan-Module)
|
||||
target_link_libraries(Vulkan-Module INTERFACE Vulkan::HppModule)
|
||||
set_target_properties(Vulkan-Module PROPERTIES
|
||||
DEPRECATION "The Vulkan-Module and Vulkan::Module targets have been deprecated by the Vulkan-HppModule and Vulkan::HppModule targets respectively and will be removed at a future date.")
|
||||
else()
|
||||
message(FATAL_ERROR "Vulkan-Hpp: C++20 module support is requested but was disabled due to lacking compiler support on this platform")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
option(VULKAN_HEADERS_ENABLE_TESTS "Test Vulkan-Headers" ${PROJECT_IS_TOP_LEVEL})
|
||||
option(VULKAN_HEADERS_ENABLE_INSTALL "Install Vulkan-Headers" ${PROJECT_IS_TOP_LEVEL})
|
||||
|
||||
if (VULKAN_HEADERS_ENABLE_TESTS)
|
||||
enable_testing() # This is only effective in the top level CMakeLists.txt file.
|
||||
add_subdirectory(tests)
|
||||
|
|
|
@ -57,6 +57,7 @@ update-headers:
|
|||
|
||||
# Top-level scripts / XML to install
|
||||
SCRIPTS = \
|
||||
$(SPEC)/scripts/base_generator.py \
|
||||
$(SPEC)/scripts/cgenerator.py \
|
||||
$(SPEC)/scripts/generator.py \
|
||||
$(SPEC)/scripts/parse_dependency.py \
|
||||
|
@ -64,6 +65,7 @@ SCRIPTS = \
|
|||
$(SPEC)/scripts/stripAPI.py \
|
||||
$(SPEC)/scripts/apiconventions.py \
|
||||
$(SPEC)/scripts/vkconventions.py \
|
||||
$(SPEC)/scripts/vulkan_object.py \
|
||||
$(SPEC)/xml/vk.xml \
|
||||
$(SPEC)/xml/video.xml \
|
||||
$(REGISTRY)/specs/latest/validation/validusage.json
|
||||
|
|
|
@ -22,7 +22,9 @@ module;
|
|||
#include <vulkan/vulkan_hash.hpp>
|
||||
#include <vulkan/vulkan_raii.hpp>
|
||||
#include <vulkan/vulkan_shared.hpp>
|
||||
#include <vulkan/vulkan_to_string.hpp>
|
||||
#ifndef VULKAN_HPP_NO_TO_STRING
|
||||
# include <vulkan/vulkan_to_string.hpp>
|
||||
#endif
|
||||
|
||||
export module vulkan_hpp;
|
||||
|
||||
|
@ -751,6 +753,10 @@ export namespace VULKAN_HPP_NAMESPACE
|
|||
using VULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigFlagBitsNV;
|
||||
using VULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigFlagsNV;
|
||||
|
||||
//=== VK_QCOM_tile_shading ===
|
||||
using VULKAN_HPP_NAMESPACE::TileShadingRenderPassFlagBitsQCOM;
|
||||
using VULKAN_HPP_NAMESPACE::TileShadingRenderPassFlagsQCOM;
|
||||
|
||||
#if defined( VK_USE_PLATFORM_METAL_EXT )
|
||||
//=== VK_EXT_metal_objects ===
|
||||
using VULKAN_HPP_NAMESPACE::ExportMetalObjectTypeFlagBitsEXT;
|
||||
|
@ -1553,6 +1559,10 @@ export namespace VULKAN_HPP_NAMESPACE
|
|||
using VULKAN_HPP_NAMESPACE::EXTShaderStencilExportExtensionName;
|
||||
using VULKAN_HPP_NAMESPACE::EXTShaderStencilExportSpecVersion;
|
||||
|
||||
//=== VK_KHR_shader_bfloat16 ===
|
||||
using VULKAN_HPP_NAMESPACE::KHRShaderBfloat16ExtensionName;
|
||||
using VULKAN_HPP_NAMESPACE::KHRShaderBfloat16SpecVersion;
|
||||
|
||||
//=== VK_EXT_sample_locations ===
|
||||
using VULKAN_HPP_NAMESPACE::EXTSampleLocationsExtensionName;
|
||||
using VULKAN_HPP_NAMESPACE::EXTSampleLocationsSpecVersion;
|
||||
|
@ -2086,6 +2096,10 @@ export namespace VULKAN_HPP_NAMESPACE
|
|||
using VULKAN_HPP_NAMESPACE::NVCudaKernelLaunchSpecVersion;
|
||||
#endif /*VK_ENABLE_BETA_EXTENSIONS*/
|
||||
|
||||
//=== VK_QCOM_tile_shading ===
|
||||
using VULKAN_HPP_NAMESPACE::QCOMTileShadingExtensionName;
|
||||
using VULKAN_HPP_NAMESPACE::QCOMTileShadingSpecVersion;
|
||||
|
||||
//=== VK_NV_low_latency ===
|
||||
using VULKAN_HPP_NAMESPACE::NVLowLatencyExtensionName;
|
||||
using VULKAN_HPP_NAMESPACE::NVLowLatencySpecVersion;
|
||||
|
@ -2647,6 +2661,10 @@ export namespace VULKAN_HPP_NAMESPACE
|
|||
using VULKAN_HPP_NAMESPACE::NVRawAccessChainsExtensionName;
|
||||
using VULKAN_HPP_NAMESPACE::NVRawAccessChainsSpecVersion;
|
||||
|
||||
//=== VK_NV_external_compute_queue ===
|
||||
using VULKAN_HPP_NAMESPACE::NVExternalComputeQueueExtensionName;
|
||||
using VULKAN_HPP_NAMESPACE::NVExternalComputeQueueSpecVersion;
|
||||
|
||||
//=== VK_KHR_shader_relaxed_extended_instruction ===
|
||||
using VULKAN_HPP_NAMESPACE::KHRShaderRelaxedExtendedInstructionExtensionName;
|
||||
using VULKAN_HPP_NAMESPACE::KHRShaderRelaxedExtendedInstructionSpecVersion;
|
||||
|
@ -2726,6 +2744,16 @@ export namespace VULKAN_HPP_NAMESPACE
|
|||
using VULKAN_HPP_NAMESPACE::EXTVertexAttributeRobustnessExtensionName;
|
||||
using VULKAN_HPP_NAMESPACE::EXTVertexAttributeRobustnessSpecVersion;
|
||||
|
||||
#if defined( VK_ENABLE_BETA_EXTENSIONS )
|
||||
//=== VK_NV_present_metering ===
|
||||
using VULKAN_HPP_NAMESPACE::NVPresentMeteringExtensionName;
|
||||
using VULKAN_HPP_NAMESPACE::NVPresentMeteringSpecVersion;
|
||||
#endif /*VK_ENABLE_BETA_EXTENSIONS*/
|
||||
|
||||
//=== VK_EXT_fragment_density_map_offset ===
|
||||
using VULKAN_HPP_NAMESPACE::EXTFragmentDensityMapOffsetExtensionName;
|
||||
using VULKAN_HPP_NAMESPACE::EXTFragmentDensityMapOffsetSpecVersion;
|
||||
|
||||
//========================
|
||||
//=== CONSTEXPR VALUEs ===
|
||||
//========================
|
||||
|
@ -3715,6 +3743,9 @@ export namespace VULKAN_HPP_NAMESPACE
|
|||
using VULKAN_HPP_NAMESPACE::AttachmentSampleCountInfoAMD;
|
||||
using VULKAN_HPP_NAMESPACE::AttachmentSampleCountInfoNV;
|
||||
|
||||
//=== VK_KHR_shader_bfloat16 ===
|
||||
using VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderBfloat16FeaturesKHR;
|
||||
|
||||
//=== VK_EXT_sample_locations ===
|
||||
using VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT;
|
||||
using VULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT;
|
||||
|
@ -4113,6 +4144,14 @@ export namespace VULKAN_HPP_NAMESPACE
|
|||
using VULKAN_HPP_NAMESPACE::PhysicalDeviceCudaKernelLaunchPropertiesNV;
|
||||
#endif /*VK_ENABLE_BETA_EXTENSIONS*/
|
||||
|
||||
//=== VK_QCOM_tile_shading ===
|
||||
using VULKAN_HPP_NAMESPACE::DispatchTileInfoQCOM;
|
||||
using VULKAN_HPP_NAMESPACE::PerTileBeginInfoQCOM;
|
||||
using VULKAN_HPP_NAMESPACE::PerTileEndInfoQCOM;
|
||||
using VULKAN_HPP_NAMESPACE::PhysicalDeviceTileShadingFeaturesQCOM;
|
||||
using VULKAN_HPP_NAMESPACE::PhysicalDeviceTileShadingPropertiesQCOM;
|
||||
using VULKAN_HPP_NAMESPACE::RenderPassTileShadingCreateInfoQCOM;
|
||||
|
||||
//=== VK_NV_low_latency ===
|
||||
using VULKAN_HPP_NAMESPACE::QueryLowLatencySupportNV;
|
||||
|
||||
|
@ -4394,11 +4433,6 @@ export namespace VULKAN_HPP_NAMESPACE
|
|||
using VULKAN_HPP_NAMESPACE::RenderPassStripeInfoARM;
|
||||
using VULKAN_HPP_NAMESPACE::RenderPassStripeSubmitInfoARM;
|
||||
|
||||
//=== VK_QCOM_fragment_density_map_offset ===
|
||||
using VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM;
|
||||
using VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM;
|
||||
using VULKAN_HPP_NAMESPACE::SubpassFragmentDensityMapOffsetEndInfoQCOM;
|
||||
|
||||
//=== VK_NV_copy_memory_indirect ===
|
||||
using VULKAN_HPP_NAMESPACE::CopyMemoryIndirectCommandNV;
|
||||
using VULKAN_HPP_NAMESPACE::CopyMemoryToImageIndirectCommandNV;
|
||||
|
@ -4683,6 +4717,12 @@ export namespace VULKAN_HPP_NAMESPACE
|
|||
//=== VK_NV_raw_access_chains ===
|
||||
using VULKAN_HPP_NAMESPACE::PhysicalDeviceRawAccessChainsFeaturesNV;
|
||||
|
||||
//=== VK_NV_external_compute_queue ===
|
||||
using VULKAN_HPP_NAMESPACE::ExternalComputeQueueCreateInfoNV;
|
||||
using VULKAN_HPP_NAMESPACE::ExternalComputeQueueDataParamsNV;
|
||||
using VULKAN_HPP_NAMESPACE::ExternalComputeQueueDeviceCreateInfoNV;
|
||||
using VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalComputeQueuePropertiesNV;
|
||||
|
||||
//=== VK_KHR_shader_relaxed_extended_instruction ===
|
||||
using VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR;
|
||||
|
||||
|
@ -4806,6 +4846,21 @@ export namespace VULKAN_HPP_NAMESPACE
|
|||
//=== VK_EXT_vertex_attribute_robustness ===
|
||||
using VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeRobustnessFeaturesEXT;
|
||||
|
||||
#if defined( VK_ENABLE_BETA_EXTENSIONS )
|
||||
//=== VK_NV_present_metering ===
|
||||
using VULKAN_HPP_NAMESPACE::PhysicalDevicePresentMeteringFeaturesNV;
|
||||
using VULKAN_HPP_NAMESPACE::SetPresentConfigNV;
|
||||
#endif /*VK_ENABLE_BETA_EXTENSIONS*/
|
||||
|
||||
//=== VK_EXT_fragment_density_map_offset ===
|
||||
using VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT;
|
||||
using VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM;
|
||||
using VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT;
|
||||
using VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM;
|
||||
using VULKAN_HPP_NAMESPACE::RenderingEndInfoEXT;
|
||||
using VULKAN_HPP_NAMESPACE::RenderPassFragmentDensityMapOffsetEndInfoEXT;
|
||||
using VULKAN_HPP_NAMESPACE::SubpassFragmentDensityMapOffsetEndInfoQCOM;
|
||||
|
||||
//===============
|
||||
//=== HANDLEs ===
|
||||
//===============
|
||||
|
@ -4911,6 +4966,9 @@ export namespace VULKAN_HPP_NAMESPACE
|
|||
//=== VK_KHR_pipeline_binary ===
|
||||
using VULKAN_HPP_NAMESPACE::PipelineBinaryKHR;
|
||||
|
||||
//=== VK_NV_external_compute_queue ===
|
||||
using VULKAN_HPP_NAMESPACE::ExternalComputeQueueNV;
|
||||
|
||||
//=== VK_EXT_device_generated_commands ===
|
||||
using VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutEXT;
|
||||
using VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT;
|
||||
|
@ -5017,6 +5075,9 @@ export namespace VULKAN_HPP_NAMESPACE
|
|||
//=== VK_KHR_pipeline_binary ===
|
||||
using VULKAN_HPP_NAMESPACE::UniquePipelineBinaryKHR;
|
||||
|
||||
//=== VK_NV_external_compute_queue ===
|
||||
using VULKAN_HPP_NAMESPACE::UniqueExternalComputeQueueNV;
|
||||
|
||||
//=== VK_EXT_device_generated_commands ===
|
||||
using VULKAN_HPP_NAMESPACE::UniqueHandleTraits;
|
||||
using VULKAN_HPP_NAMESPACE::UniqueIndirectCommandsLayoutEXT;
|
||||
|
@ -5128,6 +5189,9 @@ export namespace VULKAN_HPP_NAMESPACE
|
|||
//=== VK_KHR_pipeline_binary ===
|
||||
using VULKAN_HPP_NAMESPACE::SharedPipelineBinaryKHR;
|
||||
|
||||
//=== VK_NV_external_compute_queue ===
|
||||
using VULKAN_HPP_NAMESPACE::SharedExternalComputeQueueNV;
|
||||
|
||||
//=== VK_EXT_device_generated_commands ===
|
||||
using VULKAN_HPP_NAMESPACE::SharedHandleTraits;
|
||||
using VULKAN_HPP_NAMESPACE::SharedIndirectCommandsLayoutEXT;
|
||||
|
@ -5323,6 +5387,9 @@ export namespace VULKAN_HPP_NAMESPACE
|
|||
using VULKAN_HPP_RAII_NAMESPACE::PipelineBinaryKHR;
|
||||
using VULKAN_HPP_RAII_NAMESPACE::PipelineBinaryKHRs;
|
||||
|
||||
//=== VK_NV_external_compute_queue ===
|
||||
using VULKAN_HPP_RAII_NAMESPACE::ExternalComputeQueueNV;
|
||||
|
||||
//=== VK_EXT_device_generated_commands ===
|
||||
using VULKAN_HPP_RAII_NAMESPACE::IndirectCommandsLayoutEXT;
|
||||
using VULKAN_HPP_RAII_NAMESPACE::IndirectExecutionSetEXT;
|
||||
|
@ -5495,6 +5562,10 @@ export namespace std
|
|||
template <>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::PipelineBinaryKHR>;
|
||||
|
||||
//=== VK_NV_external_compute_queue ===
|
||||
template <>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::ExternalComputeQueueNV>;
|
||||
|
||||
//=== VK_EXT_device_generated_commands ===
|
||||
template <>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutEXT>;
|
||||
|
@ -6757,6 +6828,10 @@ export namespace std
|
|||
template <>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::AttachmentSampleCountInfoAMD>;
|
||||
|
||||
//=== VK_KHR_shader_bfloat16 ===
|
||||
template <>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderBfloat16FeaturesKHR>;
|
||||
|
||||
//=== VK_EXT_sample_locations ===
|
||||
template <>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::SampleLocationEXT>;
|
||||
|
@ -7381,6 +7456,20 @@ export namespace std
|
|||
struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceCudaKernelLaunchPropertiesNV>;
|
||||
#endif /*VK_ENABLE_BETA_EXTENSIONS*/
|
||||
|
||||
//=== VK_QCOM_tile_shading ===
|
||||
template <>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceTileShadingFeaturesQCOM>;
|
||||
template <>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceTileShadingPropertiesQCOM>;
|
||||
template <>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::RenderPassTileShadingCreateInfoQCOM>;
|
||||
template <>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::PerTileBeginInfoQCOM>;
|
||||
template <>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::PerTileEndInfoQCOM>;
|
||||
template <>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::DispatchTileInfoQCOM>;
|
||||
|
||||
//=== VK_NV_low_latency ===
|
||||
template <>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::QueryLowLatencySupportNV>;
|
||||
|
@ -7817,14 +7906,6 @@ export namespace std
|
|||
template <>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::RenderPassStripeSubmitInfoARM>;
|
||||
|
||||
//=== VK_QCOM_fragment_density_map_offset ===
|
||||
template <>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM>;
|
||||
template <>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM>;
|
||||
template <>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::SubpassFragmentDensityMapOffsetEndInfoQCOM>;
|
||||
|
||||
//=== VK_NV_copy_memory_indirect ===
|
||||
template <>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::CopyMemoryIndirectCommandNV>;
|
||||
|
@ -8279,6 +8360,16 @@ export namespace std
|
|||
template <>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceRawAccessChainsFeaturesNV>;
|
||||
|
||||
//=== VK_NV_external_compute_queue ===
|
||||
template <>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::ExternalComputeQueueDeviceCreateInfoNV>;
|
||||
template <>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::ExternalComputeQueueCreateInfoNV>;
|
||||
template <>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::ExternalComputeQueueDataParamsNV>;
|
||||
template <>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalComputeQueuePropertiesNV>;
|
||||
|
||||
//=== VK_KHR_shader_relaxed_extended_instruction ===
|
||||
template <>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR>;
|
||||
|
@ -8483,8 +8574,34 @@ export namespace std
|
|||
template <>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeRobustnessFeaturesEXT>;
|
||||
|
||||
#if defined( VK_ENABLE_BETA_EXTENSIONS )
|
||||
//=== VK_NV_present_metering ===
|
||||
template <>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::SetPresentConfigNV>;
|
||||
template <>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::PhysicalDevicePresentMeteringFeaturesNV>;
|
||||
#endif /*VK_ENABLE_BETA_EXTENSIONS*/
|
||||
|
||||
//=== VK_EXT_fragment_density_map_offset ===
|
||||
template <>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::RenderingEndInfoEXT>;
|
||||
template <>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT>;
|
||||
template <>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT>;
|
||||
template <>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::RenderPassFragmentDensityMapOffsetEndInfoEXT>;
|
||||
|
||||
//=================================================================
|
||||
//=== Required exports for VULKAN_HPP_NAMESPACE::StructureChain ===
|
||||
//=================================================================
|
||||
|
||||
#if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
|
||||
using std::tuple_element;
|
||||
using std::tuple_size;
|
||||
#endif
|
||||
} // namespace std
|
||||
|
||||
// This VkFlags type is used as part of a bitfield in some structure.
|
||||
// As it that can't be mimiced by vk-data types, we need to export just that!!
|
||||
export VkGeometryInstanceFlagsKHR;
|
||||
// As it can't be mimicked by vk-data types, we need to export just that!!
|
||||
export using ::VkGeometryInstanceFlagsKHR;
|
|
@ -63,7 +63,7 @@ extern "C" __declspec( dllimport ) FARPROC __stdcall GetProcAddress( HINSTANCE h
|
|||
# include <span>
|
||||
#endif
|
||||
|
||||
static_assert( VK_HEADER_VERSION == 307, "Wrong VK_HEADER_VERSION!" );
|
||||
static_assert( VK_HEADER_VERSION == 312, "Wrong VK_HEADER_VERSION!" );
|
||||
|
||||
// <tuple> includes <sys/sysmacros.h> through some other header
|
||||
// this results in major(x) being resolved to gnu_dev_major(x)
|
||||
|
@ -81,7 +81,7 @@ static_assert( VK_HEADER_VERSION == 307, "Wrong VK_HEADER_VERSION!" );
|
|||
# undef MemoryBarrier
|
||||
#endif
|
||||
|
||||
// XLib.h defines True/False, which collides with our vk::True/vk::False
|
||||
// XLib.h defines True/False, which collides with our VULKAN_HPP_NAMESPACE::True/VULKAN_HPP_NAMESPACE::False
|
||||
// -> undef them and provide some namepace-secure constexpr
|
||||
#if defined( True )
|
||||
# undef True
|
||||
|
@ -4951,6 +4951,23 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
}
|
||||
# endif /*VK_ENABLE_BETA_EXTENSIONS*/
|
||||
|
||||
//=== VK_QCOM_tile_shading ===
|
||||
|
||||
void vkCmdDispatchTileQCOM( VkCommandBuffer commandBuffer ) const VULKAN_HPP_NOEXCEPT
|
||||
{
|
||||
return ::vkCmdDispatchTileQCOM( commandBuffer );
|
||||
}
|
||||
|
||||
void vkCmdBeginPerTileExecutionQCOM( VkCommandBuffer commandBuffer, const VkPerTileBeginInfoQCOM * pPerTileBeginInfo ) const VULKAN_HPP_NOEXCEPT
|
||||
{
|
||||
return ::vkCmdBeginPerTileExecutionQCOM( commandBuffer, pPerTileBeginInfo );
|
||||
}
|
||||
|
||||
void vkCmdEndPerTileExecutionQCOM( VkCommandBuffer commandBuffer, const VkPerTileEndInfoQCOM * pPerTileEndInfo ) const VULKAN_HPP_NOEXCEPT
|
||||
{
|
||||
return ::vkCmdEndPerTileExecutionQCOM( commandBuffer, pPerTileEndInfo );
|
||||
}
|
||||
|
||||
# if defined( VK_USE_PLATFORM_METAL_EXT )
|
||||
//=== VK_EXT_metal_objects ===
|
||||
|
||||
|
@ -6095,6 +6112,30 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
return ::vkCmdBindDescriptorBufferEmbeddedSamplers2EXT( commandBuffer, pBindDescriptorBufferEmbeddedSamplersInfo );
|
||||
}
|
||||
|
||||
//=== VK_NV_external_compute_queue ===
|
||||
|
||||
VkResult vkCreateExternalComputeQueueNV( VkDevice device,
|
||||
const VkExternalComputeQueueCreateInfoNV * pCreateInfo,
|
||||
const VkAllocationCallbacks * pAllocator,
|
||||
VkExternalComputeQueueNV * pExternalQueue ) const VULKAN_HPP_NOEXCEPT
|
||||
{
|
||||
return ::vkCreateExternalComputeQueueNV( device, pCreateInfo, pAllocator, pExternalQueue );
|
||||
}
|
||||
|
||||
void vkDestroyExternalComputeQueueNV( VkDevice device,
|
||||
VkExternalComputeQueueNV externalQueue,
|
||||
const VkAllocationCallbacks * pAllocator ) const VULKAN_HPP_NOEXCEPT
|
||||
{
|
||||
return ::vkDestroyExternalComputeQueueNV( device, externalQueue, pAllocator );
|
||||
}
|
||||
|
||||
void vkGetExternalComputeQueueDataNV( VkExternalComputeQueueNV externalQueue,
|
||||
VkExternalComputeQueueDataParamsNV * params,
|
||||
void * pData ) const VULKAN_HPP_NOEXCEPT
|
||||
{
|
||||
return ::vkGetExternalComputeQueueDataNV( externalQueue, params, pData );
|
||||
}
|
||||
|
||||
//=== VK_NV_cluster_acceleration_structure ===
|
||||
|
||||
void vkGetClusterAccelerationStructureBuildSizesNV( VkDevice device,
|
||||
|
@ -6219,6 +6260,13 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
return ::vkGetMemoryMetalHandlePropertiesEXT( device, handleType, pHandle, pMemoryMetalHandleProperties );
|
||||
}
|
||||
# endif /*VK_USE_PLATFORM_METAL_EXT*/
|
||||
|
||||
//=== VK_EXT_fragment_density_map_offset ===
|
||||
|
||||
void vkCmdEndRendering2EXT( VkCommandBuffer commandBuffer, const VkRenderingEndInfoEXT * pRenderingEndInfo ) const VULKAN_HPP_NOEXCEPT
|
||||
{
|
||||
return ::vkCmdEndRendering2EXT( commandBuffer, pRenderingEndInfo );
|
||||
}
|
||||
};
|
||||
|
||||
inline DispatchLoaderStatic & getDispatchLoaderStatic()
|
||||
|
@ -6252,9 +6300,9 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
public:
|
||||
ObjectDestroy() = default;
|
||||
|
||||
ObjectDestroy( OwnerType owner,
|
||||
Optional<const vk::AllocationCallbacks> allocationCallbacks VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT,
|
||||
Dispatch const & dispatch VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) VULKAN_HPP_NOEXCEPT
|
||||
ObjectDestroy( OwnerType owner,
|
||||
Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocationCallbacks VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT,
|
||||
Dispatch const & dispatch VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) VULKAN_HPP_NOEXCEPT
|
||||
: m_owner( owner )
|
||||
, m_allocationCallbacks( allocationCallbacks )
|
||||
, m_dispatch( &dispatch )
|
||||
|
@ -6266,7 +6314,7 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
return m_owner;
|
||||
}
|
||||
|
||||
Optional<const vk::AllocationCallbacks> getAllocator() const VULKAN_HPP_NOEXCEPT
|
||||
Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> getAllocator() const VULKAN_HPP_NOEXCEPT
|
||||
{
|
||||
return m_allocationCallbacks;
|
||||
}
|
||||
|
@ -6285,9 +6333,9 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
}
|
||||
|
||||
private:
|
||||
OwnerType m_owner = {};
|
||||
Optional<const vk::AllocationCallbacks> m_allocationCallbacks = nullptr;
|
||||
Dispatch const * m_dispatch = nullptr;
|
||||
OwnerType m_owner = {};
|
||||
Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> m_allocationCallbacks = nullptr;
|
||||
Dispatch const * m_dispatch = nullptr;
|
||||
};
|
||||
|
||||
class NoParent;
|
||||
|
@ -6298,14 +6346,14 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
public:
|
||||
ObjectDestroy() = default;
|
||||
|
||||
ObjectDestroy( Optional<const vk::AllocationCallbacks> allocationCallbacks,
|
||||
Dispatch const & dispatch VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) VULKAN_HPP_NOEXCEPT
|
||||
ObjectDestroy( Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocationCallbacks,
|
||||
Dispatch const & dispatch VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) VULKAN_HPP_NOEXCEPT
|
||||
: m_allocationCallbacks( allocationCallbacks )
|
||||
, m_dispatch( &dispatch )
|
||||
{
|
||||
}
|
||||
|
||||
Optional<const vk::AllocationCallbacks> getAllocator() const VULKAN_HPP_NOEXCEPT
|
||||
Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> getAllocator() const VULKAN_HPP_NOEXCEPT
|
||||
{
|
||||
return m_allocationCallbacks;
|
||||
}
|
||||
|
@ -6324,8 +6372,8 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
}
|
||||
|
||||
private:
|
||||
Optional<const vk::AllocationCallbacks> m_allocationCallbacks = nullptr;
|
||||
Dispatch const * m_dispatch = nullptr;
|
||||
Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> m_allocationCallbacks = nullptr;
|
||||
Dispatch const * m_dispatch = nullptr;
|
||||
};
|
||||
|
||||
template <typename OwnerType, typename Dispatch>
|
||||
|
@ -7799,6 +7847,10 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
VULKAN_HPP_CONSTEXPR_INLINE auto EXTShaderStencilExportExtensionName = VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME;
|
||||
VULKAN_HPP_CONSTEXPR_INLINE auto EXTShaderStencilExportSpecVersion = VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION;
|
||||
|
||||
//=== VK_KHR_shader_bfloat16 ===
|
||||
VULKAN_HPP_CONSTEXPR_INLINE auto KHRShaderBfloat16ExtensionName = VK_KHR_SHADER_BFLOAT16_EXTENSION_NAME;
|
||||
VULKAN_HPP_CONSTEXPR_INLINE auto KHRShaderBfloat16SpecVersion = VK_KHR_SHADER_BFLOAT16_SPEC_VERSION;
|
||||
|
||||
//=== VK_EXT_sample_locations ===
|
||||
VULKAN_HPP_CONSTEXPR_INLINE auto EXTSampleLocationsExtensionName = VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME;
|
||||
VULKAN_HPP_CONSTEXPR_INLINE auto EXTSampleLocationsSpecVersion = VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION;
|
||||
|
@ -8333,6 +8385,10 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
VULKAN_HPP_CONSTEXPR_INLINE auto NVCudaKernelLaunchSpecVersion = VK_NV_CUDA_KERNEL_LAUNCH_SPEC_VERSION;
|
||||
#endif /*VK_ENABLE_BETA_EXTENSIONS*/
|
||||
|
||||
//=== VK_QCOM_tile_shading ===
|
||||
VULKAN_HPP_CONSTEXPR_INLINE auto QCOMTileShadingExtensionName = VK_QCOM_TILE_SHADING_EXTENSION_NAME;
|
||||
VULKAN_HPP_CONSTEXPR_INLINE auto QCOMTileShadingSpecVersion = VK_QCOM_TILE_SHADING_SPEC_VERSION;
|
||||
|
||||
//=== VK_NV_low_latency ===
|
||||
VULKAN_HPP_CONSTEXPR_INLINE auto NVLowLatencyExtensionName = VK_NV_LOW_LATENCY_EXTENSION_NAME;
|
||||
VULKAN_HPP_CONSTEXPR_INLINE auto NVLowLatencySpecVersion = VK_NV_LOW_LATENCY_SPEC_VERSION;
|
||||
|
@ -8889,6 +8945,10 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
VULKAN_HPP_CONSTEXPR_INLINE auto NVRawAccessChainsExtensionName = VK_NV_RAW_ACCESS_CHAINS_EXTENSION_NAME;
|
||||
VULKAN_HPP_CONSTEXPR_INLINE auto NVRawAccessChainsSpecVersion = VK_NV_RAW_ACCESS_CHAINS_SPEC_VERSION;
|
||||
|
||||
//=== VK_NV_external_compute_queue ===
|
||||
VULKAN_HPP_CONSTEXPR_INLINE auto NVExternalComputeQueueExtensionName = VK_NV_EXTERNAL_COMPUTE_QUEUE_EXTENSION_NAME;
|
||||
VULKAN_HPP_CONSTEXPR_INLINE auto NVExternalComputeQueueSpecVersion = VK_NV_EXTERNAL_COMPUTE_QUEUE_SPEC_VERSION;
|
||||
|
||||
//=== VK_KHR_shader_relaxed_extended_instruction ===
|
||||
VULKAN_HPP_CONSTEXPR_INLINE auto KHRShaderRelaxedExtendedInstructionExtensionName = VK_KHR_SHADER_RELAXED_EXTENDED_INSTRUCTION_EXTENSION_NAME;
|
||||
VULKAN_HPP_CONSTEXPR_INLINE auto KHRShaderRelaxedExtendedInstructionSpecVersion = VK_KHR_SHADER_RELAXED_EXTENDED_INSTRUCTION_SPEC_VERSION;
|
||||
|
@ -8967,6 +9027,16 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
VULKAN_HPP_CONSTEXPR_INLINE auto EXTVertexAttributeRobustnessExtensionName = VK_EXT_VERTEX_ATTRIBUTE_ROBUSTNESS_EXTENSION_NAME;
|
||||
VULKAN_HPP_CONSTEXPR_INLINE auto EXTVertexAttributeRobustnessSpecVersion = VK_EXT_VERTEX_ATTRIBUTE_ROBUSTNESS_SPEC_VERSION;
|
||||
|
||||
#if defined( VK_ENABLE_BETA_EXTENSIONS )
|
||||
//=== VK_NV_present_metering ===
|
||||
VULKAN_HPP_CONSTEXPR_INLINE auto NVPresentMeteringExtensionName = VK_NV_PRESENT_METERING_EXTENSION_NAME;
|
||||
VULKAN_HPP_CONSTEXPR_INLINE auto NVPresentMeteringSpecVersion = VK_NV_PRESENT_METERING_SPEC_VERSION;
|
||||
#endif /*VK_ENABLE_BETA_EXTENSIONS*/
|
||||
|
||||
//=== VK_EXT_fragment_density_map_offset ===
|
||||
VULKAN_HPP_CONSTEXPR_INLINE auto EXTFragmentDensityMapOffsetExtensionName = VK_EXT_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME;
|
||||
VULKAN_HPP_CONSTEXPR_INLINE auto EXTFragmentDensityMapOffsetSpecVersion = VK_EXT_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION;
|
||||
|
||||
} // namespace VULKAN_HPP_NAMESPACE
|
||||
|
||||
// clang-format off
|
||||
|
@ -12187,6 +12257,25 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
};
|
||||
};
|
||||
|
||||
//=== VK_KHR_shader_bfloat16 ===
|
||||
template <>
|
||||
struct StructExtends<PhysicalDeviceShaderBfloat16FeaturesKHR, PhysicalDeviceFeatures2>
|
||||
{
|
||||
enum
|
||||
{
|
||||
value = true
|
||||
};
|
||||
};
|
||||
|
||||
template <>
|
||||
struct StructExtends<PhysicalDeviceShaderBfloat16FeaturesKHR, DeviceCreateInfo>
|
||||
{
|
||||
enum
|
||||
{
|
||||
value = true
|
||||
};
|
||||
};
|
||||
|
||||
//=== VK_EXT_sample_locations ===
|
||||
template <>
|
||||
struct StructExtends<SampleLocationsInfoEXT, ImageMemoryBarrier>
|
||||
|
@ -14067,6 +14156,70 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
};
|
||||
# endif /*VK_ENABLE_BETA_EXTENSIONS*/
|
||||
|
||||
//=== VK_QCOM_tile_shading ===
|
||||
template <>
|
||||
struct StructExtends<PhysicalDeviceTileShadingFeaturesQCOM, PhysicalDeviceFeatures2>
|
||||
{
|
||||
enum
|
||||
{
|
||||
value = true
|
||||
};
|
||||
};
|
||||
|
||||
template <>
|
||||
struct StructExtends<PhysicalDeviceTileShadingFeaturesQCOM, DeviceCreateInfo>
|
||||
{
|
||||
enum
|
||||
{
|
||||
value = true
|
||||
};
|
||||
};
|
||||
|
||||
template <>
|
||||
struct StructExtends<PhysicalDeviceTileShadingPropertiesQCOM, PhysicalDeviceProperties2>
|
||||
{
|
||||
enum
|
||||
{
|
||||
value = true
|
||||
};
|
||||
};
|
||||
|
||||
template <>
|
||||
struct StructExtends<RenderPassTileShadingCreateInfoQCOM, RenderPassCreateInfo>
|
||||
{
|
||||
enum
|
||||
{
|
||||
value = true
|
||||
};
|
||||
};
|
||||
|
||||
template <>
|
||||
struct StructExtends<RenderPassTileShadingCreateInfoQCOM, RenderPassCreateInfo2>
|
||||
{
|
||||
enum
|
||||
{
|
||||
value = true
|
||||
};
|
||||
};
|
||||
|
||||
template <>
|
||||
struct StructExtends<RenderPassTileShadingCreateInfoQCOM, RenderingInfo>
|
||||
{
|
||||
enum
|
||||
{
|
||||
value = true
|
||||
};
|
||||
};
|
||||
|
||||
template <>
|
||||
struct StructExtends<RenderPassTileShadingCreateInfoQCOM, CommandBufferInheritanceInfo>
|
||||
{
|
||||
enum
|
||||
{
|
||||
value = true
|
||||
};
|
||||
};
|
||||
|
||||
//=== VK_NV_low_latency ===
|
||||
template <>
|
||||
struct StructExtends<QueryLowLatencySupportNV, SemaphoreCreateInfo>
|
||||
|
@ -15666,43 +15819,6 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
};
|
||||
};
|
||||
|
||||
//=== VK_QCOM_fragment_density_map_offset ===
|
||||
template <>
|
||||
struct StructExtends<PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM, PhysicalDeviceFeatures2>
|
||||
{
|
||||
enum
|
||||
{
|
||||
value = true
|
||||
};
|
||||
};
|
||||
|
||||
template <>
|
||||
struct StructExtends<PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM, DeviceCreateInfo>
|
||||
{
|
||||
enum
|
||||
{
|
||||
value = true
|
||||
};
|
||||
};
|
||||
|
||||
template <>
|
||||
struct StructExtends<PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM, PhysicalDeviceProperties2>
|
||||
{
|
||||
enum
|
||||
{
|
||||
value = true
|
||||
};
|
||||
};
|
||||
|
||||
template <>
|
||||
struct StructExtends<SubpassFragmentDensityMapOffsetEndInfoQCOM, SubpassEndInfo>
|
||||
{
|
||||
enum
|
||||
{
|
||||
value = true
|
||||
};
|
||||
};
|
||||
|
||||
//=== VK_NV_copy_memory_indirect ===
|
||||
template <>
|
||||
struct StructExtends<PhysicalDeviceCopyMemoryIndirectFeaturesNV, PhysicalDeviceFeatures2>
|
||||
|
@ -15806,6 +15922,24 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
};
|
||||
};
|
||||
|
||||
template <>
|
||||
struct StructExtends<AccelerationStructureGeometryLinearSweptSpheresDataNV, AccelerationStructureGeometryKHR>
|
||||
{
|
||||
enum
|
||||
{
|
||||
value = true
|
||||
};
|
||||
};
|
||||
|
||||
template <>
|
||||
struct StructExtends<AccelerationStructureGeometrySpheresDataNV, AccelerationStructureGeometryKHR>
|
||||
{
|
||||
enum
|
||||
{
|
||||
value = true
|
||||
};
|
||||
};
|
||||
|
||||
//=== VK_NV_linear_color_attachment ===
|
||||
template <>
|
||||
struct StructExtends<PhysicalDeviceLinearColorAttachmentFeaturesNV, PhysicalDeviceFeatures2>
|
||||
|
@ -17380,6 +17514,25 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
};
|
||||
};
|
||||
|
||||
//=== VK_NV_external_compute_queue ===
|
||||
template <>
|
||||
struct StructExtends<ExternalComputeQueueDeviceCreateInfoNV, DeviceCreateInfo>
|
||||
{
|
||||
enum
|
||||
{
|
||||
value = true
|
||||
};
|
||||
};
|
||||
|
||||
template <>
|
||||
struct StructExtends<PhysicalDeviceExternalComputeQueuePropertiesNV, PhysicalDeviceProperties2>
|
||||
{
|
||||
enum
|
||||
{
|
||||
value = true
|
||||
};
|
||||
};
|
||||
|
||||
//=== VK_KHR_shader_relaxed_extended_instruction ===
|
||||
template <>
|
||||
struct StructExtends<PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR, PhysicalDeviceFeatures2>
|
||||
|
@ -17688,7 +17841,7 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
};
|
||||
|
||||
template <>
|
||||
struct StructExtends<MemoryBarrierAccessFlags3KHR, MemoryBarrier2>
|
||||
struct StructExtends<MemoryBarrierAccessFlags3KHR, SubpassDependency2>
|
||||
{
|
||||
enum
|
||||
{
|
||||
|
@ -17950,6 +18103,82 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
};
|
||||
};
|
||||
|
||||
# if defined( VK_ENABLE_BETA_EXTENSIONS )
|
||||
//=== VK_NV_present_metering ===
|
||||
template <>
|
||||
struct StructExtends<SetPresentConfigNV, PresentInfoKHR>
|
||||
{
|
||||
enum
|
||||
{
|
||||
value = true
|
||||
};
|
||||
};
|
||||
|
||||
template <>
|
||||
struct StructExtends<PhysicalDevicePresentMeteringFeaturesNV, PhysicalDeviceFeatures2>
|
||||
{
|
||||
enum
|
||||
{
|
||||
value = true
|
||||
};
|
||||
};
|
||||
|
||||
template <>
|
||||
struct StructExtends<PhysicalDevicePresentMeteringFeaturesNV, DeviceCreateInfo>
|
||||
{
|
||||
enum
|
||||
{
|
||||
value = true
|
||||
};
|
||||
};
|
||||
# endif /*VK_ENABLE_BETA_EXTENSIONS*/
|
||||
|
||||
//=== VK_EXT_fragment_density_map_offset ===
|
||||
template <>
|
||||
struct StructExtends<PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT, PhysicalDeviceFeatures2>
|
||||
{
|
||||
enum
|
||||
{
|
||||
value = true
|
||||
};
|
||||
};
|
||||
|
||||
template <>
|
||||
struct StructExtends<PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT, DeviceCreateInfo>
|
||||
{
|
||||
enum
|
||||
{
|
||||
value = true
|
||||
};
|
||||
};
|
||||
|
||||
template <>
|
||||
struct StructExtends<PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT, PhysicalDeviceProperties2>
|
||||
{
|
||||
enum
|
||||
{
|
||||
value = true
|
||||
};
|
||||
};
|
||||
|
||||
template <>
|
||||
struct StructExtends<RenderPassFragmentDensityMapOffsetEndInfoEXT, SubpassEndInfo>
|
||||
{
|
||||
enum
|
||||
{
|
||||
value = true
|
||||
};
|
||||
};
|
||||
|
||||
template <>
|
||||
struct StructExtends<RenderPassFragmentDensityMapOffsetEndInfoEXT, RenderingEndInfoEXT>
|
||||
{
|
||||
enum
|
||||
{
|
||||
value = true
|
||||
};
|
||||
};
|
||||
|
||||
#endif // VULKAN_HPP_DISABLE_ENHANCED_MODE
|
||||
|
||||
namespace detail
|
||||
|
@ -18954,6 +19183,11 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
PFN_dummy vkCmdCudaLaunchKernelNV_placeholder = 0;
|
||||
#endif /*VK_ENABLE_BETA_EXTENSIONS*/
|
||||
|
||||
//=== VK_QCOM_tile_shading ===
|
||||
PFN_vkCmdDispatchTileQCOM vkCmdDispatchTileQCOM = 0;
|
||||
PFN_vkCmdBeginPerTileExecutionQCOM vkCmdBeginPerTileExecutionQCOM = 0;
|
||||
PFN_vkCmdEndPerTileExecutionQCOM vkCmdEndPerTileExecutionQCOM = 0;
|
||||
|
||||
#if defined( VK_USE_PLATFORM_METAL_EXT )
|
||||
//=== VK_EXT_metal_objects ===
|
||||
PFN_vkExportMetalObjectsEXT vkExportMetalObjectsEXT = 0;
|
||||
|
@ -19250,6 +19484,11 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
PFN_vkCmdSetDescriptorBufferOffsets2EXT vkCmdSetDescriptorBufferOffsets2EXT = 0;
|
||||
PFN_vkCmdBindDescriptorBufferEmbeddedSamplers2EXT vkCmdBindDescriptorBufferEmbeddedSamplers2EXT = 0;
|
||||
|
||||
//=== VK_NV_external_compute_queue ===
|
||||
PFN_vkCreateExternalComputeQueueNV vkCreateExternalComputeQueueNV = 0;
|
||||
PFN_vkDestroyExternalComputeQueueNV vkDestroyExternalComputeQueueNV = 0;
|
||||
PFN_vkGetExternalComputeQueueDataNV vkGetExternalComputeQueueDataNV = 0;
|
||||
|
||||
//=== VK_NV_cluster_acceleration_structure ===
|
||||
PFN_vkGetClusterAccelerationStructureBuildSizesNV vkGetClusterAccelerationStructureBuildSizesNV = 0;
|
||||
PFN_vkCmdBuildClusterAccelerationStructureIndirectNV vkCmdBuildClusterAccelerationStructureIndirectNV = 0;
|
||||
|
@ -19281,6 +19520,9 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
PFN_dummy vkGetMemoryMetalHandlePropertiesEXT_placeholder = 0;
|
||||
#endif /*VK_USE_PLATFORM_METAL_EXT*/
|
||||
|
||||
//=== VK_EXT_fragment_density_map_offset ===
|
||||
PFN_vkCmdEndRendering2EXT vkCmdEndRendering2EXT = 0;
|
||||
|
||||
public:
|
||||
DispatchLoaderDynamic() VULKAN_HPP_NOEXCEPT = default;
|
||||
DispatchLoaderDynamic( DispatchLoaderDynamic const & rhs ) VULKAN_HPP_NOEXCEPT = default;
|
||||
|
@ -20419,6 +20661,11 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
vkCmdCudaLaunchKernelNV = PFN_vkCmdCudaLaunchKernelNV( vkGetInstanceProcAddr( instance, "vkCmdCudaLaunchKernelNV" ) );
|
||||
#endif /*VK_ENABLE_BETA_EXTENSIONS*/
|
||||
|
||||
//=== VK_QCOM_tile_shading ===
|
||||
vkCmdDispatchTileQCOM = PFN_vkCmdDispatchTileQCOM( vkGetInstanceProcAddr( instance, "vkCmdDispatchTileQCOM" ) );
|
||||
vkCmdBeginPerTileExecutionQCOM = PFN_vkCmdBeginPerTileExecutionQCOM( vkGetInstanceProcAddr( instance, "vkCmdBeginPerTileExecutionQCOM" ) );
|
||||
vkCmdEndPerTileExecutionQCOM = PFN_vkCmdEndPerTileExecutionQCOM( vkGetInstanceProcAddr( instance, "vkCmdEndPerTileExecutionQCOM" ) );
|
||||
|
||||
#if defined( VK_USE_PLATFORM_METAL_EXT )
|
||||
//=== VK_EXT_metal_objects ===
|
||||
vkExportMetalObjectsEXT = PFN_vkExportMetalObjectsEXT( vkGetInstanceProcAddr( instance, "vkExportMetalObjectsEXT" ) );
|
||||
|
@ -20786,6 +21033,11 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
vkCmdBindDescriptorBufferEmbeddedSamplers2EXT =
|
||||
PFN_vkCmdBindDescriptorBufferEmbeddedSamplers2EXT( vkGetInstanceProcAddr( instance, "vkCmdBindDescriptorBufferEmbeddedSamplers2EXT" ) );
|
||||
|
||||
//=== VK_NV_external_compute_queue ===
|
||||
vkCreateExternalComputeQueueNV = PFN_vkCreateExternalComputeQueueNV( vkGetInstanceProcAddr( instance, "vkCreateExternalComputeQueueNV" ) );
|
||||
vkDestroyExternalComputeQueueNV = PFN_vkDestroyExternalComputeQueueNV( vkGetInstanceProcAddr( instance, "vkDestroyExternalComputeQueueNV" ) );
|
||||
vkGetExternalComputeQueueDataNV = PFN_vkGetExternalComputeQueueDataNV( vkGetInstanceProcAddr( instance, "vkGetExternalComputeQueueDataNV" ) );
|
||||
|
||||
//=== VK_NV_cluster_acceleration_structure ===
|
||||
vkGetClusterAccelerationStructureBuildSizesNV =
|
||||
PFN_vkGetClusterAccelerationStructureBuildSizesNV( vkGetInstanceProcAddr( instance, "vkGetClusterAccelerationStructureBuildSizesNV" ) );
|
||||
|
@ -20823,6 +21075,9 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
vkGetMemoryMetalHandlePropertiesEXT =
|
||||
PFN_vkGetMemoryMetalHandlePropertiesEXT( vkGetInstanceProcAddr( instance, "vkGetMemoryMetalHandlePropertiesEXT" ) );
|
||||
#endif /*VK_USE_PLATFORM_METAL_EXT*/
|
||||
|
||||
//=== VK_EXT_fragment_density_map_offset ===
|
||||
vkCmdEndRendering2EXT = PFN_vkCmdEndRendering2EXT( vkGetInstanceProcAddr( instance, "vkCmdEndRendering2EXT" ) );
|
||||
}
|
||||
|
||||
void init( VULKAN_HPP_NAMESPACE::Device deviceCpp ) VULKAN_HPP_NOEXCEPT
|
||||
|
@ -21626,6 +21881,11 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
vkCmdCudaLaunchKernelNV = PFN_vkCmdCudaLaunchKernelNV( vkGetDeviceProcAddr( device, "vkCmdCudaLaunchKernelNV" ) );
|
||||
#endif /*VK_ENABLE_BETA_EXTENSIONS*/
|
||||
|
||||
//=== VK_QCOM_tile_shading ===
|
||||
vkCmdDispatchTileQCOM = PFN_vkCmdDispatchTileQCOM( vkGetDeviceProcAddr( device, "vkCmdDispatchTileQCOM" ) );
|
||||
vkCmdBeginPerTileExecutionQCOM = PFN_vkCmdBeginPerTileExecutionQCOM( vkGetDeviceProcAddr( device, "vkCmdBeginPerTileExecutionQCOM" ) );
|
||||
vkCmdEndPerTileExecutionQCOM = PFN_vkCmdEndPerTileExecutionQCOM( vkGetDeviceProcAddr( device, "vkCmdEndPerTileExecutionQCOM" ) );
|
||||
|
||||
#if defined( VK_USE_PLATFORM_METAL_EXT )
|
||||
//=== VK_EXT_metal_objects ===
|
||||
vkExportMetalObjectsEXT = PFN_vkExportMetalObjectsEXT( vkGetDeviceProcAddr( device, "vkExportMetalObjectsEXT" ) );
|
||||
|
@ -21959,6 +22219,11 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
vkCmdBindDescriptorBufferEmbeddedSamplers2EXT =
|
||||
PFN_vkCmdBindDescriptorBufferEmbeddedSamplers2EXT( vkGetDeviceProcAddr( device, "vkCmdBindDescriptorBufferEmbeddedSamplers2EXT" ) );
|
||||
|
||||
//=== VK_NV_external_compute_queue ===
|
||||
vkCreateExternalComputeQueueNV = PFN_vkCreateExternalComputeQueueNV( vkGetDeviceProcAddr( device, "vkCreateExternalComputeQueueNV" ) );
|
||||
vkDestroyExternalComputeQueueNV = PFN_vkDestroyExternalComputeQueueNV( vkGetDeviceProcAddr( device, "vkDestroyExternalComputeQueueNV" ) );
|
||||
vkGetExternalComputeQueueDataNV = PFN_vkGetExternalComputeQueueDataNV( vkGetDeviceProcAddr( device, "vkGetExternalComputeQueueDataNV" ) );
|
||||
|
||||
//=== VK_NV_cluster_acceleration_structure ===
|
||||
vkGetClusterAccelerationStructureBuildSizesNV =
|
||||
PFN_vkGetClusterAccelerationStructureBuildSizesNV( vkGetDeviceProcAddr( device, "vkGetClusterAccelerationStructureBuildSizesNV" ) );
|
||||
|
@ -21990,6 +22255,9 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
vkGetMemoryMetalHandleEXT = PFN_vkGetMemoryMetalHandleEXT( vkGetDeviceProcAddr( device, "vkGetMemoryMetalHandleEXT" ) );
|
||||
vkGetMemoryMetalHandlePropertiesEXT = PFN_vkGetMemoryMetalHandlePropertiesEXT( vkGetDeviceProcAddr( device, "vkGetMemoryMetalHandlePropertiesEXT" ) );
|
||||
#endif /*VK_USE_PLATFORM_METAL_EXT*/
|
||||
|
||||
//=== VK_EXT_fragment_density_map_offset ===
|
||||
vkCmdEndRendering2EXT = PFN_vkCmdEndRendering2EXT( vkGetDeviceProcAddr( device, "vkCmdEndRendering2EXT" ) );
|
||||
}
|
||||
|
||||
template <typename DynamicLoader>
|
||||
|
@ -22013,4 +22281,4 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
};
|
||||
} // namespace detail
|
||||
} // namespace VULKAN_HPP_NAMESPACE
|
||||
#endif
|
||||
#endif
|
|
@ -69,7 +69,7 @@ extern "C" {
|
|||
#define VK_API_VERSION_1_0 VK_MAKE_API_VERSION(0, 1, 0, 0)// Patch version should always be set to 0
|
||||
|
||||
// Version of this file
|
||||
#define VK_HEADER_VERSION 307
|
||||
#define VK_HEADER_VERSION 312
|
||||
|
||||
// Complete version of this file
|
||||
#define VK_HEADER_VERSION_COMPLETE VK_MAKE_API_VERSION(0, 1, 4, VK_HEADER_VERSION)
|
||||
|
@ -658,6 +658,7 @@ typedef enum VkStructureType {
|
|||
VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_NODE_CREATE_INFO_AMDX = 1000134004,
|
||||
#endif
|
||||
VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD = 1000044008,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_BFLOAT16_FEATURES_KHR = 1000141000,
|
||||
VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT = 1000143000,
|
||||
VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT = 1000143001,
|
||||
VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT = 1000143002,
|
||||
|
@ -862,11 +863,27 @@ typedef enum VkStructureType {
|
|||
VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_FEEDBACK_INFO_KHR = 1000299010,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV = 1000300000,
|
||||
VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV = 1000300001,
|
||||
#ifdef VK_ENABLE_BETA_EXTENSIONS
|
||||
VK_STRUCTURE_TYPE_CUDA_MODULE_CREATE_INFO_NV = 1000307000,
|
||||
#endif
|
||||
#ifdef VK_ENABLE_BETA_EXTENSIONS
|
||||
VK_STRUCTURE_TYPE_CUDA_FUNCTION_CREATE_INFO_NV = 1000307001,
|
||||
#endif
|
||||
#ifdef VK_ENABLE_BETA_EXTENSIONS
|
||||
VK_STRUCTURE_TYPE_CUDA_LAUNCH_INFO_NV = 1000307002,
|
||||
#endif
|
||||
#ifdef VK_ENABLE_BETA_EXTENSIONS
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_FEATURES_NV = 1000307003,
|
||||
#endif
|
||||
#ifdef VK_ENABLE_BETA_EXTENSIONS
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_PROPERTIES_NV = 1000307004,
|
||||
#endif
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_SHADING_FEATURES_QCOM = 1000309000,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_SHADING_PROPERTIES_QCOM = 1000309001,
|
||||
VK_STRUCTURE_TYPE_RENDER_PASS_TILE_SHADING_CREATE_INFO_QCOM = 1000309002,
|
||||
VK_STRUCTURE_TYPE_PER_TILE_BEGIN_INFO_QCOM = 1000309003,
|
||||
VK_STRUCTURE_TYPE_PER_TILE_END_INFO_QCOM = 1000309004,
|
||||
VK_STRUCTURE_TYPE_DISPATCH_TILE_INFO_QCOM = 1000309005,
|
||||
VK_STRUCTURE_TYPE_QUERY_LOW_LATENCY_SUPPORT_NV = 1000310000,
|
||||
VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECT_CREATE_INFO_EXT = 1000311000,
|
||||
VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECTS_INFO_EXT = 1000311001,
|
||||
|
@ -1014,9 +1031,6 @@ typedef enum VkStructureType {
|
|||
VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_BEGIN_INFO_ARM = 1000424002,
|
||||
VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_INFO_ARM = 1000424003,
|
||||
VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_SUBMIT_INFO_ARM = 1000424004,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM = 1000425000,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM = 1000425001,
|
||||
VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM = 1000425002,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV = 1000426000,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV = 1000426001,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV = 1000427000,
|
||||
|
@ -1167,6 +1181,10 @@ typedef enum VkStructureType {
|
|||
VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553007,
|
||||
VK_STRUCTURE_TYPE_VIDEO_FORMAT_AV1_QUANTIZATION_MAP_PROPERTIES_KHR = 1000553008,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAW_ACCESS_CHAINS_FEATURES_NV = 1000555000,
|
||||
VK_STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_DEVICE_CREATE_INFO_NV = 1000556000,
|
||||
VK_STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_CREATE_INFO_NV = 1000556001,
|
||||
VK_STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_DATA_PARAMS_NV = 1000556002,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_COMPUTE_QUEUE_PROPERTIES_NV = 1000556003,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_RELAXED_EXTENDED_INSTRUCTION_FEATURES_KHR = 1000558000,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMMAND_BUFFER_INHERITANCE_FEATURES_NV = 1000559000,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_FEATURES_KHR = 1000562000,
|
||||
|
@ -1227,6 +1245,16 @@ typedef enum VkStructureType {
|
|||
VK_STRUCTURE_TYPE_MEMORY_GET_METAL_HANDLE_INFO_EXT = 1000602002,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_KHR = 1000421000,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_ROBUSTNESS_FEATURES_EXT = 1000608000,
|
||||
#ifdef VK_ENABLE_BETA_EXTENSIONS
|
||||
VK_STRUCTURE_TYPE_SET_PRESENT_CONFIG_NV = 1000613000,
|
||||
#endif
|
||||
#ifdef VK_ENABLE_BETA_EXTENSIONS
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_METERING_FEATURES_NV = 1000613001,
|
||||
#endif
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_EXT = 1000425000,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_EXT = 1000425001,
|
||||
VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_EXT = 1000425002,
|
||||
VK_STRUCTURE_TYPE_RENDERING_END_INFO_EXT = 1000619003,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES,
|
||||
// VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT is a deprecated alias
|
||||
|
@ -1437,6 +1465,9 @@ typedef enum VkStructureType {
|
|||
VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS_KHR = VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_KHR,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_EXT,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_EXT,
|
||||
VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM = VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_EXT,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES,
|
||||
|
@ -1561,13 +1592,18 @@ typedef enum VkObjectType {
|
|||
VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL = 1000210000,
|
||||
VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR = 1000268000,
|
||||
VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV = 1000277000,
|
||||
#ifdef VK_ENABLE_BETA_EXTENSIONS
|
||||
VK_OBJECT_TYPE_CUDA_MODULE_NV = 1000307000,
|
||||
#endif
|
||||
#ifdef VK_ENABLE_BETA_EXTENSIONS
|
||||
VK_OBJECT_TYPE_CUDA_FUNCTION_NV = 1000307001,
|
||||
#endif
|
||||
VK_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA = 1000366000,
|
||||
VK_OBJECT_TYPE_MICROMAP_EXT = 1000396000,
|
||||
VK_OBJECT_TYPE_OPTICAL_FLOW_SESSION_NV = 1000464000,
|
||||
VK_OBJECT_TYPE_SHADER_EXT = 1000482000,
|
||||
VK_OBJECT_TYPE_PIPELINE_BINARY_KHR = 1000483000,
|
||||
VK_OBJECT_TYPE_EXTERNAL_COMPUTE_QUEUE_NV = 1000556000,
|
||||
VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_EXT = 1000572000,
|
||||
VK_OBJECT_TYPE_INDIRECT_EXECUTION_SET_EXT = 1000572001,
|
||||
VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE,
|
||||
|
@ -2383,14 +2419,14 @@ typedef enum VkAccessFlagBits {
|
|||
VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 0x00400000,
|
||||
VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 0x01000000,
|
||||
VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR = 0x00800000,
|
||||
VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 0x00020000,
|
||||
VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 0x00040000,
|
||||
VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_EXT = 0x00020000,
|
||||
VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_EXT = 0x00040000,
|
||||
VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR,
|
||||
VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR,
|
||||
VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR,
|
||||
VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_EXT,
|
||||
VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_EXT,
|
||||
VK_ACCESS_NONE_KHR = VK_ACCESS_NONE,
|
||||
VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_EXT = VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV,
|
||||
VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_EXT = VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV,
|
||||
VK_ACCESS_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
|
||||
} VkAccessFlagBits;
|
||||
typedef VkFlags VkAccessFlags;
|
||||
|
@ -2482,14 +2518,15 @@ typedef enum VkImageCreateFlagBits {
|
|||
VK_IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 0x00010000,
|
||||
VK_IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT = 0x00040000,
|
||||
VK_IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT = 0x00020000,
|
||||
VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM = 0x00008000,
|
||||
VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR = 0x00100000,
|
||||
VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_EXT = 0x00008000,
|
||||
VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT,
|
||||
VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR = VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT,
|
||||
VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR = VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT,
|
||||
VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR = VK_IMAGE_CREATE_EXTENDED_USAGE_BIT,
|
||||
VK_IMAGE_CREATE_DISJOINT_BIT_KHR = VK_IMAGE_CREATE_DISJOINT_BIT,
|
||||
VK_IMAGE_CREATE_ALIAS_BIT_KHR = VK_IMAGE_CREATE_ALIAS_BIT,
|
||||
VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM = VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_EXT,
|
||||
VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
|
||||
} VkImageCreateFlagBits;
|
||||
typedef VkFlags VkImageCreateFlags;
|
||||
|
@ -2609,16 +2646,16 @@ typedef enum VkPipelineStageFlagBits {
|
|||
VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR = 0x00200000,
|
||||
VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 0x00800000,
|
||||
VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x00400000,
|
||||
VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 0x00020000,
|
||||
VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT = 0x00080000,
|
||||
VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT = 0x00100000,
|
||||
VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_EXT = 0x00020000,
|
||||
VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR,
|
||||
VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR,
|
||||
VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR,
|
||||
VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV = VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT,
|
||||
VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV = VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT,
|
||||
VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_EXT,
|
||||
VK_PIPELINE_STAGE_NONE_KHR = VK_PIPELINE_STAGE_NONE,
|
||||
VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_EXT = VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV,
|
||||
VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
|
||||
} VkPipelineStageFlagBits;
|
||||
typedef VkFlags VkPipelineStageFlags;
|
||||
|
@ -2965,6 +3002,7 @@ typedef enum VkSubpassDescriptionFlagBits {
|
|||
VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 0x00000002,
|
||||
VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM = 0x00000004,
|
||||
VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM = 0x00000008,
|
||||
VK_SUBPASS_DESCRIPTION_TILE_SHADING_APRON_BIT_QCOM = 0x00000100,
|
||||
VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_EXT = 0x00000010,
|
||||
VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT = 0x00000020,
|
||||
VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT = 0x00000040,
|
||||
|
@ -6864,6 +6902,8 @@ static const VkAccessFlagBits2 VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR = 0x8000000
|
|||
static const VkAccessFlagBits2 VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR = 0x1000000000ULL;
|
||||
static const VkAccessFlagBits2 VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR = 0x2000000000ULL;
|
||||
static const VkAccessFlagBits2 VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR = 0x4000000000ULL;
|
||||
static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_TILE_ATTACHMENT_READ_BIT_QCOM = 0x8000000000000ULL;
|
||||
static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_TILE_ATTACHMENT_WRITE_BIT_QCOM = 0x10000000000000ULL;
|
||||
static const VkAccessFlagBits2 VK_ACCESS_2_NONE_KHR = 0ULL;
|
||||
static const VkAccessFlagBits2 VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT_KHR = 0x00000001ULL;
|
||||
static const VkAccessFlagBits2 VK_ACCESS_2_INDEX_READ_BIT_KHR = 0x00000002ULL;
|
||||
|
@ -10691,6 +10731,20 @@ typedef VkMemoryDedicatedAllocateInfo VkMemoryDedicatedAllocateInfoKHR;
|
|||
#define VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME "VK_KHR_storage_buffer_storage_class"
|
||||
|
||||
|
||||
// VK_KHR_shader_bfloat16 is a preprocessor guard. Do not pass it to API calls.
|
||||
#define VK_KHR_shader_bfloat16 1
|
||||
#define VK_KHR_SHADER_BFLOAT16_SPEC_VERSION 1
|
||||
#define VK_KHR_SHADER_BFLOAT16_EXTENSION_NAME "VK_KHR_shader_bfloat16"
|
||||
typedef struct VkPhysicalDeviceShaderBfloat16FeaturesKHR {
|
||||
VkStructureType sType;
|
||||
void* pNext;
|
||||
VkBool32 shaderBFloat16Type;
|
||||
VkBool32 shaderBFloat16DotProduct;
|
||||
VkBool32 shaderBFloat16CooperativeMatrix;
|
||||
} VkPhysicalDeviceShaderBfloat16FeaturesKHR;
|
||||
|
||||
|
||||
|
||||
// VK_KHR_relaxed_block_layout is a preprocessor guard. Do not pass it to API calls.
|
||||
#define VK_KHR_relaxed_block_layout 1
|
||||
#define VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION 1
|
||||
|
@ -12171,6 +12225,7 @@ typedef enum VkComponentTypeKHR {
|
|||
VK_COMPONENT_TYPE_UINT16_KHR = 8,
|
||||
VK_COMPONENT_TYPE_UINT32_KHR = 9,
|
||||
VK_COMPONENT_TYPE_UINT64_KHR = 10,
|
||||
VK_COMPONENT_TYPE_BFLOAT16_KHR = 1000141000,
|
||||
VK_COMPONENT_TYPE_SINT8_PACKED_NV = 1000491000,
|
||||
VK_COMPONENT_TYPE_UINT8_PACKED_NV = 1000491001,
|
||||
VK_COMPONENT_TYPE_FLOAT_E4M3_NV = 1000491002,
|
||||
|
@ -17134,6 +17189,85 @@ VKAPI_ATTR void VKAPI_CALL vkCmdCudaLaunchKernelNV(
|
|||
#endif
|
||||
|
||||
|
||||
// VK_QCOM_tile_shading is a preprocessor guard. Do not pass it to API calls.
|
||||
#define VK_QCOM_tile_shading 1
|
||||
#define VK_QCOM_TILE_SHADING_SPEC_VERSION 1
|
||||
#define VK_QCOM_TILE_SHADING_EXTENSION_NAME "VK_QCOM_tile_shading"
|
||||
|
||||
typedef enum VkTileShadingRenderPassFlagBitsQCOM {
|
||||
VK_TILE_SHADING_RENDER_PASS_ENABLE_BIT_QCOM = 0x00000001,
|
||||
VK_TILE_SHADING_RENDER_PASS_PER_TILE_EXECUTION_BIT_QCOM = 0x00000002,
|
||||
VK_TILE_SHADING_RENDER_PASS_FLAG_BITS_MAX_ENUM_QCOM = 0x7FFFFFFF
|
||||
} VkTileShadingRenderPassFlagBitsQCOM;
|
||||
typedef VkFlags VkTileShadingRenderPassFlagsQCOM;
|
||||
typedef struct VkPhysicalDeviceTileShadingFeaturesQCOM {
|
||||
VkStructureType sType;
|
||||
void* pNext;
|
||||
VkBool32 tileShading;
|
||||
VkBool32 tileShadingFragmentStage;
|
||||
VkBool32 tileShadingColorAttachments;
|
||||
VkBool32 tileShadingDepthAttachments;
|
||||
VkBool32 tileShadingStencilAttachments;
|
||||
VkBool32 tileShadingInputAttachments;
|
||||
VkBool32 tileShadingSampledAttachments;
|
||||
VkBool32 tileShadingPerTileDraw;
|
||||
VkBool32 tileShadingPerTileDispatch;
|
||||
VkBool32 tileShadingDispatchTile;
|
||||
VkBool32 tileShadingApron;
|
||||
VkBool32 tileShadingAnisotropicApron;
|
||||
VkBool32 tileShadingAtomicOps;
|
||||
VkBool32 tileShadingImageProcessing;
|
||||
} VkPhysicalDeviceTileShadingFeaturesQCOM;
|
||||
|
||||
typedef struct VkPhysicalDeviceTileShadingPropertiesQCOM {
|
||||
VkStructureType sType;
|
||||
void* pNext;
|
||||
uint32_t maxApronSize;
|
||||
VkBool32 preferNonCoherent;
|
||||
VkExtent2D tileGranularity;
|
||||
VkExtent2D maxTileShadingRate;
|
||||
} VkPhysicalDeviceTileShadingPropertiesQCOM;
|
||||
|
||||
typedef struct VkRenderPassTileShadingCreateInfoQCOM {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
VkTileShadingRenderPassFlagsQCOM flags;
|
||||
VkExtent2D tileApronSize;
|
||||
} VkRenderPassTileShadingCreateInfoQCOM;
|
||||
|
||||
typedef struct VkPerTileBeginInfoQCOM {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
} VkPerTileBeginInfoQCOM;
|
||||
|
||||
typedef struct VkPerTileEndInfoQCOM {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
} VkPerTileEndInfoQCOM;
|
||||
|
||||
typedef struct VkDispatchTileInfoQCOM {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
} VkDispatchTileInfoQCOM;
|
||||
|
||||
typedef void (VKAPI_PTR *PFN_vkCmdDispatchTileQCOM)(VkCommandBuffer commandBuffer);
|
||||
typedef void (VKAPI_PTR *PFN_vkCmdBeginPerTileExecutionQCOM)(VkCommandBuffer commandBuffer, const VkPerTileBeginInfoQCOM* pPerTileBeginInfo);
|
||||
typedef void (VKAPI_PTR *PFN_vkCmdEndPerTileExecutionQCOM)(VkCommandBuffer commandBuffer, const VkPerTileEndInfoQCOM* pPerTileEndInfo);
|
||||
|
||||
#ifndef VK_NO_PROTOTYPES
|
||||
VKAPI_ATTR void VKAPI_CALL vkCmdDispatchTileQCOM(
|
||||
VkCommandBuffer commandBuffer);
|
||||
|
||||
VKAPI_ATTR void VKAPI_CALL vkCmdBeginPerTileExecutionQCOM(
|
||||
VkCommandBuffer commandBuffer,
|
||||
const VkPerTileBeginInfoQCOM* pPerTileBeginInfo);
|
||||
|
||||
VKAPI_ATTR void VKAPI_CALL vkCmdEndPerTileExecutionQCOM(
|
||||
VkCommandBuffer commandBuffer,
|
||||
const VkPerTileEndInfoQCOM* pPerTileEndInfo);
|
||||
#endif
|
||||
|
||||
|
||||
// VK_NV_low_latency is a preprocessor guard. Do not pass it to API calls.
|
||||
#define VK_NV_low_latency 1
|
||||
#define VK_NV_LOW_LATENCY_SPEC_VERSION 1
|
||||
|
@ -18862,26 +18996,32 @@ typedef struct VkRenderPassStripeSubmitInfoARM {
|
|||
|
||||
// VK_QCOM_fragment_density_map_offset is a preprocessor guard. Do not pass it to API calls.
|
||||
#define VK_QCOM_fragment_density_map_offset 1
|
||||
#define VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION 2
|
||||
#define VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION 3
|
||||
#define VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME "VK_QCOM_fragment_density_map_offset"
|
||||
typedef struct VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM {
|
||||
typedef struct VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT {
|
||||
VkStructureType sType;
|
||||
void* pNext;
|
||||
VkBool32 fragmentDensityMapOffset;
|
||||
} VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM;
|
||||
} VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT;
|
||||
|
||||
typedef struct VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM {
|
||||
typedef VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM;
|
||||
|
||||
typedef struct VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT {
|
||||
VkStructureType sType;
|
||||
void* pNext;
|
||||
VkExtent2D fragmentDensityOffsetGranularity;
|
||||
} VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM;
|
||||
} VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT;
|
||||
|
||||
typedef struct VkSubpassFragmentDensityMapOffsetEndInfoQCOM {
|
||||
typedef VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM;
|
||||
|
||||
typedef struct VkRenderPassFragmentDensityMapOffsetEndInfoEXT {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
uint32_t fragmentDensityOffsetCount;
|
||||
const VkOffset2D* pFragmentDensityOffsets;
|
||||
} VkSubpassFragmentDensityMapOffsetEndInfoQCOM;
|
||||
} VkRenderPassFragmentDensityMapOffsetEndInfoEXT;
|
||||
|
||||
typedef VkRenderPassFragmentDensityMapOffsetEndInfoEXT VkSubpassFragmentDensityMapOffsetEndInfoQCOM;
|
||||
|
||||
|
||||
|
||||
|
@ -20531,6 +20671,59 @@ typedef struct VkPhysicalDeviceRawAccessChainsFeaturesNV {
|
|||
|
||||
|
||||
|
||||
// VK_NV_external_compute_queue is a preprocessor guard. Do not pass it to API calls.
|
||||
#define VK_NV_external_compute_queue 1
|
||||
VK_DEFINE_HANDLE(VkExternalComputeQueueNV)
|
||||
#define VK_NV_EXTERNAL_COMPUTE_QUEUE_SPEC_VERSION 1
|
||||
#define VK_NV_EXTERNAL_COMPUTE_QUEUE_EXTENSION_NAME "VK_NV_external_compute_queue"
|
||||
typedef struct VkExternalComputeQueueDeviceCreateInfoNV {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
uint32_t reservedExternalQueues;
|
||||
} VkExternalComputeQueueDeviceCreateInfoNV;
|
||||
|
||||
typedef struct VkExternalComputeQueueCreateInfoNV {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
VkQueue preferredQueue;
|
||||
} VkExternalComputeQueueCreateInfoNV;
|
||||
|
||||
typedef struct VkExternalComputeQueueDataParamsNV {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
uint32_t deviceIndex;
|
||||
} VkExternalComputeQueueDataParamsNV;
|
||||
|
||||
typedef struct VkPhysicalDeviceExternalComputeQueuePropertiesNV {
|
||||
VkStructureType sType;
|
||||
void* pNext;
|
||||
uint32_t externalDataSize;
|
||||
uint32_t maxExternalQueues;
|
||||
} VkPhysicalDeviceExternalComputeQueuePropertiesNV;
|
||||
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkCreateExternalComputeQueueNV)(VkDevice device, const VkExternalComputeQueueCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkExternalComputeQueueNV* pExternalQueue);
|
||||
typedef void (VKAPI_PTR *PFN_vkDestroyExternalComputeQueueNV)(VkDevice device, VkExternalComputeQueueNV externalQueue, const VkAllocationCallbacks* pAllocator);
|
||||
typedef void (VKAPI_PTR *PFN_vkGetExternalComputeQueueDataNV)(VkExternalComputeQueueNV externalQueue, VkExternalComputeQueueDataParamsNV* params, void* pData);
|
||||
|
||||
#ifndef VK_NO_PROTOTYPES
|
||||
VKAPI_ATTR VkResult VKAPI_CALL vkCreateExternalComputeQueueNV(
|
||||
VkDevice device,
|
||||
const VkExternalComputeQueueCreateInfoNV* pCreateInfo,
|
||||
const VkAllocationCallbacks* pAllocator,
|
||||
VkExternalComputeQueueNV* pExternalQueue);
|
||||
|
||||
VKAPI_ATTR void VKAPI_CALL vkDestroyExternalComputeQueueNV(
|
||||
VkDevice device,
|
||||
VkExternalComputeQueueNV externalQueue,
|
||||
const VkAllocationCallbacks* pAllocator);
|
||||
|
||||
VKAPI_ATTR void VKAPI_CALL vkGetExternalComputeQueueDataNV(
|
||||
VkExternalComputeQueueNV externalQueue,
|
||||
VkExternalComputeQueueDataParamsNV* params,
|
||||
void* pData);
|
||||
#endif
|
||||
|
||||
|
||||
// VK_NV_command_buffer_inheritance is a preprocessor guard. Do not pass it to API calls.
|
||||
#define VK_NV_command_buffer_inheritance 1
|
||||
#define VK_NV_COMMAND_BUFFER_INHERITANCE_SPEC_VERSION 1
|
||||
|
@ -21347,6 +21540,43 @@ typedef struct VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT {
|
|||
|
||||
|
||||
|
||||
// VK_NV_present_metering is a preprocessor guard. Do not pass it to API calls.
|
||||
#define VK_NV_present_metering 1
|
||||
#define VK_NV_PRESENT_METERING_SPEC_VERSION 1
|
||||
#define VK_NV_PRESENT_METERING_EXTENSION_NAME "VK_NV_present_metering"
|
||||
typedef struct VkSetPresentConfigNV {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
uint32_t numFramesPerBatch;
|
||||
uint32_t presentConfigFeedback;
|
||||
} VkSetPresentConfigNV;
|
||||
|
||||
typedef struct VkPhysicalDevicePresentMeteringFeaturesNV {
|
||||
VkStructureType sType;
|
||||
void* pNext;
|
||||
VkBool32 presentMetering;
|
||||
} VkPhysicalDevicePresentMeteringFeaturesNV;
|
||||
|
||||
|
||||
|
||||
// VK_EXT_fragment_density_map_offset is a preprocessor guard. Do not pass it to API calls.
|
||||
#define VK_EXT_fragment_density_map_offset 1
|
||||
#define VK_EXT_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION 1
|
||||
#define VK_EXT_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME "VK_EXT_fragment_density_map_offset"
|
||||
typedef struct VkRenderingEndInfoEXT {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
} VkRenderingEndInfoEXT;
|
||||
|
||||
typedef void (VKAPI_PTR *PFN_vkCmdEndRendering2EXT)(VkCommandBuffer commandBuffer, const VkRenderingEndInfoEXT* pRenderingEndInfo);
|
||||
|
||||
#ifndef VK_NO_PROTOTYPES
|
||||
VKAPI_ATTR void VKAPI_CALL vkCmdEndRendering2EXT(
|
||||
VkCommandBuffer commandBuffer,
|
||||
const VkRenderingEndInfoEXT* pRenderingEndInfo);
|
||||
#endif
|
||||
|
||||
|
||||
// VK_KHR_acceleration_structure is a preprocessor guard. Do not pass it to API calls.
|
||||
#define VK_KHR_acceleration_structure 1
|
||||
#define VK_KHR_ACCELERATION_STRUCTURE_SPEC_VERSION 13
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -180,6 +180,7 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
"VK_AMD_shader_fragment_mask",
|
||||
"VK_EXT_inline_uniform_block",
|
||||
"VK_EXT_shader_stencil_export",
|
||||
"VK_KHR_shader_bfloat16",
|
||||
"VK_EXT_sample_locations",
|
||||
"VK_KHR_relaxed_block_layout",
|
||||
"VK_KHR_get_memory_requirements2",
|
||||
|
@ -310,6 +311,7 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
#if defined( VK_ENABLE_BETA_EXTENSIONS )
|
||||
"VK_NV_cuda_kernel_launch",
|
||||
#endif /*VK_ENABLE_BETA_EXTENSIONS*/
|
||||
"VK_QCOM_tile_shading",
|
||||
"VK_NV_low_latency",
|
||||
#if defined( VK_USE_PLATFORM_METAL_EXT )
|
||||
"VK_EXT_metal_objects",
|
||||
|
@ -449,6 +451,7 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
"VK_NV_descriptor_pool_overallocation",
|
||||
"VK_KHR_video_encode_quantization_map",
|
||||
"VK_NV_raw_access_chains",
|
||||
"VK_NV_external_compute_queue",
|
||||
"VK_KHR_shader_relaxed_extended_instruction",
|
||||
"VK_NV_command_buffer_inheritance",
|
||||
"VK_KHR_maintenance7",
|
||||
|
@ -469,7 +472,11 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
"VK_EXT_external_memory_metal",
|
||||
#endif /*VK_USE_PLATFORM_METAL_EXT*/
|
||||
"VK_KHR_depth_clamp_zero_one",
|
||||
"VK_EXT_vertex_attribute_robustness"
|
||||
"VK_EXT_vertex_attribute_robustness",
|
||||
#if defined( VK_ENABLE_BETA_EXTENSIONS )
|
||||
"VK_NV_present_metering",
|
||||
#endif /*VK_ENABLE_BETA_EXTENSIONS*/
|
||||
"VK_EXT_fragment_density_map_offset"
|
||||
};
|
||||
return deviceExtensions;
|
||||
}
|
||||
|
@ -566,8 +573,8 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
{ "VK_KHR_display_swapchain",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_swapchain",
|
||||
"VK_KHR_display",
|
||||
"VK_KHR_swapchain",
|
||||
} } } } },
|
||||
#if defined( VK_USE_PLATFORM_XLIB_KHR )
|
||||
{ "VK_KHR_xlib_surface",
|
||||
|
@ -618,10 +625,13 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
{ "VK_KHR_video_decode_queue",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_video_queue",
|
||||
"VK_KHR_synchronization2",
|
||||
"VK_KHR_video_queue",
|
||||
} } },
|
||||
{ "VK_VERSION_1_3", { {} } } } },
|
||||
{ "VK_VERSION_1_3",
|
||||
{ {
|
||||
"VK_KHR_video_queue",
|
||||
} } } } },
|
||||
{ "VK_EXT_transform_feedback",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
|
@ -652,6 +662,7 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
{ "VK_KHR_dynamic_rendering",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_depth_stencil_resolve",
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1",
|
||||
|
@ -878,6 +889,7 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
"VK_KHR_image_format_list",
|
||||
"VK_KHR_maintenance2",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1",
|
||||
|
@ -888,8 +900,8 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
{ "VK_KHR_create_renderpass2",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_multiview",
|
||||
"VK_KHR_maintenance2",
|
||||
"VK_KHR_multiview",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1", { {} } } } },
|
||||
{ "VK_IMG_relaxed_line_rasterization",
|
||||
|
@ -901,14 +913,14 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
{ "VK_KHR_shared_presentable_image",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_swapchain",
|
||||
"VK_KHR_get_surface_capabilities2",
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
"VK_KHR_get_surface_capabilities2",
|
||||
"VK_KHR_swapchain",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1",
|
||||
{ {
|
||||
"VK_KHR_swapchain",
|
||||
"VK_KHR_get_surface_capabilities2",
|
||||
"VK_KHR_swapchain",
|
||||
} } } } },
|
||||
{ "VK_KHR_external_fence_capabilities",
|
||||
{ { "VK_VERSION_1_0",
|
||||
|
@ -992,9 +1004,10 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
{ "VK_ANDROID_external_memory_android_hardware_buffer",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_sampler_ycbcr_conversion",
|
||||
"VK_KHR_external_memory",
|
||||
"VK_EXT_queue_family_foreign",
|
||||
"VK_KHR_dedicated_allocation",
|
||||
"VK_KHR_external_memory",
|
||||
"VK_KHR_sampler_ycbcr_conversion",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1",
|
||||
{ {
|
||||
|
@ -1011,9 +1024,11 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
{ "VK_AMDX_shader_enqueue",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_synchronization2",
|
||||
"VK_KHR_spirv_1_4",
|
||||
"VK_EXT_extended_dynamic_state",
|
||||
"VK_KHR_maintenance5",
|
||||
"VK_KHR_pipeline_library",
|
||||
"VK_KHR_spirv_1_4",
|
||||
"VK_KHR_synchronization2",
|
||||
} } },
|
||||
{ "VK_VERSION_1_3",
|
||||
{ {
|
||||
|
@ -1028,6 +1043,12 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
"VK_KHR_maintenance1",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1", { {} } } } },
|
||||
{ "VK_KHR_shader_bfloat16",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1", { {} } } } },
|
||||
{ "VK_EXT_sample_locations",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
|
@ -1045,6 +1066,7 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
{ {
|
||||
"VK_EXT_descriptor_indexing",
|
||||
"VK_KHR_buffer_device_address",
|
||||
"VK_KHR_deferred_host_operations",
|
||||
} } },
|
||||
{ "VK_VERSION_1_2",
|
||||
{ {
|
||||
|
@ -1053,23 +1075,31 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
{ "VK_KHR_ray_tracing_pipeline",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_acceleration_structure",
|
||||
"VK_KHR_spirv_1_4",
|
||||
} } },
|
||||
{ "VK_VERSION_1_2",
|
||||
{ {
|
||||
"VK_KHR_acceleration_structure",
|
||||
} } } } },
|
||||
{ "VK_KHR_ray_query",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_acceleration_structure",
|
||||
"VK_KHR_spirv_1_4",
|
||||
} } },
|
||||
{ "VK_VERSION_1_2",
|
||||
{ {
|
||||
"VK_KHR_acceleration_structure",
|
||||
} } } } },
|
||||
{ "VK_NV_shader_sm_builtins", { { "VK_VERSION_1_1", { {} } } } },
|
||||
{ "VK_KHR_sampler_ycbcr_conversion",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_maintenance1",
|
||||
"VK_KHR_bind_memory2",
|
||||
"VK_KHR_get_memory_requirements2",
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
"VK_KHR_maintenance1",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1", { {} } } } },
|
||||
{ "VK_EXT_image_drm_format_modifier",
|
||||
|
@ -1077,6 +1107,7 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
{ {
|
||||
"VK_KHR_bind_memory2",
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
"VK_KHR_image_format_list",
|
||||
"VK_KHR_sampler_ycbcr_conversion",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1",
|
||||
|
@ -1108,8 +1139,8 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
{ "VK_NV_ray_tracing",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
"VK_KHR_get_memory_requirements2",
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1", { {} } } } },
|
||||
{ "VK_NV_representative_fragment_test",
|
||||
|
@ -1183,8 +1214,8 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
{ "VK_GGP_frame_token",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_swapchain",
|
||||
"VK_GGP_stream_descriptor_surface",
|
||||
"VK_KHR_swapchain",
|
||||
} } } } },
|
||||
#endif /*VK_USE_PLATFORM_GGP*/
|
||||
{ "VK_KHR_driver_properties",
|
||||
|
@ -1209,14 +1240,14 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
{ "VK_KHR_swapchain_mutable_format",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_swapchain",
|
||||
"VK_KHR_maintenance2",
|
||||
"VK_KHR_image_format_list",
|
||||
"VK_KHR_maintenance2",
|
||||
"VK_KHR_swapchain",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1",
|
||||
{ {
|
||||
"VK_KHR_swapchain",
|
||||
"VK_KHR_image_format_list",
|
||||
"VK_KHR_swapchain",
|
||||
} } },
|
||||
{ "VK_VERSION_1_2",
|
||||
{ {
|
||||
|
@ -1286,6 +1317,8 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
"VK_KHR_get_surface_capabilities2",
|
||||
"VK_KHR_swapchain",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1",
|
||||
{ {
|
||||
|
@ -1328,6 +1361,7 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
{ "VK_KHR_fragment_shading_rate",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_create_renderpass2",
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1",
|
||||
|
@ -1361,7 +1395,11 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
{ "VK_KHR_shader_quad_control",
|
||||
{ { "VK_VERSION_1_1",
|
||||
{ {
|
||||
"VK_KHR_shader_maximal_reconvergence",
|
||||
"VK_KHR_vulkan_memory_model",
|
||||
} } },
|
||||
{ "VK_VERSION_1_2",
|
||||
{ {
|
||||
"VK_KHR_shader_maximal_reconvergence",
|
||||
} } } } },
|
||||
{ "VK_KHR_spirv_1_4",
|
||||
|
@ -1396,6 +1434,7 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
{ "VK_KHR_separate_depth_stencil_layouts",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_create_renderpass2",
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1",
|
||||
|
@ -1412,8 +1451,8 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
{ "VK_KHR_present_wait",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_swapchain",
|
||||
"VK_KHR_present_id",
|
||||
"VK_KHR_swapchain",
|
||||
} } } } },
|
||||
{ "VK_NV_cooperative_matrix",
|
||||
{ { "VK_VERSION_1_0",
|
||||
|
@ -1424,10 +1463,13 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
{ "VK_NV_coverage_reduction_mode",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_NV_framebuffer_mixed_samples",
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
"VK_NV_framebuffer_mixed_samples",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1", { {} } } } },
|
||||
{ "VK_VERSION_1_1",
|
||||
{ {
|
||||
"VK_NV_framebuffer_mixed_samples",
|
||||
} } } } },
|
||||
{ "VK_EXT_fragment_shader_interlock",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
|
@ -1457,11 +1499,14 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
"VK_KHR_get_surface_capabilities2",
|
||||
"VK_KHR_surface",
|
||||
"VK_KHR_swapchain",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1",
|
||||
{ {
|
||||
"VK_KHR_surface",
|
||||
"VK_KHR_get_surface_capabilities2",
|
||||
"VK_KHR_surface",
|
||||
"VK_KHR_swapchain",
|
||||
} } } } },
|
||||
#endif /*VK_USE_PLATFORM_WIN32_KHR*/
|
||||
|
@ -1473,8 +1518,8 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
{ "VK_KHR_buffer_device_address",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
"VK_KHR_device_group",
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1", { {} } } } },
|
||||
{ "VK_EXT_line_rasterization",
|
||||
|
@ -1516,6 +1561,8 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
{ "VK_EXT_host_image_copy",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_copy_commands2",
|
||||
"VK_KHR_format_feature_flags2",
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1",
|
||||
|
@ -1538,17 +1585,21 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
{ "VK_EXT_surface_maintenance1",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_surface",
|
||||
"VK_KHR_get_surface_capabilities2",
|
||||
"VK_KHR_surface",
|
||||
} } } } },
|
||||
{ "VK_EXT_swapchain_maintenance1",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_swapchain",
|
||||
"VK_EXT_surface_maintenance1",
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
"VK_KHR_swapchain",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1", { {} } } } },
|
||||
{ "VK_VERSION_1_1",
|
||||
{ {
|
||||
"VK_EXT_surface_maintenance1",
|
||||
"VK_KHR_swapchain",
|
||||
} } } } },
|
||||
{ "VK_EXT_shader_demote_to_helper_invocation",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
|
@ -1612,18 +1663,21 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
"VK_KHR_get_surface_capabilities2",
|
||||
"VK_KHR_surface",
|
||||
"VK_KHR_swapchain",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1",
|
||||
{ {
|
||||
"VK_KHR_surface",
|
||||
"VK_KHR_get_surface_capabilities2",
|
||||
"VK_KHR_surface",
|
||||
"VK_KHR_swapchain",
|
||||
} } } } },
|
||||
{ "VK_KHR_present_id",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_swapchain",
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
"VK_KHR_swapchain",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1", { {} } } } },
|
||||
{ "VK_EXT_private_data",
|
||||
|
@ -1641,16 +1695,27 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
{ "VK_KHR_video_encode_queue",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_video_queue",
|
||||
"VK_KHR_synchronization2",
|
||||
"VK_KHR_video_queue",
|
||||
} } },
|
||||
{ "VK_VERSION_1_3", { {} } } } },
|
||||
{ "VK_VERSION_1_3",
|
||||
{ {
|
||||
"VK_KHR_video_queue",
|
||||
} } } } },
|
||||
{ "VK_NV_device_diagnostics_config",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1", { {} } } } },
|
||||
{ "VK_QCOM_tile_shading",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_QCOM_tile_properties",
|
||||
},
|
||||
{
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
} } } } },
|
||||
{ "VK_KHR_synchronization2",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
|
@ -1660,12 +1725,16 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
{ "VK_EXT_descriptor_buffer",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_EXT_descriptor_indexing",
|
||||
"VK_KHR_buffer_device_address",
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
"VK_KHR_synchronization2",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1",
|
||||
{ {
|
||||
"VK_KHR_buffer_device_address",
|
||||
"VK_EXT_descriptor_indexing",
|
||||
"VK_KHR_buffer_device_address",
|
||||
"VK_KHR_synchronization2",
|
||||
} } },
|
||||
{ "VK_VERSION_1_2",
|
||||
{ {
|
||||
|
@ -1676,6 +1745,7 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
"VK_KHR_pipeline_library",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1",
|
||||
{ {
|
||||
|
@ -1714,7 +1784,8 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_spirv_1_4",
|
||||
} } } } },
|
||||
} } },
|
||||
{ "VK_VERSION_1_2", { {} } } } },
|
||||
{ "VK_EXT_ycbcr_2plane_444_formats",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
|
@ -1820,6 +1891,7 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
{ "VK_EXT_device_address_binding_report",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_EXT_debug_utils",
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1",
|
||||
|
@ -1853,15 +1925,15 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
{ "VK_FUCHSIA_external_memory",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_external_memory_capabilities",
|
||||
"VK_KHR_external_memory",
|
||||
"VK_KHR_external_memory_capabilities",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1", { {} } } } },
|
||||
{ "VK_FUCHSIA_external_semaphore",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_external_semaphore_capabilities",
|
||||
"VK_KHR_external_semaphore",
|
||||
"VK_KHR_external_semaphore_capabilities",
|
||||
} } } } },
|
||||
{ "VK_FUCHSIA_buffer_collection",
|
||||
{ { "VK_VERSION_1_0",
|
||||
|
@ -1869,12 +1941,16 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
"VK_FUCHSIA_external_memory",
|
||||
"VK_KHR_sampler_ycbcr_conversion",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1", { {} } } } },
|
||||
{ "VK_VERSION_1_1",
|
||||
{ {
|
||||
"VK_FUCHSIA_external_memory",
|
||||
} } } } },
|
||||
#endif /*VK_USE_PLATFORM_FUCHSIA*/
|
||||
{ "VK_HUAWEI_subpass_shading",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_create_renderpass2",
|
||||
"VK_KHR_synchronization2",
|
||||
} } },
|
||||
{ "VK_VERSION_1_2",
|
||||
{ {
|
||||
|
@ -1887,7 +1963,10 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
"VK_KHR_ray_tracing_pipeline",
|
||||
"VK_KHR_synchronization2",
|
||||
} } },
|
||||
{ "VK_VERSION_1_3", { {} } } } },
|
||||
{ "VK_VERSION_1_3",
|
||||
{ {
|
||||
"VK_KHR_ray_tracing_pipeline",
|
||||
} } } } },
|
||||
{ "VK_NV_external_memory_rdma",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
|
@ -1942,7 +2021,10 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
"VK_EXT_global_priority",
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1", { {} } } } },
|
||||
{ "VK_VERSION_1_1",
|
||||
{ {
|
||||
"VK_EXT_global_priority",
|
||||
} } } } },
|
||||
{ "VK_EXT_image_view_min_lod",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
|
@ -1958,8 +2040,8 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
{ "VK_EXT_image_2d_view_of_3d",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_maintenance1",
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
"VK_KHR_maintenance1",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1", { {} } } } },
|
||||
{ "VK_EXT_shader_tile_image", { { "VK_VERSION_1_3", { {} } } } },
|
||||
|
@ -1969,7 +2051,10 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
"VK_KHR_acceleration_structure",
|
||||
"VK_KHR_synchronization2",
|
||||
} } },
|
||||
{ "VK_VERSION_1_3", { {} } } } },
|
||||
{ "VK_VERSION_1_3",
|
||||
{ {
|
||||
"VK_KHR_acceleration_structure",
|
||||
} } } } },
|
||||
#if defined( VK_ENABLE_BETA_EXTENSIONS )
|
||||
{ "VK_NV_displacement_micromap",
|
||||
{ { "VK_VERSION_1_0",
|
||||
|
@ -2003,8 +2088,8 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
{ "VK_EXT_image_sliced_view_of_3d",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_maintenance1",
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
"VK_KHR_maintenance1",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1", { {} } } } },
|
||||
{ "VK_VALVE_descriptor_set_host_mapping",
|
||||
|
@ -2029,6 +2114,7 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
"VK_KHR_synchronization2",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1",
|
||||
{ {
|
||||
|
@ -2038,6 +2124,7 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
{ "VK_QCOM_fragment_density_map_offset",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_EXT_fragment_density_map",
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1",
|
||||
|
@ -2047,6 +2134,7 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
{ "VK_NV_copy_memory_indirect",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_buffer_device_address",
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1",
|
||||
|
@ -2057,6 +2145,7 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
{ "VK_NV_memory_decompression",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_buffer_device_address",
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1",
|
||||
|
@ -2124,6 +2213,7 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
{ "VK_EXT_shader_module_identifier",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_EXT_pipeline_creation_cache_control",
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1",
|
||||
|
@ -2140,7 +2230,9 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
{ "VK_NV_optical_flow",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_format_feature_flags2",
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
"VK_KHR_synchronization2",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1",
|
||||
{ {
|
||||
|
@ -2181,6 +2273,7 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
{ "VK_EXT_shader_object",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_dynamic_rendering",
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1",
|
||||
|
@ -2192,7 +2285,8 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_maintenance5",
|
||||
} } } } },
|
||||
} } },
|
||||
{ "VK_VERSION_1_4", { {} } } } },
|
||||
{ "VK_QCOM_tile_properties",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
|
@ -2220,7 +2314,8 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_maintenance3",
|
||||
} } } } },
|
||||
} } },
|
||||
{ "VK_VERSION_1_1", { {} } } } },
|
||||
{ "VK_EXT_legacy_vertex_attributes",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
|
@ -2235,12 +2330,13 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
{ "VK_EXT_pipeline_library_group_handles",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_ray_tracing_pipeline",
|
||||
"VK_KHR_pipeline_library",
|
||||
"VK_KHR_ray_tracing_pipeline",
|
||||
} } } } },
|
||||
{ "VK_EXT_dynamic_rendering_unused_attachments",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_dynamic_rendering",
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1",
|
||||
|
@ -2264,7 +2360,8 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
} } } } },
|
||||
} } },
|
||||
{ "VK_VERSION_1_1", { {} } } } },
|
||||
{ "VK_KHR_video_decode_av1",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
|
@ -2309,6 +2406,7 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
{ "VK_EXT_attachment_feedback_loop_dynamic_state",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_EXT_attachment_feedback_loop_layout",
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1",
|
||||
|
@ -2330,9 +2428,10 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
{ "VK_QNX_external_memory_screen_buffer",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_sampler_ycbcr_conversion",
|
||||
"VK_KHR_external_memory",
|
||||
"VK_EXT_queue_family_foreign",
|
||||
"VK_KHR_dedicated_allocation",
|
||||
"VK_KHR_external_memory",
|
||||
"VK_KHR_sampler_ycbcr_conversion",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1",
|
||||
{ {
|
||||
|
@ -2380,8 +2479,12 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
{ "VK_KHR_video_encode_quantization_map",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_video_encode_queue",
|
||||
"VK_KHR_format_feature_flags2",
|
||||
"VK_KHR_video_encode_queue",
|
||||
} } },
|
||||
{ "VK_VERSION_1_3",
|
||||
{ {
|
||||
"VK_KHR_video_encode_queue",
|
||||
} } } } },
|
||||
{ "VK_KHR_maintenance7", { { "VK_VERSION_1_1", { {} } } } },
|
||||
{ "VK_NV_cluster_acceleration_structure",
|
||||
|
@ -2399,7 +2502,12 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
{ {
|
||||
"VK_KHR_buffer_device_address",
|
||||
"VK_KHR_maintenance5",
|
||||
} } } } },
|
||||
} } },
|
||||
{ "VK_VERSION_1_2",
|
||||
{ {
|
||||
"VK_KHR_maintenance5",
|
||||
} } },
|
||||
{ "VK_VERSION_1_3", { {} } } } },
|
||||
{ "VK_KHR_maintenance8", { { "VK_VERSION_1_1", { {} } } } },
|
||||
{ "VK_MESA_image_alignment_control",
|
||||
{ { "VK_VERSION_1_0",
|
||||
|
@ -2416,18 +2524,19 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
{ "VK_KHR_video_maintenance2",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_KHR_video_decode_queue",
|
||||
"VK_KHR_video_encode_queue",
|
||||
"VK_KHR_video_queue",
|
||||
} } } } },
|
||||
{ "VK_HUAWEI_hdr_vivid",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_EXT_hdr_metadata",
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
"VK_KHR_swapchain",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1",
|
||||
{ {
|
||||
"VK_KHR_swapchain",
|
||||
"VK_EXT_hdr_metadata",
|
||||
"VK_KHR_swapchain",
|
||||
} } } } },
|
||||
{ "VK_NV_cooperative_matrix2",
|
||||
{ { "VK_VERSION_1_0",
|
||||
|
@ -2458,7 +2567,30 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
{ {
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1", { {} } } } }
|
||||
{ "VK_VERSION_1_1", { {} } } } },
|
||||
{ "VK_EXT_fragment_density_map_offset",
|
||||
{ { "VK_VERSION_1_0",
|
||||
{ {
|
||||
"VK_EXT_fragment_density_map",
|
||||
"VK_KHR_create_renderpass2",
|
||||
"VK_KHR_dynamic_rendering",
|
||||
"VK_KHR_get_physical_device_properties2",
|
||||
} } },
|
||||
{ "VK_VERSION_1_1",
|
||||
{ {
|
||||
"VK_EXT_fragment_density_map",
|
||||
"VK_KHR_create_renderpass2",
|
||||
"VK_KHR_dynamic_rendering",
|
||||
} } },
|
||||
{ "VK_VERSION_1_2",
|
||||
{ {
|
||||
"VK_EXT_fragment_density_map",
|
||||
"VK_KHR_dynamic_rendering",
|
||||
} } },
|
||||
{ "VK_VERSION_1_3",
|
||||
{ {
|
||||
"VK_EXT_fragment_density_map",
|
||||
} } } } }
|
||||
};
|
||||
auto depIt = dependencies.find( extension );
|
||||
return ( depIt != dependencies.end() ) ? depIt->second : noDependencies;
|
||||
|
@ -2596,6 +2728,7 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
{ "VK_KHR_maintenance4", "VK_VERSION_1_3" },
|
||||
{ "VK_KHR_shader_subgroup_rotate", "VK_VERSION_1_4" },
|
||||
{ "VK_EXT_depth_clamp_zero_one", "VK_KHR_depth_clamp_zero_one" },
|
||||
{ "VK_QCOM_fragment_density_map_offset", "VK_EXT_fragment_density_map_offset" },
|
||||
{ "VK_EXT_pipeline_protected_access", "VK_VERSION_1_4" },
|
||||
{ "VK_KHR_maintenance5", "VK_VERSION_1_4" },
|
||||
{ "VK_KHR_vertex_attribute_divisor", "VK_VERSION_1_4" },
|
||||
|
@ -3069,6 +3202,10 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
{
|
||||
return "VK_KHR_depth_clamp_zero_one";
|
||||
}
|
||||
if ( extension == "VK_QCOM_fragment_density_map_offset" )
|
||||
{
|
||||
return "VK_EXT_fragment_density_map_offset";
|
||||
}
|
||||
if ( extension == "VK_EXT_pipeline_protected_access" )
|
||||
{
|
||||
return "VK_VERSION_1_4";
|
||||
|
@ -3184,8 +3321,8 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
|| ( extension == "VK_AMDX_shader_enqueue" )
|
||||
#endif /*VK_ENABLE_BETA_EXTENSIONS*/
|
||||
|| ( extension == "VK_AMD_mixed_attachment_samples" ) || ( extension == "VK_AMD_shader_fragment_mask" ) ||
|
||||
( extension == "VK_EXT_inline_uniform_block" ) || ( extension == "VK_EXT_shader_stencil_export" ) || ( extension == "VK_EXT_sample_locations" ) ||
|
||||
( extension == "VK_KHR_relaxed_block_layout" ) || ( extension == "VK_KHR_get_memory_requirements2" ) ||
|
||||
( extension == "VK_EXT_inline_uniform_block" ) || ( extension == "VK_EXT_shader_stencil_export" ) || ( extension == "VK_KHR_shader_bfloat16" ) ||
|
||||
( extension == "VK_EXT_sample_locations" ) || ( extension == "VK_KHR_relaxed_block_layout" ) || ( extension == "VK_KHR_get_memory_requirements2" ) ||
|
||||
( extension == "VK_KHR_image_format_list" ) || ( extension == "VK_EXT_blend_operation_advanced" ) ||
|
||||
( extension == "VK_NV_fragment_coverage_to_color" ) || ( extension == "VK_KHR_acceleration_structure" ) ||
|
||||
( extension == "VK_KHR_ray_tracing_pipeline" ) || ( extension == "VK_KHR_ray_query" ) || ( extension == "VK_NV_framebuffer_mixed_samples" ) ||
|
||||
|
@ -3248,7 +3385,7 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
#if defined( VK_ENABLE_BETA_EXTENSIONS )
|
||||
|| ( extension == "VK_NV_cuda_kernel_launch" )
|
||||
#endif /*VK_ENABLE_BETA_EXTENSIONS*/
|
||||
|| ( extension == "VK_NV_low_latency" )
|
||||
|| ( extension == "VK_QCOM_tile_shading" ) || ( extension == "VK_NV_low_latency" )
|
||||
#if defined( VK_USE_PLATFORM_METAL_EXT )
|
||||
|| ( extension == "VK_EXT_metal_objects" )
|
||||
#endif /*VK_USE_PLATFORM_METAL_EXT*/
|
||||
|
@ -3320,18 +3457,23 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
|| ( extension == "VK_MSFT_layered_driver" ) || ( extension == "VK_KHR_index_type_uint8" ) || ( extension == "VK_KHR_line_rasterization" ) ||
|
||||
( extension == "VK_KHR_calibrated_timestamps" ) || ( extension == "VK_KHR_shader_expect_assume" ) || ( extension == "VK_KHR_maintenance6" ) ||
|
||||
( extension == "VK_NV_descriptor_pool_overallocation" ) || ( extension == "VK_KHR_video_encode_quantization_map" ) ||
|
||||
( extension == "VK_NV_raw_access_chains" ) || ( extension == "VK_KHR_shader_relaxed_extended_instruction" ) ||
|
||||
( extension == "VK_NV_command_buffer_inheritance" ) || ( extension == "VK_KHR_maintenance7" ) ||
|
||||
( extension == "VK_NV_shader_atomic_float16_vector" ) || ( extension == "VK_EXT_shader_replicated_composites" ) ||
|
||||
( extension == "VK_NV_ray_tracing_validation" ) || ( extension == "VK_NV_cluster_acceleration_structure" ) ||
|
||||
( extension == "VK_NV_partitioned_acceleration_structure" ) || ( extension == "VK_EXT_device_generated_commands" ) ||
|
||||
( extension == "VK_KHR_maintenance8" ) || ( extension == "VK_MESA_image_alignment_control" ) || ( extension == "VK_EXT_depth_clamp_control" ) ||
|
||||
( extension == "VK_NV_raw_access_chains" ) || ( extension == "VK_NV_external_compute_queue" ) ||
|
||||
( extension == "VK_KHR_shader_relaxed_extended_instruction" ) || ( extension == "VK_NV_command_buffer_inheritance" ) ||
|
||||
( extension == "VK_KHR_maintenance7" ) || ( extension == "VK_NV_shader_atomic_float16_vector" ) ||
|
||||
( extension == "VK_EXT_shader_replicated_composites" ) || ( extension == "VK_NV_ray_tracing_validation" ) ||
|
||||
( extension == "VK_NV_cluster_acceleration_structure" ) || ( extension == "VK_NV_partitioned_acceleration_structure" ) ||
|
||||
( extension == "VK_EXT_device_generated_commands" ) || ( extension == "VK_KHR_maintenance8" ) ||
|
||||
( extension == "VK_MESA_image_alignment_control" ) || ( extension == "VK_EXT_depth_clamp_control" ) ||
|
||||
( extension == "VK_KHR_video_maintenance2" ) || ( extension == "VK_HUAWEI_hdr_vivid" ) || ( extension == "VK_NV_cooperative_matrix2" ) ||
|
||||
( extension == "VK_ARM_pipeline_opacity_micromap" )
|
||||
#if defined( VK_USE_PLATFORM_METAL_EXT )
|
||||
|| ( extension == "VK_EXT_external_memory_metal" )
|
||||
#endif /*VK_USE_PLATFORM_METAL_EXT*/
|
||||
|| ( extension == "VK_KHR_depth_clamp_zero_one" ) || ( extension == "VK_EXT_vertex_attribute_robustness" );
|
||||
|| ( extension == "VK_KHR_depth_clamp_zero_one" ) || ( extension == "VK_EXT_vertex_attribute_robustness" )
|
||||
#if defined( VK_ENABLE_BETA_EXTENSIONS )
|
||||
|| ( extension == "VK_NV_present_metering" )
|
||||
#endif /*VK_ENABLE_BETA_EXTENSIONS*/
|
||||
|| ( extension == "VK_EXT_fragment_density_map_offset" );
|
||||
}
|
||||
|
||||
VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 bool isInstanceExtension( std::string const & extension )
|
||||
|
@ -3442,8 +3584,8 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
( extension == "VK_KHR_format_feature_flags2" ) || ( extension == "VK_EXT_extended_dynamic_state2" ) ||
|
||||
( extension == "VK_EXT_global_priority_query" ) || ( extension == "VK_EXT_load_store_op_none" ) || ( extension == "VK_KHR_maintenance4" ) ||
|
||||
( extension == "VK_KHR_shader_subgroup_rotate" ) || ( extension == "VK_EXT_depth_clamp_zero_one" ) ||
|
||||
( extension == "VK_EXT_pipeline_protected_access" ) || ( extension == "VK_KHR_maintenance5" ) ||
|
||||
( extension == "VK_KHR_vertex_attribute_divisor" ) || ( extension == "VK_KHR_load_store_op_none" ) ||
|
||||
( extension == "VK_QCOM_fragment_density_map_offset" ) || ( extension == "VK_EXT_pipeline_protected_access" ) ||
|
||||
( extension == "VK_KHR_maintenance5" ) || ( extension == "VK_KHR_vertex_attribute_divisor" ) || ( extension == "VK_KHR_load_store_op_none" ) ||
|
||||
( extension == "VK_KHR_shader_float_controls2" ) || ( extension == "VK_KHR_index_type_uint8" ) || ( extension == "VK_KHR_line_rasterization" ) ||
|
||||
( extension == "VK_KHR_shader_expect_assume" ) || ( extension == "VK_KHR_maintenance6" );
|
||||
}
|
||||
|
|
|
@ -4662,7 +4662,7 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
case 0: return "SRGB";
|
||||
case 1: return "SRGB";
|
||||
case 2: return "SRGB";
|
||||
case 3: return "SRGB";
|
||||
case 3: return "UNORM";
|
||||
default: VULKAN_HPP_ASSERT( false ); return "";
|
||||
}
|
||||
case VULKAN_HPP_NAMESPACE::Format::eB8G8R8A8Unorm:
|
||||
|
@ -4725,7 +4725,7 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
case 0: return "SRGB";
|
||||
case 1: return "SRGB";
|
||||
case 2: return "SRGB";
|
||||
case 3: return "SRGB";
|
||||
case 3: return "UNORM";
|
||||
default: VULKAN_HPP_ASSERT( false ); return "";
|
||||
}
|
||||
case VULKAN_HPP_NAMESPACE::Format::eA8B8G8R8UnormPack32:
|
||||
|
@ -4785,7 +4785,7 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
case VULKAN_HPP_NAMESPACE::Format::eA8B8G8R8SrgbPack32:
|
||||
switch ( component )
|
||||
{
|
||||
case 0: return "SRGB";
|
||||
case 0: return "UNORM";
|
||||
case 1: return "SRGB";
|
||||
case 2: return "SRGB";
|
||||
case 3: return "SRGB";
|
||||
|
@ -5381,7 +5381,7 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
case 0: return "SRGB";
|
||||
case 1: return "SRGB";
|
||||
case 2: return "SRGB";
|
||||
case 3: return "SRGB";
|
||||
case 3: return "UNORM";
|
||||
default: VULKAN_HPP_ASSERT( false ); return "";
|
||||
}
|
||||
case VULKAN_HPP_NAMESPACE::Format::eBc2UnormBlock:
|
||||
|
@ -5399,7 +5399,7 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
case 0: return "SRGB";
|
||||
case 1: return "SRGB";
|
||||
case 2: return "SRGB";
|
||||
case 3: return "SRGB";
|
||||
case 3: return "UNORM";
|
||||
default: VULKAN_HPP_ASSERT( false ); return "";
|
||||
}
|
||||
case VULKAN_HPP_NAMESPACE::Format::eBc3UnormBlock:
|
||||
|
@ -5417,7 +5417,7 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
case 0: return "SRGB";
|
||||
case 1: return "SRGB";
|
||||
case 2: return "SRGB";
|
||||
case 3: return "SRGB";
|
||||
case 3: return "UNORM";
|
||||
default: VULKAN_HPP_ASSERT( false ); return "";
|
||||
}
|
||||
case VULKAN_HPP_NAMESPACE::Format::eBc4UnormBlock:
|
||||
|
@ -5477,7 +5477,7 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
case 0: return "SRGB";
|
||||
case 1: return "SRGB";
|
||||
case 2: return "SRGB";
|
||||
case 3: return "SRGB";
|
||||
case 3: return "UNORM";
|
||||
default: VULKAN_HPP_ASSERT( false ); return "";
|
||||
}
|
||||
case VULKAN_HPP_NAMESPACE::Format::eEtc2R8G8B8UnormBlock:
|
||||
|
@ -5511,7 +5511,7 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
case 0: return "SRGB";
|
||||
case 1: return "SRGB";
|
||||
case 2: return "SRGB";
|
||||
case 3: return "SRGB";
|
||||
case 3: return "UNORM";
|
||||
default: VULKAN_HPP_ASSERT( false ); return "";
|
||||
}
|
||||
case VULKAN_HPP_NAMESPACE::Format::eEtc2R8G8B8A8UnormBlock:
|
||||
|
@ -5529,7 +5529,7 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
case 0: return "SRGB";
|
||||
case 1: return "SRGB";
|
||||
case 2: return "SRGB";
|
||||
case 3: return "SRGB";
|
||||
case 3: return "UNORM";
|
||||
default: VULKAN_HPP_ASSERT( false ); return "";
|
||||
}
|
||||
case VULKAN_HPP_NAMESPACE::Format::eEacR11UnormBlock:
|
||||
|
@ -5573,7 +5573,7 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
case 0: return "SRGB";
|
||||
case 1: return "SRGB";
|
||||
case 2: return "SRGB";
|
||||
case 3: return "SRGB";
|
||||
case 3: return "UNORM";
|
||||
default: VULKAN_HPP_ASSERT( false ); return "";
|
||||
}
|
||||
case VULKAN_HPP_NAMESPACE::Format::eAstc5x4UnormBlock:
|
||||
|
@ -5591,7 +5591,7 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
case 0: return "SRGB";
|
||||
case 1: return "SRGB";
|
||||
case 2: return "SRGB";
|
||||
case 3: return "SRGB";
|
||||
case 3: return "UNORM";
|
||||
default: VULKAN_HPP_ASSERT( false ); return "";
|
||||
}
|
||||
case VULKAN_HPP_NAMESPACE::Format::eAstc5x5UnormBlock:
|
||||
|
@ -5609,7 +5609,7 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
case 0: return "SRGB";
|
||||
case 1: return "SRGB";
|
||||
case 2: return "SRGB";
|
||||
case 3: return "SRGB";
|
||||
case 3: return "UNORM";
|
||||
default: VULKAN_HPP_ASSERT( false ); return "";
|
||||
}
|
||||
case VULKAN_HPP_NAMESPACE::Format::eAstc6x5UnormBlock:
|
||||
|
@ -5627,7 +5627,7 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
case 0: return "SRGB";
|
||||
case 1: return "SRGB";
|
||||
case 2: return "SRGB";
|
||||
case 3: return "SRGB";
|
||||
case 3: return "UNORM";
|
||||
default: VULKAN_HPP_ASSERT( false ); return "";
|
||||
}
|
||||
case VULKAN_HPP_NAMESPACE::Format::eAstc6x6UnormBlock:
|
||||
|
@ -5645,7 +5645,7 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
case 0: return "SRGB";
|
||||
case 1: return "SRGB";
|
||||
case 2: return "SRGB";
|
||||
case 3: return "SRGB";
|
||||
case 3: return "UNORM";
|
||||
default: VULKAN_HPP_ASSERT( false ); return "";
|
||||
}
|
||||
case VULKAN_HPP_NAMESPACE::Format::eAstc8x5UnormBlock:
|
||||
|
@ -5663,7 +5663,7 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
case 0: return "SRGB";
|
||||
case 1: return "SRGB";
|
||||
case 2: return "SRGB";
|
||||
case 3: return "SRGB";
|
||||
case 3: return "UNORM";
|
||||
default: VULKAN_HPP_ASSERT( false ); return "";
|
||||
}
|
||||
case VULKAN_HPP_NAMESPACE::Format::eAstc8x6UnormBlock:
|
||||
|
@ -5681,7 +5681,7 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
case 0: return "SRGB";
|
||||
case 1: return "SRGB";
|
||||
case 2: return "SRGB";
|
||||
case 3: return "SRGB";
|
||||
case 3: return "UNORM";
|
||||
default: VULKAN_HPP_ASSERT( false ); return "";
|
||||
}
|
||||
case VULKAN_HPP_NAMESPACE::Format::eAstc8x8UnormBlock:
|
||||
|
@ -5699,7 +5699,7 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
case 0: return "SRGB";
|
||||
case 1: return "SRGB";
|
||||
case 2: return "SRGB";
|
||||
case 3: return "SRGB";
|
||||
case 3: return "UNORM";
|
||||
default: VULKAN_HPP_ASSERT( false ); return "";
|
||||
}
|
||||
case VULKAN_HPP_NAMESPACE::Format::eAstc10x5UnormBlock:
|
||||
|
@ -5717,7 +5717,7 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
case 0: return "SRGB";
|
||||
case 1: return "SRGB";
|
||||
case 2: return "SRGB";
|
||||
case 3: return "SRGB";
|
||||
case 3: return "UNORM";
|
||||
default: VULKAN_HPP_ASSERT( false ); return "";
|
||||
}
|
||||
case VULKAN_HPP_NAMESPACE::Format::eAstc10x6UnormBlock:
|
||||
|
@ -5735,7 +5735,7 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
case 0: return "SRGB";
|
||||
case 1: return "SRGB";
|
||||
case 2: return "SRGB";
|
||||
case 3: return "SRGB";
|
||||
case 3: return "UNORM";
|
||||
default: VULKAN_HPP_ASSERT( false ); return "";
|
||||
}
|
||||
case VULKAN_HPP_NAMESPACE::Format::eAstc10x8UnormBlock:
|
||||
|
@ -5753,7 +5753,7 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
case 0: return "SRGB";
|
||||
case 1: return "SRGB";
|
||||
case 2: return "SRGB";
|
||||
case 3: return "SRGB";
|
||||
case 3: return "UNORM";
|
||||
default: VULKAN_HPP_ASSERT( false ); return "";
|
||||
}
|
||||
case VULKAN_HPP_NAMESPACE::Format::eAstc10x10UnormBlock:
|
||||
|
@ -5771,7 +5771,7 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
case 0: return "SRGB";
|
||||
case 1: return "SRGB";
|
||||
case 2: return "SRGB";
|
||||
case 3: return "SRGB";
|
||||
case 3: return "UNORM";
|
||||
default: VULKAN_HPP_ASSERT( false ); return "";
|
||||
}
|
||||
case VULKAN_HPP_NAMESPACE::Format::eAstc12x10UnormBlock:
|
||||
|
@ -5789,7 +5789,7 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
case 0: return "SRGB";
|
||||
case 1: return "SRGB";
|
||||
case 2: return "SRGB";
|
||||
case 3: return "SRGB";
|
||||
case 3: return "UNORM";
|
||||
default: VULKAN_HPP_ASSERT( false ); return "";
|
||||
}
|
||||
case VULKAN_HPP_NAMESPACE::Format::eAstc12x12UnormBlock:
|
||||
|
@ -5807,7 +5807,7 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
case 0: return "SRGB";
|
||||
case 1: return "SRGB";
|
||||
case 2: return "SRGB";
|
||||
case 3: return "SRGB";
|
||||
case 3: return "UNORM";
|
||||
default: VULKAN_HPP_ASSERT( false ); return "";
|
||||
}
|
||||
case VULKAN_HPP_NAMESPACE::Format::eG8B8G8R8422Unorm:
|
||||
|
@ -6319,7 +6319,7 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
case 0: return "SRGB";
|
||||
case 1: return "SRGB";
|
||||
case 2: return "SRGB";
|
||||
case 3: return "SRGB";
|
||||
case 3: return "UNORM";
|
||||
default: VULKAN_HPP_ASSERT( false ); return "";
|
||||
}
|
||||
case VULKAN_HPP_NAMESPACE::Format::ePvrtc14BppSrgbBlockIMG:
|
||||
|
@ -6328,7 +6328,7 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
case 0: return "SRGB";
|
||||
case 1: return "SRGB";
|
||||
case 2: return "SRGB";
|
||||
case 3: return "SRGB";
|
||||
case 3: return "UNORM";
|
||||
default: VULKAN_HPP_ASSERT( false ); return "";
|
||||
}
|
||||
case VULKAN_HPP_NAMESPACE::Format::ePvrtc22BppSrgbBlockIMG:
|
||||
|
@ -6337,7 +6337,7 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
case 0: return "SRGB";
|
||||
case 1: return "SRGB";
|
||||
case 2: return "SRGB";
|
||||
case 3: return "SRGB";
|
||||
case 3: return "UNORM";
|
||||
default: VULKAN_HPP_ASSERT( false ); return "";
|
||||
}
|
||||
case VULKAN_HPP_NAMESPACE::Format::ePvrtc24BppSrgbBlockIMG:
|
||||
|
@ -6346,7 +6346,7 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
case 0: return "SRGB";
|
||||
case 1: return "SRGB";
|
||||
case 2: return "SRGB";
|
||||
case 3: return "SRGB";
|
||||
case 3: return "UNORM";
|
||||
default: VULKAN_HPP_ASSERT( false ); return "";
|
||||
}
|
||||
case VULKAN_HPP_NAMESPACE::Format::eR16G16Sfixed5NV:
|
||||
|
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -536,6 +536,17 @@ namespace std
|
|||
}
|
||||
};
|
||||
|
||||
//=== VK_NV_external_compute_queue ===
|
||||
|
||||
template <>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::ExternalComputeQueueNV>
|
||||
{
|
||||
std::size_t operator()( VULKAN_HPP_NAMESPACE::ExternalComputeQueueNV const & externalComputeQueueNV ) const VULKAN_HPP_NOEXCEPT
|
||||
{
|
||||
return std::hash<VkExternalComputeQueueNV>{}( static_cast<VkExternalComputeQueueNV>( externalComputeQueueNV ) );
|
||||
}
|
||||
};
|
||||
|
||||
//=== VK_EXT_device_generated_commands ===
|
||||
|
||||
template <>
|
||||
|
@ -4512,6 +4523,18 @@ namespace std
|
|||
}
|
||||
};
|
||||
|
||||
template <>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::DispatchTileInfoQCOM>
|
||||
{
|
||||
std::size_t operator()( VULKAN_HPP_NAMESPACE::DispatchTileInfoQCOM const & dispatchTileInfoQCOM ) const VULKAN_HPP_NOEXCEPT
|
||||
{
|
||||
std::size_t seed = 0;
|
||||
VULKAN_HPP_HASH_COMBINE( seed, dispatchTileInfoQCOM.sType );
|
||||
VULKAN_HPP_HASH_COMBINE( seed, dispatchTileInfoQCOM.pNext );
|
||||
return seed;
|
||||
}
|
||||
};
|
||||
|
||||
template <>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::DisplayEventInfoEXT>
|
||||
{
|
||||
|
@ -5243,6 +5266,46 @@ namespace std
|
|||
}
|
||||
};
|
||||
|
||||
template <>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::ExternalComputeQueueCreateInfoNV>
|
||||
{
|
||||
std::size_t operator()( VULKAN_HPP_NAMESPACE::ExternalComputeQueueCreateInfoNV const & externalComputeQueueCreateInfoNV ) const VULKAN_HPP_NOEXCEPT
|
||||
{
|
||||
std::size_t seed = 0;
|
||||
VULKAN_HPP_HASH_COMBINE( seed, externalComputeQueueCreateInfoNV.sType );
|
||||
VULKAN_HPP_HASH_COMBINE( seed, externalComputeQueueCreateInfoNV.pNext );
|
||||
VULKAN_HPP_HASH_COMBINE( seed, externalComputeQueueCreateInfoNV.preferredQueue );
|
||||
return seed;
|
||||
}
|
||||
};
|
||||
|
||||
template <>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::ExternalComputeQueueDataParamsNV>
|
||||
{
|
||||
std::size_t operator()( VULKAN_HPP_NAMESPACE::ExternalComputeQueueDataParamsNV const & externalComputeQueueDataParamsNV ) const VULKAN_HPP_NOEXCEPT
|
||||
{
|
||||
std::size_t seed = 0;
|
||||
VULKAN_HPP_HASH_COMBINE( seed, externalComputeQueueDataParamsNV.sType );
|
||||
VULKAN_HPP_HASH_COMBINE( seed, externalComputeQueueDataParamsNV.pNext );
|
||||
VULKAN_HPP_HASH_COMBINE( seed, externalComputeQueueDataParamsNV.deviceIndex );
|
||||
return seed;
|
||||
}
|
||||
};
|
||||
|
||||
template <>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::ExternalComputeQueueDeviceCreateInfoNV>
|
||||
{
|
||||
std::size_t
|
||||
operator()( VULKAN_HPP_NAMESPACE::ExternalComputeQueueDeviceCreateInfoNV const & externalComputeQueueDeviceCreateInfoNV ) const VULKAN_HPP_NOEXCEPT
|
||||
{
|
||||
std::size_t seed = 0;
|
||||
VULKAN_HPP_HASH_COMBINE( seed, externalComputeQueueDeviceCreateInfoNV.sType );
|
||||
VULKAN_HPP_HASH_COMBINE( seed, externalComputeQueueDeviceCreateInfoNV.pNext );
|
||||
VULKAN_HPP_HASH_COMBINE( seed, externalComputeQueueDeviceCreateInfoNV.reservedExternalQueues );
|
||||
return seed;
|
||||
}
|
||||
};
|
||||
|
||||
template <>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::ExternalFenceProperties>
|
||||
{
|
||||
|
@ -8033,6 +8096,30 @@ namespace std
|
|||
}
|
||||
};
|
||||
|
||||
template <>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::PerTileBeginInfoQCOM>
|
||||
{
|
||||
std::size_t operator()( VULKAN_HPP_NAMESPACE::PerTileBeginInfoQCOM const & perTileBeginInfoQCOM ) const VULKAN_HPP_NOEXCEPT
|
||||
{
|
||||
std::size_t seed = 0;
|
||||
VULKAN_HPP_HASH_COMBINE( seed, perTileBeginInfoQCOM.sType );
|
||||
VULKAN_HPP_HASH_COMBINE( seed, perTileBeginInfoQCOM.pNext );
|
||||
return seed;
|
||||
}
|
||||
};
|
||||
|
||||
template <>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::PerTileEndInfoQCOM>
|
||||
{
|
||||
std::size_t operator()( VULKAN_HPP_NAMESPACE::PerTileEndInfoQCOM const & perTileEndInfoQCOM ) const VULKAN_HPP_NOEXCEPT
|
||||
{
|
||||
std::size_t seed = 0;
|
||||
VULKAN_HPP_HASH_COMBINE( seed, perTileEndInfoQCOM.sType );
|
||||
VULKAN_HPP_HASH_COMBINE( seed, perTileEndInfoQCOM.pNext );
|
||||
return seed;
|
||||
}
|
||||
};
|
||||
|
||||
template <>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL>
|
||||
{
|
||||
|
@ -9536,6 +9623,21 @@ namespace std
|
|||
}
|
||||
};
|
||||
|
||||
template <>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalComputeQueuePropertiesNV>
|
||||
{
|
||||
std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalComputeQueuePropertiesNV const & physicalDeviceExternalComputeQueuePropertiesNV ) const
|
||||
VULKAN_HPP_NOEXCEPT
|
||||
{
|
||||
std::size_t seed = 0;
|
||||
VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalComputeQueuePropertiesNV.sType );
|
||||
VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalComputeQueuePropertiesNV.pNext );
|
||||
VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalComputeQueuePropertiesNV.externalDataSize );
|
||||
VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalComputeQueuePropertiesNV.maxExternalQueues );
|
||||
return seed;
|
||||
}
|
||||
};
|
||||
|
||||
template <>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo>
|
||||
{
|
||||
|
@ -9761,30 +9863,30 @@ namespace std
|
|||
};
|
||||
|
||||
template <>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT>
|
||||
{
|
||||
std::size_t
|
||||
operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM const & physicalDeviceFragmentDensityMapOffsetFeaturesQCOM ) const
|
||||
VULKAN_HPP_NOEXCEPT
|
||||
std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT const & physicalDeviceFragmentDensityMapOffsetFeaturesEXT )
|
||||
const VULKAN_HPP_NOEXCEPT
|
||||
{
|
||||
std::size_t seed = 0;
|
||||
VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapOffsetFeaturesQCOM.sType );
|
||||
VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapOffsetFeaturesQCOM.pNext );
|
||||
VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapOffsetFeaturesQCOM.fragmentDensityMapOffset );
|
||||
VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapOffsetFeaturesEXT.sType );
|
||||
VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapOffsetFeaturesEXT.pNext );
|
||||
VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapOffsetFeaturesEXT.fragmentDensityMapOffset );
|
||||
return seed;
|
||||
}
|
||||
};
|
||||
|
||||
template <>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT>
|
||||
{
|
||||
std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM const &
|
||||
physicalDeviceFragmentDensityMapOffsetPropertiesQCOM ) const VULKAN_HPP_NOEXCEPT
|
||||
std::size_t
|
||||
operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT const & physicalDeviceFragmentDensityMapOffsetPropertiesEXT ) const
|
||||
VULKAN_HPP_NOEXCEPT
|
||||
{
|
||||
std::size_t seed = 0;
|
||||
VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapOffsetPropertiesQCOM.sType );
|
||||
VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapOffsetPropertiesQCOM.pNext );
|
||||
VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapOffsetPropertiesQCOM.fragmentDensityOffsetGranularity );
|
||||
VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapOffsetPropertiesEXT.sType );
|
||||
VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapOffsetPropertiesEXT.pNext );
|
||||
VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapOffsetPropertiesEXT.fragmentDensityOffsetGranularity );
|
||||
return seed;
|
||||
}
|
||||
};
|
||||
|
@ -11720,6 +11822,22 @@ namespace std
|
|||
}
|
||||
};
|
||||
|
||||
# if defined( VK_ENABLE_BETA_EXTENSIONS )
|
||||
template <>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::PhysicalDevicePresentMeteringFeaturesNV>
|
||||
{
|
||||
std::size_t
|
||||
operator()( VULKAN_HPP_NAMESPACE::PhysicalDevicePresentMeteringFeaturesNV const & physicalDevicePresentMeteringFeaturesNV ) const VULKAN_HPP_NOEXCEPT
|
||||
{
|
||||
std::size_t seed = 0;
|
||||
VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePresentMeteringFeaturesNV.sType );
|
||||
VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePresentMeteringFeaturesNV.pNext );
|
||||
VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePresentMeteringFeaturesNV.presentMetering );
|
||||
return seed;
|
||||
}
|
||||
};
|
||||
# endif /*VK_ENABLE_BETA_EXTENSIONS*/
|
||||
|
||||
template <>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::PhysicalDevicePresentModeFifoLatestReadyFeaturesEXT>
|
||||
{
|
||||
|
@ -12355,6 +12473,22 @@ namespace std
|
|||
}
|
||||
};
|
||||
|
||||
template <>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderBfloat16FeaturesKHR>
|
||||
{
|
||||
std::size_t
|
||||
operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderBfloat16FeaturesKHR const & physicalDeviceShaderBfloat16FeaturesKHR ) const VULKAN_HPP_NOEXCEPT
|
||||
{
|
||||
std::size_t seed = 0;
|
||||
VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderBfloat16FeaturesKHR.sType );
|
||||
VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderBfloat16FeaturesKHR.pNext );
|
||||
VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderBfloat16FeaturesKHR.shaderBFloat16Type );
|
||||
VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderBfloat16FeaturesKHR.shaderBFloat16DotProduct );
|
||||
VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderBfloat16FeaturesKHR.shaderBFloat16CooperativeMatrix );
|
||||
return seed;
|
||||
}
|
||||
};
|
||||
|
||||
template <>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderClockFeaturesKHR>
|
||||
{
|
||||
|
@ -13163,6 +13297,50 @@ namespace std
|
|||
}
|
||||
};
|
||||
|
||||
template <>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceTileShadingFeaturesQCOM>
|
||||
{
|
||||
std::size_t
|
||||
operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceTileShadingFeaturesQCOM const & physicalDeviceTileShadingFeaturesQCOM ) const VULKAN_HPP_NOEXCEPT
|
||||
{
|
||||
std::size_t seed = 0;
|
||||
VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTileShadingFeaturesQCOM.sType );
|
||||
VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTileShadingFeaturesQCOM.pNext );
|
||||
VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTileShadingFeaturesQCOM.tileShading );
|
||||
VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTileShadingFeaturesQCOM.tileShadingFragmentStage );
|
||||
VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTileShadingFeaturesQCOM.tileShadingColorAttachments );
|
||||
VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTileShadingFeaturesQCOM.tileShadingDepthAttachments );
|
||||
VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTileShadingFeaturesQCOM.tileShadingStencilAttachments );
|
||||
VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTileShadingFeaturesQCOM.tileShadingInputAttachments );
|
||||
VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTileShadingFeaturesQCOM.tileShadingSampledAttachments );
|
||||
VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTileShadingFeaturesQCOM.tileShadingPerTileDraw );
|
||||
VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTileShadingFeaturesQCOM.tileShadingPerTileDispatch );
|
||||
VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTileShadingFeaturesQCOM.tileShadingDispatchTile );
|
||||
VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTileShadingFeaturesQCOM.tileShadingApron );
|
||||
VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTileShadingFeaturesQCOM.tileShadingAnisotropicApron );
|
||||
VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTileShadingFeaturesQCOM.tileShadingAtomicOps );
|
||||
VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTileShadingFeaturesQCOM.tileShadingImageProcessing );
|
||||
return seed;
|
||||
}
|
||||
};
|
||||
|
||||
template <>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceTileShadingPropertiesQCOM>
|
||||
{
|
||||
std::size_t
|
||||
operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceTileShadingPropertiesQCOM const & physicalDeviceTileShadingPropertiesQCOM ) const VULKAN_HPP_NOEXCEPT
|
||||
{
|
||||
std::size_t seed = 0;
|
||||
VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTileShadingPropertiesQCOM.sType );
|
||||
VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTileShadingPropertiesQCOM.pNext );
|
||||
VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTileShadingPropertiesQCOM.maxApronSize );
|
||||
VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTileShadingPropertiesQCOM.preferNonCoherent );
|
||||
VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTileShadingPropertiesQCOM.tileGranularity );
|
||||
VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTileShadingPropertiesQCOM.maxTileShadingRate );
|
||||
return seed;
|
||||
}
|
||||
};
|
||||
|
||||
template <>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreFeatures>
|
||||
{
|
||||
|
@ -15466,6 +15644,21 @@ namespace std
|
|||
}
|
||||
};
|
||||
|
||||
template <>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::RenderPassFragmentDensityMapOffsetEndInfoEXT>
|
||||
{
|
||||
std::size_t operator()( VULKAN_HPP_NAMESPACE::RenderPassFragmentDensityMapOffsetEndInfoEXT const & renderPassFragmentDensityMapOffsetEndInfoEXT ) const
|
||||
VULKAN_HPP_NOEXCEPT
|
||||
{
|
||||
std::size_t seed = 0;
|
||||
VULKAN_HPP_HASH_COMBINE( seed, renderPassFragmentDensityMapOffsetEndInfoEXT.sType );
|
||||
VULKAN_HPP_HASH_COMBINE( seed, renderPassFragmentDensityMapOffsetEndInfoEXT.pNext );
|
||||
VULKAN_HPP_HASH_COMBINE( seed, renderPassFragmentDensityMapOffsetEndInfoEXT.fragmentDensityOffsetCount );
|
||||
VULKAN_HPP_HASH_COMBINE( seed, renderPassFragmentDensityMapOffsetEndInfoEXT.pFragmentDensityOffsets );
|
||||
return seed;
|
||||
}
|
||||
};
|
||||
|
||||
template <>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo>
|
||||
{
|
||||
|
@ -15615,6 +15808,20 @@ namespace std
|
|||
}
|
||||
};
|
||||
|
||||
template <>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::RenderPassTileShadingCreateInfoQCOM>
|
||||
{
|
||||
std::size_t operator()( VULKAN_HPP_NAMESPACE::RenderPassTileShadingCreateInfoQCOM const & renderPassTileShadingCreateInfoQCOM ) const VULKAN_HPP_NOEXCEPT
|
||||
{
|
||||
std::size_t seed = 0;
|
||||
VULKAN_HPP_HASH_COMBINE( seed, renderPassTileShadingCreateInfoQCOM.sType );
|
||||
VULKAN_HPP_HASH_COMBINE( seed, renderPassTileShadingCreateInfoQCOM.pNext );
|
||||
VULKAN_HPP_HASH_COMBINE( seed, renderPassTileShadingCreateInfoQCOM.flags );
|
||||
VULKAN_HPP_HASH_COMBINE( seed, renderPassTileShadingCreateInfoQCOM.tileApronSize );
|
||||
return seed;
|
||||
}
|
||||
};
|
||||
|
||||
template <>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::RenderPassTransformBeginInfoQCOM>
|
||||
{
|
||||
|
@ -15659,6 +15866,18 @@ namespace std
|
|||
}
|
||||
};
|
||||
|
||||
template <>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::RenderingEndInfoEXT>
|
||||
{
|
||||
std::size_t operator()( VULKAN_HPP_NAMESPACE::RenderingEndInfoEXT const & renderingEndInfoEXT ) const VULKAN_HPP_NOEXCEPT
|
||||
{
|
||||
std::size_t seed = 0;
|
||||
VULKAN_HPP_HASH_COMBINE( seed, renderingEndInfoEXT.sType );
|
||||
VULKAN_HPP_HASH_COMBINE( seed, renderingEndInfoEXT.pNext );
|
||||
return seed;
|
||||
}
|
||||
};
|
||||
|
||||
template <>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::RenderingFragmentDensityMapAttachmentInfoEXT>
|
||||
{
|
||||
|
@ -16094,6 +16313,22 @@ namespace std
|
|||
}
|
||||
};
|
||||
|
||||
# if defined( VK_ENABLE_BETA_EXTENSIONS )
|
||||
template <>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::SetPresentConfigNV>
|
||||
{
|
||||
std::size_t operator()( VULKAN_HPP_NAMESPACE::SetPresentConfigNV const & setPresentConfigNV ) const VULKAN_HPP_NOEXCEPT
|
||||
{
|
||||
std::size_t seed = 0;
|
||||
VULKAN_HPP_HASH_COMBINE( seed, setPresentConfigNV.sType );
|
||||
VULKAN_HPP_HASH_COMBINE( seed, setPresentConfigNV.pNext );
|
||||
VULKAN_HPP_HASH_COMBINE( seed, setPresentConfigNV.numFramesPerBatch );
|
||||
VULKAN_HPP_HASH_COMBINE( seed, setPresentConfigNV.presentConfigFeedback );
|
||||
return seed;
|
||||
}
|
||||
};
|
||||
# endif /*VK_ENABLE_BETA_EXTENSIONS*/
|
||||
|
||||
template <>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::SetStateFlagsIndirectCommandNV>
|
||||
{
|
||||
|
@ -16375,21 +16610,6 @@ namespace std
|
|||
}
|
||||
};
|
||||
|
||||
template <>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::SubpassFragmentDensityMapOffsetEndInfoQCOM>
|
||||
{
|
||||
std::size_t operator()( VULKAN_HPP_NAMESPACE::SubpassFragmentDensityMapOffsetEndInfoQCOM const & subpassFragmentDensityMapOffsetEndInfoQCOM ) const
|
||||
VULKAN_HPP_NOEXCEPT
|
||||
{
|
||||
std::size_t seed = 0;
|
||||
VULKAN_HPP_HASH_COMBINE( seed, subpassFragmentDensityMapOffsetEndInfoQCOM.sType );
|
||||
VULKAN_HPP_HASH_COMBINE( seed, subpassFragmentDensityMapOffsetEndInfoQCOM.pNext );
|
||||
VULKAN_HPP_HASH_COMBINE( seed, subpassFragmentDensityMapOffsetEndInfoQCOM.fragmentDensityOffsetCount );
|
||||
VULKAN_HPP_HASH_COMBINE( seed, subpassFragmentDensityMapOffsetEndInfoQCOM.pFragmentDensityOffsets );
|
||||
return seed;
|
||||
}
|
||||
};
|
||||
|
||||
template <>
|
||||
struct hash<VULKAN_HPP_NAMESPACE::SubpassResolvePerformanceQueryEXT>
|
||||
{
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -315,6 +315,9 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
# if defined( __GNUC__ ) && !defined( __clang__ ) && !defined( __INTEL_COMPILER )
|
||||
# pragma GCC diagnostic push
|
||||
# pragma GCC diagnostic ignored "-Wcast-function-type"
|
||||
# elif defined( __clang__ ) && ( __clang_major__ >= 13 ) && !defined( __INTEL_COMPILER )
|
||||
# pragma clang diagnostic push
|
||||
# pragma clang diagnostic ignored "-Wcast-function-type"
|
||||
# endif
|
||||
|
||||
template <typename HandleType>
|
||||
|
@ -459,6 +462,8 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
|
||||
# if defined( __GNUC__ ) && !defined( __clang__ ) && !defined( __INTEL_COMPILER )
|
||||
# pragma GCC diagnostic pop
|
||||
# elif defined( __clang__ ) && ( __clang_major__ >= 13 ) && !defined( __INTEL_COMPILER )
|
||||
# pragma clang diagnostic pop
|
||||
# endif
|
||||
|
||||
} // namespace detail
|
||||
|
@ -976,6 +981,17 @@ namespace VULKAN_HPP_NAMESPACE
|
|||
|
||||
using SharedPipelineBinaryKHR = SharedHandle<PipelineBinaryKHR>;
|
||||
|
||||
//=== VK_NV_external_compute_queue ===
|
||||
template <>
|
||||
class SharedHandleTraits<ExternalComputeQueueNV>
|
||||
{
|
||||
public:
|
||||
using DestructorType = Device;
|
||||
using deleter = detail::ObjectDestroyShared<ExternalComputeQueueNV>;
|
||||
};
|
||||
|
||||
using SharedExternalComputeQueueNV = SharedHandle<ExternalComputeQueueNV>;
|
||||
|
||||
//=== VK_EXT_device_generated_commands ===
|
||||
template <>
|
||||
class SharedHandleTraits<IndirectCommandsLayoutEXT>
|
||||
|
|
|
@ -3611,6 +3611,15 @@ VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::Attachme
|
|||
VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::AttachmentSampleCountInfoAMD>::value,
|
||||
"AttachmentSampleCountInfoAMD is not nothrow_move_constructible!" );
|
||||
|
||||
//=== VK_KHR_shader_bfloat16 ===
|
||||
|
||||
VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderBfloat16FeaturesKHR ) == sizeof( VkPhysicalDeviceShaderBfloat16FeaturesKHR ),
|
||||
"struct and wrapper have different size!" );
|
||||
VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderBfloat16FeaturesKHR>::value,
|
||||
"struct wrapper is not a standard layout!" );
|
||||
VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderBfloat16FeaturesKHR>::value,
|
||||
"PhysicalDeviceShaderBfloat16FeaturesKHR is not nothrow_move_constructible!" );
|
||||
|
||||
//=== VK_EXT_sample_locations ===
|
||||
|
||||
VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SampleLocationEXT ) == sizeof( VkSampleLocationEXT ), "struct and wrapper have different size!" );
|
||||
|
@ -5393,6 +5402,44 @@ VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPAC
|
|||
"PhysicalDeviceCudaKernelLaunchPropertiesNV is not nothrow_move_constructible!" );
|
||||
#endif /*VK_ENABLE_BETA_EXTENSIONS*/
|
||||
|
||||
//=== VK_QCOM_tile_shading ===
|
||||
|
||||
VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceTileShadingFeaturesQCOM ) == sizeof( VkPhysicalDeviceTileShadingFeaturesQCOM ),
|
||||
"struct and wrapper have different size!" );
|
||||
VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceTileShadingFeaturesQCOM>::value,
|
||||
"struct wrapper is not a standard layout!" );
|
||||
VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceTileShadingFeaturesQCOM>::value,
|
||||
"PhysicalDeviceTileShadingFeaturesQCOM is not nothrow_move_constructible!" );
|
||||
|
||||
VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceTileShadingPropertiesQCOM ) == sizeof( VkPhysicalDeviceTileShadingPropertiesQCOM ),
|
||||
"struct and wrapper have different size!" );
|
||||
VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceTileShadingPropertiesQCOM>::value,
|
||||
"struct wrapper is not a standard layout!" );
|
||||
VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceTileShadingPropertiesQCOM>::value,
|
||||
"PhysicalDeviceTileShadingPropertiesQCOM is not nothrow_move_constructible!" );
|
||||
|
||||
VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RenderPassTileShadingCreateInfoQCOM ) == sizeof( VkRenderPassTileShadingCreateInfoQCOM ),
|
||||
"struct and wrapper have different size!" );
|
||||
VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::RenderPassTileShadingCreateInfoQCOM>::value,
|
||||
"struct wrapper is not a standard layout!" );
|
||||
VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::RenderPassTileShadingCreateInfoQCOM>::value,
|
||||
"RenderPassTileShadingCreateInfoQCOM is not nothrow_move_constructible!" );
|
||||
|
||||
VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PerTileBeginInfoQCOM ) == sizeof( VkPerTileBeginInfoQCOM ), "struct and wrapper have different size!" );
|
||||
VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PerTileBeginInfoQCOM>::value, "struct wrapper is not a standard layout!" );
|
||||
VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PerTileBeginInfoQCOM>::value,
|
||||
"PerTileBeginInfoQCOM is not nothrow_move_constructible!" );
|
||||
|
||||
VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PerTileEndInfoQCOM ) == sizeof( VkPerTileEndInfoQCOM ), "struct and wrapper have different size!" );
|
||||
VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PerTileEndInfoQCOM>::value, "struct wrapper is not a standard layout!" );
|
||||
VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PerTileEndInfoQCOM>::value,
|
||||
"PerTileEndInfoQCOM is not nothrow_move_constructible!" );
|
||||
|
||||
VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DispatchTileInfoQCOM ) == sizeof( VkDispatchTileInfoQCOM ), "struct and wrapper have different size!" );
|
||||
VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DispatchTileInfoQCOM>::value, "struct wrapper is not a standard layout!" );
|
||||
VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DispatchTileInfoQCOM>::value,
|
||||
"DispatchTileInfoQCOM is not nothrow_move_constructible!" );
|
||||
|
||||
//=== VK_NV_low_latency ===
|
||||
|
||||
VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::QueryLowLatencySupportNV ) == sizeof( VkQueryLowLatencySupportNV ),
|
||||
|
@ -6595,31 +6642,6 @@ VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::RenderPa
|
|||
VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::RenderPassStripeSubmitInfoARM>::value,
|
||||
"RenderPassStripeSubmitInfoARM is not nothrow_move_constructible!" );
|
||||
|
||||
//=== VK_QCOM_fragment_density_map_offset ===
|
||||
|
||||
VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM ) ==
|
||||
sizeof( VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM ),
|
||||
"struct and wrapper have different size!" );
|
||||
VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM>::value,
|
||||
"struct wrapper is not a standard layout!" );
|
||||
VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM>::value,
|
||||
"PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM is not nothrow_move_constructible!" );
|
||||
|
||||
VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM ) ==
|
||||
sizeof( VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM ),
|
||||
"struct and wrapper have different size!" );
|
||||
VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM>::value,
|
||||
"struct wrapper is not a standard layout!" );
|
||||
VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM>::value,
|
||||
"PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM is not nothrow_move_constructible!" );
|
||||
|
||||
VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SubpassFragmentDensityMapOffsetEndInfoQCOM ) == sizeof( VkSubpassFragmentDensityMapOffsetEndInfoQCOM ),
|
||||
"struct and wrapper have different size!" );
|
||||
VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::SubpassFragmentDensityMapOffsetEndInfoQCOM>::value,
|
||||
"struct wrapper is not a standard layout!" );
|
||||
VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::SubpassFragmentDensityMapOffsetEndInfoQCOM>::value,
|
||||
"SubpassFragmentDensityMapOffsetEndInfoQCOM is not nothrow_move_constructible!" );
|
||||
|
||||
//=== VK_NV_copy_memory_indirect ===
|
||||
|
||||
VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CopyMemoryIndirectCommandNV ) == sizeof( VkCopyMemoryIndirectCommandNV ),
|
||||
|
@ -7881,6 +7903,42 @@ VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::Physical
|
|||
VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceRawAccessChainsFeaturesNV>::value,
|
||||
"PhysicalDeviceRawAccessChainsFeaturesNV is not nothrow_move_constructible!" );
|
||||
|
||||
//=== VK_NV_external_compute_queue ===
|
||||
|
||||
VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExternalComputeQueueNV ) == sizeof( VkExternalComputeQueueNV ),
|
||||
"handle and wrapper have different size!" );
|
||||
VULKAN_HPP_STATIC_ASSERT( std::is_copy_constructible<VULKAN_HPP_NAMESPACE::ExternalComputeQueueNV>::value,
|
||||
"ExternalComputeQueueNV is not copy_constructible!" );
|
||||
VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ExternalComputeQueueNV>::value,
|
||||
"ExternalComputeQueueNV is not nothrow_move_constructible!" );
|
||||
|
||||
VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExternalComputeQueueDeviceCreateInfoNV ) == sizeof( VkExternalComputeQueueDeviceCreateInfoNV ),
|
||||
"struct and wrapper have different size!" );
|
||||
VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ExternalComputeQueueDeviceCreateInfoNV>::value,
|
||||
"struct wrapper is not a standard layout!" );
|
||||
VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ExternalComputeQueueDeviceCreateInfoNV>::value,
|
||||
"ExternalComputeQueueDeviceCreateInfoNV is not nothrow_move_constructible!" );
|
||||
|
||||
VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExternalComputeQueueCreateInfoNV ) == sizeof( VkExternalComputeQueueCreateInfoNV ),
|
||||
"struct and wrapper have different size!" );
|
||||
VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ExternalComputeQueueCreateInfoNV>::value, "struct wrapper is not a standard layout!" );
|
||||
VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ExternalComputeQueueCreateInfoNV>::value,
|
||||
"ExternalComputeQueueCreateInfoNV is not nothrow_move_constructible!" );
|
||||
|
||||
VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExternalComputeQueueDataParamsNV ) == sizeof( VkExternalComputeQueueDataParamsNV ),
|
||||
"struct and wrapper have different size!" );
|
||||
VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ExternalComputeQueueDataParamsNV>::value, "struct wrapper is not a standard layout!" );
|
||||
VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ExternalComputeQueueDataParamsNV>::value,
|
||||
"ExternalComputeQueueDataParamsNV is not nothrow_move_constructible!" );
|
||||
|
||||
VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalComputeQueuePropertiesNV ) ==
|
||||
sizeof( VkPhysicalDeviceExternalComputeQueuePropertiesNV ),
|
||||
"struct and wrapper have different size!" );
|
||||
VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalComputeQueuePropertiesNV>::value,
|
||||
"struct wrapper is not a standard layout!" );
|
||||
VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalComputeQueuePropertiesNV>::value,
|
||||
"PhysicalDeviceExternalComputeQueuePropertiesNV is not nothrow_move_constructible!" );
|
||||
|
||||
//=== VK_KHR_shader_relaxed_extended_instruction ===
|
||||
|
||||
VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR ) ==
|
||||
|
@ -8531,4 +8589,51 @@ VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::Physical
|
|||
VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeRobustnessFeaturesEXT>::value,
|
||||
"PhysicalDeviceVertexAttributeRobustnessFeaturesEXT is not nothrow_move_constructible!" );
|
||||
|
||||
#if defined( VK_ENABLE_BETA_EXTENSIONS )
|
||||
//=== VK_NV_present_metering ===
|
||||
|
||||
VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SetPresentConfigNV ) == sizeof( VkSetPresentConfigNV ), "struct and wrapper have different size!" );
|
||||
VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::SetPresentConfigNV>::value, "struct wrapper is not a standard layout!" );
|
||||
VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::SetPresentConfigNV>::value,
|
||||
"SetPresentConfigNV is not nothrow_move_constructible!" );
|
||||
|
||||
VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePresentMeteringFeaturesNV ) == sizeof( VkPhysicalDevicePresentMeteringFeaturesNV ),
|
||||
"struct and wrapper have different size!" );
|
||||
VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDevicePresentMeteringFeaturesNV>::value,
|
||||
"struct wrapper is not a standard layout!" );
|
||||
VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDevicePresentMeteringFeaturesNV>::value,
|
||||
"PhysicalDevicePresentMeteringFeaturesNV is not nothrow_move_constructible!" );
|
||||
#endif /*VK_ENABLE_BETA_EXTENSIONS*/
|
||||
|
||||
//=== VK_EXT_fragment_density_map_offset ===
|
||||
|
||||
VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RenderingEndInfoEXT ) == sizeof( VkRenderingEndInfoEXT ), "struct and wrapper have different size!" );
|
||||
VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::RenderingEndInfoEXT>::value, "struct wrapper is not a standard layout!" );
|
||||
VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::RenderingEndInfoEXT>::value,
|
||||
"RenderingEndInfoEXT is not nothrow_move_constructible!" );
|
||||
|
||||
VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT ) ==
|
||||
sizeof( VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT ),
|
||||
"struct and wrapper have different size!" );
|
||||
VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT>::value,
|
||||
"struct wrapper is not a standard layout!" );
|
||||
VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT>::value,
|
||||
"PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT is not nothrow_move_constructible!" );
|
||||
|
||||
VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT ) ==
|
||||
sizeof( VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT ),
|
||||
"struct and wrapper have different size!" );
|
||||
VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT>::value,
|
||||
"struct wrapper is not a standard layout!" );
|
||||
VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT>::value,
|
||||
"PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT is not nothrow_move_constructible!" );
|
||||
|
||||
VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RenderPassFragmentDensityMapOffsetEndInfoEXT ) ==
|
||||
sizeof( VkRenderPassFragmentDensityMapOffsetEndInfoEXT ),
|
||||
"struct and wrapper have different size!" );
|
||||
VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::RenderPassFragmentDensityMapOffsetEndInfoEXT>::value,
|
||||
"struct wrapper is not a standard layout!" );
|
||||
VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::RenderPassFragmentDensityMapOffsetEndInfoEXT>::value,
|
||||
"RenderPassFragmentDensityMapOffsetEndInfoEXT is not nothrow_move_constructible!" );
|
||||
|
||||
#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
803
registry/base_generator.py
Normal file
803
registry/base_generator.py
Normal file
|
@ -0,0 +1,803 @@
|
|||
#!/usr/bin/env python3 -i
|
||||
#
|
||||
# Copyright 2023-2025 The Khronos Group Inc.
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import pickle
|
||||
import os
|
||||
import tempfile
|
||||
from vulkan_object import (VulkanObject,
|
||||
Extension, Version, Handle, Param, Queues, CommandScope, Command,
|
||||
EnumField, Enum, Flag, Bitmask, Member, Struct,
|
||||
FormatComponent, FormatPlane, Format,
|
||||
SyncSupport, SyncEquivalent, SyncStage, SyncAccess, SyncPipelineStage, SyncPipeline,
|
||||
SpirvEnables, Spirv)
|
||||
|
||||
# These live in the Vulkan-Docs repo, but are pulled in via the
|
||||
# Vulkan-Headers/registry folder
|
||||
from generator import OutputGenerator, GeneratorOptions, write
|
||||
from vkconventions import VulkanConventions
|
||||
|
||||
# An API style convention object
|
||||
vulkanConventions = VulkanConventions()
|
||||
|
||||
# Helpers to keep things cleaner
|
||||
def splitIfGet(elem, name):
|
||||
return elem.get(name).split(',') if elem.get(name) is not None and elem.get(name) != '' else None
|
||||
|
||||
def textIfFind(elem, name):
|
||||
return elem.find(name).text if elem.find(name) is not None else None
|
||||
|
||||
def intIfGet(elem, name):
|
||||
return None if elem.get(name) is None else int(elem.get(name), 0)
|
||||
|
||||
def boolGet(elem, name) -> bool:
|
||||
return elem.get(name) is not None and elem.get(name) == "true"
|
||||
|
||||
def getQueues(elem) -> Queues:
|
||||
queues = 0
|
||||
queues_list = splitIfGet(elem, 'queues')
|
||||
if queues_list is not None:
|
||||
queues |= Queues.TRANSFER if 'transfer' in queues_list else 0
|
||||
queues |= Queues.GRAPHICS if 'graphics' in queues_list else 0
|
||||
queues |= Queues.COMPUTE if 'compute' in queues_list else 0
|
||||
queues |= Queues.PROTECTED if 'protected' in queues_list else 0
|
||||
queues |= Queues.SPARSE_BINDING if 'sparse_binding' in queues_list else 0
|
||||
queues |= Queues.OPTICAL_FLOW if 'opticalflow' in queues_list else 0
|
||||
queues |= Queues.DECODE if 'decode' in queues_list else 0
|
||||
queues |= Queues.ENCODE if 'encode' in queues_list else 0
|
||||
return queues
|
||||
|
||||
# Shared object used by Sync elements that do not have ones
|
||||
maxSyncSupport = SyncSupport(None, None, True)
|
||||
maxSyncEquivalent = SyncEquivalent(None, None, True)
|
||||
|
||||
# Helpers to set GeneratorOptions options globally
|
||||
def SetOutputFileName(fileName: str) -> None:
|
||||
global globalFileName
|
||||
globalFileName = fileName
|
||||
|
||||
def SetOutputDirectory(directory: str) -> None:
|
||||
global globalDirectory
|
||||
globalDirectory = directory
|
||||
|
||||
def SetTargetApiName(apiname: str) -> None:
|
||||
global globalApiName
|
||||
globalApiName = apiname
|
||||
|
||||
def SetMergedApiNames(names: str) -> None:
|
||||
global mergedApiNames
|
||||
mergedApiNames = names
|
||||
|
||||
cachingEnabled = False
|
||||
def EnableCaching() -> None:
|
||||
global cachingEnabled
|
||||
cachingEnabled = True
|
||||
|
||||
# This class is a container for any source code, data, or other behavior that is necessary to
|
||||
# customize the generator script for a specific target API variant (e.g. Vulkan SC). As such,
|
||||
# all of these API-specific interfaces and their use in the generator script are part of the
|
||||
# contract between this repository and its downstream users. Changing or removing any of these
|
||||
# interfaces or their use in the generator script will have downstream effects and thus
|
||||
# should be avoided unless absolutely necessary.
|
||||
class APISpecific:
|
||||
# Version object factory method
|
||||
@staticmethod
|
||||
def createApiVersion(targetApiName: str, name: str) -> Version:
|
||||
match targetApiName:
|
||||
|
||||
# Vulkan SC specific API version creation
|
||||
case 'vulkansc':
|
||||
nameApi = name.replace('VK_', 'VK_API_')
|
||||
nameApi = nameApi.replace('VKSC_', 'VKSC_API_')
|
||||
nameString = f'"{name}"'
|
||||
return Version(name, nameString, nameApi)
|
||||
|
||||
# Vulkan specific API version creation
|
||||
case 'vulkan':
|
||||
nameApi = name.replace('VK_', 'VK_API_')
|
||||
nameString = f'"{name}"'
|
||||
return Version(name, nameString, nameApi)
|
||||
|
||||
|
||||
# This Generator Option is used across all generators.
|
||||
# After years of use, it has shown that most the options are unified across each generator (file)
|
||||
# as it is easier to modify things per-file that need the difference
|
||||
class BaseGeneratorOptions(GeneratorOptions):
|
||||
def __init__(self,
|
||||
customFileName = None,
|
||||
customDirectory = None,
|
||||
customApiName = None):
|
||||
GeneratorOptions.__init__(self,
|
||||
conventions = vulkanConventions,
|
||||
filename = customFileName if customFileName else globalFileName,
|
||||
directory = customDirectory if customDirectory else globalDirectory,
|
||||
apiname = customApiName if customApiName else globalApiName,
|
||||
mergeApiNames = mergedApiNames,
|
||||
defaultExtensions = customApiName if customApiName else globalApiName,
|
||||
emitExtensions = '.*',
|
||||
emitSpirv = '.*',
|
||||
emitFormats = '.*')
|
||||
# These are used by the generator.py script
|
||||
self.apicall = 'VKAPI_ATTR '
|
||||
self.apientry = 'VKAPI_CALL '
|
||||
self.apientryp = 'VKAPI_PTR *'
|
||||
self.alignFuncParam = 48
|
||||
|
||||
#
|
||||
# This object handles all the parsing from reg.py generator scripts in the Vulkan-Headers
|
||||
# It will grab all the data and form it into a single object the rest of the generators will use
|
||||
class BaseGenerator(OutputGenerator):
|
||||
def __init__(self):
|
||||
OutputGenerator.__init__(self, None, None, None)
|
||||
self.vk = VulkanObject()
|
||||
self.targetApiName = globalApiName
|
||||
|
||||
# reg.py has a `self.featureName` but this is nicer because
|
||||
# it will be either the Version or Extension object
|
||||
self.currentExtension = None
|
||||
self.currentVersion = None
|
||||
|
||||
# Will map alias to promoted name
|
||||
# ex. ['VK_FILTER_CUBIC_IMG' : 'VK_FILTER_CUBIC_EXT']
|
||||
# When generating any code, there is no reason so use the old name
|
||||
self.enumAliasMap = dict()
|
||||
self.enumFieldAliasMap = dict()
|
||||
self.bitmaskAliasMap = dict()
|
||||
self.flagAliasMap = dict()
|
||||
self.structAliasMap = dict()
|
||||
self.handleAliasMap = dict()
|
||||
|
||||
def write(self, data):
|
||||
# Prevents having to check before writing
|
||||
if data is not None and data != "":
|
||||
write(data, file=self.outFile)
|
||||
|
||||
|
||||
def beginFile(self, genOpts):
|
||||
OutputGenerator.beginFile(self, genOpts)
|
||||
self.filename = genOpts.filename
|
||||
|
||||
# No gen*() command to get these, so do it manually
|
||||
for platform in self.registry.tree.findall('platforms/platform'):
|
||||
self.vk.platforms[platform.get('name')] = platform.get('protect')
|
||||
|
||||
for tags in self.registry.tree.findall('tags'):
|
||||
for tag in tags.findall('tag'):
|
||||
self.vk.vendorTags.append(tag.get('name'))
|
||||
|
||||
# No way known to get this from the XML
|
||||
self.vk.queueBits[Queues.TRANSFER] = 'VK_QUEUE_TRANSFER_BIT'
|
||||
self.vk.queueBits[Queues.GRAPHICS] = 'VK_QUEUE_GRAPHICS_BIT'
|
||||
self.vk.queueBits[Queues.COMPUTE] = 'VK_QUEUE_COMPUTE_BIT'
|
||||
self.vk.queueBits[Queues.PROTECTED] = 'VK_QUEUE_PROTECTED_BIT'
|
||||
self.vk.queueBits[Queues.SPARSE_BINDING] = 'VK_QUEUE_SPARSE_BINDING_BIT'
|
||||
self.vk.queueBits[Queues.OPTICAL_FLOW] = 'VK_QUEUE_OPTICAL_FLOW_BIT_NV'
|
||||
self.vk.queueBits[Queues.DECODE] = 'VK_QUEUE_VIDEO_DECODE_BIT_KHR'
|
||||
self.vk.queueBits[Queues.ENCODE] = 'VK_QUEUE_VIDEO_ENCODE_BIT_KHR'
|
||||
|
||||
# This function should be overloaded
|
||||
def generate(self):
|
||||
print("WARNING: This should not be called from the child class")
|
||||
return
|
||||
|
||||
# This function is dense, it does all the magic to set the right extensions dependencies!
|
||||
#
|
||||
# The issue is if 2 extension expose a command, genCmd() will only
|
||||
# show one of the extension, at endFile() we can finally go through
|
||||
# and update which things depend on which extensions
|
||||
#
|
||||
# self.featureDictionary is built for use in the reg.py framework
|
||||
# Details found in Vulkan-Docs/scripts/scriptgenerator.py
|
||||
def applyExtensionDependency(self):
|
||||
for extension in self.vk.extensions.values():
|
||||
# dict.key() can be None, so need to double loop
|
||||
dict = self.featureDictionary[extension.name]['command']
|
||||
|
||||
# "required" == None
|
||||
# or
|
||||
# an additional feature dependency, which is a boolean expression of
|
||||
# one or more extension and/or core version names
|
||||
for required in dict:
|
||||
for commandName in dict[required]:
|
||||
# Skip commands removed in the target API
|
||||
# This check is needed because parts of the base generator code bypass the
|
||||
# dependency resolution logic in the registry tooling and thus the generator
|
||||
# may attempt to generate code for commands which are not supported in the
|
||||
# target API variant, thus this check needs to happen even if any specific
|
||||
# target API variant may not specifically need it
|
||||
if not commandName in self.vk.commands:
|
||||
continue
|
||||
|
||||
command = self.vk.commands[commandName]
|
||||
# Make sure list is unique
|
||||
command.extensions.extend([extension] if extension not in command.extensions else [])
|
||||
extension.commands.extend([command] if command not in extension.commands else [])
|
||||
|
||||
# While genGroup() will call twice with aliased value, it does not provide all the information we need
|
||||
dict = self.featureDictionary[extension.name]['enumconstant']
|
||||
for required in dict:
|
||||
# group can be a Enum or Bitmask
|
||||
for group in dict[required]:
|
||||
if group in self.vk.enums:
|
||||
if group not in extension.enumFields:
|
||||
extension.enumFields[group] = [] # Dict needs init
|
||||
enum = self.vk.enums[group]
|
||||
# Need to convert all alias so they match what is in EnumField
|
||||
enumList = list(map(lambda x: x if x not in self.enumFieldAliasMap else self.enumFieldAliasMap[x], dict[required][group]))
|
||||
|
||||
for enumField in [x for x in enum.fields if x.name in enumList]:
|
||||
# Make sure list is unique
|
||||
enum.fieldExtensions.extend([extension] if extension not in enum.fieldExtensions else [])
|
||||
enumField.extensions.extend([extension] if extension not in enumField.extensions else [])
|
||||
extension.enumFields[group].extend([enumField] if enumField not in extension.enumFields[group] else [])
|
||||
if group in self.vk.bitmasks:
|
||||
if group not in extension.flags:
|
||||
extension.flags[group] = [] # Dict needs init
|
||||
bitmask = self.vk.bitmasks[group]
|
||||
# Need to convert all alias so they match what is in Flags
|
||||
flagList = list(map(lambda x: x if x not in self.flagAliasMap else self.flagAliasMap[x], dict[required][group]))
|
||||
|
||||
for flags in [x for x in bitmask.flags if x.name in flagList]:
|
||||
# Make sure list is unique
|
||||
bitmask.flagExtensions.extend([extension] if extension not in bitmask.flagExtensions else [])
|
||||
flags.extensions.extend([extension] if extension not in flags.extensions else [])
|
||||
extension.flags[group].extend([flags] if flags not in extension.flags[group] else [])
|
||||
|
||||
# Need to do 'enum'/'bitmask' after 'enumconstant' has applied everything so we can add implicit extensions
|
||||
#
|
||||
# Sometimes two extensions enable an Enum, but the newer extension version has extra flags allowed
|
||||
# This information seems to be implicit, so need to update it here
|
||||
# Go through each Flag and append the Enum extension to it
|
||||
#
|
||||
# ex. VkAccelerationStructureTypeKHR where GENERIC_KHR is not allowed with just VK_NV_ray_tracing
|
||||
# This only works because the values are aliased as well, making the KHR a superset enum
|
||||
for extension in self.vk.extensions.values():
|
||||
dict = self.featureDictionary[extension.name]['enum']
|
||||
for required in dict:
|
||||
for group in dict[required]:
|
||||
for enumName in dict[required][group]:
|
||||
isAlias = enumName in self.enumAliasMap
|
||||
enumName = self.enumAliasMap[enumName] if isAlias else enumName
|
||||
if enumName in self.vk.enums:
|
||||
enum = self.vk.enums[enumName]
|
||||
enum.extensions.extend([extension] if extension not in enum.extensions else [])
|
||||
extension.enums.extend([enum] if enum not in extension.enums else [])
|
||||
# Update fields with implicit base extension
|
||||
if isAlias:
|
||||
continue
|
||||
enum.fieldExtensions.extend([extension] if extension not in enum.fieldExtensions else [])
|
||||
for enumField in [x for x in enum.fields if (not x.extensions or (x.extensions and all(e in enum.extensions for e in x.extensions)))]:
|
||||
enumField.extensions.extend([extension] if extension not in enumField.extensions else [])
|
||||
if enumName not in extension.enumFields:
|
||||
extension.enumFields[enumName] = [] # Dict needs init
|
||||
extension.enumFields[enumName].extend([enumField] if enumField not in extension.enumFields[enumName] else [])
|
||||
|
||||
dict = self.featureDictionary[extension.name]['bitmask']
|
||||
for required in dict:
|
||||
for group in dict[required]:
|
||||
for bitmaskName in dict[required][group]:
|
||||
bitmaskName = bitmaskName.replace('Flags', 'FlagBits') # Works since Flags is not repeated in name
|
||||
isAlias = bitmaskName in self.bitmaskAliasMap
|
||||
bitmaskName = self.bitmaskAliasMap[bitmaskName] if isAlias else bitmaskName
|
||||
if bitmaskName in self.vk.bitmasks:
|
||||
bitmask = self.vk.bitmasks[bitmaskName]
|
||||
bitmask.extensions.extend([extension] if extension not in bitmask.extensions else [])
|
||||
extension.bitmasks.extend([bitmask] if bitmask not in extension.bitmasks else [])
|
||||
# Update flags with implicit base extension
|
||||
if isAlias:
|
||||
continue
|
||||
bitmask.flagExtensions.extend([extension] if extension not in bitmask.flagExtensions else [])
|
||||
for flag in [x for x in bitmask.flags if (not x.extensions or (x.extensions and all(e in bitmask.extensions for e in x.extensions)))]:
|
||||
flag.extensions.extend([extension] if extension not in flag.extensions else [])
|
||||
if bitmaskName not in extension.flags:
|
||||
extension.flags[bitmaskName] = [] # Dict needs init
|
||||
extension.flags[bitmaskName].extend([flag] if flag not in extension.flags[bitmaskName] else [])
|
||||
|
||||
# Some structs (ex VkAttachmentSampleCountInfoAMD) can have multiple alias pointing to same extension
|
||||
for extension in self.vk.extensions.values():
|
||||
dict = self.featureDictionary[extension.name]['struct']
|
||||
for required in dict:
|
||||
for group in dict[required]:
|
||||
for structName in dict[required][group]:
|
||||
isAlias = structName in self.structAliasMap
|
||||
structName = self.structAliasMap[structName] if isAlias else structName
|
||||
# An EXT struct can alias a KHR struct,
|
||||
# that in turns aliaes a core struct
|
||||
# => Try to propagate aliasing, it can safely result in a no-op
|
||||
isAlias = structName in self.structAliasMap
|
||||
structName = self.structAliasMap[structName] if isAlias else structName
|
||||
if structName in self.vk.structs:
|
||||
struct = self.vk.structs[structName]
|
||||
struct.extensions.extend([extension] if extension not in struct.extensions else [])
|
||||
|
||||
# While we update struct alias inside other structs, the command itself might have the struct as a first level param.
|
||||
# We use this time to update params to have the promoted name
|
||||
# Example - https://github.com/KhronosGroup/Vulkan-ValidationLayers/issues/9322
|
||||
for command in self.vk.commands.values():
|
||||
for member in command.params:
|
||||
if member.type in self.structAliasMap:
|
||||
member.type = self.structAliasMap[member.type]
|
||||
|
||||
# Could build up a reverse lookup map, but since these are not too large of list, just do here
|
||||
# (Need to be done after we have found all the aliases)
|
||||
for key, value in self.structAliasMap.items():
|
||||
self.vk.structs[value].aliases.append(key)
|
||||
for key, value in self.enumAliasMap.items():
|
||||
self.vk.enums[value].aliases.append(key)
|
||||
for key, value in self.bitmaskAliasMap.items():
|
||||
self.vk.bitmasks[value].aliases.append(key)
|
||||
for key, value in self.handleAliasMap.items():
|
||||
self.vk.handles[value].aliases.append(key)
|
||||
|
||||
def endFile(self):
|
||||
# This is the point were reg.py has ran, everything is collected
|
||||
# We do some post processing now
|
||||
self.applyExtensionDependency()
|
||||
|
||||
# Use structs and commands to find which things are returnedOnly
|
||||
for struct in [x for x in self.vk.structs.values() if not x.returnedOnly]:
|
||||
for enum in [self.vk.enums[x.type] for x in struct.members if x.type in self.vk.enums]:
|
||||
enum.returnedOnly = False
|
||||
for bitmask in [self.vk.bitmasks[x.type] for x in struct.members if x.type in self.vk.bitmasks]:
|
||||
bitmask.returnedOnly = False
|
||||
for bitmask in [self.vk.bitmasks[x.type.replace('Flags', 'FlagBits')] for x in struct.members if x.type.replace('Flags', 'FlagBits') in self.vk.bitmasks]:
|
||||
bitmask.returnedOnly = False
|
||||
for command in self.vk.commands.values():
|
||||
for enum in [self.vk.enums[x.type] for x in command.params if x.type in self.vk.enums]:
|
||||
enum.returnedOnly = False
|
||||
for bitmask in [self.vk.bitmasks[x.type] for x in command.params if x.type in self.vk.bitmasks]:
|
||||
bitmask.returnedOnly = False
|
||||
for bitmask in [self.vk.bitmasks[x.type.replace('Flags', 'FlagBits')] for x in command.params if x.type.replace('Flags', 'FlagBits') in self.vk.bitmasks]:
|
||||
bitmask.returnedOnly = False
|
||||
|
||||
# Turn handle parents into pointers to classes
|
||||
for handle in [x for x in self.vk.handles.values() if x.parent is not None]:
|
||||
handle.parent = self.vk.handles[handle.parent]
|
||||
# search up parent chain to see if instance or device
|
||||
for handle in [x for x in self.vk.handles.values()]:
|
||||
next_parent = handle.parent
|
||||
while (not handle.instance and not handle.device):
|
||||
handle.instance = next_parent.name == 'VkInstance'
|
||||
handle.device = next_parent.name == 'VkDevice'
|
||||
next_parent = next_parent.parent
|
||||
|
||||
maxSyncSupport.queues = Queues.ALL
|
||||
maxSyncSupport.stages = self.vk.bitmasks['VkPipelineStageFlagBits2'].flags
|
||||
maxSyncEquivalent.accesses = self.vk.bitmasks['VkAccessFlagBits2'].flags
|
||||
maxSyncEquivalent.stages = self.vk.bitmasks['VkPipelineStageFlagBits2'].flags
|
||||
|
||||
# All inherited generators should run from here
|
||||
self.generate()
|
||||
|
||||
if cachingEnabled:
|
||||
cachePath = os.path.join(tempfile.gettempdir(), f'vkobject_{os.getpid()}')
|
||||
if not os.path.isfile(cachePath):
|
||||
cacheFile = open(cachePath, 'wb')
|
||||
pickle.dump(self.vk, cacheFile)
|
||||
cacheFile.close()
|
||||
|
||||
# This should not have to do anything but call into OutputGenerator
|
||||
OutputGenerator.endFile(self)
|
||||
|
||||
#
|
||||
# Bypass the entire processing and load in the VkObject data
|
||||
# Still need to handle the beingFile/endFile for reg.py
|
||||
def generateFromCache(self, cacheVkObjectData, genOpts):
|
||||
OutputGenerator.beginFile(self, genOpts)
|
||||
self.filename = genOpts.filename
|
||||
self.vk = cacheVkObjectData
|
||||
self.generate()
|
||||
OutputGenerator.endFile(self)
|
||||
|
||||
#
|
||||
# Processing point at beginning of each extension definition
|
||||
def beginFeature(self, interface, emit):
|
||||
OutputGenerator.beginFeature(self, interface, emit)
|
||||
platform = interface.get('platform')
|
||||
self.featureExtraProtec = self.vk.platforms[platform] if platform in self.vk.platforms else None
|
||||
protect = self.vk.platforms[platform] if platform in self.vk.platforms else None
|
||||
name = interface.get('name')
|
||||
|
||||
if interface.tag == 'extension':
|
||||
instance = interface.get('type') == 'instance'
|
||||
device = not instance
|
||||
depends = interface.get('depends')
|
||||
vendorTag = interface.get('author')
|
||||
platform = interface.get('platform')
|
||||
provisional = boolGet(interface, 'provisional')
|
||||
promotedto = interface.get('promotedto')
|
||||
deprecatedby = interface.get('deprecatedby')
|
||||
obsoletedby = interface.get('obsoletedby')
|
||||
specialuse = splitIfGet(interface, 'specialuse')
|
||||
# Not sure if better way to get this info
|
||||
specVersion = self.featureDictionary[name]['enumconstant'][None][None][0]
|
||||
nameString = self.featureDictionary[name]['enumconstant'][None][None][1]
|
||||
|
||||
self.currentExtension = Extension(name, nameString, specVersion, instance, device, depends, vendorTag,
|
||||
platform, protect, provisional, promotedto, deprecatedby,
|
||||
obsoletedby, specialuse)
|
||||
self.vk.extensions[name] = self.currentExtension
|
||||
else: # version
|
||||
number = interface.get('number')
|
||||
if number != '1.0':
|
||||
self.currentVersion = APISpecific.createApiVersion(self.targetApiName, name)
|
||||
self.vk.versions[name] = self.currentVersion
|
||||
|
||||
def endFeature(self):
|
||||
OutputGenerator.endFeature(self)
|
||||
self.currentExtension = None
|
||||
self.currentVersion = None
|
||||
|
||||
#
|
||||
# All <command> from XML
|
||||
def genCmd(self, cmdinfo, name, alias):
|
||||
OutputGenerator.genCmd(self, cmdinfo, name, alias)
|
||||
|
||||
params = []
|
||||
for param in cmdinfo.elem.findall('param'):
|
||||
paramName = param.find('name').text
|
||||
paramType = textIfFind(param, 'type')
|
||||
paramAlias = param.get('alias')
|
||||
|
||||
cdecl = self.makeCParamDecl(param, 0)
|
||||
paramFullType = ' '.join(cdecl.split()[:-1])
|
||||
pointer = '*' in cdecl or paramType.startswith('PFN_')
|
||||
paramConst = 'const' in cdecl
|
||||
fixedSizeArray = [x[:-1] for x in cdecl.split('[') if x.endswith(']')]
|
||||
|
||||
paramNoautovalidity = boolGet(param, 'noautovalidity')
|
||||
|
||||
nullTerminated = False
|
||||
length = param.get('altlen') if param.get('altlen') is not None else param.get('len')
|
||||
if length:
|
||||
# we will either find it like "null-terminated" or "enabledExtensionCount,null-terminated"
|
||||
# This finds both
|
||||
nullTerminated = 'null-terminated' in length
|
||||
length = length.replace(',null-terminated', '') if 'null-terminated' in length else length
|
||||
length = None if length == 'null-terminated' else length
|
||||
|
||||
if fixedSizeArray and not length:
|
||||
length = ','.join(fixedSizeArray)
|
||||
|
||||
# See Member::optional code for details of this
|
||||
optionalValues = splitIfGet(param, 'optional')
|
||||
optional = optionalValues is not None and optionalValues[0].lower() == "true"
|
||||
optionalPointer = optionalValues is not None and len(optionalValues) > 1 and optionalValues[1].lower() == "true"
|
||||
|
||||
# externsync will be 'true' or expression
|
||||
# if expression, it should be same as 'true'
|
||||
externSync = boolGet(param, 'externsync')
|
||||
externSyncPointer = None if externSync else splitIfGet(param, 'externsync')
|
||||
if not externSync and externSyncPointer is not None:
|
||||
externSync = True
|
||||
|
||||
params.append(Param(paramName, paramAlias, paramType, paramFullType, paramNoautovalidity,
|
||||
paramConst, length, nullTerminated, pointer, fixedSizeArray,
|
||||
optional, optionalPointer,
|
||||
externSync, externSyncPointer, cdecl))
|
||||
|
||||
attrib = cmdinfo.elem.attrib
|
||||
alias = attrib.get('alias')
|
||||
tasks = splitIfGet(attrib, 'tasks')
|
||||
|
||||
queues = getQueues(attrib)
|
||||
successcodes = splitIfGet(attrib, 'successcodes')
|
||||
errorcodes = splitIfGet(attrib, 'errorcodes')
|
||||
cmdbufferlevel = attrib.get('cmdbufferlevel')
|
||||
primary = cmdbufferlevel is not None and 'primary' in cmdbufferlevel
|
||||
secondary = cmdbufferlevel is not None and 'secondary' in cmdbufferlevel
|
||||
|
||||
renderpass = attrib.get('renderpass')
|
||||
renderpass = CommandScope.NONE if renderpass is None else getattr(CommandScope, renderpass.upper())
|
||||
videocoding = attrib.get('videocoding')
|
||||
videocoding = CommandScope.NONE if videocoding is None else getattr(CommandScope, videocoding.upper())
|
||||
|
||||
protoElem = cmdinfo.elem.find('proto')
|
||||
returnType = textIfFind(protoElem, 'type')
|
||||
|
||||
decls = self.makeCDecls(cmdinfo.elem)
|
||||
cPrototype = decls[0]
|
||||
cFunctionPointer = decls[1]
|
||||
|
||||
protect = self.currentExtension.protect if self.currentExtension is not None else None
|
||||
|
||||
# These coammds have no way from the XML to detect they would be an instance command
|
||||
specialInstanceCommand = ['vkCreateInstance', 'vkEnumerateInstanceExtensionProperties','vkEnumerateInstanceLayerProperties', 'vkEnumerateInstanceVersion']
|
||||
instance = len(params) > 0 and (params[0].type == 'VkInstance' or params[0].type == 'VkPhysicalDevice' or name in specialInstanceCommand)
|
||||
device = not instance
|
||||
|
||||
implicitElem = cmdinfo.elem.find('implicitexternsyncparams')
|
||||
implicitExternSyncParams = [x.text for x in implicitElem.findall('param')] if implicitElem else []
|
||||
|
||||
self.vk.commands[name] = Command(name, alias, protect, [], self.currentVersion,
|
||||
returnType, params, instance, device,
|
||||
tasks, queues, successcodes, errorcodes,
|
||||
primary, secondary, renderpass, videocoding,
|
||||
implicitExternSyncParams, cPrototype, cFunctionPointer)
|
||||
|
||||
#
|
||||
# List the enum for the commands
|
||||
# TODO - Seems empty groups like `VkDeviceDeviceMemoryReportCreateInfoEXT` do not show up in here
|
||||
def genGroup(self, groupinfo, groupName, alias):
|
||||
# There can be case where the Enum/Bitmask is in a protect, but the individual
|
||||
# fields also have their own protect
|
||||
groupProtect = self.currentExtension.protect if hasattr(self.currentExtension, 'protect') and self.currentExtension.protect is not None else None
|
||||
enumElem = groupinfo.elem
|
||||
bitwidth = 32 if enumElem.get('bitwidth') is None else int(enumElem.get('bitwidth'))
|
||||
fields = []
|
||||
if enumElem.get('type') == "enum":
|
||||
if alias is not None:
|
||||
self.enumAliasMap[groupName] = alias
|
||||
return
|
||||
|
||||
for elem in enumElem.findall('enum'):
|
||||
fieldName = elem.get('name')
|
||||
|
||||
if elem.get('alias') is not None:
|
||||
self.enumFieldAliasMap[fieldName] = elem.get('alias')
|
||||
continue
|
||||
|
||||
negative = elem.get('dir') is not None
|
||||
protect = elem.get('protect')
|
||||
(valueInt, valueStr) = self.enumToValue(elem, True, bitwidth)
|
||||
|
||||
# Some values have multiple extensions (ex VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR)
|
||||
# genGroup() lists them twice
|
||||
if next((x for x in fields if x.name == fieldName), None) is None:
|
||||
fields.append(EnumField(fieldName, protect, negative, valueInt, valueStr, []))
|
||||
|
||||
self.vk.enums[groupName] = Enum(groupName, [], groupProtect, bitwidth, True, fields, [], [])
|
||||
|
||||
else: # "bitmask"
|
||||
if alias is not None:
|
||||
self.bitmaskAliasMap[groupName] = alias
|
||||
return
|
||||
|
||||
for elem in enumElem.findall('enum'):
|
||||
flagName = elem.get('name')
|
||||
|
||||
if elem.get('alias') is not None:
|
||||
self.flagAliasMap[flagName] = elem.get('alias')
|
||||
continue
|
||||
|
||||
protect = elem.get('protect')
|
||||
|
||||
(valueInt, valueStr) = self.enumToValue(elem, True, bitwidth)
|
||||
flagZero = valueInt == 0
|
||||
flagMultiBit = False
|
||||
# if flag uses 'value' instead of 'bitpos', will be zero or a mask
|
||||
if elem.get('bitpos') is None and elem.get('value'):
|
||||
flagMultiBit = valueInt != 0
|
||||
|
||||
# Some values have multiple extensions (ex VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT)
|
||||
# genGroup() lists them twice
|
||||
if next((x for x in fields if x.name == flagName), None) is None:
|
||||
fields.append(Flag(flagName, protect, valueInt, valueStr, flagMultiBit, flagZero, []))
|
||||
|
||||
flagName = groupName.replace('FlagBits', 'Flags')
|
||||
self.vk.bitmasks[groupName] = Bitmask(groupName, [], flagName, groupProtect, bitwidth, True, fields, [], [])
|
||||
|
||||
def genType(self, typeInfo, typeName, alias):
|
||||
OutputGenerator.genType(self, typeInfo, typeName, alias)
|
||||
typeElem = typeInfo.elem
|
||||
protect = self.currentExtension.protect if hasattr(self.currentExtension, 'protect') and self.currentExtension.protect is not None else None
|
||||
category = typeElem.get('category')
|
||||
if (category == 'struct' or category == 'union'):
|
||||
extension = [self.currentExtension] if self.currentExtension is not None else []
|
||||
if alias is not None:
|
||||
self.structAliasMap[typeName] = alias
|
||||
return
|
||||
|
||||
union = category == 'union'
|
||||
|
||||
returnedOnly = boolGet(typeElem, 'returnedonly')
|
||||
allowDuplicate = boolGet(typeElem, 'allowduplicate')
|
||||
|
||||
extends = splitIfGet(typeElem, 'structextends')
|
||||
extendedBy = self.registry.validextensionstructs[typeName] if len(self.registry.validextensionstructs[typeName]) > 0 else None
|
||||
|
||||
membersElem = typeInfo.elem.findall('.//member')
|
||||
members = []
|
||||
sType = None
|
||||
|
||||
for member in membersElem:
|
||||
for comment in member.findall('comment'):
|
||||
member.remove(comment)
|
||||
|
||||
name = textIfFind(member, 'name')
|
||||
type = textIfFind(member, 'type')
|
||||
sType = member.get('values') if member.get('values') is not None else sType
|
||||
externSync = boolGet(member, 'externsync')
|
||||
noautovalidity = boolGet(member, 'noautovalidity')
|
||||
limittype = member.get('limittype')
|
||||
|
||||
nullTerminated = False
|
||||
length = member.get('altlen') if member.get('altlen') is not None else member.get('len')
|
||||
if length:
|
||||
# we will either find it like "null-terminated" or "enabledExtensionCount,null-terminated"
|
||||
# This finds both
|
||||
nullTerminated = 'null-terminated' in length
|
||||
length = length.replace(',null-terminated', '') if 'null-terminated' in length else length
|
||||
length = None if length == 'null-terminated' else length
|
||||
|
||||
cdecl = self.makeCParamDecl(member, 0)
|
||||
fullType = ' '.join(cdecl.split()[:-1])
|
||||
pointer = '*' in cdecl or type.startswith('PFN_')
|
||||
const = 'const' in cdecl
|
||||
# Some structs like VkTransformMatrixKHR have a 2D array
|
||||
fixedSizeArray = [x[:-1] for x in cdecl.split('[') if x.endswith(']')]
|
||||
|
||||
if fixedSizeArray and not length:
|
||||
length = ','.join(fixedSizeArray)
|
||||
|
||||
# if a pointer, this can be a something like:
|
||||
# optional="true,false" for ppGeometries
|
||||
# optional="false,true" for pPhysicalDeviceCount
|
||||
# the first is if the variable itself is optional
|
||||
# the second is the value of the pointer is optional;
|
||||
optionalValues = splitIfGet(member, 'optional')
|
||||
optional = optionalValues is not None and optionalValues[0].lower() == "true"
|
||||
optionalPointer = optionalValues is not None and len(optionalValues) > 1 and optionalValues[1].lower() == "true"
|
||||
|
||||
members.append(Member(name, type, fullType, noautovalidity, limittype,
|
||||
const, length, nullTerminated, pointer, fixedSizeArray,
|
||||
optional, optionalPointer,
|
||||
externSync, cdecl))
|
||||
|
||||
self.vk.structs[typeName] = Struct(typeName, [], extension, self.currentVersion, protect, members,
|
||||
union, returnedOnly, sType, allowDuplicate, extends, extendedBy)
|
||||
|
||||
elif category == 'handle':
|
||||
if alias is not None:
|
||||
self.handleAliasMap[typeName] = alias
|
||||
return
|
||||
type = typeElem.get('objtypeenum')
|
||||
|
||||
# will resolve these later, the VulkanObjectType does not list things in dependent order
|
||||
parent = typeElem.get('parent')
|
||||
instance = typeName == 'VkInstance'
|
||||
device = typeName == 'VkDevice'
|
||||
|
||||
dispatchable = typeElem.find('type').text == 'VK_DEFINE_HANDLE'
|
||||
|
||||
self.vk.handles[typeName] = Handle(typeName, [], type, protect, parent, instance, device, dispatchable)
|
||||
|
||||
elif category == 'define':
|
||||
if typeName == 'VK_HEADER_VERSION':
|
||||
self.vk.headerVersion = typeElem.find('name').tail.strip()
|
||||
|
||||
else:
|
||||
# not all categories are used
|
||||
# 'group'/'enum'/'bitmask' are routed to genGroup instead
|
||||
# 'basetype'/'include' are only for headers
|
||||
# 'funcpointer` ignore until needed
|
||||
return
|
||||
|
||||
def genSpirv(self, spirvinfo, spirvName, alias):
|
||||
OutputGenerator.genSpirv(self, spirvinfo, spirvName, alias)
|
||||
spirvElem = spirvinfo.elem
|
||||
name = spirvElem.get('name')
|
||||
extension = True if spirvElem.tag == 'spirvextension' else False
|
||||
capability = not extension
|
||||
|
||||
enables = []
|
||||
for elem in spirvElem:
|
||||
version = elem.attrib.get('version')
|
||||
extensionEnable = elem.attrib.get('extension')
|
||||
struct = elem.attrib.get('struct')
|
||||
feature = elem.attrib.get('feature')
|
||||
requires = elem.attrib.get('requires')
|
||||
propertyEnable = elem.attrib.get('property')
|
||||
member = elem.attrib.get('member')
|
||||
value = elem.attrib.get('value')
|
||||
enables.append(SpirvEnables(version, extensionEnable, struct, feature,
|
||||
requires, propertyEnable, member, value))
|
||||
|
||||
self.vk.spirv.append(Spirv(name, extension, capability, enables))
|
||||
|
||||
def genFormat(self, format, formatinfo, alias):
|
||||
OutputGenerator.genFormat(self, format, formatinfo, alias)
|
||||
formatElem = format.elem
|
||||
name = formatElem.get('name')
|
||||
|
||||
components = []
|
||||
for component in formatElem.iterfind('component'):
|
||||
type = component.get('name')
|
||||
bits = component.get('bits')
|
||||
numericFormat = component.get('numericFormat')
|
||||
planeIndex = intIfGet(component, 'planeIndex')
|
||||
components.append(FormatComponent(type, bits, numericFormat, planeIndex))
|
||||
|
||||
planes = []
|
||||
for plane in formatElem.iterfind('plane'):
|
||||
index = int(plane.get('index'))
|
||||
widthDivisor = int(plane.get('widthDivisor'))
|
||||
heightDivisor = int(plane.get('heightDivisor'))
|
||||
compatible = plane.get('compatible')
|
||||
planes.append(FormatPlane(index, widthDivisor, heightDivisor, compatible))
|
||||
|
||||
className = formatElem.get('class')
|
||||
blockSize = int(formatElem.get('blockSize'))
|
||||
texelsPerBlock = int(formatElem.get('texelsPerBlock'))
|
||||
blockExtent = splitIfGet(formatElem, 'blockExtent')
|
||||
packed = intIfGet(formatElem, 'packed')
|
||||
chroma = formatElem.get('chroma')
|
||||
compressed = formatElem.get('compressed')
|
||||
spirvImageFormat = formatElem.find('spirvimageformat')
|
||||
if spirvImageFormat is not None:
|
||||
spirvImageFormat = spirvImageFormat.get('name')
|
||||
|
||||
self.vk.formats[name] = Format(name, className, blockSize, texelsPerBlock,
|
||||
blockExtent, packed, chroma, compressed,
|
||||
components, planes, spirvImageFormat)
|
||||
|
||||
def genSyncStage(self, sync):
|
||||
OutputGenerator.genSyncStage(self, sync)
|
||||
syncElem = sync.elem
|
||||
|
||||
support = maxSyncSupport
|
||||
supportElem = syncElem.find('syncsupport')
|
||||
if supportElem is not None:
|
||||
queues = getQueues(supportElem)
|
||||
stageNames = splitIfGet(supportElem, 'stage')
|
||||
stages = [x for x in self.vk.bitmasks['VkPipelineStageFlagBits2'].flags if x.name in stageNames] if stageNames is not None else None
|
||||
support = SyncSupport(queues, stages, False)
|
||||
|
||||
equivalent = maxSyncEquivalent
|
||||
equivalentElem = syncElem.find('syncequivalent')
|
||||
if equivalentElem is not None:
|
||||
stageNames = splitIfGet(equivalentElem, 'stage')
|
||||
stages = [x for x in self.vk.bitmasks['VkPipelineStageFlagBits2'].flags if x.name in stageNames] if stageNames is not None else None
|
||||
accessNames = splitIfGet(equivalentElem, 'access')
|
||||
accesses = [x for x in self.vk.bitmasks['VkAccessFlagBits2'].flags if x.name in accessNames] if accessNames is not None else None
|
||||
equivalent = SyncEquivalent(stages, accesses, False)
|
||||
|
||||
flagName = syncElem.get('name')
|
||||
flag = [x for x in self.vk.bitmasks['VkPipelineStageFlagBits2'].flags if x.name == flagName]
|
||||
# This check is needed because not all API variants have VK_KHR_synchronization2
|
||||
if flag:
|
||||
self.vk.syncStage.append(SyncStage(flag[0], support, equivalent))
|
||||
|
||||
def genSyncAccess(self, sync):
|
||||
OutputGenerator.genSyncAccess(self, sync)
|
||||
syncElem = sync.elem
|
||||
|
||||
support = maxSyncSupport
|
||||
supportElem = syncElem.find('syncsupport')
|
||||
if supportElem is not None:
|
||||
queues = getQueues(supportElem)
|
||||
stageNames = splitIfGet(supportElem, 'stage')
|
||||
stages = [x for x in self.vk.bitmasks['VkPipelineStageFlagBits2'].flags if x.name in stageNames] if stageNames is not None else None
|
||||
support = SyncSupport(queues, stages, False)
|
||||
|
||||
equivalent = maxSyncEquivalent
|
||||
equivalentElem = syncElem.find('syncequivalent')
|
||||
if equivalentElem is not None:
|
||||
stageNames = splitIfGet(equivalentElem, 'stage')
|
||||
stages = [x for x in self.vk.bitmasks['VkPipelineStageFlagBits2'].flags if x.name in stageNames] if stageNames is not None else None
|
||||
accessNames = splitIfGet(equivalentElem, 'access')
|
||||
accesses = [x for x in self.vk.bitmasks['VkAccessFlagBits2'].flags if x.name in accessNames] if accessNames is not None else None
|
||||
equivalent = SyncEquivalent(stages, accesses, False)
|
||||
|
||||
flagName = syncElem.get('name')
|
||||
flag = [x for x in self.vk.bitmasks['VkAccessFlagBits2'].flags if x.name == flagName]
|
||||
# This check is needed because not all API variants have VK_KHR_synchronization2
|
||||
if flag:
|
||||
self.vk.syncAccess.append(SyncAccess(flag[0], support, equivalent))
|
||||
|
||||
def genSyncPipeline(self, sync):
|
||||
OutputGenerator.genSyncPipeline(self, sync)
|
||||
syncElem = sync.elem
|
||||
name = syncElem.get('name')
|
||||
depends = splitIfGet(syncElem, 'depends')
|
||||
stages = []
|
||||
for stageElem in syncElem.findall('syncpipelinestage'):
|
||||
order = stageElem.get('order')
|
||||
before = stageElem.get('before')
|
||||
after = stageElem.get('after')
|
||||
value = stageElem.text
|
||||
stages.append(SyncPipelineStage(order, before, after, value))
|
||||
|
||||
self.vk.syncPipeline.append(SyncPipeline(name, depends, stages))
|
|
@ -242,7 +242,7 @@ class COutputGenerator(OutputGenerator):
|
|||
raise MissingGeneratorOptionsError()
|
||||
if self.genOpts.conventions is None:
|
||||
raise MissingGeneratorOptionsConventionsError()
|
||||
is_core = self.featureName and self.featureName.startswith(self.conventions.api_prefix + 'VERSION_')
|
||||
is_core = self.featureName and self.featureName.startswith(f"{self.conventions.api_prefix}VERSION_")
|
||||
if self.genOpts.conventions.writeFeature(self.featureName, self.featureExtraProtect, self.genOpts.filename):
|
||||
self.newline()
|
||||
if self.genOpts.protectFeature:
|
||||
|
@ -340,7 +340,7 @@ class COutputGenerator(OutputGenerator):
|
|||
# OpenXR: this section was not under 'else:' previously, just fell through
|
||||
if alias:
|
||||
# If the type is an alias, just emit a typedef declaration
|
||||
body += 'typedef ' + alias + ' ' + name + ';\n'
|
||||
body += f"typedef {alias} {name};\n"
|
||||
else:
|
||||
# Replace <apientry /> tags with an APIENTRY-style string
|
||||
# (from self.genOpts). Copy other text through unchanged.
|
||||
|
@ -373,13 +373,13 @@ class COutputGenerator(OutputGenerator):
|
|||
|
||||
if ',' in protect_str:
|
||||
protect_list = protect_str.split(',')
|
||||
protect_defs = ('defined(%s)' % d for d in protect_list)
|
||||
protect_defs = (f'defined({d})' for d in protect_list)
|
||||
protect_def_str = ' && '.join(protect_defs)
|
||||
protect_if_str = '#if %s\n' % protect_def_str
|
||||
protect_end_str = '#endif // %s\n' % protect_def_str
|
||||
protect_if_str = f'#if {protect_def_str}\n'
|
||||
protect_end_str = f'#endif // {protect_def_str}\n'
|
||||
else:
|
||||
protect_if_str = '#ifdef %s\n' % protect_str
|
||||
protect_end_str = '#endif // %s\n' % protect_str
|
||||
protect_if_str = f'#ifdef {protect_str}\n'
|
||||
protect_end_str = f'#endif // {protect_str}\n'
|
||||
|
||||
return (protect_if_str, protect_end_str)
|
||||
|
||||
|
@ -423,7 +423,7 @@ class COutputGenerator(OutputGenerator):
|
|||
body = self.deprecationComment(typeElem)
|
||||
|
||||
if alias:
|
||||
body += 'typedef ' + alias + ' ' + typeName + ';\n'
|
||||
body += f"typedef {alias} {typeName};\n"
|
||||
else:
|
||||
(protect_begin, protect_end) = self.genProtectString(typeElem.get('protect'))
|
||||
if protect_begin:
|
||||
|
@ -431,24 +431,24 @@ class COutputGenerator(OutputGenerator):
|
|||
|
||||
if self.genOpts.genStructExtendsComment:
|
||||
structextends = typeElem.get('structextends')
|
||||
body += '// ' + typeName + ' extends ' + structextends + '\n' if structextends else ''
|
||||
body += f"// {typeName} extends {structextends}\n" if structextends else ''
|
||||
|
||||
body += 'typedef ' + typeElem.get('category')
|
||||
body += f"typedef {typeElem.get('category')}"
|
||||
|
||||
# This is an OpenXR-specific alternative where aliasing refers
|
||||
# to an inheritance hierarchy of types rather than C-level type
|
||||
# aliases.
|
||||
if self.genOpts.genAliasMacro and self.typeMayAlias(typeName):
|
||||
body += ' ' + self.genOpts.aliasMacro
|
||||
body += f" {self.genOpts.aliasMacro}"
|
||||
|
||||
body += ' ' + typeName + ' {\n'
|
||||
body += f" {typeName} {{\n"
|
||||
|
||||
targetLen = self.getMaxCParamTypeLength(typeinfo)
|
||||
for member in typeElem.findall('.//member'):
|
||||
body += self.deprecationComment(member, indent = 4)
|
||||
body += self.makeCParamDecl(member, targetLen + 4)
|
||||
body += ';\n'
|
||||
body += '} ' + typeName + ';\n'
|
||||
body += f"}} {typeName};\n"
|
||||
if protect_end:
|
||||
body += protect_end
|
||||
|
||||
|
@ -474,13 +474,13 @@ class COutputGenerator(OutputGenerator):
|
|||
if alias:
|
||||
# If the group name is aliased, just emit a typedef declaration
|
||||
# for the alias.
|
||||
body = 'typedef ' + alias + ' ' + groupName + ';\n'
|
||||
body = f"typedef {alias} {groupName};\n"
|
||||
self.appendSection(section, body)
|
||||
else:
|
||||
if self.genOpts is None:
|
||||
raise MissingGeneratorOptionsError()
|
||||
(section, body) = self.buildEnumCDecl(self.genOpts.genEnumBeginEndRange, groupinfo, groupName)
|
||||
self.appendSection(section, '\n' + body)
|
||||
self.appendSection(section, f"\n{body}")
|
||||
|
||||
def genEnum(self, enuminfo, name, alias):
|
||||
"""Generate the C declaration for a constant (a single <enum> value).
|
||||
|
@ -507,7 +507,7 @@ class COutputGenerator(OutputGenerator):
|
|||
|
||||
prefix = ''
|
||||
decls = self.makeCDecls(cmdinfo.elem)
|
||||
self.appendSection('command', prefix + decls[0] + '\n')
|
||||
self.appendSection('command', f"{prefix + decls[0]}\n")
|
||||
if self.genOpts.genFuncPointers:
|
||||
self.appendSection('commandPointer', decls[1])
|
||||
|
||||
|
|
|
@ -116,7 +116,7 @@ class MissingGeneratorOptionsError(RuntimeError):
|
|||
def __init__(self, msg=None):
|
||||
full_msg = 'Missing generator options object self.genOpts'
|
||||
if msg:
|
||||
full_msg += ': ' + msg
|
||||
full_msg += f": {msg}"
|
||||
super().__init__(full_msg)
|
||||
|
||||
|
||||
|
@ -126,7 +126,7 @@ class MissingRegistryError(RuntimeError):
|
|||
def __init__(self, msg=None):
|
||||
full_msg = 'Missing Registry object self.registry'
|
||||
if msg:
|
||||
full_msg += ': ' + msg
|
||||
full_msg += f": {msg}"
|
||||
super().__init__(full_msg)
|
||||
|
||||
|
||||
|
@ -136,7 +136,7 @@ class MissingGeneratorOptionsConventionsError(RuntimeError):
|
|||
def __init__(self, msg=None):
|
||||
full_msg = 'Missing Conventions object self.genOpts.conventions'
|
||||
if msg:
|
||||
full_msg += ': ' + msg
|
||||
full_msg += f": {msg}"
|
||||
super().__init__(full_msg)
|
||||
|
||||
|
||||
|
@ -338,7 +338,7 @@ class OutputGenerator:
|
|||
)
|
||||
|
||||
if name in bad and True:
|
||||
print('breakName {}: {}'.format(name, msg))
|
||||
print(f'breakName {name}: {msg}')
|
||||
pdb.set_trace()
|
||||
|
||||
def __init__(self, errFile=sys.stderr, warnFile=sys.stderr, diagFile=sys.stdout):
|
||||
|
@ -399,7 +399,7 @@ class OutputGenerator:
|
|||
write('DIAG:', *args, file=self.diagFile)
|
||||
else:
|
||||
raise UserWarning(
|
||||
'*** FATAL ERROR in Generator.logMsg: unknown level:' + level)
|
||||
f"*** FATAL ERROR in Generator.logMsg: unknown level:{level}")
|
||||
|
||||
def enumToValue(self, elem, needsNum, bitwidth = 32,
|
||||
forceSuffix = False, parent_for_alias_dereference=None):
|
||||
|
@ -452,20 +452,20 @@ class OutputGenerator:
|
|||
# value += enuminfo.type
|
||||
if forceSuffix:
|
||||
if bitwidth == 64:
|
||||
value = value + 'ULL'
|
||||
value = f"{value}ULL"
|
||||
else:
|
||||
value = value + 'U'
|
||||
value = f"{value}U"
|
||||
self.logMsg('diag', 'Enum', name, '-> value [', numVal, ',', value, ']')
|
||||
return [numVal, value]
|
||||
if 'bitpos' in elem.keys():
|
||||
value = elem.get('bitpos')
|
||||
bitpos = int(value, 0)
|
||||
numVal = 1 << bitpos
|
||||
value = '0x%08x' % numVal
|
||||
value = f'0x{numVal:08x}'
|
||||
if bitwidth == 64 or bitpos >= 32:
|
||||
value = value + 'ULL'
|
||||
value = f"{value}ULL"
|
||||
elif forceSuffix:
|
||||
value = value + 'U'
|
||||
value = f"{value}U"
|
||||
self.logMsg('diag', 'Enum', name, '-> bitpos [', numVal, ',', value, ']')
|
||||
return [numVal, value]
|
||||
if 'offset' in elem.keys():
|
||||
|
@ -655,12 +655,12 @@ class OutputGenerator:
|
|||
flagTypeName = groupElem.get('name')
|
||||
|
||||
# Prefix
|
||||
body = "// Flag bits for " + flagTypeName + "\n"
|
||||
body = f"// Flag bits for {flagTypeName}\n"
|
||||
|
||||
if bitwidth == 64:
|
||||
body += "typedef VkFlags64 %s;\n" % flagTypeName;
|
||||
body += f"typedef VkFlags64 {flagTypeName};\n";
|
||||
else:
|
||||
body += "typedef VkFlags %s;\n" % flagTypeName;
|
||||
body += f"typedef VkFlags {flagTypeName};\n";
|
||||
|
||||
# Maximum allowable value for a flag (unsigned 64-bit integer)
|
||||
maxValidValue = 2**(64) - 1
|
||||
|
@ -697,25 +697,25 @@ class OutputGenerator:
|
|||
if self.isEnumRequired(elem):
|
||||
protect = elem.get('protect')
|
||||
if protect is not None:
|
||||
body += '#ifdef {}\n'.format(protect)
|
||||
body += f'#ifdef {protect}\n'
|
||||
|
||||
body += self.deprecationComment(elem, indent = 0)
|
||||
|
||||
if usedefine:
|
||||
decl += "#define {} {}\n".format(name, strVal)
|
||||
decl += f"#define {name} {strVal}\n"
|
||||
elif self.misracppstyle():
|
||||
decl += "static constexpr {} {} {{{}}};\n".format(flagTypeName, name, strVal)
|
||||
decl += f"static constexpr {flagTypeName} {name} {{{strVal}}};\n"
|
||||
else:
|
||||
# Some C compilers only allow initializing a 'static const' variable with a literal value.
|
||||
# So initializing an alias from another 'static const' value would fail to compile.
|
||||
# Work around this by chasing the aliases to get the actual value.
|
||||
while numVal is None:
|
||||
alias = self.registry.tree.find("enums/enum[@name='" + strVal + "']")
|
||||
alias = self.registry.tree.find(f"enums/enum[@name='{strVal}']")
|
||||
if alias is not None:
|
||||
(numVal, strVal) = self.enumToValue(alias, True, bitwidth, True)
|
||||
else:
|
||||
self.logMsg('error', 'No such alias {} for enum {}'.format(strVal, name))
|
||||
decl += "static const {} {} = {};\n".format(flagTypeName, name, strVal)
|
||||
self.logMsg('error', f'No such alias {strVal} for enum {name}')
|
||||
decl += f"static const {flagTypeName} {name} = {strVal};\n"
|
||||
|
||||
if numVal is not None:
|
||||
body += decl
|
||||
|
@ -743,7 +743,7 @@ class OutputGenerator:
|
|||
expandSuffix = ''
|
||||
expandSuffixMatch = re.search(r'[A-Z][A-Z]+$', groupName)
|
||||
if expandSuffixMatch:
|
||||
expandSuffix = '_' + expandSuffixMatch.group()
|
||||
expandSuffix = f"_{expandSuffixMatch.group()}"
|
||||
# Strip off the suffix from the prefix
|
||||
expandPrefix = expandName.rsplit(expandSuffix, 1)[0]
|
||||
|
||||
|
@ -792,12 +792,12 @@ class OutputGenerator:
|
|||
|
||||
protect = elem.get('protect')
|
||||
if protect is not None:
|
||||
decl += '#ifdef {}\n'.format(protect)
|
||||
decl += f'#ifdef {protect}\n'
|
||||
|
||||
|
||||
decl += self.genRequirements(name, mustBeFound = False, indent = 2)
|
||||
decl += self.deprecationComment(elem, indent = 2)
|
||||
decl += ' {} = {},'.format(name, strVal)
|
||||
decl += f' {name} = {strVal},'
|
||||
|
||||
if protect is not None:
|
||||
decl += '\n#endif'
|
||||
|
@ -868,8 +868,8 @@ class OutputGenerator:
|
|||
if typeStr != "float":
|
||||
number += 'U'
|
||||
strVal = "~" if invert else ""
|
||||
strVal += "static_cast<" + typeStr + ">(" + number + ")"
|
||||
body = 'static constexpr ' + typeStr.ljust(9) + name.ljust(33) + ' {' + strVal + '};'
|
||||
strVal += f"static_cast<{typeStr}>({number})"
|
||||
body = f"static constexpr {typeStr.ljust(9)}{name.ljust(33)} {{{strVal}}};"
|
||||
elif enuminfo.elem.get('type') and not alias:
|
||||
# Generate e.g.: #define x (~0ULL)
|
||||
typeStr = enuminfo.elem.get('type');
|
||||
|
@ -884,10 +884,10 @@ class OutputGenerator:
|
|||
strVal = "~" if invert else ""
|
||||
strVal += number
|
||||
if paren:
|
||||
strVal = "(" + strVal + ")";
|
||||
body = '#define ' + name.ljust(33) + ' ' + strVal;
|
||||
strVal = f"({strVal})";
|
||||
body = f"#define {name.ljust(33)} {strVal}";
|
||||
else:
|
||||
body = '#define ' + name.ljust(33) + ' ' + strVal
|
||||
body = f"#define {name.ljust(33)} {strVal}"
|
||||
|
||||
return body
|
||||
|
||||
|
@ -1102,7 +1102,7 @@ class OutputGenerator:
|
|||
"""Make the function-pointer typedef name for a command."""
|
||||
if self.genOpts is None:
|
||||
raise MissingGeneratorOptionsError()
|
||||
return '(' + self.genOpts.apientryp + 'PFN_' + name + tail + ')'
|
||||
return f"({self.genOpts.apientryp}PFN_{name}{tail})"
|
||||
|
||||
def makeCParamDecl(self, param, aligncol):
|
||||
"""Return a string which is an indented, formatted
|
||||
|
@ -1135,14 +1135,14 @@ class OutputGenerator:
|
|||
# This works around a problem where very long type names -
|
||||
# longer than the alignment column - would run into the tail
|
||||
# text.
|
||||
paramdecl = paramdecl.ljust(aligncol - 1) + ' '
|
||||
paramdecl = f"{paramdecl.ljust(aligncol - 1)} "
|
||||
newLen = len(paramdecl)
|
||||
self.logMsg('diag', 'Adjust length of parameter decl from', oldLen, 'to', newLen, ':', paramdecl)
|
||||
|
||||
if (self.misracppstyle() and prefix.find('const ') != -1):
|
||||
# Change pointer type order from e.g. "const void *" to "void const *".
|
||||
# If the string starts with 'const', reorder it to be after the first type.
|
||||
paramdecl += prefix.replace('const ', '') + text + ' const' + tail
|
||||
paramdecl += f"{prefix.replace('const ', '') + text} const{tail}"
|
||||
else:
|
||||
paramdecl += prefix + text + tail
|
||||
|
||||
|
@ -1169,7 +1169,7 @@ class OutputGenerator:
|
|||
|
||||
# Allow for missing <name> tag
|
||||
newLen = 0
|
||||
paramdecl = ' ' + noneStr(param.text)
|
||||
paramdecl = f" {noneStr(param.text)}"
|
||||
for elem in param:
|
||||
text = noneStr(elem.text)
|
||||
tail = noneStr(elem.tail)
|
||||
|
@ -1400,7 +1400,7 @@ class OutputGenerator:
|
|||
# Change pointer type order from e.g. "const void *" to "void const *".
|
||||
# If the string starts with 'const', reorder it to be after the first type.
|
||||
if (prefix.find('const ') != -1):
|
||||
param += prefix.replace('const ', '') + t + ' const '
|
||||
param += f"{prefix.replace('const ', '') + t} const "
|
||||
else:
|
||||
param += prefix + t
|
||||
# Clear prefix for subsequent iterations
|
||||
|
|
|
@ -111,7 +111,7 @@ def push_first(toks):
|
|||
exprStack.append(toks[0])
|
||||
|
||||
# An identifier (version, feature boolean, or extension name)
|
||||
dependencyIdent = Word(alphanums + '_' + ':')
|
||||
dependencyIdent = Word(f"{alphanums}_:")
|
||||
|
||||
# Infix expression for depends expressions
|
||||
dependencyExpr = pp.infixNotation(dependencyIdent,
|
||||
|
@ -288,7 +288,7 @@ def markupTraverse(expr, level = 0, root = True):
|
|||
- root - True only on initial call"""
|
||||
|
||||
if level > 0:
|
||||
prefix = '{nbsp}{nbsp}' * level * 2 + ' '
|
||||
prefix = f"{'{nbsp}{nbsp}' * level * 2} "
|
||||
else:
|
||||
prefix = ''
|
||||
str = ''
|
||||
|
@ -303,9 +303,9 @@ def markupTraverse(expr, level = 0, root = True):
|
|||
|
||||
str = str + markupTraverse(elem, level = nextlevel, root = False)
|
||||
elif elem in ('+', ','):
|
||||
str = str + f'{prefix}{opMarkupAsciidoc(elem)} +\n'
|
||||
str = f"{str}{prefix}{opMarkupAsciidoc(elem)} +\n"
|
||||
else:
|
||||
str = str + f'{prefix}{leafMarkupAsciidoc(elem)} +\n'
|
||||
str = f"{str}{prefix}{leafMarkupAsciidoc(elem)} +\n"
|
||||
|
||||
return str
|
||||
|
||||
|
|
|
@ -801,7 +801,7 @@ class Registry:
|
|||
if enum.get('alias'):
|
||||
format_name = enum.get('alias')
|
||||
if format_name in format_condition:
|
||||
format_condition[format_name] += "," + featureInfo.name
|
||||
format_condition[format_name] += f",{featureInfo.name}"
|
||||
else:
|
||||
format_condition[format_name] = featureInfo.name
|
||||
elif groupName == "VkPipelineStageFlagBits2":
|
||||
|
@ -810,7 +810,7 @@ class Registry:
|
|||
stage_flag = enum.get('alias')
|
||||
featureName = elem.get('depends') if elem.get('depends') is not None else featureInfo.name
|
||||
if stage_flag in sync_pipeline_stage_condition:
|
||||
sync_pipeline_stage_condition[stage_flag] += "," + featureName
|
||||
sync_pipeline_stage_condition[stage_flag] += f",{featureName}"
|
||||
else:
|
||||
sync_pipeline_stage_condition[stage_flag] = featureName
|
||||
elif groupName == "VkAccessFlagBits2":
|
||||
|
@ -819,7 +819,7 @@ class Registry:
|
|||
access_flag = enum.get('alias')
|
||||
featureName = elem.get('depends') if elem.get('depends') is not None else featureInfo.name
|
||||
if access_flag in sync_access_condition:
|
||||
sync_access_condition[access_flag] += "," + featureName
|
||||
sync_access_condition[access_flag] += f",{featureName}"
|
||||
else:
|
||||
sync_access_condition[access_flag] = featureName
|
||||
|
||||
|
@ -991,7 +991,7 @@ class Registry:
|
|||
# Look up the Info with matching groupName
|
||||
if groupName in self.groupdict:
|
||||
gi = self.groupdict[groupName]
|
||||
gienum = gi.elem.find("enum[@name='" + enumname + "']")
|
||||
gienum = gi.elem.find(f"enum[@name='{enumname}']")
|
||||
if gienum is not None:
|
||||
# Remove copy of this enum from the group
|
||||
gi.elem.remove(gienum)
|
||||
|
@ -1207,7 +1207,7 @@ class Registry:
|
|||
self.gen.featureDictionary[featurename][typecat][required_key][typeextends] = []
|
||||
self.gen.featureDictionary[featurename][typecat][required_key][typeextends].append(typename)
|
||||
else:
|
||||
self.gen.logMsg('warn', 'fillFeatureDictionary: NOT filling for {}'.format(typename))
|
||||
self.gen.logMsg('warn', f'fillFeatureDictionary: NOT filling for {typename}')
|
||||
|
||||
|
||||
for enumElem in require.findall('enum'):
|
||||
|
@ -1224,7 +1224,7 @@ class Registry:
|
|||
self.gen.featureDictionary[featurename]['enumconstant'][required_key][enumextends] = []
|
||||
self.gen.featureDictionary[featurename]['enumconstant'][required_key][enumextends].append(enumname)
|
||||
else:
|
||||
self.gen.logMsg('warn', 'fillFeatureDictionary: NOT filling for {}'.format(typename))
|
||||
self.gen.logMsg('warn', f'fillFeatureDictionary: NOT filling for {typename}')
|
||||
|
||||
for cmdElem in require.findall('command'):
|
||||
# Remove aliases in the same extension/feature; these are always added as a correction. Do not need the original to be visible.
|
||||
|
@ -1234,7 +1234,7 @@ class Registry:
|
|||
self.gen.featureDictionary[featurename]['command'][required_key] = []
|
||||
self.gen.featureDictionary[featurename]['command'][required_key].append(cmdElem.get('name'))
|
||||
else:
|
||||
self.gen.logMsg('warn', 'fillFeatureDictionary: NOT filling for {}'.format(typename))
|
||||
self.gen.logMsg('warn', f'fillFeatureDictionary: NOT filling for {typename}')
|
||||
|
||||
def requireFeatures(self, interface, featurename, api, profile):
|
||||
"""Process `<require>` tags for a `<version>` or `<extension>`.
|
||||
|
|
|
@ -52,7 +52,7 @@ class ProseListFormats(Enum):
|
|||
return cls.OR
|
||||
if s == 'and':
|
||||
return cls.AND
|
||||
raise RuntimeError("Unrecognized string connective: " + s)
|
||||
raise RuntimeError(f"Unrecognized string connective: {s}")
|
||||
|
||||
@property
|
||||
def connective(self):
|
||||
|
@ -96,11 +96,11 @@ class ConventionsBase(abc.ABC):
|
|||
|
||||
def formatVersion(self, name, apivariant, major, minor):
|
||||
"""Mark up an API version name as a link in the spec."""
|
||||
return '`<<{}>>`'.format(name)
|
||||
return f'`<<{name}>>`'
|
||||
|
||||
def formatExtension(self, name):
|
||||
"""Mark up an extension name as a link in the spec."""
|
||||
return '`<<{}>>`'.format(name)
|
||||
return f'`<<{name}>>`'
|
||||
|
||||
def formatSPIRVlink(self, name):
|
||||
"""Mark up a SPIR-V extension name as an external link in the spec.
|
||||
|
@ -224,7 +224,7 @@ class ConventionsBase(abc.ABC):
|
|||
|
||||
my_elts = list(elements)
|
||||
if len(my_elts) > 1:
|
||||
my_elts[-1] = '{} {}'.format(fmt.connective, my_elts[-1])
|
||||
my_elts[-1] = f'{fmt.connective} {my_elts[-1]}'
|
||||
|
||||
if not comma_for_two_elts and len(my_elts) <= 2:
|
||||
prose = ' '.join(my_elts)
|
||||
|
@ -351,7 +351,7 @@ class ConventionsBase(abc.ABC):
|
|||
Implemented in terms of api_prefix.
|
||||
|
||||
May override."""
|
||||
return self.api_prefix + 'VERSION_'
|
||||
return f"{self.api_prefix}VERSION_"
|
||||
|
||||
@property
|
||||
def KHR_prefix(self):
|
||||
|
@ -360,7 +360,7 @@ class ConventionsBase(abc.ABC):
|
|||
Implemented in terms of api_prefix.
|
||||
|
||||
May override."""
|
||||
return self.api_prefix + 'KHR_'
|
||||
return f"{self.api_prefix}KHR_"
|
||||
|
||||
@property
|
||||
def EXT_prefix(self):
|
||||
|
@ -369,7 +369,7 @@ class ConventionsBase(abc.ABC):
|
|||
Implemented in terms of api_prefix.
|
||||
|
||||
May override."""
|
||||
return self.api_prefix + 'EXT_'
|
||||
return f"{self.api_prefix}EXT_"
|
||||
|
||||
def writeFeature(self, featureName, featureExtraProtect, filename):
|
||||
"""Return True if OutputGenerator.endFeature should write this feature.
|
||||
|
@ -483,8 +483,7 @@ class ConventionsBase(abc.ABC):
|
|||
file.
|
||||
- name - extension name"""
|
||||
|
||||
return 'include::{{appendices}}/{}[]'.format(
|
||||
self.extension_file_path(name))
|
||||
return f'include::{{appendices}}/{self.extension_file_path(name)}[]'
|
||||
|
||||
@property
|
||||
def provisional_extension_warning(self):
|
||||
|
|
File diff suppressed because one or more lines are too long
960
registry/vk.xml
960
registry/vk.xml
File diff suppressed because it is too large
Load diff
|
@ -28,6 +28,7 @@ SPECIAL_WORDS = set((
|
|||
'ASTC', # VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT
|
||||
'D3D12', # VkD3D12FenceSubmitInfoKHR
|
||||
'Float16', # VkPhysicalDeviceShaderFloat16Int8FeaturesKHR
|
||||
'Bfloat16', # VkPhysicalDeviceShaderBfloat16FeaturesKHR
|
||||
'ImagePipe', # VkImagePipeSurfaceCreateInfoFUCHSIA
|
||||
'Int64', # VkPhysicalDeviceShaderAtomicInt64FeaturesKHR
|
||||
'Int8', # VkPhysicalDeviceShaderFloat16Int8FeaturesKHR
|
||||
|
@ -38,7 +39,7 @@ SPECIAL_WORDS = set((
|
|||
))
|
||||
# A regex to match any of the SPECIAL_WORDS
|
||||
EXCEPTION_PATTERN = r'(?P<exception>{})'.format(
|
||||
'|'.join('(%s)' % re.escape(w) for w in SPECIAL_WORDS))
|
||||
'|'.join(f'({re.escape(w)})' for w in SPECIAL_WORDS))
|
||||
MAIN_RE = re.compile(
|
||||
# the negative lookahead is to prevent the all-caps pattern from being too greedy.
|
||||
r'({}|([0-9]+)|([A-Z][a-z]+)|([A-Z][A-Z]*(?![a-z])))'.format(EXCEPTION_PATTERN))
|
||||
|
|
438
registry/vulkan_object.py
Normal file
438
registry/vulkan_object.py
Normal file
|
@ -0,0 +1,438 @@
|
|||
#!/usr/bin/env python3 -i
|
||||
#
|
||||
# Copyright 2023-2025 The Khronos Group Inc.
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
from dataclasses import dataclass, field
|
||||
from enum import IntFlag, Enum, auto
|
||||
|
||||
@dataclass
|
||||
class Extension:
|
||||
"""<extension>"""
|
||||
name: str # ex) VK_KHR_SURFACE
|
||||
nameString: str # marco with string, ex) VK_KHR_SURFACE_EXTENSION_NAME
|
||||
specVersion: str # marco with string, ex) VK_KHR_SURFACE_SPEC_VERSION
|
||||
|
||||
# Only one will be True, the other is False
|
||||
instance: bool
|
||||
device: bool
|
||||
|
||||
depends: (str | None)
|
||||
vendorTag: (str | None) # ex) EXT, KHR, etc
|
||||
platform: (str | None) # ex) android
|
||||
protect: (str | None) # ex) VK_USE_PLATFORM_ANDROID_KHR
|
||||
provisional: bool
|
||||
promotedTo: (str | None) # ex) VK_VERSION_1_1
|
||||
deprecatedBy: (str | None)
|
||||
obsoletedBy: (str | None)
|
||||
specialUse: list[str]
|
||||
|
||||
# These are here to allow for easy reverse lookups
|
||||
# Quotes allow us to forward declare the dataclass
|
||||
commands: list['Command'] = field(default_factory=list, init=False)
|
||||
enums: list['Enum'] = field(default_factory=list, init=False)
|
||||
bitmasks: list['Bitmask'] = field(default_factory=list, init=False)
|
||||
# Use the Enum name to see what fields are extended
|
||||
enumFields: dict[str, list['EnumField']] = field(default_factory=dict, init=False)
|
||||
# Use the Bitmaks name to see what flags are extended
|
||||
flags: dict[str, list['Flag']] = field(default_factory=dict, init=False)
|
||||
|
||||
@dataclass
|
||||
class Version:
|
||||
"""
|
||||
<feature> which represents a version
|
||||
This will NEVER be Version 1.0, since having 'no version' is same as being 1.0
|
||||
"""
|
||||
name: str # ex) VK_VERSION_1_1
|
||||
nameString: str # ex) "VK_VERSION_1_1" (no marco, so has quotes)
|
||||
nameApi: str # ex) VK_API_VERSION_1_1
|
||||
|
||||
@dataclass
|
||||
class Handle:
|
||||
"""<type> which represents a dispatch handle"""
|
||||
name: str # ex) VkBuffer
|
||||
aliases: list[str] # ex) ['VkSamplerYcbcrConversionKHR']
|
||||
|
||||
type: str # ex) VK_OBJECT_TYPE_BUFFER
|
||||
protect: (str | None) # ex) VK_USE_PLATFORM_ANDROID_KHR
|
||||
|
||||
parent: 'Handle' # Chain of parent handles, can be None
|
||||
|
||||
# Only one will be True, the other is False
|
||||
instance: bool
|
||||
device: bool
|
||||
|
||||
dispatchable: bool
|
||||
|
||||
def __lt__(self, other):
|
||||
return self.name < other.name
|
||||
|
||||
@dataclass
|
||||
class Param:
|
||||
"""<command/param>"""
|
||||
name: str # ex) pCreateInfo, pAllocator, pBuffer
|
||||
alias: str
|
||||
|
||||
# the "base type" - will not preserve the 'const' or pointer info
|
||||
# ex) void, uint32_t, VkFormat, VkBuffer, etc
|
||||
type: str
|
||||
# the "full type" - will be cDeclaration without the type name
|
||||
# ex) const void*, uint32_t, const VkFormat, VkBuffer*, etc
|
||||
# For arrays, this will only display the type, fixedSizeArray can be used to get the length
|
||||
fullType: str
|
||||
|
||||
noAutoValidity: bool
|
||||
|
||||
const: bool # type contains 'const'
|
||||
length: (str | None) # the known length of pointer, will never be 'null-terminated'
|
||||
nullTerminated: bool # If a UTF-8 string, it will be null-terminated
|
||||
pointer: bool # type contains a pointer (include 'PFN' function pointers)
|
||||
# Used to list how large an array of the type is
|
||||
# ex) lineWidthRange is ['2']
|
||||
# ex) memoryTypes is ['VK_MAX_MEMORY_TYPES']
|
||||
# ex) VkTransformMatrixKHR:matrix is ['3', '4']
|
||||
fixedSizeArray: list[str]
|
||||
|
||||
optional: bool
|
||||
optionalPointer: bool # if type contains a pointer, is the pointer value optional
|
||||
|
||||
externSync: bool
|
||||
externSyncPointer: list[str] # if type contains a pointer, might only specific members modified
|
||||
|
||||
# C string of member, example:
|
||||
# - const void* pNext
|
||||
# - VkFormat format
|
||||
# - VkStructureType sType
|
||||
cDeclaration: str
|
||||
|
||||
def __lt__(self, other):
|
||||
return self.name < other.name
|
||||
|
||||
class Queues(IntFlag):
|
||||
TRANSFER = auto() # VK_QUEUE_TRANSFER_BIT
|
||||
GRAPHICS = auto() # VK_QUEUE_GRAPHICS_BIT
|
||||
COMPUTE = auto() # VK_QUEUE_COMPUTE_BIT
|
||||
PROTECTED = auto() # VK_QUEUE_PROTECTED_BIT
|
||||
SPARSE_BINDING = auto() # VK_QUEUE_SPARSE_BINDING_BIT
|
||||
OPTICAL_FLOW = auto() # VK_QUEUE_OPTICAL_FLOW_BIT_NV
|
||||
DECODE = auto() # VK_QUEUE_VIDEO_DECODE_BIT_KHR
|
||||
ENCODE = auto() # VK_QUEUE_VIDEO_ENCODE_BIT_KHR
|
||||
ALL = TRANSFER | GRAPHICS | COMPUTE | PROTECTED | SPARSE_BINDING | OPTICAL_FLOW | DECODE | ENCODE
|
||||
|
||||
class CommandScope(Enum):
|
||||
NONE = auto()
|
||||
INSIDE = auto()
|
||||
OUTSIDE = auto()
|
||||
BOTH = auto()
|
||||
|
||||
@dataclass
|
||||
class Command:
|
||||
"""<command>"""
|
||||
name: str # ex) vkCmdDraw
|
||||
alias: (str | None) # Because commands are interfaces into layers/drivers, we need all command alias
|
||||
protect: (str | None) # ex) 'VK_ENABLE_BETA_EXTENSIONS'
|
||||
|
||||
extensions: list[Extension] # All extensions that enable the struct
|
||||
version: (Version | None) # None if Version 1.0
|
||||
|
||||
returnType: str # ex) void, VkResult, etc
|
||||
|
||||
params: list[Param] # Each parameter of the command
|
||||
|
||||
# Only one will be True, the other is False
|
||||
instance: bool
|
||||
device: bool
|
||||
|
||||
tasks: list[str] # ex) [ action, state, synchronization ]
|
||||
queues: Queues # zero == No Queues found
|
||||
successCodes: list[str] # ex) [ VK_SUCCESS, VK_INCOMPLETE ]
|
||||
errorCodes: list[str] # ex) [ VK_ERROR_OUT_OF_HOST_MEMORY ]
|
||||
|
||||
# Shows support if command can be in a primary and/or secondary command buffer
|
||||
primary: bool
|
||||
secondary: bool
|
||||
|
||||
renderPass: CommandScope
|
||||
videoCoding: CommandScope
|
||||
|
||||
implicitExternSyncParams: list[str]
|
||||
|
||||
# C prototype string - ex:
|
||||
# VKAPI_ATTR VkResult VKAPI_CALL vkCreateInstance(
|
||||
# const VkInstanceCreateInfo* pCreateInfo,
|
||||
# const VkAllocationCallbacks* pAllocator,
|
||||
# VkInstance* pInstance);
|
||||
cPrototype: str
|
||||
|
||||
# function pointer typedef - ex:
|
||||
# typedef VkResult (VKAPI_PTR *PFN_vkCreateInstance)
|
||||
# (const VkInstanceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkInstance* pInstance);
|
||||
cFunctionPointer: str
|
||||
|
||||
def __lt__(self, other):
|
||||
return self.name < other.name
|
||||
|
||||
@dataclass
|
||||
class Member:
|
||||
"""<member>"""
|
||||
name: str # ex) sType, pNext, flags, size, usage
|
||||
|
||||
# the "base type" - will not preserve the 'const' or pointer info
|
||||
# ex) void, uint32_t, VkFormat, VkBuffer, etc
|
||||
type: str
|
||||
# the "full type" - will be cDeclaration without the type name
|
||||
# ex) const void*, uint32_t, const VkFormat, VkBuffer*, etc
|
||||
# For arrays, this will only display the type, fixedSizeArray can be used to get the length
|
||||
fullType: str
|
||||
|
||||
noAutoValidity: bool
|
||||
limitType: (str | None) # ex) 'max', 'bitmask', 'bits', 'min,mul'
|
||||
|
||||
const: bool # type contains 'const'
|
||||
length: (str | None) # the known length of pointer, will never be 'null-terminated'
|
||||
nullTerminated: bool # If a UTF-8 string, it will be null-terminated
|
||||
pointer: bool # type contains a pointer (include 'PFN' function pointers)
|
||||
# Used to list how large an array of the type is
|
||||
# ex) lineWidthRange is ['2']
|
||||
# ex) memoryTypes is ['VK_MAX_MEMORY_TYPES']
|
||||
# ex) VkTransformMatrixKHR:matrix is ['3', '4']
|
||||
fixedSizeArray: list[str]
|
||||
|
||||
optional: bool
|
||||
optionalPointer: bool # if type contains a pointer, is the pointer value optional
|
||||
|
||||
externSync: bool
|
||||
|
||||
# C string of member, example:
|
||||
# - const void* pNext
|
||||
# - VkFormat format
|
||||
# - VkStructureType sType
|
||||
cDeclaration: str
|
||||
|
||||
def __lt__(self, other):
|
||||
return self.name < other.name
|
||||
|
||||
@dataclass
|
||||
class Struct:
|
||||
"""<type category="struct"> or <type category="union">"""
|
||||
name: str # ex) VkImageSubresource2
|
||||
aliases: list[str] # ex) ['VkImageSubresource2KHR', 'VkImageSubresource2EXT']
|
||||
|
||||
extensions: list[Extension] # All extensions that enable the struct
|
||||
version: (Version | None) # None if Version 1.0
|
||||
protect: (str | None) # ex) VK_ENABLE_BETA_EXTENSIONS
|
||||
|
||||
members: list[Member]
|
||||
|
||||
union: bool # Unions are just a subset of a Structs
|
||||
returnedOnly: bool
|
||||
|
||||
sType: (str | None) # ex) VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO
|
||||
allowDuplicate: bool # can have a pNext point to itself
|
||||
|
||||
# These use to be list['Struct'] but some circular loops occur and cause
|
||||
# pydevd warnings and made debugging slow (30 seconds to index a Struct)
|
||||
extends: list[str] # Struct names that this struct extends
|
||||
extendedBy: list[str] # Struct names that can be extended by this struct
|
||||
|
||||
def __lt__(self, other):
|
||||
return self.name < other.name
|
||||
|
||||
@dataclass
|
||||
class EnumField:
|
||||
"""<enum> of type enum"""
|
||||
name: str # ex) VK_DYNAMIC_STATE_SCISSOR
|
||||
protect: (str | None) # ex) VK_ENABLE_BETA_EXTENSIONS
|
||||
|
||||
negative: bool # True if negative values are allowed (ex. VkResult)
|
||||
value: int
|
||||
valueStr: str # value as shown in spec (ex. "0", "2", "1000267000", "0x00000004")
|
||||
|
||||
# some fields are enabled from 2 extensions (ex) VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR)
|
||||
extensions: list[Extension] # None if part of 1.0 core
|
||||
|
||||
def __lt__(self, other):
|
||||
return self.name < other.name
|
||||
|
||||
@dataclass
|
||||
class Enum:
|
||||
"""<enums> of type enum"""
|
||||
name: str # ex) VkLineRasterizationMode
|
||||
aliases: list[str] # ex) ['VkLineRasterizationModeKHR', 'VkLineRasterizationModeEXT']
|
||||
|
||||
protect: (str | None) # ex) VK_ENABLE_BETA_EXTENSIONS
|
||||
|
||||
bitWidth: int # 32 or 64 (currently all are 32, but field is to match with Bitmask)
|
||||
returnedOnly: bool
|
||||
|
||||
fields: list[EnumField]
|
||||
|
||||
extensions: list[Extension] # None if part of 1.0 core
|
||||
# Unique list of all extension that are involved in 'fields' (superset of 'extensions')
|
||||
fieldExtensions: list[Extension]
|
||||
|
||||
def __lt__(self, other):
|
||||
return self.name < other.name
|
||||
|
||||
@dataclass
|
||||
class Flag:
|
||||
"""<enum> of type bitmask"""
|
||||
name: str # ex) VK_ACCESS_2_SHADER_READ_BIT
|
||||
protect: (str | None) # ex) VK_ENABLE_BETA_EXTENSIONS
|
||||
|
||||
value: int
|
||||
valueStr: str # value as shown in spec (ex. 0x00000000", "0x00000004", "0x0000000F", "0x800000000ULL")
|
||||
multiBit: bool # if true, more than one bit is set (ex) VK_SHADER_STAGE_ALL_GRAPHICS)
|
||||
zero: bool # if true, the value is zero (ex) VK_PIPELINE_STAGE_NONE)
|
||||
|
||||
# some fields are enabled from 2 extensions (ex) VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT)
|
||||
extensions: list[Extension] # None if part of 1.0 core
|
||||
|
||||
def __lt__(self, other):
|
||||
return self.name < other.name
|
||||
|
||||
@dataclass
|
||||
class Bitmask:
|
||||
"""<enums> of type bitmask"""
|
||||
name: str # ex) VkAccessFlagBits2
|
||||
aliases: list[str] # ex) ['VkAccessFlagBits2KHR']
|
||||
|
||||
flagName: str # ex) VkAccessFlags2
|
||||
protect: (str | None) # ex) VK_ENABLE_BETA_EXTENSIONS
|
||||
|
||||
bitWidth: int # 32 or 64
|
||||
returnedOnly: bool
|
||||
|
||||
flags: list[Flag]
|
||||
|
||||
extensions: list[Extension] # None if part of 1.0 core
|
||||
# Unique list of all extension that are involved in 'flag' (superset of 'extensions')
|
||||
flagExtensions: list[Extension]
|
||||
|
||||
def __lt__(self, other):
|
||||
return self.name < other.name
|
||||
|
||||
@dataclass
|
||||
class FormatComponent:
|
||||
"""<format/component>"""
|
||||
type: str # ex) R, G, B, A, D, S, etc
|
||||
bits: str # will be an INT or 'compressed'
|
||||
numericFormat: str # ex) UNORM, SINT, etc
|
||||
planeIndex: (int | None) # None if no planeIndex in format
|
||||
|
||||
@dataclass
|
||||
class FormatPlane:
|
||||
"""<format/plane>"""
|
||||
index: int
|
||||
widthDivisor: int
|
||||
heightDivisor: int
|
||||
compatible: str
|
||||
|
||||
@dataclass
|
||||
class Format:
|
||||
"""<format>"""
|
||||
name: str
|
||||
className: str
|
||||
blockSize: int
|
||||
texelsPerBlock: int
|
||||
blockExtent: list[str]
|
||||
packed: (int | None) # None == not-packed
|
||||
chroma: (str | None)
|
||||
compressed: (str | None)
|
||||
components: list[FormatComponent] # <format/component>
|
||||
planes: list[FormatPlane] # <format/plane>
|
||||
spirvImageFormat: (str | None)
|
||||
|
||||
@dataclass
|
||||
class SyncSupport:
|
||||
"""<syncsupport>"""
|
||||
queues: Queues
|
||||
stages: list[Flag] # VkPipelineStageFlagBits2
|
||||
max: bool # If this supports max values
|
||||
|
||||
@dataclass
|
||||
class SyncEquivalent:
|
||||
"""<syncequivalent>"""
|
||||
stages: list[Flag] # VkPipelineStageFlagBits2
|
||||
accesses: list[Flag] # VkAccessFlagBits2
|
||||
max: bool # If this equivalent to everything
|
||||
|
||||
@dataclass
|
||||
class SyncStage:
|
||||
"""<syncstage>"""
|
||||
flag: Flag # VkPipelineStageFlagBits2
|
||||
support: SyncSupport
|
||||
equivalent: SyncEquivalent
|
||||
|
||||
@dataclass
|
||||
class SyncAccess:
|
||||
"""<syncaccess>"""
|
||||
flag: Flag # VkAccessFlagBits2
|
||||
support: SyncSupport
|
||||
equivalent: SyncEquivalent
|
||||
|
||||
@dataclass
|
||||
class SyncPipelineStage:
|
||||
"""<syncpipelinestage>"""
|
||||
order: (str | None)
|
||||
before: (str | None)
|
||||
after: (str | None)
|
||||
value: str
|
||||
|
||||
@dataclass
|
||||
class SyncPipeline:
|
||||
"""<syncpipeline>"""
|
||||
name: str
|
||||
depends: list[str]
|
||||
stages: list[SyncPipelineStage]
|
||||
|
||||
@dataclass
|
||||
class SpirvEnables:
|
||||
"""What is needed to enable the SPIR-V element"""
|
||||
version: (str | None)
|
||||
extension: (str | None)
|
||||
struct: (str | None)
|
||||
feature: (str | None)
|
||||
requires: (str | None)
|
||||
property: (str | None)
|
||||
member: (str | None)
|
||||
value: (str | None)
|
||||
|
||||
@dataclass
|
||||
class Spirv:
|
||||
"""<spirvextension> and <spirvcapability>"""
|
||||
name: str
|
||||
# Only one will be True, the other is False
|
||||
extension: bool
|
||||
capability: bool
|
||||
enable: list[SpirvEnables]
|
||||
|
||||
# This is the global Vulkan Object that holds all the information from parsing the XML
|
||||
# This class is designed so all generator scripts can use this to obtain data
|
||||
@dataclass
|
||||
class VulkanObject():
|
||||
headerVersion: int = 0 # value of VK_HEADER_VERSION
|
||||
|
||||
extensions: dict[str, Extension] = field(default_factory=dict, init=False)
|
||||
versions: dict[str, Version] = field(default_factory=dict, init=False)
|
||||
|
||||
handles: dict[str, Handle] = field(default_factory=dict, init=False)
|
||||
commands: dict[str, Command] = field(default_factory=dict, init=False)
|
||||
structs: dict[str, Struct] = field(default_factory=dict, init=False)
|
||||
enums: dict[str, Enum] = field(default_factory=dict, init=False)
|
||||
bitmasks: dict[str, Bitmask] = field(default_factory=dict, init=False)
|
||||
formats: dict[str, Format] = field(default_factory=dict, init=False)
|
||||
|
||||
syncStage: list[SyncStage] = field(default_factory=list, init=False)
|
||||
syncAccess: list[SyncAccess] = field(default_factory=list, init=False)
|
||||
syncPipeline: list[SyncPipeline] = field(default_factory=list, init=False)
|
||||
|
||||
spirv: list[Spirv] = field(default_factory=list, init=False)
|
||||
|
||||
# ex) [ xlib : VK_USE_PLATFORM_XLIB_KHR ]
|
||||
platforms: dict[str, str] = field(default_factory=dict, init=False)
|
||||
# list of all vendor Suffix names (KHR, EXT, etc. )
|
||||
vendorTags: list[str] = field(default_factory=list, init=False)
|
||||
# ex) [ Queues.COMPUTE : VK_QUEUE_COMPUTE_BIT ]
|
||||
queueBits: dict[IntFlag, str] = field(default_factory=dict, init=False)
|
|
@ -12,7 +12,7 @@ add_test(NAME integration.add_subdirectory
|
|||
--build-and-test ${CMAKE_CURRENT_LIST_DIR}/integration
|
||||
${CMAKE_CURRENT_BINARY_DIR}/add_subdirectory
|
||||
--build-generator ${CMAKE_GENERATOR}
|
||||
--build-options -DFIND_PACKAGE_TESTING=OFF -DVULKAN_HEADERS_ENABLE_MODULE=OFF
|
||||
--build-options -DFIND_PACKAGE_TESTING=OFF -DVULKAN_HEADERS_ENABLE_MODULE=${VULKAN_HEADERS_ENABLE_MODULE}
|
||||
)
|
||||
|
||||
set(test_install_dir "${CMAKE_CURRENT_BINARY_DIR}/install")
|
||||
|
|
|
@ -5,9 +5,9 @@
|
|||
#
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# ~~~
|
||||
cmake_minimum_required(VERSION 3.14.2)
|
||||
cmake_minimum_required(VERSION 3.22.1)
|
||||
|
||||
project(API LANGUAGES C)
|
||||
project(API LANGUAGES C CXX)
|
||||
|
||||
if (FIND_PACKAGE_TESTING)
|
||||
find_package(VulkanHeaders REQUIRED CONFIG)
|
||||
|
@ -18,6 +18,9 @@ endif()
|
|||
if (NOT TARGET Vulkan::Headers)
|
||||
message(FATAL_ERROR "Vulkan::Headers target not defined")
|
||||
endif()
|
||||
if (NOT TARGET Vulkan::HppModule AND VULKAN_HEADERS_ENABLE_MODULE)
|
||||
message(FATAL_ERROR "Vulkan::HppModule target not defined")
|
||||
endif()
|
||||
|
||||
if (FIND_PACKAGE_TESTING)
|
||||
if (NOT DEFINED VulkanHeaders_VERSION)
|
||||
|
@ -37,6 +40,9 @@ if (NOT FIND_PACKAGE_TESTING)
|
|||
if (NOT TARGET Vulkan-Headers)
|
||||
message(FATAL_ERROR "Backcompat for Vulkan-Headers target broken!")
|
||||
endif()
|
||||
if (NOT TARGET Vulkan-HppModule AND VULKAN_HEADERS_ENABLE_MODULE)
|
||||
message(FATAL_ERROR "Backcompat for Vulkan-HppModule target broken!")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
set(CMAKE_C_STANDARD 99)
|
||||
|
@ -71,3 +77,15 @@ target_link_libraries(vk_icd PRIVATE Vulkan::Headers)
|
|||
# vk_layer.h
|
||||
add_library(vk_layer MODULE ../vk_layer.c)
|
||||
target_link_libraries(vk_layer PRIVATE Vulkan::Headers)
|
||||
|
||||
# vulkan.hpp
|
||||
add_library(vk_hpp MODULE ../vk_hpp.cpp)
|
||||
target_compile_features(vk_hpp PUBLIC cxx_std_11)
|
||||
target_link_libraries(vk_hpp PRIVATE Vulkan::Headers)
|
||||
|
||||
# vulkan.cppm
|
||||
if (VULKAN_HEADERS_ENABLE_MODULE)
|
||||
add_library(vk_hpp_module MODULE ../vk_hpp_module.cpp)
|
||||
set_target_properties(vk_hpp_module PROPERTIES CXX_SCAN_FOR_MODULES ON)
|
||||
target_link_libraries(vk_hpp_module PRIVATE Vulkan::HppModule)
|
||||
endif()
|
13
tests/vk_hpp.cpp
Normal file
13
tests/vk_hpp.cpp
Normal file
|
@ -0,0 +1,13 @@
|
|||
/*
|
||||
* Copyright 2025 The Khronos Group Inc.
|
||||
* Copyright 2025 Valve Corporation
|
||||
* Copyright 2025 LunarG, Inc.
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
#include <vulkan/vulkan.hpp>
|
||||
|
||||
int header_version()
|
||||
{
|
||||
return VK_HEADER_VERSION;
|
||||
}
|
13
tests/vk_hpp_module.cpp
Normal file
13
tests/vk_hpp_module.cpp
Normal file
|
@ -0,0 +1,13 @@
|
|||
/*
|
||||
* Copyright 2025 The Khronos Group Inc.
|
||||
* Copyright 2025 Valve Corporation
|
||||
* Copyright 2025 LunarG, Inc.
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
import vulkan_hpp;
|
||||
|
||||
int test_version()
|
||||
{
|
||||
return static_cast<int>(vk::makeApiVersion(1, 0, 0, 0));
|
||||
}
|
Loading…
Add table
Reference in a new issue