85 : payload_(payload) {
87
89 entrypoint_ = runtime_stage->entrypoint()->str();
90
91 auto* uniforms = runtime_stage->uniforms();
92 if (uniforms) {
93 for (
auto i = uniforms->begin(),
end = uniforms->end(); i !=
end; i++) {
94 RuntimeUniformDescription
desc;
95 desc.name = i->name()->str();
96 desc.location = i->location();
97 desc.binding = i->binding();
99 desc.dimensions = RuntimeUniformDimensions{
100 static_cast<size_t>(i->rows()), static_cast<size_t>(i->columns())};
101 desc.bit_width = i->bit_width();
102 desc.array_elements = i->array_elements();
103 if (i->struct_layout()) {
104 for (const auto& byte_type : *i->struct_layout()) {
105 desc.struct_layout.push_back(
static_cast<uint8_t
>(byte_type));
106 }
107 }
108 desc.binding = i->binding();
109 desc.struct_float_count = i->struct_float_count();
110 uniforms_.push_back(std::move(desc));
111 }
112 }
113
114 code_mapping_ = std::make_shared<fml::NonOwnedMapping>(
115 runtime_stage->shader()->data(),
116 runtime_stage->shader()->size(),
117 [payload = payload_](auto, auto) {}
118 );
119
122 descriptor_set_layouts_.push_back(DescriptorSetLayout{
123 static_cast<uint32_t>(uniform.location),
126 });
128 descriptor_set_layouts_.push_back(DescriptorSetLayout{
129 static_cast<uint32_t>(uniform.binding),
132 });
133 }
134 }
135
136 is_valid_ = true;
137}
const std::vector< RuntimeUniformDescription > & GetUniforms() const
#define FML_DCHECK(condition)
constexpr ShaderStage ToShaderStage(RuntimeShaderStage stage)
static RuntimeUniformType ToType(fb::UniformDataType type)