Commit Graph

6339 Commits

Author SHA1 Message Date
baldurk f2645cb634 Update physical/logic device handling wrapper functions 2017-11-08 18:24:18 +00:00
baldurk 6a00d45b58 Update vulkan miscellaneous/independent wrappers 2017-11-08 18:24:17 +00:00
baldurk 85132729de Update vulkan shader and pipeline wrapping functions 2017-11-08 18:24:16 +00:00
baldurk b9f752923a Update vulkan descriptor-handling wrappers 2017-11-08 18:24:16 +00:00
baldurk 74861c7417 Update vulkan dynamic-state setting wrapper functions 2017-11-08 18:24:15 +00:00
baldurk 553d821c37 Update vulkan synchronisation functions 2017-11-08 18:24:14 +00:00
baldurk 7329d864ec Update vulkan WSI function wrappers 2017-11-08 18:24:14 +00:00
baldurk 3770526590 Update vulkan query function wrappers 2017-11-08 18:24:13 +00:00
baldurk d3069b74ad Update core vulkan driver code 2017-11-08 18:24:12 +00:00
baldurk fd680f4a8b Convert vulkan initial state handling to new serialisation system 2017-11-08 18:24:12 +00:00
baldurk 5a1a3fb6cf Update vulkan chunk enum to enum class, use ToStr for stringify-ing 2017-11-08 18:24:11 +00:00
baldurk c7ede6725a Update OS-specific WSI wrapping code 2017-11-08 18:24:11 +00:00
baldurk 51e62a447a Update VulkanResourceManager to newest code 2017-11-08 18:24:10 +00:00
baldurk 6d360d3228 Update vulkan replay initialisation to new RDCFile mechanism 2017-11-08 18:24:09 +00:00
baldurk 651ba25919 Update Vulkan common struct serialisation & split it into separate file
* This also includes serialising vulkan handles as Ids by type instead
  of using a macro as before.
* In contrast to the old code, we serialise handles as the wrapped type
  since e.g. when serialising a command buffer in a vkCmd* function we
  want to get back the wrapped type. This means some structs need to be
  unwrapped on replay when before they were "pre-unwrapped" after the
  serialisation, but this isn't a big deal.
2017-11-08 18:24:08 +00:00
baldurk ae32f791ae Re-enable D3D8 and D3D9 drivers 2017-11-08 18:24:08 +00:00
baldurk e771032d2d Update D3D8 and D3D9 stub projects to new code 2017-11-08 18:24:07 +00:00
baldurk dbe29142b0 Re-enable D3D11 and DXBC drivers 2017-11-08 18:24:07 +00:00
baldurk 3a250992e5 Update D3D11 renderstate with latest code and serialisation 2017-11-08 18:24:06 +00:00
baldurk 545c7831d4 Change D3D11.3 device wrapping to new serialisation system 2017-11-08 18:24:05 +00:00
baldurk 37ef704a3b Change D3D11.1 context wrapping to new serialisation system 2017-11-08 18:24:05 +00:00
baldurk 59dd1738c0 Change D3D11.1 device wrapping to new serialisation system 2017-11-08 18:24:04 +00:00
baldurk 2fe0193b49 Update D3D11 context wrapping to new serialisation scheme 2017-11-08 18:24:03 +00:00
baldurk 0027ff1a10 Change D3D11 device wrappers to new serialisation method 2017-11-07 19:51:46 +00:00
baldurk 9194157eec Add explicit template instantiation of serialise functions 2017-11-07 19:51:45 +00:00
baldurk 50f2bae91e Update non-wrapping D3D11 context code 2017-11-07 19:51:45 +00:00
baldurk 81a4e718cb Update non-wrapping D3D11 device code 2017-11-07 19:51:44 +00:00
baldurk da441b675c Serialise ID3D11Interface * pointers directly, with internal ID conv
* The serialise function handles fetching the ID on write, and looking
  up the resource manager to fetch the handle on read.
* This allows us to do nice things like:
  Serialise_SetConstBufs(SerialiserType &ser, UINT NumBuffers,
      ID3D11Buffer *const *ppConstantBuffers)
  {
    SERIALISE_ELEMENT_ARRAY(ppConstantBuffers, NumBuffers);
    // ...
  }
  And the array handling and serialise recursion will correctly iterate
  and serialise the array as a series of ResourceIds, then restore it
  as a series of handles.
2017-11-07 19:30:43 +00:00
baldurk aafdc88fd2 Update D3D11 initial state handling to write directly from mapped buffer 2017-11-07 19:30:42 +00:00
baldurk a36d379360 Change D3D11 replay initialisation to new system with RDCFile* 2017-11-07 19:30:42 +00:00
baldurk d41eeb432d Change D3D11 Chunks to enum class, improve names & use ToStr 2017-11-07 19:30:41 +00:00
baldurk f419723160 Update serialisers of D3D11 structs to new format, in split out file 2017-11-07 19:30:40 +00:00
baldurk d33b3f5940 Re-enable DXGI driver 2017-11-07 19:30:39 +00:00
baldurk 5024fd0f35 Update DXGI project to latest code 2017-11-07 19:30:39 +00:00
baldurk b36a0decdf Change LogState to CaptureState and add more intuitive helper functions 2017-11-07 19:30:38 +00:00
baldurk 2a4612b92e Update win32 thumbnail shell extension to use RDCFile to fetch thumbnail 2017-11-07 19:30:37 +00:00
baldurk 536c467b46 Convert remote server to new serialisation and replay initialisation 2017-11-07 19:30:37 +00:00
baldurk b992e95f94 Update replay proxy to use new serialisation mechanism 2017-11-07 19:30:36 +00:00
baldurk 9388d2b71b Change core capture code to be more centred around container handle
* When opening a capture file, a format is now available to allow
  easy import from another format without a completely different
  interface. Only rdc files can be replayed, but any other file can
  load and access structured data through the same interface.
* The replay initialisation and capture writing interfaces also use the
  RDCFile instead of passing filenames or Serialisers around directly.
  Driver initialisation parameters are now entirely private, and don't
  need to be exposed - any agnostic metadata like thumbnail, driver, etc
  are all accessed via the RDCFile container itself.
* Callstack resolution is now part of the container file, not the
  back-end via way of its Serialiser.
* Importers/Exporters to other non-RDC formats are registered in a
  similar way to replay/remote drivers.
* It is also then possible to construct an RDC file from thin air, by
  creating an empty RDCFile container and filling it with data, then
  requesting it to be written to disk.
2017-11-07 19:30:35 +00:00
baldurk a63e99177d Add serialisation for public interface structs 2017-11-07 19:30:35 +00:00
baldurk 034a0f3759 Update target control code to use new serialisation system 2017-11-07 19:30:34 +00:00
baldurk d26f634978 Update resource manager to new serialisation with direct-to-disk writes
* Since the initial states will all be written directly to the file
  serialiser without intermediate copies, there will be no ability to
  seek backwards to fixup chunk lengths.
* Instead all chunks will write an upper bound size estimate first, then
  any padding is written at the end if they came in under the estimate.
2017-11-07 19:30:33 +00:00
baldurk dc6f11f07b Remove socket_helpers.h - serialiser can now write directly to socket 2017-11-07 19:30:32 +00:00
baldurk 327fda94a0 Add refactored serialisation system
* The new system contains the ability to export serialised data to a
  structured form in memory - and conversion back to serialised bytes.
* This will allow offline transformations/visualisation of capture files
  as well as more rich representations of API calls in the UI.
* Likewise it enables a number of optimisations such as the ability to
  write straight from mapped API memory to disk via a compressor,
  without any intermediate copies.
2017-11-07 19:30:32 +00:00
baldurk 7562da9a20 Temporarily remove driver support. (See commit msg if bisecting)
* The commits following this add a new refactored serialisation system.
  As a balance between readability of individual commits and ability to
  bisect/compile at interim steps, the individual API back-ends are
  disabled in this commit, so that after the serialisation system is
  committed the project compiles again as soon as possible.
* However this is of course not much use in itself as then the code
  can't function usefully. The drivers are re-enabled as each one is
  updated to the new system, so at least the codebase should stay
  compiling, even if each individual API may not yet be functioning.
2017-11-07 19:30:31 +00:00
baldurk 382639fb3f Change rdcarray resize strategy to exponential instead of minimal
* Normally this wasn't a problem but in a few cases we were doing lots
  of push_back calls and this caused horrible resize-by-1 behaviour.
* So instead we double the available count (if that's larger than just
  satisfying the request).
2017-11-07 19:29:42 +00:00
baldurk bfc5946227 Fix command line options for WoW32 renderdoccmd global hook 2017-11-07 19:29:42 +00:00
baldurk 594c8ccae6 Fix for invalid use of assign() in new rdcstr interface
* This will go away with the serialise refactor, but is currently broken
2017-11-06 13:53:41 +00:00
baldurk 2c2270051c Hide/disable options when they're not available. Refs #788
* Hopefully these can be restored at some point, when the features are
  implemented. For now where possible we remove options that are just
  unavailable always, and selectively disable others when they may or
  may not be available based on what API the capture uses.
2017-11-06 12:45:40 +00:00
baldurk dfbb567464 Update qprocessinfo to 39678d76bd9b462da9acbfea397dd56494aab73e 2017-11-06 12:45:40 +00:00