Commit Graph

3686 Commits

Author SHA1 Message Date
baldurk cd7c751e2c While we only have one command list, sync after each execution 2016-07-10 18:09:55 +02:00
baldurk b956568215 Can't wrap virtual addresses - they can be byte offsetted.
* We need to pass them through unwrapped and use a lookup table to get
  the resource's ID from them when necessary
2016-07-10 18:09:55 +02:00
baldurk 84e5bf3a7e Use flip model for swapchain, render to intermediate target then copy 2016-07-10 18:09:54 +02:00
baldurk 9d9c90456b Only create debug manager once 2016-07-10 18:09:53 +02:00
baldurk 6d2343cb29 Register D3D device DXGI callback on replay too 2016-07-10 18:09:53 +02:00
baldurk 8f1bad6de4 Fix typo - don't try to use wrong device pointer 2016-07-10 18:09:52 +02:00
baldurk 9cd6b1ead2 Close list immediately after creation, so it can always be reset on use 2016-07-10 18:09:52 +02:00
baldurk 15aaf56781 Create fake backbuffer texture 2016-07-10 18:09:51 +02:00
baldurk 54c45355f7 Set up serialise user data and replay device pointers properly 2016-07-10 18:09:50 +02:00
baldurk 295a315840 Only get command list IDs when writing 2016-07-10 18:09:50 +02:00
baldurk 925445c8b0 Don't reset newly created command lists (it's not valid) 2016-07-10 18:09:49 +02:00
baldurk 48e52c12f7 Mark signalled fences as referenced 2016-07-10 18:09:49 +02:00
baldurk fa600dbb34 Fix small typos processing queue/list chunks 2016-07-10 18:09:48 +02:00
baldurk 8a5ee99b42 Set up descriptor type properly when serialising in 2016-07-10 18:09:47 +02:00
baldurk 5a68bbf3a7 Don't serialise bytecode buffer if size is 0 - leave pointer as NULL 2016-07-10 18:09:47 +02:00
baldurk ba9321e796 Use macro for extracting swizzle components 2016-07-10 18:09:47 +02:00
baldurk 37811402b3 Create factory independently, rather than obtaining from device 2016-07-10 18:09:46 +02:00
baldurk a7f3ea725d Handle enabling debug layer while reading, when hooks aren't initialised 2016-07-10 18:09:46 +02:00
baldurk 621a2c984d Fix initial state serialisation/application
* Store return code from mapping resource so we don't think it's always
  failed.
* Use the correct unwrapped descriptor handle increment.
* Serialise directly into created upload buffer, and actually upload
  data.
* Do a manual CPU-side copy if destination buffer is in upload heap,
  otherwise ensure proper resource transition barriers happen
2016-07-10 18:09:45 +02:00
baldurk 5a4c22e291 Implement descriptor creation, post-serialise 2016-07-10 18:09:45 +02:00
baldurk ade23cc7a0 Minor formatting improvements 2016-07-10 18:09:44 +02:00
baldurk 5c963fc6a6 Add mostly stubbed D3D12 replay interface, and 2 core chunk replay loops 2016-07-10 18:09:44 +02:00
baldurk 89f40fb0df Fetch, serialise, and apply initial contents of buffer resources 2016-07-10 18:09:43 +02:00
baldurk e1fcde1d71 Track resource states for initial states, apply barriers while recording 2016-07-10 18:09:43 +02:00
baldurk 3a3c2abd8a Fixup RDCDriver out of date string-ify 2016-07-10 18:09:42 +02:00
baldurk 97e36a8def Track initial contents, with things treated as default dirty.
* For now, only descriptor heap initial contents are tracked.
2016-07-10 18:09:42 +02:00
baldurk 297fe80b79 Add remaining parent and dependency tracking to serialise frame 2016-07-10 18:09:41 +02:00
baldurk 4d394bcdce Serialise ID3D12Resource* as ResourceId properly 2016-07-10 18:09:41 +02:00
baldurk ae29c41e67 Add putting together an actual capture file. Give resources records 2016-07-10 18:09:40 +02:00
baldurk a7f6b62bcf Inline some functions that don't need to be separate 2016-07-10 18:09:40 +02:00
baldurk d177d5e3c8 Remove unused stuff from D3D12ResourceRecord 2016-07-10 18:09:40 +02:00
baldurk e043ab6cd6 Serialise the 'this' pointer for command list chunks 2016-07-10 18:09:39 +02:00
baldurk 723c6e065e Minor ToStr fixes 2016-07-10 18:09:39 +02:00
baldurk f56d3e7779 Add text log every second until overlay is implemented 2016-07-10 18:09:38 +02:00
baldurk 4160f3a776 Wrap virtual address and descriptor handles, serialise as heap ID + idx
* This lets us track descriptor contents too.
2016-07-10 18:09:38 +02:00
baldurk 9f7dd21f1b Wrap remaining interfaces for HelloWorldD3D12.
* We can disable the wrapping checking etc, everything from now on
  should be correctly wrapped.
2016-07-10 18:09:37 +02:00
baldurk a0983b64a4 Serialise the command list/queue functions HelloWorldD3D12 uses 2016-07-10 18:09:37 +02:00
baldurk f3216b38f5 Tweak string name of ResourceId to be all one word for easier searching 2016-07-10 18:09:36 +02:00
baldurk 983e8f57c0 Include min/max depth in string format of D3D11_VIEWPORT 2016-07-10 18:09:36 +02:00
baldurk 34755927b9 Add a packed descriptor structure for storing into 2016-07-10 18:09:35 +02:00
baldurk 11823a306d Intercept, serialise and wrap pipeline state creation 2016-07-10 18:09:35 +02:00
baldurk 3a65091b3c Wrap and intercept command lists and queues, and add a couple of unwraps
* At this point the HelloD3D12 sample runs with RenderDoc injected, and
  renders properly.
2016-07-10 18:09:34 +02:00
baldurk f8fa72c305 Add safety code for now, to handle unwrapping non-wrapped resources 2016-07-10 18:09:34 +02:00
baldurk d656511d0f Don't register callback while still running global constructors 2016-07-10 18:09:33 +02:00
baldurk c1f4a01b1b D3D12 object passed to CreateSwapChain and friends is a command queue 2016-07-10 18:09:33 +02:00
baldurk 6ce0ea37dc Set up pass-through implementations for D3D12 device/command list 2016-07-10 18:09:32 +02:00
baldurk b387f8e7f1 Add file for non-wrapped command list/queue functions 2016-07-10 18:09:32 +02:00
baldurk d980da3b60 Rename file for wrapped functions 2016-07-10 18:09:32 +02:00
baldurk fae1212ea0 Add support for IAT hooking imports via ordinal. Needed for D3D12 2016-07-10 18:09:31 +02:00
baldurk 72006dbfcd Make sure to cast to the correct return type.
* Some of these already worked via the first inherited interface being
  the right one, but it's better to be safe. When writing to void* the
  right vtable must be sitting in place.
2016-07-10 18:09:31 +02:00