Quantcast
Channel: GameDev.net
Viewing all articles
Browse latest Browse all 17560

D3D11: Forcing update to VRAM and/or checking if it happened

$
0
0

Hey,

I am working on volumetric video player renderer. It uploads ~100MB of vertex buffers and textures couple times a second and I would like to make sure, that the uploads are completely async (using GPUs copy engine) and I would like to know if there is any way to force upload to VRAM on d3d11 buffer unmap and later on to know if the transfer is finished. 

Current strategy in the engine is to map memcpy unmap dynamic buffer (ping pong strategy) and copyResource to default buffer, which happens in the same frame when the data are requested. I want to change it, but would like to be smart about it.

Problem is that I dont see any way to tell driver "hey I will be using this" like D3D9 Preload function and for driver to tell me "your data are ready fine sir". Im basically looking on how to do the same thing as described in this talk, but for D3D11:

http://on-demand.gputechconf.com/gtc/2012/presentations/S0356-GTC2012-Texture-Transfers.pdf

I was analyzing my data transfers with nsight and GPUView and tried these things without much success:

  • Deferred context: Which is just a way to record command buffer asynchronously and replay it on main context later
  • Creating separate D3D11 upload device: I wasnt able to make any uploads (or at least verify it) with this approach

Seem like that driver knows when the upload was finished according to this: 

https://msdn.microsoft.com/en-us/windows/hardware/drivers/display/device-paging-queues

I'll be happy for any advice or articles to study on this. 


Viewing all articles
Browse latest Browse all 17560

Latest Images

Trending Articles



Latest Images

<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>