Supposons que je le code suivant (simplifié):Synchronisez les mises à jour tampons uniformes en métal
id<MTLBuffer> uniforms = ...;
MTLRenderCommandEncoder encoder = ...;
[uniforms contents] = some_data;
[encoder setVertexbuffer: uniforms ...];
DrawSomethingWithShader("myshader");
[uniforms contents] = some_other_data; // WRONG! overwrites previous draw call's uniforms
[encoder setVertexbuffer: uniforms ...];
DrawSomethingElseWithShader("myshader");
En Vulkan il y a un mécanisme appelé pour cette vkCmdPipelineBarrier(). Cependant, je ne pouvais pas trouver quelque chose de similaire dans Metal (MTLFence est un candidat, mais apparemment il est utilisé pour d'autres types de choses). Donc, ma question est de savoir comment synchroniser cette mise à jour du tampon?
(ps .: mon idée actuelle est de suivre les modifications dans la mémoire tampon et copier la « seconde données uniforme » à un autre endroit, mais il serait assez compliqué à mettre en œuvre de manière robuste) Vous
C'est ce dont j'avais peur ... Merci quand même. (Ps .: je laisse la question ouverte pour quelques jours de plus) – Asylum