diff --git a/engine/src/flutter/impeller/entity/contents/content_context.cc b/engine/src/flutter/impeller/entity/contents/content_context.cc index f0aacb04c32..3ab9ec79738 100644 --- a/engine/src/flutter/impeller/entity/contents/content_context.cc +++ b/engine/src/flutter/impeller/entity/contents/content_context.cc @@ -263,7 +263,7 @@ std::shared_ptr ContentContext::MakeSubpass( return nullptr; } - if (!sub_renderpass->EncodeCommands(context->GetResourceAllocator())) { + if (!sub_renderpass->EncodeCommands()) { return nullptr; } diff --git a/engine/src/flutter/impeller/entity/entity_pass.cc b/engine/src/flutter/impeller/entity/entity_pass.cc index cec25f034b4..9d957c36865 100644 --- a/engine/src/flutter/impeller/entity/entity_pass.cc +++ b/engine/src/flutter/impeller/entity/entity_pass.cc @@ -173,8 +173,7 @@ bool EntityPass::Render(ContentContext& renderer, entity.Render(renderer, *render_pass); } - if (!render_pass->EncodeCommands( - renderer.GetContext()->GetResourceAllocator())) { + if (!render_pass->EncodeCommands()) { return false; } if (!command_buffer->SubmitCommands()) { diff --git a/engine/src/flutter/impeller/entity/inline_pass_context.cc b/engine/src/flutter/impeller/entity/inline_pass_context.cc index 393cc1fa649..fa0f38135e8 100644 --- a/engine/src/flutter/impeller/entity/inline_pass_context.cc +++ b/engine/src/flutter/impeller/entity/inline_pass_context.cc @@ -37,7 +37,7 @@ bool InlinePassContext::EndPass() { return true; } - if (!pass_->EncodeCommands(context_->GetResourceAllocator())) { + if (!pass_->EncodeCommands()) { return false; } diff --git a/engine/src/flutter/impeller/playground/playground.cc b/engine/src/flutter/impeller/playground/playground.cc index c91f8df98b1..ab0457cee5a 100644 --- a/engine/src/flutter/impeller/playground/playground.cc +++ b/engine/src/flutter/impeller/playground/playground.cc @@ -244,7 +244,7 @@ bool Playground::OpenPlaygroundHere(Renderer::RenderCallback render_callback) { ImGui_ImplImpeller_RenderDrawData(ImGui::GetDrawData(), *pass); - pass->EncodeCommands(renderer->GetContext()->GetResourceAllocator()); + pass->EncodeCommands(); if (!buffer->SubmitCommands()) { return false; } @@ -284,7 +284,7 @@ bool Playground::OpenPlaygroundHere(SinglePassCallback pass_callback) { return false; } - pass->EncodeCommands(context->GetResourceAllocator()); + pass->EncodeCommands(); if (!buffer->SubmitCommands()) { return false; } diff --git a/engine/src/flutter/impeller/renderer/backend/gles/command_buffer_gles.cc b/engine/src/flutter/impeller/renderer/backend/gles/command_buffer_gles.cc index 7bb99354c07..f6452528995 100644 --- a/engine/src/flutter/impeller/renderer/backend/gles/command_buffer_gles.cc +++ b/engine/src/flutter/impeller/renderer/backend/gles/command_buffer_gles.cc @@ -10,8 +10,10 @@ namespace impeller { -CommandBufferGLES::CommandBufferGLES(ReactorGLES::Ref reactor) - : reactor_(std::move(reactor)), +CommandBufferGLES::CommandBufferGLES(std::weak_ptr context, + ReactorGLES::Ref reactor) + : CommandBuffer(std::move(context)), + reactor_(std::move(reactor)), is_valid_(reactor_ && reactor_->IsValid()) {} CommandBufferGLES::~CommandBufferGLES() = default; @@ -27,13 +29,8 @@ bool CommandBufferGLES::IsValid() const { } // |CommandBuffer| -bool CommandBufferGLES::SubmitCommands(CompletionCallback callback) { - if (!IsValid()) { - return false; - } - +bool CommandBufferGLES::OnSubmitCommands(CompletionCallback callback) { const auto result = reactor_->React(); - if (callback) { callback(result ? CommandBuffer::Status::kCompleted : CommandBuffer::Status::kError); @@ -48,7 +45,7 @@ std::shared_ptr CommandBufferGLES::OnCreateRenderPass( return nullptr; } auto pass = std::shared_ptr( - new RenderPassGLES(std::move(target), reactor_)); + new RenderPassGLES(context_, std::move(target), reactor_)); if (!pass->IsValid()) { return nullptr; } diff --git a/engine/src/flutter/impeller/renderer/backend/gles/command_buffer_gles.h b/engine/src/flutter/impeller/renderer/backend/gles/command_buffer_gles.h index 22b26464379..a83bab052c0 100644 --- a/engine/src/flutter/impeller/renderer/backend/gles/command_buffer_gles.h +++ b/engine/src/flutter/impeller/renderer/backend/gles/command_buffer_gles.h @@ -22,7 +22,8 @@ class CommandBufferGLES final : public CommandBuffer { ReactorGLES::Ref reactor_; bool is_valid_ = false; - CommandBufferGLES(ReactorGLES::Ref reactor); + CommandBufferGLES(std::weak_ptr context, + ReactorGLES::Ref reactor); // |CommandBuffer| void SetLabel(const std::string& label) const override; @@ -31,7 +32,7 @@ class CommandBufferGLES final : public CommandBuffer { bool IsValid() const override; // |CommandBuffer| - bool SubmitCommands(CompletionCallback callback) override; + bool OnSubmitCommands(CompletionCallback callback) override; // |CommandBuffer| std::shared_ptr OnCreateRenderPass( diff --git a/engine/src/flutter/impeller/renderer/backend/gles/context_gles.cc b/engine/src/flutter/impeller/renderer/backend/gles/context_gles.cc index 28f8d8418ca..a7522b412d7 100644 --- a/engine/src/flutter/impeller/renderer/backend/gles/context_gles.cc +++ b/engine/src/flutter/impeller/renderer/backend/gles/context_gles.cc @@ -103,7 +103,8 @@ std::shared_ptr ContextGLES::GetPipelineLibrary() const { } std::shared_ptr ContextGLES::CreateCommandBuffer() const { - return std::shared_ptr(new CommandBufferGLES(reactor_)); + return std::shared_ptr( + new CommandBufferGLES(weak_from_this(), reactor_)); } // |Context| diff --git a/engine/src/flutter/impeller/renderer/backend/gles/render_pass_gles.cc b/engine/src/flutter/impeller/renderer/backend/gles/render_pass_gles.cc index 3dae613f4ad..3e96e82c054 100644 --- a/engine/src/flutter/impeller/renderer/backend/gles/render_pass_gles.cc +++ b/engine/src/flutter/impeller/renderer/backend/gles/render_pass_gles.cc @@ -16,8 +16,10 @@ namespace impeller { -RenderPassGLES::RenderPassGLES(RenderTarget target, ReactorGLES::Ref reactor) - : RenderPass(std::move(target)), +RenderPassGLES::RenderPassGLES(std::weak_ptr context, + RenderTarget target, + ReactorGLES::Ref reactor) + : RenderPass(std::move(context), std::move(target)), reactor_(std::move(reactor)), is_valid_(reactor_ && reactor_->IsValid()) {} @@ -455,8 +457,7 @@ struct RenderPassData { } // |RenderPass| -bool RenderPassGLES::EncodeCommands( - const std::shared_ptr& transients_allocator) const { +bool RenderPassGLES::OnEncodeCommands(const Context& context) const { if (!IsValid()) { return false; } @@ -507,10 +508,11 @@ bool RenderPassGLES::EncodeCommands( CanDiscardAttachmentWhenDone(stencil0->store_action); } - return reactor_->AddOperation([pass_data, transients_allocator, + return reactor_->AddOperation([pass_data, + allocator = context.GetResourceAllocator(), commands = commands_](const auto& reactor) { - auto result = EncodeCommandsInReactor(*pass_data, transients_allocator, - reactor, commands); + auto result = + EncodeCommandsInReactor(*pass_data, allocator, reactor, commands); FML_CHECK(result) << "Must be able to encode GL commands without error."; }); } diff --git a/engine/src/flutter/impeller/renderer/backend/gles/render_pass_gles.h b/engine/src/flutter/impeller/renderer/backend/gles/render_pass_gles.h index 7f66f036dc7..7ffc5202a2c 100644 --- a/engine/src/flutter/impeller/renderer/backend/gles/render_pass_gles.h +++ b/engine/src/flutter/impeller/renderer/backend/gles/render_pass_gles.h @@ -22,7 +22,9 @@ class RenderPassGLES final : public RenderPass { std::string label_; bool is_valid_ = false; - RenderPassGLES(RenderTarget target, ReactorGLES::Ref reactor); + RenderPassGLES(std::weak_ptr context, + RenderTarget target, + ReactorGLES::Ref reactor); // |RenderPass| bool IsValid() const override; @@ -31,8 +33,7 @@ class RenderPassGLES final : public RenderPass { void OnSetLabel(std::string label) override; // |RenderPass| - bool EncodeCommands( - const std::shared_ptr& transients_allocator) const override; + bool OnEncodeCommands(const Context& context) const override; FML_DISALLOW_COPY_AND_ASSIGN(RenderPassGLES); }; diff --git a/engine/src/flutter/impeller/renderer/backend/metal/command_buffer_mtl.h b/engine/src/flutter/impeller/renderer/backend/metal/command_buffer_mtl.h index 6c038d67537..e4e09609657 100644 --- a/engine/src/flutter/impeller/renderer/backend/metal/command_buffer_mtl.h +++ b/engine/src/flutter/impeller/renderer/backend/metal/command_buffer_mtl.h @@ -13,8 +13,6 @@ namespace impeller { class CommandBufferMTL final : public CommandBuffer { public: - CommandBufferMTL(); - // |CommandBuffer| ~CommandBufferMTL() override; @@ -23,7 +21,8 @@ class CommandBufferMTL final : public CommandBuffer { id buffer_ = nullptr; - CommandBufferMTL(id queue); + CommandBufferMTL(const std::weak_ptr context, + id queue); // |CommandBuffer| void SetLabel(const std::string& label) const override; @@ -32,7 +31,7 @@ class CommandBufferMTL final : public CommandBuffer { bool IsValid() const override; // |CommandBuffer| - bool SubmitCommands(CompletionCallback callback) override; + bool OnSubmitCommands(CompletionCallback callback) override; // |CommandBuffer| std::shared_ptr OnCreateRenderPass( diff --git a/engine/src/flutter/impeller/renderer/backend/metal/command_buffer_mtl.mm b/engine/src/flutter/impeller/renderer/backend/metal/command_buffer_mtl.mm index 90bcbf1cf92..babafbdf0c7 100644 --- a/engine/src/flutter/impeller/renderer/backend/metal/command_buffer_mtl.mm +++ b/engine/src/flutter/impeller/renderer/backend/metal/command_buffer_mtl.mm @@ -137,8 +137,9 @@ id CreateCommandBuffer(id queue) { return [queue commandBuffer]; } -CommandBufferMTL::CommandBufferMTL(id queue) - : buffer_(CreateCommandBuffer(queue)) {} +CommandBufferMTL::CommandBufferMTL(const std::weak_ptr context, + id queue) + : CommandBuffer(std::move(context)), buffer_(CreateCommandBuffer(queue)) {} CommandBufferMTL::~CommandBufferMTL() = default; @@ -166,15 +167,7 @@ static CommandBuffer::Status ToCommitResult(MTLCommandBufferStatus status) { return CommandBufferMTL::Status::kError; } -bool CommandBufferMTL::SubmitCommands(CompletionCallback callback) { - if (!IsValid()) { - // Already committed or was never valid. Either way, this is caller error. - if (callback) { - callback(Status::kError); - } - return false; - } - +bool CommandBufferMTL::OnSubmitCommands(CompletionCallback callback) { if (callback) { [buffer_ addCompletedHandler:^(id buffer) { LogMTLCommandBufferErrorIfPresent(buffer); @@ -195,7 +188,7 @@ std::shared_ptr CommandBufferMTL::OnCreateRenderPass( } auto pass = std::shared_ptr( - new RenderPassMTL(buffer_, std::move(target))); + new RenderPassMTL(context_, std::move(target), buffer_)); if (!pass->IsValid()) { return nullptr; } diff --git a/engine/src/flutter/impeller/renderer/backend/metal/context_mtl.mm b/engine/src/flutter/impeller/renderer/backend/metal/context_mtl.mm index 726d56d9048..c19f3888e6d 100644 --- a/engine/src/flutter/impeller/renderer/backend/metal/context_mtl.mm +++ b/engine/src/flutter/impeller/renderer/backend/metal/context_mtl.mm @@ -193,7 +193,8 @@ std::shared_ptr ContextMTL::CreateCommandBufferInQueue( return nullptr; } - auto buffer = std::shared_ptr(new CommandBufferMTL(queue)); + auto buffer = std::shared_ptr( + new CommandBufferMTL(weak_from_this(), queue)); if (!buffer->IsValid()) { return nullptr; } diff --git a/engine/src/flutter/impeller/renderer/backend/metal/render_pass_mtl.h b/engine/src/flutter/impeller/renderer/backend/metal/render_pass_mtl.h index 8458a96c8aa..fd9d4bd80b4 100644 --- a/engine/src/flutter/impeller/renderer/backend/metal/render_pass_mtl.h +++ b/engine/src/flutter/impeller/renderer/backend/metal/render_pass_mtl.h @@ -25,7 +25,9 @@ class RenderPassMTL final : public RenderPass { std::string label_; bool is_valid_ = false; - RenderPassMTL(id buffer, RenderTarget target); + RenderPassMTL(std::weak_ptr context, + RenderTarget target, + id buffer); // |RenderPass| bool IsValid() const override; @@ -34,8 +36,7 @@ class RenderPassMTL final : public RenderPass { void OnSetLabel(std::string label) override; // |RenderPass| - bool EncodeCommands( - const std::shared_ptr& transients_allocator) const override; + bool OnEncodeCommands(const Context& context) const override; bool EncodeCommands(const std::shared_ptr& transients_allocator, id pass) const; diff --git a/engine/src/flutter/impeller/renderer/backend/metal/render_pass_mtl.mm b/engine/src/flutter/impeller/renderer/backend/metal/render_pass_mtl.mm index 90f074e682b..88274989245 100644 --- a/engine/src/flutter/impeller/renderer/backend/metal/render_pass_mtl.mm +++ b/engine/src/flutter/impeller/renderer/backend/metal/render_pass_mtl.mm @@ -128,8 +128,10 @@ static MTLRenderPassDescriptor* ToMTLRenderPassDescriptor( return result; } -RenderPassMTL::RenderPassMTL(id buffer, RenderTarget target) - : RenderPass(std::move(target)), +RenderPassMTL::RenderPassMTL(std::weak_ptr context, + RenderTarget target, + id buffer) + : RenderPass(std::move(context), std::move(target)), buffer_(buffer), desc_(ToMTLRenderPassDescriptor(GetRenderTarget())) { if (!buffer_ || !desc_ || !render_target_.IsValid()) { @@ -151,8 +153,7 @@ void RenderPassMTL::OnSetLabel(std::string label) { label_ = std::move(label); } -bool RenderPassMTL::EncodeCommands( - const std::shared_ptr& transients_allocator) const { +bool RenderPassMTL::OnEncodeCommands(const Context& context) const { TRACE_EVENT0("impeller", "RenderPassMTL::EncodeCommands"); if (!IsValid()) { return false; @@ -173,7 +174,7 @@ bool RenderPassMTL::EncodeCommands( fml::ScopedCleanupClosure auto_end( [render_command_encoder]() { [render_command_encoder endEncoding]; }); - return EncodeCommands(transients_allocator, render_command_encoder); + return EncodeCommands(context.GetResourceAllocator(), render_command_encoder); } //----------------------------------------------------------------------------- diff --git a/engine/src/flutter/impeller/renderer/backend/vulkan/command_buffer_vk.cc b/engine/src/flutter/impeller/renderer/backend/vulkan/command_buffer_vk.cc index 0a33906c1f2..e560ba9e652 100644 --- a/engine/src/flutter/impeller/renderer/backend/vulkan/command_buffer_vk.cc +++ b/engine/src/flutter/impeller/renderer/backend/vulkan/command_buffer_vk.cc @@ -9,7 +9,8 @@ namespace impeller { -CommandBufferVK::CommandBufferVK() = default; +CommandBufferVK::CommandBufferVK(std::weak_ptr context) + : CommandBuffer(std::move(context)) {} CommandBufferVK::~CommandBufferVK() = default; @@ -21,7 +22,7 @@ bool CommandBufferVK::IsValid() const { FML_UNREACHABLE(); } -bool CommandBufferVK::SubmitCommands(CompletionCallback callback) { +bool CommandBufferVK::OnSubmitCommands(CompletionCallback callback) { FML_UNREACHABLE(); } diff --git a/engine/src/flutter/impeller/renderer/backend/vulkan/command_buffer_vk.h b/engine/src/flutter/impeller/renderer/backend/vulkan/command_buffer_vk.h index cb166f8689e..a4525382fc9 100644 --- a/engine/src/flutter/impeller/renderer/backend/vulkan/command_buffer_vk.h +++ b/engine/src/flutter/impeller/renderer/backend/vulkan/command_buffer_vk.h @@ -17,7 +17,7 @@ class CommandBufferVK final : public CommandBuffer { private: friend class ContextMTL; - CommandBufferVK(); + explicit CommandBufferVK(std::weak_ptr context); // |CommandBuffer| void SetLabel(const std::string& label) const override; @@ -26,7 +26,7 @@ class CommandBufferVK final : public CommandBuffer { bool IsValid() const override; // |CommandBuffer| - bool SubmitCommands(CompletionCallback callback) override; + bool OnSubmitCommands(CompletionCallback callback) override; // |CommandBuffer| std::shared_ptr OnCreateRenderPass( diff --git a/engine/src/flutter/impeller/renderer/backend/vulkan/render_pass_vk.h b/engine/src/flutter/impeller/renderer/backend/vulkan/render_pass_vk.h index afb942f7980..42cec893532 100644 --- a/engine/src/flutter/impeller/renderer/backend/vulkan/render_pass_vk.h +++ b/engine/src/flutter/impeller/renderer/backend/vulkan/render_pass_vk.h @@ -27,8 +27,7 @@ class RenderPassVK final : public RenderPass { void OnSetLabel(std::string label) override; // |RenderPass| - bool EncodeCommands( - const std::shared_ptr& transients_allocator) const override; + bool OnEncodeCommands(const Context& context) const override; FML_DISALLOW_COPY_AND_ASSIGN(RenderPassVK); }; diff --git a/engine/src/flutter/impeller/renderer/command_buffer.cc b/engine/src/flutter/impeller/renderer/command_buffer.cc index 75ff9e700f7..6429afaf313 100644 --- a/engine/src/flutter/impeller/renderer/command_buffer.cc +++ b/engine/src/flutter/impeller/renderer/command_buffer.cc @@ -4,15 +4,29 @@ #include "impeller/renderer/command_buffer.h" +#include "flutter/fml/trace_event.h" #include "impeller/renderer/render_pass.h" #include "impeller/renderer/render_target.h" namespace impeller { -CommandBuffer::CommandBuffer() = default; +CommandBuffer::CommandBuffer(std::weak_ptr context) + : context_(std::move(context)) {} CommandBuffer::~CommandBuffer() = default; +bool CommandBuffer::SubmitCommands(CompletionCallback callback) { + TRACE_EVENT0("impeller", "CommandBuffer::SubmitCommands"); + if (!IsValid()) { + // Already committed or was never valid. Either way, this is caller error. + if (callback) { + callback(Status::kError); + } + return false; + } + return OnSubmitCommands(callback); +} + bool CommandBuffer::SubmitCommands() { return SubmitCommands(nullptr); } diff --git a/engine/src/flutter/impeller/renderer/command_buffer.h b/engine/src/flutter/impeller/renderer/command_buffer.h index 92328a0ae31..28158e15561 100644 --- a/engine/src/flutter/impeller/renderer/command_buffer.h +++ b/engine/src/flutter/impeller/renderer/command_buffer.h @@ -59,7 +59,7 @@ class CommandBuffer { /// /// @param[in] callback The completion callback. /// - [[nodiscard]] virtual bool SubmitCommands(CompletionCallback callback) = 0; + [[nodiscard]] bool SubmitCommands(CompletionCallback callback); [[nodiscard]] bool SubmitCommands(); @@ -82,13 +82,17 @@ class CommandBuffer { std::shared_ptr CreateBlitPass() const; protected: - CommandBuffer(); + std::weak_ptr context_; + + explicit CommandBuffer(std::weak_ptr context); virtual std::shared_ptr OnCreateRenderPass( RenderTarget render_target) const = 0; virtual std::shared_ptr OnCreateBlitPass() const = 0; + [[nodiscard]] virtual bool OnSubmitCommands(CompletionCallback callback) = 0; + private: FML_DISALLOW_COPY_AND_ASSIGN(CommandBuffer); }; diff --git a/engine/src/flutter/impeller/renderer/context.h b/engine/src/flutter/impeller/renderer/context.h index db31bcf5236..dad614f5051 100644 --- a/engine/src/flutter/impeller/renderer/context.h +++ b/engine/src/flutter/impeller/renderer/context.h @@ -17,7 +17,7 @@ class CommandBuffer; class PipelineLibrary; class Allocator; -class Context { +class Context : public std::enable_shared_from_this { public: virtual ~Context(); diff --git a/engine/src/flutter/impeller/renderer/render_pass.cc b/engine/src/flutter/impeller/renderer/render_pass.cc index f3db163cb19..ba084ff442b 100644 --- a/engine/src/flutter/impeller/renderer/render_pass.cc +++ b/engine/src/flutter/impeller/renderer/render_pass.cc @@ -6,8 +6,10 @@ namespace impeller { -RenderPass::RenderPass(RenderTarget target) - : render_target_(std::move(target)), +RenderPass::RenderPass(std::weak_ptr context, + RenderTarget target) + : context_(std::move(context)), + render_target_(std::move(target)), transients_buffer_(HostBuffer::Create()) {} RenderPass::~RenderPass() = default; @@ -63,4 +65,13 @@ bool RenderPass::AddCommand(Command command) { return true; } +bool RenderPass::EncodeCommands() const { + auto context = context_.lock(); + // The context could have been collected in the meantime. + if (!context) { + return false; + } + return OnEncodeCommands(*context); +} + } // namespace impeller diff --git a/engine/src/flutter/impeller/renderer/render_pass.h b/engine/src/flutter/impeller/renderer/render_pass.h index e026dc69fd2..4386d5c9e00 100644 --- a/engine/src/flutter/impeller/renderer/render_pass.h +++ b/engine/src/flutter/impeller/renderer/render_pass.h @@ -51,23 +51,23 @@ class RenderPass { //---------------------------------------------------------------------------- /// @brief Encode the recorded commands to the underlying command buffer. /// - /// @param transients_allocator The transients allocator. - /// /// @return If the commands were encoded to the underlying command /// buffer. /// - virtual bool EncodeCommands( - const std::shared_ptr& transients_allocator) const = 0; + bool EncodeCommands() const; protected: + const std::weak_ptr context_; const RenderTarget render_target_; std::shared_ptr transients_buffer_; std::vector commands_; - RenderPass(RenderTarget target); + RenderPass(std::weak_ptr context, RenderTarget target); virtual void OnSetLabel(std::string label) = 0; + virtual bool OnEncodeCommands(const Context& context) const = 0; + private: FML_DISALLOW_COPY_AND_ASSIGN(RenderPass); }; diff --git a/engine/src/flutter/impeller/renderer/renderer.cc b/engine/src/flutter/impeller/renderer/renderer.cc index 9fd707a7eaa..c4c431c9ed8 100644 --- a/engine/src/flutter/impeller/renderer/renderer.cc +++ b/engine/src/flutter/impeller/renderer/renderer.cc @@ -53,8 +53,11 @@ bool Renderer::Render(std::unique_ptr surface, return false; } + const auto present_result = surface->Present(); + frames_in_flight_sema_->Signal(); - return surface->Present(); + + return present_result; } std::shared_ptr Renderer::GetContext() const { diff --git a/engine/src/flutter/impeller/renderer/renderer_unittests.cc b/engine/src/flutter/impeller/renderer/renderer_unittests.cc index 25160b94c53..17f64e6f506 100644 --- a/engine/src/flutter/impeller/renderer/renderer_unittests.cc +++ b/engine/src/flutter/impeller/renderer/renderer_unittests.cc @@ -378,7 +378,7 @@ TEST_P(RendererTest, CanRenderToTexture) { VS::BindUniformBuffer( cmd, r2t_pass->GetTransientsBuffer().EmplaceUniform(uniforms)); ASSERT_TRUE(r2t_pass->AddCommand(std::move(cmd))); - ASSERT_TRUE(r2t_pass->EncodeCommands(context->GetResourceAllocator())); + ASSERT_TRUE(r2t_pass->EncodeCommands()); } #if IMPELLER_ENABLE_METAL @@ -543,7 +543,7 @@ TEST_P(RendererTest, CanBlitTextureToTexture) { pass->AddCommand(std::move(cmd)); } - pass->EncodeCommands(context->GetResourceAllocator()); + pass->EncodeCommands(); } if (!buffer->SubmitCommands()) { @@ -664,7 +664,7 @@ TEST_P(RendererTest, CanGenerateMipmaps) { pass->AddCommand(std::move(cmd)); } - pass->EncodeCommands(context->GetResourceAllocator()); + pass->EncodeCommands(); } if (!buffer->SubmitCommands()) {