I wired up the Mesh Viewer window code (BufferViewer.cpp) with a copy of the code from the Texture Viewer window code ie.
void BufferViewer::UI_CheckResize()
{
#if defined(RENDERDOC_PLATFORM_APPLE)
m_Ctx.Replay().AsyncInvoke(lit("UI_CheckResize"), [this](IReplayController *) {
if(m_Output && m_Output->GetPendingResizeMT())
{
GUIInvoke::blockcall(this, [this]() { UI_SetViewContextMT(); });
}
});
#endif // #if defined(RENDERDOC_PLATFORM_APPLE)
}
void BufferViewer::UI_SetViewContextMT()
{
#if defined(RENDERDOC_PLATFORM_APPLE)
if(m_Output)
m_Output->SetViewContextMT();
#endif // #if defined(RENDERDOC_PLATFORM_APPLE)
}
and it worked first time

Next steps are to iron out the resize events not always triggering the UI updates I need. Baldur found this Apple API in use in the MoltenVk source code which allows any thread to run a block of Objective-C code on the main thread which is precisely what I need to do. The caveat is I need to make sure the ReplayThread is not running any commands and is blocked from running commands whilst these main thread commands execute.






