[Impeller] Delete tessellation control/eval shader support. (flutter/engine#48649)

We have no plans to ever use these for anything.
This commit is contained in:
Jonah Williams 2023-12-05 09:11:11 -08:00 committed by GitHub
parent 210ec33b64
commit 7bad7a0150
21 changed files with 5 additions and 146 deletions

View File

@ -18,10 +18,6 @@ namespace testing {
TEST(CompilerTest, ShaderKindMatchingIsSuccessful) {
ASSERT_EQ(SourceTypeFromFileName("hello.vert"), SourceType::kVertexShader);
ASSERT_EQ(SourceTypeFromFileName("hello.frag"), SourceType::kFragmentShader);
ASSERT_EQ(SourceTypeFromFileName("hello.tesc"),
SourceType::kTessellationControlShader);
ASSERT_EQ(SourceTypeFromFileName("hello.tese"),
SourceType::kTessellationEvaluationShader);
ASSERT_EQ(SourceTypeFromFileName("hello.comp"), SourceType::kComputeShader);
ASSERT_EQ(SourceTypeFromFileName("hello.msl"), SourceType::kUnknown);
ASSERT_EQ(SourceTypeFromFileName("hello.glsl"), SourceType::kUnknown);
@ -57,24 +53,6 @@ TEST_P(CompilerTest, CanCompileHLSLWithMultipleStages) {
SourceLanguage::kHLSL, "FragmentShader"));
}
TEST_P(CompilerTest, CanCompileTessellationControlShader) {
if (GetParam() == TargetPlatform::kSkSL) {
GTEST_SKIP() << "Not supported with SkSL";
}
ASSERT_TRUE(CanCompileAndReflect("sample.tesc"));
ASSERT_TRUE(CanCompileAndReflect("sample.tesc",
SourceType::kTessellationControlShader));
}
TEST_P(CompilerTest, CanCompileTessellationEvaluationShader) {
if (GetParam() == TargetPlatform::kSkSL) {
GTEST_SKIP() << "Not supported with SkSL";
}
ASSERT_TRUE(CanCompileAndReflect("sample.tese"));
ASSERT_TRUE(CanCompileAndReflect("sample.tese",
SourceType::kTessellationEvaluationShader));
}
TEST_P(CompilerTest, CanCompileComputeShader) {
if (!TargetPlatformIsMetal(GetParam())) {
GTEST_SKIP_("Only enabled on Metal backends till ES 3.2 support is added.");

View File

@ -76,10 +76,6 @@ static std::string ExecutionModelToString(spv::ExecutionModel model) {
return "vertex";
case spv::ExecutionModel::ExecutionModelFragment:
return "fragment";
case spv::ExecutionModel::ExecutionModelTessellationControl:
return "tessellation_control";
case spv::ExecutionModel::ExecutionModelTessellationEvaluation:
return "tessellation_evaluation";
case spv::ExecutionModel::ExecutionModelGLCompute:
return "compute";
default:
@ -96,14 +92,6 @@ static std::string StringToShaderStage(std::string str) {
return "ShaderStage::kFragment";
}
if (str == "tessellation_control") {
return "ShaderStage::kTessellationControl";
}
if (str == "tessellation_evaluation") {
return "ShaderStage::kTessellationEvaluation";
}
if (str == "compute") {
return "ShaderStage::kCompute";
}

View File

@ -45,28 +45,20 @@ static std::optional<fb::Stage> ToStage(spv::ExecutionModel stage) {
return fb::Stage::kFragment;
case spv::ExecutionModel::ExecutionModelGLCompute:
return fb::Stage::kCompute;
case spv::ExecutionModel::ExecutionModelTessellationControl:
return fb::Stage::kTessellationControl;
case spv::ExecutionModel::ExecutionModelTessellationEvaluation:
return fb::Stage::kTessellationEvaluation;
default:
return std::nullopt;
}
FML_UNREACHABLE();
}
static std::optional<uint32_t> ToJsonStage(spv::ExecutionModel stage) {
static std::optional<fb::Stage> ToJsonStage(spv::ExecutionModel stage) {
switch (stage) {
case spv::ExecutionModel::ExecutionModelVertex:
return 0; // fb::Stage::kVertex;
return fb::Stage::kVertex;
case spv::ExecutionModel::ExecutionModelFragment:
return 1; // fb::Stage::kFragment;
return fb::Stage::kFragment;
case spv::ExecutionModel::ExecutionModelGLCompute:
return 2; // fb::Stage::kCompute;
case spv::ExecutionModel::ExecutionModelTessellationControl:
return 3; // fb::Stage::kTessellationControl;
case spv::ExecutionModel::ExecutionModelTessellationEvaluation:
return 4; // fb::Stage::kTessellationEvaluation;
return fb::Stage::kCompute;
default:
return std::nullopt;
}
@ -246,7 +238,7 @@ std::shared_ptr<fml::Mapping> RuntimeStageData::CreateJsonMapping() const {
VALIDATION_LOG << "Invalid runtime stage.";
return nullptr;
}
root[kStageKey] = stage.value();
root[kStageKey] = static_cast<uint32_t>(stage.value());
const auto target_platform = ToJsonTargetPlatform(target_platform_);
if (!target_platform.has_value()) {

View File

@ -31,8 +31,6 @@ static const std::map<std::string, TargetPlatform> kKnownPlatforms = {
static const std::map<std::string, SourceType> kKnownSourceTypes = {
{"vert", SourceType::kVertexShader},
{"frag", SourceType::kFragmentShader},
{"tesc", SourceType::kTessellationControlShader},
{"tese", SourceType::kTessellationEvaluationShader},
{"comp", SourceType::kComputeShader},
};

View File

@ -35,14 +35,6 @@ SourceType SourceTypeFromFileName(const std::string& file_name) {
return SourceType::kFragmentShader;
}
if (StringEndWith(file_name, ".tesc")) {
return SourceType::kTessellationControlShader;
}
if (StringEndWith(file_name, ".tese")) {
return SourceType::kTessellationEvaluationShader;
}
if (StringEndWith(file_name, ".comp")) {
return SourceType::kComputeShader;
}
@ -109,12 +101,6 @@ std::string EntryPointFunctionNameFromSourceName(
case SourceType::kFragmentShader:
stream << "fragment";
break;
case SourceType::kTessellationControlShader:
stream << "tess_control";
break;
case SourceType::kTessellationEvaluationShader:
stream << "tess_eval";
break;
case SourceType::kComputeShader:
stream << "compute";
break;
@ -172,10 +158,6 @@ shaderc_shader_kind ToShaderCShaderKind(SourceType type) {
return shaderc_shader_kind::shaderc_vertex_shader;
case SourceType::kFragmentShader:
return shaderc_shader_kind::shaderc_fragment_shader;
case SourceType::kTessellationControlShader:
return shaderc_shader_kind::shaderc_tess_control_shader;
case SourceType::kTessellationEvaluationShader:
return shaderc_shader_kind::shaderc_tess_evaluation_shader;
case SourceType::kComputeShader:
return shaderc_shader_kind::shaderc_compute_shader;
case SourceType::kUnknown:
@ -190,10 +172,6 @@ spv::ExecutionModel ToExecutionModel(SourceType type) {
return spv::ExecutionModel::ExecutionModelVertex;
case SourceType::kFragmentShader:
return spv::ExecutionModel::ExecutionModelFragment;
case SourceType::kTessellationControlShader:
return spv::ExecutionModel::ExecutionModelTessellationControl;
case SourceType::kTessellationEvaluationShader:
return spv::ExecutionModel::ExecutionModelTessellationEvaluation;
case SourceType::kComputeShader:
return spv::ExecutionModel::ExecutionModelGLCompute;
case SourceType::kUnknown:
@ -230,10 +208,6 @@ std::string SourceTypeToString(SourceType type) {
return "vert";
case SourceType::kFragmentShader:
return "frag";
case SourceType::kTessellationControlShader:
return "tesc";
case SourceType::kTessellationEvaluationShader:
return "tese";
case SourceType::kComputeShader:
return "comp";
}

View File

@ -20,8 +20,6 @@ enum class SourceType {
kUnknown,
kVertexShader,
kFragmentShader,
kTessellationControlShader,
kTessellationEvaluationShader,
kComputeShader,
};

View File

@ -30,8 +30,6 @@ enum class RuntimeShaderStage {
kVertex,
kFragment,
kCompute,
kTessellationControl,
kTessellationEvaluation,
};
struct RuntimeUniformDimensions {

View File

@ -22,8 +22,6 @@ enum class ShaderStage {
kUnknown,
kVertex,
kFragment,
kTessellationControl,
kTessellationEvaluation,
kCompute,
};
@ -35,10 +33,6 @@ constexpr ShaderStage ToShaderStage(RuntimeShaderStage stage) {
return ShaderStage::kFragment;
case RuntimeShaderStage::kCompute:
return ShaderStage::kCompute;
case RuntimeShaderStage::kTessellationControl:
return ShaderStage::kTessellationControl;
case RuntimeShaderStage::kTessellationEvaluation:
return ShaderStage::kTessellationEvaluation;
}
FML_UNREACHABLE();
}

View File

@ -82,8 +82,6 @@ test_fixtures("file_fixtures") {
"resources_limit.vert",
"sample.comp",
"sample.frag",
"sample.tesc",
"sample.tese",
"sample.vert",
"sample_with_binding.vert",
"simple.vert.hlsl",

View File

@ -1,5 +0,0 @@
layout(vertices = 4) out;
void main() {
gl_out[gl_InvocationID].gl_Position = gl_in[gl_InvocationID].gl_Position;
}

View File

@ -1,12 +0,0 @@
layout(quads, equal_spacing, ccw) in;
void main() {
float u = gl_TessCoord.x;
float omu = 1 - u;
float v = gl_TessCoord.y;
float omv = 1 - v;
gl_Position = omu * omv * gl_in[0].gl_Position +
u * omv * gl_in[1].gl_Position + u * v * gl_in[2].gl_Position +
omu * v * gl_in[3].gl_Position;
}

View File

@ -126,8 +126,6 @@ size_t CapabilitiesGLES::GetMaxTextureUnits(ShaderStage stage) const {
case ShaderStage::kFragment:
return max_texture_image_units;
case ShaderStage::kUnknown:
case ShaderStage::kTessellationControl:
case ShaderStage::kTessellationEvaluation:
case ShaderStage::kCompute:
return 0u;
}

View File

@ -63,12 +63,6 @@ static void LogShaderCompilationFailure(const ProcTableGLES& gl,
case ShaderStage::kFragment:
stream << "fragment";
break;
case ShaderStage::kTessellationControl:
stream << "tessellation control";
break;
case ShaderStage::kTessellationEvaluation:
stream << "tessellation evaluation";
break;
case ShaderStage::kCompute:
stream << "compute";
break;

View File

@ -41,12 +41,6 @@ static std::string GLESShaderNameToShaderKeyName(const std::string& name,
case ShaderStage::kFragment:
stream << "_fragment_";
break;
case ShaderStage::kTessellationControl:
stream << "_tessellation_control_";
break;
case ShaderStage::kTessellationEvaluation:
stream << "_tessellation_evaluation_";
break;
case ShaderStage::kCompute:
stream << "_compute_";
break;

View File

@ -32,8 +32,6 @@ static MTLFunctionType ToMTLFunctionType(ShaderStage stage) {
case ShaderStage::kFragment:
return MTLFunctionTypeFragment;
case ShaderStage::kUnknown:
case ShaderStage::kTessellationControl:
case ShaderStage::kTessellationEvaluation:
case ShaderStage::kCompute:
return MTLFunctionTypeKernel;
}

View File

@ -125,10 +125,6 @@ constexpr std::optional<vk::ShaderStageFlagBits> ToVKShaderStageFlagBits(
return vk::ShaderStageFlagBits::eVertex;
case ShaderStage::kFragment:
return vk::ShaderStageFlagBits::eFragment;
case ShaderStage::kTessellationControl:
return vk::ShaderStageFlagBits::eTessellationControl;
case ShaderStage::kTessellationEvaluation:
return vk::ShaderStageFlagBits::eTessellationEvaluation;
case ShaderStage::kCompute:
return vk::ShaderStageFlagBits::eCompute;
}
@ -259,10 +255,6 @@ constexpr vk::ShaderStageFlags ToVkShaderStage(ShaderStage stage) {
return vk::ShaderStageFlagBits::eAll;
case ShaderStage::kFragment:
return vk::ShaderStageFlagBits::eFragment;
case ShaderStage::kTessellationControl:
return vk::ShaderStageFlagBits::eTessellationControl;
case ShaderStage::kTessellationEvaluation:
return vk::ShaderStageFlagBits::eTessellationEvaluation;
case ShaderStage::kCompute:
return vk::ShaderStageFlagBits::eCompute;
case ShaderStage::kVertex:

View File

@ -41,12 +41,6 @@ static std::string VKShaderNameToShaderKeyName(const std::string& name,
case ShaderStage::kFragment:
stream << "_fragment_";
break;
case ShaderStage::kTessellationControl:
stream << "_tessellation_control_";
break;
case ShaderStage::kTessellationEvaluation:
stream << "_tessellation_evaluation_";
break;
case ShaderStage::kCompute:
stream << "_compute_";
break;

View File

@ -66,8 +66,6 @@ bool Command::DoBindResource(ShaderStage stage,
return true;
case ShaderStage::kCompute:
VALIDATION_LOG << "Use ComputeCommands for compute shader stages.";
case ShaderStage::kTessellationControl:
case ShaderStage::kTessellationEvaluation:
case ShaderStage::kUnknown:
return false;
}
@ -108,8 +106,6 @@ bool Command::BindResource(ShaderStage stage,
case ShaderStage::kCompute:
VALIDATION_LOG << "Use ComputeCommands for compute shader stages.";
case ShaderStage::kUnknown:
case ShaderStage::kTessellationControl:
case ShaderStage::kTessellationEvaluation:
return false;
}

View File

@ -51,10 +51,6 @@ static RuntimeShaderStage ToShaderStage(fb::Stage stage) {
return RuntimeShaderStage::kFragment;
case fb::Stage::kCompute:
return RuntimeShaderStage::kCompute;
case fb::Stage::kTessellationControl:
return RuntimeShaderStage::kTessellationControl;
case fb::Stage::kTessellationEvaluation:
return RuntimeShaderStage::kTessellationEvaluation;
}
FML_UNREACHABLE();
}

View File

@ -8,8 +8,6 @@ enum Stage:byte {
kVertex,
kFragment,
kCompute,
kTessellationControl,
kTessellationEvaluation,
}
enum TargetPlatform:byte {

View File

@ -309,8 +309,6 @@ constexpr FlutterGPUShaderStage FromImpellerShaderStage(
case impeller::ShaderStage::kFragment:
return FlutterGPUShaderStage::kFragment;
case impeller::ShaderStage::kUnknown:
case impeller::ShaderStage::kTessellationControl:
case impeller::ShaderStage::kTessellationEvaluation:
case impeller::ShaderStage::kCompute:
FML_LOG(FATAL) << "Invalid Flutter GPU ShaderStage "
<< static_cast<size_t>(value);