Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit a93ca85

Browse files
author
Jonah Williams
authored
[Impeller] disble render pass caches. (#50976)
This is related to the crashes in flutter/flutter#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
1 parent d8129b9 commit a93ca85

File tree

2 files changed

+3
-51
lines changed

2 files changed

+3
-51
lines changed

impeller/renderer/backend/vulkan/render_pass_cache_unittests.cc

Lines changed: 1 addition & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -11,41 +11,7 @@
1111
namespace impeller {
1212
namespace testing {
1313

14-
using RendererTest = PlaygroundTest;
15-
16-
TEST_P(RendererTest, CachesRenderPassAndFramebuffer) {
17-
if (GetBackend() != PlaygroundBackend::kVulkan) {
18-
GTEST_SKIP() << "Test only applies to Vulkan";
19-
}
20-
21-
auto allocator = std::make_shared<RenderTargetAllocator>(
22-
GetContext()->GetResourceAllocator());
23-
24-
auto render_target = RenderTarget::CreateOffscreenMSAA(
25-
*GetContext(), *allocator, {100, 100}, 1);
26-
auto resolve_texture =
27-
render_target.GetColorAttachments().find(0u)->second.resolve_texture;
28-
auto& texture_vk = TextureVK::Cast(*resolve_texture);
29-
30-
EXPECT_EQ(texture_vk.GetFramebuffer(), nullptr);
31-
EXPECT_EQ(texture_vk.GetRenderPass(), nullptr);
32-
33-
auto buffer = GetContext()->CreateCommandBuffer();
34-
auto render_pass = buffer->CreateRenderPass(render_target);
35-
36-
EXPECT_NE(texture_vk.GetFramebuffer(), nullptr);
37-
EXPECT_NE(texture_vk.GetRenderPass(), nullptr);
38-
39-
render_pass->EncodeCommands();
40-
GetContext()->GetCommandQueue()->Submit({buffer});
41-
42-
// Can be reused without error.
43-
auto buffer_2 = GetContext()->CreateCommandBuffer();
44-
auto render_pass_2 = buffer_2->CreateRenderPass(render_target);
45-
46-
EXPECT_TRUE(render_pass_2->EncodeCommands());
47-
EXPECT_TRUE(GetContext()->GetCommandQueue()->Submit({buffer_2}).ok());
48-
}
14+
//
4915

5016
} // namespace testing
5117
} // namespace impeller

impeller/renderer/backend/vulkan/render_pass_vk.cc

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -170,26 +170,16 @@ RenderPassVK::RenderPassVK(const std::shared_ptr<const Context>& context,
170170
return true;
171171
});
172172

173-
SharedHandleVK<vk::RenderPass> recycled_render_pass;
174-
SharedHandleVK<vk::Framebuffer> recycled_framebuffer;
175-
if (resolve_image_vk_) {
176-
recycled_render_pass = TextureVK::Cast(*resolve_image_vk_).GetRenderPass();
177-
recycled_framebuffer = TextureVK::Cast(*resolve_image_vk_).GetFramebuffer();
178-
}
179-
180173
const auto& target_size = render_target_.GetRenderTargetSize();
181174

182-
render_pass_ =
183-
CreateVKRenderPass(vk_context, recycled_render_pass, command_buffer_);
175+
render_pass_ = CreateVKRenderPass(vk_context, nullptr, command_buffer_);
184176
if (!render_pass_) {
185177
VALIDATION_LOG << "Could not create renderpass.";
186178
is_valid_ = false;
187179
return;
188180
}
189181

190-
auto framebuffer = (recycled_framebuffer == nullptr)
191-
? CreateVKFramebuffer(vk_context, *render_pass_)
192-
: recycled_framebuffer;
182+
auto framebuffer = CreateVKFramebuffer(vk_context, *render_pass_);
193183
if (!framebuffer) {
194184
VALIDATION_LOG << "Could not create framebuffer.";
195185
is_valid_ = false;
@@ -200,10 +190,6 @@ RenderPassVK::RenderPassVK(const std::shared_ptr<const Context>& context,
200190
is_valid_ = false;
201191
return;
202192
}
203-
if (resolve_image_vk_) {
204-
TextureVK::Cast(*resolve_image_vk_).SetFramebuffer(framebuffer);
205-
TextureVK::Cast(*resolve_image_vk_).SetRenderPass(render_pass_);
206-
}
207193

208194
auto clear_values = GetVKClearValues(render_target_);
209195

0 commit comments

Comments
 (0)