Commit Graph

11720 Commits

Author SHA1 Message Date
baldurk 60409caf8d Make event selection 'soft' blocking instead of hard blocking
* Normally SetEventID is synchronous and blocking, and will stall the UI while
  it is processing. However we can at least pop up a progress dialog and allow
  the UI to function (if not be interactive due to the blocking progress dialog)
  when some other long-running task is delaying the processing on the replay
  thread.
2020-12-03 15:09:29 +00:00
baldurk 6bc4e007a0 Fix C++ invokes being responsible for destroying python callbacks
* If the last refcount on a python lambda/temp function is released when a
  wrapping std::function is destroyed in a C++ invoke, we can't destroy it
  safely. Instead we queue up that decref and process it the next chance we're
  able (which is either when the current execution finishes for a python shell
  execution, or on the next function call which handles extensions).
2020-12-03 14:55:02 +00:00
baldurk 0d1f6e3940 Add helper to invoke back onto the UI thread from the replay thread 2020-12-03 14:17:42 +00:00
baldurk a8a40ca3d6 Add the ability to create spacers, for better layouts 2020-12-03 13:24:56 +00:00
baldurk a176849962 Add some new helpers for managing widgets 2020-12-03 11:24:39 +00:00
baldurk b69ca4526e Log the specific error if vkCreateInstance fails in demo program 2020-12-03 10:59:05 +00:00
baldurk 1e1ac07a07 Allow python scripts to implement and register as ICaptureViewer classes 2020-12-03 10:44:27 +00:00
baldurk 1a0df46f62 Fix issue selecting indirect draw sub-command in draw with count=1 2020-12-02 17:44:47 +00:00
baldurk b52713d55d Fix issue with wholeMemBuf not covering whole allocation sometimes
* When we use the wholeMemBuf from a dedicated allocation it may actually be
  smaller than the whole allocation, and we need to be careful not to overuse
  it. Keep a separate size for wholeMemBuf which can shrink if the buffer is
  smaller.
2020-12-02 17:44:47 +00:00
baldurk f38c4c366d Add a ctrl+enter shortcut in capture dialog to launch the capture 2020-12-02 17:44:47 +00:00
baldurk 806d6fce2a KHR_buffer_device_address is fixed in AMD driver 20.11.3 2020-12-02 17:44:46 +00:00
baldurk 9610919c16 Fix copy-paste of rich resource text
* We need to cache to the QString text on demand, which requires a context
  potentially sooner than paint/etc time.
2020-12-02 17:44:46 +00:00
Aliya Pazylbekova 1b9cd082bd Fix UUID copy for AMD markers for non-Windows
For non-windows size of unsigned long is 8, so copy the UUID in split
fashion.
2020-12-02 10:56:07 +00:00
baldurk 8628f95b9f Expire pointer aliases in SPIR-V debugging when Ids go out of scope 2020-11-30 13:00:05 +00:00
baldurk 8d14408f09 Fix header being incorrectly renamed on linux installs 2020-11-30 13:00:05 +00:00
攻伤菊菊长 34bf107ac2 Implement support for SPV_GOOGLE_user_type
For debugging vulkan shaders generated by dxc
2020-11-30 11:23:25 +00:00
baldurk ced7fc70cd Bump version to 1.12 2020-11-27 17:32:26 +00:00
baldurk c5480aa622 Add some simple protection against binding bad GL texture handles v1.11 2020-11-27 15:57:25 +00:00
baldurk 949cff30a2 Add some Qt python interfaces not included in docs 2020-11-27 14:30:01 +00:00
baldurk 6c26562201 Remove duplicate documentation entry for GlobalEnvironment 2020-11-27 14:19:33 +00:00
baldurk c27c714677 Fix compilation on stable builds 2020-11-27 11:08:06 +00:00
baldurk 16b2ccc670 Fix preprocessing empty filenames in #line statements 2020-11-27 09:50:35 +00:00
baldurk b8f7029d59 Refactor chunk-allocator to two level pool and allocator
* This fixes a bug with granular command buffer resetting. On vulkan we assume
  each command buffer owns the entirety of the pages it uses, so they can be
  reset all together. However there's nothing to stop an application from
  allocating from the same pool on the same thread interleaved to two command
  buffers. It's unexpected because of the threading rules but perfectly legal.
* In this case we need to ensure that the command buffers have disjoint sets of
  pages because they may not be reset together and one may be in used while
  another is reset and even re-recorded over. This can't be achieved with a
  single allocator, so instead we split the pool (that owns/provides/frees
  pages) from the allocator (that grabs whole pages and suballocates for
  chunks).
2020-11-26 11:39:28 +00:00
baldurk 593a903cf1 Enable sRGB framebuffer immediately on GL output window 2020-11-26 10:26:37 +00:00
baldurk 3f394aa5df Handle multiple pages in a row being too full
* When resetting pagesets in a granular fashion from the chunk allocator, it's
  possible to almost (or completely) exhaust a page but not have it be bumped
  out of the free list, then one more new full free pages is pushed. When that
  free page is exhausted we'll retire it then assume the next one is usable -
  but it is still not valid. We need to loop until we find a page with enough
  space.
2020-11-25 16:56:16 +00:00
baldurk ecafa4f129 Tweak lock order to avoid a deadlock during capture
* During capture we hold the transition lock for writing, so we need to try to
  lock that first (if we're going to) before locking the queue's lock. Otherwise
  another thread could come in and get the queue's lock while we're holding the
  transition lock, then we deadlock against each other.
2020-11-25 14:06:35 +00:00
baldurk 883e023259 Avoid use of EXT_direct_state_access in tests
* Mesa doesn't implement the EXT version, only the KHR version
2020-11-24 16:47:35 +00:00
baldurk abf7e3bd90 Only declare half type if shaderFloat16 is supported
* Without this, the 16-bit storage only refers to ints (if that feature is
  available).
2020-11-24 16:44:08 +00:00
baldurk d3013af91c Fix annotations on output storage buffer for math operations 2020-11-24 16:43:46 +00:00
baldurk a34d7b1965 Don't bind Qt signals multiple times for custom paint widgets 2020-11-24 16:29:36 +00:00
baldurk 0e94699156 Don't add fragment execution mode for compute-shader math pipeline 2020-11-24 16:29:18 +00:00
baldurk c9f1c9ea2e Update to AGS 6.0.1 2020-11-24 16:12:20 +00:00
baldurk 7a6b044f10 Use comparison state not shadow sampler type for pipeline state 2020-11-23 15:19:24 +00:00
baldurk 8d4b45cda3 Fix paramref documentation reference 2020-11-20 18:15:00 +00:00
baldurk efac5ad70a Disable runtime and security checks in development builds
* This provides a decent speed boost and these have never caught any issues
  before. Asan/gflags/valgrind etc do a better job of this when needed.
2020-11-20 17:02:33 +00:00
baldurk 883000009d Ensure ResourceId declares all operators
* This improves things in the MSVS debugger which otherwise sometimes complains
  of no suitable copy constructor for ResourceId
2020-11-20 17:02:33 +00:00
baldurk 58e16414e0 Add a number of control functions to the Qt python interface 2020-11-20 17:02:33 +00:00
baldurk f0d00b5ad4 Don't allow command pool/allocator reset until capture is finished
* Even after transitioning to background capturing we can't allow reset or else
  we could record over chunks that we have yet to write to disk.
2020-11-20 13:10:38 +00:00
baldurk bd9d88b328 Add missing includes 2020-11-19 17:34:11 +00:00
baldurk 23e66418d9 Compile fixes on linux 2020-11-19 16:51:20 +00:00
baldurk ee0267d741 Fix missing sRGB conversion of clear background color 2020-11-19 14:47:11 +00:00
baldurk 3f5a911483 Refactor CustomPaintWidget to handle widget recreation internally
* This allows us to expose to to python as a easy-to-use "replay output ready"
  widget.
2020-11-19 14:47:11 +00:00
baldurk 1dc1b4d167 Add some profile markers in common hotspots 2020-11-19 14:47:11 +00:00
baldurk d0bf0f6eab Add Superluminal PerformanceAPI annotation support 2020-11-19 14:47:10 +00:00
baldurk ef0b3fe8a1 Add virtual destructor 2020-11-18 19:14:35 +00:00
baldurk 916c431dfa Compile fixes 2020-11-18 19:05:03 +00:00
baldurk 0aefcced95 Add a small interface into Qt widgets to our own python wrapping
* This by no means replaces PySide2, but it allows python extensions to write
  simple UIs without needing to rely on PySide2, which might not be available
  (generally all windows builds have it as well as recent binary linux builds,
  but local windows builds may not and most linux builds probably won't).
2020-11-18 18:21:20 +00:00
baldurk ab2f4e4046 Fix exception handling in wrapped python callbacks 2020-11-18 15:41:20 +00:00
baldurk 91d8c30cd3 Fix python object conversion for NULL QWidgets 2020-11-18 13:11:58 +00:00
baldurk a457389937 Thumbnails with automatic scale shouldn't always be linear sampled on GL 2020-11-16 18:33:35 +00:00