2

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

我是否应该在复制后立即插入栅栏,然后在图形队列上等待这个栅栏并在那里执行转换,这不是很舒服的选择。还有其他可能吗?

4

1 回答 1

1

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

当在 GPU 上完成 ExecuteCommandLists 操作时,以下资源将衰减:复制队列上正在访问的资源,或任何队列类型上的缓冲区资源,或设置了 D3D12_RESOURCE_FLAG_ALLOW_SIMULTANEOUS_ACCESS 标志的任何队列类型上的纹理资源。

于 2017-04-01T00:35:46.497 回答