0

根据描述符堆概述 - 同步,更改执行中引用的描述符(通过 ID3D12GraphicsCommandList::SetGraphicsRootDescriptorTable)可能会调用竞争条件。
但是我可以安全地更改当前执行中未引用的描述符吗?引用描述符和非引用描述符都在同一个 DescriptorHeap 中,并且通过调用 ID3D12GraphicsCommandList::SetDescriptorHeaps 将堆设置为 CommandList。 在此处输入图像描述

4

1 回答 1

1

如果您可以保证在命令列表执行期间不会使用描述符堆中的位置,是的,完全有可能覆盖该位置。

因此,例如,可以跟踪是否不再需要某个资源,然后使用该资源将描述符位置标记为空闲(一旦 commandList 已被处理,使用栅栏),然后使用这些先前的位置分配新资源(您可以在运行不再使用该资源的较新 commandList 时执行此操作)。

于 2021-06-03T13:17:09.500 回答