diff --git a/ci/licenses_golden/licenses_flutter b/ci/licenses_golden/licenses_flutter index b08e3e2160e68..a57921c1f98af 100644 --- a/ci/licenses_golden/licenses_flutter +++ b/ci/licenses_golden/licenses_flutter @@ -1106,6 +1106,30 @@ ORIGIN: ../../../flutter/impeller/compiler/uniform_sorter.cc + ../../../flutter/ ORIGIN: ../../../flutter/impeller/compiler/uniform_sorter.h + ../../../flutter/LICENSE ORIGIN: ../../../flutter/impeller/compiler/utilities.cc + ../../../flutter/LICENSE ORIGIN: ../../../flutter/impeller/compiler/utilities.h + ../../../flutter/LICENSE +ORIGIN: ../../../flutter/impeller/core/allocator.cc + ../../../flutter/LICENSE +ORIGIN: ../../../flutter/impeller/core/allocator.h + ../../../flutter/LICENSE +ORIGIN: ../../../flutter/impeller/core/buffer.cc + ../../../flutter/LICENSE +ORIGIN: ../../../flutter/impeller/core/buffer.h + ../../../flutter/LICENSE +ORIGIN: ../../../flutter/impeller/core/buffer_view.cc + ../../../flutter/LICENSE +ORIGIN: ../../../flutter/impeller/core/buffer_view.h + ../../../flutter/LICENSE +ORIGIN: ../../../flutter/impeller/core/device_buffer.cc + ../../../flutter/LICENSE +ORIGIN: ../../../flutter/impeller/core/device_buffer.h + ../../../flutter/LICENSE +ORIGIN: ../../../flutter/impeller/core/device_buffer_descriptor.cc + ../../../flutter/LICENSE +ORIGIN: ../../../flutter/impeller/core/device_buffer_descriptor.h + ../../../flutter/LICENSE +ORIGIN: ../../../flutter/impeller/core/formats.cc + ../../../flutter/LICENSE +ORIGIN: ../../../flutter/impeller/core/formats.h + ../../../flutter/LICENSE +ORIGIN: ../../../flutter/impeller/core/host_buffer.cc + ../../../flutter/LICENSE +ORIGIN: ../../../flutter/impeller/core/host_buffer.h + ../../../flutter/LICENSE +ORIGIN: ../../../flutter/impeller/core/platform.cc + ../../../flutter/LICENSE +ORIGIN: ../../../flutter/impeller/core/platform.h + ../../../flutter/LICENSE +ORIGIN: ../../../flutter/impeller/core/range.cc + ../../../flutter/LICENSE +ORIGIN: ../../../flutter/impeller/core/range.h + ../../../flutter/LICENSE +ORIGIN: ../../../flutter/impeller/core/texture.cc + ../../../flutter/LICENSE +ORIGIN: ../../../flutter/impeller/core/texture.h + ../../../flutter/LICENSE +ORIGIN: ../../../flutter/impeller/core/texture_descriptor.cc + ../../../flutter/LICENSE +ORIGIN: ../../../flutter/impeller/core/texture_descriptor.h + ../../../flutter/LICENSE +ORIGIN: ../../../flutter/impeller/core/vertex_buffer.cc + ../../../flutter/LICENSE +ORIGIN: ../../../flutter/impeller/core/vertex_buffer.h + ../../../flutter/LICENSE ORIGIN: ../../../flutter/impeller/display_list/display_list_dispatcher.cc + ../../../flutter/LICENSE ORIGIN: ../../../flutter/impeller/display_list/display_list_dispatcher.h + ../../../flutter/LICENSE ORIGIN: ../../../flutter/impeller/display_list/display_list_image_impeller.cc + ../../../flutter/LICENSE @@ -1337,8 +1361,6 @@ ORIGIN: ../../../flutter/impeller/image/compressed_image.cc + ../../../flutter/L ORIGIN: ../../../flutter/impeller/image/compressed_image.h + ../../../flutter/LICENSE ORIGIN: ../../../flutter/impeller/image/decompressed_image.cc + ../../../flutter/LICENSE ORIGIN: ../../../flutter/impeller/image/decompressed_image.h + ../../../flutter/LICENSE -ORIGIN: ../../../flutter/impeller/renderer/allocator.cc + ../../../flutter/LICENSE -ORIGIN: ../../../flutter/impeller/renderer/allocator.h + ../../../flutter/LICENSE ORIGIN: ../../../flutter/impeller/renderer/backend/gles/allocator_gles.cc + ../../../flutter/LICENSE ORIGIN: ../../../flutter/impeller/renderer/backend/gles/allocator_gles.h + ../../../flutter/LICENSE ORIGIN: ../../../flutter/impeller/renderer/backend/gles/blit_command_gles.cc + ../../../flutter/LICENSE @@ -1487,10 +1509,6 @@ ORIGIN: ../../../flutter/impeller/renderer/blit_command.cc + ../../../flutter/LI ORIGIN: ../../../flutter/impeller/renderer/blit_command.h + ../../../flutter/LICENSE ORIGIN: ../../../flutter/impeller/renderer/blit_pass.cc + ../../../flutter/LICENSE ORIGIN: ../../../flutter/impeller/renderer/blit_pass.h + ../../../flutter/LICENSE -ORIGIN: ../../../flutter/impeller/renderer/buffer.cc + ../../../flutter/LICENSE -ORIGIN: ../../../flutter/impeller/renderer/buffer.h + ../../../flutter/LICENSE -ORIGIN: ../../../flutter/impeller/renderer/buffer_view.cc + ../../../flutter/LICENSE -ORIGIN: ../../../flutter/impeller/renderer/buffer_view.h + ../../../flutter/LICENSE ORIGIN: ../../../flutter/impeller/renderer/capabilities.cc + ../../../flutter/LICENSE ORIGIN: ../../../flutter/impeller/renderer/capabilities.h + ../../../flutter/LICENSE ORIGIN: ../../../flutter/impeller/renderer/command.cc + ../../../flutter/LICENSE @@ -1505,18 +1523,13 @@ ORIGIN: ../../../flutter/impeller/renderer/compute_pipeline_builder.cc + ../../. ORIGIN: ../../../flutter/impeller/renderer/compute_pipeline_builder.h + ../../../flutter/LICENSE ORIGIN: ../../../flutter/impeller/renderer/compute_pipeline_descriptor.cc + ../../../flutter/LICENSE ORIGIN: ../../../flutter/impeller/renderer/compute_pipeline_descriptor.h + ../../../flutter/LICENSE +ORIGIN: ../../../flutter/impeller/renderer/compute_tessellator.cc + ../../../flutter/LICENSE +ORIGIN: ../../../flutter/impeller/renderer/compute_tessellator.h + ../../../flutter/LICENSE ORIGIN: ../../../flutter/impeller/renderer/context.cc + ../../../flutter/LICENSE ORIGIN: ../../../flutter/impeller/renderer/context.h + ../../../flutter/LICENSE -ORIGIN: ../../../flutter/impeller/renderer/device_buffer.cc + ../../../flutter/LICENSE -ORIGIN: ../../../flutter/impeller/renderer/device_buffer.h + ../../../flutter/LICENSE -ORIGIN: ../../../flutter/impeller/renderer/device_buffer_descriptor.cc + ../../../flutter/LICENSE -ORIGIN: ../../../flutter/impeller/renderer/device_buffer_descriptor.h + ../../../flutter/LICENSE -ORIGIN: ../../../flutter/impeller/renderer/formats.cc + ../../../flutter/LICENSE -ORIGIN: ../../../flutter/impeller/renderer/formats.h + ../../../flutter/LICENSE ORIGIN: ../../../flutter/impeller/renderer/gpu_tracer.cc + ../../../flutter/LICENSE ORIGIN: ../../../flutter/impeller/renderer/gpu_tracer.h + ../../../flutter/LICENSE -ORIGIN: ../../../flutter/impeller/renderer/host_buffer.cc + ../../../flutter/LICENSE -ORIGIN: ../../../flutter/impeller/renderer/host_buffer.h + ../../../flutter/LICENSE +ORIGIN: ../../../flutter/impeller/renderer/path_polyline.comp + ../../../flutter/LICENSE ORIGIN: ../../../flutter/impeller/renderer/pipeline.cc + ../../../flutter/LICENSE ORIGIN: ../../../flutter/impeller/renderer/pipeline.h + ../../../flutter/LICENSE ORIGIN: ../../../flutter/impeller/renderer/pipeline_builder.cc + ../../../flutter/LICENSE @@ -1525,10 +1538,6 @@ ORIGIN: ../../../flutter/impeller/renderer/pipeline_descriptor.cc + ../../../flu ORIGIN: ../../../flutter/impeller/renderer/pipeline_descriptor.h + ../../../flutter/LICENSE ORIGIN: ../../../flutter/impeller/renderer/pipeline_library.cc + ../../../flutter/LICENSE ORIGIN: ../../../flutter/impeller/renderer/pipeline_library.h + ../../../flutter/LICENSE -ORIGIN: ../../../flutter/impeller/renderer/platform.cc + ../../../flutter/LICENSE -ORIGIN: ../../../flutter/impeller/renderer/platform.h + ../../../flutter/LICENSE -ORIGIN: ../../../flutter/impeller/renderer/range.cc + ../../../flutter/LICENSE -ORIGIN: ../../../flutter/impeller/renderer/range.h + ../../../flutter/LICENSE ORIGIN: ../../../flutter/impeller/renderer/render_pass.cc + ../../../flutter/LICENSE ORIGIN: ../../../flutter/impeller/renderer/render_pass.h + ../../../flutter/LICENSE ORIGIN: ../../../flutter/impeller/renderer/render_target.cc + ../../../flutter/LICENSE @@ -1551,14 +1560,9 @@ ORIGIN: ../../../flutter/impeller/renderer/shader_types.cc + ../../../flutter/LI ORIGIN: ../../../flutter/impeller/renderer/shader_types.h + ../../../flutter/LICENSE ORIGIN: ../../../flutter/impeller/renderer/snapshot.cc + ../../../flutter/LICENSE ORIGIN: ../../../flutter/impeller/renderer/snapshot.h + ../../../flutter/LICENSE +ORIGIN: ../../../flutter/impeller/renderer/stroke.comp + ../../../flutter/LICENSE ORIGIN: ../../../flutter/impeller/renderer/surface.cc + ../../../flutter/LICENSE ORIGIN: ../../../flutter/impeller/renderer/surface.h + ../../../flutter/LICENSE -ORIGIN: ../../../flutter/impeller/renderer/texture.cc + ../../../flutter/LICENSE -ORIGIN: ../../../flutter/impeller/renderer/texture.h + ../../../flutter/LICENSE -ORIGIN: ../../../flutter/impeller/renderer/texture_descriptor.cc + ../../../flutter/LICENSE -ORIGIN: ../../../flutter/impeller/renderer/texture_descriptor.h + ../../../flutter/LICENSE -ORIGIN: ../../../flutter/impeller/renderer/vertex_buffer.cc + ../../../flutter/LICENSE -ORIGIN: ../../../flutter/impeller/renderer/vertex_buffer.h + ../../../flutter/LICENSE ORIGIN: ../../../flutter/impeller/renderer/vertex_buffer_builder.cc + ../../../flutter/LICENSE ORIGIN: ../../../flutter/impeller/renderer/vertex_buffer_builder.h + ../../../flutter/LICENSE ORIGIN: ../../../flutter/impeller/renderer/vertex_descriptor.cc + ../../../flutter/LICENSE @@ -3672,6 +3676,30 @@ FILE: ../../../flutter/impeller/compiler/uniform_sorter.cc FILE: ../../../flutter/impeller/compiler/uniform_sorter.h FILE: ../../../flutter/impeller/compiler/utilities.cc FILE: ../../../flutter/impeller/compiler/utilities.h +FILE: ../../../flutter/impeller/core/allocator.cc +FILE: ../../../flutter/impeller/core/allocator.h +FILE: ../../../flutter/impeller/core/buffer.cc +FILE: ../../../flutter/impeller/core/buffer.h +FILE: ../../../flutter/impeller/core/buffer_view.cc +FILE: ../../../flutter/impeller/core/buffer_view.h +FILE: ../../../flutter/impeller/core/device_buffer.cc +FILE: ../../../flutter/impeller/core/device_buffer.h +FILE: ../../../flutter/impeller/core/device_buffer_descriptor.cc +FILE: ../../../flutter/impeller/core/device_buffer_descriptor.h +FILE: ../../../flutter/impeller/core/formats.cc +FILE: ../../../flutter/impeller/core/formats.h +FILE: ../../../flutter/impeller/core/host_buffer.cc +FILE: ../../../flutter/impeller/core/host_buffer.h +FILE: ../../../flutter/impeller/core/platform.cc +FILE: ../../../flutter/impeller/core/platform.h +FILE: ../../../flutter/impeller/core/range.cc +FILE: ../../../flutter/impeller/core/range.h +FILE: ../../../flutter/impeller/core/texture.cc +FILE: ../../../flutter/impeller/core/texture.h +FILE: ../../../flutter/impeller/core/texture_descriptor.cc +FILE: ../../../flutter/impeller/core/texture_descriptor.h +FILE: ../../../flutter/impeller/core/vertex_buffer.cc +FILE: ../../../flutter/impeller/core/vertex_buffer.h FILE: ../../../flutter/impeller/display_list/display_list_dispatcher.cc FILE: ../../../flutter/impeller/display_list/display_list_dispatcher.h FILE: ../../../flutter/impeller/display_list/display_list_image_impeller.cc @@ -3903,8 +3931,6 @@ FILE: ../../../flutter/impeller/image/compressed_image.cc FILE: ../../../flutter/impeller/image/compressed_image.h FILE: ../../../flutter/impeller/image/decompressed_image.cc FILE: ../../../flutter/impeller/image/decompressed_image.h -FILE: ../../../flutter/impeller/renderer/allocator.cc -FILE: ../../../flutter/impeller/renderer/allocator.h FILE: ../../../flutter/impeller/renderer/backend/gles/allocator_gles.cc FILE: ../../../flutter/impeller/renderer/backend/gles/allocator_gles.h FILE: ../../../flutter/impeller/renderer/backend/gles/blit_command_gles.cc @@ -4053,10 +4079,6 @@ FILE: ../../../flutter/impeller/renderer/blit_command.cc FILE: ../../../flutter/impeller/renderer/blit_command.h FILE: ../../../flutter/impeller/renderer/blit_pass.cc FILE: ../../../flutter/impeller/renderer/blit_pass.h -FILE: ../../../flutter/impeller/renderer/buffer.cc -FILE: ../../../flutter/impeller/renderer/buffer.h -FILE: ../../../flutter/impeller/renderer/buffer_view.cc -FILE: ../../../flutter/impeller/renderer/buffer_view.h FILE: ../../../flutter/impeller/renderer/capabilities.cc FILE: ../../../flutter/impeller/renderer/capabilities.h FILE: ../../../flutter/impeller/renderer/command.cc @@ -4071,18 +4093,13 @@ FILE: ../../../flutter/impeller/renderer/compute_pipeline_builder.cc FILE: ../../../flutter/impeller/renderer/compute_pipeline_builder.h FILE: ../../../flutter/impeller/renderer/compute_pipeline_descriptor.cc FILE: ../../../flutter/impeller/renderer/compute_pipeline_descriptor.h +FILE: ../../../flutter/impeller/renderer/compute_tessellator.cc +FILE: ../../../flutter/impeller/renderer/compute_tessellator.h FILE: ../../../flutter/impeller/renderer/context.cc FILE: ../../../flutter/impeller/renderer/context.h -FILE: ../../../flutter/impeller/renderer/device_buffer.cc -FILE: ../../../flutter/impeller/renderer/device_buffer.h -FILE: ../../../flutter/impeller/renderer/device_buffer_descriptor.cc -FILE: ../../../flutter/impeller/renderer/device_buffer_descriptor.h -FILE: ../../../flutter/impeller/renderer/formats.cc -FILE: ../../../flutter/impeller/renderer/formats.h FILE: ../../../flutter/impeller/renderer/gpu_tracer.cc FILE: ../../../flutter/impeller/renderer/gpu_tracer.h -FILE: ../../../flutter/impeller/renderer/host_buffer.cc -FILE: ../../../flutter/impeller/renderer/host_buffer.h +FILE: ../../../flutter/impeller/renderer/path_polyline.comp FILE: ../../../flutter/impeller/renderer/pipeline.cc FILE: ../../../flutter/impeller/renderer/pipeline.h FILE: ../../../flutter/impeller/renderer/pipeline_builder.cc @@ -4091,10 +4108,6 @@ FILE: ../../../flutter/impeller/renderer/pipeline_descriptor.cc FILE: ../../../flutter/impeller/renderer/pipeline_descriptor.h FILE: ../../../flutter/impeller/renderer/pipeline_library.cc FILE: ../../../flutter/impeller/renderer/pipeline_library.h -FILE: ../../../flutter/impeller/renderer/platform.cc -FILE: ../../../flutter/impeller/renderer/platform.h -FILE: ../../../flutter/impeller/renderer/range.cc -FILE: ../../../flutter/impeller/renderer/range.h FILE: ../../../flutter/impeller/renderer/render_pass.cc FILE: ../../../flutter/impeller/renderer/render_pass.h FILE: ../../../flutter/impeller/renderer/render_target.cc @@ -4117,14 +4130,9 @@ FILE: ../../../flutter/impeller/renderer/shader_types.cc FILE: ../../../flutter/impeller/renderer/shader_types.h FILE: ../../../flutter/impeller/renderer/snapshot.cc FILE: ../../../flutter/impeller/renderer/snapshot.h +FILE: ../../../flutter/impeller/renderer/stroke.comp FILE: ../../../flutter/impeller/renderer/surface.cc FILE: ../../../flutter/impeller/renderer/surface.h -FILE: ../../../flutter/impeller/renderer/texture.cc -FILE: ../../../flutter/impeller/renderer/texture.h -FILE: ../../../flutter/impeller/renderer/texture_descriptor.cc -FILE: ../../../flutter/impeller/renderer/texture_descriptor.h -FILE: ../../../flutter/impeller/renderer/vertex_buffer.cc -FILE: ../../../flutter/impeller/renderer/vertex_buffer.h FILE: ../../../flutter/impeller/renderer/vertex_buffer_builder.cc FILE: ../../../flutter/impeller/renderer/vertex_buffer_builder.h FILE: ../../../flutter/impeller/renderer/vertex_descriptor.cc diff --git a/impeller/BUILD.gn b/impeller/BUILD.gn index af76525a5855d..34ed9d226a888 100644 --- a/impeller/BUILD.gn +++ b/impeller/BUILD.gn @@ -91,6 +91,10 @@ impeller_component("impeller_unittests") { "typographer:typographer_unittests", ] } + + if (impeller_enable_compute) { + deps += [ "renderer:compute_tessellation_unittests" ] + } } if (impeller_supports_rendering) { diff --git a/impeller/aiks/image.h b/impeller/aiks/image.h index aa124f2ed7dd1..faab8c268ba62 100644 --- a/impeller/aiks/image.h +++ b/impeller/aiks/image.h @@ -7,7 +7,7 @@ #include #include "flutter/fml/macros.h" -#include "impeller/renderer/texture.h" +#include "impeller/core/texture.h" namespace impeller { diff --git a/impeller/compiler/code_gen_template.h b/impeller/compiler/code_gen_template.h index 2666a53f9ca96..b7015b0457c7d 100644 --- a/impeller/compiler/code_gen_template.h +++ b/impeller/compiler/code_gen_template.h @@ -16,7 +16,7 @@ constexpr std::string_view kReflectionHeaderTemplate = {# Note: The nogncheck decorations are only to make GN not mad at the template#} {# this file is generated from. There are no GN rule violations in the generated#} {# file itself and the no-check declarations will be stripped in generated files.#} -#include "impeller/renderer/buffer_view.h" {# // nogncheck #} +#include "impeller/core/buffer_view.h" {# // nogncheck #} #include "impeller/renderer/command.h" {# // nogncheck #} @@ -26,7 +26,7 @@ constexpr std::string_view kReflectionHeaderTemplate = #include "impeller/renderer/shader_types.h" {# // nogncheck #} -#include "impeller/renderer/texture.h" {# // nogncheck #} +#include "impeller/core/texture.h" {# // nogncheck #} namespace impeller { diff --git a/impeller/compiler/compiler.cc b/impeller/compiler/compiler.cc index 72cc10fa91ea1..4d6d4f3e1f5ef 100644 --- a/impeller/compiler/compiler.cc +++ b/impeller/compiler/compiler.cc @@ -57,6 +57,10 @@ static CompilerBackend CreateMSLCompiler(const spirv_cross::ParsedIR& ir, sl_options.platform = TargetPlatformToMSLPlatform(source_options.target_platform); sl_options.msl_version = ParseMSLVersion(source_options.metal_version); + sl_options.ios_use_simdgroup_functions = + sl_options.is_ios() && + sl_options.msl_version >= + spirv_cross::CompilerMSL::Options::make_msl_version(2, 4, 0); sl_options.use_framebuffer_fetch_subpasses = true; sl_compiler->set_msl_options(sl_options); @@ -108,6 +112,18 @@ static CompilerBackend CreateMSLCompiler(const spirv_cross::ParsedIR& ir, return CompilerBackend(sl_compiler); } +static CompilerBackend CreateVulkanCompiler( + const spirv_cross::ParsedIR& ir, + const SourceOptions& source_options) { + auto gl_compiler = std::make_shared(ir); + spirv_cross::CompilerGLSL::Options sl_options; + sl_options.vulkan_semantics = true; + sl_options.vertex.fixup_clipspace = true; + sl_options.force_zero_initialized_variables = true; + gl_compiler->set_common_options(sl_options); + return CompilerBackend(gl_compiler); +} + static CompilerBackend CreateGLSLCompiler(const spirv_cross::ParsedIR& ir, const SourceOptions& source_options) { auto gl_compiler = std::make_shared(ir); @@ -162,9 +178,11 @@ static CompilerBackend CreateCompiler(const spirv_cross::ParsedIR& ir, case TargetPlatform::kMetalDesktop: case TargetPlatform::kMetalIOS: case TargetPlatform::kRuntimeStageMetal: + compiler = CreateMSLCompiler(ir, source_options); + break; case TargetPlatform::kVulkan: case TargetPlatform::kRuntimeStageVulkan: - compiler = CreateMSLCompiler(ir, source_options); + compiler = CreateVulkanCompiler(ir, source_options); break; case TargetPlatform::kUnknown: case TargetPlatform::kOpenGLES: diff --git a/impeller/core/BUILD.gn b/impeller/core/BUILD.gn new file mode 100644 index 0000000000000..6b34c1326e5e4 --- /dev/null +++ b/impeller/core/BUILD.gn @@ -0,0 +1,41 @@ +# Copyright 2013 The Flutter Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import("//flutter/impeller/tools/impeller.gni") + +impeller_component("core") { + sources = [ + "allocator.cc", + "allocator.h", + "buffer.cc", + "buffer.h", + "buffer_view.cc", + "buffer_view.h", + "device_buffer.cc", + "device_buffer.h", + "device_buffer_descriptor.cc", + "device_buffer_descriptor.h", + "formats.cc", + "formats.h", + "host_buffer.cc", + "host_buffer.h", + "platform.cc", + "platform.h", + "range.cc", + "range.h", + "texture.cc", + "texture.h", + "texture_descriptor.cc", + "texture_descriptor.h", + "vertex_buffer.cc", + "vertex_buffer.h", + ] + + deps = [ + "../base", + "../geometry", + "../image", + "//flutter/fml", + ] +} diff --git a/impeller/renderer/allocator.cc b/impeller/core/allocator.cc similarity index 92% rename from impeller/renderer/allocator.cc rename to impeller/core/allocator.cc index 297cb48f2a4d9..2d056a38b2a76 100644 --- a/impeller/renderer/allocator.cc +++ b/impeller/core/allocator.cc @@ -2,11 +2,11 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "impeller/renderer/allocator.h" +#include "impeller/core/allocator.h" #include "impeller/base/validation.h" -#include "impeller/renderer/device_buffer.h" -#include "impeller/renderer/range.h" +#include "impeller/core/device_buffer.h" +#include "impeller/core/range.h" namespace impeller { diff --git a/impeller/renderer/allocator.h b/impeller/core/allocator.h similarity index 93% rename from impeller/renderer/allocator.h rename to impeller/core/allocator.h index 6dfec0652f207..25b3dae07a22c 100644 --- a/impeller/renderer/allocator.h +++ b/impeller/core/allocator.h @@ -8,8 +8,8 @@ #include "flutter/fml/macros.h" #include "flutter/fml/mapping.h" -#include "impeller/renderer/device_buffer_descriptor.h" -#include "impeller/renderer/texture_descriptor.h" +#include "impeller/core/device_buffer_descriptor.h" +#include "impeller/core/texture_descriptor.h" namespace impeller { diff --git a/impeller/renderer/buffer.cc b/impeller/core/buffer.cc similarity index 86% rename from impeller/renderer/buffer.cc rename to impeller/core/buffer.cc index 1b0d524463dce..b645939921f91 100644 --- a/impeller/renderer/buffer.cc +++ b/impeller/core/buffer.cc @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "impeller/renderer/buffer.h" +#include "impeller/core/buffer.h" namespace impeller { diff --git a/impeller/renderer/buffer.h b/impeller/core/buffer.h similarity index 100% rename from impeller/renderer/buffer.h rename to impeller/core/buffer.h diff --git a/impeller/renderer/buffer_view.cc b/impeller/core/buffer_view.cc similarity index 83% rename from impeller/renderer/buffer_view.cc rename to impeller/core/buffer_view.cc index a52f369c8dc8a..8d0887a3b59d7 100644 --- a/impeller/renderer/buffer_view.cc +++ b/impeller/core/buffer_view.cc @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "impeller/renderer/buffer_view.h" +#include "impeller/core/buffer_view.h" namespace impeller { diff --git a/impeller/renderer/buffer_view.h b/impeller/core/buffer_view.h similarity index 85% rename from impeller/renderer/buffer_view.h rename to impeller/core/buffer_view.h index 21a04655d645a..61f4c264ed82a 100644 --- a/impeller/renderer/buffer_view.h +++ b/impeller/core/buffer_view.h @@ -5,8 +5,8 @@ #pragma once #include "flutter/fml/macros.h" -#include "impeller/renderer/buffer.h" -#include "impeller/renderer/range.h" +#include "impeller/core/buffer.h" +#include "impeller/core/range.h" namespace impeller { diff --git a/impeller/renderer/device_buffer.cc b/impeller/core/device_buffer.cc similarity index 97% rename from impeller/renderer/device_buffer.cc rename to impeller/core/device_buffer.cc index 08daf8c8b655a..741a4d7ee2386 100644 --- a/impeller/renderer/device_buffer.cc +++ b/impeller/core/device_buffer.cc @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "impeller/renderer/device_buffer.h" +#include "impeller/core/device_buffer.h" namespace impeller { diff --git a/impeller/renderer/device_buffer.h b/impeller/core/device_buffer.h similarity index 85% rename from impeller/renderer/device_buffer.h rename to impeller/core/device_buffer.h index a4c43c723190a..507a4157d53be 100644 --- a/impeller/renderer/device_buffer.h +++ b/impeller/core/device_buffer.h @@ -8,12 +8,12 @@ #include #include "flutter/fml/macros.h" -#include "impeller/renderer/allocator.h" -#include "impeller/renderer/buffer.h" -#include "impeller/renderer/buffer_view.h" -#include "impeller/renderer/device_buffer_descriptor.h" -#include "impeller/renderer/range.h" -#include "impeller/renderer/texture.h" +#include "impeller/core/allocator.h" +#include "impeller/core/buffer.h" +#include "impeller/core/buffer_view.h" +#include "impeller/core/device_buffer_descriptor.h" +#include "impeller/core/range.h" +#include "impeller/core/texture.h" namespace impeller { diff --git a/impeller/renderer/device_buffer_descriptor.cc b/impeller/core/device_buffer_descriptor.cc similarity index 79% rename from impeller/renderer/device_buffer_descriptor.cc rename to impeller/core/device_buffer_descriptor.cc index 8ad9131397919..9be04ae14fa18 100644 --- a/impeller/renderer/device_buffer_descriptor.cc +++ b/impeller/core/device_buffer_descriptor.cc @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "impeller/renderer/device_buffer_descriptor.h" +#include "impeller/core/device_buffer_descriptor.h" namespace impeller { diff --git a/impeller/renderer/device_buffer_descriptor.h b/impeller/core/device_buffer_descriptor.h similarity index 90% rename from impeller/renderer/device_buffer_descriptor.h rename to impeller/core/device_buffer_descriptor.h index 2585808b8d8ec..976b8f7b0acac 100644 --- a/impeller/renderer/device_buffer_descriptor.h +++ b/impeller/core/device_buffer_descriptor.h @@ -6,7 +6,7 @@ #include -#include "impeller/renderer/formats.h" +#include "impeller/core/formats.h" namespace impeller { diff --git a/impeller/renderer/formats.cc b/impeller/core/formats.cc similarity index 97% rename from impeller/renderer/formats.cc rename to impeller/core/formats.cc index 7736c9ff131bb..3bcfc98ac2cb0 100644 --- a/impeller/renderer/formats.cc +++ b/impeller/core/formats.cc @@ -2,13 +2,13 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "impeller/renderer/formats.h" +#include "impeller/core/formats.h" #include #include "impeller/base/strings.h" #include "impeller/base/validation.h" -#include "impeller/renderer/texture.h" +#include "impeller/core/texture.h" namespace impeller { diff --git a/impeller/renderer/formats.h b/impeller/core/formats.h similarity index 100% rename from impeller/renderer/formats.h rename to impeller/core/formats.h diff --git a/impeller/renderer/host_buffer.cc b/impeller/core/host_buffer.cc similarity index 90% rename from impeller/renderer/host_buffer.cc rename to impeller/core/host_buffer.cc index 84fbebc740369..825cd86250ac5 100644 --- a/impeller/renderer/host_buffer.cc +++ b/impeller/core/host_buffer.cc @@ -2,16 +2,16 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "impeller/renderer/host_buffer.h" +#include "impeller/core/host_buffer.h" #include #include #include "flutter/fml/logging.h" -#include "impeller/renderer/allocator.h" -#include "impeller/renderer/buffer_view.h" -#include "impeller/renderer/device_buffer.h" +#include "impeller/core/allocator.h" +#include "impeller/core/buffer_view.h" +#include "impeller/core/device_buffer.h" namespace impeller { diff --git a/impeller/renderer/host_buffer.h b/impeller/core/host_buffer.h similarity index 96% rename from impeller/renderer/host_buffer.h rename to impeller/core/host_buffer.h index 7895a38b87ae6..e23c3814fd6c7 100644 --- a/impeller/renderer/host_buffer.h +++ b/impeller/core/host_buffer.h @@ -11,9 +11,9 @@ #include "flutter/fml/macros.h" #include "impeller/base/allocation.h" -#include "impeller/renderer/buffer.h" -#include "impeller/renderer/buffer_view.h" -#include "impeller/renderer/platform.h" +#include "impeller/core/buffer.h" +#include "impeller/core/buffer_view.h" +#include "impeller/core/platform.h" namespace impeller { diff --git a/impeller/renderer/platform.cc b/impeller/core/platform.cc similarity index 84% rename from impeller/renderer/platform.cc rename to impeller/core/platform.cc index 7f225f3d3dbbc..66a8115092b89 100644 --- a/impeller/renderer/platform.cc +++ b/impeller/core/platform.cc @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "impeller/renderer/platform.h" +#include "impeller/core/platform.h" namespace impeller { diff --git a/impeller/renderer/platform.h b/impeller/core/platform.h similarity index 100% rename from impeller/renderer/platform.h rename to impeller/core/platform.h diff --git a/impeller/renderer/range.cc b/impeller/core/range.cc similarity index 85% rename from impeller/renderer/range.cc rename to impeller/core/range.cc index 14d7c001a10b9..336f08bf3c183 100644 --- a/impeller/renderer/range.cc +++ b/impeller/core/range.cc @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "impeller/renderer/range.h" +#include "impeller/core/range.h" namespace impeller { diff --git a/impeller/renderer/range.h b/impeller/core/range.h similarity index 100% rename from impeller/renderer/range.h rename to impeller/core/range.h diff --git a/impeller/renderer/texture.cc b/impeller/core/texture.cc similarity index 97% rename from impeller/renderer/texture.cc rename to impeller/core/texture.cc index aaa800aef03a2..d884d355cf42b 100644 --- a/impeller/renderer/texture.cc +++ b/impeller/core/texture.cc @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "impeller/renderer/texture.h" +#include "impeller/core/texture.h" #include "impeller/base/validation.h" diff --git a/impeller/renderer/texture.h b/impeller/core/texture.h similarity index 94% rename from impeller/renderer/texture.h rename to impeller/core/texture.h index cfeea6225c594..5d3852c137f8b 100644 --- a/impeller/renderer/texture.h +++ b/impeller/core/texture.h @@ -8,9 +8,9 @@ #include "flutter/fml/macros.h" #include "flutter/fml/mapping.h" +#include "impeller/core/formats.h" +#include "impeller/core/texture_descriptor.h" #include "impeller/geometry/size.h" -#include "impeller/renderer/formats.h" -#include "impeller/renderer/texture_descriptor.h" namespace impeller { diff --git a/impeller/renderer/texture_descriptor.cc b/impeller/core/texture_descriptor.cc similarity index 81% rename from impeller/renderer/texture_descriptor.cc rename to impeller/core/texture_descriptor.cc index 190f4482ef136..05f4e75d449ef 100644 --- a/impeller/renderer/texture_descriptor.cc +++ b/impeller/core/texture_descriptor.cc @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "impeller/renderer/texture_descriptor.h" +#include "impeller/core/texture_descriptor.h" namespace impeller { diff --git a/impeller/renderer/texture_descriptor.h b/impeller/core/texture_descriptor.h similarity index 98% rename from impeller/renderer/texture_descriptor.h rename to impeller/core/texture_descriptor.h index 9ede2ef6c39b3..e55aea2e4e858 100644 --- a/impeller/renderer/texture_descriptor.h +++ b/impeller/core/texture_descriptor.h @@ -6,9 +6,9 @@ #include +#include "impeller/core/formats.h" #include "impeller/geometry/size.h" #include "impeller/image/decompressed_image.h" -#include "impeller/renderer/formats.h" namespace impeller { diff --git a/impeller/renderer/vertex_buffer.cc b/impeller/core/vertex_buffer.cc similarity index 82% rename from impeller/renderer/vertex_buffer.cc rename to impeller/core/vertex_buffer.cc index e73f64e533a82..900bcffcf8d37 100644 --- a/impeller/renderer/vertex_buffer.cc +++ b/impeller/core/vertex_buffer.cc @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "impeller/renderer/vertex_buffer.h" +#include "impeller/core/vertex_buffer.h" namespace impeller { diff --git a/impeller/renderer/vertex_buffer.h b/impeller/core/vertex_buffer.h similarity index 85% rename from impeller/renderer/vertex_buffer.h rename to impeller/core/vertex_buffer.h index 35b9743db8621..4e8850f752803 100644 --- a/impeller/renderer/vertex_buffer.h +++ b/impeller/core/vertex_buffer.h @@ -4,8 +4,8 @@ #pragma once -#include "impeller/renderer/buffer_view.h" -#include "impeller/renderer/formats.h" +#include "impeller/core/buffer_view.h" +#include "impeller/core/formats.h" namespace impeller { diff --git a/impeller/display_list/display_list_dispatcher.cc b/impeller/display_list/display_list_dispatcher.cc index 986d85fc600c4..c50d0d00ea00a 100644 --- a/impeller/display_list/display_list_dispatcher.cc +++ b/impeller/display_list/display_list_dispatcher.cc @@ -14,6 +14,7 @@ #include "flutter/fml/logging.h" #include "flutter/fml/trace_event.h" +#include "impeller/core/formats.h" #include "impeller/display_list/display_list_image_impeller.h" #include "impeller/display_list/display_list_vertices_geometry.h" #include "impeller/display_list/nine_patch_converter.h" @@ -32,7 +33,6 @@ #include "impeller/geometry/path_builder.h" #include "impeller/geometry/scalar.h" #include "impeller/geometry/sigma.h" -#include "impeller/renderer/formats.h" #include "impeller/typographer/backends/skia/text_frame_skia.h" #include "third_party/skia/include/core/SkColor.h" diff --git a/impeller/display_list/display_list_image_impeller.h b/impeller/display_list/display_list_image_impeller.h index 395ba05e82cb9..d76aaba5d3957 100644 --- a/impeller/display_list/display_list_image_impeller.h +++ b/impeller/display_list/display_list_image_impeller.h @@ -6,7 +6,7 @@ #include "flutter/display_list/image/dl_image.h" #include "flutter/fml/macros.h" -#include "impeller/renderer/texture.h" +#include "impeller/core/texture.h" namespace impeller { diff --git a/impeller/display_list/display_list_vertices_geometry.cc b/impeller/display_list/display_list_vertices_geometry.cc index 19662297cc6eb..2faa4d1f1647f 100644 --- a/impeller/display_list/display_list_vertices_geometry.cc +++ b/impeller/display_list/display_list_vertices_geometry.cc @@ -4,6 +4,7 @@ #include "impeller/display_list/display_list_vertices_geometry.h" +#include "impeller/core/device_buffer.h" #include "impeller/entity/contents/content_context.h" #include "impeller/entity/entity.h" #include "impeller/entity/position_color.vert.h" @@ -11,7 +12,6 @@ #include "impeller/geometry/matrix.h" #include "impeller/geometry/path_builder.h" #include "impeller/geometry/point.h" -#include "impeller/renderer/device_buffer.h" #include "impeller/renderer/render_pass.h" #include "third_party/skia/include/core/SkPoint.h" #include "third_party/skia/include/core/SkRect.h" diff --git a/impeller/entity/contents/atlas_contents.cc b/impeller/entity/contents/atlas_contents.cc index e1065be972d22..4231dc8f27734 100644 --- a/impeller/entity/contents/atlas_contents.cc +++ b/impeller/entity/contents/atlas_contents.cc @@ -8,6 +8,7 @@ #include "flutter/fml/macros.h" +#include "impeller/core/formats.h" #include "impeller/entity/contents/atlas_contents.h" #include "impeller/entity/contents/content_context.h" #include "impeller/entity/contents/filters/color_filter_contents.h" @@ -18,7 +19,6 @@ #include "impeller/entity/geometry.h" #include "impeller/entity/texture_fill.frag.h" #include "impeller/entity/texture_fill.vert.h" -#include "impeller/renderer/formats.h" #include "impeller/renderer/render_pass.h" #include "impeller/renderer/sampler_library.h" #include "impeller/renderer/vertex_buffer_builder.h" diff --git a/impeller/entity/contents/clip_contents.cc b/impeller/entity/contents/clip_contents.cc index 92085b74023b9..f7663312a9dac 100644 --- a/impeller/entity/contents/clip_contents.cc +++ b/impeller/entity/contents/clip_contents.cc @@ -5,10 +5,10 @@ #include #include "fml/logging.h" +#include "impeller/core/formats.h" #include "impeller/entity/contents/clip_contents.h" #include "impeller/entity/contents/content_context.h" #include "impeller/entity/entity.h" -#include "impeller/renderer/formats.h" #include "impeller/renderer/render_pass.h" #include "impeller/renderer/vertex_buffer_builder.h" diff --git a/impeller/entity/contents/content_context.cc b/impeller/entity/contents/content_context.cc index 9b421edfcaa4a..f88c674fbc408 100644 --- a/impeller/entity/contents/content_context.cc +++ b/impeller/entity/contents/content_context.cc @@ -8,9 +8,9 @@ #include #include "impeller/base/strings.h" +#include "impeller/core/formats.h" #include "impeller/entity/entity.h" #include "impeller/renderer/command_buffer.h" -#include "impeller/renderer/formats.h" #include "impeller/renderer/render_pass.h" #include "impeller/renderer/render_target.h" #include "impeller/tessellator/tessellator.h" diff --git a/impeller/entity/contents/content_context.h b/impeller/entity/contents/content_context.h index f139293d59400..66752ab62f069 100644 --- a/impeller/entity/contents/content_context.h +++ b/impeller/entity/contents/content_context.h @@ -12,9 +12,9 @@ #include "flutter/fml/logging.h" #include "flutter/fml/macros.h" #include "impeller/base/validation.h" +#include "impeller/core/formats.h" #include "impeller/entity/entity.h" #include "impeller/renderer/capabilities.h" -#include "impeller/renderer/formats.h" #include "impeller/renderer/pipeline.h" #include "impeller/scene/scene_context.h" diff --git a/impeller/entity/contents/contents.cc b/impeller/entity/contents/contents.cc index 58377c47fe08c..c56fe8b1a6093 100644 --- a/impeller/entity/contents/contents.cc +++ b/impeller/entity/contents/contents.cc @@ -8,11 +8,11 @@ #include "fml/logging.h" #include "impeller/base/strings.h" #include "impeller/base/validation.h" +#include "impeller/core/formats.h" #include "impeller/entity/contents/anonymous_contents.h" #include "impeller/entity/contents/content_context.h" #include "impeller/entity/contents/texture_contents.h" #include "impeller/renderer/command_buffer.h" -#include "impeller/renderer/formats.h" #include "impeller/renderer/render_pass.h" namespace impeller { diff --git a/impeller/entity/contents/contents.h b/impeller/entity/contents/contents.h index c598b3cef6d96..1d444e57f7bb4 100644 --- a/impeller/entity/contents/contents.h +++ b/impeller/entity/contents/contents.h @@ -9,11 +9,11 @@ #include #include "flutter/fml/macros.h" +#include "impeller/core/texture.h" #include "impeller/geometry/color.h" #include "impeller/geometry/rect.h" #include "impeller/renderer/sampler_descriptor.h" #include "impeller/renderer/snapshot.h" -#include "impeller/renderer/texture.h" namespace impeller { diff --git a/impeller/entity/contents/filters/blend_filter_contents.cc b/impeller/entity/contents/filters/blend_filter_contents.cc index 461a7197f79a1..ec215482d605e 100644 --- a/impeller/entity/contents/filters/blend_filter_contents.cc +++ b/impeller/entity/contents/filters/blend_filter_contents.cc @@ -8,13 +8,13 @@ #include #include +#include "impeller/core/formats.h" #include "impeller/entity/contents/content_context.h" #include "impeller/entity/contents/contents.h" #include "impeller/entity/contents/filters/inputs/filter_input.h" #include "impeller/entity/contents/solid_color_contents.h" #include "impeller/entity/entity.h" #include "impeller/geometry/path_builder.h" -#include "impeller/renderer/formats.h" #include "impeller/renderer/render_pass.h" #include "impeller/renderer/sampler_library.h" #include "impeller/renderer/snapshot.h" diff --git a/impeller/entity/contents/filters/filter_contents.cc b/impeller/entity/contents/filters/filter_contents.cc index 5458b5e05dbd3..b8bfe7a9ceeae 100644 --- a/impeller/entity/contents/filters/filter_contents.cc +++ b/impeller/entity/contents/filters/filter_contents.cc @@ -13,6 +13,7 @@ #include #include "flutter/fml/logging.h" +#include "impeller/core/formats.h" #include "impeller/entity/contents/content_context.h" #include "impeller/entity/contents/filters/border_mask_blur_filter_contents.h" #include "impeller/entity/contents/filters/gaussian_blur_filter_contents.h" @@ -25,7 +26,6 @@ #include "impeller/entity/entity.h" #include "impeller/geometry/path_builder.h" #include "impeller/renderer/command_buffer.h" -#include "impeller/renderer/formats.h" #include "impeller/renderer/render_pass.h" namespace impeller { diff --git a/impeller/entity/contents/filters/filter_contents.h b/impeller/entity/contents/filters/filter_contents.h index c02c2ca30678c..c85294549479c 100644 --- a/impeller/entity/contents/filters/filter_contents.h +++ b/impeller/entity/contents/filters/filter_contents.h @@ -9,10 +9,10 @@ #include #include +#include "impeller/core/formats.h" #include "impeller/entity/contents/filters/inputs/filter_input.h" #include "impeller/entity/entity.h" #include "impeller/geometry/sigma.h" -#include "impeller/renderer/formats.h" namespace impeller { diff --git a/impeller/entity/contents/filters/gaussian_blur_filter_contents.cc b/impeller/entity/contents/filters/gaussian_blur_filter_contents.cc index deec204c33de2..73f9591c7696a 100644 --- a/impeller/entity/contents/filters/gaussian_blur_filter_contents.cc +++ b/impeller/entity/contents/filters/gaussian_blur_filter_contents.cc @@ -10,12 +10,12 @@ #include "impeller/base/strings.h" #include "impeller/base/validation.h" +#include "impeller/core/formats.h" #include "impeller/entity/contents/content_context.h" #include "impeller/entity/contents/filters/filter_contents.h" #include "impeller/geometry/rect.h" #include "impeller/geometry/scalar.h" #include "impeller/renderer/command_buffer.h" -#include "impeller/renderer/formats.h" #include "impeller/renderer/render_pass.h" #include "impeller/renderer/render_target.h" #include "impeller/renderer/sampler_descriptor.h" diff --git a/impeller/entity/contents/filters/inputs/texture_filter_input.cc b/impeller/entity/contents/filters/inputs/texture_filter_input.cc index b64a78a34912d..2cdb8cce0f9d6 100644 --- a/impeller/entity/contents/filters/inputs/texture_filter_input.cc +++ b/impeller/entity/contents/filters/inputs/texture_filter_input.cc @@ -6,7 +6,7 @@ #include -#include "impeller/renderer/formats.h" +#include "impeller/core/formats.h" namespace impeller { diff --git a/impeller/entity/contents/filters/yuv_to_rgb_filter_contents.cc b/impeller/entity/contents/filters/yuv_to_rgb_filter_contents.cc index 0c76f6074e774..fd725ca4f34d4 100644 --- a/impeller/entity/contents/filters/yuv_to_rgb_filter_contents.cc +++ b/impeller/entity/contents/filters/yuv_to_rgb_filter_contents.cc @@ -4,9 +4,9 @@ #include "impeller/entity/contents/filters/yuv_to_rgb_filter_contents.h" +#include "impeller/core/formats.h" #include "impeller/entity/contents/content_context.h" #include "impeller/geometry/matrix.h" -#include "impeller/renderer/formats.h" #include "impeller/renderer/render_pass.h" #include "impeller/renderer/sampler_library.h" diff --git a/impeller/entity/contents/framebuffer_blend_contents.h b/impeller/entity/contents/framebuffer_blend_contents.h index ba2733e7720fe..4b3ee089a92b6 100644 --- a/impeller/entity/contents/framebuffer_blend_contents.h +++ b/impeller/entity/contents/framebuffer_blend_contents.h @@ -9,7 +9,7 @@ #include #include "flutter/fml/macros.h" -#include "flutter/impeller/renderer/texture.h" +#include "flutter/impeller/core/texture.h" #include "impeller/entity/contents/color_source_contents.h" #include "impeller/entity/entity.h" diff --git a/impeller/entity/contents/gradient_generator.cc b/impeller/entity/contents/gradient_generator.cc index ee10bb937cdc2..6672fb394118b 100644 --- a/impeller/entity/contents/gradient_generator.cc +++ b/impeller/entity/contents/gradient_generator.cc @@ -7,10 +7,10 @@ #include "impeller/entity/contents/gradient_generator.h" #include "flutter/fml/logging.h" +#include "impeller/core/texture.h" #include "impeller/entity/contents/content_context.h" #include "impeller/renderer/context.h" #include "impeller/renderer/render_pass.h" -#include "impeller/renderer/texture.h" namespace impeller { diff --git a/impeller/entity/contents/gradient_generator.h b/impeller/entity/contents/gradient_generator.h index 36f81e087d63f..11cff7883da8e 100644 --- a/impeller/entity/contents/gradient_generator.h +++ b/impeller/entity/contents/gradient_generator.h @@ -9,7 +9,7 @@ #include #include "flutter/fml/macros.h" -#include "flutter/impeller/renderer/texture.h" +#include "flutter/impeller/core/texture.h" #include "impeller/geometry/color.h" #include "impeller/geometry/gradient.h" #include "impeller/geometry/path.h" diff --git a/impeller/entity/contents/linear_gradient_contents.cc b/impeller/entity/contents/linear_gradient_contents.cc index 2fe2e48b2123d..cb76d16231dad 100644 --- a/impeller/entity/contents/linear_gradient_contents.cc +++ b/impeller/entity/contents/linear_gradient_contents.cc @@ -5,11 +5,11 @@ #include "linear_gradient_contents.h" #include "flutter/fml/logging.h" +#include "impeller/core/formats.h" #include "impeller/entity/contents/clip_contents.h" #include "impeller/entity/contents/content_context.h" #include "impeller/entity/contents/gradient_generator.h" #include "impeller/entity/entity.h" -#include "impeller/renderer/formats.h" #include "impeller/renderer/render_pass.h" #include "impeller/renderer/sampler_library.h" diff --git a/impeller/entity/contents/linear_gradient_contents.h b/impeller/entity/contents/linear_gradient_contents.h index 2a2fd1c6c6632..4a393bfadade9 100644 --- a/impeller/entity/contents/linear_gradient_contents.h +++ b/impeller/entity/contents/linear_gradient_contents.h @@ -9,7 +9,7 @@ #include #include "flutter/fml/macros.h" -#include "flutter/impeller/renderer/texture.h" +#include "flutter/impeller/core/texture.h" #include "impeller/entity/contents/color_source_contents.h" #include "impeller/entity/entity.h" #include "impeller/geometry/color.h" diff --git a/impeller/entity/contents/runtime_effect_contents.cc b/impeller/entity/contents/runtime_effect_contents.cc index 0ac8fbdd4704e..4b9f64d914e29 100644 --- a/impeller/entity/contents/runtime_effect_contents.cc +++ b/impeller/entity/contents/runtime_effect_contents.cc @@ -10,10 +10,10 @@ #include "flutter/fml/logging.h" #include "flutter/fml/make_copyable.h" #include "impeller/base/validation.h" +#include "impeller/core/formats.h" #include "impeller/entity/contents/clip_contents.h" #include "impeller/entity/contents/content_context.h" #include "impeller/entity/runtime_effect.vert.h" -#include "impeller/renderer/formats.h" #include "impeller/renderer/pipeline_library.h" #include "impeller/renderer/render_pass.h" #include "impeller/renderer/sampler_library.h" diff --git a/impeller/entity/contents/scene_contents.cc b/impeller/entity/contents/scene_contents.cc index 37dbb702c7355..bb00ff923e26e 100644 --- a/impeller/entity/contents/scene_contents.cc +++ b/impeller/entity/contents/scene_contents.cc @@ -4,11 +4,11 @@ #include "impeller/entity/contents/scene_contents.h" +#include "impeller/core/formats.h" #include "impeller/entity/contents/content_context.h" #include "impeller/entity/contents/tiled_texture_contents.h" #include "impeller/entity/entity.h" #include "impeller/geometry/path_builder.h" -#include "impeller/renderer/formats.h" #include "impeller/scene/camera.h" #include "impeller/scene/scene.h" diff --git a/impeller/entity/contents/text_contents.cc b/impeller/entity/contents/text_contents.cc index 42cc7181f1fab..e77ee50d76808 100644 --- a/impeller/entity/contents/text_contents.cc +++ b/impeller/entity/contents/text_contents.cc @@ -8,10 +8,10 @@ #include #include +#include "impeller/core/formats.h" #include "impeller/entity/contents/content_context.h" #include "impeller/entity/entity.h" #include "impeller/geometry/path_builder.h" -#include "impeller/renderer/formats.h" #include "impeller/renderer/render_pass.h" #include "impeller/renderer/sampler_descriptor.h" #include "impeller/renderer/sampler_library.h" diff --git a/impeller/entity/contents/texture_contents.cc b/impeller/entity/contents/texture_contents.cc index efa7a207e18ea..47763697e8411 100644 --- a/impeller/entity/contents/texture_contents.cc +++ b/impeller/entity/contents/texture_contents.cc @@ -8,13 +8,13 @@ #include #include +#include "impeller/core/formats.h" #include "impeller/entity/contents/content_context.h" #include "impeller/entity/entity.h" #include "impeller/entity/texture_fill.frag.h" #include "impeller/entity/texture_fill.vert.h" #include "impeller/geometry/constants.h" #include "impeller/geometry/path_builder.h" -#include "impeller/renderer/formats.h" #include "impeller/renderer/render_pass.h" #include "impeller/renderer/sampler_library.h" diff --git a/impeller/entity/contents/vertices_contents.cc b/impeller/entity/contents/vertices_contents.cc index 0e675ae40498c..e996e09b449af 100644 --- a/impeller/entity/contents/vertices_contents.cc +++ b/impeller/entity/contents/vertices_contents.cc @@ -4,6 +4,8 @@ #include "vertices_contents.h" +#include "impeller/core/formats.h" +#include "impeller/core/vertex_buffer.h" #include "impeller/entity/contents/content_context.h" #include "impeller/entity/contents/filters/color_filter_contents.h" #include "impeller/entity/contents/filters/filter_contents.h" @@ -11,10 +13,8 @@ #include "impeller/entity/position_color.vert.h" #include "impeller/entity/vertices.frag.h" #include "impeller/geometry/color.h" -#include "impeller/renderer/formats.h" #include "impeller/renderer/render_pass.h" #include "impeller/renderer/sampler_library.h" -#include "impeller/renderer/vertex_buffer.h" namespace impeller { diff --git a/impeller/entity/entity_pass.cc b/impeller/entity/entity_pass.cc index 67adf6b7c1d47..f78ae074b9809 100644 --- a/impeller/entity/entity_pass.cc +++ b/impeller/entity/entity_pass.cc @@ -12,6 +12,9 @@ #include "flutter/fml/macros.h" #include "flutter/fml/trace_event.h" #include "impeller/base/validation.h" +#include "impeller/core/allocator.h" +#include "impeller/core/formats.h" +#include "impeller/core/texture.h" #include "impeller/entity/contents/clip_contents.h" #include "impeller/entity/contents/content_context.h" #include "impeller/entity/contents/filters/color_filter_contents.h" @@ -21,12 +24,9 @@ #include "impeller/entity/entity.h" #include "impeller/entity/inline_pass_context.h" #include "impeller/geometry/path_builder.h" -#include "impeller/renderer/allocator.h" #include "impeller/renderer/command.h" #include "impeller/renderer/command_buffer.h" -#include "impeller/renderer/formats.h" #include "impeller/renderer/render_pass.h" -#include "impeller/renderer/texture.h" namespace impeller { diff --git a/impeller/entity/entity_pass.h b/impeller/entity/entity_pass.h index 2865fed493b57..faad3cb74e0e2 100644 --- a/impeller/entity/entity_pass.h +++ b/impeller/entity/entity_pass.h @@ -10,13 +10,13 @@ #include #include "flutter/fml/macros.h" +#include "impeller/core/texture.h" #include "impeller/entity/contents/contents.h" #include "impeller/entity/contents/filters/filter_contents.h" #include "impeller/entity/entity.h" #include "impeller/entity/entity_pass_delegate.h" #include "impeller/entity/inline_pass_context.h" #include "impeller/renderer/render_target.h" -#include "impeller/renderer/texture.h" #include "impeller/typographer/lazy_glyph_atlas.h" namespace impeller { diff --git a/impeller/entity/entity_pass_delegate.h b/impeller/entity/entity_pass_delegate.h index 119d78dda8798..a8ee633b2d5f0 100644 --- a/impeller/entity/entity_pass_delegate.h +++ b/impeller/entity/entity_pass_delegate.h @@ -7,8 +7,8 @@ #include #include "flutter/fml/macros.h" +#include "impeller/core/texture.h" #include "impeller/entity/contents/contents.h" -#include "impeller/renderer/texture.h" namespace impeller { diff --git a/impeller/entity/entity_pass_target.cc b/impeller/entity/entity_pass_target.cc index af6a042c1f024..da017e062224a 100644 --- a/impeller/entity/entity_pass_target.cc +++ b/impeller/entity/entity_pass_target.cc @@ -5,8 +5,8 @@ #include "impeller/entity/entity_pass_target.h" #include "impeller/base/validation.h" -#include "impeller/renderer/formats.h" -#include "impeller/renderer/texture.h" +#include "impeller/core/formats.h" +#include "impeller/core/texture.h" namespace impeller { diff --git a/impeller/entity/geometry.cc b/impeller/entity/geometry.cc index f5d5a819e86c5..7e8ed784cb4da 100644 --- a/impeller/entity/geometry.cc +++ b/impeller/entity/geometry.cc @@ -4,13 +4,13 @@ #include "impeller/entity/geometry.h" +#include "impeller/core/device_buffer.h" #include "impeller/entity/contents/content_context.h" #include "impeller/entity/entity.h" #include "impeller/entity/position_color.vert.h" #include "impeller/entity/texture_fill.vert.h" #include "impeller/geometry/matrix.h" #include "impeller/geometry/path_builder.h" -#include "impeller/renderer/device_buffer.h" #include "impeller/renderer/render_pass.h" #include "impeller/tessellator/tessellator.h" diff --git a/impeller/entity/geometry.h b/impeller/entity/geometry.h index 225d8600f574d..5061dc19f7cb3 100644 --- a/impeller/entity/geometry.h +++ b/impeller/entity/geometry.h @@ -4,14 +4,14 @@ #pragma once +#include "impeller/core/allocator.h" +#include "impeller/core/host_buffer.h" +#include "impeller/core/vertex_buffer.h" #include "impeller/entity/contents/contents.h" #include "impeller/entity/entity.h" #include "impeller/entity/solid_fill.vert.h" #include "impeller/geometry/color.h" #include "impeller/geometry/path.h" -#include "impeller/renderer/allocator.h" -#include "impeller/renderer/host_buffer.h" -#include "impeller/renderer/vertex_buffer.h" namespace impeller { @@ -30,18 +30,6 @@ enum GeometryVertexType { kUV, }; -enum class Cap { - kButt, - kRound, - kSquare, -}; - -enum class Join { - kMiter, - kRound, - kBevel, -}; - class Geometry { public: Geometry(); diff --git a/impeller/entity/inline_pass_context.cc b/impeller/entity/inline_pass_context.cc index a4a94732edb07..01aa6420d1229 100644 --- a/impeller/entity/inline_pass_context.cc +++ b/impeller/entity/inline_pass_context.cc @@ -7,10 +7,10 @@ #include #include "impeller/base/validation.h" +#include "impeller/core/formats.h" +#include "impeller/core/texture_descriptor.h" #include "impeller/entity/entity_pass_target.h" #include "impeller/renderer/command_buffer.h" -#include "impeller/renderer/formats.h" -#include "impeller/renderer/texture_descriptor.h" namespace impeller { diff --git a/impeller/fixtures/BUILD.gn b/impeller/fixtures/BUILD.gn index cba9c78afe896..a908196ffd00a 100644 --- a/impeller/fixtures/BUILD.gn +++ b/impeller/fixtures/BUILD.gn @@ -5,7 +5,7 @@ import("//flutter/impeller/tools/impeller.gni") import("//flutter/testing/testing.gni") -if (impeller_enable_vulkan || impeller_enable_metal) { +if (impeller_enable_compute) { impeller_shaders("shader_subgroup_fixtures") { enable_opengles = false name = "subgroup_fixtures" @@ -16,7 +16,6 @@ if (impeller_enable_vulkan || impeller_enable_metal) { shaders = [ "cubic_to_quads.comp", "quad_polyline.comp", - "stroke.comp", ] } } @@ -105,7 +104,6 @@ test_fixtures("file_fixtures") { "sa%m#ple.vert", "stage1.comp", "stage2.comp", - "stroke.comp", "struct_def_bug.vert", "table_mountain_nx.png", "table_mountain_ny.png", @@ -139,7 +137,7 @@ group("fixtures") { ":shader_fixtures", ] - if (impeller_enable_vulkan || impeller_enable_metal) { + if (impeller_enable_compute) { public_deps += [ ":shader_subgroup_fixtures" ] } } diff --git a/impeller/fixtures/golden_heart.h b/impeller/fixtures/golden_paths.h similarity index 85% rename from impeller/fixtures/golden_heart.h rename to impeller/fixtures/golden_paths.h index 2325c1ea6ad0b..d292cff926445 100644 --- a/impeller/fixtures/golden_heart.h +++ b/impeller/fixtures/golden_paths.h @@ -315,7 +315,61 @@ std::vector golden_heart_vertices = { {163.155, 22.7357}, {155.704, 20.5285}, {155.546, 21.5159}, {155.673, 20.5245}, {155.577, 21.5199}, {147.924, 19.7793}, {147.828, 20.7747}, {147.893, 19.7773}, {147.858, 20.7767}, - {140.018, 19.5003}, {139.982, 20.4997}, {140, 20}, - {140, 20}}; + {140.018, 19.5003}, {139.982, 20.4997}, {140.018, 19.5003}, + {139.982, 20.4997}}; + +std::vector golden_cubic_and_quad_points = { + {139.982, 19.5003}, {140.018, 20.4997}, {131.747, 19.8026}, + {131.783, 20.802}, {131.715, 19.8048}, {131.815, 20.7998}, + {123.622, 20.6102}, {123.721, 21.6053}, {123.59, 20.6145}, + {123.753, 21.601}, {115.652, 21.9306}, {115.816, 22.9171}, + {115.619, 21.9372}, {115.848, 22.9105}, {107.85, 23.7687}, + {108.08, 24.742}, {107.817, 23.7777}, {108.113, 24.733}, + {100.23, 26.1264}, {100.526, 27.0817}, {100.197, 26.1378}, + {100.558, 27.0703}, {92.8037, 29.0025}, {93.165, 29.935}, + {92.7736, 29.0154}, {93.1952, 29.9221}, {85.708, 32.3003}, + {86.1296, 33.2071}, {85.68, 32.3144}, {86.1576, 33.193}, + {78.8865, 36.008}, {79.3641, 36.8865}, {78.8588, 36.0242}, + {79.3918, 36.8703}, {72.3485, 40.125}, {72.8815, 40.9711}, + {72.3216, 40.1432}, {72.9084, 40.9529}, {66.1045, 44.6479}, + {66.6913, 45.4577}, {66.0788, 44.6679}, {66.717, 45.4378}, + {60.1632, 49.5711}, {60.8014, 50.341}, {60.139, 49.5924}, + {60.8255, 50.3196}, {54.5317, 54.8864}, {55.2183, 55.6136}, + {54.5094, 54.909}, {55.2406, 55.591}, {49.254, 60.5436}, + {49.9853, 61.2257}, {49.2329, 60.5677}, {50.0063, 61.2016}, + {44.3684, 66.5025}, {45.1418, 67.1364}, {44.3488, 66.5281}, + {45.1614, 67.1108}, {39.8827, 72.7564}, {40.6954, 73.3391}, + {39.8648, 72.7832}, {40.7133, 73.3123}, {35.8029, 79.297}, + {36.6515, 79.8261}, {35.7869, 79.3246}, {36.6675, 79.7985}, + {32.1328, 86.1144}, {33.0134, 86.5883}, {32.1188, 86.1424}, + {33.0273, 86.5603}, {28.8739, 93.1973}, {29.7824, 93.6152}, + {28.8613, 93.2272}, {29.795, 93.5853}, {26.0399, 100.583}, + {26.9736, 100.941}, {26.0288, 100.615}, {26.9847, 100.908}, + {23.7144, 108.15}, {24.6704, 108.444}, {23.7056, 108.183}, + {24.6792, 108.411}, {21.9002, 115.886}, {22.8738, 116.115}, + {21.8937, 115.919}, {22.8804, 116.082}, {20.5962, 123.779}, + {21.5828, 123.942}, {20.592, 123.812}, {21.5871, 123.91}, + {19.7985, 131.816}, {20.7936, 131.914}, {19.7964, 131.847}, + {20.7957, 131.883}, {19.5003, 139.982}, {20.4997, 140.018}, + {20.2883, 140.409}, {19.7117, 139.591}, {29.9421, 133.595}, + {29.3655, 132.778}, {29.9544, 133.586}, {29.3532, 132.787}, + {39.1905, 126.639}, {38.5894, 125.839}, {39.2039, 126.628}, + {38.576, 125.85}, {47.9822, 119.545}, {47.3542, 118.767}, + {47.9968, 119.533}, {47.3396, 118.779}, {56.2739, 112.316}, + {55.6167, 111.562}, {56.2898, 112.302}, {55.6008, 111.577}, + {64.0197, 104.952}, {63.3307, 104.228}, {64.0369, 104.935}, + {63.3134, 104.245}, {71.1714, 97.4578}, {70.4479, 96.7675}, + {71.1899, 97.4373}, {70.4294, 96.7879}, {77.6791, 89.8381}, + {76.9187, 89.1887}, {77.6987, 89.8137}, {76.8991, 89.2131}, + {83.4923, 82.1009}, {82.6928, 81.5003}, {83.5125, 82.0718}, + {82.6725, 81.5293}, {88.5609, 74.2563}, {87.7209, 73.7138}, + {88.5812, 74.2221}, {87.7007, 73.748}, {92.8369, 66.3173}, + {91.9564, 65.8432}, {92.8562, 66.2772}, {91.9371, 65.8833}, + {96.2756, 58.299}, {95.3564, 57.9051}, {96.2927, 58.253}, + {95.3393, 57.951}, {98.8374, 50.2196}, {97.8841, 49.9176}, + {98.8508, 50.1681}, {97.8708, 49.969}, {100.49, 42.0995}, + {99.51, 41.9005}, {100.49, 42.0995}, {99.51, 41.9005}, +}; + } // namespace testing } // namespace impeller diff --git a/impeller/geometry/path.h b/impeller/geometry/path.h index 1f3c14659b84d..fc1a3f0afdafa 100644 --- a/impeller/geometry/path.h +++ b/impeller/geometry/path.h @@ -15,6 +15,18 @@ namespace impeller { +enum class Cap { + kButt, + kRound, + kSquare, +}; + +enum class Join { + kMiter, + kRound, + kBevel, +}; + enum class FillType { kNonZero, // The default winding order. kOdd, diff --git a/impeller/playground/BUILD.gn b/impeller/playground/BUILD.gn index 53bcfc518171f..5b9f24a5c42ca 100644 --- a/impeller/playground/BUILD.gn +++ b/impeller/playground/BUILD.gn @@ -54,7 +54,7 @@ impeller_component("playground") { "//third_party/imgui:imgui_glfw", ] - if (impeller_enable_vulkan || impeller_enable_metal) { + if (impeller_enable_compute) { public_deps += [ "../fixtures:shader_subgroup_fixtures" ] } diff --git a/impeller/playground/backend/metal/playground_impl_mtl.mm b/impeller/playground/backend/metal/playground_impl_mtl.mm index 8ac6758469548..ee3ac76531af2 100644 --- a/impeller/playground/backend/metal/playground_impl_mtl.mm +++ b/impeller/playground/backend/metal/playground_impl_mtl.mm @@ -24,6 +24,7 @@ #include "impeller/renderer/backend/metal/formats_mtl.h" #include "impeller/renderer/backend/metal/surface_mtl.h" #include "impeller/renderer/backend/metal/texture_mtl.h" +#include "impeller/renderer/mtl/compute_shaders.h" #include "impeller/scene/shaders/mtl/scene_shaders.h" namespace impeller { @@ -34,23 +35,24 @@ static std::vector> ShaderLibraryMappingsForPlayground() { - return { - std::make_shared(impeller_entity_shaders_data, - impeller_entity_shaders_length), - std::make_shared(impeller_modern_shaders_data, - impeller_modern_shaders_length), - std::make_shared( - impeller_framebuffer_blend_shaders_data, - impeller_framebuffer_blend_shaders_length), - std::make_shared(impeller_fixtures_shaders_data, - impeller_fixtures_shaders_length), - std::make_shared( - impeller_subgroup_fixtures_shaders_data, - impeller_subgroup_fixtures_shaders_length), - std::make_shared(impeller_imgui_shaders_data, - impeller_imgui_shaders_length), - std::make_shared(impeller_scene_shaders_data, - impeller_scene_shaders_length), + return {std::make_shared( + impeller_entity_shaders_data, impeller_entity_shaders_length), + std::make_shared( + impeller_modern_shaders_data, impeller_modern_shaders_length), + std::make_shared( + impeller_framebuffer_blend_shaders_data, + impeller_framebuffer_blend_shaders_length), + std::make_shared( + impeller_fixtures_shaders_data, impeller_fixtures_shaders_length), + std::make_shared( + impeller_subgroup_fixtures_shaders_data, + impeller_subgroup_fixtures_shaders_length), + std::make_shared(impeller_imgui_shaders_data, + impeller_imgui_shaders_length), + std::make_shared(impeller_scene_shaders_data, + impeller_scene_shaders_length), + std::make_shared( + impeller_compute_shaders_data, impeller_compute_shaders_length) }; } diff --git a/impeller/playground/compute_playground_test.h b/impeller/playground/compute_playground_test.h index af9edf71a83bc..6beacd7d92415 100644 --- a/impeller/playground/compute_playground_test.h +++ b/impeller/playground/compute_playground_test.h @@ -9,9 +9,9 @@ #include "flutter/fml/macros.h" #include "flutter/fml/time/time_delta.h" #include "flutter/testing/testing.h" +#include "impeller/core/device_buffer.h" #include "impeller/geometry/scalar.h" #include "impeller/playground/playground.h" -#include "impeller/renderer/device_buffer.h" namespace impeller { diff --git a/impeller/playground/imgui/imgui_impl_impeller.cc b/impeller/playground/imgui/imgui_impl_impeller.cc index 8657751ef7198..e8c58325dbaae 100644 --- a/impeller/playground/imgui/imgui_impl_impeller.cc +++ b/impeller/playground/imgui/imgui_impl_impeller.cc @@ -15,24 +15,24 @@ #include "impeller/playground/imgui/imgui_raster.vert.h" #include "third_party/imgui/imgui.h" +#include "impeller/core/allocator.h" +#include "impeller/core/formats.h" +#include "impeller/core/range.h" +#include "impeller/core/texture.h" +#include "impeller/core/texture_descriptor.h" +#include "impeller/core/vertex_buffer.h" #include "impeller/geometry/matrix.h" #include "impeller/geometry/point.h" #include "impeller/geometry/rect.h" #include "impeller/geometry/size.h" -#include "impeller/renderer/allocator.h" #include "impeller/renderer/command.h" #include "impeller/renderer/context.h" -#include "impeller/renderer/formats.h" #include "impeller/renderer/pipeline_builder.h" #include "impeller/renderer/pipeline_descriptor.h" #include "impeller/renderer/pipeline_library.h" -#include "impeller/renderer/range.h" #include "impeller/renderer/render_pass.h" #include "impeller/renderer/sampler.h" #include "impeller/renderer/sampler_library.h" -#include "impeller/renderer/texture.h" -#include "impeller/renderer/texture_descriptor.h" -#include "impeller/renderer/vertex_buffer.h" struct ImGui_ImplImpeller_Data { std::shared_ptr context; diff --git a/impeller/playground/playground.cc b/impeller/playground/playground.cc index 1f1c5930ff864..6bd86f260bddc 100644 --- a/impeller/playground/playground.cc +++ b/impeller/playground/playground.cc @@ -18,13 +18,13 @@ #include "flutter/fml/paths.h" #include "impeller/base/validation.h" +#include "impeller/core/allocator.h" +#include "impeller/core/formats.h" #include "impeller/image/compressed_image.h" #include "impeller/playground/imgui/imgui_impl_impeller.h" #include "impeller/playground/playground.h" #include "impeller/playground/playground_impl.h" -#include "impeller/renderer/allocator.h" #include "impeller/renderer/context.h" -#include "impeller/renderer/formats.h" #include "impeller/renderer/render_pass.h" #include "impeller/renderer/renderer.h" #include "third_party/imgui/backends/imgui_impl_glfw.h" diff --git a/impeller/playground/playground.h b/impeller/playground/playground.h index 58be5f263838b..bc2584623fa17 100644 --- a/impeller/playground/playground.h +++ b/impeller/playground/playground.h @@ -10,12 +10,12 @@ #include "flutter/fml/closure.h" #include "flutter/fml/macros.h" #include "flutter/fml/time/time_delta.h" +#include "impeller/core/texture.h" #include "impeller/geometry/point.h" #include "impeller/image/compressed_image.h" #include "impeller/image/decompressed_image.h" #include "impeller/playground/switches.h" #include "impeller/renderer/renderer.h" -#include "impeller/renderer/texture.h" #include "impeller/runtime_stage/runtime_stage.h" namespace impeller { diff --git a/impeller/renderer/BUILD.gn b/impeller/renderer/BUILD.gn index f968e626ee074..e1f9c5532b8d8 100644 --- a/impeller/renderer/BUILD.gn +++ b/impeller/renderer/BUILD.gn @@ -4,18 +4,48 @@ import("//flutter/impeller/tools/impeller.gni") +if (impeller_enable_compute) { + impeller_shaders("compute_shaders") { + name = "compute" + enable_opengles = false + + if (impeller_enable_vulkan) { + vulkan_language_version = 130 + } + + if (is_ios) { + metal_version = "2.4" + } else if (is_mac) { + metal_version = "2.1" + } + + shaders = [ + "stroke.comp", + "path_polyline.comp", + ] + } + + impeller_component("compute_tessellation_unittests") { + testonly = true + sources = [ "compute_subgroup_unittests.cc" ] + + deps = [ + ":compute_shaders", + ":renderer", + "../entity", + "../fixtures", + "../playground:playground_test", + "//flutter/testing:testing_lib", + ] + } +} + impeller_component("renderer") { sources = [ - "allocator.cc", - "allocator.h", "blit_command.cc", "blit_command.h", "blit_pass.cc", "blit_pass.h", - "buffer.cc", - "buffer.h", - "buffer_view.cc", - "buffer_view.h", "capabilities.cc", "capabilities.h", "command.cc", @@ -32,16 +62,8 @@ impeller_component("renderer") { "compute_pipeline_descriptor.h", "context.cc", "context.h", - "device_buffer.cc", - "device_buffer.h", - "device_buffer_descriptor.cc", - "device_buffer_descriptor.h", - "formats.cc", - "formats.h", "gpu_tracer.cc", "gpu_tracer.h", - "host_buffer.cc", - "host_buffer.h", "pipeline.cc", "pipeline.h", "pipeline_builder.cc", @@ -50,10 +72,6 @@ impeller_component("renderer") { "pipeline_descriptor.h", "pipeline_library.cc", "pipeline_library.h", - "platform.cc", - "platform.h", - "range.cc", - "range.h", "render_pass.cc", "render_pass.h", "render_target.cc", @@ -78,12 +96,6 @@ impeller_component("renderer") { "snapshot.h", "surface.cc", "surface.h", - "texture.cc", - "texture.h", - "texture_descriptor.cc", - "texture_descriptor.h", - "vertex_buffer.cc", - "vertex_buffer.h", "vertex_buffer_builder.cc", "vertex_buffer_builder.h", "vertex_descriptor.cc", @@ -92,12 +104,21 @@ impeller_component("renderer") { public_deps = [ "../base", + "../core", "../geometry", "../image", "../runtime_stage", "../tessellator", ] + if (impeller_enable_compute) { + sources += [ + "compute_tessellator.cc", + "compute_tessellator.h", + ] + public_deps += [ ":compute_shaders" ] + } + deps = [ "//flutter/fml" ] } @@ -111,20 +132,16 @@ impeller_component("renderer_unittests") { "renderer_unittests.cc", ] - if (impeller_enable_vulkan || impeller_enable_metal) { - sources += [ - "compute_subgroup_unittests.cc", - "compute_unittests.cc", - ] - } - deps = [ ":renderer", - "../entity", "../fixtures", "../playground:playground_test", "//flutter/testing:testing_lib", ] + + if (impeller_enable_compute) { + sources += [ "compute_unittests.cc" ] + } } test_fixtures("renderer_dart_fixtures") { diff --git a/impeller/renderer/backend/gles/allocator_gles.h b/impeller/renderer/backend/gles/allocator_gles.h index 171daf7f44a16..14f9dcf2dbe3a 100644 --- a/impeller/renderer/backend/gles/allocator_gles.h +++ b/impeller/renderer/backend/gles/allocator_gles.h @@ -5,7 +5,7 @@ #pragma once #include "flutter/fml/macros.h" -#include "impeller/renderer/allocator.h" +#include "impeller/core/allocator.h" #include "impeller/renderer/backend/gles/reactor_gles.h" namespace impeller { diff --git a/impeller/renderer/backend/gles/blit_pass_gles.cc b/impeller/renderer/backend/gles/blit_pass_gles.cc index 8685d86aa4a29..297f3171e5db5 100644 --- a/impeller/renderer/backend/gles/blit_pass_gles.cc +++ b/impeller/renderer/backend/gles/blit_pass_gles.cc @@ -10,13 +10,13 @@ #include "flutter/fml/trace_event.h" #include "impeller/base/config.h" #include "impeller/base/validation.h" +#include "impeller/core/formats.h" #include "impeller/renderer/backend/gles/blit_command_gles.h" #include "impeller/renderer/backend/gles/device_buffer_gles.h" #include "impeller/renderer/backend/gles/formats_gles.h" #include "impeller/renderer/backend/gles/pipeline_gles.h" #include "impeller/renderer/backend/gles/proc_table_gles.h" #include "impeller/renderer/backend/gles/texture_gles.h" -#include "impeller/renderer/formats.h" namespace impeller { diff --git a/impeller/renderer/backend/gles/device_buffer_gles.h b/impeller/renderer/backend/gles/device_buffer_gles.h index 70700040b0770..f4576e60c7f96 100644 --- a/impeller/renderer/backend/gles/device_buffer_gles.h +++ b/impeller/renderer/backend/gles/device_buffer_gles.h @@ -9,8 +9,8 @@ #include "flutter/fml/macros.h" #include "impeller/base/allocation.h" #include "impeller/base/backend_cast.h" +#include "impeller/core/device_buffer.h" #include "impeller/renderer/backend/gles/reactor_gles.h" -#include "impeller/renderer/device_buffer.h" namespace impeller { diff --git a/impeller/renderer/backend/gles/formats_gles.h b/impeller/renderer/backend/gles/formats_gles.h index fb5ce27e0a384..ef4cc418a76c2 100644 --- a/impeller/renderer/backend/gles/formats_gles.h +++ b/impeller/renderer/backend/gles/formats_gles.h @@ -6,8 +6,8 @@ #include "flutter/fml/logging.h" #include "flutter/fml/macros.h" +#include "impeller/core/formats.h" #include "impeller/renderer/backend/gles/gles.h" -#include "impeller/renderer/formats.h" #include "impeller/renderer/shader_types.h" namespace impeller { diff --git a/impeller/renderer/backend/gles/sampler_gles.cc b/impeller/renderer/backend/gles/sampler_gles.cc index 054c0f7782468..c96ff1700a061 100644 --- a/impeller/renderer/backend/gles/sampler_gles.cc +++ b/impeller/renderer/backend/gles/sampler_gles.cc @@ -7,10 +7,10 @@ #include #include "impeller/base/validation.h" +#include "impeller/core/formats.h" #include "impeller/renderer/backend/gles/formats_gles.h" #include "impeller/renderer/backend/gles/proc_table_gles.h" #include "impeller/renderer/backend/gles/texture_gles.h" -#include "impeller/renderer/formats.h" namespace impeller { diff --git a/impeller/renderer/backend/gles/texture_gles.cc b/impeller/renderer/backend/gles/texture_gles.cc index ff7c8c7865ee7..233bdc23ebd57 100644 --- a/impeller/renderer/backend/gles/texture_gles.cc +++ b/impeller/renderer/backend/gles/texture_gles.cc @@ -12,8 +12,8 @@ #include "impeller/base/allocation.h" #include "impeller/base/config.h" #include "impeller/base/validation.h" +#include "impeller/core/formats.h" #include "impeller/renderer/backend/gles/formats_gles.h" -#include "impeller/renderer/formats.h" namespace impeller { diff --git a/impeller/renderer/backend/gles/texture_gles.h b/impeller/renderer/backend/gles/texture_gles.h index 0ece901d2be6c..e2d2ae32c496e 100644 --- a/impeller/renderer/backend/gles/texture_gles.h +++ b/impeller/renderer/backend/gles/texture_gles.h @@ -6,9 +6,9 @@ #include "flutter/fml/macros.h" #include "impeller/base/backend_cast.h" +#include "impeller/core/texture.h" #include "impeller/renderer/backend/gles/handle_gles.h" #include "impeller/renderer/backend/gles/reactor_gles.h" -#include "impeller/renderer/texture.h" namespace impeller { diff --git a/impeller/renderer/backend/metal/allocator_mtl.h b/impeller/renderer/backend/metal/allocator_mtl.h index c1cca04c81227..345d0234e56c7 100644 --- a/impeller/renderer/backend/metal/allocator_mtl.h +++ b/impeller/renderer/backend/metal/allocator_mtl.h @@ -7,7 +7,7 @@ #include #include "flutter/fml/macros.h" -#include "impeller/renderer/allocator.h" +#include "impeller/core/allocator.h" namespace impeller { diff --git a/impeller/renderer/backend/metal/allocator_mtl.mm b/impeller/renderer/backend/metal/allocator_mtl.mm index 7dc44aff11519..28c34f7c69811 100644 --- a/impeller/renderer/backend/metal/allocator_mtl.mm +++ b/impeller/renderer/backend/metal/allocator_mtl.mm @@ -7,10 +7,10 @@ #include "flutter/fml/build_config.h" #include "flutter/fml/logging.h" #include "impeller/base/validation.h" +#include "impeller/core/buffer.h" #include "impeller/renderer/backend/metal/device_buffer_mtl.h" #include "impeller/renderer/backend/metal/formats_mtl.h" #include "impeller/renderer/backend/metal/texture_mtl.h" -#include "impeller/renderer/buffer.h" namespace impeller { diff --git a/impeller/renderer/backend/metal/blit_pass_mtl.mm b/impeller/renderer/backend/metal/blit_pass_mtl.mm index c18261948df91..ddbba0772c219 100644 --- a/impeller/renderer/backend/metal/blit_pass_mtl.mm +++ b/impeller/renderer/backend/metal/blit_pass_mtl.mm @@ -11,6 +11,8 @@ #include "flutter/fml/logging.h" #include "flutter/fml/trace_event.h" #include "impeller/base/backend_cast.h" +#include "impeller/core/formats.h" +#include "impeller/core/host_buffer.h" #include "impeller/renderer/backend/metal/blit_command_mtl.h" #include "impeller/renderer/backend/metal/device_buffer_mtl.h" #include "impeller/renderer/backend/metal/formats_mtl.h" @@ -18,8 +20,6 @@ #include "impeller/renderer/backend/metal/sampler_mtl.h" #include "impeller/renderer/backend/metal/texture_mtl.h" #include "impeller/renderer/blit_command.h" -#include "impeller/renderer/formats.h" -#include "impeller/renderer/host_buffer.h" #include "impeller/renderer/shader_types.h" namespace impeller { diff --git a/impeller/renderer/backend/metal/compute_pass_mtl.mm b/impeller/renderer/backend/metal/compute_pass_mtl.mm index e027cc91df8d1..dd5e7aee00680 100644 --- a/impeller/renderer/backend/metal/compute_pass_mtl.mm +++ b/impeller/renderer/backend/metal/compute_pass_mtl.mm @@ -13,14 +13,14 @@ #include "flutter/fml/logging.h" #include "flutter/fml/trace_event.h" #include "impeller/base/backend_cast.h" +#include "impeller/core/formats.h" +#include "impeller/core/host_buffer.h" #include "impeller/renderer/backend/metal/compute_pipeline_mtl.h" #include "impeller/renderer/backend/metal/device_buffer_mtl.h" #include "impeller/renderer/backend/metal/formats_mtl.h" #include "impeller/renderer/backend/metal/sampler_mtl.h" #include "impeller/renderer/backend/metal/texture_mtl.h" #include "impeller/renderer/compute_command.h" -#include "impeller/renderer/formats.h" -#include "impeller/renderer/host_buffer.h" #include "impeller/renderer/shader_types.h" namespace impeller { diff --git a/impeller/renderer/backend/metal/device_buffer_mtl.h b/impeller/renderer/backend/metal/device_buffer_mtl.h index ef1d5deefa1fb..061ad6004cc5a 100644 --- a/impeller/renderer/backend/metal/device_buffer_mtl.h +++ b/impeller/renderer/backend/metal/device_buffer_mtl.h @@ -8,7 +8,7 @@ #include "flutter/fml/macros.h" #include "impeller/base/backend_cast.h" -#include "impeller/renderer/device_buffer.h" +#include "impeller/core/device_buffer.h" namespace impeller { diff --git a/impeller/renderer/backend/metal/formats_mtl.h b/impeller/renderer/backend/metal/formats_mtl.h index 533011717c5ab..566f7eeb8779f 100644 --- a/impeller/renderer/backend/metal/formats_mtl.h +++ b/impeller/renderer/backend/metal/formats_mtl.h @@ -9,9 +9,9 @@ #include #include "flutter/fml/macros.h" +#include "impeller/core/formats.h" +#include "impeller/core/texture_descriptor.h" #include "impeller/geometry/color.h" -#include "impeller/renderer/formats.h" -#include "impeller/renderer/texture_descriptor.h" namespace impeller { diff --git a/impeller/renderer/backend/metal/render_pass_mtl.mm b/impeller/renderer/backend/metal/render_pass_mtl.mm index cce54c841d584..540309532ff26 100644 --- a/impeller/renderer/backend/metal/render_pass_mtl.mm +++ b/impeller/renderer/backend/metal/render_pass_mtl.mm @@ -8,13 +8,13 @@ #include "flutter/fml/logging.h" #include "flutter/fml/trace_event.h" #include "impeller/base/backend_cast.h" +#include "impeller/core/formats.h" +#include "impeller/core/host_buffer.h" #include "impeller/renderer/backend/metal/device_buffer_mtl.h" #include "impeller/renderer/backend/metal/formats_mtl.h" #include "impeller/renderer/backend/metal/pipeline_mtl.h" #include "impeller/renderer/backend/metal/sampler_mtl.h" #include "impeller/renderer/backend/metal/texture_mtl.h" -#include "impeller/renderer/formats.h" -#include "impeller/renderer/host_buffer.h" #include "impeller/renderer/shader_types.h" namespace impeller { diff --git a/impeller/renderer/backend/metal/texture_mtl.h b/impeller/renderer/backend/metal/texture_mtl.h index 0ff8d849ca04e..9d9378d1b6ce7 100644 --- a/impeller/renderer/backend/metal/texture_mtl.h +++ b/impeller/renderer/backend/metal/texture_mtl.h @@ -8,7 +8,7 @@ #include "flutter/fml/macros.h" #include "impeller/base/backend_cast.h" -#include "impeller/renderer/texture.h" +#include "impeller/core/texture.h" namespace impeller { diff --git a/impeller/renderer/backend/metal/texture_mtl.mm b/impeller/renderer/backend/metal/texture_mtl.mm index b719f96e23511..5c63624c014c6 100644 --- a/impeller/renderer/backend/metal/texture_mtl.mm +++ b/impeller/renderer/backend/metal/texture_mtl.mm @@ -5,7 +5,7 @@ #include "impeller/renderer/backend/metal/texture_mtl.h" #include "impeller/base/validation.h" -#include "impeller/renderer/texture_descriptor.h" +#include "impeller/core/texture_descriptor.h" namespace impeller { diff --git a/impeller/renderer/backend/vulkan/allocator_vk.cc b/impeller/renderer/backend/vulkan/allocator_vk.cc index 087e6b5d7fa9f..31f0f63e75d57 100644 --- a/impeller/renderer/backend/vulkan/allocator_vk.cc +++ b/impeller/renderer/backend/vulkan/allocator_vk.cc @@ -7,10 +7,10 @@ #include #include "flutter/fml/memory/ref_ptr.h" +#include "impeller/core/formats.h" #include "impeller/renderer/backend/vulkan/device_buffer_vk.h" #include "impeller/renderer/backend/vulkan/formats_vk.h" #include "impeller/renderer/backend/vulkan/texture_vk.h" -#include "impeller/renderer/formats.h" namespace impeller { diff --git a/impeller/renderer/backend/vulkan/allocator_vk.h b/impeller/renderer/backend/vulkan/allocator_vk.h index 0b4f3541bce98..7b61a3f475a12 100644 --- a/impeller/renderer/backend/vulkan/allocator_vk.h +++ b/impeller/renderer/backend/vulkan/allocator_vk.h @@ -7,7 +7,7 @@ #include "flutter/fml/macros.h" #include "flutter/fml/memory/ref_ptr.h" #include "flutter/vulkan/procs/vulkan_proc_table.h" -#include "impeller/renderer/allocator.h" +#include "impeller/core/allocator.h" #include "impeller/renderer/backend/vulkan/context_vk.h" #include "impeller/renderer/backend/vulkan/device_buffer_vk.h" #include "impeller/renderer/backend/vulkan/vk.h" diff --git a/impeller/renderer/backend/vulkan/context_vk.h b/impeller/renderer/backend/vulkan/context_vk.h index 2a4ab9502c248..5c930ec688494 100644 --- a/impeller/renderer/backend/vulkan/context_vk.h +++ b/impeller/renderer/backend/vulkan/context_vk.h @@ -11,6 +11,7 @@ #include "flutter/fml/mapping.h" #include "flutter/fml/unique_fd.h" #include "impeller/base/backend_cast.h" +#include "impeller/core/formats.h" #include "impeller/renderer/backend/vulkan/pipeline_library_vk.h" #include "impeller/renderer/backend/vulkan/sampler_library_vk.h" #include "impeller/renderer/backend/vulkan/shader_library_vk.h" @@ -18,7 +19,6 @@ #include "impeller/renderer/backend/vulkan/vk.h" #include "impeller/renderer/capabilities.h" #include "impeller/renderer/context.h" -#include "impeller/renderer/formats.h" #include "impeller/renderer/surface.h" namespace impeller { diff --git a/impeller/renderer/backend/vulkan/device_buffer_vk.h b/impeller/renderer/backend/vulkan/device_buffer_vk.h index 2f579c13a1e9c..5f92ca291114d 100644 --- a/impeller/renderer/backend/vulkan/device_buffer_vk.h +++ b/impeller/renderer/backend/vulkan/device_buffer_vk.h @@ -8,8 +8,8 @@ #include "flutter/fml/macros.h" #include "impeller/base/backend_cast.h" +#include "impeller/core/device_buffer.h" #include "impeller/renderer/backend/vulkan/context_vk.h" -#include "impeller/renderer/device_buffer.h" namespace impeller { diff --git a/impeller/renderer/backend/vulkan/formats_vk.h b/impeller/renderer/backend/vulkan/formats_vk.h index ce9db2558e5c2..f11887a48c3a9 100644 --- a/impeller/renderer/backend/vulkan/formats_vk.h +++ b/impeller/renderer/backend/vulkan/formats_vk.h @@ -5,8 +5,8 @@ #pragma once #include "flutter/fml/macros.h" +#include "impeller/core/formats.h" #include "impeller/renderer/backend/vulkan/vk.h" -#include "impeller/renderer/formats.h" #include "impeller/renderer/shader_types.h" #include "vulkan/vulkan_enums.hpp" diff --git a/impeller/renderer/backend/vulkan/render_pass_vk.cc b/impeller/renderer/backend/vulkan/render_pass_vk.cc index 4c1338555f9f7..8553aebd0c3f4 100644 --- a/impeller/renderer/backend/vulkan/render_pass_vk.cc +++ b/impeller/renderer/backend/vulkan/render_pass_vk.cc @@ -12,6 +12,7 @@ #include "flutter/fml/logging.h" #include "flutter/fml/trace_event.h" #include "impeller/base/validation.h" +#include "impeller/core/formats.h" #include "impeller/renderer/backend/vulkan/command_encoder_vk.h" #include "impeller/renderer/backend/vulkan/context_vk.h" #include "impeller/renderer/backend/vulkan/device_buffer_vk.h" @@ -20,7 +21,6 @@ #include "impeller/renderer/backend/vulkan/sampler_vk.h" #include "impeller/renderer/backend/vulkan/shared_object_vk.h" #include "impeller/renderer/backend/vulkan/texture_vk.h" -#include "impeller/renderer/formats.h" #include "impeller/renderer/sampler.h" #include "impeller/renderer/shader_types.h" #include "vulkan/vulkan_enums.hpp" diff --git a/impeller/renderer/backend/vulkan/texture_source_vk.h b/impeller/renderer/backend/vulkan/texture_source_vk.h index 2ec7d5876563e..3d99c2c14d781 100644 --- a/impeller/renderer/backend/vulkan/texture_source_vk.h +++ b/impeller/renderer/backend/vulkan/texture_source_vk.h @@ -6,9 +6,9 @@ #include "flutter/fml/macros.h" #include "impeller/base/thread.h" +#include "impeller/core/texture_descriptor.h" #include "impeller/renderer/backend/vulkan/formats_vk.h" #include "impeller/renderer/backend/vulkan/vk.h" -#include "impeller/renderer/texture_descriptor.h" namespace impeller { diff --git a/impeller/renderer/backend/vulkan/texture_vk.h b/impeller/renderer/backend/vulkan/texture_vk.h index 5128c2fd66ad5..2b7e2e451fdf7 100644 --- a/impeller/renderer/backend/vulkan/texture_vk.h +++ b/impeller/renderer/backend/vulkan/texture_vk.h @@ -8,12 +8,12 @@ #include "flutter/fml/macros.h" #include "impeller/base/backend_cast.h" +#include "impeller/core/texture.h" #include "impeller/renderer/backend/vulkan/context_vk.h" #include "impeller/renderer/backend/vulkan/device_buffer_vk.h" #include "impeller/renderer/backend/vulkan/formats_vk.h" #include "impeller/renderer/backend/vulkan/texture_source_vk.h" #include "impeller/renderer/backend/vulkan/vk.h" -#include "impeller/renderer/texture.h" namespace impeller { diff --git a/impeller/renderer/blit_command.h b/impeller/renderer/blit_command.h index 236b3e2c4b15d..90124b58d86c9 100644 --- a/impeller/renderer/blit_command.h +++ b/impeller/renderer/blit_command.h @@ -4,9 +4,9 @@ #pragma once +#include "impeller/core/device_buffer.h" +#include "impeller/core/texture.h" #include "impeller/geometry/rect.h" -#include "impeller/renderer/device_buffer.h" -#include "impeller/renderer/texture.h" namespace impeller { diff --git a/impeller/renderer/blit_pass.cc b/impeller/renderer/blit_pass.cc index da826a0af4644..36ef50f40eecc 100644 --- a/impeller/renderer/blit_pass.cc +++ b/impeller/renderer/blit_pass.cc @@ -8,8 +8,8 @@ #include "impeller/base/strings.h" #include "impeller/base/validation.h" +#include "impeller/core/host_buffer.h" #include "impeller/renderer/blit_command.h" -#include "impeller/renderer/host_buffer.h" namespace impeller { diff --git a/impeller/renderer/blit_pass.h b/impeller/renderer/blit_pass.h index 767f8d2a7f099..ea406c3e677fd 100644 --- a/impeller/renderer/blit_pass.h +++ b/impeller/renderer/blit_pass.h @@ -7,9 +7,9 @@ #include #include +#include "impeller/core/device_buffer.h" +#include "impeller/core/texture.h" #include "impeller/renderer/blit_command.h" -#include "impeller/renderer/device_buffer.h" -#include "impeller/renderer/texture.h" namespace impeller { diff --git a/impeller/renderer/capabilities.h b/impeller/renderer/capabilities.h index 11a2c99e8a90a..cac369087a308 100644 --- a/impeller/renderer/capabilities.h +++ b/impeller/renderer/capabilities.h @@ -7,7 +7,7 @@ #include #include "flutter/fml/macros.h" -#include "impeller/renderer/formats.h" +#include "impeller/core/formats.h" namespace impeller { diff --git a/impeller/renderer/command.cc b/impeller/renderer/command.cc index e5380a83570ca..71c57402cc806 100644 --- a/impeller/renderer/command.cc +++ b/impeller/renderer/command.cc @@ -7,7 +7,7 @@ #include #include "impeller/base/validation.h" -#include "impeller/renderer/formats.h" +#include "impeller/core/formats.h" #include "impeller/renderer/vertex_descriptor.h" namespace impeller { diff --git a/impeller/renderer/command.h b/impeller/renderer/command.h index 526fe3aaafe30..aa219dfd5fc25 100644 --- a/impeller/renderer/command.h +++ b/impeller/renderer/command.h @@ -11,14 +11,14 @@ #include "flutter/fml/logging.h" #include "flutter/fml/macros.h" +#include "impeller/core/buffer_view.h" +#include "impeller/core/formats.h" +#include "impeller/core/texture.h" +#include "impeller/core/vertex_buffer.h" #include "impeller/geometry/rect.h" -#include "impeller/renderer/buffer_view.h" -#include "impeller/renderer/formats.h" #include "impeller/renderer/pipeline.h" #include "impeller/renderer/sampler.h" #include "impeller/renderer/shader_types.h" -#include "impeller/renderer/texture.h" -#include "impeller/renderer/vertex_buffer.h" #include "impeller/renderer/vertex_buffer_builder.h" #include "impeller/tessellator/tessellator.h" diff --git a/impeller/renderer/compute_command.cc b/impeller/renderer/compute_command.cc index e2e2812f36266..41ce7586ff221 100644 --- a/impeller/renderer/compute_command.cc +++ b/impeller/renderer/compute_command.cc @@ -7,7 +7,7 @@ #include #include "impeller/base/validation.h" -#include "impeller/renderer/formats.h" +#include "impeller/core/formats.h" #include "impeller/renderer/vertex_descriptor.h" namespace impeller { diff --git a/impeller/renderer/compute_command.h b/impeller/renderer/compute_command.h index 54b467a56c839..15ee42f98a5d8 100644 --- a/impeller/renderer/compute_command.h +++ b/impeller/renderer/compute_command.h @@ -11,16 +11,16 @@ #include "flutter/fml/logging.h" #include "flutter/fml/macros.h" +#include "impeller/core/buffer_view.h" +#include "impeller/core/formats.h" +#include "impeller/core/texture.h" +#include "impeller/core/vertex_buffer.h" #include "impeller/geometry/rect.h" -#include "impeller/renderer/buffer_view.h" #include "impeller/renderer/command.h" #include "impeller/renderer/compute_pipeline_descriptor.h" -#include "impeller/renderer/formats.h" #include "impeller/renderer/pipeline.h" #include "impeller/renderer/sampler.h" #include "impeller/renderer/shader_types.h" -#include "impeller/renderer/texture.h" -#include "impeller/renderer/vertex_buffer.h" #include "impeller/renderer/vertex_buffer_builder.h" #include "impeller/tessellator/tessellator.h" diff --git a/impeller/renderer/compute_pass.cc b/impeller/renderer/compute_pass.cc index 7ca45618a95bd..579405831352f 100644 --- a/impeller/renderer/compute_pass.cc +++ b/impeller/renderer/compute_pass.cc @@ -7,7 +7,7 @@ #include "impeller/base/strings.h" #include "impeller/base/validation.h" -#include "impeller/renderer/host_buffer.h" +#include "impeller/core/host_buffer.h" namespace impeller { diff --git a/impeller/renderer/compute_pass.h b/impeller/renderer/compute_pass.h index 88135a0201a49..8d4af547d3e67 100644 --- a/impeller/renderer/compute_pass.h +++ b/impeller/renderer/compute_pass.h @@ -7,10 +7,9 @@ #include #include -#include "command_buffer.h" +#include "impeller/core/device_buffer.h" +#include "impeller/core/texture.h" #include "impeller/renderer/compute_command.h" -#include "impeller/renderer/device_buffer.h" -#include "impeller/renderer/texture.h" namespace impeller { diff --git a/impeller/renderer/compute_pipeline_builder.h b/impeller/renderer/compute_pipeline_builder.h index 044498d618270..aec09e607180f 100644 --- a/impeller/renderer/compute_pipeline_builder.h +++ b/impeller/renderer/compute_pipeline_builder.h @@ -8,9 +8,9 @@ #include "flutter/fml/macros.h" #include "impeller/base/strings.h" #include "impeller/base/validation.h" +#include "impeller/core/formats.h" #include "impeller/renderer/compute_pipeline_descriptor.h" #include "impeller/renderer/context.h" -#include "impeller/renderer/formats.h" #include "impeller/renderer/shader_library.h" #include "impeller/renderer/vertex_descriptor.h" diff --git a/impeller/renderer/compute_pipeline_descriptor.cc b/impeller/renderer/compute_pipeline_descriptor.cc index 37a69eaec955e..4563784591510 100644 --- a/impeller/renderer/compute_pipeline_descriptor.cc +++ b/impeller/renderer/compute_pipeline_descriptor.cc @@ -4,7 +4,7 @@ #include "impeller/renderer/compute_pipeline_descriptor.h" -#include "impeller/renderer/formats.h" +#include "impeller/core/formats.h" #include "impeller/renderer/shader_function.h" #include "impeller/renderer/shader_library.h" #include "impeller/renderer/vertex_descriptor.h" diff --git a/impeller/renderer/compute_pipeline_descriptor.h b/impeller/renderer/compute_pipeline_descriptor.h index 582844db7dd3c..5bd513f43c863 100644 --- a/impeller/renderer/compute_pipeline_descriptor.h +++ b/impeller/renderer/compute_pipeline_descriptor.h @@ -16,7 +16,7 @@ #include "flutter/fml/hash_combine.h" #include "flutter/fml/macros.h" #include "impeller/base/comparable.h" -#include "impeller/renderer/formats.h" +#include "impeller/core/formats.h" #include "impeller/renderer/shader_types.h" #include "impeller/tessellator/tessellator.h" diff --git a/impeller/renderer/compute_subgroup_unittests.cc b/impeller/renderer/compute_subgroup_unittests.cc index d13d1aa7882b9..eb9c3d6069374 100644 --- a/impeller/renderer/compute_subgroup_unittests.cc +++ b/impeller/renderer/compute_subgroup_unittests.cc @@ -4,34 +4,153 @@ #include +#include "compute_tessellator.h" #include "flutter/fml/synchronization/waitable_event.h" #include "flutter/fml/time/time_point.h" #include "flutter/testing/testing.h" #include "gmock/gmock.h" #include "impeller/base/strings.h" +#include "impeller/core/formats.h" #include "impeller/entity/contents/content_context.h" #include "impeller/fixtures/cubic_to_quads.comp.h" -#include "impeller/fixtures/golden_heart.h" +#include "impeller/fixtures/golden_paths.h" #include "impeller/fixtures/quad_polyline.comp.h" #include "impeller/fixtures/sample.comp.h" #include "impeller/fixtures/stage1.comp.h" #include "impeller/fixtures/stage2.comp.h" -#include "impeller/fixtures/stroke.comp.h" #include "impeller/geometry/path.h" +#include "impeller/geometry/path_builder.h" #include "impeller/geometry/path_component.h" #include "impeller/playground/compute_playground_test.h" #include "impeller/renderer/command_buffer.h" #include "impeller/renderer/compute_command.h" #include "impeller/renderer/compute_pipeline_builder.h" -#include "impeller/renderer/formats.h" +#include "impeller/renderer/compute_tessellator.h" +#include "impeller/renderer/path_polyline.comp.h" #include "impeller/renderer/pipeline_library.h" #include "impeller/renderer/render_pass.h" +#include "impeller/renderer/stroke.comp.h" namespace impeller { namespace testing { using ComputeSubgroupTest = ComputePlaygroundTest; INSTANTIATE_COMPUTE_SUITE(ComputeSubgroupTest); +TEST_P(ComputeSubgroupTest, QuadAndCubicInOnePath) { + using SS = StrokeComputeShader; + + auto context = GetContext(); + ASSERT_TRUE(context); + ASSERT_TRUE(context->GetCapabilities()->SupportsComputeSubgroups()); + + auto vertex_buffer = CreateHostVisibleDeviceBuffer>( + context, "VertexBuffer"); + auto vertex_buffer_count = + CreateHostVisibleDeviceBuffer(context, + "VertexBufferCount"); + + auto path = PathBuilder{} + .AddCubicCurve({140, 20}, {73, 20}, {20, 74}, {20, 140}) + .AddQuadraticCurve({20, 140}, {93, 90}, {100, 42}) + .TakePath(); + + auto tessellator = ComputeTessellator{}; + + fml::AutoResetWaitableEvent latch; + + auto status = tessellator.Tessellate( + path, context, vertex_buffer->AsBufferView(), + vertex_buffer_count->AsBufferView(), + [&latch](CommandBuffer::Status status) { + EXPECT_EQ(status, CommandBuffer::Status::kCompleted); + latch.Signal(); + }); + + ASSERT_EQ(status, ComputeTessellator::Status::kOk); + + auto callback = [&](RenderPass& pass) -> bool { + ContentContext renderer(context); + if (!renderer.IsValid()) { + return false; + } + + using VS = SolidFillPipeline::VertexShader; + using FS = SolidFillPipeline::FragmentShader; + + Command cmd; + cmd.label = "Draw Stroke"; + cmd.stencil_reference = 0; + + ContentContextOptions options; + options.sample_count = pass.GetRenderTarget().GetSampleCount(); + options.color_attachment_pixel_format = + pass.GetRenderTarget().GetRenderTargetPixelFormat(); + options.has_stencil_attachment = + pass.GetRenderTarget().GetStencilAttachment().has_value(); + options.blend_mode = BlendMode::kSourceIn; + options.primitive_type = PrimitiveType::kTriangleStrip; + options.stencil_compare = CompareFunction::kEqual; + options.stencil_operation = StencilOperation::kIncrementClamp; + + cmd.pipeline = renderer.GetSolidFillPipeline(options); + + auto count = reinterpret_cast( + vertex_buffer_count->AsBufferView().contents) + ->count; + auto& host_buffer = pass.GetTransientsBuffer(); + std::vector indices(count); + std::iota(std::begin(indices), std::end(indices), 0); + + VertexBuffer render_vertex_buffer{ + .vertex_buffer = vertex_buffer->AsBufferView(), + .index_buffer = host_buffer.Emplace( + indices.data(), count * sizeof(uint16_t), alignof(uint16_t)), + .index_count = count, + .index_type = IndexType::k16bit}; + cmd.BindVertices(render_vertex_buffer); + + VS::FrameInfo frame_info; + auto world_matrix = Matrix::MakeScale(GetContentScale()); + frame_info.mvp = + Matrix::MakeOrthographic(pass.GetRenderTargetSize()) * world_matrix; + VS::BindFrameInfo(cmd, + pass.GetTransientsBuffer().EmplaceUniform(frame_info)); + + FS::FragInfo frag_info; + frag_info.color = Color::Red().Premultiply(); + FS::BindFragInfo(cmd, pass.GetTransientsBuffer().EmplaceUniform(frag_info)); + + if (!pass.AddCommand(std::move(cmd))) { + return false; + } + + return true; + }; + ASSERT_TRUE(OpenPlaygroundHere(callback)); + + // The latch is down here because it's expected that on Metal the backend will + // take care of synchronizing the buffer between the compute and render pass + // usages, since it's not MTLHeap allocated. + // However, if playgrounds are disabled, no render pass actually gets + // submitted and we need to do a CPU latch here. + latch.Wait(); + + auto vertex_count = reinterpret_cast( + vertex_buffer_count->AsBufferView().contents) + ->count; + EXPECT_EQ(vertex_count, golden_cubic_and_quad_points.size()); + auto vertex_buffer_data = reinterpret_cast*>( + vertex_buffer->AsBufferView().contents); + for (size_t i = 0; i < vertex_count; i++) { + EXPECT_LT(std::abs(golden_cubic_and_quad_points[i].x - + vertex_buffer_data->position[i].x), + 1e-3); + EXPECT_LT(std::abs(golden_cubic_and_quad_points[i].y - + vertex_buffer_data->position[i].y), + 1e-3); + } +} + TEST_P(ComputeSubgroupTest, HeartCubicsToStrokeVertices) { using CS = CubicToQuadsComputeShader; using QS = QuadPolylineComputeShader; @@ -206,7 +325,7 @@ TEST_P(ComputeSubgroupTest, HeartCubicsToStrokeVertices) { Command cmd; cmd.label = "Draw Stroke"; - cmd.stencil_reference = 0; // entity.GetStencilDepth(); + cmd.stencil_reference = 0; ContentContextOptions options; options.sample_count = pass.GetRenderTarget().GetSampleCount(); @@ -214,7 +333,7 @@ TEST_P(ComputeSubgroupTest, HeartCubicsToStrokeVertices) { pass.GetRenderTarget().GetRenderTargetPixelFormat(); options.has_stencil_attachment = pass.GetRenderTarget().GetStencilAttachment().has_value(); - options.blend_mode = BlendMode::kSourceIn; // entity.GetBlendMode(); + options.blend_mode = BlendMode::kSourceIn; options.primitive_type = PrimitiveType::kTriangleStrip; options.stencil_compare = CompareFunction::kEqual; options.stencil_operation = StencilOperation::kIncrementClamp; diff --git a/impeller/renderer/compute_tessellator.cc b/impeller/renderer/compute_tessellator.cc new file mode 100644 index 0000000000000..504036963bfbe --- /dev/null +++ b/impeller/renderer/compute_tessellator.cc @@ -0,0 +1,185 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "impeller/renderer/compute_tessellator.h" + +#include "impeller/renderer/command_buffer.h" +#include "impeller/renderer/path_polyline.comp.h" +#include "impeller/renderer/pipeline_library.h" +#include "impeller/renderer/stroke.comp.h" + +namespace impeller { + +ComputeTessellator::ComputeTessellator() = default; +ComputeTessellator::~ComputeTessellator() = default; + +template +static std::shared_ptr CreateDeviceBuffer( + const std::shared_ptr& context, + const std::string& label) { + DeviceBufferDescriptor desc; + desc.storage_mode = StorageMode::kDevicePrivate; + desc.size = sizeof(T); + auto buffer = context->GetResourceAllocator()->CreateBuffer(desc); + buffer->SetLabel(label); + return buffer; +} + +ComputeTessellator& ComputeTessellator::SetStyle(Style value) { + style_ = value; + return *this; +} + +ComputeTessellator& ComputeTessellator::SetStrokeWidth(Scalar value) { + stroke_width_ = value; + return *this; +} + +ComputeTessellator& ComputeTessellator::SetStrokeJoin(Join value) { + stroke_join_ = value; + return *this; +} +ComputeTessellator& ComputeTessellator::SetStrokeCap(Cap value) { + stroke_cap_ = value; + return *this; +} +ComputeTessellator& ComputeTessellator::SetMiterLimit(Scalar value) { + miter_limit_ = value; + return *this; +} +ComputeTessellator& ComputeTessellator::SetCubicAccuracy(Scalar value) { + cubic_accuracy_ = value; + return *this; +} +ComputeTessellator& ComputeTessellator::SetQuadraticTolerance(Scalar value) { + quad_tolerance_ = value; + return *this; +} + +ComputeTessellator::Status ComputeTessellator::Tessellate( + const Path& path, + const std::shared_ptr& context, + BufferView vertex_buffer, + BufferView vertex_buffer_count, + const CommandBuffer::CompletionCallback& callback) const { + FML_DCHECK(style_ == Style::kStroke); + using PS = PathPolylineComputeShader; + using SS = StrokeComputeShader; + + auto cubic_count = path.GetComponentCount(Path::ComponentType::kCubic); + auto quad_count = path.GetComponentCount(Path::ComponentType::kQuadratic) + + (cubic_count * 10); + auto line_count = + path.GetComponentCount(Path::ComponentType::kLinear) + (quad_count * 10); + if (cubic_count > kMaxCubicCount || quad_count > kMaxQuadCount || + line_count > kMaxLineCount) { + return Status::kTooManyComponents; + } + PS::Cubics cubics{.count = 0}; + PS::Quads quads{.count = 0}; + PS::Lines lines{.count = 0}; + PS::Components components{.count = 0}; + PS::Config config{.cubic_accuracy = cubic_accuracy_, + .quad_tolerance = quad_tolerance_}; + + path.EnumerateComponents( + [&lines, &components](size_t index, const LinearPathComponent& linear) { + ::memcpy(&lines.data[lines.count], &linear, + sizeof(LinearPathComponent)); + components.data[components.count++] = {lines.count++, 2}; + }, + [&quads, &components](size_t index, const QuadraticPathComponent& quad) { + ::memcpy(&quads.data[quads.count], &quad, + sizeof(QuadraticPathComponent)); + components.data[components.count++] = {quads.count++, 3}; + }, + [&cubics, &components](size_t index, const CubicPathComponent& cubic) { + ::memcpy(&cubics.data[cubics.count], &cubic, + sizeof(CubicPathComponent)); + components.data[components.count++] = {cubics.count++, 4}; + }, + [](size_t index, const ContourComponent& contour) {}); + + auto polyline_buffer = + CreateDeviceBuffer>(context, "Polyline"); + + auto cmd_buffer = context->CreateCommandBuffer(); + auto pass = cmd_buffer->CreateComputePass(); + FML_DCHECK(pass && pass->IsValid()); + + { + using PathPolylinePipelineBuilder = ComputePipelineBuilder; + auto pipeline_desc = + PathPolylinePipelineBuilder::MakeDefaultPipelineDescriptor(*context); + FML_DCHECK(pipeline_desc.has_value()); + auto compute_pipeline = + context->GetPipelineLibrary()->GetPipeline(pipeline_desc).Get(); + FML_DCHECK(compute_pipeline); + + pass->SetGridSize(ISize(line_count, 1)); + pass->SetThreadGroupSize(ISize(line_count, 1)); + + ComputeCommand cmd; + cmd.label = "PathToPolyline"; + cmd.pipeline = compute_pipeline; + + PS::BindConfig(cmd, pass->GetTransientsBuffer().EmplaceUniform(config)); + PS::BindCubics(cmd, + pass->GetTransientsBuffer().EmplaceStorageBuffer(cubics)); + PS::BindQuads(cmd, pass->GetTransientsBuffer().EmplaceStorageBuffer(quads)); + PS::BindLines(cmd, pass->GetTransientsBuffer().EmplaceStorageBuffer(lines)); + PS::BindComponents( + cmd, pass->GetTransientsBuffer().EmplaceStorageBuffer(components)); + PS::BindPolyline(cmd, polyline_buffer->AsBufferView()); + + if (!pass->AddCommand(std::move(cmd))) { + return Status::kCommandInvalid; + } + } + + { + using StrokePipelineBuilder = ComputePipelineBuilder; + auto pipeline_desc = + StrokePipelineBuilder::MakeDefaultPipelineDescriptor(*context); + FML_DCHECK(pipeline_desc.has_value()); + auto compute_pipeline = + context->GetPipelineLibrary()->GetPipeline(pipeline_desc).Get(); + FML_DCHECK(compute_pipeline); + + pass->SetGridSize(ISize(line_count, 1)); + pass->SetThreadGroupSize(ISize(line_count, 1)); + + ComputeCommand cmd; + cmd.label = "Compute Stroke"; + cmd.pipeline = compute_pipeline; + + SS::Config config{ + .width = stroke_width_, + .cap = static_cast(stroke_cap_), + .join = static_cast(stroke_join_), + .miter_limit = miter_limit_, + }; + SS::BindConfig(cmd, pass->GetTransientsBuffer().EmplaceUniform(config)); + + SS::BindPolyline(cmd, polyline_buffer->AsBufferView()); + SS::BindVertexBufferCount(cmd, std::move(vertex_buffer_count)); + SS::BindVertexBuffer(cmd, std::move(vertex_buffer)); + + if (!pass->AddCommand(std::move(cmd))) { + return Status::kCommandInvalid; + } + } + + if (!pass->EncodeCommands()) { + return Status::kCommandInvalid; + } + + if (!cmd_buffer->SubmitCommands(callback)) { + return Status::kCommandInvalid; + } + + return Status::kOk; +} + +} // namespace impeller diff --git a/impeller/renderer/compute_tessellator.h b/impeller/renderer/compute_tessellator.h new file mode 100644 index 0000000000000..0a33c98652a2a --- /dev/null +++ b/impeller/renderer/compute_tessellator.h @@ -0,0 +1,84 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#pragma once + +#include "flutter/fml/macros.h" +#include "impeller/core/buffer_view.h" +#include "impeller/geometry/path.h" +#include "impeller/renderer/command_buffer.h" +#include "impeller/renderer/context.h" + +namespace impeller { + +//------------------------------------------------------------------------------ +/// @brief A utility that generates triangles of the specified fill type +/// given a path. +/// +class ComputeTessellator { + public: + ComputeTessellator(); + + ~ComputeTessellator(); + + static constexpr size_t kMaxCubicCount = 256; + static constexpr size_t kMaxQuadCount = 512; + static constexpr size_t kMaxLineCount = 1024; + static constexpr size_t kMaxComponentCount = + kMaxCubicCount + kMaxQuadCount + kMaxLineCount; + + enum class Status { + kCommandInvalid, + kTooManyComponents, + kOk, + }; + + enum class Style { + kStroke, + // TODO(dnfield): Implement kFill. + }; + + ComputeTessellator& SetStyle(Style value); + ComputeTessellator& SetStrokeWidth(Scalar value); + ComputeTessellator& SetStrokeJoin(Join value); + ComputeTessellator& SetStrokeCap(Cap value); + ComputeTessellator& SetMiterLimit(Scalar value); + ComputeTessellator& SetCubicAccuracy(Scalar value); + ComputeTessellator& SetQuadraticTolerance(Scalar value); + + //---------------------------------------------------------------------------- + /// @brief Generates triangles from the path. + /// If the data needs to be synchronized back to the CPU, e.g. + /// because one of the buffer views are host visible and will be + /// used without creating a blit pass to copy them back, the + /// callback is used to determine when the GPU calculation is + /// complete and its status. + /// On Metal, no additional synchronization is needed as long as + /// the buffers are not heap allocated, so no additional + /// synchronization mechanism is provided. + /// + /// @return A |Status| value indicating success or failure of the submission. + /// + // TODO(dnfield): Provide additional synchronization methods here for Vulkan + // and heap allocated buffers on Metal. + Status Tessellate( + const Path& path, + const std::shared_ptr& context, + BufferView vertex_buffer, + BufferView vertex_buffer_count, + const CommandBuffer::CompletionCallback& callback = nullptr) const; + + private: + Style style_ = Style::kStroke; + Scalar stroke_width_ = 1.0f; + Cap stroke_cap_ = Cap::kButt; + Join stroke_join_ = Join::kMiter; + Scalar miter_limit_ = 4.0f; + Scalar cubic_accuracy_ = kDefaultCurveTolerance; + Scalar quad_tolerance_ = .1f; + + FML_DISALLOW_COPY_AND_ASSIGN(ComputeTessellator); +}; + +} // namespace impeller diff --git a/impeller/renderer/compute_unittests.cc b/impeller/renderer/compute_unittests.cc index 243fbf05d410f..3411103539c04 100644 --- a/impeller/renderer/compute_unittests.cc +++ b/impeller/renderer/compute_unittests.cc @@ -7,6 +7,7 @@ #include "flutter/testing/testing.h" #include "gmock/gmock.h" #include "impeller/base/strings.h" +#include "impeller/core/formats.h" #include "impeller/fixtures/sample.comp.h" #include "impeller/fixtures/stage1.comp.h" #include "impeller/fixtures/stage2.comp.h" @@ -16,7 +17,6 @@ #include "impeller/renderer/command_buffer.h" #include "impeller/renderer/compute_command.h" #include "impeller/renderer/compute_pipeline_builder.h" -#include "impeller/renderer/formats.h" #include "impeller/renderer/pipeline_library.h" namespace impeller { diff --git a/impeller/renderer/context.h b/impeller/renderer/context.h index c68996f376145..d0b425c658bb3 100644 --- a/impeller/renderer/context.h +++ b/impeller/renderer/context.h @@ -8,8 +8,8 @@ #include #include "flutter/fml/macros.h" +#include "impeller/core/formats.h" #include "impeller/renderer/capabilities.h" -#include "impeller/renderer/formats.h" namespace impeller { diff --git a/impeller/renderer/device_buffer_unittests.cc b/impeller/renderer/device_buffer_unittests.cc index 49c6e626ed8b0..95d53812cda53 100644 --- a/impeller/renderer/device_buffer_unittests.cc +++ b/impeller/renderer/device_buffer_unittests.cc @@ -3,8 +3,8 @@ // found in the LICENSE file. #include "flutter/testing/testing.h" +#include "impeller/core/device_buffer.h" #include "impeller/playground/playground.h" -#include "impeller/renderer/device_buffer.h" namespace impeller { namespace testing { diff --git a/impeller/renderer/host_buffer_unittests.cc b/impeller/renderer/host_buffer_unittests.cc index 8de2339ff3738..985c9c1af5e0d 100644 --- a/impeller/renderer/host_buffer_unittests.cc +++ b/impeller/renderer/host_buffer_unittests.cc @@ -3,7 +3,7 @@ // found in the LICENSE file. #include "flutter/testing/testing.h" -#include "impeller/renderer/host_buffer.h" +#include "impeller/core/host_buffer.h" namespace impeller { namespace testing { diff --git a/impeller/renderer/path_polyline.comp b/impeller/renderer/path_polyline.comp new file mode 100644 index 0000000000000..cb854952afdd7 --- /dev/null +++ b/impeller/renderer/path_polyline.comp @@ -0,0 +1,172 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +#extension GL_KHR_shader_subgroup_arithmetic : enable + +layout(local_size_x = 512, local_size_y = 1) in; +layout(std430) buffer; + +#include + +layout(binding = 0) readonly buffer Cubics { + uint count; + CubicData data[]; +} +cubics; + +layout(binding = 1) buffer Quads { + uint count; + QuadData data[]; +} +quads; + +layout(binding = 2) buffer Lines { + uint count; + LineData data[]; +} +lines; + +layout(binding = 3) buffer Components { + uint count; + PathComponent data[]; +} +components; + +layout(binding = 4) buffer Polyline { + uint count; + vec2 data[]; +} +polyline; + +uniform Config { + float cubic_accuracy; + float quad_tolerance; +} +config; + +shared uvec2 cubic_ranges[512]; +shared uvec2 quad_ranges[512]; +shared uint scratch_count[512]; +shared uint scratch_sum[512]; + +uint ComputePosition(uint index) { + if (index < gl_SubgroupSize) { + return scratch_sum[index]; + } + int position = -1; + uint sum = scratch_sum[index]; + do { + position += int(gl_SubgroupSize); + sum += scratch_sum[position]; + } while (position < index); + return sum; +} + +void ProcessCubic(uint ident) { + CubicData cubic; + uint quad_count = 0; + if (ident < cubics.count) { + cubic = cubics.data[ident]; + quad_count = EstimateQuadraticCount(cubic, config.cubic_accuracy); + scratch_count[ident] = quad_count; + } + + barrier(); + + if (quad_count == 0) { + return; + } + + scratch_sum[ident] = subgroupExclusiveAdd(scratch_count[ident]); + + uint offset = ComputePosition(ident) + quads.count; + atomicAdd(quads.count, quad_count); + + cubic_ranges[ident] = uvec2(offset, quad_count); + for (uint i = 0; i < quad_count; i++) { + quads.data[offset + i] = GenerateQuadraticFromCubic(cubic, i, quad_count); + } +} + +void ProcessQuad(uint ident) { + QuadData quad; + QuadDecomposition decomposition; + if (ident < quads.count) { + quad = quads.data[ident]; + decomposition = DecomposeQuad(quad, config.quad_tolerance); + scratch_count[ident] = decomposition.line_count; + } + + barrier(); + + if (decomposition.line_count == 0) { + return; + } + + scratch_sum[ident] = subgroupExclusiveAdd(scratch_count[ident]); + + uint offset = ComputePosition(ident) + lines.count; + atomicAdd(lines.count, decomposition.line_count); + quad_ranges[ident] = uvec2(offset, decomposition.line_count); + + vec2 last_point = quad.p1; + for (uint i = 1; i < decomposition.line_count; i++) { + LineData line = + LineData(last_point, GenerateLineFromQuad(quad, i, decomposition)); + last_point = line.p2; + lines.data[offset + i - 1] = line; + } + lines.data[offset + decomposition.line_count - 1] = + LineData(last_point, quad.p2); +} + +void ProcessLine(uint ident) { + if (ident == lines.count) { + atomicAdd(polyline.count, lines.count + 1); + } + + PathComponent component; + uvec2 range = uvec2(0, 0); + if (ident < components.count) { + component = components.data[ident]; + if (component.count == 4) { + // Determine location in quads + uvec2 quad_range = cubic_ranges[component.index]; + range.x = quad_ranges[quad_range.x].x; + range.y = quad_ranges[quad_range.x + quad_range.y - 1].x + + quad_ranges[quad_range.x + quad_range.y - 1].y - range.x; + } else if (component.count == 3) { + range = quad_ranges[component.index]; + } else if (component.count == 2) { + range = uvec2(component.index, 1); + } + + scratch_count[ident] = range.y; + } + barrier(); + + if (ident < components.count) { + scratch_sum[ident] = subgroupExclusiveAdd(scratch_count[ident]); + + uint offset = ComputePosition(ident); + polyline.data[offset] = lines.data[range.x].p1; + for (uint i = 0; i < range.y; i++) { + polyline.data[offset + i + 1] = lines.data[range.x + i].p2; + } + } +} + +void main() { + uint ident = gl_GlobalInvocationID.x; + // Turn each cubic into quads. + ProcessCubic(ident); + barrier(); + + // Turn each quad into lines. + ProcessQuad(ident); + barrier(); + + // Copy lines to the output buffer. + ProcessLine(ident); + barrier(); +} diff --git a/impeller/renderer/pipeline_builder.h b/impeller/renderer/pipeline_builder.h index c1c3fbb94781c..ad003493061a0 100644 --- a/impeller/renderer/pipeline_builder.h +++ b/impeller/renderer/pipeline_builder.h @@ -8,8 +8,8 @@ #include "flutter/fml/macros.h" #include "impeller/base/strings.h" #include "impeller/base/validation.h" +#include "impeller/core/formats.h" #include "impeller/renderer/context.h" -#include "impeller/renderer/formats.h" #include "impeller/renderer/pipeline_descriptor.h" #include "impeller/renderer/shader_library.h" #include "impeller/renderer/vertex_descriptor.h" diff --git a/impeller/renderer/pipeline_descriptor.cc b/impeller/renderer/pipeline_descriptor.cc index 06367a714804d..eef517b30c847 100644 --- a/impeller/renderer/pipeline_descriptor.cc +++ b/impeller/renderer/pipeline_descriptor.cc @@ -4,7 +4,7 @@ #include "impeller/renderer/pipeline_descriptor.h" -#include "impeller/renderer/formats.h" +#include "impeller/core/formats.h" #include "impeller/renderer/shader_function.h" #include "impeller/renderer/shader_library.h" #include "impeller/renderer/vertex_descriptor.h" diff --git a/impeller/renderer/pipeline_descriptor.h b/impeller/renderer/pipeline_descriptor.h index f6d4930d15df9..552fcfedf23c0 100644 --- a/impeller/renderer/pipeline_descriptor.h +++ b/impeller/renderer/pipeline_descriptor.h @@ -16,7 +16,7 @@ #include "flutter/fml/hash_combine.h" #include "flutter/fml/macros.h" #include "impeller/base/comparable.h" -#include "impeller/renderer/formats.h" +#include "impeller/core/formats.h" #include "impeller/renderer/shader_types.h" #include "impeller/tessellator/tessellator.h" diff --git a/impeller/renderer/render_target.cc b/impeller/renderer/render_target.cc index a9db9b2e7c2c5..426bc0ad8a12a 100644 --- a/impeller/renderer/render_target.cc +++ b/impeller/renderer/render_target.cc @@ -6,9 +6,9 @@ #include "impeller/base/strings.h" #include "impeller/base/validation.h" -#include "impeller/renderer/allocator.h" +#include "impeller/core/allocator.h" +#include "impeller/core/texture.h" #include "impeller/renderer/context.h" -#include "impeller/renderer/texture.h" namespace impeller { diff --git a/impeller/renderer/render_target.h b/impeller/renderer/render_target.h index e888c97149799..14562c6cc71b6 100644 --- a/impeller/renderer/render_target.h +++ b/impeller/renderer/render_target.h @@ -9,9 +9,9 @@ #include #include "flutter/fml/macros.h" +#include "impeller/core/allocator.h" +#include "impeller/core/formats.h" #include "impeller/geometry/size.h" -#include "impeller/renderer/allocator.h" -#include "impeller/renderer/formats.h" namespace impeller { diff --git a/impeller/renderer/renderer_unittests.cc b/impeller/renderer/renderer_unittests.cc index a688ba5671ef6..9705fc7864043 100644 --- a/impeller/renderer/renderer_unittests.cc +++ b/impeller/renderer/renderer_unittests.cc @@ -4,6 +4,8 @@ #include "flutter/testing/testing.h" #include "impeller/base/strings.h" +#include "impeller/core/device_buffer_descriptor.h" +#include "impeller/core/formats.h" #include "impeller/fixtures/array.frag.h" #include "impeller/fixtures/array.vert.h" #include "impeller/fixtures/box_fade.frag.h" @@ -26,8 +28,6 @@ #include "impeller/playground/playground_test.h" #include "impeller/renderer/command.h" #include "impeller/renderer/command_buffer.h" -#include "impeller/renderer/device_buffer_descriptor.h" -#include "impeller/renderer/formats.h" #include "impeller/renderer/pipeline_builder.h" #include "impeller/renderer/pipeline_library.h" #include "impeller/renderer/renderer.h" diff --git a/impeller/renderer/sampler_descriptor.h b/impeller/renderer/sampler_descriptor.h index 60678dac122bc..b9292cff94d90 100644 --- a/impeller/renderer/sampler_descriptor.h +++ b/impeller/renderer/sampler_descriptor.h @@ -8,7 +8,7 @@ #include "flutter/fml/macros.h" #include "impeller/base/comparable.h" -#include "impeller/renderer/formats.h" +#include "impeller/core/formats.h" namespace impeller { diff --git a/impeller/renderer/snapshot.h b/impeller/renderer/snapshot.h index 981b668b66c65..6d2d2fb74f085 100644 --- a/impeller/renderer/snapshot.h +++ b/impeller/renderer/snapshot.h @@ -9,11 +9,11 @@ #include #include "flutter/fml/macros.h" +#include "impeller/core/formats.h" +#include "impeller/core/texture.h" #include "impeller/geometry/matrix.h" #include "impeller/geometry/rect.h" -#include "impeller/renderer/formats.h" #include "impeller/renderer/sampler_descriptor.h" -#include "impeller/renderer/texture.h" namespace impeller { diff --git a/impeller/fixtures/stroke.comp b/impeller/renderer/stroke.comp similarity index 88% rename from impeller/fixtures/stroke.comp rename to impeller/renderer/stroke.comp index 7f5453cd0cd62..0090c0af7336d 100644 --- a/impeller/fixtures/stroke.comp +++ b/impeller/renderer/stroke.comp @@ -42,6 +42,7 @@ vec2 compute_offset(uint index) { void main() { uint ident = gl_GlobalInvocationID.x; if (ident >= polyline.count || ident == 0) { + // This is ok because there is no barrier() below. return; } @@ -56,8 +57,8 @@ void main() { // TODO(dnfield): Implement other cap/join mechanisms. if (ident == polyline.count - 1) { - vertex_buffer.position[index * 4 + 4] = vec2(140, 20); - vertex_buffer.position[index * 4 + 5] = vec2(140, 20); + vertex_buffer.position[index * 4 + 4] = polyline.data[ident] + offset; + vertex_buffer.position[index * 4 + 5] = polyline.data[ident] - offset; atomicAdd(vertex_buffer_count.count, 2); } } diff --git a/impeller/renderer/testing/mocks.h b/impeller/renderer/testing/mocks.h index 260f9c8898168..6a0e093443f2b 100644 --- a/impeller/renderer/testing/mocks.h +++ b/impeller/renderer/testing/mocks.h @@ -5,11 +5,11 @@ #pragma once #include "gmock/gmock.h" -#include "impeller/renderer/allocator.h" +#include "impeller/core/allocator.h" +#include "impeller/core/texture.h" #include "impeller/renderer/command_buffer.h" #include "impeller/renderer/context.h" #include "impeller/renderer/render_target.h" -#include "impeller/renderer/texture.h" namespace impeller { namespace testing { diff --git a/impeller/renderer/vertex_buffer_builder.h b/impeller/renderer/vertex_buffer_builder.h index 4d0e29df9e0f9..96c114202f4cf 100644 --- a/impeller/renderer/vertex_buffer_builder.h +++ b/impeller/renderer/vertex_buffer_builder.h @@ -10,12 +10,12 @@ #include "flutter/fml/macros.h" #include "impeller/base/strings.h" +#include "impeller/core/allocator.h" +#include "impeller/core/device_buffer.h" +#include "impeller/core/formats.h" +#include "impeller/core/host_buffer.h" +#include "impeller/core/vertex_buffer.h" #include "impeller/geometry/vector.h" -#include "impeller/renderer/allocator.h" -#include "impeller/renderer/device_buffer.h" -#include "impeller/renderer/formats.h" -#include "impeller/renderer/host_buffer.h" -#include "impeller/renderer/vertex_buffer.h" namespace impeller { diff --git a/impeller/scene/geometry.cc b/impeller/scene/geometry.cc index ed6eda6ab64e8..016211499aa95 100644 --- a/impeller/scene/geometry.cc +++ b/impeller/scene/geometry.cc @@ -8,13 +8,13 @@ #include #include +#include "impeller/core/device_buffer_descriptor.h" +#include "impeller/core/formats.h" +#include "impeller/core/vertex_buffer.h" #include "impeller/geometry/point.h" #include "impeller/geometry/vector.h" -#include "impeller/renderer/device_buffer_descriptor.h" -#include "impeller/renderer/formats.h" #include "impeller/renderer/sampler_descriptor.h" #include "impeller/renderer/sampler_library.h" -#include "impeller/renderer/vertex_buffer.h" #include "impeller/renderer/vertex_buffer_builder.h" #include "impeller/scene/importer/scene_flatbuffers.h" #include "impeller/scene/shaders/skinned.vert.h" diff --git a/impeller/scene/geometry.h b/impeller/scene/geometry.h index 269fe46376ad4..285629a7a4cb3 100644 --- a/impeller/scene/geometry.h +++ b/impeller/scene/geometry.h @@ -7,13 +7,13 @@ #include #include "flutter/fml/macros.h" +#include "impeller/core/allocator.h" +#include "impeller/core/device_buffer.h" +#include "impeller/core/host_buffer.h" +#include "impeller/core/vertex_buffer.h" #include "impeller/geometry/matrix.h" #include "impeller/geometry/vector.h" -#include "impeller/renderer/allocator.h" #include "impeller/renderer/command.h" -#include "impeller/renderer/device_buffer.h" -#include "impeller/renderer/host_buffer.h" -#include "impeller/renderer/vertex_buffer.h" #include "impeller/scene/importer/scene_flatbuffers.h" #include "impeller/scene/pipeline_key.h" #include "impeller/scene/scene_context.h" diff --git a/impeller/scene/material.cc b/impeller/scene/material.cc index 87eb92e198013..1e3493dadd3e5 100644 --- a/impeller/scene/material.cc +++ b/impeller/scene/material.cc @@ -4,7 +4,7 @@ #include "impeller/scene/material.h" #include "impeller/base/validation.h" -#include "impeller/renderer/formats.h" +#include "impeller/core/formats.h" #include "impeller/renderer/sampler_descriptor.h" #include "impeller/renderer/sampler_library.h" #include "impeller/scene/importer/conversions.h" diff --git a/impeller/scene/material.h b/impeller/scene/material.h index a9221a05f480c..e3132cfb1c7c1 100644 --- a/impeller/scene/material.h +++ b/impeller/scene/material.h @@ -6,10 +6,10 @@ #include +#include "impeller/core/formats.h" +#include "impeller/core/texture.h" #include "impeller/geometry/scalar.h" -#include "impeller/renderer/formats.h" #include "impeller/renderer/render_pass.h" -#include "impeller/renderer/texture.h" #include "impeller/scene/importer/scene_flatbuffers.h" #include "impeller/scene/pipeline_key.h" diff --git a/impeller/scene/node.h b/impeller/scene/node.h index 2f144397500fd..2e0cce559cc44 100644 --- a/impeller/scene/node.h +++ b/impeller/scene/node.h @@ -12,9 +12,9 @@ #include "flutter/fml/macros.h" #include "impeller/base/thread.h" #include "impeller/base/thread_safety.h" +#include "impeller/core/texture.h" #include "impeller/geometry/matrix.h" #include "impeller/renderer/render_target.h" -#include "impeller/renderer/texture.h" #include "impeller/scene/animation/animation.h" #include "impeller/scene/animation/animation_clip.h" #include "impeller/scene/animation/animation_player.h" diff --git a/impeller/scene/scene_context.cc b/impeller/scene/scene_context.cc index 1ee1a7a5b3733..dbd09eec0e48b 100644 --- a/impeller/scene/scene_context.cc +++ b/impeller/scene/scene_context.cc @@ -3,7 +3,7 @@ // found in the LICENSE file. #include "impeller/scene/scene_context.h" -#include "impeller/renderer/formats.h" +#include "impeller/core/formats.h" #include "impeller/scene/material.h" #include "impeller/scene/shaders/skinned.vert.h" #include "impeller/scene/shaders/unlit.frag.h" diff --git a/impeller/scene/scene_unittests.cc b/impeller/scene/scene_unittests.cc index d1ed6567902fa..875e9fc1d9fb4 100644 --- a/impeller/scene/scene_unittests.cc +++ b/impeller/scene/scene_unittests.cc @@ -8,6 +8,7 @@ #include "flutter/fml/mapping.h" #include "flutter/testing/testing.h" +#include "impeller/core/formats.h" #include "impeller/geometry/color.h" #include "impeller/geometry/constants.h" #include "impeller/geometry/matrix.h" @@ -16,7 +17,6 @@ #include "impeller/image/decompressed_image.h" #include "impeller/playground/playground.h" #include "impeller/playground/playground_test.h" -#include "impeller/renderer/formats.h" #include "impeller/scene/animation/animation_clip.h" #include "impeller/scene/camera.h" #include "impeller/scene/geometry.h" diff --git a/impeller/scene/skin.cc b/impeller/scene/skin.cc index 4407eeb5bf76f..b3ea96993a6e7 100644 --- a/impeller/scene/skin.cc +++ b/impeller/scene/skin.cc @@ -10,7 +10,7 @@ #include #include "flutter/fml/logging.h" -#include "impeller/renderer/allocator.h" +#include "impeller/core/allocator.h" #include "impeller/scene/importer/conversions.h" namespace impeller { diff --git a/impeller/scene/skin.h b/impeller/scene/skin.h index 016b527e771c0..804278a0d741f 100644 --- a/impeller/scene/skin.h +++ b/impeller/scene/skin.h @@ -9,8 +9,8 @@ #include "flutter/fml/macros.h" -#include "impeller/renderer/allocator.h" -#include "impeller/renderer/texture.h" +#include "impeller/core/allocator.h" +#include "impeller/core/texture.h" #include "impeller/scene/importer/scene_flatbuffers.h" #include "impeller/scene/node.h" diff --git a/impeller/tools/impeller.gni b/impeller/tools/impeller.gni index d5bf709255d1e..0d5fff3557127 100644 --- a/impeller/tools/impeller.gni +++ b/impeller/tools/impeller.gni @@ -46,6 +46,8 @@ declare_args() { impeller_supports_rendering = impeller_enable_metal || impeller_enable_opengles || impeller_enable_vulkan + + impeller_enable_compute = impeller_enable_vulkan || impeller_enable_metal } # ------------------------------------------------------------------------------ @@ -301,6 +303,7 @@ template("impellerc") { } if (defined(invoker.metal_version)) { + assert(is_mac || is_ios) metal_version = invoker.metal_version args += [ "--metal-version=$metal_version" ] } @@ -392,7 +395,7 @@ template("impellerc_reflect") { ]) deps = [ - "//flutter/impeller/renderer", + "//flutter/impeller/core", impellerc_invocation, ] } @@ -581,12 +584,13 @@ template("_impeller_shaders_vk") { impellerc(impellerc_vk) { shaders = invoker.shaders sl_file_extension = "vkspv" - if (defined(invoker.metal_version)) { - metal_version = invoker.metal_version - } # Metal reflectors generate a superset of information. if (impeller_enable_metal) { + if (defined(invoker.metal_version)) { + metal_version = invoker.metal_version + } + intermediates_subdir = "vk" } shader_target_flag = "--vulkan" @@ -682,7 +686,6 @@ template("_impeller_shaders_vk") { # openGL semantics when compilig SPIR-V. # template("impeller_shaders") { - metal_version = "1.2" if (defined(invoker.metal_version)) { metal_version = invoker.metal_version } @@ -703,6 +706,9 @@ template("impeller_shaders") { } if (impeller_enable_metal) { + if (!defined(metal_version)) { + metal_version = "1.2" + } not_needed(invoker, [ "analyze" ]) mtl_shaders = "mtl_$target_name" _impeller_shaders_metal(mtl_shaders) { @@ -745,7 +751,6 @@ template("impeller_shaders") { vulkan_language_version = invoker.vulkan_language_version } shaders = invoker.shaders - metal_version = metal_version analyze = analyze } } diff --git a/impeller/tools/malioc.json b/impeller/tools/malioc.json index d9e3b4b4226ea..9f6418deddff2 100644 --- a/impeller/tools/malioc.json +++ b/impeller/tools/malioc.json @@ -13645,6 +13645,131 @@ } } }, + "flutter/impeller/renderer/path_polyline.comp.vkspv": { + "Mali-G78": { + "core": "Mali-G78", + "filename": "flutter/impeller/renderer/path_polyline.comp.vkspv", + "has_uniform_computation": true, + "type": "Compute", + "variants": { + "Main": { + "fp16_arithmetic": 0, + "has_stack_spilling": false, + "performance": { + "longest_path_bound_pipelines": [ + null + ], + "longest_path_cycles": [ + null, + null, + null, + null, + null, + null + ], + "pipelines": [ + "arith_total", + "arith_fma", + "arith_cvt", + "arith_sfu", + "load_store", + "texture" + ], + "shortest_path_bound_pipelines": [ + "load_store" + ], + "shortest_path_cycles": [ + 0.75, + 0.0, + 0.75, + 0.0, + 2.0, + 0.0 + ], + "total_bound_pipelines": [ + "load_store" + ], + "total_cycles": [ + 5.9375, + 2.737499952316284, + 4.824999809265137, + 5.9375, + 35.0, + 0.0 + ] + }, + "shared_storage_used": 12288, + "stack_spill_bytes": 0, + "thread_occupancy": 50, + "uniform_registers_used": 34, + "work_registers_used": 55 + } + } + } + }, + "flutter/impeller/renderer/stroke.comp.vkspv": { + "Mali-G78": { + "core": "Mali-G78", + "filename": "flutter/impeller/renderer/stroke.comp.vkspv", + "has_uniform_computation": true, + "type": "Compute", + "variants": { + "Main": { + "fp16_arithmetic": 0, + "has_stack_spilling": false, + "performance": { + "longest_path_bound_pipelines": [ + "load_store" + ], + "longest_path_cycles": [ + 0.3125, + 0.3125, + 0.1875, + 0.125, + 7.0, + 0.0 + ], + "pipelines": [ + "arith_total", + "arith_fma", + "arith_cvt", + "arith_sfu", + "load_store", + "texture" + ], + "shortest_path_bound_pipelines": [ + "arith_total", + "arith_cvt" + ], + "shortest_path_cycles": [ + 0.0625, + 0.0, + 0.0625, + 0.0, + 0.0, + 0.0 + ], + "total_bound_pipelines": [ + "load_store" + ], + "total_cycles": [ + 0.3125, + 0.3125, + 0.1875, + 0.125, + 7.0, + 0.0 + ] + }, + "shared_storage_used": 0, + "stack_spill_bytes": 0, + "thread_occupancy": 100, + "uniform_registers_used": 10, + "work_registers_used": 24 + } + } + } + }, "flutter/impeller/scene/shaders/gles/skinned.vert.gles": { "Mali-G78": { "core": "Mali-G78", diff --git a/impeller/typographer/backends/skia/text_render_context_skia.cc b/impeller/typographer/backends/skia/text_render_context_skia.cc index 1338c0c13c561..d6f9ee8e48f6e 100644 --- a/impeller/typographer/backends/skia/text_render_context_skia.cc +++ b/impeller/typographer/backends/skia/text_render_context_skia.cc @@ -9,7 +9,7 @@ #include "flutter/fml/logging.h" #include "flutter/fml/trace_event.h" #include "impeller/base/allocation.h" -#include "impeller/renderer/allocator.h" +#include "impeller/core/allocator.h" #include "impeller/typographer/backends/skia/typeface_skia.h" #include "third_party/skia/include/core/SkBitmap.h" #include "third_party/skia/include/core/SkCanvas.h" diff --git a/impeller/typographer/glyph_atlas.h b/impeller/typographer/glyph_atlas.h index d25d1e162e32e..7ae35740b42de 100644 --- a/impeller/typographer/glyph_atlas.h +++ b/impeller/typographer/glyph_atlas.h @@ -10,9 +10,9 @@ #include #include "flutter/fml/macros.h" +#include "impeller/core/texture.h" #include "impeller/geometry/rect.h" #include "impeller/renderer/pipeline.h" -#include "impeller/renderer/texture.h" #include "impeller/typographer/font_glyph_pair.h" class SkBitmap; diff --git a/lib/ui/painting/display_list_deferred_image_gpu_impeller.h b/lib/ui/painting/display_list_deferred_image_gpu_impeller.h index 75a1fe7704bf3..08692ff2b4bd1 100644 --- a/lib/ui/painting/display_list_deferred_image_gpu_impeller.h +++ b/lib/ui/painting/display_list_deferred_image_gpu_impeller.h @@ -11,7 +11,7 @@ #include "flutter/fml/memory/weak_ptr.h" #include "flutter/fml/task_runner.h" #include "flutter/lib/ui/snapshot_delegate.h" -#include "impeller/renderer/texture.h" +#include "impeller/core/texture.h" namespace flutter { diff --git a/lib/ui/painting/image_decoder_impeller.cc b/lib/ui/painting/image_decoder_impeller.cc index 6e834f07880d3..01ee5ce62616a 100644 --- a/lib/ui/painting/image_decoder_impeller.cc +++ b/lib/ui/painting/image_decoder_impeller.cc @@ -9,11 +9,11 @@ #include "flutter/fml/closure.h" #include "flutter/fml/make_copyable.h" #include "flutter/fml/trace_event.h" +#include "flutter/impeller/core/allocator.h" +#include "flutter/impeller/core/texture.h" #include "flutter/impeller/display_list/display_list_image_impeller.h" -#include "flutter/impeller/renderer/allocator.h" #include "flutter/impeller/renderer/command_buffer.h" #include "flutter/impeller/renderer/context.h" -#include "flutter/impeller/renderer/texture.h" #include "flutter/lib/ui/painting/image_decoder_skia.h" #include "impeller/base/strings.h" #include "impeller/geometry/size.h" diff --git a/lib/ui/painting/image_decoder_unittests.cc b/lib/ui/painting/image_decoder_unittests.cc index 35cf13a0ab6cb..fc4d851b550b2 100644 --- a/lib/ui/painting/image_decoder_unittests.cc +++ b/lib/ui/painting/image_decoder_unittests.cc @@ -5,9 +5,9 @@ #include "flutter/common/task_runners.h" #include "flutter/fml/mapping.h" #include "flutter/fml/synchronization/waitable_event.h" +#include "flutter/impeller/core/allocator.h" +#include "flutter/impeller/core/device_buffer.h" #include "flutter/impeller/geometry/size.h" -#include "flutter/impeller/renderer/allocator.h" -#include "flutter/impeller/renderer/device_buffer.h" #include "flutter/lib/ui/painting/image_decoder.h" #include "flutter/lib/ui/painting/image_decoder_impeller.h" #include "flutter/lib/ui/painting/image_decoder_skia.h" diff --git a/lib/ui/painting/image_encoding_impeller.cc b/lib/ui/painting/image_encoding_impeller.cc index 163a9a8f1b50d..bbfface197f19 100644 --- a/lib/ui/painting/image_encoding_impeller.cc +++ b/lib/ui/painting/image_encoding_impeller.cc @@ -5,10 +5,10 @@ #include "flutter/lib/ui/painting/image_encoding_impeller.h" #include "flutter/lib/ui/painting/image.h" +#include "impeller/core/device_buffer.h" +#include "impeller/core/formats.h" #include "impeller/renderer/command_buffer.h" #include "impeller/renderer/context.h" -#include "impeller/renderer/device_buffer.h" -#include "impeller/renderer/formats.h" #include "third_party/skia/include/core/SkBitmap.h" namespace flutter {