Commit Graph

11248 Commits

Author SHA1 Message Date
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
baldurk 6a8e7cbbe5 Fix python examples not being up to date with latest API changes 2020-07-20 10:52:59 +01:00
baldurk 8299fb5039 Add some missing D3D12 bitfield stringise cases 2020-07-20 10:50:57 +01:00
baldurk fb313a0f54 Respect minImageCount from surface capabilities 2020-07-17 17:09:58 +01:00
baldurk 05e2761fb8 Quantise pixel history depth when doing per-fragment comparisons 2020-07-17 16:53:35 +01:00
baldurk 7a885ae9bd Tweak ISA checks 2020-07-17 16:53:35 +01:00
baldurk 9506d8e465 Make unbound checkerboard full alpha 2020-07-17 16:53:35 +01:00