23 result += separator() +
"vulkan";
26 result += separator() +
"metal";
29 result += separator() +
"webgpu";
32 result += separator() +
"direct3d";
35 result += separator() +
"rgba8";
38 result += separator() +
"rgba32f";
41 result += separator() +
"r32f";
47 result += separator() +
"offset = " + std::to_string(
fOffset);
59 result += separator() +
"index = " + std::to_string(
fIndex);
62 result += separator() +
"set = " + std::to_string(
fSet);
71 result += separator() +
"origin_upper_left";
74 result += separator() +
"blend_support_all_equations";
77 result += separator() +
"push_constant";
80 result += separator() +
"color";
145 context.
fErrors->
error(
pos,
"only one pixel format qualifier can be used");
151 context.
fErrors->
error(
pos,
"'binding' modifier cannot coexist with 'texture'/'sampler'");
168 for (
const auto& lf : kLayoutFlags) {
169 if (layoutFlags & lf.flag) {
170 if (!(permittedLayoutFlags & lf.flag)) {
171 context.
fErrors->
error(
pos,
"layout qualifier '" + std::string(lf.name) +
172 "' is not permitted here");
175 layoutFlags &= ~lf.flag;
static int SkPopCount(uint32_t n)
SK_ALWAYS_INLINE constexpr int value() const
void error(Position position, std::string_view msg)
FlutterSemanticsFlag flag
std::string void void auto Separator()
@ kBlendSupportAllEquations
std::string description() const
std::string paddedDescription() const
bool checkPermittedLayout(const Context &context, Position pos, LayoutFlags permittedLayoutFlags) const
int fInputAttachmentIndex
bool operator==(const Layout &other) const