From 7867887019541322b08cc31257c447d20e79a40c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert-Andr=C3=A9=20Mauchin?= 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& stages() const { - static std::array 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 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