いろいろ考えた末、こんな感じがいいのではないのでしょうか。
まず、このプログラムは 2 スレッドで動作します。1 つは UI (dispatcher) スレッド、もう 1 つは Composition (renderer) スレッドです。
1 つめの UI スレッドは xaml を扱う人ならご存知かと思いますが、いつもの UI スレッドです。これはユーザーからの入力および UI スレッドで実行すべき内容を実行します。UI 要素にかかわるものはすべてこの制約を受けます。
次に皆さんが普段見慣れないスレッド、それが Composition スレッドです。合成処理を行うことなります。いわゆる描画に特化したスレッドで、描画以外の処理はさせません。ただし、UI スレッドと密接に絡みつくので慎重に設計する必要がある気がします。描画命令 Queue を xaml tree から受け取るのですが、このあたりの同期を慎重に設計したほうがいい気がします。
Windows PC は laptop だと 2 コア 4 スレッドが多いので、物理 2 コアにこの 2 のスレッドを割り当てることができればかなりのパフォーマンスを得ることができます。
★ただし、Android のシングルコア機には注意です。ただしこれも時間の問題でもはや、8 コアとかが当たり前の世界になってくる時代、省電力でリトル 2 コアとかで動作するとかぐらいまでしか落ちない気がするので、基本気にしないで行きます。iOS も Android も Windows 10 for phones も基本的にデュアル以上はほぼあるとみなし、この設計は Avalon (WPF のコードネーム) 時代のものをそのまま使えばいいでしょう。
ということで今回はアーキテクチャーの話でした。これからちまちまコード書いていきますが、2 月になったので、すべてのリソースをささげれるわけじゃないのでちまちまやっていこうと思います。よろしくお願いします。