[Impeller] Include the new primitive type in the pipeline hash (#37546)

* Include the new primitive type in the pipeline hash

* Add test
diff --git a/ci/licenses_golden/licenses_flutter b/ci/licenses_golden/licenses_flutter
index 6474925..83d3b32 100644
--- a/ci/licenses_golden/licenses_flutter
+++ b/ci/licenses_golden/licenses_flutter
@@ -1526,6 +1526,7 @@
 FILE: ../../../flutter/impeller/renderer/pipeline_builder.h
 FILE: ../../../flutter/impeller/renderer/pipeline_descriptor.cc
 FILE: ../../../flutter/impeller/renderer/pipeline_descriptor.h
+FILE: ../../../flutter/impeller/renderer/pipeline_descriptor_unittests.cc
 FILE: ../../../flutter/impeller/renderer/pipeline_library.cc
 FILE: ../../../flutter/impeller/renderer/pipeline_library.h
 FILE: ../../../flutter/impeller/renderer/platform.cc
diff --git a/impeller/renderer/BUILD.gn b/impeller/renderer/BUILD.gn
index eed5707..100d5db 100644
--- a/impeller/renderer/BUILD.gn
+++ b/impeller/renderer/BUILD.gn
@@ -106,6 +106,7 @@
   sources = [
     "device_buffer_unittests.cc",
     "host_buffer_unittests.cc",
+    "pipeline_descriptor_unittests.cc",
     "renderer_unittests.cc",
   ]
 
diff --git a/impeller/renderer/pipeline_descriptor.cc b/impeller/renderer/pipeline_descriptor.cc
index ce19de3..c6d8029 100644
--- a/impeller/renderer/pipeline_descriptor.cc
+++ b/impeller/renderer/pipeline_descriptor.cc
@@ -40,6 +40,7 @@
   fml::HashCombineSeed(seed, back_stencil_attachment_descriptor_);
   fml::HashCombineSeed(seed, winding_order_);
   fml::HashCombineSeed(seed, cull_mode_);
+  fml::HashCombineSeed(seed, primitive_type_);
   return seed;
 }
 
@@ -57,7 +58,8 @@
          back_stencil_attachment_descriptor_ ==
              other.back_stencil_attachment_descriptor_ &&
          winding_order_ == other.winding_order_ &&
-         cull_mode_ == other.cull_mode_;
+         cull_mode_ == other.cull_mode_ &&
+         primitive_type_ == other.primitive_type_;
 }
 
 PipelineDescriptor& PipelineDescriptor::SetLabel(std::string label) {
diff --git a/impeller/renderer/pipeline_descriptor_unittests.cc b/impeller/renderer/pipeline_descriptor_unittests.cc
new file mode 100644
index 0000000..88e038c
--- /dev/null
+++ b/impeller/renderer/pipeline_descriptor_unittests.cc
@@ -0,0 +1,27 @@
+// Copyright 2013 The Flutter Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include <unordered_set>
+
+#include "flutter/testing/testing.h"
+#include "impeller/renderer/pipeline_descriptor.h"
+
+namespace impeller {
+namespace testing {
+
+TEST(PipelineDescriptorTest, PrimitiveTypeHashEquality) {
+  PipelineDescriptor descA;
+  PipelineDescriptor descB;
+
+  ASSERT_TRUE(descA.IsEqual(descB));
+  ASSERT_EQ(descA.GetHash(), descB.GetHash());
+
+  descA.SetPrimitiveType(PrimitiveType::kTriangleStrip);
+
+  ASSERT_FALSE(descA.IsEqual(descB));
+  ASSERT_NE(descA.GetHash(), descB.GetHash());
+}
+
+}  // namespace  testing
+}  // namespace impeller