Commit Graph

11254 Commits

Author SHA1 Message Date
baldurk 9547b049e3 Update version number on in-application API documentation 2020-08-05 11:41:31 +01:00
baldurk 9f2de54521 Better reserve of written records size 2020-08-04 17:52:10 +01:00
baldurk 31b7c35bae Fix logfiles not being deleted if captured application is the last user
* Previously only the UI itself would delete the log if it was the last thing to
  close.
2020-08-04 14:48:51 +01:00
baldurk 211d8532fa Use GPU readbacks for mapped memory in PCI-E window
* On discrete GPUs that expose PCI-E window memory (device local but still host
  visible) this memory is extremely slow to read from on the CPU. It's
  significantly faster to issue a command buffer to get the GPU to copy into CPU
  memory and wait on that command buffer to finish, then read from the copy.
* We do this for detected coherent writes in queue submit, issuing the copy on
  the queue being submitted to. We do *not* do this for memory unmaps or
  explicit application flushes. This does mean those will remain slow, however
  with no queue to use the synchronisation challenges become more significant
  and most applications leave memory persistently mapped.
2020-08-04 14:48:02 +01:00
baldurk 7b1995a7ba Properly handle offsets on memory maps in vulkan 2020-08-04 13:59:45 +01:00
baldurk 27b541c6d5 Always optimise some 3rdparty code like lz4, to speed up debug builds
* We don't need to debug this code and it slows down captures a fair bit if it's
  not optimised
2020-08-04 11:22:15 +01:00
baldurk 2d47466297 Combine last write time and last partial use maps into array
* We only care about tracking two things:
  1. Resources that have been written very recently. These should not be
     postponed as there's a high chance they'll be written mid-frame and so we'd
     need their initial contents.
  2. Resources that have their last non-complete-write reference was a while ago
  However in the second case we can acceptably ignore any resources that haven't
  been written recently either, since if the resource hasn't been written and
  also hasn't been complete-written then it hasn't been used at all.
* So when updating the non-complete-write time we only do this if the resource
  has had a write reference, and intermittently we remove any resources that
  haven't had a write at all.
* Postponed resources will be exactly the same set, because we treat a resource
  as postponable if we have no write time for it at all so it's fine to remove
  old resources from the list. Fewer resources will be skipped, as we now treat
  resources that have no known age as non-skippable. However in the majority of
  these cases we expect either for the resource to not be used at all (thus the
  postpone will never be forced to prepare and we won't serialise anything), or
  else if it is used the chances are high it will be used read-only so the
  postpone will still be enough.
2020-08-03 18:30:20 +01:00
baldurk 035073fac9 When updating descriptor bind refs, cache resource references
* This means we don't have to iterate the whole bindrefs array every time we
  want to propagate references in the background, but we can submit them in
  batch.
2020-08-03 18:30:20 +01:00
baldurk 0b061f4565 Stop tracking dirty state at fine-grained detail on vulkan
* Almost all dirty-able resources (memory and images) become dirty almost
  immediately, so spending time tracking dirty state is wasted. Instead we treat
  these resources as dirty at creation and rely on the postponing logic to avoid
  preparing initial states for newly created resources that are not used in the
  frame.
* This may cause more 'last-minute' postponed prepares for newly created
  resources, which would previously.
2020-08-03 18:30:20 +01:00
baldurk caf1e03d3d Strip debug extensions on replay 2020-08-03 18:30:03 +01:00
baldurk 39431bb83f Don't flush mapped memory in driver for detected coherent memory writes 2020-07-31 17:20:25 +01:00
baldurk 351687eb87 Test that D3D11 shader debugging doesn't internally pollute state 2020-07-31 16:24:59 +01:00
baldurk ed3163b606 Don't perform library hook on windows when loading as datafile 2020-07-31 14:42:45 +01:00
baldurk 455eddf3b4 Refactor UpdateImageStates to optimise for the case of few updates 2020-07-30 16:37:01 +01:00
baldurk ee6080eb50 Fix logs for starting frame captures
* We don't have the frame number here anymore so don't print it
2020-07-30 15:38:19 +01:00
baldurk bece22e758 Add some missing filters categorisation for files 2020-07-30 15:34:57 +01:00
baldurk 50cb5a1a9e Lock resource from mapping when diffing in queue execute. Closes #1998 2020-07-30 11:23:02 +01:00
baldurk 9ce60a0b6e Test that OpenExistingHeapFromAddress can be captured and replayed 2020-07-29 15:39:04 +01:00
baldurk d03acd3b6c Test reading instanced data via client memory pointers in GL 2020-07-29 15:17:45 +01:00
baldurk c8c281b503 Test swizzles on byte address buffer loads 2020-07-29 14:52:05 +01:00
baldurk 83478602a8 Don't register/unregister frame capturers when swapchains resize 2020-07-29 14:23:34 +01:00
baldurk 5af3a4e23b Add a debug option to embed the log file in captures 2020-07-29 10:59:18 +01:00
baldurk 23fc093a67 Consistently use original command buffer IDs in maps
* If we use the live ID then re-recorded command buffers can cause maps to
  slowly grow in size.
2020-07-29 10:43:57 +01:00
baldurk d020543065 Set -fno-strict-aliasing to prevent gcc from breaking tons of code
* Technically the code is incorrect, because the C++ spec is terrible and makes
  completely normal things illegal. GCC decides that a couple of % more perf is
  worth breaking lots of code, so instead we disable this class of
  "optimisation".
2020-07-28 15:30:45 +01:00
baldurk 624da2fb25 Add test that we don't crash on draws with new viewports 2020-07-27 16:17:13 +01:00
baldurk 1c6c671781 Change scissor/viewport count when it's not dynamic state 2020-07-27 16:17:13 +01:00
baldurk e6a2b94b6f Disallow closing progress dialogs early
* Normally the close button is hidden but some platforms don't allow this.
2020-07-27 16:17:13 +01:00
baldurk fda371cc6e Avoid glTextureBufferRangeEXT if range isn't valid
* This likely indicates that the non-range variant was used originally.
2020-07-27 16:17:12 +01:00
baldurk 691ee0c348 Don't overwrite GL state when creating text-rendering data. Closes #1994 2020-07-27 16:17:12 +01:00
baldurk 287bb81fca Add a note about the python module version restriction 2020-07-24 16:33:34 +01:00
baldurk e147a5a6d1 Test OpLine/OpNoLine being intermingled with function header 2020-07-24 16:33:34 +01:00
baldurk c161797420 Don't look up viewport if none is bound 2020-07-24 16:33:34 +01:00
Kevin McCullough 2f6ed260be Replacing non-ascii characters with - 2020-07-23 18:26:21 +01:00
baldurk a10f67f26a Skip OpLine/OpNoLine that appears before function variable declarations 2020-07-22 20:04:58 +01:00
baldurk 865d39ec44 Bump version to 1.10 2020-07-22 18:48:41 +01:00
baldurk 22dbb188ce Document the new custom shader directories setting v1.9 2020-07-22 17:34:40 +01:00
baldurk 5d8d57540b Update docs as vulkan pixel history and shader debugging are supported 2020-07-22 17:31:20 +01:00
baldurk 8e3d38ce2c Fix crash if texture is discarded with NULL region (means all discarded) 2020-07-22 13:26:29 +01:00
baldurk 7a1c476ceb Remove Vulkan shader debugging beta feature flag 2020-07-21 22:36:16 +01:00
baldurk 6c1376fbb9 Add credits note for vulkan pixel history 2020-07-21 19:57:09 +01:00
baldurk 03029a5152 Don't end unbalanced counters while fetching them ourselves on GL 2020-07-21 19:57:09 +01:00
baldurk 0d8c36d6e8 Handle instanced client memory arrays in GL 2020-07-21 19:57:09 +01:00
baldurk 331aabcde6 Include test process output into test log 2020-07-21 19:57:09 +01:00
baldurk 9f4f68a76b Add an unhandled exception handler on windows to print crashes to output 2020-07-21 19:57:09 +01:00
baldurk f75c34d3c2 Fix swizzle on resource not being properly applied to ld_raw operations 2020-07-21 19:57:09 +01:00
baldurk b540f631ab Don't overwrite idx variable with loop iterator 2020-07-21 19:57:09 +01:00
baldurk 56f1b8c4e8 Fix size clamp being backwards for D3D12 index buffers 2020-07-21 19:57:09 +01:00
Aliya Pazylbekova 109d5e90a9 Remove Vulkan pixel history beta feature flag 2020-07-21 19:56:12 +01:00
baldurk bf567adea1 Fix backwards finite check in D3D11 shader debugging 2020-07-20 16:31:59 +01:00
baldurk f6babe77fd Handle depth clipping and depth bounds failure separately
* This prevents truly depth-clipped fragments from being wrongly reported as
  other failures like backface culling.
2020-07-20 16:07:36 +01:00