I need to find the right place to post this in more detail but I’m throwing it here incase it’s relevant or if there’s some neat info that gets shared ![]()
Below is a microprofile showing a client process in which a delayed thread on heartbeat is invoking a yielding author job i.e writing batches of info into an editablemesh → createdatamodelasync when the batch is ready (AsyncTask).
Being able to batch these calls will be great because cutting down on that serial editablemesh authoring phase on a client esp one with perf limitations can let us do some nifty stuff, in this case its the client lazily writing its own baked copy of the visuals of a player avatar in our game (better perf via updateBones, compressed buffer + client gen=lower bandwidth), batching speedups a shown in the graphs = way less frame time on the client authoring = much better which is exciting.
I wanted to mention/ask about this call i have hovered in the image, it has a strange title but it’s CreateMeshPartAsync. unlike CreateDataModelContentAsync which works in an async task, calling CreateMeshPartAsync == 20ms lockup on the main thread, regardless of the size of what you put in and there’s no way to get it off the serial thread.
Unsure if this is a bug or intentional (feels possibly like its not intentional given Async in the method name), but if this method is able to move to being truly async i.e not block the main thread, it + batching apis + datamodelcontent become much more desirable to use on the client, since until then you have to trade off the bandwidth reduction&budgeting wins against this hangup you cause by trying to create the meshpart.
Will also mention in this case we’re going for skinned meshes intended purely for visuals, so we basically just want something to render and we don’t mind if it’s slow since it’s not intended to be on-demand.
I can’t find much information about this method or why it holds up the main thread, so would love any insight i.e not sure if its a bug report thing because it says async but runs very-not-async, or is it a feature request i.e it needs to be serial but an async-friendly one for certain cases could exist?

