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

Commit 521692a

Browse files
zandersoiskakaushikbdero
authored
[CP] [Impeller] Fixes for rendering issues in flutter-3.6-candidate.0 (#37558)
* Use traingle strip for difference clip (#37469) * [Impeller] Include the new primitive type in the pipeline hash (#37546) * Include the new primitive type in the pipeline hash * Add test Co-authored-by: Kaushik Iska <[email protected]> Co-authored-by: Brandon DeRosier <[email protected]>
1 parent c48ca60 commit 521692a

File tree

5 files changed

+33
-1
lines changed

5 files changed

+33
-1
lines changed

ci/licenses_golden/licenses_flutter

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1525,6 +1525,7 @@ FILE: ../../../flutter/impeller/renderer/pipeline_builder.cc
15251525
FILE: ../../../flutter/impeller/renderer/pipeline_builder.h
15261526
FILE: ../../../flutter/impeller/renderer/pipeline_descriptor.cc
15271527
FILE: ../../../flutter/impeller/renderer/pipeline_descriptor.h
1528+
FILE: ../../../flutter/impeller/renderer/pipeline_descriptor_unittests.cc
15281529
FILE: ../../../flutter/impeller/renderer/pipeline_library.cc
15291530
FILE: ../../../flutter/impeller/renderer/pipeline_library.h
15301531
FILE: ../../../flutter/impeller/renderer/platform.cc

impeller/entity/contents/clip_contents.cc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ bool ClipContents::Render(const ContentContext& renderer,
9696
info.mvp = Matrix::MakeOrthographic(pass.GetRenderTargetSize());
9797
VS::BindVertInfo(cmd, pass.GetTransientsBuffer().EmplaceUniform(info));
9898

99+
options.primitive_type = PrimitiveType::kTriangleStrip;
99100
cmd.pipeline = renderer.GetClipPipeline(options);
100101
pass.AddCommand(cmd);
101102
}

impeller/renderer/BUILD.gn

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ impeller_component("renderer_unittests") {
106106
sources = [
107107
"device_buffer_unittests.cc",
108108
"host_buffer_unittests.cc",
109+
"pipeline_descriptor_unittests.cc",
109110
"renderer_unittests.cc",
110111
]
111112

impeller/renderer/pipeline_descriptor.cc

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ std::size_t PipelineDescriptor::GetHash() const {
4040
fml::HashCombineSeed(seed, back_stencil_attachment_descriptor_);
4141
fml::HashCombineSeed(seed, winding_order_);
4242
fml::HashCombineSeed(seed, cull_mode_);
43+
fml::HashCombineSeed(seed, primitive_type_);
4344
return seed;
4445
}
4546

@@ -57,7 +58,8 @@ bool PipelineDescriptor::IsEqual(const PipelineDescriptor& other) const {
5758
back_stencil_attachment_descriptor_ ==
5859
other.back_stencil_attachment_descriptor_ &&
5960
winding_order_ == other.winding_order_ &&
60-
cull_mode_ == other.cull_mode_;
61+
cull_mode_ == other.cull_mode_ &&
62+
primitive_type_ == other.primitive_type_;
6163
}
6264

6365
PipelineDescriptor& PipelineDescriptor::SetLabel(std::string label) {
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
// Copyright 2013 The Flutter Authors. All rights reserved.
2+
// Use of this source code is governed by a BSD-style license that can be
3+
// found in the LICENSE file.
4+
5+
#include <unordered_set>
6+
7+
#include "flutter/testing/testing.h"
8+
#include "impeller/renderer/pipeline_descriptor.h"
9+
10+
namespace impeller {
11+
namespace testing {
12+
13+
TEST(PipelineDescriptorTest, PrimitiveTypeHashEquality) {
14+
PipelineDescriptor descA;
15+
PipelineDescriptor descB;
16+
17+
ASSERT_TRUE(descA.IsEqual(descB));
18+
ASSERT_EQ(descA.GetHash(), descB.GetHash());
19+
20+
descA.SetPrimitiveType(PrimitiveType::kTriangleStrip);
21+
22+
ASSERT_FALSE(descA.IsEqual(descB));
23+
ASSERT_NE(descA.GetHash(), descB.GetHash());
24+
}
25+
26+
} // namespace testing
27+
} // namespace impeller

0 commit comments

Comments
 (0)