Frage 1: Woher weiß ich, dass zum Zeitpunkt der Ausführungen von der Befehlsliste die Befehlsliste überhaupt schon fertig ist?
Falls du die Befehlsliste meinst, die im anderen Thread erzeugt wird: Das musst du natürlich irgendwie sicherstellen...
Frage 2: Ist es nicht gleich schnell, die zwei Dreiecke direkt hintereinander mit dem immediate context zu zeichnen? Die Befehlsliste macht doch nichts anderes, oder?
Bei einfach nur zwei einzelnen Dreiecken ist es vermutlich sogar wesentlich schneller, einfach in den Immediate Context zu zeichnen...
Direct3D ist im Prinzip nur eine sehr dünne Schicht zwischen deiner Anwendung und dem User Mode Driver (wenn man mal einen Blick in das Windows Display Driver Model wirft, fällt auf, dass das Interface zum Grafiktreiber dem von Direct3D sehr sehr ähnlich ist). Direct3D Aufrufe landen am Ende bei diesem Grafiktreiber, welcher im Prinzip nichts anderes tut, als einen sog. Command Buffer zu befüllen, welcher Instruktionen in einer für die GPU verständlichen Form enthält. Wenn das Graphics Kernel Subsystem dem Prozess deiner Anwendung das nächste Mal Zeit auf der GPU zuteilt, wird einfach über den Kernel Mode Driver der nächste fertige Command Buffer an die GPU gesendet, welche diesen dann ausführt.
Ich denk, du siehst schon, wo genau die Sache mit den "Befehlslisten" von Direct3D nun ins Bild passt. Was du damit machen kannst, ist im Prinzip den ganzen, mit dem Befüllen der Command Buffer – wenn du so willst, dem Übersetzten von Direct3D Aufrufen in GPU Instruktionen – verbundenen, CPU-seitigen Overhead auf mehrere Cores zu verteilen. Voraussetzung, damit das was bringt, ist natürlich, dass dieser Overhead in deiner Anwendung tatsächlich von belangen ist. Wenn du nur zwei Dreiecke malst, wird der, allein der Verwendung mehrerer Threads und Deferred Contexts etc. entspringende, Overhead alles, was du dadurch jemals sparen könntest, vermutlich um ein Vielfaches übersteigen...
Auch sollte man bedenken, dass der Grafiktreiber dieses Feature unterstützen muss, denn ansonsten wird es von der Direct3D Runtime emuliert, was den potentiellen Gewinn vermutlich nochmal bedeutend schmälert. Ich hab grad keinen Caps Viewer zur Hand, aber als ich das letzte Mal nachgeschaut hab, hatten weder NVIDIA noch AMD Driver Support dafür...
Edit: Hab grad nachgeschaut; NVIDIA scheint Command Lists mittlerweile zu unterstützen, AMD, zumindest mit dem über Windows Update gelieferten Driver auf meinem Laptop, nicht...