如何将刚刚被复制到复制队列的资源转换为复制队列不支持的状态?



我使用队列将数据从D3D12_HEAP_TYPE_UPLOAD中间缓冲区复制到D3D12_HEAP_TYPE_DEFAULT D3D12_COMMAND_LIST_TYPE_COPY缓冲区。复制完成后,我需要将资源转换回D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER。但复制队列不支持转换到此状态。我怎样才能正确地做到这一点?

我是否应该在复制后立即插入围栏,然后在图形队列上等待此围栏并在那里执行过渡,这不是一个真正舒适的选择。还有其他可能性吗?

如果在复制队列上使用复制命令列表,则资源将衰减回引用中所述的通用。然后,您可以在使用站点显式地从公共过渡到顶点和常量缓冲区,或者什么都不做,因为 common 无论如何都会提升自己。

当执行命令列表时,以下资源将衰减 在 GPU 上完成操作:在副本上访问的资源 队列,或缓冲任何队列类型的资源,或 纹理资源 具有 D3D12_RESOURCE_FLAG_ALLOW_SIMULTANEOUS_ACCESS标志集。

最新更新