J'ai une texture DX11 partagée qui est utilisée avec 2 périphériques différents dans des threads séparés.DX11 Mise à jour des textures partagées
Thread1 (fonctionnement sur l'appareil 1): Appelée chaque image et met à jour la texture partagée
Thread2 (opérant sur DEVICE2): Consomme la texture partagée en copiant à une autre texture. La fréquence est beaucoup plus faible que le thread 1.
Selon MSDN «Si une texture partagée est mise à jour sur un périphérique, ID3D11DeviceContext :: Flush doit être appelé sur ce périphérique. Cependant, appeler le flush sur le thread1 chaque image est très cher et nous voyons un énorme succès de performance. Nous ne pouvons pas vider le périphérique 1 sur le thread 2, car un contexte de périphérique n'est pas thread-safe.
Existe-t-il un moyen de rendre la mise à jour de texture partagée efficace lorsque les threads 2 doivent la consommer?
Merci pour votre aide! MSDN n'est pas très utile lorsqu'il s'agit de textures partagées. souligné texte
Malheureusement, les mutex à clé ne fonctionnent pas pour moi car il n'y a pas d'ordre défini pour lequel le thread doit s'exécuter en premier. Les deux threads peuvent être appelés à des intervalles aléatoires, ce qui rend les mutex à clé inadaptés à ce scénario – Sid