You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Currently, we expose all CPU-visible memory types in DX12 as coherent.
However, it's documented in D3D12's Map() and Unmap() that they may (or need) to be used to invalidate/flush the memory regions, and that they can be nested. Judging by that, I think this is closer to our non-coherent memory than coherent one.
We may need to strip the coherency property from all the memory types we expose in D3D12 (Note: we already do this for D3D11). Alternatively, the command buffers would track the buffer transitions to and from HOST, and we could flush/invalidate the relevant resources at Submit() time.
In any way, what we have today appears incorrect. I'm just surprised we haven't seen any issues associated with this.,, I discovered this when looking at gfx-rs/wgpu#1002 but in the end it was a red herring.
The text was updated successfully, but these errors were encountered:
3.4.4 Readback of GPU Data
We don’t want to encourage persistent map of readback (write-back) memory. You can keep it mapped, but before reading data that was written by the GPU, you should do another Map() with a range to ensure the cache is coherent. This is free on systems which don’t need it, but ensures correctness on systems which do.
Currently, we expose all CPU-visible memory types in DX12 as coherent.
However, it's documented in D3D12's Map() and Unmap() that they may (or need) to be used to invalidate/flush the memory regions, and that they can be nested. Judging by that, I think this is closer to our non-coherent memory than coherent one.
We may need to strip the coherency property from all the memory types we expose in D3D12 (Note: we already do this for D3D11). Alternatively, the command buffers would track the buffer transitions to and from HOST, and we could flush/invalidate the relevant resources at Submit() time.
In any way, what we have today appears incorrect. I'm just surprised we haven't seen any issues associated with this.,, I discovered this when looking at gfx-rs/wgpu#1002 but in the end it was a red herring.
The text was updated successfully, but these errors were encountered: