From 220aaefe8613383744649c796f419949dc8665f9 Mon Sep 17 00:00:00 2001 From: jonahwilliams Date: Thu, 8 Jun 2023 09:17:48 -0700 Subject: [PATCH 1/2] [Impeller] sort all vertex inputs by location. --- impeller/renderer/vertex_descriptor.cc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/impeller/renderer/vertex_descriptor.cc b/impeller/renderer/vertex_descriptor.cc index 97dff83913a66..296ff67ac71ea 100644 --- a/impeller/renderer/vertex_descriptor.cc +++ b/impeller/renderer/vertex_descriptor.cc @@ -17,6 +17,13 @@ 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. + auto compare_locations = [](ShaderStageIOSlot a, ShaderStageIOSlot b) { + return a.location < b.location; + }; + std::sort(inputs_.begin(), inputs_.end(), compare_locations); + return true; } From 1d3850f78961e893ddbb715db5461dd569a5e8fc Mon Sep 17 00:00:00 2001 From: Jonah Williams Date: Thu, 8 Jun 2023 09:28:39 -0700 Subject: [PATCH 2/2] Update vertex_descriptor.cc --- impeller/renderer/vertex_descriptor.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/impeller/renderer/vertex_descriptor.cc b/impeller/renderer/vertex_descriptor.cc index 296ff67ac71ea..b9c1511cbc851 100644 --- a/impeller/renderer/vertex_descriptor.cc +++ b/impeller/renderer/vertex_descriptor.cc @@ -19,6 +19,7 @@ bool VertexDescriptor::SetStageInputs( } // 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; };