diff --git a/impeller/renderer/vertex_descriptor.cc b/impeller/renderer/vertex_descriptor.cc index 97dff83913a66..b9c1511cbc851 100644 --- a/impeller/renderer/vertex_descriptor.cc +++ b/impeller/renderer/vertex_descriptor.cc @@ -17,6 +17,14 @@ bool VertexDescriptor::SetStageInputs( for (size_t i = 0; i < count; i++) { inputs_.emplace_back(*stage_inputs[i]); } + // TODO(jonahwilliams): vulkan shader stage needed sorting too. Remove once + // autogenerated headers include offset information. + // See: https://github.com/flutter/flutter/issues/116168 + auto compare_locations = [](ShaderStageIOSlot a, ShaderStageIOSlot b) { + return a.location < b.location; + }; + std::sort(inputs_.begin(), inputs_.end(), compare_locations); + return true; }