7 #include "flutter/fml/make_copyable.h"
8 #include "flutter/impeller/fixtures/simple.vert.h"
9 #include "flutter/testing/testing.h"
28 flutter::testing::OpenFixtureAsMapping(
"ink_sparkle.frag.iplr");
30 ASSERT_GT(fixture->GetSize(), 0u);
39 flutter::testing::OpenFixtureAsMapping(
"ink_sparkle.frag.iplr");
41 auto junk_allocation = std::make_shared<Allocation>();
42 ASSERT_TRUE(junk_allocation->Truncate(fixture->GetSize(),
false));
45 ::memset(junk_allocation->GetBuffer(), 127, junk_allocation->GetLength());
52 flutter::testing::OpenFixtureAsMapping(
"ink_sparkle.frag.iplr");
54 ASSERT_GT(fixture->GetSize(), 0u);
60 ASSERT_NE(uni,
nullptr);
61 ASSERT_EQ(uni->dimensions.rows, 4u);
62 ASSERT_EQ(uni->dimensions.cols, 1u);
63 ASSERT_EQ(uni->location, 0u);
68 ASSERT_NE(uni,
nullptr);
69 ASSERT_EQ(uni->dimensions.rows, 1u);
70 ASSERT_EQ(uni->dimensions.cols, 1u);
71 ASSERT_EQ(uni->location, 1u);
75 auto uni = stage.
GetUniform(
"u_sparkle_color");
76 ASSERT_NE(uni,
nullptr);
77 ASSERT_EQ(uni->dimensions.rows, 4u);
78 ASSERT_EQ(uni->dimensions.cols, 1u);
79 ASSERT_EQ(uni->location, 2u);
83 auto uni = stage.
GetUniform(
"u_sparkle_alpha");
84 ASSERT_NE(uni,
nullptr);
85 ASSERT_EQ(uni->dimensions.rows, 1u);
86 ASSERT_EQ(uni->dimensions.cols, 1u);
87 ASSERT_EQ(uni->location, 3u);
92 ASSERT_NE(uni,
nullptr);
93 ASSERT_EQ(uni->dimensions.rows, 1u);
94 ASSERT_EQ(uni->dimensions.cols, 1u);
95 ASSERT_EQ(uni->location, 4u);
100 ASSERT_NE(uni,
nullptr);
101 ASSERT_EQ(uni->dimensions.rows, 1u);
102 ASSERT_EQ(uni->dimensions.cols, 1u);
103 ASSERT_EQ(uni->location, 6u);
108 ASSERT_NE(uni,
nullptr);
109 ASSERT_EQ(uni->dimensions.rows, 1u);
110 ASSERT_EQ(uni->dimensions.cols, 1u);
111 ASSERT_EQ(uni->location, 7u);
115 auto uni = stage.
GetUniform(
"u_resolution_scale");
116 ASSERT_NE(uni,
nullptr);
117 ASSERT_EQ(uni->dimensions.rows, 2u);
118 ASSERT_EQ(uni->dimensions.cols, 1u);
119 ASSERT_EQ(uni->location, 8u);
124 ASSERT_NE(uni,
nullptr);
125 ASSERT_EQ(uni->dimensions.rows, 2u);
126 ASSERT_EQ(uni->dimensions.cols, 1u);
127 ASSERT_EQ(uni->location, 9u);
132 ASSERT_NE(uni,
nullptr);
133 ASSERT_EQ(uni->dimensions.rows, 1u);
134 ASSERT_EQ(uni->dimensions.cols, 1u);
135 ASSERT_EQ(uni->location, 10u);
141 ASSERT_NE(uni,
nullptr);
142 ASSERT_EQ(uni->dimensions.rows, 2u);
143 ASSERT_EQ(uni->dimensions.cols, 1u);
144 ASSERT_EQ(uni->location, 11u);
149 ASSERT_NE(uni,
nullptr);
150 ASSERT_EQ(uni->dimensions.rows, 2u);
151 ASSERT_EQ(uni->dimensions.cols, 1u);
152 ASSERT_EQ(uni->location, 12u);
157 ASSERT_NE(uni,
nullptr);
158 ASSERT_EQ(uni->dimensions.rows, 2u);
159 ASSERT_EQ(uni->dimensions.cols, 1u);
160 ASSERT_EQ(uni->location, 13u);
165 ASSERT_NE(uni,
nullptr);
166 ASSERT_EQ(uni->dimensions.rows, 2u);
167 ASSERT_EQ(uni->dimensions.cols, 1u);
168 ASSERT_EQ(uni->location, 14u);
173 ASSERT_NE(uni,
nullptr);
174 ASSERT_EQ(uni->dimensions.rows, 2u);
175 ASSERT_EQ(uni->dimensions.cols, 1u);
176 ASSERT_EQ(uni->location, 15u);
181 ASSERT_NE(uni,
nullptr);
182 ASSERT_EQ(uni->dimensions.rows, 2u);
183 ASSERT_EQ(uni->dimensions.cols, 1u);
184 ASSERT_EQ(uni->location, 16u);
191 GTEST_SKIP_(
"Skipped: https://github.com/flutter/flutter/issues/105538");
194 flutter::testing::OpenFixtureAsMapping(
"ink_sparkle.frag.iplr");
195 ASSERT_TRUE(fixture);
196 ASSERT_GT(fixture->GetSize(), 0u);
199 std::promise<bool> registration;
200 auto future = registration.get_future();
201 auto library = GetContext()->GetShaderLibrary();
202 library->RegisterFunction(
206 fml::MakeCopyable([reg = std::move(registration)](
bool result)
mutable {
207 reg.set_value(result);
209 ASSERT_TRUE(future.get());
213 ASSERT_NE(
function,
nullptr);
222 ASSERT_EQ(
function,
nullptr);
228 GTEST_SKIP_(
"Skipped: https://github.com/flutter/flutter/issues/105538");
230 auto stage = OpenAssetAsRuntimeStage(
"ink_sparkle.frag.iplr");
231 ASSERT_NE(stage,
nullptr);
232 ASSERT_TRUE(RegisterStage(*stage));
233 auto library = GetContext()->GetShaderLibrary();
234 using VS = SimpleVertexShader;
236 desc.
SetLabel(
"Runtime Stage InkSparkle");
241 auto vertex_descriptor = std::make_shared<VertexDescriptor>();
242 vertex_descriptor->SetStageInputs(VS::kAllShaderStageInputs,
243 VS::kInterleavedBufferLayout);
247 color0.
format = GetContext()->GetCapabilities()->GetDefaultColorFormat();
252 const auto stencil_fmt =
253 GetContext()->GetCapabilities()->GetDefaultStencilFormat();
255 auto pipeline = GetContext()->GetPipelineLibrary()->GetPipeline(desc).Get();
256 ASSERT_NE(pipeline,
nullptr);