diff --git a/engine/src/flutter/impeller/BUILD.gn b/engine/src/flutter/impeller/BUILD.gn index 8bcef454c68..31d5db29906 100644 --- a/engine/src/flutter/impeller/BUILD.gn +++ b/engine/src/flutter/impeller/BUILD.gn @@ -8,6 +8,7 @@ config("impeller_public_config") { group("impeller") { deps = [ + "base", "compiler", "compositor", "entity", diff --git a/engine/src/flutter/impeller/base/BUILD.gn b/engine/src/flutter/impeller/base/BUILD.gn new file mode 100644 index 00000000000..3f875529f14 --- /dev/null +++ b/engine/src/flutter/impeller/base/BUILD.gn @@ -0,0 +1,17 @@ +# 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("../tools/impeller.gni") + +impeller_component("base") { + # Only the umbrella header may be imported. + public = [ "base.h" ] + + sources = [ + "base.h", + "config.h", + "strings.cc", + "strings.h", + ] +} diff --git a/engine/src/flutter/impeller/base/base.h b/engine/src/flutter/impeller/base/base.h new file mode 100644 index 00000000000..dc6e687dcfb --- /dev/null +++ b/engine/src/flutter/impeller/base/base.h @@ -0,0 +1,7 @@ +// 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 "impeller/base/strings.h" diff --git a/engine/src/flutter/impeller/base/config.h b/engine/src/flutter/impeller/base/config.h new file mode 100644 index 00000000000..c0077d983b8 --- /dev/null +++ b/engine/src/flutter/impeller/base/config.h @@ -0,0 +1,20 @@ +// 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/build_config.h" + +#if defined(__GNUC__) || defined(__clang__) +#define IMPELLER_COMPILER_CLANG 1 +#else // defined(__GNUC__) || defined(__clang__) +#define IMPELLER_COMPILER_CLANG 0 +#endif // defined(__GNUC__) || defined(__clang__) + +#if IMPELLER_COMPILER_CLANG +#define IMPELLER_PRINTF_FORMAT(format_number, args_number) \ + __attribute__((format(printf, format_number, args_number))) +#else // IMPELLER_COMPILER_CLANG +#define IMPELLER_PRINTF_FORMAT(format_number, args_number) +#endif // IMPELLER_COMPILER_CLANG diff --git a/engine/src/flutter/impeller/base/strings.cc b/engine/src/flutter/impeller/base/strings.cc new file mode 100644 index 00000000000..1b0762f4518 --- /dev/null +++ b/engine/src/flutter/impeller/base/strings.cc @@ -0,0 +1,21 @@ +// 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/base/strings.h" + +#include + +namespace impeller { + +IMPELLER_PRINTF_FORMAT(1, 2) +std::string SPrintF(const char* format, ...) { + va_list list; + va_start(list, format); + char buffer[64] = {0}; + ::vsnprintf(buffer, sizeof(buffer), format, list); + va_end(list); + return buffer; +} + +} // namespace impeller diff --git a/engine/src/flutter/impeller/base/strings.h b/engine/src/flutter/impeller/base/strings.h new file mode 100644 index 00000000000..179ae3f6da7 --- /dev/null +++ b/engine/src/flutter/impeller/base/strings.h @@ -0,0 +1,16 @@ +// 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 + +#include "impeller/base/config.h" + +namespace impeller { + +IMPELLER_PRINTF_FORMAT(1, 2) +std::string SPrintF(const char* format, ...); + +} // namespace impeller diff --git a/engine/src/flutter/impeller/compositor/BUILD.gn b/engine/src/flutter/impeller/compositor/BUILD.gn index ea5e89187c3..5fa6a67aa16 100644 --- a/engine/src/flutter/impeller/compositor/BUILD.gn +++ b/engine/src/flutter/impeller/compositor/BUILD.gn @@ -59,6 +59,7 @@ impeller_component("compositor") { ] public_deps = [ + "../base", "../geometry", "../shader_glue", ] diff --git a/engine/src/flutter/impeller/compositor/render_pass.mm b/engine/src/flutter/impeller/compositor/render_pass.mm index 0d7f586d2e0..ff1a19ea7c7 100644 --- a/engine/src/flutter/impeller/compositor/render_pass.mm +++ b/engine/src/flutter/impeller/compositor/render_pass.mm @@ -6,6 +6,7 @@ #include "flutter/fml/closure.h" #include "flutter/fml/logging.h" +#include "impeller/base/base.h" #include "impeller/compositor/device_buffer.h" #include "impeller/compositor/formats_metal.h" #include "impeller/shader_glue/shader_types.h" @@ -139,6 +140,7 @@ bool RenderPass::IsValid() const { void RenderPass::SetLabel(std::string label) { label_ = std::move(label); + transients_buffer_->SetLabel(SPrintF("%s Transients", label_.c_str())); } bool RenderPass::FinishEncoding(Allocator& transients_allocator) const { diff --git a/engine/src/flutter/impeller/entity/entity_renderer.mm b/engine/src/flutter/impeller/entity/entity_renderer.mm index cec785103ee..808886c88a0 100644 --- a/engine/src/flutter/impeller/entity/entity_renderer.mm +++ b/engine/src/flutter/impeller/entity/entity_renderer.mm @@ -37,7 +37,7 @@ bool EntityRenderer::OnIsValid() const { } bool EntityRenderer::OnRender(RenderPass& pass) { - pass.SetLabel("EntityRenderer"); + pass.SetLabel("EntityRenderer Render Pass"); shader::BoxVertexInfo::UniformBuffer uniforms; uniforms.mvp = Matrix::MakeOrthographic({800, 600}); diff --git a/engine/src/flutter/impeller/primitives/box_primitive.mm b/engine/src/flutter/impeller/primitives/box_primitive.mm index e967440222c..f80019680d0 100644 --- a/engine/src/flutter/impeller/primitives/box_primitive.mm +++ b/engine/src/flutter/impeller/primitives/box_primitive.mm @@ -7,6 +7,7 @@ #include #include "flutter/fml/logging.h" +#include "impeller/base/base.h" #include "impeller/compositor/pipeline_descriptor.h" #include "impeller/compositor/shader_library.h" #include "impeller/compositor/vertex_descriptor.h" @@ -16,7 +17,7 @@ namespace impeller { BoxPrimitive::BoxPrimitive(std::shared_ptr context) : Primitive(context) { PipelineDescriptor desc; - desc.SetLabel(shader::BoxVertexInfo::kLabel); + desc.SetLabel(SPrintF("%s Pipeline", shader::BoxVertexInfo::kLabel.data())); { auto fragment_function = context->GetShaderLibrary()->GetFunction(