Commit Graph

4453 Commits

Author SHA1 Message Date
baldurk 29388362a3 Make sure to delete records when resources are destroyed.
* If we're capturing, the frame references will keep the resource alive
  and the application has to at least keep resources alive until after
  GPU execution is finished.
2016-10-31 01:01:53 +01:00
baldurk 7903c78f6c Unmap all current maps when a resource is deleted 2016-10-31 01:01:53 +01:00
baldurk f46cf932d2 Implement D3D12.1 - ID3D12Device1 and pipeline library 2016-10-31 01:01:53 +01:00
Dominik Witczak aaba987953 Fix for glBindBuffersRange() impl. 2016-10-30 20:51:56 +01:00
baldurk b8cee9f530 Add missing break statements, thanks to report from @RCalocaO! 2016-10-29 21:28:27 +02:00
baldurk 6b5a2d4b66 Fix OwnerView not propagating to child nodes. Thanks @RCalocaO! 2016-10-29 21:25:55 +02:00
baldurk 23da9ac149 Add a pop-up tooltip over event names that are truncated 2016-10-28 21:21:05 +02:00
baldurk 1ceb9ee6e7 Don't crash if no RTVs are set with SingleHandleRT true 2016-10-28 17:42:11 +02:00
baldurk 420d653085 Release temporary SRVs created during copy MS <-> Array. Refs #406 2016-10-28 17:41:48 +02:00
baldurk cdbcc7f301 Print a message when running a process 2016-10-27 22:17:42 +02:00
baldurk 385b719883 Make warning on inject screen much more obvious 2016-10-27 21:22:46 +02:00
baldurk 886d49fd2a Don't crash if we try to refresh a non-host node, just skip it 2016-10-27 20:35:52 +02:00
baldurk b36b120638 Don't store bound descriptors in a set, just a vector with duplicates 2016-10-27 19:35:46 +02:00
baldurk 37e56e91b0 Only emit debug text in non-RELEASE 2016-10-27 19:35:45 +02:00
baldurk f7c155acd3 Unwrap presentation queues passed to ResizeBuffers1 2016-10-27 19:35:44 +02:00
baldurk 3c222af4e2 Make sure to frame-reference the contents of descriptor copy sources 2016-10-27 19:35:43 +02:00
baldurk b796669909 Print size of each individual command list, not total size 2016-10-27 19:35:42 +02:00
baldurk 58ecabc7c4 Make sure persistent map check includes resources in bound descriptors 2016-10-27 16:23:09 +02:00
baldurk 95f955a5bb Put whole of ExecuteCommandLists processing in cap transition lock
* This is needed because processing of flushing persistent maps and
  using shadow memory needs to happen before it's deallocated at the end
  of the frame.
2016-10-27 15:43:39 +02:00
baldurk ff547fa24f Only allocate DSVs for output windows with depth. 2016-10-27 15:42:37 +02:00
baldurk 3357898855 Unwrap resource to discard on replay 2016-10-27 14:01:16 +02:00
baldurk 07c9b3697b Check for truncated reads when decompressing 2016-10-27 12:40:19 +02:00
baldurk edcce279d2 Don't write debug text string all in one fwrite call 2016-10-27 12:39:47 +02:00
baldurk c49496bc16 Don't overwrite sampler types during writing 2016-10-27 12:39:17 +02:00
baldurk 88939d1f21 Only add wrapped resources to list on replay (which is single threaded) 2016-10-27 11:35:03 +02:00
baldurk 0832bff675 Use command queue that created a swapchain for writing to backbuffers 2016-10-27 11:34:17 +02:00
baldurk 909d82cc1e Disable barrier logging/assertions by default 2016-10-26 23:14:17 +02:00
baldurk f26876adf3 Only ask for virtual address of buffers 2016-10-26 23:14:17 +02:00
baldurk e1c0400e40 Lock around access to GPUAddressRange vector 2016-10-26 23:14:16 +02:00
baldurk a396713f3c Increase size of initial pipeline state pool 2016-10-26 23:14:16 +02:00
baldurk 51ba0000ed Increase MAX_NUM_BACKBUFFERS 2016-10-26 23:14:15 +02:00
baldurk ab9ada685a Add basic serialisation of bundle execution, without stepping-in support 2016-10-26 23:14:14 +02:00
baldurk dd0a68c9c9 Sync on all queue fences to ensure work is done before shutdown 2016-10-26 23:14:14 +02:00
baldurk a69012e50d Signal dummy fences on all queues to keep debug layers happy 2016-10-26 23:14:13 +02:00
baldurk 2f2da067b0 Account for range start when reading from map ptr to serialise map data 2016-10-26 23:14:12 +02:00
baldurk 939f1102e3 Add SINGLE_FLUSH_VALIDATE single execution of lists and syncing 2016-10-26 23:14:12 +02:00
baldurk 95c2863ab2 When GPU syncing, check that it's successful & wait long enough for TDR
* This means if we're trying to track a TDR by SINGLE_FLUSH_VALIDATE we
  will definitely catch it failing here.
2016-10-26 23:14:11 +02:00
baldurk 451203187d Handle nested Map/Unmap calls by refcounting 2016-10-26 23:14:10 +02:00
baldurk e8e7ad711a Don't set stale table root signature entries for non-current heaps
* The problem is we need to keep current state for both graphics and
  compute because while setting a root signature invalidates bindings,
  setting compute doesn't invalidate graphics and vice-versa.
* However it can be invalid to try and re-apply in one go if we're only
  drawing and not dispatching and some of the compute elements are
  invalid.
* Rather than try to figure out which one *should* be valid, instead we
  just skip invalid binds that don't have matching heaps.
2016-10-26 23:14:10 +02:00
baldurk 447b64fd14 Wrap DXGI 1.5 passthrough, to ensure the wrapping ecosystem isn't broken 2016-10-26 17:10:05 +02:00
baldurk 2c7791c7bd Don't wrap each DXGI interface individually, wrap most derived
* This lets naughty applications downcast e.g. from an IDXGIAdapter to a
  IDXGIAdapter1 without QueryInterfacing (I'm looking at you, ROTTR).
2016-10-26 13:20:07 +02:00
baldurk 0178ea6bb9 Handle setting empty RTs list even if RTsSingleHandle.. is set 2016-10-26 13:17:49 +02:00
baldurk 8acd5ab27d Capture and replay commands executed on multiple queues 2016-10-26 10:48:03 +02:00
baldurk 135ec6858d D3D12 guarantees that queues are thread-safe 2016-10-26 09:29:43 +02:00
baldurk 8fbf7ede1b Make a cracked allocator per real allocator, for threaded recording
* Threaded recording means the recording chunks are all interleaved in
  the log so we may be cracking multiple command lists at the same time
  and so need multiple allocators. Since the original capture obeyed the
  rule of only recording to one list from an allocator at once, making a
  cracked allocator for each also obeys that rule.
2016-10-26 08:56:41 +02:00
Baldur Karlsson 7e2296911c Minor typo fix in README 2016-10-25 21:41:02 +02:00
baldurk d7aa40b3b1 Copy in 64-bit and 32-bit android files into distribution 2016-10-25 19:50:09 +02:00
baldurk f368a65843 Add easy support for self-hosted captures on windows only
* By renaming the renderdoc and renderdoccmd projects to something else
  (say 'selfhost' and 'selfhostcmd') then they can be used to capture
  renderdocui and the replaying that's happening.
* Only supported on development builds and might break down, but it's
  handy to have as an easy to enable option.
* There's also a couple of handy python functions exposed -
  renderdoc.StaticExports.StartSelfHostCapture(string dllname)
  renderdoc.StaticExports.EndSelfHostCapture(string dllname)
  which can be used to start and stop the capture around e.g. a shader
  debug operation or a pixel history operation or something similar.
2016-10-25 19:50:04 +02:00
baldurk aa5c55e4e4 Handle querying D3D device for multiple interfaces, from DXGI. Refs #402 2016-10-25 13:45:54 +02:00
baldurk cde22aace7 Hook WSAStartup/WSACleanup to workaround app bugs. Refs #362, #403
* If the application incorrectly calls WSACleanup() before WSAStartup()
  then instead of just an error for invalid use, it will instead kill
  all of the sockets we created from our early WSAStartup().
* To fix this, we hook those functions and track the process wide ref-
  count, to prevent it from every going to 0 until we shut down our own.
* This was found on GTA 5 in particular but possibly some other
  application will do this too.
2016-10-25 12:03:28 +02:00