early-access version 1866
This commit is contained in:
parent
335eeff822
commit
7d21887d40
@ -51,61 +51,7 @@ endif()
|
|||||||
# The variable SRC_DIR must be passed into the script (since it uses the current build directory for all values of CMAKE_*_DIR)
|
# The variable SRC_DIR must be passed into the script (since it uses the current build directory for all values of CMAKE_*_DIR)
|
||||||
set(VIDEO_CORE "${SRC_DIR}/src/video_core")
|
set(VIDEO_CORE "${SRC_DIR}/src/video_core")
|
||||||
set(HASH_FILES
|
set(HASH_FILES
|
||||||
"${VIDEO_CORE}/renderer_opengl/gl_arb_decompiler.cpp"
|
# ...
|
||||||
"${VIDEO_CORE}/renderer_opengl/gl_arb_decompiler.h"
|
|
||||||
"${VIDEO_CORE}/renderer_opengl/gl_shader_cache.cpp"
|
|
||||||
"${VIDEO_CORE}/renderer_opengl/gl_shader_cache.h"
|
|
||||||
"${VIDEO_CORE}/renderer_opengl/gl_shader_decompiler.cpp"
|
|
||||||
"${VIDEO_CORE}/renderer_opengl/gl_shader_decompiler.h"
|
|
||||||
"${VIDEO_CORE}/renderer_opengl/gl_shader_disk_cache.cpp"
|
|
||||||
"${VIDEO_CORE}/renderer_opengl/gl_shader_disk_cache.h"
|
|
||||||
"${VIDEO_CORE}/shader/decode/arithmetic.cpp"
|
|
||||||
"${VIDEO_CORE}/shader/decode/arithmetic_half.cpp"
|
|
||||||
"${VIDEO_CORE}/shader/decode/arithmetic_half_immediate.cpp"
|
|
||||||
"${VIDEO_CORE}/shader/decode/arithmetic_immediate.cpp"
|
|
||||||
"${VIDEO_CORE}/shader/decode/arithmetic_integer.cpp"
|
|
||||||
"${VIDEO_CORE}/shader/decode/arithmetic_integer_immediate.cpp"
|
|
||||||
"${VIDEO_CORE}/shader/decode/bfe.cpp"
|
|
||||||
"${VIDEO_CORE}/shader/decode/bfi.cpp"
|
|
||||||
"${VIDEO_CORE}/shader/decode/conversion.cpp"
|
|
||||||
"${VIDEO_CORE}/shader/decode/ffma.cpp"
|
|
||||||
"${VIDEO_CORE}/shader/decode/float_set.cpp"
|
|
||||||
"${VIDEO_CORE}/shader/decode/float_set_predicate.cpp"
|
|
||||||
"${VIDEO_CORE}/shader/decode/half_set.cpp"
|
|
||||||
"${VIDEO_CORE}/shader/decode/half_set_predicate.cpp"
|
|
||||||
"${VIDEO_CORE}/shader/decode/hfma2.cpp"
|
|
||||||
"${VIDEO_CORE}/shader/decode/image.cpp"
|
|
||||||
"${VIDEO_CORE}/shader/decode/integer_set.cpp"
|
|
||||||
"${VIDEO_CORE}/shader/decode/integer_set_predicate.cpp"
|
|
||||||
"${VIDEO_CORE}/shader/decode/memory.cpp"
|
|
||||||
"${VIDEO_CORE}/shader/decode/texture.cpp"
|
|
||||||
"${VIDEO_CORE}/shader/decode/other.cpp"
|
|
||||||
"${VIDEO_CORE}/shader/decode/predicate_set_predicate.cpp"
|
|
||||||
"${VIDEO_CORE}/shader/decode/predicate_set_register.cpp"
|
|
||||||
"${VIDEO_CORE}/shader/decode/register_set_predicate.cpp"
|
|
||||||
"${VIDEO_CORE}/shader/decode/shift.cpp"
|
|
||||||
"${VIDEO_CORE}/shader/decode/video.cpp"
|
|
||||||
"${VIDEO_CORE}/shader/decode/warp.cpp"
|
|
||||||
"${VIDEO_CORE}/shader/decode/xmad.cpp"
|
|
||||||
"${VIDEO_CORE}/shader/ast.cpp"
|
|
||||||
"${VIDEO_CORE}/shader/ast.h"
|
|
||||||
"${VIDEO_CORE}/shader/compiler_settings.cpp"
|
|
||||||
"${VIDEO_CORE}/shader/compiler_settings.h"
|
|
||||||
"${VIDEO_CORE}/shader/control_flow.cpp"
|
|
||||||
"${VIDEO_CORE}/shader/control_flow.h"
|
|
||||||
"${VIDEO_CORE}/shader/decode.cpp"
|
|
||||||
"${VIDEO_CORE}/shader/expr.cpp"
|
|
||||||
"${VIDEO_CORE}/shader/expr.h"
|
|
||||||
"${VIDEO_CORE}/shader/node.h"
|
|
||||||
"${VIDEO_CORE}/shader/node_helper.cpp"
|
|
||||||
"${VIDEO_CORE}/shader/node_helper.h"
|
|
||||||
"${VIDEO_CORE}/shader/registry.cpp"
|
|
||||||
"${VIDEO_CORE}/shader/registry.h"
|
|
||||||
"${VIDEO_CORE}/shader/shader_ir.cpp"
|
|
||||||
"${VIDEO_CORE}/shader/shader_ir.h"
|
|
||||||
"${VIDEO_CORE}/shader/track.cpp"
|
|
||||||
"${VIDEO_CORE}/shader/transform_feedback.cpp"
|
|
||||||
"${VIDEO_CORE}/shader/transform_feedback.h"
|
|
||||||
)
|
)
|
||||||
set(COMBINED "")
|
set(COMBINED "")
|
||||||
foreach (F IN LISTS HASH_FILES)
|
foreach (F IN LISTS HASH_FILES)
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
yuzu emulator early access
|
yuzu emulator early access
|
||||||
=============
|
=============
|
||||||
|
|
||||||
This is the source code for early-access 1865.
|
This is the source code for early-access 1866.
|
||||||
|
|
||||||
## Legal Notice
|
## Legal Notice
|
||||||
|
|
||||||
|
1
externals/Vulkan-Headers/BUILD.gn
vendored
1
externals/Vulkan-Headers/BUILD.gn
vendored
@ -48,6 +48,7 @@ source_set("vulkan_headers") {
|
|||||||
"include/vulkan/vulkan.h",
|
"include/vulkan/vulkan.h",
|
||||||
"include/vulkan/vulkan.hpp",
|
"include/vulkan/vulkan.hpp",
|
||||||
"include/vulkan/vulkan_core.h",
|
"include/vulkan/vulkan_core.h",
|
||||||
|
"include/vulkan/vulkan_screen.h",
|
||||||
]
|
]
|
||||||
public_configs = [ ":vulkan_headers_config" ]
|
public_configs = [ ":vulkan_headers_config" ]
|
||||||
}
|
}
|
||||||
|
1
externals/Vulkan-Headers/CMakeLists.txt
vendored
1
externals/Vulkan-Headers/CMakeLists.txt
vendored
@ -46,6 +46,7 @@ target_include_directories(Vulkan-Registry INTERFACE "${CMAKE_CURRENT_SOURCE_DIR
|
|||||||
add_library(Vulkan::Registry ALIAS Vulkan-Registry)
|
add_library(Vulkan::Registry ALIAS Vulkan-Registry)
|
||||||
|
|
||||||
install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/include/vulkan" DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/include/vulkan" DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
||||||
|
install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/include/vk_video" DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
||||||
install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/registry" DESTINATION ${CMAKE_INSTALL_DATADIR}/vulkan)
|
install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/registry" DESTINATION ${CMAKE_INSTALL_DATADIR}/vulkan)
|
||||||
|
|
||||||
# uninstall target
|
# uninstall target
|
||||||
|
48
externals/Vulkan-Headers/README.md
vendored
48
externals/Vulkan-Headers/README.md
vendored
@ -4,23 +4,45 @@ Vulkan header files and API registry
|
|||||||
|
|
||||||
## Repository Content
|
## Repository Content
|
||||||
|
|
||||||
The contents of this repository are largely obtained from other repositories and are
|
The contents of this repository are largely obtained from other repositories
|
||||||
collected, coordinated, and curated here.
|
and are collected, coordinated, and curated here.
|
||||||
|
|
||||||
Do not propose pull requests to this repository which modify any files under
|
If proposing changes to any file originating from a different repository,
|
||||||
include/vulkan/ or registry/. All such files are generated from the
|
please propose such changes in that repository, rather than Vulkan-Headers.
|
||||||
Vulkan-Docs repository and, in the case of include/vulkan/vulkan.hpp, the
|
Files in this repository originate from:
|
||||||
Vulkan-Hpp repository. Any changes must be made in those repositories.
|
|
||||||
|
|
||||||
The projects for these repositories are:
|
### Specification repository (https://github.com/KhronosGroup/Vulkan-Docs)
|
||||||
|
|
||||||
- [KhronosGroup/Vulkan-Docs](https://github.com/KhronosGroup/Vulkan-Docs)
|
* registry/cgenerator.py
|
||||||
- Core Vulkan headers and Registry
|
* registry/conventions.py
|
||||||
- [KhronosGroup/Vulkan-Hpp](https://github.com/KhronosGroup/Vulkan-Hpp)
|
* registry/generator.py
|
||||||
- C++ Bindings for Vulkan
|
* registry/genvk.py
|
||||||
|
* registry/reg.py
|
||||||
|
* registry/spec_tools/util.py
|
||||||
|
* registry/validusage.json
|
||||||
|
* registry/vk.xml
|
||||||
|
* registry/vkconventions.py
|
||||||
|
* All files under include/vulkan/ which are *not* listed explicitly as originating from another repository.
|
||||||
|
|
||||||
Please visit the appropriate project in the above list for obtaining additional information,
|
### This repository (https://github.com/KhronosGroup/Vulkan-Headers)
|
||||||
asking questions, or opening issues.
|
|
||||||
|
* .cmake-format.py
|
||||||
|
* BUILD.gn
|
||||||
|
* BUILD.md
|
||||||
|
* CMakeLists.txt
|
||||||
|
* CODE_OF_CONDUCT.md
|
||||||
|
* LICENSE.txt
|
||||||
|
* README.md
|
||||||
|
* cmake/Copyright_cmake.txt
|
||||||
|
* cmake/cmake_uninstall.cmake.in
|
||||||
|
* Non-API headers (report issues against @lenny-lunarg)
|
||||||
|
* include/vulkan/vk_icd.h
|
||||||
|
* include/vulkan/vk_layer.h
|
||||||
|
* include/vulkan/vk_sdk_platform.h
|
||||||
|
|
||||||
|
### Vulkan C++ Binding Repository (https://github.com/KhronosGroup/Vulkan-Hpp)
|
||||||
|
|
||||||
|
* include/vulkan/vulkan.hpp
|
||||||
|
|
||||||
## Version Tagging Scheme
|
## Version Tagging Scheme
|
||||||
|
|
||||||
|
299
externals/Vulkan-Headers/include/vk_video/vulkan_video_codec_h264std.h
vendored
Executable file
299
externals/Vulkan-Headers/include/vk_video/vulkan_video_codec_h264std.h
vendored
Executable file
@ -0,0 +1,299 @@
|
|||||||
|
/*
|
||||||
|
** Copyright (c) 2019-2021 The Khronos Group Inc.
|
||||||
|
**
|
||||||
|
** SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef VULKAN_VIDEO_CODEC_H264STD_H_
|
||||||
|
#define VULKAN_VIDEO_CODEC_H264STD_H_ 1
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "vk_video/vulkan_video_codecs_common.h"
|
||||||
|
|
||||||
|
// Vulkan 0.9 provisional Vulkan video H.264 encode and decode std specification version number
|
||||||
|
#define VK_STD_VULKAN_VIDEO_CODEC_H264_API_VERSION_0_9 VK_MAKE_VIDEO_STD_VERSION(0, 9, 0) // Patch version should always be set to 0
|
||||||
|
|
||||||
|
// Format must be in the form XX.XX where the first two digits are the major and the second two, the minor.
|
||||||
|
#define VK_STD_VULKAN_VIDEO_CODEC_H264_SPEC_VERSION VK_STD_VULKAN_VIDEO_CODEC_H264_API_VERSION_0_9
|
||||||
|
#define VK_STD_VULKAN_VIDEO_CODEC_H264_EXTENSION_NAME "VK_STD_vulkan_video_codec_h264"
|
||||||
|
|
||||||
|
// *************************************************
|
||||||
|
// Video H.264 common definitions:
|
||||||
|
// *************************************************
|
||||||
|
|
||||||
|
typedef enum StdVideoH264ChromaFormatIdc {
|
||||||
|
std_video_h264_chroma_format_idc_monochrome = 0,
|
||||||
|
std_video_h264_chroma_format_idc_420 = 1,
|
||||||
|
std_video_h264_chroma_format_idc_422 = 2,
|
||||||
|
std_video_h264_chroma_format_idc_444 = 3,
|
||||||
|
} StdVideoH264ChromaFormatIdc;
|
||||||
|
|
||||||
|
typedef enum StdVideoH264ProfileIdc {
|
||||||
|
std_video_h264_profile_idc_baseline = 66, /* Only constrained baseline is supported */
|
||||||
|
std_video_h264_profile_idc_main = 77,
|
||||||
|
std_video_h264_profile_idc_high = 100,
|
||||||
|
std_video_h264_profile_idc_high_444_predictive = 244,
|
||||||
|
std_video_h264_profile_idc_invalid = 0x7FFFFFFF
|
||||||
|
} StdVideoH264ProfileIdc;
|
||||||
|
|
||||||
|
typedef enum StdVideoH264Level {
|
||||||
|
std_video_h264_level_1_0 = 0,
|
||||||
|
std_video_h264_level_1_1 = 1,
|
||||||
|
std_video_h264_level_1_2 = 2,
|
||||||
|
std_video_h264_level_1_3 = 3,
|
||||||
|
std_video_h264_level_2_0 = 4,
|
||||||
|
std_video_h264_level_2_1 = 5,
|
||||||
|
std_video_h264_level_2_2 = 6,
|
||||||
|
std_video_h264_level_3_0 = 7,
|
||||||
|
std_video_h264_level_3_1 = 8,
|
||||||
|
std_video_h264_level_3_2 = 9,
|
||||||
|
std_video_h264_level_4_0 = 10,
|
||||||
|
std_video_h264_level_4_1 = 11,
|
||||||
|
std_video_h264_level_4_2 = 12,
|
||||||
|
std_video_h264_level_5_0 = 13,
|
||||||
|
std_video_h264_level_5_1 = 14,
|
||||||
|
std_video_h264_level_5_2 = 15,
|
||||||
|
std_video_h264_level_6_0 = 16,
|
||||||
|
std_video_h264_level_6_1 = 17,
|
||||||
|
std_video_h264_level_6_2 = 18,
|
||||||
|
std_video_h264_level_invalid = 0x7FFFFFFF
|
||||||
|
} StdVideoH264Level;
|
||||||
|
|
||||||
|
typedef enum StdVideoH264PocType {
|
||||||
|
std_video_h264_poc_type_0 = 0,
|
||||||
|
std_video_h264_poc_type_1 = 1,
|
||||||
|
std_video_h264_poc_type_2 = 2,
|
||||||
|
std_video_h264_poc_type_invalid = 0x7FFFFFFF
|
||||||
|
} StdVideoH264PocType;
|
||||||
|
|
||||||
|
typedef enum StdVideoH264AspectRatioIdc {
|
||||||
|
std_video_h264_aspect_ratio_idc_unspecified = 0,
|
||||||
|
std_video_h264_aspect_ratio_idc_square = 1,
|
||||||
|
std_video_h264_aspect_ratio_idc_12_11 = 2,
|
||||||
|
std_video_h264_aspect_ratio_idc_10_11 = 3,
|
||||||
|
std_video_h264_aspect_ratio_idc_16_11 = 4,
|
||||||
|
std_video_h264_aspect_ratio_idc_40_33 = 5,
|
||||||
|
std_video_h264_aspect_ratio_idc_24_11 = 6,
|
||||||
|
std_video_h264_aspect_ratio_idc_20_11 = 7,
|
||||||
|
std_video_h264_aspect_ratio_idc_32_11 = 8,
|
||||||
|
std_video_h264_aspect_ratio_idc_80_33 = 9,
|
||||||
|
std_video_h264_aspect_ratio_idc_18_11 = 10,
|
||||||
|
std_video_h264_aspect_ratio_idc_15_11 = 11,
|
||||||
|
std_video_h264_aspect_ratio_idc_64_33 = 12,
|
||||||
|
std_video_h264_aspect_ratio_idc_160_99 = 13,
|
||||||
|
std_video_h264_aspect_ratio_idc_4_3 = 14,
|
||||||
|
std_video_h264_aspect_ratio_idc_3_2 = 15,
|
||||||
|
std_video_h264_aspect_ratio_idc_2_1 = 16,
|
||||||
|
std_video_h264_aspect_ratio_idc_extended_sar = 255,
|
||||||
|
std_video_h264_aspect_ratio_idc_invalid = 0x7FFFFFFF
|
||||||
|
} StdVideoH264AspectRatioIdc;
|
||||||
|
|
||||||
|
typedef enum StdVideoH264WeightedBiPredIdc {
|
||||||
|
std_video_h264_default_weighted_b_slices_prediction_idc = 0,
|
||||||
|
std_video_h264_explicit_weighted_b_slices_prediction_idc = 1,
|
||||||
|
std_video_h264_implicit_weighted_b_slices_prediction_idc = 2,
|
||||||
|
std_video_h264_invalid_weighted_b_slices_prediction_idc = 0x7FFFFFFF
|
||||||
|
} StdVideoH264WeightedBiPredIdc;
|
||||||
|
|
||||||
|
typedef enum StdVideoH264ModificationOfPicNumsIdc {
|
||||||
|
std_video_h264_modification_of_pic_nums_idc_short_term_subtract = 0,
|
||||||
|
std_video_h264_modification_of_pic_nums_idc_short_term_add = 1,
|
||||||
|
std_video_h264_modification_of_pic_nums_idc_long_term = 2,
|
||||||
|
std_video_h264_modification_of_pic_nums_idc_end = 3,
|
||||||
|
std_video_h264_modification_of_pic_nums_idc_invalid = 0x7FFFFFFF
|
||||||
|
} StdVideoH264ModificationOfPicNumsIdc;
|
||||||
|
|
||||||
|
typedef enum StdVideoH264MemMgmtControlOp {
|
||||||
|
std_video_h264_mem_mgmt_control_op_end = 0,
|
||||||
|
std_video_h264_mem_mgmt_control_op_unmark_short_term = 1,
|
||||||
|
std_video_h264_mem_mgmt_control_op_unmark_long_term = 2,
|
||||||
|
std_video_h264_mem_mgmt_control_op_mark_long_term = 3,
|
||||||
|
std_video_h264_mem_mgmt_control_op_set_max_long_term_index = 4,
|
||||||
|
std_video_h264_mem_mgmt_control_op_unmark_all = 5,
|
||||||
|
std_video_h264_mem_mgmt_control_op_mark_current_as_long_term = 6,
|
||||||
|
std_video_h264_mem_mgmt_control_op_invalid = 0x7FFFFFFF
|
||||||
|
} StdVideoH264MemMgmtControlOp;
|
||||||
|
|
||||||
|
typedef enum StdVideoH264CabacInitIdc {
|
||||||
|
std_video_h264_cabac_init_idc_0 = 0,
|
||||||
|
std_video_h264_cabac_init_idc_1 = 1,
|
||||||
|
std_video_h264_cabac_init_idc_2 = 2,
|
||||||
|
std_video_h264_cabac_init_idc_invalid = 0x7FFFFFFF
|
||||||
|
} StdVideoH264CabacInitIdc;
|
||||||
|
|
||||||
|
typedef enum StdVideoH264DisableDeblockingFilterIdc {
|
||||||
|
std_video_h264_disable_deblocking_filter_idc_disabled = 0,
|
||||||
|
std_video_h264_disable_deblocking_filter_idc_enabled = 1,
|
||||||
|
std_video_h264_disable_deblocking_filter_idc_partial = 2,
|
||||||
|
std_video_h264_disable_deblocking_filter_idc_invalid = 0x7FFFFFFF
|
||||||
|
} StdVideoH264DisableDeblockingFilterIdc;
|
||||||
|
|
||||||
|
typedef enum StdVideoH264PictureType {
|
||||||
|
std_video_h264_picture_type_i = 0,
|
||||||
|
std_video_h264_picture_type_p = 1,
|
||||||
|
std_video_h264_picture_type_b = 2,
|
||||||
|
std_video_h264_picture_type_invalid = 0x7FFFFFFF
|
||||||
|
} StdVideoH264PictureType;
|
||||||
|
|
||||||
|
typedef enum StdVideoH264SliceType {
|
||||||
|
std_video_h264_slice_type_i = 0,
|
||||||
|
std_video_h264_slice_type_p = 1,
|
||||||
|
std_video_h264_slice_type_b = 2,
|
||||||
|
std_video_h264_slice_type_invalid = 0x7FFFFFFF
|
||||||
|
} StdVideoH264SliceType;
|
||||||
|
|
||||||
|
typedef enum StdVideoH264NonVclNaluType {
|
||||||
|
std_video_h264_non_vcl_nalu_type_sps = 0,
|
||||||
|
std_video_h264_non_vcl_nalu_type_pps = 1,
|
||||||
|
std_video_h264_non_vcl_nalu_type_aud = 2,
|
||||||
|
std_video_h264_non_vcl_nalu_type_prefix = 3,
|
||||||
|
std_video_h264_non_vcl_nalu_type_end_of_sequence = 4,
|
||||||
|
std_video_h264_non_vcl_nalu_type_end_of_stream = 5,
|
||||||
|
std_video_h264_non_vcl_nalu_type_precoded = 6,
|
||||||
|
std_video_h264_non_vcl_nalu_type_invalid = 0x7FFFFFFF
|
||||||
|
} StdVideoH264NonVclNaluType;
|
||||||
|
|
||||||
|
typedef struct StdVideoH264SpsVuiFlags {
|
||||||
|
uint32_t aspect_ratio_info_present_flag:1;
|
||||||
|
uint32_t overscan_info_present_flag:1;
|
||||||
|
uint32_t overscan_appropriate_flag:1;
|
||||||
|
uint32_t video_signal_type_present_flag:1;
|
||||||
|
uint32_t video_full_range_flag:1;
|
||||||
|
uint32_t color_description_present_flag:1;
|
||||||
|
uint32_t chroma_loc_info_present_flag:1;
|
||||||
|
uint32_t timing_info_present_flag:1;
|
||||||
|
uint32_t fixed_frame_rate_flag:1;
|
||||||
|
uint32_t bitstream_restriction_flag:1;
|
||||||
|
uint32_t nal_hrd_parameters_present_flag:1;
|
||||||
|
uint32_t vcl_hrd_parameters_present_flag:1;
|
||||||
|
} StdVideoH264SpsVuiFlags;
|
||||||
|
|
||||||
|
typedef struct StdVideoH264HrdParameters {
|
||||||
|
uint8_t cpb_cnt_minus1;
|
||||||
|
uint8_t bit_rate_scale;
|
||||||
|
uint8_t cpb_size_scale;
|
||||||
|
uint32_t bit_rate_value_minus1[32];
|
||||||
|
uint32_t cpb_size_value_minus1[32];
|
||||||
|
uint8_t cbr_flag[32];
|
||||||
|
uint32_t initial_cpb_removal_delay_length_minus1;
|
||||||
|
uint32_t cpb_removal_delay_length_minus1;
|
||||||
|
uint32_t dpb_output_delay_length_minus1;
|
||||||
|
uint32_t time_offset_length;
|
||||||
|
} StdVideoH264HrdParameters;
|
||||||
|
|
||||||
|
typedef struct StdVideoH264SequenceParameterSetVui {
|
||||||
|
StdVideoH264AspectRatioIdc aspect_ratio_idc;
|
||||||
|
uint16_t sar_width;
|
||||||
|
uint16_t sar_height;
|
||||||
|
uint8_t video_format;
|
||||||
|
uint8_t color_primaries;
|
||||||
|
uint8_t transfer_characteristics;
|
||||||
|
uint8_t matrix_coefficients;
|
||||||
|
uint32_t num_units_in_tick;
|
||||||
|
uint32_t time_scale;
|
||||||
|
StdVideoH264HrdParameters hrd_parameters;
|
||||||
|
uint8_t num_reorder_frames;
|
||||||
|
uint8_t max_dec_frame_buffering;
|
||||||
|
StdVideoH264SpsVuiFlags flags;
|
||||||
|
} StdVideoH264SequenceParameterSetVui;
|
||||||
|
|
||||||
|
typedef struct StdVideoH264SpsFlags {
|
||||||
|
uint32_t constraint_set0_flag:1;
|
||||||
|
uint32_t constraint_set1_flag:1;
|
||||||
|
uint32_t constraint_set2_flag:1;
|
||||||
|
uint32_t constraint_set3_flag:1;
|
||||||
|
uint32_t constraint_set4_flag:1;
|
||||||
|
uint32_t constraint_set5_flag:1;
|
||||||
|
uint32_t direct_8x8_inference_flag:1;
|
||||||
|
uint32_t mb_adaptive_frame_field_flag:1;
|
||||||
|
uint32_t frame_mbs_only_flag:1;
|
||||||
|
uint32_t delta_pic_order_always_zero_flag:1;
|
||||||
|
uint32_t residual_colour_transform_flag:1;
|
||||||
|
uint32_t gaps_in_frame_num_value_allowed_flag:1;
|
||||||
|
uint32_t first_picture_after_seek_flag:1; // where is this being documented?
|
||||||
|
uint32_t qpprime_y_zero_transform_bypass_flag:1;
|
||||||
|
uint32_t frame_cropping_flag:1;
|
||||||
|
uint32_t scaling_matrix_present_flag:1;
|
||||||
|
uint32_t vui_parameters_present_flag:1;
|
||||||
|
} StdVideoH264SpsFlags;
|
||||||
|
|
||||||
|
typedef struct StdVideoH264ScalingLists
|
||||||
|
{
|
||||||
|
// scaling_list_present_mask has one bit for each
|
||||||
|
// seq_scaling_list_present_flag[i] for SPS OR
|
||||||
|
// pic_scaling_list_present_flag[i] for PPS,
|
||||||
|
// bit 0 - 5 are for each entry of ScalingList4x4
|
||||||
|
// bit 6 - 7 are for each entry plus 6 for ScalingList8x8
|
||||||
|
uint8_t scaling_list_present_mask;
|
||||||
|
// use_default_scaling_matrix_mask has one bit for each
|
||||||
|
// UseDefaultScalingMatrix4x4Flag[ i ] and
|
||||||
|
// UseDefaultScalingMatrix8x8Flag[ i - 6 ] for SPS OR PPS
|
||||||
|
// bit 0 - 5 are for each entry of ScalingList4x4
|
||||||
|
// bit 6 - 7 are for each entry plus 6 for ScalingList8x8
|
||||||
|
uint8_t use_default_scaling_matrix_mask;
|
||||||
|
uint8_t ScalingList4x4[6][16];
|
||||||
|
uint8_t ScalingList8x8[2][64];
|
||||||
|
} StdVideoH264ScalingLists;
|
||||||
|
|
||||||
|
typedef struct StdVideoH264SequenceParameterSet
|
||||||
|
{
|
||||||
|
StdVideoH264ProfileIdc profile_idc;
|
||||||
|
StdVideoH264Level level_idc;
|
||||||
|
uint8_t seq_parameter_set_id;
|
||||||
|
StdVideoH264ChromaFormatIdc chroma_format_idc;
|
||||||
|
uint8_t bit_depth_luma_minus8;
|
||||||
|
uint8_t bit_depth_chroma_minus8;
|
||||||
|
uint8_t log2_max_frame_num_minus4;
|
||||||
|
StdVideoH264PocType pic_order_cnt_type;
|
||||||
|
uint8_t log2_max_pic_order_cnt_lsb_minus4;
|
||||||
|
int32_t offset_for_non_ref_pic;
|
||||||
|
int32_t offset_for_top_to_bottom_field;
|
||||||
|
uint8_t num_ref_frames_in_pic_order_cnt_cycle;
|
||||||
|
uint8_t max_num_ref_frames;
|
||||||
|
uint32_t pic_width_in_mbs_minus1;
|
||||||
|
uint32_t pic_height_in_map_units_minus1;
|
||||||
|
uint32_t frame_crop_left_offset;
|
||||||
|
uint32_t frame_crop_right_offset;
|
||||||
|
uint32_t frame_crop_top_offset;
|
||||||
|
uint32_t frame_crop_bottom_offset;
|
||||||
|
StdVideoH264SpsFlags flags;
|
||||||
|
int32_t offset_for_ref_frame[255]; // The number of valid values are defined by the num_ref_frames_in_pic_order_cnt_cycle
|
||||||
|
StdVideoH264ScalingLists* pScalingLists; // Must be a valid pointer if scaling_matrix_present_flag is set
|
||||||
|
StdVideoH264SequenceParameterSetVui* pSequenceParameterSetVui; // Must be a valid pointer if StdVideoH264SpsFlags:vui_parameters_present_flag is set
|
||||||
|
} StdVideoH264SequenceParameterSet;
|
||||||
|
|
||||||
|
typedef struct StdVideoH264PpsFlags {
|
||||||
|
uint32_t transform_8x8_mode_flag:1;
|
||||||
|
uint32_t redundant_pic_cnt_present_flag:1;
|
||||||
|
uint32_t constrained_intra_pred_flag:1;
|
||||||
|
uint32_t deblocking_filter_control_present_flag:1;
|
||||||
|
uint32_t weighted_bipred_idc_flag:1;
|
||||||
|
uint32_t weighted_pred_flag:1;
|
||||||
|
uint32_t pic_order_present_flag:1;
|
||||||
|
uint32_t entropy_coding_mode_flag:1;
|
||||||
|
uint32_t scaling_matrix_present_flag:1;
|
||||||
|
} StdVideoH264PpsFlags;
|
||||||
|
|
||||||
|
typedef struct StdVideoH264PictureParameterSet
|
||||||
|
{
|
||||||
|
uint8_t seq_parameter_set_id;
|
||||||
|
uint8_t pic_parameter_set_id;
|
||||||
|
uint8_t num_ref_idx_l0_default_active_minus1;
|
||||||
|
uint8_t num_ref_idx_l1_default_active_minus1;
|
||||||
|
StdVideoH264WeightedBiPredIdc weighted_bipred_idc;
|
||||||
|
int8_t pic_init_qp_minus26;
|
||||||
|
int8_t pic_init_qs_minus26;
|
||||||
|
int8_t chroma_qp_index_offset;
|
||||||
|
int8_t second_chroma_qp_index_offset;
|
||||||
|
StdVideoH264PpsFlags flags;
|
||||||
|
StdVideoH264ScalingLists* pScalingLists; // Must be a valid pointer if StdVideoH264PpsFlags::scaling_matrix_present_flag is set.
|
||||||
|
} StdVideoH264PictureParameterSet;
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // VULKAN_VIDEO_CODEC_H264STD_H_
|
87
externals/Vulkan-Headers/include/vk_video/vulkan_video_codec_h264std_decode.h
vendored
Executable file
87
externals/Vulkan-Headers/include/vk_video/vulkan_video_codec_h264std_decode.h
vendored
Executable file
@ -0,0 +1,87 @@
|
|||||||
|
/*
|
||||||
|
** Copyright (c) 2019-2020 The Khronos Group Inc.
|
||||||
|
**
|
||||||
|
** SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef VULKAN_VIDEO_CODEC_H264STD_DECODE_H_
|
||||||
|
#define VULKAN_VIDEO_CODEC_H264STD_DECODE_H_ 1
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "vk_video/vulkan_video_codec_h264std.h"
|
||||||
|
|
||||||
|
// *************************************************
|
||||||
|
// Video H.264 Decode related parameters:
|
||||||
|
// *************************************************
|
||||||
|
|
||||||
|
typedef struct StdVideoDecodeH264PictureInfoFlags {
|
||||||
|
uint32_t field_pic_flag:1; // Is field picture
|
||||||
|
uint32_t is_intra:1; // Is intra picture
|
||||||
|
uint32_t bottom_field_flag:1; // bottom (true) or top (false) field if field_pic_flag is set.
|
||||||
|
uint32_t is_reference:1; // This only applies to picture info, and not to the DPB lists.
|
||||||
|
uint32_t complementary_field_pair:1; // complementary field pair, complementary non-reference field pair, complementary reference field pair
|
||||||
|
} StdVideoDecodeH264PictureInfoFlags;
|
||||||
|
|
||||||
|
typedef struct StdVideoDecodeH264PictureInfo {
|
||||||
|
uint8_t seq_parameter_set_id; // Selecting SPS from the Picture Parameters
|
||||||
|
uint8_t pic_parameter_set_id; // Selecting PPS from the Picture Parameters and the SPS
|
||||||
|
uint16_t reserved; // for structure members 32-bit packing/alignment
|
||||||
|
uint16_t frame_num; // 7.4.3 Slice header semantics
|
||||||
|
uint16_t idr_pic_id; // 7.4.3 Slice header semantics
|
||||||
|
// PicOrderCnt is based on TopFieldOrderCnt and BottomFieldOrderCnt. See 8.2.1 Decoding process for picture order count type 0 - 2
|
||||||
|
int32_t PicOrderCnt[2]; // TopFieldOrderCnt and BottomFieldOrderCnt fields.
|
||||||
|
StdVideoDecodeH264PictureInfoFlags flags;
|
||||||
|
} StdVideoDecodeH264PictureInfo;
|
||||||
|
|
||||||
|
typedef struct StdVideoDecodeH264ReferenceInfoFlags {
|
||||||
|
uint32_t top_field_flag:1; // Reference is used for top field reference.
|
||||||
|
uint32_t bottom_field_flag:1; // Reference is used for bottom field reference.
|
||||||
|
uint32_t is_long_term:1; // this is a long term reference
|
||||||
|
uint32_t is_non_existing:1; // Must be handled in accordance with 8.2.5.2: Decoding process for gaps in frame_num
|
||||||
|
} StdVideoDecodeH264ReferenceInfoFlags;
|
||||||
|
|
||||||
|
typedef struct StdVideoDecodeH264ReferenceInfo {
|
||||||
|
// FrameNum = is_long_term ? long_term_frame_idx : frame_num
|
||||||
|
uint16_t FrameNum; // 7.4.3.3 Decoded reference picture marking semantics
|
||||||
|
uint16_t reserved; // for structure members 32-bit packing/alignment
|
||||||
|
int32_t PicOrderCnt[2]; // TopFieldOrderCnt and BottomFieldOrderCnt fields.
|
||||||
|
StdVideoDecodeH264ReferenceInfoFlags flags;
|
||||||
|
} StdVideoDecodeH264ReferenceInfo;
|
||||||
|
|
||||||
|
typedef struct StdVideoDecodeH264MvcElementFlags {
|
||||||
|
uint32_t non_idr:1;
|
||||||
|
uint32_t anchor_pic:1;
|
||||||
|
uint32_t inter_view:1;
|
||||||
|
} StdVideoDecodeH264MvcElementFlags;
|
||||||
|
|
||||||
|
typedef struct StdVideoDecodeH264MvcElement {
|
||||||
|
StdVideoDecodeH264MvcElementFlags flags;
|
||||||
|
uint16_t viewOrderIndex;
|
||||||
|
uint16_t viewId;
|
||||||
|
uint16_t temporalId; // move out?
|
||||||
|
uint16_t priorityId; // move out?
|
||||||
|
uint16_t numOfAnchorRefsInL0;
|
||||||
|
uint16_t viewIdOfAnchorRefsInL0[15];
|
||||||
|
uint16_t numOfAnchorRefsInL1;
|
||||||
|
uint16_t viewIdOfAnchorRefsInL1[15];
|
||||||
|
uint16_t numOfNonAnchorRefsInL0;
|
||||||
|
uint16_t viewIdOfNonAnchorRefsInL0[15];
|
||||||
|
uint16_t numOfNonAnchorRefsInL1;
|
||||||
|
uint16_t viewIdOfNonAnchorRefsInL1[15];
|
||||||
|
} StdVideoDecodeH264MvcElement;
|
||||||
|
|
||||||
|
typedef struct StdVideoDecodeH264Mvc {
|
||||||
|
uint32_t viewId0;
|
||||||
|
uint32_t mvcElementCount;
|
||||||
|
StdVideoDecodeH264MvcElement* pMvcElements;
|
||||||
|
} StdVideoDecodeH264Mvc;
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // VULKAN_VIDEO_CODEC_H264STD_DECODE_H_
|
94
externals/Vulkan-Headers/include/vk_video/vulkan_video_codec_h264std_encode.h
vendored
Executable file
94
externals/Vulkan-Headers/include/vk_video/vulkan_video_codec_h264std_encode.h
vendored
Executable file
@ -0,0 +1,94 @@
|
|||||||
|
/*
|
||||||
|
** Copyright (c) 2019-2021 The Khronos Group Inc.
|
||||||
|
**
|
||||||
|
** SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef VULKAN_VIDEO_CODEC_H264STD_ENCODE_H_
|
||||||
|
#define VULKAN_VIDEO_CODEC_H264STD_ENCODE_H_ 1
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "vk_video/vulkan_video_codec_h264std.h"
|
||||||
|
|
||||||
|
// *************************************************
|
||||||
|
// Video H.264 Encode related parameters:
|
||||||
|
// *************************************************
|
||||||
|
|
||||||
|
typedef struct StdVideoEncodeH264SliceHeaderFlags {
|
||||||
|
uint32_t idr_flag:1;
|
||||||
|
uint32_t is_reference_flag:1;
|
||||||
|
uint32_t num_ref_idx_active_override_flag:1;
|
||||||
|
uint32_t no_output_of_prior_pics_flag:1;
|
||||||
|
uint32_t long_term_reference_flag:1;
|
||||||
|
uint32_t adaptive_ref_pic_marking_mode_flag:1;
|
||||||
|
uint32_t no_prior_references_available_flag:1;
|
||||||
|
} StdVideoEncodeH264SliceHeaderFlags;
|
||||||
|
|
||||||
|
typedef struct StdVideoEncodeH264PictureInfoFlags {
|
||||||
|
uint32_t idr_flag:1;
|
||||||
|
uint32_t is_reference_flag:1;
|
||||||
|
uint32_t long_term_reference_flag:1;
|
||||||
|
} StdVideoEncodeH264PictureInfoFlags;
|
||||||
|
|
||||||
|
typedef struct StdVideoEncodeH264RefMgmtFlags {
|
||||||
|
uint32_t ref_pic_list_modification_l0_flag:1;
|
||||||
|
uint32_t ref_pic_list_modification_l1_flag:1;
|
||||||
|
} StdVideoEncodeH264RefMgmtFlags;
|
||||||
|
|
||||||
|
typedef struct StdVideoEncodeH264RefListModEntry {
|
||||||
|
StdVideoH264ModificationOfPicNumsIdc modification_of_pic_nums_idc;
|
||||||
|
uint16_t abs_diff_pic_num_minus1;
|
||||||
|
uint16_t long_term_pic_num;
|
||||||
|
} StdVideoEncodeH264RefListModEntry;
|
||||||
|
|
||||||
|
typedef struct StdVideoEncodeH264RefPicMarkingEntry {
|
||||||
|
StdVideoH264MemMgmtControlOp operation;
|
||||||
|
uint16_t difference_of_pic_nums_minus1;
|
||||||
|
uint16_t long_term_pic_num;
|
||||||
|
uint16_t long_term_frame_idx;
|
||||||
|
uint16_t max_long_term_frame_idx_plus1;
|
||||||
|
} StdVideoEncodeH264RefPicMarkingEntry;
|
||||||
|
|
||||||
|
typedef struct StdVideoEncodeH264RefMemMgmtCtrlOperations {
|
||||||
|
StdVideoEncodeH264RefMgmtFlags flags;
|
||||||
|
uint8_t refList0ModOpCount;
|
||||||
|
StdVideoEncodeH264RefListModEntry* pRefList0ModOperations;
|
||||||
|
uint8_t refList1ModOpCount;
|
||||||
|
StdVideoEncodeH264RefListModEntry* pRefList1ModOperations;
|
||||||
|
uint8_t refPicMarkingOpCount;
|
||||||
|
StdVideoEncodeH264RefPicMarkingEntry* pRefPicMarkingOperations;
|
||||||
|
} StdVideoEncodeH264RefMemMgmtCtrlOperations;
|
||||||
|
|
||||||
|
typedef struct StdVideoEncodeH264PictureInfo {
|
||||||
|
StdVideoEncodeH264PictureInfoFlags flags;
|
||||||
|
StdVideoH264PictureType pictureType;
|
||||||
|
uint32_t frameNum;
|
||||||
|
uint32_t pictureOrderCount;
|
||||||
|
uint16_t long_term_pic_num;
|
||||||
|
uint16_t long_term_frame_idx;
|
||||||
|
} StdVideoEncodeH264PictureInfo;
|
||||||
|
|
||||||
|
typedef struct StdVideoEncodeH264SliceHeader {
|
||||||
|
StdVideoEncodeH264SliceHeaderFlags flags;
|
||||||
|
StdVideoH264SliceType slice_type;
|
||||||
|
uint8_t seq_parameter_set_id;
|
||||||
|
uint8_t pic_parameter_set_id;
|
||||||
|
uint16_t idr_pic_id;
|
||||||
|
uint8_t num_ref_idx_l0_active_minus1;
|
||||||
|
uint8_t num_ref_idx_l1_active_minus1;
|
||||||
|
StdVideoH264CabacInitIdc cabac_init_idc;
|
||||||
|
StdVideoH264DisableDeblockingFilterIdc disable_deblocking_filter_idc;
|
||||||
|
int8_t slice_alpha_c0_offset_div2;
|
||||||
|
int8_t slice_beta_offset_div2;
|
||||||
|
StdVideoEncodeH264RefMemMgmtCtrlOperations* pMemMgmtCtrlOperations;
|
||||||
|
} StdVideoEncodeH264SliceHeader;
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // VULKAN_VIDEO_CODEC_H264STD_ENCODE_H_
|
341
externals/Vulkan-Headers/include/vk_video/vulkan_video_codec_h265std.h
vendored
Executable file
341
externals/Vulkan-Headers/include/vk_video/vulkan_video_codec_h265std.h
vendored
Executable file
@ -0,0 +1,341 @@
|
|||||||
|
/*
|
||||||
|
** Copyright (c) 2019-2021 The Khronos Group Inc.
|
||||||
|
**
|
||||||
|
** SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef VULKAN_VIDEO_CODEC_H265STD_H_
|
||||||
|
#define VULKAN_VIDEO_CODEC_H265STD_H_ 1
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "vk_video/vulkan_video_codecs_common.h"
|
||||||
|
|
||||||
|
// Vulkan 0.5 version number WIP
|
||||||
|
#define VK_STD_VULKAN_VIDEO_CODEC_H265_API_VERSION_0_5 VK_MAKE_VIDEO_STD_VERSION(0, 5, 0) // Patch version should always be set to 0
|
||||||
|
|
||||||
|
// Format must be in the form XX.XX where the first two digits are the major and the second two, the minor.
|
||||||
|
#define VK_STD_VULKAN_VIDEO_CODEC_H265_SPEC_VERSION VK_STD_VULKAN_VIDEO_CODEC_H265_API_VERSION_0_5
|
||||||
|
#define VK_STD_VULKAN_VIDEO_CODEC_H265_EXTENSION_NAME "VK_STD_vulkan_video_codec_h265"
|
||||||
|
|
||||||
|
typedef enum StdVideoH265ChromaFormatIdc {
|
||||||
|
std_video_h265_chroma_format_idc_monochrome = 0,
|
||||||
|
std_video_h265_chroma_format_idc_420 = 1,
|
||||||
|
std_video_h265_chroma_format_idc_422 = 2,
|
||||||
|
std_video_h265_chroma_format_idc_444 = 3,
|
||||||
|
} StdVideoH265ChromaFormatIdc;
|
||||||
|
|
||||||
|
typedef enum StdVideoH265ProfileIdc {
|
||||||
|
std_video_h265_profile_idc_main = 1,
|
||||||
|
std_video_h265_profile_idc_main_10 = 2,
|
||||||
|
std_video_h265_profile_idc_main_still_picture = 3,
|
||||||
|
std_video_h265_profile_idc_format_range_extensions = 4,
|
||||||
|
std_video_h265_profile_idc_scc_extensions = 9,
|
||||||
|
std_video_h265_profile_idc_invalid = 0x7FFFFFFF
|
||||||
|
} StdVideoH265ProfileIdc;
|
||||||
|
|
||||||
|
typedef enum StdVideoH265Level {
|
||||||
|
std_video_h265_level_1_0 = 0,
|
||||||
|
std_video_h265_level_2_0 = 1,
|
||||||
|
std_video_h265_level_2_1 = 2,
|
||||||
|
std_video_h265_level_3_0 = 3,
|
||||||
|
std_video_h265_level_3_1 = 4,
|
||||||
|
std_video_h265_level_4_0 = 5,
|
||||||
|
std_video_h265_level_4_1 = 6,
|
||||||
|
std_video_h265_level_5_0 = 7,
|
||||||
|
std_video_h265_level_5_1 = 8,
|
||||||
|
std_video_h265_level_5_2 = 9,
|
||||||
|
std_video_h265_level_6_0 = 10,
|
||||||
|
std_video_h265_level_6_1 = 11,
|
||||||
|
std_video_h265_level_6_2 = 12,
|
||||||
|
std_video_h265_level_invalid = 0x7FFFFFFF
|
||||||
|
} StdVideoH265Level;
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct StdVideoH265DecPicBufMgr
|
||||||
|
{
|
||||||
|
uint32_t max_latency_increase_plus1[7];
|
||||||
|
uint8_t max_dec_pic_buffering_minus1[7];
|
||||||
|
uint8_t max_num_reorder_pics[7];
|
||||||
|
} StdVideoH265DecPicBufMgr;
|
||||||
|
|
||||||
|
typedef struct StdVideoH265SubLayerHrdParameters {
|
||||||
|
uint32_t bit_rate_value_minus1[32];
|
||||||
|
uint32_t cpb_size_value_minus1[32];
|
||||||
|
uint32_t cpb_size_du_value_minus1[32];
|
||||||
|
uint32_t bit_rate_du_value_minus1[32];
|
||||||
|
uint32_t cbr_flag; // each bit represents a range of CpbCounts (bit 0 - cpb_cnt_minus1) per sub-layer
|
||||||
|
} StdVideoH265SubLayerHrdParameters;
|
||||||
|
|
||||||
|
typedef struct StdVideoH265HrdFlags {
|
||||||
|
uint32_t nal_hrd_parameters_present_flag : 1;
|
||||||
|
uint32_t vcl_hrd_parameters_present_flag : 1;
|
||||||
|
uint32_t sub_pic_hrd_params_present_flag : 1;
|
||||||
|
uint32_t sub_pic_cpb_params_in_pic_timing_sei_flag : 1;
|
||||||
|
uint8_t fixed_pic_rate_general_flag; // each bit represents a sublayer, bit 0 - vps_max_sub_layers_minus1
|
||||||
|
uint8_t fixed_pic_rate_within_cvs_flag; // each bit represents a sublayer, bit 0 - vps_max_sub_layers_minus1
|
||||||
|
uint8_t low_delay_hrd_flag; // each bit represents a sublayer, bit 0 - vps_max_sub_layers_minus1
|
||||||
|
} StdVideoH265HrdFlags;
|
||||||
|
|
||||||
|
typedef struct StdVideoH265HrdParameters {
|
||||||
|
uint8_t tick_divisor_minus2;
|
||||||
|
uint8_t du_cpb_removal_delay_increment_length_minus1;
|
||||||
|
uint8_t dpb_output_delay_du_length_minus1;
|
||||||
|
uint8_t bit_rate_scale;
|
||||||
|
uint8_t cpb_size_scale;
|
||||||
|
uint8_t cpb_size_du_scale;
|
||||||
|
uint8_t initial_cpb_removal_delay_length_minus1;
|
||||||
|
uint8_t au_cpb_removal_delay_length_minus1;
|
||||||
|
uint8_t dpb_output_delay_length_minus1;
|
||||||
|
uint8_t cpb_cnt_minus1[7];
|
||||||
|
uint16_t elemental_duration_in_tc_minus1[7];
|
||||||
|
StdVideoH265SubLayerHrdParameters* SubLayerHrdParametersNal[7];
|
||||||
|
StdVideoH265SubLayerHrdParameters* SubLayerHrdParametersVcl[7];
|
||||||
|
StdVideoH265HrdFlags flags;
|
||||||
|
} StdVideoH265HrdParameters;
|
||||||
|
|
||||||
|
typedef struct StdVideoH265VpsFlags {
|
||||||
|
uint32_t vps_temporal_id_nesting_flag : 1;
|
||||||
|
uint32_t vps_sub_layer_ordering_info_present_flag : 1;
|
||||||
|
uint32_t vps_timing_info_present_flag : 1;
|
||||||
|
uint32_t vps_poc_proportional_to_timing_flag : 1;
|
||||||
|
} StdVideoH265VpsFlags;
|
||||||
|
|
||||||
|
typedef struct StdVideoH265VideoParameterSet
|
||||||
|
{
|
||||||
|
uint8_t vps_video_parameter_set_id;
|
||||||
|
uint8_t vps_max_sub_layers_minus1;
|
||||||
|
uint32_t vps_num_units_in_tick;
|
||||||
|
uint32_t vps_time_scale;
|
||||||
|
uint32_t vps_num_ticks_poc_diff_one_minus1;
|
||||||
|
StdVideoH265DecPicBufMgr* pDecPicBufMgr;
|
||||||
|
StdVideoH265HrdParameters* hrd_parameters;
|
||||||
|
StdVideoH265VpsFlags flags;
|
||||||
|
} StdVideoH265VideoParameterSet;
|
||||||
|
|
||||||
|
typedef struct StdVideoH265ScalingLists
|
||||||
|
{
|
||||||
|
uint8_t ScalingList4x4[6][16]; // ScalingList[ 0 ][ MatrixID ][ i ] (sizeID = 0)
|
||||||
|
uint8_t ScalingList8x8[6][64]; // ScalingList[ 1 ][ MatrixID ][ i ] (sizeID = 1)
|
||||||
|
uint8_t ScalingList16x16[6][64]; // ScalingList[ 2 ][ MatrixID ][ i ] (sizeID = 2)
|
||||||
|
uint8_t ScalingList32x32[2][64]; // ScalingList[ 3 ][ MatrixID ][ i ] (sizeID = 3)
|
||||||
|
uint8_t ScalingListDCCoef16x16[6]; // scaling_list_dc_coef_minus8[ sizeID - 2 ][ matrixID ] + 8, sizeID = 2
|
||||||
|
uint8_t ScalingListDCCoef32x32[2]; // scaling_list_dc_coef_minus8[ sizeID - 2 ][ matrixID ] + 8. sizeID = 3
|
||||||
|
} StdVideoH265ScalingLists;
|
||||||
|
|
||||||
|
typedef struct StdVideoH265SpsVuiFlags {
|
||||||
|
uint32_t aspect_ratio_info_present_flag : 1;
|
||||||
|
uint32_t overscan_info_present_flag : 1;
|
||||||
|
uint32_t overscan_appropriate_flag : 1;
|
||||||
|
uint32_t video_signal_type_present_flag : 1;
|
||||||
|
uint32_t video_full_range_flag : 1;
|
||||||
|
uint32_t colour_description_present_flag : 1;
|
||||||
|
uint32_t chroma_loc_info_present_flag : 1;
|
||||||
|
uint32_t neutral_chroma_indication_flag : 1;
|
||||||
|
uint32_t field_seq_flag : 1;
|
||||||
|
uint32_t frame_field_info_present_flag : 1;
|
||||||
|
uint32_t default_display_window_flag : 1;
|
||||||
|
uint32_t vui_timing_info_present_flag : 1;
|
||||||
|
uint32_t vui_poc_proportional_to_timing_flag : 1;
|
||||||
|
uint32_t vui_hrd_parameters_present_flag : 1;
|
||||||
|
uint32_t bitstream_restriction_flag : 1;
|
||||||
|
uint32_t tiles_fixed_structure_flag : 1;
|
||||||
|
uint32_t motion_vectors_over_pic_boundaries_flag : 1;
|
||||||
|
uint32_t restricted_ref_pic_lists_flag : 1;
|
||||||
|
} StdVideoH265SpsVuiFlags;
|
||||||
|
|
||||||
|
typedef struct StdVideoH265SequenceParameterSetVui {
|
||||||
|
uint8_t aspect_ratio_idc;
|
||||||
|
uint16_t sar_width;
|
||||||
|
uint16_t sar_height;
|
||||||
|
uint8_t video_format;
|
||||||
|
uint8_t colour_primaries;
|
||||||
|
uint8_t transfer_characteristics;
|
||||||
|
uint8_t matrix_coeffs;
|
||||||
|
uint8_t chroma_sample_loc_type_top_field;
|
||||||
|
uint8_t chroma_sample_loc_type_bottom_field;
|
||||||
|
uint16_t def_disp_win_left_offset;
|
||||||
|
uint16_t def_disp_win_right_offset;
|
||||||
|
uint16_t def_disp_win_top_offset;
|
||||||
|
uint16_t def_disp_win_bottom_offset;
|
||||||
|
uint32_t vui_num_units_in_tick;
|
||||||
|
uint32_t vui_time_scale;
|
||||||
|
uint32_t vui_num_ticks_poc_diff_one_minus1;
|
||||||
|
StdVideoH265HrdParameters* hrd_parameters;
|
||||||
|
uint16_t min_spatial_segmentation_idc;
|
||||||
|
uint8_t max_bytes_per_pic_denom;
|
||||||
|
uint8_t max_bits_per_min_cu_denom;
|
||||||
|
uint8_t log2_max_mv_length_horizontal;
|
||||||
|
uint8_t log2_max_mv_length_vertical;
|
||||||
|
StdVideoH265SpsVuiFlags flags;
|
||||||
|
} StdVideoH265SequenceParameterSetVui;
|
||||||
|
|
||||||
|
typedef struct StdVideoH265PredictorPaletteEntries
|
||||||
|
{
|
||||||
|
uint16_t PredictorPaletteEntries[3][128];
|
||||||
|
} StdVideoH265PredictorPaletteEntries;
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct StdVideoH265SpsFlags {
|
||||||
|
uint32_t sps_temporal_id_nesting_flag : 1;
|
||||||
|
uint32_t separate_colour_plane_flag : 1;
|
||||||
|
uint32_t scaling_list_enabled_flag : 1;
|
||||||
|
uint32_t sps_scaling_list_data_present_flag : 1;
|
||||||
|
uint32_t amp_enabled_flag : 1;
|
||||||
|
uint32_t sample_adaptive_offset_enabled_flag : 1;
|
||||||
|
uint32_t pcm_enabled_flag : 1;
|
||||||
|
uint32_t pcm_loop_filter_disabled_flag : 1;
|
||||||
|
uint32_t long_term_ref_pics_present_flag : 1;
|
||||||
|
uint32_t sps_temporal_mvp_enabled_flag : 1;
|
||||||
|
uint32_t strong_intra_smoothing_enabled_flag : 1;
|
||||||
|
uint32_t vui_parameters_present_flag : 1;
|
||||||
|
uint32_t sps_extension_present_flag : 1;
|
||||||
|
uint32_t sps_range_extension_flag : 1;
|
||||||
|
|
||||||
|
// extension SPS flags, valid when std_video_h265_profile_idc_format_range_extensions is set
|
||||||
|
uint32_t transform_skip_rotation_enabled_flag : 1;
|
||||||
|
uint32_t transform_skip_context_enabled_flag : 1;
|
||||||
|
uint32_t implicit_rdpcm_enabled_flag : 1;
|
||||||
|
uint32_t explicit_rdpcm_enabled_flag : 1;
|
||||||
|
uint32_t extended_precision_processing_flag : 1;
|
||||||
|
uint32_t intra_smoothing_disabled_flag : 1;
|
||||||
|
uint32_t high_precision_offsets_enabled_flag : 1;
|
||||||
|
uint32_t persistent_rice_adaptation_enabled_flag : 1;
|
||||||
|
uint32_t cabac_bypass_alignment_enabled_flag : 1;
|
||||||
|
|
||||||
|
// extension SPS flags, valid when std_video_h265_profile_idc_scc_extensions is set
|
||||||
|
uint32_t sps_curr_pic_ref_enabled_flag : 1;
|
||||||
|
uint32_t palette_mode_enabled_flag : 1;
|
||||||
|
uint32_t sps_palette_predictor_initializer_present_flag : 1;
|
||||||
|
uint32_t intra_boundary_filtering_disabled_flag : 1;
|
||||||
|
} StdVideoH265SpsFlags;
|
||||||
|
|
||||||
|
typedef struct StdVideoH265SequenceParameterSet
|
||||||
|
{
|
||||||
|
StdVideoH265ProfileIdc profile_idc;
|
||||||
|
StdVideoH265Level level_idc;
|
||||||
|
uint32_t pic_width_in_luma_samples;
|
||||||
|
uint32_t pic_height_in_luma_samples;
|
||||||
|
uint8_t sps_video_parameter_set_id;
|
||||||
|
uint8_t sps_max_sub_layers_minus1;
|
||||||
|
uint8_t sps_seq_parameter_set_id;
|
||||||
|
uint8_t chroma_format_idc;
|
||||||
|
uint8_t bit_depth_luma_minus8;
|
||||||
|
uint8_t bit_depth_chroma_minus8;
|
||||||
|
uint8_t log2_max_pic_order_cnt_lsb_minus4;
|
||||||
|
uint8_t sps_max_dec_pic_buffering_minus1;
|
||||||
|
uint8_t log2_min_luma_coding_block_size_minus3;
|
||||||
|
uint8_t log2_diff_max_min_luma_coding_block_size;
|
||||||
|
uint8_t log2_min_luma_transform_block_size_minus2;
|
||||||
|
uint8_t log2_diff_max_min_luma_transform_block_size;
|
||||||
|
uint8_t max_transform_hierarchy_depth_inter;
|
||||||
|
uint8_t max_transform_hierarchy_depth_intra;
|
||||||
|
uint8_t num_short_term_ref_pic_sets;
|
||||||
|
uint8_t num_long_term_ref_pics_sps;
|
||||||
|
uint8_t pcm_sample_bit_depth_luma_minus1;
|
||||||
|
uint8_t pcm_sample_bit_depth_chroma_minus1;
|
||||||
|
uint8_t log2_min_pcm_luma_coding_block_size_minus3;
|
||||||
|
uint8_t log2_diff_max_min_pcm_luma_coding_block_size;
|
||||||
|
uint32_t conf_win_left_offset;
|
||||||
|
uint32_t conf_win_right_offset;
|
||||||
|
uint32_t conf_win_top_offset;
|
||||||
|
uint32_t conf_win_bottom_offset;
|
||||||
|
StdVideoH265DecPicBufMgr* pDecPicBufMgr;
|
||||||
|
StdVideoH265SpsFlags flags;
|
||||||
|
StdVideoH265ScalingLists* pScalingLists; // Must be a valid pointer if sps_scaling_list_data_present_flag is set
|
||||||
|
StdVideoH265SequenceParameterSetVui* pSequenceParameterSetVui; // Must be a valid pointer if StdVideoH265SpsFlags:vui_parameters_present_flag is set palette_max_size;
|
||||||
|
|
||||||
|
// extension SPS flags, valid when std_video_h265_profile_idc_scc_extensions is set
|
||||||
|
uint8_t palette_max_size;
|
||||||
|
uint8_t delta_palette_max_predictor_size;
|
||||||
|
uint8_t motion_vector_resolution_control_idc;
|
||||||
|
uint8_t sps_num_palette_predictor_initializer_minus1;
|
||||||
|
StdVideoH265PredictorPaletteEntries* pPredictorPaletteEntries; // Must be a valid pointer if sps_palette_predictor_initializer_present_flag is set
|
||||||
|
} StdVideoH265SequenceParameterSet;
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct StdVideoH265PpsFlags {
|
||||||
|
uint32_t dependent_slice_segments_enabled_flag : 1;
|
||||||
|
uint32_t output_flag_present_flag : 1;
|
||||||
|
uint32_t sign_data_hiding_enabled_flag : 1;
|
||||||
|
uint32_t cabac_init_present_flag : 1;
|
||||||
|
uint32_t constrained_intra_pred_flag : 1;
|
||||||
|
uint32_t transform_skip_enabled_flag : 1;
|
||||||
|
uint32_t cu_qp_delta_enabled_flag : 1;
|
||||||
|
uint32_t pps_slice_chroma_qp_offsets_present_flag : 1;
|
||||||
|
uint32_t weighted_pred_flag : 1;
|
||||||
|
uint32_t weighted_bipred_flag : 1;
|
||||||
|
uint32_t transquant_bypass_enabled_flag : 1;
|
||||||
|
uint32_t tiles_enabled_flag : 1;
|
||||||
|
uint32_t entropy_coding_sync_enabled_flag : 1;
|
||||||
|
uint32_t uniform_spacing_flag : 1;
|
||||||
|
uint32_t loop_filter_across_tiles_enabled_flag : 1;
|
||||||
|
uint32_t pps_loop_filter_across_slices_enabled_flag : 1;
|
||||||
|
uint32_t deblocking_filter_control_present_flag : 1;
|
||||||
|
uint32_t deblocking_filter_override_enabled_flag : 1;
|
||||||
|
uint32_t pps_deblocking_filter_disabled_flag : 1;
|
||||||
|
uint32_t pps_scaling_list_data_present_flag : 1;
|
||||||
|
uint32_t lists_modification_present_flag : 1;
|
||||||
|
uint32_t slice_segment_header_extension_present_flag : 1;
|
||||||
|
uint32_t pps_extension_present_flag : 1;
|
||||||
|
|
||||||
|
// extension PPS flags, valid when std_video_h265_profile_idc_format_range_extensions is set
|
||||||
|
uint32_t cross_component_prediction_enabled_flag : 1;
|
||||||
|
uint32_t chroma_qp_offset_list_enabled_flag : 1;
|
||||||
|
|
||||||
|
// extension PPS flags, valid when std_video_h265_profile_idc_scc_extensions is set
|
||||||
|
uint32_t pps_curr_pic_ref_enabled_flag : 1;
|
||||||
|
uint32_t residual_adaptive_colour_transform_enabled_flag : 1;
|
||||||
|
uint32_t pps_slice_act_qp_offsets_present_flag : 1;
|
||||||
|
uint32_t pps_palette_predictor_initializer_present_flag : 1;
|
||||||
|
uint32_t monochrome_palette_flag : 1;
|
||||||
|
uint32_t pps_range_extension_flag : 1;
|
||||||
|
} StdVideoH265PpsFlags;
|
||||||
|
|
||||||
|
typedef struct StdVideoH265PictureParameterSet
|
||||||
|
{
|
||||||
|
uint8_t pps_pic_parameter_set_id;
|
||||||
|
uint8_t pps_seq_parameter_set_id;
|
||||||
|
uint8_t num_extra_slice_header_bits;
|
||||||
|
uint8_t num_ref_idx_l0_default_active_minus1;
|
||||||
|
uint8_t num_ref_idx_l1_default_active_minus1;
|
||||||
|
int8_t init_qp_minus26;
|
||||||
|
uint8_t diff_cu_qp_delta_depth;
|
||||||
|
int8_t pps_cb_qp_offset;
|
||||||
|
int8_t pps_cr_qp_offset;
|
||||||
|
uint8_t num_tile_columns_minus1;
|
||||||
|
uint8_t num_tile_rows_minus1;
|
||||||
|
uint16_t column_width_minus1[19];
|
||||||
|
uint16_t row_height_minus1[21];
|
||||||
|
int8_t pps_beta_offset_div2;
|
||||||
|
int8_t pps_tc_offset_div2;
|
||||||
|
uint8_t log2_parallel_merge_level_minus2;
|
||||||
|
StdVideoH265PpsFlags flags;
|
||||||
|
StdVideoH265ScalingLists* pScalingLists; // Must be a valid pointer if pps_scaling_list_data_present_flag is set
|
||||||
|
|
||||||
|
// extension PPS, valid when std_video_h265_profile_idc_format_range_extensions is set
|
||||||
|
uint8_t log2_max_transform_skip_block_size_minus2;
|
||||||
|
uint8_t diff_cu_chroma_qp_offset_depth;
|
||||||
|
uint8_t chroma_qp_offset_list_len_minus1;
|
||||||
|
int8_t cb_qp_offset_list[6];
|
||||||
|
int8_t cr_qp_offset_list[6];
|
||||||
|
uint8_t log2_sao_offset_scale_luma;
|
||||||
|
uint8_t log2_sao_offset_scale_chroma;
|
||||||
|
|
||||||
|
// extension PPS, valid when std_video_h265_profile_idc_scc_extensions is set
|
||||||
|
int8_t pps_act_y_qp_offset_plus5;
|
||||||
|
int8_t pps_act_cb_qp_offset_plus5;
|
||||||
|
int8_t pps_act_cr_qp_offset_plus5;
|
||||||
|
uint8_t pps_num_palette_predictor_initializer;
|
||||||
|
uint8_t luma_bit_depth_entry_minus8;
|
||||||
|
uint8_t chroma_bit_depth_entry_minus8;
|
||||||
|
StdVideoH265PredictorPaletteEntries* pPredictorPaletteEntries; // Must be a valid pointer if pps_palette_predictor_initializer_present_flag is set
|
||||||
|
} StdVideoH265PictureParameterSet;
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // VULKAN_VIDEO_CODEC_H265STD_H_
|
59
externals/Vulkan-Headers/include/vk_video/vulkan_video_codec_h265std_decode.h
vendored
Executable file
59
externals/Vulkan-Headers/include/vk_video/vulkan_video_codec_h265std_decode.h
vendored
Executable file
@ -0,0 +1,59 @@
|
|||||||
|
/*
|
||||||
|
** Copyright (c) 2019-2021 The Khronos Group Inc.
|
||||||
|
**
|
||||||
|
** SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef VULKAN_VIDEO_CODEC_H265STD_DECODE_H_
|
||||||
|
#define VULKAN_VIDEO_CODEC_H265STD_DECODE_H_ 1
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "vk_video/vulkan_video_codec_h265std.h"
|
||||||
|
|
||||||
|
// *************************************************
|
||||||
|
// Video h265 Decode related parameters:
|
||||||
|
// *************************************************
|
||||||
|
|
||||||
|
typedef struct StdVideoDecodeH265PictureInfoFlags {
|
||||||
|
uint32_t IrapPicFlag : 1;
|
||||||
|
uint32_t IdrPicFlag : 1;
|
||||||
|
uint32_t IsReference : 1;
|
||||||
|
uint32_t short_term_ref_pic_set_sps_flag : 1;
|
||||||
|
} StdVideoDecodeH265PictureInfoFlags;
|
||||||
|
|
||||||
|
typedef struct StdVideoDecodeH265PictureInfo {
|
||||||
|
uint8_t vps_video_parameter_set_id;
|
||||||
|
uint8_t sps_seq_parameter_set_id;
|
||||||
|
uint8_t pps_pic_parameter_set_id;
|
||||||
|
uint8_t num_short_term_ref_pic_sets;
|
||||||
|
int32_t PicOrderCntVal;
|
||||||
|
uint16_t NumBitsForSTRefPicSetInSlice; // number of bits used in st_ref_pic_set()
|
||||||
|
//when short_term_ref_pic_set_sps_flag is 0; otherwise set to 0.
|
||||||
|
uint8_t NumDeltaPocsOfRefRpsIdx; // NumDeltaPocs[ RefRpsIdx ] when short_term_ref_pic_set_sps_flag = 1, otherwise 0
|
||||||
|
uint8_t RefPicSetStCurrBefore[8]; // slotIndex as used in VkVideoReferenceSlotKHR structures representing
|
||||||
|
//pReferenceSlots in VkVideoDecodeInfoKHR, 0xff for invalid slotIndex
|
||||||
|
uint8_t RefPicSetStCurrAfter[8]; // slotIndex as used in VkVideoReferenceSlotKHR structures representing
|
||||||
|
//pReferenceSlots in VkVideoDecodeInfoKHR, 0xff for invalid slotIndex
|
||||||
|
uint8_t RefPicSetLtCurr[8]; // slotIndex as used in VkVideoReferenceSlotKHR structures representing
|
||||||
|
//pReferenceSlots in VkVideoDecodeInfoKHR, 0xff for invalid slotIndex
|
||||||
|
StdVideoDecodeH265PictureInfoFlags flags;
|
||||||
|
} StdVideoDecodeH265PictureInfo;
|
||||||
|
|
||||||
|
typedef struct StdVideoDecodeH265ReferenceInfoFlags {
|
||||||
|
uint32_t is_long_term : 1;
|
||||||
|
uint32_t is_non_existing : 1;
|
||||||
|
} StdVideoDecodeH265ReferenceInfoFlags;
|
||||||
|
|
||||||
|
typedef struct StdVideoDecodeH265ReferenceInfo {
|
||||||
|
int32_t PicOrderCntVal;
|
||||||
|
StdVideoDecodeH265ReferenceInfoFlags flags;
|
||||||
|
} StdVideoDecodeH265ReferenceInfo;
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // VULKAN_VIDEO_CODEC_H265STD_DECODE_H_
|
21
externals/Vulkan-Headers/include/vk_video/vulkan_video_codecs_common.h
vendored
Executable file
21
externals/Vulkan-Headers/include/vk_video/vulkan_video_codecs_common.h
vendored
Executable file
@ -0,0 +1,21 @@
|
|||||||
|
/*
|
||||||
|
** Copyright (c) 2019-2021 The Khronos Group Inc.
|
||||||
|
**
|
||||||
|
** SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef VULKAN_VIDEO_CODEC_COMMON_H_
|
||||||
|
#define VULKAN_VIDEO_CODEC_COMMON_H_ 1
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define VK_MAKE_VIDEO_STD_VERSION(major, minor, patch) \
|
||||||
|
((((uint32_t)(major)) << 22) | (((uint32_t)(minor)) << 12) | ((uint32_t)(patch)))
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // VULKAN_VIDEO_CODEC_COMMON_H_
|
66
externals/Vulkan-Headers/include/vulkan/vk_icd.h
vendored
66
externals/Vulkan-Headers/include/vulkan/vk_icd.h
vendored
@ -41,17 +41,45 @@
|
|||||||
// that if the loader is older, it should automatically fail a
|
// that if the loader is older, it should automatically fail a
|
||||||
// call for any API version > 1.0. Otherwise, the loader will
|
// call for any API version > 1.0. Otherwise, the loader will
|
||||||
// manually determine if it can support the expected version.
|
// manually determine if it can support the expected version.
|
||||||
#define CURRENT_LOADER_ICD_INTERFACE_VERSION 5
|
// Version 6 - Add support for vk_icdEnumerateAdapterPhysicalDevices.
|
||||||
|
#define CURRENT_LOADER_ICD_INTERFACE_VERSION 6
|
||||||
#define MIN_SUPPORTED_LOADER_ICD_INTERFACE_VERSION 0
|
#define MIN_SUPPORTED_LOADER_ICD_INTERFACE_VERSION 0
|
||||||
#define MIN_PHYS_DEV_EXTENSION_ICD_INTERFACE_VERSION 4
|
#define MIN_PHYS_DEV_EXTENSION_ICD_INTERFACE_VERSION 4
|
||||||
typedef VkResult(VKAPI_PTR *PFN_vkNegotiateLoaderICDInterfaceVersion)(uint32_t *pVersion);
|
|
||||||
|
|
||||||
|
// Old typedefs that don't follow a proper naming convention but are preserved for compatibility
|
||||||
|
typedef VkResult(VKAPI_PTR *PFN_vkNegotiateLoaderICDInterfaceVersion)(uint32_t *pVersion);
|
||||||
// This is defined in vk_layer.h which will be found by the loader, but if an ICD is building against this
|
// This is defined in vk_layer.h which will be found by the loader, but if an ICD is building against this
|
||||||
// file directly, it won't be found.
|
// file directly, it won't be found.
|
||||||
#ifndef PFN_GetPhysicalDeviceProcAddr
|
#ifndef PFN_GetPhysicalDeviceProcAddr
|
||||||
typedef PFN_vkVoidFunction(VKAPI_PTR *PFN_GetPhysicalDeviceProcAddr)(VkInstance instance, const char *pName);
|
typedef PFN_vkVoidFunction(VKAPI_PTR *PFN_GetPhysicalDeviceProcAddr)(VkInstance instance, const char *pName);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// Typedefs for loader/ICD interface
|
||||||
|
typedef VkResult (VKAPI_PTR *PFN_vk_icdNegotiateLoaderICDInterfaceVersion)(uint32_t* pVersion);
|
||||||
|
typedef PFN_vkVoidFunction (VKAPI_PTR *PFN_vk_icdGetInstanceProcAddr)(VkInstance instance, const char* pName);
|
||||||
|
typedef PFN_vkVoidFunction (VKAPI_PTR *PFN_vk_icdGetPhysicalDeviceProcAddr)(VkInstance instance, const char* pName);
|
||||||
|
#if defined(VK_USE_PLATFORM_WIN32_KHR)
|
||||||
|
typedef VkResult (VKAPI_PTR *PFN_vk_icdEnumerateAdapterPhysicalDevices)(VkInstance instance, LUID adapterLUID,
|
||||||
|
uint32_t* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Prototypes for loader/ICD interface
|
||||||
|
#if !defined(VK_NO_PROTOTYPES)
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
VKAPI_ATTR VkResult VKAPI_CALL vk_icdNegotiateLoaderICDInterfaceVersion(uint32_t* pVersion);
|
||||||
|
VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vk_icdGetInstanceProcAddr(VkInstance instance, const char* pName);
|
||||||
|
VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vk_icdGetPhysicalDeviceProcAddr(VkInstance isntance, const char* pName);
|
||||||
|
#if defined(VK_USE_PLATFORM_WIN32_KHR)
|
||||||
|
VKAPI_ATTR VkResult VKAPI_CALL vk_icdEnumerateAdapterPhysicalDevices(VkInstance instance, LUID adapterLUID,
|
||||||
|
uint32_t* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices);
|
||||||
|
#endif
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The ICD must reserve space for a pointer for the loader's dispatch
|
* The ICD must reserve space for a pointer for the loader's dispatch
|
||||||
* table, at the start of <each object>.
|
* table, at the start of <each object>.
|
||||||
@ -91,6 +119,10 @@ typedef enum {
|
|||||||
VK_ICD_WSI_PLATFORM_DISPLAY,
|
VK_ICD_WSI_PLATFORM_DISPLAY,
|
||||||
VK_ICD_WSI_PLATFORM_HEADLESS,
|
VK_ICD_WSI_PLATFORM_HEADLESS,
|
||||||
VK_ICD_WSI_PLATFORM_METAL,
|
VK_ICD_WSI_PLATFORM_METAL,
|
||||||
|
VK_ICD_WSI_PLATFORM_DIRECTFB,
|
||||||
|
VK_ICD_WSI_PLATFORM_VI,
|
||||||
|
VK_ICD_WSI_PLATFORM_GGP,
|
||||||
|
VK_ICD_WSI_PLATFORM_SCREEN,
|
||||||
} VkIcdWsiPlatform;
|
} VkIcdWsiPlatform;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
@ -137,6 +169,14 @@ typedef struct {
|
|||||||
} VkIcdSurfaceXlib;
|
} VkIcdSurfaceXlib;
|
||||||
#endif // VK_USE_PLATFORM_XLIB_KHR
|
#endif // VK_USE_PLATFORM_XLIB_KHR
|
||||||
|
|
||||||
|
#ifdef VK_USE_PLATFORM_DIRECTFB_EXT
|
||||||
|
typedef struct {
|
||||||
|
VkIcdSurfaceBase base;
|
||||||
|
IDirectFB *dfb;
|
||||||
|
IDirectFBSurface *surface;
|
||||||
|
} VkIcdSurfaceDirectFB;
|
||||||
|
#endif // VK_USE_PLATFORM_DIRECTFB_EXT
|
||||||
|
|
||||||
#ifdef VK_USE_PLATFORM_ANDROID_KHR
|
#ifdef VK_USE_PLATFORM_ANDROID_KHR
|
||||||
typedef struct {
|
typedef struct {
|
||||||
VkIcdSurfaceBase base;
|
VkIcdSurfaceBase base;
|
||||||
@ -158,6 +198,13 @@ typedef struct {
|
|||||||
} VkIcdSurfaceIOS;
|
} VkIcdSurfaceIOS;
|
||||||
#endif // VK_USE_PLATFORM_IOS_MVK
|
#endif // VK_USE_PLATFORM_IOS_MVK
|
||||||
|
|
||||||
|
#ifdef VK_USE_PLATFORM_GGP
|
||||||
|
typedef struct {
|
||||||
|
VkIcdSurfaceBase base;
|
||||||
|
GgpStreamDescriptor streamDescriptor;
|
||||||
|
} VkIcdSurfaceGgp;
|
||||||
|
#endif // VK_USE_PLATFORM_GGP
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
VkIcdSurfaceBase base;
|
VkIcdSurfaceBase base;
|
||||||
VkDisplayModeKHR displayMode;
|
VkDisplayModeKHR displayMode;
|
||||||
@ -180,4 +227,19 @@ typedef struct {
|
|||||||
} VkIcdSurfaceMetal;
|
} VkIcdSurfaceMetal;
|
||||||
#endif // VK_USE_PLATFORM_METAL_EXT
|
#endif // VK_USE_PLATFORM_METAL_EXT
|
||||||
|
|
||||||
|
#ifdef VK_USE_PLATFORM_VI_NN
|
||||||
|
typedef struct {
|
||||||
|
VkIcdSurfaceBase base;
|
||||||
|
void *window;
|
||||||
|
} VkIcdSurfaceVi;
|
||||||
|
#endif // VK_USE_PLATFORM_VI_NN
|
||||||
|
|
||||||
|
#ifdef VK_USE_PLATFORM_SCREEN_QNX
|
||||||
|
typedef struct {
|
||||||
|
VkIcdSurfaceBase base;
|
||||||
|
struct _screen_context *context;
|
||||||
|
struct _screen_window *window;
|
||||||
|
} VkIcdSurfaceScreen;
|
||||||
|
#endif // VK_USE_PLATFORM_SCREEN_QNX
|
||||||
|
|
||||||
#endif // VKICD_H
|
#endif // VKICD_H
|
||||||
|
@ -83,7 +83,8 @@ typedef VkResult(VKAPI_PTR *PFN_PhysDevExt)(VkPhysicalDevice phys_device);
|
|||||||
typedef enum VkLayerFunction_ {
|
typedef enum VkLayerFunction_ {
|
||||||
VK_LAYER_LINK_INFO = 0,
|
VK_LAYER_LINK_INFO = 0,
|
||||||
VK_LOADER_DATA_CALLBACK = 1,
|
VK_LOADER_DATA_CALLBACK = 1,
|
||||||
VK_LOADER_LAYER_CREATE_DEVICE_CALLBACK = 2
|
VK_LOADER_LAYER_CREATE_DEVICE_CALLBACK = 2,
|
||||||
|
VK_LOADER_FEATURES = 3,
|
||||||
} VkLayerFunction;
|
} VkLayerFunction;
|
||||||
|
|
||||||
typedef struct VkLayerInstanceLink_ {
|
typedef struct VkLayerInstanceLink_ {
|
||||||
@ -111,6 +112,12 @@ typedef VkResult (VKAPI_PTR *PFN_vkSetDeviceLoaderData)(VkDevice device,
|
|||||||
typedef VkResult (VKAPI_PTR *PFN_vkLayerCreateDevice)(VkInstance instance, VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo *pCreateInfo,
|
typedef VkResult (VKAPI_PTR *PFN_vkLayerCreateDevice)(VkInstance instance, VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo *pCreateInfo,
|
||||||
const VkAllocationCallbacks *pAllocator, VkDevice *pDevice, PFN_vkGetInstanceProcAddr layerGIPA, PFN_vkGetDeviceProcAddr *nextGDPA);
|
const VkAllocationCallbacks *pAllocator, VkDevice *pDevice, PFN_vkGetInstanceProcAddr layerGIPA, PFN_vkGetDeviceProcAddr *nextGDPA);
|
||||||
typedef void (VKAPI_PTR *PFN_vkLayerDestroyDevice)(VkDevice physicalDevice, const VkAllocationCallbacks *pAllocator, PFN_vkDestroyDevice destroyFunction);
|
typedef void (VKAPI_PTR *PFN_vkLayerDestroyDevice)(VkDevice physicalDevice, const VkAllocationCallbacks *pAllocator, PFN_vkDestroyDevice destroyFunction);
|
||||||
|
|
||||||
|
typedef enum VkLoaderFeastureFlagBits {
|
||||||
|
VK_LOADER_FEATURE_PHYSICAL_DEVICE_SORTING = 0x00000001,
|
||||||
|
} VkLoaderFlagBits;
|
||||||
|
typedef VkFlags VkLoaderFeatureFlags;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
VkStructureType sType; // VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO
|
VkStructureType sType; // VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO
|
||||||
const void *pNext;
|
const void *pNext;
|
||||||
@ -119,9 +126,10 @@ typedef struct {
|
|||||||
VkLayerInstanceLink *pLayerInfo;
|
VkLayerInstanceLink *pLayerInfo;
|
||||||
PFN_vkSetInstanceLoaderData pfnSetInstanceLoaderData;
|
PFN_vkSetInstanceLoaderData pfnSetInstanceLoaderData;
|
||||||
struct {
|
struct {
|
||||||
PFN_vkLayerCreateDevice pfnLayerCreateDevice;
|
PFN_vkLayerCreateDevice pfnLayerCreateDevice;
|
||||||
PFN_vkLayerDestroyDevice pfnLayerDestroyDevice;
|
PFN_vkLayerDestroyDevice pfnLayerDestroyDevice;
|
||||||
} layerDevice;
|
} layerDevice;
|
||||||
|
VkLoaderFeatureFlags loaderFeatures;
|
||||||
} u;
|
} u;
|
||||||
} VkLayerInstanceCreateInfo;
|
} VkLayerInstanceCreateInfo;
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
// File: vk_platform.h
|
// File: vk_platform.h
|
||||||
//
|
//
|
||||||
/*
|
/*
|
||||||
** Copyright (c) 2014-2020 The Khronos Group Inc.
|
** Copyright 2014-2021 The Khronos Group Inc.
|
||||||
**
|
**
|
||||||
** SPDX-License-Identifier: Apache-2.0
|
** SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
@ -58,7 +58,9 @@ extern "C"
|
|||||||
#define VKAPI_PTR
|
#define VKAPI_PTR
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <stddef.h>
|
#if !defined(VK_NO_STDDEF_H)
|
||||||
|
#include <stddef.h>
|
||||||
|
#endif // !defined(VK_NO_STDDEF_H)
|
||||||
|
|
||||||
#if !defined(VK_NO_STDINT_H)
|
#if !defined(VK_NO_STDINT_H)
|
||||||
#if defined(_MSC_VER) && (_MSC_VER < 1600)
|
#if defined(_MSC_VER) && (_MSC_VER < 1600)
|
||||||
|
14
externals/Vulkan-Headers/include/vulkan/vulkan.h
vendored
14
externals/Vulkan-Headers/include/vulkan/vulkan.h
vendored
@ -2,7 +2,7 @@
|
|||||||
#define VULKAN_H_ 1
|
#define VULKAN_H_ 1
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Copyright (c) 2015-2020 The Khronos Group Inc.
|
** Copyright 2015-2021 The Khronos Group Inc.
|
||||||
**
|
**
|
||||||
** SPDX-License-Identifier: Apache-2.0
|
** SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
@ -61,6 +61,12 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef VK_USE_PLATFORM_DIRECTFB_EXT
|
||||||
|
#include <directfb.h>
|
||||||
|
#include "vulkan_directfb.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
|
#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
|
||||||
#include <X11/Xlib.h>
|
#include <X11/Xlib.h>
|
||||||
#include <X11/extensions/Xrandr.h>
|
#include <X11/extensions/Xrandr.h>
|
||||||
@ -74,6 +80,12 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef VK_USE_PLATFORM_SCREEN_QNX
|
||||||
|
#include <screen/screen.h>
|
||||||
|
#include "vulkan_screen.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#ifdef VK_ENABLE_BETA_EXTENSIONS
|
#ifdef VK_ENABLE_BETA_EXTENSIONS
|
||||||
#include "vulkan_beta.h"
|
#include "vulkan_beta.h"
|
||||||
#endif
|
#endif
|
||||||
|
172042
externals/Vulkan-Headers/include/vulkan/vulkan.hpp
vendored
172042
externals/Vulkan-Headers/include/vulkan/vulkan.hpp
vendored
File diff suppressed because it is too large
Load Diff
@ -2,7 +2,7 @@
|
|||||||
#define VULKAN_ANDROID_H_ 1
|
#define VULKAN_ANDROID_H_ 1
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Copyright (c) 2015-2020 The Khronos Group Inc.
|
** Copyright 2015-2021 The Khronos Group Inc.
|
||||||
**
|
**
|
||||||
** SPDX-License-Identifier: Apache-2.0
|
** SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
|
1030
externals/Vulkan-Headers/include/vulkan/vulkan_beta.h
vendored
1030
externals/Vulkan-Headers/include/vulkan/vulkan_beta.h
vendored
File diff suppressed because it is too large
Load Diff
2132
externals/Vulkan-Headers/include/vulkan/vulkan_core.h
vendored
2132
externals/Vulkan-Headers/include/vulkan/vulkan_core.h
vendored
File diff suppressed because it is too large
Load Diff
54
externals/Vulkan-Headers/include/vulkan/vulkan_directfb.h
vendored
Executable file
54
externals/Vulkan-Headers/include/vulkan/vulkan_directfb.h
vendored
Executable file
@ -0,0 +1,54 @@
|
|||||||
|
#ifndef VULKAN_DIRECTFB_H_
|
||||||
|
#define VULKAN_DIRECTFB_H_ 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
** Copyright 2015-2021 The Khronos Group Inc.
|
||||||
|
**
|
||||||
|
** SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
** This header is generated from the Khronos Vulkan XML API Registry.
|
||||||
|
**
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define VK_EXT_directfb_surface 1
|
||||||
|
#define VK_EXT_DIRECTFB_SURFACE_SPEC_VERSION 1
|
||||||
|
#define VK_EXT_DIRECTFB_SURFACE_EXTENSION_NAME "VK_EXT_directfb_surface"
|
||||||
|
typedef VkFlags VkDirectFBSurfaceCreateFlagsEXT;
|
||||||
|
typedef struct VkDirectFBSurfaceCreateInfoEXT {
|
||||||
|
VkStructureType sType;
|
||||||
|
const void* pNext;
|
||||||
|
VkDirectFBSurfaceCreateFlagsEXT flags;
|
||||||
|
IDirectFB* dfb;
|
||||||
|
IDirectFBSurface* surface;
|
||||||
|
} VkDirectFBSurfaceCreateInfoEXT;
|
||||||
|
|
||||||
|
typedef VkResult (VKAPI_PTR *PFN_vkCreateDirectFBSurfaceEXT)(VkInstance instance, const VkDirectFBSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
|
||||||
|
typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, IDirectFB* dfb);
|
||||||
|
|
||||||
|
#ifndef VK_NO_PROTOTYPES
|
||||||
|
VKAPI_ATTR VkResult VKAPI_CALL vkCreateDirectFBSurfaceEXT(
|
||||||
|
VkInstance instance,
|
||||||
|
const VkDirectFBSurfaceCreateInfoEXT* pCreateInfo,
|
||||||
|
const VkAllocationCallbacks* pAllocator,
|
||||||
|
VkSurfaceKHR* pSurface);
|
||||||
|
|
||||||
|
VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceDirectFBPresentationSupportEXT(
|
||||||
|
VkPhysicalDevice physicalDevice,
|
||||||
|
uint32_t queueFamilyIndex,
|
||||||
|
IDirectFB* dfb);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
@ -2,7 +2,7 @@
|
|||||||
#define VULKAN_FUCHSIA_H_ 1
|
#define VULKAN_FUCHSIA_H_ 1
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Copyright (c) 2015-2020 The Khronos Group Inc.
|
** Copyright 2015-2021 The Khronos Group Inc.
|
||||||
**
|
**
|
||||||
** SPDX-License-Identifier: Apache-2.0
|
** SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
@ -40,6 +40,80 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateImagePipeSurfaceFUCHSIA(
|
|||||||
VkSurfaceKHR* pSurface);
|
VkSurfaceKHR* pSurface);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#define VK_FUCHSIA_external_memory 1
|
||||||
|
#define VK_FUCHSIA_EXTERNAL_MEMORY_SPEC_VERSION 1
|
||||||
|
#define VK_FUCHSIA_EXTERNAL_MEMORY_EXTENSION_NAME "VK_FUCHSIA_external_memory"
|
||||||
|
typedef struct VkImportMemoryZirconHandleInfoFUCHSIA {
|
||||||
|
VkStructureType sType;
|
||||||
|
const void* pNext;
|
||||||
|
VkExternalMemoryHandleTypeFlagBits handleType;
|
||||||
|
zx_handle_t handle;
|
||||||
|
} VkImportMemoryZirconHandleInfoFUCHSIA;
|
||||||
|
|
||||||
|
typedef struct VkMemoryZirconHandlePropertiesFUCHSIA {
|
||||||
|
VkStructureType sType;
|
||||||
|
void* pNext;
|
||||||
|
uint32_t memoryTypeBits;
|
||||||
|
} VkMemoryZirconHandlePropertiesFUCHSIA;
|
||||||
|
|
||||||
|
typedef struct VkMemoryGetZirconHandleInfoFUCHSIA {
|
||||||
|
VkStructureType sType;
|
||||||
|
const void* pNext;
|
||||||
|
VkDeviceMemory memory;
|
||||||
|
VkExternalMemoryHandleTypeFlagBits handleType;
|
||||||
|
} VkMemoryGetZirconHandleInfoFUCHSIA;
|
||||||
|
|
||||||
|
typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryZirconHandleFUCHSIA)(VkDevice device, const VkMemoryGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo, zx_handle_t* pZirconHandle);
|
||||||
|
typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryZirconHandlePropertiesFUCHSIA)(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, zx_handle_t zirconHandle, VkMemoryZirconHandlePropertiesFUCHSIA* pMemoryZirconHandleProperties);
|
||||||
|
|
||||||
|
#ifndef VK_NO_PROTOTYPES
|
||||||
|
VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryZirconHandleFUCHSIA(
|
||||||
|
VkDevice device,
|
||||||
|
const VkMemoryGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo,
|
||||||
|
zx_handle_t* pZirconHandle);
|
||||||
|
|
||||||
|
VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryZirconHandlePropertiesFUCHSIA(
|
||||||
|
VkDevice device,
|
||||||
|
VkExternalMemoryHandleTypeFlagBits handleType,
|
||||||
|
zx_handle_t zirconHandle,
|
||||||
|
VkMemoryZirconHandlePropertiesFUCHSIA* pMemoryZirconHandleProperties);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#define VK_FUCHSIA_external_semaphore 1
|
||||||
|
#define VK_FUCHSIA_EXTERNAL_SEMAPHORE_SPEC_VERSION 1
|
||||||
|
#define VK_FUCHSIA_EXTERNAL_SEMAPHORE_EXTENSION_NAME "VK_FUCHSIA_external_semaphore"
|
||||||
|
typedef struct VkImportSemaphoreZirconHandleInfoFUCHSIA {
|
||||||
|
VkStructureType sType;
|
||||||
|
const void* pNext;
|
||||||
|
VkSemaphore semaphore;
|
||||||
|
VkSemaphoreImportFlags flags;
|
||||||
|
VkExternalSemaphoreHandleTypeFlagBits handleType;
|
||||||
|
zx_handle_t zirconHandle;
|
||||||
|
} VkImportSemaphoreZirconHandleInfoFUCHSIA;
|
||||||
|
|
||||||
|
typedef struct VkSemaphoreGetZirconHandleInfoFUCHSIA {
|
||||||
|
VkStructureType sType;
|
||||||
|
const void* pNext;
|
||||||
|
VkSemaphore semaphore;
|
||||||
|
VkExternalSemaphoreHandleTypeFlagBits handleType;
|
||||||
|
} VkSemaphoreGetZirconHandleInfoFUCHSIA;
|
||||||
|
|
||||||
|
typedef VkResult (VKAPI_PTR *PFN_vkImportSemaphoreZirconHandleFUCHSIA)(VkDevice device, const VkImportSemaphoreZirconHandleInfoFUCHSIA* pImportSemaphoreZirconHandleInfo);
|
||||||
|
typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreZirconHandleFUCHSIA)(VkDevice device, const VkSemaphoreGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo, zx_handle_t* pZirconHandle);
|
||||||
|
|
||||||
|
#ifndef VK_NO_PROTOTYPES
|
||||||
|
VKAPI_ATTR VkResult VKAPI_CALL vkImportSemaphoreZirconHandleFUCHSIA(
|
||||||
|
VkDevice device,
|
||||||
|
const VkImportSemaphoreZirconHandleInfoFUCHSIA* pImportSemaphoreZirconHandleInfo);
|
||||||
|
|
||||||
|
VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreZirconHandleFUCHSIA(
|
||||||
|
VkDevice device,
|
||||||
|
const VkSemaphoreGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo,
|
||||||
|
zx_handle_t* pZirconHandle);
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#define VULKAN_GGP_H_ 1
|
#define VULKAN_GGP_H_ 1
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Copyright (c) 2015-2020 The Khronos Group Inc.
|
** Copyright 2015-2021 The Khronos Group Inc.
|
||||||
**
|
**
|
||||||
** SPDX-License-Identifier: Apache-2.0
|
** SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#define VULKAN_IOS_H_ 1
|
#define VULKAN_IOS_H_ 1
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Copyright (c) 2015-2020 The Khronos Group Inc.
|
** Copyright 2015-2021 The Khronos Group Inc.
|
||||||
**
|
**
|
||||||
** SPDX-License-Identifier: Apache-2.0
|
** SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
@ -20,7 +20,7 @@ extern "C" {
|
|||||||
|
|
||||||
|
|
||||||
#define VK_MVK_ios_surface 1
|
#define VK_MVK_ios_surface 1
|
||||||
#define VK_MVK_IOS_SURFACE_SPEC_VERSION 2
|
#define VK_MVK_IOS_SURFACE_SPEC_VERSION 3
|
||||||
#define VK_MVK_IOS_SURFACE_EXTENSION_NAME "VK_MVK_ios_surface"
|
#define VK_MVK_IOS_SURFACE_EXTENSION_NAME "VK_MVK_ios_surface"
|
||||||
typedef VkFlags VkIOSSurfaceCreateFlagsMVK;
|
typedef VkFlags VkIOSSurfaceCreateFlagsMVK;
|
||||||
typedef struct VkIOSSurfaceCreateInfoMVK {
|
typedef struct VkIOSSurfaceCreateInfoMVK {
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#define VULKAN_MACOS_H_ 1
|
#define VULKAN_MACOS_H_ 1
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Copyright (c) 2015-2020 The Khronos Group Inc.
|
** Copyright 2015-2021 The Khronos Group Inc.
|
||||||
**
|
**
|
||||||
** SPDX-License-Identifier: Apache-2.0
|
** SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
@ -20,7 +20,7 @@ extern "C" {
|
|||||||
|
|
||||||
|
|
||||||
#define VK_MVK_macos_surface 1
|
#define VK_MVK_macos_surface 1
|
||||||
#define VK_MVK_MACOS_SURFACE_SPEC_VERSION 2
|
#define VK_MVK_MACOS_SURFACE_SPEC_VERSION 3
|
||||||
#define VK_MVK_MACOS_SURFACE_EXTENSION_NAME "VK_MVK_macos_surface"
|
#define VK_MVK_MACOS_SURFACE_EXTENSION_NAME "VK_MVK_macos_surface"
|
||||||
typedef VkFlags VkMacOSSurfaceCreateFlagsMVK;
|
typedef VkFlags VkMacOSSurfaceCreateFlagsMVK;
|
||||||
typedef struct VkMacOSSurfaceCreateInfoMVK {
|
typedef struct VkMacOSSurfaceCreateInfoMVK {
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#define VULKAN_METAL_H_ 1
|
#define VULKAN_METAL_H_ 1
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Copyright (c) 2015-2020 The Khronos Group Inc.
|
** Copyright 2015-2021 The Khronos Group Inc.
|
||||||
**
|
**
|
||||||
** SPDX-License-Identifier: Apache-2.0
|
** SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
|
54
externals/Vulkan-Headers/include/vulkan/vulkan_screen.h
vendored
Executable file
54
externals/Vulkan-Headers/include/vulkan/vulkan_screen.h
vendored
Executable file
@ -0,0 +1,54 @@
|
|||||||
|
#ifndef VULKAN_SCREEN_H_
|
||||||
|
#define VULKAN_SCREEN_H_ 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
** Copyright 2015-2021 The Khronos Group Inc.
|
||||||
|
**
|
||||||
|
** SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
** This header is generated from the Khronos Vulkan XML API Registry.
|
||||||
|
**
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define VK_QNX_screen_surface 1
|
||||||
|
#define VK_QNX_SCREEN_SURFACE_SPEC_VERSION 1
|
||||||
|
#define VK_QNX_SCREEN_SURFACE_EXTENSION_NAME "VK_QNX_screen_surface"
|
||||||
|
typedef VkFlags VkScreenSurfaceCreateFlagsQNX;
|
||||||
|
typedef struct VkScreenSurfaceCreateInfoQNX {
|
||||||
|
VkStructureType sType;
|
||||||
|
const void* pNext;
|
||||||
|
VkScreenSurfaceCreateFlagsQNX flags;
|
||||||
|
struct _screen_context* context;
|
||||||
|
struct _screen_window* window;
|
||||||
|
} VkScreenSurfaceCreateInfoQNX;
|
||||||
|
|
||||||
|
typedef VkResult (VKAPI_PTR *PFN_vkCreateScreenSurfaceQNX)(VkInstance instance, const VkScreenSurfaceCreateInfoQNX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
|
||||||
|
typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceScreenPresentationSupportQNX)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, struct _screen_window* window);
|
||||||
|
|
||||||
|
#ifndef VK_NO_PROTOTYPES
|
||||||
|
VKAPI_ATTR VkResult VKAPI_CALL vkCreateScreenSurfaceQNX(
|
||||||
|
VkInstance instance,
|
||||||
|
const VkScreenSurfaceCreateInfoQNX* pCreateInfo,
|
||||||
|
const VkAllocationCallbacks* pAllocator,
|
||||||
|
VkSurfaceKHR* pSurface);
|
||||||
|
|
||||||
|
VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceScreenPresentationSupportQNX(
|
||||||
|
VkPhysicalDevice physicalDevice,
|
||||||
|
uint32_t queueFamilyIndex,
|
||||||
|
struct _screen_window* window);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
@ -2,7 +2,7 @@
|
|||||||
#define VULKAN_VI_H_ 1
|
#define VULKAN_VI_H_ 1
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Copyright (c) 2015-2020 The Khronos Group Inc.
|
** Copyright 2015-2021 The Khronos Group Inc.
|
||||||
**
|
**
|
||||||
** SPDX-License-Identifier: Apache-2.0
|
** SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#define VULKAN_WAYLAND_H_ 1
|
#define VULKAN_WAYLAND_H_ 1
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Copyright (c) 2015-2020 The Khronos Group Inc.
|
** Copyright 2015-2021 The Khronos Group Inc.
|
||||||
**
|
**
|
||||||
** SPDX-License-Identifier: Apache-2.0
|
** SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#define VULKAN_WIN32_H_ 1
|
#define VULKAN_WIN32_H_ 1
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Copyright (c) 2015-2020 The Khronos Group Inc.
|
** Copyright 2015-2021 The Khronos Group Inc.
|
||||||
**
|
**
|
||||||
** SPDX-License-Identifier: Apache-2.0
|
** SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#define VULKAN_XCB_H_ 1
|
#define VULKAN_XCB_H_ 1
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Copyright (c) 2015-2020 The Khronos Group Inc.
|
** Copyright 2015-2021 The Khronos Group Inc.
|
||||||
**
|
**
|
||||||
** SPDX-License-Identifier: Apache-2.0
|
** SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#define VULKAN_XLIB_H_ 1
|
#define VULKAN_XLIB_H_ 1
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Copyright (c) 2015-2020 The Khronos Group Inc.
|
** Copyright 2015-2021 The Khronos Group Inc.
|
||||||
**
|
**
|
||||||
** SPDX-License-Identifier: Apache-2.0
|
** SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#define VULKAN_XLIB_XRANDR_H_ 1
|
#define VULKAN_XLIB_XRANDR_H_ 1
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Copyright (c) 2015-2020 The Khronos Group Inc.
|
** Copyright 2015-2021 The Khronos Group Inc.
|
||||||
**
|
**
|
||||||
** SPDX-License-Identifier: Apache-2.0
|
** SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
|
29
externals/Vulkan-Headers/registry/cgenerator.py
vendored
29
externals/Vulkan-Headers/registry/cgenerator.py
vendored
@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/python3 -i
|
#!/usr/bin/python3 -i
|
||||||
#
|
#
|
||||||
# Copyright (c) 2013-2020 The Khronos Group Inc.
|
# Copyright 2013-2021 The Khronos Group Inc.
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
@ -32,6 +32,8 @@ class CGeneratorOptions(GeneratorOptions):
|
|||||||
genEnumBeginEndRange=False,
|
genEnumBeginEndRange=False,
|
||||||
genAliasMacro=False,
|
genAliasMacro=False,
|
||||||
aliasMacro='',
|
aliasMacro='',
|
||||||
|
misracstyle=False,
|
||||||
|
misracppstyle=False,
|
||||||
**kwargs
|
**kwargs
|
||||||
):
|
):
|
||||||
"""Constructor.
|
"""Constructor.
|
||||||
@ -68,7 +70,10 @@ class CGeneratorOptions(GeneratorOptions):
|
|||||||
be generated for enumerated types
|
be generated for enumerated types
|
||||||
- genAliasMacro - True if the OpenXR alias macro should be generated
|
- genAliasMacro - True if the OpenXR alias macro should be generated
|
||||||
for aliased types (unclear what other circumstances this is useful)
|
for aliased types (unclear what other circumstances this is useful)
|
||||||
- aliasMacro - alias macro to inject when genAliasMacro is True"""
|
- aliasMacro - alias macro to inject when genAliasMacro is True
|
||||||
|
- misracstyle - generate MISRA C-friendly headers
|
||||||
|
- misracppstyle - generate MISRA C++-friendly headers"""
|
||||||
|
|
||||||
GeneratorOptions.__init__(self, **kwargs)
|
GeneratorOptions.__init__(self, **kwargs)
|
||||||
|
|
||||||
self.prefixText = prefixText
|
self.prefixText = prefixText
|
||||||
@ -116,6 +121,12 @@ class CGeneratorOptions(GeneratorOptions):
|
|||||||
self.aliasMacro = aliasMacro
|
self.aliasMacro = aliasMacro
|
||||||
"""alias macro to inject when genAliasMacro is True"""
|
"""alias macro to inject when genAliasMacro is True"""
|
||||||
|
|
||||||
|
self.misracstyle = misracstyle
|
||||||
|
"""generate MISRA C-friendly headers"""
|
||||||
|
|
||||||
|
self.misracppstyle = misracppstyle
|
||||||
|
"""generate MISRA C++-friendly headers"""
|
||||||
|
|
||||||
self.codeGenerator = True
|
self.codeGenerator = True
|
||||||
"""True if this generator makes compilable code"""
|
"""True if this generator makes compilable code"""
|
||||||
|
|
||||||
@ -380,13 +391,11 @@ class COutputGenerator(OutputGenerator):
|
|||||||
self.appendSection(section, "\n" + body)
|
self.appendSection(section, "\n" + body)
|
||||||
|
|
||||||
def genEnum(self, enuminfo, name, alias):
|
def genEnum(self, enuminfo, name, alias):
|
||||||
"""Generate enumerants.
|
"""Generate the C declaration for a constant (a single <enum> value)."""
|
||||||
|
|
||||||
<enum> tags may specify their values in several ways, but are usually
|
|
||||||
just integers."""
|
|
||||||
OutputGenerator.genEnum(self, enuminfo, name, alias)
|
OutputGenerator.genEnum(self, enuminfo, name, alias)
|
||||||
(_, strVal) = self.enumToValue(enuminfo.elem, False)
|
|
||||||
body = '#define ' + name.ljust(33) + ' ' + strVal
|
body = self.buildConstantCDecl(enuminfo, name, alias)
|
||||||
self.appendSection('enum', body)
|
self.appendSection('enum', body)
|
||||||
|
|
||||||
def genCmd(self, cmdinfo, name, alias):
|
def genCmd(self, cmdinfo, name, alias):
|
||||||
@ -403,3 +412,9 @@ class COutputGenerator(OutputGenerator):
|
|||||||
self.appendSection('command', prefix + decls[0] + '\n')
|
self.appendSection('command', prefix + decls[0] + '\n')
|
||||||
if self.genOpts.genFuncPointers:
|
if self.genOpts.genFuncPointers:
|
||||||
self.appendSection('commandPointer', decls[1])
|
self.appendSection('commandPointer', decls[1])
|
||||||
|
|
||||||
|
def misracstyle(self):
|
||||||
|
return self.genOpts.misracstyle;
|
||||||
|
|
||||||
|
def misracppstyle(self):
|
||||||
|
return self.genOpts.misracppstyle;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/python3 -i
|
#!/usr/bin/python3 -i
|
||||||
#
|
#
|
||||||
# Copyright (c) 2013-2020 The Khronos Group Inc.
|
# Copyright 2013-2021 The Khronos Group Inc.
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
246
externals/Vulkan-Headers/registry/generator.py
vendored
246
externals/Vulkan-Headers/registry/generator.py
vendored
@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/python3 -i
|
#!/usr/bin/python3 -i
|
||||||
#
|
#
|
||||||
# Copyright (c) 2013-2020 The Khronos Group Inc.
|
# Copyright 2013-2021 The Khronos Group Inc.
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
"""Base class for source/header/doc generators, as well as some utility functions."""
|
"""Base class for source/header/doc generators, as well as some utility functions."""
|
||||||
@ -118,6 +118,7 @@ class GeneratorOptions:
|
|||||||
addExtensions=None,
|
addExtensions=None,
|
||||||
removeExtensions=None,
|
removeExtensions=None,
|
||||||
emitExtensions=None,
|
emitExtensions=None,
|
||||||
|
emitSpirv=None,
|
||||||
reparentEnums=True,
|
reparentEnums=True,
|
||||||
sortProcedure=regSortFeatures):
|
sortProcedure=regSortFeatures):
|
||||||
"""Constructor.
|
"""Constructor.
|
||||||
@ -148,6 +149,9 @@ class GeneratorOptions:
|
|||||||
- emitExtensions - regex matching names of extensions to actually emit
|
- emitExtensions - regex matching names of extensions to actually emit
|
||||||
interfaces for (though all requested versions are considered when
|
interfaces for (though all requested versions are considered when
|
||||||
deciding which interfaces to generate).
|
deciding which interfaces to generate).
|
||||||
|
to None.
|
||||||
|
- emitSpirv - regex matching names of extensions and capabilities
|
||||||
|
to actually emit interfaces for.
|
||||||
- reparentEnums - move <enum> elements which extend an enumerated
|
- reparentEnums - move <enum> elements which extend an enumerated
|
||||||
type from <feature> or <extension> elements to the target <enums>
|
type from <feature> or <extension> elements to the target <enums>
|
||||||
element. This is required for almost all purposes, but the
|
element. This is required for almost all purposes, but the
|
||||||
@ -209,6 +213,10 @@ class GeneratorOptions:
|
|||||||
interfaces for (though all requested versions are considered when
|
interfaces for (though all requested versions are considered when
|
||||||
deciding which interfaces to generate)."""
|
deciding which interfaces to generate)."""
|
||||||
|
|
||||||
|
self.emitSpirv = self.emptyRegex(emitSpirv)
|
||||||
|
"""regex matching names of extensions and capabilities
|
||||||
|
to actually emit interfaces for."""
|
||||||
|
|
||||||
self.reparentEnums = reparentEnums
|
self.reparentEnums = reparentEnums
|
||||||
"""boolean specifying whether to remove <enum> elements from
|
"""boolean specifying whether to remove <enum> elements from
|
||||||
<feature> or <extension> when extending an <enums> type."""
|
<feature> or <extension> when extending an <enums> type."""
|
||||||
@ -298,7 +306,7 @@ class OutputGenerator:
|
|||||||
raise UserWarning(
|
raise UserWarning(
|
||||||
'*** FATAL ERROR in Generator.logMsg: unknown level:' + level)
|
'*** FATAL ERROR in Generator.logMsg: unknown level:' + level)
|
||||||
|
|
||||||
def enumToValue(self, elem, needsNum):
|
def enumToValue(self, elem, needsNum, bitwidth = 32, forceSuffix = False):
|
||||||
"""Parse and convert an `<enum>` tag into a value.
|
"""Parse and convert an `<enum>` tag into a value.
|
||||||
|
|
||||||
Returns a list:
|
Returns a list:
|
||||||
@ -334,6 +342,11 @@ class OutputGenerator:
|
|||||||
# t = enuminfo.elem.get('type')
|
# t = enuminfo.elem.get('type')
|
||||||
# if t is not None and t != '' and t != 'i' and t != 's':
|
# if t is not None and t != '' and t != 'i' and t != 's':
|
||||||
# value += enuminfo.type
|
# value += enuminfo.type
|
||||||
|
if forceSuffix:
|
||||||
|
if bitwidth == 64:
|
||||||
|
value = value + 'ULL'
|
||||||
|
else:
|
||||||
|
value = value + 'U'
|
||||||
self.logMsg('diag', 'Enum', name, '-> value [', numVal, ',', value, ']')
|
self.logMsg('diag', 'Enum', name, '-> value [', numVal, ',', value, ']')
|
||||||
return [numVal, value]
|
return [numVal, value]
|
||||||
if 'bitpos' in elem.keys():
|
if 'bitpos' in elem.keys():
|
||||||
@ -341,8 +354,10 @@ class OutputGenerator:
|
|||||||
bitpos = int(value, 0)
|
bitpos = int(value, 0)
|
||||||
numVal = 1 << bitpos
|
numVal = 1 << bitpos
|
||||||
value = '0x%08x' % numVal
|
value = '0x%08x' % numVal
|
||||||
if bitpos >= 32:
|
if bitwidth == 64:
|
||||||
value = value + 'ULL'
|
value = value + 'ULL'
|
||||||
|
elif forceSuffix:
|
||||||
|
value = value + 'U'
|
||||||
self.logMsg('diag', 'Enum', name, '-> bitpos [', numVal, ',', value, ']')
|
self.logMsg('diag', 'Enum', name, '-> bitpos [', numVal, ',', value, ']')
|
||||||
return [numVal, value]
|
return [numVal, value]
|
||||||
if 'offset' in elem.keys():
|
if 'offset' in elem.keys():
|
||||||
@ -370,7 +385,7 @@ class OutputGenerator:
|
|||||||
return [None, None]
|
return [None, None]
|
||||||
|
|
||||||
def checkDuplicateEnums(self, enums):
|
def checkDuplicateEnums(self, enums):
|
||||||
"""Sanity check enumerated values.
|
"""Check enumerated values for duplicates.
|
||||||
|
|
||||||
- enums - list of `<enum>` Elements
|
- enums - list of `<enum>` Elements
|
||||||
|
|
||||||
@ -425,6 +440,12 @@ class OutputGenerator:
|
|||||||
# Return the list
|
# Return the list
|
||||||
return stripped
|
return stripped
|
||||||
|
|
||||||
|
def misracstyle(self):
|
||||||
|
return False;
|
||||||
|
|
||||||
|
def misracppstyle(self):
|
||||||
|
return False;
|
||||||
|
|
||||||
def buildEnumCDecl(self, expand, groupinfo, groupName):
|
def buildEnumCDecl(self, expand, groupinfo, groupName):
|
||||||
"""Generate the C declaration for an enum"""
|
"""Generate the C declaration for an enum"""
|
||||||
groupElem = groupinfo.elem
|
groupElem = groupinfo.elem
|
||||||
@ -432,11 +453,11 @@ class OutputGenerator:
|
|||||||
# Determine the required bit width for the enum group.
|
# Determine the required bit width for the enum group.
|
||||||
# 32 is the default, which generates C enum types for the values.
|
# 32 is the default, which generates C enum types for the values.
|
||||||
bitwidth = 32
|
bitwidth = 32
|
||||||
|
|
||||||
# If the constFlagBits preference is set, 64 is the default for bitmasks
|
# If the constFlagBits preference is set, 64 is the default for bitmasks
|
||||||
if self.genOpts.conventions.constFlagBits and groupElem.get('type') == 'bitmask':
|
if self.genOpts.conventions.constFlagBits and groupElem.get('type') == 'bitmask':
|
||||||
bitwidth = 64
|
bitwidth = 64
|
||||||
|
|
||||||
# Check for an explicitly defined bitwidth, which will override any defaults.
|
# Check for an explicitly defined bitwidth, which will override any defaults.
|
||||||
if groupElem.get('bitwidth'):
|
if groupElem.get('bitwidth'):
|
||||||
try:
|
try:
|
||||||
@ -444,56 +465,107 @@ class OutputGenerator:
|
|||||||
except ValueError as ve:
|
except ValueError as ve:
|
||||||
self.logMsg('error', 'Invalid value for bitwidth attribute (', groupElem.get('bitwidth'), ') for ', groupName, ' - must be an integer value\n')
|
self.logMsg('error', 'Invalid value for bitwidth attribute (', groupElem.get('bitwidth'), ') for ', groupName, ' - must be an integer value\n')
|
||||||
exit(1)
|
exit(1)
|
||||||
|
|
||||||
# Bitmask types support 64-bit flags, so have different handling
|
usebitmask = False
|
||||||
|
usedefine = False
|
||||||
|
|
||||||
|
# Bitmask flags can be generated as either "static const uint{32,64}_t" values,
|
||||||
|
# or as 32-bit C enums. 64-bit types must use uint64_t values.
|
||||||
if groupElem.get('type') == 'bitmask':
|
if groupElem.get('type') == 'bitmask':
|
||||||
|
if bitwidth > 32 or self.misracppstyle():
|
||||||
|
usebitmask = True
|
||||||
|
if self.misracstyle():
|
||||||
|
usedefine = True
|
||||||
|
|
||||||
|
if usedefine or usebitmask:
|
||||||
# Validate the bitwidth and generate values appropriately
|
# Validate the bitwidth and generate values appropriately
|
||||||
# Bitmask flags up to 64-bit are generated as static const uint64_t values
|
|
||||||
# Bitmask flags up to 32-bit are generated as C enum values
|
|
||||||
if bitwidth > 64:
|
if bitwidth > 64:
|
||||||
self.logMsg('error', 'Invalid value for bitwidth attribute (', groupElem.get('bitwidth'), ') for bitmask type ', groupName, ' - must be less than or equal to 64\n')
|
self.logMsg('error', 'Invalid value for bitwidth attribute (', groupElem.get('bitwidth'), ') for bitmask type ', groupName, ' - must be less than or equal to 64\n')
|
||||||
exit(1)
|
exit(1)
|
||||||
elif bitwidth > 32:
|
|
||||||
return self.buildEnumCDecl_Bitmask(groupinfo, groupName)
|
|
||||||
else:
|
else:
|
||||||
return self.buildEnumCDecl_Enum(expand, groupinfo, groupName)
|
return self.buildEnumCDecl_BitmaskOrDefine(groupinfo, groupName, bitwidth, usedefine)
|
||||||
else:
|
else:
|
||||||
# Validate the bitwidth and generate values appropriately
|
# Validate the bitwidth and generate values appropriately
|
||||||
# Enum group types up to 32-bit are generated as C enum values
|
|
||||||
if bitwidth > 32:
|
if bitwidth > 32:
|
||||||
self.logMsg('error', 'Invalid value for bitwidth attribute (', groupElem.get('bitwidth'), ') for enum type ', groupName, ' - must be less than or equal to 32\n')
|
self.logMsg('error', 'Invalid value for bitwidth attribute (', groupElem.get('bitwidth'), ') for enum type ', groupName, ' - must be less than or equal to 32\n')
|
||||||
exit(1)
|
exit(1)
|
||||||
else:
|
else:
|
||||||
return self.buildEnumCDecl_Enum(expand, groupinfo, groupName)
|
return self.buildEnumCDecl_Enum(expand, groupinfo, groupName)
|
||||||
|
|
||||||
def buildEnumCDecl_Bitmask(self, groupinfo, groupName):
|
def buildEnumCDecl_BitmaskOrDefine(self, groupinfo, groupName, bitwidth, usedefine):
|
||||||
"""Generate the C declaration for an "enum" that is actually a
|
"""Generate the C declaration for an "enum" that is actually a
|
||||||
set of flag bits"""
|
set of flag bits"""
|
||||||
groupElem = groupinfo.elem
|
groupElem = groupinfo.elem
|
||||||
flagTypeName = groupinfo.flagType.elem.get('name')
|
flagTypeName = groupElem.get('name')
|
||||||
|
|
||||||
# Prefix
|
# Prefix
|
||||||
body = "// Flag bits for " + flagTypeName + "\n"
|
body = "// Flag bits for " + flagTypeName + "\n"
|
||||||
|
|
||||||
|
if bitwidth == 64:
|
||||||
|
body += "typedef VkFlags64 %s;\n" % flagTypeName;
|
||||||
|
else:
|
||||||
|
body += "typedef VkFlags %s;\n" % flagTypeName;
|
||||||
|
|
||||||
# Maximum allowable value for a flag (unsigned 64-bit integer)
|
# Maximum allowable value for a flag (unsigned 64-bit integer)
|
||||||
maxValidValue = 2**(64) - 1
|
maxValidValue = 2**(64) - 1
|
||||||
minValidValue = 0
|
minValidValue = 0
|
||||||
|
|
||||||
|
# Get a list of nested 'enum' tags.
|
||||||
|
enums = groupElem.findall('enum')
|
||||||
|
|
||||||
|
# Check for and report duplicates, and return a list with them
|
||||||
|
# removed.
|
||||||
|
enums = self.checkDuplicateEnums(enums)
|
||||||
|
|
||||||
|
# Accumulate non-numeric enumerant values separately and append
|
||||||
|
# them following the numeric values, to allow for aliases.
|
||||||
|
# NOTE: this doesn't do a topological sort yet, so aliases of
|
||||||
|
# aliases can still get in the wrong order.
|
||||||
|
aliasText = ''
|
||||||
|
|
||||||
# Loop over the nested 'enum' tags.
|
# Loop over the nested 'enum' tags.
|
||||||
for elem in groupElem.findall('enum'):
|
for elem in enums:
|
||||||
# Convert the value to an integer and use that to track min/max.
|
# Convert the value to an integer and use that to track min/max.
|
||||||
# Values of form -(number) are accepted but nothing more complex.
|
# Values of form -(number) are accepted but nothing more complex.
|
||||||
# Should catch exceptions here for more complex constructs. Not yet.
|
# Should catch exceptions here for more complex constructs. Not yet.
|
||||||
(numVal, strVal) = self.enumToValue(elem, True)
|
(numVal, strVal) = self.enumToValue(elem, True, bitwidth, True)
|
||||||
name = elem.get('name')
|
name = elem.get('name')
|
||||||
|
|
||||||
# Range check for the enum value
|
# Range check for the enum value
|
||||||
if numVal is not None and (numVal > maxValidValue or numVal < minValidValue):
|
if numVal is not None and (numVal > maxValidValue or numVal < minValidValue):
|
||||||
self.logMsg('error', 'Allowable range for flag types in C is [', minValidValue, ',', maxValidValue, '], but', name, 'flag has a value outside of this (', strVal, ')\n')
|
self.logMsg('error', 'Allowable range for flag types in C is [', minValidValue, ',', maxValidValue, '], but', name, 'flag has a value outside of this (', strVal, ')\n')
|
||||||
exit(1)
|
exit(1)
|
||||||
|
|
||||||
body += "static const {} {} = {};\n".format(flagTypeName, name, strVal)
|
decl = self.genRequirements(name, mustBeFound = False)
|
||||||
|
|
||||||
|
if self.isEnumRequired(elem):
|
||||||
|
protect = elem.get('protect')
|
||||||
|
if protect is not None:
|
||||||
|
body += '#ifdef {}\n'.format(protect)
|
||||||
|
|
||||||
|
if usedefine:
|
||||||
|
decl += "#define {} {}\n".format(name, strVal)
|
||||||
|
elif self.misracppstyle():
|
||||||
|
decl += "static constexpr {} {} {{{}}};\n".format(flagTypeName, name, strVal)
|
||||||
|
else:
|
||||||
|
# Some C compilers only allow initializing a 'static const' variable with a literal value.
|
||||||
|
# So initializing an alias from another 'static const' value would fail to compile.
|
||||||
|
# Work around this by chasing the aliases to get the actual value.
|
||||||
|
while numVal is None:
|
||||||
|
alias = self.registry.tree.find("enums/enum[@name='" + strVal + "']")
|
||||||
|
(numVal, strVal) = self.enumToValue(alias, True)
|
||||||
|
decl += "static const {} {} = {};\n".format(flagTypeName, name, strVal)
|
||||||
|
|
||||||
|
if numVal is not None:
|
||||||
|
body += decl
|
||||||
|
else:
|
||||||
|
aliasText += decl
|
||||||
|
|
||||||
|
if protect is not None:
|
||||||
|
body += '#endif\n'
|
||||||
|
|
||||||
|
# Now append the non-numeric enumerant values
|
||||||
|
body += aliasText
|
||||||
|
|
||||||
# Postfix
|
# Postfix
|
||||||
|
|
||||||
@ -505,7 +577,7 @@ class OutputGenerator:
|
|||||||
|
|
||||||
# Break the group name into prefix and suffix portions for range
|
# Break the group name into prefix and suffix portions for range
|
||||||
# enum generation
|
# enum generation
|
||||||
expandName = re.sub(r'([0-9a-z_])([A-Z0-9])', r'\1_\2', groupName).upper()
|
expandName = re.sub(r'([0-9]+|[a-z_])([A-Z0-9])', r'\1_\2', groupName).upper()
|
||||||
expandPrefix = expandName
|
expandPrefix = expandName
|
||||||
expandSuffix = ''
|
expandSuffix = ''
|
||||||
expandSuffixMatch = re.search(r'[A-Z][A-Z]+$', groupName)
|
expandSuffixMatch = re.search(r'[A-Z][A-Z]+$', groupName)
|
||||||
@ -519,11 +591,11 @@ class OutputGenerator:
|
|||||||
|
|
||||||
# @@ Should use the type="bitmask" attribute instead
|
# @@ Should use the type="bitmask" attribute instead
|
||||||
isEnum = ('FLAG_BITS' not in expandPrefix)
|
isEnum = ('FLAG_BITS' not in expandPrefix)
|
||||||
|
|
||||||
# Allowable range for a C enum - which is that of a signed 32-bit integer
|
# Allowable range for a C enum - which is that of a signed 32-bit integer
|
||||||
maxValidValue = 2**(32 - 1) - 1
|
maxValidValue = 2**(32 - 1) - 1
|
||||||
minValidValue = (maxValidValue * -1) - 1
|
minValidValue = (maxValidValue * -1) - 1
|
||||||
|
|
||||||
|
|
||||||
# Get a list of nested 'enum' tags.
|
# Get a list of nested 'enum' tags.
|
||||||
enums = groupElem.findall('enum')
|
enums = groupElem.findall('enum')
|
||||||
@ -553,7 +625,22 @@ class OutputGenerator:
|
|||||||
|
|
||||||
# Extension enumerants are only included if they are required
|
# Extension enumerants are only included if they are required
|
||||||
if self.isEnumRequired(elem):
|
if self.isEnumRequired(elem):
|
||||||
decl = " {} = {},".format(name, strVal)
|
decl = ''
|
||||||
|
|
||||||
|
protect = elem.get('protect')
|
||||||
|
if protect is not None:
|
||||||
|
decl += '#ifdef {}\n'.format(protect)
|
||||||
|
|
||||||
|
# Indent requirements comment, if there is one
|
||||||
|
requirements = self.genRequirements(name, mustBeFound = False)
|
||||||
|
if requirements != '':
|
||||||
|
requirements = ' ' + requirements
|
||||||
|
decl += requirements
|
||||||
|
decl += ' {} = {},'.format(name, strVal)
|
||||||
|
|
||||||
|
if protect is not None:
|
||||||
|
decl += '\n#endif'
|
||||||
|
|
||||||
if numVal is not None:
|
if numVal is not None:
|
||||||
body.append(decl)
|
body.append(decl)
|
||||||
else:
|
else:
|
||||||
@ -563,7 +650,6 @@ class OutputGenerator:
|
|||||||
if numVal is not None and (numVal > maxValidValue or numVal < minValidValue):
|
if numVal is not None and (numVal > maxValidValue or numVal < minValidValue):
|
||||||
self.logMsg('error', 'Allowable range for C enum types is [', minValidValue, ',', maxValidValue, '], but', name, 'has a value outside of this (', strVal, ')\n')
|
self.logMsg('error', 'Allowable range for C enum types is [', minValidValue, ',', maxValidValue, '], but', name, 'has a value outside of this (', strVal, ')\n')
|
||||||
exit(1)
|
exit(1)
|
||||||
|
|
||||||
|
|
||||||
# Don't track min/max for non-numbers (numVal is None)
|
# Don't track min/max for non-numbers (numVal is None)
|
||||||
if isEnum and numVal is not None and elem.get('extends') is None:
|
if isEnum and numVal is not None and elem.get('extends') is None:
|
||||||
@ -605,6 +691,47 @@ class OutputGenerator:
|
|||||||
|
|
||||||
return (section, '\n'.join(body))
|
return (section, '\n'.join(body))
|
||||||
|
|
||||||
|
def buildConstantCDecl(self, enuminfo, name, alias):
|
||||||
|
"""Generate the C declaration for a constant (a single <enum>
|
||||||
|
value).
|
||||||
|
|
||||||
|
<enum> tags may specify their values in several ways, but are
|
||||||
|
usually just integers or floating-point numbers."""
|
||||||
|
|
||||||
|
(_, strVal) = self.enumToValue(enuminfo.elem, False)
|
||||||
|
|
||||||
|
if self.misracppstyle() and enuminfo.elem.get('type') and not alias:
|
||||||
|
# Generate e.g.: static constexpr uint32_t x = ~static_cast<uint32_t>(1U);
|
||||||
|
# This appeases MISRA "underlying type" rules.
|
||||||
|
typeStr = enuminfo.elem.get('type');
|
||||||
|
invert = '~' in strVal
|
||||||
|
number = strVal.strip("()~UL")
|
||||||
|
if typeStr != "float":
|
||||||
|
number += 'U'
|
||||||
|
strVal = "~" if invert else ""
|
||||||
|
strVal += "static_cast<" + typeStr + ">(" + number + ")"
|
||||||
|
body = 'static constexpr ' + typeStr.ljust(9) + name.ljust(33) + ' {' + strVal + '};'
|
||||||
|
elif enuminfo.elem.get('type') and not alias:
|
||||||
|
# Generate e.g.: #define x (~0ULL)
|
||||||
|
typeStr = enuminfo.elem.get('type');
|
||||||
|
invert = '~' in strVal
|
||||||
|
paren = '(' in strVal
|
||||||
|
number = strVal.strip("()~UL")
|
||||||
|
if typeStr != "float":
|
||||||
|
if typeStr == "uint64_t":
|
||||||
|
number += 'ULL'
|
||||||
|
else:
|
||||||
|
number += 'U'
|
||||||
|
strVal = "~" if invert else ""
|
||||||
|
strVal += number
|
||||||
|
if paren:
|
||||||
|
strVal = "(" + strVal + ")";
|
||||||
|
body = '#define ' + name.ljust(33) + ' ' + strVal;
|
||||||
|
else:
|
||||||
|
body = '#define ' + name.ljust(33) + ' ' + strVal
|
||||||
|
|
||||||
|
return body
|
||||||
|
|
||||||
def makeDir(self, path):
|
def makeDir(self, path):
|
||||||
"""Create a directory, if not already done.
|
"""Create a directory, if not already done.
|
||||||
|
|
||||||
@ -683,6 +810,20 @@ class OutputGenerator:
|
|||||||
self.featureName = None
|
self.featureName = None
|
||||||
self.featureExtraProtect = None
|
self.featureExtraProtect = None
|
||||||
|
|
||||||
|
def genRequirements(self, name, mustBeFound = True):
|
||||||
|
"""Generate text showing what core versions and extensions introduce
|
||||||
|
an API. This exists in the base Generator class because it's used by
|
||||||
|
the shared enumerant-generating interfaces (buildEnumCDecl, etc.).
|
||||||
|
Here it returns an empty string for most generators, but can be
|
||||||
|
overridden by e.g. DocGenerator.
|
||||||
|
|
||||||
|
- name - name of the API
|
||||||
|
- mustBeFound - If True, when requirements for 'name' cannot be
|
||||||
|
determined, a warning comment is generated.
|
||||||
|
"""
|
||||||
|
|
||||||
|
return ''
|
||||||
|
|
||||||
def validateFeature(self, featureType, featureName):
|
def validateFeature(self, featureType, featureName):
|
||||||
"""Validate we're generating something only inside a `<feature>` tag"""
|
"""Validate we're generating something only inside a `<feature>` tag"""
|
||||||
if self.featureName is None:
|
if self.featureName is None:
|
||||||
@ -738,6 +879,14 @@ class OutputGenerator:
|
|||||||
Extend to generate as desired in your derived class."""
|
Extend to generate as desired in your derived class."""
|
||||||
self.validateFeature('command', cmdinfo)
|
self.validateFeature('command', cmdinfo)
|
||||||
|
|
||||||
|
def genSpirv(self, spirv, spirvinfo, alias):
|
||||||
|
"""Generate interface for a spirv element.
|
||||||
|
|
||||||
|
- spirvinfo - SpirvInfo for a command
|
||||||
|
|
||||||
|
Extend to generate as desired in your derived class."""
|
||||||
|
return
|
||||||
|
|
||||||
def makeProtoName(self, name, tail):
|
def makeProtoName(self, name, tail):
|
||||||
"""Turn a `<proto>` `<name>` into C-language prototype
|
"""Turn a `<proto>` `<name>` into C-language prototype
|
||||||
and typedef declarations for that name.
|
and typedef declarations for that name.
|
||||||
@ -759,7 +908,9 @@ class OutputGenerator:
|
|||||||
- aligncol - if non-zero, attempt to align the nested `<name>` element
|
- aligncol - if non-zero, attempt to align the nested `<name>` element
|
||||||
at this column"""
|
at this column"""
|
||||||
indent = ' '
|
indent = ' '
|
||||||
paramdecl = indent + noneStr(param.text)
|
paramdecl = indent
|
||||||
|
prefix = noneStr(param.text)
|
||||||
|
|
||||||
for elem in param:
|
for elem in param:
|
||||||
text = noneStr(elem.text)
|
text = noneStr(elem.text)
|
||||||
tail = noneStr(elem.tail)
|
tail = noneStr(elem.tail)
|
||||||
@ -778,7 +929,16 @@ class OutputGenerator:
|
|||||||
paramdecl = paramdecl.ljust(aligncol - 1) + ' '
|
paramdecl = paramdecl.ljust(aligncol - 1) + ' '
|
||||||
newLen = len(paramdecl)
|
newLen = len(paramdecl)
|
||||||
self.logMsg('diag', 'Adjust length of parameter decl from', oldLen, 'to', newLen, ':', paramdecl)
|
self.logMsg('diag', 'Adjust length of parameter decl from', oldLen, 'to', newLen, ':', paramdecl)
|
||||||
paramdecl += text + tail
|
|
||||||
|
if (self.misracppstyle() and prefix.find('const ') != -1):
|
||||||
|
# Change pointer type order from e.g. "const void *" to "void const *".
|
||||||
|
# If the string starts with 'const', reorder it to be after the first type.
|
||||||
|
paramdecl += prefix.replace('const ', '') + text + ' const' + tail
|
||||||
|
else:
|
||||||
|
paramdecl += prefix + text + tail
|
||||||
|
|
||||||
|
# Clear prefix for subsequent iterations
|
||||||
|
prefix = ''
|
||||||
if aligncol == 0:
|
if aligncol == 0:
|
||||||
# Squeeze out multiple spaces other than the indentation
|
# Squeeze out multiple spaces other than the indentation
|
||||||
paramdecl = indent + ' '.join(paramdecl.split())
|
paramdecl = indent + ' '.join(paramdecl.split())
|
||||||
@ -985,8 +1145,28 @@ class OutputGenerator:
|
|||||||
# Non-indented parameters
|
# Non-indented parameters
|
||||||
paramdecl = '('
|
paramdecl = '('
|
||||||
if n > 0:
|
if n > 0:
|
||||||
paramnames = (''.join(t for t in p.itertext())
|
paramnames = []
|
||||||
for p in params)
|
if self.misracppstyle():
|
||||||
|
for p in params:
|
||||||
|
param = ''
|
||||||
|
firstIter = True;
|
||||||
|
for t in p.itertext():
|
||||||
|
if (firstIter):
|
||||||
|
prefix = t
|
||||||
|
firstIter = False
|
||||||
|
else:
|
||||||
|
# Change pointer type order from e.g. "const void *" to "void const *".
|
||||||
|
# If the string starts with 'const', reorder it to be after the first type.
|
||||||
|
if (prefix.find('const ') != -1):
|
||||||
|
param += prefix.replace('const ', '') + t + ' const '
|
||||||
|
else:
|
||||||
|
param += prefix + t
|
||||||
|
# Clear prefix for subsequent iterations
|
||||||
|
prefix = ''
|
||||||
|
paramnames.append(param);
|
||||||
|
else:
|
||||||
|
paramnames = (''.join(t for t in p.itertext())
|
||||||
|
for p in params)
|
||||||
paramdecl += ', '.join(paramnames)
|
paramdecl += ', '.join(paramnames)
|
||||||
else:
|
else:
|
||||||
paramdecl += 'void'
|
paramdecl += 'void'
|
||||||
|
80
externals/Vulkan-Headers/registry/genvk.py
vendored
80
externals/Vulkan-Headers/registry/genvk.py
vendored
@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/python3
|
#!/usr/bin/python3
|
||||||
#
|
#
|
||||||
# Copyright (c) 2013-2020 The Khronos Group Inc.
|
# Copyright 2013-2021 The Khronos Group Inc.
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
@ -17,6 +17,7 @@ from extensionmetadocgenerator import (ExtensionMetaDocGeneratorOptions,
|
|||||||
ExtensionMetaDocOutputGenerator)
|
ExtensionMetaDocOutputGenerator)
|
||||||
from interfacedocgenerator import InterfaceDocGenerator
|
from interfacedocgenerator import InterfaceDocGenerator
|
||||||
from generator import write
|
from generator import write
|
||||||
|
from spirvcapgenerator import SpirvCapabilityOutputGenerator
|
||||||
from hostsyncgenerator import HostSynchronizationOutputGenerator
|
from hostsyncgenerator import HostSynchronizationOutputGenerator
|
||||||
from pygenerator import PyOutputGenerator
|
from pygenerator import PyOutputGenerator
|
||||||
from reflib import logDiag, logWarn, setLogFile
|
from reflib import logDiag, logWarn, setLogFile
|
||||||
@ -73,6 +74,9 @@ def makeGenOpts(args):
|
|||||||
# Extensions to emit (list of extensions)
|
# Extensions to emit (list of extensions)
|
||||||
emitExtensions = args.emitExtensions
|
emitExtensions = args.emitExtensions
|
||||||
|
|
||||||
|
# SPIR-V capabilities / features to emit (list of extensions & capabilities)
|
||||||
|
emitSpirv = args.emitSpirv
|
||||||
|
|
||||||
# Features to include (list of features)
|
# Features to include (list of features)
|
||||||
features = args.feature
|
features = args.feature
|
||||||
|
|
||||||
@ -85,21 +89,28 @@ def makeGenOpts(args):
|
|||||||
# Path to generated files, particularly api.py
|
# Path to generated files, particularly api.py
|
||||||
genpath = args.genpath
|
genpath = args.genpath
|
||||||
|
|
||||||
|
# Generate MISRA C-friendly headers
|
||||||
|
misracstyle = args.misracstyle;
|
||||||
|
|
||||||
|
# Generate MISRA C++-friendly headers
|
||||||
|
misracppstyle = args.misracppstyle;
|
||||||
|
|
||||||
# Descriptive names for various regexp patterns used to select
|
# Descriptive names for various regexp patterns used to select
|
||||||
# versions and extensions
|
# versions and extensions
|
||||||
allFeatures = allExtensions = r'.*'
|
allSpirv = allFeatures = allExtensions = r'.*'
|
||||||
|
|
||||||
# Turn lists of names/patterns into matching regular expressions
|
# Turn lists of names/patterns into matching regular expressions
|
||||||
addExtensionsPat = makeREstring(extensions, None)
|
addExtensionsPat = makeREstring(extensions, None)
|
||||||
removeExtensionsPat = makeREstring(removeExtensions, None)
|
removeExtensionsPat = makeREstring(removeExtensions, None)
|
||||||
emitExtensionsPat = makeREstring(emitExtensions, allExtensions)
|
emitExtensionsPat = makeREstring(emitExtensions, allExtensions)
|
||||||
|
emitSpirvPat = makeREstring(emitSpirv, allSpirv)
|
||||||
featuresPat = makeREstring(features, allFeatures)
|
featuresPat = makeREstring(features, allFeatures)
|
||||||
|
|
||||||
# Copyright text prefixing all headers (list of strings).
|
# Copyright text prefixing all headers (list of strings).
|
||||||
# The SPDX formatting below works around constraints of the 'reuse' tool
|
# The SPDX formatting below works around constraints of the 'reuse' tool
|
||||||
prefixStrings = [
|
prefixStrings = [
|
||||||
'/*',
|
'/*',
|
||||||
'** Copyright (c) 2015-2020 The Khronos Group Inc.',
|
'** Copyright 2015-2021 The Khronos Group Inc.',
|
||||||
'**',
|
'**',
|
||||||
'** SPDX' + '-License-Identifier: Apache-2.0',
|
'** SPDX' + '-License-Identifier: Apache-2.0',
|
||||||
'*/',
|
'*/',
|
||||||
@ -249,6 +260,25 @@ def makeGenOpts(args):
|
|||||||
reparentEnums = False)
|
reparentEnums = False)
|
||||||
]
|
]
|
||||||
|
|
||||||
|
genOpts['spirvcapinc'] = [
|
||||||
|
SpirvCapabilityOutputGenerator,
|
||||||
|
DocGeneratorOptions(
|
||||||
|
conventions = conventions,
|
||||||
|
filename = 'timeMarker',
|
||||||
|
directory = directory,
|
||||||
|
genpath = None,
|
||||||
|
apiname = 'vulkan',
|
||||||
|
profile = None,
|
||||||
|
versions = featuresPat,
|
||||||
|
emitversions = featuresPat,
|
||||||
|
defaultExtensions = None,
|
||||||
|
addExtensions = addExtensionsPat,
|
||||||
|
removeExtensions = removeExtensionsPat,
|
||||||
|
emitExtensions = emitExtensionsPat,
|
||||||
|
emitSpirv = emitSpirvPat,
|
||||||
|
reparentEnums = False)
|
||||||
|
]
|
||||||
|
|
||||||
# Platform extensions, in their own header files
|
# Platform extensions, in their own header files
|
||||||
# Each element of the platforms[] array defines information for
|
# Each element of the platforms[] array defines information for
|
||||||
# generating a single platform:
|
# generating a single platform:
|
||||||
@ -269,14 +299,25 @@ def makeGenOpts(args):
|
|||||||
# Extensions required and suppressed for beta "platform". This can
|
# Extensions required and suppressed for beta "platform". This can
|
||||||
# probably eventually be derived from the requires= attributes of
|
# probably eventually be derived from the requires= attributes of
|
||||||
# the extension blocks.
|
# the extension blocks.
|
||||||
betaRequireExtensions = [ 'VK_KHR_ray_tracing', 'VK_KHR_deferred_host_operations', 'VK_KHR_pipeline_library' ]
|
betaRequireExtensions = [
|
||||||
betaSuppressExtensions = [ 'VK_NV_ray_tracing' ]
|
'VK_KHR_portability_subset',
|
||||||
|
'VK_KHR_video_queue',
|
||||||
|
'VK_KHR_video_decode_queue',
|
||||||
|
'VK_KHR_video_encode_queue',
|
||||||
|
'VK_EXT_video_decode_h264',
|
||||||
|
'VK_EXT_video_decode_h265',
|
||||||
|
'VK_EXT_video_encode_h264',
|
||||||
|
]
|
||||||
|
|
||||||
|
betaSuppressExtensions = []
|
||||||
|
|
||||||
platforms = [
|
platforms = [
|
||||||
[ 'vulkan_android.h', [ 'VK_KHR_android_surface',
|
[ 'vulkan_android.h', [ 'VK_KHR_android_surface',
|
||||||
'VK_ANDROID_external_memory_android_hardware_buffer'
|
'VK_ANDROID_external_memory_android_hardware_buffer'
|
||||||
], commonSuppressExtensions ],
|
], commonSuppressExtensions ],
|
||||||
[ 'vulkan_fuchsia.h', [ 'VK_FUCHSIA_imagepipe_surface'], commonSuppressExtensions ],
|
[ 'vulkan_fuchsia.h', [ 'VK_FUCHSIA_imagepipe_surface',
|
||||||
|
'VK_FUCHSIA_external_memory',
|
||||||
|
'VK_FUCHSIA_external_semaphore' ], commonSuppressExtensions ],
|
||||||
[ 'vulkan_ggp.h', [ 'VK_GGP_stream_descriptor_surface',
|
[ 'vulkan_ggp.h', [ 'VK_GGP_stream_descriptor_surface',
|
||||||
'VK_GGP_frame_token' ], commonSuppressExtensions ],
|
'VK_GGP_frame_token' ], commonSuppressExtensions ],
|
||||||
[ 'vulkan_ios.h', [ 'VK_MVK_ios_surface' ], commonSuppressExtensions ],
|
[ 'vulkan_ios.h', [ 'VK_MVK_ios_surface' ], commonSuppressExtensions ],
|
||||||
@ -294,8 +335,10 @@ def makeGenOpts(args):
|
|||||||
] ],
|
] ],
|
||||||
[ 'vulkan_xcb.h', [ 'VK_KHR_xcb_surface' ], commonSuppressExtensions ],
|
[ 'vulkan_xcb.h', [ 'VK_KHR_xcb_surface' ], commonSuppressExtensions ],
|
||||||
[ 'vulkan_xlib.h', [ 'VK_KHR_xlib_surface' ], commonSuppressExtensions ],
|
[ 'vulkan_xlib.h', [ 'VK_KHR_xlib_surface' ], commonSuppressExtensions ],
|
||||||
|
[ 'vulkan_directfb.h', [ 'VK_EXT_directfb_surface' ], commonSuppressExtensions ],
|
||||||
[ 'vulkan_xlib_xrandr.h', [ 'VK_EXT_acquire_xlib_display' ], commonSuppressExtensions ],
|
[ 'vulkan_xlib_xrandr.h', [ 'VK_EXT_acquire_xlib_display' ], commonSuppressExtensions ],
|
||||||
[ 'vulkan_metal.h', [ 'VK_EXT_metal_surface' ], commonSuppressExtensions ],
|
[ 'vulkan_metal.h', [ 'VK_EXT_metal_surface' ], commonSuppressExtensions ],
|
||||||
|
[ 'vulkan_screen.h', [ 'VK_QNX_screen_surface' ], commonSuppressExtensions ],
|
||||||
[ 'vulkan_beta.h', betaRequireExtensions, betaSuppressExtensions ],
|
[ 'vulkan_beta.h', betaRequireExtensions, betaSuppressExtensions ],
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -331,7 +374,9 @@ def makeGenOpts(args):
|
|||||||
apicall = 'VKAPI_ATTR ',
|
apicall = 'VKAPI_ATTR ',
|
||||||
apientry = 'VKAPI_CALL ',
|
apientry = 'VKAPI_CALL ',
|
||||||
apientryp = 'VKAPI_PTR *',
|
apientryp = 'VKAPI_PTR *',
|
||||||
alignFuncParam = 48)
|
alignFuncParam = 48,
|
||||||
|
misracstyle = misracstyle,
|
||||||
|
misracppstyle = misracppstyle)
|
||||||
|
|
||||||
genOpts[headername] = [ COutputGenerator, opts ]
|
genOpts[headername] = [ COutputGenerator, opts ]
|
||||||
|
|
||||||
@ -370,7 +415,9 @@ def makeGenOpts(args):
|
|||||||
apicall = 'VKAPI_ATTR ',
|
apicall = 'VKAPI_ATTR ',
|
||||||
apientry = 'VKAPI_CALL ',
|
apientry = 'VKAPI_CALL ',
|
||||||
apientryp = 'VKAPI_PTR *',
|
apientryp = 'VKAPI_PTR *',
|
||||||
alignFuncParam = 48)
|
alignFuncParam = 48,
|
||||||
|
misracstyle = misracstyle,
|
||||||
|
misracppstyle = misracppstyle)
|
||||||
]
|
]
|
||||||
|
|
||||||
# Unused - vulkan10.h target.
|
# Unused - vulkan10.h target.
|
||||||
@ -402,7 +449,9 @@ def makeGenOpts(args):
|
|||||||
apicall = 'VKAPI_ATTR ',
|
apicall = 'VKAPI_ATTR ',
|
||||||
apientry = 'VKAPI_CALL ',
|
apientry = 'VKAPI_CALL ',
|
||||||
apientryp = 'VKAPI_PTR *',
|
apientryp = 'VKAPI_PTR *',
|
||||||
alignFuncParam = 48)
|
alignFuncParam = 48,
|
||||||
|
misracstyle = misracstyle,
|
||||||
|
misracppstyle = misracppstyle)
|
||||||
]
|
]
|
||||||
|
|
||||||
# Unused - vulkan11.h target.
|
# Unused - vulkan11.h target.
|
||||||
@ -434,7 +483,9 @@ def makeGenOpts(args):
|
|||||||
apicall = 'VKAPI_ATTR ',
|
apicall = 'VKAPI_ATTR ',
|
||||||
apientry = 'VKAPI_CALL ',
|
apientry = 'VKAPI_CALL ',
|
||||||
apientryp = 'VKAPI_PTR *',
|
apientryp = 'VKAPI_PTR *',
|
||||||
alignFuncParam = 48)
|
alignFuncParam = 48,
|
||||||
|
misracstyle = misracstyle,
|
||||||
|
misracppstyle = misracppstyle)
|
||||||
]
|
]
|
||||||
|
|
||||||
genOpts['alias.h'] = [
|
genOpts['alias.h'] = [
|
||||||
@ -481,6 +532,8 @@ def genTarget(args):
|
|||||||
# Create generator options with parameters specified on command line
|
# Create generator options with parameters specified on command line
|
||||||
makeGenOpts(args)
|
makeGenOpts(args)
|
||||||
|
|
||||||
|
# pdb.set_trace()
|
||||||
|
|
||||||
# Select a generator matching the requested target
|
# Select a generator matching the requested target
|
||||||
if args.target in genOpts:
|
if args.target in genOpts:
|
||||||
createGenerator = genOpts[args.target][0]
|
createGenerator = genOpts[args.target][0]
|
||||||
@ -522,6 +575,9 @@ if __name__ == '__main__':
|
|||||||
parser.add_argument('-emitExtensions', action='append',
|
parser.add_argument('-emitExtensions', action='append',
|
||||||
default=[],
|
default=[],
|
||||||
help='Specify an extension or extensions to emit in targets')
|
help='Specify an extension or extensions to emit in targets')
|
||||||
|
parser.add_argument('-emitSpirv', action='append',
|
||||||
|
default=[],
|
||||||
|
help='Specify a SPIR-V extension or capability to emit in targets')
|
||||||
parser.add_argument('-feature', action='append',
|
parser.add_argument('-feature', action='append',
|
||||||
default=[],
|
default=[],
|
||||||
help='Specify a core API feature name or names to add to targets')
|
help='Specify a core API feature name or names to add to targets')
|
||||||
@ -557,6 +613,10 @@ if __name__ == '__main__':
|
|||||||
help='Suppress script output during normal execution.')
|
help='Suppress script output during normal execution.')
|
||||||
parser.add_argument('-verbose', action='store_false', dest='quiet', default=True,
|
parser.add_argument('-verbose', action='store_false', dest='quiet', default=True,
|
||||||
help='Enable script output during normal execution.')
|
help='Enable script output during normal execution.')
|
||||||
|
parser.add_argument('-misracstyle', dest='misracstyle', action='store_true',
|
||||||
|
help='generate MISRA C-friendly headers')
|
||||||
|
parser.add_argument('-misracppstyle', dest='misracppstyle', action='store_true',
|
||||||
|
help='generate MISRA C++-friendly headers')
|
||||||
|
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
85
externals/Vulkan-Headers/registry/reg.py
vendored
85
externals/Vulkan-Headers/registry/reg.py
vendored
@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/python3 -i
|
#!/usr/bin/python3 -i
|
||||||
#
|
#
|
||||||
# Copyright 2013-2020 The Khronos Group Inc.
|
# Copyright 2013-2021 The Khronos Group Inc.
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
@ -12,7 +12,7 @@ import sys
|
|||||||
import xml.etree.ElementTree as etree
|
import xml.etree.ElementTree as etree
|
||||||
from collections import defaultdict, namedtuple
|
from collections import defaultdict, namedtuple
|
||||||
from generator import OutputGenerator, GeneratorOptions, write
|
from generator import OutputGenerator, GeneratorOptions, write
|
||||||
|
import pdb
|
||||||
|
|
||||||
def apiNameMatch(str, supported):
|
def apiNameMatch(str, supported):
|
||||||
"""Return whether a required api name matches a pattern specified for an
|
"""Return whether a required api name matches a pattern specified for an
|
||||||
@ -253,6 +253,12 @@ class FeatureInfo(BaseInfo):
|
|||||||
self.number = 0
|
self.number = 0
|
||||||
self.supported = elem.get('supported')
|
self.supported = elem.get('supported')
|
||||||
|
|
||||||
|
class SpirvInfo(BaseInfo):
|
||||||
|
"""Registry information about an API <spirvextensions>
|
||||||
|
or <spirvcapability>."""
|
||||||
|
|
||||||
|
def __init__(self, elem):
|
||||||
|
BaseInfo.__init__(self, elem)
|
||||||
|
|
||||||
class Registry:
|
class Registry:
|
||||||
"""Object representing an API registry, loaded from an XML file."""
|
"""Object representing an API registry, loaded from an XML file."""
|
||||||
@ -299,6 +305,12 @@ class Registry:
|
|||||||
self.extdict = {}
|
self.extdict = {}
|
||||||
"dictionary of FeatureInfo objects for `<extension>` elements keyed by extension name"
|
"dictionary of FeatureInfo objects for `<extension>` elements keyed by extension name"
|
||||||
|
|
||||||
|
self.spirvextdict = {}
|
||||||
|
"dictionary of FeatureInfo objects for `<spirvextension>` elements keyed by spirv extension name"
|
||||||
|
|
||||||
|
self.spirvcapdict = {}
|
||||||
|
"dictionary of FeatureInfo objects for `<spirvcapability>` elements keyed by spirv capability name"
|
||||||
|
|
||||||
self.emitFeatures = False
|
self.emitFeatures = False
|
||||||
"""True to actually emit features for a version / extension,
|
"""True to actually emit features for a version / extension,
|
||||||
or False to just treat them as emitted"""
|
or False to just treat them as emitted"""
|
||||||
@ -344,10 +356,10 @@ class Registry:
|
|||||||
|
|
||||||
Intended for internal use only.
|
Intended for internal use only.
|
||||||
|
|
||||||
- elem - `<type>`/`<enums>`/`<enum>`/`<command>`/`<feature>`/`<extension>` Element
|
- elem - `<type>`/`<enums>`/`<enum>`/`<command>`/`<feature>`/`<extension>`/`<spirvextension>`/`<spirvcapability>` Element
|
||||||
- info - corresponding {Type|Group|Enum|Cmd|Feature}Info object
|
- info - corresponding {Type|Group|Enum|Cmd|Feature|Spirv}Info object
|
||||||
- infoName - 'type' / 'group' / 'enum' / 'command' / 'feature' / 'extension'
|
- infoName - 'type' / 'group' / 'enum' / 'command' / 'feature' / 'extension' / 'spirvextension' / 'spirvcapability'
|
||||||
- dictionary - self.{type|group|enum|cmd|api|ext}dict
|
- dictionary - self.{type|group|enum|cmd|api|ext|spirvext|spirvcap}dict
|
||||||
|
|
||||||
If the Element has an 'api' attribute, the dictionary key is the
|
If the Element has an 'api' attribute, the dictionary key is the
|
||||||
tuple (name,api). If not, the key is the name. 'name' is an
|
tuple (name,api). If not, the key is the name. 'name' is an
|
||||||
@ -591,6 +603,15 @@ class Registry:
|
|||||||
for parent in self.validextensionstructs:
|
for parent in self.validextensionstructs:
|
||||||
self.validextensionstructs[parent].sort()
|
self.validextensionstructs[parent].sort()
|
||||||
|
|
||||||
|
# Parse out all spirv tags in dictionaries
|
||||||
|
# Use addElementInfo to catch duplicates
|
||||||
|
for spirv in self.reg.findall('spirvextensions/spirvextension'):
|
||||||
|
spirvInfo = SpirvInfo(spirv)
|
||||||
|
self.addElementInfo(spirv, spirvInfo, 'spirvextension', self.spirvextdict)
|
||||||
|
for spirv in self.reg.findall('spirvcapabilities/spirvcapability'):
|
||||||
|
spirvInfo = SpirvInfo(spirv)
|
||||||
|
self.addElementInfo(spirv, spirvInfo, 'spirvcapability', self.spirvcapdict)
|
||||||
|
|
||||||
def dumpReg(self, maxlen=120, filehandle=sys.stdout):
|
def dumpReg(self, maxlen=120, filehandle=sys.stdout):
|
||||||
"""Dump all the dictionaries constructed from the Registry object.
|
"""Dump all the dictionaries constructed from the Registry object.
|
||||||
|
|
||||||
@ -623,6 +644,13 @@ class Registry:
|
|||||||
for key in self.extdict:
|
for key in self.extdict:
|
||||||
write(' Extension', key, '->',
|
write(' Extension', key, '->',
|
||||||
etree.tostring(self.extdict[key].elem)[0:maxlen], file=filehandle)
|
etree.tostring(self.extdict[key].elem)[0:maxlen], file=filehandle)
|
||||||
|
write('// SPIR-V', file=filehandle)
|
||||||
|
for key in self.spirvextdict:
|
||||||
|
write(' SPIR-V Extension', key, '->',
|
||||||
|
etree.tostring(self.spirvextdict[key].elem)[0:maxlen], file=filehandle)
|
||||||
|
for key in self.spirvcapdict:
|
||||||
|
write(' SPIR-V Capability', key, '->',
|
||||||
|
etree.tostring(self.spirvcapdict[key].elem)[0:maxlen], file=filehandle)
|
||||||
|
|
||||||
def markTypeRequired(self, typename, required):
|
def markTypeRequired(self, typename, required):
|
||||||
"""Require (along with its dependencies) or remove (but not its dependencies) a type.
|
"""Require (along with its dependencies) or remove (but not its dependencies) a type.
|
||||||
@ -1126,6 +1154,19 @@ class Registry:
|
|||||||
for c in features.findall('command'):
|
for c in features.findall('command'):
|
||||||
self.generateFeature(c.get('name'), 'command', self.cmddict)
|
self.generateFeature(c.get('name'), 'command', self.cmddict)
|
||||||
|
|
||||||
|
def generateSpirv(self, spirv, dictionary):
|
||||||
|
if spirv is None:
|
||||||
|
self.gen.logMsg('diag', 'No entry found for element', name,
|
||||||
|
'returning!')
|
||||||
|
return
|
||||||
|
|
||||||
|
name = spirv.elem.get('name')
|
||||||
|
# No known alias for spirv elements
|
||||||
|
alias = None
|
||||||
|
if spirv.emit:
|
||||||
|
genProc = self.gen.genSpirv
|
||||||
|
genProc(spirv, name, alias)
|
||||||
|
|
||||||
def apiGen(self):
|
def apiGen(self):
|
||||||
"""Generate interface for specified versions using the current
|
"""Generate interface for specified versions using the current
|
||||||
generator and generator options"""
|
generator and generator options"""
|
||||||
@ -1145,6 +1186,7 @@ class Registry:
|
|||||||
regAddExtensions = re.compile(self.genOpts.addExtensions)
|
regAddExtensions = re.compile(self.genOpts.addExtensions)
|
||||||
regRemoveExtensions = re.compile(self.genOpts.removeExtensions)
|
regRemoveExtensions = re.compile(self.genOpts.removeExtensions)
|
||||||
regEmitExtensions = re.compile(self.genOpts.emitExtensions)
|
regEmitExtensions = re.compile(self.genOpts.emitExtensions)
|
||||||
|
regEmitSpirv = re.compile(self.genOpts.emitSpirv)
|
||||||
|
|
||||||
# Get all matching API feature names & add to list of FeatureInfo
|
# Get all matching API feature names & add to list of FeatureInfo
|
||||||
# Note we used to select on feature version attributes, not names.
|
# Note we used to select on feature version attributes, not names.
|
||||||
@ -1202,10 +1244,16 @@ class Registry:
|
|||||||
# the regexp specified in the generator options. This allows
|
# the regexp specified in the generator options. This allows
|
||||||
# forcing extensions into an interface even if they're not
|
# forcing extensions into an interface even if they're not
|
||||||
# tagged appropriately in the registry.
|
# tagged appropriately in the registry.
|
||||||
|
# However we still respect the 'supported' attribute.
|
||||||
if regAddExtensions.match(extName) is not None:
|
if regAddExtensions.match(extName) is not None:
|
||||||
self.gen.logMsg('diag', 'Including extension',
|
if not apiNameMatch(self.genOpts.apiname, ei.elem.get('supported')):
|
||||||
extName, '(matches explicitly requested extensions to add)')
|
self.gen.logMsg('diag', 'NOT including extension',
|
||||||
include = True
|
extName, '(matches explicitly requested, but does not match the \'supported\' attribute)')
|
||||||
|
include = False
|
||||||
|
else:
|
||||||
|
self.gen.logMsg('diag', 'Including extension',
|
||||||
|
extName, '(matches explicitly requested extensions to add)')
|
||||||
|
include = True
|
||||||
# Remove extensions if the name matches the regexp specified
|
# Remove extensions if the name matches the regexp specified
|
||||||
# in generator options. This allows forcing removal of
|
# in generator options. This allows forcing removal of
|
||||||
# extensions from an interface even if they're tagged that
|
# extensions from an interface even if they're tagged that
|
||||||
@ -1233,6 +1281,20 @@ class Registry:
|
|||||||
self.gen.logMsg('diag', 'NOT including extension',
|
self.gen.logMsg('diag', 'NOT including extension',
|
||||||
extName, '(does not match api attribute or explicitly requested extensions)')
|
extName, '(does not match api attribute or explicitly requested extensions)')
|
||||||
|
|
||||||
|
# Add all spirv elements to list
|
||||||
|
# generators decide to emit them all or not
|
||||||
|
# Currently no filtering as no client of these elements needs filtering
|
||||||
|
spirvexts = []
|
||||||
|
for key in self.spirvextdict:
|
||||||
|
si = self.spirvextdict[key]
|
||||||
|
si.emit = (regEmitSpirv.match(key) is not None)
|
||||||
|
spirvexts.append(si)
|
||||||
|
spirvcaps = []
|
||||||
|
for key in self.spirvcapdict:
|
||||||
|
si = self.spirvcapdict[key]
|
||||||
|
si.emit = (regEmitSpirv.match(key) is not None)
|
||||||
|
spirvcaps.append(si)
|
||||||
|
|
||||||
# Sort the features list, if a sort procedure is defined
|
# Sort the features list, if a sort procedure is defined
|
||||||
if self.genOpts.sortProcedure:
|
if self.genOpts.sortProcedure:
|
||||||
self.genOpts.sortProcedure(features)
|
self.genOpts.sortProcedure(features)
|
||||||
@ -1271,6 +1333,11 @@ class Registry:
|
|||||||
self.gen.beginFeature(f.elem, emit)
|
self.gen.beginFeature(f.elem, emit)
|
||||||
self.generateRequiredInterface(f.elem)
|
self.generateRequiredInterface(f.elem)
|
||||||
self.gen.endFeature()
|
self.gen.endFeature()
|
||||||
|
# Generate spirv elements
|
||||||
|
for s in spirvexts:
|
||||||
|
self.generateSpirv(s, self.spirvextdict)
|
||||||
|
for s in spirvcaps:
|
||||||
|
self.generateSpirv(s, self.spirvcapdict)
|
||||||
self.gen.endFile()
|
self.gen.endFile()
|
||||||
|
|
||||||
def apiReset(self):
|
def apiReset(self):
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
"""Utility functions not closely tied to other spec_tools types."""
|
"""Utility functions not closely tied to other spec_tools types."""
|
||||||
# Copyright (c) 2018-2019 Collabora, Ltd.
|
# Copyright 2018-2019 Collabora, Ltd.
|
||||||
# Copyright (c) 2013-2020 The Khronos Group Inc.
|
# Copyright 2013-2021 The Khronos Group Inc.
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
20214
externals/Vulkan-Headers/registry/validusage.json
vendored
20214
externals/Vulkan-Headers/registry/validusage.json
vendored
File diff suppressed because one or more lines are too long
5860
externals/Vulkan-Headers/registry/vk.xml
vendored
5860
externals/Vulkan-Headers/registry/vk.xml
vendored
File diff suppressed because it is too large
Load Diff
@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/python3 -i
|
#!/usr/bin/python3 -i
|
||||||
#
|
#
|
||||||
# Copyright (c) 2013-2020 The Khronos Group Inc.
|
# Copyright 2013-2021 The Khronos Group Inc.
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
@ -87,6 +87,7 @@ class VulkanConventions(ConventionsBase):
|
|||||||
|
|
||||||
def generate_structure_type_from_name(self, structname):
|
def generate_structure_type_from_name(self, structname):
|
||||||
"""Generate a structure type name, like VK_STRUCTURE_TYPE_CREATE_INSTANCE_INFO"""
|
"""Generate a structure type name, like VK_STRUCTURE_TYPE_CREATE_INSTANCE_INFO"""
|
||||||
|
|
||||||
structure_type_parts = []
|
structure_type_parts = []
|
||||||
# Tokenize into "words"
|
# Tokenize into "words"
|
||||||
for elem in MAIN_RE.findall(structname):
|
for elem in MAIN_RE.findall(structname):
|
||||||
@ -95,7 +96,18 @@ class VulkanConventions(ConventionsBase):
|
|||||||
structure_type_parts.append('VK_STRUCTURE_TYPE')
|
structure_type_parts.append('VK_STRUCTURE_TYPE')
|
||||||
else:
|
else:
|
||||||
structure_type_parts.append(word.upper())
|
structure_type_parts.append(word.upper())
|
||||||
return '_'.join(structure_type_parts)
|
name = '_'.join(structure_type_parts)
|
||||||
|
|
||||||
|
# The simple-minded rules need modification for some structure names
|
||||||
|
subpats = [
|
||||||
|
[ r'_H_(26[45])_', r'_H\1_' ],
|
||||||
|
[ r'_VULKAN_([0-9])([0-9])_', r'_VULKAN_\1_\2_' ],
|
||||||
|
[ r'_DIRECT_FB_', r'_DIRECTFB_' ],
|
||||||
|
]
|
||||||
|
|
||||||
|
for subpat in subpats:
|
||||||
|
name = re.sub(subpat[0], subpat[1], name)
|
||||||
|
return name
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def warning_comment(self):
|
def warning_comment(self):
|
||||||
|
2
externals/sirit/CMakeLists.txt
vendored
2
externals/sirit/CMakeLists.txt
vendored
@ -17,7 +17,7 @@ if (NOT CMAKE_BUILD_TYPE)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Set hard requirements for C++
|
# Set hard requirements for C++
|
||||||
set(CMAKE_CXX_STANDARD 17)
|
set(CMAKE_CXX_STANDARD 20)
|
||||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||||
set(CMAKE_CXX_EXTENSIONS OFF)
|
set(CMAKE_CXX_EXTENSIONS OFF)
|
||||||
|
|
||||||
|
@ -1,2 +1,3 @@
|
|||||||
build
|
build
|
||||||
out
|
out
|
||||||
|
.DS_Store
|
||||||
|
166
externals/sirit/externals/SPIRV-Headers/BUILD.bazel
vendored
Executable file
166
externals/sirit/externals/SPIRV-Headers/BUILD.bazel
vendored
Executable file
@ -0,0 +1,166 @@
|
|||||||
|
package(
|
||||||
|
default_visibility = ["//visibility:public"],
|
||||||
|
)
|
||||||
|
|
||||||
|
licenses(["notice"])
|
||||||
|
|
||||||
|
exports_files(["LICENSE"])
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "spirv_core_grammar_1.0",
|
||||||
|
srcs = ["include/spirv/1.0/spirv.core.grammar.json"],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "spirv_glsl_grammar_1.0",
|
||||||
|
srcs = ["include/spirv/1.0/extinst.glsl.std.450.grammar.json"],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "spirv_opencl_grammar_1.0",
|
||||||
|
srcs = ["include/spirv/1.0/extinst.opencl.std.100.grammar.json"],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "spirv_core_grammar_1.1",
|
||||||
|
srcs = ["include/spirv/1.1/spirv.core.grammar.json"],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "spirv_glsl_grammar_1.1",
|
||||||
|
srcs = ["include/spirv/1.1/extinst.glsl.std.450.grammar.json"],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "spirv_opencl_grammar_1.1",
|
||||||
|
srcs = ["include/spirv/1.1/extinst.opencl.std.100.grammar.json"],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "spirv_core_grammar_1.2",
|
||||||
|
srcs = ["include/spirv/1.2/spirv.core.grammar.json"],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "spirv_glsl_grammar_1.2",
|
||||||
|
srcs = ["include/spirv/1.2/extinst.glsl.std.450.grammar.json"],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "spirv_opencl_grammar_1.2",
|
||||||
|
srcs = ["include/spirv/1.2/extinst.opencl.std.100.grammar.json"],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "spirv_core_grammar_unified1",
|
||||||
|
srcs = ["include/spirv/unified1/spirv.core.grammar.json"],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "spirv_glsl_grammar_unified1",
|
||||||
|
srcs = ["include/spirv/unified1/extinst.glsl.std.450.grammar.json"],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "spirv_opencl_grammar_unified1",
|
||||||
|
srcs = ["include/spirv/unified1/extinst.opencl.std.100.grammar.json"],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "spirv_xml_registry",
|
||||||
|
srcs = ["include/spirv/spir-v.xml"],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "spirv_ext_inst_debuginfo_grammar_unified1",
|
||||||
|
srcs = ["include/spirv/unified1/extinst.debuginfo.grammar.json"],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "spirv_ext_inst_nonsemantic_clspvreflection_grammar_unified1",
|
||||||
|
srcs = ["include/spirv/unified1/extinst.nonsemantic.clspvreflection.grammar.json"],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "spirv_ext_inst_nonsemantic_debugprintf_grammar_unified1",
|
||||||
|
srcs = ["include/spirv/unified1/extinst.nonsemantic.debugprintf.grammar.json"],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "spirv_ext_inst_opencl_debuginfo_100_grammar_unified1",
|
||||||
|
srcs = ["include/spirv/unified1/extinst.opencl.debuginfo.100.grammar.json"],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "spirv_ext_inst_spv_amd_gcn_shader_grammar_unified1",
|
||||||
|
srcs = ["include/spirv/unified1/extinst.spv-amd-gcn-shader.grammar.json"],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "spirv_ext_inst_spv_amd_shader_ballot_grammar_unified1",
|
||||||
|
srcs = ["include/spirv/unified1/extinst.spv-amd-shader-ballot.grammar.json"],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "spirv_ext_inst_spv_amd_shader_explicit_vertex_parameter_grammar_unified1",
|
||||||
|
srcs = ["include/spirv/unified1/extinst.spv-amd-shader-explicit-vertex-parameter.grammar.json"],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "spirv_ext_inst_spv_amd_shader_trinary_minmax_grammar_unified1",
|
||||||
|
srcs = ["include/spirv/unified1/extinst.spv-amd-shader-trinary-minmax.grammar.json"],
|
||||||
|
)
|
||||||
|
|
||||||
|
cc_library(
|
||||||
|
name = "spirv_common_headers",
|
||||||
|
hdrs = [
|
||||||
|
"include/spirv/1.0/GLSL.std.450.h",
|
||||||
|
"include/spirv/1.0/OpenCL.std.h",
|
||||||
|
"include/spirv/1.1/GLSL.std.450.h",
|
||||||
|
"include/spirv/1.1/OpenCL.std.h",
|
||||||
|
"include/spirv/1.2/GLSL.std.450.h",
|
||||||
|
"include/spirv/1.2/OpenCL.std.h",
|
||||||
|
"include/spirv/unified1/GLSL.std.450.h",
|
||||||
|
"include/spirv/unified1/NonSemanticClspvReflection.h",
|
||||||
|
"include/spirv/unified1/NonSemanticDebugPrintf.h",
|
||||||
|
"include/spirv/unified1/OpenCL.std.h",
|
||||||
|
],
|
||||||
|
includes = ["include"],
|
||||||
|
)
|
||||||
|
|
||||||
|
cc_library(
|
||||||
|
name = "spirv_c_headers",
|
||||||
|
hdrs = [
|
||||||
|
"include/spirv/1.0/spirv.h",
|
||||||
|
"include/spirv/1.1/spirv.h",
|
||||||
|
"include/spirv/1.2/spirv.h",
|
||||||
|
"include/spirv/unified1/spirv.h",
|
||||||
|
],
|
||||||
|
includes = ["include"],
|
||||||
|
deps = [":spirv_common_headers"],
|
||||||
|
)
|
||||||
|
|
||||||
|
cc_library(
|
||||||
|
name = "spirv_cpp_headers",
|
||||||
|
hdrs = [
|
||||||
|
"include/spirv/1.0/spirv.hpp",
|
||||||
|
"include/spirv/1.1/spirv.hpp",
|
||||||
|
"include/spirv/1.2/spirv.hpp",
|
||||||
|
"include/spirv/unified1/spirv.hpp",
|
||||||
|
],
|
||||||
|
includes = ["include"],
|
||||||
|
deps = [":spirv_common_headers"],
|
||||||
|
)
|
||||||
|
|
||||||
|
cc_library(
|
||||||
|
name = "spirv_cpp11_headers",
|
||||||
|
hdrs = [
|
||||||
|
"include/spirv/1.0/spirv.hpp11",
|
||||||
|
"include/spirv/1.1/spirv.hpp11",
|
||||||
|
"include/spirv/1.2/spirv.hpp11",
|
||||||
|
"include/spirv/unified1/spirv.hpp11",
|
||||||
|
],
|
||||||
|
includes = ["include"],
|
||||||
|
deps = [":spirv_common_headers"],
|
||||||
|
)
|
||||||
|
|
44
externals/sirit/externals/SPIRV-Headers/BUILD.gn
vendored
Executable file
44
externals/sirit/externals/SPIRV-Headers/BUILD.gn
vendored
Executable file
@ -0,0 +1,44 @@
|
|||||||
|
# Copyright (c) 2020 Google LLC
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and/or associated documentation files (the "Materials"),
|
||||||
|
# to deal in the Materials without restriction, including without limitation
|
||||||
|
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
# and/or sell copies of the Materials, and to permit persons to whom the
|
||||||
|
# Materials are furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Materials.
|
||||||
|
#
|
||||||
|
# MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
|
||||||
|
# STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
|
||||||
|
# HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/
|
||||||
|
#
|
||||||
|
# THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||||
|
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
# FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
|
||||||
|
# IN THE MATERIALS.
|
||||||
|
|
||||||
|
config("spv_headers_public_config") {
|
||||||
|
include_dirs = [ "include" ]
|
||||||
|
}
|
||||||
|
|
||||||
|
source_set("spv_headers") {
|
||||||
|
sources = [
|
||||||
|
"include/spirv/1.2/GLSL.std.450.h",
|
||||||
|
"include/spirv/1.2/OpenCL.std.h",
|
||||||
|
"include/spirv/1.2/spirv.h",
|
||||||
|
"include/spirv/1.2/spirv.hpp",
|
||||||
|
"include/spirv/unified1/GLSL.std.450.h",
|
||||||
|
"include/spirv/unified1/NonSemanticClspvReflection.h",
|
||||||
|
"include/spirv/unified1/NonSemanticDebugPrintf.h",
|
||||||
|
"include/spirv/unified1/OpenCL.std.h",
|
||||||
|
"include/spirv/unified1/spirv.h",
|
||||||
|
"include/spirv/unified1/spirv.hpp",
|
||||||
|
]
|
||||||
|
|
||||||
|
public_configs = [ ":spv_headers_public_config" ]
|
||||||
|
}
|
@ -28,8 +28,8 @@
|
|||||||
# The SPIR-V headers from the SPIR-V Registry
|
# The SPIR-V headers from the SPIR-V Registry
|
||||||
# https://www.khronos.org/registry/spir-v/
|
# https://www.khronos.org/registry/spir-v/
|
||||||
#
|
#
|
||||||
cmake_minimum_required(VERSION 2.8.11)
|
cmake_minimum_required(VERSION 3.0)
|
||||||
project(SPIRV-Headers)
|
project(SPIRV-Headers VERSION 1.5.1)
|
||||||
|
|
||||||
# There are two ways to use this project.
|
# There are two ways to use this project.
|
||||||
#
|
#
|
||||||
@ -44,17 +44,84 @@ project(SPIRV-Headers)
|
|||||||
# 2. cmake ..
|
# 2. cmake ..
|
||||||
# 3. cmake --build . --target install
|
# 3. cmake --build . --target install
|
||||||
|
|
||||||
file(GLOB_RECURSE HEADER_FILES
|
|
||||||
RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
|
|
||||||
include/spirv/*)
|
|
||||||
foreach(HEADER_FILE ${HEADER_FILES})
|
|
||||||
get_filename_component(HEADER_INSTALL_DIR ${HEADER_FILE} PATH)
|
|
||||||
install(FILES ${HEADER_FILE} DESTINATION ${HEADER_INSTALL_DIR})
|
|
||||||
endforeach()
|
|
||||||
|
|
||||||
# legacy
|
# legacy
|
||||||
add_custom_target(install-headers
|
add_custom_target(install-headers
|
||||||
COMMAND cmake -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/include/spirv
|
COMMAND cmake -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/include/spirv
|
||||||
$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/include/spirv)
|
$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/include/spirv)
|
||||||
|
|
||||||
add_subdirectory(example)
|
option(SPIRV_HEADERS_SKIP_EXAMPLES "Skip building examples"
|
||||||
|
${SPIRV_HEADERS_SKIP_EXAMPLES})
|
||||||
|
|
||||||
|
option(SPIRV_HEADERS_SKIP_INSTALL "Skip install"
|
||||||
|
${SPIRV_HEADERS_SKIP_INSTALL})
|
||||||
|
|
||||||
|
if(NOT ${SPIRV_HEADERS_SKIP_EXAMPLES})
|
||||||
|
set(SPIRV_HEADERS_ENABLE_EXAMPLES ON)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT ${SPIRV_HEADERS_SKIP_INSTALL})
|
||||||
|
set(SPIRV_HEADERS_ENABLE_INSTALL ON)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (SPIRV_HEADERS_ENABLE_EXAMPLES)
|
||||||
|
message(STATUS "Building SPIRV-Header examples")
|
||||||
|
add_subdirectory(example)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
include(GNUInstallDirs)
|
||||||
|
add_library(${PROJECT_NAME} INTERFACE)
|
||||||
|
target_include_directories(${PROJECT_NAME} INTERFACE
|
||||||
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
|
||||||
|
)
|
||||||
|
|
||||||
|
# Installation
|
||||||
|
|
||||||
|
if (SPIRV_HEADERS_ENABLE_INSTALL)
|
||||||
|
message(STATUS "Installing SPIRV-Header")
|
||||||
|
|
||||||
|
set(config_install_dir "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}")
|
||||||
|
|
||||||
|
set(generated_dir "${CMAKE_CURRENT_BINARY_DIR}/generated")
|
||||||
|
|
||||||
|
set(version_config "${generated_dir}/${PROJECT_NAME}ConfigVersion.cmake")
|
||||||
|
set(project_config "${generated_dir}/${PROJECT_NAME}Config.cmake")
|
||||||
|
set(TARGETS_EXPORT_NAME "${PROJECT_NAME}Targets")
|
||||||
|
set(namespace "${PROJECT_NAME}::")
|
||||||
|
|
||||||
|
include(CMakePackageConfigHelpers)
|
||||||
|
write_basic_package_version_file(
|
||||||
|
"${version_config}"
|
||||||
|
COMPATIBILITY SameMajorVersion
|
||||||
|
)
|
||||||
|
|
||||||
|
configure_package_config_file(
|
||||||
|
"cmake/Config.cmake.in"
|
||||||
|
"${project_config}"
|
||||||
|
INSTALL_DESTINATION "${config_install_dir}"
|
||||||
|
)
|
||||||
|
|
||||||
|
install(
|
||||||
|
TARGETS ${PROJECT_NAME}
|
||||||
|
EXPORT "${TARGETS_EXPORT_NAME}"
|
||||||
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
|
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||||
|
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
||||||
|
)
|
||||||
|
|
||||||
|
install(
|
||||||
|
DIRECTORY include/spirv
|
||||||
|
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
||||||
|
)
|
||||||
|
|
||||||
|
install(
|
||||||
|
FILES "${project_config}" "${version_config}"
|
||||||
|
DESTINATION "${config_install_dir}"
|
||||||
|
)
|
||||||
|
|
||||||
|
install(
|
||||||
|
EXPORT "${TARGETS_EXPORT_NAME}"
|
||||||
|
NAMESPACE "${namespace}"
|
||||||
|
DESTINATION "${config_install_dir}"
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
1
externals/sirit/externals/SPIRV-Headers/CODE_OF_CONDUCT.md
vendored
Executable file
1
externals/sirit/externals/SPIRV-Headers/CODE_OF_CONDUCT.md
vendored
Executable file
@ -0,0 +1 @@
|
|||||||
|
A reminder that this issue tracker is managed by the Khronos Group. Interactions here should follow the Khronos Code of Conduct (https://www.khronos.org/developers/code-of-conduct), which prohibits aggressive or derogatory language. Please keep the discussion friendly and civil.
|
@ -23,12 +23,33 @@ When a new version or revision of the SPIR-V specification is published,
|
|||||||
the SPIR-V Working Group will push new commits onto master, updating
|
the SPIR-V Working Group will push new commits onto master, updating
|
||||||
the files under [include](include).
|
the files under [include](include).
|
||||||
|
|
||||||
The SPIR-V XML registry file is updated by Khronos whenever a new enum range is allocated.
|
[The SPIR-V XML registry file](include/spirv/spir-v.xml)
|
||||||
|
is updated by Khronos whenever a new enum range is allocated.
|
||||||
|
|
||||||
Pull requests can be made to
|
Pull requests can be made to
|
||||||
- request allocation of new enum ranges in the XML registry file
|
- request allocation of new enum ranges in the XML registry file
|
||||||
|
- register a new magic number for a SPIR-V generator
|
||||||
- reserve specific tokens in the JSON grammar
|
- reserve specific tokens in the JSON grammar
|
||||||
|
|
||||||
|
### Registering a SPIR-V Generator Magic Number
|
||||||
|
|
||||||
|
Tools that generate SPIR-V should use a magic number in the SPIR-V to help identify the
|
||||||
|
generator.
|
||||||
|
|
||||||
|
Care should be taken to follow existing precedent in populating the details of reserved tokens.
|
||||||
|
This includes:
|
||||||
|
- keeping generator numbers in numeric order
|
||||||
|
- filling out all the existing fields
|
||||||
|
|
||||||
|
### Reserving tokens in the JSON grammar
|
||||||
|
|
||||||
|
Care should be taken to follow existing precedent in populating the details of reserved tokens.
|
||||||
|
This includes:
|
||||||
|
- pointing to what extension has more information, when possible
|
||||||
|
- keeping enumerants in numeric order
|
||||||
|
- when there are aliases, listing the preferred spelling first
|
||||||
|
- adding the statement `"version" : "None"`
|
||||||
|
|
||||||
## How to install the headers
|
## How to install the headers
|
||||||
|
|
||||||
```
|
```
|
||||||
@ -45,6 +66,7 @@ If you want to install them somewhere else, then use
|
|||||||
|
|
||||||
## Using the headers without installing
|
## Using the headers without installing
|
||||||
|
|
||||||
|
### Using CMake
|
||||||
A CMake-based project can use the headers without installing, as follows:
|
A CMake-based project can use the headers without installing, as follows:
|
||||||
|
|
||||||
1. Add an `add_subdirectory` directive to include this source tree.
|
1. Add an `add_subdirectory` directive to include this source tree.
|
||||||
@ -61,7 +83,56 @@ A CMake-based project can use the headers without installing, as follows:
|
|||||||
See also the [example](example/) subdirectory. But since that example is
|
See also the [example](example/) subdirectory. But since that example is
|
||||||
*inside* this repostory, it doesn't use and `add_subdirectory` directive.
|
*inside* this repostory, it doesn't use and `add_subdirectory` directive.
|
||||||
|
|
||||||
## Generating the headers from the JSON grammar
|
### Using Bazel
|
||||||
|
A Bazel-based project can use the headers without installing, as follows:
|
||||||
|
|
||||||
|
1. Add SPIRV-Headers as a submodule of your project, and add a
|
||||||
|
`local_repository` to your `WORKSPACE` file. For example, if you place
|
||||||
|
SPIRV-Headers under `external/spirv-headers`, then add the following to your
|
||||||
|
`WORKSPACE` file:
|
||||||
|
|
||||||
|
```
|
||||||
|
local_repository(
|
||||||
|
name = "spirv_headers",
|
||||||
|
path = "external/spirv-headers",
|
||||||
|
)
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Add one of the following to the `deps` attribute of your build target based
|
||||||
|
on your needs:
|
||||||
|
```
|
||||||
|
@spirv_headers//:spirv_c_headers
|
||||||
|
@spirv_headers//:spirv_cpp_headers
|
||||||
|
@spirv_headers//:spirv_cpp11_headers
|
||||||
|
```
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
```
|
||||||
|
cc_library(
|
||||||
|
name = "project",
|
||||||
|
srcs = [
|
||||||
|
# Path to project sources
|
||||||
|
],
|
||||||
|
hdrs = [
|
||||||
|
# Path to project headers
|
||||||
|
],
|
||||||
|
deps = [
|
||||||
|
"@spirv_tools//:spirv_c_headers",
|
||||||
|
# Other dependencies,
|
||||||
|
],
|
||||||
|
)
|
||||||
|
```
|
||||||
|
|
||||||
|
3. In your C or C++ source code use `#include` directives that explicitly mention
|
||||||
|
the `spirv` path component.
|
||||||
|
```
|
||||||
|
#include "spirv/unified1/GLSL.std.450.h"
|
||||||
|
#include "spirv/unified1/OpenCL.std.h"
|
||||||
|
#include "spirv/unified1/spirv.hpp"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Generating headers from the JSON grammar for the SPIR-V core instruction set
|
||||||
|
|
||||||
This will generally be done by Khronos, for a change to the JSON grammar.
|
This will generally be done by Khronos, for a change to the JSON grammar.
|
||||||
However, the project for the tool to do this is included in this repository,
|
However, the project for the tool to do this is included in this repository,
|
||||||
@ -79,6 +150,26 @@ Notes:
|
|||||||
and that influences the languages used, for legacy reasons
|
and that influences the languages used, for legacy reasons
|
||||||
- the C++ structures built may similarly include more than strictly necessary, for the same reason
|
- the C++ structures built may similarly include more than strictly necessary, for the same reason
|
||||||
|
|
||||||
|
## Generating C headers for extended instruction sets
|
||||||
|
|
||||||
|
The [GLSL.std.450.h](include/spirv/unified1/GLSL.std.450.h)
|
||||||
|
and [OpenCL.std.h](include/spirv/unified1/OpenCL.std.h) extended instruction set headers
|
||||||
|
are maintained manually.
|
||||||
|
|
||||||
|
The C/C++ header for each of the other extended instruction sets
|
||||||
|
is generated from the corresponding JSON grammar file. For example, the
|
||||||
|
[OpenCLDebugInfo100.h](include/spirv/unified1/OpenCLDebugInfo100.h) header
|
||||||
|
is generated from the
|
||||||
|
[extinst.opencl.debuginfo.100.grammar.json](include/spirv/unified1/extinst.opencl.debuginfo.100.grammar.json)
|
||||||
|
grammar file.
|
||||||
|
|
||||||
|
To generate these C/C++ headers, first make sure `python3` is in your PATH, then
|
||||||
|
invoke the build script as follows:
|
||||||
|
```
|
||||||
|
cd tools/buildHeaders
|
||||||
|
python3 bin/makeExtinstHeaders.py
|
||||||
|
```
|
||||||
|
|
||||||
## FAQ
|
## FAQ
|
||||||
|
|
||||||
* *How are different versions published?*
|
* *How are different versions published?*
|
||||||
|
0
externals/sirit/externals/SPIRV-Headers/WORKSPACE
vendored
Executable file
0
externals/sirit/externals/SPIRV-Headers/WORKSPACE
vendored
Executable file
4
externals/sirit/externals/SPIRV-Headers/cmake/Config.cmake.in
vendored
Executable file
4
externals/sirit/externals/SPIRV-Headers/cmake/Config.cmake.in
vendored
Executable file
@ -0,0 +1,4 @@
|
|||||||
|
@PACKAGE_INIT@
|
||||||
|
|
||||||
|
include("${CMAKE_CURRENT_LIST_DIR}/@TARGETS_EXPORT_NAME@.cmake")
|
||||||
|
check_required_components("@PROJECT_NAME@")
|
@ -2,8 +2,3 @@ add_library(SPIRV-Headers-example
|
|||||||
${CMAKE_CURRENT_SOURCE_DIR}/example.cpp)
|
${CMAKE_CURRENT_SOURCE_DIR}/example.cpp)
|
||||||
target_include_directories(SPIRV-Headers-example
|
target_include_directories(SPIRV-Headers-example
|
||||||
PRIVATE ${SPIRV-Headers_SOURCE_DIR}/include)
|
PRIVATE ${SPIRV-Headers_SOURCE_DIR}/include)
|
||||||
|
|
||||||
add_library(SPIRV-Headers-example-1.1
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/example-1.1.cpp)
|
|
||||||
target_include_directories(SPIRV-Headers-example-1.1
|
|
||||||
PRIVATE ${SPIRV-Headers_SOURCE_DIR}/include)
|
|
||||||
|
@ -24,9 +24,9 @@
|
|||||||
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||||
// MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
// MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
||||||
|
|
||||||
#include <spirv/1.0/GLSL.std.450.h>
|
#include <spirv/unified1/GLSL.std.450.h>
|
||||||
#include <spirv/1.0/OpenCL.std.h>
|
#include <spirv/unified1/OpenCL.std.h>
|
||||||
#include <spirv/1.0/spirv.hpp>
|
#include <spirv/unified1/spirv.hpp>
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
|
993
externals/sirit/externals/SPIRV-Headers/include/spirv/1.0/spirv.cs
vendored
Executable file
993
externals/sirit/externals/SPIRV-Headers/include/spirv/1.0/spirv.cs
vendored
Executable file
@ -0,0 +1,993 @@
|
|||||||
|
// Copyright (c) 2014-2018 The Khronos Group Inc.
|
||||||
|
//
|
||||||
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
// of this software and/or associated documentation files (the "Materials"),
|
||||||
|
// to deal in the Materials without restriction, including without limitation
|
||||||
|
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
// and/or sell copies of the Materials, and to permit persons to whom the
|
||||||
|
// Materials are furnished to do so, subject to the following conditions:
|
||||||
|
//
|
||||||
|
// The above copyright notice and this permission notice shall be included in
|
||||||
|
// all copies or substantial portions of the Materials.
|
||||||
|
//
|
||||||
|
// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
|
||||||
|
// STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
|
||||||
|
// HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/
|
||||||
|
//
|
||||||
|
// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||||
|
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
// FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
|
||||||
|
// IN THE MATERIALS.
|
||||||
|
|
||||||
|
// This header is automatically generated by the same tool that creates
|
||||||
|
// the Binary Section of the SPIR-V specification.
|
||||||
|
|
||||||
|
// Enumeration tokens for SPIR-V, in various styles:
|
||||||
|
// C, C++, C++11, JSON, Lua, Python, C#
|
||||||
|
//
|
||||||
|
// - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL
|
||||||
|
// - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL
|
||||||
|
// - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL
|
||||||
|
// - Lua will use tables, e.g.: spv.SourceLanguage.GLSL
|
||||||
|
// - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL']
|
||||||
|
// - C# will use enum classes in the Specification class located in the "Spv" namespace, e.g.: Spv.Specification.SourceLanguage.GLSL
|
||||||
|
//
|
||||||
|
// Some tokens act like mask values, which can be OR'd together,
|
||||||
|
// while others are mutually exclusive. The mask-like ones have
|
||||||
|
// "Mask" in their name, and a parallel enum that has the shift
|
||||||
|
// amount (1 << x) for each corresponding enumerant.
|
||||||
|
|
||||||
|
namespace Spv
|
||||||
|
{
|
||||||
|
|
||||||
|
public static class Specification
|
||||||
|
{
|
||||||
|
public const uint MagicNumber = 0x07230203;
|
||||||
|
public const uint Version = 0x00010000;
|
||||||
|
public const uint Revision = 12;
|
||||||
|
public const uint OpCodeMask = 0xffff;
|
||||||
|
public const uint WordCountShift = 16;
|
||||||
|
|
||||||
|
public enum SourceLanguage
|
||||||
|
{
|
||||||
|
Unknown = 0,
|
||||||
|
ESSL = 1,
|
||||||
|
GLSL = 2,
|
||||||
|
OpenCL_C = 3,
|
||||||
|
OpenCL_CPP = 4,
|
||||||
|
HLSL = 5,
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum ExecutionModel
|
||||||
|
{
|
||||||
|
Vertex = 0,
|
||||||
|
TessellationControl = 1,
|
||||||
|
TessellationEvaluation = 2,
|
||||||
|
Geometry = 3,
|
||||||
|
Fragment = 4,
|
||||||
|
GLCompute = 5,
|
||||||
|
Kernel = 6,
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum AddressingModel
|
||||||
|
{
|
||||||
|
Logical = 0,
|
||||||
|
Physical32 = 1,
|
||||||
|
Physical64 = 2,
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum MemoryModel
|
||||||
|
{
|
||||||
|
Simple = 0,
|
||||||
|
GLSL450 = 1,
|
||||||
|
OpenCL = 2,
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum ExecutionMode
|
||||||
|
{
|
||||||
|
Invocations = 0,
|
||||||
|
SpacingEqual = 1,
|
||||||
|
SpacingFractionalEven = 2,
|
||||||
|
SpacingFractionalOdd = 3,
|
||||||
|
VertexOrderCw = 4,
|
||||||
|
VertexOrderCcw = 5,
|
||||||
|
PixelCenterInteger = 6,
|
||||||
|
OriginUpperLeft = 7,
|
||||||
|
OriginLowerLeft = 8,
|
||||||
|
EarlyFragmentTests = 9,
|
||||||
|
PointMode = 10,
|
||||||
|
Xfb = 11,
|
||||||
|
DepthReplacing = 12,
|
||||||
|
DepthGreater = 14,
|
||||||
|
DepthLess = 15,
|
||||||
|
DepthUnchanged = 16,
|
||||||
|
LocalSize = 17,
|
||||||
|
LocalSizeHint = 18,
|
||||||
|
InputPoints = 19,
|
||||||
|
InputLines = 20,
|
||||||
|
InputLinesAdjacency = 21,
|
||||||
|
Triangles = 22,
|
||||||
|
InputTrianglesAdjacency = 23,
|
||||||
|
Quads = 24,
|
||||||
|
Isolines = 25,
|
||||||
|
OutputVertices = 26,
|
||||||
|
OutputPoints = 27,
|
||||||
|
OutputLineStrip = 28,
|
||||||
|
OutputTriangleStrip = 29,
|
||||||
|
VecTypeHint = 30,
|
||||||
|
ContractionOff = 31,
|
||||||
|
PostDepthCoverage = 4446,
|
||||||
|
StencilRefReplacingEXT = 5027,
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum StorageClass
|
||||||
|
{
|
||||||
|
UniformConstant = 0,
|
||||||
|
Input = 1,
|
||||||
|
Uniform = 2,
|
||||||
|
Output = 3,
|
||||||
|
Workgroup = 4,
|
||||||
|
CrossWorkgroup = 5,
|
||||||
|
Private = 6,
|
||||||
|
Function = 7,
|
||||||
|
Generic = 8,
|
||||||
|
PushConstant = 9,
|
||||||
|
AtomicCounter = 10,
|
||||||
|
Image = 11,
|
||||||
|
StorageBuffer = 12,
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum Dim
|
||||||
|
{
|
||||||
|
Dim1D = 0,
|
||||||
|
Dim2D = 1,
|
||||||
|
Dim3D = 2,
|
||||||
|
Cube = 3,
|
||||||
|
Rect = 4,
|
||||||
|
Buffer = 5,
|
||||||
|
SubpassData = 6,
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum SamplerAddressingMode
|
||||||
|
{
|
||||||
|
None = 0,
|
||||||
|
ClampToEdge = 1,
|
||||||
|
Clamp = 2,
|
||||||
|
Repeat = 3,
|
||||||
|
RepeatMirrored = 4,
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum SamplerFilterMode
|
||||||
|
{
|
||||||
|
Nearest = 0,
|
||||||
|
Linear = 1,
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum ImageFormat
|
||||||
|
{
|
||||||
|
Unknown = 0,
|
||||||
|
Rgba32f = 1,
|
||||||
|
Rgba16f = 2,
|
||||||
|
R32f = 3,
|
||||||
|
Rgba8 = 4,
|
||||||
|
Rgba8Snorm = 5,
|
||||||
|
Rg32f = 6,
|
||||||
|
Rg16f = 7,
|
||||||
|
R11fG11fB10f = 8,
|
||||||
|
R16f = 9,
|
||||||
|
Rgba16 = 10,
|
||||||
|
Rgb10A2 = 11,
|
||||||
|
Rg16 = 12,
|
||||||
|
Rg8 = 13,
|
||||||
|
R16 = 14,
|
||||||
|
R8 = 15,
|
||||||
|
Rgba16Snorm = 16,
|
||||||
|
Rg16Snorm = 17,
|
||||||
|
Rg8Snorm = 18,
|
||||||
|
R16Snorm = 19,
|
||||||
|
R8Snorm = 20,
|
||||||
|
Rgba32i = 21,
|
||||||
|
Rgba16i = 22,
|
||||||
|
Rgba8i = 23,
|
||||||
|
R32i = 24,
|
||||||
|
Rg32i = 25,
|
||||||
|
Rg16i = 26,
|
||||||
|
Rg8i = 27,
|
||||||
|
R16i = 28,
|
||||||
|
R8i = 29,
|
||||||
|
Rgba32ui = 30,
|
||||||
|
Rgba16ui = 31,
|
||||||
|
Rgba8ui = 32,
|
||||||
|
R32ui = 33,
|
||||||
|
Rgb10a2ui = 34,
|
||||||
|
Rg32ui = 35,
|
||||||
|
Rg16ui = 36,
|
||||||
|
Rg8ui = 37,
|
||||||
|
R16ui = 38,
|
||||||
|
R8ui = 39,
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum ImageChannelOrder
|
||||||
|
{
|
||||||
|
R = 0,
|
||||||
|
A = 1,
|
||||||
|
RG = 2,
|
||||||
|
RA = 3,
|
||||||
|
RGB = 4,
|
||||||
|
RGBA = 5,
|
||||||
|
BGRA = 6,
|
||||||
|
ARGB = 7,
|
||||||
|
Intensity = 8,
|
||||||
|
Luminance = 9,
|
||||||
|
Rx = 10,
|
||||||
|
RGx = 11,
|
||||||
|
RGBx = 12,
|
||||||
|
Depth = 13,
|
||||||
|
DepthStencil = 14,
|
||||||
|
sRGB = 15,
|
||||||
|
sRGBx = 16,
|
||||||
|
sRGBA = 17,
|
||||||
|
sBGRA = 18,
|
||||||
|
ABGR = 19,
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum ImageChannelDataType
|
||||||
|
{
|
||||||
|
SnormInt8 = 0,
|
||||||
|
SnormInt16 = 1,
|
||||||
|
UnormInt8 = 2,
|
||||||
|
UnormInt16 = 3,
|
||||||
|
UnormShort565 = 4,
|
||||||
|
UnormShort555 = 5,
|
||||||
|
UnormInt101010 = 6,
|
||||||
|
SignedInt8 = 7,
|
||||||
|
SignedInt16 = 8,
|
||||||
|
SignedInt32 = 9,
|
||||||
|
UnsignedInt8 = 10,
|
||||||
|
UnsignedInt16 = 11,
|
||||||
|
UnsignedInt32 = 12,
|
||||||
|
HalfFloat = 13,
|
||||||
|
Float = 14,
|
||||||
|
UnormInt24 = 15,
|
||||||
|
UnormInt101010_2 = 16,
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum ImageOperandsShift
|
||||||
|
{
|
||||||
|
Bias = 0,
|
||||||
|
Lod = 1,
|
||||||
|
Grad = 2,
|
||||||
|
ConstOffset = 3,
|
||||||
|
Offset = 4,
|
||||||
|
ConstOffsets = 5,
|
||||||
|
Sample = 6,
|
||||||
|
MinLod = 7,
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum ImageOperandsMask
|
||||||
|
{
|
||||||
|
MaskNone = 0,
|
||||||
|
Bias = 0x00000001,
|
||||||
|
Lod = 0x00000002,
|
||||||
|
Grad = 0x00000004,
|
||||||
|
ConstOffset = 0x00000008,
|
||||||
|
Offset = 0x00000010,
|
||||||
|
ConstOffsets = 0x00000020,
|
||||||
|
Sample = 0x00000040,
|
||||||
|
MinLod = 0x00000080,
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum FPFastMathModeShift
|
||||||
|
{
|
||||||
|
NotNaN = 0,
|
||||||
|
NotInf = 1,
|
||||||
|
NSZ = 2,
|
||||||
|
AllowRecip = 3,
|
||||||
|
Fast = 4,
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum FPFastMathModeMask
|
||||||
|
{
|
||||||
|
MaskNone = 0,
|
||||||
|
NotNaN = 0x00000001,
|
||||||
|
NotInf = 0x00000002,
|
||||||
|
NSZ = 0x00000004,
|
||||||
|
AllowRecip = 0x00000008,
|
||||||
|
Fast = 0x00000010,
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum FPRoundingMode
|
||||||
|
{
|
||||||
|
RTE = 0,
|
||||||
|
RTZ = 1,
|
||||||
|
RTP = 2,
|
||||||
|
RTN = 3,
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum LinkageType
|
||||||
|
{
|
||||||
|
Export = 0,
|
||||||
|
Import = 1,
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum AccessQualifier
|
||||||
|
{
|
||||||
|
ReadOnly = 0,
|
||||||
|
WriteOnly = 1,
|
||||||
|
ReadWrite = 2,
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum FunctionParameterAttribute
|
||||||
|
{
|
||||||
|
Zext = 0,
|
||||||
|
Sext = 1,
|
||||||
|
ByVal = 2,
|
||||||
|
Sret = 3,
|
||||||
|
NoAlias = 4,
|
||||||
|
NoCapture = 5,
|
||||||
|
NoWrite = 6,
|
||||||
|
NoReadWrite = 7,
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum Decoration
|
||||||
|
{
|
||||||
|
RelaxedPrecision = 0,
|
||||||
|
SpecId = 1,
|
||||||
|
Block = 2,
|
||||||
|
BufferBlock = 3,
|
||||||
|
RowMajor = 4,
|
||||||
|
ColMajor = 5,
|
||||||
|
ArrayStride = 6,
|
||||||
|
MatrixStride = 7,
|
||||||
|
GLSLShared = 8,
|
||||||
|
GLSLPacked = 9,
|
||||||
|
CPacked = 10,
|
||||||
|
BuiltIn = 11,
|
||||||
|
NoPerspective = 13,
|
||||||
|
Flat = 14,
|
||||||
|
Patch = 15,
|
||||||
|
Centroid = 16,
|
||||||
|
Sample = 17,
|
||||||
|
Invariant = 18,
|
||||||
|
Restrict = 19,
|
||||||
|
Aliased = 20,
|
||||||
|
Volatile = 21,
|
||||||
|
Constant = 22,
|
||||||
|
Coherent = 23,
|
||||||
|
NonWritable = 24,
|
||||||
|
NonReadable = 25,
|
||||||
|
Uniform = 26,
|
||||||
|
SaturatedConversion = 28,
|
||||||
|
Stream = 29,
|
||||||
|
Location = 30,
|
||||||
|
Component = 31,
|
||||||
|
Index = 32,
|
||||||
|
Binding = 33,
|
||||||
|
DescriptorSet = 34,
|
||||||
|
Offset = 35,
|
||||||
|
XfbBuffer = 36,
|
||||||
|
XfbStride = 37,
|
||||||
|
FuncParamAttr = 38,
|
||||||
|
FPRoundingMode = 39,
|
||||||
|
FPFastMathMode = 40,
|
||||||
|
LinkageAttributes = 41,
|
||||||
|
NoContraction = 42,
|
||||||
|
InputAttachmentIndex = 43,
|
||||||
|
Alignment = 44,
|
||||||
|
ExplicitInterpAMD = 4999,
|
||||||
|
OverrideCoverageNV = 5248,
|
||||||
|
PassthroughNV = 5250,
|
||||||
|
ViewportRelativeNV = 5252,
|
||||||
|
SecondaryViewportRelativeNV = 5256,
|
||||||
|
HlslCounterBufferGOOGLE = 5634,
|
||||||
|
HlslSemanticGOOGLE = 5635,
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum BuiltIn
|
||||||
|
{
|
||||||
|
Position = 0,
|
||||||
|
PointSize = 1,
|
||||||
|
ClipDistance = 3,
|
||||||
|
CullDistance = 4,
|
||||||
|
VertexId = 5,
|
||||||
|
InstanceId = 6,
|
||||||
|
PrimitiveId = 7,
|
||||||
|
InvocationId = 8,
|
||||||
|
Layer = 9,
|
||||||
|
ViewportIndex = 10,
|
||||||
|
TessLevelOuter = 11,
|
||||||
|
TessLevelInner = 12,
|
||||||
|
TessCoord = 13,
|
||||||
|
PatchVertices = 14,
|
||||||
|
FragCoord = 15,
|
||||||
|
PointCoord = 16,
|
||||||
|
FrontFacing = 17,
|
||||||
|
SampleId = 18,
|
||||||
|
SamplePosition = 19,
|
||||||
|
SampleMask = 20,
|
||||||
|
FragDepth = 22,
|
||||||
|
HelperInvocation = 23,
|
||||||
|
NumWorkgroups = 24,
|
||||||
|
WorkgroupSize = 25,
|
||||||
|
WorkgroupId = 26,
|
||||||
|
LocalInvocationId = 27,
|
||||||
|
GlobalInvocationId = 28,
|
||||||
|
LocalInvocationIndex = 29,
|
||||||
|
WorkDim = 30,
|
||||||
|
GlobalSize = 31,
|
||||||
|
EnqueuedWorkgroupSize = 32,
|
||||||
|
GlobalOffset = 33,
|
||||||
|
GlobalLinearId = 34,
|
||||||
|
SubgroupSize = 36,
|
||||||
|
SubgroupMaxSize = 37,
|
||||||
|
NumSubgroups = 38,
|
||||||
|
NumEnqueuedSubgroups = 39,
|
||||||
|
SubgroupId = 40,
|
||||||
|
SubgroupLocalInvocationId = 41,
|
||||||
|
VertexIndex = 42,
|
||||||
|
InstanceIndex = 43,
|
||||||
|
SubgroupEqMaskKHR = 4416,
|
||||||
|
SubgroupGeMaskKHR = 4417,
|
||||||
|
SubgroupGtMaskKHR = 4418,
|
||||||
|
SubgroupLeMaskKHR = 4419,
|
||||||
|
SubgroupLtMaskKHR = 4420,
|
||||||
|
BaseVertex = 4424,
|
||||||
|
BaseInstance = 4425,
|
||||||
|
DrawIndex = 4426,
|
||||||
|
DeviceIndex = 4438,
|
||||||
|
ViewIndex = 4440,
|
||||||
|
BaryCoordNoPerspAMD = 4992,
|
||||||
|
BaryCoordNoPerspCentroidAMD = 4993,
|
||||||
|
BaryCoordNoPerspSampleAMD = 4994,
|
||||||
|
BaryCoordSmoothAMD = 4995,
|
||||||
|
BaryCoordSmoothCentroidAMD = 4996,
|
||||||
|
BaryCoordSmoothSampleAMD = 4997,
|
||||||
|
BaryCoordPullModelAMD = 4998,
|
||||||
|
FragStencilRefEXT = 5014,
|
||||||
|
ViewportMaskNV = 5253,
|
||||||
|
SecondaryPositionNV = 5257,
|
||||||
|
SecondaryViewportMaskNV = 5258,
|
||||||
|
PositionPerViewNV = 5261,
|
||||||
|
ViewportMaskPerViewNV = 5262,
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum SelectionControlShift
|
||||||
|
{
|
||||||
|
Flatten = 0,
|
||||||
|
DontFlatten = 1,
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum SelectionControlMask
|
||||||
|
{
|
||||||
|
MaskNone = 0,
|
||||||
|
Flatten = 0x00000001,
|
||||||
|
DontFlatten = 0x00000002,
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum LoopControlShift
|
||||||
|
{
|
||||||
|
Unroll = 0,
|
||||||
|
DontUnroll = 1,
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum LoopControlMask
|
||||||
|
{
|
||||||
|
MaskNone = 0,
|
||||||
|
Unroll = 0x00000001,
|
||||||
|
DontUnroll = 0x00000002,
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum FunctionControlShift
|
||||||
|
{
|
||||||
|
Inline = 0,
|
||||||
|
DontInline = 1,
|
||||||
|
Pure = 2,
|
||||||
|
Const = 3,
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum FunctionControlMask
|
||||||
|
{
|
||||||
|
MaskNone = 0,
|
||||||
|
Inline = 0x00000001,
|
||||||
|
DontInline = 0x00000002,
|
||||||
|
Pure = 0x00000004,
|
||||||
|
Const = 0x00000008,
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum MemorySemanticsShift
|
||||||
|
{
|
||||||
|
Acquire = 1,
|
||||||
|
Release = 2,
|
||||||
|
AcquireRelease = 3,
|
||||||
|
SequentiallyConsistent = 4,
|
||||||
|
UniformMemory = 6,
|
||||||
|
SubgroupMemory = 7,
|
||||||
|
WorkgroupMemory = 8,
|
||||||
|
CrossWorkgroupMemory = 9,
|
||||||
|
AtomicCounterMemory = 10,
|
||||||
|
ImageMemory = 11,
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum MemorySemanticsMask
|
||||||
|
{
|
||||||
|
MaskNone = 0,
|
||||||
|
Acquire = 0x00000002,
|
||||||
|
Release = 0x00000004,
|
||||||
|
AcquireRelease = 0x00000008,
|
||||||
|
SequentiallyConsistent = 0x00000010,
|
||||||
|
UniformMemory = 0x00000040,
|
||||||
|
SubgroupMemory = 0x00000080,
|
||||||
|
WorkgroupMemory = 0x00000100,
|
||||||
|
CrossWorkgroupMemory = 0x00000200,
|
||||||
|
AtomicCounterMemory = 0x00000400,
|
||||||
|
ImageMemory = 0x00000800,
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum MemoryAccessShift
|
||||||
|
{
|
||||||
|
Volatile = 0,
|
||||||
|
Aligned = 1,
|
||||||
|
Nontemporal = 2,
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum MemoryAccessMask
|
||||||
|
{
|
||||||
|
MaskNone = 0,
|
||||||
|
Volatile = 0x00000001,
|
||||||
|
Aligned = 0x00000002,
|
||||||
|
Nontemporal = 0x00000004,
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum Scope
|
||||||
|
{
|
||||||
|
CrossDevice = 0,
|
||||||
|
Device = 1,
|
||||||
|
Workgroup = 2,
|
||||||
|
Subgroup = 3,
|
||||||
|
Invocation = 4,
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum GroupOperation
|
||||||
|
{
|
||||||
|
Reduce = 0,
|
||||||
|
InclusiveScan = 1,
|
||||||
|
ExclusiveScan = 2,
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum KernelEnqueueFlags
|
||||||
|
{
|
||||||
|
NoWait = 0,
|
||||||
|
WaitKernel = 1,
|
||||||
|
WaitWorkGroup = 2,
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum KernelProfilingInfoShift
|
||||||
|
{
|
||||||
|
CmdExecTime = 0,
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum KernelProfilingInfoMask
|
||||||
|
{
|
||||||
|
MaskNone = 0,
|
||||||
|
CmdExecTime = 0x00000001,
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum Capability
|
||||||
|
{
|
||||||
|
Matrix = 0,
|
||||||
|
Shader = 1,
|
||||||
|
Geometry = 2,
|
||||||
|
Tessellation = 3,
|
||||||
|
Addresses = 4,
|
||||||
|
Linkage = 5,
|
||||||
|
Kernel = 6,
|
||||||
|
Vector16 = 7,
|
||||||
|
Float16Buffer = 8,
|
||||||
|
Float16 = 9,
|
||||||
|
Float64 = 10,
|
||||||
|
Int64 = 11,
|
||||||
|
Int64Atomics = 12,
|
||||||
|
ImageBasic = 13,
|
||||||
|
ImageReadWrite = 14,
|
||||||
|
ImageMipmap = 15,
|
||||||
|
Pipes = 17,
|
||||||
|
Groups = 18,
|
||||||
|
DeviceEnqueue = 19,
|
||||||
|
LiteralSampler = 20,
|
||||||
|
AtomicStorage = 21,
|
||||||
|
Int16 = 22,
|
||||||
|
TessellationPointSize = 23,
|
||||||
|
GeometryPointSize = 24,
|
||||||
|
ImageGatherExtended = 25,
|
||||||
|
StorageImageMultisample = 27,
|
||||||
|
UniformBufferArrayDynamicIndexing = 28,
|
||||||
|
SampledImageArrayDynamicIndexing = 29,
|
||||||
|
StorageBufferArrayDynamicIndexing = 30,
|
||||||
|
StorageImageArrayDynamicIndexing = 31,
|
||||||
|
ClipDistance = 32,
|
||||||
|
CullDistance = 33,
|
||||||
|
ImageCubeArray = 34,
|
||||||
|
SampleRateShading = 35,
|
||||||
|
ImageRect = 36,
|
||||||
|
SampledRect = 37,
|
||||||
|
GenericPointer = 38,
|
||||||
|
Int8 = 39,
|
||||||
|
InputAttachment = 40,
|
||||||
|
SparseResidency = 41,
|
||||||
|
MinLod = 42,
|
||||||
|
Sampled1D = 43,
|
||||||
|
Image1D = 44,
|
||||||
|
SampledCubeArray = 45,
|
||||||
|
SampledBuffer = 46,
|
||||||
|
ImageBuffer = 47,
|
||||||
|
ImageMSArray = 48,
|
||||||
|
StorageImageExtendedFormats = 49,
|
||||||
|
ImageQuery = 50,
|
||||||
|
DerivativeControl = 51,
|
||||||
|
InterpolationFunction = 52,
|
||||||
|
TransformFeedback = 53,
|
||||||
|
GeometryStreams = 54,
|
||||||
|
StorageImageReadWithoutFormat = 55,
|
||||||
|
StorageImageWriteWithoutFormat = 56,
|
||||||
|
MultiViewport = 57,
|
||||||
|
SubgroupBallotKHR = 4423,
|
||||||
|
DrawParameters = 4427,
|
||||||
|
SubgroupVoteKHR = 4431,
|
||||||
|
StorageBuffer16BitAccess = 4433,
|
||||||
|
StorageUniformBufferBlock16 = 4433,
|
||||||
|
StorageUniform16 = 4434,
|
||||||
|
UniformAndStorageBuffer16BitAccess = 4434,
|
||||||
|
StoragePushConstant16 = 4435,
|
||||||
|
StorageInputOutput16 = 4436,
|
||||||
|
DeviceGroup = 4437,
|
||||||
|
MultiView = 4439,
|
||||||
|
VariablePointersStorageBuffer = 4441,
|
||||||
|
VariablePointers = 4442,
|
||||||
|
AtomicStorageOps = 4445,
|
||||||
|
SampleMaskPostDepthCoverage = 4447,
|
||||||
|
ImageGatherBiasLodAMD = 5009,
|
||||||
|
FragmentMaskAMD = 5010,
|
||||||
|
StencilExportEXT = 5013,
|
||||||
|
ImageReadWriteLodAMD = 5015,
|
||||||
|
SampleMaskOverrideCoverageNV = 5249,
|
||||||
|
GeometryShaderPassthroughNV = 5251,
|
||||||
|
ShaderViewportIndexLayerEXT = 5254,
|
||||||
|
ShaderViewportIndexLayerNV = 5254,
|
||||||
|
ShaderViewportMaskNV = 5255,
|
||||||
|
ShaderStereoViewNV = 5259,
|
||||||
|
PerViewAttributesNV = 5260,
|
||||||
|
SubgroupShuffleINTEL = 5568,
|
||||||
|
SubgroupBufferBlockIOINTEL = 5569,
|
||||||
|
SubgroupImageBlockIOINTEL = 5570,
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum Op
|
||||||
|
{
|
||||||
|
OpNop = 0,
|
||||||
|
OpUndef = 1,
|
||||||
|
OpSourceContinued = 2,
|
||||||
|
OpSource = 3,
|
||||||
|
OpSourceExtension = 4,
|
||||||
|
OpName = 5,
|
||||||
|
OpMemberName = 6,
|
||||||
|
OpString = 7,
|
||||||
|
OpLine = 8,
|
||||||
|
OpExtension = 10,
|
||||||
|
OpExtInstImport = 11,
|
||||||
|
OpExtInst = 12,
|
||||||
|
OpMemoryModel = 14,
|
||||||
|
OpEntryPoint = 15,
|
||||||
|
OpExecutionMode = 16,
|
||||||
|
OpCapability = 17,
|
||||||
|
OpTypeVoid = 19,
|
||||||
|
OpTypeBool = 20,
|
||||||
|
OpTypeInt = 21,
|
||||||
|
OpTypeFloat = 22,
|
||||||
|
OpTypeVector = 23,
|
||||||
|
OpTypeMatrix = 24,
|
||||||
|
OpTypeImage = 25,
|
||||||
|
OpTypeSampler = 26,
|
||||||
|
OpTypeSampledImage = 27,
|
||||||
|
OpTypeArray = 28,
|
||||||
|
OpTypeRuntimeArray = 29,
|
||||||
|
OpTypeStruct = 30,
|
||||||
|
OpTypeOpaque = 31,
|
||||||
|
OpTypePointer = 32,
|
||||||
|
OpTypeFunction = 33,
|
||||||
|
OpTypeEvent = 34,
|
||||||
|
OpTypeDeviceEvent = 35,
|
||||||
|
OpTypeReserveId = 36,
|
||||||
|
OpTypeQueue = 37,
|
||||||
|
OpTypePipe = 38,
|
||||||
|
OpTypeForwardPointer = 39,
|
||||||
|
OpConstantTrue = 41,
|
||||||
|
OpConstantFalse = 42,
|
||||||
|
OpConstant = 43,
|
||||||
|
OpConstantComposite = 44,
|
||||||
|
OpConstantSampler = 45,
|
||||||
|
OpConstantNull = 46,
|
||||||
|
OpSpecConstantTrue = 48,
|
||||||
|
OpSpecConstantFalse = 49,
|
||||||
|
OpSpecConstant = 50,
|
||||||
|
OpSpecConstantComposite = 51,
|
||||||
|
OpSpecConstantOp = 52,
|
||||||
|
OpFunction = 54,
|
||||||
|
OpFunctionParameter = 55,
|
||||||
|
OpFunctionEnd = 56,
|
||||||
|
OpFunctionCall = 57,
|
||||||
|
OpVariable = 59,
|
||||||
|
OpImageTexelPointer = 60,
|
||||||
|
OpLoad = 61,
|
||||||
|
OpStore = 62,
|
||||||
|
OpCopyMemory = 63,
|
||||||
|
OpCopyMemorySized = 64,
|
||||||
|
OpAccessChain = 65,
|
||||||
|
OpInBoundsAccessChain = 66,
|
||||||
|
OpPtrAccessChain = 67,
|
||||||
|
OpArrayLength = 68,
|
||||||
|
OpGenericPtrMemSemantics = 69,
|
||||||
|
OpInBoundsPtrAccessChain = 70,
|
||||||
|
OpDecorate = 71,
|
||||||
|
OpMemberDecorate = 72,
|
||||||
|
OpDecorationGroup = 73,
|
||||||
|
OpGroupDecorate = 74,
|
||||||
|
OpGroupMemberDecorate = 75,
|
||||||
|
OpVectorExtractDynamic = 77,
|
||||||
|
OpVectorInsertDynamic = 78,
|
||||||
|
OpVectorShuffle = 79,
|
||||||
|
OpCompositeConstruct = 80,
|
||||||
|
OpCompositeExtract = 81,
|
||||||
|
OpCompositeInsert = 82,
|
||||||
|
OpCopyObject = 83,
|
||||||
|
OpTranspose = 84,
|
||||||
|
OpSampledImage = 86,
|
||||||
|
OpImageSampleImplicitLod = 87,
|
||||||
|
OpImageSampleExplicitLod = 88,
|
||||||
|
OpImageSampleDrefImplicitLod = 89,
|
||||||
|
OpImageSampleDrefExplicitLod = 90,
|
||||||
|
OpImageSampleProjImplicitLod = 91,
|
||||||
|
OpImageSampleProjExplicitLod = 92,
|
||||||
|
OpImageSampleProjDrefImplicitLod = 93,
|
||||||
|
OpImageSampleProjDrefExplicitLod = 94,
|
||||||
|
OpImageFetch = 95,
|
||||||
|
OpImageGather = 96,
|
||||||
|
OpImageDrefGather = 97,
|
||||||
|
OpImageRead = 98,
|
||||||
|
OpImageWrite = 99,
|
||||||
|
OpImage = 100,
|
||||||
|
OpImageQueryFormat = 101,
|
||||||
|
OpImageQueryOrder = 102,
|
||||||
|
OpImageQuerySizeLod = 103,
|
||||||
|
OpImageQuerySize = 104,
|
||||||
|
OpImageQueryLod = 105,
|
||||||
|
OpImageQueryLevels = 106,
|
||||||
|
OpImageQuerySamples = 107,
|
||||||
|
OpConvertFToU = 109,
|
||||||
|
OpConvertFToS = 110,
|
||||||
|
OpConvertSToF = 111,
|
||||||
|
OpConvertUToF = 112,
|
||||||
|
OpUConvert = 113,
|
||||||
|
OpSConvert = 114,
|
||||||
|
OpFConvert = 115,
|
||||||
|
OpQuantizeToF16 = 116,
|
||||||
|
OpConvertPtrToU = 117,
|
||||||
|
OpSatConvertSToU = 118,
|
||||||
|
OpSatConvertUToS = 119,
|
||||||
|
OpConvertUToPtr = 120,
|
||||||
|
OpPtrCastToGeneric = 121,
|
||||||
|
OpGenericCastToPtr = 122,
|
||||||
|
OpGenericCastToPtrExplicit = 123,
|
||||||
|
OpBitcast = 124,
|
||||||
|
OpSNegate = 126,
|
||||||
|
OpFNegate = 127,
|
||||||
|
OpIAdd = 128,
|
||||||
|
OpFAdd = 129,
|
||||||
|
OpISub = 130,
|
||||||
|
OpFSub = 131,
|
||||||
|
OpIMul = 132,
|
||||||
|
OpFMul = 133,
|
||||||
|
OpUDiv = 134,
|
||||||
|
OpSDiv = 135,
|
||||||
|
OpFDiv = 136,
|
||||||
|
OpUMod = 137,
|
||||||
|
OpSRem = 138,
|
||||||
|
OpSMod = 139,
|
||||||
|
OpFRem = 140,
|
||||||
|
OpFMod = 141,
|
||||||
|
OpVectorTimesScalar = 142,
|
||||||
|
OpMatrixTimesScalar = 143,
|
||||||
|
OpVectorTimesMatrix = 144,
|
||||||
|
OpMatrixTimesVector = 145,
|
||||||
|
OpMatrixTimesMatrix = 146,
|
||||||
|
OpOuterProduct = 147,
|
||||||
|
OpDot = 148,
|
||||||
|
OpIAddCarry = 149,
|
||||||
|
OpISubBorrow = 150,
|
||||||
|
OpUMulExtended = 151,
|
||||||
|
OpSMulExtended = 152,
|
||||||
|
OpAny = 154,
|
||||||
|
OpAll = 155,
|
||||||
|
OpIsNan = 156,
|
||||||
|
OpIsInf = 157,
|
||||||
|
OpIsFinite = 158,
|
||||||
|
OpIsNormal = 159,
|
||||||
|
OpSignBitSet = 160,
|
||||||
|
OpLessOrGreater = 161,
|
||||||
|
OpOrdered = 162,
|
||||||
|
OpUnordered = 163,
|
||||||
|
OpLogicalEqual = 164,
|
||||||
|
OpLogicalNotEqual = 165,
|
||||||
|
OpLogicalOr = 166,
|
||||||
|
OpLogicalAnd = 167,
|
||||||
|
OpLogicalNot = 168,
|
||||||
|
OpSelect = 169,
|
||||||
|
OpIEqual = 170,
|
||||||
|
OpINotEqual = 171,
|
||||||
|
OpUGreaterThan = 172,
|
||||||
|
OpSGreaterThan = 173,
|
||||||
|
OpUGreaterThanEqual = 174,
|
||||||
|
OpSGreaterThanEqual = 175,
|
||||||
|
OpULessThan = 176,
|
||||||
|
OpSLessThan = 177,
|
||||||
|
OpULessThanEqual = 178,
|
||||||
|
OpSLessThanEqual = 179,
|
||||||
|
OpFOrdEqual = 180,
|
||||||
|
OpFUnordEqual = 181,
|
||||||
|
OpFOrdNotEqual = 182,
|
||||||
|
OpFUnordNotEqual = 183,
|
||||||
|
OpFOrdLessThan = 184,
|
||||||
|
OpFUnordLessThan = 185,
|
||||||
|
OpFOrdGreaterThan = 186,
|
||||||
|
OpFUnordGreaterThan = 187,
|
||||||
|
OpFOrdLessThanEqual = 188,
|
||||||
|
OpFUnordLessThanEqual = 189,
|
||||||
|
OpFOrdGreaterThanEqual = 190,
|
||||||
|
OpFUnordGreaterThanEqual = 191,
|
||||||
|
OpShiftRightLogical = 194,
|
||||||
|
OpShiftRightArithmetic = 195,
|
||||||
|
OpShiftLeftLogical = 196,
|
||||||
|
OpBitwiseOr = 197,
|
||||||
|
OpBitwiseXor = 198,
|
||||||
|
OpBitwiseAnd = 199,
|
||||||
|
OpNot = 200,
|
||||||
|
OpBitFieldInsert = 201,
|
||||||
|
OpBitFieldSExtract = 202,
|
||||||
|
OpBitFieldUExtract = 203,
|
||||||
|
OpBitReverse = 204,
|
||||||
|
OpBitCount = 205,
|
||||||
|
OpDPdx = 207,
|
||||||
|
OpDPdy = 208,
|
||||||
|
OpFwidth = 209,
|
||||||
|
OpDPdxFine = 210,
|
||||||
|
OpDPdyFine = 211,
|
||||||
|
OpFwidthFine = 212,
|
||||||
|
OpDPdxCoarse = 213,
|
||||||
|
OpDPdyCoarse = 214,
|
||||||
|
OpFwidthCoarse = 215,
|
||||||
|
OpEmitVertex = 218,
|
||||||
|
OpEndPrimitive = 219,
|
||||||
|
OpEmitStreamVertex = 220,
|
||||||
|
OpEndStreamPrimitive = 221,
|
||||||
|
OpControlBarrier = 224,
|
||||||
|
OpMemoryBarrier = 225,
|
||||||
|
OpAtomicLoad = 227,
|
||||||
|
OpAtomicStore = 228,
|
||||||
|
OpAtomicExchange = 229,
|
||||||
|
OpAtomicCompareExchange = 230,
|
||||||
|
OpAtomicCompareExchangeWeak = 231,
|
||||||
|
OpAtomicIIncrement = 232,
|
||||||
|
OpAtomicIDecrement = 233,
|
||||||
|
OpAtomicIAdd = 234,
|
||||||
|
OpAtomicISub = 235,
|
||||||
|
OpAtomicSMin = 236,
|
||||||
|
OpAtomicUMin = 237,
|
||||||
|
OpAtomicSMax = 238,
|
||||||
|
OpAtomicUMax = 239,
|
||||||
|
OpAtomicAnd = 240,
|
||||||
|
OpAtomicOr = 241,
|
||||||
|
OpAtomicXor = 242,
|
||||||
|
OpPhi = 245,
|
||||||
|
OpLoopMerge = 246,
|
||||||
|
OpSelectionMerge = 247,
|
||||||
|
OpLabel = 248,
|
||||||
|
OpBranch = 249,
|
||||||
|
OpBranchConditional = 250,
|
||||||
|
OpSwitch = 251,
|
||||||
|
OpKill = 252,
|
||||||
|
OpReturn = 253,
|
||||||
|
OpReturnValue = 254,
|
||||||
|
OpUnreachable = 255,
|
||||||
|
OpLifetimeStart = 256,
|
||||||
|
OpLifetimeStop = 257,
|
||||||
|
OpGroupAsyncCopy = 259,
|
||||||
|
OpGroupWaitEvents = 260,
|
||||||
|
OpGroupAll = 261,
|
||||||
|
OpGroupAny = 262,
|
||||||
|
OpGroupBroadcast = 263,
|
||||||
|
OpGroupIAdd = 264,
|
||||||
|
OpGroupFAdd = 265,
|
||||||
|
OpGroupFMin = 266,
|
||||||
|
OpGroupUMin = 267,
|
||||||
|
OpGroupSMin = 268,
|
||||||
|
OpGroupFMax = 269,
|
||||||
|
OpGroupUMax = 270,
|
||||||
|
OpGroupSMax = 271,
|
||||||
|
OpReadPipe = 274,
|
||||||
|
OpWritePipe = 275,
|
||||||
|
OpReservedReadPipe = 276,
|
||||||
|
OpReservedWritePipe = 277,
|
||||||
|
OpReserveReadPipePackets = 278,
|
||||||
|
OpReserveWritePipePackets = 279,
|
||||||
|
OpCommitReadPipe = 280,
|
||||||
|
OpCommitWritePipe = 281,
|
||||||
|
OpIsValidReserveId = 282,
|
||||||
|
OpGetNumPipePackets = 283,
|
||||||
|
OpGetMaxPipePackets = 284,
|
||||||
|
OpGroupReserveReadPipePackets = 285,
|
||||||
|
OpGroupReserveWritePipePackets = 286,
|
||||||
|
OpGroupCommitReadPipe = 287,
|
||||||
|
OpGroupCommitWritePipe = 288,
|
||||||
|
OpEnqueueMarker = 291,
|
||||||
|
OpEnqueueKernel = 292,
|
||||||
|
OpGetKernelNDrangeSubGroupCount = 293,
|
||||||
|
OpGetKernelNDrangeMaxSubGroupSize = 294,
|
||||||
|
OpGetKernelWorkGroupSize = 295,
|
||||||
|
OpGetKernelPreferredWorkGroupSizeMultiple = 296,
|
||||||
|
OpRetainEvent = 297,
|
||||||
|
OpReleaseEvent = 298,
|
||||||
|
OpCreateUserEvent = 299,
|
||||||
|
OpIsValidEvent = 300,
|
||||||
|
OpSetUserEventStatus = 301,
|
||||||
|
OpCaptureEventProfilingInfo = 302,
|
||||||
|
OpGetDefaultQueue = 303,
|
||||||
|
OpBuildNDRange = 304,
|
||||||
|
OpImageSparseSampleImplicitLod = 305,
|
||||||
|
OpImageSparseSampleExplicitLod = 306,
|
||||||
|
OpImageSparseSampleDrefImplicitLod = 307,
|
||||||
|
OpImageSparseSampleDrefExplicitLod = 308,
|
||||||
|
OpImageSparseSampleProjImplicitLod = 309,
|
||||||
|
OpImageSparseSampleProjExplicitLod = 310,
|
||||||
|
OpImageSparseSampleProjDrefImplicitLod = 311,
|
||||||
|
OpImageSparseSampleProjDrefExplicitLod = 312,
|
||||||
|
OpImageSparseFetch = 313,
|
||||||
|
OpImageSparseGather = 314,
|
||||||
|
OpImageSparseDrefGather = 315,
|
||||||
|
OpImageSparseTexelsResident = 316,
|
||||||
|
OpNoLine = 317,
|
||||||
|
OpAtomicFlagTestAndSet = 318,
|
||||||
|
OpAtomicFlagClear = 319,
|
||||||
|
OpImageSparseRead = 320,
|
||||||
|
OpDecorateId = 332,
|
||||||
|
OpSubgroupBallotKHR = 4421,
|
||||||
|
OpSubgroupFirstInvocationKHR = 4422,
|
||||||
|
OpSubgroupAllKHR = 4428,
|
||||||
|
OpSubgroupAnyKHR = 4429,
|
||||||
|
OpSubgroupAllEqualKHR = 4430,
|
||||||
|
OpSubgroupReadInvocationKHR = 4432,
|
||||||
|
OpGroupIAddNonUniformAMD = 5000,
|
||||||
|
OpGroupFAddNonUniformAMD = 5001,
|
||||||
|
OpGroupFMinNonUniformAMD = 5002,
|
||||||
|
OpGroupUMinNonUniformAMD = 5003,
|
||||||
|
OpGroupSMinNonUniformAMD = 5004,
|
||||||
|
OpGroupFMaxNonUniformAMD = 5005,
|
||||||
|
OpGroupUMaxNonUniformAMD = 5006,
|
||||||
|
OpGroupSMaxNonUniformAMD = 5007,
|
||||||
|
OpFragmentMaskFetchAMD = 5011,
|
||||||
|
OpFragmentFetchAMD = 5012,
|
||||||
|
OpSubgroupShuffleINTEL = 5571,
|
||||||
|
OpSubgroupShuffleDownINTEL = 5572,
|
||||||
|
OpSubgroupShuffleUpINTEL = 5573,
|
||||||
|
OpSubgroupShuffleXorINTEL = 5574,
|
||||||
|
OpSubgroupBlockReadINTEL = 5575,
|
||||||
|
OpSubgroupBlockWriteINTEL = 5576,
|
||||||
|
OpSubgroupImageBlockReadINTEL = 5577,
|
||||||
|
OpSubgroupImageBlockWriteINTEL = 5578,
|
||||||
|
OpDecorateStringGOOGLE = 5632,
|
||||||
|
OpMemberDecorateStringGOOGLE = 5633,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
1015
externals/sirit/externals/SPIRV-Headers/include/spirv/1.1/spirv.cs
vendored
Executable file
1015
externals/sirit/externals/SPIRV-Headers/include/spirv/1.1/spirv.cs
vendored
Executable file
File diff suppressed because it is too large
Load Diff
1021
externals/sirit/externals/SPIRV-Headers/include/spirv/1.2/spirv.cs
vendored
Executable file
1021
externals/sirit/externals/SPIRV-Headers/include/spirv/1.2/spirv.cs
vendored
Executable file
File diff suppressed because it is too large
Load Diff
@ -23,10 +23,11 @@
|
|||||||
MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
||||||
-->
|
-->
|
||||||
<!--
|
<!--
|
||||||
This file, spir-v.xml, is the SPIR-V Tool ID and Opcode registry. The
|
This file, spir-v.xml, is the SPIR-V Tool ID, opcode and enumerant registry.
|
||||||
canonical version of the registry, together with related schema and
|
The canonical version of the registry, together with related schema and
|
||||||
documentation, can be found in the Khronos Registry at
|
documentation, can be found in the Khronos Registry at
|
||||||
http://www.khronos.org/registry/spir-v/
|
include/spirv/spir-v.xml in the master branch at
|
||||||
|
https://github.com/KhronosGroup/SPIRV-Headers
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<!-- SECTION: SPIR-V Tool ID Definitions -->
|
<!-- SECTION: SPIR-V Tool ID Definitions -->
|
||||||
@ -52,7 +53,7 @@
|
|||||||
<id value="0" vendor="Khronos" comment="Reserved by Khronos"/>
|
<id value="0" vendor="Khronos" comment="Reserved by Khronos"/>
|
||||||
<id value="1" vendor="LunarG" comment="Contact TBD"/>
|
<id value="1" vendor="LunarG" comment="Contact TBD"/>
|
||||||
<id value="2" vendor="Valve" comment="Contact TBD"/>
|
<id value="2" vendor="Valve" comment="Contact TBD"/>
|
||||||
<id value="3" vendor="Codeplay" comment="Contact Neil Henning, neil@codeplay.com"/>
|
<id value="3" vendor="Codeplay" comment="Contact Victor Lomuller, victor@codeplay.com"/>
|
||||||
<id value="4" vendor="NVIDIA" comment="Contact Kerch Holt, kholt@nvidia.com"/>
|
<id value="4" vendor="NVIDIA" comment="Contact Kerch Holt, kholt@nvidia.com"/>
|
||||||
<id value="5" vendor="ARM" comment="Contact Alexander Galazin, alexander.galazin@arm.com"/>
|
<id value="5" vendor="ARM" comment="Contact Alexander Galazin, alexander.galazin@arm.com"/>
|
||||||
<id value="6" vendor="Khronos" tool="LLVM/SPIR-V Translator" comment="Contact Yaxun (Sam) Liu, yaxun.liu@amd.com"/>
|
<id value="6" vendor="Khronos" tool="LLVM/SPIR-V Translator" comment="Contact Yaxun (Sam) Liu, yaxun.liu@amd.com"/>
|
||||||
@ -69,13 +70,102 @@
|
|||||||
<id value="17" vendor="Khronos" tool="SPIR-V Tools Linker" comment="Contact David Neto, dneto@google.com"/>
|
<id value="17" vendor="Khronos" tool="SPIR-V Tools Linker" comment="Contact David Neto, dneto@google.com"/>
|
||||||
<id value="18" vendor="Wine" tool="VKD3D Shader Compiler" comment="Contact wine-devel@winehq.org"/>
|
<id value="18" vendor="Wine" tool="VKD3D Shader Compiler" comment="Contact wine-devel@winehq.org"/>
|
||||||
<id value="19" vendor="Clay" tool="Clay Shader Compiler" comment="Contact info@clayengine.com"/>
|
<id value="19" vendor="Clay" tool="Clay Shader Compiler" comment="Contact info@clayengine.com"/>
|
||||||
<unused start="20" end="0xFFFF" comment="Tool ID range reservable for future use by vendors"/>
|
<id value="20" vendor="W3C WebGPU Group" tool="WHLSL Shader Translator" comment="https://github.com/gpuweb/WHLSL"/>
|
||||||
|
<id value="21" vendor="Google" tool="Clspv" comment="Contact David Neto, dneto@google.com"/>
|
||||||
|
<id value="22" vendor="Google" tool="MLIR SPIR-V Serializer" comment="Contact Lei Zhang, antiagainst@google.com"/>
|
||||||
|
<id value="23" vendor="Google" tool="Tint Compiler" comment="Contact David Neto, dneto@google.com"/>
|
||||||
|
<id value="24" vendor="Google" tool="ANGLE Shader Compiler" comment="Contact Shahbaz Youssefi, syoussefi@google.com"/>
|
||||||
|
<id value="25" vendor="Netease Games" tool="Messiah Shader Compiler" comment="Contact Yuwen Wu, atyuwen@gmail.com"/>
|
||||||
|
<id value="26" vendor="Xenia" tool="Xenia Emulator Microcode Translator" comment="Contact Vitaliy Kuzmin, triang3l@yandex.ru, https://github.com/xenia-project/xenia"/>
|
||||||
|
<id value="27" vendor="Embark Studios" tool="Rust GPU Compiler Backend" comment="https://github.com/embarkstudios/rust-gpu"/>
|
||||||
|
<unused start="28" end="0xFFFF" comment="Tool ID range reservable for future use by vendors"/>
|
||||||
</ids>
|
</ids>
|
||||||
|
|
||||||
<!-- SECTION: SPIR-V Opcodes and Enumerants -->
|
<!-- SECTION: SPIR-V Opcodes and Enumerants -->
|
||||||
<!-- Reserve new ranges for vendors in contiguous blocks of 64
|
|
||||||
preceding the "Future use" block below, and modify that block
|
<!-- Vendors reserve new ranges of:
|
||||||
accordingly.
|
- opcode enumerants in the "opcode" list below, and
|
||||||
|
- non-opcode enumerants in the non-opcodes "enumerant" list below.
|
||||||
|
Both are reserved by contiguous blocks of 64, preceding the given
|
||||||
|
"Future use" blocks.
|
||||||
|
|
||||||
|
SPIR-V background:
|
||||||
|
- SPIR-V currently has well over 30 enums, including the opcode enum
|
||||||
|
- each enum has its own name space, allowing reuse of enumerants
|
||||||
|
- SPIR-V restricts opcode enumerants to 16 bits
|
||||||
|
- all other enums use 32-bit enumerants
|
||||||
|
|
||||||
|
Reservation rules:
|
||||||
|
- opcode reservations ("opcode") are only valid for opcodes
|
||||||
|
- non-opcode reservations ("enumerant") are not valid for opcodes
|
||||||
|
- reservations in the enumerant list are valid for all non-opcode enums
|
||||||
|
- it is simpler to use each non-opcode enumerant for only one purpose
|
||||||
|
but this is left to the discretion of the vendor
|
||||||
|
- all enumerants in a range should be used before allocating a new range
|
||||||
|
(several extensions can use enumerants from the same range)
|
||||||
|
|
||||||
|
Each vendor determines the use of enumerants in the ranges they
|
||||||
|
reserve. Vendors are not required to disclose those uses. If the use
|
||||||
|
of an enumerant is included in an extension that is adopted by a Khronos
|
||||||
|
extension or specification, then that enumerant's use may be permanently
|
||||||
|
fixed as if originally reserved in a Khronos range.
|
||||||
|
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!-- Begin reservations of opcode enumerants -->
|
||||||
|
<ids type="opcode" start="0" end="4095" vendor="Khronos" comment="Reserved opcodes, not available to vendors - see the SPIR-V Specification"/>
|
||||||
|
<ids type="opcode" start="4096" end="4159" vendor="Mesa" comment="Contact TBD"/>
|
||||||
|
<ids type="opcode" start="4160" end="4415" vendor="ARM"/>
|
||||||
|
<ids type="opcode" start="4416" end="4479" vendor="Khronos" comment="SPV_ARB_shader_ballot - contact Neil Henning, neil.henning@amd.com"/>
|
||||||
|
<ids type="opcode" start="4480" end="4991" vendor="Qualcomm" comment="Contact weifengz@qti.qualcomm.com"/>
|
||||||
|
<ids type="opcode" start="4992" end="5247" vendor="AMD"/>
|
||||||
|
<ids type="opcode" start="5248" end="5503" vendor="NVIDIA"/>
|
||||||
|
<ids type="opcode" start="5504" end="5567" vendor="Imagination"/>
|
||||||
|
<ids type="opcode" start="5568" end="5631" vendor="Intel" comment="Contact ben.ashbaugh@intel.com"/>
|
||||||
|
<ids type="opcode" start="5632" end="5695" vendor="Google" comment="Contact dneto@google.com"/>
|
||||||
|
<ids type="opcode" start="5696" end="5823" vendor="Intel" comment="Contact ben.ashbaugh@intel.com"/>
|
||||||
|
<ids type="opcode" start="5824" end="5951" vendor="Intel" comment="Contact michael.kinsner@intel.com"/>
|
||||||
|
<ids type="opcode" start="5952" end="6015" vendor="Codeplay" comment="Contact victor@codeplay.com"/>
|
||||||
|
<ids type="opcode" start="6016" end="6079" vendor="Khronos" comment="Contact @tobski"/>
|
||||||
|
<ids type="opcode" start="6080" end="6143" vendor="Intel" comment="Contact mariusz.merecki@intel.com"/>
|
||||||
|
<!-- Opcode enumerants to reserve for future use. To get a block, allocate
|
||||||
|
multiples of 64 starting at the lowest available point in this
|
||||||
|
block and add a corresponding <ids> tag immediately above. Make
|
||||||
|
sure to fill in the vendor attribute, and preferably add a contact
|
||||||
|
person/address in a comment attribute. -->
|
||||||
|
<!-- Example new block: <ids type="opcode" start="XXXX" end="XXXX+64n-1" vendor="Add vendor" comment="Contact TBD"/> -->
|
||||||
|
<ids type="opcode" start="6144" end="65535" comment="Opcode range reservable for future use by vendors"/>
|
||||||
|
<!-- End reservations of opcodes -->
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Begin reservations of non-opcode enumerants -->
|
||||||
|
<ids type="enumerant" start="0" end="4095" vendor="Khronos" comment="Reserved enumerants, not available to vendors - see the SPIR-V Specification"/>
|
||||||
|
<ids type="enumerant" start="4096" end="4159" vendor="Mesa" comment="Contact TBD"/>
|
||||||
|
<ids type="enumerant" start="4160" end="4415" vendor="ARM"/>
|
||||||
|
<ids type="enumerant" start="4416" end="4479" vendor="Khronos" comment="SPV_ARB_shader_ballot - contact Neil Henning, neil.henning@amd.com"/>
|
||||||
|
<ids type="enumerant" start="4480" end="4991" vendor="Qualcomm" comment="Contact weifengz@qti.qualcomm.com"/>
|
||||||
|
<ids type="enumerant" start="4992" end="5247" vendor="AMD"/>
|
||||||
|
<ids type="enumerant" start="5248" end="5503" vendor="NVIDIA"/>
|
||||||
|
<ids type="enumerant" start="5504" end="5567" vendor="Imagination"/>
|
||||||
|
<ids type="enumerant" start="5568" end="5631" vendor="Intel" comment="Contact ben.ashbaugh@intel.com"/>
|
||||||
|
<ids type="enumerant" start="5632" end="5695" vendor="Google" comment="Contact dneto@google.com"/>
|
||||||
|
<ids type="enumerant" start="5696" end="5823" vendor="Intel" comment="Contact ben.ashbaugh@intel.com"/>
|
||||||
|
<ids type="enumerant" start="5824" end="5951" vendor="Intel" comment="Contact michael.kinsner@intel.com"/>
|
||||||
|
<ids type="enumerant" start="5952" end="6015" vendor="Codeplay" comment="Contact victor@codeplay.com"/>
|
||||||
|
<ids type="enumerant" start="6016" end="6079" vendor="Khronos" comment="Contact @tobski"/>
|
||||||
|
<ids type="enumerant" start="6080" end="6143" vendor="Intel" comment="Contact mariusz.merecki@intel.com"/>
|
||||||
|
<!-- Enumerants to reserve for future use. To get a block, allocate
|
||||||
|
multiples of 64 starting at the lowest available point in this
|
||||||
|
block and add a corresponding <ids> tag immediately above. Make
|
||||||
|
sure to fill in the vendor attribute, and preferably add a contact
|
||||||
|
person/address in a comment attribute. -->
|
||||||
|
<!-- Example new block: <ids type="enumerant" start="XXXX" end="XXXX+64n-1" vendor="Add vendor" comment="Contact TBD"/> -->
|
||||||
|
<ids type="enumerant" start="6144" end="4294967295" comment="Enumerant range reservable for future use by vendors"/>
|
||||||
|
<!-- End reservations of enumerants -->
|
||||||
|
|
||||||
|
|
||||||
|
<!-- SECTION: SPIR-V Loop Control Bit Reservations -->
|
||||||
|
<!-- Reserve ranges of bits in the loop control bitfield.
|
||||||
|
|
||||||
Each vendor determines the use of values in their own ranges.
|
Each vendor determines the use of values in their own ranges.
|
||||||
Vendors are not required to disclose those uses. If the use of a
|
Vendors are not required to disclose those uses. If the use of a
|
||||||
@ -86,34 +176,51 @@
|
|||||||
The SPIR Working Group strongly recommends:
|
The SPIR Working Group strongly recommends:
|
||||||
- Each value is used for only one purpose.
|
- Each value is used for only one purpose.
|
||||||
- All values in a range should be used before allocating a new range.
|
- All values in a range should be used before allocating a new range.
|
||||||
For example, to avoid unused gaps in ranges, it is customary for
|
|
||||||
several extensions to use values from the same range.
|
|
||||||
|
|
||||||
The Id type "enum" is a synonym for "opcode".
|
|
||||||
|
|
||||||
Note that SPIR-V restricts opcode values to 16 bits.
|
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<!-- Reserved opcode & enumerant blocks -->
|
<!-- Reserved loop control bits -->
|
||||||
<ids type="opcode" start="0" end="4095" vendor="Khronos" comment="Reserved opcodes, not available to vendors - see the SPIR-V Specification"/>
|
<ids type="LoopControl" start="0" end="15" vendor="Khronos" comment="Reserved LoopControl bits, not available to vendors - see the SPIR-V Specification"/>
|
||||||
<ids type="opcode" start="4096" end="4159" vendor="Mesa" comment="Contact TBD"/>
|
<ids type="LoopControl" start="16" end="23" vendor="Intel" comment="Contact michael.kinsner@intel.com"/>
|
||||||
<ids type="opcode" start="4160" end="4415" vendor="ARM"/>
|
<ids type="LoopControl" start="24" end="30" comment="Unreserved bits reservable for use by vendors"/>
|
||||||
<ids type="opcode" start="4416" end="4479" vendor="Khronos" comment="SPV_ARB_shader_ballot - contact Neil Henning, neil@codeplay.com"/>
|
<ids type="LoopControl" start="31" end="31" vendor="Khronos" comment="Reserved LoopControl bit, not available to vendors"/>
|
||||||
<ids type="opcode" start="4480" end="4991" vendor="Qualcomm" comment="Contact weifengz@qti.qualcomm.com"/>
|
|
||||||
<ids type="opcode" start="4992" end="5247" vendor="AMD"/>
|
|
||||||
<ids type="opcode" start="5248" end="5503" vendor="NVIDIA"/>
|
|
||||||
<ids type="opcode" start="5504" end="5567" vendor="Imagination"/>
|
|
||||||
<ids type="opcode" start="5568" end="5631" vendor="Intel" comment="Contact ben.ashbaugh@intel.com"/>
|
|
||||||
<ids type="opcode" start="5632" end="5695" vendor="Google" comment="Contact dneto@google.com"/>
|
|
||||||
<ids type="opcode" start="5696" end="5823" vendor="Intel" comment="Contact ben.ashbaugh@intel.com"/>
|
|
||||||
<!-- Opcodes & enumerants reservable for future use. To get a block, allocate
|
|
||||||
multiples of 64 starting at the lowest available point in this
|
|
||||||
block and add a corresponding <ids> tag immediately above. Make
|
|
||||||
sure to fill in the vendor attribute, and preferably add a contact
|
|
||||||
person/address in a comment attribute. -->
|
|
||||||
|
|
||||||
<!-- Example new block: <ids type="opcode" start="XXXX" end="XXXX+64n-1" vendor="Add vendor" comment="Contact TBD"/> -->
|
|
||||||
|
|
||||||
<ids type="opcode" start="5824" end="4294967295" comment="Opcode range reservable for future use by vendors"/>
|
<!-- SECTION: SPIR-V Function Control Bit Reservations -->
|
||||||
|
<!-- Reserve ranges of bits in the function control bitfield.
|
||||||
|
|
||||||
|
Each vendor determines the use of values in their own ranges.
|
||||||
|
Vendors are not required to disclose those uses. If the use of a
|
||||||
|
value is included in an extension that is adopted by a Khronos
|
||||||
|
extension or specification, then that value's use may be permanently
|
||||||
|
fixed as if originally reserved in a Khronos range.
|
||||||
|
|
||||||
|
The SPIR Working Group strongly recommends:
|
||||||
|
- Each value is used for only one purpose.
|
||||||
|
- All values in a range should be used before allocating a new range.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!-- Reserved function control bits -->
|
||||||
|
<ids type="FunctionControl" start="0" end="15" vendor="Khronos" comment="Reserved FunctionControl bits, not available to vendors - see the SPIR-V Specification"/>
|
||||||
|
<ids type="FunctionControl" start="16" end="16" vendor="Intel" comment="Contact ben.ashbaugh@intel.com"/>
|
||||||
|
<ids type="FunctionControl" start="17" end="30" comment="Unreserved bits reservable for use by vendors"/>
|
||||||
|
<ids type="FunctionControl" start="31" end="31" vendor="Khronos" comment="Reserved FunctionControl bit, not available to vendors"/>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- SECTION: SPIR-V FP Fast Math Mode Bit Reservations -->
|
||||||
|
<!-- Reserve ranges of bits in the "FP Fast Math Mode" bitfield.
|
||||||
|
Each vendor determines the use of values in their own ranges.
|
||||||
|
Vendors are not required to disclose those uses. If the use of a
|
||||||
|
value is included in an extension that is adopted by a Khronos
|
||||||
|
extension or specification, then that value's use may be permanently
|
||||||
|
fixed as if originally reserved in a Khronos range.
|
||||||
|
The SPIR Working Group strongly recommends:
|
||||||
|
- Each value is used for only one purpose.
|
||||||
|
- All values in a range should be used before allocating a new range.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!-- Reserved FP fast math mode bits -->
|
||||||
|
<ids type="FPFastMathMode" start="0" end="15" vendor="Khronos" comment="Reserved FPFastMathMode bits, not available to vendors - see the SPIR-V Specification"/>
|
||||||
|
<ids type="FPFastMathMode" start="16" end="17" vendor="Intel" comment="Contact michael.kinsner@intel.com"/>
|
||||||
|
<ids type="FPFastMathMode" start="18" end="31" comment="Unreserved bits reservable for use by vendors"/>
|
||||||
|
|
||||||
</registry>
|
</registry>
|
||||||
|
52
externals/sirit/externals/SPIRV-Headers/include/spirv/unified1/AMD_gcn_shader.h
vendored
Executable file
52
externals/sirit/externals/SPIRV-Headers/include/spirv/unified1/AMD_gcn_shader.h
vendored
Executable file
@ -0,0 +1,52 @@
|
|||||||
|
// Copyright (c) 2020 The Khronos Group Inc.
|
||||||
|
//
|
||||||
|
// Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
// copy of this software and/or associated documentation files (the
|
||||||
|
// "Materials"), to deal in the Materials without restriction, including
|
||||||
|
// without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
// distribute, sublicense, and/or sell copies of the Materials, and to
|
||||||
|
// permit persons to whom the Materials are furnished to do so, subject to
|
||||||
|
// the following conditions:
|
||||||
|
//
|
||||||
|
// The above copyright notice and this permission notice shall be included
|
||||||
|
// in all copies or substantial portions of the Materials.
|
||||||
|
//
|
||||||
|
// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS
|
||||||
|
// KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS
|
||||||
|
// SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT
|
||||||
|
// https://www.khronos.org/registry/
|
||||||
|
//
|
||||||
|
// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||||
|
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||||
|
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||||
|
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||||
|
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||||
|
// MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef SPIRV_UNIFIED1_AMD_gcn_shader_H_
|
||||||
|
#define SPIRV_UNIFIED1_AMD_gcn_shader_H_
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
enum {
|
||||||
|
AMD_gcn_shaderRevision = 2,
|
||||||
|
AMD_gcn_shaderRevision_BitWidthPadding = 0x7fffffff
|
||||||
|
};
|
||||||
|
|
||||||
|
enum AMD_gcn_shaderInstructions {
|
||||||
|
AMD_gcn_shaderCubeFaceIndexAMD = 1,
|
||||||
|
AMD_gcn_shaderCubeFaceCoordAMD = 2,
|
||||||
|
AMD_gcn_shaderTimeAMD = 3,
|
||||||
|
AMD_gcn_shaderInstructionsMax = 0x7fffffff
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // SPIRV_UNIFIED1_AMD_gcn_shader_H_
|
53
externals/sirit/externals/SPIRV-Headers/include/spirv/unified1/AMD_shader_ballot.h
vendored
Executable file
53
externals/sirit/externals/SPIRV-Headers/include/spirv/unified1/AMD_shader_ballot.h
vendored
Executable file
@ -0,0 +1,53 @@
|
|||||||
|
// Copyright (c) 2020 The Khronos Group Inc.
|
||||||
|
//
|
||||||
|
// Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
// copy of this software and/or associated documentation files (the
|
||||||
|
// "Materials"), to deal in the Materials without restriction, including
|
||||||
|
// without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
// distribute, sublicense, and/or sell copies of the Materials, and to
|
||||||
|
// permit persons to whom the Materials are furnished to do so, subject to
|
||||||
|
// the following conditions:
|
||||||
|
//
|
||||||
|
// The above copyright notice and this permission notice shall be included
|
||||||
|
// in all copies or substantial portions of the Materials.
|
||||||
|
//
|
||||||
|
// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS
|
||||||
|
// KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS
|
||||||
|
// SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT
|
||||||
|
// https://www.khronos.org/registry/
|
||||||
|
//
|
||||||
|
// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||||
|
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||||
|
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||||
|
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||||
|
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||||
|
// MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef SPIRV_UNIFIED1_AMD_shader_ballot_H_
|
||||||
|
#define SPIRV_UNIFIED1_AMD_shader_ballot_H_
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
enum {
|
||||||
|
AMD_shader_ballotRevision = 5,
|
||||||
|
AMD_shader_ballotRevision_BitWidthPadding = 0x7fffffff
|
||||||
|
};
|
||||||
|
|
||||||
|
enum AMD_shader_ballotInstructions {
|
||||||
|
AMD_shader_ballotSwizzleInvocationsAMD = 1,
|
||||||
|
AMD_shader_ballotSwizzleInvocationsMaskedAMD = 2,
|
||||||
|
AMD_shader_ballotWriteInvocationAMD = 3,
|
||||||
|
AMD_shader_ballotMbcntAMD = 4,
|
||||||
|
AMD_shader_ballotInstructionsMax = 0x7fffffff
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // SPIRV_UNIFIED1_AMD_shader_ballot_H_
|
50
externals/sirit/externals/SPIRV-Headers/include/spirv/unified1/AMD_shader_explicit_vertex_parameter.h
vendored
Executable file
50
externals/sirit/externals/SPIRV-Headers/include/spirv/unified1/AMD_shader_explicit_vertex_parameter.h
vendored
Executable file
@ -0,0 +1,50 @@
|
|||||||
|
// Copyright (c) 2020 The Khronos Group Inc.
|
||||||
|
//
|
||||||
|
// Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
// copy of this software and/or associated documentation files (the
|
||||||
|
// "Materials"), to deal in the Materials without restriction, including
|
||||||
|
// without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
// distribute, sublicense, and/or sell copies of the Materials, and to
|
||||||
|
// permit persons to whom the Materials are furnished to do so, subject to
|
||||||
|
// the following conditions:
|
||||||
|
//
|
||||||
|
// The above copyright notice and this permission notice shall be included
|
||||||
|
// in all copies or substantial portions of the Materials.
|
||||||
|
//
|
||||||
|
// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS
|
||||||
|
// KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS
|
||||||
|
// SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT
|
||||||
|
// https://www.khronos.org/registry/
|
||||||
|
//
|
||||||
|
// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||||
|
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||||
|
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||||
|
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||||
|
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||||
|
// MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef SPIRV_UNIFIED1_AMD_shader_explicit_vertex_parameter_H_
|
||||||
|
#define SPIRV_UNIFIED1_AMD_shader_explicit_vertex_parameter_H_
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
enum {
|
||||||
|
AMD_shader_explicit_vertex_parameterRevision = 4,
|
||||||
|
AMD_shader_explicit_vertex_parameterRevision_BitWidthPadding = 0x7fffffff
|
||||||
|
};
|
||||||
|
|
||||||
|
enum AMD_shader_explicit_vertex_parameterInstructions {
|
||||||
|
AMD_shader_explicit_vertex_parameterInterpolateAtVertexAMD = 1,
|
||||||
|
AMD_shader_explicit_vertex_parameterInstructionsMax = 0x7fffffff
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // SPIRV_UNIFIED1_AMD_shader_explicit_vertex_parameter_H_
|
58
externals/sirit/externals/SPIRV-Headers/include/spirv/unified1/AMD_shader_trinary_minmax.h
vendored
Executable file
58
externals/sirit/externals/SPIRV-Headers/include/spirv/unified1/AMD_shader_trinary_minmax.h
vendored
Executable file
@ -0,0 +1,58 @@
|
|||||||
|
// Copyright (c) 2020 The Khronos Group Inc.
|
||||||
|
//
|
||||||
|
// Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
// copy of this software and/or associated documentation files (the
|
||||||
|
// "Materials"), to deal in the Materials without restriction, including
|
||||||
|
// without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
// distribute, sublicense, and/or sell copies of the Materials, and to
|
||||||
|
// permit persons to whom the Materials are furnished to do so, subject to
|
||||||
|
// the following conditions:
|
||||||
|
//
|
||||||
|
// The above copyright notice and this permission notice shall be included
|
||||||
|
// in all copies or substantial portions of the Materials.
|
||||||
|
//
|
||||||
|
// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS
|
||||||
|
// KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS
|
||||||
|
// SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT
|
||||||
|
// https://www.khronos.org/registry/
|
||||||
|
//
|
||||||
|
// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||||
|
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||||
|
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||||
|
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||||
|
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||||
|
// MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef SPIRV_UNIFIED1_AMD_shader_trinary_minmax_H_
|
||||||
|
#define SPIRV_UNIFIED1_AMD_shader_trinary_minmax_H_
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
enum {
|
||||||
|
AMD_shader_trinary_minmaxRevision = 4,
|
||||||
|
AMD_shader_trinary_minmaxRevision_BitWidthPadding = 0x7fffffff
|
||||||
|
};
|
||||||
|
|
||||||
|
enum AMD_shader_trinary_minmaxInstructions {
|
||||||
|
AMD_shader_trinary_minmaxFMin3AMD = 1,
|
||||||
|
AMD_shader_trinary_minmaxUMin3AMD = 2,
|
||||||
|
AMD_shader_trinary_minmaxSMin3AMD = 3,
|
||||||
|
AMD_shader_trinary_minmaxFMax3AMD = 4,
|
||||||
|
AMD_shader_trinary_minmaxUMax3AMD = 5,
|
||||||
|
AMD_shader_trinary_minmaxSMax3AMD = 6,
|
||||||
|
AMD_shader_trinary_minmaxFMid3AMD = 7,
|
||||||
|
AMD_shader_trinary_minmaxUMid3AMD = 8,
|
||||||
|
AMD_shader_trinary_minmaxSMid3AMD = 9,
|
||||||
|
AMD_shader_trinary_minmaxInstructionsMax = 0x7fffffff
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // SPIRV_UNIFIED1_AMD_shader_trinary_minmax_H_
|
144
externals/sirit/externals/SPIRV-Headers/include/spirv/unified1/DebugInfo.h
vendored
Executable file
144
externals/sirit/externals/SPIRV-Headers/include/spirv/unified1/DebugInfo.h
vendored
Executable file
@ -0,0 +1,144 @@
|
|||||||
|
// Copyright (c) 2017 The Khronos Group Inc.
|
||||||
|
//
|
||||||
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
// of this software and/or associated documentation files (the "Materials"),
|
||||||
|
// to deal in the Materials without restriction, including without limitation
|
||||||
|
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
// and/or sell copies of the Materials, and to permit persons to whom the
|
||||||
|
// Materials are furnished to do so, subject to the following conditions:
|
||||||
|
//
|
||||||
|
// The above copyright notice and this permission notice shall be included in
|
||||||
|
// all copies or substantial portions of the Materials.
|
||||||
|
//
|
||||||
|
// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
|
||||||
|
// STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
|
||||||
|
// HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/
|
||||||
|
//
|
||||||
|
// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||||
|
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
// FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
|
||||||
|
// IN THE MATERIALS.
|
||||||
|
|
||||||
|
#ifndef SPIRV_UNIFIED1_DebugInfo_H_
|
||||||
|
#define SPIRV_UNIFIED1_DebugInfo_H_
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
enum {
|
||||||
|
DebugInfoVersion = 100,
|
||||||
|
DebugInfoVersion_BitWidthPadding = 0x7fffffff
|
||||||
|
};
|
||||||
|
enum {
|
||||||
|
DebugInfoRevision = 1,
|
||||||
|
DebugInfoRevision_BitWidthPadding = 0x7fffffff
|
||||||
|
};
|
||||||
|
|
||||||
|
enum DebugInfoInstructions {
|
||||||
|
DebugInfoDebugInfoNone = 0,
|
||||||
|
DebugInfoDebugCompilationUnit = 1,
|
||||||
|
DebugInfoDebugTypeBasic = 2,
|
||||||
|
DebugInfoDebugTypePointer = 3,
|
||||||
|
DebugInfoDebugTypeQualifier = 4,
|
||||||
|
DebugInfoDebugTypeArray = 5,
|
||||||
|
DebugInfoDebugTypeVector = 6,
|
||||||
|
DebugInfoDebugTypedef = 7,
|
||||||
|
DebugInfoDebugTypeFunction = 8,
|
||||||
|
DebugInfoDebugTypeEnum = 9,
|
||||||
|
DebugInfoDebugTypeComposite = 10,
|
||||||
|
DebugInfoDebugTypeMember = 11,
|
||||||
|
DebugInfoDebugTypeInheritance = 12,
|
||||||
|
DebugInfoDebugTypePtrToMember = 13,
|
||||||
|
DebugInfoDebugTypeTemplate = 14,
|
||||||
|
DebugInfoDebugTypeTemplateParameter = 15,
|
||||||
|
DebugInfoDebugTypeTemplateTemplateParameter = 16,
|
||||||
|
DebugInfoDebugTypeTemplateParameterPack = 17,
|
||||||
|
DebugInfoDebugGlobalVariable = 18,
|
||||||
|
DebugInfoDebugFunctionDeclaration = 19,
|
||||||
|
DebugInfoDebugFunction = 20,
|
||||||
|
DebugInfoDebugLexicalBlock = 21,
|
||||||
|
DebugInfoDebugLexicalBlockDiscriminator = 22,
|
||||||
|
DebugInfoDebugScope = 23,
|
||||||
|
DebugInfoDebugNoScope = 24,
|
||||||
|
DebugInfoDebugInlinedAt = 25,
|
||||||
|
DebugInfoDebugLocalVariable = 26,
|
||||||
|
DebugInfoDebugInlinedVariable = 27,
|
||||||
|
DebugInfoDebugDeclare = 28,
|
||||||
|
DebugInfoDebugValue = 29,
|
||||||
|
DebugInfoDebugOperation = 30,
|
||||||
|
DebugInfoDebugExpression = 31,
|
||||||
|
DebugInfoDebugMacroDef = 32,
|
||||||
|
DebugInfoDebugMacroUndef = 33,
|
||||||
|
DebugInfoInstructionsMax = 0x7fffffff
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
enum DebugInfoDebugInfoFlags {
|
||||||
|
DebugInfoNone = 0x0000,
|
||||||
|
DebugInfoFlagIsProtected = 0x01,
|
||||||
|
DebugInfoFlagIsPrivate = 0x02,
|
||||||
|
DebugInfoFlagIsPublic = 0x03,
|
||||||
|
DebugInfoFlagIsLocal = 0x04,
|
||||||
|
DebugInfoFlagIsDefinition = 0x08,
|
||||||
|
DebugInfoFlagFwdDecl = 0x10,
|
||||||
|
DebugInfoFlagArtificial = 0x20,
|
||||||
|
DebugInfoFlagExplicit = 0x40,
|
||||||
|
DebugInfoFlagPrototyped = 0x80,
|
||||||
|
DebugInfoFlagObjectPointer = 0x100,
|
||||||
|
DebugInfoFlagStaticMember = 0x200,
|
||||||
|
DebugInfoFlagIndirectVariable = 0x400,
|
||||||
|
DebugInfoFlagLValueReference = 0x800,
|
||||||
|
DebugInfoFlagRValueReference = 0x1000,
|
||||||
|
DebugInfoFlagIsOptimized = 0x2000,
|
||||||
|
DebugInfoDebugInfoFlagsMax = 0x7fffffff
|
||||||
|
};
|
||||||
|
|
||||||
|
enum DebugInfoDebugBaseTypeAttributeEncoding {
|
||||||
|
DebugInfoUnspecified = 0,
|
||||||
|
DebugInfoAddress = 1,
|
||||||
|
DebugInfoBoolean = 2,
|
||||||
|
DebugInfoFloat = 4,
|
||||||
|
DebugInfoSigned = 5,
|
||||||
|
DebugInfoSignedChar = 6,
|
||||||
|
DebugInfoUnsigned = 7,
|
||||||
|
DebugInfoUnsignedChar = 8,
|
||||||
|
DebugInfoDebugBaseTypeAttributeEncodingMax = 0x7fffffff
|
||||||
|
};
|
||||||
|
|
||||||
|
enum DebugInfoDebugCompositeType {
|
||||||
|
DebugInfoClass = 0,
|
||||||
|
DebugInfoStructure = 1,
|
||||||
|
DebugInfoUnion = 2,
|
||||||
|
DebugInfoDebugCompositeTypeMax = 0x7fffffff
|
||||||
|
};
|
||||||
|
|
||||||
|
enum DebugInfoDebugTypeQualifier {
|
||||||
|
DebugInfoConstType = 0,
|
||||||
|
DebugInfoVolatileType = 1,
|
||||||
|
DebugInfoRestrictType = 2,
|
||||||
|
DebugInfoDebugTypeQualifierMax = 0x7fffffff
|
||||||
|
};
|
||||||
|
|
||||||
|
enum DebugInfoDebugOperation {
|
||||||
|
DebugInfoDeref = 0,
|
||||||
|
DebugInfoPlus = 1,
|
||||||
|
DebugInfoMinus = 2,
|
||||||
|
DebugInfoPlusUconst = 3,
|
||||||
|
DebugInfoBitPiece = 4,
|
||||||
|
DebugInfoSwap = 5,
|
||||||
|
DebugInfoXderef = 6,
|
||||||
|
DebugInfoStackValue = 7,
|
||||||
|
DebugInfoConstu = 8,
|
||||||
|
DebugInfoDebugOperationMax = 0x7fffffff
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // SPIRV_UNIFIED1_DebugInfo_H_
|
73
externals/sirit/externals/SPIRV-Headers/include/spirv/unified1/NonSemanticClspvReflection.h
vendored
Executable file
73
externals/sirit/externals/SPIRV-Headers/include/spirv/unified1/NonSemanticClspvReflection.h
vendored
Executable file
@ -0,0 +1,73 @@
|
|||||||
|
// Copyright (c) 2020 The Khronos Group Inc.
|
||||||
|
//
|
||||||
|
// Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
// copy of this software and/or associated documentation files (the
|
||||||
|
// "Materials"), to deal in the Materials without restriction, including
|
||||||
|
// without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
// distribute, sublicense, and/or sell copies of the Materials, and to
|
||||||
|
// permit persons to whom the Materials are furnished to do so, subject to
|
||||||
|
// the following conditions:
|
||||||
|
//
|
||||||
|
// The above copyright notice and this permission notice shall be included
|
||||||
|
// in all copies or substantial portions of the Materials.
|
||||||
|
//
|
||||||
|
// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS
|
||||||
|
// KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS
|
||||||
|
// SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT
|
||||||
|
// https://www.khronos.org/registry/
|
||||||
|
//
|
||||||
|
// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||||
|
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||||
|
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||||
|
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||||
|
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||||
|
// MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef SPIRV_UNIFIED1_NonSemanticClspvReflection_H_
|
||||||
|
#define SPIRV_UNIFIED1_NonSemanticClspvReflection_H_
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
enum {
|
||||||
|
NonSemanticClspvReflectionRevision = 1,
|
||||||
|
NonSemanticClspvReflectionRevision_BitWidthPadding = 0x7fffffff
|
||||||
|
};
|
||||||
|
|
||||||
|
enum NonSemanticClspvReflectionInstructions {
|
||||||
|
NonSemanticClspvReflectionKernel = 1,
|
||||||
|
NonSemanticClspvReflectionArgumentInfo = 2,
|
||||||
|
NonSemanticClspvReflectionArgumentStorageBuffer = 3,
|
||||||
|
NonSemanticClspvReflectionArgumentUniform = 4,
|
||||||
|
NonSemanticClspvReflectionArgumentPodStorageBuffer = 5,
|
||||||
|
NonSemanticClspvReflectionArgumentPodUniform = 6,
|
||||||
|
NonSemanticClspvReflectionArgumentPodPushConstant = 7,
|
||||||
|
NonSemanticClspvReflectionArgumentSampledImage = 8,
|
||||||
|
NonSemanticClspvReflectionArgumentStorageImage = 9,
|
||||||
|
NonSemanticClspvReflectionArgumentSampler = 10,
|
||||||
|
NonSemanticClspvReflectionArgumentWorkgroup = 11,
|
||||||
|
NonSemanticClspvReflectionSpecConstantWorkgroupSize = 12,
|
||||||
|
NonSemanticClspvReflectionSpecConstantGlobalOffset = 13,
|
||||||
|
NonSemanticClspvReflectionSpecConstantWorkDim = 14,
|
||||||
|
NonSemanticClspvReflectionPushConstantGlobalOffset = 15,
|
||||||
|
NonSemanticClspvReflectionPushConstantEnqueuedLocalSize = 16,
|
||||||
|
NonSemanticClspvReflectionPushConstantGlobalSize = 17,
|
||||||
|
NonSemanticClspvReflectionPushConstantRegionOffset = 18,
|
||||||
|
NonSemanticClspvReflectionPushConstantNumWorkgroups = 19,
|
||||||
|
NonSemanticClspvReflectionPushConstantRegionGroupOffset = 20,
|
||||||
|
NonSemanticClspvReflectionConstantDataStorageBuffer = 21,
|
||||||
|
NonSemanticClspvReflectionConstantDataUniform = 22,
|
||||||
|
NonSemanticClspvReflectionLiteralSampler = 23,
|
||||||
|
NonSemanticClspvReflectionPropertyRequiredWorkgroupSize = 24,
|
||||||
|
NonSemanticClspvReflectionInstructionsMax = 0x7fffffff
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // SPIRV_UNIFIED1_NonSemanticClspvReflection_H_
|
50
externals/sirit/externals/SPIRV-Headers/include/spirv/unified1/NonSemanticDebugPrintf.h
vendored
Executable file
50
externals/sirit/externals/SPIRV-Headers/include/spirv/unified1/NonSemanticDebugPrintf.h
vendored
Executable file
@ -0,0 +1,50 @@
|
|||||||
|
// Copyright (c) 2020 The Khronos Group Inc.
|
||||||
|
//
|
||||||
|
// Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
// copy of this software and/or associated documentation files (the
|
||||||
|
// "Materials"), to deal in the Materials without restriction, including
|
||||||
|
// without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
// distribute, sublicense, and/or sell copies of the Materials, and to
|
||||||
|
// permit persons to whom the Materials are furnished to do so, subject to
|
||||||
|
// the following conditions:
|
||||||
|
//
|
||||||
|
// The above copyright notice and this permission notice shall be included
|
||||||
|
// in all copies or substantial portions of the Materials.
|
||||||
|
//
|
||||||
|
// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS
|
||||||
|
// KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS
|
||||||
|
// SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT
|
||||||
|
// https://www.khronos.org/registry/
|
||||||
|
//
|
||||||
|
// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||||
|
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||||
|
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||||
|
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||||
|
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||||
|
// MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef SPIRV_UNIFIED1_NonSemanticDebugPrintf_H_
|
||||||
|
#define SPIRV_UNIFIED1_NonSemanticDebugPrintf_H_
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
enum {
|
||||||
|
NonSemanticDebugPrintfRevision = 1,
|
||||||
|
NonSemanticDebugPrintfRevision_BitWidthPadding = 0x7fffffff
|
||||||
|
};
|
||||||
|
|
||||||
|
enum NonSemanticDebugPrintfInstructions {
|
||||||
|
NonSemanticDebugPrintfDebugPrintf = 1,
|
||||||
|
NonSemanticDebugPrintfInstructionsMax = 0x7fffffff
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // SPIRV_UNIFIED1_NonSemanticDebugPrintf_H_
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** Copyright (c) 2015-2017 The Khronos Group Inc.
|
** Copyright (c) 2015-2019 The Khronos Group Inc.
|
||||||
**
|
**
|
||||||
** Permission is hereby granted, free of charge, to any person obtaining a copy
|
** Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
** of this software and/or associated documentation files (the "Materials"),
|
** of this software and/or associated documentation files (the "Materials"),
|
||||||
@ -27,6 +27,7 @@
|
|||||||
#ifndef OPENCLstd_H
|
#ifndef OPENCLstd_H
|
||||||
#define OPENCLstd_H
|
#define OPENCLstd_H
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
namespace OpenCLLIB {
|
namespace OpenCLLIB {
|
||||||
|
|
||||||
enum Entrypoints {
|
enum Entrypoints {
|
||||||
@ -212,4 +213,189 @@ enum Entrypoints {
|
|||||||
|
|
||||||
} // end namespace OpenCLLIB
|
} // end namespace OpenCLLIB
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
enum OpenCLstd_Entrypoints {
|
||||||
|
|
||||||
|
// Section 2.1: Math extended instructions
|
||||||
|
OpenCLstd_Acos = 0,
|
||||||
|
OpenCLstd_Acosh = 1,
|
||||||
|
OpenCLstd_Acospi = 2,
|
||||||
|
OpenCLstd_Asin = 3,
|
||||||
|
OpenCLstd_Asinh = 4,
|
||||||
|
OpenCLstd_Asinpi = 5,
|
||||||
|
OpenCLstd_Atan = 6,
|
||||||
|
OpenCLstd_Atan2 = 7,
|
||||||
|
OpenCLstd_Atanh = 8,
|
||||||
|
OpenCLstd_Atanpi = 9,
|
||||||
|
OpenCLstd_Atan2pi = 10,
|
||||||
|
OpenCLstd_Cbrt = 11,
|
||||||
|
OpenCLstd_Ceil = 12,
|
||||||
|
OpenCLstd_Copysign = 13,
|
||||||
|
OpenCLstd_Cos = 14,
|
||||||
|
OpenCLstd_Cosh = 15,
|
||||||
|
OpenCLstd_Cospi = 16,
|
||||||
|
OpenCLstd_Erfc = 17,
|
||||||
|
OpenCLstd_Erf = 18,
|
||||||
|
OpenCLstd_Exp = 19,
|
||||||
|
OpenCLstd_Exp2 = 20,
|
||||||
|
OpenCLstd_Exp10 = 21,
|
||||||
|
OpenCLstd_Expm1 = 22,
|
||||||
|
OpenCLstd_Fabs = 23,
|
||||||
|
OpenCLstd_Fdim = 24,
|
||||||
|
OpenCLstd_Floor = 25,
|
||||||
|
OpenCLstd_Fma = 26,
|
||||||
|
OpenCLstd_Fmax = 27,
|
||||||
|
OpenCLstd_Fmin = 28,
|
||||||
|
OpenCLstd_Fmod = 29,
|
||||||
|
OpenCLstd_Fract = 30,
|
||||||
|
OpenCLstd_Frexp = 31,
|
||||||
|
OpenCLstd_Hypot = 32,
|
||||||
|
OpenCLstd_Ilogb = 33,
|
||||||
|
OpenCLstd_Ldexp = 34,
|
||||||
|
OpenCLstd_Lgamma = 35,
|
||||||
|
OpenCLstd_Lgamma_r = 36,
|
||||||
|
OpenCLstd_Log = 37,
|
||||||
|
OpenCLstd_Log2 = 38,
|
||||||
|
OpenCLstd_Log10 = 39,
|
||||||
|
OpenCLstd_Log1p = 40,
|
||||||
|
OpenCLstd_Logb = 41,
|
||||||
|
OpenCLstd_Mad = 42,
|
||||||
|
OpenCLstd_Maxmag = 43,
|
||||||
|
OpenCLstd_Minmag = 44,
|
||||||
|
OpenCLstd_Modf = 45,
|
||||||
|
OpenCLstd_Nan = 46,
|
||||||
|
OpenCLstd_Nextafter = 47,
|
||||||
|
OpenCLstd_Pow = 48,
|
||||||
|
OpenCLstd_Pown = 49,
|
||||||
|
OpenCLstd_Powr = 50,
|
||||||
|
OpenCLstd_Remainder = 51,
|
||||||
|
OpenCLstd_Remquo = 52,
|
||||||
|
OpenCLstd_Rint = 53,
|
||||||
|
OpenCLstd_Rootn = 54,
|
||||||
|
OpenCLstd_Round = 55,
|
||||||
|
OpenCLstd_Rsqrt = 56,
|
||||||
|
OpenCLstd_Sin = 57,
|
||||||
|
OpenCLstd_Sincos = 58,
|
||||||
|
OpenCLstd_Sinh = 59,
|
||||||
|
OpenCLstd_Sinpi = 60,
|
||||||
|
OpenCLstd_Sqrt = 61,
|
||||||
|
OpenCLstd_Tan = 62,
|
||||||
|
OpenCLstd_Tanh = 63,
|
||||||
|
OpenCLstd_Tanpi = 64,
|
||||||
|
OpenCLstd_Tgamma = 65,
|
||||||
|
OpenCLstd_Trunc = 66,
|
||||||
|
OpenCLstd_Half_cos = 67,
|
||||||
|
OpenCLstd_Half_divide = 68,
|
||||||
|
OpenCLstd_Half_exp = 69,
|
||||||
|
OpenCLstd_Half_exp2 = 70,
|
||||||
|
OpenCLstd_Half_exp10 = 71,
|
||||||
|
OpenCLstd_Half_log = 72,
|
||||||
|
OpenCLstd_Half_log2 = 73,
|
||||||
|
OpenCLstd_Half_log10 = 74,
|
||||||
|
OpenCLstd_Half_powr = 75,
|
||||||
|
OpenCLstd_Half_recip = 76,
|
||||||
|
OpenCLstd_Half_rsqrt = 77,
|
||||||
|
OpenCLstd_Half_sin = 78,
|
||||||
|
OpenCLstd_Half_sqrt = 79,
|
||||||
|
OpenCLstd_Half_tan = 80,
|
||||||
|
OpenCLstd_Native_cos = 81,
|
||||||
|
OpenCLstd_Native_divide = 82,
|
||||||
|
OpenCLstd_Native_exp = 83,
|
||||||
|
OpenCLstd_Native_exp2 = 84,
|
||||||
|
OpenCLstd_Native_exp10 = 85,
|
||||||
|
OpenCLstd_Native_log = 86,
|
||||||
|
OpenCLstd_Native_log2 = 87,
|
||||||
|
OpenCLstd_Native_log10 = 88,
|
||||||
|
OpenCLstd_Native_powr = 89,
|
||||||
|
OpenCLstd_Native_recip = 90,
|
||||||
|
OpenCLstd_Native_rsqrt = 91,
|
||||||
|
OpenCLstd_Native_sin = 92,
|
||||||
|
OpenCLstd_Native_sqrt = 93,
|
||||||
|
OpenCLstd_Native_tan = 94,
|
||||||
|
|
||||||
|
// Section 2.2: Integer instructions
|
||||||
|
OpenCLstd_SAbs = 141,
|
||||||
|
OpenCLstd_SAbs_diff = 142,
|
||||||
|
OpenCLstd_SAdd_sat = 143,
|
||||||
|
OpenCLstd_UAdd_sat = 144,
|
||||||
|
OpenCLstd_SHadd = 145,
|
||||||
|
OpenCLstd_UHadd = 146,
|
||||||
|
OpenCLstd_SRhadd = 147,
|
||||||
|
OpenCLstd_URhadd = 148,
|
||||||
|
OpenCLstd_SClamp = 149,
|
||||||
|
OpenCLstd_UClamp = 150,
|
||||||
|
OpenCLstd_Clz = 151,
|
||||||
|
OpenCLstd_Ctz = 152,
|
||||||
|
OpenCLstd_SMad_hi = 153,
|
||||||
|
OpenCLstd_UMad_sat = 154,
|
||||||
|
OpenCLstd_SMad_sat = 155,
|
||||||
|
OpenCLstd_SMax = 156,
|
||||||
|
OpenCLstd_UMax = 157,
|
||||||
|
OpenCLstd_SMin = 158,
|
||||||
|
OpenCLstd_UMin = 159,
|
||||||
|
OpenCLstd_SMul_hi = 160,
|
||||||
|
OpenCLstd_Rotate = 161,
|
||||||
|
OpenCLstd_SSub_sat = 162,
|
||||||
|
OpenCLstd_USub_sat = 163,
|
||||||
|
OpenCLstd_U_Upsample = 164,
|
||||||
|
OpenCLstd_S_Upsample = 165,
|
||||||
|
OpenCLstd_Popcount = 166,
|
||||||
|
OpenCLstd_SMad24 = 167,
|
||||||
|
OpenCLstd_UMad24 = 168,
|
||||||
|
OpenCLstd_SMul24 = 169,
|
||||||
|
OpenCLstd_UMul24 = 170,
|
||||||
|
OpenCLstd_UAbs = 201,
|
||||||
|
OpenCLstd_UAbs_diff = 202,
|
||||||
|
OpenCLstd_UMul_hi = 203,
|
||||||
|
OpenCLstd_UMad_hi = 204,
|
||||||
|
|
||||||
|
// Section 2.3: Common instructions
|
||||||
|
OpenCLstd_FClamp = 95,
|
||||||
|
OpenCLstd_Degrees = 96,
|
||||||
|
OpenCLstd_FMax_common = 97,
|
||||||
|
OpenCLstd_FMin_common = 98,
|
||||||
|
OpenCLstd_Mix = 99,
|
||||||
|
OpenCLstd_Radians = 100,
|
||||||
|
OpenCLstd_Step = 101,
|
||||||
|
OpenCLstd_Smoothstep = 102,
|
||||||
|
OpenCLstd_Sign = 103,
|
||||||
|
|
||||||
|
// Section 2.4: Geometric instructions
|
||||||
|
OpenCLstd_Cross = 104,
|
||||||
|
OpenCLstd_Distance = 105,
|
||||||
|
OpenCLstd_Length = 106,
|
||||||
|
OpenCLstd_Normalize = 107,
|
||||||
|
OpenCLstd_Fast_distance = 108,
|
||||||
|
OpenCLstd_Fast_length = 109,
|
||||||
|
OpenCLstd_Fast_normalize = 110,
|
||||||
|
|
||||||
|
// Section 2.5: Relational instructions
|
||||||
|
OpenCLstd_Bitselect = 186,
|
||||||
|
OpenCLstd_Select = 187,
|
||||||
|
|
||||||
|
// Section 2.6: Vector Data Load and Store instructions
|
||||||
|
OpenCLstd_Vloadn = 171,
|
||||||
|
OpenCLstd_Vstoren = 172,
|
||||||
|
OpenCLstd_Vload_half = 173,
|
||||||
|
OpenCLstd_Vload_halfn = 174,
|
||||||
|
OpenCLstd_Vstore_half = 175,
|
||||||
|
OpenCLstd_Vstore_half_r = 176,
|
||||||
|
OpenCLstd_Vstore_halfn = 177,
|
||||||
|
OpenCLstd_Vstore_halfn_r = 178,
|
||||||
|
OpenCLstd_Vloada_halfn = 179,
|
||||||
|
OpenCLstd_Vstorea_halfn = 180,
|
||||||
|
OpenCLstd_Vstorea_halfn_r = 181,
|
||||||
|
|
||||||
|
// Section 2.7: Miscellaneous Vector instructions
|
||||||
|
OpenCLstd_Shuffle = 182,
|
||||||
|
OpenCLstd_Shuffle2 = 183,
|
||||||
|
|
||||||
|
// Section 2.8: Misc instructions
|
||||||
|
OpenCLstd_Printf = 184,
|
||||||
|
OpenCLstd_Prefetch = 185,
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif // #ifndef OPENCLstd_H
|
#endif // #ifndef OPENCLstd_H
|
||||||
|
157
externals/sirit/externals/SPIRV-Headers/include/spirv/unified1/OpenCLDebugInfo100.h
vendored
Executable file
157
externals/sirit/externals/SPIRV-Headers/include/spirv/unified1/OpenCLDebugInfo100.h
vendored
Executable file
@ -0,0 +1,157 @@
|
|||||||
|
// Copyright (c) 2018 The Khronos Group Inc.
|
||||||
|
//
|
||||||
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
// of this software and/or associated documentation files (the "Materials"),
|
||||||
|
// to deal in the Materials without restriction, including without limitation
|
||||||
|
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
// and/or sell copies of the Materials, and to permit persons to whom the
|
||||||
|
// Materials are furnished to do so, subject to the following conditions:
|
||||||
|
//
|
||||||
|
// The above copyright notice and this permission notice shall be included in
|
||||||
|
// all copies or substantial portions of the Materials.
|
||||||
|
//
|
||||||
|
// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
|
||||||
|
// STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
|
||||||
|
// HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/
|
||||||
|
//
|
||||||
|
// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||||
|
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
// FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
|
||||||
|
// IN THE MATERIALS.
|
||||||
|
|
||||||
|
#ifndef SPIRV_UNIFIED1_OpenCLDebugInfo100_H_
|
||||||
|
#define SPIRV_UNIFIED1_OpenCLDebugInfo100_H_
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
enum {
|
||||||
|
OpenCLDebugInfo100Version = 200,
|
||||||
|
OpenCLDebugInfo100Version_BitWidthPadding = 0x7fffffff
|
||||||
|
};
|
||||||
|
enum {
|
||||||
|
OpenCLDebugInfo100Revision = 2,
|
||||||
|
OpenCLDebugInfo100Revision_BitWidthPadding = 0x7fffffff
|
||||||
|
};
|
||||||
|
|
||||||
|
enum OpenCLDebugInfo100Instructions {
|
||||||
|
OpenCLDebugInfo100DebugInfoNone = 0,
|
||||||
|
OpenCLDebugInfo100DebugCompilationUnit = 1,
|
||||||
|
OpenCLDebugInfo100DebugTypeBasic = 2,
|
||||||
|
OpenCLDebugInfo100DebugTypePointer = 3,
|
||||||
|
OpenCLDebugInfo100DebugTypeQualifier = 4,
|
||||||
|
OpenCLDebugInfo100DebugTypeArray = 5,
|
||||||
|
OpenCLDebugInfo100DebugTypeVector = 6,
|
||||||
|
OpenCLDebugInfo100DebugTypedef = 7,
|
||||||
|
OpenCLDebugInfo100DebugTypeFunction = 8,
|
||||||
|
OpenCLDebugInfo100DebugTypeEnum = 9,
|
||||||
|
OpenCLDebugInfo100DebugTypeComposite = 10,
|
||||||
|
OpenCLDebugInfo100DebugTypeMember = 11,
|
||||||
|
OpenCLDebugInfo100DebugTypeInheritance = 12,
|
||||||
|
OpenCLDebugInfo100DebugTypePtrToMember = 13,
|
||||||
|
OpenCLDebugInfo100DebugTypeTemplate = 14,
|
||||||
|
OpenCLDebugInfo100DebugTypeTemplateParameter = 15,
|
||||||
|
OpenCLDebugInfo100DebugTypeTemplateTemplateParameter = 16,
|
||||||
|
OpenCLDebugInfo100DebugTypeTemplateParameterPack = 17,
|
||||||
|
OpenCLDebugInfo100DebugGlobalVariable = 18,
|
||||||
|
OpenCLDebugInfo100DebugFunctionDeclaration = 19,
|
||||||
|
OpenCLDebugInfo100DebugFunction = 20,
|
||||||
|
OpenCLDebugInfo100DebugLexicalBlock = 21,
|
||||||
|
OpenCLDebugInfo100DebugLexicalBlockDiscriminator = 22,
|
||||||
|
OpenCLDebugInfo100DebugScope = 23,
|
||||||
|
OpenCLDebugInfo100DebugNoScope = 24,
|
||||||
|
OpenCLDebugInfo100DebugInlinedAt = 25,
|
||||||
|
OpenCLDebugInfo100DebugLocalVariable = 26,
|
||||||
|
OpenCLDebugInfo100DebugInlinedVariable = 27,
|
||||||
|
OpenCLDebugInfo100DebugDeclare = 28,
|
||||||
|
OpenCLDebugInfo100DebugValue = 29,
|
||||||
|
OpenCLDebugInfo100DebugOperation = 30,
|
||||||
|
OpenCLDebugInfo100DebugExpression = 31,
|
||||||
|
OpenCLDebugInfo100DebugMacroDef = 32,
|
||||||
|
OpenCLDebugInfo100DebugMacroUndef = 33,
|
||||||
|
OpenCLDebugInfo100DebugImportedEntity = 34,
|
||||||
|
OpenCLDebugInfo100DebugSource = 35,
|
||||||
|
OpenCLDebugInfo100InstructionsMax = 0x7fffffff
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
enum OpenCLDebugInfo100DebugInfoFlags {
|
||||||
|
OpenCLDebugInfo100None = 0x0000,
|
||||||
|
OpenCLDebugInfo100FlagIsProtected = 0x01,
|
||||||
|
OpenCLDebugInfo100FlagIsPrivate = 0x02,
|
||||||
|
OpenCLDebugInfo100FlagIsPublic = 0x03,
|
||||||
|
OpenCLDebugInfo100FlagIsLocal = 0x04,
|
||||||
|
OpenCLDebugInfo100FlagIsDefinition = 0x08,
|
||||||
|
OpenCLDebugInfo100FlagFwdDecl = 0x10,
|
||||||
|
OpenCLDebugInfo100FlagArtificial = 0x20,
|
||||||
|
OpenCLDebugInfo100FlagExplicit = 0x40,
|
||||||
|
OpenCLDebugInfo100FlagPrototyped = 0x80,
|
||||||
|
OpenCLDebugInfo100FlagObjectPointer = 0x100,
|
||||||
|
OpenCLDebugInfo100FlagStaticMember = 0x200,
|
||||||
|
OpenCLDebugInfo100FlagIndirectVariable = 0x400,
|
||||||
|
OpenCLDebugInfo100FlagLValueReference = 0x800,
|
||||||
|
OpenCLDebugInfo100FlagRValueReference = 0x1000,
|
||||||
|
OpenCLDebugInfo100FlagIsOptimized = 0x2000,
|
||||||
|
OpenCLDebugInfo100FlagIsEnumClass = 0x4000,
|
||||||
|
OpenCLDebugInfo100FlagTypePassByValue = 0x8000,
|
||||||
|
OpenCLDebugInfo100FlagTypePassByReference = 0x10000,
|
||||||
|
OpenCLDebugInfo100DebugInfoFlagsMax = 0x7fffffff
|
||||||
|
};
|
||||||
|
|
||||||
|
enum OpenCLDebugInfo100DebugBaseTypeAttributeEncoding {
|
||||||
|
OpenCLDebugInfo100Unspecified = 0,
|
||||||
|
OpenCLDebugInfo100Address = 1,
|
||||||
|
OpenCLDebugInfo100Boolean = 2,
|
||||||
|
OpenCLDebugInfo100Float = 3,
|
||||||
|
OpenCLDebugInfo100Signed = 4,
|
||||||
|
OpenCLDebugInfo100SignedChar = 5,
|
||||||
|
OpenCLDebugInfo100Unsigned = 6,
|
||||||
|
OpenCLDebugInfo100UnsignedChar = 7,
|
||||||
|
OpenCLDebugInfo100DebugBaseTypeAttributeEncodingMax = 0x7fffffff
|
||||||
|
};
|
||||||
|
|
||||||
|
enum OpenCLDebugInfo100DebugCompositeType {
|
||||||
|
OpenCLDebugInfo100Class = 0,
|
||||||
|
OpenCLDebugInfo100Structure = 1,
|
||||||
|
OpenCLDebugInfo100Union = 2,
|
||||||
|
OpenCLDebugInfo100DebugCompositeTypeMax = 0x7fffffff
|
||||||
|
};
|
||||||
|
|
||||||
|
enum OpenCLDebugInfo100DebugTypeQualifier {
|
||||||
|
OpenCLDebugInfo100ConstType = 0,
|
||||||
|
OpenCLDebugInfo100VolatileType = 1,
|
||||||
|
OpenCLDebugInfo100RestrictType = 2,
|
||||||
|
OpenCLDebugInfo100AtomicType = 3,
|
||||||
|
OpenCLDebugInfo100DebugTypeQualifierMax = 0x7fffffff
|
||||||
|
};
|
||||||
|
|
||||||
|
enum OpenCLDebugInfo100DebugOperation {
|
||||||
|
OpenCLDebugInfo100Deref = 0,
|
||||||
|
OpenCLDebugInfo100Plus = 1,
|
||||||
|
OpenCLDebugInfo100Minus = 2,
|
||||||
|
OpenCLDebugInfo100PlusUconst = 3,
|
||||||
|
OpenCLDebugInfo100BitPiece = 4,
|
||||||
|
OpenCLDebugInfo100Swap = 5,
|
||||||
|
OpenCLDebugInfo100Xderef = 6,
|
||||||
|
OpenCLDebugInfo100StackValue = 7,
|
||||||
|
OpenCLDebugInfo100Constu = 8,
|
||||||
|
OpenCLDebugInfo100Fragment = 9,
|
||||||
|
OpenCLDebugInfo100DebugOperationMax = 0x7fffffff
|
||||||
|
};
|
||||||
|
|
||||||
|
enum OpenCLDebugInfo100DebugImportedEntity {
|
||||||
|
OpenCLDebugInfo100ImportedModule = 0,
|
||||||
|
OpenCLDebugInfo100ImportedDeclaration = 1,
|
||||||
|
OpenCLDebugInfo100DebugImportedEntityMax = 0x7fffffff
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // SPIRV_UNIFIED1_OpenCLDebugInfo100_H_
|
572
externals/sirit/externals/SPIRV-Headers/include/spirv/unified1/extinst.debuginfo.grammar.json
vendored
Executable file
572
externals/sirit/externals/SPIRV-Headers/include/spirv/unified1/extinst.debuginfo.grammar.json
vendored
Executable file
@ -0,0 +1,572 @@
|
|||||||
|
{
|
||||||
|
"copyright" : [
|
||||||
|
"Copyright (c) 2017 The Khronos Group Inc.",
|
||||||
|
"",
|
||||||
|
"Permission is hereby granted, free of charge, to any person obtaining a copy",
|
||||||
|
"of this software and/or associated documentation files (the \"Materials\"),",
|
||||||
|
"to deal in the Materials without restriction, including without limitation",
|
||||||
|
"the rights to use, copy, modify, merge, publish, distribute, sublicense,",
|
||||||
|
"and/or sell copies of the Materials, and to permit persons to whom the",
|
||||||
|
"Materials are furnished to do so, subject to the following conditions:",
|
||||||
|
"",
|
||||||
|
"The above copyright notice and this permission notice shall be included in",
|
||||||
|
"all copies or substantial portions of the Materials.",
|
||||||
|
"",
|
||||||
|
"MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS",
|
||||||
|
"STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND",
|
||||||
|
"HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ ",
|
||||||
|
"",
|
||||||
|
"THE MATERIALS ARE PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS",
|
||||||
|
"OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,",
|
||||||
|
"FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL",
|
||||||
|
"THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER",
|
||||||
|
"LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING",
|
||||||
|
"FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS",
|
||||||
|
"IN THE MATERIALS."
|
||||||
|
],
|
||||||
|
"version" : 100,
|
||||||
|
"revision" : 1,
|
||||||
|
"instructions" : [
|
||||||
|
{
|
||||||
|
"opname" : "DebugInfoNone",
|
||||||
|
"opcode" : 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugCompilationUnit",
|
||||||
|
"opcode" : 1,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'Source'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Version'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'DWARF Version'" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugTypeBasic",
|
||||||
|
"opcode" : 2,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'Name'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Size'" },
|
||||||
|
{ "kind" : "DebugBaseTypeAttributeEncoding", "name" : "'Encoding'" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugTypePointer",
|
||||||
|
"opcode" : 3,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'Base Type'" },
|
||||||
|
{ "kind" : "StorageClass", "name" : "'Storage Class'" },
|
||||||
|
{ "kind" : "DebugInfoFlags", "name" : "'Literal Flags'" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugTypeQualifier",
|
||||||
|
"opcode" : 4,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'Base Type'" },
|
||||||
|
{ "kind" : "DebugTypeQualifier", "name" : "'Type Qualifier'" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugTypeArray",
|
||||||
|
"opcode" : 5,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'Base Type'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Component Counts'", "quantifier" : "*" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugTypeVector",
|
||||||
|
"opcode" : 6,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'Base Type'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Component Count'" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugTypedef",
|
||||||
|
"opcode" : 7,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'Name'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Base Type'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Source'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Line'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Column'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Parent'" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugTypeFunction",
|
||||||
|
"opcode" : 8,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'Return Type'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Paramter Types'", "quantifier" : "*" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugTypeEnum",
|
||||||
|
"opcode" : 9,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'Name'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Underlying Type'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Source'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Line'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Column'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Parent'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Size'" },
|
||||||
|
{ "kind" : "DebugInfoFlags", "name" : "'Flags'" },
|
||||||
|
{ "kind" : "PairIdRefIdRef", "name" : "'Value, Name, Value, Name, ...'", "quantifier" : "*" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugTypeComposite",
|
||||||
|
"opcode" : 10,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'Name'" },
|
||||||
|
{ "kind" : "DebugCompositeType", "name" : "'Tag'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Source'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Line'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Column'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Parent'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Size'" },
|
||||||
|
{ "kind" : "DebugInfoFlags", "name" : "'Flags'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Members'", "quantifier" : "*" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugTypeMember",
|
||||||
|
"opcode" : 11,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'Name'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Type'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Source'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Line'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Column'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Parent'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Offset'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Size'" },
|
||||||
|
{ "kind" : "DebugInfoFlags", "name" : "'Flags'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Value'", "quantifier" : "?" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugTypeInheritance",
|
||||||
|
"opcode" : 12,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'Child'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Parent'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Offset'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Size'" },
|
||||||
|
{ "kind" : "DebugInfoFlags", "name" : "'Flags'" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugTypePtrToMember",
|
||||||
|
"opcode" : 13,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'Member Type'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Parent'" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugTypeTemplate",
|
||||||
|
"opcode" : 14,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'Target'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Parameters'", "quantifier" : "*" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugTypeTemplateParameter",
|
||||||
|
"opcode" : 15,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'Name'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Actual Type'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Value'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Source'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Line'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Column'" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugTypeTemplateTemplateParameter",
|
||||||
|
"opcode" : 16,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'Name'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Template Name'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Source'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Line'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Column'" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugTypeTemplateParameterPack",
|
||||||
|
"opcode" : 17,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'Name'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Source'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Line'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Column'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Template Parameters'", "quantifier" : "*" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugGlobalVariable",
|
||||||
|
"opcode" : 18,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'Name'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Type'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Source'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Line'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Column'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Parent'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Linkage Name'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Variable'" },
|
||||||
|
{ "kind" : "DebugInfoFlags", "name" : "'Flags'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Static Member Declaration'", "quantifier" : "?" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugFunctionDeclaration",
|
||||||
|
"opcode" : 19,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'Name'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Type'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Source'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Line'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Column'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Parent'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Linkage Name'" },
|
||||||
|
{ "kind" : "DebugInfoFlags", "name" : "'Flags'" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugFunction",
|
||||||
|
"opcode" : 20,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'Name'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Type'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Source'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Line'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Column'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Parent'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Linkage Name'" },
|
||||||
|
{ "kind" : "DebugInfoFlags", "name" : "'Flags'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Scope Line'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Function'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Declaration'", "quantifier" : "?" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugLexicalBlock",
|
||||||
|
"opcode" : 21,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'Source'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Line'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Column'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Parent'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Name'", "quantifier" : "?" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugLexicalBlockDiscriminator",
|
||||||
|
"opcode" : 22,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'Scope'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Discriminator'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Parent'" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugScope",
|
||||||
|
"opcode" : 23,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'Scope'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Inlined At'", "quantifier" : "?" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugNoScope",
|
||||||
|
"opcode" : 24
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugInlinedAt",
|
||||||
|
"opcode" : 25,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Line'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Scope'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Inlined'", "quantifier" : "?" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugLocalVariable",
|
||||||
|
"opcode" : 26,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'Name'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Type'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Source'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Line'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Column'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Parent'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Arg Number'", "quantifier" : "?" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugInlinedVariable",
|
||||||
|
"opcode" : 27,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'Variable'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Inlined'" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugDeclare",
|
||||||
|
"opcode" : 28,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'Local Variable'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Variable'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Expression'" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugValue",
|
||||||
|
"opcode" : 29,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'Value'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Expression'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Indexes'", "quantifier" : "*" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugOperation",
|
||||||
|
"opcode" : 30,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "DebugOperation", "name" : "'OpCode'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Operands ...'", "quantifier" : "*" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugExpression",
|
||||||
|
"opcode" : 31,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'Operands ...'", "quantifier" : "*" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugMacroDef",
|
||||||
|
"opcode" : 32,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'Source'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Line'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Name'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Value'", "quantifier" : "?" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugMacroUndef",
|
||||||
|
"opcode" : 33,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'Source'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Line'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Macro'" }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"operand_kinds" : [
|
||||||
|
{
|
||||||
|
"category" : "BitEnum",
|
||||||
|
"kind" : "DebugInfoFlags",
|
||||||
|
"enumerants" : [
|
||||||
|
{
|
||||||
|
"enumerant" : "None",
|
||||||
|
"value" : "0x0000"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "FlagIsProtected",
|
||||||
|
"value" : "0x01"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "FlagIsPrivate",
|
||||||
|
"value" : "0x02"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "FlagIsPublic",
|
||||||
|
"value" : "0x03"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "FlagIsLocal",
|
||||||
|
"value" : "0x04"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "FlagIsDefinition",
|
||||||
|
"value" : "0x08"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "FlagFwdDecl",
|
||||||
|
"value" : "0x10"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "FlagArtificial",
|
||||||
|
"value" : "0x20"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "FlagExplicit",
|
||||||
|
"value" : "0x40"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "FlagPrototyped",
|
||||||
|
"value" : "0x80"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "FlagObjectPointer",
|
||||||
|
"value" : "0x100"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "FlagStaticMember",
|
||||||
|
"value" : "0x200"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "FlagIndirectVariable",
|
||||||
|
"value" : "0x400"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "FlagLValueReference",
|
||||||
|
"value" : "0x800"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "FlagRValueReference",
|
||||||
|
"value" : "0x1000"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "FlagIsOptimized",
|
||||||
|
"value" : "0x2000"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category" : "ValueEnum",
|
||||||
|
"kind" : "DebugBaseTypeAttributeEncoding",
|
||||||
|
"enumerants" : [
|
||||||
|
{
|
||||||
|
"enumerant" : "Unspecified",
|
||||||
|
"value" : "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "Address",
|
||||||
|
"value" : "1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "Boolean",
|
||||||
|
"value" : "2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "Float",
|
||||||
|
"value" : "4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "Signed",
|
||||||
|
"value" : "5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "SignedChar",
|
||||||
|
"value" : "6"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "Unsigned",
|
||||||
|
"value" : "7"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "UnsignedChar",
|
||||||
|
"value" : "8"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category" : "ValueEnum",
|
||||||
|
"kind" : "DebugCompositeType",
|
||||||
|
"enumerants" : [
|
||||||
|
{
|
||||||
|
"enumerant" : "Class",
|
||||||
|
"value" : "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "Structure",
|
||||||
|
"value" : "1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "Union",
|
||||||
|
"value" : "2"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category" : "ValueEnum",
|
||||||
|
"kind" : "DebugTypeQualifier",
|
||||||
|
"enumerants" : [
|
||||||
|
{
|
||||||
|
"enumerant" : "ConstType",
|
||||||
|
"value" : "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "VolatileType",
|
||||||
|
"value" : "1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "RestrictType",
|
||||||
|
"value" : "2"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category" : "ValueEnum",
|
||||||
|
"kind" : "DebugOperation",
|
||||||
|
"enumerants" : [
|
||||||
|
{
|
||||||
|
"enumerant" : "Deref",
|
||||||
|
"value" : "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "Plus",
|
||||||
|
"value" : "1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "Minus",
|
||||||
|
"value" : "2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "PlusUconst",
|
||||||
|
"value" : "3",
|
||||||
|
"parameters" : [
|
||||||
|
{ "kind" : "LiteralInteger" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "BitPiece",
|
||||||
|
"value" : "4",
|
||||||
|
"parameters" : [
|
||||||
|
{ "kind" : "LiteralInteger" },
|
||||||
|
{ "kind" : "LiteralInteger" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "Swap",
|
||||||
|
"value" : "5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "Xderef",
|
||||||
|
"value" : "6"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "StackValue",
|
||||||
|
"value" : "7"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "Constu",
|
||||||
|
"value" : "8",
|
||||||
|
"parameters" : [
|
||||||
|
{ "kind" : "LiteralInteger" }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
237
externals/sirit/externals/SPIRV-Headers/include/spirv/unified1/extinst.nonsemantic.clspvreflection.grammar.json
vendored
Executable file
237
externals/sirit/externals/SPIRV-Headers/include/spirv/unified1/extinst.nonsemantic.clspvreflection.grammar.json
vendored
Executable file
@ -0,0 +1,237 @@
|
|||||||
|
{
|
||||||
|
"revision" : 1,
|
||||||
|
"instructions" : [
|
||||||
|
{
|
||||||
|
"opname" : "Kernel",
|
||||||
|
"opcode" : 1,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "Kernel" },
|
||||||
|
{ "kind" : "IdRef", "name" : "Name" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "ArgumentInfo",
|
||||||
|
"opcode" : 2,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "Name" },
|
||||||
|
{ "kind" : "IdRef", "name" : "Type Name", "quantifier" : "?" },
|
||||||
|
{ "kind" : "IdRef", "name" : "Address Qualifier", "quantifier" : "?" },
|
||||||
|
{ "kind" : "IdRef", "name" : "Access Qualifier", "quantifier" : "?" },
|
||||||
|
{ "kind" : "IdRef", "name" : "Type Qualifier", "quantifier" : "?" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "ArgumentStorageBuffer",
|
||||||
|
"opcode" : 3,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "Decl" },
|
||||||
|
{ "kind" : "IdRef", "name" : "Ordinal" },
|
||||||
|
{ "kind" : "IdRef", "name" : "DescriptorSet" },
|
||||||
|
{ "kind" : "IdRef", "name" : "Binding" },
|
||||||
|
{ "kind" : "IdRef", "name" : "ArgInfo", "quantifier" : "?" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "ArgumentUniform",
|
||||||
|
"opcode" : 4,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "Decl" },
|
||||||
|
{ "kind" : "IdRef", "name" : "Ordinal" },
|
||||||
|
{ "kind" : "IdRef", "name" : "DescriptorSet" },
|
||||||
|
{ "kind" : "IdRef", "name" : "Binding" },
|
||||||
|
{ "kind" : "IdRef", "name" : "ArgInfo", "quantifier" : "?" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "ArgumentPodStorageBuffer",
|
||||||
|
"opcode" : 5,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "Decl" },
|
||||||
|
{ "kind" : "IdRef", "name" : "Ordinal" },
|
||||||
|
{ "kind" : "IdRef", "name" : "DescriptorSet" },
|
||||||
|
{ "kind" : "IdRef", "name" : "Binding" },
|
||||||
|
{ "kind" : "IdRef", "name" : "Offset" },
|
||||||
|
{ "kind" : "IdRef", "name" : "Size" },
|
||||||
|
{ "kind" : "IdRef", "name" : "ArgInfo", "quantifier" : "?" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "ArgumentPodUniform",
|
||||||
|
"opcode" : 6,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "Decl" },
|
||||||
|
{ "kind" : "IdRef", "name" : "Ordinal" },
|
||||||
|
{ "kind" : "IdRef", "name" : "DescriptorSet" },
|
||||||
|
{ "kind" : "IdRef", "name" : "Binding" },
|
||||||
|
{ "kind" : "IdRef", "name" : "Offset" },
|
||||||
|
{ "kind" : "IdRef", "name" : "Size" },
|
||||||
|
{ "kind" : "IdRef", "name" : "ArgInfo", "quantifier" : "?" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "ArgumentPodPushConstant",
|
||||||
|
"opcode" : 7,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "Decl" },
|
||||||
|
{ "kind" : "IdRef", "name" : "Ordinal" },
|
||||||
|
{ "kind" : "IdRef", "name" : "Offset" },
|
||||||
|
{ "kind" : "IdRef", "name" : "Size" },
|
||||||
|
{ "kind" : "IdRef", "name" : "ArgInfo", "quantifier" : "?" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "ArgumentSampledImage",
|
||||||
|
"opcode" : 8,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "Decl" },
|
||||||
|
{ "kind" : "IdRef", "name" : "Ordinal" },
|
||||||
|
{ "kind" : "IdRef", "name" : "DescriptorSet" },
|
||||||
|
{ "kind" : "IdRef", "name" : "Binding" },
|
||||||
|
{ "kind" : "IdRef", "name" : "ArgInfo", "quantifier" : "?" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "ArgumentStorageImage",
|
||||||
|
"opcode" : 9,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "Decl" },
|
||||||
|
{ "kind" : "IdRef", "name" : "Ordinal" },
|
||||||
|
{ "kind" : "IdRef", "name" : "DescriptorSet" },
|
||||||
|
{ "kind" : "IdRef", "name" : "Binding" },
|
||||||
|
{ "kind" : "IdRef", "name" : "ArgInfo", "quantifier" : "?" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "ArgumentSampler",
|
||||||
|
"opcode" : 10,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "Decl" },
|
||||||
|
{ "kind" : "IdRef", "name" : "Ordinal" },
|
||||||
|
{ "kind" : "IdRef", "name" : "DescriptorSet" },
|
||||||
|
{ "kind" : "IdRef", "name" : "Binding" },
|
||||||
|
{ "kind" : "IdRef", "name" : "ArgInfo", "quantifier" : "?" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "ArgumentWorkgroup",
|
||||||
|
"opcode" : 11,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "Decl" },
|
||||||
|
{ "kind" : "IdRef", "name" : "Ordinal" },
|
||||||
|
{ "kind" : "IdRef", "name" : "SpecId" },
|
||||||
|
{ "kind" : "IdRef", "name" : "ElemSize" },
|
||||||
|
{ "kind" : "IdRef", "name" : "ArgInfo", "quantifier" : "?" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "SpecConstantWorkgroupSize",
|
||||||
|
"opcode" : 12,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "X" },
|
||||||
|
{ "kind" : "IdRef", "name" : "Y" },
|
||||||
|
{ "kind" : "IdRef", "name" : "Z" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "SpecConstantGlobalOffset",
|
||||||
|
"opcode" : 13,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "X" },
|
||||||
|
{ "kind" : "IdRef", "name" : "Y" },
|
||||||
|
{ "kind" : "IdRef", "name" : "Z" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "SpecConstantWorkDim",
|
||||||
|
"opcode" : 14,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "Dim" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "PushConstantGlobalOffset",
|
||||||
|
"opcode" : 15,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "Offset" },
|
||||||
|
{ "kind" : "IdRef", "name" : "Size" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "PushConstantEnqueuedLocalSize",
|
||||||
|
"opcode" : 16,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "Offset" },
|
||||||
|
{ "kind" : "IdRef", "name" : "Size" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "PushConstantGlobalSize",
|
||||||
|
"opcode" : 17,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "Offset" },
|
||||||
|
{ "kind" : "IdRef", "name" : "Size" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "PushConstantRegionOffset",
|
||||||
|
"opcode" : 18,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "Offset" },
|
||||||
|
{ "kind" : "IdRef", "name" : "Size" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "PushConstantNumWorkgroups",
|
||||||
|
"opcode" : 19,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "Offset" },
|
||||||
|
{ "kind" : "IdRef", "name" : "Size" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "PushConstantRegionGroupOffset",
|
||||||
|
"opcode" : 20,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "Offset" },
|
||||||
|
{ "kind" : "IdRef", "name" : "Size" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "ConstantDataStorageBuffer",
|
||||||
|
"opcode" : 21,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "DescriptorSet" },
|
||||||
|
{ "kind" : "IdRef", "name" : "Binding" },
|
||||||
|
{ "kind" : "IdRef", "name" : "Data" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "ConstantDataUniform",
|
||||||
|
"opcode" : 22,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "DescriptorSet" },
|
||||||
|
{ "kind" : "IdRef", "name" : "Binding" },
|
||||||
|
{ "kind" : "IdRef", "name" : "Data" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "LiteralSampler",
|
||||||
|
"opcode" : 23,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "DescriptorSet" },
|
||||||
|
{ "kind" : "IdRef", "name" : "Binding" },
|
||||||
|
{ "kind" : "IdRef", "name" : "Mask" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "PropertyRequiredWorkgroupSize",
|
||||||
|
"opcode" : 24,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "Kernel" },
|
||||||
|
{ "kind" : "IdRef", "name" : "X" },
|
||||||
|
{ "kind" : "IdRef", "name" : "Y" },
|
||||||
|
{ "kind" : "IdRef", "name" : "Z" }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
13
externals/sirit/externals/SPIRV-Headers/include/spirv/unified1/extinst.nonsemantic.debugprintf.grammar.json
vendored
Executable file
13
externals/sirit/externals/SPIRV-Headers/include/spirv/unified1/extinst.nonsemantic.debugprintf.grammar.json
vendored
Executable file
@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"revision" : 1,
|
||||||
|
"instructions" : [
|
||||||
|
{
|
||||||
|
"opname" : "DebugPrintf",
|
||||||
|
"opcode" : 1,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'Format'" },
|
||||||
|
{ "kind" : "IdRef", "quantifier" : "*" }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
636
externals/sirit/externals/SPIRV-Headers/include/spirv/unified1/extinst.opencl.debuginfo.100.grammar.json
vendored
Executable file
636
externals/sirit/externals/SPIRV-Headers/include/spirv/unified1/extinst.opencl.debuginfo.100.grammar.json
vendored
Executable file
@ -0,0 +1,636 @@
|
|||||||
|
{
|
||||||
|
"copyright" : [
|
||||||
|
"Copyright (c) 2018 The Khronos Group Inc.",
|
||||||
|
"",
|
||||||
|
"Permission is hereby granted, free of charge, to any person obtaining a copy",
|
||||||
|
"of this software and/or associated documentation files (the \"Materials\"),",
|
||||||
|
"to deal in the Materials without restriction, including without limitation",
|
||||||
|
"the rights to use, copy, modify, merge, publish, distribute, sublicense,",
|
||||||
|
"and/or sell copies of the Materials, and to permit persons to whom the",
|
||||||
|
"Materials are furnished to do so, subject to the following conditions:",
|
||||||
|
"",
|
||||||
|
"The above copyright notice and this permission notice shall be included in",
|
||||||
|
"all copies or substantial portions of the Materials.",
|
||||||
|
"",
|
||||||
|
"MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS",
|
||||||
|
"STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND",
|
||||||
|
"HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ ",
|
||||||
|
"",
|
||||||
|
"THE MATERIALS ARE PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS",
|
||||||
|
"OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,",
|
||||||
|
"FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL",
|
||||||
|
"THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER",
|
||||||
|
"LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING",
|
||||||
|
"FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS",
|
||||||
|
"IN THE MATERIALS."
|
||||||
|
],
|
||||||
|
"version" : 200,
|
||||||
|
"revision" : 2,
|
||||||
|
"instructions" : [
|
||||||
|
{
|
||||||
|
"opname" : "DebugInfoNone",
|
||||||
|
"opcode" : 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugCompilationUnit",
|
||||||
|
"opcode" : 1,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Version'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'DWARF Version'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Source'" },
|
||||||
|
{ "kind" : "SourceLanguage", "name" : "'Language'" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugTypeBasic",
|
||||||
|
"opcode" : 2,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'Name'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Size'" },
|
||||||
|
{ "kind" : "DebugBaseTypeAttributeEncoding", "name" : "'Encoding'" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugTypePointer",
|
||||||
|
"opcode" : 3,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'Base Type'" },
|
||||||
|
{ "kind" : "StorageClass", "name" : "'Storage Class'" },
|
||||||
|
{ "kind" : "DebugInfoFlags", "name" : "'Flags'" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugTypeQualifier",
|
||||||
|
"opcode" : 4,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'Base Type'" },
|
||||||
|
{ "kind" : "DebugTypeQualifier", "name" : "'Type Qualifier'" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugTypeArray",
|
||||||
|
"opcode" : 5,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'Base Type'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Component Counts'", "quantifier" : "*" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugTypeVector",
|
||||||
|
"opcode" : 6,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'Base Type'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Component Count'" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugTypedef",
|
||||||
|
"opcode" : 7,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'Name'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Base Type'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Source'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Line'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Column'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Parent'" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugTypeFunction",
|
||||||
|
"opcode" : 8,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "DebugInfoFlags", "name" : "'Flags'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Return Type'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Parameter Types'", "quantifier" : "*" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugTypeEnum",
|
||||||
|
"opcode" : 9,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'Name'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Underlying Type'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Source'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Line'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Column'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Parent'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Size'" },
|
||||||
|
{ "kind" : "DebugInfoFlags", "name" : "'Flags'" },
|
||||||
|
{ "kind" : "PairIdRefIdRef", "name" : "'Value, Name, Value, Name, ...'", "quantifier" : "*" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugTypeComposite",
|
||||||
|
"opcode" : 10,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'Name'" },
|
||||||
|
{ "kind" : "DebugCompositeType", "name" : "'Tag'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Source'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Line'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Column'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Parent'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Linkage Name'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Size'" },
|
||||||
|
{ "kind" : "DebugInfoFlags", "name" : "'Flags'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Members'", "quantifier" : "*" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugTypeMember",
|
||||||
|
"opcode" : 11,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'Name'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Type'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Source'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Line'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Column'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Parent'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Offset'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Size'" },
|
||||||
|
{ "kind" : "DebugInfoFlags", "name" : "'Flags'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Value'", "quantifier" : "?" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugTypeInheritance",
|
||||||
|
"opcode" : 12,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'Child'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Parent'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Offset'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Size'" },
|
||||||
|
{ "kind" : "DebugInfoFlags", "name" : "'Flags'" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugTypePtrToMember",
|
||||||
|
"opcode" : 13,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'Member Type'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Parent'" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugTypeTemplate",
|
||||||
|
"opcode" : 14,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'Target'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Parameters'", "quantifier" : "*" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugTypeTemplateParameter",
|
||||||
|
"opcode" : 15,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'Name'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Actual Type'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Value'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Source'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Line'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Column'" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugTypeTemplateTemplateParameter",
|
||||||
|
"opcode" : 16,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'Name'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Template Name'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Source'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Line'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Column'" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugTypeTemplateParameterPack",
|
||||||
|
"opcode" : 17,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'Name'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Source'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Line'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Column'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Template Parameters'", "quantifier" : "*" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugGlobalVariable",
|
||||||
|
"opcode" : 18,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'Name'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Type'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Source'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Line'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Column'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Parent'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Linkage Name'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Variable'" },
|
||||||
|
{ "kind" : "DebugInfoFlags", "name" : "'Flags'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Static Member Declaration'", "quantifier" : "?" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugFunctionDeclaration",
|
||||||
|
"opcode" : 19,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'Name'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Type'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Source'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Line'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Column'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Parent'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Linkage Name'" },
|
||||||
|
{ "kind" : "DebugInfoFlags", "name" : "'Flags'" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugFunction",
|
||||||
|
"opcode" : 20,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'Name'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Type'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Source'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Line'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Column'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Parent'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Linkage Name'" },
|
||||||
|
{ "kind" : "DebugInfoFlags", "name" : "'Flags'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Scope Line'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Function'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Declaration'", "quantifier" : "?" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugLexicalBlock",
|
||||||
|
"opcode" : 21,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'Source'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Line'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Column'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Parent'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Name'", "quantifier" : "?" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugLexicalBlockDiscriminator",
|
||||||
|
"opcode" : 22,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'Source'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Discriminator'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Parent'" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugScope",
|
||||||
|
"opcode" : 23,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'Scope'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Inlined At'", "quantifier" : "?" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugNoScope",
|
||||||
|
"opcode" : 24
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugInlinedAt",
|
||||||
|
"opcode" : 25,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Line'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Scope'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Inlined'", "quantifier" : "?" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugLocalVariable",
|
||||||
|
"opcode" : 26,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'Name'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Type'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Source'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Line'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Column'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Parent'" },
|
||||||
|
{ "kind" : "DebugInfoFlags", "name" : "'Flags'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Arg Number'", "quantifier" : "?" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugInlinedVariable",
|
||||||
|
"opcode" : 27,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'Variable'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Inlined'" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugDeclare",
|
||||||
|
"opcode" : 28,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'Local Variable'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Variable'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Expression'" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugValue",
|
||||||
|
"opcode" : 29,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'Local Variable'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Value'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Expression'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Indexes'", "quantifier" : "*" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugOperation",
|
||||||
|
"opcode" : 30,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "DebugOperation", "name" : "'OpCode'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Operands ...'", "quantifier" : "*" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugExpression",
|
||||||
|
"opcode" : 31,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'Operands ...'", "quantifier" : "*" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugMacroDef",
|
||||||
|
"opcode" : 32,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'Source'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Line'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Name'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Value'", "quantifier" : "?" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugMacroUndef",
|
||||||
|
"opcode" : 33,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'Source'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Line'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Macro'" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugImportedEntity",
|
||||||
|
"opcode" : 34,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'Name'" },
|
||||||
|
{ "kind" : "DebugImportedEntity", "name" : "'Tag'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Source'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Entity'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Line'" },
|
||||||
|
{ "kind" : "LiteralInteger", "name" : "'Column'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Parent'" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "DebugSource",
|
||||||
|
"opcode" : 35,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'File'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'Text'", "quantifier" : "?" }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"operand_kinds" : [
|
||||||
|
{
|
||||||
|
"category" : "BitEnum",
|
||||||
|
"kind" : "DebugInfoFlags",
|
||||||
|
"enumerants" : [
|
||||||
|
{
|
||||||
|
"enumerant" : "None",
|
||||||
|
"value" : "0x0000"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "FlagIsProtected",
|
||||||
|
"value" : "0x01"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "FlagIsPrivate",
|
||||||
|
"value" : "0x02"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "FlagIsPublic",
|
||||||
|
"value" : "0x03"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "FlagIsLocal",
|
||||||
|
"value" : "0x04"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "FlagIsDefinition",
|
||||||
|
"value" : "0x08"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "FlagFwdDecl",
|
||||||
|
"value" : "0x10"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "FlagArtificial",
|
||||||
|
"value" : "0x20"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "FlagExplicit",
|
||||||
|
"value" : "0x40"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "FlagPrototyped",
|
||||||
|
"value" : "0x80"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "FlagObjectPointer",
|
||||||
|
"value" : "0x100"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "FlagStaticMember",
|
||||||
|
"value" : "0x200"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "FlagIndirectVariable",
|
||||||
|
"value" : "0x400"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "FlagLValueReference",
|
||||||
|
"value" : "0x800"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "FlagRValueReference",
|
||||||
|
"value" : "0x1000"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "FlagIsOptimized",
|
||||||
|
"value" : "0x2000"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "FlagIsEnumClass",
|
||||||
|
"value" : "0x4000"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "FlagTypePassByValue",
|
||||||
|
"value" : "0x8000"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "FlagTypePassByReference",
|
||||||
|
"value" : "0x10000"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category" : "ValueEnum",
|
||||||
|
"kind" : "DebugBaseTypeAttributeEncoding",
|
||||||
|
"enumerants" : [
|
||||||
|
{
|
||||||
|
"enumerant" : "Unspecified",
|
||||||
|
"value" : "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "Address",
|
||||||
|
"value" : "1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "Boolean",
|
||||||
|
"value" : "2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "Float",
|
||||||
|
"value" : "3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "Signed",
|
||||||
|
"value" : "4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "SignedChar",
|
||||||
|
"value" : "5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "Unsigned",
|
||||||
|
"value" : "6"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "UnsignedChar",
|
||||||
|
"value" : "7"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category" : "ValueEnum",
|
||||||
|
"kind" : "DebugCompositeType",
|
||||||
|
"enumerants" : [
|
||||||
|
{
|
||||||
|
"enumerant" : "Class",
|
||||||
|
"value" : "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "Structure",
|
||||||
|
"value" : "1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "Union",
|
||||||
|
"value" : "2"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category" : "ValueEnum",
|
||||||
|
"kind" : "DebugTypeQualifier",
|
||||||
|
"enumerants" : [
|
||||||
|
{
|
||||||
|
"enumerant" : "ConstType",
|
||||||
|
"value" : "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "VolatileType",
|
||||||
|
"value" : "1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "RestrictType",
|
||||||
|
"value" : "2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "AtomicType",
|
||||||
|
"value" : "3"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category" : "ValueEnum",
|
||||||
|
"kind" : "DebugOperation",
|
||||||
|
"enumerants" : [
|
||||||
|
{
|
||||||
|
"enumerant" : "Deref",
|
||||||
|
"value" : "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "Plus",
|
||||||
|
"value" : "1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "Minus",
|
||||||
|
"value" : "2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "PlusUconst",
|
||||||
|
"value" : "3",
|
||||||
|
"parameters" : [
|
||||||
|
{ "kind" : "LiteralInteger" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "BitPiece",
|
||||||
|
"value" : "4",
|
||||||
|
"parameters" : [
|
||||||
|
{ "kind" : "LiteralInteger" },
|
||||||
|
{ "kind" : "LiteralInteger" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "Swap",
|
||||||
|
"value" : "5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "Xderef",
|
||||||
|
"value" : "6"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "StackValue",
|
||||||
|
"value" : "7"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "Constu",
|
||||||
|
"value" : "8",
|
||||||
|
"parameters" : [
|
||||||
|
{ "kind" : "LiteralInteger" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "Fragment",
|
||||||
|
"value" : "9",
|
||||||
|
"parameters" : [
|
||||||
|
{ "kind" : "LiteralInteger" },
|
||||||
|
{ "kind" : "LiteralInteger" }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"category" : "ValueEnum",
|
||||||
|
"kind" : "DebugImportedEntity",
|
||||||
|
"enumerants" : [
|
||||||
|
{
|
||||||
|
"enumerant" : "ImportedModule",
|
||||||
|
"value" : "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enumerant" : "ImportedDeclaration",
|
||||||
|
"value" : "1"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
26
externals/sirit/externals/SPIRV-Headers/include/spirv/unified1/extinst.spv-amd-gcn-shader.grammar.json
vendored
Executable file
26
externals/sirit/externals/SPIRV-Headers/include/spirv/unified1/extinst.spv-amd-gcn-shader.grammar.json
vendored
Executable file
@ -0,0 +1,26 @@
|
|||||||
|
{
|
||||||
|
"revision" : 2,
|
||||||
|
"instructions" : [
|
||||||
|
{
|
||||||
|
"opname" : "CubeFaceIndexAMD",
|
||||||
|
"opcode" : 1,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'P'" }
|
||||||
|
],
|
||||||
|
"extensions" : [ "SPV_AMD_gcn_shader" ]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "CubeFaceCoordAMD",
|
||||||
|
"opcode" : 2,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'P'" }
|
||||||
|
],
|
||||||
|
"extensions" : [ "SPV_AMD_gcn_shader" ]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "TimeAMD",
|
||||||
|
"opcode" : 3,
|
||||||
|
"extensions" : [ "SPV_AMD_gcn_shader" ]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
41
externals/sirit/externals/SPIRV-Headers/include/spirv/unified1/extinst.spv-amd-shader-ballot.grammar.json
vendored
Executable file
41
externals/sirit/externals/SPIRV-Headers/include/spirv/unified1/extinst.spv-amd-shader-ballot.grammar.json
vendored
Executable file
@ -0,0 +1,41 @@
|
|||||||
|
{
|
||||||
|
"revision" : 5,
|
||||||
|
"instructions" : [
|
||||||
|
{
|
||||||
|
"opname" : "SwizzleInvocationsAMD",
|
||||||
|
"opcode" : 1,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'data'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'offset'" }
|
||||||
|
],
|
||||||
|
"extensions" : [ "SPV_AMD_shader_ballot" ]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "SwizzleInvocationsMaskedAMD",
|
||||||
|
"opcode" : 2,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'data'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'mask'" }
|
||||||
|
],
|
||||||
|
"extensions" : [ "SPV_AMD_shader_ballot" ]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "WriteInvocationAMD",
|
||||||
|
"opcode" : 3,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'inputValue'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'writeValue'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'invocationIndex'" }
|
||||||
|
],
|
||||||
|
"extensions" : [ "SPV_AMD_shader_ballot" ]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "MbcntAMD",
|
||||||
|
"opcode" : 4,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'mask'" }
|
||||||
|
],
|
||||||
|
"extensions" : [ "SPV_AMD_shader_ballot" ]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"revision" : 4,
|
||||||
|
"instructions" : [
|
||||||
|
{
|
||||||
|
"opname" : "InterpolateAtVertexAMD",
|
||||||
|
"opcode" : 1,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'interpolant'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'vertexIdx'" }
|
||||||
|
],
|
||||||
|
"extensions" : [ "SPV_AMD_shader_explicit_vertex_parameter" ]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,95 @@
|
|||||||
|
{
|
||||||
|
"revision" : 4,
|
||||||
|
"instructions" : [
|
||||||
|
{
|
||||||
|
"opname" : "FMin3AMD",
|
||||||
|
"opcode" : 1,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'x'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'y'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'z'" }
|
||||||
|
],
|
||||||
|
"extensions" : [ "SPV_AMD_shader_trinary_minmax" ]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "UMin3AMD",
|
||||||
|
"opcode" : 2,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'x'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'y'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'z'" }
|
||||||
|
],
|
||||||
|
"extensions" : [ "SPV_AMD_shader_trinary_minmax" ]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "SMin3AMD",
|
||||||
|
"opcode" : 3,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'x'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'y'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'z'" }
|
||||||
|
],
|
||||||
|
"extensions" : [ "SPV_AMD_shader_trinary_minmax" ]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "FMax3AMD",
|
||||||
|
"opcode" : 4,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'x'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'y'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'z'" }
|
||||||
|
],
|
||||||
|
"extensions" : [ "SPV_AMD_shader_trinary_minmax" ]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "UMax3AMD",
|
||||||
|
"opcode" : 5,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'x'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'y'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'z'" }
|
||||||
|
],
|
||||||
|
"extensions" : [ "SPV_AMD_shader_trinary_minmax" ]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "SMax3AMD",
|
||||||
|
"opcode" : 6,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'x'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'y'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'z'" }
|
||||||
|
],
|
||||||
|
"extensions" : [ "SPV_AMD_shader_trinary_minmax" ]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "FMid3AMD",
|
||||||
|
"opcode" : 7,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'x'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'y'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'z'" }
|
||||||
|
],
|
||||||
|
"extensions" : [ "SPV_AMD_shader_trinary_minmax" ]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "UMid3AMD",
|
||||||
|
"opcode" : 8,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'x'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'y'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'z'" }
|
||||||
|
],
|
||||||
|
"extensions" : [ "SPV_AMD_shader_trinary_minmax" ]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"opname" : "SMid3AMD",
|
||||||
|
"opcode" : 9,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'x'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'y'" },
|
||||||
|
{ "kind" : "IdRef", "name" : "'z'" }
|
||||||
|
],
|
||||||
|
"extensions" : [ "SPV_AMD_shader_trinary_minmax" ]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
File diff suppressed because it is too large
Load Diff
1707
externals/sirit/externals/SPIRV-Headers/include/spirv/unified1/spirv.cs
vendored
Executable file
1707
externals/sirit/externals/SPIRV-Headers/include/spirv/unified1/spirv.cs
vendored
Executable file
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
File diff suppressed because it is too large
Load Diff
@ -6,7 +6,7 @@
|
|||||||
"Comment":
|
"Comment":
|
||||||
[
|
[
|
||||||
[
|
[
|
||||||
"Copyright (c) 2014-2018 The Khronos Group Inc.",
|
"Copyright (c) 2014-2020 The Khronos Group Inc.",
|
||||||
"",
|
"",
|
||||||
"Permission is hereby granted, free of charge, to any person obtaining a copy",
|
"Permission is hereby granted, free of charge, to any person obtaining a copy",
|
||||||
"of this software and/or associated documentation files (the \"Materials\"),",
|
"of this software and/or associated documentation files (the \"Materials\"),",
|
||||||
@ -36,13 +36,16 @@
|
|||||||
],
|
],
|
||||||
[
|
[
|
||||||
"Enumeration tokens for SPIR-V, in various styles:",
|
"Enumeration tokens for SPIR-V, in various styles:",
|
||||||
" C, C++, C++11, JSON, Lua, Python",
|
" C, C++, C++11, JSON, Lua, Python, C#, D",
|
||||||
"",
|
"",
|
||||||
"- C will have tokens with a \"Spv\" prefix, e.g.: SpvSourceLanguageGLSL",
|
"- C will have tokens with a \"Spv\" prefix, e.g.: SpvSourceLanguageGLSL",
|
||||||
"- C++ will have tokens in the \"spv\" name space, e.g.: spv::SourceLanguageGLSL",
|
"- C++ will have tokens in the \"spv\" name space, e.g.: spv::SourceLanguageGLSL",
|
||||||
"- C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL",
|
"- C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL",
|
||||||
"- Lua will use tables, e.g.: spv.SourceLanguage.GLSL",
|
"- Lua will use tables, e.g.: spv.SourceLanguage.GLSL",
|
||||||
"- Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL']",
|
"- Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL']",
|
||||||
|
"- C# will use enum classes in the Specification class located in the \"Spv\" namespace,",
|
||||||
|
" e.g.: Spv.Specification.SourceLanguage.GLSL",
|
||||||
|
"- D will have tokens under the \"spv\" module, e.g: spv.SourceLanguage.GLSL",
|
||||||
"",
|
"",
|
||||||
"Some tokens act like mask values, which can be OR'd together,",
|
"Some tokens act like mask values, which can be OR'd together,",
|
||||||
"while others are mutually exclusive. The mask-like ones have",
|
"while others are mutually exclusive. The mask-like ones have",
|
||||||
@ -51,8 +54,8 @@
|
|||||||
]
|
]
|
||||||
],
|
],
|
||||||
"MagicNumber": 119734787,
|
"MagicNumber": 119734787,
|
||||||
"Version": 66304,
|
"Version": 66816,
|
||||||
"Revision": 1,
|
"Revision": 4,
|
||||||
"OpCodeMask": 65535,
|
"OpCodeMask": 65535,
|
||||||
"WordCountShift": 16
|
"WordCountShift": 16
|
||||||
},
|
},
|
||||||
@ -82,7 +85,21 @@
|
|||||||
"Geometry": 3,
|
"Geometry": 3,
|
||||||
"Fragment": 4,
|
"Fragment": 4,
|
||||||
"GLCompute": 5,
|
"GLCompute": 5,
|
||||||
"Kernel": 6
|
"Kernel": 6,
|
||||||
|
"TaskNV": 5267,
|
||||||
|
"MeshNV": 5268,
|
||||||
|
"RayGenerationKHR": 5313,
|
||||||
|
"RayGenerationNV": 5313,
|
||||||
|
"IntersectionKHR": 5314,
|
||||||
|
"IntersectionNV": 5314,
|
||||||
|
"AnyHitKHR": 5315,
|
||||||
|
"AnyHitNV": 5315,
|
||||||
|
"ClosestHitKHR": 5316,
|
||||||
|
"ClosestHitNV": 5316,
|
||||||
|
"MissKHR": 5317,
|
||||||
|
"MissNV": 5317,
|
||||||
|
"CallableKHR": 5318,
|
||||||
|
"CallableNV": 5318
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -92,7 +109,9 @@
|
|||||||
{
|
{
|
||||||
"Logical": 0,
|
"Logical": 0,
|
||||||
"Physical32": 1,
|
"Physical32": 1,
|
||||||
"Physical64": 2
|
"Physical64": 2,
|
||||||
|
"PhysicalStorageBuffer64": 5348,
|
||||||
|
"PhysicalStorageBuffer64EXT": 5348
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -102,7 +121,9 @@
|
|||||||
{
|
{
|
||||||
"Simple": 0,
|
"Simple": 0,
|
||||||
"GLSL450": 1,
|
"GLSL450": 1,
|
||||||
"OpenCL": 2
|
"OpenCL": 2,
|
||||||
|
"Vulkan": 3,
|
||||||
|
"VulkanKHR": 3
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -149,7 +170,33 @@
|
|||||||
"LocalSizeId": 38,
|
"LocalSizeId": 38,
|
||||||
"LocalSizeHintId": 39,
|
"LocalSizeHintId": 39,
|
||||||
"PostDepthCoverage": 4446,
|
"PostDepthCoverage": 4446,
|
||||||
"StencilRefReplacingEXT": 5027
|
"DenormPreserve": 4459,
|
||||||
|
"DenormFlushToZero": 4460,
|
||||||
|
"SignedZeroInfNanPreserve": 4461,
|
||||||
|
"RoundingModeRTE": 4462,
|
||||||
|
"RoundingModeRTZ": 4463,
|
||||||
|
"StencilRefReplacingEXT": 5027,
|
||||||
|
"OutputLinesNV": 5269,
|
||||||
|
"OutputPrimitivesNV": 5270,
|
||||||
|
"DerivativeGroupQuadsNV": 5289,
|
||||||
|
"DerivativeGroupLinearNV": 5290,
|
||||||
|
"OutputTrianglesNV": 5298,
|
||||||
|
"PixelInterlockOrderedEXT": 5366,
|
||||||
|
"PixelInterlockUnorderedEXT": 5367,
|
||||||
|
"SampleInterlockOrderedEXT": 5368,
|
||||||
|
"SampleInterlockUnorderedEXT": 5369,
|
||||||
|
"ShadingRateInterlockOrderedEXT": 5370,
|
||||||
|
"ShadingRateInterlockUnorderedEXT": 5371,
|
||||||
|
"SharedLocalMemorySizeINTEL": 5618,
|
||||||
|
"RoundingModeRTPINTEL": 5620,
|
||||||
|
"RoundingModeRTNINTEL": 5621,
|
||||||
|
"FloatingPointModeALTINTEL": 5622,
|
||||||
|
"FloatingPointModeIEEEINTEL": 5623,
|
||||||
|
"MaxWorkgroupSizeINTEL": 5893,
|
||||||
|
"MaxWorkDimINTEL": 5894,
|
||||||
|
"NoGlobalOffsetINTEL": 5895,
|
||||||
|
"NumSIMDWorkitemsINTEL": 5896,
|
||||||
|
"SchedulerTargetFmaxMhzINTEL": 5903
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -169,7 +216,24 @@
|
|||||||
"PushConstant": 9,
|
"PushConstant": 9,
|
||||||
"AtomicCounter": 10,
|
"AtomicCounter": 10,
|
||||||
"Image": 11,
|
"Image": 11,
|
||||||
"StorageBuffer": 12
|
"StorageBuffer": 12,
|
||||||
|
"CallableDataKHR": 5328,
|
||||||
|
"CallableDataNV": 5328,
|
||||||
|
"IncomingCallableDataKHR": 5329,
|
||||||
|
"IncomingCallableDataNV": 5329,
|
||||||
|
"RayPayloadKHR": 5338,
|
||||||
|
"RayPayloadNV": 5338,
|
||||||
|
"HitAttributeKHR": 5339,
|
||||||
|
"HitAttributeNV": 5339,
|
||||||
|
"IncomingRayPayloadKHR": 5342,
|
||||||
|
"IncomingRayPayloadNV": 5342,
|
||||||
|
"ShaderRecordBufferKHR": 5343,
|
||||||
|
"ShaderRecordBufferNV": 5343,
|
||||||
|
"PhysicalStorageBuffer": 5349,
|
||||||
|
"PhysicalStorageBufferEXT": 5349,
|
||||||
|
"CodeSectionINTEL": 5605,
|
||||||
|
"DeviceOnlyINTEL": 5936,
|
||||||
|
"HostOnlyINTEL": 5937
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -251,7 +315,9 @@
|
|||||||
"Rg16ui": 36,
|
"Rg16ui": 36,
|
||||||
"Rg8ui": 37,
|
"Rg8ui": 37,
|
||||||
"R16ui": 38,
|
"R16ui": 38,
|
||||||
"R8ui": 39
|
"R8ui": 39,
|
||||||
|
"R64ui": 40,
|
||||||
|
"R64i": 41
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -317,7 +383,17 @@
|
|||||||
"Offset": 4,
|
"Offset": 4,
|
||||||
"ConstOffsets": 5,
|
"ConstOffsets": 5,
|
||||||
"Sample": 6,
|
"Sample": 6,
|
||||||
"MinLod": 7
|
"MinLod": 7,
|
||||||
|
"MakeTexelAvailable": 8,
|
||||||
|
"MakeTexelAvailableKHR": 8,
|
||||||
|
"MakeTexelVisible": 9,
|
||||||
|
"MakeTexelVisibleKHR": 9,
|
||||||
|
"NonPrivateTexel": 10,
|
||||||
|
"NonPrivateTexelKHR": 10,
|
||||||
|
"VolatileTexel": 11,
|
||||||
|
"VolatileTexelKHR": 11,
|
||||||
|
"SignExtend": 12,
|
||||||
|
"ZeroExtend": 13
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -329,7 +405,9 @@
|
|||||||
"NotInf": 1,
|
"NotInf": 1,
|
||||||
"NSZ": 2,
|
"NSZ": 2,
|
||||||
"AllowRecip": 3,
|
"AllowRecip": 3,
|
||||||
"Fast": 4
|
"Fast": 4,
|
||||||
|
"AllowContractFastINTEL": 16,
|
||||||
|
"AllowReassocINTEL": 17
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -408,6 +486,7 @@
|
|||||||
"NonWritable": 24,
|
"NonWritable": 24,
|
||||||
"NonReadable": 25,
|
"NonReadable": 25,
|
||||||
"Uniform": 26,
|
"Uniform": 26,
|
||||||
|
"UniformId": 27,
|
||||||
"SaturatedConversion": 28,
|
"SaturatedConversion": 28,
|
||||||
"Stream": 29,
|
"Stream": 29,
|
||||||
"Location": 30,
|
"Location": 30,
|
||||||
@ -428,14 +507,62 @@
|
|||||||
"MaxByteOffset": 45,
|
"MaxByteOffset": 45,
|
||||||
"AlignmentId": 46,
|
"AlignmentId": 46,
|
||||||
"MaxByteOffsetId": 47,
|
"MaxByteOffsetId": 47,
|
||||||
|
"NoSignedWrap": 4469,
|
||||||
|
"NoUnsignedWrap": 4470,
|
||||||
"ExplicitInterpAMD": 4999,
|
"ExplicitInterpAMD": 4999,
|
||||||
"OverrideCoverageNV": 5248,
|
"OverrideCoverageNV": 5248,
|
||||||
"PassthroughNV": 5250,
|
"PassthroughNV": 5250,
|
||||||
"ViewportRelativeNV": 5252,
|
"ViewportRelativeNV": 5252,
|
||||||
"SecondaryViewportRelativeNV": 5256,
|
"SecondaryViewportRelativeNV": 5256,
|
||||||
|
"PerPrimitiveNV": 5271,
|
||||||
|
"PerViewNV": 5272,
|
||||||
|
"PerTaskNV": 5273,
|
||||||
|
"PerVertexNV": 5285,
|
||||||
|
"NonUniform": 5300,
|
||||||
"NonUniformEXT": 5300,
|
"NonUniformEXT": 5300,
|
||||||
|
"RestrictPointer": 5355,
|
||||||
|
"RestrictPointerEXT": 5355,
|
||||||
|
"AliasedPointer": 5356,
|
||||||
|
"AliasedPointerEXT": 5356,
|
||||||
|
"SIMTCallINTEL": 5599,
|
||||||
|
"ReferencedIndirectlyINTEL": 5602,
|
||||||
|
"ClobberINTEL": 5607,
|
||||||
|
"SideEffectsINTEL": 5608,
|
||||||
|
"VectorComputeVariableINTEL": 5624,
|
||||||
|
"FuncParamIOKindINTEL": 5625,
|
||||||
|
"VectorComputeFunctionINTEL": 5626,
|
||||||
|
"StackCallINTEL": 5627,
|
||||||
|
"GlobalVariableOffsetINTEL": 5628,
|
||||||
|
"CounterBuffer": 5634,
|
||||||
"HlslCounterBufferGOOGLE": 5634,
|
"HlslCounterBufferGOOGLE": 5634,
|
||||||
"HlslSemanticGOOGLE": 5635
|
"HlslSemanticGOOGLE": 5635,
|
||||||
|
"UserSemantic": 5635,
|
||||||
|
"UserTypeGOOGLE": 5636,
|
||||||
|
"FunctionRoundingModeINTEL": 5822,
|
||||||
|
"FunctionDenormModeINTEL": 5823,
|
||||||
|
"RegisterINTEL": 5825,
|
||||||
|
"MemoryINTEL": 5826,
|
||||||
|
"NumbanksINTEL": 5827,
|
||||||
|
"BankwidthINTEL": 5828,
|
||||||
|
"MaxPrivateCopiesINTEL": 5829,
|
||||||
|
"SinglepumpINTEL": 5830,
|
||||||
|
"DoublepumpINTEL": 5831,
|
||||||
|
"MaxReplicatesINTEL": 5832,
|
||||||
|
"SimpleDualPortINTEL": 5833,
|
||||||
|
"MergeINTEL": 5834,
|
||||||
|
"BankBitsINTEL": 5835,
|
||||||
|
"ForcePow2DepthINTEL": 5836,
|
||||||
|
"BurstCoalesceINTEL": 5899,
|
||||||
|
"CacheSizeINTEL": 5900,
|
||||||
|
"DontStaticallyCoalesceINTEL": 5901,
|
||||||
|
"PrefetchINTEL": 5902,
|
||||||
|
"StallEnableINTEL": 5905,
|
||||||
|
"FuseLoopsInFunctionINTEL": 5907,
|
||||||
|
"BufferLocationINTEL": 5921,
|
||||||
|
"IOPipeStorageINTEL": 5944,
|
||||||
|
"FunctionFloatingPointModeINTEL": 6080,
|
||||||
|
"SingleElementVectorINTEL": 6085,
|
||||||
|
"VectorComputeCallableFunctionINTEL": 6087
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -497,8 +624,10 @@
|
|||||||
"BaseVertex": 4424,
|
"BaseVertex": 4424,
|
||||||
"BaseInstance": 4425,
|
"BaseInstance": 4425,
|
||||||
"DrawIndex": 4426,
|
"DrawIndex": 4426,
|
||||||
|
"PrimitiveShadingRateKHR": 4432,
|
||||||
"DeviceIndex": 4438,
|
"DeviceIndex": 4438,
|
||||||
"ViewIndex": 4440,
|
"ViewIndex": 4440,
|
||||||
|
"ShadingRateKHR": 4444,
|
||||||
"BaryCoordNoPerspAMD": 4992,
|
"BaryCoordNoPerspAMD": 4992,
|
||||||
"BaryCoordNoPerspCentroidAMD": 4993,
|
"BaryCoordNoPerspCentroidAMD": 4993,
|
||||||
"BaryCoordNoPerspSampleAMD": 4994,
|
"BaryCoordNoPerspSampleAMD": 4994,
|
||||||
@ -512,7 +641,53 @@
|
|||||||
"SecondaryViewportMaskNV": 5258,
|
"SecondaryViewportMaskNV": 5258,
|
||||||
"PositionPerViewNV": 5261,
|
"PositionPerViewNV": 5261,
|
||||||
"ViewportMaskPerViewNV": 5262,
|
"ViewportMaskPerViewNV": 5262,
|
||||||
"FullyCoveredEXT": 5264
|
"FullyCoveredEXT": 5264,
|
||||||
|
"TaskCountNV": 5274,
|
||||||
|
"PrimitiveCountNV": 5275,
|
||||||
|
"PrimitiveIndicesNV": 5276,
|
||||||
|
"ClipDistancePerViewNV": 5277,
|
||||||
|
"CullDistancePerViewNV": 5278,
|
||||||
|
"LayerPerViewNV": 5279,
|
||||||
|
"MeshViewCountNV": 5280,
|
||||||
|
"MeshViewIndicesNV": 5281,
|
||||||
|
"BaryCoordNV": 5286,
|
||||||
|
"BaryCoordNoPerspNV": 5287,
|
||||||
|
"FragSizeEXT": 5292,
|
||||||
|
"FragmentSizeNV": 5292,
|
||||||
|
"FragInvocationCountEXT": 5293,
|
||||||
|
"InvocationsPerPixelNV": 5293,
|
||||||
|
"LaunchIdKHR": 5319,
|
||||||
|
"LaunchIdNV": 5319,
|
||||||
|
"LaunchSizeKHR": 5320,
|
||||||
|
"LaunchSizeNV": 5320,
|
||||||
|
"WorldRayOriginKHR": 5321,
|
||||||
|
"WorldRayOriginNV": 5321,
|
||||||
|
"WorldRayDirectionKHR": 5322,
|
||||||
|
"WorldRayDirectionNV": 5322,
|
||||||
|
"ObjectRayOriginKHR": 5323,
|
||||||
|
"ObjectRayOriginNV": 5323,
|
||||||
|
"ObjectRayDirectionKHR": 5324,
|
||||||
|
"ObjectRayDirectionNV": 5324,
|
||||||
|
"RayTminKHR": 5325,
|
||||||
|
"RayTminNV": 5325,
|
||||||
|
"RayTmaxKHR": 5326,
|
||||||
|
"RayTmaxNV": 5326,
|
||||||
|
"InstanceCustomIndexKHR": 5327,
|
||||||
|
"InstanceCustomIndexNV": 5327,
|
||||||
|
"ObjectToWorldKHR": 5330,
|
||||||
|
"ObjectToWorldNV": 5330,
|
||||||
|
"WorldToObjectKHR": 5331,
|
||||||
|
"WorldToObjectNV": 5331,
|
||||||
|
"HitTNV": 5332,
|
||||||
|
"HitKindKHR": 5333,
|
||||||
|
"HitKindNV": 5333,
|
||||||
|
"IncomingRayFlagsKHR": 5351,
|
||||||
|
"IncomingRayFlagsNV": 5351,
|
||||||
|
"RayGeometryIndexKHR": 5352,
|
||||||
|
"WarpsPerSMNV": 5374,
|
||||||
|
"SMCountNV": 5375,
|
||||||
|
"WarpIDNV": 5376,
|
||||||
|
"SMIDNV": 5377
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -532,7 +707,20 @@
|
|||||||
"Unroll": 0,
|
"Unroll": 0,
|
||||||
"DontUnroll": 1,
|
"DontUnroll": 1,
|
||||||
"DependencyInfinite": 2,
|
"DependencyInfinite": 2,
|
||||||
"DependencyLength": 3
|
"DependencyLength": 3,
|
||||||
|
"MinIterations": 4,
|
||||||
|
"MaxIterations": 5,
|
||||||
|
"IterationMultiple": 6,
|
||||||
|
"PeelCount": 7,
|
||||||
|
"PartialCount": 8,
|
||||||
|
"InitiationIntervalINTEL": 16,
|
||||||
|
"MaxConcurrencyINTEL": 17,
|
||||||
|
"DependencyArrayINTEL": 18,
|
||||||
|
"PipelineEnableINTEL": 19,
|
||||||
|
"LoopCoalesceINTEL": 20,
|
||||||
|
"MaxInterleavingINTEL": 21,
|
||||||
|
"SpeculatedIterationsINTEL": 22,
|
||||||
|
"NoFusionINTEL": 23
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -560,7 +748,14 @@
|
|||||||
"WorkgroupMemory": 8,
|
"WorkgroupMemory": 8,
|
||||||
"CrossWorkgroupMemory": 9,
|
"CrossWorkgroupMemory": 9,
|
||||||
"AtomicCounterMemory": 10,
|
"AtomicCounterMemory": 10,
|
||||||
"ImageMemory": 11
|
"ImageMemory": 11,
|
||||||
|
"OutputMemory": 12,
|
||||||
|
"OutputMemoryKHR": 12,
|
||||||
|
"MakeAvailable": 13,
|
||||||
|
"MakeAvailableKHR": 13,
|
||||||
|
"MakeVisible": 14,
|
||||||
|
"MakeVisibleKHR": 14,
|
||||||
|
"Volatile": 15
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -570,7 +765,13 @@
|
|||||||
{
|
{
|
||||||
"Volatile": 0,
|
"Volatile": 0,
|
||||||
"Aligned": 1,
|
"Aligned": 1,
|
||||||
"Nontemporal": 2
|
"Nontemporal": 2,
|
||||||
|
"MakePointerAvailable": 3,
|
||||||
|
"MakePointerAvailableKHR": 3,
|
||||||
|
"MakePointerVisible": 4,
|
||||||
|
"MakePointerVisibleKHR": 4,
|
||||||
|
"NonPrivatePointer": 5,
|
||||||
|
"NonPrivatePointerKHR": 5
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -582,7 +783,10 @@
|
|||||||
"Device": 1,
|
"Device": 1,
|
||||||
"Workgroup": 2,
|
"Workgroup": 2,
|
||||||
"Subgroup": 3,
|
"Subgroup": 3,
|
||||||
"Invocation": 4
|
"Invocation": 4,
|
||||||
|
"QueueFamily": 5,
|
||||||
|
"QueueFamilyKHR": 5,
|
||||||
|
"ShaderCallKHR": 6
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -689,8 +893,14 @@
|
|||||||
"GroupNonUniformShuffleRelative": 66,
|
"GroupNonUniformShuffleRelative": 66,
|
||||||
"GroupNonUniformClustered": 67,
|
"GroupNonUniformClustered": 67,
|
||||||
"GroupNonUniformQuad": 68,
|
"GroupNonUniformQuad": 68,
|
||||||
|
"ShaderLayer": 69,
|
||||||
|
"ShaderViewportIndex": 70,
|
||||||
|
"FragmentShadingRateKHR": 4422,
|
||||||
"SubgroupBallotKHR": 4423,
|
"SubgroupBallotKHR": 4423,
|
||||||
"DrawParameters": 4427,
|
"DrawParameters": 4427,
|
||||||
|
"WorkgroupMemoryExplicitLayoutKHR": 4428,
|
||||||
|
"WorkgroupMemoryExplicitLayout8BitAccessKHR": 4429,
|
||||||
|
"WorkgroupMemoryExplicitLayout16BitAccessKHR": 4430,
|
||||||
"SubgroupVoteKHR": 4431,
|
"SubgroupVoteKHR": 4431,
|
||||||
"StorageBuffer16BitAccess": 4433,
|
"StorageBuffer16BitAccess": 4433,
|
||||||
"StorageUniformBufferBlock16": 4433,
|
"StorageUniformBufferBlock16": 4433,
|
||||||
@ -707,11 +917,22 @@
|
|||||||
"StorageBuffer8BitAccess": 4448,
|
"StorageBuffer8BitAccess": 4448,
|
||||||
"UniformAndStorageBuffer8BitAccess": 4449,
|
"UniformAndStorageBuffer8BitAccess": 4449,
|
||||||
"StoragePushConstant8": 4450,
|
"StoragePushConstant8": 4450,
|
||||||
|
"DenormPreserve": 4464,
|
||||||
|
"DenormFlushToZero": 4465,
|
||||||
|
"SignedZeroInfNanPreserve": 4466,
|
||||||
|
"RoundingModeRTE": 4467,
|
||||||
|
"RoundingModeRTZ": 4468,
|
||||||
|
"RayQueryProvisionalKHR": 4471,
|
||||||
|
"RayQueryKHR": 4472,
|
||||||
|
"RayTraversalPrimitiveCullingKHR": 4478,
|
||||||
|
"RayTracingKHR": 4479,
|
||||||
"Float16ImageAMD": 5008,
|
"Float16ImageAMD": 5008,
|
||||||
"ImageGatherBiasLodAMD": 5009,
|
"ImageGatherBiasLodAMD": 5009,
|
||||||
"FragmentMaskAMD": 5010,
|
"FragmentMaskAMD": 5010,
|
||||||
"StencilExportEXT": 5013,
|
"StencilExportEXT": 5013,
|
||||||
"ImageReadWriteLodAMD": 5015,
|
"ImageReadWriteLodAMD": 5015,
|
||||||
|
"Int64ImageEXT": 5016,
|
||||||
|
"ShaderClockKHR": 5055,
|
||||||
"SampleMaskOverrideCoverageNV": 5249,
|
"SampleMaskOverrideCoverageNV": 5249,
|
||||||
"GeometryShaderPassthroughNV": 5251,
|
"GeometryShaderPassthroughNV": 5251,
|
||||||
"ShaderViewportIndexLayerEXT": 5254,
|
"ShaderViewportIndexLayerEXT": 5254,
|
||||||
@ -720,22 +941,164 @@
|
|||||||
"ShaderStereoViewNV": 5259,
|
"ShaderStereoViewNV": 5259,
|
||||||
"PerViewAttributesNV": 5260,
|
"PerViewAttributesNV": 5260,
|
||||||
"FragmentFullyCoveredEXT": 5265,
|
"FragmentFullyCoveredEXT": 5265,
|
||||||
|
"MeshShadingNV": 5266,
|
||||||
|
"ImageFootprintNV": 5282,
|
||||||
|
"FragmentBarycentricNV": 5284,
|
||||||
|
"ComputeDerivativeGroupQuadsNV": 5288,
|
||||||
|
"FragmentDensityEXT": 5291,
|
||||||
|
"ShadingRateNV": 5291,
|
||||||
"GroupNonUniformPartitionedNV": 5297,
|
"GroupNonUniformPartitionedNV": 5297,
|
||||||
|
"ShaderNonUniform": 5301,
|
||||||
"ShaderNonUniformEXT": 5301,
|
"ShaderNonUniformEXT": 5301,
|
||||||
|
"RuntimeDescriptorArray": 5302,
|
||||||
"RuntimeDescriptorArrayEXT": 5302,
|
"RuntimeDescriptorArrayEXT": 5302,
|
||||||
|
"InputAttachmentArrayDynamicIndexing": 5303,
|
||||||
"InputAttachmentArrayDynamicIndexingEXT": 5303,
|
"InputAttachmentArrayDynamicIndexingEXT": 5303,
|
||||||
|
"UniformTexelBufferArrayDynamicIndexing": 5304,
|
||||||
"UniformTexelBufferArrayDynamicIndexingEXT": 5304,
|
"UniformTexelBufferArrayDynamicIndexingEXT": 5304,
|
||||||
|
"StorageTexelBufferArrayDynamicIndexing": 5305,
|
||||||
"StorageTexelBufferArrayDynamicIndexingEXT": 5305,
|
"StorageTexelBufferArrayDynamicIndexingEXT": 5305,
|
||||||
|
"UniformBufferArrayNonUniformIndexing": 5306,
|
||||||
"UniformBufferArrayNonUniformIndexingEXT": 5306,
|
"UniformBufferArrayNonUniformIndexingEXT": 5306,
|
||||||
|
"SampledImageArrayNonUniformIndexing": 5307,
|
||||||
"SampledImageArrayNonUniformIndexingEXT": 5307,
|
"SampledImageArrayNonUniformIndexingEXT": 5307,
|
||||||
|
"StorageBufferArrayNonUniformIndexing": 5308,
|
||||||
"StorageBufferArrayNonUniformIndexingEXT": 5308,
|
"StorageBufferArrayNonUniformIndexingEXT": 5308,
|
||||||
|
"StorageImageArrayNonUniformIndexing": 5309,
|
||||||
"StorageImageArrayNonUniformIndexingEXT": 5309,
|
"StorageImageArrayNonUniformIndexingEXT": 5309,
|
||||||
|
"InputAttachmentArrayNonUniformIndexing": 5310,
|
||||||
"InputAttachmentArrayNonUniformIndexingEXT": 5310,
|
"InputAttachmentArrayNonUniformIndexingEXT": 5310,
|
||||||
|
"UniformTexelBufferArrayNonUniformIndexing": 5311,
|
||||||
"UniformTexelBufferArrayNonUniformIndexingEXT": 5311,
|
"UniformTexelBufferArrayNonUniformIndexingEXT": 5311,
|
||||||
|
"StorageTexelBufferArrayNonUniformIndexing": 5312,
|
||||||
"StorageTexelBufferArrayNonUniformIndexingEXT": 5312,
|
"StorageTexelBufferArrayNonUniformIndexingEXT": 5312,
|
||||||
|
"RayTracingNV": 5340,
|
||||||
|
"VulkanMemoryModel": 5345,
|
||||||
|
"VulkanMemoryModelKHR": 5345,
|
||||||
|
"VulkanMemoryModelDeviceScope": 5346,
|
||||||
|
"VulkanMemoryModelDeviceScopeKHR": 5346,
|
||||||
|
"PhysicalStorageBufferAddresses": 5347,
|
||||||
|
"PhysicalStorageBufferAddressesEXT": 5347,
|
||||||
|
"ComputeDerivativeGroupLinearNV": 5350,
|
||||||
|
"RayTracingProvisionalKHR": 5353,
|
||||||
|
"CooperativeMatrixNV": 5357,
|
||||||
|
"FragmentShaderSampleInterlockEXT": 5363,
|
||||||
|
"FragmentShaderShadingRateInterlockEXT": 5372,
|
||||||
|
"ShaderSMBuiltinsNV": 5373,
|
||||||
|
"FragmentShaderPixelInterlockEXT": 5378,
|
||||||
|
"DemoteToHelperInvocationEXT": 5379,
|
||||||
"SubgroupShuffleINTEL": 5568,
|
"SubgroupShuffleINTEL": 5568,
|
||||||
"SubgroupBufferBlockIOINTEL": 5569,
|
"SubgroupBufferBlockIOINTEL": 5569,
|
||||||
"SubgroupImageBlockIOINTEL": 5570
|
"SubgroupImageBlockIOINTEL": 5570,
|
||||||
|
"SubgroupImageMediaBlockIOINTEL": 5579,
|
||||||
|
"RoundToInfinityINTEL": 5582,
|
||||||
|
"FloatingPointModeINTEL": 5583,
|
||||||
|
"IntegerFunctions2INTEL": 5584,
|
||||||
|
"FunctionPointersINTEL": 5603,
|
||||||
|
"IndirectReferencesINTEL": 5604,
|
||||||
|
"AsmINTEL": 5606,
|
||||||
|
"AtomicFloat32MinMaxEXT": 5612,
|
||||||
|
"AtomicFloat64MinMaxEXT": 5613,
|
||||||
|
"AtomicFloat16MinMaxEXT": 5616,
|
||||||
|
"VectorComputeINTEL": 5617,
|
||||||
|
"VectorAnyINTEL": 5619,
|
||||||
|
"SubgroupAvcMotionEstimationINTEL": 5696,
|
||||||
|
"SubgroupAvcMotionEstimationIntraINTEL": 5697,
|
||||||
|
"SubgroupAvcMotionEstimationChromaINTEL": 5698,
|
||||||
|
"VariableLengthArrayINTEL": 5817,
|
||||||
|
"FunctionFloatControlINTEL": 5821,
|
||||||
|
"FPGAMemoryAttributesINTEL": 5824,
|
||||||
|
"FPFastMathModeINTEL": 5837,
|
||||||
|
"ArbitraryPrecisionIntegersINTEL": 5844,
|
||||||
|
"UnstructuredLoopControlsINTEL": 5886,
|
||||||
|
"FPGALoopControlsINTEL": 5888,
|
||||||
|
"KernelAttributesINTEL": 5892,
|
||||||
|
"FPGAKernelAttributesINTEL": 5897,
|
||||||
|
"FPGAMemoryAccessesINTEL": 5898,
|
||||||
|
"FPGAClusterAttributesINTEL": 5904,
|
||||||
|
"LoopFuseINTEL": 5906,
|
||||||
|
"FPGABufferLocationINTEL": 5920,
|
||||||
|
"USMStorageClassesINTEL": 5935,
|
||||||
|
"IOPipesINTEL": 5943,
|
||||||
|
"BlockingPipesINTEL": 5945,
|
||||||
|
"FPGARegINTEL": 5948,
|
||||||
|
"AtomicFloat32AddEXT": 6033,
|
||||||
|
"AtomicFloat64AddEXT": 6034,
|
||||||
|
"LongConstantCompositeINTEL": 6089
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Name": "RayFlags",
|
||||||
|
"Type": "Bit",
|
||||||
|
"Values":
|
||||||
|
{
|
||||||
|
"OpaqueKHR": 0,
|
||||||
|
"NoOpaqueKHR": 1,
|
||||||
|
"TerminateOnFirstHitKHR": 2,
|
||||||
|
"SkipClosestHitShaderKHR": 3,
|
||||||
|
"CullBackFacingTrianglesKHR": 4,
|
||||||
|
"CullFrontFacingTrianglesKHR": 5,
|
||||||
|
"CullOpaqueKHR": 6,
|
||||||
|
"CullNoOpaqueKHR": 7,
|
||||||
|
"SkipTrianglesKHR": 8,
|
||||||
|
"SkipAABBsKHR": 9
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Name": "RayQueryIntersection",
|
||||||
|
"Type": "Value",
|
||||||
|
"Values":
|
||||||
|
{
|
||||||
|
"RayQueryCandidateIntersectionKHR": 0,
|
||||||
|
"RayQueryCommittedIntersectionKHR": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Name": "RayQueryCommittedIntersectionType",
|
||||||
|
"Type": "Value",
|
||||||
|
"Values":
|
||||||
|
{
|
||||||
|
"RayQueryCommittedIntersectionNoneKHR": 0,
|
||||||
|
"RayQueryCommittedIntersectionTriangleKHR": 1,
|
||||||
|
"RayQueryCommittedIntersectionGeneratedKHR": 2
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Name": "RayQueryCandidateIntersectionType",
|
||||||
|
"Type": "Value",
|
||||||
|
"Values":
|
||||||
|
{
|
||||||
|
"RayQueryCandidateIntersectionTriangleKHR": 0,
|
||||||
|
"RayQueryCandidateIntersectionAABBKHR": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Name": "FragmentShadingRate",
|
||||||
|
"Type": "Bit",
|
||||||
|
"Values":
|
||||||
|
{
|
||||||
|
"Vertical2Pixels": 0,
|
||||||
|
"Vertical4Pixels": 1,
|
||||||
|
"Horizontal2Pixels": 2,
|
||||||
|
"Horizontal4Pixels": 3
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Name": "FPDenormMode",
|
||||||
|
"Type": "Value",
|
||||||
|
"Values":
|
||||||
|
{
|
||||||
|
"Preserve": 0,
|
||||||
|
"FlushToZero": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Name": "FPOperationMode",
|
||||||
|
"Type": "Value",
|
||||||
|
"Values":
|
||||||
|
{
|
||||||
|
"IEEE": 0,
|
||||||
|
"ALT": 1
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -1083,12 +1446,29 @@
|
|||||||
"OpGroupNonUniformLogicalXor": 364,
|
"OpGroupNonUniformLogicalXor": 364,
|
||||||
"OpGroupNonUniformQuadBroadcast": 365,
|
"OpGroupNonUniformQuadBroadcast": 365,
|
||||||
"OpGroupNonUniformQuadSwap": 366,
|
"OpGroupNonUniformQuadSwap": 366,
|
||||||
|
"OpCopyLogical": 400,
|
||||||
|
"OpPtrEqual": 401,
|
||||||
|
"OpPtrNotEqual": 402,
|
||||||
|
"OpPtrDiff": 403,
|
||||||
|
"OpTerminateInvocation": 4416,
|
||||||
"OpSubgroupBallotKHR": 4421,
|
"OpSubgroupBallotKHR": 4421,
|
||||||
"OpSubgroupFirstInvocationKHR": 4422,
|
"OpSubgroupFirstInvocationKHR": 4422,
|
||||||
"OpSubgroupAllKHR": 4428,
|
"OpSubgroupAllKHR": 4428,
|
||||||
"OpSubgroupAnyKHR": 4429,
|
"OpSubgroupAnyKHR": 4429,
|
||||||
"OpSubgroupAllEqualKHR": 4430,
|
"OpSubgroupAllEqualKHR": 4430,
|
||||||
"OpSubgroupReadInvocationKHR": 4432,
|
"OpSubgroupReadInvocationKHR": 4432,
|
||||||
|
"OpTraceRayKHR": 4445,
|
||||||
|
"OpExecuteCallableKHR": 4446,
|
||||||
|
"OpConvertUToAccelerationStructureKHR": 4447,
|
||||||
|
"OpIgnoreIntersectionKHR": 4448,
|
||||||
|
"OpTerminateRayKHR": 4449,
|
||||||
|
"OpTypeRayQueryKHR": 4472,
|
||||||
|
"OpRayQueryInitializeKHR": 4473,
|
||||||
|
"OpRayQueryTerminateKHR": 4474,
|
||||||
|
"OpRayQueryGenerateIntersectionKHR": 4475,
|
||||||
|
"OpRayQueryConfirmIntersectionKHR": 4476,
|
||||||
|
"OpRayQueryProceedKHR": 4477,
|
||||||
|
"OpRayQueryGetIntersectionTypeKHR": 4479,
|
||||||
"OpGroupIAddNonUniformAMD": 5000,
|
"OpGroupIAddNonUniformAMD": 5000,
|
||||||
"OpGroupFAddNonUniformAMD": 5001,
|
"OpGroupFAddNonUniformAMD": 5001,
|
||||||
"OpGroupFMinNonUniformAMD": 5002,
|
"OpGroupFMinNonUniformAMD": 5002,
|
||||||
@ -1099,7 +1479,27 @@
|
|||||||
"OpGroupSMaxNonUniformAMD": 5007,
|
"OpGroupSMaxNonUniformAMD": 5007,
|
||||||
"OpFragmentMaskFetchAMD": 5011,
|
"OpFragmentMaskFetchAMD": 5011,
|
||||||
"OpFragmentFetchAMD": 5012,
|
"OpFragmentFetchAMD": 5012,
|
||||||
|
"OpReadClockKHR": 5056,
|
||||||
|
"OpImageSampleFootprintNV": 5283,
|
||||||
"OpGroupNonUniformPartitionNV": 5296,
|
"OpGroupNonUniformPartitionNV": 5296,
|
||||||
|
"OpWritePackedPrimitiveIndices4x8NV": 5299,
|
||||||
|
"OpReportIntersectionKHR": 5334,
|
||||||
|
"OpReportIntersectionNV": 5334,
|
||||||
|
"OpIgnoreIntersectionNV": 5335,
|
||||||
|
"OpTerminateRayNV": 5336,
|
||||||
|
"OpTraceNV": 5337,
|
||||||
|
"OpTypeAccelerationStructureKHR": 5341,
|
||||||
|
"OpTypeAccelerationStructureNV": 5341,
|
||||||
|
"OpExecuteCallableNV": 5344,
|
||||||
|
"OpTypeCooperativeMatrixNV": 5358,
|
||||||
|
"OpCooperativeMatrixLoadNV": 5359,
|
||||||
|
"OpCooperativeMatrixStoreNV": 5360,
|
||||||
|
"OpCooperativeMatrixMulAddNV": 5361,
|
||||||
|
"OpCooperativeMatrixLengthNV": 5362,
|
||||||
|
"OpBeginInvocationInterlockEXT": 5364,
|
||||||
|
"OpEndInvocationInterlockEXT": 5365,
|
||||||
|
"OpDemoteToHelperInvocationEXT": 5380,
|
||||||
|
"OpIsHelperInvocationEXT": 5381,
|
||||||
"OpSubgroupShuffleINTEL": 5571,
|
"OpSubgroupShuffleINTEL": 5571,
|
||||||
"OpSubgroupShuffleDownINTEL": 5572,
|
"OpSubgroupShuffleDownINTEL": 5572,
|
||||||
"OpSubgroupShuffleUpINTEL": 5573,
|
"OpSubgroupShuffleUpINTEL": 5573,
|
||||||
@ -1108,8 +1508,182 @@
|
|||||||
"OpSubgroupBlockWriteINTEL": 5576,
|
"OpSubgroupBlockWriteINTEL": 5576,
|
||||||
"OpSubgroupImageBlockReadINTEL": 5577,
|
"OpSubgroupImageBlockReadINTEL": 5577,
|
||||||
"OpSubgroupImageBlockWriteINTEL": 5578,
|
"OpSubgroupImageBlockWriteINTEL": 5578,
|
||||||
|
"OpSubgroupImageMediaBlockReadINTEL": 5580,
|
||||||
|
"OpSubgroupImageMediaBlockWriteINTEL": 5581,
|
||||||
|
"OpUCountLeadingZerosINTEL": 5585,
|
||||||
|
"OpUCountTrailingZerosINTEL": 5586,
|
||||||
|
"OpAbsISubINTEL": 5587,
|
||||||
|
"OpAbsUSubINTEL": 5588,
|
||||||
|
"OpIAddSatINTEL": 5589,
|
||||||
|
"OpUAddSatINTEL": 5590,
|
||||||
|
"OpIAverageINTEL": 5591,
|
||||||
|
"OpUAverageINTEL": 5592,
|
||||||
|
"OpIAverageRoundedINTEL": 5593,
|
||||||
|
"OpUAverageRoundedINTEL": 5594,
|
||||||
|
"OpISubSatINTEL": 5595,
|
||||||
|
"OpUSubSatINTEL": 5596,
|
||||||
|
"OpIMul32x16INTEL": 5597,
|
||||||
|
"OpUMul32x16INTEL": 5598,
|
||||||
|
"OpConstFunctionPointerINTEL": 5600,
|
||||||
|
"OpFunctionPointerCallINTEL": 5601,
|
||||||
|
"OpAsmTargetINTEL": 5609,
|
||||||
|
"OpAsmINTEL": 5610,
|
||||||
|
"OpAsmCallINTEL": 5611,
|
||||||
|
"OpAtomicFMinEXT": 5614,
|
||||||
|
"OpAtomicFMaxEXT": 5615,
|
||||||
|
"OpDecorateString": 5632,
|
||||||
"OpDecorateStringGOOGLE": 5632,
|
"OpDecorateStringGOOGLE": 5632,
|
||||||
"OpMemberDecorateStringGOOGLE": 5633
|
"OpMemberDecorateString": 5633,
|
||||||
|
"OpMemberDecorateStringGOOGLE": 5633,
|
||||||
|
"OpVmeImageINTEL": 5699,
|
||||||
|
"OpTypeVmeImageINTEL": 5700,
|
||||||
|
"OpTypeAvcImePayloadINTEL": 5701,
|
||||||
|
"OpTypeAvcRefPayloadINTEL": 5702,
|
||||||
|
"OpTypeAvcSicPayloadINTEL": 5703,
|
||||||
|
"OpTypeAvcMcePayloadINTEL": 5704,
|
||||||
|
"OpTypeAvcMceResultINTEL": 5705,
|
||||||
|
"OpTypeAvcImeResultINTEL": 5706,
|
||||||
|
"OpTypeAvcImeResultSingleReferenceStreamoutINTEL": 5707,
|
||||||
|
"OpTypeAvcImeResultDualReferenceStreamoutINTEL": 5708,
|
||||||
|
"OpTypeAvcImeSingleReferenceStreaminINTEL": 5709,
|
||||||
|
"OpTypeAvcImeDualReferenceStreaminINTEL": 5710,
|
||||||
|
"OpTypeAvcRefResultINTEL": 5711,
|
||||||
|
"OpTypeAvcSicResultINTEL": 5712,
|
||||||
|
"OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL": 5713,
|
||||||
|
"OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL": 5714,
|
||||||
|
"OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL": 5715,
|
||||||
|
"OpSubgroupAvcMceSetInterShapePenaltyINTEL": 5716,
|
||||||
|
"OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL": 5717,
|
||||||
|
"OpSubgroupAvcMceSetInterDirectionPenaltyINTEL": 5718,
|
||||||
|
"OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL": 5719,
|
||||||
|
"OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL": 5720,
|
||||||
|
"OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL": 5721,
|
||||||
|
"OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL": 5722,
|
||||||
|
"OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL": 5723,
|
||||||
|
"OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL": 5724,
|
||||||
|
"OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL": 5725,
|
||||||
|
"OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL": 5726,
|
||||||
|
"OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL": 5727,
|
||||||
|
"OpSubgroupAvcMceSetAcOnlyHaarINTEL": 5728,
|
||||||
|
"OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL": 5729,
|
||||||
|
"OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL": 5730,
|
||||||
|
"OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL": 5731,
|
||||||
|
"OpSubgroupAvcMceConvertToImePayloadINTEL": 5732,
|
||||||
|
"OpSubgroupAvcMceConvertToImeResultINTEL": 5733,
|
||||||
|
"OpSubgroupAvcMceConvertToRefPayloadINTEL": 5734,
|
||||||
|
"OpSubgroupAvcMceConvertToRefResultINTEL": 5735,
|
||||||
|
"OpSubgroupAvcMceConvertToSicPayloadINTEL": 5736,
|
||||||
|
"OpSubgroupAvcMceConvertToSicResultINTEL": 5737,
|
||||||
|
"OpSubgroupAvcMceGetMotionVectorsINTEL": 5738,
|
||||||
|
"OpSubgroupAvcMceGetInterDistortionsINTEL": 5739,
|
||||||
|
"OpSubgroupAvcMceGetBestInterDistortionsINTEL": 5740,
|
||||||
|
"OpSubgroupAvcMceGetInterMajorShapeINTEL": 5741,
|
||||||
|
"OpSubgroupAvcMceGetInterMinorShapeINTEL": 5742,
|
||||||
|
"OpSubgroupAvcMceGetInterDirectionsINTEL": 5743,
|
||||||
|
"OpSubgroupAvcMceGetInterMotionVectorCountINTEL": 5744,
|
||||||
|
"OpSubgroupAvcMceGetInterReferenceIdsINTEL": 5745,
|
||||||
|
"OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL": 5746,
|
||||||
|
"OpSubgroupAvcImeInitializeINTEL": 5747,
|
||||||
|
"OpSubgroupAvcImeSetSingleReferenceINTEL": 5748,
|
||||||
|
"OpSubgroupAvcImeSetDualReferenceINTEL": 5749,
|
||||||
|
"OpSubgroupAvcImeRefWindowSizeINTEL": 5750,
|
||||||
|
"OpSubgroupAvcImeAdjustRefOffsetINTEL": 5751,
|
||||||
|
"OpSubgroupAvcImeConvertToMcePayloadINTEL": 5752,
|
||||||
|
"OpSubgroupAvcImeSetMaxMotionVectorCountINTEL": 5753,
|
||||||
|
"OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL": 5754,
|
||||||
|
"OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL": 5755,
|
||||||
|
"OpSubgroupAvcImeSetWeightedSadINTEL": 5756,
|
||||||
|
"OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL": 5757,
|
||||||
|
"OpSubgroupAvcImeEvaluateWithDualReferenceINTEL": 5758,
|
||||||
|
"OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL": 5759,
|
||||||
|
"OpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL": 5760,
|
||||||
|
"OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL": 5761,
|
||||||
|
"OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL": 5762,
|
||||||
|
"OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL": 5763,
|
||||||
|
"OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL": 5764,
|
||||||
|
"OpSubgroupAvcImeConvertToMceResultINTEL": 5765,
|
||||||
|
"OpSubgroupAvcImeGetSingleReferenceStreaminINTEL": 5766,
|
||||||
|
"OpSubgroupAvcImeGetDualReferenceStreaminINTEL": 5767,
|
||||||
|
"OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL": 5768,
|
||||||
|
"OpSubgroupAvcImeStripDualReferenceStreamoutINTEL": 5769,
|
||||||
|
"OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL": 5770,
|
||||||
|
"OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL": 5771,
|
||||||
|
"OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL": 5772,
|
||||||
|
"OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL": 5773,
|
||||||
|
"OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL": 5774,
|
||||||
|
"OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL": 5775,
|
||||||
|
"OpSubgroupAvcImeGetBorderReachedINTEL": 5776,
|
||||||
|
"OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL": 5777,
|
||||||
|
"OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL": 5778,
|
||||||
|
"OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL": 5779,
|
||||||
|
"OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL": 5780,
|
||||||
|
"OpSubgroupAvcFmeInitializeINTEL": 5781,
|
||||||
|
"OpSubgroupAvcBmeInitializeINTEL": 5782,
|
||||||
|
"OpSubgroupAvcRefConvertToMcePayloadINTEL": 5783,
|
||||||
|
"OpSubgroupAvcRefSetBidirectionalMixDisableINTEL": 5784,
|
||||||
|
"OpSubgroupAvcRefSetBilinearFilterEnableINTEL": 5785,
|
||||||
|
"OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL": 5786,
|
||||||
|
"OpSubgroupAvcRefEvaluateWithDualReferenceINTEL": 5787,
|
||||||
|
"OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL": 5788,
|
||||||
|
"OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL": 5789,
|
||||||
|
"OpSubgroupAvcRefConvertToMceResultINTEL": 5790,
|
||||||
|
"OpSubgroupAvcSicInitializeINTEL": 5791,
|
||||||
|
"OpSubgroupAvcSicConfigureSkcINTEL": 5792,
|
||||||
|
"OpSubgroupAvcSicConfigureIpeLumaINTEL": 5793,
|
||||||
|
"OpSubgroupAvcSicConfigureIpeLumaChromaINTEL": 5794,
|
||||||
|
"OpSubgroupAvcSicGetMotionVectorMaskINTEL": 5795,
|
||||||
|
"OpSubgroupAvcSicConvertToMcePayloadINTEL": 5796,
|
||||||
|
"OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL": 5797,
|
||||||
|
"OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL": 5798,
|
||||||
|
"OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL": 5799,
|
||||||
|
"OpSubgroupAvcSicSetBilinearFilterEnableINTEL": 5800,
|
||||||
|
"OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL": 5801,
|
||||||
|
"OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL": 5802,
|
||||||
|
"OpSubgroupAvcSicEvaluateIpeINTEL": 5803,
|
||||||
|
"OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL": 5804,
|
||||||
|
"OpSubgroupAvcSicEvaluateWithDualReferenceINTEL": 5805,
|
||||||
|
"OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL": 5806,
|
||||||
|
"OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL": 5807,
|
||||||
|
"OpSubgroupAvcSicConvertToMceResultINTEL": 5808,
|
||||||
|
"OpSubgroupAvcSicGetIpeLumaShapeINTEL": 5809,
|
||||||
|
"OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL": 5810,
|
||||||
|
"OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL": 5811,
|
||||||
|
"OpSubgroupAvcSicGetPackedIpeLumaModesINTEL": 5812,
|
||||||
|
"OpSubgroupAvcSicGetIpeChromaModeINTEL": 5813,
|
||||||
|
"OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL": 5814,
|
||||||
|
"OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL": 5815,
|
||||||
|
"OpSubgroupAvcSicGetInterRawSadsINTEL": 5816,
|
||||||
|
"OpVariableLengthArrayINTEL": 5818,
|
||||||
|
"OpSaveMemoryINTEL": 5819,
|
||||||
|
"OpRestoreMemoryINTEL": 5820,
|
||||||
|
"OpLoopControlINTEL": 5887,
|
||||||
|
"OpPtrCastToCrossWorkgroupINTEL": 5934,
|
||||||
|
"OpCrossWorkgroupCastToPtrINTEL": 5938,
|
||||||
|
"OpReadPipeBlockingINTEL": 5946,
|
||||||
|
"OpWritePipeBlockingINTEL": 5947,
|
||||||
|
"OpFPGARegINTEL": 5949,
|
||||||
|
"OpRayQueryGetRayTMinKHR": 6016,
|
||||||
|
"OpRayQueryGetRayFlagsKHR": 6017,
|
||||||
|
"OpRayQueryGetIntersectionTKHR": 6018,
|
||||||
|
"OpRayQueryGetIntersectionInstanceCustomIndexKHR": 6019,
|
||||||
|
"OpRayQueryGetIntersectionInstanceIdKHR": 6020,
|
||||||
|
"OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR": 6021,
|
||||||
|
"OpRayQueryGetIntersectionGeometryIndexKHR": 6022,
|
||||||
|
"OpRayQueryGetIntersectionPrimitiveIndexKHR": 6023,
|
||||||
|
"OpRayQueryGetIntersectionBarycentricsKHR": 6024,
|
||||||
|
"OpRayQueryGetIntersectionFrontFaceKHR": 6025,
|
||||||
|
"OpRayQueryGetIntersectionCandidateAABBOpaqueKHR": 6026,
|
||||||
|
"OpRayQueryGetIntersectionObjectRayDirectionKHR": 6027,
|
||||||
|
"OpRayQueryGetIntersectionObjectRayOriginKHR": 6028,
|
||||||
|
"OpRayQueryGetWorldRayDirectionKHR": 6029,
|
||||||
|
"OpRayQueryGetWorldRayOriginKHR": 6030,
|
||||||
|
"OpRayQueryGetIntersectionObjectToWorldKHR": 6031,
|
||||||
|
"OpRayQueryGetIntersectionWorldToObjectKHR": 6032,
|
||||||
|
"OpAtomicFAddEXT": 6035,
|
||||||
|
"OpTypeBufferSurfaceINTEL": 6086,
|
||||||
|
"OpTypeStructContinuedINTEL": 6090,
|
||||||
|
"OpConstantCompositeContinuedINTEL": 6091,
|
||||||
|
"OpSpecConstantCompositeContinuedINTEL": 6092
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
-- Copyright (c) 2014-2018 The Khronos Group Inc.
|
-- Copyright (c) 2014-2020 The Khronos Group Inc.
|
||||||
--
|
--
|
||||||
-- Permission is hereby granted, free of charge, to any person obtaining a copy
|
-- Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
-- of this software and/or associated documentation files (the "Materials"),
|
-- of this software and/or associated documentation files (the "Materials"),
|
||||||
@ -26,13 +26,16 @@
|
|||||||
-- the Binary Section of the SPIR-V specification.
|
-- the Binary Section of the SPIR-V specification.
|
||||||
|
|
||||||
-- Enumeration tokens for SPIR-V, in various styles:
|
-- Enumeration tokens for SPIR-V, in various styles:
|
||||||
-- C, C++, C++11, JSON, Lua, Python
|
-- C, C++, C++11, JSON, Lua, Python, C#, D
|
||||||
--
|
--
|
||||||
-- - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL
|
-- - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL
|
||||||
-- - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL
|
-- - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL
|
||||||
-- - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL
|
-- - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL
|
||||||
-- - Lua will use tables, e.g.: spv.SourceLanguage.GLSL
|
-- - Lua will use tables, e.g.: spv.SourceLanguage.GLSL
|
||||||
-- - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL']
|
-- - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL']
|
||||||
|
-- - C# will use enum classes in the Specification class located in the "Spv" namespace,
|
||||||
|
-- e.g.: Spv.Specification.SourceLanguage.GLSL
|
||||||
|
-- - D will have tokens under the "spv" module, e.g: spv.SourceLanguage.GLSL
|
||||||
--
|
--
|
||||||
-- Some tokens act like mask values, which can be OR'd together,
|
-- Some tokens act like mask values, which can be OR'd together,
|
||||||
-- while others are mutually exclusive. The mask-like ones have
|
-- while others are mutually exclusive. The mask-like ones have
|
||||||
@ -41,8 +44,8 @@
|
|||||||
|
|
||||||
spv = {
|
spv = {
|
||||||
MagicNumber = 0x07230203,
|
MagicNumber = 0x07230203,
|
||||||
Version = 0x00010300,
|
Version = 0x00010500,
|
||||||
Revision = 1,
|
Revision = 4,
|
||||||
OpCodeMask = 0xffff,
|
OpCodeMask = 0xffff,
|
||||||
WordCountShift = 16,
|
WordCountShift = 16,
|
||||||
|
|
||||||
@ -63,18 +66,36 @@ spv = {
|
|||||||
Fragment = 4,
|
Fragment = 4,
|
||||||
GLCompute = 5,
|
GLCompute = 5,
|
||||||
Kernel = 6,
|
Kernel = 6,
|
||||||
|
TaskNV = 5267,
|
||||||
|
MeshNV = 5268,
|
||||||
|
RayGenerationKHR = 5313,
|
||||||
|
RayGenerationNV = 5313,
|
||||||
|
IntersectionKHR = 5314,
|
||||||
|
IntersectionNV = 5314,
|
||||||
|
AnyHitKHR = 5315,
|
||||||
|
AnyHitNV = 5315,
|
||||||
|
ClosestHitKHR = 5316,
|
||||||
|
ClosestHitNV = 5316,
|
||||||
|
MissKHR = 5317,
|
||||||
|
MissNV = 5317,
|
||||||
|
CallableKHR = 5318,
|
||||||
|
CallableNV = 5318,
|
||||||
},
|
},
|
||||||
|
|
||||||
AddressingModel = {
|
AddressingModel = {
|
||||||
Logical = 0,
|
Logical = 0,
|
||||||
Physical32 = 1,
|
Physical32 = 1,
|
||||||
Physical64 = 2,
|
Physical64 = 2,
|
||||||
|
PhysicalStorageBuffer64 = 5348,
|
||||||
|
PhysicalStorageBuffer64EXT = 5348,
|
||||||
},
|
},
|
||||||
|
|
||||||
MemoryModel = {
|
MemoryModel = {
|
||||||
Simple = 0,
|
Simple = 0,
|
||||||
GLSL450 = 1,
|
GLSL450 = 1,
|
||||||
OpenCL = 2,
|
OpenCL = 2,
|
||||||
|
Vulkan = 3,
|
||||||
|
VulkanKHR = 3,
|
||||||
},
|
},
|
||||||
|
|
||||||
ExecutionMode = {
|
ExecutionMode = {
|
||||||
@ -117,7 +138,33 @@ spv = {
|
|||||||
LocalSizeId = 38,
|
LocalSizeId = 38,
|
||||||
LocalSizeHintId = 39,
|
LocalSizeHintId = 39,
|
||||||
PostDepthCoverage = 4446,
|
PostDepthCoverage = 4446,
|
||||||
|
DenormPreserve = 4459,
|
||||||
|
DenormFlushToZero = 4460,
|
||||||
|
SignedZeroInfNanPreserve = 4461,
|
||||||
|
RoundingModeRTE = 4462,
|
||||||
|
RoundingModeRTZ = 4463,
|
||||||
StencilRefReplacingEXT = 5027,
|
StencilRefReplacingEXT = 5027,
|
||||||
|
OutputLinesNV = 5269,
|
||||||
|
OutputPrimitivesNV = 5270,
|
||||||
|
DerivativeGroupQuadsNV = 5289,
|
||||||
|
DerivativeGroupLinearNV = 5290,
|
||||||
|
OutputTrianglesNV = 5298,
|
||||||
|
PixelInterlockOrderedEXT = 5366,
|
||||||
|
PixelInterlockUnorderedEXT = 5367,
|
||||||
|
SampleInterlockOrderedEXT = 5368,
|
||||||
|
SampleInterlockUnorderedEXT = 5369,
|
||||||
|
ShadingRateInterlockOrderedEXT = 5370,
|
||||||
|
ShadingRateInterlockUnorderedEXT = 5371,
|
||||||
|
SharedLocalMemorySizeINTEL = 5618,
|
||||||
|
RoundingModeRTPINTEL = 5620,
|
||||||
|
RoundingModeRTNINTEL = 5621,
|
||||||
|
FloatingPointModeALTINTEL = 5622,
|
||||||
|
FloatingPointModeIEEEINTEL = 5623,
|
||||||
|
MaxWorkgroupSizeINTEL = 5893,
|
||||||
|
MaxWorkDimINTEL = 5894,
|
||||||
|
NoGlobalOffsetINTEL = 5895,
|
||||||
|
NumSIMDWorkitemsINTEL = 5896,
|
||||||
|
SchedulerTargetFmaxMhzINTEL = 5903,
|
||||||
},
|
},
|
||||||
|
|
||||||
StorageClass = {
|
StorageClass = {
|
||||||
@ -134,6 +181,23 @@ spv = {
|
|||||||
AtomicCounter = 10,
|
AtomicCounter = 10,
|
||||||
Image = 11,
|
Image = 11,
|
||||||
StorageBuffer = 12,
|
StorageBuffer = 12,
|
||||||
|
CallableDataKHR = 5328,
|
||||||
|
CallableDataNV = 5328,
|
||||||
|
IncomingCallableDataKHR = 5329,
|
||||||
|
IncomingCallableDataNV = 5329,
|
||||||
|
RayPayloadKHR = 5338,
|
||||||
|
RayPayloadNV = 5338,
|
||||||
|
HitAttributeKHR = 5339,
|
||||||
|
HitAttributeNV = 5339,
|
||||||
|
IncomingRayPayloadKHR = 5342,
|
||||||
|
IncomingRayPayloadNV = 5342,
|
||||||
|
ShaderRecordBufferKHR = 5343,
|
||||||
|
ShaderRecordBufferNV = 5343,
|
||||||
|
PhysicalStorageBuffer = 5349,
|
||||||
|
PhysicalStorageBufferEXT = 5349,
|
||||||
|
CodeSectionINTEL = 5605,
|
||||||
|
DeviceOnlyINTEL = 5936,
|
||||||
|
HostOnlyINTEL = 5937,
|
||||||
},
|
},
|
||||||
|
|
||||||
Dim = {
|
Dim = {
|
||||||
@ -200,6 +264,8 @@ spv = {
|
|||||||
Rg8ui = 37,
|
Rg8ui = 37,
|
||||||
R16ui = 38,
|
R16ui = 38,
|
||||||
R8ui = 39,
|
R8ui = 39,
|
||||||
|
R64ui = 40,
|
||||||
|
R64i = 41,
|
||||||
},
|
},
|
||||||
|
|
||||||
ImageChannelOrder = {
|
ImageChannelOrder = {
|
||||||
@ -254,6 +320,16 @@ spv = {
|
|||||||
ConstOffsets = 5,
|
ConstOffsets = 5,
|
||||||
Sample = 6,
|
Sample = 6,
|
||||||
MinLod = 7,
|
MinLod = 7,
|
||||||
|
MakeTexelAvailable = 8,
|
||||||
|
MakeTexelAvailableKHR = 8,
|
||||||
|
MakeTexelVisible = 9,
|
||||||
|
MakeTexelVisibleKHR = 9,
|
||||||
|
NonPrivateTexel = 10,
|
||||||
|
NonPrivateTexelKHR = 10,
|
||||||
|
VolatileTexel = 11,
|
||||||
|
VolatileTexelKHR = 11,
|
||||||
|
SignExtend = 12,
|
||||||
|
ZeroExtend = 13,
|
||||||
},
|
},
|
||||||
|
|
||||||
ImageOperandsMask = {
|
ImageOperandsMask = {
|
||||||
@ -266,6 +342,16 @@ spv = {
|
|||||||
ConstOffsets = 0x00000020,
|
ConstOffsets = 0x00000020,
|
||||||
Sample = 0x00000040,
|
Sample = 0x00000040,
|
||||||
MinLod = 0x00000080,
|
MinLod = 0x00000080,
|
||||||
|
MakeTexelAvailable = 0x00000100,
|
||||||
|
MakeTexelAvailableKHR = 0x00000100,
|
||||||
|
MakeTexelVisible = 0x00000200,
|
||||||
|
MakeTexelVisibleKHR = 0x00000200,
|
||||||
|
NonPrivateTexel = 0x00000400,
|
||||||
|
NonPrivateTexelKHR = 0x00000400,
|
||||||
|
VolatileTexel = 0x00000800,
|
||||||
|
VolatileTexelKHR = 0x00000800,
|
||||||
|
SignExtend = 0x00001000,
|
||||||
|
ZeroExtend = 0x00002000,
|
||||||
},
|
},
|
||||||
|
|
||||||
FPFastMathModeShift = {
|
FPFastMathModeShift = {
|
||||||
@ -274,6 +360,8 @@ spv = {
|
|||||||
NSZ = 2,
|
NSZ = 2,
|
||||||
AllowRecip = 3,
|
AllowRecip = 3,
|
||||||
Fast = 4,
|
Fast = 4,
|
||||||
|
AllowContractFastINTEL = 16,
|
||||||
|
AllowReassocINTEL = 17,
|
||||||
},
|
},
|
||||||
|
|
||||||
FPFastMathModeMask = {
|
FPFastMathModeMask = {
|
||||||
@ -283,6 +371,8 @@ spv = {
|
|||||||
NSZ = 0x00000004,
|
NSZ = 0x00000004,
|
||||||
AllowRecip = 0x00000008,
|
AllowRecip = 0x00000008,
|
||||||
Fast = 0x00000010,
|
Fast = 0x00000010,
|
||||||
|
AllowContractFastINTEL = 0x00010000,
|
||||||
|
AllowReassocINTEL = 0x00020000,
|
||||||
},
|
},
|
||||||
|
|
||||||
FPRoundingMode = {
|
FPRoundingMode = {
|
||||||
@ -341,6 +431,7 @@ spv = {
|
|||||||
NonWritable = 24,
|
NonWritable = 24,
|
||||||
NonReadable = 25,
|
NonReadable = 25,
|
||||||
Uniform = 26,
|
Uniform = 26,
|
||||||
|
UniformId = 27,
|
||||||
SaturatedConversion = 28,
|
SaturatedConversion = 28,
|
||||||
Stream = 29,
|
Stream = 29,
|
||||||
Location = 30,
|
Location = 30,
|
||||||
@ -361,14 +452,62 @@ spv = {
|
|||||||
MaxByteOffset = 45,
|
MaxByteOffset = 45,
|
||||||
AlignmentId = 46,
|
AlignmentId = 46,
|
||||||
MaxByteOffsetId = 47,
|
MaxByteOffsetId = 47,
|
||||||
|
NoSignedWrap = 4469,
|
||||||
|
NoUnsignedWrap = 4470,
|
||||||
ExplicitInterpAMD = 4999,
|
ExplicitInterpAMD = 4999,
|
||||||
OverrideCoverageNV = 5248,
|
OverrideCoverageNV = 5248,
|
||||||
PassthroughNV = 5250,
|
PassthroughNV = 5250,
|
||||||
ViewportRelativeNV = 5252,
|
ViewportRelativeNV = 5252,
|
||||||
SecondaryViewportRelativeNV = 5256,
|
SecondaryViewportRelativeNV = 5256,
|
||||||
|
PerPrimitiveNV = 5271,
|
||||||
|
PerViewNV = 5272,
|
||||||
|
PerTaskNV = 5273,
|
||||||
|
PerVertexNV = 5285,
|
||||||
|
NonUniform = 5300,
|
||||||
NonUniformEXT = 5300,
|
NonUniformEXT = 5300,
|
||||||
|
RestrictPointer = 5355,
|
||||||
|
RestrictPointerEXT = 5355,
|
||||||
|
AliasedPointer = 5356,
|
||||||
|
AliasedPointerEXT = 5356,
|
||||||
|
SIMTCallINTEL = 5599,
|
||||||
|
ReferencedIndirectlyINTEL = 5602,
|
||||||
|
ClobberINTEL = 5607,
|
||||||
|
SideEffectsINTEL = 5608,
|
||||||
|
VectorComputeVariableINTEL = 5624,
|
||||||
|
FuncParamIOKindINTEL = 5625,
|
||||||
|
VectorComputeFunctionINTEL = 5626,
|
||||||
|
StackCallINTEL = 5627,
|
||||||
|
GlobalVariableOffsetINTEL = 5628,
|
||||||
|
CounterBuffer = 5634,
|
||||||
HlslCounterBufferGOOGLE = 5634,
|
HlslCounterBufferGOOGLE = 5634,
|
||||||
HlslSemanticGOOGLE = 5635,
|
HlslSemanticGOOGLE = 5635,
|
||||||
|
UserSemantic = 5635,
|
||||||
|
UserTypeGOOGLE = 5636,
|
||||||
|
FunctionRoundingModeINTEL = 5822,
|
||||||
|
FunctionDenormModeINTEL = 5823,
|
||||||
|
RegisterINTEL = 5825,
|
||||||
|
MemoryINTEL = 5826,
|
||||||
|
NumbanksINTEL = 5827,
|
||||||
|
BankwidthINTEL = 5828,
|
||||||
|
MaxPrivateCopiesINTEL = 5829,
|
||||||
|
SinglepumpINTEL = 5830,
|
||||||
|
DoublepumpINTEL = 5831,
|
||||||
|
MaxReplicatesINTEL = 5832,
|
||||||
|
SimpleDualPortINTEL = 5833,
|
||||||
|
MergeINTEL = 5834,
|
||||||
|
BankBitsINTEL = 5835,
|
||||||
|
ForcePow2DepthINTEL = 5836,
|
||||||
|
BurstCoalesceINTEL = 5899,
|
||||||
|
CacheSizeINTEL = 5900,
|
||||||
|
DontStaticallyCoalesceINTEL = 5901,
|
||||||
|
PrefetchINTEL = 5902,
|
||||||
|
StallEnableINTEL = 5905,
|
||||||
|
FuseLoopsInFunctionINTEL = 5907,
|
||||||
|
BufferLocationINTEL = 5921,
|
||||||
|
IOPipeStorageINTEL = 5944,
|
||||||
|
FunctionFloatingPointModeINTEL = 6080,
|
||||||
|
SingleElementVectorINTEL = 6085,
|
||||||
|
VectorComputeCallableFunctionINTEL = 6087,
|
||||||
},
|
},
|
||||||
|
|
||||||
BuiltIn = {
|
BuiltIn = {
|
||||||
@ -426,8 +565,10 @@ spv = {
|
|||||||
BaseVertex = 4424,
|
BaseVertex = 4424,
|
||||||
BaseInstance = 4425,
|
BaseInstance = 4425,
|
||||||
DrawIndex = 4426,
|
DrawIndex = 4426,
|
||||||
|
PrimitiveShadingRateKHR = 4432,
|
||||||
DeviceIndex = 4438,
|
DeviceIndex = 4438,
|
||||||
ViewIndex = 4440,
|
ViewIndex = 4440,
|
||||||
|
ShadingRateKHR = 4444,
|
||||||
BaryCoordNoPerspAMD = 4992,
|
BaryCoordNoPerspAMD = 4992,
|
||||||
BaryCoordNoPerspCentroidAMD = 4993,
|
BaryCoordNoPerspCentroidAMD = 4993,
|
||||||
BaryCoordNoPerspSampleAMD = 4994,
|
BaryCoordNoPerspSampleAMD = 4994,
|
||||||
@ -442,6 +583,52 @@ spv = {
|
|||||||
PositionPerViewNV = 5261,
|
PositionPerViewNV = 5261,
|
||||||
ViewportMaskPerViewNV = 5262,
|
ViewportMaskPerViewNV = 5262,
|
||||||
FullyCoveredEXT = 5264,
|
FullyCoveredEXT = 5264,
|
||||||
|
TaskCountNV = 5274,
|
||||||
|
PrimitiveCountNV = 5275,
|
||||||
|
PrimitiveIndicesNV = 5276,
|
||||||
|
ClipDistancePerViewNV = 5277,
|
||||||
|
CullDistancePerViewNV = 5278,
|
||||||
|
LayerPerViewNV = 5279,
|
||||||
|
MeshViewCountNV = 5280,
|
||||||
|
MeshViewIndicesNV = 5281,
|
||||||
|
BaryCoordNV = 5286,
|
||||||
|
BaryCoordNoPerspNV = 5287,
|
||||||
|
FragSizeEXT = 5292,
|
||||||
|
FragmentSizeNV = 5292,
|
||||||
|
FragInvocationCountEXT = 5293,
|
||||||
|
InvocationsPerPixelNV = 5293,
|
||||||
|
LaunchIdKHR = 5319,
|
||||||
|
LaunchIdNV = 5319,
|
||||||
|
LaunchSizeKHR = 5320,
|
||||||
|
LaunchSizeNV = 5320,
|
||||||
|
WorldRayOriginKHR = 5321,
|
||||||
|
WorldRayOriginNV = 5321,
|
||||||
|
WorldRayDirectionKHR = 5322,
|
||||||
|
WorldRayDirectionNV = 5322,
|
||||||
|
ObjectRayOriginKHR = 5323,
|
||||||
|
ObjectRayOriginNV = 5323,
|
||||||
|
ObjectRayDirectionKHR = 5324,
|
||||||
|
ObjectRayDirectionNV = 5324,
|
||||||
|
RayTminKHR = 5325,
|
||||||
|
RayTminNV = 5325,
|
||||||
|
RayTmaxKHR = 5326,
|
||||||
|
RayTmaxNV = 5326,
|
||||||
|
InstanceCustomIndexKHR = 5327,
|
||||||
|
InstanceCustomIndexNV = 5327,
|
||||||
|
ObjectToWorldKHR = 5330,
|
||||||
|
ObjectToWorldNV = 5330,
|
||||||
|
WorldToObjectKHR = 5331,
|
||||||
|
WorldToObjectNV = 5331,
|
||||||
|
HitTNV = 5332,
|
||||||
|
HitKindKHR = 5333,
|
||||||
|
HitKindNV = 5333,
|
||||||
|
IncomingRayFlagsKHR = 5351,
|
||||||
|
IncomingRayFlagsNV = 5351,
|
||||||
|
RayGeometryIndexKHR = 5352,
|
||||||
|
WarpsPerSMNV = 5374,
|
||||||
|
SMCountNV = 5375,
|
||||||
|
WarpIDNV = 5376,
|
||||||
|
SMIDNV = 5377,
|
||||||
},
|
},
|
||||||
|
|
||||||
SelectionControlShift = {
|
SelectionControlShift = {
|
||||||
@ -460,6 +647,19 @@ spv = {
|
|||||||
DontUnroll = 1,
|
DontUnroll = 1,
|
||||||
DependencyInfinite = 2,
|
DependencyInfinite = 2,
|
||||||
DependencyLength = 3,
|
DependencyLength = 3,
|
||||||
|
MinIterations = 4,
|
||||||
|
MaxIterations = 5,
|
||||||
|
IterationMultiple = 6,
|
||||||
|
PeelCount = 7,
|
||||||
|
PartialCount = 8,
|
||||||
|
InitiationIntervalINTEL = 16,
|
||||||
|
MaxConcurrencyINTEL = 17,
|
||||||
|
DependencyArrayINTEL = 18,
|
||||||
|
PipelineEnableINTEL = 19,
|
||||||
|
LoopCoalesceINTEL = 20,
|
||||||
|
MaxInterleavingINTEL = 21,
|
||||||
|
SpeculatedIterationsINTEL = 22,
|
||||||
|
NoFusionINTEL = 23,
|
||||||
},
|
},
|
||||||
|
|
||||||
LoopControlMask = {
|
LoopControlMask = {
|
||||||
@ -468,6 +668,19 @@ spv = {
|
|||||||
DontUnroll = 0x00000002,
|
DontUnroll = 0x00000002,
|
||||||
DependencyInfinite = 0x00000004,
|
DependencyInfinite = 0x00000004,
|
||||||
DependencyLength = 0x00000008,
|
DependencyLength = 0x00000008,
|
||||||
|
MinIterations = 0x00000010,
|
||||||
|
MaxIterations = 0x00000020,
|
||||||
|
IterationMultiple = 0x00000040,
|
||||||
|
PeelCount = 0x00000080,
|
||||||
|
PartialCount = 0x00000100,
|
||||||
|
InitiationIntervalINTEL = 0x00010000,
|
||||||
|
MaxConcurrencyINTEL = 0x00020000,
|
||||||
|
DependencyArrayINTEL = 0x00040000,
|
||||||
|
PipelineEnableINTEL = 0x00080000,
|
||||||
|
LoopCoalesceINTEL = 0x00100000,
|
||||||
|
MaxInterleavingINTEL = 0x00200000,
|
||||||
|
SpeculatedIterationsINTEL = 0x00400000,
|
||||||
|
NoFusionINTEL = 0x00800000,
|
||||||
},
|
},
|
||||||
|
|
||||||
FunctionControlShift = {
|
FunctionControlShift = {
|
||||||
@ -496,6 +709,13 @@ spv = {
|
|||||||
CrossWorkgroupMemory = 9,
|
CrossWorkgroupMemory = 9,
|
||||||
AtomicCounterMemory = 10,
|
AtomicCounterMemory = 10,
|
||||||
ImageMemory = 11,
|
ImageMemory = 11,
|
||||||
|
OutputMemory = 12,
|
||||||
|
OutputMemoryKHR = 12,
|
||||||
|
MakeAvailable = 13,
|
||||||
|
MakeAvailableKHR = 13,
|
||||||
|
MakeVisible = 14,
|
||||||
|
MakeVisibleKHR = 14,
|
||||||
|
Volatile = 15,
|
||||||
},
|
},
|
||||||
|
|
||||||
MemorySemanticsMask = {
|
MemorySemanticsMask = {
|
||||||
@ -510,12 +730,25 @@ spv = {
|
|||||||
CrossWorkgroupMemory = 0x00000200,
|
CrossWorkgroupMemory = 0x00000200,
|
||||||
AtomicCounterMemory = 0x00000400,
|
AtomicCounterMemory = 0x00000400,
|
||||||
ImageMemory = 0x00000800,
|
ImageMemory = 0x00000800,
|
||||||
|
OutputMemory = 0x00001000,
|
||||||
|
OutputMemoryKHR = 0x00001000,
|
||||||
|
MakeAvailable = 0x00002000,
|
||||||
|
MakeAvailableKHR = 0x00002000,
|
||||||
|
MakeVisible = 0x00004000,
|
||||||
|
MakeVisibleKHR = 0x00004000,
|
||||||
|
Volatile = 0x00008000,
|
||||||
},
|
},
|
||||||
|
|
||||||
MemoryAccessShift = {
|
MemoryAccessShift = {
|
||||||
Volatile = 0,
|
Volatile = 0,
|
||||||
Aligned = 1,
|
Aligned = 1,
|
||||||
Nontemporal = 2,
|
Nontemporal = 2,
|
||||||
|
MakePointerAvailable = 3,
|
||||||
|
MakePointerAvailableKHR = 3,
|
||||||
|
MakePointerVisible = 4,
|
||||||
|
MakePointerVisibleKHR = 4,
|
||||||
|
NonPrivatePointer = 5,
|
||||||
|
NonPrivatePointerKHR = 5,
|
||||||
},
|
},
|
||||||
|
|
||||||
MemoryAccessMask = {
|
MemoryAccessMask = {
|
||||||
@ -523,6 +756,12 @@ spv = {
|
|||||||
Volatile = 0x00000001,
|
Volatile = 0x00000001,
|
||||||
Aligned = 0x00000002,
|
Aligned = 0x00000002,
|
||||||
Nontemporal = 0x00000004,
|
Nontemporal = 0x00000004,
|
||||||
|
MakePointerAvailable = 0x00000008,
|
||||||
|
MakePointerAvailableKHR = 0x00000008,
|
||||||
|
MakePointerVisible = 0x00000010,
|
||||||
|
MakePointerVisibleKHR = 0x00000010,
|
||||||
|
NonPrivatePointer = 0x00000020,
|
||||||
|
NonPrivatePointerKHR = 0x00000020,
|
||||||
},
|
},
|
||||||
|
|
||||||
Scope = {
|
Scope = {
|
||||||
@ -531,6 +770,9 @@ spv = {
|
|||||||
Workgroup = 2,
|
Workgroup = 2,
|
||||||
Subgroup = 3,
|
Subgroup = 3,
|
||||||
Invocation = 4,
|
Invocation = 4,
|
||||||
|
QueueFamily = 5,
|
||||||
|
QueueFamilyKHR = 5,
|
||||||
|
ShaderCallKHR = 6,
|
||||||
},
|
},
|
||||||
|
|
||||||
GroupOperation = {
|
GroupOperation = {
|
||||||
@ -626,8 +868,14 @@ spv = {
|
|||||||
GroupNonUniformShuffleRelative = 66,
|
GroupNonUniformShuffleRelative = 66,
|
||||||
GroupNonUniformClustered = 67,
|
GroupNonUniformClustered = 67,
|
||||||
GroupNonUniformQuad = 68,
|
GroupNonUniformQuad = 68,
|
||||||
|
ShaderLayer = 69,
|
||||||
|
ShaderViewportIndex = 70,
|
||||||
|
FragmentShadingRateKHR = 4422,
|
||||||
SubgroupBallotKHR = 4423,
|
SubgroupBallotKHR = 4423,
|
||||||
DrawParameters = 4427,
|
DrawParameters = 4427,
|
||||||
|
WorkgroupMemoryExplicitLayoutKHR = 4428,
|
||||||
|
WorkgroupMemoryExplicitLayout8BitAccessKHR = 4429,
|
||||||
|
WorkgroupMemoryExplicitLayout16BitAccessKHR = 4430,
|
||||||
SubgroupVoteKHR = 4431,
|
SubgroupVoteKHR = 4431,
|
||||||
StorageBuffer16BitAccess = 4433,
|
StorageBuffer16BitAccess = 4433,
|
||||||
StorageUniformBufferBlock16 = 4433,
|
StorageUniformBufferBlock16 = 4433,
|
||||||
@ -644,11 +892,22 @@ spv = {
|
|||||||
StorageBuffer8BitAccess = 4448,
|
StorageBuffer8BitAccess = 4448,
|
||||||
UniformAndStorageBuffer8BitAccess = 4449,
|
UniformAndStorageBuffer8BitAccess = 4449,
|
||||||
StoragePushConstant8 = 4450,
|
StoragePushConstant8 = 4450,
|
||||||
|
DenormPreserve = 4464,
|
||||||
|
DenormFlushToZero = 4465,
|
||||||
|
SignedZeroInfNanPreserve = 4466,
|
||||||
|
RoundingModeRTE = 4467,
|
||||||
|
RoundingModeRTZ = 4468,
|
||||||
|
RayQueryProvisionalKHR = 4471,
|
||||||
|
RayQueryKHR = 4472,
|
||||||
|
RayTraversalPrimitiveCullingKHR = 4478,
|
||||||
|
RayTracingKHR = 4479,
|
||||||
Float16ImageAMD = 5008,
|
Float16ImageAMD = 5008,
|
||||||
ImageGatherBiasLodAMD = 5009,
|
ImageGatherBiasLodAMD = 5009,
|
||||||
FragmentMaskAMD = 5010,
|
FragmentMaskAMD = 5010,
|
||||||
StencilExportEXT = 5013,
|
StencilExportEXT = 5013,
|
||||||
ImageReadWriteLodAMD = 5015,
|
ImageReadWriteLodAMD = 5015,
|
||||||
|
Int64ImageEXT = 5016,
|
||||||
|
ShaderClockKHR = 5055,
|
||||||
SampleMaskOverrideCoverageNV = 5249,
|
SampleMaskOverrideCoverageNV = 5249,
|
||||||
GeometryShaderPassthroughNV = 5251,
|
GeometryShaderPassthroughNV = 5251,
|
||||||
ShaderViewportIndexLayerEXT = 5254,
|
ShaderViewportIndexLayerEXT = 5254,
|
||||||
@ -657,22 +916,158 @@ spv = {
|
|||||||
ShaderStereoViewNV = 5259,
|
ShaderStereoViewNV = 5259,
|
||||||
PerViewAttributesNV = 5260,
|
PerViewAttributesNV = 5260,
|
||||||
FragmentFullyCoveredEXT = 5265,
|
FragmentFullyCoveredEXT = 5265,
|
||||||
|
MeshShadingNV = 5266,
|
||||||
|
ImageFootprintNV = 5282,
|
||||||
|
FragmentBarycentricNV = 5284,
|
||||||
|
ComputeDerivativeGroupQuadsNV = 5288,
|
||||||
|
FragmentDensityEXT = 5291,
|
||||||
|
ShadingRateNV = 5291,
|
||||||
GroupNonUniformPartitionedNV = 5297,
|
GroupNonUniformPartitionedNV = 5297,
|
||||||
|
ShaderNonUniform = 5301,
|
||||||
ShaderNonUniformEXT = 5301,
|
ShaderNonUniformEXT = 5301,
|
||||||
|
RuntimeDescriptorArray = 5302,
|
||||||
RuntimeDescriptorArrayEXT = 5302,
|
RuntimeDescriptorArrayEXT = 5302,
|
||||||
|
InputAttachmentArrayDynamicIndexing = 5303,
|
||||||
InputAttachmentArrayDynamicIndexingEXT = 5303,
|
InputAttachmentArrayDynamicIndexingEXT = 5303,
|
||||||
|
UniformTexelBufferArrayDynamicIndexing = 5304,
|
||||||
UniformTexelBufferArrayDynamicIndexingEXT = 5304,
|
UniformTexelBufferArrayDynamicIndexingEXT = 5304,
|
||||||
|
StorageTexelBufferArrayDynamicIndexing = 5305,
|
||||||
StorageTexelBufferArrayDynamicIndexingEXT = 5305,
|
StorageTexelBufferArrayDynamicIndexingEXT = 5305,
|
||||||
|
UniformBufferArrayNonUniformIndexing = 5306,
|
||||||
UniformBufferArrayNonUniformIndexingEXT = 5306,
|
UniformBufferArrayNonUniformIndexingEXT = 5306,
|
||||||
|
SampledImageArrayNonUniformIndexing = 5307,
|
||||||
SampledImageArrayNonUniformIndexingEXT = 5307,
|
SampledImageArrayNonUniformIndexingEXT = 5307,
|
||||||
|
StorageBufferArrayNonUniformIndexing = 5308,
|
||||||
StorageBufferArrayNonUniformIndexingEXT = 5308,
|
StorageBufferArrayNonUniformIndexingEXT = 5308,
|
||||||
|
StorageImageArrayNonUniformIndexing = 5309,
|
||||||
StorageImageArrayNonUniformIndexingEXT = 5309,
|
StorageImageArrayNonUniformIndexingEXT = 5309,
|
||||||
|
InputAttachmentArrayNonUniformIndexing = 5310,
|
||||||
InputAttachmentArrayNonUniformIndexingEXT = 5310,
|
InputAttachmentArrayNonUniformIndexingEXT = 5310,
|
||||||
|
UniformTexelBufferArrayNonUniformIndexing = 5311,
|
||||||
UniformTexelBufferArrayNonUniformIndexingEXT = 5311,
|
UniformTexelBufferArrayNonUniformIndexingEXT = 5311,
|
||||||
|
StorageTexelBufferArrayNonUniformIndexing = 5312,
|
||||||
StorageTexelBufferArrayNonUniformIndexingEXT = 5312,
|
StorageTexelBufferArrayNonUniformIndexingEXT = 5312,
|
||||||
|
RayTracingNV = 5340,
|
||||||
|
VulkanMemoryModel = 5345,
|
||||||
|
VulkanMemoryModelKHR = 5345,
|
||||||
|
VulkanMemoryModelDeviceScope = 5346,
|
||||||
|
VulkanMemoryModelDeviceScopeKHR = 5346,
|
||||||
|
PhysicalStorageBufferAddresses = 5347,
|
||||||
|
PhysicalStorageBufferAddressesEXT = 5347,
|
||||||
|
ComputeDerivativeGroupLinearNV = 5350,
|
||||||
|
RayTracingProvisionalKHR = 5353,
|
||||||
|
CooperativeMatrixNV = 5357,
|
||||||
|
FragmentShaderSampleInterlockEXT = 5363,
|
||||||
|
FragmentShaderShadingRateInterlockEXT = 5372,
|
||||||
|
ShaderSMBuiltinsNV = 5373,
|
||||||
|
FragmentShaderPixelInterlockEXT = 5378,
|
||||||
|
DemoteToHelperInvocationEXT = 5379,
|
||||||
SubgroupShuffleINTEL = 5568,
|
SubgroupShuffleINTEL = 5568,
|
||||||
SubgroupBufferBlockIOINTEL = 5569,
|
SubgroupBufferBlockIOINTEL = 5569,
|
||||||
SubgroupImageBlockIOINTEL = 5570,
|
SubgroupImageBlockIOINTEL = 5570,
|
||||||
|
SubgroupImageMediaBlockIOINTEL = 5579,
|
||||||
|
RoundToInfinityINTEL = 5582,
|
||||||
|
FloatingPointModeINTEL = 5583,
|
||||||
|
IntegerFunctions2INTEL = 5584,
|
||||||
|
FunctionPointersINTEL = 5603,
|
||||||
|
IndirectReferencesINTEL = 5604,
|
||||||
|
AsmINTEL = 5606,
|
||||||
|
AtomicFloat32MinMaxEXT = 5612,
|
||||||
|
AtomicFloat64MinMaxEXT = 5613,
|
||||||
|
AtomicFloat16MinMaxEXT = 5616,
|
||||||
|
VectorComputeINTEL = 5617,
|
||||||
|
VectorAnyINTEL = 5619,
|
||||||
|
SubgroupAvcMotionEstimationINTEL = 5696,
|
||||||
|
SubgroupAvcMotionEstimationIntraINTEL = 5697,
|
||||||
|
SubgroupAvcMotionEstimationChromaINTEL = 5698,
|
||||||
|
VariableLengthArrayINTEL = 5817,
|
||||||
|
FunctionFloatControlINTEL = 5821,
|
||||||
|
FPGAMemoryAttributesINTEL = 5824,
|
||||||
|
FPFastMathModeINTEL = 5837,
|
||||||
|
ArbitraryPrecisionIntegersINTEL = 5844,
|
||||||
|
UnstructuredLoopControlsINTEL = 5886,
|
||||||
|
FPGALoopControlsINTEL = 5888,
|
||||||
|
KernelAttributesINTEL = 5892,
|
||||||
|
FPGAKernelAttributesINTEL = 5897,
|
||||||
|
FPGAMemoryAccessesINTEL = 5898,
|
||||||
|
FPGAClusterAttributesINTEL = 5904,
|
||||||
|
LoopFuseINTEL = 5906,
|
||||||
|
FPGABufferLocationINTEL = 5920,
|
||||||
|
USMStorageClassesINTEL = 5935,
|
||||||
|
IOPipesINTEL = 5943,
|
||||||
|
BlockingPipesINTEL = 5945,
|
||||||
|
FPGARegINTEL = 5948,
|
||||||
|
AtomicFloat32AddEXT = 6033,
|
||||||
|
AtomicFloat64AddEXT = 6034,
|
||||||
|
LongConstantCompositeINTEL = 6089,
|
||||||
|
},
|
||||||
|
|
||||||
|
RayFlagsShift = {
|
||||||
|
OpaqueKHR = 0,
|
||||||
|
NoOpaqueKHR = 1,
|
||||||
|
TerminateOnFirstHitKHR = 2,
|
||||||
|
SkipClosestHitShaderKHR = 3,
|
||||||
|
CullBackFacingTrianglesKHR = 4,
|
||||||
|
CullFrontFacingTrianglesKHR = 5,
|
||||||
|
CullOpaqueKHR = 6,
|
||||||
|
CullNoOpaqueKHR = 7,
|
||||||
|
SkipTrianglesKHR = 8,
|
||||||
|
SkipAABBsKHR = 9,
|
||||||
|
},
|
||||||
|
|
||||||
|
RayFlagsMask = {
|
||||||
|
MaskNone = 0,
|
||||||
|
OpaqueKHR = 0x00000001,
|
||||||
|
NoOpaqueKHR = 0x00000002,
|
||||||
|
TerminateOnFirstHitKHR = 0x00000004,
|
||||||
|
SkipClosestHitShaderKHR = 0x00000008,
|
||||||
|
CullBackFacingTrianglesKHR = 0x00000010,
|
||||||
|
CullFrontFacingTrianglesKHR = 0x00000020,
|
||||||
|
CullOpaqueKHR = 0x00000040,
|
||||||
|
CullNoOpaqueKHR = 0x00000080,
|
||||||
|
SkipTrianglesKHR = 0x00000100,
|
||||||
|
SkipAABBsKHR = 0x00000200,
|
||||||
|
},
|
||||||
|
|
||||||
|
RayQueryIntersection = {
|
||||||
|
RayQueryCandidateIntersectionKHR = 0,
|
||||||
|
RayQueryCommittedIntersectionKHR = 1,
|
||||||
|
},
|
||||||
|
|
||||||
|
RayQueryCommittedIntersectionType = {
|
||||||
|
RayQueryCommittedIntersectionNoneKHR = 0,
|
||||||
|
RayQueryCommittedIntersectionTriangleKHR = 1,
|
||||||
|
RayQueryCommittedIntersectionGeneratedKHR = 2,
|
||||||
|
},
|
||||||
|
|
||||||
|
RayQueryCandidateIntersectionType = {
|
||||||
|
RayQueryCandidateIntersectionTriangleKHR = 0,
|
||||||
|
RayQueryCandidateIntersectionAABBKHR = 1,
|
||||||
|
},
|
||||||
|
|
||||||
|
FragmentShadingRateShift = {
|
||||||
|
Vertical2Pixels = 0,
|
||||||
|
Vertical4Pixels = 1,
|
||||||
|
Horizontal2Pixels = 2,
|
||||||
|
Horizontal4Pixels = 3,
|
||||||
|
},
|
||||||
|
|
||||||
|
FragmentShadingRateMask = {
|
||||||
|
MaskNone = 0,
|
||||||
|
Vertical2Pixels = 0x00000001,
|
||||||
|
Vertical4Pixels = 0x00000002,
|
||||||
|
Horizontal2Pixels = 0x00000004,
|
||||||
|
Horizontal4Pixels = 0x00000008,
|
||||||
|
},
|
||||||
|
|
||||||
|
FPDenormMode = {
|
||||||
|
Preserve = 0,
|
||||||
|
FlushToZero = 1,
|
||||||
|
},
|
||||||
|
|
||||||
|
FPOperationMode = {
|
||||||
|
IEEE = 0,
|
||||||
|
ALT = 1,
|
||||||
},
|
},
|
||||||
|
|
||||||
Op = {
|
Op = {
|
||||||
@ -1016,12 +1411,29 @@ spv = {
|
|||||||
OpGroupNonUniformLogicalXor = 364,
|
OpGroupNonUniformLogicalXor = 364,
|
||||||
OpGroupNonUniformQuadBroadcast = 365,
|
OpGroupNonUniformQuadBroadcast = 365,
|
||||||
OpGroupNonUniformQuadSwap = 366,
|
OpGroupNonUniformQuadSwap = 366,
|
||||||
|
OpCopyLogical = 400,
|
||||||
|
OpPtrEqual = 401,
|
||||||
|
OpPtrNotEqual = 402,
|
||||||
|
OpPtrDiff = 403,
|
||||||
|
OpTerminateInvocation = 4416,
|
||||||
OpSubgroupBallotKHR = 4421,
|
OpSubgroupBallotKHR = 4421,
|
||||||
OpSubgroupFirstInvocationKHR = 4422,
|
OpSubgroupFirstInvocationKHR = 4422,
|
||||||
OpSubgroupAllKHR = 4428,
|
OpSubgroupAllKHR = 4428,
|
||||||
OpSubgroupAnyKHR = 4429,
|
OpSubgroupAnyKHR = 4429,
|
||||||
OpSubgroupAllEqualKHR = 4430,
|
OpSubgroupAllEqualKHR = 4430,
|
||||||
OpSubgroupReadInvocationKHR = 4432,
|
OpSubgroupReadInvocationKHR = 4432,
|
||||||
|
OpTraceRayKHR = 4445,
|
||||||
|
OpExecuteCallableKHR = 4446,
|
||||||
|
OpConvertUToAccelerationStructureKHR = 4447,
|
||||||
|
OpIgnoreIntersectionKHR = 4448,
|
||||||
|
OpTerminateRayKHR = 4449,
|
||||||
|
OpTypeRayQueryKHR = 4472,
|
||||||
|
OpRayQueryInitializeKHR = 4473,
|
||||||
|
OpRayQueryTerminateKHR = 4474,
|
||||||
|
OpRayQueryGenerateIntersectionKHR = 4475,
|
||||||
|
OpRayQueryConfirmIntersectionKHR = 4476,
|
||||||
|
OpRayQueryProceedKHR = 4477,
|
||||||
|
OpRayQueryGetIntersectionTypeKHR = 4479,
|
||||||
OpGroupIAddNonUniformAMD = 5000,
|
OpGroupIAddNonUniformAMD = 5000,
|
||||||
OpGroupFAddNonUniformAMD = 5001,
|
OpGroupFAddNonUniformAMD = 5001,
|
||||||
OpGroupFMinNonUniformAMD = 5002,
|
OpGroupFMinNonUniformAMD = 5002,
|
||||||
@ -1032,7 +1444,27 @@ spv = {
|
|||||||
OpGroupSMaxNonUniformAMD = 5007,
|
OpGroupSMaxNonUniformAMD = 5007,
|
||||||
OpFragmentMaskFetchAMD = 5011,
|
OpFragmentMaskFetchAMD = 5011,
|
||||||
OpFragmentFetchAMD = 5012,
|
OpFragmentFetchAMD = 5012,
|
||||||
|
OpReadClockKHR = 5056,
|
||||||
|
OpImageSampleFootprintNV = 5283,
|
||||||
OpGroupNonUniformPartitionNV = 5296,
|
OpGroupNonUniformPartitionNV = 5296,
|
||||||
|
OpWritePackedPrimitiveIndices4x8NV = 5299,
|
||||||
|
OpReportIntersectionKHR = 5334,
|
||||||
|
OpReportIntersectionNV = 5334,
|
||||||
|
OpIgnoreIntersectionNV = 5335,
|
||||||
|
OpTerminateRayNV = 5336,
|
||||||
|
OpTraceNV = 5337,
|
||||||
|
OpTypeAccelerationStructureKHR = 5341,
|
||||||
|
OpTypeAccelerationStructureNV = 5341,
|
||||||
|
OpExecuteCallableNV = 5344,
|
||||||
|
OpTypeCooperativeMatrixNV = 5358,
|
||||||
|
OpCooperativeMatrixLoadNV = 5359,
|
||||||
|
OpCooperativeMatrixStoreNV = 5360,
|
||||||
|
OpCooperativeMatrixMulAddNV = 5361,
|
||||||
|
OpCooperativeMatrixLengthNV = 5362,
|
||||||
|
OpBeginInvocationInterlockEXT = 5364,
|
||||||
|
OpEndInvocationInterlockEXT = 5365,
|
||||||
|
OpDemoteToHelperInvocationEXT = 5380,
|
||||||
|
OpIsHelperInvocationEXT = 5381,
|
||||||
OpSubgroupShuffleINTEL = 5571,
|
OpSubgroupShuffleINTEL = 5571,
|
||||||
OpSubgroupShuffleDownINTEL = 5572,
|
OpSubgroupShuffleDownINTEL = 5572,
|
||||||
OpSubgroupShuffleUpINTEL = 5573,
|
OpSubgroupShuffleUpINTEL = 5573,
|
||||||
@ -1041,8 +1473,182 @@ spv = {
|
|||||||
OpSubgroupBlockWriteINTEL = 5576,
|
OpSubgroupBlockWriteINTEL = 5576,
|
||||||
OpSubgroupImageBlockReadINTEL = 5577,
|
OpSubgroupImageBlockReadINTEL = 5577,
|
||||||
OpSubgroupImageBlockWriteINTEL = 5578,
|
OpSubgroupImageBlockWriteINTEL = 5578,
|
||||||
|
OpSubgroupImageMediaBlockReadINTEL = 5580,
|
||||||
|
OpSubgroupImageMediaBlockWriteINTEL = 5581,
|
||||||
|
OpUCountLeadingZerosINTEL = 5585,
|
||||||
|
OpUCountTrailingZerosINTEL = 5586,
|
||||||
|
OpAbsISubINTEL = 5587,
|
||||||
|
OpAbsUSubINTEL = 5588,
|
||||||
|
OpIAddSatINTEL = 5589,
|
||||||
|
OpUAddSatINTEL = 5590,
|
||||||
|
OpIAverageINTEL = 5591,
|
||||||
|
OpUAverageINTEL = 5592,
|
||||||
|
OpIAverageRoundedINTEL = 5593,
|
||||||
|
OpUAverageRoundedINTEL = 5594,
|
||||||
|
OpISubSatINTEL = 5595,
|
||||||
|
OpUSubSatINTEL = 5596,
|
||||||
|
OpIMul32x16INTEL = 5597,
|
||||||
|
OpUMul32x16INTEL = 5598,
|
||||||
|
OpConstFunctionPointerINTEL = 5600,
|
||||||
|
OpFunctionPointerCallINTEL = 5601,
|
||||||
|
OpAsmTargetINTEL = 5609,
|
||||||
|
OpAsmINTEL = 5610,
|
||||||
|
OpAsmCallINTEL = 5611,
|
||||||
|
OpAtomicFMinEXT = 5614,
|
||||||
|
OpAtomicFMaxEXT = 5615,
|
||||||
|
OpDecorateString = 5632,
|
||||||
OpDecorateStringGOOGLE = 5632,
|
OpDecorateStringGOOGLE = 5632,
|
||||||
|
OpMemberDecorateString = 5633,
|
||||||
OpMemberDecorateStringGOOGLE = 5633,
|
OpMemberDecorateStringGOOGLE = 5633,
|
||||||
|
OpVmeImageINTEL = 5699,
|
||||||
|
OpTypeVmeImageINTEL = 5700,
|
||||||
|
OpTypeAvcImePayloadINTEL = 5701,
|
||||||
|
OpTypeAvcRefPayloadINTEL = 5702,
|
||||||
|
OpTypeAvcSicPayloadINTEL = 5703,
|
||||||
|
OpTypeAvcMcePayloadINTEL = 5704,
|
||||||
|
OpTypeAvcMceResultINTEL = 5705,
|
||||||
|
OpTypeAvcImeResultINTEL = 5706,
|
||||||
|
OpTypeAvcImeResultSingleReferenceStreamoutINTEL = 5707,
|
||||||
|
OpTypeAvcImeResultDualReferenceStreamoutINTEL = 5708,
|
||||||
|
OpTypeAvcImeSingleReferenceStreaminINTEL = 5709,
|
||||||
|
OpTypeAvcImeDualReferenceStreaminINTEL = 5710,
|
||||||
|
OpTypeAvcRefResultINTEL = 5711,
|
||||||
|
OpTypeAvcSicResultINTEL = 5712,
|
||||||
|
OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL = 5713,
|
||||||
|
OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL = 5714,
|
||||||
|
OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL = 5715,
|
||||||
|
OpSubgroupAvcMceSetInterShapePenaltyINTEL = 5716,
|
||||||
|
OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL = 5717,
|
||||||
|
OpSubgroupAvcMceSetInterDirectionPenaltyINTEL = 5718,
|
||||||
|
OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL = 5719,
|
||||||
|
OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL = 5720,
|
||||||
|
OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL = 5721,
|
||||||
|
OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL = 5722,
|
||||||
|
OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL = 5723,
|
||||||
|
OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL = 5724,
|
||||||
|
OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL = 5725,
|
||||||
|
OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL = 5726,
|
||||||
|
OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL = 5727,
|
||||||
|
OpSubgroupAvcMceSetAcOnlyHaarINTEL = 5728,
|
||||||
|
OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL = 5729,
|
||||||
|
OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL = 5730,
|
||||||
|
OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL = 5731,
|
||||||
|
OpSubgroupAvcMceConvertToImePayloadINTEL = 5732,
|
||||||
|
OpSubgroupAvcMceConvertToImeResultINTEL = 5733,
|
||||||
|
OpSubgroupAvcMceConvertToRefPayloadINTEL = 5734,
|
||||||
|
OpSubgroupAvcMceConvertToRefResultINTEL = 5735,
|
||||||
|
OpSubgroupAvcMceConvertToSicPayloadINTEL = 5736,
|
||||||
|
OpSubgroupAvcMceConvertToSicResultINTEL = 5737,
|
||||||
|
OpSubgroupAvcMceGetMotionVectorsINTEL = 5738,
|
||||||
|
OpSubgroupAvcMceGetInterDistortionsINTEL = 5739,
|
||||||
|
OpSubgroupAvcMceGetBestInterDistortionsINTEL = 5740,
|
||||||
|
OpSubgroupAvcMceGetInterMajorShapeINTEL = 5741,
|
||||||
|
OpSubgroupAvcMceGetInterMinorShapeINTEL = 5742,
|
||||||
|
OpSubgroupAvcMceGetInterDirectionsINTEL = 5743,
|
||||||
|
OpSubgroupAvcMceGetInterMotionVectorCountINTEL = 5744,
|
||||||
|
OpSubgroupAvcMceGetInterReferenceIdsINTEL = 5745,
|
||||||
|
OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL = 5746,
|
||||||
|
OpSubgroupAvcImeInitializeINTEL = 5747,
|
||||||
|
OpSubgroupAvcImeSetSingleReferenceINTEL = 5748,
|
||||||
|
OpSubgroupAvcImeSetDualReferenceINTEL = 5749,
|
||||||
|
OpSubgroupAvcImeRefWindowSizeINTEL = 5750,
|
||||||
|
OpSubgroupAvcImeAdjustRefOffsetINTEL = 5751,
|
||||||
|
OpSubgroupAvcImeConvertToMcePayloadINTEL = 5752,
|
||||||
|
OpSubgroupAvcImeSetMaxMotionVectorCountINTEL = 5753,
|
||||||
|
OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL = 5754,
|
||||||
|
OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL = 5755,
|
||||||
|
OpSubgroupAvcImeSetWeightedSadINTEL = 5756,
|
||||||
|
OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL = 5757,
|
||||||
|
OpSubgroupAvcImeEvaluateWithDualReferenceINTEL = 5758,
|
||||||
|
OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL = 5759,
|
||||||
|
OpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL = 5760,
|
||||||
|
OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL = 5761,
|
||||||
|
OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL = 5762,
|
||||||
|
OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL = 5763,
|
||||||
|
OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL = 5764,
|
||||||
|
OpSubgroupAvcImeConvertToMceResultINTEL = 5765,
|
||||||
|
OpSubgroupAvcImeGetSingleReferenceStreaminINTEL = 5766,
|
||||||
|
OpSubgroupAvcImeGetDualReferenceStreaminINTEL = 5767,
|
||||||
|
OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL = 5768,
|
||||||
|
OpSubgroupAvcImeStripDualReferenceStreamoutINTEL = 5769,
|
||||||
|
OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL = 5770,
|
||||||
|
OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL = 5771,
|
||||||
|
OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL = 5772,
|
||||||
|
OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL = 5773,
|
||||||
|
OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL = 5774,
|
||||||
|
OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL = 5775,
|
||||||
|
OpSubgroupAvcImeGetBorderReachedINTEL = 5776,
|
||||||
|
OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL = 5777,
|
||||||
|
OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL = 5778,
|
||||||
|
OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL = 5779,
|
||||||
|
OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL = 5780,
|
||||||
|
OpSubgroupAvcFmeInitializeINTEL = 5781,
|
||||||
|
OpSubgroupAvcBmeInitializeINTEL = 5782,
|
||||||
|
OpSubgroupAvcRefConvertToMcePayloadINTEL = 5783,
|
||||||
|
OpSubgroupAvcRefSetBidirectionalMixDisableINTEL = 5784,
|
||||||
|
OpSubgroupAvcRefSetBilinearFilterEnableINTEL = 5785,
|
||||||
|
OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL = 5786,
|
||||||
|
OpSubgroupAvcRefEvaluateWithDualReferenceINTEL = 5787,
|
||||||
|
OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL = 5788,
|
||||||
|
OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL = 5789,
|
||||||
|
OpSubgroupAvcRefConvertToMceResultINTEL = 5790,
|
||||||
|
OpSubgroupAvcSicInitializeINTEL = 5791,
|
||||||
|
OpSubgroupAvcSicConfigureSkcINTEL = 5792,
|
||||||
|
OpSubgroupAvcSicConfigureIpeLumaINTEL = 5793,
|
||||||
|
OpSubgroupAvcSicConfigureIpeLumaChromaINTEL = 5794,
|
||||||
|
OpSubgroupAvcSicGetMotionVectorMaskINTEL = 5795,
|
||||||
|
OpSubgroupAvcSicConvertToMcePayloadINTEL = 5796,
|
||||||
|
OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL = 5797,
|
||||||
|
OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL = 5798,
|
||||||
|
OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL = 5799,
|
||||||
|
OpSubgroupAvcSicSetBilinearFilterEnableINTEL = 5800,
|
||||||
|
OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL = 5801,
|
||||||
|
OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL = 5802,
|
||||||
|
OpSubgroupAvcSicEvaluateIpeINTEL = 5803,
|
||||||
|
OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL = 5804,
|
||||||
|
OpSubgroupAvcSicEvaluateWithDualReferenceINTEL = 5805,
|
||||||
|
OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL = 5806,
|
||||||
|
OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL = 5807,
|
||||||
|
OpSubgroupAvcSicConvertToMceResultINTEL = 5808,
|
||||||
|
OpSubgroupAvcSicGetIpeLumaShapeINTEL = 5809,
|
||||||
|
OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL = 5810,
|
||||||
|
OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL = 5811,
|
||||||
|
OpSubgroupAvcSicGetPackedIpeLumaModesINTEL = 5812,
|
||||||
|
OpSubgroupAvcSicGetIpeChromaModeINTEL = 5813,
|
||||||
|
OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL = 5814,
|
||||||
|
OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL = 5815,
|
||||||
|
OpSubgroupAvcSicGetInterRawSadsINTEL = 5816,
|
||||||
|
OpVariableLengthArrayINTEL = 5818,
|
||||||
|
OpSaveMemoryINTEL = 5819,
|
||||||
|
OpRestoreMemoryINTEL = 5820,
|
||||||
|
OpLoopControlINTEL = 5887,
|
||||||
|
OpPtrCastToCrossWorkgroupINTEL = 5934,
|
||||||
|
OpCrossWorkgroupCastToPtrINTEL = 5938,
|
||||||
|
OpReadPipeBlockingINTEL = 5946,
|
||||||
|
OpWritePipeBlockingINTEL = 5947,
|
||||||
|
OpFPGARegINTEL = 5949,
|
||||||
|
OpRayQueryGetRayTMinKHR = 6016,
|
||||||
|
OpRayQueryGetRayFlagsKHR = 6017,
|
||||||
|
OpRayQueryGetIntersectionTKHR = 6018,
|
||||||
|
OpRayQueryGetIntersectionInstanceCustomIndexKHR = 6019,
|
||||||
|
OpRayQueryGetIntersectionInstanceIdKHR = 6020,
|
||||||
|
OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR = 6021,
|
||||||
|
OpRayQueryGetIntersectionGeometryIndexKHR = 6022,
|
||||||
|
OpRayQueryGetIntersectionPrimitiveIndexKHR = 6023,
|
||||||
|
OpRayQueryGetIntersectionBarycentricsKHR = 6024,
|
||||||
|
OpRayQueryGetIntersectionFrontFaceKHR = 6025,
|
||||||
|
OpRayQueryGetIntersectionCandidateAABBOpaqueKHR = 6026,
|
||||||
|
OpRayQueryGetIntersectionObjectRayDirectionKHR = 6027,
|
||||||
|
OpRayQueryGetIntersectionObjectRayOriginKHR = 6028,
|
||||||
|
OpRayQueryGetWorldRayDirectionKHR = 6029,
|
||||||
|
OpRayQueryGetWorldRayOriginKHR = 6030,
|
||||||
|
OpRayQueryGetIntersectionObjectToWorldKHR = 6031,
|
||||||
|
OpRayQueryGetIntersectionWorldToObjectKHR = 6032,
|
||||||
|
OpAtomicFAddEXT = 6035,
|
||||||
|
OpTypeBufferSurfaceINTEL = 6086,
|
||||||
|
OpTypeStructContinuedINTEL = 6090,
|
||||||
|
OpConstantCompositeContinuedINTEL = 6091,
|
||||||
|
OpSpecConstantCompositeContinuedINTEL = 6092,
|
||||||
},
|
},
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# Copyright (c) 2014-2018 The Khronos Group Inc.
|
# Copyright (c) 2014-2020 The Khronos Group Inc.
|
||||||
#
|
#
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
# of this software and/or associated documentation files (the "Materials"),
|
# of this software and/or associated documentation files (the "Materials"),
|
||||||
@ -26,13 +26,16 @@
|
|||||||
# the Binary Section of the SPIR-V specification.
|
# the Binary Section of the SPIR-V specification.
|
||||||
|
|
||||||
# Enumeration tokens for SPIR-V, in various styles:
|
# Enumeration tokens for SPIR-V, in various styles:
|
||||||
# C, C++, C++11, JSON, Lua, Python
|
# C, C++, C++11, JSON, Lua, Python, C#, D
|
||||||
#
|
#
|
||||||
# - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL
|
# - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL
|
||||||
# - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL
|
# - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL
|
||||||
# - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL
|
# - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL
|
||||||
# - Lua will use tables, e.g.: spv.SourceLanguage.GLSL
|
# - Lua will use tables, e.g.: spv.SourceLanguage.GLSL
|
||||||
# - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL']
|
# - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL']
|
||||||
|
# - C# will use enum classes in the Specification class located in the "Spv" namespace,
|
||||||
|
# e.g.: Spv.Specification.SourceLanguage.GLSL
|
||||||
|
# - D will have tokens under the "spv" module, e.g: spv.SourceLanguage.GLSL
|
||||||
#
|
#
|
||||||
# Some tokens act like mask values, which can be OR'd together,
|
# Some tokens act like mask values, which can be OR'd together,
|
||||||
# while others are mutually exclusive. The mask-like ones have
|
# while others are mutually exclusive. The mask-like ones have
|
||||||
@ -41,8 +44,8 @@
|
|||||||
|
|
||||||
spv = {
|
spv = {
|
||||||
'MagicNumber' : 0x07230203,
|
'MagicNumber' : 0x07230203,
|
||||||
'Version' : 0x00010300,
|
'Version' : 0x00010500,
|
||||||
'Revision' : 1,
|
'Revision' : 4,
|
||||||
'OpCodeMask' : 0xffff,
|
'OpCodeMask' : 0xffff,
|
||||||
'WordCountShift' : 16,
|
'WordCountShift' : 16,
|
||||||
|
|
||||||
@ -63,18 +66,36 @@ spv = {
|
|||||||
'Fragment' : 4,
|
'Fragment' : 4,
|
||||||
'GLCompute' : 5,
|
'GLCompute' : 5,
|
||||||
'Kernel' : 6,
|
'Kernel' : 6,
|
||||||
|
'TaskNV' : 5267,
|
||||||
|
'MeshNV' : 5268,
|
||||||
|
'RayGenerationKHR' : 5313,
|
||||||
|
'RayGenerationNV' : 5313,
|
||||||
|
'IntersectionKHR' : 5314,
|
||||||
|
'IntersectionNV' : 5314,
|
||||||
|
'AnyHitKHR' : 5315,
|
||||||
|
'AnyHitNV' : 5315,
|
||||||
|
'ClosestHitKHR' : 5316,
|
||||||
|
'ClosestHitNV' : 5316,
|
||||||
|
'MissKHR' : 5317,
|
||||||
|
'MissNV' : 5317,
|
||||||
|
'CallableKHR' : 5318,
|
||||||
|
'CallableNV' : 5318,
|
||||||
},
|
},
|
||||||
|
|
||||||
'AddressingModel' : {
|
'AddressingModel' : {
|
||||||
'Logical' : 0,
|
'Logical' : 0,
|
||||||
'Physical32' : 1,
|
'Physical32' : 1,
|
||||||
'Physical64' : 2,
|
'Physical64' : 2,
|
||||||
|
'PhysicalStorageBuffer64' : 5348,
|
||||||
|
'PhysicalStorageBuffer64EXT' : 5348,
|
||||||
},
|
},
|
||||||
|
|
||||||
'MemoryModel' : {
|
'MemoryModel' : {
|
||||||
'Simple' : 0,
|
'Simple' : 0,
|
||||||
'GLSL450' : 1,
|
'GLSL450' : 1,
|
||||||
'OpenCL' : 2,
|
'OpenCL' : 2,
|
||||||
|
'Vulkan' : 3,
|
||||||
|
'VulkanKHR' : 3,
|
||||||
},
|
},
|
||||||
|
|
||||||
'ExecutionMode' : {
|
'ExecutionMode' : {
|
||||||
@ -117,7 +138,33 @@ spv = {
|
|||||||
'LocalSizeId' : 38,
|
'LocalSizeId' : 38,
|
||||||
'LocalSizeHintId' : 39,
|
'LocalSizeHintId' : 39,
|
||||||
'PostDepthCoverage' : 4446,
|
'PostDepthCoverage' : 4446,
|
||||||
|
'DenormPreserve' : 4459,
|
||||||
|
'DenormFlushToZero' : 4460,
|
||||||
|
'SignedZeroInfNanPreserve' : 4461,
|
||||||
|
'RoundingModeRTE' : 4462,
|
||||||
|
'RoundingModeRTZ' : 4463,
|
||||||
'StencilRefReplacingEXT' : 5027,
|
'StencilRefReplacingEXT' : 5027,
|
||||||
|
'OutputLinesNV' : 5269,
|
||||||
|
'OutputPrimitivesNV' : 5270,
|
||||||
|
'DerivativeGroupQuadsNV' : 5289,
|
||||||
|
'DerivativeGroupLinearNV' : 5290,
|
||||||
|
'OutputTrianglesNV' : 5298,
|
||||||
|
'PixelInterlockOrderedEXT' : 5366,
|
||||||
|
'PixelInterlockUnorderedEXT' : 5367,
|
||||||
|
'SampleInterlockOrderedEXT' : 5368,
|
||||||
|
'SampleInterlockUnorderedEXT' : 5369,
|
||||||
|
'ShadingRateInterlockOrderedEXT' : 5370,
|
||||||
|
'ShadingRateInterlockUnorderedEXT' : 5371,
|
||||||
|
'SharedLocalMemorySizeINTEL' : 5618,
|
||||||
|
'RoundingModeRTPINTEL' : 5620,
|
||||||
|
'RoundingModeRTNINTEL' : 5621,
|
||||||
|
'FloatingPointModeALTINTEL' : 5622,
|
||||||
|
'FloatingPointModeIEEEINTEL' : 5623,
|
||||||
|
'MaxWorkgroupSizeINTEL' : 5893,
|
||||||
|
'MaxWorkDimINTEL' : 5894,
|
||||||
|
'NoGlobalOffsetINTEL' : 5895,
|
||||||
|
'NumSIMDWorkitemsINTEL' : 5896,
|
||||||
|
'SchedulerTargetFmaxMhzINTEL' : 5903,
|
||||||
},
|
},
|
||||||
|
|
||||||
'StorageClass' : {
|
'StorageClass' : {
|
||||||
@ -134,6 +181,23 @@ spv = {
|
|||||||
'AtomicCounter' : 10,
|
'AtomicCounter' : 10,
|
||||||
'Image' : 11,
|
'Image' : 11,
|
||||||
'StorageBuffer' : 12,
|
'StorageBuffer' : 12,
|
||||||
|
'CallableDataKHR' : 5328,
|
||||||
|
'CallableDataNV' : 5328,
|
||||||
|
'IncomingCallableDataKHR' : 5329,
|
||||||
|
'IncomingCallableDataNV' : 5329,
|
||||||
|
'RayPayloadKHR' : 5338,
|
||||||
|
'RayPayloadNV' : 5338,
|
||||||
|
'HitAttributeKHR' : 5339,
|
||||||
|
'HitAttributeNV' : 5339,
|
||||||
|
'IncomingRayPayloadKHR' : 5342,
|
||||||
|
'IncomingRayPayloadNV' : 5342,
|
||||||
|
'ShaderRecordBufferKHR' : 5343,
|
||||||
|
'ShaderRecordBufferNV' : 5343,
|
||||||
|
'PhysicalStorageBuffer' : 5349,
|
||||||
|
'PhysicalStorageBufferEXT' : 5349,
|
||||||
|
'CodeSectionINTEL' : 5605,
|
||||||
|
'DeviceOnlyINTEL' : 5936,
|
||||||
|
'HostOnlyINTEL' : 5937,
|
||||||
},
|
},
|
||||||
|
|
||||||
'Dim' : {
|
'Dim' : {
|
||||||
@ -200,6 +264,8 @@ spv = {
|
|||||||
'Rg8ui' : 37,
|
'Rg8ui' : 37,
|
||||||
'R16ui' : 38,
|
'R16ui' : 38,
|
||||||
'R8ui' : 39,
|
'R8ui' : 39,
|
||||||
|
'R64ui' : 40,
|
||||||
|
'R64i' : 41,
|
||||||
},
|
},
|
||||||
|
|
||||||
'ImageChannelOrder' : {
|
'ImageChannelOrder' : {
|
||||||
@ -254,6 +320,16 @@ spv = {
|
|||||||
'ConstOffsets' : 5,
|
'ConstOffsets' : 5,
|
||||||
'Sample' : 6,
|
'Sample' : 6,
|
||||||
'MinLod' : 7,
|
'MinLod' : 7,
|
||||||
|
'MakeTexelAvailable' : 8,
|
||||||
|
'MakeTexelAvailableKHR' : 8,
|
||||||
|
'MakeTexelVisible' : 9,
|
||||||
|
'MakeTexelVisibleKHR' : 9,
|
||||||
|
'NonPrivateTexel' : 10,
|
||||||
|
'NonPrivateTexelKHR' : 10,
|
||||||
|
'VolatileTexel' : 11,
|
||||||
|
'VolatileTexelKHR' : 11,
|
||||||
|
'SignExtend' : 12,
|
||||||
|
'ZeroExtend' : 13,
|
||||||
},
|
},
|
||||||
|
|
||||||
'ImageOperandsMask' : {
|
'ImageOperandsMask' : {
|
||||||
@ -266,6 +342,16 @@ spv = {
|
|||||||
'ConstOffsets' : 0x00000020,
|
'ConstOffsets' : 0x00000020,
|
||||||
'Sample' : 0x00000040,
|
'Sample' : 0x00000040,
|
||||||
'MinLod' : 0x00000080,
|
'MinLod' : 0x00000080,
|
||||||
|
'MakeTexelAvailable' : 0x00000100,
|
||||||
|
'MakeTexelAvailableKHR' : 0x00000100,
|
||||||
|
'MakeTexelVisible' : 0x00000200,
|
||||||
|
'MakeTexelVisibleKHR' : 0x00000200,
|
||||||
|
'NonPrivateTexel' : 0x00000400,
|
||||||
|
'NonPrivateTexelKHR' : 0x00000400,
|
||||||
|
'VolatileTexel' : 0x00000800,
|
||||||
|
'VolatileTexelKHR' : 0x00000800,
|
||||||
|
'SignExtend' : 0x00001000,
|
||||||
|
'ZeroExtend' : 0x00002000,
|
||||||
},
|
},
|
||||||
|
|
||||||
'FPFastMathModeShift' : {
|
'FPFastMathModeShift' : {
|
||||||
@ -274,6 +360,8 @@ spv = {
|
|||||||
'NSZ' : 2,
|
'NSZ' : 2,
|
||||||
'AllowRecip' : 3,
|
'AllowRecip' : 3,
|
||||||
'Fast' : 4,
|
'Fast' : 4,
|
||||||
|
'AllowContractFastINTEL' : 16,
|
||||||
|
'AllowReassocINTEL' : 17,
|
||||||
},
|
},
|
||||||
|
|
||||||
'FPFastMathModeMask' : {
|
'FPFastMathModeMask' : {
|
||||||
@ -283,6 +371,8 @@ spv = {
|
|||||||
'NSZ' : 0x00000004,
|
'NSZ' : 0x00000004,
|
||||||
'AllowRecip' : 0x00000008,
|
'AllowRecip' : 0x00000008,
|
||||||
'Fast' : 0x00000010,
|
'Fast' : 0x00000010,
|
||||||
|
'AllowContractFastINTEL' : 0x00010000,
|
||||||
|
'AllowReassocINTEL' : 0x00020000,
|
||||||
},
|
},
|
||||||
|
|
||||||
'FPRoundingMode' : {
|
'FPRoundingMode' : {
|
||||||
@ -341,6 +431,7 @@ spv = {
|
|||||||
'NonWritable' : 24,
|
'NonWritable' : 24,
|
||||||
'NonReadable' : 25,
|
'NonReadable' : 25,
|
||||||
'Uniform' : 26,
|
'Uniform' : 26,
|
||||||
|
'UniformId' : 27,
|
||||||
'SaturatedConversion' : 28,
|
'SaturatedConversion' : 28,
|
||||||
'Stream' : 29,
|
'Stream' : 29,
|
||||||
'Location' : 30,
|
'Location' : 30,
|
||||||
@ -361,14 +452,62 @@ spv = {
|
|||||||
'MaxByteOffset' : 45,
|
'MaxByteOffset' : 45,
|
||||||
'AlignmentId' : 46,
|
'AlignmentId' : 46,
|
||||||
'MaxByteOffsetId' : 47,
|
'MaxByteOffsetId' : 47,
|
||||||
|
'NoSignedWrap' : 4469,
|
||||||
|
'NoUnsignedWrap' : 4470,
|
||||||
'ExplicitInterpAMD' : 4999,
|
'ExplicitInterpAMD' : 4999,
|
||||||
'OverrideCoverageNV' : 5248,
|
'OverrideCoverageNV' : 5248,
|
||||||
'PassthroughNV' : 5250,
|
'PassthroughNV' : 5250,
|
||||||
'ViewportRelativeNV' : 5252,
|
'ViewportRelativeNV' : 5252,
|
||||||
'SecondaryViewportRelativeNV' : 5256,
|
'SecondaryViewportRelativeNV' : 5256,
|
||||||
|
'PerPrimitiveNV' : 5271,
|
||||||
|
'PerViewNV' : 5272,
|
||||||
|
'PerTaskNV' : 5273,
|
||||||
|
'PerVertexNV' : 5285,
|
||||||
|
'NonUniform' : 5300,
|
||||||
'NonUniformEXT' : 5300,
|
'NonUniformEXT' : 5300,
|
||||||
|
'RestrictPointer' : 5355,
|
||||||
|
'RestrictPointerEXT' : 5355,
|
||||||
|
'AliasedPointer' : 5356,
|
||||||
|
'AliasedPointerEXT' : 5356,
|
||||||
|
'SIMTCallINTEL' : 5599,
|
||||||
|
'ReferencedIndirectlyINTEL' : 5602,
|
||||||
|
'ClobberINTEL' : 5607,
|
||||||
|
'SideEffectsINTEL' : 5608,
|
||||||
|
'VectorComputeVariableINTEL' : 5624,
|
||||||
|
'FuncParamIOKindINTEL' : 5625,
|
||||||
|
'VectorComputeFunctionINTEL' : 5626,
|
||||||
|
'StackCallINTEL' : 5627,
|
||||||
|
'GlobalVariableOffsetINTEL' : 5628,
|
||||||
|
'CounterBuffer' : 5634,
|
||||||
'HlslCounterBufferGOOGLE' : 5634,
|
'HlslCounterBufferGOOGLE' : 5634,
|
||||||
'HlslSemanticGOOGLE' : 5635,
|
'HlslSemanticGOOGLE' : 5635,
|
||||||
|
'UserSemantic' : 5635,
|
||||||
|
'UserTypeGOOGLE' : 5636,
|
||||||
|
'FunctionRoundingModeINTEL' : 5822,
|
||||||
|
'FunctionDenormModeINTEL' : 5823,
|
||||||
|
'RegisterINTEL' : 5825,
|
||||||
|
'MemoryINTEL' : 5826,
|
||||||
|
'NumbanksINTEL' : 5827,
|
||||||
|
'BankwidthINTEL' : 5828,
|
||||||
|
'MaxPrivateCopiesINTEL' : 5829,
|
||||||
|
'SinglepumpINTEL' : 5830,
|
||||||
|
'DoublepumpINTEL' : 5831,
|
||||||
|
'MaxReplicatesINTEL' : 5832,
|
||||||
|
'SimpleDualPortINTEL' : 5833,
|
||||||
|
'MergeINTEL' : 5834,
|
||||||
|
'BankBitsINTEL' : 5835,
|
||||||
|
'ForcePow2DepthINTEL' : 5836,
|
||||||
|
'BurstCoalesceINTEL' : 5899,
|
||||||
|
'CacheSizeINTEL' : 5900,
|
||||||
|
'DontStaticallyCoalesceINTEL' : 5901,
|
||||||
|
'PrefetchINTEL' : 5902,
|
||||||
|
'StallEnableINTEL' : 5905,
|
||||||
|
'FuseLoopsInFunctionINTEL' : 5907,
|
||||||
|
'BufferLocationINTEL' : 5921,
|
||||||
|
'IOPipeStorageINTEL' : 5944,
|
||||||
|
'FunctionFloatingPointModeINTEL' : 6080,
|
||||||
|
'SingleElementVectorINTEL' : 6085,
|
||||||
|
'VectorComputeCallableFunctionINTEL' : 6087,
|
||||||
},
|
},
|
||||||
|
|
||||||
'BuiltIn' : {
|
'BuiltIn' : {
|
||||||
@ -426,8 +565,10 @@ spv = {
|
|||||||
'BaseVertex' : 4424,
|
'BaseVertex' : 4424,
|
||||||
'BaseInstance' : 4425,
|
'BaseInstance' : 4425,
|
||||||
'DrawIndex' : 4426,
|
'DrawIndex' : 4426,
|
||||||
|
'PrimitiveShadingRateKHR' : 4432,
|
||||||
'DeviceIndex' : 4438,
|
'DeviceIndex' : 4438,
|
||||||
'ViewIndex' : 4440,
|
'ViewIndex' : 4440,
|
||||||
|
'ShadingRateKHR' : 4444,
|
||||||
'BaryCoordNoPerspAMD' : 4992,
|
'BaryCoordNoPerspAMD' : 4992,
|
||||||
'BaryCoordNoPerspCentroidAMD' : 4993,
|
'BaryCoordNoPerspCentroidAMD' : 4993,
|
||||||
'BaryCoordNoPerspSampleAMD' : 4994,
|
'BaryCoordNoPerspSampleAMD' : 4994,
|
||||||
@ -442,6 +583,52 @@ spv = {
|
|||||||
'PositionPerViewNV' : 5261,
|
'PositionPerViewNV' : 5261,
|
||||||
'ViewportMaskPerViewNV' : 5262,
|
'ViewportMaskPerViewNV' : 5262,
|
||||||
'FullyCoveredEXT' : 5264,
|
'FullyCoveredEXT' : 5264,
|
||||||
|
'TaskCountNV' : 5274,
|
||||||
|
'PrimitiveCountNV' : 5275,
|
||||||
|
'PrimitiveIndicesNV' : 5276,
|
||||||
|
'ClipDistancePerViewNV' : 5277,
|
||||||
|
'CullDistancePerViewNV' : 5278,
|
||||||
|
'LayerPerViewNV' : 5279,
|
||||||
|
'MeshViewCountNV' : 5280,
|
||||||
|
'MeshViewIndicesNV' : 5281,
|
||||||
|
'BaryCoordNV' : 5286,
|
||||||
|
'BaryCoordNoPerspNV' : 5287,
|
||||||
|
'FragSizeEXT' : 5292,
|
||||||
|
'FragmentSizeNV' : 5292,
|
||||||
|
'FragInvocationCountEXT' : 5293,
|
||||||
|
'InvocationsPerPixelNV' : 5293,
|
||||||
|
'LaunchIdKHR' : 5319,
|
||||||
|
'LaunchIdNV' : 5319,
|
||||||
|
'LaunchSizeKHR' : 5320,
|
||||||
|
'LaunchSizeNV' : 5320,
|
||||||
|
'WorldRayOriginKHR' : 5321,
|
||||||
|
'WorldRayOriginNV' : 5321,
|
||||||
|
'WorldRayDirectionKHR' : 5322,
|
||||||
|
'WorldRayDirectionNV' : 5322,
|
||||||
|
'ObjectRayOriginKHR' : 5323,
|
||||||
|
'ObjectRayOriginNV' : 5323,
|
||||||
|
'ObjectRayDirectionKHR' : 5324,
|
||||||
|
'ObjectRayDirectionNV' : 5324,
|
||||||
|
'RayTminKHR' : 5325,
|
||||||
|
'RayTminNV' : 5325,
|
||||||
|
'RayTmaxKHR' : 5326,
|
||||||
|
'RayTmaxNV' : 5326,
|
||||||
|
'InstanceCustomIndexKHR' : 5327,
|
||||||
|
'InstanceCustomIndexNV' : 5327,
|
||||||
|
'ObjectToWorldKHR' : 5330,
|
||||||
|
'ObjectToWorldNV' : 5330,
|
||||||
|
'WorldToObjectKHR' : 5331,
|
||||||
|
'WorldToObjectNV' : 5331,
|
||||||
|
'HitTNV' : 5332,
|
||||||
|
'HitKindKHR' : 5333,
|
||||||
|
'HitKindNV' : 5333,
|
||||||
|
'IncomingRayFlagsKHR' : 5351,
|
||||||
|
'IncomingRayFlagsNV' : 5351,
|
||||||
|
'RayGeometryIndexKHR' : 5352,
|
||||||
|
'WarpsPerSMNV' : 5374,
|
||||||
|
'SMCountNV' : 5375,
|
||||||
|
'WarpIDNV' : 5376,
|
||||||
|
'SMIDNV' : 5377,
|
||||||
},
|
},
|
||||||
|
|
||||||
'SelectionControlShift' : {
|
'SelectionControlShift' : {
|
||||||
@ -460,6 +647,19 @@ spv = {
|
|||||||
'DontUnroll' : 1,
|
'DontUnroll' : 1,
|
||||||
'DependencyInfinite' : 2,
|
'DependencyInfinite' : 2,
|
||||||
'DependencyLength' : 3,
|
'DependencyLength' : 3,
|
||||||
|
'MinIterations' : 4,
|
||||||
|
'MaxIterations' : 5,
|
||||||
|
'IterationMultiple' : 6,
|
||||||
|
'PeelCount' : 7,
|
||||||
|
'PartialCount' : 8,
|
||||||
|
'InitiationIntervalINTEL' : 16,
|
||||||
|
'MaxConcurrencyINTEL' : 17,
|
||||||
|
'DependencyArrayINTEL' : 18,
|
||||||
|
'PipelineEnableINTEL' : 19,
|
||||||
|
'LoopCoalesceINTEL' : 20,
|
||||||
|
'MaxInterleavingINTEL' : 21,
|
||||||
|
'SpeculatedIterationsINTEL' : 22,
|
||||||
|
'NoFusionINTEL' : 23,
|
||||||
},
|
},
|
||||||
|
|
||||||
'LoopControlMask' : {
|
'LoopControlMask' : {
|
||||||
@ -468,6 +668,19 @@ spv = {
|
|||||||
'DontUnroll' : 0x00000002,
|
'DontUnroll' : 0x00000002,
|
||||||
'DependencyInfinite' : 0x00000004,
|
'DependencyInfinite' : 0x00000004,
|
||||||
'DependencyLength' : 0x00000008,
|
'DependencyLength' : 0x00000008,
|
||||||
|
'MinIterations' : 0x00000010,
|
||||||
|
'MaxIterations' : 0x00000020,
|
||||||
|
'IterationMultiple' : 0x00000040,
|
||||||
|
'PeelCount' : 0x00000080,
|
||||||
|
'PartialCount' : 0x00000100,
|
||||||
|
'InitiationIntervalINTEL' : 0x00010000,
|
||||||
|
'MaxConcurrencyINTEL' : 0x00020000,
|
||||||
|
'DependencyArrayINTEL' : 0x00040000,
|
||||||
|
'PipelineEnableINTEL' : 0x00080000,
|
||||||
|
'LoopCoalesceINTEL' : 0x00100000,
|
||||||
|
'MaxInterleavingINTEL' : 0x00200000,
|
||||||
|
'SpeculatedIterationsINTEL' : 0x00400000,
|
||||||
|
'NoFusionINTEL' : 0x00800000,
|
||||||
},
|
},
|
||||||
|
|
||||||
'FunctionControlShift' : {
|
'FunctionControlShift' : {
|
||||||
@ -496,6 +709,13 @@ spv = {
|
|||||||
'CrossWorkgroupMemory' : 9,
|
'CrossWorkgroupMemory' : 9,
|
||||||
'AtomicCounterMemory' : 10,
|
'AtomicCounterMemory' : 10,
|
||||||
'ImageMemory' : 11,
|
'ImageMemory' : 11,
|
||||||
|
'OutputMemory' : 12,
|
||||||
|
'OutputMemoryKHR' : 12,
|
||||||
|
'MakeAvailable' : 13,
|
||||||
|
'MakeAvailableKHR' : 13,
|
||||||
|
'MakeVisible' : 14,
|
||||||
|
'MakeVisibleKHR' : 14,
|
||||||
|
'Volatile' : 15,
|
||||||
},
|
},
|
||||||
|
|
||||||
'MemorySemanticsMask' : {
|
'MemorySemanticsMask' : {
|
||||||
@ -510,12 +730,25 @@ spv = {
|
|||||||
'CrossWorkgroupMemory' : 0x00000200,
|
'CrossWorkgroupMemory' : 0x00000200,
|
||||||
'AtomicCounterMemory' : 0x00000400,
|
'AtomicCounterMemory' : 0x00000400,
|
||||||
'ImageMemory' : 0x00000800,
|
'ImageMemory' : 0x00000800,
|
||||||
|
'OutputMemory' : 0x00001000,
|
||||||
|
'OutputMemoryKHR' : 0x00001000,
|
||||||
|
'MakeAvailable' : 0x00002000,
|
||||||
|
'MakeAvailableKHR' : 0x00002000,
|
||||||
|
'MakeVisible' : 0x00004000,
|
||||||
|
'MakeVisibleKHR' : 0x00004000,
|
||||||
|
'Volatile' : 0x00008000,
|
||||||
},
|
},
|
||||||
|
|
||||||
'MemoryAccessShift' : {
|
'MemoryAccessShift' : {
|
||||||
'Volatile' : 0,
|
'Volatile' : 0,
|
||||||
'Aligned' : 1,
|
'Aligned' : 1,
|
||||||
'Nontemporal' : 2,
|
'Nontemporal' : 2,
|
||||||
|
'MakePointerAvailable' : 3,
|
||||||
|
'MakePointerAvailableKHR' : 3,
|
||||||
|
'MakePointerVisible' : 4,
|
||||||
|
'MakePointerVisibleKHR' : 4,
|
||||||
|
'NonPrivatePointer' : 5,
|
||||||
|
'NonPrivatePointerKHR' : 5,
|
||||||
},
|
},
|
||||||
|
|
||||||
'MemoryAccessMask' : {
|
'MemoryAccessMask' : {
|
||||||
@ -523,6 +756,12 @@ spv = {
|
|||||||
'Volatile' : 0x00000001,
|
'Volatile' : 0x00000001,
|
||||||
'Aligned' : 0x00000002,
|
'Aligned' : 0x00000002,
|
||||||
'Nontemporal' : 0x00000004,
|
'Nontemporal' : 0x00000004,
|
||||||
|
'MakePointerAvailable' : 0x00000008,
|
||||||
|
'MakePointerAvailableKHR' : 0x00000008,
|
||||||
|
'MakePointerVisible' : 0x00000010,
|
||||||
|
'MakePointerVisibleKHR' : 0x00000010,
|
||||||
|
'NonPrivatePointer' : 0x00000020,
|
||||||
|
'NonPrivatePointerKHR' : 0x00000020,
|
||||||
},
|
},
|
||||||
|
|
||||||
'Scope' : {
|
'Scope' : {
|
||||||
@ -531,6 +770,9 @@ spv = {
|
|||||||
'Workgroup' : 2,
|
'Workgroup' : 2,
|
||||||
'Subgroup' : 3,
|
'Subgroup' : 3,
|
||||||
'Invocation' : 4,
|
'Invocation' : 4,
|
||||||
|
'QueueFamily' : 5,
|
||||||
|
'QueueFamilyKHR' : 5,
|
||||||
|
'ShaderCallKHR' : 6,
|
||||||
},
|
},
|
||||||
|
|
||||||
'GroupOperation' : {
|
'GroupOperation' : {
|
||||||
@ -626,8 +868,14 @@ spv = {
|
|||||||
'GroupNonUniformShuffleRelative' : 66,
|
'GroupNonUniformShuffleRelative' : 66,
|
||||||
'GroupNonUniformClustered' : 67,
|
'GroupNonUniformClustered' : 67,
|
||||||
'GroupNonUniformQuad' : 68,
|
'GroupNonUniformQuad' : 68,
|
||||||
|
'ShaderLayer' : 69,
|
||||||
|
'ShaderViewportIndex' : 70,
|
||||||
|
'FragmentShadingRateKHR' : 4422,
|
||||||
'SubgroupBallotKHR' : 4423,
|
'SubgroupBallotKHR' : 4423,
|
||||||
'DrawParameters' : 4427,
|
'DrawParameters' : 4427,
|
||||||
|
'WorkgroupMemoryExplicitLayoutKHR' : 4428,
|
||||||
|
'WorkgroupMemoryExplicitLayout8BitAccessKHR' : 4429,
|
||||||
|
'WorkgroupMemoryExplicitLayout16BitAccessKHR' : 4430,
|
||||||
'SubgroupVoteKHR' : 4431,
|
'SubgroupVoteKHR' : 4431,
|
||||||
'StorageBuffer16BitAccess' : 4433,
|
'StorageBuffer16BitAccess' : 4433,
|
||||||
'StorageUniformBufferBlock16' : 4433,
|
'StorageUniformBufferBlock16' : 4433,
|
||||||
@ -644,11 +892,22 @@ spv = {
|
|||||||
'StorageBuffer8BitAccess' : 4448,
|
'StorageBuffer8BitAccess' : 4448,
|
||||||
'UniformAndStorageBuffer8BitAccess' : 4449,
|
'UniformAndStorageBuffer8BitAccess' : 4449,
|
||||||
'StoragePushConstant8' : 4450,
|
'StoragePushConstant8' : 4450,
|
||||||
|
'DenormPreserve' : 4464,
|
||||||
|
'DenormFlushToZero' : 4465,
|
||||||
|
'SignedZeroInfNanPreserve' : 4466,
|
||||||
|
'RoundingModeRTE' : 4467,
|
||||||
|
'RoundingModeRTZ' : 4468,
|
||||||
|
'RayQueryProvisionalKHR' : 4471,
|
||||||
|
'RayQueryKHR' : 4472,
|
||||||
|
'RayTraversalPrimitiveCullingKHR' : 4478,
|
||||||
|
'RayTracingKHR' : 4479,
|
||||||
'Float16ImageAMD' : 5008,
|
'Float16ImageAMD' : 5008,
|
||||||
'ImageGatherBiasLodAMD' : 5009,
|
'ImageGatherBiasLodAMD' : 5009,
|
||||||
'FragmentMaskAMD' : 5010,
|
'FragmentMaskAMD' : 5010,
|
||||||
'StencilExportEXT' : 5013,
|
'StencilExportEXT' : 5013,
|
||||||
'ImageReadWriteLodAMD' : 5015,
|
'ImageReadWriteLodAMD' : 5015,
|
||||||
|
'Int64ImageEXT' : 5016,
|
||||||
|
'ShaderClockKHR' : 5055,
|
||||||
'SampleMaskOverrideCoverageNV' : 5249,
|
'SampleMaskOverrideCoverageNV' : 5249,
|
||||||
'GeometryShaderPassthroughNV' : 5251,
|
'GeometryShaderPassthroughNV' : 5251,
|
||||||
'ShaderViewportIndexLayerEXT' : 5254,
|
'ShaderViewportIndexLayerEXT' : 5254,
|
||||||
@ -657,22 +916,158 @@ spv = {
|
|||||||
'ShaderStereoViewNV' : 5259,
|
'ShaderStereoViewNV' : 5259,
|
||||||
'PerViewAttributesNV' : 5260,
|
'PerViewAttributesNV' : 5260,
|
||||||
'FragmentFullyCoveredEXT' : 5265,
|
'FragmentFullyCoveredEXT' : 5265,
|
||||||
|
'MeshShadingNV' : 5266,
|
||||||
|
'ImageFootprintNV' : 5282,
|
||||||
|
'FragmentBarycentricNV' : 5284,
|
||||||
|
'ComputeDerivativeGroupQuadsNV' : 5288,
|
||||||
|
'FragmentDensityEXT' : 5291,
|
||||||
|
'ShadingRateNV' : 5291,
|
||||||
'GroupNonUniformPartitionedNV' : 5297,
|
'GroupNonUniformPartitionedNV' : 5297,
|
||||||
|
'ShaderNonUniform' : 5301,
|
||||||
'ShaderNonUniformEXT' : 5301,
|
'ShaderNonUniformEXT' : 5301,
|
||||||
|
'RuntimeDescriptorArray' : 5302,
|
||||||
'RuntimeDescriptorArrayEXT' : 5302,
|
'RuntimeDescriptorArrayEXT' : 5302,
|
||||||
|
'InputAttachmentArrayDynamicIndexing' : 5303,
|
||||||
'InputAttachmentArrayDynamicIndexingEXT' : 5303,
|
'InputAttachmentArrayDynamicIndexingEXT' : 5303,
|
||||||
|
'UniformTexelBufferArrayDynamicIndexing' : 5304,
|
||||||
'UniformTexelBufferArrayDynamicIndexingEXT' : 5304,
|
'UniformTexelBufferArrayDynamicIndexingEXT' : 5304,
|
||||||
|
'StorageTexelBufferArrayDynamicIndexing' : 5305,
|
||||||
'StorageTexelBufferArrayDynamicIndexingEXT' : 5305,
|
'StorageTexelBufferArrayDynamicIndexingEXT' : 5305,
|
||||||
|
'UniformBufferArrayNonUniformIndexing' : 5306,
|
||||||
'UniformBufferArrayNonUniformIndexingEXT' : 5306,
|
'UniformBufferArrayNonUniformIndexingEXT' : 5306,
|
||||||
|
'SampledImageArrayNonUniformIndexing' : 5307,
|
||||||
'SampledImageArrayNonUniformIndexingEXT' : 5307,
|
'SampledImageArrayNonUniformIndexingEXT' : 5307,
|
||||||
|
'StorageBufferArrayNonUniformIndexing' : 5308,
|
||||||
'StorageBufferArrayNonUniformIndexingEXT' : 5308,
|
'StorageBufferArrayNonUniformIndexingEXT' : 5308,
|
||||||
|
'StorageImageArrayNonUniformIndexing' : 5309,
|
||||||
'StorageImageArrayNonUniformIndexingEXT' : 5309,
|
'StorageImageArrayNonUniformIndexingEXT' : 5309,
|
||||||
|
'InputAttachmentArrayNonUniformIndexing' : 5310,
|
||||||
'InputAttachmentArrayNonUniformIndexingEXT' : 5310,
|
'InputAttachmentArrayNonUniformIndexingEXT' : 5310,
|
||||||
|
'UniformTexelBufferArrayNonUniformIndexing' : 5311,
|
||||||
'UniformTexelBufferArrayNonUniformIndexingEXT' : 5311,
|
'UniformTexelBufferArrayNonUniformIndexingEXT' : 5311,
|
||||||
|
'StorageTexelBufferArrayNonUniformIndexing' : 5312,
|
||||||
'StorageTexelBufferArrayNonUniformIndexingEXT' : 5312,
|
'StorageTexelBufferArrayNonUniformIndexingEXT' : 5312,
|
||||||
|
'RayTracingNV' : 5340,
|
||||||
|
'VulkanMemoryModel' : 5345,
|
||||||
|
'VulkanMemoryModelKHR' : 5345,
|
||||||
|
'VulkanMemoryModelDeviceScope' : 5346,
|
||||||
|
'VulkanMemoryModelDeviceScopeKHR' : 5346,
|
||||||
|
'PhysicalStorageBufferAddresses' : 5347,
|
||||||
|
'PhysicalStorageBufferAddressesEXT' : 5347,
|
||||||
|
'ComputeDerivativeGroupLinearNV' : 5350,
|
||||||
|
'RayTracingProvisionalKHR' : 5353,
|
||||||
|
'CooperativeMatrixNV' : 5357,
|
||||||
|
'FragmentShaderSampleInterlockEXT' : 5363,
|
||||||
|
'FragmentShaderShadingRateInterlockEXT' : 5372,
|
||||||
|
'ShaderSMBuiltinsNV' : 5373,
|
||||||
|
'FragmentShaderPixelInterlockEXT' : 5378,
|
||||||
|
'DemoteToHelperInvocationEXT' : 5379,
|
||||||
'SubgroupShuffleINTEL' : 5568,
|
'SubgroupShuffleINTEL' : 5568,
|
||||||
'SubgroupBufferBlockIOINTEL' : 5569,
|
'SubgroupBufferBlockIOINTEL' : 5569,
|
||||||
'SubgroupImageBlockIOINTEL' : 5570,
|
'SubgroupImageBlockIOINTEL' : 5570,
|
||||||
|
'SubgroupImageMediaBlockIOINTEL' : 5579,
|
||||||
|
'RoundToInfinityINTEL' : 5582,
|
||||||
|
'FloatingPointModeINTEL' : 5583,
|
||||||
|
'IntegerFunctions2INTEL' : 5584,
|
||||||
|
'FunctionPointersINTEL' : 5603,
|
||||||
|
'IndirectReferencesINTEL' : 5604,
|
||||||
|
'AsmINTEL' : 5606,
|
||||||
|
'AtomicFloat32MinMaxEXT' : 5612,
|
||||||
|
'AtomicFloat64MinMaxEXT' : 5613,
|
||||||
|
'AtomicFloat16MinMaxEXT' : 5616,
|
||||||
|
'VectorComputeINTEL' : 5617,
|
||||||
|
'VectorAnyINTEL' : 5619,
|
||||||
|
'SubgroupAvcMotionEstimationINTEL' : 5696,
|
||||||
|
'SubgroupAvcMotionEstimationIntraINTEL' : 5697,
|
||||||
|
'SubgroupAvcMotionEstimationChromaINTEL' : 5698,
|
||||||
|
'VariableLengthArrayINTEL' : 5817,
|
||||||
|
'FunctionFloatControlINTEL' : 5821,
|
||||||
|
'FPGAMemoryAttributesINTEL' : 5824,
|
||||||
|
'FPFastMathModeINTEL' : 5837,
|
||||||
|
'ArbitraryPrecisionIntegersINTEL' : 5844,
|
||||||
|
'UnstructuredLoopControlsINTEL' : 5886,
|
||||||
|
'FPGALoopControlsINTEL' : 5888,
|
||||||
|
'KernelAttributesINTEL' : 5892,
|
||||||
|
'FPGAKernelAttributesINTEL' : 5897,
|
||||||
|
'FPGAMemoryAccessesINTEL' : 5898,
|
||||||
|
'FPGAClusterAttributesINTEL' : 5904,
|
||||||
|
'LoopFuseINTEL' : 5906,
|
||||||
|
'FPGABufferLocationINTEL' : 5920,
|
||||||
|
'USMStorageClassesINTEL' : 5935,
|
||||||
|
'IOPipesINTEL' : 5943,
|
||||||
|
'BlockingPipesINTEL' : 5945,
|
||||||
|
'FPGARegINTEL' : 5948,
|
||||||
|
'AtomicFloat32AddEXT' : 6033,
|
||||||
|
'AtomicFloat64AddEXT' : 6034,
|
||||||
|
'LongConstantCompositeINTEL' : 6089,
|
||||||
|
},
|
||||||
|
|
||||||
|
'RayFlagsShift' : {
|
||||||
|
'OpaqueKHR' : 0,
|
||||||
|
'NoOpaqueKHR' : 1,
|
||||||
|
'TerminateOnFirstHitKHR' : 2,
|
||||||
|
'SkipClosestHitShaderKHR' : 3,
|
||||||
|
'CullBackFacingTrianglesKHR' : 4,
|
||||||
|
'CullFrontFacingTrianglesKHR' : 5,
|
||||||
|
'CullOpaqueKHR' : 6,
|
||||||
|
'CullNoOpaqueKHR' : 7,
|
||||||
|
'SkipTrianglesKHR' : 8,
|
||||||
|
'SkipAABBsKHR' : 9,
|
||||||
|
},
|
||||||
|
|
||||||
|
'RayFlagsMask' : {
|
||||||
|
'MaskNone' : 0,
|
||||||
|
'OpaqueKHR' : 0x00000001,
|
||||||
|
'NoOpaqueKHR' : 0x00000002,
|
||||||
|
'TerminateOnFirstHitKHR' : 0x00000004,
|
||||||
|
'SkipClosestHitShaderKHR' : 0x00000008,
|
||||||
|
'CullBackFacingTrianglesKHR' : 0x00000010,
|
||||||
|
'CullFrontFacingTrianglesKHR' : 0x00000020,
|
||||||
|
'CullOpaqueKHR' : 0x00000040,
|
||||||
|
'CullNoOpaqueKHR' : 0x00000080,
|
||||||
|
'SkipTrianglesKHR' : 0x00000100,
|
||||||
|
'SkipAABBsKHR' : 0x00000200,
|
||||||
|
},
|
||||||
|
|
||||||
|
'RayQueryIntersection' : {
|
||||||
|
'RayQueryCandidateIntersectionKHR' : 0,
|
||||||
|
'RayQueryCommittedIntersectionKHR' : 1,
|
||||||
|
},
|
||||||
|
|
||||||
|
'RayQueryCommittedIntersectionType' : {
|
||||||
|
'RayQueryCommittedIntersectionNoneKHR' : 0,
|
||||||
|
'RayQueryCommittedIntersectionTriangleKHR' : 1,
|
||||||
|
'RayQueryCommittedIntersectionGeneratedKHR' : 2,
|
||||||
|
},
|
||||||
|
|
||||||
|
'RayQueryCandidateIntersectionType' : {
|
||||||
|
'RayQueryCandidateIntersectionTriangleKHR' : 0,
|
||||||
|
'RayQueryCandidateIntersectionAABBKHR' : 1,
|
||||||
|
},
|
||||||
|
|
||||||
|
'FragmentShadingRateShift' : {
|
||||||
|
'Vertical2Pixels' : 0,
|
||||||
|
'Vertical4Pixels' : 1,
|
||||||
|
'Horizontal2Pixels' : 2,
|
||||||
|
'Horizontal4Pixels' : 3,
|
||||||
|
},
|
||||||
|
|
||||||
|
'FragmentShadingRateMask' : {
|
||||||
|
'MaskNone' : 0,
|
||||||
|
'Vertical2Pixels' : 0x00000001,
|
||||||
|
'Vertical4Pixels' : 0x00000002,
|
||||||
|
'Horizontal2Pixels' : 0x00000004,
|
||||||
|
'Horizontal4Pixels' : 0x00000008,
|
||||||
|
},
|
||||||
|
|
||||||
|
'FPDenormMode' : {
|
||||||
|
'Preserve' : 0,
|
||||||
|
'FlushToZero' : 1,
|
||||||
|
},
|
||||||
|
|
||||||
|
'FPOperationMode' : {
|
||||||
|
'IEEE' : 0,
|
||||||
|
'ALT' : 1,
|
||||||
},
|
},
|
||||||
|
|
||||||
'Op' : {
|
'Op' : {
|
||||||
@ -1016,12 +1411,29 @@ spv = {
|
|||||||
'OpGroupNonUniformLogicalXor' : 364,
|
'OpGroupNonUniformLogicalXor' : 364,
|
||||||
'OpGroupNonUniformQuadBroadcast' : 365,
|
'OpGroupNonUniformQuadBroadcast' : 365,
|
||||||
'OpGroupNonUniformQuadSwap' : 366,
|
'OpGroupNonUniformQuadSwap' : 366,
|
||||||
|
'OpCopyLogical' : 400,
|
||||||
|
'OpPtrEqual' : 401,
|
||||||
|
'OpPtrNotEqual' : 402,
|
||||||
|
'OpPtrDiff' : 403,
|
||||||
|
'OpTerminateInvocation' : 4416,
|
||||||
'OpSubgroupBallotKHR' : 4421,
|
'OpSubgroupBallotKHR' : 4421,
|
||||||
'OpSubgroupFirstInvocationKHR' : 4422,
|
'OpSubgroupFirstInvocationKHR' : 4422,
|
||||||
'OpSubgroupAllKHR' : 4428,
|
'OpSubgroupAllKHR' : 4428,
|
||||||
'OpSubgroupAnyKHR' : 4429,
|
'OpSubgroupAnyKHR' : 4429,
|
||||||
'OpSubgroupAllEqualKHR' : 4430,
|
'OpSubgroupAllEqualKHR' : 4430,
|
||||||
'OpSubgroupReadInvocationKHR' : 4432,
|
'OpSubgroupReadInvocationKHR' : 4432,
|
||||||
|
'OpTraceRayKHR' : 4445,
|
||||||
|
'OpExecuteCallableKHR' : 4446,
|
||||||
|
'OpConvertUToAccelerationStructureKHR' : 4447,
|
||||||
|
'OpIgnoreIntersectionKHR' : 4448,
|
||||||
|
'OpTerminateRayKHR' : 4449,
|
||||||
|
'OpTypeRayQueryKHR' : 4472,
|
||||||
|
'OpRayQueryInitializeKHR' : 4473,
|
||||||
|
'OpRayQueryTerminateKHR' : 4474,
|
||||||
|
'OpRayQueryGenerateIntersectionKHR' : 4475,
|
||||||
|
'OpRayQueryConfirmIntersectionKHR' : 4476,
|
||||||
|
'OpRayQueryProceedKHR' : 4477,
|
||||||
|
'OpRayQueryGetIntersectionTypeKHR' : 4479,
|
||||||
'OpGroupIAddNonUniformAMD' : 5000,
|
'OpGroupIAddNonUniformAMD' : 5000,
|
||||||
'OpGroupFAddNonUniformAMD' : 5001,
|
'OpGroupFAddNonUniformAMD' : 5001,
|
||||||
'OpGroupFMinNonUniformAMD' : 5002,
|
'OpGroupFMinNonUniformAMD' : 5002,
|
||||||
@ -1032,7 +1444,27 @@ spv = {
|
|||||||
'OpGroupSMaxNonUniformAMD' : 5007,
|
'OpGroupSMaxNonUniformAMD' : 5007,
|
||||||
'OpFragmentMaskFetchAMD' : 5011,
|
'OpFragmentMaskFetchAMD' : 5011,
|
||||||
'OpFragmentFetchAMD' : 5012,
|
'OpFragmentFetchAMD' : 5012,
|
||||||
|
'OpReadClockKHR' : 5056,
|
||||||
|
'OpImageSampleFootprintNV' : 5283,
|
||||||
'OpGroupNonUniformPartitionNV' : 5296,
|
'OpGroupNonUniformPartitionNV' : 5296,
|
||||||
|
'OpWritePackedPrimitiveIndices4x8NV' : 5299,
|
||||||
|
'OpReportIntersectionKHR' : 5334,
|
||||||
|
'OpReportIntersectionNV' : 5334,
|
||||||
|
'OpIgnoreIntersectionNV' : 5335,
|
||||||
|
'OpTerminateRayNV' : 5336,
|
||||||
|
'OpTraceNV' : 5337,
|
||||||
|
'OpTypeAccelerationStructureKHR' : 5341,
|
||||||
|
'OpTypeAccelerationStructureNV' : 5341,
|
||||||
|
'OpExecuteCallableNV' : 5344,
|
||||||
|
'OpTypeCooperativeMatrixNV' : 5358,
|
||||||
|
'OpCooperativeMatrixLoadNV' : 5359,
|
||||||
|
'OpCooperativeMatrixStoreNV' : 5360,
|
||||||
|
'OpCooperativeMatrixMulAddNV' : 5361,
|
||||||
|
'OpCooperativeMatrixLengthNV' : 5362,
|
||||||
|
'OpBeginInvocationInterlockEXT' : 5364,
|
||||||
|
'OpEndInvocationInterlockEXT' : 5365,
|
||||||
|
'OpDemoteToHelperInvocationEXT' : 5380,
|
||||||
|
'OpIsHelperInvocationEXT' : 5381,
|
||||||
'OpSubgroupShuffleINTEL' : 5571,
|
'OpSubgroupShuffleINTEL' : 5571,
|
||||||
'OpSubgroupShuffleDownINTEL' : 5572,
|
'OpSubgroupShuffleDownINTEL' : 5572,
|
||||||
'OpSubgroupShuffleUpINTEL' : 5573,
|
'OpSubgroupShuffleUpINTEL' : 5573,
|
||||||
@ -1041,8 +1473,182 @@ spv = {
|
|||||||
'OpSubgroupBlockWriteINTEL' : 5576,
|
'OpSubgroupBlockWriteINTEL' : 5576,
|
||||||
'OpSubgroupImageBlockReadINTEL' : 5577,
|
'OpSubgroupImageBlockReadINTEL' : 5577,
|
||||||
'OpSubgroupImageBlockWriteINTEL' : 5578,
|
'OpSubgroupImageBlockWriteINTEL' : 5578,
|
||||||
|
'OpSubgroupImageMediaBlockReadINTEL' : 5580,
|
||||||
|
'OpSubgroupImageMediaBlockWriteINTEL' : 5581,
|
||||||
|
'OpUCountLeadingZerosINTEL' : 5585,
|
||||||
|
'OpUCountTrailingZerosINTEL' : 5586,
|
||||||
|
'OpAbsISubINTEL' : 5587,
|
||||||
|
'OpAbsUSubINTEL' : 5588,
|
||||||
|
'OpIAddSatINTEL' : 5589,
|
||||||
|
'OpUAddSatINTEL' : 5590,
|
||||||
|
'OpIAverageINTEL' : 5591,
|
||||||
|
'OpUAverageINTEL' : 5592,
|
||||||
|
'OpIAverageRoundedINTEL' : 5593,
|
||||||
|
'OpUAverageRoundedINTEL' : 5594,
|
||||||
|
'OpISubSatINTEL' : 5595,
|
||||||
|
'OpUSubSatINTEL' : 5596,
|
||||||
|
'OpIMul32x16INTEL' : 5597,
|
||||||
|
'OpUMul32x16INTEL' : 5598,
|
||||||
|
'OpConstFunctionPointerINTEL' : 5600,
|
||||||
|
'OpFunctionPointerCallINTEL' : 5601,
|
||||||
|
'OpAsmTargetINTEL' : 5609,
|
||||||
|
'OpAsmINTEL' : 5610,
|
||||||
|
'OpAsmCallINTEL' : 5611,
|
||||||
|
'OpAtomicFMinEXT' : 5614,
|
||||||
|
'OpAtomicFMaxEXT' : 5615,
|
||||||
|
'OpDecorateString' : 5632,
|
||||||
'OpDecorateStringGOOGLE' : 5632,
|
'OpDecorateStringGOOGLE' : 5632,
|
||||||
|
'OpMemberDecorateString' : 5633,
|
||||||
'OpMemberDecorateStringGOOGLE' : 5633,
|
'OpMemberDecorateStringGOOGLE' : 5633,
|
||||||
|
'OpVmeImageINTEL' : 5699,
|
||||||
|
'OpTypeVmeImageINTEL' : 5700,
|
||||||
|
'OpTypeAvcImePayloadINTEL' : 5701,
|
||||||
|
'OpTypeAvcRefPayloadINTEL' : 5702,
|
||||||
|
'OpTypeAvcSicPayloadINTEL' : 5703,
|
||||||
|
'OpTypeAvcMcePayloadINTEL' : 5704,
|
||||||
|
'OpTypeAvcMceResultINTEL' : 5705,
|
||||||
|
'OpTypeAvcImeResultINTEL' : 5706,
|
||||||
|
'OpTypeAvcImeResultSingleReferenceStreamoutINTEL' : 5707,
|
||||||
|
'OpTypeAvcImeResultDualReferenceStreamoutINTEL' : 5708,
|
||||||
|
'OpTypeAvcImeSingleReferenceStreaminINTEL' : 5709,
|
||||||
|
'OpTypeAvcImeDualReferenceStreaminINTEL' : 5710,
|
||||||
|
'OpTypeAvcRefResultINTEL' : 5711,
|
||||||
|
'OpTypeAvcSicResultINTEL' : 5712,
|
||||||
|
'OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL' : 5713,
|
||||||
|
'OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL' : 5714,
|
||||||
|
'OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL' : 5715,
|
||||||
|
'OpSubgroupAvcMceSetInterShapePenaltyINTEL' : 5716,
|
||||||
|
'OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL' : 5717,
|
||||||
|
'OpSubgroupAvcMceSetInterDirectionPenaltyINTEL' : 5718,
|
||||||
|
'OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL' : 5719,
|
||||||
|
'OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL' : 5720,
|
||||||
|
'OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL' : 5721,
|
||||||
|
'OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL' : 5722,
|
||||||
|
'OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL' : 5723,
|
||||||
|
'OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL' : 5724,
|
||||||
|
'OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL' : 5725,
|
||||||
|
'OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL' : 5726,
|
||||||
|
'OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL' : 5727,
|
||||||
|
'OpSubgroupAvcMceSetAcOnlyHaarINTEL' : 5728,
|
||||||
|
'OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL' : 5729,
|
||||||
|
'OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL' : 5730,
|
||||||
|
'OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL' : 5731,
|
||||||
|
'OpSubgroupAvcMceConvertToImePayloadINTEL' : 5732,
|
||||||
|
'OpSubgroupAvcMceConvertToImeResultINTEL' : 5733,
|
||||||
|
'OpSubgroupAvcMceConvertToRefPayloadINTEL' : 5734,
|
||||||
|
'OpSubgroupAvcMceConvertToRefResultINTEL' : 5735,
|
||||||
|
'OpSubgroupAvcMceConvertToSicPayloadINTEL' : 5736,
|
||||||
|
'OpSubgroupAvcMceConvertToSicResultINTEL' : 5737,
|
||||||
|
'OpSubgroupAvcMceGetMotionVectorsINTEL' : 5738,
|
||||||
|
'OpSubgroupAvcMceGetInterDistortionsINTEL' : 5739,
|
||||||
|
'OpSubgroupAvcMceGetBestInterDistortionsINTEL' : 5740,
|
||||||
|
'OpSubgroupAvcMceGetInterMajorShapeINTEL' : 5741,
|
||||||
|
'OpSubgroupAvcMceGetInterMinorShapeINTEL' : 5742,
|
||||||
|
'OpSubgroupAvcMceGetInterDirectionsINTEL' : 5743,
|
||||||
|
'OpSubgroupAvcMceGetInterMotionVectorCountINTEL' : 5744,
|
||||||
|
'OpSubgroupAvcMceGetInterReferenceIdsINTEL' : 5745,
|
||||||
|
'OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL' : 5746,
|
||||||
|
'OpSubgroupAvcImeInitializeINTEL' : 5747,
|
||||||
|
'OpSubgroupAvcImeSetSingleReferenceINTEL' : 5748,
|
||||||
|
'OpSubgroupAvcImeSetDualReferenceINTEL' : 5749,
|
||||||
|
'OpSubgroupAvcImeRefWindowSizeINTEL' : 5750,
|
||||||
|
'OpSubgroupAvcImeAdjustRefOffsetINTEL' : 5751,
|
||||||
|
'OpSubgroupAvcImeConvertToMcePayloadINTEL' : 5752,
|
||||||
|
'OpSubgroupAvcImeSetMaxMotionVectorCountINTEL' : 5753,
|
||||||
|
'OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL' : 5754,
|
||||||
|
'OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL' : 5755,
|
||||||
|
'OpSubgroupAvcImeSetWeightedSadINTEL' : 5756,
|
||||||
|
'OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL' : 5757,
|
||||||
|
'OpSubgroupAvcImeEvaluateWithDualReferenceINTEL' : 5758,
|
||||||
|
'OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL' : 5759,
|
||||||
|
'OpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL' : 5760,
|
||||||
|
'OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL' : 5761,
|
||||||
|
'OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL' : 5762,
|
||||||
|
'OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL' : 5763,
|
||||||
|
'OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL' : 5764,
|
||||||
|
'OpSubgroupAvcImeConvertToMceResultINTEL' : 5765,
|
||||||
|
'OpSubgroupAvcImeGetSingleReferenceStreaminINTEL' : 5766,
|
||||||
|
'OpSubgroupAvcImeGetDualReferenceStreaminINTEL' : 5767,
|
||||||
|
'OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL' : 5768,
|
||||||
|
'OpSubgroupAvcImeStripDualReferenceStreamoutINTEL' : 5769,
|
||||||
|
'OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL' : 5770,
|
||||||
|
'OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL' : 5771,
|
||||||
|
'OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL' : 5772,
|
||||||
|
'OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL' : 5773,
|
||||||
|
'OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL' : 5774,
|
||||||
|
'OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL' : 5775,
|
||||||
|
'OpSubgroupAvcImeGetBorderReachedINTEL' : 5776,
|
||||||
|
'OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL' : 5777,
|
||||||
|
'OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL' : 5778,
|
||||||
|
'OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL' : 5779,
|
||||||
|
'OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL' : 5780,
|
||||||
|
'OpSubgroupAvcFmeInitializeINTEL' : 5781,
|
||||||
|
'OpSubgroupAvcBmeInitializeINTEL' : 5782,
|
||||||
|
'OpSubgroupAvcRefConvertToMcePayloadINTEL' : 5783,
|
||||||
|
'OpSubgroupAvcRefSetBidirectionalMixDisableINTEL' : 5784,
|
||||||
|
'OpSubgroupAvcRefSetBilinearFilterEnableINTEL' : 5785,
|
||||||
|
'OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL' : 5786,
|
||||||
|
'OpSubgroupAvcRefEvaluateWithDualReferenceINTEL' : 5787,
|
||||||
|
'OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL' : 5788,
|
||||||
|
'OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL' : 5789,
|
||||||
|
'OpSubgroupAvcRefConvertToMceResultINTEL' : 5790,
|
||||||
|
'OpSubgroupAvcSicInitializeINTEL' : 5791,
|
||||||
|
'OpSubgroupAvcSicConfigureSkcINTEL' : 5792,
|
||||||
|
'OpSubgroupAvcSicConfigureIpeLumaINTEL' : 5793,
|
||||||
|
'OpSubgroupAvcSicConfigureIpeLumaChromaINTEL' : 5794,
|
||||||
|
'OpSubgroupAvcSicGetMotionVectorMaskINTEL' : 5795,
|
||||||
|
'OpSubgroupAvcSicConvertToMcePayloadINTEL' : 5796,
|
||||||
|
'OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL' : 5797,
|
||||||
|
'OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL' : 5798,
|
||||||
|
'OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL' : 5799,
|
||||||
|
'OpSubgroupAvcSicSetBilinearFilterEnableINTEL' : 5800,
|
||||||
|
'OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL' : 5801,
|
||||||
|
'OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL' : 5802,
|
||||||
|
'OpSubgroupAvcSicEvaluateIpeINTEL' : 5803,
|
||||||
|
'OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL' : 5804,
|
||||||
|
'OpSubgroupAvcSicEvaluateWithDualReferenceINTEL' : 5805,
|
||||||
|
'OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL' : 5806,
|
||||||
|
'OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL' : 5807,
|
||||||
|
'OpSubgroupAvcSicConvertToMceResultINTEL' : 5808,
|
||||||
|
'OpSubgroupAvcSicGetIpeLumaShapeINTEL' : 5809,
|
||||||
|
'OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL' : 5810,
|
||||||
|
'OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL' : 5811,
|
||||||
|
'OpSubgroupAvcSicGetPackedIpeLumaModesINTEL' : 5812,
|
||||||
|
'OpSubgroupAvcSicGetIpeChromaModeINTEL' : 5813,
|
||||||
|
'OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL' : 5814,
|
||||||
|
'OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL' : 5815,
|
||||||
|
'OpSubgroupAvcSicGetInterRawSadsINTEL' : 5816,
|
||||||
|
'OpVariableLengthArrayINTEL' : 5818,
|
||||||
|
'OpSaveMemoryINTEL' : 5819,
|
||||||
|
'OpRestoreMemoryINTEL' : 5820,
|
||||||
|
'OpLoopControlINTEL' : 5887,
|
||||||
|
'OpPtrCastToCrossWorkgroupINTEL' : 5934,
|
||||||
|
'OpCrossWorkgroupCastToPtrINTEL' : 5938,
|
||||||
|
'OpReadPipeBlockingINTEL' : 5946,
|
||||||
|
'OpWritePipeBlockingINTEL' : 5947,
|
||||||
|
'OpFPGARegINTEL' : 5949,
|
||||||
|
'OpRayQueryGetRayTMinKHR' : 6016,
|
||||||
|
'OpRayQueryGetRayFlagsKHR' : 6017,
|
||||||
|
'OpRayQueryGetIntersectionTKHR' : 6018,
|
||||||
|
'OpRayQueryGetIntersectionInstanceCustomIndexKHR' : 6019,
|
||||||
|
'OpRayQueryGetIntersectionInstanceIdKHR' : 6020,
|
||||||
|
'OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR' : 6021,
|
||||||
|
'OpRayQueryGetIntersectionGeometryIndexKHR' : 6022,
|
||||||
|
'OpRayQueryGetIntersectionPrimitiveIndexKHR' : 6023,
|
||||||
|
'OpRayQueryGetIntersectionBarycentricsKHR' : 6024,
|
||||||
|
'OpRayQueryGetIntersectionFrontFaceKHR' : 6025,
|
||||||
|
'OpRayQueryGetIntersectionCandidateAABBOpaqueKHR' : 6026,
|
||||||
|
'OpRayQueryGetIntersectionObjectRayDirectionKHR' : 6027,
|
||||||
|
'OpRayQueryGetIntersectionObjectRayOriginKHR' : 6028,
|
||||||
|
'OpRayQueryGetWorldRayDirectionKHR' : 6029,
|
||||||
|
'OpRayQueryGetWorldRayOriginKHR' : 6030,
|
||||||
|
'OpRayQueryGetIntersectionObjectToWorldKHR' : 6031,
|
||||||
|
'OpRayQueryGetIntersectionWorldToObjectKHR' : 6032,
|
||||||
|
'OpAtomicFAddEXT' : 6035,
|
||||||
|
'OpTypeBufferSurfaceINTEL' : 6086,
|
||||||
|
'OpTypeStructContinuedINTEL' : 6090,
|
||||||
|
'OpConstantCompositeContinuedINTEL' : 6091,
|
||||||
|
'OpSpecConstantCompositeContinuedINTEL' : 6092,
|
||||||
},
|
},
|
||||||
|
|
||||||
}
|
}
|
||||||
|
1709
externals/sirit/externals/SPIRV-Headers/include/spirv/unified1/spv.d
vendored
Executable file
1709
externals/sirit/externals/SPIRV-Headers/include/spirv/unified1/spv.d
vendored
Executable file
File diff suppressed because it is too large
Load Diff
242
externals/sirit/externals/SPIRV-Headers/tools/buildHeaders/bin/generate_language_headers.py
vendored
Executable file
242
externals/sirit/externals/SPIRV-Headers/tools/buildHeaders/bin/generate_language_headers.py
vendored
Executable file
@ -0,0 +1,242 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# Copyright (c) 2017-2020 Google LLC
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
# copy of this software and/or associated documentation files (the
|
||||||
|
# "Materials"), to deal in the Materials without restriction, including
|
||||||
|
# without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
# distribute, sublicense, and/or sell copies of the Materials, and to
|
||||||
|
# permit persons to whom the Materials are furnished to do so, subject to
|
||||||
|
# the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included
|
||||||
|
# in all copies or substantial portions of the Materials.
|
||||||
|
#
|
||||||
|
# MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS
|
||||||
|
# KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS
|
||||||
|
# SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT
|
||||||
|
# https://www.khronos.org/registry/
|
||||||
|
#
|
||||||
|
# THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||||
|
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||||
|
# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||||
|
# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||||
|
# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||||
|
# MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
||||||
|
|
||||||
|
"""Generates a C language headers from a SPIR-V JSON grammar file"""
|
||||||
|
|
||||||
|
import errno
|
||||||
|
import json
|
||||||
|
import os.path
|
||||||
|
import re
|
||||||
|
|
||||||
|
DEFAULT_COPYRIGHT="""Copyright (c) 2020 The Khronos Group Inc.
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
copy of this software and/or associated documentation files (the
|
||||||
|
"Materials"), to deal in the Materials without restriction, including
|
||||||
|
without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
distribute, sublicense, and/or sell copies of the Materials, and to
|
||||||
|
permit persons to whom the Materials are furnished to do so, subject to
|
||||||
|
the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included
|
||||||
|
in all copies or substantial portions of the Materials.
|
||||||
|
|
||||||
|
MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS
|
||||||
|
KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS
|
||||||
|
SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT
|
||||||
|
https://www.khronos.org/registry/
|
||||||
|
|
||||||
|
THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||||
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||||
|
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||||
|
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||||
|
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||||
|
MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
||||||
|
""".split('\n')
|
||||||
|
|
||||||
|
def make_path_to_file(f):
|
||||||
|
"""Makes all ancestor directories to the given file, if they
|
||||||
|
don't yet exist.
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
f: The file whose ancestor directories are to be created.
|
||||||
|
"""
|
||||||
|
dir = os.path.dirname(os.path.abspath(f))
|
||||||
|
try:
|
||||||
|
os.makedirs(dir)
|
||||||
|
except OSError as e:
|
||||||
|
if e.errno == errno.EEXIST and os.path.isdir(dir):
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
raise
|
||||||
|
|
||||||
|
class ExtInstGrammar:
|
||||||
|
"""The grammar for an extended instruction set"""
|
||||||
|
|
||||||
|
def __init__(self, name, copyright, instructions, operand_kinds, version = None, revision = None):
|
||||||
|
self.name = name
|
||||||
|
self.copyright = copyright
|
||||||
|
self.instructions = instructions
|
||||||
|
self.operand_kinds = operand_kinds
|
||||||
|
self.version = version
|
||||||
|
self.revision = revision
|
||||||
|
|
||||||
|
|
||||||
|
class LangGenerator:
|
||||||
|
"""A language-specific generator"""
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
self.upper_case_initial = re.compile('^[A-Z]')
|
||||||
|
pass
|
||||||
|
|
||||||
|
def comment_prefix(self):
|
||||||
|
return ""
|
||||||
|
|
||||||
|
def namespace_prefix(self):
|
||||||
|
return ""
|
||||||
|
|
||||||
|
def uses_guards(self):
|
||||||
|
return False
|
||||||
|
|
||||||
|
def cpp_guard_preamble(self):
|
||||||
|
return ""
|
||||||
|
|
||||||
|
def cpp_guard_postamble(self):
|
||||||
|
return ""
|
||||||
|
|
||||||
|
def enum_value(self, prefix, name, value):
|
||||||
|
if self.upper_case_initial.match(name):
|
||||||
|
use_name = name
|
||||||
|
else:
|
||||||
|
use_name = '_' + name
|
||||||
|
|
||||||
|
return " {}{} = {},".format(prefix, use_name, value)
|
||||||
|
|
||||||
|
def generate(self, grammar):
|
||||||
|
"""Returns a string that is the language-specific header for the given grammar"""
|
||||||
|
|
||||||
|
parts = []
|
||||||
|
if grammar.copyright:
|
||||||
|
parts.extend(["{}{}".format(self.comment_prefix(), f) for f in grammar.copyright])
|
||||||
|
parts.append('')
|
||||||
|
|
||||||
|
guard = 'SPIRV_UNIFIED1_{}_H_'.format(grammar.name)
|
||||||
|
if self.uses_guards:
|
||||||
|
parts.append('#ifndef {}'.format(guard))
|
||||||
|
parts.append('#define {}'.format(guard))
|
||||||
|
parts.append('')
|
||||||
|
|
||||||
|
parts.append(self.cpp_guard_preamble())
|
||||||
|
|
||||||
|
if grammar.version:
|
||||||
|
parts.append(self.const_definition(grammar.name, 'Version', grammar.version))
|
||||||
|
|
||||||
|
if grammar.revision is not None:
|
||||||
|
parts.append(self.const_definition(grammar.name, 'Revision', grammar.revision))
|
||||||
|
|
||||||
|
parts.append('')
|
||||||
|
|
||||||
|
if grammar.instructions:
|
||||||
|
parts.append(self.enum_prefix(grammar.name, 'Instructions'))
|
||||||
|
for inst in grammar.instructions:
|
||||||
|
parts.append(self.enum_value(grammar.name, inst['opname'], inst['opcode']))
|
||||||
|
parts.append(self.enum_end(grammar.name, 'Instructions'))
|
||||||
|
parts.append('')
|
||||||
|
|
||||||
|
if grammar.operand_kinds:
|
||||||
|
for kind in grammar.operand_kinds:
|
||||||
|
parts.append(self.enum_prefix(grammar.name, kind['kind']))
|
||||||
|
for e in kind['enumerants']:
|
||||||
|
parts.append(self.enum_value(grammar.name, e['enumerant'], e['value']))
|
||||||
|
parts.append(self.enum_end(grammar.name, kind['kind']))
|
||||||
|
parts.append('')
|
||||||
|
|
||||||
|
parts.append(self.cpp_guard_postamble())
|
||||||
|
|
||||||
|
if self.uses_guards:
|
||||||
|
parts.append('#endif // {}'.format(guard))
|
||||||
|
|
||||||
|
# Ensre the file ends in an end of line
|
||||||
|
parts.append('')
|
||||||
|
|
||||||
|
return '\n'.join(parts)
|
||||||
|
|
||||||
|
|
||||||
|
class CLikeGenerator(LangGenerator):
|
||||||
|
def uses_guards(self):
|
||||||
|
return True
|
||||||
|
|
||||||
|
def comment_prefix(self):
|
||||||
|
return "// "
|
||||||
|
|
||||||
|
def const_definition(self, prefix, var, value):
|
||||||
|
# Use an anonymous enum. Don't use a static const int variable because
|
||||||
|
# that can bloat binary size.
|
||||||
|
return 'enum {0}{1}{2}{3} = {4},{1}{2}{3}_BitWidthPadding = 0x7fffffff{5};'.format(
|
||||||
|
'{', '\n ', prefix, var, value, '\n}')
|
||||||
|
|
||||||
|
def enum_prefix(self, prefix, name):
|
||||||
|
return 'enum {}{} {}'.format(prefix, name, '{')
|
||||||
|
|
||||||
|
def enum_end(self, prefix, enum):
|
||||||
|
return ' {}{}Max = 0x7fffffff\n{};\n'.format(prefix, enum, '}')
|
||||||
|
|
||||||
|
def cpp_guard_preamble(self):
|
||||||
|
return '#ifdef __cplusplus\nextern "C" {\n#endif\n'
|
||||||
|
|
||||||
|
def cpp_guard_postamble(self):
|
||||||
|
return '#ifdef __cplusplus\n}\n#endif\n'
|
||||||
|
|
||||||
|
|
||||||
|
class CGenerator(CLikeGenerator):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
import argparse
|
||||||
|
parser = argparse.ArgumentParser(description='Generate language headers from a JSON grammar')
|
||||||
|
|
||||||
|
parser.add_argument('--extinst-name',
|
||||||
|
type=str, required=True,
|
||||||
|
help='The name to use in tokens')
|
||||||
|
parser.add_argument('--extinst-grammar', metavar='<path>',
|
||||||
|
type=str, required=True,
|
||||||
|
help='input JSON grammar file for extended instruction set')
|
||||||
|
parser.add_argument('--extinst-output-base', metavar='<path>',
|
||||||
|
type=str, required=True,
|
||||||
|
help='Basename of the language-specific output file.')
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
with open(args.extinst_grammar) as json_file:
|
||||||
|
grammar_json = json.loads(json_file.read())
|
||||||
|
if 'copyright' in grammar_json:
|
||||||
|
copyright = grammar_json['copyright']
|
||||||
|
else:
|
||||||
|
copyright = DEFAULT_COPYRIGHT
|
||||||
|
if 'version' in grammar_json:
|
||||||
|
version = grammar_json['version']
|
||||||
|
else:
|
||||||
|
version = 0
|
||||||
|
if 'operand_kinds' in grammar_json:
|
||||||
|
operand_kinds = grammar_json['operand_kinds']
|
||||||
|
else:
|
||||||
|
operand_kinds = []
|
||||||
|
|
||||||
|
grammar = ExtInstGrammar(name = args.extinst_name,
|
||||||
|
copyright = copyright,
|
||||||
|
instructions = grammar_json['instructions'],
|
||||||
|
operand_kinds = operand_kinds,
|
||||||
|
version = version,
|
||||||
|
revision = grammar_json['revision'])
|
||||||
|
make_path_to_file(args.extinst_output_base)
|
||||||
|
with open(args.extinst_output_base + '.h', 'w') as f:
|
||||||
|
f.write(CGenerator().generate(grammar))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
28
externals/sirit/externals/SPIRV-Headers/tools/buildHeaders/bin/makeExtinstHeaders.py
vendored
Executable file
28
externals/sirit/externals/SPIRV-Headers/tools/buildHeaders/bin/makeExtinstHeaders.py
vendored
Executable file
@ -0,0 +1,28 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
"""Generate C headers for certain extended instruction sets"""
|
||||||
|
|
||||||
|
import subprocess
|
||||||
|
import os
|
||||||
|
|
||||||
|
# Assume we are running from the tools/buildHeaders directory
|
||||||
|
os.chdir('../../include/spirv/unified1')
|
||||||
|
|
||||||
|
def mk_extinst(name, grammar_file):
|
||||||
|
"""Generate one C header from a grammar"""
|
||||||
|
script = '../../../tools/buildHeaders/bin/generate_language_headers.py'
|
||||||
|
subprocess.check_call(['python3',
|
||||||
|
script,
|
||||||
|
'--extinst-name=' + name,
|
||||||
|
'--extinst-grammar=' + grammar_file,
|
||||||
|
'--extinst-output-base=' + name])
|
||||||
|
subprocess.check_call(['dos2unix', name + '.h'])
|
||||||
|
|
||||||
|
|
||||||
|
mk_extinst('DebugInfo', 'extinst.debuginfo.grammar.json')
|
||||||
|
mk_extinst('OpenCLDebugInfo100', 'extinst.opencl.debuginfo.100.grammar.json')
|
||||||
|
mk_extinst('AMD_gcn_shader', 'extinst.spv-amd-gcn-shader.grammar.json')
|
||||||
|
mk_extinst('AMD_shader_ballot', 'extinst.spv-amd-shader-ballot.grammar.json')
|
||||||
|
mk_extinst('AMD_shader_explicit_vertex_parameter', 'extinst.spv-amd-shader-explicit-vertex-parameter.grammar.json')
|
||||||
|
mk_extinst('AMD_shader_trinary_minmax', 'extinst.spv-amd-shader-trinary-minmax.grammar.json')
|
||||||
|
mk_extinst('NonSemanticDebugPrintf', 'extinst.nonsemantic.debugprintf.grammar.json')
|
||||||
|
mk_extinst('NonSemanticClspvReflection', 'extinst.nonsemantic.clspvreflection.grammar.json')
|
@ -1,5 +1,7 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
python3 bin/makeExtinstHeaders.py
|
||||||
|
|
||||||
cd ../../include/spirv/unified1
|
cd ../../include/spirv/unified1
|
||||||
../../../tools/buildHeaders/build/install/bin/buildSpvHeaders -H spirv.core.grammar.json
|
../../../tools/buildHeaders/build/install/bin/buildSpvHeaders -H spirv.core.grammar.json
|
||||||
dos2unix spirv.*
|
dos2unix spirv.* SpirV.* spv.*
|
||||||
|
@ -1,19 +1,19 @@
|
|||||||
// Copyright (c) 2014-2018 The Khronos Group Inc.
|
// Copyright (c) 2014-2020 The Khronos Group Inc.
|
||||||
//
|
//
|
||||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
// of this software and/or associated documentation files (the "Materials"),
|
// of this software and/or associated documentation files (the "Materials"),
|
||||||
// to deal in the Materials without restriction, including without limitation
|
// to deal in the Materials without restriction, including without limitation
|
||||||
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
// and/or sell copies of the Materials, and to permit persons to whom the
|
// and/or sell copies of the Materials, and to permit persons to whom the
|
||||||
// Materials are furnished to do so, subject to the following conditions:
|
// Materials are furnished to do so, subject to the following conditions:
|
||||||
//
|
//
|
||||||
// The above copyright notice and this permission notice shall be included in
|
// The above copyright notice and this permission notice shall be included in
|
||||||
// all copies or substantial portions of the Materials.
|
// all copies or substantial portions of the Materials.
|
||||||
//
|
//
|
||||||
// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
|
// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
|
||||||
// STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
|
// STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
|
||||||
// HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/
|
// HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/
|
||||||
//
|
//
|
||||||
// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||||
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
@ -42,6 +42,7 @@
|
|||||||
#include <cctype>
|
#include <cctype>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <utility>
|
#include <utility>
|
||||||
|
#include <set>
|
||||||
|
|
||||||
#include "jsoncpp/dist/json/json.h"
|
#include "jsoncpp/dist/json/json.h"
|
||||||
|
|
||||||
@ -68,9 +69,9 @@ namespace {
|
|||||||
TPrinter();
|
TPrinter();
|
||||||
|
|
||||||
static const int DocMagicNumber = 0x07230203;
|
static const int DocMagicNumber = 0x07230203;
|
||||||
static const int DocVersion = 0x00010300;
|
static const int DocVersion = 0x00010500;
|
||||||
static const int DocRevision = 1;
|
static const int DocRevision = 4;
|
||||||
#define DocRevisionString "1"
|
#define DocRevisionString "4"
|
||||||
static const std::string DocCopyright;
|
static const std::string DocCopyright;
|
||||||
static const std::string DocComment1;
|
static const std::string DocComment1;
|
||||||
static const std::string DocComment2;
|
static const std::string DocComment2;
|
||||||
@ -97,7 +98,8 @@ namespace {
|
|||||||
virtual void printEpilogue(std::ostream&) const { }
|
virtual void printEpilogue(std::ostream&) const { }
|
||||||
virtual void printMeta(std::ostream&) const;
|
virtual void printMeta(std::ostream&) const;
|
||||||
virtual void printTypes(std::ostream&) const { }
|
virtual void printTypes(std::ostream&) const { }
|
||||||
|
virtual void printHasResultType(std::ostream&) const { };
|
||||||
|
|
||||||
virtual std::string escapeComment(const std::string& s) const;
|
virtual std::string escapeComment(const std::string& s) const;
|
||||||
|
|
||||||
// Default printComments() uses these comment strings
|
// Default printComments() uses these comment strings
|
||||||
@ -107,7 +109,7 @@ namespace {
|
|||||||
virtual std::string commentEOL(bool isLast) const { return ""; }
|
virtual std::string commentEOL(bool isLast) const { return ""; }
|
||||||
|
|
||||||
typedef std::pair<unsigned, std::string> valpair_t;
|
typedef std::pair<unsigned, std::string> valpair_t;
|
||||||
|
|
||||||
// for printing enum values
|
// for printing enum values
|
||||||
virtual std::string enumBeg(const std::string&, enumStyle_t) const { return ""; }
|
virtual std::string enumBeg(const std::string&, enumStyle_t) const { return ""; }
|
||||||
virtual std::string enumEnd(const std::string&, enumStyle_t, bool isLast = false) const {
|
virtual std::string enumEnd(const std::string&, enumStyle_t, bool isLast = false) const {
|
||||||
@ -126,7 +128,7 @@ namespace {
|
|||||||
const char* fmt, bool isLast = false) const {
|
const char* fmt, bool isLast = false) const {
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<valpair_t> getSortedVals(const Json::Value&) const;
|
std::vector<valpair_t> getSortedVals(const Json::Value&) const;
|
||||||
|
|
||||||
virtual std::string indent(int count = 1) const {
|
virtual std::string indent(int count = 1) const {
|
||||||
@ -149,7 +151,7 @@ namespace {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void addComment(Json::Value& node, const std::string& str);
|
void addComment(Json::Value& node, const std::string& str);
|
||||||
|
|
||||||
Json::Value spvRoot; // JSON SPIR-V data
|
Json::Value spvRoot; // JSON SPIR-V data
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -167,7 +169,7 @@ namespace {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const std::string TPrinter::DocCopyright =
|
const std::string TPrinter::DocCopyright =
|
||||||
"Copyright (c) 2014-2018 The Khronos Group Inc.\n"
|
"Copyright (c) 2014-2020 The Khronos Group Inc.\n"
|
||||||
"\n"
|
"\n"
|
||||||
"Permission is hereby granted, free of charge, to any person obtaining a copy\n"
|
"Permission is hereby granted, free of charge, to any person obtaining a copy\n"
|
||||||
"of this software and/or associated documentation files (the \"Materials\"),\n"
|
"of this software and/or associated documentation files (the \"Materials\"),\n"
|
||||||
@ -197,13 +199,16 @@ namespace {
|
|||||||
|
|
||||||
const std::string TPrinter::DocComment2 =
|
const std::string TPrinter::DocComment2 =
|
||||||
"Enumeration tokens for SPIR-V, in various styles:\n"
|
"Enumeration tokens for SPIR-V, in various styles:\n"
|
||||||
" C, C++, C++11, JSON, Lua, Python\n"
|
" C, C++, C++11, JSON, Lua, Python, C#, D\n"
|
||||||
"\n"
|
"\n"
|
||||||
"- C will have tokens with a \"Spv\" prefix, e.g.: SpvSourceLanguageGLSL\n"
|
"- C will have tokens with a \"Spv\" prefix, e.g.: SpvSourceLanguageGLSL\n"
|
||||||
"- C++ will have tokens in the \"spv\" name space, e.g.: spv::SourceLanguageGLSL\n"
|
"- C++ will have tokens in the \"spv\" name space, e.g.: spv::SourceLanguageGLSL\n"
|
||||||
"- C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL\n"
|
"- C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL\n"
|
||||||
"- Lua will use tables, e.g.: spv.SourceLanguage.GLSL\n"
|
"- Lua will use tables, e.g.: spv.SourceLanguage.GLSL\n"
|
||||||
"- Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL']\n"
|
"- Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL']\n"
|
||||||
|
"- C# will use enum classes in the Specification class located in the \"Spv\" namespace,\n"
|
||||||
|
" e.g.: Spv.Specification.SourceLanguage.GLSL\n"
|
||||||
|
"- D will have tokens under the \"spv\" module, e.g: spv.SourceLanguage.GLSL\n"
|
||||||
"\n"
|
"\n"
|
||||||
"Some tokens act like mask values, which can be OR'd together,\n"
|
"Some tokens act like mask values, which can be OR'd together,\n"
|
||||||
"while others are mutually exclusive. The mask-like ones have\n"
|
"while others are mutually exclusive. The mask-like ones have\n"
|
||||||
@ -290,7 +295,7 @@ namespace {
|
|||||||
{
|
{
|
||||||
const int commentCount = spvRoot["spv"]["meta"]["Comment"].size();
|
const int commentCount = spvRoot["spv"]["meta"]["Comment"].size();
|
||||||
int commentNum = 0;
|
int commentNum = 0;
|
||||||
|
|
||||||
for (const auto& comment : spvRoot["spv"]["meta"]["Comment"]) {
|
for (const auto& comment : spvRoot["spv"]["meta"]["Comment"]) {
|
||||||
out << commentBeg();
|
out << commentBeg();
|
||||||
|
|
||||||
@ -322,7 +327,7 @@ namespace {
|
|||||||
void TPrinter::printDefs(std::ostream& out) const
|
void TPrinter::printDefs(std::ostream& out) const
|
||||||
{
|
{
|
||||||
const Json::Value& enums = spvRoot["spv"]["enum"];
|
const Json::Value& enums = spvRoot["spv"]["enum"];
|
||||||
|
|
||||||
for (auto opClass = enums.begin(); opClass != enums.end(); ++opClass) {
|
for (auto opClass = enums.begin(); opClass != enums.end(); ++opClass) {
|
||||||
const bool isMask = (*opClass)["Type"].asString() == "Bit";
|
const bool isMask = (*opClass)["Type"].asString() == "Bit";
|
||||||
const auto opName = (*opClass)["Name"].asString();
|
const auto opName = (*opClass)["Name"].asString();
|
||||||
@ -337,13 +342,13 @@ namespace {
|
|||||||
out << enumFmt(opPrefix, valpair_t(0, "MaskNone"), enumNoMask);
|
out << enumFmt(opPrefix, valpair_t(0, "MaskNone"), enumNoMask);
|
||||||
|
|
||||||
const auto sorted = getSortedVals((*opClass)["Values"]);
|
const auto sorted = getSortedVals((*opClass)["Values"]);
|
||||||
|
|
||||||
std::string maxEnum = maxEnumFmt(opName, valpair_t(0x7FFFFFFF, "Max"), enumHex);
|
std::string maxEnum = maxEnumFmt(opName, valpair_t(0x7FFFFFFF, "Max"), enumHex);
|
||||||
|
|
||||||
bool printMax = (style != enumMask && maxEnum.size() > 0);
|
bool printMax = (style != enumMask && maxEnum.size() > 0);
|
||||||
|
|
||||||
for (const auto& v : sorted)
|
for (const auto& v : sorted)
|
||||||
out << enumFmt(opPrefix, v, style, !printMax && v.first == sorted.back().first);
|
out << enumFmt(opPrefix, v, style, !printMax && v.second == sorted.back().second);
|
||||||
|
|
||||||
if (printMax)
|
if (printMax)
|
||||||
out << maxEnum;
|
out << maxEnum;
|
||||||
@ -361,6 +366,7 @@ namespace {
|
|||||||
printTypes(out);
|
printTypes(out);
|
||||||
printMeta(out);
|
printMeta(out);
|
||||||
printDefs(out);
|
printDefs(out);
|
||||||
|
printHasResultType(out);
|
||||||
printEpilogue(out);
|
printEpilogue(out);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -390,7 +396,7 @@ namespace {
|
|||||||
}
|
}
|
||||||
return newStr;
|
return newStr;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string fmtConstInt(unsigned val, const std::string& name,
|
std::string fmtConstInt(unsigned val, const std::string& name,
|
||||||
const char* fmt, bool isLast) const override {
|
const char* fmt, bool isLast) const override {
|
||||||
return indent(3) + '"' + name + "\": " + fmtNum("%d", val) + (isLast ? "\n" : ",\n");
|
return indent(3) + '"' + name + "\": " + fmtNum("%d", val) + (isLast ? "\n" : ",\n");
|
||||||
@ -475,7 +481,7 @@ namespace {
|
|||||||
}
|
}
|
||||||
|
|
||||||
virtual void printEpilogue(std::ostream& out) const override {
|
virtual void printEpilogue(std::ostream& out) const override {
|
||||||
out << "#endif // #ifndef spirv_" << headerGuardSuffix() << std::endl;
|
out << "#endif" << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void printTypes(std::ostream& out) const override {
|
virtual void printTypes(std::ostream& out) const override {
|
||||||
@ -488,9 +494,48 @@ namespace {
|
|||||||
return std::string("static const unsigned int ") + pre() + name +
|
return std::string("static const unsigned int ") + pre() + name +
|
||||||
" = " + fmtNum(fmt, val) + (isLast ? ";\n\n" : ";\n");
|
" = " + fmtNum(fmt, val) + (isLast ? ";\n\n" : ";\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual std::string pre() const { return ""; } // C name prefix
|
virtual std::string pre() const { return ""; } // C name prefix
|
||||||
virtual std::string headerGuardSuffix() const = 0;
|
virtual std::string headerGuardSuffix() const = 0;
|
||||||
|
|
||||||
|
virtual std::string fmtEnumUse(const std::string& opPrefix, const std::string& name) const { return pre() + name; }
|
||||||
|
|
||||||
|
virtual void printHasResultType(std::ostream& out) const
|
||||||
|
{
|
||||||
|
const Json::Value& enums = spvRoot["spv"]["enum"];
|
||||||
|
|
||||||
|
std::set<unsigned> seenValues;
|
||||||
|
|
||||||
|
for (auto opClass = enums.begin(); opClass != enums.end(); ++opClass) {
|
||||||
|
const auto opName = (*opClass)["Name"].asString();
|
||||||
|
if (opName != "Op") {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
out << "#ifdef SPV_ENABLE_UTILITY_CODE" << std::endl;
|
||||||
|
out << "inline void " << pre() << "HasResultAndType(" << pre() << opName << " opcode, bool *hasResult, bool *hasResultType) {" << std::endl;
|
||||||
|
out << " *hasResult = *hasResultType = false;" << std::endl;
|
||||||
|
out << " switch (opcode) {" << std::endl;
|
||||||
|
out << " default: /* unknown opcode */ break;" << std::endl;
|
||||||
|
|
||||||
|
for (auto& inst : spv::InstructionDesc) {
|
||||||
|
|
||||||
|
// Filter out duplicate enum values, which would break the switch statement.
|
||||||
|
// These are probably just extension enums promoted to core.
|
||||||
|
if (seenValues.find(inst.value) != seenValues.end()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
seenValues.insert(inst.value);
|
||||||
|
|
||||||
|
std::string name = inst.name;
|
||||||
|
out << " case " << fmtEnumUse("Op", name) << ": *hasResult = " << (inst.hasResult() ? "true" : "false") << "; *hasResultType = " << (inst.hasType() ? "true" : "false") << "; break;" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
out << " }" << std::endl;
|
||||||
|
out << "}" << std::endl;
|
||||||
|
out << "#endif /* SPV_ENABLE_UTILITY_CODE */" << std::endl << std::endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// C printer
|
// C printer
|
||||||
@ -542,19 +587,19 @@ namespace {
|
|||||||
|
|
||||||
if (isMask) {
|
if (isMask) {
|
||||||
const auto typeName = opName + styleStr(enumMask);
|
const auto typeName = opName + styleStr(enumMask);
|
||||||
|
|
||||||
out << "inline " + typeName + " operator|(" + typeName + " a, " + typeName + " b) { return " +
|
out << "inline " + typeName + " operator|(" + typeName + " a, " + typeName + " b) { return " +
|
||||||
typeName + "(unsigned(a) | unsigned(b)); }\n";
|
typeName + "(unsigned(a) | unsigned(b)); }\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
out << "\n} // end namespace spv\n\n";
|
out << "\n} // end namespace spv\n\n";
|
||||||
TPrinterCBase::printEpilogue(out);
|
out << "#endif // #ifndef spirv_" << headerGuardSuffix() << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string commentBOL() const override { return "// "; }
|
std::string commentBOL() const override { return "// "; }
|
||||||
|
|
||||||
|
|
||||||
virtual std::string enumBeg(const std::string& s, enumStyle_t style) const override {
|
virtual std::string enumBeg(const std::string& s, enumStyle_t style) const override {
|
||||||
return std::string("enum ") + s + styleStr(style) + " {\n";
|
return std::string("enum ") + s + styleStr(style) + " {\n";
|
||||||
}
|
}
|
||||||
@ -597,6 +642,9 @@ namespace {
|
|||||||
return enumFmt(s, v, style, true);
|
return enumFmt(s, v, style, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Add type prefix for scoped enum
|
||||||
|
virtual std::string fmtEnumUse(const std::string& opPrefix, const std::string& name) const { return opPrefix + "::" + name; }
|
||||||
|
|
||||||
std::string headerGuardSuffix() const override { return "HPP"; }
|
std::string headerGuardSuffix() const override { return "HPP"; }
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -658,6 +706,76 @@ namespace {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// C# printer
|
||||||
|
class TPrinterCSharp final : public TPrinter {
|
||||||
|
private:
|
||||||
|
std::string commentBOL() const override { return "// "; }
|
||||||
|
|
||||||
|
void printPrologue(std::ostream& out) const override {
|
||||||
|
out << "namespace Spv\n{\n\n";
|
||||||
|
out << indent() << "public static class Specification\n";
|
||||||
|
out << indent() << "{\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
void printEpilogue(std::ostream& out) const override {
|
||||||
|
out << indent() << "}\n";
|
||||||
|
out << "}\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string enumBeg(const std::string& s, enumStyle_t style) const override {
|
||||||
|
return indent(2) + "public enum " + s + styleStr(style) + "\n" + indent(2) + "{\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string enumEnd(const std::string& s, enumStyle_t style, bool isLast) const override {
|
||||||
|
return indent(2) + "}" + + (isLast ? "\n" : "\n\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string enumFmt(const std::string& s, const valpair_t& v,
|
||||||
|
enumStyle_t style, bool isLast) const override {
|
||||||
|
return indent(3) + prependIfDigit(s, v.second) + " = " + fmtStyleVal(v.first, style) + ",\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string fmtConstInt(unsigned val, const std::string& name,
|
||||||
|
const char* fmt, bool isLast) const override {
|
||||||
|
return indent(2) + std::string("public const uint ") + name +
|
||||||
|
" = " + fmtNum(fmt, val) + (isLast ? ";\n\n" : ";\n");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// D printer
|
||||||
|
class TPrinterD final : public TPrinter {
|
||||||
|
private:
|
||||||
|
std::string commentBeg() const override { return "/+\n"; }
|
||||||
|
std::string commentBOL() const override { return " + "; }
|
||||||
|
std::string commentEnd(bool isLast) const override { return " +/\n"; }
|
||||||
|
|
||||||
|
void printPrologue(std::ostream& out) const override {
|
||||||
|
out << "module spv;\n\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
void printEpilogue(std::ostream& out) const override {
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string enumBeg(const std::string& s, enumStyle_t style) const override {
|
||||||
|
return "enum " + s + styleStr(style) + " : uint\n{\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string enumEnd(const std::string& s, enumStyle_t style, bool isLast) const override {
|
||||||
|
return std::string("}\n\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string enumFmt(const std::string& s, const valpair_t& v,
|
||||||
|
enumStyle_t style, bool isLast) const override {
|
||||||
|
return indent() + prependIfDigit("_", v.second) + " = " + fmtStyleVal(v.first, style) + ",\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string fmtConstInt(unsigned val, const std::string& name,
|
||||||
|
const char* fmt, bool isLast) const override {
|
||||||
|
return std::string("enum uint ") + name +
|
||||||
|
" = " + fmtNum(fmt, val) + (isLast ? ";\n\n" : ";\n");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
namespace spv {
|
namespace spv {
|
||||||
@ -672,6 +790,8 @@ namespace spv {
|
|||||||
langInfo.push_back(std::make_pair(ELangJSON, "spirv.json"));
|
langInfo.push_back(std::make_pair(ELangJSON, "spirv.json"));
|
||||||
langInfo.push_back(std::make_pair(ELangLua, "spirv.lua"));
|
langInfo.push_back(std::make_pair(ELangLua, "spirv.lua"));
|
||||||
langInfo.push_back(std::make_pair(ELangPython, "spirv.py"));
|
langInfo.push_back(std::make_pair(ELangPython, "spirv.py"));
|
||||||
|
langInfo.push_back(std::make_pair(ELangCSharp, "spirv.cs"));
|
||||||
|
langInfo.push_back(std::make_pair(ELangD, "spv.d"));
|
||||||
|
|
||||||
for (const auto& lang : langInfo) {
|
for (const auto& lang : langInfo) {
|
||||||
std::ofstream out(lang.second, std::ios::out);
|
std::ofstream out(lang.second, std::ios::out);
|
||||||
@ -697,6 +817,8 @@ namespace spv {
|
|||||||
case ELangJSON: p = TPrinterPtr(new TPrinterJSON); break;
|
case ELangJSON: p = TPrinterPtr(new TPrinterJSON); break;
|
||||||
case ELangLua: p = TPrinterPtr(new TPrinterLua); break;
|
case ELangLua: p = TPrinterPtr(new TPrinterLua); break;
|
||||||
case ELangPython: p = TPrinterPtr(new TPrinterPython); break;
|
case ELangPython: p = TPrinterPtr(new TPrinterPython); break;
|
||||||
|
case ELangCSharp: p = TPrinterPtr(new TPrinterCSharp); break;
|
||||||
|
case ELangD: p = TPrinterPtr(new TPrinterD); break;
|
||||||
case ELangAll: PrintAllHeaders(); break;
|
case ELangAll: PrintAllHeaders(); break;
|
||||||
default:
|
default:
|
||||||
std::cerr << "Unknown language." << std::endl;
|
std::cerr << "Unknown language." << std::endl;
|
||||||
|
@ -1,19 +1,19 @@
|
|||||||
// Copyright (c) 2014-2018 The Khronos Group Inc.
|
// Copyright (c) 2014-2019 The Khronos Group Inc.
|
||||||
//
|
//
|
||||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
// of this software and/or associated documentation files (the "Materials"),
|
// of this software and/or associated documentation files (the "Materials"),
|
||||||
// to deal in the Materials without restriction, including without limitation
|
// to deal in the Materials without restriction, including without limitation
|
||||||
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
// and/or sell copies of the Materials, and to permit persons to whom the
|
// and/or sell copies of the Materials, and to permit persons to whom the
|
||||||
// Materials are furnished to do so, subject to the following conditions:
|
// Materials are furnished to do so, subject to the following conditions:
|
||||||
//
|
//
|
||||||
// The above copyright notice and this permission notice shall be included in
|
// The above copyright notice and this permission notice shall be included in
|
||||||
// all copies or substantial portions of the Materials.
|
// all copies or substantial portions of the Materials.
|
||||||
//
|
//
|
||||||
// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
|
// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
|
||||||
// STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
|
// STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
|
||||||
// HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/
|
// HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/
|
||||||
//
|
//
|
||||||
// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||||
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
@ -41,6 +41,8 @@ namespace spv {
|
|||||||
ELangJSON, // JSON
|
ELangJSON, // JSON
|
||||||
ELangLua, // Lua
|
ELangLua, // Lua
|
||||||
ELangPython, // Python
|
ELangPython, // Python
|
||||||
|
ELangCSharp, // CSharp
|
||||||
|
ELangD, // D
|
||||||
|
|
||||||
ELangAll, // print headers in all languages to files
|
ELangAll, // print headers in all languages to files
|
||||||
};
|
};
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2014-2018 The Khronos Group Inc.
|
// Copyright (c) 2014-2020 The Khronos Group Inc.
|
||||||
//
|
//
|
||||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
// of this software and/or associated documentation files (the "Materials"),
|
// of this software and/or associated documentation files (the "Materials"),
|
||||||
@ -25,8 +25,10 @@
|
|||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
#include <cstdlib>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <unordered_map>
|
#include <unordered_map>
|
||||||
|
#include <unordered_set>
|
||||||
#include <utility>
|
#include <utility>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
|
||||||
@ -40,6 +42,10 @@ namespace spv {
|
|||||||
// parameterization information.
|
// parameterization information.
|
||||||
InstructionValues InstructionDesc;
|
InstructionValues InstructionDesc;
|
||||||
|
|
||||||
|
// The ordered list (in printing order) of printing classes
|
||||||
|
// (specification subsections).
|
||||||
|
PrintingClasses InstructionPrintingClasses;
|
||||||
|
|
||||||
// Note: There is no entry for OperandOpcode. Use InstructionDesc instead.
|
// Note: There is no entry for OperandOpcode. Use InstructionDesc instead.
|
||||||
EnumDefinition OperandClassParams[OperandOpcode];
|
EnumDefinition OperandClassParams[OperandOpcode];
|
||||||
EnumValues SourceLanguageParams;
|
EnumValues SourceLanguageParams;
|
||||||
@ -56,6 +62,8 @@ EnumValues ImageChannelDataTypeParams;
|
|||||||
EnumValues ImageOperandsParams;
|
EnumValues ImageOperandsParams;
|
||||||
EnumValues FPFastMathParams;
|
EnumValues FPFastMathParams;
|
||||||
EnumValues FPRoundingModeParams;
|
EnumValues FPRoundingModeParams;
|
||||||
|
EnumValues FPDenormModeParams;
|
||||||
|
EnumValues FPOperationModeParams;
|
||||||
EnumValues LinkageTypeParams;
|
EnumValues LinkageTypeParams;
|
||||||
EnumValues DecorationParams;
|
EnumValues DecorationParams;
|
||||||
EnumValues BuiltInParams;
|
EnumValues BuiltInParams;
|
||||||
@ -72,6 +80,11 @@ EnumValues ScopeParams;
|
|||||||
EnumValues KernelEnqueueFlagsParams;
|
EnumValues KernelEnqueueFlagsParams;
|
||||||
EnumValues KernelProfilingInfoParams;
|
EnumValues KernelProfilingInfoParams;
|
||||||
EnumValues CapabilityParams;
|
EnumValues CapabilityParams;
|
||||||
|
EnumValues RayFlagsParams;
|
||||||
|
EnumValues RayQueryIntersectionParams;
|
||||||
|
EnumValues RayQueryCommittedIntersectionTypeParams;
|
||||||
|
EnumValues RayQueryCandidateIntersectionTypeParams;
|
||||||
|
EnumValues FragmentShadingRateParams;
|
||||||
|
|
||||||
std::pair<bool, std::string> ReadFile(const std::string& path)
|
std::pair<bool, std::string> ReadFile(const std::string& path)
|
||||||
{
|
{
|
||||||
@ -119,8 +132,7 @@ ClassOptionality ToOperandClassAndOptionality(const std::string& operandKind, co
|
|||||||
else if (quantifier == "?")
|
else if (quantifier == "?")
|
||||||
return {OperandLiteralString, true};
|
return {OperandLiteralString, true};
|
||||||
else {
|
else {
|
||||||
assert(0 && "this case should not exist");
|
return {OperandOptionalLiteralStrings, false};
|
||||||
return {OperandNone, false};
|
|
||||||
}
|
}
|
||||||
} else if (operandKind == "PairLiteralIntegerIdRef") {
|
} else if (operandKind == "PairLiteralIntegerIdRef") {
|
||||||
// Used by OpSwitch in the grammar
|
// Used by OpSwitch in the grammar
|
||||||
@ -142,7 +154,7 @@ ClassOptionality ToOperandClassAndOptionality(const std::string& operandKind, co
|
|||||||
} else if (operandKind == "LiteralSpecConstantOpInteger") {
|
} else if (operandKind == "LiteralSpecConstantOpInteger") {
|
||||||
type = OperandLiteralNumber;
|
type = OperandLiteralNumber;
|
||||||
} else if (operandKind == "LiteralContextDependentNumber") {
|
} else if (operandKind == "LiteralContextDependentNumber") {
|
||||||
type = OperandVariableLiterals;
|
type = OperandAnySizeLiteralNumber;
|
||||||
} else if (operandKind == "SourceLanguage") {
|
} else if (operandKind == "SourceLanguage") {
|
||||||
type = OperandSource;
|
type = OperandSource;
|
||||||
} else if (operandKind == "ExecutionModel") {
|
} else if (operandKind == "ExecutionModel") {
|
||||||
@ -169,6 +181,10 @@ ClassOptionality ToOperandClassAndOptionality(const std::string& operandKind, co
|
|||||||
type = OperandImageChannelDataType;
|
type = OperandImageChannelDataType;
|
||||||
} else if (operandKind == "FPRoundingMode") {
|
} else if (operandKind == "FPRoundingMode") {
|
||||||
type = OperandFPRoundingMode;
|
type = OperandFPRoundingMode;
|
||||||
|
} else if (operandKind == "FPDenormMode") {
|
||||||
|
type = OperandFPDenormMode;
|
||||||
|
} else if (operandKind == "FPOperationMode") {
|
||||||
|
type = OperandFPOperationMode;
|
||||||
} else if (operandKind == "LinkageType") {
|
} else if (operandKind == "LinkageType") {
|
||||||
type = OperandLinkageType;
|
type = OperandLinkageType;
|
||||||
} else if (operandKind == "AccessQualifier") {
|
} else if (operandKind == "AccessQualifier") {
|
||||||
@ -198,7 +214,17 @@ ClassOptionality ToOperandClassAndOptionality(const std::string& operandKind, co
|
|||||||
} else if (operandKind == "FunctionControl") {
|
} else if (operandKind == "FunctionControl") {
|
||||||
type = OperandFunction;
|
type = OperandFunction;
|
||||||
} else if (operandKind == "MemoryAccess") {
|
} else if (operandKind == "MemoryAccess") {
|
||||||
type = OperandMemoryAccess;
|
type = OperandMemoryOperands;
|
||||||
|
} else if (operandKind == "RayFlags") {
|
||||||
|
type = OperandRayFlags;
|
||||||
|
} else if (operandKind == "RayQueryIntersection") {
|
||||||
|
type = OperandRayQueryIntersection;
|
||||||
|
} else if (operandKind == "RayQueryCommittedIntersectionType") {
|
||||||
|
type = OperandRayQueryCommittedIntersectionType;
|
||||||
|
} else if (operandKind == "RayQueryCandidateIntersectionType") {
|
||||||
|
type = OperandRayQueryCandidateIntersectionType;
|
||||||
|
} else if (operandKind == "FragmentShadingRate") {
|
||||||
|
type = OperandFragmentShadingRate;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (type == OperandNone) {
|
if (type == OperandNone) {
|
||||||
@ -230,7 +256,7 @@ unsigned int NumberStringToBit(const std::string& str)
|
|||||||
return bit;
|
return bit;
|
||||||
}
|
}
|
||||||
|
|
||||||
void jsonToSpirv(const std::string& jsonPath)
|
void jsonToSpirv(const std::string& jsonPath, bool buildingHeaders)
|
||||||
{
|
{
|
||||||
// only do this once.
|
// only do this once.
|
||||||
static bool initialized = false;
|
static bool initialized = false;
|
||||||
@ -285,12 +311,55 @@ void jsonToSpirv(const std::string& jsonPath)
|
|||||||
return result;
|
return result;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// set up the printing classes
|
||||||
|
std::unordered_set<std::string> tags; // short-lived local for error checking below
|
||||||
|
const Json::Value printingClasses = root["instruction_printing_class"];
|
||||||
|
for (const auto& printingClass : printingClasses) {
|
||||||
|
if (printingClass["tag"].asString().size() > 0)
|
||||||
|
tags.insert(printingClass["tag"].asString()); // just for error checking
|
||||||
|
else
|
||||||
|
std::cerr << "Error: each instruction_printing_class requires a non-empty \"tag\"" << std::endl;
|
||||||
|
if (buildingHeaders || printingClass["tag"].asString() != "@exclude") {
|
||||||
|
InstructionPrintingClasses.push_back({printingClass["tag"].asString(),
|
||||||
|
printingClass["heading"].asString()});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// process the instructions
|
||||||
const Json::Value insts = root["instructions"];
|
const Json::Value insts = root["instructions"];
|
||||||
|
unsigned maxOpcode = 0;
|
||||||
|
bool firstOpcode = true;
|
||||||
for (const auto& inst : insts) {
|
for (const auto& inst : insts) {
|
||||||
const unsigned int opcode = inst["opcode"].asUInt();
|
const auto printingClass = inst["class"].asString();
|
||||||
|
if (printingClass.size() == 0) {
|
||||||
|
std::cerr << "Error: " << inst["opname"].asString()
|
||||||
|
<< " requires a non-empty printing \"class\" tag" << std::endl;
|
||||||
|
}
|
||||||
|
if (!buildingHeaders && printingClass == "@exclude")
|
||||||
|
continue;
|
||||||
|
if (tags.find(printingClass) == tags.end()) {
|
||||||
|
std::cerr << "Error: " << inst["opname"].asString()
|
||||||
|
<< " requires a \"class\" declared as a \"tag\" in \"instruction printing_class\""
|
||||||
|
<< std::endl;
|
||||||
|
}
|
||||||
|
const auto opcode = inst["opcode"].asUInt();
|
||||||
const std::string name = inst["opname"].asString();
|
const std::string name = inst["opname"].asString();
|
||||||
|
if (firstOpcode) {
|
||||||
|
maxOpcode = opcode;
|
||||||
|
firstOpcode = false;
|
||||||
|
} else {
|
||||||
|
if (maxOpcode > opcode) {
|
||||||
|
std::cerr << "Error: " << name
|
||||||
|
<< " is out of order. It follows the instruction with opcode " << maxOpcode
|
||||||
|
<< std::endl;
|
||||||
|
std::exit(1);
|
||||||
|
} else {
|
||||||
|
maxOpcode = opcode;
|
||||||
|
}
|
||||||
|
}
|
||||||
EnumCaps caps = getCaps(inst);
|
EnumCaps caps = getCaps(inst);
|
||||||
std::string version = inst["version"].asString();
|
std::string version = inst["version"].asString();
|
||||||
|
std::string lastVersion = inst["lastVersion"].asString();
|
||||||
Extensions exts = getExts(inst);
|
Extensions exts = getExts(inst);
|
||||||
OperandParameters operands;
|
OperandParameters operands;
|
||||||
bool defResultId = false;
|
bool defResultId = false;
|
||||||
@ -306,9 +375,9 @@ void jsonToSpirv(const std::string& jsonPath)
|
|||||||
}
|
}
|
||||||
InstructionDesc.emplace_back(
|
InstructionDesc.emplace_back(
|
||||||
std::move(EnumValue(opcode, name,
|
std::move(EnumValue(opcode, name,
|
||||||
std::move(caps), std::move(version), std::move(exts),
|
std::move(caps), std::move(version), std::move(lastVersion), std::move(exts),
|
||||||
std::move(operands))),
|
std::move(operands))),
|
||||||
defTypeId, defResultId);
|
printingClass, defTypeId, defResultId);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Specific additional context-dependent operands
|
// Specific additional context-dependent operands
|
||||||
@ -331,14 +400,30 @@ void jsonToSpirv(const std::string& jsonPath)
|
|||||||
return result;
|
return result;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
unsigned maxValue = 0;
|
||||||
|
bool firstValue = true;
|
||||||
for (const auto& enumerant : source["enumerants"]) {
|
for (const auto& enumerant : source["enumerants"]) {
|
||||||
unsigned value;
|
unsigned value;
|
||||||
bool skip_zero_in_bitfield;
|
bool skip_zero_in_bitfield;
|
||||||
std::tie(value, skip_zero_in_bitfield) = getValue(enumerant);
|
std::tie(value, skip_zero_in_bitfield) = getValue(enumerant);
|
||||||
if (skip_zero_in_bitfield)
|
if (skip_zero_in_bitfield)
|
||||||
continue;
|
continue;
|
||||||
|
if (firstValue) {
|
||||||
|
maxValue = value;
|
||||||
|
firstValue = false;
|
||||||
|
} else {
|
||||||
|
if (maxValue > value) {
|
||||||
|
std::cerr << "Error: " << source["kind"] << " enumerant " << enumerant["enumerant"]
|
||||||
|
<< " is out of order. It has value " << value
|
||||||
|
<< " but follows the enumerant with value " << maxValue << std::endl;
|
||||||
|
std::exit(1);
|
||||||
|
} else {
|
||||||
|
maxValue = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
EnumCaps caps(getCaps(enumerant));
|
EnumCaps caps(getCaps(enumerant));
|
||||||
std::string version = enumerant["version"].asString();
|
std::string version = enumerant["version"].asString();
|
||||||
|
std::string lastVersion = enumerant["lastVersion"].asString();
|
||||||
Extensions exts(getExts(enumerant));
|
Extensions exts(getExts(enumerant));
|
||||||
OperandParameters params;
|
OperandParameters params;
|
||||||
const Json::Value& paramsJson = enumerant["parameters"];
|
const Json::Value& paramsJson = enumerant["parameters"];
|
||||||
@ -353,7 +438,7 @@ void jsonToSpirv(const std::string& jsonPath)
|
|||||||
}
|
}
|
||||||
dest->emplace_back(
|
dest->emplace_back(
|
||||||
value, enumerant["enumerant"].asString(),
|
value, enumerant["enumerant"].asString(),
|
||||||
std::move(caps), std::move(version), std::move(exts), std::move(params));
|
std::move(caps), std::move(version), std::move(lastVersion), std::move(exts), std::move(params));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -404,6 +489,10 @@ void jsonToSpirv(const std::string& jsonPath)
|
|||||||
establishOperandClass(enumName, OperandFPFastMath, &FPFastMathParams, operandEnum, category);
|
establishOperandClass(enumName, OperandFPFastMath, &FPFastMathParams, operandEnum, category);
|
||||||
} else if (enumName == "FPRoundingMode") {
|
} else if (enumName == "FPRoundingMode") {
|
||||||
establishOperandClass(enumName, OperandFPRoundingMode, &FPRoundingModeParams, operandEnum, category);
|
establishOperandClass(enumName, OperandFPRoundingMode, &FPRoundingModeParams, operandEnum, category);
|
||||||
|
} else if (enumName == "FPDenormMode") {
|
||||||
|
establishOperandClass(enumName, OperandFPDenormMode, &FPDenormModeParams, operandEnum, category);
|
||||||
|
} else if (enumName == "FPOperationMode") {
|
||||||
|
establishOperandClass(enumName, OperandFPOperationMode, &FPOperationModeParams, operandEnum, category);
|
||||||
} else if (enumName == "LinkageType") {
|
} else if (enumName == "LinkageType") {
|
||||||
establishOperandClass(enumName, OperandLinkageType, &LinkageTypeParams, operandEnum, category);
|
establishOperandClass(enumName, OperandLinkageType, &LinkageTypeParams, operandEnum, category);
|
||||||
} else if (enumName == "FunctionParameterAttribute") {
|
} else if (enumName == "FunctionParameterAttribute") {
|
||||||
@ -421,7 +510,7 @@ void jsonToSpirv(const std::string& jsonPath)
|
|||||||
} else if (enumName == "Dim") {
|
} else if (enumName == "Dim") {
|
||||||
establishOperandClass(enumName, OperandDimensionality, &DimensionalityParams, operandEnum, category);
|
establishOperandClass(enumName, OperandDimensionality, &DimensionalityParams, operandEnum, category);
|
||||||
} else if (enumName == "MemoryAccess") {
|
} else if (enumName == "MemoryAccess") {
|
||||||
establishOperandClass(enumName, OperandMemoryAccess, &MemoryAccessParams, operandEnum, category);
|
establishOperandClass(enumName, OperandMemoryOperands, &MemoryAccessParams, operandEnum, category);
|
||||||
} else if (enumName == "Scope") {
|
} else if (enumName == "Scope") {
|
||||||
establishOperandClass(enumName, OperandScope, &ScopeParams, operandEnum, category);
|
establishOperandClass(enumName, OperandScope, &ScopeParams, operandEnum, category);
|
||||||
} else if (enumName == "GroupOperation") {
|
} else if (enumName == "GroupOperation") {
|
||||||
@ -430,6 +519,16 @@ void jsonToSpirv(const std::string& jsonPath)
|
|||||||
establishOperandClass(enumName, OperandKernelEnqueueFlags, &KernelEnqueueFlagsParams, operandEnum, category);
|
establishOperandClass(enumName, OperandKernelEnqueueFlags, &KernelEnqueueFlagsParams, operandEnum, category);
|
||||||
} else if (enumName == "KernelProfilingInfo") {
|
} else if (enumName == "KernelProfilingInfo") {
|
||||||
establishOperandClass(enumName, OperandKernelProfilingInfo, &KernelProfilingInfoParams, operandEnum, category);
|
establishOperandClass(enumName, OperandKernelProfilingInfo, &KernelProfilingInfoParams, operandEnum, category);
|
||||||
|
} else if (enumName == "RayFlags") {
|
||||||
|
establishOperandClass(enumName, OperandRayFlags, &RayFlagsParams, operandEnum, category);
|
||||||
|
} else if (enumName == "RayQueryIntersection") {
|
||||||
|
establishOperandClass(enumName, OperandRayQueryIntersection, &RayQueryIntersectionParams, operandEnum, category);
|
||||||
|
} else if (enumName == "RayQueryCommittedIntersectionType") {
|
||||||
|
establishOperandClass(enumName, OperandRayQueryCommittedIntersectionType, &RayQueryCommittedIntersectionTypeParams, operandEnum, category);
|
||||||
|
} else if (enumName == "RayQueryCandidateIntersectionType") {
|
||||||
|
establishOperandClass(enumName, OperandRayQueryCandidateIntersectionType, &RayQueryCandidateIntersectionTypeParams, operandEnum, category);
|
||||||
|
} else if (enumName == "FragmentShadingRate") {
|
||||||
|
establishOperandClass(enumName, OperandFragmentShadingRate, &FragmentShadingRateParams, operandEnum, category);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2014-2018 The Khronos Group Inc.
|
// Copyright (c) 2014-2020 The Khronos Group Inc.
|
||||||
//
|
//
|
||||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
// of this software and/or associated documentation files (the "Materials"),
|
// of this software and/or associated documentation files (the "Materials"),
|
||||||
@ -38,18 +38,22 @@ namespace spv {
|
|||||||
std::pair<bool, std::string> ReadFile(const std::string& path);
|
std::pair<bool, std::string> ReadFile(const std::string& path);
|
||||||
|
|
||||||
// Fill in all the parameters
|
// Fill in all the parameters
|
||||||
void jsonToSpirv(const std::string& jsonPath);
|
void jsonToSpirv(const std::string& jsonPath, bool buildingHeaders);
|
||||||
|
|
||||||
// For parameterizing operands.
|
// For parameterizing operands.
|
||||||
|
// The ordering here affects the printing order in the SPIR-V specification.
|
||||||
|
// Please add new operand classes at the end.
|
||||||
enum OperandClass {
|
enum OperandClass {
|
||||||
OperandNone,
|
OperandNone,
|
||||||
OperandId,
|
OperandId,
|
||||||
OperandVariableIds,
|
OperandVariableIds,
|
||||||
OperandOptionalLiteral,
|
OperandOptionalLiteral,
|
||||||
OperandOptionalLiteralString,
|
OperandOptionalLiteralString,
|
||||||
|
OperandOptionalLiteralStrings,
|
||||||
OperandVariableLiterals,
|
OperandVariableLiterals,
|
||||||
OperandVariableIdLiteral,
|
OperandVariableIdLiteral,
|
||||||
OperandVariableLiteralId,
|
OperandVariableLiteralId,
|
||||||
|
OperandAnySizeLiteralNumber,
|
||||||
OperandLiteralNumber,
|
OperandLiteralNumber,
|
||||||
OperandLiteralString,
|
OperandLiteralString,
|
||||||
OperandSource,
|
OperandSource,
|
||||||
@ -76,18 +80,32 @@ enum OperandClass {
|
|||||||
OperandLoop,
|
OperandLoop,
|
||||||
OperandFunction,
|
OperandFunction,
|
||||||
OperandMemorySemantics,
|
OperandMemorySemantics,
|
||||||
OperandMemoryAccess,
|
OperandMemoryOperands,
|
||||||
OperandScope,
|
OperandScope,
|
||||||
OperandGroupOperation,
|
OperandGroupOperation,
|
||||||
OperandKernelEnqueueFlags,
|
OperandKernelEnqueueFlags,
|
||||||
OperandKernelProfilingInfo,
|
OperandKernelProfilingInfo,
|
||||||
OperandCapability,
|
OperandCapability,
|
||||||
|
OperandRayFlags,
|
||||||
|
OperandRayQueryIntersection,
|
||||||
|
OperandRayQueryCommittedIntersectionType,
|
||||||
|
OperandRayQueryCandidateIntersectionType,
|
||||||
|
OperandFragmentShadingRate,
|
||||||
|
OperandFPDenormMode,
|
||||||
|
OperandFPOperationMode,
|
||||||
|
|
||||||
OperandOpcode,
|
OperandOpcode,
|
||||||
|
|
||||||
OperandCount
|
OperandCount
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// For direct representation of the JSON grammar "instruction_printing_class".
|
||||||
|
struct PrintingClass {
|
||||||
|
std::string tag;
|
||||||
|
std::string heading;
|
||||||
|
};
|
||||||
|
using PrintingClasses = std::vector<PrintingClass>;
|
||||||
|
|
||||||
// Any specific enum can have a set of capabilities that allow it:
|
// Any specific enum can have a set of capabilities that allow it:
|
||||||
typedef std::vector<std::string> EnumCaps;
|
typedef std::vector<std::string> EnumCaps;
|
||||||
|
|
||||||
@ -145,6 +163,12 @@ public:
|
|||||||
assert((where != end()) && "Could not find enum in the enum list");
|
assert((where != end()) && "Could not find enum in the enum list");
|
||||||
return *where;
|
return *where;
|
||||||
}
|
}
|
||||||
|
// gets *all* entries for the value, including the first one
|
||||||
|
void gatherAliases(unsigned value, std::vector<EValue*>& aliases) {
|
||||||
|
std::for_each(begin(), end(), [&](EValue& e) {
|
||||||
|
if (value == e.value)
|
||||||
|
aliases.push_back(&e);});
|
||||||
|
}
|
||||||
// Returns the EValue with the given name. We assume uniqueness
|
// Returns the EValue with the given name. We assume uniqueness
|
||||||
// by name.
|
// by name.
|
||||||
EValue& at(std::string name) {
|
EValue& at(std::string name) {
|
||||||
@ -167,9 +191,11 @@ private:
|
|||||||
class EnumValue {
|
class EnumValue {
|
||||||
public:
|
public:
|
||||||
EnumValue() : value(0), desc(nullptr) {}
|
EnumValue() : value(0), desc(nullptr) {}
|
||||||
EnumValue(unsigned int the_value, const std::string& the_name, EnumCaps&& the_caps, const std::string& the_version,
|
EnumValue(unsigned int the_value, const std::string& the_name, EnumCaps&& the_caps,
|
||||||
Extensions&& the_extensions, OperandParameters&& the_operands) :
|
const std::string& the_firstVersion, const std::string& the_lastVersion,
|
||||||
value(the_value), name(the_name), capabilities(std::move(the_caps)), version(std::move(the_version)),
|
Extensions&& the_extensions, OperandParameters&& the_operands) :
|
||||||
|
value(the_value), name(the_name), capabilities(std::move(the_caps)),
|
||||||
|
firstVersion(std::move(the_firstVersion)), lastVersion(std::move(the_lastVersion)),
|
||||||
extensions(std::move(the_extensions)), operands(std::move(the_operands)), desc(nullptr) { }
|
extensions(std::move(the_extensions)), operands(std::move(the_operands)), desc(nullptr) { }
|
||||||
|
|
||||||
// For ValueEnum, the value from the JSON file.
|
// For ValueEnum, the value from the JSON file.
|
||||||
@ -178,7 +204,8 @@ public:
|
|||||||
unsigned value;
|
unsigned value;
|
||||||
std::string name;
|
std::string name;
|
||||||
EnumCaps capabilities;
|
EnumCaps capabilities;
|
||||||
std::string version;
|
std::string firstVersion;
|
||||||
|
std::string lastVersion;
|
||||||
// A feature only be enabled by certain extensions.
|
// A feature only be enabled by certain extensions.
|
||||||
// An empty list means the feature does not require an extension.
|
// An empty list means the feature does not require an extension.
|
||||||
// Normally, only Capability enums are enabled by extension. In turn,
|
// Normally, only Capability enums are enabled by extension. In turn,
|
||||||
@ -228,28 +255,39 @@ public:
|
|||||||
// per OperandParameters above.
|
// per OperandParameters above.
|
||||||
class InstructionValue : public EnumValue {
|
class InstructionValue : public EnumValue {
|
||||||
public:
|
public:
|
||||||
InstructionValue(EnumValue&& e, bool has_type, bool has_result)
|
InstructionValue(EnumValue&& e, const std::string& printClass, bool has_type, bool has_result)
|
||||||
: EnumValue(std::move(e)),
|
: EnumValue(std::move(e)),
|
||||||
|
printingClass(printClass),
|
||||||
opDesc("TBD"),
|
opDesc("TBD"),
|
||||||
opClass(0),
|
|
||||||
typePresent(has_type),
|
typePresent(has_type),
|
||||||
resultPresent(has_result) {}
|
resultPresent(has_result),
|
||||||
|
alias(this) { }
|
||||||
|
InstructionValue(const InstructionValue& v)
|
||||||
|
{
|
||||||
|
*this = v;
|
||||||
|
alias = this;
|
||||||
|
}
|
||||||
|
|
||||||
bool hasResult() const { return resultPresent != 0; }
|
bool hasResult() const { return resultPresent != 0; }
|
||||||
bool hasType() const { return typePresent != 0; }
|
bool hasType() const { return typePresent != 0; }
|
||||||
|
void setAlias(const InstructionValue& a) { alias = &a; }
|
||||||
|
const InstructionValue& getAlias() const { return *alias; }
|
||||||
|
bool isAlias() const { return alias != this; }
|
||||||
|
|
||||||
|
std::string printingClass;
|
||||||
const char* opDesc;
|
const char* opDesc;
|
||||||
int opClass;
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
int typePresent : 1;
|
int typePresent : 1;
|
||||||
int resultPresent : 1;
|
int resultPresent : 1;
|
||||||
|
const InstructionValue* alias; // correct only after discovering the aliases; otherwise points to this
|
||||||
};
|
};
|
||||||
|
|
||||||
using InstructionValues = EnumValuesContainer<InstructionValue>;
|
using InstructionValues = EnumValuesContainer<InstructionValue>;
|
||||||
|
|
||||||
// Parameterization info for all instructions.
|
// Parameterization info for all instructions.
|
||||||
extern InstructionValues InstructionDesc;
|
extern InstructionValues InstructionDesc;
|
||||||
|
extern PrintingClasses InstructionPrintingClasses;
|
||||||
|
|
||||||
// These hold definitions of the enumerants used for operands.
|
// These hold definitions of the enumerants used for operands.
|
||||||
// This is indexed by OperandClass, but not including OperandOpcode.
|
// This is indexed by OperandClass, but not including OperandOpcode.
|
||||||
|
@ -1,19 +1,19 @@
|
|||||||
// Copyright (c) 2014-2018 The Khronos Group Inc.
|
// Copyright (c) 2014-2019 The Khronos Group Inc.
|
||||||
//
|
//
|
||||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
// of this software and/or associated documentation files (the "Materials"),
|
// of this software and/or associated documentation files (the "Materials"),
|
||||||
// to deal in the Materials without restriction, including without limitation
|
// to deal in the Materials without restriction, including without limitation
|
||||||
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
// and/or sell copies of the Materials, and to permit persons to whom the
|
// and/or sell copies of the Materials, and to permit persons to whom the
|
||||||
// Materials are furnished to do so, subject to the following conditions:
|
// Materials are furnished to do so, subject to the following conditions:
|
||||||
//
|
//
|
||||||
// The above copyright notice and this permission notice shall be included in
|
// The above copyright notice and this permission notice shall be included in
|
||||||
// all copies or substantial portions of the Materials.
|
// all copies or substantial portions of the Materials.
|
||||||
//
|
//
|
||||||
// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
|
// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
|
||||||
// STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
|
// STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
|
||||||
// HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/
|
// HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/
|
||||||
//
|
//
|
||||||
// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||||
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
@ -50,6 +50,8 @@ void Usage()
|
|||||||
" JSON - JSON format data\n"
|
" JSON - JSON format data\n"
|
||||||
" Lua - Lua module\n"
|
" Lua - Lua module\n"
|
||||||
" Python - Python module (also accepts Py)\n"
|
" Python - Python module (also accepts Py)\n"
|
||||||
|
" C# - C# module (also accepts CSharp)\n"
|
||||||
|
" D - D module\n"
|
||||||
" -H print header in all supported languages to files in current directory\n"
|
" -H print header in all supported languages to files in current directory\n"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -90,6 +92,10 @@ bool ProcessArguments(int argc, char* argv[])
|
|||||||
Language = spv::ELangLua;
|
Language = spv::ELangLua;
|
||||||
} else if (language == "python" || language == "py") {
|
} else if (language == "python" || language == "py") {
|
||||||
Language = spv::ELangPython;
|
Language = spv::ELangPython;
|
||||||
|
} else if (language == "c#" || language == "csharp") {
|
||||||
|
Language = spv::ELangCSharp;
|
||||||
|
} else if (language == "d") {
|
||||||
|
Language = spv::ELangD;
|
||||||
} else
|
} else
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
@ -113,7 +119,7 @@ int main(int argc, char* argv[])
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
spv::jsonToSpirv(jsonPath);
|
spv::jsonToSpirv(jsonPath, (Options & EOptionPrintHeader) != 0);
|
||||||
if (Options & EOptionPrintHeader)
|
if (Options & EOptionPrintHeader)
|
||||||
spv::PrintHeader(Language, std::cout);
|
spv::PrintHeader(Language, std::cout);
|
||||||
|
|
||||||
|
541
externals/sirit/include/sirit/sirit.h
vendored
541
externals/sirit/include/sirit/sirit.h
vendored
@ -6,25 +6,39 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include <array>
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
|
#include <functional>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <optional>
|
#include <optional>
|
||||||
|
#include <span>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
#include <string_view>
|
||||||
|
#include <type_traits>
|
||||||
#include <unordered_set>
|
#include <unordered_set>
|
||||||
#include <variant>
|
#include <variant>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
#include <spirv/unified1/spirv.hpp11>
|
#include <spirv/unified1/spirv.hpp11>
|
||||||
|
|
||||||
namespace Sirit {
|
namespace Sirit {
|
||||||
|
|
||||||
constexpr std::uint32_t GENERATOR_MAGIC_NUMBER = 0;
|
constexpr std::uint32_t GENERATOR_MAGIC_NUMBER = 0;
|
||||||
|
|
||||||
class Op;
|
class Declarations;
|
||||||
class Operand;
|
class Operand;
|
||||||
|
class Stream;
|
||||||
|
|
||||||
using Literal =
|
using Literal =
|
||||||
std::variant<std::uint32_t, std::uint64_t, std::int32_t, std::int64_t, float, double>;
|
std::variant<std::uint32_t, std::uint64_t, std::int32_t, std::int64_t, float, double>;
|
||||||
using Id = const Op*;
|
|
||||||
|
struct Id {
|
||||||
|
std::uint32_t value;
|
||||||
|
};
|
||||||
|
|
||||||
|
[[nodiscard]] inline bool ValidId(Id id) noexcept {
|
||||||
|
return id.value != 0;
|
||||||
|
}
|
||||||
|
|
||||||
class Module {
|
class Module {
|
||||||
public:
|
public:
|
||||||
@ -39,6 +53,9 @@ public:
|
|||||||
*/
|
*/
|
||||||
std::vector<std::uint32_t> Assemble() const;
|
std::vector<std::uint32_t> Assemble() const;
|
||||||
|
|
||||||
|
/// Patches deferred phi nodes calling the passed function on each phi argument
|
||||||
|
void PatchDeferredPhi(const std::function<Id(std::size_t index)>& func);
|
||||||
|
|
||||||
/// Adds a SPIR-V extension.
|
/// Adds a SPIR-V extension.
|
||||||
void AddExtension(std::string extension_name);
|
void AddExtension(std::string extension_name);
|
||||||
|
|
||||||
@ -49,24 +66,29 @@ public:
|
|||||||
void SetMemoryModel(spv::AddressingModel addressing_model_, spv::MemoryModel memory_model_);
|
void SetMemoryModel(spv::AddressingModel addressing_model_, spv::MemoryModel memory_model_);
|
||||||
|
|
||||||
/// Adds an entry point.
|
/// Adds an entry point.
|
||||||
void AddEntryPoint(spv::ExecutionModel execution_model, Id entry_point, std::string name,
|
void AddEntryPoint(spv::ExecutionModel execution_model, Id entry_point, std::string_view name,
|
||||||
const std::vector<Id>& interfaces = {});
|
std::span<const Id> interfaces = {});
|
||||||
|
|
||||||
/// Adds an entry point.
|
/// Adds an entry point.
|
||||||
|
// TODO: Change std::is_convertible_v to std::convertible_to when compilers
|
||||||
|
// support it; same elsewhere.
|
||||||
template <typename... Ts>
|
template <typename... Ts>
|
||||||
void AddEntryPoint(spv::ExecutionModel execution_model, Id entry_point, std::string name,
|
requires(...&& std::is_convertible_v<Ts, Id>) void AddEntryPoint(
|
||||||
Ts&&... interfaces) {
|
spv::ExecutionModel execution_model, Id entry_point, std::string_view name,
|
||||||
AddEntryPoint(execution_model, std::move(entry_point), name, {interfaces...});
|
Ts&&... interfaces) {
|
||||||
|
AddEntryPoint(execution_model, std::move(entry_point), name,
|
||||||
|
std::span<const Id>({interfaces...}));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Declare an execution mode for an entry point.
|
/// Declare an execution mode for an entry point.
|
||||||
void AddExecutionMode(Id entry_point, spv::ExecutionMode mode,
|
void AddExecutionMode(Id entry_point, spv::ExecutionMode mode,
|
||||||
const std::vector<Literal>& literals = {});
|
std::span<const Literal> literals = {});
|
||||||
|
|
||||||
/// Declare an execution mode for an entry point.
|
/// Declare an execution mode for an entry point.
|
||||||
template <typename... Ts>
|
template <typename... Ts>
|
||||||
void AddExecutionMode(Id entry_point, spv::ExecutionMode mode, Ts&&... literals) {
|
requires(...&& std::is_convertible_v<Ts, Literal>) void AddExecutionMode(
|
||||||
AddExecutionMode(entry_point, mode, {literals...});
|
Id entry_point, spv::ExecutionMode mode, Ts&&... literals) {
|
||||||
|
AddExecutionMode(entry_point, mode, std::span<const Literal>({literals...}));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -84,19 +106,13 @@ public:
|
|||||||
return AddLabel(OpLabel());
|
return AddLabel(OpLabel());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/// Adds a local variable to the code
|
||||||
* Adds a local variable to the code
|
Id AddLocalVariable(Id result_type, spv::StorageClass storage_class,
|
||||||
* @param variable Variable to insert into code.
|
std::optional<Id> initializer = std::nullopt);
|
||||||
* @return Returns variable.
|
|
||||||
*/
|
|
||||||
Id AddLocalVariable(Id label);
|
|
||||||
|
|
||||||
/**
|
/// Adds a global variable
|
||||||
* Adds a global variable
|
Id AddGlobalVariable(Id result_type, spv::StorageClass storage_class,
|
||||||
* @param variable Global variable to add.
|
std::optional<Id> initializer = std::nullopt);
|
||||||
* @return Returns variable.
|
|
||||||
*/
|
|
||||||
Id AddGlobalVariable(Id variable);
|
|
||||||
|
|
||||||
// Types
|
// Types
|
||||||
|
|
||||||
@ -121,7 +137,7 @@ public:
|
|||||||
/// Returns type image.
|
/// Returns type image.
|
||||||
Id TypeImage(Id sampled_type, spv::Dim dim, int depth, bool arrayed, bool ms, int sampled,
|
Id TypeImage(Id sampled_type, spv::Dim dim, int depth, bool arrayed, bool ms, int sampled,
|
||||||
spv::ImageFormat image_format,
|
spv::ImageFormat image_format,
|
||||||
std::optional<spv::AccessQualifier> access_qualifier = {});
|
std::optional<spv::AccessQualifier> access_qualifier = std::nullopt);
|
||||||
|
|
||||||
/// Returns type sampler.
|
/// Returns type sampler.
|
||||||
Id TypeSampler();
|
Id TypeSampler();
|
||||||
@ -136,27 +152,28 @@ public:
|
|||||||
Id TypeRuntimeArray(Id element_type);
|
Id TypeRuntimeArray(Id element_type);
|
||||||
|
|
||||||
/// Returns type struct.
|
/// Returns type struct.
|
||||||
Id TypeStruct(const std::vector<Id>& members = {});
|
Id TypeStruct(std::span<const Id> members = {});
|
||||||
|
|
||||||
/// Returns type struct.
|
/// Returns type struct.
|
||||||
template <typename... Ts>
|
template <typename... Ts>
|
||||||
Id TypeStruct(Ts&&... members) {
|
requires(...&& std::is_convertible_v<Ts, Id>) Id TypeStruct(Ts&&... members) {
|
||||||
return TypeStruct({members...});
|
return TypeStruct(std::span<const Id>({members...}));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns type opaque.
|
/// Returns type opaque.
|
||||||
Id TypeOpaque(std::string name);
|
Id TypeOpaque(std::string_view name);
|
||||||
|
|
||||||
/// Returns type pointer.
|
/// Returns type pointer.
|
||||||
Id TypePointer(spv::StorageClass storage_class, Id type);
|
Id TypePointer(spv::StorageClass storage_class, Id type);
|
||||||
|
|
||||||
/// Returns type function.
|
/// Returns type function.
|
||||||
Id TypeFunction(Id return_type, const std::vector<Id>& arguments = {});
|
Id TypeFunction(Id return_type, std::span<const Id> arguments = {});
|
||||||
|
|
||||||
/// Returns type function.
|
/// Returns type function.
|
||||||
template <typename... Ts>
|
template <typename... Ts>
|
||||||
Id TypeFunction(Id return_type, Ts&&... arguments) {
|
requires(...&& std::is_convertible_v<Ts, Id>) Id
|
||||||
return OpTypeFunction(return_type, {arguments...});
|
TypeFunction(Id return_type, Ts&&... arguments) {
|
||||||
|
return TypeFunction(return_type, std::span<const Id>({arguments...}));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns type event.
|
/// Returns type event.
|
||||||
@ -186,12 +203,13 @@ public:
|
|||||||
Id Constant(Id result_type, const Literal& literal);
|
Id Constant(Id result_type, const Literal& literal);
|
||||||
|
|
||||||
/// Returns a numeric scalar constant.
|
/// Returns a numeric scalar constant.
|
||||||
Id ConstantComposite(Id result_type, const std::vector<Id>& constituents);
|
Id ConstantComposite(Id result_type, std::span<const Id> constituents);
|
||||||
|
|
||||||
/// Returns a numeric scalar constant.
|
/// Returns a numeric scalar constant.
|
||||||
template <typename... Ts>
|
template <typename... Ts>
|
||||||
Id ConstantComposite(Id result_type, Ts&&... constituents) {
|
requires(...&& std::is_convertible_v<Ts, Id>) Id
|
||||||
return ConstantComposite(result_type, {constituents...});
|
ConstantComposite(Id result_type, Ts&&... constituents) {
|
||||||
|
return ConstantComposite(result_type, std::span<const Id>({constituents...}));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns a sampler constant.
|
/// Returns a sampler constant.
|
||||||
@ -207,28 +225,50 @@ public:
|
|||||||
Id OpFunction(Id result_type, spv::FunctionControlMask function_control, Id function_type);
|
Id OpFunction(Id result_type, spv::FunctionControlMask function_control, Id function_type);
|
||||||
|
|
||||||
/// Ends a function.
|
/// Ends a function.
|
||||||
Id OpFunctionEnd();
|
void OpFunctionEnd();
|
||||||
|
|
||||||
/// Call a function.
|
/// Call a function.
|
||||||
Id OpFunctionCall(Id result_type, Id function, const std::vector<Id>& arguments = {});
|
Id OpFunctionCall(Id result_type, Id function, std::span<const Id> arguments = {});
|
||||||
|
|
||||||
/// Call a function.
|
/// Call a function.
|
||||||
template <typename... Ts>
|
template <typename... Ts>
|
||||||
Id OpFunctionCall(Id result_type, Id function, Ts&&... arguments) {
|
requires(...&& std::is_convertible_v<Ts, Id>) Id
|
||||||
return OpFunctionCall(result_type, function, {arguments...});
|
OpFunctionCall(Id result_type, Id function, Ts&&... arguments) {
|
||||||
|
return OpFunctionCall(result_type, function, std::span<const Id>({arguments...}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Declare a formal parameter of the current function.
|
||||||
|
Id OpFunctionParameter(Id result_type);
|
||||||
|
|
||||||
// Flow
|
// Flow
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The SSA phi function.
|
||||||
|
*
|
||||||
|
* @param result_type The result type.
|
||||||
|
* @param operands An immutable span of variable, parent block pairs
|
||||||
|
*/
|
||||||
|
Id OpPhi(Id result_type, std::span<const Id> operands);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The SSA phi function. This instruction will be revisited when patching phi nodes.
|
||||||
|
*
|
||||||
|
* @param result_type The result type.
|
||||||
|
* @param blocks An immutable span of block pairs.
|
||||||
|
*/
|
||||||
|
Id DeferredOpPhi(Id result_type, std::span<const Id> blocks);
|
||||||
|
|
||||||
/// Declare a structured loop.
|
/// Declare a structured loop.
|
||||||
Id OpLoopMerge(Id merge_block, Id continue_target, spv::LoopControlMask loop_control,
|
Id OpLoopMerge(Id merge_block, Id continue_target, spv::LoopControlMask loop_control,
|
||||||
const std::vector<Id>& literals = {});
|
std::span<const Id> literals = {});
|
||||||
|
|
||||||
/// Declare a structured loop.
|
/// Declare a structured loop.
|
||||||
template <typename... Ts>
|
template <typename... Ts>
|
||||||
Id OpLoopMerge(Id merge_block, Id continue_target, spv::LoopControlMask loop_control,
|
requires(...&& std::is_convertible_v<Ts, Id>) Id
|
||||||
Ts&&... literals) {
|
OpLoopMerge(Id merge_block, Id continue_target, spv::LoopControlMask loop_control,
|
||||||
return OpLoopMerge(merge_block, continue_target, loop_control, {literals...});
|
Ts&&... literals) {
|
||||||
|
return OpLoopMerge(merge_block, continue_target, loop_control,
|
||||||
|
std::span<const Id>({literals...}));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Declare a structured selection.
|
/// Declare a structured selection.
|
||||||
@ -238,8 +278,8 @@ public:
|
|||||||
Id OpLabel();
|
Id OpLabel();
|
||||||
|
|
||||||
/// The block label instruction: Any reference to a block is through this ref.
|
/// The block label instruction: Any reference to a block is through this ref.
|
||||||
Id OpLabel(std::string label_name) {
|
Id OpLabel(std::string_view label_name) {
|
||||||
return Name(OpLabel(), std::move(label_name));
|
return Name(OpLabel(), label_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Unconditional jump to label.
|
/// Unconditional jump to label.
|
||||||
@ -251,55 +291,62 @@ public:
|
|||||||
std::uint32_t true_weight = 0, std::uint32_t false_weight = 0);
|
std::uint32_t true_weight = 0, std::uint32_t false_weight = 0);
|
||||||
|
|
||||||
/// Multi-way branch to one of the operand label.
|
/// Multi-way branch to one of the operand label.
|
||||||
Id OpSwitch(Id selector, Id default_label, const std::vector<Literal>& literals,
|
Id OpSwitch(Id selector, Id default_label, std::span<const Literal> literals,
|
||||||
const std::vector<Id>& labels);
|
std::span<const Id> labels);
|
||||||
|
|
||||||
/// Returns with no value from a function with void return type.
|
/// Returns with no value from a function with void return type.
|
||||||
Id OpReturn();
|
void OpReturn();
|
||||||
|
|
||||||
|
/// Behavior is undefined if this instruction is executed.
|
||||||
|
void OpUnreachable();
|
||||||
|
|
||||||
/// Return a value from a function.
|
/// Return a value from a function.
|
||||||
Id OpReturnValue(Id value);
|
Id OpReturnValue(Id value);
|
||||||
|
|
||||||
/// Fragment-shader discard.
|
/// Fragment-shader discard.
|
||||||
Id OpKill();
|
void OpKill();
|
||||||
|
|
||||||
|
/// Demote fragment shader invocation to a helper invocation
|
||||||
|
void OpDemoteToHelperInvocationEXT();
|
||||||
|
|
||||||
// Debug
|
// Debug
|
||||||
|
|
||||||
/// Assign a name string to a reference.
|
/// Assign a name string to a reference.
|
||||||
/// @return target
|
/// @return target
|
||||||
Id Name(Id target, std::string name);
|
Id Name(Id target, std::string_view name);
|
||||||
|
|
||||||
/// Assign a name string to a member of a structure type.
|
/// Assign a name string to a member of a structure type.
|
||||||
/// @return type
|
/// @return type
|
||||||
Id MemberName(Id type, std::uint32_t member, std::string name);
|
Id MemberName(Id type, std::uint32_t member, std::string_view name);
|
||||||
|
|
||||||
/// Assign a Result <id> to a string for use by other debug instructions.
|
/// Assign a Result <id> to a string for use by other debug instructions.
|
||||||
Id String(std::string string);
|
Id String(std::string_view string);
|
||||||
|
|
||||||
/// Add source-level location information
|
/// Add source-level location information
|
||||||
Id OpLine(Id file, Literal line, Literal column);
|
Id OpLine(Id file, Literal line, Literal column);
|
||||||
|
|
||||||
// Memory
|
// Memory
|
||||||
|
|
||||||
/// Allocate an object in memory, resulting in a copy to it.
|
/// Form a pointer to a texel of an image. Use of such a pointer is limited to atomic
|
||||||
Id OpVariable(Id result_type, spv::StorageClass storage_class, Id initializer = nullptr);
|
/// operations.
|
||||||
|
|
||||||
/// Form a pointer to a texel of an image. Use of such a pointer is limited to atomic operations.
|
|
||||||
Id OpImageTexelPointer(Id result_type, Id image, Id coordinate, Id sample);
|
Id OpImageTexelPointer(Id result_type, Id image, Id coordinate, Id sample);
|
||||||
|
|
||||||
/// Load through a pointer.
|
/// Load through a pointer.
|
||||||
Id OpLoad(Id result_type, Id pointer, std::optional<spv::MemoryAccessMask> memory_access = {});
|
Id OpLoad(Id result_type, Id pointer,
|
||||||
|
std::optional<spv::MemoryAccessMask> memory_access = std::nullopt);
|
||||||
|
|
||||||
/// Store through a pointer.
|
/// Store through a pointer.
|
||||||
Id OpStore(Id pointer, Id object, std::optional<spv::MemoryAccessMask> memory_access = {});
|
Id OpStore(Id pointer, Id object,
|
||||||
|
std::optional<spv::MemoryAccessMask> memory_access = std::nullopt);
|
||||||
|
|
||||||
/// Create a pointer into a composite object that can be used with OpLoad and OpStore.
|
/// Create a pointer into a composite object that can be used with OpLoad and OpStore.
|
||||||
Id OpAccessChain(Id result_type, Id base, const std::vector<Id>& indexes = {});
|
Id OpAccessChain(Id result_type, Id base, std::span<const Id> indexes = {});
|
||||||
|
|
||||||
/// Create a pointer into a composite object that can be used with OpLoad and OpStore.
|
/// Create a pointer into a composite object that can be used with OpLoad and OpStore.
|
||||||
template <typename... Ts>
|
template <typename... Ts>
|
||||||
Id OpAccessChain(Id result_type, Id base, Ts&&... indexes) {
|
requires(...&& std::is_convertible_v<Ts, Id>) Id
|
||||||
return OpAccessChain(result_type, base, {indexes...});
|
OpAccessChain(Id result_type, Id base, Ts&&... indexes) {
|
||||||
|
return OpAccessChain(result_type, base, std::span<const Id>({indexes...}));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Extract a single, dynamically selected, component of a vector.
|
/// Extract a single, dynamically selected, component of a vector.
|
||||||
@ -310,50 +357,67 @@ public:
|
|||||||
|
|
||||||
/// Make a copy of a composite object, while modifying one part of it.
|
/// Make a copy of a composite object, while modifying one part of it.
|
||||||
Id OpCompositeInsert(Id result_type, Id object, Id composite,
|
Id OpCompositeInsert(Id result_type, Id object, Id composite,
|
||||||
const std::vector<Literal>& indexes = {});
|
std::span<const Literal> indexes = {});
|
||||||
|
|
||||||
/// Make a copy of a composite object, while modifying one part of it.
|
/// Make a copy of a composite object, while modifying one part of it.
|
||||||
template <typename... Ts>
|
template <typename... Ts>
|
||||||
Id OpCompositeInsert(Id result_type, Id object, Id composite, Ts&&... indexes) {
|
requires(...&& std::is_convertible_v<Ts, Literal>) Id
|
||||||
return OpCompositeInsert(result_type, object, composite, {indexes...});
|
OpCompositeInsert(Id result_type, Id object, Id composite, Ts&&... indexes) {
|
||||||
|
const Literal stack_indexes[] = {std::forward<Ts>(indexes)...};
|
||||||
|
return OpCompositeInsert(result_type, object, composite,
|
||||||
|
std::span<const Literal>{stack_indexes});
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Extract a part of a composite object.
|
/// Extract a part of a composite object.
|
||||||
Id OpCompositeExtract(Id result_type, Id composite, const std::vector<Literal>& indexes = {});
|
Id OpCompositeExtract(Id result_type, Id composite, std::span<const Literal> indexes = {});
|
||||||
|
|
||||||
/// Extract a part of a composite object.
|
/// Extract a part of a composite object.
|
||||||
template <typename... Ts>
|
template <typename... Ts>
|
||||||
Id OpCompositeExtract(Id result_type, Id composite, Ts&&... indexes) {
|
requires(...&& std::is_convertible_v<Ts, Literal>) Id
|
||||||
return OpCompositeExtract(result_type, composite, {indexes...});
|
OpCompositeExtract(Id result_type, Id composite, Ts&&... indexes) {
|
||||||
|
const Literal stack_indexes[] = {std::forward<Ts>(indexes)...};
|
||||||
|
return OpCompositeExtract(result_type, composite, std::span<const Literal>{stack_indexes});
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Construct a new composite object from a set of constituent objects that will fully form it.
|
/// Construct a new composite object from a set of constituent objects that will fully form it.
|
||||||
Id OpCompositeConstruct(Id result_type, const std::vector<Id>& ids);
|
Id OpCompositeConstruct(Id result_type, std::span<const Id> ids);
|
||||||
|
|
||||||
/// Construct a new composite object from a set of constituent objects that will fully form it.
|
/// Construct a new composite object from a set of constituent objects that will fully form it.
|
||||||
template <typename... Ts>
|
template <typename... Ts>
|
||||||
Id OpCompositeConstruct(Id result_type, Ts&&... ids) {
|
requires(...&& std::is_convertible_v<Ts, Id>) Id
|
||||||
return OpCompositeConstruct(result_type, {ids...});
|
OpCompositeConstruct(Id result_type, Ts&&... ids) {
|
||||||
|
return OpCompositeConstruct(result_type, std::span<const Id>({ids...}));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Annotation
|
// Annotation
|
||||||
|
|
||||||
/// Add a decoration to target.
|
/// Add a decoration to target.
|
||||||
Id Decorate(Id target, spv::Decoration decoration, const std::vector<Literal>& literals = {});
|
Id Decorate(Id target, spv::Decoration decoration, std::span<const Literal> literals = {});
|
||||||
|
|
||||||
/// Add a decoration to target.
|
/// Add a decoration to target.
|
||||||
template <typename... Ts>
|
template <typename... Ts>
|
||||||
Id Decorate(Id target, spv::Decoration decoration, Ts&&... literals) {
|
requires(...&& std::is_convertible_v<Ts, Literal>) Id
|
||||||
return Decorate(target, decoration, {literals...});
|
Decorate(Id target, spv::Decoration decoration, Ts&&... literals) {
|
||||||
|
const Literal stack_literals[] = {std::forward<Ts>(literals)...};
|
||||||
|
return Decorate(target, decoration, std::span<const Literal>{stack_literals});
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Add a decoration to target.
|
||||||
|
template <typename T>
|
||||||
|
requires std::is_enum_v<T> Id Decorate(Id target, spv::Decoration decoration, T literal) {
|
||||||
|
return Decorate(target, decoration, static_cast<std::uint32_t>(literal));
|
||||||
}
|
}
|
||||||
|
|
||||||
Id MemberDecorate(Id structure_type, Literal member, spv::Decoration decoration,
|
Id MemberDecorate(Id structure_type, Literal member, spv::Decoration decoration,
|
||||||
const std::vector<Literal>& literals = {});
|
std::span<const Literal> literals = {});
|
||||||
|
|
||||||
template <typename... Ts>
|
template <typename... Ts>
|
||||||
Id MemberDecorate(Id structure_type, Literal member, spv::Decoration decoration,
|
requires(...&& std::is_convertible_v<Ts, Literal>) Id
|
||||||
Ts&&... literals) {
|
MemberDecorate(Id structure_type, Literal member, spv::Decoration decoration,
|
||||||
return MemberDecorate(structure_type, member, decoration, {literals...});
|
Ts&&... literals) {
|
||||||
|
const Literal stack_literals[] = {std::forward<Ts>(literals)...};
|
||||||
|
return MemberDecorate(structure_type, member, decoration,
|
||||||
|
std::span<const Literal>{stack_literals});
|
||||||
}
|
}
|
||||||
|
|
||||||
// Misc
|
// Misc
|
||||||
@ -362,10 +426,17 @@ public:
|
|||||||
Id OpUndef(Id result_type);
|
Id OpUndef(Id result_type);
|
||||||
|
|
||||||
/// Emits the current values of all output variables to the current output primitive.
|
/// Emits the current values of all output variables to the current output primitive.
|
||||||
Id OpEmitVertex();
|
void OpEmitVertex();
|
||||||
|
|
||||||
/// Finish the current primitive and start a new one. No vertex is emitted.
|
/// Finish the current primitive and start a new one. No vertex is emitted.
|
||||||
Id OpEndPrimitive();
|
void OpEndPrimitive();
|
||||||
|
|
||||||
|
/// Emits the current values of all output variables to the current output primitive. After
|
||||||
|
/// execution, the values of all output variables are undefined.
|
||||||
|
void OpEmitStreamVertex(Id stream);
|
||||||
|
|
||||||
|
/// Finish the current primitive and start a new one. No vertex is emitted.
|
||||||
|
void OpEndStreamPrimitive(Id stream);
|
||||||
|
|
||||||
// Barrier
|
// Barrier
|
||||||
|
|
||||||
@ -569,7 +640,7 @@ public:
|
|||||||
/// Integer substraction of Operand 1 and Operand 2.
|
/// Integer substraction of Operand 1 and Operand 2.
|
||||||
Id OpISub(Id result_type, Id operand_1, Id operand_2);
|
Id OpISub(Id result_type, Id operand_1, Id operand_2);
|
||||||
|
|
||||||
/// Floating-point substraction of Operand 1 and Operand 2.
|
/// Floating-point subtraction of Operand 1 and Operand 2.
|
||||||
Id OpFSub(Id result_type, Id operand_1, Id operand_2);
|
Id OpFSub(Id result_type, Id operand_1, Id operand_2);
|
||||||
|
|
||||||
/// Integer multiplication of Operand 1 and Operand 2.
|
/// Integer multiplication of Operand 1 and Operand 2.
|
||||||
@ -608,13 +679,13 @@ public:
|
|||||||
// Extensions
|
// Extensions
|
||||||
|
|
||||||
/// Execute an instruction in an imported set of extended instructions.
|
/// Execute an instruction in an imported set of extended instructions.
|
||||||
Id OpExtInst(Id result_type, Id set, std::uint32_t instruction,
|
Id OpExtInst(Id result_type, Id set, std::uint32_t instruction, std::span<const Id> operands);
|
||||||
const std::vector<Id>& operands);
|
|
||||||
|
|
||||||
/// Execute an instruction in an imported set of extended instructions.
|
/// Execute an instruction in an imported set of extended instructions.
|
||||||
template <typename... Ts>
|
template <typename... Ts>
|
||||||
Id OpExtInst(Id result_type, Id set, std::uint32_t instruction, Ts&&... operands) {
|
requires(...&& std::is_convertible_v<Ts, Id>) Id
|
||||||
return OpExtInst(result_type, set, instruction, {operands...});
|
OpExtInst(Id result_type, Id set, std::uint32_t instruction, Ts&&... operands) {
|
||||||
|
return OpExtInst(result_type, set, instruction, std::span<const Id>({operands...}));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Result is x if x >= 0; otherwise result is -x.
|
/// Result is x if x >= 0; otherwise result is -x.
|
||||||
@ -756,6 +827,52 @@ public:
|
|||||||
/// of the pixel specified by offset.
|
/// of the pixel specified by offset.
|
||||||
Id OpInterpolateAtOffset(Id result_type, Id interpolant, Id offset);
|
Id OpInterpolateAtOffset(Id result_type, Id interpolant, Id offset);
|
||||||
|
|
||||||
|
// Derivatives
|
||||||
|
|
||||||
|
/// Same result as either OpDPdxFine or OpDPdxCoarse on the input.
|
||||||
|
/// Selection of which one is based on external factors.
|
||||||
|
Id OpDPdx(Id result_type, Id operand);
|
||||||
|
|
||||||
|
/// Same result as either OpDPdyFine or OpDPdyCoarse on the input.
|
||||||
|
/// Selection of which one is based on external factors.
|
||||||
|
Id OpDPdy(Id result_type, Id operand);
|
||||||
|
|
||||||
|
/// Result is the same as computing the sum of the absolute values of OpDPdx and OpDPdy
|
||||||
|
/// on the input.
|
||||||
|
Id OpFwidth(Id result_type, Id operand);
|
||||||
|
|
||||||
|
/// Result is the partial derivative of the input with respect to the window x coordinate.
|
||||||
|
/// Uses local differencing based on the value of the input for the current fragment and
|
||||||
|
/// its immediate neighbor(s).
|
||||||
|
Id OpDPdxFine(Id result_type, Id operand);
|
||||||
|
|
||||||
|
/// Result is the partial derivative of the input with respect to the window y coordinate.
|
||||||
|
/// Uses local differencing based on the value of the input for the current fragment and
|
||||||
|
/// its immediate neighbor(s).
|
||||||
|
Id OpDPdyFine(Id result_type, Id operand);
|
||||||
|
|
||||||
|
/// Result is the same as computing the sum of the absolute values of OpDPdxFine and OpDPdyFine
|
||||||
|
/// on the input.
|
||||||
|
Id OpFwidthFine(Id result_type, Id operand);
|
||||||
|
|
||||||
|
/// Result is the partial derivative of the input with respect to the window x coordinate.
|
||||||
|
/// Uses local differencing based on the value of the input for the current fragment's
|
||||||
|
/// neighbors, and possibly, but not necessarily, includes the value of the input for the
|
||||||
|
/// current fragment. That is, over a given area, the implementation can compute x derivatives
|
||||||
|
/// in fewer unique locations than would be allowed for OpDPdxFine.
|
||||||
|
Id OpDPdxCoarse(Id result_type, Id operand);
|
||||||
|
|
||||||
|
/// Result is the partial derivative of the input with respect to the window y coordinate.
|
||||||
|
/// Uses local differencing based on the value of the input for the current fragment's
|
||||||
|
/// neighbors, and possibly, but not necessarily, includes the value of the input for the
|
||||||
|
/// current fragment. That is, over a given area, the implementation can compute y derivatives
|
||||||
|
/// in fewer unique locations than would be allowed for OpDPdyFine.
|
||||||
|
Id OpDPdyCoarse(Id result_type, Id operand);
|
||||||
|
|
||||||
|
/// Result is the same as computing the sum of the absolute values of OpDPdxCoarse and
|
||||||
|
/// OpDPdyCoarse on the input.
|
||||||
|
Id OpFwidthCoarse(Id result_type, Id operand);
|
||||||
|
|
||||||
// Image
|
// Image
|
||||||
|
|
||||||
/// Create a sampled image, containing both a sampler and an image.
|
/// Create a sampled image, containing both a sampler and an image.
|
||||||
@ -763,172 +880,191 @@ public:
|
|||||||
|
|
||||||
/// Sample an image with an implicit level of detail.
|
/// Sample an image with an implicit level of detail.
|
||||||
Id OpImageSampleImplicitLod(Id result_type, Id sampled_image, Id coordinate,
|
Id OpImageSampleImplicitLod(Id result_type, Id sampled_image, Id coordinate,
|
||||||
std::optional<spv::ImageOperandsMask> image_operands = {},
|
std::optional<spv::ImageOperandsMask> image_operands = std::nullopt,
|
||||||
const std::vector<Id>& operands = {});
|
std::span<const Id> operands = {});
|
||||||
|
|
||||||
/// Sample an image with an implicit level of detail.
|
/// Sample an image with an implicit level of detail.
|
||||||
template <typename... Ts>
|
template <typename... Ts>
|
||||||
Id OpImageSampleImplicitLod(Id result_type, Id sampled_image, Id coordinate,
|
requires(...&& std::is_convertible_v<Ts, Id>) Id
|
||||||
spv::ImageOperandsMask image_operands, Ts&&... operands) {
|
OpImageSampleImplicitLod(Id result_type, Id sampled_image, Id coordinate,
|
||||||
|
spv::ImageOperandsMask image_operands, Ts&&... operands) {
|
||||||
return OpImageSampleImplicitLod(result_type, sampled_image, coordinate, image_operands,
|
return OpImageSampleImplicitLod(result_type, sampled_image, coordinate, image_operands,
|
||||||
{operands...});
|
std::span<const Id>({operands...}));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Sample an image using an explicit level of detail.
|
/// Sample an image using an explicit level of detail.
|
||||||
Id OpImageSampleExplicitLod(Id result_type, Id sampled_image, Id coordinate,
|
Id OpImageSampleExplicitLod(Id result_type, Id sampled_image, Id coordinate,
|
||||||
spv::ImageOperandsMask image_operands,
|
spv::ImageOperandsMask image_operands,
|
||||||
const std::vector<Id>& operands = {});
|
std::span<const Id> operands = {});
|
||||||
|
|
||||||
/// Sample an image using an explicit level of detail.
|
/// Sample an image using an explicit level of detail.
|
||||||
template <typename... Ts>
|
template <typename... Ts>
|
||||||
Id OpImageSampleExplicitLod(Id result_type, Id sampled_image, Id coordinate,
|
requires(...&& std::is_convertible_v<Ts, Id>) Id
|
||||||
spv::ImageOperandsMask image_operands, Ts&&... operands) {
|
OpImageSampleExplicitLod(Id result_type, Id sampled_image, Id coordinate,
|
||||||
|
spv::ImageOperandsMask image_operands, Ts&&... operands) {
|
||||||
return OpImageSampleExplicitLod(result_type, sampled_image, coordinate, image_operands,
|
return OpImageSampleExplicitLod(result_type, sampled_image, coordinate, image_operands,
|
||||||
{operands...});
|
std::span<const Id>({operands...}));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Sample an image doing depth-comparison with an implicit level of detail.
|
/// Sample an image doing depth-comparison with an implicit level of detail.
|
||||||
Id OpImageSampleDrefImplicitLod(Id result_type, Id sampled_image, Id coordinate, Id dref,
|
Id OpImageSampleDrefImplicitLod(
|
||||||
std::optional<spv::ImageOperandsMask> image_operands = {},
|
Id result_type, Id sampled_image, Id coordinate, Id dref,
|
||||||
const std::vector<Id>& operands = {});
|
std::optional<spv::ImageOperandsMask> image_operands = std::nullopt,
|
||||||
|
std::span<const Id> operands = {});
|
||||||
|
|
||||||
/// Sample an image doing depth-comparison with an implicit level of detail.
|
/// Sample an image doing depth-comparison with an implicit level of detail.
|
||||||
template <typename... Ts>
|
template <typename... Ts>
|
||||||
Id OpImageSampleDrefImplicitLod(Id result_type, Id sampled_image, Id coordinate, Id dref,
|
requires(...&& std::is_convertible_v<Ts, Id>) Id
|
||||||
spv::ImageOperandsMask image_operands, Ts&&... operands) {
|
OpImageSampleDrefImplicitLod(Id result_type, Id sampled_image, Id coordinate, Id dref,
|
||||||
|
spv::ImageOperandsMask image_operands, Ts&&... operands) {
|
||||||
return OpImageSampleDrefImplicitLod(result_type, sampled_image, coordinate, dref,
|
return OpImageSampleDrefImplicitLod(result_type, sampled_image, coordinate, dref,
|
||||||
image_operands, {operands...});
|
image_operands, std::span<const Id>({operands...}));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Sample an image doing depth-comparison using an explicit level of detail.
|
/// Sample an image doing depth-comparison using an explicit level of detail.
|
||||||
Id OpImageSampleDrefExplicitLod(Id result_type, Id sampled_image, Id coordinate, Id dref,
|
Id OpImageSampleDrefExplicitLod(Id result_type, Id sampled_image, Id coordinate, Id dref,
|
||||||
spv::ImageOperandsMask image_operands,
|
spv::ImageOperandsMask image_operands,
|
||||||
const std::vector<Id>& operands = {});
|
std::span<const Id> operands = {});
|
||||||
|
|
||||||
/// Sample an image doing depth-comparison using an explicit level of detail.
|
/// Sample an image doing depth-comparison using an explicit level of detail.
|
||||||
template <typename... Ts>
|
template <typename... Ts>
|
||||||
Id OpImageSampleDrefExplicitLod(Id result_type, Id sampled_image, Id coordinate, Id dref,
|
requires(...&& std::is_convertible_v<Ts, Id>) Id
|
||||||
spv::ImageOperandsMask image_operands, Ts&&... operands) {
|
OpImageSampleDrefExplicitLod(Id result_type, Id sampled_image, Id coordinate, Id dref,
|
||||||
|
spv::ImageOperandsMask image_operands, Ts&&... operands) {
|
||||||
return OpImageSampleDrefExplicitLod(result_type, sampled_image, coordinate, dref,
|
return OpImageSampleDrefExplicitLod(result_type, sampled_image, coordinate, dref,
|
||||||
image_operands, {operands...});
|
image_operands, std::span<const Id>({operands...}));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Sample an image with with a project coordinate and an implicit level of detail.
|
/// Sample an image with with a project coordinate and an implicit level of detail.
|
||||||
Id OpImageSampleProjImplicitLod(Id result_type, Id sampled_image, Id coordinate,
|
Id OpImageSampleProjImplicitLod(
|
||||||
std::optional<spv::ImageOperandsMask> image_operands = {},
|
Id result_type, Id sampled_image, Id coordinate,
|
||||||
const std::vector<Id>& operands = {});
|
std::optional<spv::ImageOperandsMask> image_operands = std::nullopt,
|
||||||
|
std::span<const Id> operands = {});
|
||||||
|
|
||||||
/// Sample an image with with a project coordinate and an implicit level of detail.
|
/// Sample an image with with a project coordinate and an implicit level of detail.
|
||||||
template <typename... Ts>
|
template <typename... Ts>
|
||||||
Id OpImageSampleProjImplicitLod(Id result_type, Id sampled_image, Id coordinate,
|
requires(...&& std::is_convertible_v<Ts, Id>) Id
|
||||||
spv::ImageOperandsMask image_operands, Ts&&... operands) {
|
OpImageSampleProjImplicitLod(Id result_type, Id sampled_image, Id coordinate,
|
||||||
|
spv::ImageOperandsMask image_operands, Ts&&... operands) {
|
||||||
return OpImageSampleProjImplicitLod(result_type, sampled_image, coordinate, image_operands,
|
return OpImageSampleProjImplicitLod(result_type, sampled_image, coordinate, image_operands,
|
||||||
{operands...});
|
std::span<const Id>({operands...}));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Sample an image with a project coordinate using an explicit level of detail.
|
/// Sample an image with a project coordinate using an explicit level of detail.
|
||||||
Id OpImageSampleProjExplicitLod(Id result_type, Id sampled_image, Id coordinate,
|
Id OpImageSampleProjExplicitLod(Id result_type, Id sampled_image, Id coordinate,
|
||||||
spv::ImageOperandsMask image_operands,
|
spv::ImageOperandsMask image_operands,
|
||||||
const std::vector<Id>& operands = {});
|
std::span<const Id> operands = {});
|
||||||
|
|
||||||
/// Sample an image with a project coordinate using an explicit level of detail.
|
/// Sample an image with a project coordinate using an explicit level of detail.
|
||||||
template <typename... Ts>
|
template <typename... Ts>
|
||||||
Id OpImageSampleProjExplicitLod(Id result_type, Id sampled_image, Id coordinate,
|
requires(...&& std::is_convertible_v<Ts, Id>) Id
|
||||||
spv::ImageOperandsMask image_operands, Ts&&... operands) {
|
OpImageSampleProjExplicitLod(Id result_type, Id sampled_image, Id coordinate,
|
||||||
|
spv::ImageOperandsMask image_operands, Ts&&... operands) {
|
||||||
return OpImageSampleProjExplicitLod(result_type, sampled_image, coordinate, image_operands,
|
return OpImageSampleProjExplicitLod(result_type, sampled_image, coordinate, image_operands,
|
||||||
{operands...});
|
std::span<const Id>({operands...}));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Sample an image with a project coordinate, doing depth-comparison, with an implicit level of
|
/// Sample an image with a project coordinate, doing depth-comparison, with an implicit level of
|
||||||
/// detail.
|
/// detail.
|
||||||
Id OpImageSampleProjDrefImplicitLod(Id result_type, Id sampled_image, Id coordinate, Id dref,
|
Id OpImageSampleProjDrefImplicitLod(
|
||||||
std::optional<spv::ImageOperandsMask> image_operands = {},
|
Id result_type, Id sampled_image, Id coordinate, Id dref,
|
||||||
const std::vector<Id>& operands = {});
|
std::optional<spv::ImageOperandsMask> image_operands = std::nullopt,
|
||||||
|
std::span<const Id> operands = {});
|
||||||
|
|
||||||
/// Sample an image with a project coordinate, doing depth-comparison, with an implicit level of
|
/// Sample an image with a project coordinate, doing depth-comparison, with an implicit level of
|
||||||
/// detail.
|
/// detail.
|
||||||
template <typename... Ts>
|
template <typename... Ts>
|
||||||
Id OpImageSampleProjDrefImplicitLod(Id result_type, Id sampled_image, Id coordinate, Id dref,
|
requires(...&& std::is_convertible_v<Ts, Id>) Id
|
||||||
spv::ImageOperandsMask image_operands, Ts&&... operands) {
|
OpImageSampleProjDrefImplicitLod(Id result_type, Id sampled_image, Id coordinate, Id dref,
|
||||||
|
spv::ImageOperandsMask image_operands, Ts&&... operands) {
|
||||||
return OpImageSampleProjDrefImplicitLod(result_type, sampled_image, coordinate, dref,
|
return OpImageSampleProjDrefImplicitLod(result_type, sampled_image, coordinate, dref,
|
||||||
image_operands, {operands...});
|
image_operands, std::span<const Id>({operands...}));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Sample an image with a project coordinate, doing depth-comparison, using an explicit level
|
/// Sample an image with a project coordinate, doing depth-comparison, using an explicit level
|
||||||
/// of detail.
|
/// of detail.
|
||||||
Id OpImageSampleProjDrefExplicitLod(Id result_type, Id sampled_image, Id coordinate, Id dref,
|
Id OpImageSampleProjDrefExplicitLod(Id result_type, Id sampled_image, Id coordinate, Id dref,
|
||||||
spv::ImageOperandsMask image_operands,
|
spv::ImageOperandsMask image_operands,
|
||||||
const std::vector<Id>& operands = {});
|
std::span<const Id> operands = {});
|
||||||
|
|
||||||
/// Sample an image with a project coordinate, doing depth-comparison, using an explicit level
|
/// Sample an image with a project coordinate, doing depth-comparison, using an explicit level
|
||||||
/// of detail.
|
/// of detail.
|
||||||
template <typename... Ts>
|
template <typename... Ts>
|
||||||
Id OpImageSampleProjDrefExplicitLod(Id result_type, Id sampled_image, Id coordinate, Id dref,
|
requires(...&& std::is_convertible_v<Ts, Id>) Id
|
||||||
spv::ImageOperandsMask image_operands, Ts&&... operands) {
|
OpImageSampleProjDrefExplicitLod(Id result_type, Id sampled_image, Id coordinate, Id dref,
|
||||||
|
spv::ImageOperandsMask image_operands, Ts&&... operands) {
|
||||||
return OpImageSampleProjDrefExplicitLod(result_type, sampled_image, coordinate, dref,
|
return OpImageSampleProjDrefExplicitLod(result_type, sampled_image, coordinate, dref,
|
||||||
image_operands, {operands...});
|
image_operands, std::span<const Id>({operands...}));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Fetch a single texel from an image whose Sampled operand is 1.
|
/// Fetch a single texel from an image whose Sampled operand is 1.
|
||||||
Id OpImageFetch(Id result_type, Id sampled_image, Id coordinate,
|
Id OpImageFetch(Id result_type, Id sampled_image, Id coordinate,
|
||||||
std::optional<spv::ImageOperandsMask> image_operands = {},
|
std::optional<spv::ImageOperandsMask> image_operands = std::nullopt,
|
||||||
const std::vector<Id>& operands = {});
|
std::span<const Id> operands = {});
|
||||||
|
|
||||||
/// Fetch a single texel from an image whose Sampled operand is 1.
|
/// Fetch a single texel from an image whose Sampled operand is 1.
|
||||||
template <typename... Ts>
|
template <typename... Ts>
|
||||||
Id OpImageFetch(Id result_type, Id sampled_image, Id coordinate,
|
requires(...&& std::is_convertible_v<Ts, Id>) Id
|
||||||
spv::ImageOperandsMask image_operands, Ts&&... operands) {
|
OpImageFetch(Id result_type, Id sampled_image, Id coordinate,
|
||||||
return OpImageFetch(result_type, sampled_image, coordinate, image_operands, {operands...});
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Gathers the requested component from four texels.
|
|
||||||
Id OpImageGather(Id result_type, Id sampled_image, Id coordinate, Id component,
|
|
||||||
std::optional<spv::ImageOperandsMask> image_operands = {},
|
|
||||||
const std::vector<Id>& operands = {});
|
|
||||||
|
|
||||||
/// Gathers the requested component from four texels.
|
|
||||||
template <typename... Ts>
|
|
||||||
Id OpImageGather(Id result_type, Id sampled_image, Id coordinate, Id component,
|
|
||||||
spv::ImageOperandsMask image_operands, Ts&&... operands) {
|
spv::ImageOperandsMask image_operands, Ts&&... operands) {
|
||||||
|
return OpImageFetch(result_type, sampled_image, coordinate, image_operands,
|
||||||
|
std::span<const Id>({operands...}));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Gathers the requested component from four texels.
|
||||||
|
Id OpImageGather(Id result_type, Id sampled_image, Id coordinate, Id component,
|
||||||
|
std::optional<spv::ImageOperandsMask> image_operands = std::nullopt,
|
||||||
|
std::span<const Id> operands = {});
|
||||||
|
|
||||||
|
/// Gathers the requested component from four texels.
|
||||||
|
template <typename... Ts>
|
||||||
|
requires(...&& std::is_convertible_v<Ts, Id>) Id
|
||||||
|
OpImageGather(Id result_type, Id sampled_image, Id coordinate, Id component,
|
||||||
|
spv::ImageOperandsMask image_operands, Ts&&... operands) {
|
||||||
return OpImageGather(result_type, sampled_image, coordinate, component, image_operands,
|
return OpImageGather(result_type, sampled_image, coordinate, component, image_operands,
|
||||||
{operands...});
|
std::span<const Id>({operands...}));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Gathers the requested depth-comparison from four texels.
|
/// Gathers the requested depth-comparison from four texels.
|
||||||
Id OpImageDrefGather(Id result_type, Id sampled_image, Id coordinate, Id dref,
|
Id OpImageDrefGather(Id result_type, Id sampled_image, Id coordinate, Id dref,
|
||||||
std::optional<spv::ImageOperandsMask> image_operands = {},
|
std::optional<spv::ImageOperandsMask> image_operands = std::nullopt,
|
||||||
const std::vector<Id>& operands = {});
|
std::span<const Id> operands = {});
|
||||||
|
|
||||||
/// Gathers the requested depth-comparison from four texels.
|
/// Gathers the requested depth-comparison from four texels.
|
||||||
template <typename... Ts>
|
template <typename... Ts>
|
||||||
Id OpImageDrefGather(Id result_type, Id sampled_image, Id coordinate, Id dref,
|
requires(...&& std::is_convertible_v<Ts, Id>) Id
|
||||||
spv::ImageOperandsMask image_operands, Ts&&... operands) {
|
OpImageDrefGather(Id result_type, Id sampled_image, Id coordinate, Id dref,
|
||||||
|
spv::ImageOperandsMask image_operands, Ts&&... operands) {
|
||||||
return OpImageDrefGather(result_type, sampled_image, coordinate, dref, image_operands,
|
return OpImageDrefGather(result_type, sampled_image, coordinate, dref, image_operands,
|
||||||
{operands...});
|
std::span<const Id>({operands...}));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Read a texel from an image without a sampler.
|
/// Read a texel from an image without a sampler.
|
||||||
Id OpImageRead(Id result_type, Id sampled_image, Id coordinate,
|
Id OpImageRead(Id result_type, Id sampled_image, Id coordinate,
|
||||||
std::optional<spv::ImageOperandsMask> image_operands = {},
|
std::optional<spv::ImageOperandsMask> image_operands = std::nullopt,
|
||||||
const std::vector<Id>& operands = {});
|
std::span<const Id> operands = {});
|
||||||
|
|
||||||
/// Read a texel from an image without a sampler.
|
/// Read a texel from an image without a sampler.
|
||||||
template <typename... Ts>
|
template <typename... Ts>
|
||||||
Id OpImageRead(Id result_type, Id sampled_image, Id coordinate,
|
requires(...&& std::is_convertible_v<Ts, Id>) Id
|
||||||
spv::ImageOperandsMask image_operands, Ts&&... operands) {
|
OpImageRead(Id result_type, Id sampled_image, Id coordinate,
|
||||||
return OpImageRead(result_type, sampled_image, coordinate, image_operands, {operands...});
|
spv::ImageOperandsMask image_operands, Ts&&... operands) {
|
||||||
|
return OpImageRead(result_type, sampled_image, coordinate, image_operands,
|
||||||
|
std::span<const Id>({operands...}));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Write a texel to an image without a sampler.
|
/// Write a texel to an image without a sampler.
|
||||||
Id OpImageWrite(Id image, Id coordinate, Id texel,
|
Id OpImageWrite(Id image, Id coordinate, Id texel,
|
||||||
std::optional<spv::ImageOperandsMask> image_operands = {},
|
std::optional<spv::ImageOperandsMask> image_operands = std::nullopt,
|
||||||
const std::vector<Id>& operands = {});
|
std::span<const Id> operands = {});
|
||||||
|
|
||||||
/// Write a texel to an image without a sampler.
|
/// Write a texel to an image without a sampler.
|
||||||
template <typename... Ts>
|
template <typename... Ts>
|
||||||
Id OpImageWrite(Id image, Id coordinate, Id texel, spv::ImageOperandsMask image_operands,
|
requires(...&& std::is_convertible_v<Ts, Id>) Id
|
||||||
Ts&&... operands) {
|
OpImageWrite(Id image, Id coordinate, Id texel, spv::ImageOperandsMask image_operands,
|
||||||
return OpImageWrite(image, coordinate, texel, image_operands, {operands...});
|
Ts&&... operands) {
|
||||||
|
return OpImageWrite(image, coordinate, texel, image_operands,
|
||||||
|
std::span<const Id>({operands...}));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Extract the image from a sampled image.
|
/// Extract the image from a sampled image.
|
||||||
@ -950,6 +1086,50 @@ public:
|
|||||||
/// Query the number of samples available per texel fetch in a multisample image.
|
/// Query the number of samples available per texel fetch in a multisample image.
|
||||||
Id OpImageQuerySamples(Id result_type, Id image);
|
Id OpImageQuerySamples(Id result_type, Id image);
|
||||||
|
|
||||||
|
/// Sample a sparse image with an implicit level of detail.
|
||||||
|
Id OpImageSparseSampleImplicitLod(Id result_type, Id sampled_image, Id coordinate,
|
||||||
|
std::optional<spv::ImageOperandsMask> image_operands,
|
||||||
|
std::span<const Id> operands);
|
||||||
|
|
||||||
|
/// Sample a sparse image using an explicit level of detail.
|
||||||
|
Id OpImageSparseSampleExplicitLod(Id result_type, Id sampled_image, Id coordinate,
|
||||||
|
spv::ImageOperandsMask image_operands,
|
||||||
|
std::span<const Id> operands);
|
||||||
|
|
||||||
|
/// Sample a sparse image doing depth-comparison with an implicit level of detail.
|
||||||
|
Id OpImageSparseSampleDrefImplicitLod(Id result_type, Id sampled_image, Id coordinate, Id dref,
|
||||||
|
std::optional<spv::ImageOperandsMask> image_operands,
|
||||||
|
std::span<const Id> operands);
|
||||||
|
|
||||||
|
/// Sample a sparse image doing depth-comparison using an explicit level of detail.
|
||||||
|
Id OpImageSparseSampleDrefExplicitLod(Id result_type, Id sampled_image, Id coordinate, Id dref,
|
||||||
|
spv::ImageOperandsMask image_operands,
|
||||||
|
std::span<const Id> operands);
|
||||||
|
|
||||||
|
/// Fetch a single texel from a sampled sparse image.
|
||||||
|
Id OpImageSparseFetch(Id result_type, Id image, Id coordinate,
|
||||||
|
std::optional<spv::ImageOperandsMask> image_operands,
|
||||||
|
std::span<const Id> operands);
|
||||||
|
|
||||||
|
/// Gathers the requested component from four texels of a sparse image.
|
||||||
|
Id OpImageSparseGather(Id result_type, Id sampled_image, Id coordinate, Id component,
|
||||||
|
std::optional<spv::ImageOperandsMask> image_operands,
|
||||||
|
std::span<const Id> operands);
|
||||||
|
|
||||||
|
/// Gathers the requested depth-comparison from four texels of a sparse image.
|
||||||
|
Id OpImageSparseDrefGather(Id result_type, Id sampled_image, Id coordinate, Id dref,
|
||||||
|
std::optional<spv::ImageOperandsMask> image_operands,
|
||||||
|
std::span<const Id> operands);
|
||||||
|
|
||||||
|
/// Translates a Resident Code into a Boolean. Result is false if any of the texels were in
|
||||||
|
/// uncommitted texture memory, and true otherwise.
|
||||||
|
Id OpImageSparseTexelsResident(Id result_type, Id resident_code);
|
||||||
|
|
||||||
|
/// Read a texel from a sparse image without a sampler.
|
||||||
|
Id OpImageSparseRead(Id result_type, Id image, Id coordinate,
|
||||||
|
std::optional<spv::ImageOperandsMask> image_operands,
|
||||||
|
std::span<const Id> operands);
|
||||||
|
|
||||||
// Group
|
// Group
|
||||||
|
|
||||||
/// Computes a bitfield value combining the Predicate value from all invocations in the current
|
/// Computes a bitfield value combining the Predicate value from all invocations in the current
|
||||||
@ -972,7 +1152,29 @@ public:
|
|||||||
|
|
||||||
/// Return the value of the invocation identified by the current invocation's id within the
|
/// Return the value of the invocation identified by the current invocation's id within the
|
||||||
/// group xor'ed with mask.
|
/// group xor'ed with mask.
|
||||||
Id OpGroupNonUniformShuffleXor(Id result_type, spv::Scope scope, Id value, Id mask);
|
Id OpGroupNonUniformShuffleXor(Id result_type, Id scope, Id value, Id mask);
|
||||||
|
|
||||||
|
/// Evaluates a predicate for all active invocations in the group, resulting in
|
||||||
|
/// true if predicate evaluates to true for all active invocations in the
|
||||||
|
/// group, otherwise the result is false.
|
||||||
|
Id OpGroupNonUniformAll(Id result_type, Id scope, Id predicate);
|
||||||
|
|
||||||
|
/// Evaluates a predicate for all active invocations in the group,
|
||||||
|
/// resulting in true if predicate evaluates to true for any active
|
||||||
|
/// invocation in the group, otherwise the result is false.
|
||||||
|
Id OpGroupNonUniformAny(Id result_type, Id scope, Id predicate);
|
||||||
|
|
||||||
|
/// Evaluates a value for all active invocations in the group. The result
|
||||||
|
/// is true if Value is equal for all active invocations in the group.
|
||||||
|
/// Otherwise, the result is false.
|
||||||
|
Id OpGroupNonUniformAllEqual(Id result_type, Id scope, Id value);
|
||||||
|
|
||||||
|
/// Result is a bitfield value combining the Predicate value from all
|
||||||
|
/// invocations in the group that execute the same dynamic instance of this
|
||||||
|
/// instruction. The bit is set to one if the corresponding invocation is
|
||||||
|
/// active and the Predicate for that invocation evaluated to true;
|
||||||
|
/// otherwise, it is set to zero.
|
||||||
|
Id OpGroupNonUniformBallot(Id result_type, Id scope, Id predicate);
|
||||||
|
|
||||||
// Atomic
|
// Atomic
|
||||||
|
|
||||||
@ -1077,38 +1279,27 @@ public:
|
|||||||
Id OpAtomicXor(Id result_type, Id pointer, Id memory, Id semantics, Id value);
|
Id OpAtomicXor(Id result_type, Id pointer, Id memory, Id semantics, Id value);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Id AddCode(std::unique_ptr<Op> op);
|
|
||||||
|
|
||||||
Id AddCode(spv::Op opcode, std::optional<std::uint32_t> id = {});
|
|
||||||
|
|
||||||
Id AddDeclaration(std::unique_ptr<Op> op);
|
|
||||||
|
|
||||||
void AddAnnotation(std::unique_ptr<Op> op);
|
|
||||||
|
|
||||||
Id GetGLSLstd450();
|
Id GetGLSLstd450();
|
||||||
|
|
||||||
std::uint32_t version{};
|
std::uint32_t version{};
|
||||||
std::uint32_t bound{1};
|
std::uint32_t bound{};
|
||||||
|
|
||||||
std::unordered_set<std::string> extensions;
|
std::unordered_set<std::string> extensions;
|
||||||
std::unordered_set<spv::Capability> capabilities;
|
std::unordered_set<spv::Capability> capabilities;
|
||||||
std::unordered_set<std::unique_ptr<Op>> ext_inst_import;
|
std::optional<Id> glsl_std_450;
|
||||||
std::unique_ptr<Op> glsl_std_450;
|
|
||||||
|
|
||||||
spv::AddressingModel addressing_model{spv::AddressingModel::Logical};
|
spv::AddressingModel addressing_model{spv::AddressingModel::Logical};
|
||||||
spv::MemoryModel memory_model{spv::MemoryModel::GLSL450};
|
spv::MemoryModel memory_model{spv::MemoryModel::GLSL450};
|
||||||
|
|
||||||
std::vector<std::unique_ptr<Op>> entry_points;
|
std::unique_ptr<Stream> ext_inst_imports;
|
||||||
std::vector<std::unique_ptr<Op>> execution_modes;
|
std::unique_ptr<Stream> entry_points;
|
||||||
std::vector<std::unique_ptr<Op>> debug;
|
std::unique_ptr<Stream> execution_modes;
|
||||||
std::vector<std::unique_ptr<Op>> annotations;
|
std::unique_ptr<Stream> debug;
|
||||||
std::vector<std::unique_ptr<Op>> declarations;
|
std::unique_ptr<Stream> annotations;
|
||||||
|
std::unique_ptr<Declarations> declarations;
|
||||||
std::vector<Id> global_variables;
|
std::unique_ptr<Stream> global_variables;
|
||||||
|
std::unique_ptr<Stream> code;
|
||||||
std::vector<Id> code;
|
std::vector<std::uint32_t> deferred_phi_nodes;
|
||||||
|
|
||||||
std::vector<std::unique_ptr<Op>> code_store;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Sirit
|
} // namespace Sirit
|
||||||
|
10
externals/sirit/src/CMakeLists.txt
vendored
10
externals/sirit/src/CMakeLists.txt
vendored
@ -1,22 +1,14 @@
|
|||||||
add_library(sirit
|
add_library(sirit
|
||||||
../include/sirit/sirit.h
|
../include/sirit/sirit.h
|
||||||
sirit.cpp
|
sirit.cpp
|
||||||
op.cpp
|
|
||||||
op.h
|
|
||||||
stream.cpp
|
|
||||||
stream.h
|
stream.h
|
||||||
operand.cpp
|
|
||||||
operand.h
|
|
||||||
literal_number.cpp
|
|
||||||
literal_number.h
|
|
||||||
literal_string.cpp
|
|
||||||
literal_string.h
|
|
||||||
common_types.h
|
common_types.h
|
||||||
instructions/type.cpp
|
instructions/type.cpp
|
||||||
instructions/constant.cpp
|
instructions/constant.cpp
|
||||||
instructions/function.cpp
|
instructions/function.cpp
|
||||||
instructions/flow.cpp
|
instructions/flow.cpp
|
||||||
instructions/debug.cpp
|
instructions/debug.cpp
|
||||||
|
instructions/derivatives.cpp
|
||||||
instructions/memory.cpp
|
instructions/memory.cpp
|
||||||
instructions/annotation.cpp
|
instructions/annotation.cpp
|
||||||
instructions/misc.cpp
|
instructions/misc.cpp
|
||||||
|
30
externals/sirit/src/instructions/annotation.cpp
vendored
30
externals/sirit/src/instructions/annotation.cpp
vendored
@ -4,32 +4,24 @@
|
|||||||
* 3-Clause BSD License
|
* 3-Clause BSD License
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <memory>
|
#include <span>
|
||||||
#include <vector>
|
|
||||||
#include "common_types.h"
|
|
||||||
#include "op.h"
|
|
||||||
#include "sirit/sirit.h"
|
#include "sirit/sirit.h"
|
||||||
|
|
||||||
|
#include "stream.h"
|
||||||
|
|
||||||
namespace Sirit {
|
namespace Sirit {
|
||||||
|
|
||||||
Id Module::Decorate(Id target, spv::Decoration decoration, const std::vector<Literal>& literals) {
|
Id Module::Decorate(Id target, spv::Decoration decoration, std::span<const Literal> literals) {
|
||||||
auto op{std::make_unique<Op>(spv::Op::OpDecorate)};
|
annotations->Reserve(3 + literals.size());
|
||||||
op->Add(target);
|
return *annotations << spv::Op::OpDecorate << target << decoration << literals << EndOp{};
|
||||||
op->Add(static_cast<u32>(decoration));
|
|
||||||
op->Add(literals);
|
|
||||||
AddAnnotation(std::move(op));
|
|
||||||
return target;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Id Module::MemberDecorate(Id structure_type, Literal member, spv::Decoration decoration,
|
Id Module::MemberDecorate(Id structure_type, Literal member, spv::Decoration decoration,
|
||||||
const std::vector<Literal>& literals) {
|
std::span<const Literal> literals) {
|
||||||
auto op{std::make_unique<Op>(spv::Op::OpMemberDecorate)};
|
annotations->Reserve(4 + literals.size());
|
||||||
op->Add(structure_type);
|
return *annotations << spv::Op::OpMemberDecorate << structure_type << member << decoration
|
||||||
op->Add(member);
|
<< literals << EndOp{};
|
||||||
op->Add(static_cast<u32>(decoration));
|
|
||||||
op->Add(literals);
|
|
||||||
AddAnnotation(std::move(op));
|
|
||||||
return structure_type;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace Sirit
|
} // namespace Sirit
|
||||||
|
25
externals/sirit/src/instructions/arithmetic.cpp
vendored
25
externals/sirit/src/instructions/arithmetic.cpp
vendored
@ -4,35 +4,22 @@
|
|||||||
* 3-Clause BSD License
|
* 3-Clause BSD License
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <memory>
|
|
||||||
#include "common_types.h"
|
|
||||||
#include "op.h"
|
|
||||||
#include "sirit/sirit.h"
|
#include "sirit/sirit.h"
|
||||||
|
|
||||||
|
#include "stream.h"
|
||||||
|
|
||||||
namespace Sirit {
|
namespace Sirit {
|
||||||
|
|
||||||
#define DEFINE_UNARY(funcname, opcode) \
|
#define DEFINE_UNARY(funcname, opcode) \
|
||||||
Id Module::funcname(Id result_type, Id operand) { \
|
Id Module::funcname(Id result_type, Id operand) { \
|
||||||
auto op{std::make_unique<Op>(opcode, bound++, result_type)}; \
|
code->Reserve(4); \
|
||||||
op->Add(operand); \
|
return *code << OpId{opcode, result_type} << operand << EndOp{}; \
|
||||||
return AddCode(std::move(op)); \
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#define DEFINE_BINARY(funcname, opcode) \
|
#define DEFINE_BINARY(funcname, opcode) \
|
||||||
Id Module::funcname(Id result_type, Id operand_1, Id operand_2) { \
|
Id Module::funcname(Id result_type, Id operand_1, Id operand_2) { \
|
||||||
auto op{std::make_unique<Op>(opcode, bound++, result_type)}; \
|
code->Reserve(5); \
|
||||||
op->Add(operand_1); \
|
return *code << OpId{opcode, result_type} << operand_1 << operand_2 << EndOp{}; \
|
||||||
op->Add(operand_2); \
|
|
||||||
return AddCode(std::move(op)); \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define DEFINE_TRINARY(funcname, opcode) \
|
|
||||||
Id Module::funcname(Id result_type, Id operand_1, Id operand_2, Id operand_3) { \
|
|
||||||
auto op{std::make_unique<Op>(opcode, bound++, result_type)}; \
|
|
||||||
op->Add(operand_1); \
|
|
||||||
op->Add(operand_2); \
|
|
||||||
op->Add(operand_3); \
|
|
||||||
return AddCode(std::move(op)); \
|
|
||||||
}
|
}
|
||||||
|
|
||||||
DEFINE_UNARY(OpSNegate, spv::Op::OpSNegate)
|
DEFINE_UNARY(OpSNegate, spv::Op::OpSNegate)
|
||||||
|
138
externals/sirit/src/instructions/atomic.cpp
vendored
138
externals/sirit/src/instructions/atomic.cpp
vendored
@ -4,145 +4,101 @@
|
|||||||
* 3-Clause BSD License
|
* 3-Clause BSD License
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "common_types.h"
|
|
||||||
#include "op.h"
|
|
||||||
#include "sirit/sirit.h"
|
#include "sirit/sirit.h"
|
||||||
|
|
||||||
|
#include "stream.h"
|
||||||
|
|
||||||
namespace Sirit {
|
namespace Sirit {
|
||||||
|
|
||||||
Id Module::OpAtomicLoad(Id result_type, Id pointer, Id memory, Id semantics) {
|
Id Module::OpAtomicLoad(Id result_type, Id pointer, Id memory, Id semantics) {
|
||||||
auto op{std::make_unique<Op>(spv::Op::OpAtomicLoad, bound++, result_type)};
|
code->Reserve(6);
|
||||||
op->Add(pointer);
|
return *code << OpId{spv::Op::OpAtomicLoad, result_type} << pointer << memory << semantics
|
||||||
op->Add(memory);
|
<< EndOp{};
|
||||||
op->Add(semantics);
|
|
||||||
return AddCode(std::move(op));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Id Module::OpAtomicStore(Id pointer, Id memory, Id semantics, Id value) {
|
Id Module::OpAtomicStore(Id pointer, Id memory, Id semantics, Id value) {
|
||||||
auto op{std::make_unique<Op>(spv::Op::OpAtomicStore)};
|
code->Reserve(5);
|
||||||
op->Add(pointer);
|
return *code << OpId{spv::Op::OpAtomicStore} << pointer << memory << semantics << value
|
||||||
op->Add(memory);
|
<< EndOp{};
|
||||||
op->Add(semantics);
|
|
||||||
op->Add(value);
|
|
||||||
return AddCode(std::move(op));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Id Module::OpAtomicExchange(Id result_type, Id pointer, Id memory, Id semantics, Id value) {
|
Id Module::OpAtomicExchange(Id result_type, Id pointer, Id memory, Id semantics, Id value) {
|
||||||
auto op{std::make_unique<Op>(spv::Op::OpAtomicExchange, bound++, result_type)};
|
code->Reserve(7);
|
||||||
op->Add(pointer);
|
return *code << OpId{spv::Op::OpAtomicExchange, result_type} << pointer << memory << semantics
|
||||||
op->Add(memory);
|
<< value << EndOp{};
|
||||||
op->Add(semantics);
|
|
||||||
op->Add(value);
|
|
||||||
return AddCode(std::move(op));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Id Module::OpAtomicCompareExchange(Id result_type, Id pointer, Id memory, Id equal, Id unequal,
|
Id Module::OpAtomicCompareExchange(Id result_type, Id pointer, Id memory, Id equal, Id unequal,
|
||||||
Id value, Id comparator) {
|
Id value, Id comparator) {
|
||||||
auto op{std::make_unique<Op>(spv::Op::OpAtomicCompareExchange, bound++, result_type)};
|
code->Reserve(9);
|
||||||
op->Add(pointer);
|
return *code << OpId{spv::Op::OpAtomicCompareExchange, result_type} << pointer << memory
|
||||||
op->Add(memory);
|
<< equal << unequal << value << comparator << EndOp{};
|
||||||
op->Add(equal);
|
|
||||||
op->Add(unequal);
|
|
||||||
op->Add(value);
|
|
||||||
op->Add(comparator);
|
|
||||||
return AddCode(std::move(op));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Id Module::OpAtomicIIncrement(Id result_type, Id pointer, Id memory, Id semantics) {
|
Id Module::OpAtomicIIncrement(Id result_type, Id pointer, Id memory, Id semantics) {
|
||||||
auto op{std::make_unique<Op>(spv::Op::OpAtomicIIncrement, bound++, result_type)};
|
code->Reserve(6);
|
||||||
op->Add(pointer);
|
return *code << OpId{spv::Op::OpAtomicIIncrement, result_type} << pointer << memory << semantics
|
||||||
op->Add(memory);
|
<< EndOp{};
|
||||||
op->Add(semantics);
|
|
||||||
return AddCode(std::move(op));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Id Module::OpAtomicIDecrement(Id result_type, Id pointer, Id memory, Id semantics) {
|
Id Module::OpAtomicIDecrement(Id result_type, Id pointer, Id memory, Id semantics) {
|
||||||
auto op{std::make_unique<Op>(spv::Op::OpAtomicIDecrement, bound++, result_type)};
|
code->Reserve(6);
|
||||||
op->Add(pointer);
|
return *code << OpId{spv::Op::OpAtomicIDecrement, result_type} << pointer << memory << semantics
|
||||||
op->Add(memory);
|
<< EndOp{};
|
||||||
op->Add(semantics);
|
|
||||||
return AddCode(std::move(op));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Id Module::OpAtomicIAdd(Id result_type, Id pointer, Id memory, Id semantics, Id value) {
|
Id Module::OpAtomicIAdd(Id result_type, Id pointer, Id memory, Id semantics, Id value) {
|
||||||
auto op{std::make_unique<Op>(spv::Op::OpAtomicIAdd, bound++, result_type)};
|
code->Reserve(7);
|
||||||
op->Add(pointer);
|
return *code << OpId{spv::Op::OpAtomicIAdd, result_type} << pointer << memory << semantics
|
||||||
op->Add(memory);
|
<< value << EndOp{};
|
||||||
op->Add(semantics);
|
|
||||||
op->Add(value);
|
|
||||||
return AddCode(std::move(op));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Id Module::OpAtomicISub(Id result_type, Id pointer, Id memory, Id semantics, Id value) {
|
Id Module::OpAtomicISub(Id result_type, Id pointer, Id memory, Id semantics, Id value) {
|
||||||
auto op{std::make_unique<Op>(spv::Op::OpAtomicISub, bound++, result_type)};
|
code->Reserve(7);
|
||||||
op->Add(pointer);
|
return *code << OpId{spv::Op::OpAtomicISub, result_type} << pointer << memory << semantics
|
||||||
op->Add(memory);
|
<< value << EndOp{};
|
||||||
op->Add(semantics);
|
|
||||||
op->Add(value);
|
|
||||||
return AddCode(std::move(op));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Id Module::OpAtomicSMin(Id result_type, Id pointer, Id memory, Id semantics, Id value) {
|
Id Module::OpAtomicSMin(Id result_type, Id pointer, Id memory, Id semantics, Id value) {
|
||||||
auto op{std::make_unique<Op>(spv::Op::OpAtomicSMin, bound++, result_type)};
|
code->Reserve(7);
|
||||||
op->Add(pointer);
|
return *code << OpId{spv::Op::OpAtomicSMin, result_type} << pointer << memory << semantics
|
||||||
op->Add(memory);
|
<< value << EndOp{};
|
||||||
op->Add(semantics);
|
|
||||||
op->Add(value);
|
|
||||||
return AddCode(std::move(op));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Id Module::OpAtomicUMin(Id result_type, Id pointer, Id memory, Id semantics, Id value) {
|
Id Module::OpAtomicUMin(Id result_type, Id pointer, Id memory, Id semantics, Id value) {
|
||||||
auto op{std::make_unique<Op>(spv::Op::OpAtomicUMin, bound++, result_type)};
|
code->Reserve(7);
|
||||||
op->Add(pointer);
|
return *code << OpId{spv::Op::OpAtomicUMin, result_type} << pointer << memory << semantics
|
||||||
op->Add(memory);
|
<< value << EndOp{};
|
||||||
op->Add(semantics);
|
|
||||||
op->Add(value);
|
|
||||||
return AddCode(std::move(op));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Id Module::OpAtomicSMax(Id result_type, Id pointer, Id memory, Id semantics, Id value) {
|
Id Module::OpAtomicSMax(Id result_type, Id pointer, Id memory, Id semantics, Id value) {
|
||||||
auto op{std::make_unique<Op>(spv::Op::OpAtomicSMax, bound++, result_type)};
|
code->Reserve(7);
|
||||||
op->Add(pointer);
|
return *code << OpId{spv::Op::OpAtomicSMax, result_type} << pointer << memory << semantics
|
||||||
op->Add(memory);
|
<< value << EndOp{};
|
||||||
op->Add(semantics);
|
|
||||||
op->Add(value);
|
|
||||||
return AddCode(std::move(op));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Id Module::OpAtomicUMax(Id result_type, Id pointer, Id memory, Id semantics, Id value) {
|
Id Module::OpAtomicUMax(Id result_type, Id pointer, Id memory, Id semantics, Id value) {
|
||||||
auto op{std::make_unique<Op>(spv::Op::OpAtomicUMax, bound++, result_type)};
|
code->Reserve(7);
|
||||||
op->Add(pointer);
|
return *code << OpId{spv::Op::OpAtomicUMax, result_type} << pointer << memory << semantics
|
||||||
op->Add(memory);
|
<< value << EndOp{};
|
||||||
op->Add(semantics);
|
|
||||||
op->Add(value);
|
|
||||||
return AddCode(std::move(op));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Id Module::OpAtomicAnd(Id result_type, Id pointer, Id memory, Id semantics, Id value) {
|
Id Module::OpAtomicAnd(Id result_type, Id pointer, Id memory, Id semantics, Id value) {
|
||||||
auto op{std::make_unique<Op>(spv::Op::OpAtomicAnd, bound++, result_type)};
|
code->Reserve(7);
|
||||||
op->Add(pointer);
|
return *code << OpId{spv::Op::OpAtomicAnd, result_type} << pointer << memory << semantics
|
||||||
op->Add(memory);
|
<< value << EndOp{};
|
||||||
op->Add(semantics);
|
|
||||||
op->Add(value);
|
|
||||||
return AddCode(std::move(op));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Id Module::OpAtomicOr(Id result_type, Id pointer, Id memory, Id semantics, Id value) {
|
Id Module::OpAtomicOr(Id result_type, Id pointer, Id memory, Id semantics, Id value) {
|
||||||
auto op{std::make_unique<Op>(spv::Op::OpAtomicOr, bound++, result_type)};
|
code->Reserve(7);
|
||||||
op->Add(pointer);
|
return *code << OpId{spv::Op::OpAtomicOr, result_type} << pointer << memory << semantics
|
||||||
op->Add(memory);
|
<< value << EndOp{};
|
||||||
op->Add(semantics);
|
|
||||||
op->Add(value);
|
|
||||||
return AddCode(std::move(op));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Id Module::OpAtomicXor(Id result_type, Id pointer, Id memory, Id semantics, Id value) {
|
Id Module::OpAtomicXor(Id result_type, Id pointer, Id memory, Id semantics, Id value) {
|
||||||
auto op{std::make_unique<Op>(spv::Op::OpAtomicXor, bound++, result_type)};
|
code->Reserve(7);
|
||||||
op->Add(pointer);
|
return *code << OpId{spv::Op::OpAtomicXor, result_type} << pointer << memory << semantics
|
||||||
op->Add(memory);
|
<< value << EndOp{};
|
||||||
op->Add(semantics);
|
|
||||||
op->Add(value);
|
|
||||||
return AddCode(std::move(op));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace Sirit
|
} // namespace Sirit
|
||||||
|
17
externals/sirit/src/instructions/barrier.cpp
vendored
17
externals/sirit/src/instructions/barrier.cpp
vendored
@ -4,25 +4,20 @@
|
|||||||
* 3-Clause BSD License
|
* 3-Clause BSD License
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <memory>
|
|
||||||
#include "op.h"
|
|
||||||
#include "sirit/sirit.h"
|
#include "sirit/sirit.h"
|
||||||
|
|
||||||
|
#include "stream.h"
|
||||||
|
|
||||||
namespace Sirit {
|
namespace Sirit {
|
||||||
|
|
||||||
Id Module::OpControlBarrier(Id execution, Id memory, Id semantics) {
|
Id Module::OpControlBarrier(Id execution, Id memory, Id semantics) {
|
||||||
auto op = std::make_unique<Op>(spv::Op::OpControlBarrier);
|
code->Reserve(4);
|
||||||
op->Add(execution);
|
return *code << spv::Op::OpControlBarrier << execution << memory << semantics << EndOp{};
|
||||||
op->Add(memory);
|
|
||||||
op->Add(semantics);
|
|
||||||
return AddCode(std::move(op));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Id Module::OpMemoryBarrier(Id scope, Id semantics) {
|
Id Module::OpMemoryBarrier(Id scope, Id semantics) {
|
||||||
auto op = std::make_unique<Op>(spv::Op::OpMemoryBarrier);
|
code->Reserve(3);
|
||||||
op->Add(scope);
|
return *code << spv::Op::OpMemoryBarrier << scope << semantics << EndOp{};
|
||||||
op->Add(semantics);
|
|
||||||
return AddCode(std::move(op));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace Sirit
|
} // namespace Sirit
|
||||||
|
81
externals/sirit/src/instructions/bit.cpp
vendored
81
externals/sirit/src/instructions/bit.cpp
vendored
@ -4,96 +4,73 @@
|
|||||||
* 3-Clause BSD License
|
* 3-Clause BSD License
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <memory>
|
|
||||||
#include "common_types.h"
|
|
||||||
#include "op.h"
|
|
||||||
#include "sirit/sirit.h"
|
#include "sirit/sirit.h"
|
||||||
|
|
||||||
|
#include "stream.h"
|
||||||
|
|
||||||
namespace Sirit {
|
namespace Sirit {
|
||||||
|
|
||||||
Id Module::OpShiftRightLogical(Id result_type, Id base, Id shift) {
|
Id Module::OpShiftRightLogical(Id result_type, Id base, Id shift) {
|
||||||
auto op{std::make_unique<Op>(spv::Op::OpShiftRightLogical, bound++, result_type)};
|
code->Reserve(5);
|
||||||
op->Add(base);
|
return *code << OpId{spv::Op::OpShiftRightLogical, result_type} << base << shift << EndOp{};
|
||||||
op->Add(shift);
|
|
||||||
return AddCode(std::move(op));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Id Module::OpShiftRightArithmetic(Id result_type, Id base, Id shift) {
|
Id Module::OpShiftRightArithmetic(Id result_type, Id base, Id shift) {
|
||||||
auto op{std::make_unique<Op>(spv::Op::OpShiftRightArithmetic, bound++, result_type)};
|
code->Reserve(5);
|
||||||
op->Add(base);
|
return *code << OpId{spv::Op::OpShiftRightArithmetic, result_type} << base << shift << EndOp{};
|
||||||
op->Add(shift);
|
|
||||||
return AddCode(std::move(op));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Id Module::OpShiftLeftLogical(Id result_type, Id base, Id shift) {
|
Id Module::OpShiftLeftLogical(Id result_type, Id base, Id shift) {
|
||||||
auto op{std::make_unique<Op>(spv::Op::OpShiftLeftLogical, bound++, result_type)};
|
code->Reserve(5);
|
||||||
op->Add(base);
|
return *code << OpId{spv::Op::OpShiftLeftLogical, result_type} << base << shift << EndOp{};
|
||||||
op->Add(shift);
|
|
||||||
return AddCode(std::move(op));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Id Module::OpBitwiseOr(Id result_type, Id operand_1, Id operand_2) {
|
Id Module::OpBitwiseOr(Id result_type, Id operand_1, Id operand_2) {
|
||||||
auto op{std::make_unique<Op>(spv::Op::OpBitwiseOr, bound++, result_type)};
|
code->Reserve(5);
|
||||||
op->Add(operand_1);
|
return *code << OpId{spv::Op::OpBitwiseOr, result_type} << operand_1 << operand_2 << EndOp{};
|
||||||
op->Add(operand_2);
|
|
||||||
return AddCode(std::move(op));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Id Module::OpBitwiseXor(Id result_type, Id operand_1, Id operand_2) {
|
Id Module::OpBitwiseXor(Id result_type, Id operand_1, Id operand_2) {
|
||||||
auto op{std::make_unique<Op>(spv::Op::OpBitwiseXor, bound++, result_type)};
|
code->Reserve(5);
|
||||||
op->Add(operand_1);
|
return *code << OpId{spv::Op::OpBitwiseXor, result_type} << operand_1 << operand_2 << EndOp{};
|
||||||
op->Add(operand_2);
|
|
||||||
return AddCode(std::move(op));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Id Module::OpBitwiseAnd(Id result_type, Id operand_1, Id operand_2) {
|
Id Module::OpBitwiseAnd(Id result_type, Id operand_1, Id operand_2) {
|
||||||
auto op{std::make_unique<Op>(spv::Op::OpBitwiseAnd, bound++, result_type)};
|
code->Reserve(5);
|
||||||
op->Add(operand_1);
|
return *code << OpId{spv::Op::OpBitwiseAnd, result_type} << operand_1 << operand_2 << EndOp{};
|
||||||
op->Add(operand_2);
|
|
||||||
return AddCode(std::move(op));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Id Module::OpNot(Id result_type, Id operand) {
|
Id Module::OpNot(Id result_type, Id operand) {
|
||||||
auto op{std::make_unique<Op>(spv::Op::OpNot, bound++, result_type)};
|
code->Reserve(4);
|
||||||
op->Add(operand);
|
return *code << OpId{spv::Op::OpNot, result_type} << operand << EndOp{};
|
||||||
return AddCode(std::move(op));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Id Module::OpBitFieldInsert(Id result_type, Id base, Id insert, Id offset, Id count) {
|
Id Module::OpBitFieldInsert(Id result_type, Id base, Id insert, Id offset, Id count) {
|
||||||
auto op{std::make_unique<Op>(spv::Op::OpBitFieldInsert, bound++, result_type)};
|
code->Reserve(7);
|
||||||
op->Add(base);
|
return *code << OpId{spv::Op::OpBitFieldInsert, result_type} << base << insert << offset
|
||||||
op->Add(insert);
|
<< count << EndOp{};
|
||||||
op->Add(offset);
|
|
||||||
op->Add(count);
|
|
||||||
return AddCode(std::move(op));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Id Module::OpBitFieldSExtract(Id result_type, Id base, Id offset, Id count) {
|
Id Module::OpBitFieldSExtract(Id result_type, Id base, Id offset, Id count) {
|
||||||
auto op{std::make_unique<Op>(spv::Op::OpBitFieldSExtract, bound++, result_type)};
|
code->Reserve(6);
|
||||||
op->Add(base);
|
return *code << OpId{spv::Op::OpBitFieldSExtract, result_type} << base << offset << count
|
||||||
op->Add(offset);
|
<< EndOp{};
|
||||||
op->Add(count);
|
|
||||||
return AddCode(std::move(op));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Id Module::OpBitFieldUExtract(Id result_type, Id base, Id offset, Id count) {
|
Id Module::OpBitFieldUExtract(Id result_type, Id base, Id offset, Id count) {
|
||||||
auto op{std::make_unique<Op>(spv::Op::OpBitFieldUExtract, bound++, result_type)};
|
code->Reserve(6);
|
||||||
op->Add(base);
|
return *code << OpId{spv::Op::OpBitFieldUExtract, result_type} << base << offset << count
|
||||||
op->Add(offset);
|
<< EndOp{};
|
||||||
op->Add(count);
|
|
||||||
return AddCode(std::move(op));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Id Module::OpBitReverse(Id result_type, Id base) {
|
Id Module::OpBitReverse(Id result_type, Id base) {
|
||||||
auto op{std::make_unique<Op>(spv::Op::OpBitReverse, bound++, result_type)};
|
code->Reserve(4);
|
||||||
op->Add(base);
|
return *code << OpId{spv::Op::OpBitReverse, result_type} << base << EndOp{};
|
||||||
return AddCode(std::move(op));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Id Module::OpBitCount(Id result_type, Id base) {
|
Id Module::OpBitCount(Id result_type, Id base) {
|
||||||
auto op{std::make_unique<Op>(spv::Op::OpBitCount, bound++, result_type)};
|
code->Reserve(4);
|
||||||
op->Add(base);
|
return *code << OpId{spv::Op::OpBitCount, result_type} << base << EndOp{};
|
||||||
return AddCode(std::move(op));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace Sirit
|
} // namespace Sirit
|
||||||
|
34
externals/sirit/src/instructions/constant.cpp
vendored
34
externals/sirit/src/instructions/constant.cpp
vendored
@ -5,42 +5,44 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
#include "op.h"
|
|
||||||
#include "sirit/sirit.h"
|
#include "sirit/sirit.h"
|
||||||
|
|
||||||
|
#include "stream.h"
|
||||||
|
|
||||||
namespace Sirit {
|
namespace Sirit {
|
||||||
|
|
||||||
Id Module::ConstantTrue(Id result_type) {
|
Id Module::ConstantTrue(Id result_type) {
|
||||||
return AddDeclaration(std::make_unique<Op>(spv::Op::OpConstantTrue, bound, result_type));
|
declarations->Reserve(3);
|
||||||
|
return *declarations << OpId{spv::Op::OpConstantTrue, result_type} << EndOp{};
|
||||||
}
|
}
|
||||||
|
|
||||||
Id Module::ConstantFalse(Id result_type) {
|
Id Module::ConstantFalse(Id result_type) {
|
||||||
return AddDeclaration(std::make_unique<Op>(spv::Op::OpConstantFalse, bound, result_type));
|
declarations->Reserve(3);
|
||||||
|
return *declarations << OpId{spv::Op::OpConstantFalse, result_type} << EndOp{};
|
||||||
}
|
}
|
||||||
|
|
||||||
Id Module::Constant(Id result_type, const Literal& literal) {
|
Id Module::Constant(Id result_type, const Literal& literal) {
|
||||||
auto op{std::make_unique<Op>(spv::Op::OpConstant, bound, result_type)};
|
declarations->Reserve(3 + 2);
|
||||||
op->Add(literal);
|
return *declarations << OpId{spv::Op::OpConstant, result_type} << literal << EndOp{};
|
||||||
return AddDeclaration(std::move(op));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Id Module::ConstantComposite(Id result_type, const std::vector<Id>& constituents) {
|
Id Module::ConstantComposite(Id result_type, std::span<const Id> constituents) {
|
||||||
auto op{std::make_unique<Op>(spv::Op::OpConstantComposite, bound, result_type)};
|
declarations->Reserve(3 + constituents.size());
|
||||||
op->Add(constituents);
|
return *declarations << OpId{spv::Op::OpConstantComposite, result_type} << constituents
|
||||||
return AddDeclaration(std::move(op));
|
<< EndOp{};
|
||||||
}
|
}
|
||||||
|
|
||||||
Id Module::ConstantSampler(Id result_type, spv::SamplerAddressingMode addressing_mode,
|
Id Module::ConstantSampler(Id result_type, spv::SamplerAddressingMode addressing_mode,
|
||||||
bool normalized, spv::SamplerFilterMode filter_mode) {
|
bool normalized, spv::SamplerFilterMode filter_mode) {
|
||||||
auto op{std::make_unique<Op>(spv::Op::OpConstantSampler, bound, result_type)};
|
declarations->Reserve(6);
|
||||||
op->Add(static_cast<u32>(addressing_mode));
|
return *declarations << OpId{spv::Op::OpConstantSampler, result_type} << addressing_mode
|
||||||
op->Add(normalized ? 1 : 0);
|
<< normalized << filter_mode << EndOp{};
|
||||||
op->Add(static_cast<u32>(filter_mode));
|
|
||||||
return AddDeclaration(std::move(op));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Id Module::ConstantNull(Id result_type) {
|
Id Module::ConstantNull(Id result_type) {
|
||||||
return AddDeclaration(std::make_unique<Op>(spv::Op::OpConstantNull, bound, result_type));
|
declarations->Reserve(3);
|
||||||
|
return *declarations << OpId{spv::Op::OpConstantNull, result_type} << EndOp{};
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace Sirit
|
} // namespace Sirit
|
||||||
|
10
externals/sirit/src/instructions/conversion.cpp
vendored
10
externals/sirit/src/instructions/conversion.cpp
vendored
@ -4,18 +4,16 @@
|
|||||||
* 3-Clause BSD License
|
* 3-Clause BSD License
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <memory>
|
|
||||||
#include "common_types.h"
|
|
||||||
#include "op.h"
|
|
||||||
#include "sirit/sirit.h"
|
#include "sirit/sirit.h"
|
||||||
|
|
||||||
|
#include "stream.h"
|
||||||
|
|
||||||
namespace Sirit {
|
namespace Sirit {
|
||||||
|
|
||||||
#define DEFINE_UNARY(opcode) \
|
#define DEFINE_UNARY(opcode) \
|
||||||
Id Module::opcode(Id result_type, Id operand) { \
|
Id Module::opcode(Id result_type, Id operand) { \
|
||||||
auto op{std::make_unique<Op>(spv::Op::opcode, bound++, result_type)}; \
|
code->Reserve(4); \
|
||||||
op->Add(operand); \
|
return *code << OpId{spv::Op::opcode, result_type} << operand << EndOp{}; \
|
||||||
return AddCode(std::move(op)); \
|
|
||||||
}
|
}
|
||||||
|
|
||||||
DEFINE_UNARY(OpConvertFToU)
|
DEFINE_UNARY(OpConvertFToU)
|
||||||
|
39
externals/sirit/src/instructions/debug.cpp
vendored
39
externals/sirit/src/instructions/debug.cpp
vendored
@ -4,44 +4,33 @@
|
|||||||
* 3-Clause BSD License
|
* 3-Clause BSD License
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <memory>
|
|
||||||
#include <string>
|
|
||||||
#include "op.h"
|
|
||||||
#include "sirit/sirit.h"
|
#include "sirit/sirit.h"
|
||||||
|
|
||||||
|
#include "common_types.h"
|
||||||
|
#include "stream.h"
|
||||||
|
|
||||||
namespace Sirit {
|
namespace Sirit {
|
||||||
|
|
||||||
Id Module::Name(Id target, std::string name) {
|
Id Module::Name(Id target, std::string_view name) {
|
||||||
auto op{std::make_unique<Op>(spv::Op::OpName)};
|
debug->Reserve(3 + WordsInString(name));
|
||||||
op->Add(target);
|
*debug << spv::Op::OpName << target << name << EndOp{};
|
||||||
op->Add(std::move(name));
|
|
||||||
debug.push_back(std::move(op));
|
|
||||||
return target;
|
return target;
|
||||||
}
|
}
|
||||||
|
|
||||||
Id Module::MemberName(Id type, u32 member, std::string name) {
|
Id Module::MemberName(Id type, u32 member, std::string_view name) {
|
||||||
auto op{std::make_unique<Op>(spv::Op::OpMemberName)};
|
debug->Reserve(4 + WordsInString(name));
|
||||||
op->Add(type);
|
*debug << spv::Op::OpMemberName << type << member << name << EndOp{};
|
||||||
op->Add(member);
|
|
||||||
op->Add(std::move(name));
|
|
||||||
debug.push_back(std::move(op));
|
|
||||||
return type;
|
return type;
|
||||||
}
|
}
|
||||||
|
|
||||||
Id Module::String(std::string string) {
|
Id Module::String(std::string_view string) {
|
||||||
auto op{std::make_unique<Op>(spv::Op::OpString, bound++)};
|
debug->Reserve(3 + WordsInString(string));
|
||||||
op->Add(std::move(string));
|
return *debug << OpId{spv::Op::OpString} << string << EndOp{};
|
||||||
const auto id = op.get();
|
|
||||||
debug.push_back(std::move(op));
|
|
||||||
return id;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Id Module::OpLine(Id file, Literal line, Literal column) {
|
Id Module::OpLine(Id file, Literal line, Literal column) {
|
||||||
auto op{std::make_unique<Op>(spv::Op::OpLine)};
|
debug->Reserve(4);
|
||||||
op->Add(file);
|
return *debug << spv::Op::OpLine << file << line << column << EndOp{};
|
||||||
op->Add(line);
|
|
||||||
op->Add(column);
|
|
||||||
return AddCode(std::move(op));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace Sirit
|
} // namespace Sirit
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user