shaderc/0001-Revert-Add-support-for-SPV_NV_mesh_shader.patch
Robert-André Mauchin 8b725acd6f Release 2018.0
2018-10-03 18:10:23 +02:00

522 lines
21 KiB
Diff

From 7867887019541322b08cc31257c447d20e79a40c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Robert-Andr=C3=A9=20Mauchin?= <zebob.m@gmail.com>
Date: Wed, 3 Oct 2018 16:37:42 +0200
Subject: [PATCH] Revert "Add-support-for-SPV_NV_mesh_shader"
This reverts commit e8ffa069fa40f79824cb1499eaa78cb56af84d0a.
---
CMakeLists.txt | 8 --
glslc/src/shader_stage.cc | 23 +-----
glslc/src/stage_test.cc | 25 ------
libshaderc/include/shaderc/shaderc.h | 27 -------
libshaderc/src/common_shaders_for_test.h | 38 ----------
libshaderc/src/shaderc.cc | 57 --------------
libshaderc/src/shaderc_private.h | 18 -----
libshaderc/src/shaderc_private_test.cc | 18 -----
libshaderc/src/shaderc_test.cc | 76 -------------------
.../include/libshaderc_util/compiler.h | 34 +--------
libshaderc_util/src/resources.cc | 10 ---
11 files changed, 5 insertions(+), 329 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index b982eab..422d9c2 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -19,19 +19,11 @@ else()
message(STATUS "Configuring Shaderc to avoid building tests.")
endif()
-set (CMAKE_CXX_STANDARD 11)
-
-option(SHADERC_ENABLE_NV_EXTENSIONS "Enables support of Nvidia-specific extensions" ON)
include(GNUInstallDirs)
include(cmake/setup_build.cmake)
include(cmake/utils.cmake)
-
-if(SHADERC_ENABLE_NV_EXTENSIONS)
- add_definitions(-DNV_EXTENSIONS)
-endif(SHADERC_ENABLE_NV_EXTENSIONS)
-
add_custom_target(check-copyright ALL
${PYTHON_EXE} ${CMAKE_CURRENT_SOURCE_DIR}/utils/add_copyright.py
--check
diff --git a/glslc/src/shader_stage.cc b/glslc/src/shader_stage.cc
index 3e4716d..142195a 100644
--- a/glslc/src/shader_stage.cc
+++ b/glslc/src/shader_stage.cc
@@ -43,18 +43,7 @@ shaderc_shader_kind MapStageNameToForcedKind(const string_piece& stage_name) {
{"geometry", shaderc_glsl_geometry_shader},
{"geom", shaderc_glsl_geometry_shader},
{"compute", shaderc_glsl_compute_shader},
- {"comp", shaderc_glsl_compute_shader},
-#ifdef NV_EXTENSIONS
- {"rgen", shaderc_glsl_raygen_shader },
- {"rahit", shaderc_glsl_anyhit_shader },
- {"rchit", shaderc_glsl_closesthit_shader },
- {"rmiss", shaderc_glsl_miss_shader },
- {"rint", shaderc_glsl_intersection_shader },
- {"rcall", shaderc_glsl_callable_shader },
- {"task", shaderc_glsl_task_shader },
- {"mesh", shaderc_glsl_mesh_shader },
-#endif
- };
+ {"comp", shaderc_glsl_compute_shader}};
for (const auto& entry : string_to_kind) {
if (stage_name == entry.id) return entry.stage;
}
@@ -79,16 +68,6 @@ shaderc_shader_kind DeduceDefaultShaderKindFromFileName(
{"geom", shaderc_glsl_default_geometry_shader},
{"comp", shaderc_glsl_default_compute_shader},
{"spvasm", shaderc_spirv_assembly},
-#ifdef NV_EXTENSIONS
- {"rgen", shaderc_glsl_default_raygen_shader },
- {"rahit", shaderc_glsl_default_anyhit_shader },
- {"rchit", shaderc_glsl_default_closesthit_shader },
- {"rmiss", shaderc_glsl_default_miss_shader },
- {"rint", shaderc_glsl_default_intersection_shader },
- {"rcall", shaderc_glsl_default_callable_shader },
- {"task", shaderc_glsl_default_task_shader },
- {"mesh", shaderc_glsl_default_mesh_shader },
-#endif
};
const string_piece extension = glslc::GetFileExtension(file_name);
diff --git a/glslc/src/stage_test.cc b/glslc/src/stage_test.cc
index 80eef92..2ee0271 100644
--- a/glslc/src/stage_test.cc
+++ b/glslc/src/stage_test.cc
@@ -49,31 +49,6 @@ TEST(DeduceDefaultShaderKindFromFileName, ValidStage) {
EXPECT_EQ(shaderc_glsl_default_compute_shader,
glslc::DeduceDefaultShaderKindFromFileName("a.comp"));
-#ifdef NV_EXTENSIONS
- EXPECT_EQ(shaderc_glsl_default_raygen_shader,
- glslc::DeduceDefaultShaderKindFromFileName("a.rgen"));
-
- EXPECT_EQ(shaderc_glsl_default_anyhit_shader,
- glslc::DeduceDefaultShaderKindFromFileName("a.rahit"));
-
- EXPECT_EQ(shaderc_glsl_default_closesthit_shader,
- glslc::DeduceDefaultShaderKindFromFileName("a.rchit"));
-
- EXPECT_EQ(shaderc_glsl_default_miss_shader,
- glslc::DeduceDefaultShaderKindFromFileName("a.rmiss"));
-
- EXPECT_EQ(shaderc_glsl_default_intersection_shader,
- glslc::DeduceDefaultShaderKindFromFileName("a.rint"));
-
- EXPECT_EQ(shaderc_glsl_default_callable_shader,
- glslc::DeduceDefaultShaderKindFromFileName("a.rcall"));
-
- EXPECT_EQ(shaderc_glsl_default_task_shader,
- glslc::DeduceDefaultShaderKindFromFileName("a.task"));
-
- EXPECT_EQ(shaderc_glsl_default_mesh_shader,
- glslc::DeduceDefaultShaderKindFromFileName("a.mesh"));
-#endif
}
TEST(DeduceDefaultShaderKindFromFileName, InvalidStage) {
diff --git a/libshaderc/include/shaderc/shaderc.h b/libshaderc/include/shaderc/shaderc.h
index 6addebf..093bb12 100644
--- a/libshaderc/include/shaderc/shaderc.h
+++ b/libshaderc/include/shaderc/shaderc.h
@@ -64,7 +64,6 @@ typedef enum {
shaderc_glsl_geometry_shader = shaderc_geometry_shader,
shaderc_glsl_tess_control_shader = shaderc_tess_control_shader,
shaderc_glsl_tess_evaluation_shader = shaderc_tess_evaluation_shader,
-
// Deduce the shader kind from #pragma annotation in the source code. Compiler
// will emit error if #pragma annotation is not found.
shaderc_glsl_infer_from_source,
@@ -78,32 +77,6 @@ typedef enum {
shaderc_glsl_default_tess_control_shader,
shaderc_glsl_default_tess_evaluation_shader,
shaderc_spirv_assembly,
-#ifdef NV_EXTENSIONS
- shaderc_raygen_shader,
- shaderc_anyhit_shader,
- shaderc_closesthit_shader,
- shaderc_miss_shader,
- shaderc_intersection_shader,
- shaderc_callable_shader,
- shaderc_glsl_raygen_shader = shaderc_raygen_shader,
- shaderc_glsl_anyhit_shader = shaderc_anyhit_shader,
- shaderc_glsl_closesthit_shader = shaderc_closesthit_shader,
- shaderc_glsl_miss_shader = shaderc_miss_shader,
- shaderc_glsl_intersection_shader = shaderc_intersection_shader,
- shaderc_glsl_callable_shader = shaderc_callable_shader,
- shaderc_glsl_default_raygen_shader,
- shaderc_glsl_default_anyhit_shader,
- shaderc_glsl_default_closesthit_shader,
- shaderc_glsl_default_miss_shader,
- shaderc_glsl_default_intersection_shader,
- shaderc_glsl_default_callable_shader,
- shaderc_task_shader,
- shaderc_mesh_shader,
- shaderc_glsl_task_shader = shaderc_task_shader,
- shaderc_glsl_mesh_shader = shaderc_mesh_shader,
- shaderc_glsl_default_task_shader,
- shaderc_glsl_default_mesh_shader,
-#endif
} shaderc_shader_kind;
typedef enum {
diff --git a/libshaderc/src/common_shaders_for_test.h b/libshaderc/src/common_shaders_for_test.h
index e1e52be..d4e15c1 100644
--- a/libshaderc/src/common_shaders_for_test.h
+++ b/libshaderc/src/common_shaders_for_test.h
@@ -259,44 +259,6 @@ const char kGlslShaderComputeSubgroupBarrier[] =
#extension GL_KHR_shader_subgroup_basic : enable
void main() { subgroupBarrier(); })";
-#ifdef NV_EXTENSIONS
-// A GLSL task shader using a regular barrier.
-const char kGlslShaderTaskBarrier[] =
- R"(#version 450
- #extension GL_NV_mesh_shader : enable
- layout(local_size_x = 32) in;
- void main() { barrier(); })";
-
-// A GLSL task shader using the Subgroups feature.
-const char kGlslShaderTaskSubgroupBarrier[] =
- R"(#version 450
- #extension GL_NV_mesh_shader : enable
- #extension GL_KHR_shader_subgroup_basic : enable
- layout(local_size_x = 32) in;
- void main() { subgroupBarrier(); })";
-
-// A GLSL mesh shader using a regular barrier.
-const char kGlslShaderMeshBarrier[] =
- R"(#version 450
- #extension GL_NV_mesh_shader : enable
- layout(local_size_x = 32) in;
- layout(max_vertices=81) out;
- layout(max_primitives=32) out;
- layout(triangles) out;
- void main() { barrier(); })";
-
-// A GLSL mesh shader using the Subgroups feature.
-const char kGlslShaderMeshSubgroupBarrier[] =
- R"(#version 450
- #extension GL_NV_mesh_shader : enable
- #extension GL_KHR_shader_subgroup_basic : enable
- layout(local_size_x = 32) in;
- layout(max_vertices=81) out;
- layout(max_primitives=32) out;
- layout(triangles) out;
- void main() { subgroupBarrier(); })";
-#endif
-
const char kGlslMultipleFnShader[] =
R"(#version 450
layout(location=0) flat in int inVal;
diff --git a/libshaderc/src/shaderc.cc b/libshaderc/src/shaderc.cc
index 5f5db16..17a6562 100644
--- a/libshaderc/src/shaderc.cc
+++ b/libshaderc/src/shaderc.cc
@@ -56,26 +56,6 @@ EShLanguage GetForcedStage(shaderc_shader_kind kind) {
return EShLangTessControl;
case shaderc_glsl_tess_evaluation_shader:
return EShLangTessEvaluation;
-
-#ifdef NV_EXTENSIONS
- case shaderc_glsl_raygen_shader:
- return EShLangRayGenNV;
- case shaderc_glsl_anyhit_shader:
- return EShLangAnyHitNV;
- case shaderc_glsl_closesthit_shader:
- return EShLangClosestHitNV;
- case shaderc_glsl_miss_shader:
- return EShLangMissNV;
- case shaderc_glsl_intersection_shader:
- return EShLangIntersectNV;
- case shaderc_glsl_callable_shader:
- return EShLangCallableNV;
- case shaderc_glsl_task_shader:
- return EShLangTaskNV;
- case shaderc_glsl_mesh_shader:
- return EShLangMeshNV;
-#endif
-
case shaderc_glsl_infer_from_source:
case shaderc_glsl_default_vertex_shader:
case shaderc_glsl_default_fragment_shader:
@@ -83,16 +63,6 @@ EShLanguage GetForcedStage(shaderc_shader_kind kind) {
case shaderc_glsl_default_geometry_shader:
case shaderc_glsl_default_tess_control_shader:
case shaderc_glsl_default_tess_evaluation_shader:
-#ifdef NV_EXTENSIONS
- case shaderc_glsl_default_raygen_shader:
- case shaderc_glsl_default_anyhit_shader:
- case shaderc_glsl_default_closesthit_shader:
- case shaderc_glsl_default_miss_shader:
- case shaderc_glsl_default_intersection_shader:
- case shaderc_glsl_default_callable_shader:
- case shaderc_glsl_default_task_shader:
- case shaderc_glsl_default_mesh_shader:
-#endif
case shaderc_spirv_assembly:
return EShLangCount;
}
@@ -150,16 +120,6 @@ class StageDeducer {
case shaderc_glsl_tess_control_shader:
case shaderc_glsl_tess_evaluation_shader:
case shaderc_glsl_infer_from_source:
-#ifdef NV_EXTENSIONS
- case shaderc_glsl_raygen_shader:
- case shaderc_glsl_anyhit_shader:
- case shaderc_glsl_closesthit_shader:
- case shaderc_glsl_miss_shader:
- case shaderc_glsl_intersection_shader:
- case shaderc_glsl_callable_shader:
- case shaderc_glsl_task_shader:
- case shaderc_glsl_mesh_shader:
-#endif
return EShLangCount;
case shaderc_glsl_default_vertex_shader:
return EShLangVertex;
@@ -173,23 +133,6 @@ class StageDeducer {
return EShLangTessControl;
case shaderc_glsl_default_tess_evaluation_shader:
return EShLangTessEvaluation;
-#ifdef NV_EXTENSIONS
- case shaderc_glsl_default_raygen_shader:
- return EShLangRayGenNV;
- case shaderc_glsl_default_anyhit_shader:
- return EShLangAnyHitNV;
- case shaderc_glsl_default_closesthit_shader:
- return EShLangClosestHitNV;
- case shaderc_glsl_default_miss_shader:
- return EShLangMissNV;
- case shaderc_glsl_default_intersection_shader:
- return EShLangIntersectNV;
- case shaderc_glsl_default_callable_shader:
- return EShLangCallableNV;
- case shaderc_glsl_default_task_shader:
- return EShLangTaskNV;
- case shaderc_glsl_default_mesh_shader:
-#endif
case shaderc_spirv_assembly:
return EShLangCount;
}
diff --git a/libshaderc/src/shaderc_private.h b/libshaderc/src/shaderc_private.h
index 30dc863..47de8f5 100644
--- a/libshaderc/src/shaderc_private.h
+++ b/libshaderc/src/shaderc_private.h
@@ -111,24 +111,6 @@ inline shaderc_util::Compiler::Stage shaderc_convert_specific_stage(
return shaderc_util::Compiler::Stage::Geometry;
case shaderc_compute_shader:
return shaderc_util::Compiler::Stage::Compute;
-#if NV_EXTENSIONS
- case shaderc_raygen_shader:
- return shaderc_util::Compiler::Stage::RayGenNV;
- case shaderc_intersection_shader:
- return shaderc_util::Compiler::Stage::IntersectNV;
- case shaderc_anyhit_shader:
- return shaderc_util::Compiler::Stage::AnyHitNV;
- case shaderc_closesthit_shader:
- return shaderc_util::Compiler::Stage::ClosestHitNV;
- case shaderc_miss_shader:
- return shaderc_util::Compiler::Stage::MissNV;
- case shaderc_callable_shader:
- return shaderc_util::Compiler::Stage::CallableNV;
- case shaderc_task_shader:
- return shaderc_util::Compiler::Stage::TaskNV;
- case shaderc_mesh_shader:
- return shaderc_util::Compiler::Stage::MeshNV;
-#endif
default:
// We don't care about the other kinds.
break;
diff --git a/libshaderc/src/shaderc_private_test.cc b/libshaderc/src/shaderc_private_test.cc
index 3b64551..2d6ebf8 100644
--- a/libshaderc/src/shaderc_private_test.cc
+++ b/libshaderc/src/shaderc_private_test.cc
@@ -30,23 +30,5 @@ TEST(ConvertSpecificStage, Exhaustive) {
shaderc_convert_specific_stage(shaderc_geometry_shader));
EXPECT_EQ(shaderc_util::Compiler::Stage::Compute,
shaderc_convert_specific_stage(shaderc_compute_shader));
-#ifdef NV_EXTENSIONS
- EXPECT_EQ(shaderc_util::Compiler::Stage::RayGenNV,
- shaderc_convert_specific_stage(shaderc_raygen_shader));
- EXPECT_EQ(shaderc_util::Compiler::Stage::AnyHitNV,
- shaderc_convert_specific_stage(shaderc_anyhit_shader));
- EXPECT_EQ(shaderc_util::Compiler::Stage::ClosestHitNV,
- shaderc_convert_specific_stage(shaderc_closesthit_shader));
- EXPECT_EQ(shaderc_util::Compiler::Stage::IntersectNV,
- shaderc_convert_specific_stage(shaderc_intersection_shader));
- EXPECT_EQ(shaderc_util::Compiler::Stage::MissNV,
- shaderc_convert_specific_stage(shaderc_miss_shader));
- EXPECT_EQ(shaderc_util::Compiler::Stage::CallableNV,
- shaderc_convert_specific_stage(shaderc_callable_shader));
- EXPECT_EQ(shaderc_util::Compiler::Stage::TaskNV,
- shaderc_convert_specific_stage(shaderc_task_shader));
- EXPECT_EQ(shaderc_util::Compiler::Stage::MeshNV,
- shaderc_convert_specific_stage(shaderc_mesh_shader));
-#endif
}
} // anonymous namespace
diff --git a/libshaderc/src/shaderc_test.cc b/libshaderc/src/shaderc_test.cc
index e68ebcb..93acc09 100644
--- a/libshaderc/src/shaderc_test.cc
+++ b/libshaderc/src/shaderc_test.cc
@@ -1198,82 +1198,6 @@ TEST_F(CompileStringWithOptionsTest,
shaderc_glsl_compute_shader, options_.get()));
}
-#ifdef NV_EXTENSIONS
-// task shader
-TEST_F(CompileStringWithOptionsTest,
- TargetEnvRespectedWhenCompilingVulkan1_0TaskShaderToVulkan1_0Succeeds) {
- shaderc_compile_options_set_target_env(options_.get(),
- shaderc_target_env_vulkan,
- shaderc_env_version_vulkan_1_0);
- EXPECT_TRUE(CompilesToValidSpv(compiler_, kGlslShaderTaskBarrier,
- shaderc_glsl_task_shader, options_.get()));
-}
-
-TEST_F(CompileStringWithOptionsTest,
- TargetEnvRespectedWhenCompilingVulkan1_0TaskShaderToVulkan1_1Succeeds) {
- shaderc_compile_options_set_target_env(options_.get(),
- shaderc_target_env_vulkan,
- shaderc_env_version_vulkan_1_1);
- EXPECT_TRUE(CompilesToValidSpv(compiler_, kGlslShaderTaskBarrier,
- shaderc_glsl_task_shader, options_.get()));
-}
-
-TEST_F(CompileStringWithOptionsTest,
- TargetEnvRespectedWhenCompilingVulkan1_1TaskShaderToVulkan1_0Fails) {
- shaderc_compile_options_set_target_env(options_.get(),
- shaderc_target_env_vulkan,
- shaderc_env_version_vulkan_1_0);
- EXPECT_FALSE(CompilesToValidSpv(compiler_, kGlslShaderTaskSubgroupBarrier,
- shaderc_glsl_task_shader, options_.get()));
-}
-
-TEST_F(CompileStringWithOptionsTest,
- TargetEnvRespectedWhenCompilingVulkan1_1TaskShaderToVulkan1_1Succeeds) {
- shaderc_compile_options_set_target_env(options_.get(),
- shaderc_target_env_vulkan,
- shaderc_env_version_vulkan_1_1);
- EXPECT_TRUE(CompilesToValidSpv(compiler_, kGlslShaderTaskSubgroupBarrier,
- shaderc_glsl_task_shader, options_.get()));
-}
-
-// mesh shader
-TEST_F(CompileStringWithOptionsTest,
- TargetEnvRespectedWhenCompilingVulkan1_0MeshShaderToVulkan1_0Succeeds) {
- shaderc_compile_options_set_target_env(options_.get(),
- shaderc_target_env_vulkan,
- shaderc_env_version_vulkan_1_0);
- EXPECT_TRUE(CompilesToValidSpv(compiler_, kGlslShaderMeshBarrier,
- shaderc_glsl_mesh_shader, options_.get()));
-}
-
-TEST_F(CompileStringWithOptionsTest,
- TargetEnvRespectedWhenCompilingVulkan1_0MeshShaderToVulkan1_1Succeeds) {
- shaderc_compile_options_set_target_env(options_.get(),
- shaderc_target_env_vulkan,
- shaderc_env_version_vulkan_1_1);
- EXPECT_TRUE(CompilesToValidSpv(compiler_, kGlslShaderMeshBarrier,
- shaderc_glsl_mesh_shader, options_.get()));
-}
-
-TEST_F(CompileStringWithOptionsTest,
- TargetEnvRespectedWhenCompilingVulkan1_1MeshShaderToVulkan1_0Fails) {
- shaderc_compile_options_set_target_env(options_.get(),
- shaderc_target_env_vulkan,
- shaderc_env_version_vulkan_1_0);
- EXPECT_FALSE(CompilesToValidSpv(compiler_, kGlslShaderMeshSubgroupBarrier,
- shaderc_glsl_mesh_shader, options_.get()));
-}
-
-TEST_F(CompileStringWithOptionsTest,
- TargetEnvRespectedWhenCompilingVulkan1_1MeshShaderToVulkan1_1Succeeds) {
- shaderc_compile_options_set_target_env(options_.get(),
- shaderc_target_env_vulkan,
- shaderc_env_version_vulkan_1_1);
- EXPECT_TRUE(CompilesToValidSpv(compiler_, kGlslShaderMeshSubgroupBarrier,
- shaderc_glsl_mesh_shader, options_.get()));
-}
-#endif
-
TEST_F(CompileStringWithOptionsTest,
DISABLED_TargetEnvIgnoredWhenPreprocessing) {
// This test is disabled since some versions of glslang may refuse to compile
diff --git a/libshaderc_util/include/libshaderc_util/compiler.h b/libshaderc_util/include/libshaderc_util/compiler.h
index f36a97f..bbbab86 100644
--- a/libshaderc_util/include/libshaderc_util/compiler.h
+++ b/libshaderc_util/include/libshaderc_util/compiler.h
@@ -171,40 +171,14 @@ class Compiler {
Geometry,
Fragment,
Compute,
-#ifdef NV_EXTENSIONS
- RayGenNV,
- IntersectNV,
- AnyHitNV,
- ClosestHitNV,
- MissNV,
- CallableNV,
- TaskNV,
- MeshNV,
-#endif
- StageEnd,
};
- enum { kNumStages = int(Stage::StageEnd) };
+ enum { kNumStages = int(Stage::Compute) + 1 };
// Returns a std::array of all the Stage values.
const std::array<Stage, kNumStages>& stages() const {
- static std::array<Stage, kNumStages> values{{
- Stage::Vertex,
- Stage::TessEval,
- Stage::TessControl,
- Stage::Geometry,
- Stage::Fragment,
- Stage::Compute,
-#ifdef NV_EXTENSIONS
- Stage::RayGenNV,
- Stage::IntersectNV,
- Stage::AnyHitNV,
- Stage::ClosestHitNV,
- Stage::MissNV,
- Stage::CallableNV,
- Stage::TaskNV,
- Stage::MeshNV,
-#endif
- }};
+ static std::array<Stage, kNumStages> values{
+ {Stage::Vertex, Stage::TessEval, Stage::TessControl, Stage::Geometry,
+ Stage::Fragment, Stage::Compute}};
return values;
}
diff --git a/libshaderc_util/src/resources.cc b/libshaderc_util/src/resources.cc
index 458a63f..1617b0a 100644
--- a/libshaderc_util/src/resources.cc
+++ b/libshaderc_util/src/resources.cc
@@ -116,16 +116,6 @@ const TBuiltInResource kDefaultTBuiltInResource = {
/*.maxCullDistances = */ 8, // ARB_cull_distance.
/*.maxCombinedClipAndCullDistances = */ 8, // ARB_cull_distance.
/*.maxSamples = */ 4,
- /* .maxMeshOutputVerticesNV = */ 256,
- /* .maxMeshOutputPrimitivesNV = */ 512,
- /* .maxMeshWorkGroupSizeX_NV = */ 32,
- /* .maxMeshWorkGroupSizeY_NV = */ 1,
- /* .maxMeshWorkGroupSizeZ_NV = */ 1,
- /* .maxTaskWorkGroupSizeX_NV = */ 32,
- /* .maxTaskWorkGroupSizeY_NV = */ 1,
- /* .maxTaskWorkGroupSizeZ_NV = */ 1,
- /* .maxMeshViewCountNV = */ 4,
-
// This is the glslang TLimits structure.
// It defines whether or not the following features are enabled.
// We want them to all be enabled.
--
2.19.0