mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
[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:
parent
210ec33b64
commit
7bad7a0150
@ -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.");
|
||||
|
||||
@ -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";
|
||||
}
|
||||
|
||||
@ -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()) {
|
||||
|
||||
@ -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},
|
||||
};
|
||||
|
||||
|
||||
@ -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";
|
||||
}
|
||||
|
||||
@ -20,8 +20,6 @@ enum class SourceType {
|
||||
kUnknown,
|
||||
kVertexShader,
|
||||
kFragmentShader,
|
||||
kTessellationControlShader,
|
||||
kTessellationEvaluationShader,
|
||||
kComputeShader,
|
||||
};
|
||||
|
||||
|
||||
@ -30,8 +30,6 @@ enum class RuntimeShaderStage {
|
||||
kVertex,
|
||||
kFragment,
|
||||
kCompute,
|
||||
kTessellationControl,
|
||||
kTessellationEvaluation,
|
||||
};
|
||||
|
||||
struct RuntimeUniformDimensions {
|
||||
|
||||
@ -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();
|
||||
}
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -1,5 +0,0 @@
|
||||
layout(vertices = 4) out;
|
||||
|
||||
void main() {
|
||||
gl_out[gl_InvocationID].gl_Position = gl_in[gl_InvocationID].gl_Position;
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
||||
@ -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();
|
||||
}
|
||||
|
||||
@ -8,8 +8,6 @@ enum Stage:byte {
|
||||
kVertex,
|
||||
kFragment,
|
||||
kCompute,
|
||||
kTessellationControl,
|
||||
kTessellationEvaluation,
|
||||
}
|
||||
|
||||
enum TargetPlatform:byte {
|
||||
|
||||
@ -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);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user