[Impeller] Load instead of restore drawing for non-MSAA passes (flutter/engine#40436)

[Impeller] Load instead of restore drawing for non-MSAA passes
This commit is contained in:
Brandon DeRosier 2023-03-19 23:37:45 -07:00 committed by GitHub
parent 66c2425d8b
commit 76600f8cb3
2 changed files with 11 additions and 3 deletions

View File

@ -100,7 +100,10 @@ InlinePassContext::RenderPassResult InlinePassContext::GetRenderPass(
RenderPassResult result;
if (pass_count_ > 0) {
if (pass_count_ > 0 && pass_target_.GetRenderTarget()
.GetColorAttachments()
.find(0)
->second.resolve_texture) {
result.backdrop_texture =
pass_target_.Flip(*context_->GetResourceAllocator());
if (!result.backdrop_texture) {
@ -111,8 +114,12 @@ InlinePassContext::RenderPassResult InlinePassContext::GetRenderPass(
auto color0 =
pass_target_.GetRenderTarget().GetColorAttachments().find(0)->second;
color0.load_action =
pass_count_ > 0 ? LoadAction::kDontCare : LoadAction::kClear;
if (pass_count_ > 0) {
color0.load_action =
color0.resolve_texture ? LoadAction::kDontCare : LoadAction::kLoad;
} else {
color0.load_action = LoadAction::kClear;
}
color0.store_action = color0.resolve_texture
? StoreAction::kMultisampleResolve

View File

@ -15,6 +15,7 @@ class InlinePassContext {
public:
struct RenderPassResult {
std::shared_ptr<RenderPass> pass;
std::shared_ptr<Texture> backdrop_texture;
};