已合并
回退glslang版本 #28
lxt1创建于 2024年3月24日
回退glslang版本 #28
已合并
从refs/pull/28/head合入到OpenHarmony-4.1-Release
共 1258 个文件变更+48280-112625
| @@ -96,7 +96,6 @@ LOCAL_MODULE:=glslang | |||
| 96 | LOCAL_CXXFLAGS:=-std=c++11 -fno-exceptions -fno-rtti $(GLSLANG_DEFINES) | 96 | LOCAL_CXXFLAGS:=-std=c++11 -fno-exceptions -fno-rtti $(GLSLANG_DEFINES) |
| 97 | LOCAL_EXPORT_C_INCLUDES:=$(LOCAL_PATH) | 97 | LOCAL_EXPORT_C_INCLUDES:=$(LOCAL_PATH) |
| 98 | LOCAL_SRC_FILES:= \ | 98 | LOCAL_SRC_FILES:= \ |
| 99 | - glslang/CInterface/glslang_c_interface.cpp \ | ||
| 100 | glslang/GenericCodeGen/CodeGen.cpp \ | 99 | glslang/GenericCodeGen/CodeGen.cpp \ |
| 101 | glslang/GenericCodeGen/Link.cpp \ | 100 | glslang/GenericCodeGen/Link.cpp \ |
| 102 | glslang/HLSL/hlslAttributes.cpp \ | 101 | glslang/HLSL/hlslAttributes.cpp \ |
| @@ -126,7 +125,6 @@ LOCAL_SRC_FILES:= \ | |||
| 126 | glslang/MachineIndependent/RemoveTree.cpp \ | 125 | glslang/MachineIndependent/RemoveTree.cpp \ |
| 127 | glslang/MachineIndependent/Scan.cpp \ | 126 | glslang/MachineIndependent/Scan.cpp \ |
| 128 | glslang/MachineIndependent/ShaderLang.cpp \ | 127 | glslang/MachineIndependent/ShaderLang.cpp \ |
| 129 | - glslang/MachineIndependent/SpirvIntrinsics.cpp \ | ||
| 130 | glslang/MachineIndependent/SymbolTable.cpp \ | 128 | glslang/MachineIndependent/SymbolTable.cpp \ |
| 131 | glslang/MachineIndependent/Versions.cpp \ | 129 | glslang/MachineIndependent/Versions.cpp \ |
| 132 | glslang/MachineIndependent/preprocessor/PpAtom.cpp \ | 130 | glslang/MachineIndependent/preprocessor/PpAtom.cpp \ |
| @@ -150,7 +148,6 @@ $(LOCAL_PATH)/SPIRV/GlslangToSpv.cpp: \ | |||
| 150 | LOCAL_MODULE:=SPIRV | 148 | LOCAL_MODULE:=SPIRV |
| 151 | LOCAL_CXXFLAGS:=-std=c++11 -fno-exceptions -fno-rtti -Werror $(GLSLANG_DEFINES) | 149 | LOCAL_CXXFLAGS:=-std=c++11 -fno-exceptions -fno-rtti -Werror $(GLSLANG_DEFINES) |
| 152 | LOCAL_SRC_FILES:= \ | 150 | LOCAL_SRC_FILES:= \ |
| 153 | - SPIRV/CInterface/spirv_c_interface.cpp \ | ||
| 154 | SPIRV/GlslangToSpv.cpp \ | 151 | SPIRV/GlslangToSpv.cpp \ |
| 155 | SPIRV/InReadableOrder.cpp \ | 152 | SPIRV/InReadableOrder.cpp \ |
| 156 | SPIRV/Logger.cpp \ | 153 | SPIRV/Logger.cpp \ |
| @@ -49,28 +49,14 @@ py_binary( | |||
| 49 | srcs = ["build_info.py"], | 49 | srcs = ["build_info.py"], |
| 50 | ) | 50 | ) |
| 51 | 51 | ||
| 52 | -py_binary( | ||
| 53 | - name = "gen_extension_headers", | ||
| 54 | - srcs = ["gen_extension_headers.py"], | ||
| 55 | -) | ||
| 56 | - | ||
| 57 | genrule( | 52 | genrule( |
| 58 | name = "gen_build_info_h", | 53 | name = "gen_build_info_h", |
| 59 | srcs = ["CHANGES.md", "build_info.h.tmpl"], | 54 | srcs = ["CHANGES.md", "build_info.h.tmpl"], |
| 60 | outs = ["glslang/build_info.h"], | 55 | outs = ["glslang/build_info.h"], |
| 61 | - cmd_bash = "$(location build_info) $$(dirname $(location CHANGES.md)) -i $(location build_info.h.tmpl) -o $(location glslang/build_info.h)", | 56 | + cmd = "$(location build_info) $$(dirname $(location CHANGES.md)) -i $(location build_info.h.tmpl) -o $(location glslang/build_info.h)", |
| 62 | - cmd_bat = "for %F in ($(location CHANGES.md)) do $(location build_info) %~dpF -i $(location build_info.h.tmpl) -o $(location glslang/build_info.h)", | ||
| 63 | tools = [":build_info"], | 57 | tools = [":build_info"], |
| 64 | ) | 58 | ) |
| 65 | 59 | ||
| 66 | -genrule( | ||
| 67 | - name = "gen_extension_headers_h", | ||
| 68 | - srcs = ["glslang/ExtensionHeaders", "gen_extension_headers.py"], | ||
| 69 | - outs = ["glslang/glsl_intrinsic_header.h"], | ||
| 70 | - cmd_bash = "$(location gen_extension_headers) -i $(location glslang/ExtensionHeaders) -o $(location glslang/glsl_intrinsic_header.h)", | ||
| 71 | - tools = [":gen_extension_headers"], | ||
| 72 | -) | ||
| 73 | - | ||
| 74 | COMMON_COPTS = select({ | 60 | COMMON_COPTS = select({ |
| 75 | "@bazel_tools//src/conditions:windows": [""], | 61 | "@bazel_tools//src/conditions:windows": [""], |
| 76 | "//conditions:default": [ | 62 | "//conditions:default": [ |
| @@ -144,10 +130,8 @@ genrule( | |||
| 144 | "SPIRV/GLSL.ext.EXT.h", | 130 | "SPIRV/GLSL.ext.EXT.h", |
| 145 | "SPIRV/GLSL.ext.KHR.h", | 131 | "SPIRV/GLSL.ext.KHR.h", |
| 146 | "SPIRV/GLSL.ext.NV.h", | 132 | "SPIRV/GLSL.ext.NV.h", |
| 147 | - "SPIRV/GLSL.ext.ARM.h", | ||
| 148 | "SPIRV/GLSL.std.450.h", | 133 | "SPIRV/GLSL.std.450.h", |
| 149 | "SPIRV/NonSemanticDebugPrintf.h", | 134 | "SPIRV/NonSemanticDebugPrintf.h", |
| 150 | - "SPIRV/NonSemanticShaderDebugInfo100.h", | ||
| 151 | "SPIRV/spirv.hpp", | 135 | "SPIRV/spirv.hpp", |
| 152 | ], | 136 | ], |
| 153 | outs = [ | 137 | outs = [ |
| @@ -155,14 +139,11 @@ genrule( | |||
| 155 | "include/SPIRV/GLSL.ext.EXT.h", | 139 | "include/SPIRV/GLSL.ext.EXT.h", |
| 156 | "include/SPIRV/GLSL.ext.KHR.h", | 140 | "include/SPIRV/GLSL.ext.KHR.h", |
| 157 | "include/SPIRV/GLSL.ext.NV.h", | 141 | "include/SPIRV/GLSL.ext.NV.h", |
| 158 | - "include/SPIRV/GLSL.ext.ARM.h", | ||
| 159 | "include/SPIRV/GLSL.std.450.h", | 142 | "include/SPIRV/GLSL.std.450.h", |
| 160 | "include/SPIRV/NonSemanticDebugPrintf.h", | 143 | "include/SPIRV/NonSemanticDebugPrintf.h", |
| 161 | - "include/SPIRV/NonSemanticShaderDebugInfo100.h", | ||
| 162 | "include/SPIRV/spirv.hpp", | 144 | "include/SPIRV/spirv.hpp", |
| 163 | ], | 145 | ], |
| 164 | - cmd_bash = "mkdir -p $(@D)/include/SPIRV && cp $(SRCS) $(@D)/include/SPIRV/", | 146 | + cmd = "mkdir -p $(@D)/include/SPIRV && cp $(SRCS) $(@D)/include/SPIRV/", |
| 165 | - cmd_bat = "(if not exist $(@D)\\include\\SPIRV mkdir $(@D)\\include\\SPIRV) && (for %S in ($(SRCS)) do @xcopy /q %S $(@D)\\include\\SPIRV\\ >NUL)", | ||
| 166 | ) | 147 | ) |
| 167 | 148 | ||
| 168 | cc_library( | 149 | cc_library( |
| @@ -212,7 +193,7 @@ cc_library( | |||
| 212 | cc_library( | 193 | cc_library( |
| 213 | name = "glslang-default-resource-limits", | 194 | name = "glslang-default-resource-limits", |
| 214 | srcs = ["StandAlone/ResourceLimits.cpp"], | 195 | srcs = ["StandAlone/ResourceLimits.cpp"], |
| 215 | - hdrs = ["glslang/Public/ResourceLimits.h"], | 196 | + hdrs = ["StandAlone/ResourceLimits.h"], |
| 216 | copts = COMMON_COPTS, | 197 | copts = COMMON_COPTS, |
| 217 | linkstatic = 1, | 198 | linkstatic = 1, |
| 218 | deps = [":glslang"], | 199 | deps = [":glslang"], |
| @@ -223,7 +204,6 @@ cc_binary( | |||
| 223 | srcs = [ | 204 | srcs = [ |
| 224 | "StandAlone/StandAlone.cpp", | 205 | "StandAlone/StandAlone.cpp", |
| 225 | "StandAlone/Worklist.h", | 206 | "StandAlone/Worklist.h", |
| 226 | - ":glslang/glsl_intrinsic_header.h" | ||
| 227 | ], | 207 | ], |
| 228 | copts = COMMON_COPTS, | 208 | copts = COMMON_COPTS, |
| 229 | deps = [ | 209 | deps = [ |
| @@ -31,7 +31,7 @@ | |||
| 31 | # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | 31 | # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
| 32 | # POSSIBILITY OF SUCH DAMAGE. | 32 | # POSSIBILITY OF SUCH DAMAGE. |
| 33 | 33 | ||
| 34 | -import("//build_overrides/glslang.gni") | 34 | +import("build_overrides/glslang.gni") |
| 35 | 35 | ||
| 36 | # Both Chromium and Fuchsia use by default a set of warning errors | 36 | # Both Chromium and Fuchsia use by default a set of warning errors |
| 37 | # that is far too strict to compile this project. These are also | 37 | # that is far too strict to compile this project. These are also |
| @@ -69,29 +69,10 @@ action("glslang_build_info") { | |||
| 69 | ] | 69 | ] |
| 70 | } | 70 | } |
| 71 | 71 | ||
| 72 | -action("glslang_extension_headers") { | ||
| 73 | - script = "gen_extension_headers.py" | ||
| 74 | - | ||
| 75 | - out_file = "${target_gen_dir}/include/glslang/glsl_intrinsic_header.h" | ||
| 76 | - | ||
| 77 | - # Fuchsia GN build rules require all GN actions to be hermetic and they | ||
| 78 | - # should correctly and fully state their inputs and outpus (see | ||
| 79 | - # https://fuchsia.dev/fuchsia-src/development/build/hermetic_actions | ||
| 80 | - # for details). All input files of the script should be added to the | ||
| 81 | - # |sources| list. | ||
| 82 | - sources = [ "glslang/ExtensionHeaders/GL_EXT_shader_realtime_clock.glsl" ] | ||
| 83 | - | ||
| 84 | - inputs = [ script ] | ||
| 85 | - outputs = [ out_file ] | ||
| 86 | - args = [ | ||
| 87 | - "-i", | ||
| 88 | - rebase_path("glslang/ExtensionHeaders", root_build_dir), | ||
| 89 | - "-o", | ||
| 90 | - rebase_path(out_file, root_build_dir), | ||
| 91 | - ] | ||
| 92 | -} | ||
| 93 | - | ||
| 94 | spirv_tools_dir = glslang_spirv_tools_dir | 72 | spirv_tools_dir = glslang_spirv_tools_dir |
| 73 | +if (!defined(glslang_angle)) { | ||
| 74 | + glslang_angle = false | ||
| 75 | +} | ||
| 95 | 76 | ||
| 96 | config("glslang_public") { | 77 | config("glslang_public") { |
| 97 | include_dirs = [ "." ] | 78 | include_dirs = [ "." ] |
| @@ -116,7 +97,6 @@ template("glslang_sources_common") { | |||
| 116 | "OGLCompilersDLL/InitializeDll.cpp", | 97 | "OGLCompilersDLL/InitializeDll.cpp", |
| 117 | "OGLCompilersDLL/InitializeDll.h", | 98 | "OGLCompilersDLL/InitializeDll.h", |
| 118 | "SPIRV/GLSL.ext.AMD.h", | 99 | "SPIRV/GLSL.ext.AMD.h", |
| 119 | - "SPIRV/GLSL.ext.ARM.h", | ||
| 120 | "SPIRV/GLSL.ext.EXT.h", | 100 | "SPIRV/GLSL.ext.EXT.h", |
| 121 | "SPIRV/GLSL.ext.KHR.h", | 101 | "SPIRV/GLSL.ext.KHR.h", |
| 122 | "SPIRV/GLSL.ext.NV.h", | 102 | "SPIRV/GLSL.ext.NV.h", |
| @@ -127,7 +107,6 @@ template("glslang_sources_common") { | |||
| 127 | "SPIRV/Logger.cpp", | 107 | "SPIRV/Logger.cpp", |
| 128 | "SPIRV/Logger.h", | 108 | "SPIRV/Logger.h", |
| 129 | "SPIRV/NonSemanticDebugPrintf.h", | 109 | "SPIRV/NonSemanticDebugPrintf.h", |
| 130 | - "SPIRV/NonSemanticShaderDebugInfo100.h", | ||
| 131 | "SPIRV/SPVRemapper.cpp", | 110 | "SPIRV/SPVRemapper.cpp", |
| 132 | "SPIRV/SPVRemapper.h", | 111 | "SPIRV/SPVRemapper.h", |
| 133 | "SPIRV/SpvBuilder.cpp", | 112 | "SPIRV/SpvBuilder.cpp", |
| @@ -152,7 +131,6 @@ template("glslang_sources_common") { | |||
| 152 | "glslang/Include/PoolAlloc.h", | 131 | "glslang/Include/PoolAlloc.h", |
| 153 | "glslang/Include/ResourceLimits.h", | 132 | "glslang/Include/ResourceLimits.h", |
| 154 | "glslang/Include/ShHandle.h", | 133 | "glslang/Include/ShHandle.h", |
| 155 | - "glslang/Include/SpirvIntrinsics.h", | ||
| 156 | "glslang/Include/Types.h", | 134 | "glslang/Include/Types.h", |
| 157 | "glslang/Include/arrays.h", | 135 | "glslang/Include/arrays.h", |
| 158 | "glslang/Include/intermediate.h", | 136 | "glslang/Include/intermediate.h", |
| @@ -173,7 +151,6 @@ template("glslang_sources_common") { | |||
| 173 | "glslang/MachineIndependent/Scan.h", | 151 | "glslang/MachineIndependent/Scan.h", |
| 174 | "glslang/MachineIndependent/ScanContext.h", | 152 | "glslang/MachineIndependent/ScanContext.h", |
| 175 | "glslang/MachineIndependent/ShaderLang.cpp", | 153 | "glslang/MachineIndependent/ShaderLang.cpp", |
| 176 | - "glslang/MachineIndependent/SpirvIntrinsics.cpp", | ||
| 177 | "glslang/MachineIndependent/SymbolTable.cpp", | 154 | "glslang/MachineIndependent/SymbolTable.cpp", |
| 178 | "glslang/MachineIndependent/SymbolTable.h", | 155 | "glslang/MachineIndependent/SymbolTable.h", |
| 179 | "glslang/MachineIndependent/Versions.cpp", | 156 | "glslang/MachineIndependent/Versions.cpp", |
| @@ -236,6 +213,9 @@ template("glslang_sources_common") { | |||
| 236 | sources += [ "SPIRV/SpvTools.cpp" ] | 213 | sources += [ "SPIRV/SpvTools.cpp" ] |
| 237 | defines += [ "ENABLE_OPT=1" ] | 214 | defines += [ "ENABLE_OPT=1" ] |
| 238 | } | 215 | } |
| 216 | + if (invoker.is_angle) { | ||
| 217 | + defines += [ "GLSLANG_ANGLE" ] | ||
| 218 | + } | ||
| 239 | 219 | ||
| 240 | if (is_win) { | 220 | if (is_win) { |
| 241 | sources += [ "glslang/OSDependent/Windows/ossource.cpp" ] | 221 | sources += [ "glslang/OSDependent/Windows/ossource.cpp" ] |
| @@ -266,8 +246,6 @@ template("glslang_sources_common") { | |||
| 266 | ] | 246 | ] |
| 267 | } | 247 | } |
| 268 | 248 | ||
| 269 | - include_dirs = [ "${target_gen_dir}/include" ] | ||
| 270 | - | ||
| 271 | deps = [ ":glslang_build_info" ] | 249 | deps = [ ":glslang_build_info" ] |
| 272 | 250 | ||
| 273 | if (invoker.enable_opt) { | 251 | if (invoker.enable_opt) { |
| @@ -275,29 +253,32 @@ template("glslang_sources_common") { | |||
| 275 | "${spirv_tools_dir}:spvtools_opt", | 253 | "${spirv_tools_dir}:spvtools_opt", |
| 276 | "${spirv_tools_dir}:spvtools_val", | 254 | "${spirv_tools_dir}:spvtools_val", |
| 277 | ] | 255 | ] |
| 278 | - include_dirs += [ "${spirv_tools_dir}/include" ] | ||
| 279 | } | 256 | } |
| 280 | 257 | ||
| 258 | + include_dirs = [ "${target_gen_dir}/include" ] | ||
| 259 | + | ||
| 281 | configs -= _configs_to_remove | 260 | configs -= _configs_to_remove |
| 282 | configs += _configs_to_add | 261 | configs += _configs_to_add |
| 283 | } | 262 | } |
| 284 | } | 263 | } |
| 285 | 264 | ||
| 286 | glslang_sources_common("glslang_lib_sources") { | 265 | glslang_sources_common("glslang_lib_sources") { |
| 287 | - enable_opt = true | 266 | + enable_opt = false |
| 288 | - enable_hlsl = true | 267 | + enable_hlsl = !glslang_angle |
| 268 | + is_angle = glslang_angle | ||
| 289 | } | 269 | } |
| 290 | 270 | ||
| 291 | glslang_sources_common("glslang_sources") { | 271 | glslang_sources_common("glslang_sources") { |
| 292 | - enable_opt = true | 272 | + enable_opt = false |
| 293 | enable_hlsl = true | 273 | enable_hlsl = true |
| 274 | + is_angle = false | ||
| 294 | } | 275 | } |
| 295 | 276 | ||
| 296 | source_set("glslang_default_resource_limits_sources") { | 277 | source_set("glslang_default_resource_limits_sources") { |
| 297 | sources = [ | 278 | sources = [ |
| 298 | "StandAlone/ResourceLimits.cpp", | 279 | "StandAlone/ResourceLimits.cpp", |
| 280 | + "StandAlone/ResourceLimits.h", | ||
| 299 | "glslang/Include/ResourceLimits.h", | 281 | "glslang/Include/ResourceLimits.h", |
| 300 | - "glslang/Public/ResourceLimits.h", | ||
| 301 | ] | 282 | ] |
| 302 | public_configs = [ ":glslang_public" ] | 283 | public_configs = [ ":glslang_public" ] |
| 303 | 284 | ||
| @@ -317,15 +298,11 @@ executable("glslang_validator") { | |||
| 317 | deps = [ | 298 | deps = [ |
| 318 | ":glslang_build_info", | 299 | ":glslang_build_info", |
| 319 | ":glslang_default_resource_limits_sources", | 300 | ":glslang_default_resource_limits_sources", |
| 320 | - ":glslang_extension_headers", | ||
| 321 | ":glslang_sources", | 301 | ":glslang_sources", |
| 322 | ] | 302 | ] |
| 323 | public_configs = [ ":glslang_hlsl" ] | 303 | public_configs = [ ":glslang_hlsl" ] |
| 324 | 304 | ||
| 325 | - include_dirs = [ | 305 | + include_dirs = [ "${target_gen_dir}/include" ] |
| 326 | - "${target_gen_dir}/include", | ||
| 327 | - "${spirv_tools_dir}/include", | ||
| 328 | - ] | ||
| 329 | 306 | ||
| 330 | configs -= _configs_to_remove | 307 | configs -= _configs_to_remove |
| 331 | configs += _configs_to_add | 308 | configs += _configs_to_add |
| @@ -336,8 +313,6 @@ executable("spirv-remap") { | |||
| 336 | defines = [ "ENABLE_OPT=1" ] | 313 | defines = [ "ENABLE_OPT=1" ] |
| 337 | deps = [ ":glslang_sources" ] | 314 | deps = [ ":glslang_sources" ] |
| 338 | 315 | ||
| 339 | - include_dirs = [ "${spirv_tools_dir}/include" ] | ||
| 340 | - | ||
| 341 | configs -= _configs_to_remove | 316 | configs -= _configs_to_remove |
| 342 | configs += _configs_to_add | 317 | configs += _configs_to_add |
| 343 | } | 318 | } |
| @@ -3,109 +3,6 @@ | |||
| 3 | All notable changes to this project will be documented in this file. | 3 | All notable changes to this project will be documented in this file. |
| 4 | This project adheres to [Semantic Versioning](https://semver.org/). | 4 | This project adheres to [Semantic Versioning](https://semver.org/). |
| 5 | 5 | ||
| 6 | -## 11.13.0 2022-12-06 | ||
| 7 | - | ||
| 8 | -### Other changes | ||
| 9 | -* Make HelperInvocation accesses volatile for SPIR-V 1.6. | ||
| 10 | -* Improve forward compatibility of ResourceLimits interface | ||
| 11 | -* Remove GLSLANG_ANGLE | ||
| 12 | - | ||
| 13 | -## 11.12.0 2022-10-12 | ||
| 14 | - | ||
| 15 | -### Other changes | ||
| 16 | -* Update generator version | ||
| 17 | -* Add support for GL_EXT_mesh_shader | ||
| 18 | -* Add support for NonSemantic.Shader.DebugInfo.100 | ||
| 19 | -* Make OpEmitMeshTasksEXT a terminal instruction | ||
| 20 | -* Make gl_SubGroupARB a flat in int in Vulkan | ||
| 21 | -* Add support for GL_EXT_opacity_micromap | ||
| 22 | -* Add preamble support to C interface | ||
| 23 | - | ||
| 24 | -## 11.11.0 2022-08-11 | ||
| 25 | - | ||
| 26 | -### Other changes | ||
| 27 | -* Add OpSource support to C interface | ||
| 28 | -* Deprecate samplerBuffer for spirv1.6 and later | ||
| 29 | -* Add support for SPV_AMD_shader_early_and_late_fragment_tests | ||
| 30 | - | ||
| 31 | -## 11.10.0 2022-06-02 | ||
| 32 | - | ||
| 33 | -### Other changes | ||
| 34 | -* Generate OpLine before OpFunction | ||
| 35 | -* Add support for VK_EXT_fragment_shader_barycentric | ||
| 36 | -* Add whitelist filtering for debug comments in SPIRV-Remap | ||
| 37 | -* Add support for GL_EXT_ray_cull_mask | ||
| 38 | - | ||
| 39 | -## 11.9.0 2022-04-06 | ||
| 40 | - | ||
| 41 | -### Other changes | ||
| 42 | -* Add GLSL version override functionality | ||
| 43 | -* Add eliminate-dead-input-components to -Os | ||
| 44 | -* Add enhanced-msgs option | ||
| 45 | -* Explicitly use Python 3 for builds | ||
| 46 | - | ||
| 47 | -## 11.8.0 2022-01-27 | ||
| 48 | - | ||
| 49 | -### Other changes | ||
| 50 | -* Add support for SPIR-V 1.6 | ||
| 51 | -* Add support for Vulkan 1.3 | ||
| 52 | -* Add --hlsl-dx-position-w option | ||
| 53 | - | ||
| 54 | -## 11.7.0 2021-11-11 | ||
| 55 | - | ||
| 56 | -### Other changes | ||
| 57 | -* Add support for targeting Vulkan 1.2 in the C API | ||
| 58 | - | ||
| 59 | -## 11.6.0 2021-08-25 | ||
| 60 | - | ||
| 61 | -### Other changes | ||
| 62 | -* Atomic memory function only for shader storage block member or shared variable | ||
| 63 | -* Add support for gl_MaxVaryingVectors for ogl | ||
| 64 | -* Fix loading bool arrays from interface blocks | ||
| 65 | -* Generate separate stores for partially swizzled memory stores | ||
| 66 | -* Allow layout(std430) uniform with GL_EXT_scalar_block_layout | ||
| 67 | -* Support for pragma STDGL invariant(all) | ||
| 68 | -* Support for GL_NV_ray_tracing_motion_blur | ||
| 69 | - | ||
| 70 | -## 11.5.0 2021-06-23 | ||
| 71 | - | ||
| 72 | -### Other changes | ||
| 73 | -* Implement GLSL_EXT_shader_atomic_float2 | ||
| 74 | -* Implement GL_EXT_spirv_intrinsics | ||
| 75 | -* Fixed SPIR-V remapper not remapping OpExtInst instruction set IDs | ||
| 76 | -* only declare compatibility gl_ variables in compatibility mode | ||
| 77 | -* Add support for float spec const vector initialization | ||
| 78 | -* Implement GL_EXT_subgroup_uniform_control_flow. | ||
| 79 | -* Fix arrays dimensioned with spec constant sized gl_WorkGroupSize | ||
| 80 | -* Add support for 64bit integer scalar and vector types to bitCount() builtin | ||
| 81 | - | ||
| 82 | -## 11.4.0 2021-04-22 | ||
| 83 | - | ||
| 84 | -### Other changes | ||
| 85 | -* Fix to keep source compatible with CMake 3.10.2 | ||
| 86 | - | ||
| 87 | -## 11.3.0 2021-04-21 | ||
| 88 | - | ||
| 89 | -### Other changes | ||
| 90 | -* Added --depfile | ||
| 91 | -* Added --auto-sampled-textures | ||
| 92 | -* Now supports InterpolateAt-based functions | ||
| 93 | -* Supports cross-stage automatic IO mapping | ||
| 94 | -* Supports GL_EXT_vulkan_glsl_relaxed (-R option) | ||
| 95 | - | ||
| 96 | -## 11.2.0 2021-02-18 | ||
| 97 | - | ||
| 98 | -### Other changes | ||
| 99 | -* Removed Python requirement when not building with spirv-tools | ||
| 100 | -* Add support for GL_EXT_shared_memory_block | ||
| 101 | -* Implement GL_EXT_null_initializer | ||
| 102 | -* Add CMake support for Fuschia | ||
| 103 | - | ||
| 104 | -## 11.1.0 2020-12-07 | ||
| 105 | - | ||
| 106 | -### Other changes | ||
| 107 | -* Added ray-tracing extension support | ||
| 108 | - | ||
| 109 | ## 11.0.0 2020-07-20 | 6 | ## 11.0.0 2020-07-20 |
| 110 | 7 | ||
| 111 | ### Breaking changes | 8 | ### Breaking changes |
| @@ -31,18 +31,15 @@ | |||
| 31 | # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | 31 | # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
| 32 | # POSSIBILITY OF SUCH DAMAGE. | 32 | # POSSIBILITY OF SUCH DAMAGE. |
| 33 | 33 | ||
| 34 | +project(glslang | ||
| 35 | + LANGUAGES CXX) | ||
| 36 | + | ||
| 34 | # increase to 3.1 once all major distributions | 37 | # increase to 3.1 once all major distributions |
| 35 | # include a version of CMake >= 3.1 | 38 | # include a version of CMake >= 3.1 |
| 36 | -cmake_minimum_required(VERSION 3.14.0) | 39 | +cmake_minimum_required(VERSION 2.8.12) |
| 37 | if (POLICY CMP0048) | 40 | if (POLICY CMP0048) |
| 38 | cmake_policy(SET CMP0048 NEW) | 41 | cmake_policy(SET CMP0048 NEW) |
| 39 | endif() | 42 | endif() |
| 40 | -if(POLICY CMP0054) | ||
| 41 | - cmake_policy(SET CMP0054 NEW) | ||
| 42 | -endif() | ||
| 43 | - | ||
| 44 | -project(glslang LANGUAGES CXX) | ||
| 45 | - | ||
| 46 | set_property(GLOBAL PROPERTY USE_FOLDERS ON) | 43 | set_property(GLOBAL PROPERTY USE_FOLDERS ON) |
| 47 | 44 | ||
| 48 | # Enable compile commands database | 45 | # Enable compile commands database |
| @@ -50,7 +47,6 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON) | |||
| 50 | 47 | ||
| 51 | # Adhere to GNU filesystem layout conventions | 48 | # Adhere to GNU filesystem layout conventions |
| 52 | include(GNUInstallDirs) | 49 | include(GNUInstallDirs) |
| 53 | -include(CMakePackageConfigHelpers) | ||
| 54 | 50 | ||
| 55 | # Needed for CMAKE_DEPENDENT_OPTION macro | 51 | # Needed for CMAKE_DEPENDENT_OPTION macro |
| 56 | include(CMakeDependentOption) | 52 | include(CMakeDependentOption) |
| @@ -107,17 +103,10 @@ CMAKE_DEPENDENT_OPTION(ENABLE_HLSL | |||
| 107 | option(ENABLE_RTTI "Enables RTTI" OFF) | 103 | option(ENABLE_RTTI "Enables RTTI" OFF) |
| 108 | option(ENABLE_EXCEPTIONS "Enables Exceptions" OFF) | 104 | option(ENABLE_EXCEPTIONS "Enables Exceptions" OFF) |
| 109 | option(ENABLE_OPT "Enables spirv-opt capability if present" ON) | 105 | option(ENABLE_OPT "Enables spirv-opt capability if present" ON) |
| 110 | - | 106 | +option(ENABLE_PCH "Enables Precompiled header" ON) |
| 111 | -if(MINGW OR (CMAKE_SYSTEM_NAME STREQUAL "Darwin" AND ${CMAKE_CXX_COMPILER_ID} MATCHES "GNU")) | ||
| 112 | - # Workaround for CMake behavior on Mac OS with gcc, cmake generates -Xarch_* arguments | ||
| 113 | - # which gcc rejects | ||
| 114 | - option(ENABLE_PCH "Enables Precompiled header" OFF) | ||
| 115 | -else() | ||
| 116 | - option(ENABLE_PCH "Enables Precompiled header" ON) | ||
| 117 | -endif() | ||
| 118 | option(ENABLE_CTEST "Enables testing" ON) | 107 | option(ENABLE_CTEST "Enables testing" ON) |
| 119 | 108 | ||
| 120 | -if(ENABLE_GLSLANG_INSTALL AND CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT AND WIN32) | 109 | +if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT AND WIN32) |
| 121 | set(CMAKE_INSTALL_PREFIX "install" CACHE STRING "..." FORCE) | 110 | set(CMAKE_INSTALL_PREFIX "install" CACHE STRING "..." FORCE) |
| 122 | endif() | 111 | endif() |
| 123 | 112 | ||
| @@ -126,7 +115,7 @@ if(USE_CCACHE) | |||
| 126 | find_program(CCACHE_FOUND ccache) | 115 | find_program(CCACHE_FOUND ccache) |
| 127 | if(CCACHE_FOUND) | 116 | if(CCACHE_FOUND) |
| 128 | set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache) | 117 | set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache) |
| 129 | - endif() | 118 | + endif(CCACHE_FOUND) |
| 130 | endif() | 119 | endif() |
| 131 | 120 | ||
| 132 | if(ENABLE_CTEST) | 121 | if(ENABLE_CTEST) |
| @@ -135,27 +124,26 @@ endif() | |||
| 135 | 124 | ||
| 136 | if(ENABLE_HLSL) | 125 | if(ENABLE_HLSL) |
| 137 | add_definitions(-DENABLE_HLSL) | 126 | add_definitions(-DENABLE_HLSL) |
| 138 | -endif() | 127 | +endif(ENABLE_HLSL) |
| 139 | 128 | ||
| 140 | if(ENABLE_GLSLANG_WEBMIN) | 129 | if(ENABLE_GLSLANG_WEBMIN) |
| 141 | add_definitions(-DGLSLANG_WEB) | 130 | add_definitions(-DGLSLANG_WEB) |
| 142 | if(ENABLE_GLSLANG_WEBMIN_DEVEL) | 131 | if(ENABLE_GLSLANG_WEBMIN_DEVEL) |
| 143 | add_definitions(-DGLSLANG_WEB_DEVEL) | 132 | add_definitions(-DGLSLANG_WEB_DEVEL) |
| 144 | - endif() | 133 | + endif(ENABLE_GLSLANG_WEBMIN_DEVEL) |
| 145 | -endif() | 134 | +endif(ENABLE_GLSLANG_WEBMIN) |
| 146 | 135 | ||
| 147 | if(WIN32) | 136 | if(WIN32) |
| 148 | set(CMAKE_DEBUG_POSTFIX "d") | 137 | set(CMAKE_DEBUG_POSTFIX "d") |
| 149 | - option(OVERRIDE_MSVCCRT "Overrides runtime of MSVC " ON) | 138 | + if(MSVC) |
| 150 | - if(MSVC AND OVERRIDE_MSVCCRT) | ||
| 151 | include(ChooseMSVCCRT.cmake) | 139 | include(ChooseMSVCCRT.cmake) |
| 152 | - endif() | 140 | + endif(MSVC) |
| 153 | add_definitions(-DGLSLANG_OSINCLUDE_WIN32) | 141 | add_definitions(-DGLSLANG_OSINCLUDE_WIN32) |
| 154 | elseif(UNIX) | 142 | elseif(UNIX) |
| 155 | add_definitions(-DGLSLANG_OSINCLUDE_UNIX) | 143 | add_definitions(-DGLSLANG_OSINCLUDE_UNIX) |
| 156 | -else() | 144 | +else(WIN32) |
| 157 | message("unknown platform") | 145 | message("unknown platform") |
| 158 | -endif() | 146 | +endif(WIN32) |
| 159 | 147 | ||
| 160 | if(${CMAKE_CXX_COMPILER_ID} MATCHES "GNU") | 148 | if(${CMAKE_CXX_COMPILER_ID} MATCHES "GNU") |
| 161 | add_compile_options(-Wall -Wmaybe-uninitialized -Wuninitialized -Wunused -Wunused-local-typedefs | 149 | add_compile_options(-Wall -Wmaybe-uninitialized -Wuninitialized -Wunused -Wunused-local-typedefs |
| @@ -171,7 +159,7 @@ if(${CMAKE_CXX_COMPILER_ID} MATCHES "GNU") | |||
| 171 | add_compile_options(-Werror=deprecated-copy) | 159 | add_compile_options(-Werror=deprecated-copy) |
| 172 | endif() | 160 | endif() |
| 173 | 161 | ||
| 174 | - if(NOT CMAKE_VERSION VERSION_LESS "3.13" AND NOT CMAKE_SYSTEM_NAME STREQUAL "Darwin") | 162 | + if(NOT CMAKE_VERSION VERSION_LESS "3.13") |
| 175 | # Error if there's symbols that are not found at link time. | 163 | # Error if there's symbols that are not found at link time. |
| 176 | # add_link_options() was added in CMake 3.13 - if using an earlier | 164 | # add_link_options() was added in CMake 3.13 - if using an earlier |
| 177 | # version don't set this - it should be caught by presubmits anyway. | 165 | # version don't set this - it should be caught by presubmits anyway. |
| @@ -192,26 +180,19 @@ elseif(${CMAKE_CXX_COMPILER_ID} MATCHES "Clang" AND NOT MSVC) | |||
| 192 | # Error if there's symbols that are not found at link time. | 180 | # Error if there's symbols that are not found at link time. |
| 193 | # add_link_options() was added in CMake 3.13 - if using an earlier | 181 | # add_link_options() was added in CMake 3.13 - if using an earlier |
| 194 | # version don't set this - it should be caught by presubmits anyway. | 182 | # version don't set this - it should be caught by presubmits anyway. |
| 195 | - if (WIN32) | 183 | + add_link_options("-Wl,-undefined,error") |
| 196 | - add_link_options("-Wl,--no-undefined") | ||
| 197 | - else() | ||
| 198 | - add_link_options("-Wl,-undefined,error") | ||
| 199 | - endif() | ||
| 200 | endif() | 184 | endif() |
| 201 | elseif(MSVC) | 185 | elseif(MSVC) |
| 202 | if(NOT ENABLE_RTTI) | 186 | if(NOT ENABLE_RTTI) |
| 203 | string(FIND "${CMAKE_CXX_FLAGS}" "/GR" MSVC_HAS_GR) | 187 | string(FIND "${CMAKE_CXX_FLAGS}" "/GR" MSVC_HAS_GR) |
| 204 | if(MSVC_HAS_GR) | 188 | if(MSVC_HAS_GR) |
| 205 | - string(REGEX REPLACE "/GR" "/GR-" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") | 189 | + string(REGEX REPLACE /GR /GR- CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) |
| 206 | else() | 190 | else() |
| 207 | add_compile_options(/GR-) # Disable RTTI | 191 | add_compile_options(/GR-) # Disable RTTI |
| 208 | endif() | 192 | endif() |
| 209 | endif() | 193 | endif() |
| 210 | if(ENABLE_EXCEPTIONS) | 194 | if(ENABLE_EXCEPTIONS) |
| 211 | add_compile_options(/EHsc) # Enable Exceptions | 195 | add_compile_options(/EHsc) # Enable Exceptions |
| 212 | - else() | ||
| 213 | - string(REGEX REPLACE "/EHsc" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") # Try to remove default /EHsc cxx_flag | ||
| 214 | - add_compile_options(/D_HAS_EXCEPTIONS=0) | ||
| 215 | endif() | 196 | endif() |
| 216 | endif() | 197 | endif() |
| 217 | 198 | ||
| @@ -225,7 +206,7 @@ if(ENABLE_GLSLANG_JS) | |||
| 225 | add_compile_options(-Wno-unused-variable -Wno-unused-const-variable) | 206 | add_compile_options(-Wno-unused-variable -Wno-unused-const-variable) |
| 226 | endif() | 207 | endif() |
| 227 | endif() | 208 | endif() |
| 228 | -endif() | 209 | +endif(ENABLE_GLSLANG_JS) |
| 229 | 210 | ||
| 230 | # Request C++11 | 211 | # Request C++11 |
| 231 | if(${CMAKE_VERSION} VERSION_LESS 3.1) | 212 | if(${CMAKE_VERSION} VERSION_LESS 3.1) |
| @@ -253,33 +234,55 @@ if(NOT COMMAND find_host_package) | |||
| 253 | endmacro() | 234 | endmacro() |
| 254 | endif() | 235 | endif() |
| 255 | 236 | ||
| 237 | +# CMake needs to find the right version of python, right from the beginning, | ||
| 238 | +# otherwise, it will find the wrong version and fail later | ||
| 239 | +find_host_package(PythonInterp 3 REQUIRED) | ||
| 240 | + | ||
| 256 | # Root directory for build-time generated include files | 241 | # Root directory for build-time generated include files |
| 257 | set(GLSLANG_GENERATED_INCLUDEDIR "${CMAKE_BINARY_DIR}/include") | 242 | set(GLSLANG_GENERATED_INCLUDEDIR "${CMAKE_BINARY_DIR}/include") |
| 258 | 243 | ||
| 259 | ################################################################################ | 244 | ################################################################################ |
| 260 | # Build version information generation | 245 | # Build version information generation |
| 261 | ################################################################################ | 246 | ################################################################################ |
| 262 | -include(parse_version.cmake) | ||
| 263 | set(GLSLANG_CHANGES_FILE "${CMAKE_CURRENT_SOURCE_DIR}/CHANGES.md") | 247 | set(GLSLANG_CHANGES_FILE "${CMAKE_CURRENT_SOURCE_DIR}/CHANGES.md") |
| 248 | +set(GLSLANG_BUILD_INFO_PY "${CMAKE_CURRENT_SOURCE_DIR}/build_info.py") | ||
| 264 | set(GLSLANG_BUILD_INFO_H_TMPL "${CMAKE_CURRENT_SOURCE_DIR}/build_info.h.tmpl") | 249 | set(GLSLANG_BUILD_INFO_H_TMPL "${CMAKE_CURRENT_SOURCE_DIR}/build_info.h.tmpl") |
| 265 | set(GLSLANG_BUILD_INFO_H "${GLSLANG_GENERATED_INCLUDEDIR}/glslang/build_info.h") | 250 | set(GLSLANG_BUILD_INFO_H "${GLSLANG_GENERATED_INCLUDEDIR}/glslang/build_info.h") |
| 266 | 251 | ||
| 267 | -parse_version(${GLSLANG_CHANGES_FILE} GLSLANG) | 252 | +# Command to build the build_info.h file |
| 253 | +add_custom_command( | ||
| 254 | + OUTPUT ${GLSLANG_BUILD_INFO_H} | ||
| 255 | + COMMAND ${PYTHON_EXECUTABLE} "${GLSLANG_BUILD_INFO_PY}" | ||
| 256 | + ${CMAKE_CURRENT_SOURCE_DIR} | ||
| 257 | + "-i" ${GLSLANG_BUILD_INFO_H_TMPL} | ||
| 258 | + "-o" ${GLSLANG_BUILD_INFO_H} | ||
| 259 | + DEPENDS ${GLSLANG_BUILD_INFO_PY} | ||
| 260 | + ${GLSLANG_CHANGES_FILE} | ||
| 261 | + ${GLSLANG_BUILD_INFO_H_TMPL} | ||
| 262 | + COMMENT "Generating ${GLSLANG_BUILD_INFO_H}") | ||
| 268 | 263 | ||
| 269 | -function(configurate_version) | 264 | +# Target to build the build_info.h file |
| 270 | - set(major ${GLSLANG_VERSION_MAJOR}) | 265 | +add_custom_target(glslang-build-info DEPENDS ${GLSLANG_BUILD_INFO_H}) |
| 271 | - set(minor ${GLSLANG_VERSION_MINOR}) | ||
| 272 | - set(patch ${GLSLANG_VERSION_PATCH}) | ||
| 273 | - set(flavor ${GLSLANG_VERSION_FLAVOR}) | ||
| 274 | - configure_file(${GLSLANG_BUILD_INFO_H_TMPL} ${GLSLANG_BUILD_INFO_H} @ONLY) | ||
| 275 | -endfunction() | ||
| 276 | 266 | ||
| 277 | -configurate_version() | 267 | +# Populate the CMake GLSLANG_VERSION* variables with the build version |
| 268 | +# information. | ||
| 269 | +execute_process( | ||
| 270 | + COMMAND ${PYTHON_EXECUTABLE} "${GLSLANG_BUILD_INFO_PY}" | ||
| 271 | + ${CMAKE_CURRENT_SOURCE_DIR} "<major>.<minor>.<patch><-flavor>;<major>;<minor>;<patch>;<flavor>" | ||
| 272 | + OUTPUT_VARIABLE "GLSLANG_VERSIONS" | ||
| 273 | + OUTPUT_STRIP_TRAILING_WHITESPACE) | ||
| 274 | +list(GET "GLSLANG_VERSIONS" 0 "GLSLANG_VERSION") | ||
| 275 | +list(GET "GLSLANG_VERSIONS" 1 "GLSLANG_VERSION_MAJOR") | ||
| 276 | +list(GET "GLSLANG_VERSIONS" 2 "GLSLANG_VERSION_MINOR") | ||
| 277 | +list(GET "GLSLANG_VERSIONS" 3 "GLSLANG_VERSION_PATCH") | ||
| 278 | +list(GET "GLSLANG_VERSIONS" 4 "GLSLANG_VERSION_FLAVOR") | ||
| 279 | +configure_file(${GLSLANG_CHANGES_FILE} "${CMAKE_CURRENT_BINARY_DIR}/CHANGES.md") # Required to re-run cmake on version change | ||
| 278 | 280 | ||
| 279 | # glslang_add_build_info_dependency() adds the glslang-build-info dependency and | 281 | # glslang_add_build_info_dependency() adds the glslang-build-info dependency and |
| 280 | # generated include directories to target. | 282 | # generated include directories to target. |
| 281 | function(glslang_add_build_info_dependency target) | 283 | function(glslang_add_build_info_dependency target) |
| 282 | target_include_directories(${target} PUBLIC $<BUILD_INTERFACE:${GLSLANG_GENERATED_INCLUDEDIR}>) | 284 | target_include_directories(${target} PUBLIC $<BUILD_INTERFACE:${GLSLANG_GENERATED_INCLUDEDIR}>) |
| 285 | + add_dependencies(${target} glslang-build-info) | ||
| 283 | endfunction() | 286 | endfunction() |
| 284 | 287 | ||
| 285 | # glslang_only_export_explicit_symbols() makes the symbol visibility hidden by | 288 | # glslang_only_export_explicit_symbols() makes the symbol visibility hidden by |
| @@ -313,8 +316,6 @@ else() | |||
| 313 | endif() | 316 | endif() |
| 314 | 317 | ||
| 315 | if(BUILD_EXTERNAL AND IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/External) | 318 | if(BUILD_EXTERNAL AND IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/External) |
| 316 | - find_host_package(PythonInterp 3 REQUIRED) | ||
| 317 | - | ||
| 318 | # We depend on these for later projects, so they should come first. | 319 | # We depend on these for later projects, so they should come first. |
| 319 | add_subdirectory(External) | 320 | add_subdirectory(External) |
| 320 | endif() | 321 | endif() |
| @@ -341,7 +342,7 @@ endif() | |||
| 341 | add_subdirectory(SPIRV) | 342 | add_subdirectory(SPIRV) |
| 342 | if(ENABLE_HLSL) | 343 | if(ENABLE_HLSL) |
| 343 | add_subdirectory(hlsl) | 344 | add_subdirectory(hlsl) |
| 344 | -endif() | 345 | +endif(ENABLE_HLSL) |
| 345 | if(ENABLE_CTEST) | 346 | if(ENABLE_CTEST) |
| 346 | add_subdirectory(gtests) | 347 | add_subdirectory(gtests) |
| 347 | endif() | 348 | endif() |
| @@ -358,48 +359,13 @@ if(ENABLE_CTEST AND BUILD_TESTING) | |||
| 358 | set(RESULTS_PATH ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIGURATION>/localResults) | 359 | set(RESULTS_PATH ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIGURATION>/localResults) |
| 359 | set(VALIDATOR_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/$<CONFIGURATION>/glslangValidator) | 360 | set(VALIDATOR_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/$<CONFIGURATION>/glslangValidator) |
| 360 | set(REMAP_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/$<CONFIGURATION>/spirv-remap) | 361 | set(REMAP_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/$<CONFIGURATION>/spirv-remap) |
| 361 | - else() | 362 | + else(CMAKE_CONFIGURATION_TYPES) |
| 362 | set(RESULTS_PATH ${CMAKE_CURRENT_BINARY_DIR}/localResults) | 363 | set(RESULTS_PATH ${CMAKE_CURRENT_BINARY_DIR}/localResults) |
| 363 | set(VALIDATOR_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/glslangValidator) | 364 | set(VALIDATOR_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/glslangValidator) |
| 364 | set(REMAP_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/spirv-remap) | 365 | set(REMAP_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/spirv-remap) |
| 365 | - endif() | 366 | + endif(CMAKE_CONFIGURATION_TYPES) |
| 366 | 367 | ||
| 367 | add_test(NAME glslang-testsuite | 368 | add_test(NAME glslang-testsuite |
| 368 | COMMAND bash ${IGNORE_CR_FLAG} runtests ${RESULTS_PATH} ${VALIDATOR_PATH} ${REMAP_PATH} | 369 | COMMAND bash ${IGNORE_CR_FLAG} runtests ${RESULTS_PATH} ${VALIDATOR_PATH} ${REMAP_PATH} |
| 369 | WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Test/) | 370 | WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Test/) |
| 370 | endif() | 371 | endif() |
| 371 | - | ||
| 372 | -if(ENABLE_GLSLANG_INSTALL) | ||
| 373 | - file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/glslang-config.cmake.in" [=[ | ||
| 374 | - @PACKAGE_INIT@ | ||
| 375 | - include("@PACKAGE_PATH_EXPORT_TARGETS@") | ||
| 376 | - ]=]) | ||
| 377 | - | ||
| 378 | - set(PATH_EXPORT_TARGETS "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake") | ||
| 379 | - configure_package_config_file( | ||
| 380 | - "${CMAKE_CURRENT_BINARY_DIR}/glslang-config.cmake.in" | ||
| 381 | - "${CMAKE_CURRENT_BINARY_DIR}/glslang-config.cmake" | ||
| 382 | - PATH_VARS | ||
| 383 | - PATH_EXPORT_TARGETS | ||
| 384 | - INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME} | ||
| 385 | - ) | ||
| 386 | - | ||
| 387 | - write_basic_package_version_file("${CMAKE_CURRENT_BINARY_DIR}/glslang-config-version.cmake" | ||
| 388 | - VERSION ${GLSLANG_VERSION} | ||
| 389 | - COMPATIBILITY SameMajorVersion | ||
| 390 | - ) | ||
| 391 | - | ||
| 392 | - install( | ||
| 393 | - EXPORT glslang-targets | ||
| 394 | - NAMESPACE "glslang::" | ||
| 395 | - DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}" | ||
| 396 | - ) | ||
| 397 | - | ||
| 398 | - install( | ||
| 399 | - FILES | ||
| 400 | - "${CMAKE_CURRENT_BINARY_DIR}/glslang-config.cmake" | ||
| 401 | - "${CMAKE_CURRENT_BINARY_DIR}/glslang-config-version.cmake" | ||
| 402 | - DESTINATION | ||
| 403 | - "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}" | ||
| 404 | - ) | ||
| 405 | -endif() | ||
| @@ -56,15 +56,10 @@ Note:If the text contains special characters, please escape them according to th | |||
| 56 | --> | 56 | --> |
| 57 | <configuration> | 57 | <configuration> |
| 58 | <oatconfig> | 58 | <oatconfig> |
| 59 | - <licensefile>LICENSE.txt</licensefile> | 59 | + <licensefile>COPYING</licensefile> |
| 60 | - <policylist> | ||
| 61 | - <policy name="projectPolicy" desc=""> | ||
| 62 | - <policyitem type="compatibility" name="Khronos License" path="SPIRV/.*" desc="宽松型许可证,实际兼容"/> | ||
| 63 | - </policy> | ||
| 64 | - </policylist> | ||
| 65 | - | ||
| 66 | <filefilterlist> | 60 | <filefilterlist> |
| 67 | <filefilter name="defaultFilter" desc="Files not to check"> | 61 | <filefilter name="defaultFilter" desc="Files not to check"> |
| 62 | + <filteritem type="filepath" name=".*" desc="third party"/> | ||
| 68 | </filefilter> | 63 | </filefilter> |
| 69 | <filefilter name="defaultPolicyFilter" desc="Filters for compatibility,license header policies"> | 64 | <filefilter name="defaultPolicyFilter" desc="Filters for compatibility,license header policies"> |
| 70 | <filteritem type="filename" name="README.OpenSource"/> | 65 | <filteritem type="filename" name="README.OpenSource"/> |
| @@ -73,8 +68,6 @@ Note:If the text contains special characters, please escape them according to th | |||
| 73 | <filteritem type="filename" name="doxygen.ini.in" desc="not used in ohos"/> | 68 | <filteritem type="filename" name="doxygen.ini.in" desc="not used in ohos"/> |
| 74 | <filteritem type="filename" name="COPYING" desc="data/COPYING not used in ohos"/> | 69 | <filteritem type="filename" name="COPYING" desc="data/COPYING not used in ohos"/> |
| 75 | <filteritem type="filename" name="DCO-1.1.txt" desc="not used in ohos"/> | 70 | <filteritem type="filename" name="DCO-1.1.txt" desc="not used in ohos"/> |
| 76 | - <filteritem type="filename" name="LICENSE.txt" desc="测试套使用不在产品里面,同时该文件是GPL3 bison exception"/> | ||
| 77 | - <filteritem type="filepath" name="glslang/MachineIndependent/.*" desc="测试套使用不在产品里面,同时该文件是GPL3 bison exception"/> | ||
| 78 | </filefilter> | 71 | </filefilter> |
| 79 | <filefilter name="copyrightPolicyFilter" desc="Filters for copyright header policies" > | 72 | <filefilter name="copyrightPolicyFilter" desc="Filters for copyright header policies" > |
| 80 | <filteritem type="filename" name="README.OpenSource"/> | 73 | <filteritem type="filename" name="README.OpenSource"/> |
| @@ -82,7 +75,6 @@ Note:If the text contains special characters, please escape them according to th | |||
| 82 | </filefilter> | 75 | </filefilter> |
| 83 | <filefilter name="binaryFileTypePolicyFilter" desc="Filters for binary file policies"> | 76 | <filefilter name="binaryFileTypePolicyFilter" desc="Filters for binary file policies"> |
| 84 | <filteritem type="filename" name="*.bmp|*.png|*.jpg" desc="binary not used and belonged to weston"/> | 77 | <filteritem type="filename" name="*.bmp|*.png|*.jpg" desc="binary not used and belonged to weston"/> |
| 85 | - <filteritem type="filepath" name="Test/.*" desc="上游原生二进制"/> | ||
| 86 | </filefilter> | 78 | </filefilter> |
| 87 | </filefilterlist> | 79 | </filefilterlist> |
| 88 | </oatconfig> | 80 | </oatconfig> |
| @@ -41,19 +41,8 @@ if(WIN32) | |||
| 41 | source_group("Source" FILES ${SOURCES}) | 41 | source_group("Source" FILES ${SOURCES}) |
| 42 | endif(WIN32) | 42 | endif(WIN32) |
| 43 | 43 | ||
| 44 | -if(ENABLE_GLSLANG_INSTALL AND NOT BUILD_SHARED_LIBS) | 44 | +if(ENABLE_GLSLANG_INSTALL) |
| 45 | - install(TARGETS OGLCompiler EXPORT glslang-targets) | 45 | + install(TARGETS OGLCompiler EXPORT OGLCompilerTargets |
| 46 | - | 46 | + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) |
| 47 | - # Backward compatibility | 47 | + install(EXPORT OGLCompilerTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) |
| 48 | - file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/OGLCompilerTargets.cmake" " | 48 | +endif(ENABLE_GLSLANG_INSTALL) |
| 49 | - message(WARNING \"Using `OGLCompilerTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") | ||
| 50 | - | ||
| 51 | - if (NOT TARGET glslang::OGLCompiler) | ||
| 52 | - include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\") | ||
| 53 | - endif() | ||
| 54 | - | ||
| 55 | - add_library(OGLCompiler ALIAS glslang::OGLCompiler) | ||
| 56 | - ") | ||
| 57 | - install(FILES "${CMAKE_CURRENT_BINARY_DIR}/OGLCompilerTargets.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) | ||
| 58 | - | ||
| 59 | -endif() | ||
| @@ -102,7 +102,7 @@ bool InitThread() | |||
| 102 | return false; | 102 | return false; |
| 103 | } | 103 | } |
| 104 | 104 | ||
| 105 | - if (OS_GetTLSValue(ThreadInitializeIndex) != nullptr) | 105 | + if (OS_GetTLSValue(ThreadInitializeIndex) != 0) |
| 106 | return true; | 106 | return true; |
| 107 | 107 | ||
| 108 | if (! OS_SetTLSValue(ThreadInitializeIndex, (void *)1)) { | 108 | if (! OS_SetTLSValue(ThreadInitializeIndex, (void *)1)) { |
| @@ -130,8 +130,8 @@ bool DetachThread() | |||
| 130 | // | 130 | // |
| 131 | // Function is re-entrant and this thread may not have been initialized. | 131 | // Function is re-entrant and this thread may not have been initialized. |
| 132 | // | 132 | // |
| 133 | - if (OS_GetTLSValue(ThreadInitializeIndex) != nullptr) { | 133 | + if (OS_GetTLSValue(ThreadInitializeIndex) != 0) { |
| 134 | - if (!OS_SetTLSValue(ThreadInitializeIndex, nullptr)) { | 134 | + if (!OS_SetTLSValue(ThreadInitializeIndex, (void *)0)) { |
| 135 | assert(0 && "DetachThread(): Unable to clear init flag."); | 135 | assert(0 && "DetachThread(): Unable to clear init flag."); |
| 136 | success = false; | 136 | success = false; |
| 137 | } | 137 | } |
| @@ -3,7 +3,7 @@ | |||
| 3 | "Name": "glslang", | 3 | "Name": "glslang", |
| 4 | "License": "Apache-2.0", | 4 | "License": "Apache-2.0", |
| 5 | "License File": "LICENSE", | 5 | "License File": "LICENSE", |
| 6 | - "Version Number": "11.13.0", | 6 | + "Version Number": "11.0.0", |
| 7 | "Owner": "zhangleiyu1@huawei.com", | 7 | "Owner": "zhangleiyu1@huawei.com", |
| 8 | "Upstream URL": "https://github.com/KhronosGroup/glslang.git", | 8 | "Upstream URL": "https://github.com/KhronosGroup/glslang.git", |
| 9 | "Description": "GLSlang is an advanced shader language." | 9 | "Description": "GLSlang is an advanced shader language." |
| @@ -19,8 +19,8 @@ See issue #1964. | |||
| 19 | 19 | ||
| 20 | If people are only using this location to get spirv.hpp, I recommend they get that from [SPIRV-Headers](https://github.com/KhronosGroup/SPIRV-Headers) instead. | 20 | If people are only using this location to get spirv.hpp, I recommend they get that from [SPIRV-Headers](https://github.com/KhronosGroup/SPIRV-Headers) instead. |
| 21 | 21 | ||
| 22 | -[](https://ci.appveyor.com/project/Khronoswebmaster/glslang/branch/master) | 22 | +[](https://travis-ci.org/KhronosGroup/glslang) |
| 23 | - | 23 | +[](https://ci.appveyor.com/project/Khronoswebmaster/glslang/branch/master) |
| 24 | 24 | ||
| 25 | # Glslang Components and Status | 25 | # Glslang Components and Status |
| 26 | 26 | ||
| @@ -85,15 +85,7 @@ The applied stage-specific rules are based on the file extension: | |||
| 85 | * `.frag` for a fragment shader | 85 | * `.frag` for a fragment shader |
| 86 | * `.comp` for a compute shader | 86 | * `.comp` for a compute shader |
| 87 | 87 | ||
| 88 | -For ray tracing pipeline shaders: | 88 | +There is also a non-shader extension |
| 89 | -* `.rgen` for a ray generation shader | ||
| 90 | -* `.rint` for a ray intersection shader | ||
| 91 | -* `.rahit` for a ray any-hit shader | ||
| 92 | -* `.rchit` for a ray closest-hit shader | ||
| 93 | -* `.rmiss` for a ray miss shader | ||
| 94 | -* `.rcall` for a callable shader | ||
| 95 | - | ||
| 96 | -There is also a non-shader extension: | ||
| 97 | * `.conf` for a configuration file of limits, see usage statement for example | 89 | * `.conf` for a configuration file of limits, see usage statement for example |
| 98 | 90 | ||
| 99 | ## Building (CMake) | 91 | ## Building (CMake) |
| @@ -133,15 +125,6 @@ cd <the directory glslang was cloned to, "External" will be a subdirectory> | |||
| 133 | git clone https://github.com/google/googletest.git External/googletest | 125 | git clone https://github.com/google/googletest.git External/googletest |
| 134 | ``` | 126 | ``` |
| 135 | 127 | ||
| 136 | -TEMPORARY NOTICE: additionally perform the following to avoid a current | ||
| 137 | -breakage in googletest: | ||
| 138 | - | ||
| 139 | -```bash | ||
| 140 | -cd External/googletest | ||
| 141 | -git checkout 0c400f67fcf305869c5fb113dd296eca266c9725 | ||
| 142 | -cd ../.. | ||
| 143 | -``` | ||
| 144 | - | ||
| 145 | If you wish to assure that SPIR-V generated from HLSL is legal for Vulkan, | 128 | If you wish to assure that SPIR-V generated from HLSL is legal for Vulkan, |
| 146 | wish to invoke -Os to reduce SPIR-V size from HLSL or GLSL, or wish to run the | 129 | wish to invoke -Os to reduce SPIR-V size from HLSL or GLSL, or wish to run the |
| 147 | integrated test suite, install spirv-tools with this: | 130 | integrated test suite, install spirv-tools with this: |
| @@ -169,8 +152,8 @@ cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$(pwd)/install" $SOURCE | |||
| 169 | 152 | ||
| 170 | For building on Android: | 153 | For building on Android: |
| 171 | ```bash | 154 | ```bash |
| 172 | -cmake $SOURCE_DIR -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$(pwd)/install" -DANDROID_ABI=arm64-v8a -DCMAKE_BUILD_TYPE=Release -DANDROID_STL=c++_static -DANDROID_PLATFORM=android-24 -DCMAKE_SYSTEM_NAME=Android -DANDROID_TOOLCHAIN=clang -DANDROID_ARM_MODE=arm -DCMAKE_MAKE_PROGRAM=$ANDROID_NDK_HOME/prebuilt/linux-x86_64/bin/make -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake | 155 | +cmake $SOURCE_DIR -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$(pwd)/install" -DANDROID_ABI=arm64-v8a -DCMAKE_BUILD_TYPE=Release -DANDROID_STL=c++_static -DANDROID_PLATFORM=android-24 -DCMAKE_SYSTEM_NAME=Android -DANDROID_TOOLCHAIN=clang -DANDROID_ARM_MODE=arm -DCMAKE_MAKE_PROGRAM=$ANDROID_NDK_ROOT/prebuilt/linux-x86_64/bin/make -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_ROOT/build/cmake/android.toolchain.cmake |
| 173 | -# If on Windows will be -DCMAKE_MAKE_PROGRAM=%ANDROID_NDK_HOME%\prebuilt\windows-x86_64\bin\make.exe | 156 | +# If on Windows will be -DCMAKE_MAKE_PROGRAM=%ANDROID_NDK_ROOT%\prebuilt\windows-x86_64\bin\make.exe |
| 174 | # -G is needed for building on Windows | 157 | # -G is needed for building on Windows |
| 175 | # -DANDROID_ABI can also be armeabi-v7a for 32 bit | 158 | # -DANDROID_ABI can also be armeabi-v7a for 32 bit |
| 176 | ``` | 159 | ``` |
| @@ -429,77 +412,6 @@ ShCompile(shader, compiler) -> compiler(AST) -> <back end> | |||
| 429 | In practice, `ShCompile()` takes shader strings, default version, and | 412 | In practice, `ShCompile()` takes shader strings, default version, and |
| 430 | warning/error and other options for controlling compilation. | 413 | warning/error and other options for controlling compilation. |
| 431 | 414 | ||
| 432 | -### C Functional Interface (new) | ||
| 433 | - | ||
| 434 | -This interface is located `glslang_c_interface.h` and exposes functionality similar to the C++ interface. The following snippet is a complete example showing how to compile GLSL into SPIR-V 1.5 for Vulkan 1.2. | ||
| 435 | - | ||
| 436 | -```cxx | ||
| 437 | -std::vector<uint32_t> compileShaderToSPIRV_Vulkan(glslang_stage_t stage, const char* shaderSource, const char* fileName) | ||
| 438 | -{ | ||
| 439 | - const glslang_input_t input = { | ||
| 440 | - .language = GLSLANG_SOURCE_GLSL, | ||
| 441 | - .stage = stage, | ||
| 442 | - .client = GLSLANG_CLIENT_VULKAN, | ||
| 443 | - .client_version = GLSLANG_TARGET_VULKAN_1_2, | ||
| 444 | - .target_language = GLSLANG_TARGET_SPV, | ||
| 445 | - .target_language_version = GLSLANG_TARGET_SPV_1_5, | ||
| 446 | - .code = shaderSource, | ||
| 447 | - .default_version = 100, | ||
| 448 | - .default_profile = GLSLANG_NO_PROFILE, | ||
| 449 | - .force_default_version_and_profile = false, | ||
| 450 | - .forward_compatible = false, | ||
| 451 | - .messages = GLSLANG_MSG_DEFAULT_BIT, | ||
| 452 | - .resource = reinterpret_cast<const glslang_resource_t*>(&glslang::DefaultTBuiltInResource), | ||
| 453 | - }; | ||
| 454 | - | ||
| 455 | - glslang_shader_t* shader = glslang_shader_create(&input); | ||
| 456 | - | ||
| 457 | - if (!glslang_shader_preprocess(shader, &input)) { | ||
| 458 | - printf("GLSL preprocessing failed %s\n", fileName); | ||
| 459 | - printf("%s\n", glslang_shader_get_info_log(shader)); | ||
| 460 | - printf("%s\n", glslang_shader_get_info_debug_log(shader)); | ||
| 461 | - printf("%s\n", input.code); | ||
| 462 | - glslang_shader_delete(shader); | ||
| 463 | - return std::vector<uint32_t>(); | ||
| 464 | - } | ||
| 465 | - | ||
| 466 | - if (!glslang_shader_parse(shader, &input)) { | ||
| 467 | - printf("GLSL parsing failed %s\n", fileName); | ||
| 468 | - printf("%s\n", glslang_shader_get_info_log(shader)); | ||
| 469 | - printf("%s\n", glslang_shader_get_info_debug_log(shader)); | ||
| 470 | - printf("%s\n", glslang_shader_get_preprocessed_code(shader)); | ||
| 471 | - glslang_shader_delete(shader); | ||
| 472 | - return std::vector<uint32_t>(); | ||
| 473 | - } | ||
| 474 | - | ||
| 475 | - glslang_program_t* program = glslang_program_create(); | ||
| 476 | - glslang_program_add_shader(program, shader); | ||
| 477 | - | ||
| 478 | - if (!glslang_program_link(program, GLSLANG_MSG_SPV_RULES_BIT | GLSLANG_MSG_VULKAN_RULES_BIT)) { | ||
| 479 | - printf("GLSL linking failed %s\n", fileName); | ||
| 480 | - printf("%s\n", glslang_program_get_info_log(program)); | ||
| 481 | - printf("%s\n", glslang_program_get_info_debug_log(program)); | ||
| 482 | - glslang_program_delete(program); | ||
| 483 | - glslang_shader_delete(shader); | ||
| 484 | - return std::vector<uint32_t>(); | ||
| 485 | - } | ||
| 486 | - | ||
| 487 | - glslang_program_SPIRV_generate(program, stage); | ||
| 488 | - | ||
| 489 | - std::vector<uint32_t> outShaderModule(glslang_program_SPIRV_get_size(program)); | ||
| 490 | - glslang_program_SPIRV_get(program, outShaderModule.data()); | ||
| 491 | - | ||
| 492 | - const char* spirv_messages = glslang_program_SPIRV_get_messages(program); | ||
| 493 | - if (spirv_messages) | ||
| 494 | - printf("(%s) %s\b", fileName, spirv_messages); | ||
| 495 | - | ||
| 496 | - glslang_program_delete(program); | ||
| 497 | - glslang_shader_delete(shader); | ||
| 498 | - | ||
| 499 | - return outShaderModule; | ||
| 500 | -} | ||
| 501 | -``` | ||
| 502 | - | ||
| 503 | ## Basic Internal Operation | 415 | ## Basic Internal Operation |
| 504 | 416 | ||
| 505 | * Initial lexical analysis is done by the preprocessor in | 417 | * Initial lexical analysis is done by the preprocessor in |
| @@ -29,8 +29,6 @@ config("SPIRV_config") { | |||
| 29 | "-fno-rtti", | 29 | "-fno-rtti", |
| 30 | "-fno-exceptions", | 30 | "-fno-exceptions", |
| 31 | "-Wno-sign-compare", | 31 | "-Wno-sign-compare", |
| 32 | - "-Wno-unused-parameter", | ||
| 33 | - "-std=c++11", | ||
| 34 | ] | 32 | ] |
| 35 | 33 | ||
| 36 | defines = deqp_common_defines | 34 | defines = deqp_common_defines |
| @@ -36,8 +36,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| 36 | #include "SPIRV/Logger.h" | 36 | #include "SPIRV/Logger.h" |
| 37 | #include "SPIRV/SpvTools.h" | 37 | #include "SPIRV/SpvTools.h" |
| 38 | 38 | ||
| 39 | -static_assert(sizeof(glslang_spv_options_t) == sizeof(glslang::SpvOptions), ""); | ||
| 40 | - | ||
| 41 | typedef struct glslang_program_s { | 39 | typedef struct glslang_program_s { |
| 42 | glslang::TProgram* program; | 40 | glslang::TProgram* program; |
| 43 | std::vector<unsigned int> spirv; | 41 | std::vector<unsigned int> spirv; |
| @@ -59,22 +57,22 @@ static EShLanguage c_shader_stage(glslang_stage_t stage) | |||
| 59 | return EShLangFragment; | 57 | return EShLangFragment; |
| 60 | case GLSLANG_STAGE_COMPUTE: | 58 | case GLSLANG_STAGE_COMPUTE: |
| 61 | return EShLangCompute; | 59 | return EShLangCompute; |
| 62 | - case GLSLANG_STAGE_RAYGEN: | 60 | + case GLSLANG_STAGE_RAYGEN_NV: |
| 63 | return EShLangRayGen; | 61 | return EShLangRayGen; |
| 64 | - case GLSLANG_STAGE_INTERSECT: | 62 | + case GLSLANG_STAGE_INTERSECT_NV: |
| 65 | return EShLangIntersect; | 63 | return EShLangIntersect; |
| 66 | - case GLSLANG_STAGE_ANYHIT: | 64 | + case GLSLANG_STAGE_ANYHIT_NV: |
| 67 | return EShLangAnyHit; | 65 | return EShLangAnyHit; |
| 68 | - case GLSLANG_STAGE_CLOSESTHIT: | 66 | + case GLSLANG_STAGE_CLOSESTHIT_NV: |
| 69 | return EShLangClosestHit; | 67 | return EShLangClosestHit; |
| 70 | - case GLSLANG_STAGE_MISS: | 68 | + case GLSLANG_STAGE_MISS_NV: |
| 71 | return EShLangMiss; | 69 | return EShLangMiss; |
| 72 | - case GLSLANG_STAGE_CALLABLE: | 70 | + case GLSLANG_STAGE_CALLABLE_NV: |
| 73 | return EShLangCallable; | 71 | return EShLangCallable; |
| 74 | - case GLSLANG_STAGE_TASK: | 72 | + case GLSLANG_STAGE_TASK_NV: |
| 75 | - return EShLangTask; | 73 | + return EShLangTaskNV; |
| 76 | - case GLSLANG_STAGE_MESH: | 74 | + case GLSLANG_STAGE_MESH_NV: |
| 77 | - return EShLangMesh; | 75 | + return EShLangMeshNV; |
| 78 | default: | 76 | default: |
| 79 | break; | 77 | break; |
| 80 | } | 78 | } |
| @@ -83,25 +81,13 @@ static EShLanguage c_shader_stage(glslang_stage_t stage) | |||
| 83 | 81 | ||
| 84 | GLSLANG_EXPORT void glslang_program_SPIRV_generate(glslang_program_t* program, glslang_stage_t stage) | 82 | GLSLANG_EXPORT void glslang_program_SPIRV_generate(glslang_program_t* program, glslang_stage_t stage) |
| 85 | { | 83 | { |
| 86 | - glslang_spv_options_t spv_options; | ||
| 87 | - spv_options.generate_debug_info = false; | ||
| 88 | - spv_options.strip_debug_info = false; | ||
| 89 | - spv_options.emit_nonsemantic_shader_debug_info = false; | ||
| 90 | - spv_options.emit_nonsemantic_shader_debug_source = false; | ||
| 91 | - spv_options.disable_optimizer = true; | ||
| 92 | - spv_options.optimize_size = false; | ||
| 93 | - spv_options.disassemble = false; | ||
| 94 | - spv_options.validate = true; | ||
| 95 | - | ||
| 96 | - glslang_program_SPIRV_generate_with_options(program, stage, &spv_options); | ||
| 97 | -} | ||
| 98 | - | ||
| 99 | -GLSLANG_EXPORT void glslang_program_SPIRV_generate_with_options(glslang_program_t* program, glslang_stage_t stage, glslang_spv_options_t* spv_options) { | ||
| 100 | spv::SpvBuildLogger logger; | 84 | spv::SpvBuildLogger logger; |
| 85 | + glslang::SpvOptions spvOptions; | ||
| 86 | + spvOptions.validate = true; | ||
| 101 | 87 | ||
| 102 | const glslang::TIntermediate* intermediate = program->program->getIntermediate(c_shader_stage(stage)); | 88 | const glslang::TIntermediate* intermediate = program->program->getIntermediate(c_shader_stage(stage)); |
| 103 | 89 | ||
| 104 | - glslang::GlslangToSpv(*intermediate, program->spirv, &logger, reinterpret_cast<glslang::SpvOptions*>(spv_options)); | 90 | + glslang::GlslangToSpv(*intermediate, program->spirv, &logger, &spvOptions); |
| 105 | 91 | ||
| 106 | program->loggerMessages = logger.getAllMessages(); | 92 | program->loggerMessages = logger.getAllMessages(); |
| 107 | } | 93 | } |
| @@ -62,9 +62,7 @@ set(HEADERS | |||
| 62 | disassemble.h | 62 | disassemble.h |
| 63 | GLSL.ext.AMD.h | 63 | GLSL.ext.AMD.h |
| 64 | GLSL.ext.NV.h | 64 | GLSL.ext.NV.h |
| 65 | - GLSL.ext.ARM.h | 65 | + NonSemanticDebugPrintf.h) |
| 66 | - NonSemanticDebugPrintf.h | ||
| 67 | - NonSemanticShaderDebugInfo100.h) | ||
| 68 | 66 | ||
| 69 | set(SPVREMAP_HEADERS | 67 | set(SPVREMAP_HEADERS |
| 70 | SPVRemapper.h | 68 | SPVRemapper.h |
| @@ -103,44 +101,38 @@ if(ENABLE_OPT) | |||
| 103 | $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/External>) | 101 | $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/External>) |
| 104 | else() | 102 | else() |
| 105 | target_link_libraries(SPIRV PRIVATE MachineIndependent) | 103 | target_link_libraries(SPIRV PRIVATE MachineIndependent) |
| 106 | -endif() | 104 | +endif(ENABLE_OPT) |
| 107 | 105 | ||
| 108 | if(WIN32) | 106 | if(WIN32) |
| 109 | source_group("Source" FILES ${SOURCES} ${HEADERS}) | 107 | source_group("Source" FILES ${SOURCES} ${HEADERS}) |
| 110 | source_group("Source" FILES ${SPVREMAP_SOURCES} ${SPVREMAP_HEADERS}) | 108 | source_group("Source" FILES ${SPVREMAP_SOURCES} ${SPVREMAP_HEADERS}) |
| 111 | -endif() | 109 | +endif(WIN32) |
| 112 | 110 | ||
| 113 | if(ENABLE_GLSLANG_INSTALL) | 111 | if(ENABLE_GLSLANG_INSTALL) |
| 114 | - if (ENABLE_SPVREMAPPER) | 112 | + if(BUILD_SHARED_LIBS) |
| 115 | - install(TARGETS SPVRemapper EXPORT glslang-targets) | 113 | + if (ENABLE_SPVREMAPPER) |
| 116 | - endif() | 114 | + install(TARGETS SPVRemapper EXPORT SPVRemapperTargets |
| 117 | - | 115 | + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} |
| 118 | - install(TARGETS SPIRV EXPORT glslang-targets) | 116 | + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) |
| 119 | - | ||
| 120 | - # Backward compatibility | ||
| 121 | - if (ENABLE_SPVREMAPPER) | ||
| 122 | - file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/SPVRemapperTargets.cmake" " | ||
| 123 | - message(WARNING \"Using `SPVRemapperTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") | ||
| 124 | - | ||
| 125 | - if (NOT TARGET glslang::SPVRemapper) | ||
| 126 | - include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\") | ||
| 127 | - endif() | ||
| 128 | - | ||
| 129 | - add_library(SPVRemapper ALIAS glslang::SPVRemapper) | ||
| 130 | - ") | ||
| 131 | - install(FILES "${CMAKE_CURRENT_BINARY_DIR}/SPVRemapperTargets.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) | ||
| 132 | - endif() | ||
| 133 | - | ||
| 134 | - file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/SPIRVTargets.cmake" " | ||
| 135 | - message(WARNING \"Using `SPIRVTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") | ||
| 136 | - | ||
| 137 | - if (NOT TARGET glslang::SPIRV) | ||
| 138 | - include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\") | ||
| 139 | endif() | 117 | endif() |
| 118 | + install(TARGETS SPIRV EXPORT SPIRVTargets | ||
| 119 | + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} | ||
| 120 | + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} | ||
| 121 | + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) | ||
| 122 | + else() | ||
| 123 | + if (ENABLE_SPVREMAPPER) | ||
| 124 | + install(TARGETS SPVRemapper EXPORT SPVRemapperTargets | ||
| 125 | + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) | ||
| 126 | + endif() | ||
| 127 | + install(TARGETS SPIRV EXPORT SPIRVTargets | ||
| 128 | + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) | ||
| 129 | + endif() | ||
| 140 | 130 | ||
| 141 | - add_library(SPIRV ALIAS glslang::SPIRV) | 131 | + if (ENABLE_SPVREMAPPER) |
| 142 | - ") | 132 | + install(EXPORT SPVRemapperTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) |
| 143 | - install(FILES "${CMAKE_CURRENT_BINARY_DIR}/SPIRVTargets.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) | 133 | + endif() |
| 134 | + | ||
| 135 | + install(EXPORT SPIRVTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) | ||
| 144 | 136 | ||
| 145 | install(FILES ${HEADERS} ${SPVREMAP_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/glslang/SPIRV/) | 137 | install(FILES ${HEADERS} ${SPVREMAP_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/glslang/SPIRV/) |
| 146 | -endif() | 138 | +endif(ENABLE_GLSLANG_INSTALL) |
| @@ -1,35 +0,0 @@ | |||
| 1 | -/* | ||
| 2 | -** Copyright (c) 2022 ARM Limited | ||
| 3 | -** | ||
| 4 | -** Permission is hereby granted, free of charge, to any person obtaining a copy | ||
| 5 | -** of this software and/or associated documentation files (the "Materials"), | ||
| 6 | -** to deal in the Materials without restriction, including without limitation | ||
| 7 | -** the rights to use, copy, modify, merge, publish, distribute, sublicense, | ||
| 8 | -** and/or sell copies of the Materials, and to permit persons to whom the | ||
| 9 | -** Materials are furnished to do so, subject to the following conditions: | ||
| 10 | -** | ||
| 11 | -** The above copyright notice and this permission notice shall be included in | ||
| 12 | -** all copies or substantial portions of the Materials. | ||
| 13 | -** | ||
| 14 | -** MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS | ||
| 15 | -** STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND | ||
| 16 | -** HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ | ||
| 17 | -** | ||
| 18 | -** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | ||
| 19 | -** OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
| 20 | -** FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL | ||
| 21 | -** THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
| 22 | -** LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||
| 23 | -** FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS | ||
| 24 | -** IN THE MATERIALS. | ||
| 25 | -*/ | ||
| 26 | - | ||
| 27 | -#ifndef GLSLextARM_H | ||
| 28 | -#define GLSLextARM_H | ||
| 29 | - | ||
| 30 | -static const int GLSLextARMVersion = 100; | ||
| 31 | -static const int GLSLextARMRevision = 1; | ||
| 32 | - | ||
| 33 | -static const char * const E_SPV_ARM_core_builtins = "SPV_ARM_core_builtins"; | ||
| 34 | - | ||
| 35 | -#endif // #ifndef GLSLextARM_H | ||
| @@ -36,9 +36,5 @@ static const char* const E_SPV_EXT_fragment_fully_covered = "SPV_EXT_fragment_fu | |||
| 36 | static const char* const E_SPV_EXT_fragment_invocation_density = "SPV_EXT_fragment_invocation_density"; | 36 | static const char* const E_SPV_EXT_fragment_invocation_density = "SPV_EXT_fragment_invocation_density"; |
| 37 | static const char* const E_SPV_EXT_demote_to_helper_invocation = "SPV_EXT_demote_to_helper_invocation"; | 37 | static const char* const E_SPV_EXT_demote_to_helper_invocation = "SPV_EXT_demote_to_helper_invocation"; |
| 38 | static const char* const E_SPV_EXT_shader_atomic_float_add = "SPV_EXT_shader_atomic_float_add"; | 38 | static const char* const E_SPV_EXT_shader_atomic_float_add = "SPV_EXT_shader_atomic_float_add"; |
| 39 | -static const char* const E_SPV_EXT_shader_atomic_float16_add = "SPV_EXT_shader_atomic_float16_add"; | ||
| 40 | -static const char* const E_SPV_EXT_shader_atomic_float_min_max = "SPV_EXT_shader_atomic_float_min_max"; | ||
| 41 | -static const char* const E_SPV_EXT_shader_image_int64 = "SPV_EXT_shader_image_int64"; | ||
| 42 | -static const char* const E_SPV_EXT_mesh_shader = "SPV_EXT_mesh_shader"; | ||
| 43 | 39 | ||
| 44 | #endif // #ifndef GLSLextEXT_H | 40 | #endif // #ifndef GLSLextEXT_H |
| @@ -29,7 +29,7 @@ | |||
| 29 | #define GLSLextKHR_H | 29 | #define GLSLextKHR_H |
| 30 | 30 | ||
| 31 | static const int GLSLextKHRVersion = 100; | 31 | static const int GLSLextKHRVersion = 100; |
| 32 | -static const int GLSLextKHRRevision = 3; | 32 | +static const int GLSLextKHRRevision = 2; |
| 33 | 33 | ||
| 34 | static const char* const E_SPV_KHR_shader_ballot = "SPV_KHR_shader_ballot"; | 34 | static const char* const E_SPV_KHR_shader_ballot = "SPV_KHR_shader_ballot"; |
| 35 | static const char* const E_SPV_KHR_subgroup_vote = "SPV_KHR_subgroup_vote"; | 35 | static const char* const E_SPV_KHR_subgroup_vote = "SPV_KHR_subgroup_vote"; |
| @@ -49,10 +49,4 @@ static const char* const E_SPV_KHR_non_semantic_info = "SPV_KHR_non_s | |||
| 49 | static const char* const E_SPV_KHR_ray_tracing = "SPV_KHR_ray_tracing"; | 49 | static const char* const E_SPV_KHR_ray_tracing = "SPV_KHR_ray_tracing"; |
| 50 | static const char* const E_SPV_KHR_ray_query = "SPV_KHR_ray_query"; | 50 | static const char* const E_SPV_KHR_ray_query = "SPV_KHR_ray_query"; |
| 51 | static const char* const E_SPV_KHR_fragment_shading_rate = "SPV_KHR_fragment_shading_rate"; | 51 | static const char* const E_SPV_KHR_fragment_shading_rate = "SPV_KHR_fragment_shading_rate"; |
| 52 | -static const char* const E_SPV_KHR_terminate_invocation = "SPV_KHR_terminate_invocation"; | ||
| 53 | -static const char* const E_SPV_KHR_workgroup_memory_explicit_layout = "SPV_KHR_workgroup_memory_explicit_layout"; | ||
| 54 | -static const char* const E_SPV_KHR_subgroup_uniform_control_flow = "SPV_KHR_subgroup_uniform_control_flow"; | ||
| 55 | -static const char* const E_SPV_KHR_fragment_shader_barycentric = "SPV_KHR_fragment_shader_barycentric"; | ||
| 56 | -static const char* const E_SPV_AMD_shader_early_and_late_fragment_tests = "SPV_AMD_shader_early_and_late_fragment_tests"; | ||
| 57 | - | ||
| 58 | #endif // #ifndef GLSLextKHR_H | 52 | #endif // #ifndef GLSLextKHR_H |
| @@ -69,9 +69,6 @@ const char* const E_SPV_NV_mesh_shader = "SPV_NV_mesh_shader"; | |||
| 69 | //SPV_NV_raytracing | 69 | //SPV_NV_raytracing |
| 70 | const char* const E_SPV_NV_ray_tracing = "SPV_NV_ray_tracing"; | 70 | const char* const E_SPV_NV_ray_tracing = "SPV_NV_ray_tracing"; |
| 71 | 71 | ||
| 72 | -//SPV_NV_ray_tracing_motion_blur | ||
| 73 | -const char* const E_SPV_NV_ray_tracing_motion_blur = "SPV_NV_ray_tracing_motion_blur"; | ||
| 74 | - | ||
| 75 | //SPV_NV_shading_rate | 72 | //SPV_NV_shading_rate |
| 76 | const char* const E_SPV_NV_shading_rate = "SPV_NV_shading_rate"; | 73 | const char* const E_SPV_NV_shading_rate = "SPV_NV_shading_rate"; |
| 77 | 74 | ||
| @@ -1,171 +0,0 @@ | |||
| 1 | -// Copyright (c) 2018 The Khronos Group Inc. | ||
| 2 | -// | ||
| 3 | -// Permission is hereby granted, free of charge, to any person obtaining a copy | ||
| 4 | -// of this software and/or associated documentation files (the "Materials"), | ||
| 5 | -// to deal in the Materials without restriction, including without limitation | ||
| 6 | -// the rights to use, copy, modify, merge, publish, distribute, sublicense, | ||
| 7 | -// and/or sell copies of the Materials, and to permit persons to whom the | ||
| 8 | -// Materials are furnished to do so, subject to the following conditions: | ||
| 9 | -// | ||
| 10 | -// The above copyright notice and this permission notice shall be included in | ||
| 11 | -// all copies or substantial portions of the Materials. | ||
| 12 | -// | ||
| 13 | -// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS | ||
| 14 | -// STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND | ||
| 15 | -// HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ | ||
| 16 | -// | ||
| 17 | -// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | ||
| 18 | -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
| 19 | -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL | ||
| 20 | -// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
| 21 | -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||
| 22 | -// FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS | ||
| 23 | -// IN THE MATERIALS. | ||
| 24 | - | ||
| 25 | -#ifndef SPIRV_UNIFIED1_NonSemanticShaderDebugInfo100_H_ | ||
| 26 | -#define SPIRV_UNIFIED1_NonSemanticShaderDebugInfo100_H_ | ||
| 27 | - | ||
| 28 | -#ifdef __cplusplus | ||
| 29 | -extern "C" { | ||
| 30 | -#endif | ||
| 31 | - | ||
| 32 | -enum { | ||
| 33 | - NonSemanticShaderDebugInfo100Version = 100, | ||
| 34 | - NonSemanticShaderDebugInfo100Version_BitWidthPadding = 0x7fffffff | ||
| 35 | -}; | ||
| 36 | -enum { | ||
| 37 | - NonSemanticShaderDebugInfo100Revision = 6, | ||
| 38 | - NonSemanticShaderDebugInfo100Revision_BitWidthPadding = 0x7fffffff | ||
| 39 | -}; | ||
| 40 | - | ||
| 41 | -enum NonSemanticShaderDebugInfo100Instructions { | ||
| 42 | - NonSemanticShaderDebugInfo100DebugInfoNone = 0, | ||
| 43 | - NonSemanticShaderDebugInfo100DebugCompilationUnit = 1, | ||
| 44 | - NonSemanticShaderDebugInfo100DebugTypeBasic = 2, | ||
| 45 | - NonSemanticShaderDebugInfo100DebugTypePointer = 3, | ||
| 46 | - NonSemanticShaderDebugInfo100DebugTypeQualifier = 4, | ||
| 47 | - NonSemanticShaderDebugInfo100DebugTypeArray = 5, | ||
| 48 | - NonSemanticShaderDebugInfo100DebugTypeVector = 6, | ||
| 49 | - NonSemanticShaderDebugInfo100DebugTypedef = 7, | ||
| 50 | - NonSemanticShaderDebugInfo100DebugTypeFunction = 8, | ||
| 51 | - NonSemanticShaderDebugInfo100DebugTypeEnum = 9, | ||
| 52 | - NonSemanticShaderDebugInfo100DebugTypeComposite = 10, | ||
| 53 | - NonSemanticShaderDebugInfo100DebugTypeMember = 11, | ||
| 54 | - NonSemanticShaderDebugInfo100DebugTypeInheritance = 12, | ||
| 55 | - NonSemanticShaderDebugInfo100DebugTypePtrToMember = 13, | ||
| 56 | - NonSemanticShaderDebugInfo100DebugTypeTemplate = 14, | ||
| 57 | - NonSemanticShaderDebugInfo100DebugTypeTemplateParameter = 15, | ||
| 58 | - NonSemanticShaderDebugInfo100DebugTypeTemplateTemplateParameter = 16, | ||
| 59 | - NonSemanticShaderDebugInfo100DebugTypeTemplateParameterPack = 17, | ||
| 60 | - NonSemanticShaderDebugInfo100DebugGlobalVariable = 18, | ||
| 61 | - NonSemanticShaderDebugInfo100DebugFunctionDeclaration = 19, | ||
| 62 | - NonSemanticShaderDebugInfo100DebugFunction = 20, | ||
| 63 | - NonSemanticShaderDebugInfo100DebugLexicalBlock = 21, | ||
| 64 | - NonSemanticShaderDebugInfo100DebugLexicalBlockDiscriminator = 22, | ||
| 65 | - NonSemanticShaderDebugInfo100DebugScope = 23, | ||
| 66 | - NonSemanticShaderDebugInfo100DebugNoScope = 24, | ||
| 67 | - NonSemanticShaderDebugInfo100DebugInlinedAt = 25, | ||
| 68 | - NonSemanticShaderDebugInfo100DebugLocalVariable = 26, | ||
| 69 | - NonSemanticShaderDebugInfo100DebugInlinedVariable = 27, | ||
| 70 | - NonSemanticShaderDebugInfo100DebugDeclare = 28, | ||
| 71 | - NonSemanticShaderDebugInfo100DebugValue = 29, | ||
| 72 | - NonSemanticShaderDebugInfo100DebugOperation = 30, | ||
| 73 | - NonSemanticShaderDebugInfo100DebugExpression = 31, | ||
| 74 | - NonSemanticShaderDebugInfo100DebugMacroDef = 32, | ||
| 75 | - NonSemanticShaderDebugInfo100DebugMacroUndef = 33, | ||
| 76 | - NonSemanticShaderDebugInfo100DebugImportedEntity = 34, | ||
| 77 | - NonSemanticShaderDebugInfo100DebugSource = 35, | ||
| 78 | - NonSemanticShaderDebugInfo100DebugFunctionDefinition = 101, | ||
| 79 | - NonSemanticShaderDebugInfo100DebugSourceContinued = 102, | ||
| 80 | - NonSemanticShaderDebugInfo100DebugLine = 103, | ||
| 81 | - NonSemanticShaderDebugInfo100DebugNoLine = 104, | ||
| 82 | - NonSemanticShaderDebugInfo100DebugBuildIdentifier = 105, | ||
| 83 | - NonSemanticShaderDebugInfo100DebugStoragePath = 106, | ||
| 84 | - NonSemanticShaderDebugInfo100DebugEntryPoint = 107, | ||
| 85 | - NonSemanticShaderDebugInfo100DebugTypeMatrix = 108, | ||
| 86 | - NonSemanticShaderDebugInfo100InstructionsMax = 0x7fffffff | ||
| 87 | -}; | ||
| 88 | - | ||
| 89 | - | ||
| 90 | -enum NonSemanticShaderDebugInfo100DebugInfoFlags { | ||
| 91 | - NonSemanticShaderDebugInfo100None = 0x0000, | ||
| 92 | - NonSemanticShaderDebugInfo100FlagIsProtected = 0x01, | ||
| 93 | - NonSemanticShaderDebugInfo100FlagIsPrivate = 0x02, | ||
| 94 | - NonSemanticShaderDebugInfo100FlagIsPublic = 0x03, | ||
| 95 | - NonSemanticShaderDebugInfo100FlagIsLocal = 0x04, | ||
| 96 | - NonSemanticShaderDebugInfo100FlagIsDefinition = 0x08, | ||
| 97 | - NonSemanticShaderDebugInfo100FlagFwdDecl = 0x10, | ||
| 98 | - NonSemanticShaderDebugInfo100FlagArtificial = 0x20, | ||
| 99 | - NonSemanticShaderDebugInfo100FlagExplicit = 0x40, | ||
| 100 | - NonSemanticShaderDebugInfo100FlagPrototyped = 0x80, | ||
| 101 | - NonSemanticShaderDebugInfo100FlagObjectPointer = 0x100, | ||
| 102 | - NonSemanticShaderDebugInfo100FlagStaticMember = 0x200, | ||
| 103 | - NonSemanticShaderDebugInfo100FlagIndirectVariable = 0x400, | ||
| 104 | - NonSemanticShaderDebugInfo100FlagLValueReference = 0x800, | ||
| 105 | - NonSemanticShaderDebugInfo100FlagRValueReference = 0x1000, | ||
| 106 | - NonSemanticShaderDebugInfo100FlagIsOptimized = 0x2000, | ||
| 107 | - NonSemanticShaderDebugInfo100FlagIsEnumClass = 0x4000, | ||
| 108 | - NonSemanticShaderDebugInfo100FlagTypePassByValue = 0x8000, | ||
| 109 | - NonSemanticShaderDebugInfo100FlagTypePassByReference = 0x10000, | ||
| 110 | - NonSemanticShaderDebugInfo100FlagUnknownPhysicalLayout = 0x20000, | ||
| 111 | - NonSemanticShaderDebugInfo100DebugInfoFlagsMax = 0x7fffffff | ||
| 112 | -}; | ||
| 113 | - | ||
| 114 | -enum NonSemanticShaderDebugInfo100BuildIdentifierFlags { | ||
| 115 | - NonSemanticShaderDebugInfo100IdentifierPossibleDuplicates = 0x01, | ||
| 116 | - NonSemanticShaderDebugInfo100BuildIdentifierFlagsMax = 0x7fffffff | ||
| 117 | -}; | ||
| 118 | - | ||
| 119 | -enum NonSemanticShaderDebugInfo100DebugBaseTypeAttributeEncoding { | ||
| 120 | - NonSemanticShaderDebugInfo100Unspecified = 0, | ||
| 121 | - NonSemanticShaderDebugInfo100Address = 1, | ||
| 122 | - NonSemanticShaderDebugInfo100Boolean = 2, | ||
| 123 | - NonSemanticShaderDebugInfo100Float = 3, | ||
| 124 | - NonSemanticShaderDebugInfo100Signed = 4, | ||
| 125 | - NonSemanticShaderDebugInfo100SignedChar = 5, | ||
| 126 | - NonSemanticShaderDebugInfo100Unsigned = 6, | ||
| 127 | - NonSemanticShaderDebugInfo100UnsignedChar = 7, | ||
| 128 | - NonSemanticShaderDebugInfo100DebugBaseTypeAttributeEncodingMax = 0x7fffffff | ||
| 129 | -}; | ||
| 130 | - | ||
| 131 | -enum NonSemanticShaderDebugInfo100DebugCompositeType { | ||
| 132 | - NonSemanticShaderDebugInfo100Class = 0, | ||
| 133 | - NonSemanticShaderDebugInfo100Structure = 1, | ||
| 134 | - NonSemanticShaderDebugInfo100Union = 2, | ||
| 135 | - NonSemanticShaderDebugInfo100DebugCompositeTypeMax = 0x7fffffff | ||
| 136 | -}; | ||
| 137 | - | ||
| 138 | -enum NonSemanticShaderDebugInfo100DebugTypeQualifier { | ||
| 139 | - NonSemanticShaderDebugInfo100ConstType = 0, | ||
| 140 | - NonSemanticShaderDebugInfo100VolatileType = 1, | ||
| 141 | - NonSemanticShaderDebugInfo100RestrictType = 2, | ||
| 142 | - NonSemanticShaderDebugInfo100AtomicType = 3, | ||
| 143 | - NonSemanticShaderDebugInfo100DebugTypeQualifierMax = 0x7fffffff | ||
| 144 | -}; | ||
| 145 | - | ||
| 146 | -enum NonSemanticShaderDebugInfo100DebugOperation { | ||
| 147 | - NonSemanticShaderDebugInfo100Deref = 0, | ||
| 148 | - NonSemanticShaderDebugInfo100Plus = 1, | ||
| 149 | - NonSemanticShaderDebugInfo100Minus = 2, | ||
| 150 | - NonSemanticShaderDebugInfo100PlusUconst = 3, | ||
| 151 | - NonSemanticShaderDebugInfo100BitPiece = 4, | ||
| 152 | - NonSemanticShaderDebugInfo100Swap = 5, | ||
| 153 | - NonSemanticShaderDebugInfo100Xderef = 6, | ||
| 154 | - NonSemanticShaderDebugInfo100StackValue = 7, | ||
| 155 | - NonSemanticShaderDebugInfo100Constu = 8, | ||
| 156 | - NonSemanticShaderDebugInfo100Fragment = 9, | ||
| 157 | - NonSemanticShaderDebugInfo100DebugOperationMax = 0x7fffffff | ||
| 158 | -}; | ||
| 159 | - | ||
| 160 | -enum NonSemanticShaderDebugInfo100DebugImportedEntity { | ||
| 161 | - NonSemanticShaderDebugInfo100ImportedModule = 0, | ||
| 162 | - NonSemanticShaderDebugInfo100ImportedDeclaration = 1, | ||
| 163 | - NonSemanticShaderDebugInfo100DebugImportedEntityMax = 0x7fffffff | ||
| 164 | -}; | ||
| 165 | - | ||
| 166 | - | ||
| 167 | -#ifdef __cplusplus | ||
| 168 | -} | ||
| 169 | -#endif | ||
| 170 | - | ||
| 171 | -#endif // SPIRV_UNIFIED1_NonSemanticShaderDebugInfo100_H_ | ||
| @@ -160,29 +160,15 @@ namespace spv { | |||
| 160 | } | 160 | } |
| 161 | 161 | ||
| 162 | // Is this an opcode we should remove when using --strip? | 162 | // Is this an opcode we should remove when using --strip? |
| 163 | - bool spirvbin_t::isStripOp(spv::Op opCode, unsigned start) const | 163 | + bool spirvbin_t::isStripOp(spv::Op opCode) const |
| 164 | { | 164 | { |
| 165 | switch (opCode) { | 165 | switch (opCode) { |
| 166 | case spv::OpSource: | 166 | case spv::OpSource: |
| 167 | case spv::OpSourceExtension: | 167 | case spv::OpSourceExtension: |
| 168 | case spv::OpName: | 168 | case spv::OpName: |
| 169 | case spv::OpMemberName: | 169 | case spv::OpMemberName: |
| 170 | - case spv::OpLine : | 170 | + case spv::OpLine: return true; |
| 171 | - { | 171 | + default: return false; |
| 172 | - const std::string name = literalString(start + 2); | ||
| 173 | - | ||
| 174 | - std::vector<std::string>::const_iterator it; | ||
| 175 | - for (it = stripWhiteList.begin(); it < stripWhiteList.end(); it++) | ||
| 176 | - { | ||
| 177 | - if (name.find(*it) != std::string::npos) { | ||
| 178 | - return false; | ||
| 179 | - } | ||
| 180 | - } | ||
| 181 | - | ||
| 182 | - return true; | ||
| 183 | - } | ||
| 184 | - default : | ||
| 185 | - return false; | ||
| 186 | } | 172 | } |
| 187 | } | 173 | } |
| 188 | 174 | ||
| @@ -311,21 +297,15 @@ namespace spv { | |||
| 311 | std::string spirvbin_t::literalString(unsigned word) const | 297 | std::string spirvbin_t::literalString(unsigned word) const |
| 312 | { | 298 | { |
| 313 | std::string literal; | 299 | std::string literal; |
| 314 | - const spirword_t * pos = spv.data() + word; | ||
| 315 | 300 | ||
| 316 | literal.reserve(16); | 301 | literal.reserve(16); |
| 317 | 302 | ||
| 318 | - do { | 303 | + const char* bytes = reinterpret_cast<const char*>(spv.data() + word); |
| 319 | - spirword_t word = *pos; | 304 | + |
| 320 | - for (int i = 0; i < 4; i++) { | 305 | + while (bytes && *bytes) |
| 321 | - char c = word & 0xff; | 306 | + literal += *bytes++; |
| 322 | - if (c == '\0') | 307 | + |
| 323 | - return literal; | 308 | + return literal; |
| 324 | - literal += c; | ||
| 325 | - word >>= 8; | ||
| 326 | - } | ||
| 327 | - pos++; | ||
| 328 | - } while (true); | ||
| 329 | } | 309 | } |
| 330 | 310 | ||
| 331 | void spirvbin_t::applyMap() | 311 | void spirvbin_t::applyMap() |
| @@ -386,7 +366,7 @@ namespace spv { | |||
| 386 | process( | 366 | process( |
| 387 | [&](spv::Op opCode, unsigned start) { | 367 | [&](spv::Op opCode, unsigned start) { |
| 388 | // remember opcodes we want to strip later | 368 | // remember opcodes we want to strip later |
| 389 | - if (isStripOp(opCode, start)) | 369 | + if (isStripOp(opCode)) |
| 390 | stripInst(start); | 370 | stripInst(start); |
| 391 | return true; | 371 | return true; |
| 392 | }, | 372 | }, |
| @@ -564,9 +544,6 @@ namespace spv { | |||
| 564 | // Extended instructions: currently, assume everything is an ID. | 544 | // Extended instructions: currently, assume everything is an ID. |
| 565 | // TODO: add whatever data we need for exceptions to that | 545 | // TODO: add whatever data we need for exceptions to that |
| 566 | if (opCode == spv::OpExtInst) { | 546 | if (opCode == spv::OpExtInst) { |
| 567 | - | ||
| 568 | - idFn(asId(word)); // Instruction set is an ID that also needs to be mapped | ||
| 569 | - | ||
| 570 | word += 2; // instruction set, and instruction from set | 547 | word += 2; // instruction set, and instruction from set |
| 571 | numOperands -= 2; | 548 | numOperands -= 2; |
| 572 | 549 | ||
| @@ -1508,24 +1485,13 @@ namespace spv { | |||
| 1508 | } | 1485 | } |
| 1509 | 1486 | ||
| 1510 | // remap from a memory image | 1487 | // remap from a memory image |
| 1511 | - void spirvbin_t::remap(std::vector<std::uint32_t>& in_spv, const std::vector<std::string>& whiteListStrings, | 1488 | + void spirvbin_t::remap(std::vector<std::uint32_t>& in_spv, std::uint32_t opts) |
| 1512 | - std::uint32_t opts) | ||
| 1513 | { | 1489 | { |
| 1514 | - stripWhiteList = whiteListStrings; | ||
| 1515 | spv.swap(in_spv); | 1490 | spv.swap(in_spv); |
| 1516 | remap(opts); | 1491 | remap(opts); |
| 1517 | spv.swap(in_spv); | 1492 | spv.swap(in_spv); |
| 1518 | } | 1493 | } |
| 1519 | 1494 | ||
| 1520 | - // remap from a memory image - legacy interface without white list | ||
| 1521 | - void spirvbin_t::remap(std::vector<std::uint32_t>& in_spv, std::uint32_t opts) | ||
| 1522 | - { | ||
| 1523 | - stripWhiteList.clear(); | ||
| 1524 | - spv.swap(in_spv); | ||
| 1525 | - remap(opts); | ||
| 1526 | - spv.swap(in_spv); | ||
| 1527 | - } | ||
| 1528 | - | ||
| 1529 | } // namespace SPV | 1495 | } // namespace SPV |
| 1530 | 1496 | ||
| 1531 | #endif // defined (use_cpp11) | 1497 | #endif // defined (use_cpp11) |
| @@ -118,10 +118,6 @@ public: | |||
| 118 | virtual ~spirvbin_t() { } | 118 | virtual ~spirvbin_t() { } |
| 119 | 119 | ||
| 120 | // remap on an existing binary in memory | 120 | // remap on an existing binary in memory |
| 121 | - void remap(std::vector<std::uint32_t>& spv, const std::vector<std::string>& whiteListStrings, | ||
| 122 | - std::uint32_t opts = DO_EVERYTHING); | ||
| 123 | - | ||
| 124 | - // remap on an existing binary in memory - legacy interface without white list | ||
| 125 | void remap(std::vector<std::uint32_t>& spv, std::uint32_t opts = DO_EVERYTHING); | 121 | void remap(std::vector<std::uint32_t>& spv, std::uint32_t opts = DO_EVERYTHING); |
| 126 | 122 | ||
| 127 | // Type for error/log handler functions | 123 | // Type for error/log handler functions |
| @@ -184,8 +180,6 @@ private: | |||
| 184 | unsigned typeSizeInWords(spv::Id id) const; | 180 | unsigned typeSizeInWords(spv::Id id) const; |
| 185 | unsigned idTypeSizeInWords(spv::Id id) const; | 181 | unsigned idTypeSizeInWords(spv::Id id) const; |
| 186 | 182 | ||
| 187 | - bool isStripOp(spv::Op opCode, unsigned start) const; | ||
| 188 | - | ||
| 189 | spv::Id& asId(unsigned word) { return spv[word]; } | 183 | spv::Id& asId(unsigned word) { return spv[word]; } |
| 190 | const spv::Id& asId(unsigned word) const { return spv[word]; } | 184 | const spv::Id& asId(unsigned word) const { return spv[word]; } |
| 191 | spv::Op asOpCode(unsigned word) const { return opOpCode(spv[word]); } | 185 | spv::Op asOpCode(unsigned word) const { return opOpCode(spv[word]); } |
| @@ -255,8 +249,6 @@ private: | |||
| 255 | 249 | ||
| 256 | std::vector<spirword_t> spv; // SPIR words | 250 | std::vector<spirword_t> spv; // SPIR words |
| 257 | 251 | ||
| 258 | - std::vector<std::string> stripWhiteList; | ||
| 259 | - | ||
| 260 | namemap_t nameMap; // ID names from OpName | 252 | namemap_t nameMap; // ID names from OpName |
| 261 | 253 | ||
| 262 | // Since we want to also do binary ops, we can't use std::vector<bool>. we could use | 254 | // Since we want to also do binary ops, we can't use std::vector<bool>. we could use |
| @@ -50,10 +50,6 @@ | |||
| 50 | #include "Logger.h" | 50 | #include "Logger.h" |
| 51 | #include "spirv.hpp" | 51 | #include "spirv.hpp" |
| 52 | #include "spvIR.h" | 52 | #include "spvIR.h" |
| 53 | -namespace spv { | ||
| 54 | - #include "GLSL.ext.KHR.h" | ||
| 55 | - #include "NonSemanticShaderDebugInfo100.h" | ||
| 56 | -} | ||
| 57 | 53 | ||
| 58 | #include <algorithm> | 54 | #include <algorithm> |
| 59 | #include <map> | 55 | #include <map> |
| @@ -86,7 +82,7 @@ public: | |||
| 86 | 82 | ||
| 87 | void setSource(spv::SourceLanguage lang, int version) | 83 | void setSource(spv::SourceLanguage lang, int version) |
| 88 | { | 84 | { |
| 89 | - sourceLang = lang; | 85 | + source = lang; |
| 90 | sourceVersion = version; | 86 | sourceVersion = version; |
| 91 | } | 87 | } |
| 92 | spv::Id getStringId(const std::string& str) | 88 | spv::Id getStringId(const std::string& str) |
| @@ -103,32 +99,14 @@ public: | |||
| 103 | stringIds[file_c_str] = strId; | 99 | stringIds[file_c_str] = strId; |
| 104 | return strId; | 100 | return strId; |
| 105 | } | 101 | } |
| 106 | - spv::Id getSourceFile() const | ||
| 107 | - { | ||
| 108 | - return sourceFileStringId; | ||
| 109 | - } | ||
| 110 | void setSourceFile(const std::string& file) | 102 | void setSourceFile(const std::string& file) |
| 111 | { | 103 | { |
| 112 | sourceFileStringId = getStringId(file); | 104 | sourceFileStringId = getStringId(file); |
| 113 | - currentFileId = sourceFileStringId; | ||
| 114 | } | 105 | } |
| 115 | void setSourceText(const std::string& text) { sourceText = text; } | 106 | void setSourceText(const std::string& text) { sourceText = text; } |
| 116 | void addSourceExtension(const char* ext) { sourceExtensions.push_back(ext); } | 107 | void addSourceExtension(const char* ext) { sourceExtensions.push_back(ext); } |
| 117 | void addModuleProcessed(const std::string& p) { moduleProcesses.push_back(p.c_str()); } | 108 | void addModuleProcessed(const std::string& p) { moduleProcesses.push_back(p.c_str()); } |
| 118 | void setEmitOpLines() { emitOpLines = true; } | 109 | void setEmitOpLines() { emitOpLines = true; } |
| 119 | - void setEmitNonSemanticShaderDebugInfo(bool const emit) | ||
| 120 | - { | ||
| 121 | - emitNonSemanticShaderDebugInfo = emit; | ||
| 122 | - | ||
| 123 | - if(emit) | ||
| 124 | - { | ||
| 125 | - importNonSemanticShaderDebugInfoInstructions(); | ||
| 126 | - } | ||
| 127 | - } | ||
| 128 | - void setEmitNonSemanticShaderDebugSource(bool const src) | ||
| 129 | - { | ||
| 130 | - emitNonSemanticShaderDebugSource = src; | ||
| 131 | - } | ||
| 132 | void addExtension(const char* ext) { extensions.insert(ext); } | 110 | void addExtension(const char* ext) { extensions.insert(ext); } |
| 133 | void removeExtension(const char* ext) | 111 | void removeExtension(const char* ext) |
| 134 | { | 112 | { |
| @@ -181,11 +159,10 @@ public: | |||
| 181 | void setLine(int line, const char* filename); | 159 | void setLine(int line, const char* filename); |
| 182 | // Low-level OpLine. See setLine() for a layered helper. | 160 | // Low-level OpLine. See setLine() for a layered helper. |
| 183 | void addLine(Id fileName, int line, int column); | 161 | void addLine(Id fileName, int line, int column); |
| 184 | - void addDebugScopeAndLine(Id fileName, int line, int column); | ||
| 185 | 162 | ||
| 186 | // For creating new types (will return old type if the requested one was already made). | 163 | // For creating new types (will return old type if the requested one was already made). |
| 187 | Id makeVoidType(); | 164 | Id makeVoidType(); |
| 188 | - Id makeBoolType(bool const compilerGenerated = true); | 165 | + Id makeBoolType(); |
| 189 | Id makePointer(StorageClass, Id pointee); | 166 | Id makePointer(StorageClass, Id pointee); |
| 190 | Id makeForwardPointer(StorageClass); | 167 | Id makeForwardPointer(StorageClass); |
| 191 | Id makePointerFromForwardPointer(StorageClass, Id forwardPointerType, Id pointee); | 168 | Id makePointerFromForwardPointer(StorageClass, Id forwardPointerType, Id pointee); |
| @@ -193,7 +170,7 @@ public: | |||
| 193 | Id makeIntType(int width) { return makeIntegerType(width, true); } | 170 | Id makeIntType(int width) { return makeIntegerType(width, true); } |
| 194 | Id makeUintType(int width) { return makeIntegerType(width, false); } | 171 | Id makeUintType(int width) { return makeIntegerType(width, false); } |
| 195 | Id makeFloatType(int width); | 172 | Id makeFloatType(int width); |
| 196 | - Id makeStructType(const std::vector<Id>& members, const char* name, bool const compilerGenerated = true); | 173 | + Id makeStructType(const std::vector<Id>& members, const char*); |
| 197 | Id makeStructResultType(Id type0, Id type1); | 174 | Id makeStructResultType(Id type0, Id type1); |
| 198 | Id makeVectorType(Id component, int size); | 175 | Id makeVectorType(Id component, int size); |
| 199 | Id makeMatrixType(Id component, int cols, int rows); | 176 | Id makeMatrixType(Id component, int cols, int rows); |
| @@ -204,37 +181,6 @@ public: | |||
| 204 | Id makeSamplerType(); | 181 | Id makeSamplerType(); |
| 205 | Id makeSampledImageType(Id imageType); | 182 | Id makeSampledImageType(Id imageType); |
| 206 | Id makeCooperativeMatrixType(Id component, Id scope, Id rows, Id cols); | 183 | Id makeCooperativeMatrixType(Id component, Id scope, Id rows, Id cols); |
| 207 | - Id makeGenericType(spv::Op opcode, std::vector<spv::IdImmediate>& operands); | ||
| 208 | - | ||
| 209 | - // SPIR-V NonSemantic Shader DebugInfo Instructions | ||
| 210 | - struct DebugTypeLoc { | ||
| 211 | - std::string name {}; | ||
| 212 | - int line {0}; | ||
| 213 | - int column {0}; | ||
| 214 | - }; | ||
| 215 | - std::unordered_map<Id, DebugTypeLoc> debugTypeLocs; | ||
| 216 | - Id makeDebugInfoNone(); | ||
| 217 | - Id makeBoolDebugType(int const size); | ||
| 218 | - Id makeIntegerDebugType(int const width, bool const hasSign); | ||
| 219 | - Id makeFloatDebugType(int const width); | ||
| 220 | - Id makeSequentialDebugType(Id const baseType, Id const componentCount, NonSemanticShaderDebugInfo100Instructions const sequenceType); | ||
| 221 | - Id makeArrayDebugType(Id const baseType, Id const componentCount); | ||
| 222 | - Id makeVectorDebugType(Id const baseType, int const componentCount); | ||
| 223 | - Id makeMatrixDebugType(Id const vectorType, int const vectorCount, bool columnMajor = true); | ||
| 224 | - Id makeMemberDebugType(Id const memberType, DebugTypeLoc const& debugTypeLoc); | ||
| 225 | - Id makeCompositeDebugType(std::vector<Id> const& memberTypes, char const*const name, | ||
| 226 | - NonSemanticShaderDebugInfo100DebugCompositeType const tag, bool const isOpaqueType = false); | ||
| 227 | - Id makeDebugSource(const Id fileName); | ||
| 228 | - Id makeDebugCompilationUnit(); | ||
| 229 | - Id createDebugGlobalVariable(Id const type, char const*const name, Id const variable); | ||
| 230 | - Id createDebugLocalVariable(Id type, char const*const name, size_t const argNumber = 0); | ||
| 231 | - Id makeDebugExpression(); | ||
| 232 | - Id makeDebugDeclare(Id const debugLocalVariable, Id const localVariable); | ||
| 233 | - Id makeDebugValue(Id const debugLocalVariable, Id const value); | ||
| 234 | - Id makeDebugFunctionType(Id returnType, const std::vector<Id>& paramTypes); | ||
| 235 | - Id makeDebugFunction(Function* function, Id nameId, Id funcTypeId); | ||
| 236 | - Id makeDebugLexicalBlock(uint32_t line); | ||
| 237 | - std::string unmangleFunctionName(std::string const& name) const; | ||
| 238 | 184 | ||
| 239 | // accelerationStructureNV type | 185 | // accelerationStructureNV type |
| 240 | Id makeAccelerationStructureType(); | 186 | Id makeAccelerationStructureType(); |
| @@ -256,7 +202,6 @@ public: | |||
| 256 | StorageClass getTypeStorageClass(Id typeId) const { return module.getStorageClass(typeId); } | 202 | StorageClass getTypeStorageClass(Id typeId) const { return module.getStorageClass(typeId); } |
| 257 | ImageFormat getImageTypeFormat(Id typeId) const | 203 | ImageFormat getImageTypeFormat(Id typeId) const |
| 258 | { return (ImageFormat)module.getInstruction(typeId)->getImmediateOperand(6); } | 204 | { return (ImageFormat)module.getInstruction(typeId)->getImmediateOperand(6); } |
| 259 | - Id getResultingAccessChainType() const; | ||
| 260 | 205 | ||
| 261 | bool isPointer(Id resultId) const { return isPointerType(getTypeId(resultId)); } | 206 | bool isPointer(Id resultId) const { return isPointerType(getTypeId(resultId)); } |
| 262 | bool isScalar(Id resultId) const { return isScalarType(getTypeId(resultId)); } | 207 | bool isScalar(Id resultId) const { return isScalarType(getTypeId(resultId)); } |
| @@ -310,8 +255,6 @@ public: | |||
| 310 | // See if a resultId is valid for use as an initializer. | 255 | // See if a resultId is valid for use as an initializer. |
| 311 | bool isValidInitializer(Id resultId) const { return isConstant(resultId) || isGlobalVariable(resultId); } | 256 | bool isValidInitializer(Id resultId) const { return isConstant(resultId) || isGlobalVariable(resultId); } |
| 312 | 257 | ||
| 313 | - bool isRayTracingOpCode(Op opcode) const; | ||
| 314 | - | ||
| 315 | int getScalarTypeWidth(Id typeId) const | 258 | int getScalarTypeWidth(Id typeId) const |
| 316 | { | 259 | { |
| 317 | Id scalarTypeId = getScalarTypeId(typeId); | 260 | Id scalarTypeId = getScalarTypeId(typeId); |
| @@ -350,7 +293,6 @@ public: | |||
| 350 | } | 293 | } |
| 351 | 294 | ||
| 352 | // For making new constants (will return old constant if the requested one was already made). | 295 | // For making new constants (will return old constant if the requested one was already made). |
| 353 | - Id makeNullConstant(Id typeId); | ||
| 354 | Id makeBoolConstant(bool b, bool specConstant = false); | 296 | Id makeBoolConstant(bool b, bool specConstant = false); |
| 355 | Id makeInt8Constant(int i, bool specConstant = false) | 297 | Id makeInt8Constant(int i, bool specConstant = false) |
| 356 | { return makeIntConstant(makeIntType(8), (unsigned)i, specConstant); } | 298 | { return makeIntConstant(makeIntType(8), (unsigned)i, specConstant); } |
| @@ -373,8 +315,6 @@ public: | |||
| 373 | Id makeFloat16Constant(float f16, bool specConstant = false); | 315 | Id makeFloat16Constant(float f16, bool specConstant = false); |
| 374 | Id makeFpConstant(Id type, double d, bool specConstant = false); | 316 | Id makeFpConstant(Id type, double d, bool specConstant = false); |
| 375 | 317 | ||
| 376 | - Id importNonSemanticShaderDebugInfoInstructions(); | ||
| 377 | - | ||
| 378 | // Turn the array of constants into a proper spv constant of the requested type. | 318 | // Turn the array of constants into a proper spv constant of the requested type. |
| 379 | Id makeCompositeConstant(Id type, const std::vector<Id>& comps, bool specConst = false); | 319 | Id makeCompositeConstant(Id type, const std::vector<Id>& comps, bool specConst = false); |
| 380 | 320 | ||
| @@ -397,12 +337,7 @@ public: | |||
| 397 | void addMemberDecoration(Id, unsigned int member, Decoration, const std::vector<const char*>& strings); | 337 | void addMemberDecoration(Id, unsigned int member, Decoration, const std::vector<const char*>& strings); |
| 398 | 338 | ||
| 399 | // At the end of what block do the next create*() instructions go? | 339 | // At the end of what block do the next create*() instructions go? |
| 400 | - // Also reset current last DebugScope and current source line to unknown | 340 | + void setBuildPoint(Block* bp) { buildPoint = bp; } |
| 401 | - void setBuildPoint(Block* bp) { | ||
| 402 | - buildPoint = bp; | ||
| 403 | - lastDebugScopeId = NoResult; | ||
| 404 | - currentLine = 0; | ||
| 405 | - } | ||
| 406 | Block* getBuildPoint() const { return buildPoint; } | 341 | Block* getBuildPoint() const { return buildPoint; } |
| 407 | 342 | ||
| 408 | // Make the entry-point function. The returned pointer is only valid | 343 | // Make the entry-point function. The returned pointer is only valid |
| @@ -413,36 +348,21 @@ public: | |||
| 413 | // Return the function, pass back the entry. | 348 | // Return the function, pass back the entry. |
| 414 | // The returned pointer is only valid for the lifetime of this builder. | 349 | // The returned pointer is only valid for the lifetime of this builder. |
| 415 | Function* makeFunctionEntry(Decoration precision, Id returnType, const char* name, | 350 | Function* makeFunctionEntry(Decoration precision, Id returnType, const char* name, |
| 416 | - const std::vector<Id>& paramTypes, const std::vector<char const*>& paramNames, | 351 | + const std::vector<Id>& paramTypes, const std::vector<std::vector<Decoration>>& precisions, Block **entry = 0); |
| 417 | - const std::vector<std::vector<Decoration>>& precisions, Block **entry = nullptr); | ||
| 418 | 352 | ||
| 419 | // Create a return. An 'implicit' return is one not appearing in the source | 353 | // Create a return. An 'implicit' return is one not appearing in the source |
| 420 | // code. In the case of an implicit return, no post-return block is inserted. | 354 | // code. In the case of an implicit return, no post-return block is inserted. |
| 421 | void makeReturn(bool implicit, Id retVal = 0); | 355 | void makeReturn(bool implicit, Id retVal = 0); |
| 422 | 356 | ||
| 423 | - // Initialize state and generate instructions for new lexical scope | ||
| 424 | - void enterScope(uint32_t line); | ||
| 425 | - | ||
| 426 | - // Set state and generate instructions to exit current lexical scope | ||
| 427 | - void leaveScope(); | ||
| 428 | - | ||
| 429 | - // Prepare builder for generation of instructions for a function. | ||
| 430 | - void enterFunction(Function const* function); | ||
| 431 | - | ||
| 432 | // Generate all the code needed to finish up a function. | 357 | // Generate all the code needed to finish up a function. |
| 433 | void leaveFunction(); | 358 | void leaveFunction(); |
| 434 | 359 | ||
| 435 | - // Create block terminator instruction for certain statements like | 360 | + // Create a discard. |
| 436 | - // discard, terminate-invocation, terminateRayEXT, or ignoreIntersectionEXT | 361 | + void makeDiscard(); |
| 437 | - void makeStatementTerminator(spv::Op opcode, const char *name); | ||
| 438 | - | ||
| 439 | - // Create block terminator instruction for statements that have input operands | ||
| 440 | - // such as OpEmitMeshTasksEXT | ||
| 441 | - void makeStatementTerminator(spv::Op opcode, const std::vector<Id>& operands, const char* name); | ||
| 442 | 362 | ||
| 443 | // Create a global or function local or IO variable. | 363 | // Create a global or function local or IO variable. |
| 444 | - Id createVariable(Decoration precision, StorageClass storageClass, Id type, const char* name = nullptr, | 364 | + Id createVariable(Decoration precision, StorageClass, Id type, const char* name = nullptr, |
| 445 | - Id initializer = NoResult, bool const compilerGenerated = true); | 365 | + Id initializer = NoResult); |
| 446 | 366 | ||
| 447 | // Create an intermediate with an undefined value. | 367 | // Create an intermediate with an undefined value. |
| 448 | Id createUndefined(Id type); | 368 | Id createUndefined(Id type); |
| @@ -704,7 +624,6 @@ public: | |||
| 704 | CoherentFlags operator |=(const CoherentFlags &other) { return *this; } | 624 | CoherentFlags operator |=(const CoherentFlags &other) { return *this; } |
| 705 | #else | 625 | #else |
| 706 | bool isVolatile() const { return volatil; } | 626 | bool isVolatile() const { return volatil; } |
| 707 | - bool isNonUniform() const { return nonUniform; } | ||
| 708 | bool anyCoherent() const { | 627 | bool anyCoherent() const { |
| 709 | return coherent || devicecoherent || queuefamilycoherent || workgroupcoherent || | 628 | return coherent || devicecoherent || queuefamilycoherent || workgroupcoherent || |
| 710 | subgroupcoherent || shadercallcoherent; | 629 | subgroupcoherent || shadercallcoherent; |
| @@ -719,7 +638,6 @@ public: | |||
| 719 | unsigned nonprivate : 1; | 638 | unsigned nonprivate : 1; |
| 720 | unsigned volatil : 1; | 639 | unsigned volatil : 1; |
| 721 | unsigned isImage : 1; | 640 | unsigned isImage : 1; |
| 722 | - unsigned nonUniform : 1; | ||
| 723 | 641 | ||
| 724 | void clear() { | 642 | void clear() { |
| 725 | coherent = 0; | 643 | coherent = 0; |
| @@ -731,7 +649,6 @@ public: | |||
| 731 | nonprivate = 0; | 649 | nonprivate = 0; |
| 732 | volatil = 0; | 650 | volatil = 0; |
| 733 | isImage = 0; | 651 | isImage = 0; |
| 734 | - nonUniform = 0; | ||
| 735 | } | 652 | } |
| 736 | 653 | ||
| 737 | CoherentFlags operator |=(const CoherentFlags &other) { | 654 | CoherentFlags operator |=(const CoherentFlags &other) { |
| @@ -744,7 +661,6 @@ public: | |||
| 744 | nonprivate |= other.nonprivate; | 661 | nonprivate |= other.nonprivate; |
| 745 | volatil |= other.volatil; | 662 | volatil |= other.volatil; |
| 746 | isImage |= other.isImage; | 663 | isImage |= other.isImage; |
| 747 | - nonUniform |= other.nonUniform; | ||
| 748 | return *this; | 664 | return *this; |
| 749 | } | 665 | } |
| 750 | #endif | 666 | #endif |
| @@ -805,12 +721,11 @@ public: | |||
| 805 | } | 721 | } |
| 806 | 722 | ||
| 807 | // use accessChain and swizzle to store value | 723 | // use accessChain and swizzle to store value |
| 808 | - void accessChainStore(Id rvalue, Decoration nonUniform, | 724 | + void accessChainStore(Id rvalue, spv::MemoryAccessMask memoryAccess = spv::MemoryAccessMaskNone, |
| 809 | - spv::MemoryAccessMask memoryAccess = spv::MemoryAccessMaskNone, | ||
| 810 | spv::Scope scope = spv::ScopeMax, unsigned int alignment = 0); | 725 | spv::Scope scope = spv::ScopeMax, unsigned int alignment = 0); |
| 811 | 726 | ||
| 812 | // use accessChain and swizzle to load an r-value | 727 | // use accessChain and swizzle to load an r-value |
| 813 | - Id accessChainLoad(Decoration precision, Decoration l_nonUniform, Decoration r_nonUniform, Id ResultType, | 728 | + Id accessChainLoad(Decoration precision, Decoration nonUniform, Id ResultType, |
| 814 | spv::MemoryAccessMask memoryAccess = spv::MemoryAccessMaskNone, spv::Scope scope = spv::ScopeMax, | 729 | spv::MemoryAccessMask memoryAccess = spv::MemoryAccessMaskNone, spv::Scope scope = spv::ScopeMax, |
| 815 | unsigned int alignment = 0); | 730 | unsigned int alignment = 0); |
| 816 | 731 | ||
| @@ -877,23 +792,13 @@ public: | |||
| 877 | const; | 792 | const; |
| 878 | 793 | ||
| 879 | unsigned int spvVersion; // the version of SPIR-V to emit in the header | 794 | unsigned int spvVersion; // the version of SPIR-V to emit in the header |
| 880 | - SourceLanguage sourceLang; | 795 | + SourceLanguage source; |
| 881 | int sourceVersion; | 796 | int sourceVersion; |
| 882 | spv::Id sourceFileStringId; | 797 | spv::Id sourceFileStringId; |
| 883 | - spv::Id nonSemanticShaderCompilationUnitId {0}; | ||
| 884 | - spv::Id nonSemanticShaderDebugInfo {0}; | ||
| 885 | - spv::Id debugInfoNone {0}; | ||
| 886 | - spv::Id debugExpression {0}; // Debug expression with zero operations. | ||
| 887 | std::string sourceText; | 798 | std::string sourceText; |
| 888 | int currentLine; | 799 | int currentLine; |
| 889 | const char* currentFile; | 800 | const char* currentFile; |
| 890 | - spv::Id currentFileId; | ||
| 891 | - std::stack<spv::Id> currentDebugScopeId; | ||
| 892 | - spv::Id lastDebugScopeId; | ||
| 893 | bool emitOpLines; | 801 | bool emitOpLines; |
| 894 | - bool emitNonSemanticShaderDebugInfo; | ||
| 895 | - bool restoreNonSemanticShaderDebugInfo; | ||
| 896 | - bool emitNonSemanticShaderDebugSource; | ||
| 897 | std::set<std::string> extensions; | 802 | std::set<std::string> extensions; |
| 898 | std::vector<const char*> sourceExtensions; | 803 | std::vector<const char*> sourceExtensions; |
| 899 | std::vector<const char*> moduleProcesses; | 804 | std::vector<const char*> moduleProcesses; |
| @@ -927,10 +832,6 @@ public: | |||
| 927 | std::unordered_map<unsigned int, std::vector<Instruction*>> groupedStructConstants; | 832 | std::unordered_map<unsigned int, std::vector<Instruction*>> groupedStructConstants; |
| 928 | // map type opcodes to type instructions | 833 | // map type opcodes to type instructions |
| 929 | std::unordered_map<unsigned int, std::vector<Instruction*>> groupedTypes; | 834 | std::unordered_map<unsigned int, std::vector<Instruction*>> groupedTypes; |
| 930 | - // map type opcodes to debug type instructions | ||
| 931 | - std::unordered_map<unsigned int, std::vector<Instruction*>> groupedDebugTypes; | ||
| 932 | - // list of OpConstantNull instructions | ||
| 933 | - std::vector<Instruction*> nullConstants; | ||
| 934 | 835 | ||
| 935 | // stack of switches | 836 | // stack of switches |
| 936 | std::stack<Block*> switchMerges; | 837 | std::stack<Block*> switchMerges; |
| @@ -944,12 +845,6 @@ public: | |||
| 944 | // map from include file name ids to their contents | 845 | // map from include file name ids to their contents |
| 945 | std::map<spv::Id, const std::string*> includeFiles; | 846 | std::map<spv::Id, const std::string*> includeFiles; |
| 946 | 847 | ||
| 947 | - // map from core id to debug id | ||
| 948 | - std::map <spv::Id, spv::Id> debugId; | ||
| 949 | - | ||
| 950 | - // map from file name string id to DebugSource id | ||
| 951 | - std::unordered_map<spv::Id, spv::Id> debugSourceId; | ||
| 952 | - | ||
| 953 | // The stream for outputting warnings and errors. | 848 | // The stream for outputting warnings and errors. |
| 954 | SpvBuildLogger* logger; | 849 | SpvBuildLogger* logger; |
| 955 | }; // end Builder class | 850 | }; // end Builder class |
| @@ -44,15 +44,16 @@ | |||
| 44 | #include <algorithm> | 44 | #include <algorithm> |
| 45 | 45 | ||
| 46 | #include "SpvBuilder.h" | 46 | #include "SpvBuilder.h" |
| 47 | -#include "spirv.hpp" | ||
| 48 | 47 | ||
| 48 | +#include "spirv.hpp" | ||
| 49 | +#include "GlslangToSpv.h" | ||
| 50 | +#include "SpvBuilder.h" | ||
| 49 | namespace spv { | 51 | namespace spv { |
| 50 | #include "GLSL.std.450.h" | 52 | #include "GLSL.std.450.h" |
| 51 | #include "GLSL.ext.KHR.h" | 53 | #include "GLSL.ext.KHR.h" |
| 52 | #include "GLSL.ext.EXT.h" | 54 | #include "GLSL.ext.EXT.h" |
| 53 | #include "GLSL.ext.AMD.h" | 55 | #include "GLSL.ext.AMD.h" |
| 54 | #include "GLSL.ext.NV.h" | 56 | #include "GLSL.ext.NV.h" |
| 55 | - #include "GLSL.ext.ARM.h" | ||
| 56 | } | 57 | } |
| 57 | 58 | ||
| 58 | namespace spv { | 59 | namespace spv { |
| @@ -112,6 +113,8 @@ void Builder::postProcessType(const Instruction& inst, Id typeId) | |||
| 112 | } | 113 | } |
| 113 | } | 114 | } |
| 114 | break; | 115 | break; |
| 116 | + case OpAccessChain: | ||
| 117 | + case OpPtrAccessChain: | ||
| 115 | case OpCopyObject: | 118 | case OpCopyObject: |
| 116 | break; | 119 | break; |
| 117 | case OpFConvert: | 120 | case OpFConvert: |
| @@ -158,43 +161,26 @@ void Builder::postProcessType(const Instruction& inst, Id typeId) | |||
| 158 | switch (inst.getImmediateOperand(1)) { | 161 | switch (inst.getImmediateOperand(1)) { |
| 159 | case GLSLstd450Frexp: | 162 | case GLSLstd450Frexp: |
| 160 | case GLSLstd450FrexpStruct: | 163 | case GLSLstd450FrexpStruct: |
| 161 | - if (getSpvVersion() < spv::Spv_1_3 && containsType(typeId, OpTypeInt, 16)) | 164 | + if (getSpvVersion() < glslang::EShTargetSpv_1_3 && containsType(typeId, OpTypeInt, 16)) |
| 162 | addExtension(spv::E_SPV_AMD_gpu_shader_int16); | 165 | addExtension(spv::E_SPV_AMD_gpu_shader_int16); |
| 163 | break; | 166 | break; |
| 164 | case GLSLstd450InterpolateAtCentroid: | 167 | case GLSLstd450InterpolateAtCentroid: |
| 165 | case GLSLstd450InterpolateAtSample: | 168 | case GLSLstd450InterpolateAtSample: |
| 166 | case GLSLstd450InterpolateAtOffset: | 169 | case GLSLstd450InterpolateAtOffset: |
| 167 | - if (getSpvVersion() < spv::Spv_1_3 && containsType(typeId, OpTypeFloat, 16)) | 170 | + if (getSpvVersion() < glslang::EShTargetSpv_1_3 && containsType(typeId, OpTypeFloat, 16)) |
| 168 | addExtension(spv::E_SPV_AMD_gpu_shader_half_float); | 171 | addExtension(spv::E_SPV_AMD_gpu_shader_half_float); |
| 169 | break; | 172 | break; |
| 170 | default: | 173 | default: |
| 171 | break; | 174 | break; |
| 172 | } | 175 | } |
| 173 | break; | 176 | break; |
| 174 | - case OpAccessChain: | ||
| 175 | - case OpPtrAccessChain: | ||
| 176 | - if (isPointerType(typeId)) | ||
| 177 | - break; | ||
| 178 | - if (basicTypeOp == OpTypeInt) { | ||
| 179 | - if (width == 16) | ||
| 180 | - addCapability(CapabilityInt16); | ||
| 181 | - else if (width == 8) | ||
| 182 | - addCapability(CapabilityInt8); | ||
| 183 | - } | ||
| 184 | default: | 177 | default: |
| 185 | - if (basicTypeOp == OpTypeInt) { | 178 | + if (basicTypeOp == OpTypeFloat && width == 16) |
| 186 | - if (width == 16) | 179 | + addCapability(CapabilityFloat16); |
| 187 | - addCapability(CapabilityInt16); | 180 | + if (basicTypeOp == OpTypeInt && width == 16) |
| 188 | - else if (width == 8) | 181 | + addCapability(CapabilityInt16); |
| 189 | - addCapability(CapabilityInt8); | 182 | + if (basicTypeOp == OpTypeInt && width == 8) |
| 190 | - else if (width == 64) | 183 | + addCapability(CapabilityInt8); |
| 191 | - addCapability(CapabilityInt64); | ||
| 192 | - } else if (basicTypeOp == OpTypeFloat) { | ||
| 193 | - if (width == 16) | ||
| 194 | - addCapability(CapabilityFloat16); | ||
| 195 | - else if (width == 64) | ||
| 196 | - addCapability(CapabilityFloat64); | ||
| 197 | - } | ||
| 198 | break; | 184 | break; |
| 199 | } | 185 | } |
| 200 | } | 186 | } |
| @@ -450,38 +436,6 @@ void Builder::postProcessFeatures() { | |||
| 450 | } | 436 | } |
| 451 | } | 437 | } |
| 452 | } | 438 | } |
| 453 | - | ||
| 454 | - // If any Vulkan memory model-specific functionality is used, update the | ||
| 455 | - // OpMemoryModel to match. | ||
| 456 | - if (capabilities.find(spv::CapabilityVulkanMemoryModelKHR) != capabilities.end()) { | ||
| 457 | - memoryModel = spv::MemoryModelVulkanKHR; | ||
| 458 | - addIncorporatedExtension(spv::E_SPV_KHR_vulkan_memory_model, spv::Spv_1_5); | ||
| 459 | - } | ||
| 460 | - | ||
| 461 | - // Add Aliased decoration if there's more than one Workgroup Block variable. | ||
| 462 | - if (capabilities.find(spv::CapabilityWorkgroupMemoryExplicitLayoutKHR) != capabilities.end()) { | ||
| 463 | - assert(entryPoints.size() == 1); | ||
| 464 | - auto &ep = entryPoints[0]; | ||
| 465 | - | ||
| 466 | - std::vector<Id> workgroup_variables; | ||
| 467 | - for (int i = 0; i < (int)ep->getNumOperands(); i++) { | ||
| 468 | - if (!ep->isIdOperand(i)) | ||
| 469 | - continue; | ||
| 470 | - | ||
| 471 | - const Id id = ep->getIdOperand(i); | ||
| 472 | - const Instruction *instr = module.getInstruction(id); | ||
| 473 | - if (instr->getOpCode() != spv::OpVariable) | ||
| 474 | - continue; | ||
| 475 | - | ||
| 476 | - if (instr->getImmediateOperand(0) == spv::StorageClassWorkgroup) | ||
| 477 | - workgroup_variables.push_back(id); | ||
| 478 | - } | ||
| 479 | - | ||
| 480 | - if (workgroup_variables.size() > 1) { | ||
| 481 | - for (size_t i = 0; i < workgroup_variables.size(); i++) | ||
| 482 | - addDecoration(workgroup_variables[i], spv::DecorationAliased); | ||
| 483 | - } | ||
| 484 | - } | ||
| 485 | } | 439 | } |
| 486 | #endif | 440 | #endif |
| 487 | 441 | ||
| @@ -44,6 +44,7 @@ | |||
| 44 | 44 | ||
| 45 | #include "SpvTools.h" | 45 | #include "SpvTools.h" |
| 46 | #include "spirv-tools/optimizer.hpp" | 46 | #include "spirv-tools/optimizer.hpp" |
| 47 | +#include "spirv-tools/libspirv.h" | ||
| 47 | 48 | ||
| 48 | namespace glslang { | 49 | namespace glslang { |
| 49 | 50 | ||
| @@ -68,8 +69,6 @@ spv_target_env MapToSpirvToolsEnv(const SpvVersion& spvVersion, spv::SpvBuildLog | |||
| 68 | } | 69 | } |
| 69 | case glslang::EShTargetVulkan_1_2: | 70 | case glslang::EShTargetVulkan_1_2: |
| 70 | return spv_target_env::SPV_ENV_VULKAN_1_2; | 71 | return spv_target_env::SPV_ENV_VULKAN_1_2; |
| 71 | - case glslang::EShTargetVulkan_1_3: | ||
| 72 | - return spv_target_env::SPV_ENV_VULKAN_1_3; | ||
| 73 | default: | 72 | default: |
| 74 | break; | 73 | break; |
| 75 | } | 74 | } |
| @@ -115,18 +114,11 @@ void OptimizerMesssageConsumer(spv_message_level_t level, const char *source, | |||
| 115 | out << std::endl; | 114 | out << std::endl; |
| 116 | } | 115 | } |
| 117 | 116 | ||
| 118 | -// Use the SPIRV-Tools disassembler to print SPIR-V using a SPV_ENV_UNIVERSAL_1_3 environment. | 117 | +// Use the SPIRV-Tools disassembler to print SPIR-V. |
| 119 | void SpirvToolsDisassemble(std::ostream& out, const std::vector<unsigned int>& spirv) | 118 | void SpirvToolsDisassemble(std::ostream& out, const std::vector<unsigned int>& spirv) |
| 120 | -{ | ||
| 121 | - SpirvToolsDisassemble(out, spirv, spv_target_env::SPV_ENV_UNIVERSAL_1_3); | ||
| 122 | -} | ||
| 123 | - | ||
| 124 | -// Use the SPIRV-Tools disassembler to print SPIR-V with a provided SPIR-V environment. | ||
| 125 | -void SpirvToolsDisassemble(std::ostream& out, const std::vector<unsigned int>& spirv, | ||
| 126 | - spv_target_env requested_context) | ||
| 127 | { | 119 | { |
| 128 | // disassemble | 120 | // disassemble |
| 129 | - spv_context context = spvContextCreate(requested_context); | 121 | + spv_context context = spvContextCreate(SPV_ENV_UNIVERSAL_1_3); |
| 130 | spv_text text; | 122 | spv_text text; |
| 131 | spv_diagnostic diagnostic = nullptr; | 123 | spv_diagnostic diagnostic = nullptr; |
| 132 | spvBinaryToText(context, spirv.data(), spirv.size(), | 124 | spvBinaryToText(context, spirv.data(), spirv.size(), |
| @@ -155,8 +147,6 @@ void SpirvToolsValidate(const glslang::TIntermediate& intermediate, std::vector< | |||
| 155 | spv_validator_options options = spvValidatorOptionsCreate(); | 147 | spv_validator_options options = spvValidatorOptionsCreate(); |
| 156 | spvValidatorOptionsSetRelaxBlockLayout(options, intermediate.usingHlslOffsets()); | 148 | spvValidatorOptionsSetRelaxBlockLayout(options, intermediate.usingHlslOffsets()); |
| 157 | spvValidatorOptionsSetBeforeHlslLegalization(options, prelegalization); | 149 | spvValidatorOptionsSetBeforeHlslLegalization(options, prelegalization); |
| 158 | - spvValidatorOptionsSetScalarBlockLayout(options, intermediate.usingScalarBlockLayout()); | ||
| 159 | - spvValidatorOptionsSetWorkgroupScalarBlockLayout(options, intermediate.usingScalarBlockLayout()); | ||
| 160 | spvValidateWithOptions(context, options, &binary, &diagnostic); | 150 | spvValidateWithOptions(context, options, &binary, &diagnostic); |
| 161 | 151 | ||
| 162 | // report | 152 | // report |
| @@ -184,7 +174,10 @@ void SpirvToolsTransform(const glslang::TIntermediate& intermediate, std::vector | |||
| 184 | // line information into all SPIR-V instructions. This avoids loss of | 174 | // line information into all SPIR-V instructions. This avoids loss of |
| 185 | // information when instructions are deleted or moved. Later, remove | 175 | // information when instructions are deleted or moved. Later, remove |
| 186 | // redundant information to minimize final SPRIR-V size. | 176 | // redundant information to minimize final SPRIR-V size. |
| 187 | - if (options->stripDebugInfo) { | 177 | + if (options->generateDebugInfo) { |
| 178 | + optimizer.RegisterPass(spvtools::CreatePropagateLineInfoPass()); | ||
| 179 | + } | ||
| 180 | + else if (options->stripDebugInfo) { | ||
| 188 | optimizer.RegisterPass(spvtools::CreateStripDebugInfoPass()); | 181 | optimizer.RegisterPass(spvtools::CreateStripDebugInfoPass()); |
| 189 | } | 182 | } |
| 190 | optimizer.RegisterPass(spvtools::CreateWrapOpKillPass()); | 183 | optimizer.RegisterPass(spvtools::CreateWrapOpKillPass()); |
| @@ -209,13 +202,14 @@ void SpirvToolsTransform(const glslang::TIntermediate& intermediate, std::vector | |||
| 209 | optimizer.RegisterPass(spvtools::CreateAggressiveDCEPass()); | 202 | optimizer.RegisterPass(spvtools::CreateAggressiveDCEPass()); |
| 210 | optimizer.RegisterPass(spvtools::CreateVectorDCEPass()); | 203 | optimizer.RegisterPass(spvtools::CreateVectorDCEPass()); |
| 211 | optimizer.RegisterPass(spvtools::CreateDeadInsertElimPass()); | 204 | optimizer.RegisterPass(spvtools::CreateDeadInsertElimPass()); |
| 212 | - optimizer.RegisterPass(spvtools::CreateInterpolateFixupPass()); | ||
| 213 | if (options->optimizeSize) { | 205 | if (options->optimizeSize) { |
| 214 | optimizer.RegisterPass(spvtools::CreateRedundancyEliminationPass()); | 206 | optimizer.RegisterPass(spvtools::CreateRedundancyEliminationPass()); |
| 215 | - optimizer.RegisterPass(spvtools::CreateEliminateDeadInputComponentsSafePass()); | ||
| 216 | } | 207 | } |
| 217 | optimizer.RegisterPass(spvtools::CreateAggressiveDCEPass()); | 208 | optimizer.RegisterPass(spvtools::CreateAggressiveDCEPass()); |
| 218 | optimizer.RegisterPass(spvtools::CreateCFGCleanupPass()); | 209 | optimizer.RegisterPass(spvtools::CreateCFGCleanupPass()); |
| 210 | + if (options->generateDebugInfo) { | ||
| 211 | + optimizer.RegisterPass(spvtools::CreateRedundantLineInfoElimPass()); | ||
| 212 | + } | ||
| 219 | 213 | ||
| 220 | spvtools::OptimizerOptions spvOptOptions; | 214 | spvtools::OptimizerOptions spvOptOptions; |
| 221 | optimizer.SetTargetEnv(MapToSpirvToolsEnv(intermediate.getSpv(), logger)); | 215 | optimizer.SetTargetEnv(MapToSpirvToolsEnv(intermediate.getSpv(), logger)); |
| @@ -223,56 +217,6 @@ void SpirvToolsTransform(const glslang::TIntermediate& intermediate, std::vector | |||
| 223 | optimizer.Run(spirv.data(), spirv.size(), &spirv, spvOptOptions); | 217 | optimizer.Run(spirv.data(), spirv.size(), &spirv, spvOptOptions); |
| 224 | } | 218 | } |
| 225 | 219 | ||
| 226 | -bool SpirvToolsAnalyzeDeadOutputStores(spv_target_env target_env, std::vector<unsigned int>& spirv, | ||
| 227 | - std::unordered_set<uint32_t>* live_locs, | ||
| 228 | - std::unordered_set<uint32_t>* live_builtins, | ||
| 229 | - spv::SpvBuildLogger* logger) | ||
| 230 | -{ | ||
| 231 | - spvtools::Optimizer optimizer(target_env); | ||
| 232 | - optimizer.SetMessageConsumer(OptimizerMesssageConsumer); | ||
| 233 | - | ||
| 234 | - optimizer.RegisterPass(spvtools::CreateAnalyzeLiveInputPass(live_locs, live_builtins)); | ||
| 235 | - | ||
| 236 | - spvtools::OptimizerOptions spvOptOptions; | ||
| 237 | - optimizer.SetTargetEnv(target_env); | ||
| 238 | - spvOptOptions.set_run_validator(false); | ||
| 239 | - return optimizer.Run(spirv.data(), spirv.size(), &spirv, spvOptOptions); | ||
| 240 | -} | ||
| 241 | - | ||
| 242 | -void SpirvToolsEliminateDeadOutputStores(spv_target_env target_env, std::vector<unsigned int>& spirv, | ||
| 243 | - std::unordered_set<uint32_t>* live_locs, | ||
| 244 | - std::unordered_set<uint32_t>* live_builtins, | ||
| 245 | - spv::SpvBuildLogger* logger) | ||
| 246 | -{ | ||
| 247 | - spvtools::Optimizer optimizer(target_env); | ||
| 248 | - optimizer.SetMessageConsumer(OptimizerMesssageConsumer); | ||
| 249 | - | ||
| 250 | - optimizer.RegisterPass(spvtools::CreateEliminateDeadOutputStoresPass(live_locs, live_builtins)); | ||
| 251 | - optimizer.RegisterPass(spvtools::CreateAggressiveDCEPass(false, true)); | ||
| 252 | - optimizer.RegisterPass(spvtools::CreateEliminateDeadOutputComponentsPass()); | ||
| 253 | - optimizer.RegisterPass(spvtools::CreateAggressiveDCEPass(false, true)); | ||
| 254 | - | ||
| 255 | - spvtools::OptimizerOptions spvOptOptions; | ||
| 256 | - optimizer.SetTargetEnv(target_env); | ||
| 257 | - spvOptOptions.set_run_validator(false); | ||
| 258 | - optimizer.Run(spirv.data(), spirv.size(), &spirv, spvOptOptions); | ||
| 259 | -} | ||
| 260 | - | ||
| 261 | -void SpirvToolsEliminateDeadInputComponents(spv_target_env target_env, std::vector<unsigned int>& spirv, | ||
| 262 | - spv::SpvBuildLogger* logger) | ||
| 263 | -{ | ||
| 264 | - spvtools::Optimizer optimizer(target_env); | ||
| 265 | - optimizer.SetMessageConsumer(OptimizerMesssageConsumer); | ||
| 266 | - | ||
| 267 | - optimizer.RegisterPass(spvtools::CreateEliminateDeadInputComponentsPass()); | ||
| 268 | - optimizer.RegisterPass(spvtools::CreateAggressiveDCEPass()); | ||
| 269 | - | ||
| 270 | - spvtools::OptimizerOptions spvOptOptions; | ||
| 271 | - optimizer.SetTargetEnv(target_env); | ||
| 272 | - spvOptOptions.set_run_validator(false); | ||
| 273 | - optimizer.Run(spirv.data(), spirv.size(), &spirv, spvOptOptions); | ||
| 274 | -} | ||
| 275 | - | ||
| 276 | // Apply the SPIRV-Tools optimizer to strip debug info from SPIR-V. This is implicitly done by | 220 | // Apply the SPIRV-Tools optimizer to strip debug info from SPIR-V. This is implicitly done by |
| 277 | // SpirvToolsTransform if spvOptions->stripDebugInfo is set, but can be called separately if | 221 | // SpirvToolsTransform if spvOptions->stripDebugInfo is set, but can be called separately if |
| 278 | // optimization is disabled. | 222 | // optimization is disabled. |
| @@ -41,10 +41,9 @@ | |||
| 41 | #ifndef GLSLANG_SPV_TOOLS_H | 41 | #ifndef GLSLANG_SPV_TOOLS_H |
| 42 | #define GLSLANG_SPV_TOOLS_H | 42 | #define GLSLANG_SPV_TOOLS_H |
| 43 | 43 | ||
| 44 | -#if ENABLE_OPT | 44 | +#ifdef ENABLE_OPT |
| 45 | #include <vector> | 45 | #include <vector> |
| 46 | #include <ostream> | 46 | #include <ostream> |
| 47 | -#include "spirv-tools/libspirv.h" | ||
| 48 | #endif | 47 | #endif |
| 49 | 48 | ||
| 50 | #include "glslang/MachineIndependent/localintermediate.h" | 49 | #include "glslang/MachineIndependent/localintermediate.h" |
| @@ -53,28 +52,21 @@ | |||
| 53 | namespace glslang { | 52 | namespace glslang { |
| 54 | 53 | ||
| 55 | struct SpvOptions { | 54 | struct SpvOptions { |
| 56 | - bool generateDebugInfo {false}; | 55 | + SpvOptions() : generateDebugInfo(false), stripDebugInfo(false), disableOptimizer(true), |
| 57 | - bool stripDebugInfo {false}; | 56 | + optimizeSize(false), disassemble(false), validate(false) { } |
| 58 | - bool disableOptimizer {true}; | 57 | + bool generateDebugInfo; |
| 59 | - bool optimizeSize {false}; | 58 | + bool stripDebugInfo; |
| 60 | - bool disassemble {false}; | 59 | + bool disableOptimizer; |
| 61 | - bool validate {false}; | 60 | + bool optimizeSize; |
| 62 | - bool emitNonSemanticShaderDebugInfo {false}; | 61 | + bool disassemble; |
| 63 | - bool emitNonSemanticShaderDebugSource{ false }; | 62 | + bool validate; |
| 64 | }; | 63 | }; |
| 65 | 64 | ||
| 66 | -#if ENABLE_OPT | 65 | +#ifdef ENABLE_OPT |
| 67 | 66 | ||
| 68 | -// Translate glslang's view of target versioning to what SPIRV-Tools uses. | 67 | +// Use the SPIRV-Tools disassembler to print SPIR-V. |
| 69 | -spv_target_env MapToSpirvToolsEnv(const SpvVersion& spvVersion, spv::SpvBuildLogger* logger); | ||
| 70 | - | ||
| 71 | -// Use the SPIRV-Tools disassembler to print SPIR-V using a SPV_ENV_UNIVERSAL_1_3 environment. | ||
| 72 | void SpirvToolsDisassemble(std::ostream& out, const std::vector<unsigned int>& spirv); | 68 | void SpirvToolsDisassemble(std::ostream& out, const std::vector<unsigned int>& spirv); |
| 73 | 69 | ||
| 74 | -// Use the SPIRV-Tools disassembler to print SPIR-V with a provided SPIR-V environment. | ||
| 75 | -void SpirvToolsDisassemble(std::ostream& out, const std::vector<unsigned int>& spirv, | ||
| 76 | - spv_target_env requested_context); | ||
| 77 | - | ||
| 78 | // Apply the SPIRV-Tools validator to generated SPIR-V. | 70 | // Apply the SPIRV-Tools validator to generated SPIR-V. |
| 79 | void SpirvToolsValidate(const glslang::TIntermediate& intermediate, std::vector<unsigned int>& spirv, | 71 | void SpirvToolsValidate(const glslang::TIntermediate& intermediate, std::vector<unsigned int>& spirv, |
| 80 | spv::SpvBuildLogger*, bool prelegalization); | 72 | spv::SpvBuildLogger*, bool prelegalization); |
| @@ -83,22 +75,6 @@ void SpirvToolsValidate(const glslang::TIntermediate& intermediate, std::vector< | |||
| 83 | void SpirvToolsTransform(const glslang::TIntermediate& intermediate, std::vector<unsigned int>& spirv, | 75 | void SpirvToolsTransform(const glslang::TIntermediate& intermediate, std::vector<unsigned int>& spirv, |
| 84 | spv::SpvBuildLogger*, const SpvOptions*); | 76 | spv::SpvBuildLogger*, const SpvOptions*); |
| 85 | 77 | ||
| 86 | -// Apply the SPIRV-Tools EliminateDeadInputComponents pass to generated SPIR-V. Put result in |spirv|. | ||
| 87 | -void SpirvToolsEliminateDeadInputComponents(spv_target_env target_env, std::vector<unsigned int>& spirv, | ||
| 88 | - spv::SpvBuildLogger*); | ||
| 89 | - | ||
| 90 | -// Apply the SPIRV-Tools AnalyzeDeadOutputStores pass to generated SPIR-V. Put result in |live_locs|. | ||
| 91 | -// Return true if the result is valid. | ||
| 92 | -bool SpirvToolsAnalyzeDeadOutputStores(spv_target_env target_env, std::vector<unsigned int>& spirv, | ||
| 93 | - std::unordered_set<uint32_t>* live_locs, | ||
| 94 | - std::unordered_set<uint32_t>* live_builtins, spv::SpvBuildLogger*); | ||
| 95 | - | ||
| 96 | -// Apply the SPIRV-Tools EliminateDeadOutputStores and AggressiveDeadCodeElimination passes to generated SPIR-V using | ||
| 97 | -// |live_locs|. Put result in |spirv|. | ||
| 98 | -void SpirvToolsEliminateDeadOutputStores(spv_target_env target_env, std::vector<unsigned int>& spirv, | ||
| 99 | - std::unordered_set<uint32_t>* live_locs, | ||
| 100 | - std::unordered_set<uint32_t>* live_builtins, spv::SpvBuildLogger*); | ||
| 101 | - | ||
| 102 | // Apply the SPIRV-Tools optimizer to strip debug info from SPIR-V. This is implicitly done by | 78 | // Apply the SPIRV-Tools optimizer to strip debug info from SPIR-V. This is implicitly done by |
| 103 | // SpirvToolsTransform if spvOptions->stripDebugInfo is set, but can be called separately if | 79 | // SpirvToolsTransform if spvOptions->stripDebugInfo is set, but can be called separately if |
| 104 | // optimization is disabled. | 80 | // optimization is disabled. |
| @@ -43,7 +43,6 @@ | |||
| 43 | #include <stack> | 43 | #include <stack> |
| 44 | #include <sstream> | 44 | #include <sstream> |
| 45 | #include <cstring> | 45 | #include <cstring> |
| 46 | -#include <utility> | ||
| 47 | 46 | ||
| 48 | #include "disassemble.h" | 47 | #include "disassemble.h" |
| 49 | #include "doc.h" | 48 | #include "doc.h" |
| @@ -54,7 +53,6 @@ namespace spv { | |||
| 54 | #include "GLSL.std.450.h" | 53 | #include "GLSL.std.450.h" |
| 55 | #include "GLSL.ext.AMD.h" | 54 | #include "GLSL.ext.AMD.h" |
| 56 | #include "GLSL.ext.NV.h" | 55 | #include "GLSL.ext.NV.h" |
| 57 | - #include "GLSL.ext.ARM.h" | ||
| 58 | } | 56 | } |
| 59 | } | 57 | } |
| 60 | const char* GlslStd450DebugNames[spv::GLSLstd450Count]; | 58 | const char* GlslStd450DebugNames[spv::GLSLstd450Count]; |
| @@ -102,7 +100,6 @@ protected: | |||
| 102 | void outputMask(OperandClass operandClass, unsigned mask); | 100 | void outputMask(OperandClass operandClass, unsigned mask); |
| 103 | void disassembleImmediates(int numOperands); | 101 | void disassembleImmediates(int numOperands); |
| 104 | void disassembleIds(int numOperands); | 102 | void disassembleIds(int numOperands); |
| 105 | - std::pair<int, std::string> decodeString(); | ||
| 106 | int disassembleString(); | 103 | int disassembleString(); |
| 107 | void disassembleInstruction(Id resultId, Id typeId, Op opCode, int numOperands); | 104 | void disassembleInstruction(Id resultId, Id typeId, Op opCode, int numOperands); |
| 108 | 105 | ||
| @@ -293,44 +290,31 @@ void SpirvStream::disassembleIds(int numOperands) | |||
| 293 | } | 290 | } |
| 294 | } | 291 | } |
| 295 | 292 | ||
| 296 | -// decode string from words at current position (non-consuming) | ||
| 297 | -std::pair<int, std::string> SpirvStream::decodeString() | ||
| 298 | -{ | ||
| 299 | - std::string res; | ||
| 300 | - int wordPos = word; | ||
| 301 | - char c; | ||
| 302 | - bool done = false; | ||
| 303 | - | ||
| 304 | - do { | ||
| 305 | - unsigned int content = stream[wordPos]; | ||
| 306 | - for (int charCount = 0; charCount < 4; ++charCount) { | ||
| 307 | - c = content & 0xff; | ||
| 308 | - content >>= 8; | ||
| 309 | - if (c == '\0') { | ||
| 310 | - done = true; | ||
| 311 | - break; | ||
| 312 | - } | ||
| 313 | - res += c; | ||
| 314 | - } | ||
| 315 | - ++wordPos; | ||
| 316 | - } while(! done); | ||
| 317 | - | ||
| 318 | - return std::make_pair(wordPos - word, res); | ||
| 319 | -} | ||
| 320 | - | ||
| 321 | // return the number of operands consumed by the string | 293 | // return the number of operands consumed by the string |
| 322 | int SpirvStream::disassembleString() | 294 | int SpirvStream::disassembleString() |
| 323 | { | 295 | { |
| 296 | + int startWord = word; | ||
| 297 | + | ||
| 324 | out << " \""; | 298 | out << " \""; |
| 325 | 299 | ||
| 326 | - std::pair<int, std::string> decoderes = decodeString(); | 300 | + const char* wordString; |
| 301 | + bool done = false; | ||
| 302 | + do { | ||
| 303 | + unsigned int content = stream[word]; | ||
| 304 | + wordString = (const char*)&content; | ||
| 305 | + for (int charCount = 0; charCount < 4; ++charCount) { | ||
| 306 | + if (*wordString == 0) { | ||
| 307 | + done = true; | ||
| 308 | + break; | ||
| 309 | + } | ||
| 310 | + out << *(wordString++); | ||
| 311 | + } | ||
| 312 | + ++word; | ||
| 313 | + } while (! done); | ||
| 327 | 314 | ||
| 328 | - out << decoderes.second; | ||
| 329 | out << "\""; | 315 | out << "\""; |
| 330 | 316 | ||
| 331 | - word += decoderes.first; | 317 | + return word - startWord; |
| 332 | - | ||
| 333 | - return decoderes.first; | ||
| 334 | } | 318 | } |
| 335 | 319 | ||
| 336 | void SpirvStream::disassembleInstruction(Id resultId, Id /*typeId*/, Op opCode, int numOperands) | 320 | void SpirvStream::disassembleInstruction(Id resultId, Id /*typeId*/, Op opCode, int numOperands) |
| @@ -347,7 +331,7 @@ void SpirvStream::disassembleInstruction(Id resultId, Id /*typeId*/, Op opCode, | |||
| 347 | nextNestedControl = 0; | 331 | nextNestedControl = 0; |
| 348 | } | 332 | } |
| 349 | } else if (opCode == OpExtInstImport) { | 333 | } else if (opCode == OpExtInstImport) { |
| 350 | - idDescriptor[resultId] = decodeString().second; | 334 | + idDescriptor[resultId] = (const char*)(&stream[word]); |
| 351 | } | 335 | } |
| 352 | else { | 336 | else { |
| 353 | if (resultId != 0 && idDescriptor[resultId].size() == 0) { | 337 | if (resultId != 0 && idDescriptor[resultId].size() == 0) { |
| @@ -444,7 +428,7 @@ void SpirvStream::disassembleInstruction(Id resultId, Id /*typeId*/, Op opCode, | |||
| 444 | --numOperands; | 428 | --numOperands; |
| 445 | // Get names for printing "(XXX)" for readability, *after* this id | 429 | // Get names for printing "(XXX)" for readability, *after* this id |
| 446 | if (opCode == OpName) | 430 | if (opCode == OpName) |
| 447 | - idDescriptor[stream[word - 1]] = decodeString().second; | 431 | + idDescriptor[stream[word - 1]] = (const char*)(&stream[word]); |
| 448 | break; | 432 | break; |
| 449 | case OperandVariableIds: | 433 | case OperandVariableIds: |
| 450 | disassembleIds(numOperands); | 434 | disassembleIds(numOperands); |
| @@ -53,7 +53,6 @@ namespace spv { | |||
| 53 | #include "GLSL.ext.EXT.h" | 53 | #include "GLSL.ext.EXT.h" |
| 54 | #include "GLSL.ext.AMD.h" | 54 | #include "GLSL.ext.AMD.h" |
| 55 | #include "GLSL.ext.NV.h" | 55 | #include "GLSL.ext.NV.h" |
| 56 | - #include "GLSL.ext.ARM.h" | ||
| 57 | } | 56 | } |
| 58 | } | 57 | } |
| 59 | 58 | ||
| @@ -98,8 +97,6 @@ const char* ExecutionModelString(int model) | |||
| 98 | case 6: return "Kernel"; | 97 | case 6: return "Kernel"; |
| 99 | case ExecutionModelTaskNV: return "TaskNV"; | 98 | case ExecutionModelTaskNV: return "TaskNV"; |
| 100 | case ExecutionModelMeshNV: return "MeshNV"; | 99 | case ExecutionModelMeshNV: return "MeshNV"; |
| 101 | - case ExecutionModelTaskEXT: return "TaskEXT"; | ||
| 102 | - case ExecutionModelMeshEXT: return "MeshEXT"; | ||
| 103 | 100 | ||
| 104 | default: return "Bad"; | 101 | default: return "Bad"; |
| 105 | 102 | ||
| @@ -176,32 +173,27 @@ const char* ExecutionModeString(int mode) | |||
| 176 | case 31: return "ContractionOff"; | 173 | case 31: return "ContractionOff"; |
| 177 | case 32: return "Bad"; | 174 | case 32: return "Bad"; |
| 178 | 175 | ||
| 179 | - case ExecutionModeInitializer: return "Initializer"; | 176 | + case ExecutionModeInitializer: return "Initializer"; |
| 180 | - case ExecutionModeFinalizer: return "Finalizer"; | 177 | + case ExecutionModeFinalizer: return "Finalizer"; |
| 181 | - case ExecutionModeSubgroupSize: return "SubgroupSize"; | 178 | + case ExecutionModeSubgroupSize: return "SubgroupSize"; |
| 182 | - case ExecutionModeSubgroupsPerWorkgroup: return "SubgroupsPerWorkgroup"; | 179 | + case ExecutionModeSubgroupsPerWorkgroup: return "SubgroupsPerWorkgroup"; |
| 183 | - case ExecutionModeSubgroupsPerWorkgroupId: return "SubgroupsPerWorkgroupId"; | 180 | + case ExecutionModeSubgroupsPerWorkgroupId: return "SubgroupsPerWorkgroupId"; |
| 184 | - case ExecutionModeLocalSizeId: return "LocalSizeId"; | 181 | + case ExecutionModeLocalSizeId: return "LocalSizeId"; |
| 185 | - case ExecutionModeLocalSizeHintId: return "LocalSizeHintId"; | 182 | + case ExecutionModeLocalSizeHintId: return "LocalSizeHintId"; |
| 186 | 183 | ||
| 187 | - case ExecutionModePostDepthCoverage: return "PostDepthCoverage"; | 184 | + case ExecutionModePostDepthCoverage: return "PostDepthCoverage"; |
| 188 | - case ExecutionModeDenormPreserve: return "DenormPreserve"; | 185 | + case ExecutionModeDenormPreserve: return "DenormPreserve"; |
| 189 | - case ExecutionModeDenormFlushToZero: return "DenormFlushToZero"; | 186 | + case ExecutionModeDenormFlushToZero: return "DenormFlushToZero"; |
| 190 | - case ExecutionModeSignedZeroInfNanPreserve: return "SignedZeroInfNanPreserve"; | 187 | + case ExecutionModeSignedZeroInfNanPreserve: return "SignedZeroInfNanPreserve"; |
| 191 | - case ExecutionModeRoundingModeRTE: return "RoundingModeRTE"; | 188 | + case ExecutionModeRoundingModeRTE: return "RoundingModeRTE"; |
| 192 | - case ExecutionModeRoundingModeRTZ: return "RoundingModeRTZ"; | 189 | + case ExecutionModeRoundingModeRTZ: return "RoundingModeRTZ"; |
| 193 | - case ExecutionModeEarlyAndLateFragmentTestsAMD: return "EarlyAndLateFragmentTestsAMD"; | 190 | + case ExecutionModeStencilRefReplacingEXT: return "StencilRefReplacingEXT"; |
| 194 | - case ExecutionModeStencilRefUnchangedFrontAMD: return "StencilRefUnchangedFrontAMD"; | ||
| 195 | - case ExecutionModeStencilRefLessFrontAMD: return "StencilRefLessFrontAMD"; | ||
| 196 | - case ExecutionModeStencilRefGreaterBackAMD: return "StencilRefGreaterBackAMD"; | ||
| 197 | - case ExecutionModeStencilRefReplacingEXT: return "StencilRefReplacingEXT"; | ||
| 198 | - case ExecutionModeSubgroupUniformControlFlowKHR: return "SubgroupUniformControlFlow"; | ||
| 199 | 191 | ||
| 200 | - case ExecutionModeOutputLinesNV: return "OutputLinesNV"; | 192 | + case ExecutionModeOutputLinesNV: return "OutputLinesNV"; |
| 201 | - case ExecutionModeOutputPrimitivesNV: return "OutputPrimitivesNV"; | 193 | + case ExecutionModeOutputPrimitivesNV: return "OutputPrimitivesNV"; |
| 202 | - case ExecutionModeOutputTrianglesNV: return "OutputTrianglesNV"; | 194 | + case ExecutionModeOutputTrianglesNV: return "OutputTrianglesNV"; |
| 203 | - case ExecutionModeDerivativeGroupQuadsNV: return "DerivativeGroupQuadsNV"; | 195 | + case ExecutionModeDerivativeGroupQuadsNV: return "DerivativeGroupQuadsNV"; |
| 204 | - case ExecutionModeDerivativeGroupLinearNV: return "DerivativeGroupLinearNV"; | 196 | + case ExecutionModeDerivativeGroupLinearNV: return "DerivativeGroupLinearNV"; |
| 205 | 197 | ||
| 206 | case ExecutionModePixelInterlockOrderedEXT: return "PixelInterlockOrderedEXT"; | 198 | case ExecutionModePixelInterlockOrderedEXT: return "PixelInterlockOrderedEXT"; |
| 207 | case ExecutionModePixelInterlockUnorderedEXT: return "PixelInterlockUnorderedEXT"; | 199 | case ExecutionModePixelInterlockUnorderedEXT: return "PixelInterlockUnorderedEXT"; |
| @@ -245,7 +237,7 @@ const char* StorageClassString(int StorageClass) | |||
| 245 | case StorageClassIncomingCallableDataKHR: return "IncomingCallableDataKHR"; | 237 | case StorageClassIncomingCallableDataKHR: return "IncomingCallableDataKHR"; |
| 246 | 238 | ||
| 247 | case StorageClassPhysicalStorageBufferEXT: return "PhysicalStorageBufferEXT"; | 239 | case StorageClassPhysicalStorageBufferEXT: return "PhysicalStorageBufferEXT"; |
| 248 | - case StorageClassTaskPayloadWorkgroupEXT: return "TaskPayloadWorkgroupEXT"; | 240 | + |
| 249 | default: return "Bad"; | 241 | default: return "Bad"; |
| 250 | } | 242 | } |
| 251 | } | 243 | } |
| @@ -312,8 +304,7 @@ const char* DecorationString(int decoration) | |||
| 312 | case DecorationPerPrimitiveNV: return "PerPrimitiveNV"; | 304 | case DecorationPerPrimitiveNV: return "PerPrimitiveNV"; |
| 313 | case DecorationPerViewNV: return "PerViewNV"; | 305 | case DecorationPerViewNV: return "PerViewNV"; |
| 314 | case DecorationPerTaskNV: return "PerTaskNV"; | 306 | case DecorationPerTaskNV: return "PerTaskNV"; |
| 315 | - | 307 | + case DecorationPerVertexNV: return "PerVertexNV"; |
| 316 | - case DecorationPerVertexKHR: return "PerVertexKHR"; | ||
| 317 | 308 | ||
| 318 | case DecorationNonUniformEXT: return "DecorationNonUniformEXT"; | 309 | case DecorationNonUniformEXT: return "DecorationNonUniformEXT"; |
| 319 | case DecorationHlslCounterBufferGOOGLE: return "DecorationHlslCounterBufferGOOGLE"; | 310 | case DecorationHlslCounterBufferGOOGLE: return "DecorationHlslCounterBufferGOOGLE"; |
| @@ -400,12 +391,11 @@ const char* BuiltInString(int builtIn) | |||
| 400 | case BuiltInObjectRayDirectionKHR: return "ObjectRayDirectionKHR"; | 391 | case BuiltInObjectRayDirectionKHR: return "ObjectRayDirectionKHR"; |
| 401 | case BuiltInRayTminKHR: return "RayTminKHR"; | 392 | case BuiltInRayTminKHR: return "RayTminKHR"; |
| 402 | case BuiltInRayTmaxKHR: return "RayTmaxKHR"; | 393 | case BuiltInRayTmaxKHR: return "RayTmaxKHR"; |
| 403 | - case BuiltInCullMaskKHR: return "CullMaskKHR"; | ||
| 404 | case BuiltInInstanceCustomIndexKHR: return "InstanceCustomIndexKHR"; | 394 | case BuiltInInstanceCustomIndexKHR: return "InstanceCustomIndexKHR"; |
| 405 | case BuiltInRayGeometryIndexKHR: return "RayGeometryIndexKHR"; | 395 | case BuiltInRayGeometryIndexKHR: return "RayGeometryIndexKHR"; |
| 406 | case BuiltInObjectToWorldKHR: return "ObjectToWorldKHR"; | 396 | case BuiltInObjectToWorldKHR: return "ObjectToWorldKHR"; |
| 407 | case BuiltInWorldToObjectKHR: return "WorldToObjectKHR"; | 397 | case BuiltInWorldToObjectKHR: return "WorldToObjectKHR"; |
| 408 | - case BuiltInHitTNV: return "HitTNV"; | 398 | + case BuiltInHitTKHR: return "HitTKHR"; |
| 409 | case BuiltInHitKindKHR: return "HitKindKHR"; | 399 | case BuiltInHitKindKHR: return "HitKindKHR"; |
| 410 | case BuiltInIncomingRayFlagsKHR: return "IncomingRayFlagsKHR"; | 400 | case BuiltInIncomingRayFlagsKHR: return "IncomingRayFlagsKHR"; |
| 411 | case BuiltInViewportMaskNV: return "ViewportMaskNV"; | 401 | case BuiltInViewportMaskNV: return "ViewportMaskNV"; |
| @@ -415,8 +405,8 @@ const char* BuiltInString(int builtIn) | |||
| 415 | case BuiltInViewportMaskPerViewNV: return "ViewportMaskPerViewNV"; | 405 | case BuiltInViewportMaskPerViewNV: return "ViewportMaskPerViewNV"; |
| 416 | // case BuiltInFragmentSizeNV: return "FragmentSizeNV"; // superseded by BuiltInFragSizeEXT | 406 | // case BuiltInFragmentSizeNV: return "FragmentSizeNV"; // superseded by BuiltInFragSizeEXT |
| 417 | // case BuiltInInvocationsPerPixelNV: return "InvocationsPerPixelNV"; // superseded by BuiltInFragInvocationCountEXT | 407 | // case BuiltInInvocationsPerPixelNV: return "InvocationsPerPixelNV"; // superseded by BuiltInFragInvocationCountEXT |
| 418 | - case BuiltInBaryCoordKHR: return "BaryCoordKHR"; | 408 | + case BuiltInBaryCoordNV: return "BaryCoordNV"; |
| 419 | - case BuiltInBaryCoordNoPerspKHR: return "BaryCoordNoPerspKHR"; | 409 | + case BuiltInBaryCoordNoPerspNV: return "BaryCoordNoPerspNV"; |
| 420 | 410 | ||
| 421 | case BuiltInFragSizeEXT: return "FragSizeEXT"; | 411 | case BuiltInFragSizeEXT: return "FragSizeEXT"; |
| 422 | case BuiltInFragInvocationCountEXT: return "FragInvocationCountEXT"; | 412 | case BuiltInFragInvocationCountEXT: return "FragInvocationCountEXT"; |
| @@ -435,16 +425,6 @@ const char* BuiltInString(int builtIn) | |||
| 435 | case BuiltInSMCountNV: return "SMCountNV"; | 425 | case BuiltInSMCountNV: return "SMCountNV"; |
| 436 | case BuiltInWarpIDNV: return "WarpIDNV"; | 426 | case BuiltInWarpIDNV: return "WarpIDNV"; |
| 437 | case BuiltInSMIDNV: return "SMIDNV"; | 427 | case BuiltInSMIDNV: return "SMIDNV"; |
| 438 | - case BuiltInCurrentRayTimeNV: return "CurrentRayTimeNV"; | ||
| 439 | - case BuiltInPrimitivePointIndicesEXT: return "PrimitivePointIndicesEXT"; | ||
| 440 | - case BuiltInPrimitiveLineIndicesEXT: return "PrimitiveLineIndicesEXT"; | ||
| 441 | - case BuiltInPrimitiveTriangleIndicesEXT: return "PrimitiveTriangleIndicesEXT"; | ||
| 442 | - case BuiltInCullPrimitiveEXT: return "CullPrimitiveEXT"; | ||
| 443 | - case BuiltInCoreCountARM: return "CoreCountARM"; | ||
| 444 | - case BuiltInCoreIDARM: return "CoreIDARM"; | ||
| 445 | - case BuiltInCoreMaxIDARM: return "CoreMaxIDARM"; | ||
| 446 | - case BuiltInWarpIDARM: return "WarpIDARM"; | ||
| 447 | - case BuiltInWarpMaxIDARM: return "BuiltInWarpMaxIDARM"; | ||
| 448 | 428 | ||
| 449 | default: return "Bad"; | 429 | default: return "Bad"; |
| 450 | } | 430 | } |
| @@ -543,8 +523,6 @@ const char* ImageFormatString(int format) | |||
| 543 | case 37: return "Rg8ui"; | 523 | case 37: return "Rg8ui"; |
| 544 | case 38: return "R16ui"; | 524 | case 38: return "R16ui"; |
| 545 | case 39: return "R8ui"; | 525 | case 39: return "R8ui"; |
| 546 | - case 40: return "R64ui"; | ||
| 547 | - case 41: return "R64i"; | ||
| 548 | 526 | ||
| 549 | default: | 527 | default: |
| 550 | return "Bad"; | 528 | return "Bad"; |
| @@ -918,12 +896,6 @@ const char* CapabilityString(int info) | |||
| 918 | case CapabilityDeviceGroup: return "DeviceGroup"; | 896 | case CapabilityDeviceGroup: return "DeviceGroup"; |
| 919 | case CapabilityMultiView: return "MultiView"; | 897 | case CapabilityMultiView: return "MultiView"; |
| 920 | 898 | ||
| 921 | - case CapabilityDenormPreserve: return "DenormPreserve"; | ||
| 922 | - case CapabilityDenormFlushToZero: return "DenormFlushToZero"; | ||
| 923 | - case CapabilitySignedZeroInfNanPreserve: return "SignedZeroInfNanPreserve"; | ||
| 924 | - case CapabilityRoundingModeRTE: return "RoundingModeRTE"; | ||
| 925 | - case CapabilityRoundingModeRTZ: return "RoundingModeRTZ"; | ||
| 926 | - | ||
| 927 | case CapabilityStencilExportEXT: return "StencilExportEXT"; | 899 | case CapabilityStencilExportEXT: return "StencilExportEXT"; |
| 928 | 900 | ||
| 929 | case CapabilityFloat16ImageAMD: return "Float16ImageAMD"; | 901 | case CapabilityFloat16ImageAMD: return "Float16ImageAMD"; |
| @@ -941,18 +913,14 @@ const char* CapabilityString(int info) | |||
| 941 | case CapabilityPerViewAttributesNV: return "PerViewAttributesNV"; | 913 | case CapabilityPerViewAttributesNV: return "PerViewAttributesNV"; |
| 942 | case CapabilityGroupNonUniformPartitionedNV: return "GroupNonUniformPartitionedNV"; | 914 | case CapabilityGroupNonUniformPartitionedNV: return "GroupNonUniformPartitionedNV"; |
| 943 | case CapabilityRayTracingNV: return "RayTracingNV"; | 915 | case CapabilityRayTracingNV: return "RayTracingNV"; |
| 944 | - case CapabilityRayTracingMotionBlurNV: return "RayTracingMotionBlurNV"; | ||
| 945 | - case CapabilityRayTracingKHR: return "RayTracingKHR"; | ||
| 946 | - case CapabilityRayCullMaskKHR: return "RayCullMaskKHR"; | ||
| 947 | - case CapabilityRayQueryKHR: return "RayQueryKHR"; | ||
| 948 | case CapabilityRayTracingProvisionalKHR: return "RayTracingProvisionalKHR"; | 916 | case CapabilityRayTracingProvisionalKHR: return "RayTracingProvisionalKHR"; |
| 949 | - case CapabilityRayTraversalPrimitiveCullingKHR: return "RayTraversalPrimitiveCullingKHR"; | 917 | + case CapabilityRayQueryProvisionalKHR: return "RayQueryProvisionalKHR"; |
| 918 | + case CapabilityRayTraversalPrimitiveCullingProvisionalKHR: return "RayTraversalPrimitiveCullingProvisionalKHR"; | ||
| 950 | case CapabilityComputeDerivativeGroupQuadsNV: return "ComputeDerivativeGroupQuadsNV"; | 919 | case CapabilityComputeDerivativeGroupQuadsNV: return "ComputeDerivativeGroupQuadsNV"; |
| 951 | case CapabilityComputeDerivativeGroupLinearNV: return "ComputeDerivativeGroupLinearNV"; | 920 | case CapabilityComputeDerivativeGroupLinearNV: return "ComputeDerivativeGroupLinearNV"; |
| 952 | - case CapabilityFragmentBarycentricKHR: return "FragmentBarycentricKHR"; | 921 | + case CapabilityFragmentBarycentricNV: return "FragmentBarycentricNV"; |
| 953 | case CapabilityMeshShadingNV: return "MeshShadingNV"; | 922 | case CapabilityMeshShadingNV: return "MeshShadingNV"; |
| 954 | case CapabilityImageFootprintNV: return "ImageFootprintNV"; | 923 | case CapabilityImageFootprintNV: return "ImageFootprintNV"; |
| 955 | - case CapabilityMeshShadingEXT: return "MeshShadingEXT"; | ||
| 956 | // case CapabilityShadingRateNV: return "ShadingRateNV"; // superseded by FragmentDensityEXT | 924 | // case CapabilityShadingRateNV: return "ShadingRateNV"; // superseded by FragmentDensityEXT |
| 957 | case CapabilitySampleMaskOverrideCoverageNV: return "SampleMaskOverrideCoverageNV"; | 925 | case CapabilitySampleMaskOverrideCoverageNV: return "SampleMaskOverrideCoverageNV"; |
| 958 | case CapabilityFragmentDensityEXT: return "FragmentDensityEXT"; | 926 | case CapabilityFragmentDensityEXT: return "FragmentDensityEXT"; |
| @@ -990,21 +958,11 @@ const char* CapabilityString(int info) | |||
| 990 | 958 | ||
| 991 | case CapabilityDemoteToHelperInvocationEXT: return "DemoteToHelperInvocationEXT"; | 959 | case CapabilityDemoteToHelperInvocationEXT: return "DemoteToHelperInvocationEXT"; |
| 992 | case CapabilityShaderClockKHR: return "ShaderClockKHR"; | 960 | case CapabilityShaderClockKHR: return "ShaderClockKHR"; |
| 993 | - case CapabilityInt64ImageEXT: return "Int64ImageEXT"; | ||
| 994 | 961 | ||
| 995 | case CapabilityIntegerFunctions2INTEL: return "CapabilityIntegerFunctions2INTEL"; | 962 | case CapabilityIntegerFunctions2INTEL: return "CapabilityIntegerFunctions2INTEL"; |
| 996 | 963 | ||
| 997 | - case CapabilityAtomicFloat16AddEXT: return "AtomicFloat16AddEXT"; | ||
| 998 | case CapabilityAtomicFloat32AddEXT: return "AtomicFloat32AddEXT"; | 964 | case CapabilityAtomicFloat32AddEXT: return "AtomicFloat32AddEXT"; |
| 999 | case CapabilityAtomicFloat64AddEXT: return "AtomicFloat64AddEXT"; | 965 | case CapabilityAtomicFloat64AddEXT: return "AtomicFloat64AddEXT"; |
| 1000 | - case CapabilityAtomicFloat16MinMaxEXT: return "AtomicFloat16MinMaxEXT"; | ||
| 1001 | - case CapabilityAtomicFloat32MinMaxEXT: return "AtomicFloat32MinMaxEXT"; | ||
| 1002 | - case CapabilityAtomicFloat64MinMaxEXT: return "AtomicFloat64MinMaxEXT"; | ||
| 1003 | - | ||
| 1004 | - case CapabilityWorkgroupMemoryExplicitLayoutKHR: return "CapabilityWorkgroupMemoryExplicitLayoutKHR"; | ||
| 1005 | - case CapabilityWorkgroupMemoryExplicitLayout8BitAccessKHR: return "CapabilityWorkgroupMemoryExplicitLayout8BitAccessKHR"; | ||
| 1006 | - case CapabilityWorkgroupMemoryExplicitLayout16BitAccessKHR: return "CapabilityWorkgroupMemoryExplicitLayout16BitAccessKHR"; | ||
| 1007 | - case CapabilityCoreBuiltinsARM: return "CoreBuiltinsARM"; | ||
| 1008 | 966 | ||
| 1009 | default: return "Bad"; | 967 | default: return "Bad"; |
| 1010 | } | 968 | } |
| @@ -1375,8 +1333,6 @@ const char* OpcodeString(int op) | |||
| 1375 | case 365: return "OpGroupNonUniformQuadBroadcast"; | 1333 | case 365: return "OpGroupNonUniformQuadBroadcast"; |
| 1376 | case 366: return "OpGroupNonUniformQuadSwap"; | 1334 | case 366: return "OpGroupNonUniformQuadSwap"; |
| 1377 | 1335 | ||
| 1378 | - case OpTerminateInvocation: return "OpTerminateInvocation"; | ||
| 1379 | - | ||
| 1380 | case 4421: return "OpSubgroupBallotKHR"; | 1336 | case 4421: return "OpSubgroupBallotKHR"; |
| 1381 | case 4422: return "OpSubgroupFirstInvocationKHR"; | 1337 | case 4422: return "OpSubgroupFirstInvocationKHR"; |
| 1382 | case 4428: return "OpSubgroupAllKHR"; | 1338 | case 4428: return "OpSubgroupAllKHR"; |
| @@ -1385,8 +1341,6 @@ const char* OpcodeString(int op) | |||
| 1385 | case 4432: return "OpSubgroupReadInvocationKHR"; | 1341 | case 4432: return "OpSubgroupReadInvocationKHR"; |
| 1386 | 1342 | ||
| 1387 | case OpAtomicFAddEXT: return "OpAtomicFAddEXT"; | 1343 | case OpAtomicFAddEXT: return "OpAtomicFAddEXT"; |
| 1388 | - case OpAtomicFMinEXT: return "OpAtomicFMinEXT"; | ||
| 1389 | - case OpAtomicFMaxEXT: return "OpAtomicFMaxEXT"; | ||
| 1390 | 1344 | ||
| 1391 | case 5000: return "OpGroupIAddNonUniformAMD"; | 1345 | case 5000: return "OpGroupIAddNonUniformAMD"; |
| 1392 | case 5001: return "OpGroupFAddNonUniformAMD"; | 1346 | case 5001: return "OpGroupFAddNonUniformAMD"; |
| @@ -1405,26 +1359,17 @@ const char* OpcodeString(int op) | |||
| 1405 | case OpDecorateStringGOOGLE: return "OpDecorateStringGOOGLE"; | 1359 | case OpDecorateStringGOOGLE: return "OpDecorateStringGOOGLE"; |
| 1406 | case OpMemberDecorateStringGOOGLE: return "OpMemberDecorateStringGOOGLE"; | 1360 | case OpMemberDecorateStringGOOGLE: return "OpMemberDecorateStringGOOGLE"; |
| 1407 | 1361 | ||
| 1408 | - case OpReportIntersectionKHR: return "OpReportIntersectionKHR"; | ||
| 1409 | - case OpIgnoreIntersectionNV: return "OpIgnoreIntersectionNV"; | ||
| 1410 | - case OpIgnoreIntersectionKHR: return "OpIgnoreIntersectionKHR"; | ||
| 1411 | - case OpTerminateRayNV: return "OpTerminateRayNV"; | ||
| 1412 | - case OpTerminateRayKHR: return "OpTerminateRayKHR"; | ||
| 1413 | - case OpTraceNV: return "OpTraceNV"; | ||
| 1414 | - case OpTraceRayMotionNV: return "OpTraceRayMotionNV"; | ||
| 1415 | - case OpTraceRayKHR: return "OpTraceRayKHR"; | ||
| 1416 | - case OpTypeAccelerationStructureKHR: return "OpTypeAccelerationStructureKHR"; | ||
| 1417 | - case OpExecuteCallableNV: return "OpExecuteCallableNV"; | ||
| 1418 | - case OpExecuteCallableKHR: return "OpExecuteCallableKHR"; | ||
| 1419 | - case OpConvertUToAccelerationStructureKHR: return "OpConvertUToAccelerationStructureKHR"; | ||
| 1420 | - | ||
| 1421 | case OpGroupNonUniformPartitionNV: return "OpGroupNonUniformPartitionNV"; | 1362 | case OpGroupNonUniformPartitionNV: return "OpGroupNonUniformPartitionNV"; |
| 1363 | + case OpReportIntersectionKHR: return "OpReportIntersectionKHR"; | ||
| 1364 | + case OpIgnoreIntersectionKHR: return "OpIgnoreIntersectionKHR"; | ||
| 1365 | + case OpTerminateRayKHR: return "OpTerminateRayKHR"; | ||
| 1366 | + case OpTraceRayKHR: return "OpTraceRayKHR"; | ||
| 1367 | + case OpTypeAccelerationStructureKHR: return "OpTypeAccelerationStructureKHR"; | ||
| 1368 | + case OpExecuteCallableKHR: return "OpExecuteCallableKHR"; | ||
| 1422 | case OpImageSampleFootprintNV: return "OpImageSampleFootprintNV"; | 1369 | case OpImageSampleFootprintNV: return "OpImageSampleFootprintNV"; |
| 1423 | case OpWritePackedPrimitiveIndices4x8NV: return "OpWritePackedPrimitiveIndices4x8NV"; | 1370 | case OpWritePackedPrimitiveIndices4x8NV: return "OpWritePackedPrimitiveIndices4x8NV"; |
| 1424 | - case OpEmitMeshTasksEXT: return "OpEmitMeshTasksEXT"; | ||
| 1425 | - case OpSetMeshOutputsEXT: return "OpSetMeshOutputsEXT"; | ||
| 1426 | 1371 | ||
| 1427 | - case OpTypeRayQueryKHR: return "OpTypeRayQueryKHR"; | 1372 | + case OpTypeRayQueryProvisionalKHR: return "OpTypeRayQueryProvisionalKHR"; |
| 1428 | case OpRayQueryInitializeKHR: return "OpRayQueryInitializeKHR"; | 1373 | case OpRayQueryInitializeKHR: return "OpRayQueryInitializeKHR"; |
| 1429 | case OpRayQueryTerminateKHR: return "OpRayQueryTerminateKHR"; | 1374 | case OpRayQueryTerminateKHR: return "OpRayQueryTerminateKHR"; |
| 1430 | case OpRayQueryGenerateIntersectionKHR: return "OpRayQueryGenerateIntersectionKHR"; | 1375 | case OpRayQueryGenerateIntersectionKHR: return "OpRayQueryGenerateIntersectionKHR"; |
| @@ -1556,7 +1501,6 @@ void Parameterize() | |||
| 1556 | InstructionDesc[OpBranchConditional].setResultAndType(false, false); | 1501 | InstructionDesc[OpBranchConditional].setResultAndType(false, false); |
| 1557 | InstructionDesc[OpSwitch].setResultAndType(false, false); | 1502 | InstructionDesc[OpSwitch].setResultAndType(false, false); |
| 1558 | InstructionDesc[OpKill].setResultAndType(false, false); | 1503 | InstructionDesc[OpKill].setResultAndType(false, false); |
| 1559 | - InstructionDesc[OpTerminateInvocation].setResultAndType(false, false); | ||
| 1560 | InstructionDesc[OpReturn].setResultAndType(false, false); | 1504 | InstructionDesc[OpReturn].setResultAndType(false, false); |
| 1561 | InstructionDesc[OpReturnValue].setResultAndType(false, false); | 1505 | InstructionDesc[OpReturnValue].setResultAndType(false, false); |
| 1562 | InstructionDesc[OpUnreachable].setResultAndType(false, false); | 1506 | InstructionDesc[OpUnreachable].setResultAndType(false, false); |
| @@ -1614,7 +1558,7 @@ void Parameterize() | |||
| 1614 | DecorationOperands[DecorationInputAttachmentIndex].push(OperandLiteralNumber, "'Attachment Index'"); | 1558 | DecorationOperands[DecorationInputAttachmentIndex].push(OperandLiteralNumber, "'Attachment Index'"); |
| 1615 | DecorationOperands[DecorationAlignment].push(OperandLiteralNumber, "'Alignment'"); | 1559 | DecorationOperands[DecorationAlignment].push(OperandLiteralNumber, "'Alignment'"); |
| 1616 | 1560 | ||
| 1617 | - OperandClassParams[OperandSource].set(0, SourceString, nullptr); | 1561 | + OperandClassParams[OperandSource].set(0, SourceString, 0); |
| 1618 | OperandClassParams[OperandExecutionModel].set(0, ExecutionModelString, nullptr); | 1562 | OperandClassParams[OperandExecutionModel].set(0, ExecutionModelString, nullptr); |
| 1619 | OperandClassParams[OperandAddressing].set(0, AddressingString, nullptr); | 1563 | OperandClassParams[OperandAddressing].set(0, AddressingString, nullptr); |
| 1620 | OperandClassParams[OperandMemory].set(0, MemoryString, nullptr); | 1564 | OperandClassParams[OperandMemory].set(0, MemoryString, nullptr); |
| @@ -1646,7 +1590,7 @@ void Parameterize() | |||
| 1646 | OperandClassParams[OperandKernelEnqueueFlags].set(0, KernelEnqueueFlagsString, nullptr); | 1590 | OperandClassParams[OperandKernelEnqueueFlags].set(0, KernelEnqueueFlagsString, nullptr); |
| 1647 | OperandClassParams[OperandKernelProfilingInfo].set(0, KernelProfilingInfoString, nullptr, true); | 1591 | OperandClassParams[OperandKernelProfilingInfo].set(0, KernelProfilingInfoString, nullptr, true); |
| 1648 | OperandClassParams[OperandCapability].set(0, CapabilityString, nullptr); | 1592 | OperandClassParams[OperandCapability].set(0, CapabilityString, nullptr); |
| 1649 | - OperandClassParams[OperandOpcode].set(OpCodeMask + 1, OpcodeString, nullptr); | 1593 | + OperandClassParams[OperandOpcode].set(OpCodeMask + 1, OpcodeString, 0); |
| 1650 | 1594 | ||
| 1651 | // set name of operator, an initial set of <id> style operands, and the description | 1595 | // set name of operator, an initial set of <id> style operands, and the description |
| 1652 | 1596 | ||
| @@ -2380,16 +2324,6 @@ void Parameterize() | |||
| 2380 | InstructionDesc[OpAtomicSMax].operands.push(OperandMemorySemantics, "'Semantics'"); | 2324 | InstructionDesc[OpAtomicSMax].operands.push(OperandMemorySemantics, "'Semantics'"); |
| 2381 | InstructionDesc[OpAtomicSMax].operands.push(OperandId, "'Value'"); | 2325 | InstructionDesc[OpAtomicSMax].operands.push(OperandId, "'Value'"); |
| 2382 | 2326 | ||
| 2383 | - InstructionDesc[OpAtomicFMinEXT].operands.push(OperandId, "'Pointer'"); | ||
| 2384 | - InstructionDesc[OpAtomicFMinEXT].operands.push(OperandScope, "'Scope'"); | ||
| 2385 | - InstructionDesc[OpAtomicFMinEXT].operands.push(OperandMemorySemantics, "'Semantics'"); | ||
| 2386 | - InstructionDesc[OpAtomicFMinEXT].operands.push(OperandId, "'Value'"); | ||
| 2387 | - | ||
| 2388 | - InstructionDesc[OpAtomicFMaxEXT].operands.push(OperandId, "'Pointer'"); | ||
| 2389 | - InstructionDesc[OpAtomicFMaxEXT].operands.push(OperandScope, "'Scope'"); | ||
| 2390 | - InstructionDesc[OpAtomicFMaxEXT].operands.push(OperandMemorySemantics, "'Semantics'"); | ||
| 2391 | - InstructionDesc[OpAtomicFMaxEXT].operands.push(OperandId, "'Value'"); | ||
| 2392 | - | ||
| 2393 | InstructionDesc[OpAtomicAnd].operands.push(OperandId, "'Pointer'"); | 2327 | InstructionDesc[OpAtomicAnd].operands.push(OperandId, "'Pointer'"); |
| 2394 | InstructionDesc[OpAtomicAnd].operands.push(OperandScope, "'Scope'"); | 2328 | InstructionDesc[OpAtomicAnd].operands.push(OperandScope, "'Scope'"); |
| 2395 | InstructionDesc[OpAtomicAnd].operands.push(OperandMemorySemantics, "'Semantics'"); | 2329 | InstructionDesc[OpAtomicAnd].operands.push(OperandMemorySemantics, "'Semantics'"); |
| @@ -2768,7 +2702,7 @@ void Parameterize() | |||
| 2768 | 2702 | ||
| 2769 | InstructionDesc[OpGroupNonUniformQuadSwap].operands.push(OperandScope, "'Execution'"); | 2703 | InstructionDesc[OpGroupNonUniformQuadSwap].operands.push(OperandScope, "'Execution'"); |
| 2770 | InstructionDesc[OpGroupNonUniformQuadSwap].operands.push(OperandId, "X"); | 2704 | InstructionDesc[OpGroupNonUniformQuadSwap].operands.push(OperandId, "X"); |
| 2771 | - InstructionDesc[OpGroupNonUniformQuadSwap].operands.push(OperandId, "'Direction'"); | 2705 | + InstructionDesc[OpGroupNonUniformQuadSwap].operands.push(OperandLiteralNumber, "'Direction'"); |
| 2772 | 2706 | ||
| 2773 | InstructionDesc[OpSubgroupBallotKHR].operands.push(OperandId, "'Predicate'"); | 2707 | InstructionDesc[OpSubgroupBallotKHR].operands.push(OperandId, "'Predicate'"); |
| 2774 | 2708 | ||
| @@ -2831,34 +2765,7 @@ void Parameterize() | |||
| 2831 | 2765 | ||
| 2832 | InstructionDesc[OpTypeAccelerationStructureKHR].setResultAndType(true, false); | 2766 | InstructionDesc[OpTypeAccelerationStructureKHR].setResultAndType(true, false); |
| 2833 | 2767 | ||
| 2834 | - InstructionDesc[OpTraceNV].operands.push(OperandId, "'Acceleration Structure'"); | 2768 | + InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'NV Acceleration Structure'"); |
| 2835 | - InstructionDesc[OpTraceNV].operands.push(OperandId, "'Ray Flags'"); | ||
| 2836 | - InstructionDesc[OpTraceNV].operands.push(OperandId, "'Cull Mask'"); | ||
| 2837 | - InstructionDesc[OpTraceNV].operands.push(OperandId, "'SBT Record Offset'"); | ||
| 2838 | - InstructionDesc[OpTraceNV].operands.push(OperandId, "'SBT Record Stride'"); | ||
| 2839 | - InstructionDesc[OpTraceNV].operands.push(OperandId, "'Miss Index'"); | ||
| 2840 | - InstructionDesc[OpTraceNV].operands.push(OperandId, "'Ray Origin'"); | ||
| 2841 | - InstructionDesc[OpTraceNV].operands.push(OperandId, "'TMin'"); | ||
| 2842 | - InstructionDesc[OpTraceNV].operands.push(OperandId, "'Ray Direction'"); | ||
| 2843 | - InstructionDesc[OpTraceNV].operands.push(OperandId, "'TMax'"); | ||
| 2844 | - InstructionDesc[OpTraceNV].operands.push(OperandId, "'Payload'"); | ||
| 2845 | - InstructionDesc[OpTraceNV].setResultAndType(false, false); | ||
| 2846 | - | ||
| 2847 | - InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Acceleration Structure'"); | ||
| 2848 | - InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Ray Flags'"); | ||
| 2849 | - InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Cull Mask'"); | ||
| 2850 | - InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'SBT Record Offset'"); | ||
| 2851 | - InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'SBT Record Stride'"); | ||
| 2852 | - InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Miss Index'"); | ||
| 2853 | - InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Ray Origin'"); | ||
| 2854 | - InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'TMin'"); | ||
| 2855 | - InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Ray Direction'"); | ||
| 2856 | - InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'TMax'"); | ||
| 2857 | - InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Time'"); | ||
| 2858 | - InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Payload'"); | ||
| 2859 | - InstructionDesc[OpTraceRayMotionNV].setResultAndType(false, false); | ||
| 2860 | - | ||
| 2861 | - InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'Acceleration Structure'"); | ||
| 2862 | InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'Ray Flags'"); | 2769 | InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'Ray Flags'"); |
| 2863 | InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'Cull Mask'"); | 2770 | InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'Cull Mask'"); |
| 2864 | InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'SBT Record Offset'"); | 2771 | InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'SBT Record Offset'"); |
| @@ -2874,28 +2781,17 @@ void Parameterize() | |||
| 2874 | InstructionDesc[OpReportIntersectionKHR].operands.push(OperandId, "'Hit Parameter'"); | 2781 | InstructionDesc[OpReportIntersectionKHR].operands.push(OperandId, "'Hit Parameter'"); |
| 2875 | InstructionDesc[OpReportIntersectionKHR].operands.push(OperandId, "'Hit Kind'"); | 2782 | InstructionDesc[OpReportIntersectionKHR].operands.push(OperandId, "'Hit Kind'"); |
| 2876 | 2783 | ||
| 2877 | - InstructionDesc[OpIgnoreIntersectionNV].setResultAndType(false, false); | ||
| 2878 | - | ||
| 2879 | InstructionDesc[OpIgnoreIntersectionKHR].setResultAndType(false, false); | 2784 | InstructionDesc[OpIgnoreIntersectionKHR].setResultAndType(false, false); |
| 2880 | 2785 | ||
| 2881 | - InstructionDesc[OpTerminateRayNV].setResultAndType(false, false); | ||
| 2882 | - | ||
| 2883 | InstructionDesc[OpTerminateRayKHR].setResultAndType(false, false); | 2786 | InstructionDesc[OpTerminateRayKHR].setResultAndType(false, false); |
| 2884 | 2787 | ||
| 2885 | - InstructionDesc[OpExecuteCallableNV].operands.push(OperandId, "SBT Record Index"); | ||
| 2886 | - InstructionDesc[OpExecuteCallableNV].operands.push(OperandId, "CallableData ID"); | ||
| 2887 | - InstructionDesc[OpExecuteCallableNV].setResultAndType(false, false); | ||
| 2888 | - | ||
| 2889 | InstructionDesc[OpExecuteCallableKHR].operands.push(OperandId, "SBT Record Index"); | 2788 | InstructionDesc[OpExecuteCallableKHR].operands.push(OperandId, "SBT Record Index"); |
| 2890 | - InstructionDesc[OpExecuteCallableKHR].operands.push(OperandId, "CallableData"); | 2789 | + InstructionDesc[OpExecuteCallableKHR].operands.push(OperandId, "CallableData ID"); |
| 2891 | InstructionDesc[OpExecuteCallableKHR].setResultAndType(false, false); | 2790 | InstructionDesc[OpExecuteCallableKHR].setResultAndType(false, false); |
| 2892 | 2791 | ||
| 2893 | - InstructionDesc[OpConvertUToAccelerationStructureKHR].operands.push(OperandId, "Value"); | ||
| 2894 | - InstructionDesc[OpConvertUToAccelerationStructureKHR].setResultAndType(true, true); | ||
| 2895 | - | ||
| 2896 | // Ray Query | 2792 | // Ray Query |
| 2897 | InstructionDesc[OpTypeAccelerationStructureKHR].setResultAndType(true, false); | 2793 | InstructionDesc[OpTypeAccelerationStructureKHR].setResultAndType(true, false); |
| 2898 | - InstructionDesc[OpTypeRayQueryKHR].setResultAndType(true, false); | 2794 | + InstructionDesc[OpTypeRayQueryProvisionalKHR].setResultAndType(true, false); |
| 2899 | 2795 | ||
| 2900 | InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'RayQuery'"); | 2796 | InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'RayQuery'"); |
| 2901 | InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'AccelerationS'"); | 2797 | InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'AccelerationS'"); |
| @@ -2997,17 +2893,6 @@ void Parameterize() | |||
| 2997 | InstructionDesc[OpWritePackedPrimitiveIndices4x8NV].operands.push(OperandId, "'Index Offset'"); | 2893 | InstructionDesc[OpWritePackedPrimitiveIndices4x8NV].operands.push(OperandId, "'Index Offset'"); |
| 2998 | InstructionDesc[OpWritePackedPrimitiveIndices4x8NV].operands.push(OperandId, "'Packed Indices'"); | 2894 | InstructionDesc[OpWritePackedPrimitiveIndices4x8NV].operands.push(OperandId, "'Packed Indices'"); |
| 2999 | 2895 | ||
| 3000 | - InstructionDesc[OpEmitMeshTasksEXT].operands.push(OperandId, "'groupCountX'"); | ||
| 3001 | - InstructionDesc[OpEmitMeshTasksEXT].operands.push(OperandId, "'groupCountY'"); | ||
| 3002 | - InstructionDesc[OpEmitMeshTasksEXT].operands.push(OperandId, "'groupCountZ'"); | ||
| 3003 | - InstructionDesc[OpEmitMeshTasksEXT].operands.push(OperandId, "'Payload'"); | ||
| 3004 | - InstructionDesc[OpEmitMeshTasksEXT].setResultAndType(false, false); | ||
| 3005 | - | ||
| 3006 | - InstructionDesc[OpSetMeshOutputsEXT].operands.push(OperandId, "'vertexCount'"); | ||
| 3007 | - InstructionDesc[OpSetMeshOutputsEXT].operands.push(OperandId, "'primitiveCount'"); | ||
| 3008 | - InstructionDesc[OpSetMeshOutputsEXT].setResultAndType(false, false); | ||
| 3009 | - | ||
| 3010 | - | ||
| 3011 | InstructionDesc[OpTypeCooperativeMatrixNV].operands.push(OperandId, "'Component Type'"); | 2896 | InstructionDesc[OpTypeCooperativeMatrixNV].operands.push(OperandId, "'Component Type'"); |
| 3012 | InstructionDesc[OpTypeCooperativeMatrixNV].operands.push(OperandId, "'Scope'"); | 2897 | InstructionDesc[OpTypeCooperativeMatrixNV].operands.push(OperandId, "'Scope'"); |
| 3013 | InstructionDesc[OpTypeCooperativeMatrixNV].operands.push(OperandId, "'Rows'"); | 2898 | InstructionDesc[OpTypeCooperativeMatrixNV].operands.push(OperandId, "'Rows'"); |
| @@ -190,7 +190,7 @@ protected: | |||
| 190 | // Parameterize an enumerant | 190 | // Parameterize an enumerant |
| 191 | class EnumParameters { | 191 | class EnumParameters { |
| 192 | public: | 192 | public: |
| 193 | - EnumParameters() : desc(nullptr) { } | 193 | + EnumParameters() : desc(0) { } |
| 194 | const char* desc; | 194 | const char* desc; |
| 195 | }; | 195 | }; |
| 196 | 196 | ||
| @@ -198,7 +198,7 @@ public: | |||
| 198 | class EnumDefinition : public EnumParameters { | 198 | class EnumDefinition : public EnumParameters { |
| 199 | public: | 199 | public: |
| 200 | EnumDefinition() : | 200 | EnumDefinition() : |
| 201 | - ceiling(0), bitmask(false), getName(nullptr), enumParams(nullptr), operandParams(nullptr) { } | 201 | + ceiling(0), bitmask(false), getName(0), enumParams(0), operandParams(0) { } |
| 202 | void set(int ceil, const char* (*name)(int), EnumParameters* ep, bool mask = false) | 202 | void set(int ceil, const char* (*name)(int), EnumParameters* ep, bool mask = false) |
| 203 | { | 203 | { |
| 204 | ceiling = ceil; | 204 | ceiling = ceil; |
| @@ -111,23 +111,27 @@ public: | |||
| 111 | 111 | ||
| 112 | void addStringOperand(const char* str) | 112 | void addStringOperand(const char* str) |
| 113 | { | 113 | { |
| 114 | - unsigned int word = 0; | 114 | + unsigned int word; |
| 115 | - unsigned int shiftAmount = 0; | 115 | + char* wordString = (char*)&word; |
| 116 | + char* wordPtr = wordString; | ||
| 117 | + int charCount = 0; | ||
| 116 | char c; | 118 | char c; |
| 117 | - | ||
| 118 | do { | 119 | do { |
| 119 | c = *(str++); | 120 | c = *(str++); |
| 120 | - word |= ((unsigned int)c) << shiftAmount; | 121 | + *(wordPtr++) = c; |
| 121 | - shiftAmount += 8; | 122 | + ++charCount; |
| 122 | - if (shiftAmount == 32) { | 123 | + if (charCount == 4) { |
| 123 | addImmediateOperand(word); | 124 | addImmediateOperand(word); |
| 124 | - word = 0; | 125 | + wordPtr = wordString; |
| 125 | - shiftAmount = 0; | 126 | + charCount = 0; |
| 126 | } | 127 | } |
| 127 | } while (c != 0); | 128 | } while (c != 0); |
| 128 | 129 | ||
| 129 | // deal with partial last word | 130 | // deal with partial last word |
| 130 | - if (shiftAmount > 0) { | 131 | + if (charCount > 0) { |
| 132 | + // pad with 0s | ||
| 133 | + for (; charCount < 4; ++charCount) | ||
| 134 | + *(wordPtr++) = 0; | ||
| 131 | addImmediateOperand(word); | 135 | addImmediateOperand(word); |
| 132 | } | 136 | } |
| 133 | } | 137 | } |
| @@ -259,7 +263,6 @@ public: | |||
| 259 | case OpBranchConditional: | 263 | case OpBranchConditional: |
| 260 | case OpSwitch: | 264 | case OpSwitch: |
| 261 | case OpKill: | 265 | case OpKill: |
| 262 | - case OpTerminateInvocation: | ||
| 263 | case OpReturn: | 266 | case OpReturn: |
| 264 | case OpReturnValue: | 267 | case OpReturnValue: |
| 265 | case OpUnreachable: | 268 | case OpUnreachable: |
| @@ -349,7 +352,6 @@ public: | |||
| 349 | const std::vector<Block*>& getBlocks() const { return blocks; } | 352 | const std::vector<Block*>& getBlocks() const { return blocks; } |
| 350 | void addLocalVariable(std::unique_ptr<Instruction> inst); | 353 | void addLocalVariable(std::unique_ptr<Instruction> inst); |
| 351 | Id getReturnType() const { return functionInstruction.getTypeId(); } | 354 | Id getReturnType() const { return functionInstruction.getTypeId(); } |
| 352 | - Id getFuncId() const { return functionInstruction.getResultId(); } | ||
| 353 | void setReturnPrecision(Decoration precision) | 355 | void setReturnPrecision(Decoration precision) |
| 354 | { | 356 | { |
| 355 | if (precision == DecorationRelaxedPrecision) | 357 | if (precision == DecorationRelaxedPrecision) |
| @@ -358,14 +360,6 @@ public: | |||
| 358 | Decoration getReturnPrecision() const | 360 | Decoration getReturnPrecision() const |
| 359 | { return reducedPrecisionReturn ? DecorationRelaxedPrecision : NoPrecision; } | 361 | { return reducedPrecisionReturn ? DecorationRelaxedPrecision : NoPrecision; } |
| 360 | 362 | ||
| 361 | - void setDebugLineInfo(Id fileName, int line, int column) { | ||
| 362 | - lineInstruction = std::unique_ptr<Instruction>{new Instruction(OpLine)}; | ||
| 363 | - lineInstruction->addIdOperand(fileName); | ||
| 364 | - lineInstruction->addImmediateOperand(line); | ||
| 365 | - lineInstruction->addImmediateOperand(column); | ||
| 366 | - } | ||
| 367 | - bool hasDebugLineInfo() const { return lineInstruction != nullptr; } | ||
| 368 | - | ||
| 369 | void setImplicitThis() { implicitThis = true; } | 363 | void setImplicitThis() { implicitThis = true; } |
| 370 | bool hasImplicitThis() const { return implicitThis; } | 364 | bool hasImplicitThis() const { return implicitThis; } |
| 371 | 365 | ||
| @@ -382,11 +376,6 @@ public: | |||
| 382 | 376 | ||
| 383 | void dump(std::vector<unsigned int>& out) const | 377 | void dump(std::vector<unsigned int>& out) const |
| 384 | { | 378 | { |
| 385 | - // OpLine | ||
| 386 | - if (lineInstruction != nullptr) { | ||
| 387 | - lineInstruction->dump(out); | ||
| 388 | - } | ||
| 389 | - | ||
| 390 | // OpFunction | 379 | // OpFunction |
| 391 | functionInstruction.dump(out); | 380 | functionInstruction.dump(out); |
| 392 | 381 | ||
| @@ -405,7 +394,6 @@ protected: | |||
| 405 | Function& operator=(Function&); | 394 | Function& operator=(Function&); |
| 406 | 395 | ||
| 407 | Module& parent; | 396 | Module& parent; |
| 408 | - std::unique_ptr<Instruction> lineInstruction; | ||
| 409 | Instruction functionInstruction; | 397 | Instruction functionInstruction; |
| 410 | std::vector<Instruction*> parameterInstructions; | 398 | std::vector<Instruction*> parameterInstructions; |
| 411 | std::vector<Block*> blocks; | 399 | std::vector<Block*> blocks; |
| @@ -472,8 +460,7 @@ protected: | |||
| 472 | // - the OpFunction instruction | 460 | // - the OpFunction instruction |
| 473 | // - all the OpFunctionParameter instructions | 461 | // - all the OpFunctionParameter instructions |
| 474 | __inline Function::Function(Id id, Id resultType, Id functionType, Id firstParamId, Module& parent) | 462 | __inline Function::Function(Id id, Id resultType, Id functionType, Id firstParamId, Module& parent) |
| 475 | - : parent(parent), lineInstruction(nullptr), | 463 | + : parent(parent), functionInstruction(id, resultType, OpFunction), implicitThis(false), |
| 476 | - functionInstruction(id, resultType, OpFunction), implicitThis(false), | ||
| 477 | reducedPrecisionReturn(false) | 464 | reducedPrecisionReturn(false) |
| 478 | { | 465 | { |
| 479 | // OpFunction | 466 | // OpFunction |
| @@ -31,22 +31,6 @@ | |||
| 31 | # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | 31 | # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
| 32 | # POSSIBILITY OF SUCH DAMAGE. | 32 | # POSSIBILITY OF SUCH DAMAGE. |
| 33 | 33 | ||
| 34 | -find_host_package(PythonInterp 3 REQUIRED) | ||
| 35 | - | ||
| 36 | -set(GLSLANG_INTRINSIC_H "${GLSLANG_GENERATED_INCLUDEDIR}/glslang/glsl_intrinsic_header.h") | ||
| 37 | -set(GLSLANG_INTRINSIC_PY "${CMAKE_CURRENT_SOURCE_DIR}/../gen_extension_headers.py") | ||
| 38 | -set(GLSLANG_INTRINSIC_HEADER_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../glslang/ExtensionHeaders") | ||
| 39 | - | ||
| 40 | -add_custom_command( | ||
| 41 | - OUTPUT ${GLSLANG_INTRINSIC_H} | ||
| 42 | - COMMAND ${PYTHON_EXECUTABLE} "${GLSLANG_INTRINSIC_PY}" | ||
| 43 | - "-i" ${GLSLANG_INTRINSIC_HEADER_DIR} | ||
| 44 | - "-o" ${GLSLANG_INTRINSIC_H} | ||
| 45 | - DEPENDS ${GLSLANG_INTRINSIC_PY} | ||
| 46 | - COMMENT "Generating ${GLSLANG_INTRINSIC_H}") | ||
| 47 | - | ||
| 48 | -#add_custom_target(glslangValidator DEPENDS ${GLSLANG_INTRINSIC_H}) | ||
| 49 | - | ||
| 50 | add_library(glslang-default-resource-limits | 34 | add_library(glslang-default-resource-limits |
| 51 | ${CMAKE_CURRENT_SOURCE_DIR}/ResourceLimits.cpp | 35 | ${CMAKE_CURRENT_SOURCE_DIR}/ResourceLimits.cpp |
| 52 | ${CMAKE_CURRENT_SOURCE_DIR}/resource_limits_c.cpp) | 36 | ${CMAKE_CURRENT_SOURCE_DIR}/resource_limits_c.cpp) |
| @@ -57,7 +41,8 @@ target_include_directories(glslang-default-resource-limits | |||
| 57 | PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}> | 41 | PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}> |
| 58 | PUBLIC $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}>) | 42 | PUBLIC $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}>) |
| 59 | 43 | ||
| 60 | -set(SOURCES StandAlone.cpp DirStackFileIncluder.h ${GLSLANG_INTRINSIC_H}) | 44 | + |
| 45 | +set(SOURCES StandAlone.cpp DirStackFileIncluder.h) | ||
| 61 | 46 | ||
| 62 | add_executable(glslangValidator ${SOURCES}) | 47 | add_executable(glslangValidator ${SOURCES}) |
| 63 | set_property(TARGET glslangValidator PROPERTY FOLDER tools) | 48 | set_property(TARGET glslangValidator PROPERTY FOLDER tools) |
| @@ -78,19 +63,13 @@ elseif(UNIX) | |||
| 78 | if(NOT ANDROID) | 63 | if(NOT ANDROID) |
| 79 | set(LIBRARIES ${LIBRARIES} pthread) | 64 | set(LIBRARIES ${LIBRARIES} pthread) |
| 80 | endif() | 65 | endif() |
| 81 | -endif() | 66 | +endif(WIN32) |
| 82 | 67 | ||
| 83 | target_link_libraries(glslangValidator ${LIBRARIES}) | 68 | target_link_libraries(glslangValidator ${LIBRARIES}) |
| 84 | target_include_directories(glslangValidator PUBLIC | 69 | target_include_directories(glslangValidator PUBLIC |
| 85 | $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../External> | 70 | $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../External> |
| 86 | $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/External>) | 71 | $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/External>) |
| 87 | 72 | ||
| 88 | -if(ENABLE_OPT) | ||
| 89 | - target_include_directories(glslangValidator | ||
| 90 | - PRIVATE ${spirv-tools_SOURCE_DIR}/include | ||
| 91 | - ) | ||
| 92 | -endif() | ||
| 93 | - | ||
| 94 | if(ENABLE_SPVREMAPPER) | 73 | if(ENABLE_SPVREMAPPER) |
| 95 | set(REMAPPER_SOURCES spirv-remap.cpp) | 74 | set(REMAPPER_SOURCES spirv-remap.cpp) |
| 96 | add_executable(spirv-remap ${REMAPPER_SOURCES}) | 75 | add_executable(spirv-remap ${REMAPPER_SOURCES}) |
| @@ -101,51 +80,22 @@ endif() | |||
| 101 | 80 | ||
| 102 | if(WIN32) | 81 | if(WIN32) |
| 103 | source_group("Source" FILES ${SOURCES}) | 82 | source_group("Source" FILES ${SOURCES}) |
| 104 | -endif() | 83 | +endif(WIN32) |
| 105 | 84 | ||
| 106 | if(ENABLE_GLSLANG_INSTALL) | 85 | if(ENABLE_GLSLANG_INSTALL) |
| 107 | - install(TARGETS glslangValidator EXPORT glslang-targets) | 86 | + install(TARGETS glslangValidator EXPORT glslangValidatorTargets |
| 108 | - | 87 | + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) |
| 109 | - # Backward compatibility | 88 | + install(EXPORT glslangValidatorTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) |
| 110 | - file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/glslangValidatorTargets.cmake" " | ||
| 111 | - message(WARNING \"Using `glslangValidatorTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") | ||
| 112 | - | ||
| 113 | - if (NOT TARGET glslang::glslangValidator) | ||
| 114 | - include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\") | ||
| 115 | - endif() | ||
| 116 | - | ||
| 117 | - add_library(glslangValidator ALIAS glslang::glslangValidator) | ||
| 118 | - ") | ||
| 119 | - install(FILES "${CMAKE_CURRENT_BINARY_DIR}/glslangValidatorTargets.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) | ||
| 120 | 89 | ||
| 121 | if(ENABLE_SPVREMAPPER) | 90 | if(ENABLE_SPVREMAPPER) |
| 122 | - install(TARGETS spirv-remap EXPORT glslang-targets) | 91 | + install(TARGETS spirv-remap EXPORT spirv-remapTargets |
| 123 | - | 92 | + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) |
| 124 | - # Backward compatibility | 93 | + install(EXPORT spirv-remapTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) |
| 125 | - file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/spirv-remapTargets.cmake" " | ||
| 126 | - message(WARNING \"Using `spirv-remapTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") | ||
| 127 | - | ||
| 128 | - if (NOT TARGET glslang::spirv-remap) | ||
| 129 | - include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\") | ||
| 130 | - endif() | ||
| 131 | - | ||
| 132 | - add_library(spirv-remap ALIAS glslang::spirv-remap) | ||
| 133 | - ") | ||
| 134 | - install(FILES "${CMAKE_CURRENT_BINARY_DIR}/spirv-remapTargets.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) | ||
| 135 | endif() | 94 | endif() |
| 136 | 95 | ||
| 137 | - install(TARGETS glslang-default-resource-limits EXPORT glslang-targets) | 96 | + if(BUILD_SHARED_LIBS) |
| 138 | - | 97 | + install(TARGETS glslang-default-resource-limits EXPORT glslang-default-resource-limitsTargets |
| 139 | - # Backward compatibility | 98 | + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) |
| 140 | - file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/glslang-default-resource-limitsTargets.cmake" " | 99 | + install(EXPORT glslang-default-resource-limitsTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) |
| 141 | - message(WARNING \"Using `glslang-default-resource-limitsTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") | 100 | + endif() |
| 142 | - | 101 | +endif(ENABLE_GLSLANG_INSTALL) |
| 143 | - if (NOT TARGET glslang::glslang-default-resource-limits) | ||
| 144 | - include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\") | ||
| 145 | - endif() | ||
| 146 | - | ||
| 147 | - add_library(glslang-default-resource-limits ALIAS glslang::glslang-default-resource-limits) | ||
| 148 | - ") | ||
| 149 | - install(FILES "${CMAKE_CURRENT_BINARY_DIR}/glslang-default-resource-limitsTargets.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) | ||
| 150 | - | ||
| 151 | -endif() | ||
| @@ -40,7 +40,6 @@ | |||
| 40 | #include <string> | 40 | #include <string> |
| 41 | #include <fstream> | 41 | #include <fstream> |
| 42 | #include <algorithm> | 42 | #include <algorithm> |
| 43 | -#include <set> | ||
| 44 | 43 | ||
| 45 | #include "./../glslang/Public/ShaderLang.h" | 44 | #include "./../glslang/Public/ShaderLang.h" |
| 46 | 45 | ||
| @@ -85,18 +84,12 @@ public: | |||
| 85 | } | 84 | } |
| 86 | } | 85 | } |
| 87 | 86 | ||
| 88 | - virtual std::set<std::string> getIncludedFiles() | ||
| 89 | - { | ||
| 90 | - return includedFiles; | ||
| 91 | - } | ||
| 92 | - | ||
| 93 | virtual ~DirStackFileIncluder() override { } | 87 | virtual ~DirStackFileIncluder() override { } |
| 94 | 88 | ||
| 95 | protected: | 89 | protected: |
| 96 | typedef char tUserDataElement; | 90 | typedef char tUserDataElement; |
| 97 | std::vector<std::string> directoryStack; | 91 | std::vector<std::string> directoryStack; |
| 98 | int externalLocalDirectoryCount; | 92 | int externalLocalDirectoryCount; |
| 99 | - std::set<std::string> includedFiles; | ||
| 100 | 93 | ||
| 101 | // Search for a valid "local" path based on combining the stack of include | 94 | // Search for a valid "local" path based on combining the stack of include |
| 102 | // directories and the nominal name of the header. | 95 | // directories and the nominal name of the header. |
| @@ -115,7 +108,6 @@ protected: | |||
| 115 | std::ifstream file(path, std::ios_base::binary | std::ios_base::ate); | 108 | std::ifstream file(path, std::ios_base::binary | std::ios_base::ate); |
| 116 | if (file) { | 109 | if (file) { |
| 117 | directoryStack.push_back(getDirectory(path)); | 110 | directoryStack.push_back(getDirectory(path)); |
| 118 | - includedFiles.insert(path); | ||
| 119 | return newIncludeResult(path, file, (int)file.tellg()); | 111 | return newIncludeResult(path, file, (int)file.tellg()); |
| 120 | } | 112 | } |
| 121 | } | 113 | } |
| @@ -37,9 +37,9 @@ | |||
| 37 | #include <sstream> | 37 | #include <sstream> |
| 38 | #include <cctype> | 38 | #include <cctype> |
| 39 | 39 | ||
| 40 | -#include "glslang/Public/ResourceLimits.h" | 40 | +#include "ResourceLimits.h" |
| 41 | 41 | ||
| 42 | -TBuiltInResource Resources; | 42 | +namespace glslang { |
| 43 | 43 | ||
| 44 | const TBuiltInResource DefaultTBuiltInResource = { | 44 | const TBuiltInResource DefaultTBuiltInResource = { |
| 45 | /* .MaxLights = */ 32, | 45 | /* .MaxLights = */ 32, |
| @@ -134,15 +134,6 @@ const TBuiltInResource DefaultTBuiltInResource = { | |||
| 134 | /* .maxTaskWorkGroupSizeY_NV = */ 1, | 134 | /* .maxTaskWorkGroupSizeY_NV = */ 1, |
| 135 | /* .maxTaskWorkGroupSizeZ_NV = */ 1, | 135 | /* .maxTaskWorkGroupSizeZ_NV = */ 1, |
| 136 | /* .maxMeshViewCountNV = */ 4, | 136 | /* .maxMeshViewCountNV = */ 4, |
| 137 | - /* .maxMeshOutputVerticesEXT = */ 256, | ||
| 138 | - /* .maxMeshOutputPrimitivesEXT = */ 256, | ||
| 139 | - /* .maxMeshWorkGroupSizeX_EXT = */ 128, | ||
| 140 | - /* .maxMeshWorkGroupSizeY_EXT = */ 128, | ||
| 141 | - /* .maxMeshWorkGroupSizeZ_EXT = */ 128, | ||
| 142 | - /* .maxTaskWorkGroupSizeX_EXT = */ 128, | ||
| 143 | - /* .maxTaskWorkGroupSizeY_EXT = */ 128, | ||
| 144 | - /* .maxTaskWorkGroupSizeZ_EXT = */ 128, | ||
| 145 | - /* .maxMeshViewCountEXT = */ 4, | ||
| 146 | /* .maxDualSourceDrawBuffersEXT = */ 1, | 137 | /* .maxDualSourceDrawBuffersEXT = */ 1, |
| 147 | 138 | ||
| 148 | /* .limits = */ { | 139 | /* .limits = */ { |
| @@ -253,15 +244,6 @@ std::string GetDefaultTBuiltInResourceString() | |||
| 253 | << "MaxTaskWorkGroupSizeY_NV " << DefaultTBuiltInResource.maxTaskWorkGroupSizeY_NV << "\n" | 244 | << "MaxTaskWorkGroupSizeY_NV " << DefaultTBuiltInResource.maxTaskWorkGroupSizeY_NV << "\n" |
| 254 | << "MaxTaskWorkGroupSizeZ_NV " << DefaultTBuiltInResource.maxTaskWorkGroupSizeZ_NV << "\n" | 245 | << "MaxTaskWorkGroupSizeZ_NV " << DefaultTBuiltInResource.maxTaskWorkGroupSizeZ_NV << "\n" |
| 255 | << "MaxMeshViewCountNV " << DefaultTBuiltInResource.maxMeshViewCountNV << "\n" | 246 | << "MaxMeshViewCountNV " << DefaultTBuiltInResource.maxMeshViewCountNV << "\n" |
| 256 | - << "MaxMeshOutputVerticesEXT " << DefaultTBuiltInResource.maxMeshOutputVerticesEXT << "\n" | ||
| 257 | - << "MaxMeshOutputPrimitivesEXT " << DefaultTBuiltInResource.maxMeshOutputPrimitivesEXT << "\n" | ||
| 258 | - << "MaxMeshWorkGroupSizeX_EXT " << DefaultTBuiltInResource.maxMeshWorkGroupSizeX_EXT << "\n" | ||
| 259 | - << "MaxMeshWorkGroupSizeY_EXT " << DefaultTBuiltInResource.maxMeshWorkGroupSizeY_EXT << "\n" | ||
| 260 | - << "MaxMeshWorkGroupSizeZ_EXT " << DefaultTBuiltInResource.maxMeshWorkGroupSizeZ_EXT << "\n" | ||
| 261 | - << "MaxTaskWorkGroupSizeX_EXT " << DefaultTBuiltInResource.maxTaskWorkGroupSizeX_EXT << "\n" | ||
| 262 | - << "MaxTaskWorkGroupSizeY_EXT " << DefaultTBuiltInResource.maxTaskWorkGroupSizeY_EXT << "\n" | ||
| 263 | - << "MaxTaskWorkGroupSizeZ_EXT " << DefaultTBuiltInResource.maxTaskWorkGroupSizeZ_EXT << "\n" | ||
| 264 | - << "MaxMeshViewCountEXT " << DefaultTBuiltInResource.maxMeshViewCountEXT << "\n" | ||
| 265 | << "MaxDualSourceDrawBuffersEXT " << DefaultTBuiltInResource.maxDualSourceDrawBuffersEXT << "\n" | 247 | << "MaxDualSourceDrawBuffersEXT " << DefaultTBuiltInResource.maxDualSourceDrawBuffersEXT << "\n" |
| 266 | << "nonInductiveForLoops " << DefaultTBuiltInResource.limits.nonInductiveForLoops << "\n" | 248 | << "nonInductiveForLoops " << DefaultTBuiltInResource.limits.nonInductiveForLoops << "\n" |
| 267 | << "whileLoops " << DefaultTBuiltInResource.limits.whileLoops << "\n" | 249 | << "whileLoops " << DefaultTBuiltInResource.limits.whileLoops << "\n" |
| @@ -487,24 +469,6 @@ void DecodeResourceLimits(TBuiltInResource* resources, char* config) | |||
| 487 | resources->maxTaskWorkGroupSizeZ_NV = value; | 469 | resources->maxTaskWorkGroupSizeZ_NV = value; |
| 488 | else if (tokenStr == "MaxMeshViewCountNV") | 470 | else if (tokenStr == "MaxMeshViewCountNV") |
| 489 | resources->maxMeshViewCountNV = value; | 471 | resources->maxMeshViewCountNV = value; |
| 490 | - else if (tokenStr == "MaxMeshOutputVerticesEXT") | ||
| 491 | - resources->maxMeshOutputVerticesEXT = value; | ||
| 492 | - else if (tokenStr == "MaxMeshOutputPrimitivesEXT") | ||
| 493 | - resources->maxMeshOutputPrimitivesEXT = value; | ||
| 494 | - else if (tokenStr == "MaxMeshWorkGroupSizeX_EXT") | ||
| 495 | - resources->maxMeshWorkGroupSizeX_EXT = value; | ||
| 496 | - else if (tokenStr == "MaxMeshWorkGroupSizeY_EXT") | ||
| 497 | - resources->maxMeshWorkGroupSizeY_EXT = value; | ||
| 498 | - else if (tokenStr == "MaxMeshWorkGroupSizeZ_EXT") | ||
| 499 | - resources->maxMeshWorkGroupSizeZ_EXT = value; | ||
| 500 | - else if (tokenStr == "MaxTaskWorkGroupSizeX_EXT") | ||
| 501 | - resources->maxTaskWorkGroupSizeX_EXT = value; | ||
| 502 | - else if (tokenStr == "MaxTaskWorkGroupSizeY_EXT") | ||
| 503 | - resources->maxTaskWorkGroupSizeY_EXT = value; | ||
| 504 | - else if (tokenStr == "MaxTaskWorkGroupSizeZ_EXT") | ||
| 505 | - resources->maxTaskWorkGroupSizeZ_EXT = value; | ||
| 506 | - else if (tokenStr == "MaxMeshViewCountEXT") | ||
| 507 | - resources->maxMeshViewCountEXT = value; | ||
| 508 | else if (tokenStr == "nonInductiveForLoops") | 472 | else if (tokenStr == "nonInductiveForLoops") |
| 509 | resources->limits.nonInductiveForLoops = (value != 0); | 473 | resources->limits.nonInductiveForLoops = (value != 0); |
| 510 | else if (tokenStr == "whileLoops") | 474 | else if (tokenStr == "whileLoops") |
| @@ -529,12 +493,4 @@ void DecodeResourceLimits(TBuiltInResource* resources, char* config) | |||
| 529 | } | 493 | } |
| 530 | } | 494 | } |
| 531 | 495 | ||
| 532 | -TBuiltInResource* GetResources() | 496 | +} // end namespace glslang |
| 533 | -{ | ||
| 534 | - return &Resources; | ||
| 535 | -} | ||
| 536 | - | ||
| 537 | -const TBuiltInResource* GetDefaultResources() | ||
| 538 | -{ | ||
| 539 | - return &DefaultTBuiltInResource; | ||
| 540 | -} | ||
| @@ -26,20 +26,15 @@ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | |||
| 26 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 26 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| 27 | **/ | 27 | **/ |
| 28 | 28 | ||
| 29 | -#include "glslang/Public/resource_limits_c.h" | 29 | +#include "resource_limits_c.h" |
| 30 | -#include "glslang/Public/ResourceLimits.h" | 30 | +#include "ResourceLimits.h" |
| 31 | #include <stdlib.h> | 31 | #include <stdlib.h> |
| 32 | #include <string.h> | 32 | #include <string.h> |
| 33 | #include <string> | 33 | #include <string> |
| 34 | 34 | ||
| 35 | -glslang_resource_t* glslang_resource(void) | ||
| 36 | -{ | ||
| 37 | - return reinterpret_cast<glslang_resource_t*>(GetResources()); | ||
| 38 | -} | ||
| 39 | - | ||
| 40 | const glslang_resource_t* glslang_default_resource(void) | 35 | const glslang_resource_t* glslang_default_resource(void) |
| 41 | { | 36 | { |
| 42 | - return reinterpret_cast<const glslang_resource_t*>(GetDefaultResources()); | 37 | + return reinterpret_cast<const glslang_resource_t*>(&glslang::DefaultTBuiltInResource); |
| 43 | } | 38 | } |
| 44 | 39 | ||
| 45 | #if defined(__clang__) || defined(__GNUC__) | 40 | #if defined(__clang__) || defined(__GNUC__) |
| @@ -52,7 +47,7 @@ const glslang_resource_t* glslang_default_resource(void) | |||
| 52 | 47 | ||
| 53 | const char* glslang_default_resource_string() | 48 | const char* glslang_default_resource_string() |
| 54 | { | 49 | { |
| 55 | - std::string cpp_str = GetDefaultTBuiltInResourceString(); | 50 | + std::string cpp_str = glslang::GetDefaultTBuiltInResourceString(); |
| 56 | char* c_str = (char*)malloc(cpp_str.length() + 1); | 51 | char* c_str = (char*)malloc(cpp_str.length() + 1); |
| 57 | strcpy(c_str, cpp_str.c_str()); | 52 | strcpy(c_str, cpp_str.c_str()); |
| 58 | return c_str; | 53 | return c_str; |
| @@ -66,5 +61,5 @@ const char* glslang_default_resource_string() | |||
| 66 | 61 | ||
| 67 | void glslang_decode_resource_limits(glslang_resource_t* resources, char* config) | 62 | void glslang_decode_resource_limits(glslang_resource_t* resources, char* config) |
| 68 | { | 63 | { |
| 69 | - DecodeResourceLimits(reinterpret_cast<TBuiltInResource*>(resources), config); | 64 | + glslang::DecodeResourceLimits(reinterpret_cast<TBuiltInResource*>(resources), config); |
| 70 | } | 65 | } |
| @@ -105,32 +105,6 @@ namespace { | |||
| 105 | } | 105 | } |
| 106 | } | 106 | } |
| 107 | 107 | ||
| 108 | - // Read strings from a file | ||
| 109 | - void read(std::vector<std::string>& strings, const std::string& inFilename, int verbosity) | ||
| 110 | - { | ||
| 111 | - std::ifstream fp; | ||
| 112 | - | ||
| 113 | - if (verbosity > 0) | ||
| 114 | - logHandler(std::string(" reading: ") + inFilename); | ||
| 115 | - | ||
| 116 | - strings.clear(); | ||
| 117 | - fp.open(inFilename, std::fstream::in); | ||
| 118 | - | ||
| 119 | - if (fp.fail()) | ||
| 120 | - errHandler("error opening file for read: "); | ||
| 121 | - | ||
| 122 | - std::string line; | ||
| 123 | - while (std::getline(fp, line)) | ||
| 124 | - { | ||
| 125 | - // Ignore empty lines and lines starting with the comment marker '#'. | ||
| 126 | - if (line.length() == 0 || line[0] == '#') { | ||
| 127 | - continue; | ||
| 128 | - } | ||
| 129 | - | ||
| 130 | - strings.push_back(line); | ||
| 131 | - } | ||
| 132 | - } | ||
| 133 | - | ||
| 134 | void write(std::vector<SpvWord>& spv, const std::string& outFile, int verbosity) | 108 | void write(std::vector<SpvWord>& spv, const std::string& outFile, int verbosity) |
| 135 | { | 109 | { |
| 136 | if (outFile.empty()) | 110 | if (outFile.empty()) |
| @@ -157,7 +131,7 @@ namespace { | |||
| 157 | } | 131 | } |
| 158 | 132 | ||
| 159 | // Print helpful usage message to stdout, and exit | 133 | // Print helpful usage message to stdout, and exit |
| 160 | - void usage(const char* const name, const char* const msg = nullptr) | 134 | + void usage(const char* const name, const char* const msg = 0) |
| 161 | { | 135 | { |
| 162 | if (msg) | 136 | if (msg) |
| 163 | std::cout << msg << std::endl << std::endl; | 137 | std::cout << msg << std::endl << std::endl; |
| @@ -170,7 +144,6 @@ namespace { | |||
| 170 | << " [--dce (all|types|funcs)]" | 144 | << " [--dce (all|types|funcs)]" |
| 171 | << " [--opt (all|loadstore)]" | 145 | << " [--opt (all|loadstore)]" |
| 172 | << " [--strip-all | --strip all | -s]" | 146 | << " [--strip-all | --strip all | -s]" |
| 173 | - << " [--strip-white-list]" | ||
| 174 | << " [--do-everything]" | 147 | << " [--do-everything]" |
| 175 | << " --input | -i file1 [file2...] --output|-o DESTDIR" | 148 | << " --input | -i file1 [file2...] --output|-o DESTDIR" |
| 176 | << std::endl; | 149 | << std::endl; |
| @@ -183,18 +156,16 @@ namespace { | |||
| 183 | 156 | ||
| 184 | // grind through each SPIR in turn | 157 | // grind through each SPIR in turn |
| 185 | void execute(const std::vector<std::string>& inputFile, const std::string& outputDir, | 158 | void execute(const std::vector<std::string>& inputFile, const std::string& outputDir, |
| 186 | - const std::string& whiteListFile, int opts, int verbosity) | 159 | + int opts, int verbosity) |
| 187 | { | 160 | { |
| 188 | - std::vector<std::string> whiteListStrings; | ||
| 189 | - if(!whiteListFile.empty()) | ||
| 190 | - read(whiteListStrings, whiteListFile, verbosity); | ||
| 191 | - | ||
| 192 | for (auto it = inputFile.cbegin(); it != inputFile.cend(); ++it) { | 161 | for (auto it = inputFile.cbegin(); it != inputFile.cend(); ++it) { |
| 193 | const std::string &filename = *it; | 162 | const std::string &filename = *it; |
| 194 | std::vector<SpvWord> spv; | 163 | std::vector<SpvWord> spv; |
| 195 | read(spv, filename, verbosity); | 164 | read(spv, filename, verbosity); |
| 196 | - spv::spirvbin_t(verbosity).remap(spv, whiteListStrings, opts); | 165 | + spv::spirvbin_t(verbosity).remap(spv, opts); |
| 166 | + | ||
| 197 | const std::string outfile = outputDir + path_sep_char() + basename(filename); | 167 | const std::string outfile = outputDir + path_sep_char() + basename(filename); |
| 168 | + | ||
| 198 | write(spv, outfile, verbosity); | 169 | write(spv, outfile, verbosity); |
| 199 | } | 170 | } |
| 200 | 171 | ||
| @@ -205,7 +176,6 @@ namespace { | |||
| 205 | // Parse command line options | 176 | // Parse command line options |
| 206 | void parseCmdLine(int argc, char** argv, std::vector<std::string>& inputFile, | 177 | void parseCmdLine(int argc, char** argv, std::vector<std::string>& inputFile, |
| 207 | std::string& outputDir, | 178 | std::string& outputDir, |
| 208 | - std::string& stripWhiteListFile, | ||
| 209 | int& options, | 179 | int& options, |
| 210 | int& verbosity) | 180 | int& verbosity) |
| 211 | { | 181 | { |
| @@ -245,7 +215,7 @@ namespace { | |||
| 245 | verbosity = 1; | 215 | verbosity = 1; |
| 246 | 216 | ||
| 247 | if (a < argc) { | 217 | if (a < argc) { |
| 248 | - char* end_ptr = nullptr; | 218 | + char* end_ptr = 0; |
| 249 | int verb = ::strtol(argv[a], &end_ptr, 10); | 219 | int verb = ::strtol(argv[a], &end_ptr, 10); |
| 250 | // If we have not read to the end of the string or | 220 | // If we have not read to the end of the string or |
| 251 | // the string contained no elements, then we do not want to | 221 | // the string contained no elements, then we do not want to |
| @@ -275,9 +245,6 @@ namespace { | |||
| 275 | options = options | spv::spirvbin_t::STRIP; | 245 | options = options | spv::spirvbin_t::STRIP; |
| 276 | ++a; | 246 | ++a; |
| 277 | } | 247 | } |
| 278 | - } else if (arg == "--strip-white-list") { | ||
| 279 | - ++a; | ||
| 280 | - stripWhiteListFile = argv[a++]; | ||
| 281 | } else if (arg == "--dce") { | 248 | } else if (arg == "--dce") { |
| 282 | // Parse comma (or colon, etc) separated list of things to dce | 249 | // Parse comma (or colon, etc) separated list of things to dce |
| 283 | ++a; | 250 | ++a; |
| @@ -348,7 +315,6 @@ int main(int argc, char** argv) | |||
| 348 | { | 315 | { |
| 349 | std::vector<std::string> inputFile; | 316 | std::vector<std::string> inputFile; |
| 350 | std::string outputDir; | 317 | std::string outputDir; |
| 351 | - std::string whiteListFile; | ||
| 352 | int opts; | 318 | int opts; |
| 353 | int verbosity; | 319 | int verbosity; |
| 354 | 320 | ||
| @@ -363,13 +329,13 @@ int main(int argc, char** argv) | |||
| 363 | if (argc < 2) | 329 | if (argc < 2) |
| 364 | usage(argv[0]); | 330 | usage(argv[0]); |
| 365 | 331 | ||
| 366 | - parseCmdLine(argc, argv, inputFile, outputDir, whiteListFile, opts, verbosity); | 332 | + parseCmdLine(argc, argv, inputFile, outputDir, opts, verbosity); |
| 367 | 333 | ||
| 368 | if (outputDir.empty()) | 334 | if (outputDir.empty()) |
| 369 | usage(argv[0], "Output directory required"); | 335 | usage(argv[0], "Output directory required"); |
| 370 | 336 | ||
| 371 | // Main operations: read, remap, and write. | 337 | // Main operations: read, remap, and write. |
| 372 | - execute(inputFile, outputDir, whiteListFile, opts, verbosity); | 338 | + execute(inputFile, outputDir, opts, verbosity); |
| 373 | 339 | ||
| 374 | // If we get here, everything went OK! Nothing more to be done. | 340 | // If we get here, everything went OK! Nothing more to be done. |
| 375 | } | 341 | } |
| @@ -111,8 +111,8 @@ void qlodFail() | |||
| 111 | vec2 pf2; | 111 | vec2 pf2; |
| 112 | vec3 pf3; | 112 | vec3 pf3; |
| 113 | 113 | ||
| 114 | - lod = textureQueryLOD(samp1D, pf); // ERROR, extension GL_ARB_texture_query_lod needed | 114 | + lod = textureQueryLod(samp1D, pf); // ERROR, extension GL_ARB_texture_query_lod needed |
| 115 | - lod = textureQueryLOD(samp2Ds, pf2); // ERROR, extension GL_ARB_texture_query_lod needed | 115 | + lod = textureQueryLod(samp2Ds, pf2); // ERROR, extension GL_ARB_texture_query_lod needed |
| 116 | } | 116 | } |
| 117 | 117 | ||
| 118 | #extension GL_ARB_texture_query_lod : enable | 118 | #extension GL_ARB_texture_query_lod : enable |
| @@ -138,21 +138,21 @@ void qlodPass() | |||
| 138 | vec2 pf2; | 138 | vec2 pf2; |
| 139 | vec3 pf3; | 139 | vec3 pf3; |
| 140 | 140 | ||
| 141 | - lod = textureQueryLOD(samp1D, pf); | 141 | + lod = textureQueryLod(samp1D, pf); |
| 142 | - lod = textureQueryLOD(isamp2D, pf2); | 142 | + lod = textureQueryLod(isamp2D, pf2); |
| 143 | - lod = textureQueryLOD(usamp3D, pf3); | 143 | + lod = textureQueryLod(usamp3D, pf3); |
| 144 | - lod = textureQueryLOD(sampCube, pf3); | 144 | + lod = textureQueryLod(sampCube, pf3); |
| 145 | - lod = textureQueryLOD(isamp1DA, pf); | 145 | + lod = textureQueryLod(isamp1DA, pf); |
| 146 | - lod = textureQueryLOD(usamp2DA, pf2); | 146 | + lod = textureQueryLod(usamp2DA, pf2); |
| 147 | 147 | ||
| 148 | - lod = textureQueryLOD(samp1Ds, pf); | 148 | + lod = textureQueryLod(samp1Ds, pf); |
| 149 | - lod = textureQueryLOD(samp2Ds, pf2); | 149 | + lod = textureQueryLod(samp2Ds, pf2); |
| 150 | - lod = textureQueryLOD(sampCubes, pf3); | 150 | + lod = textureQueryLod(sampCubes, pf3); |
| 151 | - lod = textureQueryLOD(samp1DAs, pf); | 151 | + lod = textureQueryLod(samp1DAs, pf); |
| 152 | - lod = textureQueryLOD(samp2DAs, pf2); | 152 | + lod = textureQueryLod(samp2DAs, pf2); |
| 153 | 153 | ||
| 154 | - lod = textureQueryLOD(sampBuf, pf); // ERROR | 154 | + lod = textureQueryLod(sampBuf, pf); // ERROR |
| 155 | - lod = textureQueryLOD(sampRect, pf2); // ERROR | 155 | + lod = textureQueryLod(sampRect, pf2); // ERROR |
| 156 | } | 156 | } |
| 157 | 157 | ||
| 158 | // Test extension GL_EXT_shader_integer_mix | 158 | // Test extension GL_EXT_shader_integer_mix |
| @@ -159,4 +159,3 @@ void qlod() | |||
| 159 | } | 159 | } |
| 160 | 160 | ||
| 161 | layout(binding=0) writeonly uniform image1D badArray[]; | 161 | layout(binding=0) writeonly uniform image1D badArray[]; |
| 162 | -layout(binding = 74) uniform sampler2D u_sampler0[6]; | ||
| @@ -151,18 +151,3 @@ int layer() | |||
| 151 | { | 151 | { |
| 152 | return gl_Layer; | 152 | return gl_Layer; |
| 153 | } | 153 | } |
| 154 | - | ||
| 155 | -// The std140 layout qualifier should NOT propagate all the way down to | ||
| 156 | -// the vec3. It is unnecessary and it breaks downstream AST consumers, | ||
| 157 | -// notably LunarGlass. | ||
| 158 | - | ||
| 159 | -struct PointLight_t | ||
| 160 | -{ | ||
| 161 | - vec3 vPositionWs ; | ||
| 162 | -} ; | ||
| 163 | - | ||
| 164 | -layout( std140, row_major ) uniform PerViewLightData_t | ||
| 165 | -{ | ||
| 166 | - | ||
| 167 | - PointLight_t g_pointLightData [ 128 ] ; | ||
| 168 | -} ; | ||
| @@ -48,31 +48,6 @@ void foo() | |||
| 48 | float f = imageAtomicExchange(i2dmsa, ivec3(in3), 2, 4.5); | 48 | float f = imageAtomicExchange(i2dmsa, ivec3(in3), 2, 4.5); |
| 49 | } | 49 | } |
| 50 | 50 | ||
| 51 | -#extension GL_ARB_sparse_texture2: enable | ||
| 52 | - | ||
| 53 | -uniform sampler2D s2D; | ||
| 54 | -uniform isampler2DArray is2DArray; | ||
| 55 | -uniform sampler2DRectShadow s2DRectShadow; | ||
| 56 | - | ||
| 57 | -in flat ivec2 offsets[4]; | ||
| 58 | -in vec2 c2; | ||
| 59 | -in vec3 c3; | ||
| 60 | - | ||
| 61 | -void testOffsets() | ||
| 62 | -{ | ||
| 63 | - vec4 texel = vec4(0.0); | ||
| 64 | - ivec4 itexel = ivec4(0); | ||
| 65 | - const ivec2 constOffsets[4] = ivec2[4](ivec2(1,2), ivec2(3,4), ivec2(15,16), ivec2(-2,0)); | ||
| 66 | - sparseTextureGatherOffsetsARB(s2D, c2, constOffsets, texel); | ||
| 67 | - sparseTextureGatherOffsetsARB(is2DArray, c3, constOffsets, itexel, 2); | ||
| 68 | - sparseTextureGatherOffsetsARB(s2DRectShadow, c2, 2.0, constOffsets, texel); | ||
| 69 | - | ||
| 70 | - sparseTextureGatherOffsetsARB(s2D, c2, offsets, texel); // Error : Non constant offsets | ||
| 71 | - sparseTextureGatherOffsetsARB(is2DArray, c3, offsets, itexel, 2); // Error : Non constant offsets | ||
| 72 | - sparseTextureGatherOffsetsARB(s2DRectShadow, c2, 2.0, offsets, texel); // Error : Non constant offsets | ||
| 73 | - | ||
| 74 | -} | ||
| 75 | - | ||
| 76 | in float gl_CullDistance[6]; | 51 | in float gl_CullDistance[6]; |
| 77 | 52 | ||
| 78 | float cull(int i) | 53 | float cull(int i) |
| @@ -1,20 +0,0 @@ | |||
| 1 | -#version 150 | ||
| 2 | -#extension GL_ARB_gpu_shader5 : require | ||
| 3 | - | ||
| 4 | -uniform ivec4 u1; | ||
| 5 | -uniform uvec4 u2; | ||
| 6 | -out vec4 result; | ||
| 7 | -vec4 f(in vec4 a, in vec4 b){ return a * b;} // choice 1 | ||
| 8 | -vec4 f(in uvec4 a, in uvec4 b){ return vec4(a - b);} // choice 2 | ||
| 9 | - | ||
| 10 | -void main() | ||
| 11 | -{ | ||
| 12 | - result = f(u1, u2); // should match choice 2. which have less implicit conversion. | ||
| 13 | - switch (gl_VertexID) | ||
| 14 | - { | ||
| 15 | - case 0: gl_Position = vec4(-1.0, 1.0, 0.0, 1.0); break; | ||
| 16 | - case 1: gl_Position = vec4( 1.0, 1.0, 0.0, 1.0); break; | ||
| 17 | - case 2: gl_Position = vec4(-1.0,-1.0, 0.0, 1.0); break; | ||
| 18 | - case 3: gl_Position = vec4( 1.0,-1.0, 0.0, 1.0); break; | ||
| 19 | - } | ||
| 20 | -} | ||
| @@ -1,20 +0,0 @@ | |||
| 1 | -#version 150 core | ||
| 2 | -#extension GL_ARB_gpu_shader5 : require | ||
| 3 | -layout(points) in; | ||
| 4 | -layout(points, max_vertices = 1) out; | ||
| 5 | -layout(stream=0) out float output1; | ||
| 6 | -layout(stream=0) out float output2; | ||
| 7 | -layout(stream=1) out float output3; | ||
| 8 | -layout(stream=1) out float output4; | ||
| 9 | -uniform uint stream; | ||
| 10 | -void main() { | ||
| 11 | - | ||
| 12 | - output1 = 1.0; | ||
| 13 | - output2 = 2.0; | ||
| 14 | - EmitStreamVertex(0); | ||
| 15 | - EndStreamPrimitive(0); | ||
| 16 | - output3 = 3.0; | ||
| 17 | - output4 = 4.0; | ||
| 18 | - EmitStreamVertex(1); | ||
| 19 | - EndStreamPrimitive(1); | ||
| 20 | -} | ||
| @@ -1,18 +0,0 @@ | |||
| 1 | -#version 150 | ||
| 2 | -#extension GL_ARB_draw_instanced : require | ||
| 3 | -#define ID gl_InstanceID | ||
| 4 | - | ||
| 5 | -uniform mat4 gtf_ModelViewProjectionMatrix; | ||
| 6 | -uniform vec3 instanceOffsets[3]; | ||
| 7 | -in vec4 va[gl_MaxVertexAttribs]; | ||
| 8 | -out vec4 color; | ||
| 9 | - | ||
| 10 | -void main (void) | ||
| 11 | -{ | ||
| 12 | - vec4 vertex = vec4(va[0].xy / 3.0, va[0].zw) + vec4(instanceOffsets[ID], 1.0); | ||
| 13 | - color = vec4(0, 0, 0, 0); | ||
| 14 | - for (int i = 1; i < gl_MaxVertexAttribs; i++) | ||
| 15 | - color += va[i]; | ||
| 16 | - gl_Position = gtf_ModelViewProjectionMatrix * vertex; | ||
| 17 | - gl_PointSize = 1.0; | ||
| 18 | -} | ||
| @@ -1,27 +0,0 @@ | |||
| 1 | -#version 140 | ||
| 2 | - | ||
| 3 | -#extension GL_ARB_fragment_coord_conventions: require | ||
| 4 | -#extension GL_ARB_explicit_attrib_location : enable | ||
| 5 | - | ||
| 6 | - | ||
| 7 | -#if !defined GL_ARB_fragment_coord_conventions | ||
| 8 | -# error GL_ARB_fragment_coord_conventions is not defined | ||
| 9 | -#elif GL_ARB_fragment_coord_conventions != 1 | ||
| 10 | -# error GL_ARB_fragment_coord_conventions is not equal to 1 | ||
| 11 | -#endif | ||
| 12 | - | ||
| 13 | - | ||
| 14 | -layout (location = 0) in vec4 pos; | ||
| 15 | -out vec4 i; | ||
| 16 | - | ||
| 17 | -uniform float gtf_windowWidth; | ||
| 18 | -uniform float gtf_windowHeight; | ||
| 19 | -uniform float n; | ||
| 20 | -uniform float f; | ||
| 21 | - | ||
| 22 | -void main() | ||
| 23 | -{ | ||
| 24 | - gl_Position = pos; | ||
| 25 | - i = vec4((pos.x+1.0)*0.5*gtf_windowWidth, (pos.y+1.0)*0.5*gtf_windowHeight, (f-n)*0.5*pos.z + (f+n)*0.5, pos.w); | ||
| 26 | -} | ||
| 27 | - | ||
| @@ -1,11 +0,0 @@ | |||
| 1 | -#version 150 | ||
| 2 | -#extension GL_ARB_gpu_shader5 : require | ||
| 3 | - | ||
| 4 | -uniform int u1; | ||
| 5 | -uniform int u2; | ||
| 6 | -out vec4 result; | ||
| 7 | -void main() | ||
| 8 | -{ | ||
| 9 | - uint v = 0; | ||
| 10 | - v = uint(u2) - u1; // implicit conversions | ||
| 11 | -} | ||
| @@ -1,13 +0,0 @@ | |||
| 1 | -#version 330 | ||
| 2 | -#extension GL_EXT_shader_integer_mix: require | ||
| 3 | - | ||
| 4 | - | ||
| 5 | -#if !defined GL_EXT_shader_integer_mix | ||
| 6 | -# error GL_EXT_shader_integer_mix is not defined | ||
| 7 | -#elif GL_EXT_shader_integer_mix != 1 | ||
| 8 | -# error GL_EXT_shader_integer_mix is not equal to 1 | ||
| 9 | -#endif | ||
| 10 | - | ||
| 11 | -void main(void) { | ||
| 12 | - gl_Position = vec4(0); | ||
| 13 | -} | ||
| @@ -1,19 +0,0 @@ | |||
| 1 | -#version 320 es | ||
| 2 | -layout(local_size_x = 1) in; | ||
| 3 | - | ||
| 4 | -struct structType{ | ||
| 5 | - int y[3]; | ||
| 6 | -}; | ||
| 7 | - | ||
| 8 | -layout(std430) buffer t2 { | ||
| 9 | - structType f; | ||
| 10 | -} t; | ||
| 11 | - | ||
| 12 | -buffer coherent Buffer { int x; }; | ||
| 13 | -int z; | ||
| 14 | - | ||
| 15 | -void main() { | ||
| 16 | - atomicAdd(x, 1); | ||
| 17 | - atomicAdd(t.f.y[1], 1); | ||
| 18 | - atomicAdd(z, 1); | ||
| 19 | -} | ||
| @@ -1,28 +0,0 @@ | |||
| 1 | -#version 450 core | ||
| 2 | -#extension GL_ARB_shader_atomic_counters: enable | ||
| 3 | -#extension GL_ARB_shader_atomic_counter_ops:enable | ||
| 4 | - | ||
| 5 | -layout(binding = 0) uniform atomic_uint counter; | ||
| 6 | - | ||
| 7 | -out highp vec4 vsColor; | ||
| 8 | - | ||
| 9 | -void main(){ | ||
| 10 | - vec4 outColor = vec4(1.0); | ||
| 11 | - uint ret; | ||
| 12 | - | ||
| 13 | - ret = atomicCounterAddARB(counter, 4u); | ||
| 14 | - ret = atomicCounterSubtractARB(counter, 4u); | ||
| 15 | - ret = atomicCounterMinARB(counter, 4u); | ||
| 16 | - ret = atomicCounterMaxARB(counter, 4u); | ||
| 17 | - ret = atomicCounterAndARB(counter, 4u); | ||
| 18 | - ret = atomicCounterOrARB(counter, 4u); | ||
| 19 | - ret = atomicCounterXorARB(counter, 4u); | ||
| 20 | - ret = atomicCounterExchangeARB(counter, 4u); | ||
| 21 | - ret = atomicCounterCompSwapARB(counter, 4u, 4u); | ||
| 22 | - | ||
| 23 | - uint after = atomicCounter(counter); | ||
| 24 | - if (after == ret) | ||
| 25 | - outColor = vec4(0.0); | ||
| 26 | - | ||
| 27 | - vsColor = outColor; | ||
| 28 | -} | ||
| @@ -1,6 +1,6 @@ | |||
| 1 | hlsl.aliasOpaque.frag | 1 | hlsl.aliasOpaque.frag |
| 2 | // Module Version 10000 | 2 | // Module Version 10000 |
| 3 | -// Generated by (magic number): 8000b | 3 | +// Generated by (magic number): 8000a |
| 4 | // Id's are bound by 89 | 4 | // Id's are bound by 89 |
| 5 | 5 | ||
| 6 | Capability Shader | 6 | Capability Shader |
| @@ -1,6 +1,6 @@ | |||
| 1 | hlsl.flattenOpaque.frag | 1 | hlsl.flattenOpaque.frag |
| 2 | // Module Version 10000 | 2 | // Module Version 10000 |
| 3 | -// Generated by (magic number): 8000b | 3 | +// Generated by (magic number): 8000a |
| 4 | // Id's are bound by 190 | 4 | // Id's are bound by 190 |
| 5 | 5 | ||
| 6 | Capability Shader | 6 | Capability Shader |
| @@ -1,6 +1,6 @@ | |||
| 1 | hlsl.flattenOpaqueInit.vert | 1 | hlsl.flattenOpaqueInit.vert |
| 2 | // Module Version 10000 | 2 | // Module Version 10000 |
| 3 | -// Generated by (magic number): 8000b | 3 | +// Generated by (magic number): 8000a |
| 4 | // Id's are bound by 139 | 4 | // Id's are bound by 139 |
| 5 | 5 | ||
| 6 | Capability Shader | 6 | Capability Shader |
| @@ -1,6 +1,6 @@ | |||
| 1 | hlsl.flattenOpaqueInitMix.vert | 1 | hlsl.flattenOpaqueInitMix.vert |
| 2 | // Module Version 10000 | 2 | // Module Version 10000 |
| 3 | -// Generated by (magic number): 8000b | 3 | +// Generated by (magic number): 8000a |
| 4 | // Id's are bound by 99 | 4 | // Id's are bound by 99 |
| 5 | 5 | ||
| 6 | Capability Shader | 6 | Capability Shader |
| @@ -1,22 +1,24 @@ | |||
| 1 | hlsl.flattenSubset.frag | 1 | hlsl.flattenSubset.frag |
| 2 | // Module Version 10000 | 2 | // Module Version 10000 |
| 3 | -// Generated by (magic number): 8000b | 3 | +// Generated by (magic number): 8000a |
| 4 | // Id's are bound by 67 | 4 | // Id's are bound by 67 |
| 5 | 5 | ||
| 6 | Capability Shader | 6 | Capability Shader |
| 7 | 1: ExtInstImport "GLSL.std.450" | 7 | 1: ExtInstImport "GLSL.std.450" |
| 8 | MemoryModel Logical GLSL450 | 8 | MemoryModel Logical GLSL450 |
| 9 | - EntryPoint Fragment 4 "main" 50 | 9 | + EntryPoint Fragment 4 "main" 47 50 |
| 10 | ExecutionMode 4 OriginUpperLeft | 10 | ExecutionMode 4 OriginUpperLeft |
| 11 | Source HLSL 500 | 11 | Source HLSL 500 |
| 12 | Name 4 "main" | 12 | Name 4 "main" |
| 13 | Name 21 "samp" | 13 | Name 21 "samp" |
| 14 | Name 33 "tex" | 14 | Name 33 "tex" |
| 15 | + Name 47 "vpos" | ||
| 15 | Name 50 "@entryPointOutput" | 16 | Name 50 "@entryPointOutput" |
| 16 | Decorate 21(samp) DescriptorSet 0 | 17 | Decorate 21(samp) DescriptorSet 0 |
| 17 | Decorate 21(samp) Binding 0 | 18 | Decorate 21(samp) Binding 0 |
| 18 | Decorate 33(tex) DescriptorSet 0 | 19 | Decorate 33(tex) DescriptorSet 0 |
| 19 | Decorate 33(tex) Binding 1 | 20 | Decorate 33(tex) Binding 1 |
| 21 | + Decorate 47(vpos) Location 0 | ||
| 20 | Decorate 50(@entryPointOutput) Location 0 | 22 | Decorate 50(@entryPointOutput) Location 0 |
| 21 | 2: TypeVoid | 23 | 2: TypeVoid |
| 22 | 3: TypeFunction 2 | 24 | 3: TypeFunction 2 |
| @@ -32,6 +34,8 @@ hlsl.flattenSubset.frag | |||
| 32 | 39: TypeVector 6(float) 2 | 34 | 39: TypeVector 6(float) 2 |
| 33 | 40: 6(float) Constant 1056964608 | 35 | 40: 6(float) Constant 1056964608 |
| 34 | 41: 39(fvec2) ConstantComposite 40 40 | 36 | 41: 39(fvec2) ConstantComposite 40 40 |
| 37 | + 46: TypePointer Input 7(fvec4) | ||
| 38 | + 47(vpos): 46(ptr) Variable Input | ||
| 35 | 49: TypePointer Output 7(fvec4) | 39 | 49: TypePointer Output 7(fvec4) |
| 36 | 50(@entryPointOutput): 49(ptr) Variable Output | 40 | 50(@entryPointOutput): 49(ptr) Variable Output |
| 37 | 4(main): 2 Function None 3 | 41 | 4(main): 2 Function None 3 |
| @@ -1,16 +1,18 @@ | |||
| 1 | hlsl.flattenSubset2.frag | 1 | hlsl.flattenSubset2.frag |
| 2 | // Module Version 10000 | 2 | // Module Version 10000 |
| 3 | -// Generated by (magic number): 8000b | 3 | +// Generated by (magic number): 8000a |
| 4 | // Id's are bound by 53 | 4 | // Id's are bound by 53 |
| 5 | 5 | ||
| 6 | Capability Shader | 6 | Capability Shader |
| 7 | 1: ExtInstImport "GLSL.std.450" | 7 | 1: ExtInstImport "GLSL.std.450" |
| 8 | MemoryModel Logical GLSL450 | 8 | MemoryModel Logical GLSL450 |
| 9 | - EntryPoint Fragment 4 "main" 52 | 9 | + EntryPoint Fragment 4 "main" 49 52 |
| 10 | ExecutionMode 4 OriginUpperLeft | 10 | ExecutionMode 4 OriginUpperLeft |
| 11 | Source HLSL 500 | 11 | Source HLSL 500 |
| 12 | Name 4 "main" | 12 | Name 4 "main" |
| 13 | + Name 49 "vpos" | ||
| 13 | Name 52 "@entryPointOutput" | 14 | Name 52 "@entryPointOutput" |
| 15 | + Decorate 49(vpos) Location 0 | ||
| 14 | Decorate 52(@entryPointOutput) Location 0 | 16 | Decorate 52(@entryPointOutput) Location 0 |
| 15 | 2: TypeVoid | 17 | 2: TypeVoid |
| 16 | 3: TypeFunction 2 | 18 | 3: TypeFunction 2 |
| @@ -18,6 +20,8 @@ hlsl.flattenSubset2.frag | |||
| 18 | 7: TypeVector 6(float) 4 | 20 | 7: TypeVector 6(float) 4 |
| 19 | 43: 6(float) Constant 0 | 21 | 43: 6(float) Constant 0 |
| 20 | 44: 7(fvec4) ConstantComposite 43 43 43 43 | 22 | 44: 7(fvec4) ConstantComposite 43 43 43 43 |
| 23 | + 48: TypePointer Input 7(fvec4) | ||
| 24 | + 49(vpos): 48(ptr) Variable Input | ||
| 21 | 51: TypePointer Output 7(fvec4) | 25 | 51: TypePointer Output 7(fvec4) |
| 22 | 52(@entryPointOutput): 51(ptr) Variable Output | 26 | 52(@entryPointOutput): 51(ptr) Variable Output |
| 23 | 4(main): 2 Function None 3 | 27 | 4(main): 2 Function None 3 |
| @@ -1,110 +0,0 @@ | |||
| 1 | -hlsl.intrinsics.evalfns.frag | ||
| 2 | -// Module Version 10000 | ||
| 3 | -// Generated by (magic number): 8000b | ||
| 4 | -// Id's are bound by 274 | ||
| 5 | - | ||
| 6 | - Capability Shader | ||
| 7 | - Capability InterpolationFunction | ||
| 8 | - 1: ExtInstImport "GLSL.std.450" | ||
| 9 | - MemoryModel Logical GLSL450 | ||
| 10 | - EntryPoint Fragment 4 "main" 138 142 146 150 154 157 161 | ||
| 11 | - ExecutionMode 4 OriginUpperLeft | ||
| 12 | - Source HLSL 500 | ||
| 13 | - Name 4 "main" | ||
| 14 | - Name 138 "inF1" | ||
| 15 | - Name 142 "inF2" | ||
| 16 | - Name 146 "inF3" | ||
| 17 | - Name 150 "inF4" | ||
| 18 | - Name 154 "inI2" | ||
| 19 | - Name 157 "i.vPos" | ||
| 20 | - Name 161 "@entryPointOutput" | ||
| 21 | - Decorate 138(inF1) Location 0 | ||
| 22 | - Decorate 142(inF2) Location 1 | ||
| 23 | - Decorate 146(inF3) Location 2 | ||
| 24 | - Decorate 150(inF4) Location 3 | ||
| 25 | - Decorate 154(inI2) Flat | ||
| 26 | - Decorate 154(inI2) Location 4 | ||
| 27 | - Decorate 157(i.vPos) Location 5 | ||
| 28 | - Decorate 161(@entryPointOutput) Location 0 | ||
| 29 | - 2: TypeVoid | ||
| 30 | - 3: TypeFunction 2 | ||
| 31 | - 6: TypeFloat 32 | ||
| 32 | - 8: TypeVector 6(float) 2 | ||
| 33 | - 10: TypeVector 6(float) 3 | ||
| 34 | - 12: TypeVector 6(float) 4 | ||
| 35 | - 14: TypeInt 32 1 | ||
| 36 | - 15: TypeVector 14(int) 2 | ||
| 37 | - 30: 6(float) Constant 3204448256 | ||
| 38 | - 31: 6(float) Constant 3179282432 | ||
| 39 | - 32: 8(fvec2) ConstantComposite 30 31 | ||
| 40 | - 36: 6(float) Constant 0 | ||
| 41 | - 37: 6(float) Constant 1031798784 | ||
| 42 | - 38: 8(fvec2) ConstantComposite 36 37 | ||
| 43 | - 42: 6(float) Constant 1044381696 | ||
| 44 | - 43: 6(float) Constant 3200253952 | ||
| 45 | - 44: 8(fvec2) ConstantComposite 42 43 | ||
| 46 | - 48: 6(float) Constant 1054867456 | ||
| 47 | - 49: 8(fvec2) ConstantComposite 48 30 | ||
| 48 | - 53: 14(int) Constant 28 | ||
| 49 | - 64: TypeInt 32 0 | ||
| 50 | - 65: 64(int) Constant 3 | ||
| 51 | - 137: TypePointer Input 6(float) | ||
| 52 | - 138(inF1): 137(ptr) Variable Input | ||
| 53 | - 141: TypePointer Input 8(fvec2) | ||
| 54 | - 142(inF2): 141(ptr) Variable Input | ||
| 55 | - 145: TypePointer Input 10(fvec3) | ||
| 56 | - 146(inF3): 145(ptr) Variable Input | ||
| 57 | - 149: TypePointer Input 12(fvec4) | ||
| 58 | - 150(inF4): 149(ptr) Variable Input | ||
| 59 | - 153: TypePointer Input 15(ivec2) | ||
| 60 | - 154(inI2): 153(ptr) Variable Input | ||
| 61 | - 157(i.vPos): 141(ptr) Variable Input | ||
| 62 | - 160: TypePointer Output 12(fvec4) | ||
| 63 | -161(@entryPointOutput): 160(ptr) Variable Output | ||
| 64 | - 273: 15(ivec2) ConstantComposite 53 53 | ||
| 65 | - 4(main): 2 Function None 3 | ||
| 66 | - 5: Label | ||
| 67 | - 155: 15(ivec2) Load 154(inI2) | ||
| 68 | - 183: 6(float) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 138(inF1) 32 | ||
| 69 | - 185: 8(fvec2) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 142(inF2) 38 | ||
| 70 | - 187: 10(fvec3) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 146(inF3) 44 | ||
| 71 | - 189: 12(fvec4) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 150(inF4) 49 | ||
| 72 | - 193: 15(ivec2) ShiftLeftLogical 155 273 | ||
| 73 | - 195: 15(ivec2) ShiftRightArithmetic 193 273 | ||
| 74 | - 196: 8(fvec2) ConvertSToF 195 | ||
| 75 | - 197: 8(fvec2) VectorTimesScalar 196 37 | ||
| 76 | - 198: 6(float) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 138(inF1) 197 | ||
| 77 | - 200: 6(float) FAdd 183 198 | ||
| 78 | - 202: 6(float) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 138(inF1) 65 | ||
| 79 | - 204: 6(float) FAdd 200 202 | ||
| 80 | - 206: 8(fvec2) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 142(inF2) 65 | ||
| 81 | - 208: 8(fvec2) FAdd 185 206 | ||
| 82 | - 210: 10(fvec3) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 146(inF3) 65 | ||
| 83 | - 212: 10(fvec3) FAdd 187 210 | ||
| 84 | - 214: 12(fvec4) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 150(inF4) 65 | ||
| 85 | - 216: 12(fvec4) FAdd 189 214 | ||
| 86 | - 219: 14(int) CompositeExtract 155 0 | ||
| 87 | - 220: 64(int) Bitcast 219 | ||
| 88 | - 221: 6(float) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 138(inF1) 220 | ||
| 89 | - 223: 6(float) FAdd 204 221 | ||
| 90 | - 225: 6(float) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 138(inF1) | ||
| 91 | - 227: 6(float) FAdd 223 225 | ||
| 92 | - 229: 8(fvec2) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 142(inF2) | ||
| 93 | - 231: 8(fvec2) FAdd 208 229 | ||
| 94 | - 233: 10(fvec3) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 146(inF3) | ||
| 95 | - 235: 10(fvec3) FAdd 212 233 | ||
| 96 | - 237: 12(fvec4) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 150(inF4) | ||
| 97 | - 239: 12(fvec4) FAdd 216 237 | ||
| 98 | - 242: 8(fvec2) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 157(i.vPos) 38 | ||
| 99 | - 244: 8(fvec2) FAdd 231 242 | ||
| 100 | - 247: 8(fvec2) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 157(i.vPos) 65 | ||
| 101 | - 249: 8(fvec2) FAdd 244 247 | ||
| 102 | - 252: 8(fvec2) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 157(i.vPos) | ||
| 103 | - 254: 8(fvec2) FAdd 249 252 | ||
| 104 | - 257: 6(float) CompositeExtract 254 1 | ||
| 105 | - 259: 6(float) CompositeExtract 235 2 | ||
| 106 | - 261: 6(float) CompositeExtract 239 3 | ||
| 107 | - 262: 12(fvec4) CompositeConstruct 227 257 259 261 | ||
| 108 | - Store 161(@entryPointOutput) 262 | ||
| 109 | - Return | ||
| 110 | - FunctionEnd | ||
| @@ -1,18 +1,18 @@ | |||
| 1 | hlsl.partialFlattenLocal.vert | 1 | hlsl.partialFlattenLocal.vert |
| 2 | // Module Version 10000 | 2 | // Module Version 10000 |
| 3 | -// Generated by (magic number): 8000b | 3 | +// Generated by (magic number): 8000a |
| 4 | -// Id's are bound by 164 | 4 | +// Id's are bound by 159 |
| 5 | 5 | ||
| 6 | Capability Shader | 6 | Capability Shader |
| 7 | 1: ExtInstImport "GLSL.std.450" | 7 | 1: ExtInstImport "GLSL.std.450" |
| 8 | MemoryModel Logical GLSL450 | 8 | MemoryModel Logical GLSL450 |
| 9 | - EntryPoint Vertex 4 "main" 86 89 | 9 | + EntryPoint Vertex 4 "main" 83 86 |
| 10 | Source HLSL 500 | 10 | Source HLSL 500 |
| 11 | Name 4 "main" | 11 | Name 4 "main" |
| 12 | - Name 86 "pos" | 12 | + Name 83 "pos" |
| 13 | - Name 89 "@entryPointOutput" | 13 | + Name 86 "@entryPointOutput" |
| 14 | - Decorate 86(pos) Location 0 | 14 | + Decorate 83(pos) Location 0 |
| 15 | - Decorate 89(@entryPointOutput) BuiltIn Position | 15 | + Decorate 86(@entryPointOutput) BuiltIn Position |
| 16 | 2: TypeVoid | 16 | 2: TypeVoid |
| 17 | 3: TypeFunction 2 | 17 | 3: TypeFunction 2 |
| 18 | 6: TypeFloat 32 | 18 | 6: TypeFloat 32 |
| @@ -33,54 +33,49 @@ hlsl.partialFlattenLocal.vert | |||
| 33 | 37: 6(float) Constant 1065353216 | 33 | 37: 6(float) Constant 1065353216 |
| 34 | 38: 18(fvec2) ConstantComposite 32 37 | 34 | 38: 18(fvec2) ConstantComposite 32 37 |
| 35 | 39: TypePointer Function 18(fvec2) | 35 | 39: TypePointer Function 18(fvec2) |
| 36 | - 42: TypePointer Function 6(float) | ||
| 37 | 54: TypeBool | 36 | 54: TypeBool |
| 38 | - 64: 15(int) Constant 0 | 37 | + 82: TypePointer Input 7(fvec4) |
| 39 | - 67: 15(int) Constant 1 | 38 | + 83(pos): 82(ptr) Variable Input |
| 40 | - 85: TypePointer Input 7(fvec4) | 39 | + 85: TypePointer Output 7(fvec4) |
| 41 | - 86(pos): 85(ptr) Variable Input | 40 | +86(@entryPointOutput): 85(ptr) Variable Output |
| 42 | - 88: TypePointer Output 7(fvec4) | 41 | + 131: TypePointer Function 17 |
| 43 | -89(@entryPointOutput): 88(ptr) Variable Output | 42 | + 133: TypePointer Function 20 |
| 44 | - 135: TypePointer Function 17 | ||
| 45 | - 137: TypePointer Function 20 | ||
| 46 | 4(main): 2 Function None 3 | 43 | 4(main): 2 Function None 3 |
| 47 | 5: Label | 44 | 5: Label |
| 48 | - 138: 137(ptr) Variable Function | 45 | + 134: 133(ptr) Variable Function |
| 49 | - 136: 135(ptr) Variable Function | 46 | + 132: 131(ptr) Variable Function |
| 50 | - 87: 7(fvec4) Load 86(pos) | 47 | + 84: 7(fvec4) Load 83(pos) |
| 51 | - 141: 34(ptr) AccessChain 136 25 | 48 | + 137: 34(ptr) AccessChain 132 25 |
| 52 | - Store 141 33 | 49 | + Store 137 33 |
| 53 | - 142: 39(ptr) AccessChain 138 25 | 50 | + 138: 39(ptr) AccessChain 134 25 |
| 54 | - Store 142 38 | 51 | + Store 138 38 |
| 55 | - Branch 104 | 52 | + Branch 101 |
| 56 | - 104: Label | 53 | + 101: Label |
| 57 | - 163: 21(int) Phi 25 5 123 108 | 54 | + 158: 21(int) Phi 25 5 119 105 |
| 58 | - 107: 54(bool) SLessThan 163 31 | 55 | + 104: 54(bool) SLessThan 158 31 |
| 59 | - LoopMerge 124 108 None | 56 | + LoopMerge 120 105 None |
| 60 | - BranchConditional 107 108 124 | 57 | + BranchConditional 104 105 120 |
| 61 | - 108: Label | 58 | + 105: Label |
| 62 | - 143: 39(ptr) AccessChain 138 163 | 59 | + 139: 39(ptr) AccessChain 134 158 |
| 63 | - 112: 18(fvec2) Load 143 | 60 | + 109: 18(fvec2) Load 139 |
| 64 | - 144: 34(ptr) AccessChain 136 163 | 61 | + 140: 34(ptr) AccessChain 132 158 |
| 65 | - 114: 14(fvec3) Load 144 | 62 | + 111: 14(fvec3) Load 140 |
| 66 | - 115: 18(fvec2) VectorShuffle 114 114 0 1 | 63 | + 112: 18(fvec2) VectorShuffle 111 111 0 1 |
| 67 | - 116: 18(fvec2) FAdd 115 112 | 64 | + 113: 18(fvec2) FAdd 112 109 |
| 68 | - 145: 42(ptr) AccessChain 136 163 64 | 65 | + 141: 34(ptr) AccessChain 132 158 |
| 69 | - 118: 6(float) CompositeExtract 116 0 | 66 | + 115: 14(fvec3) Load 141 |
| 70 | - Store 145 118 | 67 | + 116: 14(fvec3) VectorShuffle 115 113 3 4 2 |
| 71 | - 146: 42(ptr) AccessChain 136 163 67 | 68 | + Store 141 116 |
| 72 | - 120: 6(float) CompositeExtract 116 1 | 69 | + 119: 21(int) IAdd 158 31 |
| 73 | - Store 146 120 | 70 | + Branch 101 |
| 74 | - 123: 21(int) IAdd 163 31 | 71 | + 120: Label |
| 75 | - Branch 104 | 72 | + 143: 17 Load 132 |
| 76 | - 124: Label | 73 | + 157: 14(fvec3) CompositeExtract 143 0 |
| 77 | - 148: 17 Load 136 | 74 | + 125: 6(float) CompositeExtract 157 0 |
| 78 | - 162: 14(fvec3) CompositeExtract 148 0 | 75 | + 126: 6(float) CompositeExtract 157 1 |
| 79 | - 129: 6(float) CompositeExtract 162 0 | 76 | + 127: 6(float) CompositeExtract 157 2 |
| 80 | - 130: 6(float) CompositeExtract 162 1 | 77 | + 128: 7(fvec4) CompositeConstruct 125 126 127 32 |
| 81 | - 131: 6(float) CompositeExtract 162 2 | 78 | + 129: 7(fvec4) FAdd 84 128 |
| 82 | - 132: 7(fvec4) CompositeConstruct 129 130 131 32 | 79 | + Store 86(@entryPointOutput) 129 |
| 83 | - 133: 7(fvec4) FAdd 87 132 | ||
| 84 | - Store 89(@entryPointOutput) 133 | ||
| 85 | Return | 80 | Return |
| 86 | FunctionEnd | 81 | FunctionEnd |
| @@ -1,6 +1,6 @@ | |||
| 1 | hlsl.partialFlattenMixed.vert | 1 | hlsl.partialFlattenMixed.vert |
| 2 | // Module Version 10000 | 2 | // Module Version 10000 |
| 3 | -// Generated by (magic number): 8000b | 3 | +// Generated by (magic number): 8000a |
| 4 | // Id's are bound by 36 | 4 | // Id's are bound by 36 |
| 5 | 5 | ||
| 6 | Capability Shader | 6 | Capability Shader |
| @@ -2,23 +2,23 @@ | |||
| 2 | ERROR: 0:4: 'redeclaration' : cannot redeclare with different qualification: gl_FragCoord | 2 | ERROR: 0:4: 'redeclaration' : cannot redeclare with different qualification: gl_FragCoord |
| 3 | ERROR: 0:5: 'redeclaration' : cannot redeclare with different qualification: gl_FragCoord | 3 | ERROR: 0:5: 'redeclaration' : cannot redeclare with different qualification: gl_FragCoord |
| 4 | ERROR: 0:6: 'layout qualifier' : can only apply origin_upper_left and pixel_center_origin to gl_FragCoord | 4 | ERROR: 0:6: 'layout qualifier' : can only apply origin_upper_left and pixel_center_origin to gl_FragCoord |
| 5 | +ERROR: 0:14: 'gl_FragCoord' : cannot redeclare after use | ||
| 6 | +ERROR: 0:50: 'gl_PerFragment' : cannot be used (maybe an instance name is needed) | ||
| 5 | ERROR: 0:50: 'gl_PerFragment' : undeclared identifier | 7 | ERROR: 0:50: 'gl_PerFragment' : undeclared identifier |
| 6 | ERROR: 0:53: 'double' : Reserved word. | 8 | ERROR: 0:53: 'double' : Reserved word. |
| 7 | ERROR: 0:53: 'double' : not supported for this version or the enabled extensions | 9 | ERROR: 0:53: 'double' : not supported for this version or the enabled extensions |
| 8 | ERROR: 0:53: 'double' : must be qualified as flat in | 10 | ERROR: 0:53: 'double' : must be qualified as flat in |
| 9 | ERROR: 0:57: '=' : cannot convert from ' global double' to ' global int' | 11 | ERROR: 0:57: '=' : cannot convert from ' global double' to ' global int' |
| 10 | -ERROR: 0:80: 'floatBitsToInt' : required extension not requested: Possible extensions include: | 12 | +ERROR: 0:80: 'floatBitsToInt' : required extension not requested: GL_ARB_shader_bit_encoding |
| 11 | -GL_ARB_shader_bit_encoding | ||
| 12 | -GL_ARB_gpu_shader5 | ||
| 13 | ERROR: 0:100: 'packSnorm2x16' : required extension not requested: GL_ARB_shading_language_packing | 13 | ERROR: 0:100: 'packSnorm2x16' : required extension not requested: GL_ARB_shading_language_packing |
| 14 | -ERROR: 0:114: 'textureQueryLOD' : required extension not requested: GL_ARB_texture_query_lod | 14 | +ERROR: 0:114: 'textureQueryLod' : required extension not requested: GL_ARB_texture_query_lod |
| 15 | -ERROR: 0:115: 'textureQueryLOD' : required extension not requested: GL_ARB_texture_query_lod | 15 | +ERROR: 0:115: 'textureQueryLod' : required extension not requested: GL_ARB_texture_query_lod |
| 16 | -ERROR: 0:154: 'textureQueryLOD' : no matching overloaded function found | 16 | +ERROR: 0:154: 'textureQueryLod' : no matching overloaded function found |
| 17 | ERROR: 0:154: 'assign' : cannot convert from ' const float' to ' temp 2-component vector of float' | 17 | ERROR: 0:154: 'assign' : cannot convert from ' const float' to ' temp 2-component vector of float' |
| 18 | -ERROR: 0:155: 'textureQueryLOD' : no matching overloaded function found | 18 | +ERROR: 0:155: 'textureQueryLod' : no matching overloaded function found |
| 19 | ERROR: 0:155: 'assign' : cannot convert from ' const float' to ' temp 2-component vector of float' | 19 | ERROR: 0:155: 'assign' : cannot convert from ' const float' to ' temp 2-component vector of float' |
| 20 | ERROR: 0:183: 'mix' : required extension not requested: GL_EXT_shader_integer_mix | 20 | ERROR: 0:183: 'mix' : required extension not requested: GL_EXT_shader_integer_mix |
| 21 | -ERROR: 17 compilation errors. No code generated. | 21 | +ERROR: 19 compilation errors. No code generated. |
| 22 | 22 | ||
| 23 | 23 | ||
| 24 | Shader version: 150 | 24 | Shader version: 150 |
| @@ -2,8 +2,8 @@ | |||
| 2 | ERROR: 0:15: 'fromVertex' : block instance name redefinition | 2 | ERROR: 0:15: 'fromVertex' : block instance name redefinition |
| 3 | ERROR: 0:19: 'fromVertex' : redefinition | 3 | ERROR: 0:19: 'fromVertex' : redefinition |
| 4 | ERROR: 0:21: 'fooC' : block instance name redefinition | 4 | ERROR: 0:21: 'fooC' : block instance name redefinition |
| 5 | -ERROR: 0:29: 'if the verison is 150 , the EmitStreamVertex and EndStreamPrimitive only support at extension GL_ARB_gpu_shader5' : required extension not requested: GL_ARB_gpu_shader5 | 5 | +ERROR: 0:29: 'EmitStreamVertex' : no matching overloaded function found |
| 6 | -ERROR: 0:30: 'if the verison is 150 , the EmitStreamVertex and EndStreamPrimitive only support at extension GL_ARB_gpu_shader5' : required extension not requested: GL_ARB_gpu_shader5 | 6 | +ERROR: 0:30: 'EndStreamPrimitive' : no matching overloaded function found |
| 7 | ERROR: 0:44: 'stream' : can only be used on an output | 7 | ERROR: 0:44: 'stream' : can only be used on an output |
| 8 | ERROR: 0:45: 'stream' : can only be used on an output | 8 | ERROR: 0:45: 'stream' : can only be used on an output |
| 9 | ERROR: 0:46: 'stream' : can only be used on an output | 9 | ERROR: 0:46: 'stream' : can only be used on an output |
| @@ -49,12 +49,10 @@ ERROR: node is still EOpNull! | |||
| 49 | 0:27 Sequence | 49 | 0:27 Sequence |
| 50 | 0:27 EmitVertex ( global void) | 50 | 0:27 EmitVertex ( global void) |
| 51 | 0:28 EndPrimitive ( global void) | 51 | 0:28 EndPrimitive ( global void) |
| 52 | -0:29 EmitStreamVertex ( global void) | 52 | +0:29 Constant: |
| 53 | -0:29 Constant: | 53 | +0:29 0.000000 |
| 54 | -0:29 1 (const int) | 54 | +0:30 Constant: |
| 55 | -0:30 EndStreamPrimitive ( global void) | 55 | +0:30 0.000000 |
| 56 | -0:30 Constant: | ||
| 57 | -0:30 0 (const int) | ||
| 58 | 0:32 move second child to first child ( temp 3-component vector of float) | 56 | 0:32 move second child to first child ( temp 3-component vector of float) |
| 59 | 0:32 color: direct index for structure (layout( stream=0) out 3-component vector of float) | 57 | 0:32 color: direct index for structure (layout( stream=0) out 3-component vector of float) |
| 60 | 0:32 'anon@0' (layout( stream=0) out block{layout( stream=0) out 3-component vector of float color}) | 58 | 0:32 'anon@0' (layout( stream=0) out block{layout( stream=0) out 3-component vector of float color}) |
| @@ -192,12 +190,10 @@ ERROR: node is still EOpNull! | |||
| 192 | 0:27 Sequence | 190 | 0:27 Sequence |
| 193 | 0:27 EmitVertex ( global void) | 191 | 0:27 EmitVertex ( global void) |
| 194 | 0:28 EndPrimitive ( global void) | 192 | 0:28 EndPrimitive ( global void) |
| 195 | -0:29 EmitStreamVertex ( global void) | 193 | +0:29 Constant: |
| 196 | -0:29 Constant: | 194 | +0:29 0.000000 |
| 197 | -0:29 1 (const int) | 195 | +0:30 Constant: |
| 198 | -0:30 EndStreamPrimitive ( global void) | 196 | +0:30 0.000000 |
| 199 | -0:30 Constant: | ||
| 200 | -0:30 0 (const int) | ||
| 201 | 0:32 move second child to first child ( temp 3-component vector of float) | 197 | 0:32 move second child to first child ( temp 3-component vector of float) |
| 202 | 0:32 color: direct index for structure (layout( stream=0) out 3-component vector of float) | 198 | 0:32 color: direct index for structure (layout( stream=0) out 3-component vector of float) |
| 203 | 0:32 'anon@0' (layout( stream=0) out block{layout( stream=0) out 3-component vector of float color}) | 199 | 0:32 'anon@0' (layout( stream=0) out block{layout( stream=0) out 3-component vector of float color}) |
| @@ -627,7 +627,7 @@ ERROR: node is still EOpNull! | |||
| 627 | ERROR: 0:7: 'vertices' : inconsistent output number of vertices for array size of gl_out | 627 | ERROR: 0:7: 'vertices' : inconsistent output number of vertices for array size of gl_out |
| 628 | ERROR: 0:11: 'vertices' : inconsistent output number of vertices for array size of a | 628 | ERROR: 0:11: 'vertices' : inconsistent output number of vertices for array size of a |
| 629 | ERROR: 0:12: 'vertices' : inconsistent output number of vertices for array size of outb | 629 | ERROR: 0:12: 'vertices' : inconsistent output number of vertices for array size of outb |
| 630 | -ERROR: 0:26: 'gl_PointSize' : no such field in structure 'gl_out' | 630 | +ERROR: 0:26: 'gl_PointSize' : no such field in structure |
| 631 | ERROR: 0:26: 'assign' : cannot convert from ' temp float' to ' temp block{ out 4-component vector of float Position gl_Position}' | 631 | ERROR: 0:26: 'assign' : cannot convert from ' temp float' to ' temp block{ out 4-component vector of float Position gl_Position}' |
| 632 | ERROR: 0:29: 'out' : type must be an array: outf | 632 | ERROR: 0:29: 'out' : type must be an array: outf |
| 633 | ERROR: 0:43: 'vertices' : must be greater than 0 | 633 | ERROR: 0:43: 'vertices' : must be greater than 0 |
| @@ -940,9 +940,8 @@ ERROR: Linking tessellation control stage: Multiple function bodies in multiple | |||
| 940 | main( | 940 | main( |
| 941 | ERROR: Linking tessellation control stage: Multiple function bodies in multiple compilation units for the same signature in the same stage: | 941 | ERROR: Linking tessellation control stage: Multiple function bodies in multiple compilation units for the same signature in the same stage: |
| 942 | main( | 942 | main( |
| 943 | -ERROR: Linking tessellation control and tessellation control stages: Array sizes must be compatible: | 943 | +ERROR: Linking tessellation control stage: Types must match: |
| 944 | - tessellation control stage: " int outa[4]" | 944 | + outa: " global 4-element array of int" versus " global 1-element array of int" |
| 945 | - tessellation control stage: " int outa[1]" | ||
| 946 | ERROR: Linking tessellation control stage: can't handle multiple entry points per stage | 945 | ERROR: Linking tessellation control stage: can't handle multiple entry points per stage |
| 947 | ERROR: Linking tessellation control stage: Multiple function bodies in multiple compilation units for the same signature in the same stage: | 946 | ERROR: Linking tessellation control stage: Multiple function bodies in multiple compilation units for the same signature in the same stage: |
| 948 | main( | 947 | main( |
| @@ -952,9 +951,8 @@ ERROR: Linking tessellation control stage: Multiple function bodies in multiple | |||
| 952 | foo( | 951 | foo( |
| 953 | ERROR: Linking tessellation control stage: Multiple function bodies in multiple compilation units for the same signature in the same stage: | 952 | ERROR: Linking tessellation control stage: Multiple function bodies in multiple compilation units for the same signature in the same stage: |
| 954 | main( | 953 | main( |
| 955 | -ERROR: Linking tessellation control and tessellation control stages: tessellation control block member has no corresponding member in tessellation control block: | 954 | +ERROR: Linking tessellation control stage: Types must match: |
| 956 | - tessellation control stage: Block: gl_PerVertex, Member: gl_PointSize | 955 | + gl_out: " out 4-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 2-element array of float ClipDistance gl_ClipDistance}" versus " out 3-element array of block{ out 4-component vector of float Position gl_Position}" |
| 957 | - tessellation control stage: Block: gl_PerVertex, Member: n/a | ||
| 958 | 956 | ||
| 959 | Linked tessellation evaluation stage: | 957 | Linked tessellation evaluation stage: |
| 960 | 958 | ||
| @@ -1,12 +1,10 @@ | |||
| 1 | 150.vert | 1 | 150.vert |
| 2 | -ERROR: 0:18: 'gl_ClipVertex' : undeclared identifier | ||
| 3 | -ERROR: 0:18: 'assign' : cannot convert from ' in 4-component vector of float' to ' temp float' | ||
| 4 | ERROR: 0:26: 'a' : cannot redeclare a user-block member array | 2 | ERROR: 0:26: 'a' : cannot redeclare a user-block member array |
| 5 | ERROR: 0:28: 'double' : Reserved word. | 3 | ERROR: 0:28: 'double' : Reserved word. |
| 6 | ERROR: 0:28: 'double' : not supported for this version or the enabled extensions | 4 | ERROR: 0:28: 'double' : not supported for this version or the enabled extensions |
| 7 | ERROR: 0:28: 'vertex-shader `double` type input' : not supported for this version or the enabled extensions | 5 | ERROR: 0:28: 'vertex-shader `double` type input' : not supported for this version or the enabled extensions |
| 8 | ERROR: 0:3001: '#error' : line of this error should be 3001 | 6 | ERROR: 0:3001: '#error' : line of this error should be 3001 |
| 9 | -ERROR: 7 compilation errors. No code generated. | 7 | +ERROR: 5 compilation errors. No code generated. |
| 10 | 8 | ||
| 11 | 9 | ||
| 12 | Shader version: 150 | 10 | Shader version: 150 |
| @@ -17,20 +15,20 @@ ERROR: node is still EOpNull! | |||
| 17 | 0:15 Sequence | 15 | 0:15 Sequence |
| 18 | 0:15 move second child to first child ( temp 4-component vector of float) | 16 | 0:15 move second child to first child ( temp 4-component vector of float) |
| 19 | 0:15 gl_Position: direct index for structure ( invariant gl_Position 4-component vector of float Position) | 17 | 0:15 gl_Position: direct index for structure ( invariant gl_Position 4-component vector of float Position) |
| 20 | -0:15 'anon@0' ( out block{ invariant gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance}) | 18 | +0:15 'anon@0' ( out block{ invariant gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex, out 4-component vector of float FrontColor gl_FrontColor, out 4-component vector of float BackColor gl_BackColor, out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor, out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor, out unsized 1-element array of 4-component vector of float TexCoord gl_TexCoord, out float FogFragCoord gl_FogFragCoord}) |
| 21 | 0:15 Constant: | 19 | 0:15 Constant: |
| 22 | 0:15 0 (const uint) | 20 | 0:15 0 (const uint) |
| 23 | 0:15 'iv4' ( in 4-component vector of float) | 21 | 0:15 'iv4' ( in 4-component vector of float) |
| 24 | 0:16 move second child to first child ( temp float) | 22 | 0:16 move second child to first child ( temp float) |
| 25 | 0:16 gl_PointSize: direct index for structure ( gl_PointSize float PointSize) | 23 | 0:16 gl_PointSize: direct index for structure ( gl_PointSize float PointSize) |
| 26 | -0:16 'anon@0' ( out block{ invariant gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance}) | 24 | +0:16 'anon@0' ( out block{ invariant gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex, out 4-component vector of float FrontColor gl_FrontColor, out 4-component vector of float BackColor gl_BackColor, out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor, out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor, out unsized 1-element array of 4-component vector of float TexCoord gl_TexCoord, out float FogFragCoord gl_FogFragCoord}) |
| 27 | 0:16 Constant: | 25 | 0:16 Constant: |
| 28 | 0:16 1 (const uint) | 26 | 0:16 1 (const uint) |
| 29 | 0:16 'ps' ( uniform float) | 27 | 0:16 'ps' ( uniform float) |
| 30 | 0:17 move second child to first child ( temp float) | 28 | 0:17 move second child to first child ( temp float) |
| 31 | 0:17 direct index ( temp float ClipDistance) | 29 | 0:17 direct index ( temp float ClipDistance) |
| 32 | 0:17 gl_ClipDistance: direct index for structure ( out 4-element array of float ClipDistance) | 30 | 0:17 gl_ClipDistance: direct index for structure ( out 4-element array of float ClipDistance) |
| 33 | -0:17 'anon@0' ( out block{ invariant gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance}) | 31 | +0:17 'anon@0' ( out block{ invariant gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex, out 4-component vector of float FrontColor gl_FrontColor, out 4-component vector of float BackColor gl_BackColor, out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor, out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor, out unsized 1-element array of 4-component vector of float TexCoord gl_TexCoord, out float FogFragCoord gl_FogFragCoord}) |
| 34 | 0:17 Constant: | 32 | 0:17 Constant: |
| 35 | 0:17 2 (const uint) | 33 | 0:17 2 (const uint) |
| 36 | 0:17 Constant: | 34 | 0:17 Constant: |
| @@ -39,7 +37,12 @@ ERROR: node is still EOpNull! | |||
| 39 | 0:17 'iv4' ( in 4-component vector of float) | 37 | 0:17 'iv4' ( in 4-component vector of float) |
| 40 | 0:17 Constant: | 38 | 0:17 Constant: |
| 41 | 0:17 0 (const int) | 39 | 0:17 0 (const int) |
| 42 | -0:18 'gl_ClipVertex' ( temp float) | 40 | +0:18 move second child to first child ( temp 4-component vector of float) |
| 41 | +0:18 gl_ClipVertex: direct index for structure ( gl_ClipVertex 4-component vector of float ClipVertex) | ||
| 42 | +0:18 'anon@0' ( out block{ invariant gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex, out 4-component vector of float FrontColor gl_FrontColor, out 4-component vector of float BackColor gl_BackColor, out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor, out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor, out unsized 1-element array of 4-component vector of float TexCoord gl_TexCoord, out float FogFragCoord gl_FogFragCoord}) | ||
| 43 | +0:18 Constant: | ||
| 44 | +0:18 3 (const uint) | ||
| 45 | +0:18 'iv4' ( in 4-component vector of float) | ||
| 43 | 0:? Linker Objects | 46 | 0:? Linker Objects |
| 44 | 0:? 'iv4' ( in 4-component vector of float) | 47 | 0:? 'iv4' ( in 4-component vector of float) |
| 45 | 0:? 'ps' ( uniform float) | 48 | 0:? 'ps' ( uniform float) |
| @@ -64,6 +67,7 @@ ERROR: node is still EOpNull! | |||
| 64 | 67 | ||
| 65 | Linked vertex stage: | 68 | Linked vertex stage: |
| 66 | 69 | ||
| 70 | +ERROR: Linking vertex stage: Can only use one of gl_ClipDistance or gl_ClipVertex (gl_ClipDistance is preferred) | ||
| 67 | 71 | ||
| 68 | Shader version: 150 | 72 | Shader version: 150 |
| 69 | Requested GL_ARB_vertex_attrib_64bit | 73 | Requested GL_ARB_vertex_attrib_64bit |
| @@ -73,20 +77,20 @@ ERROR: node is still EOpNull! | |||
| 73 | 0:15 Sequence | 77 | 0:15 Sequence |
| 74 | 0:15 move second child to first child ( temp 4-component vector of float) | 78 | 0:15 move second child to first child ( temp 4-component vector of float) |
| 75 | 0:15 gl_Position: direct index for structure ( invariant gl_Position 4-component vector of float Position) | 79 | 0:15 gl_Position: direct index for structure ( invariant gl_Position 4-component vector of float Position) |
| 76 | -0:15 'anon@0' ( out block{ invariant gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance}) | 80 | +0:15 'anon@0' ( out block{ invariant gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex, out 4-component vector of float FrontColor gl_FrontColor, out 4-component vector of float BackColor gl_BackColor, out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor, out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor, out 1-element array of 4-component vector of float TexCoord gl_TexCoord, out float FogFragCoord gl_FogFragCoord}) |
| 77 | 0:15 Constant: | 81 | 0:15 Constant: |
| 78 | 0:15 0 (const uint) | 82 | 0:15 0 (const uint) |
| 79 | 0:15 'iv4' ( in 4-component vector of float) | 83 | 0:15 'iv4' ( in 4-component vector of float) |
| 80 | 0:16 move second child to first child ( temp float) | 84 | 0:16 move second child to first child ( temp float) |
| 81 | 0:16 gl_PointSize: direct index for structure ( gl_PointSize float PointSize) | 85 | 0:16 gl_PointSize: direct index for structure ( gl_PointSize float PointSize) |
| 82 | -0:16 'anon@0' ( out block{ invariant gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance}) | 86 | +0:16 'anon@0' ( out block{ invariant gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex, out 4-component vector of float FrontColor gl_FrontColor, out 4-component vector of float BackColor gl_BackColor, out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor, out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor, out 1-element array of 4-component vector of float TexCoord gl_TexCoord, out float FogFragCoord gl_FogFragCoord}) |
| 83 | 0:16 Constant: | 87 | 0:16 Constant: |
| 84 | 0:16 1 (const uint) | 88 | 0:16 1 (const uint) |
| 85 | 0:16 'ps' ( uniform float) | 89 | 0:16 'ps' ( uniform float) |
| 86 | 0:17 move second child to first child ( temp float) | 90 | 0:17 move second child to first child ( temp float) |
| 87 | 0:17 direct index ( temp float ClipDistance) | 91 | 0:17 direct index ( temp float ClipDistance) |
| 88 | 0:17 gl_ClipDistance: direct index for structure ( out 4-element array of float ClipDistance) | 92 | 0:17 gl_ClipDistance: direct index for structure ( out 4-element array of float ClipDistance) |
| 89 | -0:17 'anon@0' ( out block{ invariant gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance}) | 93 | +0:17 'anon@0' ( out block{ invariant gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex, out 4-component vector of float FrontColor gl_FrontColor, out 4-component vector of float BackColor gl_BackColor, out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor, out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor, out 1-element array of 4-component vector of float TexCoord gl_TexCoord, out float FogFragCoord gl_FogFragCoord}) |
| 90 | 0:17 Constant: | 94 | 0:17 Constant: |
| 91 | 0:17 2 (const uint) | 95 | 0:17 2 (const uint) |
| 92 | 0:17 Constant: | 96 | 0:17 Constant: |
| @@ -95,7 +99,12 @@ ERROR: node is still EOpNull! | |||
| 95 | 0:17 'iv4' ( in 4-component vector of float) | 99 | 0:17 'iv4' ( in 4-component vector of float) |
| 96 | 0:17 Constant: | 100 | 0:17 Constant: |
| 97 | 0:17 0 (const int) | 101 | 0:17 0 (const int) |
| 98 | -0:18 'gl_ClipVertex' ( temp float) | 102 | +0:18 move second child to first child ( temp 4-component vector of float) |
| 103 | +0:18 gl_ClipVertex: direct index for structure ( gl_ClipVertex 4-component vector of float ClipVertex) | ||
| 104 | +0:18 'anon@0' ( out block{ invariant gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex, out 4-component vector of float FrontColor gl_FrontColor, out 4-component vector of float BackColor gl_BackColor, out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor, out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor, out 1-element array of 4-component vector of float TexCoord gl_TexCoord, out float FogFragCoord gl_FogFragCoord}) | ||
| 105 | +0:18 Constant: | ||
| 106 | +0:18 3 (const uint) | ||
| 107 | +0:18 'iv4' ( in 4-component vector of float) | ||
| 99 | 0:? Linker Objects | 108 | 0:? Linker Objects |
| 100 | 0:? 'iv4' ( in 4-component vector of float) | 109 | 0:? 'iv4' ( in 4-component vector of float) |
| 101 | 0:? 'ps' ( uniform float) | 110 | 0:? 'ps' ( uniform float) |
| @@ -24,18 +24,18 @@ ERROR: node is still EOpNull! | |||
| 24 | 0:42 Function Definition: main( ( global void) | 24 | 0:42 Function Definition: main( ( global void) |
| 25 | 0:42 Function Parameters: | 25 | 0:42 Function Parameters: |
| 26 | 0:44 Sequence | 26 | 0:44 Sequence |
| 27 | -0:44 texture ( global lowp 4-component vector of int, operation at mediump) | 27 | +0:44 texture ( global lowp 4-component vector of int) |
| 28 | 0:44 sampler: direct index for structure ( global lowp isampler3D) | 28 | 0:44 sampler: direct index for structure ( global lowp isampler3D) |
| 29 | 0:44 's' ( uniform structure{ global mediump 4-component vector of float u, global mediump 4-component vector of uint v, global lowp isampler3D sampler, global mediump 3-component vector of float w, global structure{ global mediump int a} t}) | 29 | 0:44 's' ( uniform structure{ global mediump 4-component vector of float u, global mediump 4-component vector of uint v, global lowp isampler3D sampler, global mediump 3-component vector of float w, global structure{ global mediump int a} t}) |
| 30 | 0:44 Constant: | 30 | 0:44 Constant: |
| 31 | 0:44 2 (const int) | 31 | 0:44 2 (const int) |
| 32 | -0:44 Construct vec3 ( temp mediump 3-component vector of float) | 32 | +0:44 Construct vec3 ( temp lowp 3-component vector of float) |
| 33 | -0:44 Convert int to float ( temp mediump float) | 33 | +0:44 Convert int to float ( temp lowp float) |
| 34 | 0:44 ni: direct index for structure (layout( column_major shared) uniform mediump int) | 34 | 0:44 ni: direct index for structure (layout( column_major shared) uniform mediump int) |
| 35 | 0:44 'inst' (layout( column_major shared) uniform block{layout( column_major shared) uniform mediump 4-component vector of uint nbv, layout( column_major shared) uniform mediump int ni}) | 35 | 0:44 'inst' (layout( column_major shared) uniform block{layout( column_major shared) uniform mediump 4-component vector of uint nbv, layout( column_major shared) uniform mediump int ni}) |
| 36 | 0:44 Constant: | 36 | 0:44 Constant: |
| 37 | 0:44 1 (const int) | 37 | 0:44 1 (const int) |
| 38 | -0:44 Convert uint to float ( temp mediump float) | 38 | +0:44 Convert uint to float ( temp lowp float) |
| 39 | 0:44 direct index ( temp mediump uint) | 39 | 0:44 direct index ( temp mediump uint) |
| 40 | 0:44 bv: direct index for structure (layout( column_major shared) uniform mediump 4-component vector of uint) | 40 | 0:44 bv: direct index for structure (layout( column_major shared) uniform mediump 4-component vector of uint) |
| 41 | 0:44 'anon@0' (layout( column_major shared) uniform block{layout( column_major shared) uniform mediump 4-component vector of uint bv, layout( column_major shared) uniform mediump 2X2 matrix of float bm2, layout( column_major shared) uniform lowp isampler2D sampler, layout( column_major shared) uniform structure{ global mediump int a} t, layout( column_major shared) uniform structure{ global mediump 4-component vector of float u, global mediump 4-component vector of uint v, global lowp isampler3D sampler, global mediump 3-component vector of float w, layout( column_major) global structure{ global mediump int a} t} fbs}) | 41 | 0:44 'anon@0' (layout( column_major shared) uniform block{layout( column_major shared) uniform mediump 4-component vector of uint bv, layout( column_major shared) uniform mediump 2X2 matrix of float bm2, layout( column_major shared) uniform lowp isampler2D sampler, layout( column_major shared) uniform structure{ global mediump int a} t, layout( column_major shared) uniform structure{ global mediump 4-component vector of float u, global mediump 4-component vector of uint v, global lowp isampler3D sampler, global mediump 3-component vector of float w, layout( column_major) global structure{ global mediump int a} t} fbs}) |
| @@ -43,7 +43,7 @@ ERROR: node is still EOpNull! | |||
| 43 | 0:44 0 (const uint) | 43 | 0:44 0 (const uint) |
| 44 | 0:44 Constant: | 44 | 0:44 Constant: |
| 45 | 0:44 1 (const int) | 45 | 0:44 1 (const int) |
| 46 | -0:44 Convert uint to float ( temp mediump float) | 46 | +0:44 Convert uint to float ( temp lowp float) |
| 47 | 0:44 direct index ( temp mediump uint) | 47 | 0:44 direct index ( temp mediump uint) |
| 48 | 0:44 nbv: direct index for structure (layout( column_major shared) uniform mediump 4-component vector of uint) | 48 | 0:44 nbv: direct index for structure (layout( column_major shared) uniform mediump 4-component vector of uint) |
| 49 | 0:44 direct index (layout( column_major shared) temp block{layout( column_major shared) uniform mediump 4-component vector of uint nbv, layout( column_major shared) uniform mediump int ni}) | 49 | 0:44 direct index (layout( column_major shared) temp block{layout( column_major shared) uniform mediump 4-component vector of uint nbv, layout( column_major shared) uniform mediump int ni}) |
| @@ -92,18 +92,18 @@ ERROR: node is still EOpNull! | |||
| 92 | 0:42 Function Definition: main( ( global void) | 92 | 0:42 Function Definition: main( ( global void) |
| 93 | 0:42 Function Parameters: | 93 | 0:42 Function Parameters: |
| 94 | 0:44 Sequence | 94 | 0:44 Sequence |
| 95 | -0:44 texture ( global lowp 4-component vector of int, operation at mediump) | 95 | +0:44 texture ( global lowp 4-component vector of int) |
| 96 | 0:44 sampler: direct index for structure ( global lowp isampler3D) | 96 | 0:44 sampler: direct index for structure ( global lowp isampler3D) |
| 97 | 0:44 's' ( uniform structure{ global mediump 4-component vector of float u, global mediump 4-component vector of uint v, global lowp isampler3D sampler, global mediump 3-component vector of float w, global structure{ global mediump int a} t}) | 97 | 0:44 's' ( uniform structure{ global mediump 4-component vector of float u, global mediump 4-component vector of uint v, global lowp isampler3D sampler, global mediump 3-component vector of float w, global structure{ global mediump int a} t}) |
| 98 | 0:44 Constant: | 98 | 0:44 Constant: |
| 99 | 0:44 2 (const int) | 99 | 0:44 2 (const int) |
| 100 | -0:44 Construct vec3 ( temp mediump 3-component vector of float) | 100 | +0:44 Construct vec3 ( temp lowp 3-component vector of float) |
| 101 | -0:44 Convert int to float ( temp mediump float) | 101 | +0:44 Convert int to float ( temp lowp float) |
| 102 | 0:44 ni: direct index for structure (layout( column_major shared) uniform mediump int) | 102 | 0:44 ni: direct index for structure (layout( column_major shared) uniform mediump int) |
| 103 | 0:44 'inst' (layout( column_major shared) uniform block{layout( column_major shared) uniform mediump 4-component vector of uint nbv, layout( column_major shared) uniform mediump int ni}) | 103 | 0:44 'inst' (layout( column_major shared) uniform block{layout( column_major shared) uniform mediump 4-component vector of uint nbv, layout( column_major shared) uniform mediump int ni}) |
| 104 | 0:44 Constant: | 104 | 0:44 Constant: |
| 105 | 0:44 1 (const int) | 105 | 0:44 1 (const int) |
| 106 | -0:44 Convert uint to float ( temp mediump float) | 106 | +0:44 Convert uint to float ( temp lowp float) |
| 107 | 0:44 direct index ( temp mediump uint) | 107 | 0:44 direct index ( temp mediump uint) |
| 108 | 0:44 bv: direct index for structure (layout( column_major shared) uniform mediump 4-component vector of uint) | 108 | 0:44 bv: direct index for structure (layout( column_major shared) uniform mediump 4-component vector of uint) |
| 109 | 0:44 'anon@0' (layout( column_major shared) uniform block{layout( column_major shared) uniform mediump 4-component vector of uint bv, layout( column_major shared) uniform mediump 2X2 matrix of float bm2, layout( column_major shared) uniform lowp isampler2D sampler, layout( column_major shared) uniform structure{ global mediump int a} t, layout( column_major shared) uniform structure{ global mediump 4-component vector of float u, global mediump 4-component vector of uint v, global lowp isampler3D sampler, global mediump 3-component vector of float w, layout( column_major) global structure{ global mediump int a} t} fbs}) | 109 | 0:44 'anon@0' (layout( column_major shared) uniform block{layout( column_major shared) uniform mediump 4-component vector of uint bv, layout( column_major shared) uniform mediump 2X2 matrix of float bm2, layout( column_major shared) uniform lowp isampler2D sampler, layout( column_major shared) uniform structure{ global mediump int a} t, layout( column_major shared) uniform structure{ global mediump 4-component vector of float u, global mediump 4-component vector of uint v, global lowp isampler3D sampler, global mediump 3-component vector of float w, layout( column_major) global structure{ global mediump int a} t} fbs}) |
| @@ -111,7 +111,7 @@ ERROR: node is still EOpNull! | |||
| 111 | 0:44 0 (const uint) | 111 | 0:44 0 (const uint) |
| 112 | 0:44 Constant: | 112 | 0:44 Constant: |
| 113 | 0:44 1 (const int) | 113 | 0:44 1 (const int) |
| 114 | -0:44 Convert uint to float ( temp mediump float) | 114 | +0:44 Convert uint to float ( temp lowp float) |
| 115 | 0:44 direct index ( temp mediump uint) | 115 | 0:44 direct index ( temp mediump uint) |
| 116 | 0:44 nbv: direct index for structure (layout( column_major shared) uniform mediump 4-component vector of uint) | 116 | 0:44 nbv: direct index for structure (layout( column_major shared) uniform mediump 4-component vector of uint) |
| 117 | 0:44 direct index (layout( column_major shared) temp block{layout( column_major shared) uniform mediump 4-component vector of uint nbv, layout( column_major shared) uniform mediump int ni}) | 117 | 0:44 direct index (layout( column_major shared) temp block{layout( column_major shared) uniform mediump 4-component vector of uint nbv, layout( column_major shared) uniform mediump int ni}) |
| @@ -1,7 +1,6 @@ | |||
| 1 | 300layout.vert | 1 | 300layout.vert |
| 2 | ERROR: 0:7: 'vertex input arrays' : not supported with this profile: es | 2 | ERROR: 0:7: 'vertex input arrays' : not supported with this profile: es |
| 3 | ERROR: 0:8: 'in' : cannot be a structure or array | 3 | ERROR: 0:8: 'in' : cannot be a structure or array |
| 4 | -ERROR: 0:8: 's' : A structure containing an array is not allowed as input in ES | ||
| 5 | ERROR: 0:8: 'vertex input arrays' : not supported with this profile: es | 4 | ERROR: 0:8: 'vertex input arrays' : not supported with this profile: es |
| 6 | ERROR: 0:8: 'location' : overlapping use of location 10 | 5 | ERROR: 0:8: 'location' : overlapping use of location 10 |
| 7 | ERROR: 0:12: 'layout' : cannot specify matrix layout on a variable declaration | 6 | ERROR: 0:12: 'layout' : cannot specify matrix layout on a variable declaration |
| @@ -19,7 +18,7 @@ ERROR: 0:50: 'shared' : not supported for this version or the enabled extensions | |||
| 19 | ERROR: 0:50: 'shared' : not supported in this stage: vertex | 18 | ERROR: 0:50: 'shared' : not supported in this stage: vertex |
| 20 | ERROR: 0:54: 'layout' : cannot specify packing on a variable declaration | 19 | ERROR: 0:54: 'layout' : cannot specify packing on a variable declaration |
| 21 | ERROR: 0:57: 'location' : overlapping use of location 40 | 20 | ERROR: 0:57: 'location' : overlapping use of location 40 |
| 22 | -ERROR: 20 compilation errors. No code generated. | 21 | +ERROR: 19 compilation errors. No code generated. |
| 23 | 22 | ||
| 24 | 23 | ||
| 25 | Shader version: 300 | 24 | Shader version: 300 |
| @@ -7,9 +7,9 @@ ERROR: 0:39: 'in' : global storage input qualifier cannot be used in a compute s | |||
| 7 | ERROR: 0:39: 'location qualifier on input' : not supported in this stage: compute | 7 | ERROR: 0:39: 'location qualifier on input' : not supported in this stage: compute |
| 8 | ERROR: 0:40: 'in' : global storage input qualifier cannot be used in a compute shader | 8 | ERROR: 0:40: 'in' : global storage input qualifier cannot be used in a compute shader |
| 9 | ERROR: 0:41: 'out' : global storage output qualifier cannot be used in a compute shader | 9 | ERROR: 0:41: 'out' : global storage output qualifier cannot be used in a compute shader |
| 10 | -ERROR: 0:44: 'shared block' : not supported for this version or the enabled extensions | 10 | +ERROR: 0:44: 'shared' : cannot apply layout qualifiers to a shared variable |
| 11 | ERROR: 0:44: 'location' : can only apply to uniform, buffer, in, or out storage qualifiers | 11 | ERROR: 0:44: 'location' : can only apply to uniform, buffer, in, or out storage qualifiers |
| 12 | -ERROR: 0:45: 'shared' : initializer can only be a null initializer ('{}') | 12 | +ERROR: 0:45: 'shared' : cannot initialize this type of qualifier |
| 13 | ERROR: 0:47: 'local_size' : can only apply to 'in' | 13 | ERROR: 0:47: 'local_size' : can only apply to 'in' |
| 14 | ERROR: 0:47: 'local_size' : can only apply to 'in' | 14 | ERROR: 0:47: 'local_size' : can only apply to 'in' |
| 15 | ERROR: 0:47: 'local_size' : can only apply to 'in' | 15 | ERROR: 0:47: 'local_size' : can only apply to 'in' |
| @@ -115,11 +115,6 @@ ERROR: node is still EOpNull! | |||
| 115 | 0:36 Constant: | 115 | 0:36 Constant: |
| 116 | 0:36 1 (const uint) | 116 | 0:36 1 (const uint) |
| 117 | 0:36 'gl_LocalInvocationIndex' ( in highp uint LocalInvocationIndex) | 117 | 0:36 'gl_LocalInvocationIndex' ( in highp uint LocalInvocationIndex) |
| 118 | -0:45 Sequence | ||
| 119 | -0:45 move second child to first child ( temp highp float) | ||
| 120 | -0:45 'fs' ( shared highp float) | ||
| 121 | -0:45 Constant: | ||
| 122 | -0:45 4.200000 | ||
| 123 | 0:59 Function Definition: foo( ( global void) | 118 | 0:59 Function Definition: foo( ( global void) |
| 124 | 0:59 Function Parameters: | 119 | 0:59 Function Parameters: |
| 125 | 0:61 Sequence | 120 | 0:61 Sequence |
| @@ -180,7 +175,7 @@ ERROR: node is still EOpNull! | |||
| 180 | 0:91 'i' ( temp highp int) | 175 | 0:91 'i' ( temp highp int) |
| 181 | 0:92 imageStore ( global highp void) | 176 | 0:92 imageStore ( global highp void) |
| 182 | 0:92 'ii2da' ( writeonly uniform highp iimage2DArray) | 177 | 0:92 'ii2da' ( writeonly uniform highp iimage2DArray) |
| 183 | -0:92 Construct ivec3 ( temp highp 3-component vector of int) | 178 | +0:92 Construct ivec3 ( temp 3-component vector of int) |
| 184 | 0:92 'i' ( temp highp int) | 179 | 0:92 'i' ( temp highp int) |
| 185 | 0:92 'i' ( temp highp int) | 180 | 0:92 'i' ( temp highp int) |
| 186 | 0:92 'i' ( temp highp int) | 181 | 0:92 'i' ( temp highp int) |
| @@ -189,9 +184,9 @@ ERROR: node is still EOpNull! | |||
| 189 | 0:92 0 (const int) | 184 | 0:92 0 (const int) |
| 190 | 0:92 0 (const int) | 185 | 0:92 0 (const int) |
| 191 | 0:92 0 (const int) | 186 | 0:92 0 (const int) |
| 192 | -0:93 imageLoad ( global mediump 4-component vector of float, operation at highp) | 187 | +0:93 imageLoad ( global mediump 4-component vector of float) |
| 193 | 0:93 'img2Drgba' (layout( rgba32f) readonly uniform mediump image2D) | 188 | 0:93 'img2Drgba' (layout( rgba32f) readonly uniform mediump image2D) |
| 194 | -0:93 Construct ivec2 ( temp highp 2-component vector of int) | 189 | +0:93 Construct ivec2 ( temp mediump 2-component vector of int) |
| 195 | 0:93 'i' ( temp highp int) | 190 | 0:93 'i' ( temp highp int) |
| 196 | 0:93 'i' ( temp highp int) | 191 | 0:93 'i' ( temp highp int) |
| 197 | 0:94 imageLoad ( global highp 4-component vector of int) | 192 | 0:94 imageLoad ( global highp 4-component vector of int) |
| @@ -558,11 +553,6 @@ ERROR: node is still EOpNull! | |||
| 558 | 0:36 Constant: | 553 | 0:36 Constant: |
| 559 | 0:36 1 (const uint) | 554 | 0:36 1 (const uint) |
| 560 | 0:36 'gl_LocalInvocationIndex' ( in highp uint LocalInvocationIndex) | 555 | 0:36 'gl_LocalInvocationIndex' ( in highp uint LocalInvocationIndex) |
| 561 | -0:45 Sequence | ||
| 562 | -0:45 move second child to first child ( temp highp float) | ||
| 563 | -0:45 'fs' ( shared highp float) | ||
| 564 | -0:45 Constant: | ||
| 565 | -0:45 4.200000 | ||
| 566 | 0:? Linker Objects | 556 | 0:? Linker Objects |
| 567 | 0:? 'gl_WorkGroupSize' ( const highp 3-component vector of uint WorkGroupSize) | 557 | 0:? 'gl_WorkGroupSize' ( const highp 3-component vector of uint WorkGroupSize) |
| 568 | 0:? 2 (const uint) | 558 | 0:? 2 (const uint) |
| @@ -40,14 +40,10 @@ ERROR: 0:112: 'out' : cannot be a matrix | |||
| 40 | ERROR: 0:114: 'in' : cannot be bool | 40 | ERROR: 0:114: 'in' : cannot be bool |
| 41 | ERROR: 0:115: 'sampler2D' : sampler/image types can only be used in uniform variables or function parameters: ino | 41 | ERROR: 0:115: 'sampler2D' : sampler/image types can only be used in uniform variables or function parameters: ino |
| 42 | ERROR: 0:117: 'fragment-shader array-of-array input' : not supported with this profile: es | 42 | ERROR: 0:117: 'fragment-shader array-of-array input' : not supported with this profile: es |
| 43 | -ERROR: 0:120: 'S' : A structure containing an array is not allowed as input in ES | ||
| 44 | ERROR: 0:120: 'fragment-shader array-of-struct input' : not supported with this profile: es | 43 | ERROR: 0:120: 'fragment-shader array-of-struct input' : not supported with this profile: es |
| 45 | -ERROR: 0:121: 'S' : A structure containing an array is not allowed as input in ES | ||
| 46 | ERROR: 0:121: 'fragment-shader array-of-struct input' : not supported with this profile: es | 44 | ERROR: 0:121: 'fragment-shader array-of-struct input' : not supported with this profile: es |
| 47 | ERROR: 0:123: 'fragment-shader struct input containing an array' : not supported with this profile: es | 45 | ERROR: 0:123: 'fragment-shader struct input containing an array' : not supported with this profile: es |
| 48 | -ERROR: 0:123: 'SA' : A structure containing an array is not allowed as input in ES | ||
| 49 | ERROR: 0:125: 'fragment-shader struct input containing structure' : not supported with this profile: es | 46 | ERROR: 0:125: 'fragment-shader struct input containing structure' : not supported with this profile: es |
| 50 | -ERROR: 0:125: 'SS' : A structure containing an struct is not allowed as input in ES | ||
| 51 | ERROR: 0:133: 'output block' : not supported in this stage: fragment | 47 | ERROR: 0:133: 'output block' : not supported in this stage: fragment |
| 52 | ERROR: 0:138: '' : cannot nest a structure definition inside a structure or block | 48 | ERROR: 0:138: '' : cannot nest a structure definition inside a structure or block |
| 53 | ERROR: 0:146: 'location' : overlapping use of location 13 | 49 | ERROR: 0:146: 'location' : overlapping use of location 13 |
| @@ -143,7 +139,7 @@ ERROR: 0:461: 'func' : function already has a body | |||
| 143 | ERROR: 0:463: 'return' : void function cannot return a value | 139 | ERROR: 0:463: 'return' : void function cannot return a value |
| 144 | ERROR: 0:472: '=' : cannot convert from ' temp mediump uint' to ' temp mediump int' | 140 | ERROR: 0:472: '=' : cannot convert from ' temp mediump uint' to ' temp mediump int' |
| 145 | ERROR: 0:485: '=' : cannot convert from ' global mediump int' to ' temp mediump uint' | 141 | ERROR: 0:485: '=' : cannot convert from ' global mediump int' to ' temp mediump uint' |
| 146 | -ERROR: 136 compilation errors. No code generated. | 142 | +ERROR: 132 compilation errors. No code generated. |
| 147 | 143 | ||
| 148 | 144 | ||
| 149 | Shader version: 310 | 145 | Shader version: 310 |
| @@ -270,7 +266,7 @@ ERROR: node is still EOpNull! | |||
| 270 | 0:42 Constant: | 266 | 0:42 Constant: |
| 271 | 0:42 0.000000 | 267 | 0:42 0.000000 |
| 272 | 0:42 0.000000 | 268 | 0:42 0.000000 |
| 273 | -0:42 Convert float to int ( temp mediump 2-component vector of int) | 269 | +0:42 Convert float to int ( temp highp 2-component vector of int) |
| 274 | 0:42 'c2D' ( smooth in mediump 2-component vector of float) | 270 | 0:42 'c2D' ( smooth in mediump 2-component vector of float) |
| 275 | 0:43 textureProjGradOffset ( global highp 4-component vector of uint) | 271 | 0:43 textureProjGradOffset ( global highp 4-component vector of uint) |
| 276 | 0:43 'usamp2d' ( uniform highp usampler2D) | 272 | 0:43 'usamp2d' ( uniform highp usampler2D) |
| @@ -471,7 +467,7 @@ ERROR: node is still EOpNull! | |||
| 471 | 0:211 Constant: | 467 | 0:211 Constant: |
| 472 | 0:211 0.100000 | 468 | 0:211 0.100000 |
| 473 | 0:211 0.100000 | 469 | 0:211 0.100000 |
| 474 | -0:211 Convert float to int ( temp mediump 2-component vector of int) | 470 | +0:211 Convert float to int ( temp highp 2-component vector of int) |
| 475 | 0:211 'inf' ( smooth in mediump 2-component vector of float) | 471 | 0:211 'inf' ( smooth in mediump 2-component vector of float) |
| 476 | 0:212 textureGatherOffsets ( global highp 4-component vector of float) | 472 | 0:212 textureGatherOffsets ( global highp 4-component vector of float) |
| 477 | 0:212 direct index ( temp highp sampler2D) | 473 | 0:212 direct index ( temp highp sampler2D) |
| @@ -507,7 +503,7 @@ ERROR: node is still EOpNull! | |||
| 507 | 0:221 Constant: | 503 | 0:221 Constant: |
| 508 | 0:221 0.100000 | 504 | 0:221 0.100000 |
| 509 | 0:221 0.100000 | 505 | 0:221 0.100000 |
| 510 | -0:221 Convert float to int ( temp mediump 2-component vector of int) | 506 | +0:221 Convert float to int ( temp highp 2-component vector of int) |
| 511 | 0:221 'inf' ( smooth in mediump 2-component vector of float) | 507 | 0:221 'inf' ( smooth in mediump 2-component vector of float) |
| 512 | 0:222 textureGatherOffsets ( global highp 4-component vector of float) | 508 | 0:222 textureGatherOffsets ( global highp 4-component vector of float) |
| 513 | 0:222 direct index ( temp highp sampler2D) | 509 | 0:222 direct index ( temp highp sampler2D) |
| @@ -6,7 +6,7 @@ ERROR: 0:43: 'EmitStreamVertex' : no matching overloaded function found | |||
| 6 | ERROR: 0:44: 'EndStreamPrimitive' : no matching overloaded function found | 6 | ERROR: 0:44: 'EndStreamPrimitive' : no matching overloaded function found |
| 7 | ERROR: 0:47: 'gl_ClipDistance' : undeclared identifier | 7 | ERROR: 0:47: 'gl_ClipDistance' : undeclared identifier |
| 8 | ERROR: 0:47: 'gl_ClipDistance' : left of '[' is not of type array, matrix, or vector | 8 | ERROR: 0:47: 'gl_ClipDistance' : left of '[' is not of type array, matrix, or vector |
| 9 | -ERROR: 0:48: 'gl_ClipDistance' : no such field in structure 'gl_in' | 9 | +ERROR: 0:48: 'gl_ClipDistance' : no such field in structure |
| 10 | ERROR: 0:48: 'expression' : left of '[' is not of type array, matrix, or vector | 10 | ERROR: 0:48: 'expression' : left of '[' is not of type array, matrix, or vector |
| 11 | ERROR: 0:47: 'assign' : l-value required (can't modify a const) | 11 | ERROR: 0:47: 'assign' : l-value required (can't modify a const) |
| 12 | ERROR: 0:55: 'selecting output stream' : not supported with this profile: es | 12 | ERROR: 0:55: 'selecting output stream' : not supported with this profile: es |
| @@ -6,12 +6,12 @@ ERROR: 0:12: 'patch' : can only use on output in tessellation-control shader | |||
| 6 | ERROR: 0:26: 'gl_PointSize' : required extension not requested: Possible extensions include: | 6 | ERROR: 0:26: 'gl_PointSize' : required extension not requested: Possible extensions include: |
| 7 | GL_EXT_tessellation_point_size | 7 | GL_EXT_tessellation_point_size |
| 8 | GL_OES_tessellation_point_size | 8 | GL_OES_tessellation_point_size |
| 9 | -ERROR: 0:27: 'gl_ClipDistance' : no such field in structure 'gl_in' | 9 | +ERROR: 0:27: 'gl_ClipDistance' : no such field in structure |
| 10 | ERROR: 0:27: 'expression' : left of '[' is not of type array, matrix, or vector | 10 | ERROR: 0:27: 'expression' : left of '[' is not of type array, matrix, or vector |
| 11 | ERROR: 0:34: 'gl_PointSize' : required extension not requested: Possible extensions include: | 11 | ERROR: 0:34: 'gl_PointSize' : required extension not requested: Possible extensions include: |
| 12 | GL_EXT_tessellation_point_size | 12 | GL_EXT_tessellation_point_size |
| 13 | GL_OES_tessellation_point_size | 13 | GL_OES_tessellation_point_size |
| 14 | -ERROR: 0:35: 'gl_ClipDistance' : no such field in structure 'gl_out' | 14 | +ERROR: 0:35: 'gl_ClipDistance' : no such field in structure |
| 15 | ERROR: 0:35: 'expression' : left of '[' is not of type array, matrix, or vector | 15 | ERROR: 0:35: 'expression' : left of '[' is not of type array, matrix, or vector |
| 16 | ERROR: 0:35: 'assign' : l-value required (can't modify a const) | 16 | ERROR: 0:35: 'assign' : l-value required (can't modify a const) |
| 17 | ERROR: 0:41: '' : tessellation control barrier() cannot be placed within flow control | 17 | ERROR: 0:41: '' : tessellation control barrier() cannot be placed within flow control |
| @@ -10,7 +10,7 @@ ERROR: 0:26: 'barrier' : no matching overloaded function found | |||
| 10 | ERROR: 0:37: 'gl_PointSize' : required extension not requested: Possible extensions include: | 10 | ERROR: 0:37: 'gl_PointSize' : required extension not requested: Possible extensions include: |
| 11 | GL_EXT_tessellation_point_size | 11 | GL_EXT_tessellation_point_size |
| 12 | GL_OES_tessellation_point_size | 12 | GL_OES_tessellation_point_size |
| 13 | -ERROR: 0:38: 'gl_ClipDistance' : no such field in structure 'gl_in' | 13 | +ERROR: 0:38: 'gl_ClipDistance' : no such field in structure |
| 14 | ERROR: 0:38: 'expression' : left of '[' is not of type array, matrix, or vector | 14 | ERROR: 0:38: 'expression' : left of '[' is not of type array, matrix, or vector |
| 15 | ERROR: 0:47: 'gl_PointSize' : required extension not requested: Possible extensions include: | 15 | ERROR: 0:47: 'gl_PointSize' : required extension not requested: Possible extensions include: |
| 16 | GL_EXT_tessellation_point_size | 16 | GL_EXT_tessellation_point_size |
| @@ -43,7 +43,7 @@ ERROR: 0:100: 'location' : overlapping use of location 24 | |||
| 43 | ERROR: 0:103: 'location' : overlapping use of location 24 | 43 | ERROR: 0:103: 'location' : overlapping use of location 24 |
| 44 | ERROR: 0:105: 'gl_TessLevelOuter' : identifiers starting with "gl_" are reserved | 44 | ERROR: 0:105: 'gl_TessLevelOuter' : identifiers starting with "gl_" are reserved |
| 45 | ERROR: 0:113: 'sample' : Reserved word. | 45 | ERROR: 0:113: 'sample' : Reserved word. |
| 46 | -ERROR: 0:119: 'gl_PointSize' : no such field in structure 'gl_in' | 46 | +ERROR: 0:119: 'gl_PointSize' : no such field in structure |
| 47 | ERROR: 0:119: '=' : cannot convert from ' temp block{ in highp 4-component vector of float Position gl_Position}' to ' temp highp float' | 47 | ERROR: 0:119: '=' : cannot convert from ' temp block{ in highp 4-component vector of float Position gl_Position}' to ' temp highp float' |
| 48 | ERROR: 0:127: 'gl_BoundingBoxOES' : undeclared identifier | 48 | ERROR: 0:127: 'gl_BoundingBoxOES' : undeclared identifier |
| 49 | ERROR: 43 compilation errors. No code generated. | 49 | ERROR: 43 compilation errors. No code generated. |
| @@ -21,7 +21,6 @@ ERROR: 0:105: 'location' : overlapping use of location 12 | |||
| 21 | ERROR: 0:107: 'input block' : not supported in this stage: vertex | 21 | ERROR: 0:107: 'input block' : not supported in this stage: vertex |
| 22 | ERROR: 0:109: 'gl_PerVertex' : block redeclaration has extra members | 22 | ERROR: 0:109: 'gl_PerVertex' : block redeclaration has extra members |
| 23 | ERROR: 0:119: 'gl_PointSize' : member of nameless block was not redeclared | 23 | ERROR: 0:119: 'gl_PointSize' : member of nameless block was not redeclared |
| 24 | -ERROR: 0:119: 'assign' : l-value required "gl_PerVertex" (can't modify void) | ||
| 25 | ERROR: 0:119: 'assign' : cannot convert from ' const float' to ' gl_PointSize highp void PointSize' | 24 | ERROR: 0:119: 'assign' : cannot convert from ' const float' to ' gl_PointSize highp void PointSize' |
| 26 | ERROR: 0:122: 'gl_PerVertex' : can only redeclare a built-in block once, and before any use | 25 | ERROR: 0:122: 'gl_PerVertex' : can only redeclare a built-in block once, and before any use |
| 27 | ERROR: 0:127: 'flat/smooth/noperspective' : cannot use interpolation qualifiers on an interface block | 26 | ERROR: 0:127: 'flat/smooth/noperspective' : cannot use interpolation qualifiers on an interface block |
| @@ -97,7 +96,7 @@ ERROR: 0:389: 'sample' : Reserved word. | |||
| 97 | ERROR: 0:400: 'interpolateAtCentroid' : no matching overloaded function found | 96 | ERROR: 0:400: 'interpolateAtCentroid' : no matching overloaded function found |
| 98 | ERROR: 0:401: 'interpolateAtSample' : no matching overloaded function found | 97 | ERROR: 0:401: 'interpolateAtSample' : no matching overloaded function found |
| 99 | ERROR: 0:402: 'interpolateAtOffset' : no matching overloaded function found | 98 | ERROR: 0:402: 'interpolateAtOffset' : no matching overloaded function found |
| 100 | -ERROR: 94 compilation errors. No code generated. | 99 | +ERROR: 93 compilation errors. No code generated. |
| 101 | 100 | ||
| 102 | 101 | ||
| 103 | Shader version: 310 | 102 | Shader version: 310 |
| @@ -330,7 +329,7 @@ ERROR: node is still EOpNull! | |||
| 330 | 0:164 'sIndex' ( uniform highp int) | 329 | 0:164 'sIndex' ( uniform highp int) |
| 331 | 0:164 Constant: | 330 | 0:164 Constant: |
| 332 | 0:164 2 (const int) | 331 | 0:164 2 (const int) |
| 333 | -0:165 textureGatherOffset ( global lowp 4-component vector of float, operation at highp) | 332 | +0:165 textureGatherOffset ( global lowp 4-component vector of float) |
| 334 | 0:165 direct index ( temp lowp sampler2D) | 333 | 0:165 direct index ( temp lowp sampler2D) |
| 335 | 0:165 'sArray' ( uniform 4-element array of lowp sampler2D) | 334 | 0:165 'sArray' ( uniform 4-element array of lowp sampler2D) |
| 336 | 0:165 Constant: | 335 | 0:165 Constant: |
| @@ -338,7 +337,7 @@ ERROR: node is still EOpNull! | |||
| 338 | 0:165 Constant: | 337 | 0:165 Constant: |
| 339 | 0:165 0.100000 | 338 | 0:165 0.100000 |
| 340 | 0:165 0.100000 | 339 | 0:165 0.100000 |
| 341 | -0:165 Convert float to int ( temp highp 2-component vector of int) | 340 | +0:165 Convert float to int ( temp lowp 2-component vector of int) |
| 342 | 0:165 'inf' ( in highp 2-component vector of float) | 341 | 0:165 'inf' ( in highp 2-component vector of float) |
| 343 | 0:166 textureGatherOffsets ( global lowp 4-component vector of float, operation at highp) | 342 | 0:166 textureGatherOffsets ( global lowp 4-component vector of float, operation at highp) |
| 344 | 0:166 direct index ( temp lowp sampler2D) | 343 | 0:166 direct index ( temp lowp sampler2D) |
| @@ -394,7 +393,7 @@ ERROR: node is still EOpNull! | |||
| 394 | 0:179 'sIndex' ( uniform highp int) | 393 | 0:179 'sIndex' ( uniform highp int) |
| 395 | 0:179 Constant: | 394 | 0:179 Constant: |
| 396 | 0:179 2 (const int) | 395 | 0:179 2 (const int) |
| 397 | -0:180 textureGatherOffset ( global lowp 4-component vector of float, operation at highp) | 396 | +0:180 textureGatherOffset ( global lowp 4-component vector of float) |
| 398 | 0:180 direct index ( temp lowp sampler2D) | 397 | 0:180 direct index ( temp lowp sampler2D) |
| 399 | 0:180 'sArray' ( uniform 4-element array of lowp sampler2D) | 398 | 0:180 'sArray' ( uniform 4-element array of lowp sampler2D) |
| 400 | 0:180 Constant: | 399 | 0:180 Constant: |
| @@ -402,7 +401,7 @@ ERROR: node is still EOpNull! | |||
| 402 | 0:180 Constant: | 401 | 0:180 Constant: |
| 403 | 0:180 0.100000 | 402 | 0:180 0.100000 |
| 404 | 0:180 0.100000 | 403 | 0:180 0.100000 |
| 405 | -0:180 Convert float to int ( temp highp 2-component vector of int) | 404 | +0:180 Convert float to int ( temp lowp 2-component vector of int) |
| 406 | 0:180 'inf' ( in highp 2-component vector of float) | 405 | 0:180 'inf' ( in highp 2-component vector of float) |
| 407 | 0:181 textureGatherOffsets ( global lowp 4-component vector of float, operation at highp) | 406 | 0:181 textureGatherOffsets ( global lowp 4-component vector of float, operation at highp) |
| 408 | 0:181 direct index ( temp lowp sampler2D) | 407 | 0:181 direct index ( temp lowp sampler2D) |
| @@ -121,7 +121,7 @@ ERROR: node is still EOpNull! | |||
| 121 | 0:76 'inf' ( smooth in mediump 2-component vector of float) | 121 | 0:76 'inf' ( smooth in mediump 2-component vector of float) |
| 122 | 0:76 'ing' ( smooth in mediump 2-component vector of float) | 122 | 0:76 'ing' ( smooth in mediump 2-component vector of float) |
| 123 | 0:76 'h' ( noContraction temp mediump 2-component vector of float) | 123 | 0:76 'h' ( noContraction temp mediump 2-component vector of float) |
| 124 | -0:77 textureGatherOffset ( global lowp 4-component vector of float, operation at mediump) | 124 | +0:77 textureGatherOffset ( global lowp 4-component vector of float) |
| 125 | 0:77 direct index ( temp lowp sampler2D) | 125 | 0:77 direct index ( temp lowp sampler2D) |
| 126 | 0:77 'sArray' ( uniform 4-element array of lowp sampler2D) | 126 | 0:77 'sArray' ( uniform 4-element array of lowp sampler2D) |
| 127 | 0:77 Constant: | 127 | 0:77 Constant: |
| @@ -129,7 +129,7 @@ ERROR: node is still EOpNull! | |||
| 129 | 0:77 Constant: | 129 | 0:77 Constant: |
| 130 | 0:77 0.100000 | 130 | 0:77 0.100000 |
| 131 | 0:77 0.100000 | 131 | 0:77 0.100000 |
| 132 | -0:77 Convert float to int ( temp mediump 2-component vector of int) | 132 | +0:77 Convert float to int ( temp lowp 2-component vector of int) |
| 133 | 0:77 'inf' ( smooth in mediump 2-component vector of float) | 133 | 0:77 'inf' ( smooth in mediump 2-component vector of float) |
| 134 | 0:78 textureGatherOffsets ( global lowp 4-component vector of float, operation at mediump) | 134 | 0:78 textureGatherOffsets ( global lowp 4-component vector of float, operation at mediump) |
| 135 | 0:78 direct index ( temp lowp sampler2D) | 135 | 0:78 direct index ( temp lowp sampler2D) |
| @@ -6,7 +6,7 @@ ERROR: 0:33: 'EmitStreamVertex' : no matching overloaded function found | |||
| 6 | ERROR: 0:34: 'EndStreamPrimitive' : no matching overloaded function found | 6 | ERROR: 0:34: 'EndStreamPrimitive' : no matching overloaded function found |
| 7 | ERROR: 0:37: 'gl_ClipDistance' : undeclared identifier | 7 | ERROR: 0:37: 'gl_ClipDistance' : undeclared identifier |
| 8 | ERROR: 0:37: 'gl_ClipDistance' : left of '[' is not of type array, matrix, or vector | 8 | ERROR: 0:37: 'gl_ClipDistance' : left of '[' is not of type array, matrix, or vector |
| 9 | -ERROR: 0:38: 'gl_ClipDistance' : no such field in structure 'gl_in' | 9 | +ERROR: 0:38: 'gl_ClipDistance' : no such field in structure |
| 10 | ERROR: 0:38: 'expression' : left of '[' is not of type array, matrix, or vector | 10 | ERROR: 0:38: 'expression' : left of '[' is not of type array, matrix, or vector |
| 11 | ERROR: 0:37: 'assign' : l-value required (can't modify a const) | 11 | ERROR: 0:37: 'assign' : l-value required (can't modify a const) |
| 12 | ERROR: 0:45: 'selecting output stream' : not supported with this profile: es | 12 | ERROR: 0:45: 'selecting output stream' : not supported with this profile: es |
| @@ -6,12 +6,12 @@ ERROR: 0:10: 'patch' : can only use on output in tessellation-control shader | |||
| 6 | ERROR: 0:24: 'gl_PointSize' : required extension not requested: Possible extensions include: | 6 | ERROR: 0:24: 'gl_PointSize' : required extension not requested: Possible extensions include: |
| 7 | GL_EXT_tessellation_point_size | 7 | GL_EXT_tessellation_point_size |
| 8 | GL_OES_tessellation_point_size | 8 | GL_OES_tessellation_point_size |
| 9 | -ERROR: 0:25: 'gl_ClipDistance' : no such field in structure 'gl_in' | 9 | +ERROR: 0:25: 'gl_ClipDistance' : no such field in structure |
| 10 | ERROR: 0:25: 'expression' : left of '[' is not of type array, matrix, or vector | 10 | ERROR: 0:25: 'expression' : left of '[' is not of type array, matrix, or vector |
| 11 | ERROR: 0:32: 'gl_PointSize' : required extension not requested: Possible extensions include: | 11 | ERROR: 0:32: 'gl_PointSize' : required extension not requested: Possible extensions include: |
| 12 | GL_EXT_tessellation_point_size | 12 | GL_EXT_tessellation_point_size |
| 13 | GL_OES_tessellation_point_size | 13 | GL_OES_tessellation_point_size |
| 14 | -ERROR: 0:33: 'gl_ClipDistance' : no such field in structure 'gl_out' | 14 | +ERROR: 0:33: 'gl_ClipDistance' : no such field in structure |
| 15 | ERROR: 0:33: 'expression' : left of '[' is not of type array, matrix, or vector | 15 | ERROR: 0:33: 'expression' : left of '[' is not of type array, matrix, or vector |
| 16 | ERROR: 0:33: 'assign' : l-value required (can't modify a const) | 16 | ERROR: 0:33: 'assign' : l-value required (can't modify a const) |
| 17 | ERROR: 0:39: '' : tessellation control barrier() cannot be placed within flow control | 17 | ERROR: 0:39: '' : tessellation control barrier() cannot be placed within flow control |
| @@ -10,7 +10,7 @@ ERROR: 0:22: 'barrier' : no matching overloaded function found | |||
| 10 | ERROR: 0:33: 'gl_PointSize' : required extension not requested: Possible extensions include: | 10 | ERROR: 0:33: 'gl_PointSize' : required extension not requested: Possible extensions include: |
| 11 | GL_EXT_tessellation_point_size | 11 | GL_EXT_tessellation_point_size |
| 12 | GL_OES_tessellation_point_size | 12 | GL_OES_tessellation_point_size |
| 13 | -ERROR: 0:34: 'gl_ClipDistance' : no such field in structure 'gl_in' | 13 | +ERROR: 0:34: 'gl_ClipDistance' : no such field in structure |
| 14 | ERROR: 0:34: 'expression' : left of '[' is not of type array, matrix, or vector | 14 | ERROR: 0:34: 'expression' : left of '[' is not of type array, matrix, or vector |
| 15 | ERROR: 0:43: 'gl_PointSize' : required extension not requested: Possible extensions include: | 15 | ERROR: 0:43: 'gl_PointSize' : required extension not requested: Possible extensions include: |
| 16 | GL_EXT_tessellation_point_size | 16 | GL_EXT_tessellation_point_size |
| @@ -4,7 +4,6 @@ ERROR: 0:14: 'location' : overlapping use of location 12 | |||
| 4 | ERROR: 0:16: 'input block' : not supported in this stage: vertex | 4 | ERROR: 0:16: 'input block' : not supported in this stage: vertex |
| 5 | ERROR: 0:18: 'gl_PerVertex' : block redeclaration has extra members | 5 | ERROR: 0:18: 'gl_PerVertex' : block redeclaration has extra members |
| 6 | ERROR: 0:28: 'gl_PointSize' : member of nameless block was not redeclared | 6 | ERROR: 0:28: 'gl_PointSize' : member of nameless block was not redeclared |
| 7 | -ERROR: 0:28: 'assign' : l-value required "gl_PerVertex" (can't modify void) | ||
| 8 | ERROR: 0:28: 'assign' : cannot convert from ' const float' to ' gl_PointSize highp void PointSize' | 7 | ERROR: 0:28: 'assign' : cannot convert from ' const float' to ' gl_PointSize highp void PointSize' |
| 9 | ERROR: 0:31: 'gl_PerVertex' : can only redeclare a built-in block once, and before any use | 8 | ERROR: 0:31: 'gl_PerVertex' : can only redeclare a built-in block once, and before any use |
| 10 | ERROR: 0:36: 'flat/smooth/noperspective' : cannot use interpolation qualifiers on an interface block | 9 | ERROR: 0:36: 'flat/smooth/noperspective' : cannot use interpolation qualifiers on an interface block |
| @@ -34,7 +33,7 @@ ERROR: 0:211: '=' : cannot convert from ' const float' to ' temp highp 3-compon | |||
| 34 | ERROR: 0:252: 'interpolateAtCentroid' : no matching overloaded function found | 33 | ERROR: 0:252: 'interpolateAtCentroid' : no matching overloaded function found |
| 35 | ERROR: 0:253: 'interpolateAtSample' : no matching overloaded function found | 34 | ERROR: 0:253: 'interpolateAtSample' : no matching overloaded function found |
| 36 | ERROR: 0:254: 'interpolateAtOffset' : no matching overloaded function found | 35 | ERROR: 0:254: 'interpolateAtOffset' : no matching overloaded function found |
| 37 | -ERROR: 35 compilation errors. No code generated. | 36 | +ERROR: 34 compilation errors. No code generated. |
| 38 | 37 | ||
| 39 | 38 | ||
| 40 | Shader version: 320 | 39 | Shader version: 320 |
| @@ -99,7 +98,7 @@ ERROR: node is still EOpNull! | |||
| 99 | 0:70 'sIndex' ( uniform highp int) | 98 | 0:70 'sIndex' ( uniform highp int) |
| 100 | 0:70 Constant: | 99 | 0:70 Constant: |
| 101 | 0:70 2 (const int) | 100 | 0:70 2 (const int) |
| 102 | -0:71 textureGatherOffset ( global lowp 4-component vector of float, operation at highp) | 101 | +0:71 textureGatherOffset ( global lowp 4-component vector of float) |
| 103 | 0:71 direct index ( temp lowp sampler2D) | 102 | 0:71 direct index ( temp lowp sampler2D) |
| 104 | 0:71 'sArray' ( uniform 4-element array of lowp sampler2D) | 103 | 0:71 'sArray' ( uniform 4-element array of lowp sampler2D) |
| 105 | 0:71 Constant: | 104 | 0:71 Constant: |
| @@ -107,7 +106,7 @@ ERROR: node is still EOpNull! | |||
| 107 | 0:71 Constant: | 106 | 0:71 Constant: |
| 108 | 0:71 0.100000 | 107 | 0:71 0.100000 |
| 109 | 0:71 0.100000 | 108 | 0:71 0.100000 |
| 110 | -0:71 Convert float to int ( temp highp 2-component vector of int) | 109 | +0:71 Convert float to int ( temp lowp 2-component vector of int) |
| 111 | 0:71 'inf' ( in highp 2-component vector of float) | 110 | 0:71 'inf' ( in highp 2-component vector of float) |
| 112 | 0:72 textureGatherOffsets ( global lowp 4-component vector of float, operation at highp) | 111 | 0:72 textureGatherOffsets ( global lowp 4-component vector of float, operation at highp) |
| 113 | 0:72 direct index ( temp lowp sampler2D) | 112 | 0:72 direct index ( temp lowp sampler2D) |
| @@ -4,7 +4,7 @@ ERROR: 0:22: 'textureGatherOffset(...)' : must be a compile-time constant: compo | |||
| 4 | ERROR: 0:23: 'textureGatherOffset(...)' : must be 0, 1, 2, or 3: component argument | 4 | ERROR: 0:23: 'textureGatherOffset(...)' : must be 0, 1, 2, or 3: component argument |
| 5 | ERROR: 0:30: 'location qualifier on input' : not supported for this version or the enabled extensions | 5 | ERROR: 0:30: 'location qualifier on input' : not supported for this version or the enabled extensions |
| 6 | ERROR: 0:38: 'location qualifier on uniform or buffer' : not supported for this version or the enabled extensions | 6 | ERROR: 0:38: 'location qualifier on uniform or buffer' : not supported for this version or the enabled extensions |
| 7 | -ERROR: 0:40: 'gl_Color' : identifiers starting with "gl_" are reserved | 7 | +ERROR: 0:40: 'redeclaration' : cannot apply layout qualifier to gl_Color |
| 8 | ERROR: 0:41: 'redeclaration' : cannot change qualification of gl_ClipDistance | 8 | ERROR: 0:41: 'redeclaration' : cannot change qualification of gl_ClipDistance |
| 9 | ERROR: 0:43: 'gl_FragCoord' : cannot redeclare after use | 9 | ERROR: 0:43: 'gl_FragCoord' : cannot redeclare after use |
| 10 | ERROR: 0:51: 'texel offset' : argument must be compile-time constant | 10 | ERROR: 0:51: 'texel offset' : argument must be compile-time constant |
| @@ -34,7 +34,7 @@ ERROR: 0:183: 'assign' : cannot convert from ' const float' to ' temp 2-compone | |||
| 34 | ERROR: 0:184: 'textureQueryLod' : no matching overloaded function found | 34 | ERROR: 0:184: 'textureQueryLod' : no matching overloaded function found |
| 35 | ERROR: 0:184: 'assign' : cannot convert from ' const float' to ' temp 2-component vector of float' | 35 | ERROR: 0:184: 'assign' : cannot convert from ' const float' to ' temp 2-component vector of float' |
| 36 | ERROR: 0:197: 'subroutine' : feature not yet implemented | 36 | ERROR: 0:197: 'subroutine' : feature not yet implemented |
| 37 | -ERROR: 0:197: '' : default qualifier requires 'uniform', 'buffer', 'in', 'out' or 'shared' storage qualification | 37 | +ERROR: 0:197: '' : default qualifier requires 'uniform', 'buffer', 'in', or 'out' storage qualification |
| 38 | ERROR: 0:198: 'subroutine' : feature not yet implemented | 38 | ERROR: 0:198: 'subroutine' : feature not yet implemented |
| 39 | ERROR: 0:199: 'subroutine' : feature not yet implemented | 39 | ERROR: 0:199: 'subroutine' : feature not yet implemented |
| 40 | ERROR: 0:201: '' : syntax error, unexpected PRECISE, expecting IDENTIFIER | 40 | ERROR: 0:201: '' : syntax error, unexpected PRECISE, expecting IDENTIFIER |
| @@ -516,7 +516,7 @@ ERROR: node is still EOpNull! | |||
| 516 | 0:? 'vl' (layout( location=4) smooth in 4-component vector of float) | 516 | 0:? 'vl' (layout( location=4) smooth in 4-component vector of float) |
| 517 | 0:? 'vl2' (layout( location=6) smooth in 4-component vector of float) | 517 | 0:? 'vl2' (layout( location=6) smooth in 4-component vector of float) |
| 518 | 0:? 'uv3' (layout( location=3) uniform 3-component vector of float) | 518 | 0:? 'uv3' (layout( location=3) uniform 3-component vector of float) |
| 519 | -0:? 'gl_Color' (layout( location=5) smooth in 4-component vector of float) | 519 | +0:? 'anon@0' ( in block{ in float FogFragCoord gl_FogFragCoord, in unsized 1-element array of 4-component vector of float TexCoord gl_TexCoord, smooth in 4-component vector of float Color gl_Color, in 4-component vector of float SecondaryColor gl_SecondaryColor}) |
| 520 | 0:? 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) | 520 | 0:? 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) |
| 521 | 0:? 'u2drs' ( uniform sampler2DRectShadow) | 521 | 0:? 'u2drs' ( uniform sampler2DRectShadow) |
| 522 | 0:? 'patchIn' ( smooth patch in 4-component vector of float) | 522 | 0:? 'patchIn' ( smooth patch in 4-component vector of float) |
| @@ -691,7 +691,7 @@ ERROR: node is still EOpNull! | |||
| 691 | 0:? 'vl' (layout( location=4) smooth in 4-component vector of float) | 691 | 0:? 'vl' (layout( location=4) smooth in 4-component vector of float) |
| 692 | 0:? 'vl2' (layout( location=6) smooth in 4-component vector of float) | 692 | 0:? 'vl2' (layout( location=6) smooth in 4-component vector of float) |
| 693 | 0:? 'uv3' (layout( location=3) uniform 3-component vector of float) | 693 | 0:? 'uv3' (layout( location=3) uniform 3-component vector of float) |
| 694 | -0:? 'gl_Color' (layout( location=5) smooth in 4-component vector of float) | 694 | +0:? 'anon@0' ( in block{ in float FogFragCoord gl_FogFragCoord, in 1-element array of 4-component vector of float TexCoord gl_TexCoord, smooth in 4-component vector of float Color gl_Color, in 4-component vector of float SecondaryColor gl_SecondaryColor}) |
| 695 | 0:? 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) | 695 | 0:? 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) |
| 696 | 0:? 'u2drs' ( uniform sampler2DRectShadow) | 696 | 0:? 'u2drs' ( uniform sampler2DRectShadow) |
| 697 | 0:? 'patchIn' ( smooth patch in 4-component vector of float) | 697 | 0:? 'patchIn' ( smooth patch in 4-component vector of float) |
| @@ -2,13 +2,12 @@ | |||
| 2 | ERROR: 0:8: 'myIn' : cannot redeclare a built-in block with a user name | 2 | ERROR: 0:8: 'myIn' : cannot redeclare a built-in block with a user name |
| 3 | ERROR: 0:12: 'gl_myIn' : no declaration found for redeclaration | 3 | ERROR: 0:12: 'gl_myIn' : no declaration found for redeclaration |
| 4 | ERROR: 0:20: 'gl_PerVertex' : can only redeclare a built-in block once, and before any use | 4 | ERROR: 0:20: 'gl_PerVertex' : can only redeclare a built-in block once, and before any use |
| 5 | -ERROR: 0:32: 'gl_Position' : no such field in structure 'gl_in' | 5 | +ERROR: 0:32: 'gl_Position' : no such field in structure |
| 6 | ERROR: 0:32: '=' : cannot convert from ' temp block{ in float PointSize gl_PointSize}' to ' temp 4-component vector of float' | 6 | ERROR: 0:32: '=' : cannot convert from ' temp block{ in float PointSize gl_PointSize}' to ' temp 4-component vector of float' |
| 7 | ERROR: 0:33: 'gl_Position' : member of nameless block was not redeclared | 7 | ERROR: 0:33: 'gl_Position' : member of nameless block was not redeclared |
| 8 | -ERROR: 0:33: 'assign' : l-value required "gl_PerVertex" (can't modify void) | ||
| 9 | ERROR: 0:33: 'assign' : cannot convert from ' const 4-component vector of float' to 'layout( stream=0) gl_Position void Position' | 8 | ERROR: 0:33: 'assign' : cannot convert from ' const 4-component vector of float' to 'layout( stream=0) gl_Position void Position' |
| 10 | WARNING: 0:38: 'return' : type conversion on return values was not explicitly allowed until version 420 | 9 | WARNING: 0:38: 'return' : type conversion on return values was not explicitly allowed until version 420 |
| 11 | -ERROR: 8 compilation errors. No code generated. | 10 | +ERROR: 7 compilation errors. No code generated. |
| 12 | 11 | ||
| 13 | 12 | ||
| 14 | Shader version: 410 | 13 | Shader version: 410 |
| @@ -2,7 +2,7 @@ | |||
| 2 | ERROR: 0:7: 'vertices' : inconsistent output number of vertices for array size of gl_out | 2 | ERROR: 0:7: 'vertices' : inconsistent output number of vertices for array size of gl_out |
| 3 | ERROR: 0:11: 'vertices' : inconsistent output number of vertices for array size of a | 3 | ERROR: 0:11: 'vertices' : inconsistent output number of vertices for array size of a |
| 4 | ERROR: 0:12: 'vertices' : inconsistent output number of vertices for array size of outb | 4 | ERROR: 0:12: 'vertices' : inconsistent output number of vertices for array size of outb |
| 5 | -ERROR: 0:26: 'gl_PointSize' : no such field in structure 'gl_out' | 5 | +ERROR: 0:26: 'gl_PointSize' : no such field in structure |
| 6 | ERROR: 0:26: 'assign' : cannot convert from ' temp float' to ' temp block{ out 4-component vector of float Position gl_Position}' | 6 | ERROR: 0:26: 'assign' : cannot convert from ' temp float' to ' temp block{ out 4-component vector of float Position gl_Position}' |
| 7 | ERROR: 0:29: 'out' : type must be an array: outf | 7 | ERROR: 0:29: 'out' : type must be an array: outf |
| 8 | ERROR: 0:43: 'vertices' : must be greater than 0 | 8 | ERROR: 0:43: 'vertices' : must be greater than 0 |
| @@ -306,7 +306,6 @@ ERROR: node is still EOpNull! | |||
| 306 | 0:? 'samp1D' ( uniform sampler1D) | 306 | 0:? 'samp1D' ( uniform sampler1D) |
| 307 | 0:? 'samp1Ds' ( uniform sampler1DShadow) | 307 | 0:? 'samp1Ds' ( uniform sampler1DShadow) |
| 308 | 0:? 'badArray' (layout( binding=0) writeonly uniform unsized 1-element array of image1D) | 308 | 0:? 'badArray' (layout( binding=0) writeonly uniform unsized 1-element array of image1D) |
| 309 | -0:? 'u_sampler0' (layout( binding=74) uniform 6-element array of sampler2D) | ||
| 310 | 0:? 'gl_VertexID' ( gl_VertexId int VertexId) | 309 | 0:? 'gl_VertexID' ( gl_VertexId int VertexId) |
| 311 | 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) | 310 | 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) |
| 312 | 311 | ||
| @@ -389,7 +388,6 @@ ERROR: node is still EOpNull! | |||
| 389 | 0:? 'samp1D' ( uniform sampler1D) | 388 | 0:? 'samp1D' ( uniform sampler1D) |
| 390 | 0:? 'samp1Ds' ( uniform sampler1DShadow) | 389 | 0:? 'samp1Ds' ( uniform sampler1DShadow) |
| 391 | 0:? 'badArray' (layout( binding=0) writeonly uniform 1-element array of image1D) | 390 | 0:? 'badArray' (layout( binding=0) writeonly uniform 1-element array of image1D) |
| 392 | -0:? 'u_sampler0' (layout( binding=74) uniform 6-element array of sampler2D) | ||
| 393 | 0:? 'gl_VertexID' ( gl_VertexId int VertexId) | 391 | 0:? 'gl_VertexID' ( gl_VertexId int VertexId) |
| 394 | 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) | 392 | 0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) |
| 395 | 393 | ||
| @@ -5,9 +5,9 @@ ERROR: 0:43: 'in' : global storage input qualifier cannot be used in a compute s | |||
| 5 | ERROR: 0:43: 'location qualifier on input' : not supported in this stage: compute | 5 | ERROR: 0:43: 'location qualifier on input' : not supported in this stage: compute |
| 6 | ERROR: 0:44: 'in' : global storage input qualifier cannot be used in a compute shader | 6 | ERROR: 0:44: 'in' : global storage input qualifier cannot be used in a compute shader |
| 7 | ERROR: 0:45: 'out' : global storage output qualifier cannot be used in a compute shader | 7 | ERROR: 0:45: 'out' : global storage output qualifier cannot be used in a compute shader |
| 8 | -ERROR: 0:48: 'shared block' : not supported for this version or the enabled extensions | 8 | +ERROR: 0:48: 'shared' : cannot apply layout qualifiers to a shared variable |
| 9 | ERROR: 0:48: 'location' : can only apply to uniform, buffer, in, or out storage qualifiers | 9 | ERROR: 0:48: 'location' : can only apply to uniform, buffer, in, or out storage qualifiers |
| 10 | -ERROR: 0:49: 'shared' : initializer can only be a null initializer ('{}') | 10 | +ERROR: 0:49: 'shared' : cannot initialize this type of qualifier |
| 11 | ERROR: 0:52: 'local_size' : cannot change previously set size | 11 | ERROR: 0:52: 'local_size' : cannot change previously set size |
| 12 | ERROR: 0:54: 'local_size' : can only apply to 'in' | 12 | ERROR: 0:54: 'local_size' : can only apply to 'in' |
| 13 | ERROR: 0:54: 'local_size' : can only apply to 'in' | 13 | ERROR: 0:54: 'local_size' : can only apply to 'in' |
| @@ -52,11 +52,6 @@ ERROR: node is still EOpNull! | |||
| 52 | 0:39 10 (const int) | 52 | 0:39 10 (const int) |
| 53 | 0:39 true case | 53 | 0:39 true case |
| 54 | 0:40 Barrier ( global void) | 54 | 0:40 Barrier ( global void) |
| 55 | -0:49 Sequence | ||
| 56 | -0:49 move second child to first child ( temp float) | ||
| 57 | -0:49 'fs' ( shared float) | ||
| 58 | -0:49 Constant: | ||
| 59 | -0:49 4.200000 | ||
| 60 | 0:66 Function Definition: foo( ( global void) | 55 | 0:66 Function Definition: foo( ( global void) |
| 61 | 0:66 Function Parameters: | 56 | 0:66 Function Parameters: |
| 62 | 0:68 Sequence | 57 | 0:68 Sequence |
| @@ -189,11 +184,6 @@ ERROR: node is still EOpNull! | |||
| 189 | 0:39 10 (const int) | 184 | 0:39 10 (const int) |
| 190 | 0:39 true case | 185 | 0:39 true case |
| 191 | 0:40 Barrier ( global void) | 186 | 0:40 Barrier ( global void) |
| 192 | -0:49 Sequence | ||
| 193 | -0:49 move second child to first child ( temp float) | ||
| 194 | -0:49 'fs' ( shared float) | ||
| 195 | -0:49 Constant: | ||
| 196 | -0:49 4.200000 | ||
| 197 | 0:? Linker Objects | 187 | 0:? Linker Objects |
| 198 | 0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) | 188 | 0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) |
| 199 | 0:? 2 (const uint) | 189 | 0:? 2 (const uint) |
| @@ -63,7 +63,7 @@ ERROR: node is still EOpNull! | |||
| 63 | 0:47 3.000000 | 63 | 0:47 3.000000 |
| 64 | 0:49 move second child to first child ( temp 4-component vector of float) | 64 | 0:49 move second child to first child ( temp 4-component vector of float) |
| 65 | 0:49 gl_Position: direct index for structure ( invariant gl_Position 4-component vector of float Position) | 65 | 0:49 gl_Position: direct index for structure ( invariant gl_Position 4-component vector of float Position) |
| 66 | -0:49 'anon@0' ( out block{ invariant gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) | 66 | +0:49 'anon@0' ( out block{ invariant gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance, gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex, out 4-component vector of float FrontColor gl_FrontColor, out 4-component vector of float BackColor gl_BackColor, out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor, out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor, out unsized 1-element array of 4-component vector of float TexCoord gl_TexCoord, out float FogFragCoord gl_FogFragCoord}) |
| 67 | 0:49 Constant: | 67 | 0:49 Constant: |
| 68 | 0:49 0 (const uint) | 68 | 0:49 0 (const uint) |
| 69 | 0:49 Construct vec4 ( temp 4-component vector of float) | 69 | 0:49 Construct vec4 ( temp 4-component vector of float) |
| @@ -168,7 +168,7 @@ ERROR: node is still EOpNull! | |||
| 168 | 0:47 3.000000 | 168 | 0:47 3.000000 |
| 169 | 0:49 move second child to first child ( temp 4-component vector of float) | 169 | 0:49 move second child to first child ( temp 4-component vector of float) |
| 170 | 0:49 gl_Position: direct index for structure ( invariant gl_Position 4-component vector of float Position) | 170 | 0:49 gl_Position: direct index for structure ( invariant gl_Position 4-component vector of float Position) |
| 171 | -0:49 'anon@0' ( out block{ invariant gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) | 171 | +0:49 'anon@0' ( out block{ invariant gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance, gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex, out 4-component vector of float FrontColor gl_FrontColor, out 4-component vector of float BackColor gl_BackColor, out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor, out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor, out 1-element array of 4-component vector of float TexCoord gl_TexCoord, out float FogFragCoord gl_FogFragCoord}) |
| 172 | 0:49 Constant: | 172 | 0:49 Constant: |
| 173 | 0:49 0 (const uint) | 173 | 0:49 0 (const uint) |
| 174 | 0:49 Construct vec4 ( temp 4-component vector of float) | 174 | 0:49 Construct vec4 ( temp 4-component vector of float) |
| @@ -118,7 +118,6 @@ ERROR: node is still EOpNull! | |||
| 118 | 0:? 'aconst' ( global 4-element array of int) | 118 | 0:? 'aconst' ( global 4-element array of int) |
| 119 | 0:? 'bconst' ( global 64-element array of int) | 119 | 0:? 'bconst' ( global 64-element array of int) |
| 120 | 0:? 'sampInArray' ( smooth sample in 4-element array of 3-component vector of float) | 120 | 0:? 'sampInArray' ( smooth sample in 4-element array of 3-component vector of float) |
| 121 | -0:? 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140 offset=0) uniform 128-element array of structure{ global 3-component vector of float vPositionWs} g_pointLightData}) | ||
| 122 | 121 | ||
| 123 | 122 | ||
| 124 | Linked fragment stage: | 123 | Linked fragment stage: |
| @@ -163,5 +162,4 @@ ERROR: node is still EOpNull! | |||
| 163 | 0:? 'aconst' ( global 4-element array of int) | 162 | 0:? 'aconst' ( global 4-element array of int) |
| 164 | 0:? 'bconst' ( global 64-element array of int) | 163 | 0:? 'bconst' ( global 64-element array of int) |
| 165 | 0:? 'sampInArray' ( smooth sample in 4-element array of 3-component vector of float) | 164 | 0:? 'sampInArray' ( smooth sample in 4-element array of 3-component vector of float) |
| 166 | -0:? 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140 offset=0) uniform 128-element array of structure{ global 3-component vector of float vPositionWs} g_pointLightData}) | ||
| 167 | 165 | ||
| @@ -1,14 +1,10 @@ | |||
| 1 | 450.frag | 1 | 450.frag |
| 2 | -ERROR: 0:70: 'offsets' : argument must be compile-time constant | 2 | +ERROR: 0:63: 'location' : cannot use in a block array where new locations are needed for each block element |
| 3 | -ERROR: 0:71: 'offsets' : argument must be compile-time constant | 3 | +ERROR: 0:68: 'early_fragment_tests' : can only apply to a standalone qualifier |
| 4 | -ERROR: 0:72: 'offsets' : argument must be compile-time constant | 4 | +ERROR: 2 compilation errors. No code generated. |
| 5 | -ERROR: 0:88: 'location' : cannot use in a block array where new locations are needed for each block element | ||
| 6 | -ERROR: 0:93: 'early_fragment_tests' : can only apply to a standalone qualifier | ||
| 7 | -ERROR: 5 compilation errors. No code generated. | ||
| 8 | 5 | ||
| 9 | 6 | ||
| 10 | Shader version: 450 | 7 | Shader version: 450 |
| 11 | -Requested GL_ARB_sparse_texture2 | ||
| 12 | ERROR: node is still EOpNull! | 8 | ERROR: node is still EOpNull! |
| 13 | 0:8 Function Definition: main( ( global void) | 9 | 0:8 Function Definition: main( ( global void) |
| 14 | 0:8 Function Parameters: | 10 | 0:8 Function Parameters: |
| @@ -137,107 +133,26 @@ ERROR: node is still EOpNull! | |||
| 137 | 0:48 2 (const int) | 133 | 0:48 2 (const int) |
| 138 | 0:48 Constant: | 134 | 0:48 Constant: |
| 139 | 0:48 4.500000 | 135 | 0:48 4.500000 |
| 140 | -0:61 Function Definition: testOffsets( ( global void) | 136 | +0:53 Function Definition: cull(i1; ( global float) |
| 141 | -0:61 Function Parameters: | 137 | +0:53 Function Parameters: |
| 142 | -0:63 Sequence | 138 | +0:53 'i' ( in int) |
| 143 | -0:63 Sequence | 139 | +0:55 Sequence |
| 144 | -0:63 move second child to first child ( temp 4-component vector of float) | 140 | +0:55 Branch: Return with expression |
| 145 | -0:63 'texel' ( temp 4-component vector of float) | 141 | +0:55 Test condition and select ( temp float) |
| 146 | -0:63 Constant: | 142 | +0:55 Condition |
| 147 | -0:63 0.000000 | 143 | +0:55 Compare Greater Than or Equal ( temp bool) |
| 148 | -0:63 0.000000 | 144 | +0:55 'i' ( in int) |
| 149 | -0:63 0.000000 | 145 | +0:55 Constant: |
| 150 | -0:63 0.000000 | 146 | +0:55 6 (const int) |
| 151 | -0:64 Sequence | 147 | +0:55 true case |
| 152 | -0:64 move second child to first child ( temp 4-component vector of int) | 148 | +0:55 direct index ( smooth temp float CullDistance) |
| 153 | -0:64 'itexel' ( temp 4-component vector of int) | 149 | +0:55 'gl_CullDistance' ( smooth in 6-element array of float CullDistance) |
| 154 | -0:64 Constant: | 150 | +0:55 Constant: |
| 155 | -0:64 0 (const int) | 151 | +0:55 5 (const int) |
| 156 | -0:64 0 (const int) | 152 | +0:55 false case |
| 157 | -0:64 0 (const int) | 153 | +0:55 indirect index ( smooth temp float CullDistance) |
| 158 | -0:64 0 (const int) | 154 | +0:55 'gl_CullDistance' ( smooth in 6-element array of float CullDistance) |
| 159 | -0:66 sparseTextureGatherOffsets ( global int) | 155 | +0:55 'i' ( in int) |
| 160 | -0:66 's2D' ( uniform sampler2D) | ||
| 161 | -0:66 'c2' ( smooth in 2-component vector of float) | ||
| 162 | -0:66 Constant: | ||
| 163 | -0:66 1 (const int) | ||
| 164 | -0:66 2 (const int) | ||
| 165 | -0:66 3 (const int) | ||
| 166 | -0:66 4 (const int) | ||
| 167 | -0:66 15 (const int) | ||
| 168 | -0:66 16 (const int) | ||
| 169 | -0:66 -2 (const int) | ||
| 170 | -0:66 0 (const int) | ||
| 171 | -0:66 'texel' ( temp 4-component vector of float) | ||
| 172 | -0:67 sparseTextureGatherOffsets ( global int) | ||
| 173 | -0:67 'is2DArray' ( uniform isampler2DArray) | ||
| 174 | -0:67 'c3' ( smooth in 3-component vector of float) | ||
| 175 | -0:67 Constant: | ||
| 176 | -0:67 1 (const int) | ||
| 177 | -0:67 2 (const int) | ||
| 178 | -0:67 3 (const int) | ||
| 179 | -0:67 4 (const int) | ||
| 180 | -0:67 15 (const int) | ||
| 181 | -0:67 16 (const int) | ||
| 182 | -0:67 -2 (const int) | ||
| 183 | -0:67 0 (const int) | ||
| 184 | -0:67 'itexel' ( temp 4-component vector of int) | ||
| 185 | -0:67 Constant: | ||
| 186 | -0:67 2 (const int) | ||
| 187 | -0:68 sparseTextureGatherOffsets ( global int) | ||
| 188 | -0:68 's2DRectShadow' ( uniform sampler2DRectShadow) | ||
| 189 | -0:68 'c2' ( smooth in 2-component vector of float) | ||
| 190 | -0:68 Constant: | ||
| 191 | -0:68 2.000000 | ||
| 192 | -0:68 Constant: | ||
| 193 | -0:68 1 (const int) | ||
| 194 | -0:68 2 (const int) | ||
| 195 | -0:68 3 (const int) | ||
| 196 | -0:68 4 (const int) | ||
| 197 | -0:68 15 (const int) | ||
| 198 | -0:68 16 (const int) | ||
| 199 | -0:68 -2 (const int) | ||
| 200 | -0:68 0 (const int) | ||
| 201 | -0:68 'texel' ( temp 4-component vector of float) | ||
| 202 | -0:70 sparseTextureGatherOffsets ( global int) | ||
| 203 | -0:70 's2D' ( uniform sampler2D) | ||
| 204 | -0:70 'c2' ( smooth in 2-component vector of float) | ||
| 205 | -0:70 'offsets' ( flat in 4-element array of 2-component vector of int) | ||
| 206 | -0:70 'texel' ( temp 4-component vector of float) | ||
| 207 | -0:71 sparseTextureGatherOffsets ( global int) | ||
| 208 | -0:71 'is2DArray' ( uniform isampler2DArray) | ||
| 209 | -0:71 'c3' ( smooth in 3-component vector of float) | ||
| 210 | -0:71 'offsets' ( flat in 4-element array of 2-component vector of int) | ||
| 211 | -0:71 'itexel' ( temp 4-component vector of int) | ||
| 212 | -0:71 Constant: | ||
| 213 | -0:71 2 (const int) | ||
| 214 | -0:72 sparseTextureGatherOffsets ( global int) | ||
| 215 | -0:72 's2DRectShadow' ( uniform sampler2DRectShadow) | ||
| 216 | -0:72 'c2' ( smooth in 2-component vector of float) | ||
| 217 | -0:72 Constant: | ||
| 218 | -0:72 2.000000 | ||
| 219 | -0:72 'offsets' ( flat in 4-element array of 2-component vector of int) | ||
| 220 | -0:72 'texel' ( temp 4-component vector of float) | ||
| 221 | -0:78 Function Definition: cull(i1; ( global float) | ||
| 222 | -0:78 Function Parameters: | ||
| 223 | -0:78 'i' ( in int) | ||
| 224 | -0:80 Sequence | ||
| 225 | -0:80 Branch: Return with expression | ||
| 226 | -0:80 Test condition and select ( temp float) | ||
| 227 | -0:80 Condition | ||
| 228 | -0:80 Compare Greater Than or Equal ( temp bool) | ||
| 229 | -0:80 'i' ( in int) | ||
| 230 | -0:80 Constant: | ||
| 231 | -0:80 6 (const int) | ||
| 232 | -0:80 true case | ||
| 233 | -0:80 direct index ( smooth temp float CullDistance) | ||
| 234 | -0:80 'gl_CullDistance' ( smooth in 6-element array of float CullDistance) | ||
| 235 | -0:80 Constant: | ||
| 236 | -0:80 5 (const int) | ||
| 237 | -0:80 false case | ||
| 238 | -0:80 indirect index ( smooth temp float CullDistance) | ||
| 239 | -0:80 'gl_CullDistance' ( smooth in 6-element array of float CullDistance) | ||
| 240 | -0:80 'i' ( in int) | ||
| 241 | 0:? Linker Objects | 156 | 0:? Linker Objects |
| 242 | 0:? 'in1' ( smooth in float) | 157 | 0:? 'in1' ( smooth in float) |
| 243 | 0:? 'in2' ( smooth in 2-component vector of float) | 158 | 0:? 'in2' ( smooth in 2-component vector of float) |
| @@ -248,12 +163,6 @@ ERROR: node is still EOpNull! | |||
| 248 | 0:? 'us2dmsa' ( uniform usampler2DMSArray) | 163 | 0:? 'us2dmsa' ( uniform usampler2DMSArray) |
| 249 | 0:? 'ii2dms' (layout( rgba32i) uniform iimage2DMS) | 164 | 0:? 'ii2dms' (layout( rgba32i) uniform iimage2DMS) |
| 250 | 0:? 'i2dmsa' (layout( rgba32f) uniform image2DMSArray) | 165 | 0:? 'i2dmsa' (layout( rgba32f) uniform image2DMSArray) |
| 251 | -0:? 's2D' ( uniform sampler2D) | ||
| 252 | -0:? 'is2DArray' ( uniform isampler2DArray) | ||
| 253 | -0:? 's2DRectShadow' ( uniform sampler2DRectShadow) | ||
| 254 | -0:? 'offsets' ( flat in 4-element array of 2-component vector of int) | ||
| 255 | -0:? 'c2' ( smooth in 2-component vector of float) | ||
| 256 | -0:? 'c3' ( smooth in 3-component vector of float) | ||
| 257 | 0:? 'bInst1' ( in block{layout( location=6) in float f, layout( location=7) in float g, layout( location=8) in 4X4 matrix of float m}) | 166 | 0:? 'bInst1' ( in block{layout( location=6) in float f, layout( location=7) in float g, layout( location=8) in 4X4 matrix of float m}) |
| 258 | 0:? 'bInst2' ( in 3-element array of block{layout( location=12) in float f, layout( location=13) in float g}) | 167 | 0:? 'bInst2' ( in 3-element array of block{layout( location=12) in float f, layout( location=13) in float g}) |
| 259 | 0:? 'f' ( smooth in float) | 168 | 0:? 'f' ( smooth in float) |
| @@ -263,7 +172,6 @@ Linked fragment stage: | |||
| 263 | 172 | ||
| 264 | 173 | ||
| 265 | Shader version: 450 | 174 | Shader version: 450 |
| 266 | -Requested GL_ARB_sparse_texture2 | ||
| 267 | ERROR: node is still EOpNull! | 175 | ERROR: node is still EOpNull! |
| 268 | 0:8 Function Definition: main( ( global void) | 176 | 0:8 Function Definition: main( ( global void) |
| 269 | 0:8 Function Parameters: | 177 | 0:8 Function Parameters: |
| @@ -371,12 +279,6 @@ ERROR: node is still EOpNull! | |||
| 371 | 0:? 'us2dmsa' ( uniform usampler2DMSArray) | 279 | 0:? 'us2dmsa' ( uniform usampler2DMSArray) |
| 372 | 0:? 'ii2dms' (layout( rgba32i) uniform iimage2DMS) | 280 | 0:? 'ii2dms' (layout( rgba32i) uniform iimage2DMS) |
| 373 | 0:? 'i2dmsa' (layout( rgba32f) uniform image2DMSArray) | 281 | 0:? 'i2dmsa' (layout( rgba32f) uniform image2DMSArray) |
| 374 | -0:? 's2D' ( uniform sampler2D) | ||
| 375 | -0:? 'is2DArray' ( uniform isampler2DArray) | ||
| 376 | -0:? 's2DRectShadow' ( uniform sampler2DRectShadow) | ||
| 377 | -0:? 'offsets' ( flat in 4-element array of 2-component vector of int) | ||
| 378 | -0:? 'c2' ( smooth in 2-component vector of float) | ||
| 379 | -0:? 'c3' ( smooth in 3-component vector of float) | ||
| 380 | 0:? 'bInst1' ( in block{layout( location=6) in float f, layout( location=7) in float g, layout( location=8) in 4X4 matrix of float m}) | 282 | 0:? 'bInst1' ( in block{layout( location=6) in float f, layout( location=7) in float g, layout( location=8) in 4X4 matrix of float m}) |
| 381 | 0:? 'bInst2' ( in 3-element array of block{layout( location=12) in float f, layout( location=13) in float g}) | 283 | 0:? 'bInst2' ( in 3-element array of block{layout( location=12) in float f, layout( location=13) in float g}) |
| 382 | 0:? 'f' ( smooth in float) | 284 | 0:? 'f' ( smooth in float) |
| @@ -1,6 +1,6 @@ | |||
| 1 | 450.geom | 1 | 450.geom |
| 2 | ERROR: 0:15: '[' : array index out of range '3' | 2 | ERROR: 0:15: '[' : array index out of range '3' |
| 3 | -ERROR: 0:15: 'gl_Position' : no such field in structure 'gl_in' | 3 | +ERROR: 0:15: 'gl_Position' : no such field in structure |
| 4 | ERROR: 0:19: 'points' : can only apply to a standalone qualifier | 4 | ERROR: 0:19: 'points' : can only apply to a standalone qualifier |
| 5 | ERROR: 3 compilation errors. No code generated. | 5 | ERROR: 3 compilation errors. No code generated. |
| 6 | 6 | ||
| @@ -34,7 +34,7 @@ ERROR: node is still EOpNull! | |||
| 34 | 0:9 gl_CullDistance: direct index for structure ( out 3-element array of float CullDistance) | 34 | 0:9 gl_CullDistance: direct index for structure ( out 3-element array of float CullDistance) |
| 35 | 0:9 'anon@0' ( out block{ out 3-element array of float CullDistance gl_CullDistance}) | 35 | 0:9 'anon@0' ( out block{ out 3-element array of float CullDistance gl_CullDistance}) |
| 36 | 0:9 Constant: | 36 | 0:9 Constant: |
| 37 | -0:9 3 (const uint) | 37 | +0:9 10 (const uint) |
| 38 | 0:9 Constant: | 38 | 0:9 Constant: |
| 39 | 0:9 2 (const int) | 39 | 0:9 2 (const int) |
| 40 | 0:9 Constant: | 40 | 0:9 Constant: |
| @@ -98,7 +98,7 @@ ERROR: node is still EOpNull! | |||
| 98 | 0:9 gl_CullDistance: direct index for structure ( out 3-element array of float CullDistance) | 98 | 0:9 gl_CullDistance: direct index for structure ( out 3-element array of float CullDistance) |
| 99 | 0:9 'anon@0' ( out block{ out 3-element array of float CullDistance gl_CullDistance}) | 99 | 0:9 'anon@0' ( out block{ out 3-element array of float CullDistance gl_CullDistance}) |
| 100 | 0:9 Constant: | 100 | 0:9 Constant: |
| 101 | -0:9 3 (const uint) | 101 | +0:9 10 (const uint) |
| 102 | 0:9 Constant: | 102 | 0:9 Constant: |
| 103 | 0:9 2 (const int) | 103 | 0:9 2 (const int) |
| 104 | 0:9 Constant: | 104 | 0:9 Constant: |
| @@ -1,206 +0,0 @@ | |||
| 1 | -BestMatchFunction.vert | ||
| 2 | -WARNING: 0:2: '#extension' : extension is only partially supported: GL_ARB_gpu_shader5 | ||
| 3 | - | ||
| 4 | -Shader version: 150 | ||
| 5 | -Requested GL_ARB_gpu_shader5 | ||
| 6 | -0:? Sequence | ||
| 7 | -0:7 Function Definition: f(vf4;vf4; ( global 4-component vector of float) | ||
| 8 | -0:7 Function Parameters: | ||
| 9 | -0:7 'a' ( in 4-component vector of float) | ||
| 10 | -0:7 'b' ( in 4-component vector of float) | ||
| 11 | -0:7 Sequence | ||
| 12 | -0:7 Branch: Return with expression | ||
| 13 | -0:7 component-wise multiply ( temp 4-component vector of float) | ||
| 14 | -0:7 'a' ( in 4-component vector of float) | ||
| 15 | -0:7 'b' ( in 4-component vector of float) | ||
| 16 | -0:8 Function Definition: f(vu4;vu4; ( global 4-component vector of float) | ||
| 17 | -0:8 Function Parameters: | ||
| 18 | -0:8 'a' ( in 4-component vector of uint) | ||
| 19 | -0:8 'b' ( in 4-component vector of uint) | ||
| 20 | -0:8 Sequence | ||
| 21 | -0:8 Branch: Return with expression | ||
| 22 | -0:8 Convert uint to float ( temp 4-component vector of float) | ||
| 23 | -0:8 subtract ( temp 4-component vector of uint) | ||
| 24 | -0:8 'a' ( in 4-component vector of uint) | ||
| 25 | -0:8 'b' ( in 4-component vector of uint) | ||
| 26 | -0:10 Function Definition: main( ( global void) | ||
| 27 | -0:10 Function Parameters: | ||
| 28 | -0:12 Sequence | ||
| 29 | -0:12 move second child to first child ( temp 4-component vector of float) | ||
| 30 | -0:12 'result' ( smooth out 4-component vector of float) | ||
| 31 | -0:12 Function Call: f(vu4;vu4; ( global 4-component vector of float) | ||
| 32 | -0:12 Convert int to uint ( temp 4-component vector of uint) | ||
| 33 | -0:12 'u1' ( uniform 4-component vector of int) | ||
| 34 | -0:12 'u2' ( uniform 4-component vector of uint) | ||
| 35 | -0:13 switch | ||
| 36 | -0:13 condition | ||
| 37 | -0:13 'gl_VertexID' ( gl_VertexId int VertexId) | ||
| 38 | -0:13 body | ||
| 39 | -0:13 Sequence | ||
| 40 | -0:15 case: with expression | ||
| 41 | -0:15 Constant: | ||
| 42 | -0:15 0 (const int) | ||
| 43 | -0:? Sequence | ||
| 44 | -0:15 move second child to first child ( temp 4-component vector of float) | ||
| 45 | -0:15 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) | ||
| 46 | -0:15 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) | ||
| 47 | -0:15 Constant: | ||
| 48 | -0:15 0 (const uint) | ||
| 49 | -0:15 Constant: | ||
| 50 | -0:15 -1.000000 | ||
| 51 | -0:15 1.000000 | ||
| 52 | -0:15 0.000000 | ||
| 53 | -0:15 1.000000 | ||
| 54 | -0:15 Branch: Break | ||
| 55 | -0:16 case: with expression | ||
| 56 | -0:16 Constant: | ||
| 57 | -0:16 1 (const int) | ||
| 58 | -0:? Sequence | ||
| 59 | -0:16 move second child to first child ( temp 4-component vector of float) | ||
| 60 | -0:16 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) | ||
| 61 | -0:16 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) | ||
| 62 | -0:16 Constant: | ||
| 63 | -0:16 0 (const uint) | ||
| 64 | -0:16 Constant: | ||
| 65 | -0:16 1.000000 | ||
| 66 | -0:16 1.000000 | ||
| 67 | -0:16 0.000000 | ||
| 68 | -0:16 1.000000 | ||
| 69 | -0:16 Branch: Break | ||
| 70 | -0:17 case: with expression | ||
| 71 | -0:17 Constant: | ||
| 72 | -0:17 2 (const int) | ||
| 73 | -0:? Sequence | ||
| 74 | -0:17 move second child to first child ( temp 4-component vector of float) | ||
| 75 | -0:17 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) | ||
| 76 | -0:17 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) | ||
| 77 | -0:17 Constant: | ||
| 78 | -0:17 0 (const uint) | ||
| 79 | -0:17 Constant: | ||
| 80 | -0:17 -1.000000 | ||
| 81 | -0:17 -1.000000 | ||
| 82 | -0:17 0.000000 | ||
| 83 | -0:17 1.000000 | ||
| 84 | -0:17 Branch: Break | ||
| 85 | -0:18 case: with expression | ||
| 86 | -0:18 Constant: | ||
| 87 | -0:18 3 (const int) | ||
| 88 | -0:? Sequence | ||
| 89 | -0:18 move second child to first child ( temp 4-component vector of float) | ||
| 90 | -0:18 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) | ||
| 91 | -0:18 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) | ||
| 92 | -0:18 Constant: | ||
| 93 | -0:18 0 (const uint) | ||
| 94 | -0:18 Constant: | ||
| 95 | -0:18 1.000000 | ||
| 96 | -0:18 -1.000000 | ||
| 97 | -0:18 0.000000 | ||
| 98 | -0:18 1.000000 | ||
| 99 | -0:18 Branch: Break | ||
| 100 | -0:? Linker Objects | ||
| 101 | -0:? 'u1' ( uniform 4-component vector of int) | ||
| 102 | -0:? 'u2' ( uniform 4-component vector of uint) | ||
| 103 | -0:? 'result' ( smooth out 4-component vector of float) | ||
| 104 | -0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) | ||
| 105 | -0:? 'gl_VertexID' ( gl_VertexId int VertexId) | ||
| 106 | -0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) | ||
| 107 | - | ||
| 108 | - | ||
| 109 | -Linked vertex stage: | ||
| 110 | - | ||
| 111 | - | ||
| 112 | -Shader version: 150 | ||
| 113 | -Requested GL_ARB_gpu_shader5 | ||
| 114 | -0:? Sequence | ||
| 115 | -0:8 Function Definition: f(vu4;vu4; ( global 4-component vector of float) | ||
| 116 | -0:8 Function Parameters: | ||
| 117 | -0:8 'a' ( in 4-component vector of uint) | ||
| 118 | -0:8 'b' ( in 4-component vector of uint) | ||
| 119 | -0:8 Sequence | ||
| 120 | -0:8 Branch: Return with expression | ||
| 121 | -0:8 Convert uint to float ( temp 4-component vector of float) | ||
| 122 | -0:8 subtract ( temp 4-component vector of uint) | ||
| 123 | -0:8 'a' ( in 4-component vector of uint) | ||
| 124 | -0:8 'b' ( in 4-component vector of uint) | ||
| 125 | -0:10 Function Definition: main( ( global void) | ||
| 126 | -0:10 Function Parameters: | ||
| 127 | -0:12 Sequence | ||
| 128 | -0:12 move second child to first child ( temp 4-component vector of float) | ||
| 129 | -0:12 'result' ( smooth out 4-component vector of float) | ||
| 130 | -0:12 Function Call: f(vu4;vu4; ( global 4-component vector of float) | ||
| 131 | -0:12 Convert int to uint ( temp 4-component vector of uint) | ||
| 132 | -0:12 'u1' ( uniform 4-component vector of int) | ||
| 133 | -0:12 'u2' ( uniform 4-component vector of uint) | ||
| 134 | -0:13 switch | ||
| 135 | -0:13 condition | ||
| 136 | -0:13 'gl_VertexID' ( gl_VertexId int VertexId) | ||
| 137 | -0:13 body | ||
| 138 | -0:13 Sequence | ||
| 139 | -0:15 case: with expression | ||
| 140 | -0:15 Constant: | ||
| 141 | -0:15 0 (const int) | ||
| 142 | -0:? Sequence | ||
| 143 | -0:15 move second child to first child ( temp 4-component vector of float) | ||
| 144 | -0:15 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) | ||
| 145 | -0:15 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) | ||
| 146 | -0:15 Constant: | ||
| 147 | -0:15 0 (const uint) | ||
| 148 | -0:15 Constant: | ||
| 149 | -0:15 -1.000000 | ||
| 150 | -0:15 1.000000 | ||
| 151 | -0:15 0.000000 | ||
| 152 | -0:15 1.000000 | ||
| 153 | -0:15 Branch: Break | ||
| 154 | -0:16 case: with expression | ||
| 155 | -0:16 Constant: | ||
| 156 | -0:16 1 (const int) | ||
| 157 | -0:? Sequence | ||
| 158 | -0:16 move second child to first child ( temp 4-component vector of float) | ||
| 159 | -0:16 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) | ||
| 160 | -0:16 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) | ||
| 161 | -0:16 Constant: | ||
| 162 | -0:16 0 (const uint) | ||
| 163 | -0:16 Constant: | ||
| 164 | -0:16 1.000000 | ||
| 165 | -0:16 1.000000 | ||
| 166 | -0:16 0.000000 | ||
| 167 | -0:16 1.000000 | ||
| 168 | -0:16 Branch: Break | ||
| 169 | -0:17 case: with expression | ||
| 170 | -0:17 Constant: | ||
| 171 | -0:17 2 (const int) | ||
| 172 | -0:? Sequence | ||
| 173 | -0:17 move second child to first child ( temp 4-component vector of float) | ||
| 174 | -0:17 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) | ||
| 175 | -0:17 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) | ||
| 176 | -0:17 Constant: | ||
| 177 | -0:17 0 (const uint) | ||
| 178 | -0:17 Constant: | ||
| 179 | -0:17 -1.000000 | ||
| 180 | -0:17 -1.000000 | ||
| 181 | -0:17 0.000000 | ||
| 182 | -0:17 1.000000 | ||
| 183 | -0:17 Branch: Break | ||
| 184 | -0:18 case: with expression | ||
| 185 | -0:18 Constant: | ||
| 186 | -0:18 3 (const int) | ||
| 187 | -0:? Sequence | ||
| 188 | -0:18 move second child to first child ( temp 4-component vector of float) | ||
| 189 | -0:18 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) | ||
| 190 | -0:18 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) | ||
| 191 | -0:18 Constant: | ||
| 192 | -0:18 0 (const uint) | ||
| 193 | -0:18 Constant: | ||
| 194 | -0:18 1.000000 | ||
| 195 | -0:18 -1.000000 | ||
| 196 | -0:18 0.000000 | ||
| 197 | -0:18 1.000000 | ||
| 198 | -0:18 Branch: Break | ||
| 199 | -0:? Linker Objects | ||
| 200 | -0:? 'u1' ( uniform 4-component vector of int) | ||
| 201 | -0:? 'u2' ( uniform 4-component vector of uint) | ||
| 202 | -0:? 'result' ( smooth out 4-component vector of float) | ||
| 203 | -0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) | ||
| 204 | -0:? 'gl_VertexID' ( gl_VertexId int VertexId) | ||
| 205 | -0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) | ||
| 206 | - | ||
| @@ -1,97 +0,0 @@ | |||
| 1 | -EndStreamPrimitive.geom | ||
| 2 | -WARNING: 0:2: '#extension' : extension is only partially supported: GL_ARB_gpu_shader5 | ||
| 3 | - | ||
| 4 | -Shader version: 150 | ||
| 5 | -Requested GL_ARB_gpu_shader5 | ||
| 6 | -invocations = -1 | ||
| 7 | -max_vertices = 1 | ||
| 8 | -input primitive = points | ||
| 9 | -output primitive = points | ||
| 10 | -0:? Sequence | ||
| 11 | -0:10 Function Definition: main( ( global void) | ||
| 12 | -0:10 Function Parameters: | ||
| 13 | -0:12 Sequence | ||
| 14 | -0:12 move second child to first child ( temp float) | ||
| 15 | -0:12 'output1' (layout( stream=0) out float) | ||
| 16 | -0:12 Constant: | ||
| 17 | -0:12 1.000000 | ||
| 18 | -0:13 move second child to first child ( temp float) | ||
| 19 | -0:13 'output2' (layout( stream=0) out float) | ||
| 20 | -0:13 Constant: | ||
| 21 | -0:13 2.000000 | ||
| 22 | -0:14 EmitStreamVertex ( global void) | ||
| 23 | -0:14 Constant: | ||
| 24 | -0:14 0 (const int) | ||
| 25 | -0:15 EndStreamPrimitive ( global void) | ||
| 26 | -0:15 Constant: | ||
| 27 | -0:15 0 (const int) | ||
| 28 | -0:16 move second child to first child ( temp float) | ||
| 29 | -0:16 'output3' (layout( stream=1) out float) | ||
| 30 | -0:16 Constant: | ||
| 31 | -0:16 3.000000 | ||
| 32 | -0:17 move second child to first child ( temp float) | ||
| 33 | -0:17 'output4' (layout( stream=1) out float) | ||
| 34 | -0:17 Constant: | ||
| 35 | -0:17 4.000000 | ||
| 36 | -0:18 EmitStreamVertex ( global void) | ||
| 37 | -0:18 Constant: | ||
| 38 | -0:18 1 (const int) | ||
| 39 | -0:19 EndStreamPrimitive ( global void) | ||
| 40 | -0:19 Constant: | ||
| 41 | -0:19 1 (const int) | ||
| 42 | -0:? Linker Objects | ||
| 43 | -0:? 'output1' (layout( stream=0) out float) | ||
| 44 | -0:? 'output2' (layout( stream=0) out float) | ||
| 45 | -0:? 'output3' (layout( stream=1) out float) | ||
| 46 | -0:? 'output4' (layout( stream=1) out float) | ||
| 47 | -0:? 'stream' ( uniform uint) | ||
| 48 | - | ||
| 49 | - | ||
| 50 | -Linked geometry stage: | ||
| 51 | - | ||
| 52 | - | ||
| 53 | -Shader version: 150 | ||
| 54 | -Requested GL_ARB_gpu_shader5 | ||
| 55 | -invocations = 1 | ||
| 56 | -max_vertices = 1 | ||
| 57 | -input primitive = points | ||
| 58 | -output primitive = points | ||
| 59 | -0:? Sequence | ||
| 60 | -0:10 Function Definition: main( ( global void) | ||
| 61 | -0:10 Function Parameters: | ||
| 62 | -0:12 Sequence | ||
| 63 | -0:12 move second child to first child ( temp float) | ||
| 64 | -0:12 'output1' (layout( stream=0) out float) | ||
| 65 | -0:12 Constant: | ||
| 66 | -0:12 1.000000 | ||
| 67 | -0:13 move second child to first child ( temp float) | ||
| 68 | -0:13 'output2' (layout( stream=0) out float) | ||
| 69 | -0:13 Constant: | ||
| 70 | -0:13 2.000000 | ||
| 71 | -0:14 EmitStreamVertex ( global void) | ||
| 72 | -0:14 Constant: | ||
| 73 | -0:14 0 (const int) | ||
| 74 | -0:15 EndStreamPrimitive ( global void) | ||
| 75 | -0:15 Constant: | ||
| 76 | -0:15 0 (const int) | ||
| 77 | -0:16 move second child to first child ( temp float) | ||
| 78 | -0:16 'output3' (layout( stream=1) out float) | ||
| 79 | -0:16 Constant: | ||
| 80 | -0:16 3.000000 | ||
| 81 | -0:17 move second child to first child ( temp float) | ||
| 82 | -0:17 'output4' (layout( stream=1) out float) | ||
| 83 | -0:17 Constant: | ||
| 84 | -0:17 4.000000 | ||
| 85 | -0:18 EmitStreamVertex ( global void) | ||
| 86 | -0:18 Constant: | ||
| 87 | -0:18 1 (const int) | ||
| 88 | -0:19 EndStreamPrimitive ( global void) | ||
| 89 | -0:19 Constant: | ||
| 90 | -0:19 1 (const int) | ||
| 91 | -0:? Linker Objects | ||
| 92 | -0:? 'output1' (layout( stream=0) out float) | ||
| 93 | -0:? 'output2' (layout( stream=0) out float) | ||
| 94 | -0:? 'output3' (layout( stream=1) out float) | ||
| 95 | -0:? 'output4' (layout( stream=1) out float) | ||
| 96 | -0:? 'stream' ( uniform uint) | ||
| 97 | - | ||
| @@ -1,189 +0,0 @@ | |||
| 1 | -GL_ARB_draw_instanced.vert | ||
| 2 | -Shader version: 150 | ||
| 3 | -Requested GL_ARB_draw_instanced | ||
| 4 | -0:? Sequence | ||
| 5 | -0:10 Function Definition: main( ( global void) | ||
| 6 | -0:10 Function Parameters: | ||
| 7 | -0:12 Sequence | ||
| 8 | -0:12 Sequence | ||
| 9 | -0:12 move second child to first child ( temp 4-component vector of float) | ||
| 10 | -0:12 'vertex' ( temp 4-component vector of float) | ||
| 11 | -0:12 add ( temp 4-component vector of float) | ||
| 12 | -0:12 Construct vec4 ( temp 4-component vector of float) | ||
| 13 | -0:12 divide ( temp 2-component vector of float) | ||
| 14 | -0:12 vector swizzle ( temp 2-component vector of float) | ||
| 15 | -0:12 direct index ( temp 4-component vector of float) | ||
| 16 | -0:12 'va' ( in 64-element array of 4-component vector of float) | ||
| 17 | -0:12 Constant: | ||
| 18 | -0:12 0 (const int) | ||
| 19 | -0:12 Sequence | ||
| 20 | -0:12 Constant: | ||
| 21 | -0:12 0 (const int) | ||
| 22 | -0:12 Constant: | ||
| 23 | -0:12 1 (const int) | ||
| 24 | -0:12 Constant: | ||
| 25 | -0:12 3.000000 | ||
| 26 | -0:12 vector swizzle ( temp 2-component vector of float) | ||
| 27 | -0:12 direct index ( temp 4-component vector of float) | ||
| 28 | -0:12 'va' ( in 64-element array of 4-component vector of float) | ||
| 29 | -0:12 Constant: | ||
| 30 | -0:12 0 (const int) | ||
| 31 | -0:12 Sequence | ||
| 32 | -0:12 Constant: | ||
| 33 | -0:12 2 (const int) | ||
| 34 | -0:12 Constant: | ||
| 35 | -0:12 3 (const int) | ||
| 36 | -0:12 Construct vec4 ( temp 4-component vector of float) | ||
| 37 | -0:12 indirect index ( temp 3-component vector of float) | ||
| 38 | -0:12 'instanceOffsets' ( uniform 3-element array of 3-component vector of float) | ||
| 39 | -0:12 'gl_InstanceID' ( gl_InstanceId int InstanceId) | ||
| 40 | -0:12 Constant: | ||
| 41 | -0:12 1.000000 | ||
| 42 | -0:13 move second child to first child ( temp 4-component vector of float) | ||
| 43 | -0:13 'color' ( smooth out 4-component vector of float) | ||
| 44 | -0:13 Constant: | ||
| 45 | -0:13 0.000000 | ||
| 46 | -0:13 0.000000 | ||
| 47 | -0:13 0.000000 | ||
| 48 | -0:13 0.000000 | ||
| 49 | -0:14 Sequence | ||
| 50 | -0:14 Sequence | ||
| 51 | -0:14 move second child to first child ( temp int) | ||
| 52 | -0:14 'i' ( temp int) | ||
| 53 | -0:14 Constant: | ||
| 54 | -0:14 1 (const int) | ||
| 55 | -0:14 Loop with condition tested first | ||
| 56 | -0:14 Loop Condition | ||
| 57 | -0:14 Compare Less Than ( temp bool) | ||
| 58 | -0:14 'i' ( temp int) | ||
| 59 | -0:14 Constant: | ||
| 60 | -0:14 64 (const int) | ||
| 61 | -0:14 Loop Body | ||
| 62 | -0:15 add second child into first child ( temp 4-component vector of float) | ||
| 63 | -0:15 'color' ( smooth out 4-component vector of float) | ||
| 64 | -0:15 indirect index ( temp 4-component vector of float) | ||
| 65 | -0:15 'va' ( in 64-element array of 4-component vector of float) | ||
| 66 | -0:15 'i' ( temp int) | ||
| 67 | -0:14 Loop Terminal Expression | ||
| 68 | -0:14 Post-Increment ( temp int) | ||
| 69 | -0:14 'i' ( temp int) | ||
| 70 | -0:16 move second child to first child ( temp 4-component vector of float) | ||
| 71 | -0:16 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) | ||
| 72 | -0:16 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) | ||
| 73 | -0:16 Constant: | ||
| 74 | -0:16 0 (const uint) | ||
| 75 | -0:16 matrix-times-vector ( temp 4-component vector of float) | ||
| 76 | -0:16 'gtf_ModelViewProjectionMatrix' ( uniform 4X4 matrix of float) | ||
| 77 | -0:16 'vertex' ( temp 4-component vector of float) | ||
| 78 | -0:17 move second child to first child ( temp float) | ||
| 79 | -0:17 gl_PointSize: direct index for structure ( gl_PointSize float PointSize) | ||
| 80 | -0:17 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) | ||
| 81 | -0:17 Constant: | ||
| 82 | -0:17 1 (const uint) | ||
| 83 | -0:17 Constant: | ||
| 84 | -0:17 1.000000 | ||
| 85 | -0:? Linker Objects | ||
| 86 | -0:? 'gtf_ModelViewProjectionMatrix' ( uniform 4X4 matrix of float) | ||
| 87 | -0:? 'instanceOffsets' ( uniform 3-element array of 3-component vector of float) | ||
| 88 | -0:? 'va' ( in 64-element array of 4-component vector of float) | ||
| 89 | -0:? 'color' ( smooth out 4-component vector of float) | ||
| 90 | -0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) | ||
| 91 | -0:? 'gl_VertexID' ( gl_VertexId int VertexId) | ||
| 92 | -0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) | ||
| 93 | - | ||
| 94 | - | ||
| 95 | -Linked vertex stage: | ||
| 96 | - | ||
| 97 | - | ||
| 98 | -Shader version: 150 | ||
| 99 | -Requested GL_ARB_draw_instanced | ||
| 100 | -0:? Sequence | ||
| 101 | -0:10 Function Definition: main( ( global void) | ||
| 102 | -0:10 Function Parameters: | ||
| 103 | -0:12 Sequence | ||
| 104 | -0:12 Sequence | ||
| 105 | -0:12 move second child to first child ( temp 4-component vector of float) | ||
| 106 | -0:12 'vertex' ( temp 4-component vector of float) | ||
| 107 | -0:12 add ( temp 4-component vector of float) | ||
| 108 | -0:12 Construct vec4 ( temp 4-component vector of float) | ||
| 109 | -0:12 divide ( temp 2-component vector of float) | ||
| 110 | -0:12 vector swizzle ( temp 2-component vector of float) | ||
| 111 | -0:12 direct index ( temp 4-component vector of float) | ||
| 112 | -0:12 'va' ( in 64-element array of 4-component vector of float) | ||
| 113 | -0:12 Constant: | ||
| 114 | -0:12 0 (const int) | ||
| 115 | -0:12 Sequence | ||
| 116 | -0:12 Constant: | ||
| 117 | -0:12 0 (const int) | ||
| 118 | -0:12 Constant: | ||
| 119 | -0:12 1 (const int) | ||
| 120 | -0:12 Constant: | ||
| 121 | -0:12 3.000000 | ||
| 122 | -0:12 vector swizzle ( temp 2-component vector of float) | ||
| 123 | -0:12 direct index ( temp 4-component vector of float) | ||
| 124 | -0:12 'va' ( in 64-element array of 4-component vector of float) | ||
| 125 | -0:12 Constant: | ||
| 126 | -0:12 0 (const int) | ||
| 127 | -0:12 Sequence | ||
| 128 | -0:12 Constant: | ||
| 129 | -0:12 2 (const int) | ||
| 130 | -0:12 Constant: | ||
| 131 | -0:12 3 (const int) | ||
| 132 | -0:12 Construct vec4 ( temp 4-component vector of float) | ||
| 133 | -0:12 indirect index ( temp 3-component vector of float) | ||
| 134 | -0:12 'instanceOffsets' ( uniform 3-element array of 3-component vector of float) | ||
| 135 | -0:12 'gl_InstanceID' ( gl_InstanceId int InstanceId) | ||
| 136 | -0:12 Constant: | ||
| 137 | -0:12 1.000000 | ||
| 138 | -0:13 move second child to first child ( temp 4-component vector of float) | ||
| 139 | -0:13 'color' ( smooth out 4-component vector of float) | ||
| 140 | -0:13 Constant: | ||
| 141 | -0:13 0.000000 | ||
| 142 | -0:13 0.000000 | ||
| 143 | -0:13 0.000000 | ||
| 144 | -0:13 0.000000 | ||
| 145 | -0:14 Sequence | ||
| 146 | -0:14 Sequence | ||
| 147 | -0:14 move second child to first child ( temp int) | ||
| 148 | -0:14 'i' ( temp int) | ||
| 149 | -0:14 Constant: | ||
| 150 | -0:14 1 (const int) | ||
| 151 | -0:14 Loop with condition tested first | ||
| 152 | -0:14 Loop Condition | ||
| 153 | -0:14 Compare Less Than ( temp bool) | ||
| 154 | -0:14 'i' ( temp int) | ||
| 155 | -0:14 Constant: | ||
| 156 | -0:14 64 (const int) | ||
| 157 | -0:14 Loop Body | ||
| 158 | -0:15 add second child into first child ( temp 4-component vector of float) | ||
| 159 | -0:15 'color' ( smooth out 4-component vector of float) | ||
| 160 | -0:15 indirect index ( temp 4-component vector of float) | ||
| 161 | -0:15 'va' ( in 64-element array of 4-component vector of float) | ||
| 162 | -0:15 'i' ( temp int) | ||
| 163 | -0:14 Loop Terminal Expression | ||
| 164 | -0:14 Post-Increment ( temp int) | ||
| 165 | -0:14 'i' ( temp int) | ||
| 166 | -0:16 move second child to first child ( temp 4-component vector of float) | ||
| 167 | -0:16 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) | ||
| 168 | -0:16 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) | ||
| 169 | -0:16 Constant: | ||
| 170 | -0:16 0 (const uint) | ||
| 171 | -0:16 matrix-times-vector ( temp 4-component vector of float) | ||
| 172 | -0:16 'gtf_ModelViewProjectionMatrix' ( uniform 4X4 matrix of float) | ||
| 173 | -0:16 'vertex' ( temp 4-component vector of float) | ||
| 174 | -0:17 move second child to first child ( temp float) | ||
| 175 | -0:17 gl_PointSize: direct index for structure ( gl_PointSize float PointSize) | ||
| 176 | -0:17 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) | ||
| 177 | -0:17 Constant: | ||
| 178 | -0:17 1 (const uint) | ||
| 179 | -0:17 Constant: | ||
| 180 | -0:17 1.000000 | ||
| 181 | -0:? Linker Objects | ||
| 182 | -0:? 'gtf_ModelViewProjectionMatrix' ( uniform 4X4 matrix of float) | ||
| 183 | -0:? 'instanceOffsets' ( uniform 3-element array of 3-component vector of float) | ||
| 184 | -0:? 'va' ( in 64-element array of 4-component vector of float) | ||
| 185 | -0:? 'color' ( smooth out 4-component vector of float) | ||
| 186 | -0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) | ||
| 187 | -0:? 'gl_VertexID' ( gl_VertexId int VertexId) | ||
| 188 | -0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) | ||
| 189 | - | ||