Hooks up framework wide gamut to engine wide gamut (#54567)

issue: https://github.com/flutter/flutter/issues/127855
integration test: https://github.com/flutter/engine/pull/54415

[C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style
diff --git a/impeller/display_list/aiks_dl_vertices_unittests.cc b/impeller/display_list/aiks_dl_vertices_unittests.cc
index fdcd5b2..e66ac91 100644
--- a/impeller/display_list/aiks_dl_vertices_unittests.cc
+++ b/impeller/display_list/aiks_dl_vertices_unittests.cc
@@ -12,6 +12,7 @@
 #include "flutter/display_list/dl_color.h"
 #include "flutter/display_list/dl_paint.h"
 #include "flutter/testing/testing.h"
+#include "impeller/display_list/dl_dispatcher.h"
 #include "impeller/display_list/dl_image_impeller.h"
 
 namespace impeller {
@@ -375,7 +376,10 @@
   builder.DrawRect(SkRect::MakeLTRB(0, 0, 400, 400), paint);
   builder.DrawVertices(vertices, flutter::DlBlendMode::kSrc, paint);
 
-  ASSERT_TRUE(OpenPlaygroundHere(builder.Build()));
+  AiksContext renderer(GetContext(), nullptr);
+  std::shared_ptr<Texture> image =
+      DisplayListToTexture(builder.Build(), {1024, 768}, renderer);
+  EXPECT_TRUE(image);
 }
 
 // All four vertices should form a solid red rectangle with no gaps.
diff --git a/lib/ui/painting/paint.cc b/lib/ui/painting/paint.cc
index ab74673..19a5355 100644
--- a/lib/ui/painting/paint.cc
+++ b/lib/ui/painting/paint.cc
@@ -71,14 +71,11 @@
   // Invert alpha so 0 initialized buffer has default value;
   float alpha = 1.f - float_data[kColorAlphaIndex];
   uint32_t colorspace = uint_data[kColorSpaceIndex];
-  (void)colorspace;
-  uint32_t encoded_color =
-      static_cast<uint8_t>(std::round(alpha * 255.f)) << 24 |  //
-      static_cast<uint8_t>(std::round(red * 255.f)) << 16 |    //
-      static_cast<uint8_t>(std::round(green * 255.f)) << 8 |   //
-      static_cast<uint8_t>(std::round(blue * 255.f)) << 0;
-  // TODO(gaaclarke): Pass down color info to DlColor.
-  return DlColor(encoded_color);
+
+  DlColor dl_color(alpha, red, green, blue,
+                   static_cast<DlColorSpace>(colorspace));
+
+  return dl_color.withColorSpace(DlColorSpace::kExtendedSRGB);
 }
 }  // namespace
 
diff --git a/testing/impeller_golden_tests_output.txt b/testing/impeller_golden_tests_output.txt
index f212cbf..d219c25 100644
--- a/testing/impeller_golden_tests_output.txt
+++ b/testing/impeller_golden_tests_output.txt
@@ -614,9 +614,6 @@
 impeller_Play_AiksTest_DrawVerticesTextureCoordinatesWithFragmentShader_Metal.png
 impeller_Play_AiksTest_DrawVerticesTextureCoordinatesWithFragmentShader_OpenGLES.png
 impeller_Play_AiksTest_DrawVerticesTextureCoordinatesWithFragmentShader_Vulkan.png
-impeller_Play_AiksTest_DrawVerticesWithInvalidIndices_Metal.png
-impeller_Play_AiksTest_DrawVerticesWithInvalidIndices_OpenGLES.png
-impeller_Play_AiksTest_DrawVerticesWithInvalidIndices_Vulkan.png
 impeller_Play_AiksTest_EmptySaveLayerIgnoresPaint_Metal.png
 impeller_Play_AiksTest_EmptySaveLayerIgnoresPaint_OpenGLES.png
 impeller_Play_AiksTest_EmptySaveLayerIgnoresPaint_Vulkan.png