Jump to content
  • Advertisement

Andy Glaister

  • Content Count

  • Joined

  • Last visited

Community Reputation

136 Neutral

About Andy Glaister

  • Rank
  1. Andy Glaister

    D3D11 WARP without swap-chain - LEAK?

    In D3D11 almost anything you delete is not actually deleted until you flush or present. The reason for this is the 'command buffer' that is being filled with commands may reference these resources and so anything deleted during command buffer creation is kept alive until the GPU has executed the command buffer. Resources are kept alive while they are bound to the pipeline, even if you release them and the ref-count says zero, if they are bound to the pipeline, they are still alive - ClearState solves this. So ClearState/Flush should make sure any resources that you believe you have deleted are actually deleted. If you still find resources alive it might be worth using the debug layers to see if there are objects alive at this point that you didn't expect.   WARP does use additional memory to optimize it's rendering, we typically hold onto surfaces if we think you are going to reuse them in the future (particularly resources in use that you call map / discard on) as this is faster than releasing them and then asking the OS for them again (and getting zero filled memory). We do limit this memory, and it will 'decay' over time, so it should not use too much and it should certainly not leak.   Andy
  2. Andy Glaister

    D3D 12 - Is there a reference device?

    When you have a GPU(s) enabled on a system, the last adapter you enumerate will be a 'render only' WARP device. This never has any outputs. You can still render to a window using this device as this doesn't require an output. If you disable your GPU in device manager, or you are running in a VM or HYPER-V, you will (typically) enumerate two adapters, the first is a WARP adapter that will appear to have an output and the second WARP device is the 'render only' device. Note, when WARP is your primary GPU, it also provides D3D9 and below emulation as well.   Yes, WARP is the replacement for Ref. Ref didn't support shared surfaces or kernel synchronization which is being used in a lot of components these days. WARP is *fully* conformant with the D3D specs, so can be relied upon to be a accurate reference. It's also much faster than the original reference rasterizer was, and it's implemented as a 'real device' in the system, so participates in kernel synchronization and supports shared surfaces (which is required for things like the desktop, IE etc...).   Andy
  3. Andy Glaister

    D3D12 warp driver on windows 7

    This won't work.   The d3d10warp.dll and even the optional d3d12warp.dll that are shipped with Windows 10 builds have tight ties to OS components that only exist in Windows 8.1 onwards. We also removed 'old DDI table support' from these drivers to minimize our testing and old code that is not longer used. This means the only DDI tables that these Win 10 binaries expose are a WDDM 1.3 table (Win 8.1)  and a WDDM 2.0 table (Win 10), neither will be recognized by the runtime in Windows 7. You can take either of these binaries and run them on Win8.1 (after renaming d3d12warp.dll to d3d10warp.dll) - But that still won't give you D3D12 on anything other than Windows 10, there is a *lot* more to D3D12 in the kernel / runtime / OS.
  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!