early-access version 1866
This commit is contained in:
@@ -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
|
||||||
|
|
||||||
|
|||||||
Vendored
+1
@@ -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
@@ -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
|
||||||
|
|||||||
Vendored
+35
-13
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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_
|
||||||
+64
-2
@@ -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
|
||||||
|
|||||||
+9
-1
@@ -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;
|
||||||
@@ -122,6 +129,7 @@ typedef struct {
|
|||||||
PFN_vkLayerCreateDevice pfnLayerCreateDevice;
|
PFN_vkLayerCreateDevice pfnLayerCreateDevice;
|
||||||
PFN_vkLayerDestroyDevice pfnLayerDestroyDevice;
|
PFN_vkLayerDestroyDevice pfnLayerDestroyDevice;
|
||||||
} layerDevice;
|
} layerDevice;
|
||||||
|
VkLoaderFeatureFlags loaderFeatures;
|
||||||
} u;
|
} u;
|
||||||
} VkLayerInstanceCreateInfo;
|
} VkLayerInstanceCreateInfo;
|
||||||
|
|
||||||
|
|||||||
+3
-1
@@ -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
|
||||||
|
|
||||||
|
#if !defined(VK_NO_STDDEF_H)
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
|
#endif // !defined(VK_NO_STDDEF_H)
|
||||||
|
|
||||||
#if !defined(VK_NO_STDINT_H)
|
#if !defined(VK_NO_STDINT_H)
|
||||||
#if defined(_MSC_VER) && (_MSC_VER < 1600)
|
#if defined(_MSC_VER) && (_MSC_VER < 1600)
|
||||||
|
|||||||
+13
-1
@@ -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
|
||||||
|
|||||||
+96501
-56907
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
|
||||||
*/
|
*/
|
||||||
|
|||||||
+654
-378
File diff suppressed because it is too large
Load Diff
+1980
-124
File diff suppressed because it is too large
Load Diff
+54
@@ -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
|
||||||
+75
-1
@@ -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
|
||||||
|
|||||||
+1
-1
@@ -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
-2
@@ -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
-2
@@ -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 {
|
||||||
|
|||||||
+1
-1
@@ -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
@@ -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
|
||||||
+1
-1
@@ -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
|
||||||
*/
|
*/
|
||||||
|
|||||||
+1
-1
@@ -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
|
||||||
*/
|
*/
|
||||||
|
|||||||
+1
-1
@@ -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
|
||||||
*/
|
*/
|
||||||
|
|||||||
+1
-1
@@ -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
|
||||||
*/
|
*/
|
||||||
|
|||||||
+22
-7
@@ -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
-1
@@ -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
|
||||||
|
|
||||||
|
|||||||
+202
-22
@@ -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
|
||||||
@@ -445,47 +466,69 @@ class OutputGenerator:
|
|||||||
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
|
||||||
if groupElem.get('type') == 'bitmask':
|
usedefine = False
|
||||||
|
|
||||||
|
# Bitmask flags can be generated as either "static const uint{32,64}_t" values,
|
||||||
|
# or as 32-bit C enums. 64-bit types must use uint64_t values.
|
||||||
|
if groupElem.get('type') == 'bitmask':
|
||||||
|
if bitwidth > 32 or self.misracppstyle():
|
||||||
|
usebitmask = True
|
||||||
|
if self.misracstyle():
|
||||||
|
usedefine = True
|
||||||
|
|
||||||
|
if usedefine or usebitmask:
|
||||||
# Validate the bitwidth and generate values appropriately
|
# 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
|
||||||
@@ -493,7 +536,36 @@ class OutputGenerator:
|
|||||||
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)
|
||||||
@@ -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:
|
||||||
@@ -564,7 +651,6 @@ class OutputGenerator:
|
|||||||
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:
|
||||||
if minName is None:
|
if minName 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,6 +1145,26 @@ class OutputGenerator:
|
|||||||
# Non-indented parameters
|
# Non-indented parameters
|
||||||
paramdecl = '('
|
paramdecl = '('
|
||||||
if n > 0:
|
if n > 0:
|
||||||
|
paramnames = []
|
||||||
|
if self.misracppstyle():
|
||||||
|
for p in params:
|
||||||
|
param = ''
|
||||||
|
firstIter = True;
|
||||||
|
for t in p.itertext():
|
||||||
|
if (firstIter):
|
||||||
|
prefix = t
|
||||||
|
firstIter = False
|
||||||
|
else:
|
||||||
|
# Change pointer type order from e.g. "const void *" to "void const *".
|
||||||
|
# If the string starts with 'const', reorder it to be after the first type.
|
||||||
|
if (prefix.find('const ') != -1):
|
||||||
|
param += prefix.replace('const ', '') + t + ' const '
|
||||||
|
else:
|
||||||
|
param += prefix + t
|
||||||
|
# Clear prefix for subsequent iterations
|
||||||
|
prefix = ''
|
||||||
|
paramnames.append(param);
|
||||||
|
else:
|
||||||
paramnames = (''.join(t for t in p.itertext())
|
paramnames = (''.join(t for t in p.itertext())
|
||||||
for p in params)
|
for p in params)
|
||||||
paramdecl += ', '.join(paramnames)
|
paramdecl += ', '.join(paramnames)
|
||||||
|
|||||||
+70
-10
@@ -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()
|
||||||
|
|
||||||
|
|||||||
+73
-6
@@ -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,7 +1244,13 @@ 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:
|
||||||
|
if not apiNameMatch(self.genOpts.apiname, ei.elem.get('supported')):
|
||||||
|
self.gen.logMsg('diag', 'NOT including extension',
|
||||||
|
extName, '(matches explicitly requested, but does not match the \'supported\' attribute)')
|
||||||
|
include = False
|
||||||
|
else:
|
||||||
self.gen.logMsg('diag', 'Including extension',
|
self.gen.logMsg('diag', 'Including extension',
|
||||||
extName, '(matches explicitly requested extensions to add)')
|
extName, '(matches explicitly requested extensions to add)')
|
||||||
include = True
|
include = True
|
||||||
@@ -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):
|
||||||
|
|||||||
+2
-2
@@ -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
|
||||||
|
|
||||||
|
|||||||
+15926
-4288
File diff suppressed because one or more lines are too long
+4442
-1386
File diff suppressed because it is too large
Load Diff
+14
-2
@@ -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):
|
||||||
|
|||||||
Vendored
+1
-1
@@ -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
@@ -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
@@ -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" ]
|
||||||
|
}
|
||||||
+77
-10
@@ -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)
|
||||||
|
|
||||||
|
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)
|
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
@@ -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.
|
||||||
+93
-2
@@ -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?*
|
||||||
|
|||||||
+4
@@ -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
@@ -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
File diff suppressed because it is too large
Load Diff
+1021
File diff suppressed because it is too large
Load Diff
+140
-33
@@ -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
@@ -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_
|
||||||
Vendored
Executable
+53
@@ -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_
|
||||||
Vendored
Executable
+50
@@ -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_
|
||||||
Vendored
Executable
+58
@@ -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
@@ -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_
|
||||||
Vendored
Executable
+73
@@ -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_
|
||||||
Vendored
Executable
+50
@@ -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_
|
||||||
+187
-1
@@ -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
|
||||||
|
|||||||
Vendored
Executable
+157
@@ -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_
|
||||||
Vendored
Executable
+572
@@ -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" }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
Vendored
Executable
+237
@@ -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" }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
Vendored
Executable
+13
@@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"revision" : 1,
|
||||||
|
"instructions" : [
|
||||||
|
{
|
||||||
|
"opname" : "DebugPrintf",
|
||||||
|
"opcode" : 1,
|
||||||
|
"operands" : [
|
||||||
|
{ "kind" : "IdRef", "name" : "'Format'" },
|
||||||
|
{ "kind" : "IdRef", "quantifier" : "*" }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
Vendored
Executable
+636
@@ -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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
Vendored
Executable
+26
@@ -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" ]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
Vendored
Executable
+41
@@ -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" ]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
Vendored
Executable
+14
@@ -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" ]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
Vendored
Executable
+95
@@ -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" ]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
+5692
-115
File diff suppressed because it is too large
Load Diff
+1707
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
+1204
-6
File diff suppressed because it is too large
Load Diff
+1204
-6
File diff suppressed because it is too large
Load Diff
+594
-20
@@ -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
File diff suppressed because it is too large
Load Diff
Vendored
Executable
+242
@@ -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()
|
||||||
Vendored
Executable
+28
@@ -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,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"),
|
||||||
@@ -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,6 +98,7 @@ 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;
|
||||||
|
|
||||||
@@ -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"
|
||||||
@@ -343,7 +348,7 @@ namespace {
|
|||||||
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -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 {
|
||||||
@@ -491,6 +497,45 @@ namespace {
|
|||||||
|
|
||||||
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
|
||||||
@@ -549,7 +594,7 @@ namespace {
|
|||||||
}
|
}
|
||||||
|
|
||||||
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 "// "; }
|
||||||
@@ -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,4 +1,4 @@
|
|||||||
// 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"),
|
||||||
@@ -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
|
||||||
};
|
};
|
||||||
|
|||||||
+110
-11
@@ -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,
|
||||||
|
const std::string& the_firstVersion, const std::string& the_lastVersion,
|
||||||
Extensions&& the_extensions, OperandParameters&& the_operands) :
|
Extensions&& the_extensions, OperandParameters&& the_operands) :
|
||||||
value(the_value), name(the_name), capabilities(std::move(the_caps)), version(std::move(the_version)),
|
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,4 +1,4 @@
|
|||||||
// 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"),
|
||||||
@@ -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);
|
||||||
|
|
||||||
|
|||||||
+344
-153
@@ -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(
|
||||||
|
spv::ExecutionModel execution_model, Id entry_point, std::string_view name,
|
||||||
Ts&&... interfaces) {
|
Ts&&... interfaces) {
|
||||||
AddEntryPoint(execution_model, std::move(entry_point), name, {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
|
||||||
|
OpLoopMerge(Id merge_block, Id continue_target, spv::LoopControlMask loop_control,
|
||||||
Ts&&... literals) {
|
Ts&&... literals) {
|
||||||
return OpLoopMerge(merge_block, continue_target, loop_control, {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
|
||||||
|
MemberDecorate(Id structure_type, Literal member, spv::Decoration decoration,
|
||||||
Ts&&... literals) {
|
Ts&&... literals) {
|
||||||
return MemberDecorate(structure_type, member, decoration, {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
|
||||||
|
OpImageSampleImplicitLod(Id result_type, Id sampled_image, Id coordinate,
|
||||||
spv::ImageOperandsMask image_operands, Ts&&... operands) {
|
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
|
||||||
|
OpImageSampleExplicitLod(Id result_type, Id sampled_image, Id coordinate,
|
||||||
spv::ImageOperandsMask image_operands, Ts&&... operands) {
|
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
|
||||||
|
OpImageSampleDrefImplicitLod(Id result_type, Id sampled_image, Id coordinate, Id dref,
|
||||||
spv::ImageOperandsMask image_operands, Ts&&... operands) {
|
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
|
||||||
|
OpImageSampleDrefExplicitLod(Id result_type, Id sampled_image, Id coordinate, Id dref,
|
||||||
spv::ImageOperandsMask image_operands, Ts&&... operands) {
|
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
|
||||||
|
OpImageSampleProjImplicitLod(Id result_type, Id sampled_image, Id coordinate,
|
||||||
spv::ImageOperandsMask image_operands, Ts&&... operands) {
|
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
|
||||||
|
OpImageSampleProjExplicitLod(Id result_type, Id sampled_image, Id coordinate,
|
||||||
spv::ImageOperandsMask image_operands, Ts&&... operands) {
|
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
|
||||||
|
OpImageSampleProjDrefImplicitLod(Id result_type, Id sampled_image, Id coordinate, Id dref,
|
||||||
spv::ImageOperandsMask image_operands, Ts&&... operands) {
|
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
|
||||||
|
OpImageSampleProjDrefExplicitLod(Id result_type, Id sampled_image, Id coordinate, Id dref,
|
||||||
spv::ImageOperandsMask image_operands, Ts&&... operands) {
|
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
|
||||||
|
OpImageFetch(Id result_type, Id sampled_image, Id coordinate,
|
||||||
spv::ImageOperandsMask image_operands, Ts&&... operands) {
|
spv::ImageOperandsMask image_operands, Ts&&... operands) {
|
||||||
return OpImageFetch(result_type, sampled_image, coordinate, image_operands, {operands...});
|
return OpImageFetch(result_type, sampled_image, coordinate, image_operands,
|
||||||
|
std::span<const Id>({operands...}));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Gathers the requested component from four texels.
|
/// Gathers the requested component from four texels.
|
||||||
Id OpImageGather(Id result_type, Id sampled_image, Id coordinate, Id component,
|
Id OpImageGather(Id result_type, Id sampled_image, Id coordinate, Id component,
|
||||||
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 component from four texels.
|
/// Gathers the requested component from four texels.
|
||||||
template <typename... Ts>
|
template <typename... Ts>
|
||||||
Id OpImageGather(Id result_type, Id sampled_image, Id coordinate, Id component,
|
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) {
|
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
|
||||||
|
OpImageDrefGather(Id result_type, Id sampled_image, Id coordinate, Id dref,
|
||||||
spv::ImageOperandsMask image_operands, Ts&&... operands) {
|
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
|
||||||
|
OpImageRead(Id result_type, Id sampled_image, Id coordinate,
|
||||||
spv::ImageOperandsMask image_operands, Ts&&... operands) {
|
spv::ImageOperandsMask image_operands, Ts&&... operands) {
|
||||||
return OpImageRead(result_type, sampled_image, coordinate, image_operands, {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
|
||||||
|
OpImageWrite(Id image, Id coordinate, Id texel, spv::ImageOperandsMask image_operands,
|
||||||
Ts&&... operands) {
|
Ts&&... operands) {
|
||||||
return OpImageWrite(image, coordinate, texel, image_operands, {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
|
||||||
|
|||||||
Vendored
+1
-9
@@ -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
|
||||||
|
|||||||
+11
-19
@@ -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
|
||||||
|
|||||||
+6
-19
@@ -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)
|
||||||
|
|||||||
+47
-91
@@ -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
|
||||||
|
|||||||
+6
-11
@@ -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
|
||||||
|
|||||||
+29
-52
@@ -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
|
||||||
|
|||||||
+18
-16
@@ -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
|
||||||
|
|||||||
+4
-6
@@ -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)
|
||||||
|
|||||||
+14
-25
@@ -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
Reference in New Issue
Block a user