114 auto get_binding = [&](
const char* fixture) -> uint32_t {
115 auto json_fd = GetReflectionJson(fixture);
116 nlohmann::json shader_json = nlohmann::json::parse(json_fd->GetMapping());
117 return shader_json[
"buffers"][0][
"binding"].get<uint32_t>();
120 auto vert_uniform_binding = get_binding(
"sample.vert");
121 auto frag_uniform_binding = get_binding(
"sample.frag");
123 ASSERT_GT(frag_uniform_binding, vert_uniform_binding);
128 GTEST_SKIP() <<
"Not supported with SkSL";
130 ASSERT_TRUE(CanCompileAndReflect(
"sample_with_binding.vert",
134 struct binding_and_set {
139 auto get_binding = [&](
const char* fixture) -> binding_and_set {
140 auto json_fd = GetReflectionJson(fixture);
141 nlohmann::json shader_json = nlohmann::json::parse(json_fd->GetMapping());
142 uint32_t binding = shader_json[
"buffers"][0][
"binding"].get<uint32_t>();
143 uint32_t set = shader_json[
"buffers"][0][
"set"].get<uint32_t>();
144 return {binding, set};
147 auto vert_uniform_binding = get_binding(
"sample_with_binding.vert");
148 auto frag_uniform_binding = get_binding(
"sample.frag");
150 ASSERT_EQ(frag_uniform_binding.set, 0u);
151 ASSERT_EQ(vert_uniform_binding.set, 3u);
152 ASSERT_EQ(vert_uniform_binding.binding, 17u);
157 GTEST_SKIP() <<
"Only supported on SkSL";
162 auto shader = GetShaderFile(
"texture_lookup.frag", GetParam());
163 std::string_view shader_mapping(
164 reinterpret_cast<const char*
>(shader->GetMapping()), shader->GetSize());
166 constexpr std::string_view expected =
167 "textureA.eval(textureA_size * ( vec2(1.0) + flutter_FragCoord.xy));";
169 EXPECT_NE(shader_mapping.find(expected), std::string::npos);