[Impeller] disble render pass caches. (#50976)
This is related to the crashes in https://github.com/flutter/flutter/issues/144116
> I'm going to disable this caching for now until I understand why its not working for tester. Potentially the cache itself was unsafe and validation is just missing, but I need to do some research. If I don't find anything then i'll consider conditionally disabling for flutter tester builds
diff --git a/impeller/renderer/backend/vulkan/render_pass_cache_unittests.cc b/impeller/renderer/backend/vulkan/render_pass_cache_unittests.cc
index e2fc63e..bb850c3 100644
--- a/impeller/renderer/backend/vulkan/render_pass_cache_unittests.cc
+++ b/impeller/renderer/backend/vulkan/render_pass_cache_unittests.cc
@@ -11,41 +11,7 @@
namespace impeller {
namespace testing {
-using RendererTest = PlaygroundTest;
-
-TEST_P(RendererTest, CachesRenderPassAndFramebuffer) {
- if (GetBackend() != PlaygroundBackend::kVulkan) {
- GTEST_SKIP() << "Test only applies to Vulkan";
- }
-
- auto allocator = std::make_shared<RenderTargetAllocator>(
- GetContext()->GetResourceAllocator());
-
- auto render_target = RenderTarget::CreateOffscreenMSAA(
- *GetContext(), *allocator, {100, 100}, 1);
- auto resolve_texture =
- render_target.GetColorAttachments().find(0u)->second.resolve_texture;
- auto& texture_vk = TextureVK::Cast(*resolve_texture);
-
- EXPECT_EQ(texture_vk.GetFramebuffer(), nullptr);
- EXPECT_EQ(texture_vk.GetRenderPass(), nullptr);
-
- auto buffer = GetContext()->CreateCommandBuffer();
- auto render_pass = buffer->CreateRenderPass(render_target);
-
- EXPECT_NE(texture_vk.GetFramebuffer(), nullptr);
- EXPECT_NE(texture_vk.GetRenderPass(), nullptr);
-
- render_pass->EncodeCommands();
- GetContext()->GetCommandQueue()->Submit({buffer});
-
- // Can be reused without error.
- auto buffer_2 = GetContext()->CreateCommandBuffer();
- auto render_pass_2 = buffer_2->CreateRenderPass(render_target);
-
- EXPECT_TRUE(render_pass_2->EncodeCommands());
- EXPECT_TRUE(GetContext()->GetCommandQueue()->Submit({buffer_2}).ok());
-}
+//
} // namespace testing
} // namespace impeller
diff --git a/impeller/renderer/backend/vulkan/render_pass_vk.cc b/impeller/renderer/backend/vulkan/render_pass_vk.cc
index 28a7013..b2f8bde 100644
--- a/impeller/renderer/backend/vulkan/render_pass_vk.cc
+++ b/impeller/renderer/backend/vulkan/render_pass_vk.cc
@@ -170,26 +170,16 @@
return true;
});
- SharedHandleVK<vk::RenderPass> recycled_render_pass;
- SharedHandleVK<vk::Framebuffer> recycled_framebuffer;
- if (resolve_image_vk_) {
- recycled_render_pass = TextureVK::Cast(*resolve_image_vk_).GetRenderPass();
- recycled_framebuffer = TextureVK::Cast(*resolve_image_vk_).GetFramebuffer();
- }
-
const auto& target_size = render_target_.GetRenderTargetSize();
- render_pass_ =
- CreateVKRenderPass(vk_context, recycled_render_pass, command_buffer_);
+ render_pass_ = CreateVKRenderPass(vk_context, nullptr, command_buffer_);
if (!render_pass_) {
VALIDATION_LOG << "Could not create renderpass.";
is_valid_ = false;
return;
}
- auto framebuffer = (recycled_framebuffer == nullptr)
- ? CreateVKFramebuffer(vk_context, *render_pass_)
- : recycled_framebuffer;
+ auto framebuffer = CreateVKFramebuffer(vk_context, *render_pass_);
if (!framebuffer) {
VALIDATION_LOG << "Could not create framebuffer.";
is_valid_ = false;
@@ -200,10 +190,6 @@
is_valid_ = false;
return;
}
- if (resolve_image_vk_) {
- TextureVK::Cast(*resolve_image_vk_).SetFramebuffer(framebuffer);
- TextureVK::Cast(*resolve_image_vk_).SetRenderPass(render_pass_);
- }
auto clear_values = GetVKClearValues(render_target_);