173 const std::vector<ShaderStageIOSlot>& inputs,
174 const std::vector<ShaderStageBufferLayout>& layouts) {
175 auto descriptor = descriptor_ = [MTLVertexDescriptor vertexDescriptor];
180 for (
size_t i = 0; i < inputs.size(); i++) {
181 const auto& input = inputs[i];
183 if (vertex_format == MTLVertexFormatInvalid) {
184 VALIDATION_LOG <<
"Format for input " << input.name <<
" not supported.";
187 auto attrib = descriptor.attributes[input.location];
188 attrib.format = vertex_format;
189 attrib.offset = input.offset;
194 for (
size_t i = 0; i < layouts.size(); i++) {
195 const auto& layout = layouts[i];
199 vertex_layout.stride = layout.stride;
200 vertex_layout.stepRate = 1u;
201 vertex_layout.stepFunction = MTLVertexStepFunctionPerVertex;