5 #include "flutter/testing/testing.h"
29 ASSERT_TRUE(CanCompileAndReflect(
"sample.vert"));
36 ASSERT_TRUE(CanCompileAndReflect(
41 ASSERT_TRUE(CanCompileAndReflect(
"multiple_stages.hlsl",
44 ASSERT_TRUE(CanCompileAndReflect(
"multiple_stages.hlsl",
50 ASSERT_TRUE(CanCompileAndReflect(
"sample.tesc"));
51 ASSERT_TRUE(CanCompileAndReflect(
"sample.tesc",
56 ASSERT_TRUE(CanCompileAndReflect(
"sample.tese"));
57 ASSERT_TRUE(CanCompileAndReflect(
"sample.tese",
63 GTEST_SKIP_(
"Only enabled on Metal backends till ES 3.2 support is added.");
65 ASSERT_TRUE(CanCompileAndReflect(
"sample.comp"));
77 ASSERT_FALSE(CanCompileAndReflect(
"struct_def_bug.vert"));
88 auto get_binding = [&](
const char* fixture) -> uint32_t {
89 auto json_fd = GetReflectionJson(fixture);
90 nlohmann::json shader_json = nlohmann::json::parse(json_fd->GetMapping());
91 return shader_json[
"buffers"][0][
"binding"].get<uint32_t>();
94 auto vert_uniform_binding = get_binding(
"sample.vert");
95 auto frag_uniform_binding = get_binding(
"sample.frag");
97 ASSERT_GT(frag_uniform_binding, vert_uniform_binding);
101 ASSERT_TRUE(CanCompileAndReflect(
"sample_with_binding.vert",
105 struct binding_and_set {
110 auto get_binding = [&](
const char* fixture) -> binding_and_set {
111 auto json_fd = GetReflectionJson(fixture);
112 nlohmann::json shader_json = nlohmann::json::parse(json_fd->GetMapping());
113 uint32_t binding = shader_json[
"buffers"][0][
"binding"].get<uint32_t>();
114 uint32_t set = shader_json[
"buffers"][0][
"set"].get<uint32_t>();
115 return {binding, set};
118 auto vert_uniform_binding = get_binding(
"sample_with_binding.vert");
119 auto frag_uniform_binding = get_binding(
"sample.frag");
121 ASSERT_EQ(frag_uniform_binding.set, 0u);
122 ASSERT_EQ(vert_uniform_binding.set, 3u);
123 ASSERT_EQ(vert_uniform_binding.binding, 17u);
126 #define INSTANTIATE_TARGET_PLATFORM_TEST_SUITE_P(suite_name) \
127 INSTANTIATE_TEST_SUITE_P( \
128 suite_name, CompilerTest, \
130 TargetPlatform::kOpenGLES, TargetPlatform::kOpenGLDesktop, \
131 TargetPlatform::kMetalDesktop, TargetPlatform::kMetalIOS), \
132 [](const ::testing::TestParamInfo<CompilerTest::ParamType>& info) { \
133 return TargetPlatformToString(info.param); \