Commit Graph

11362 Commits

Author SHA1 Message Date
baldurk 0e5b08d0e1 Fix test compilation on linux 2020-08-28 19:06:06 +01:00
baldurk 482bdbae6f Allow building from a custom Qt more easily on windows
* Setting RENDERDOC_QT_PREFIX64 or RENDERDOC_QT_PREFIX32 environment variables
  pointing to a Qt install root will use that instead of the built-in Qt.
2020-08-28 19:06:06 +01:00
baldurk 716c72f399 Remove custom FindPySide2.cmake, rely on normal packaging
* It seems PySide2 packaging is much more stable now, so we can generally rely
  on the distro packages.
2020-08-28 19:06:06 +01:00
baldurk 285c4b95df Add Qt5Qml.dll stub for 32-bit pyside2 distribution
* When the pyside2 we ship was built it accidentally included a small dependency
  on Qt5Qml, which we don't distribute so the pyside2 libraries wouldn't load.
* We can generate a tiny stub with the right exports and load it manually from
  the PySide2 folder on 32-bit qrenderdoc builds to allow pyside2 to load
  subsequently. The stub source is tiny, and added alongside.
* Putting it in the PySide2 folder means that even if someone puts RenderDoc's
  build folder in their PATH, our stub Qt5Qml won't break anything because it
  won't be loaded. If they put PySide2 in the PATH it might, but then it's their
  fault!
2020-08-28 19:06:05 +01:00
baldurk 0c1b304917 Verify JSON documents being saved don't contain byte arrays
* Newer Qt versions will base64 the byte arrays even if we've already base64'd
  them so they're safe. To prevent this we explicitly convert to QString
  afterwards.
2020-08-28 19:06:05 +01:00
baldurk 02b7c1bfe5 Update toolwindowmanager to 7974fc8 2020-08-28 19:06:05 +01:00
thisisjimmyfb 80ededa2e4 whitelist GL_OES_surfaceless_context 2020-08-27 19:35:15 +01:00
baldurk 9c58c6adb2 32-bit compile fix 2020-08-27 19:34:12 +01:00
baldurk 220ee1b3e6 Ensure RDStyle sets application palette properly 2020-08-27 17:57:09 +01:00
baldurk cc41849551 Add debug verbose logging toggle to ptrace code 2020-08-27 17:38:16 +01:00
baldurk 8c4bb6610f Fix ptrace getting wrong entry point address for some ELFs. Closes #2022
* The entry point is remapped several times:
  - ELF header declares it at RVA 0x1234
  - [new in this change] The section containing that says it's at addresses
    0x1200 - 0x1500, but on disk it's actually at file offset 0x1100 meaning our
    entry point is actually 0x100 earlier, at 0x1134
  - The ASLR maps the executable section at *file offset* 0x1100 to 0xDEADBEEF00
    Importantly when file offset != base RVA, this needs to be taken into
    account.
  - Finally the entry point is at 0x34 offset into the section because it's
    mmapped, so the entry point is 0xDEADBEEF34.
2020-08-27 17:36:34 +01:00
baldurk 4c8067b65c Add special case to XML codec for embedded logfiles 2020-08-27 16:02:53 +01:00
baldurk 684290c475 LZ4 compress embedded diagnostic log 2020-08-27 16:02:18 +01:00
baldurk 680857cb0f Fix structured data conversion to preserve timestamp base
* The timestamp base is queryable from the capture file and settable too, and
  conversions preserve un-rebased timestamps. Only rebasing when loading a
  capture for replay.
2020-08-27 15:54:01 +01:00
baldurk 9583a26754 Fix typo that trashed durations and didn't convert timestamps 2020-08-27 15:13:21 +01:00
baldurk 3eaaf59319 Prefer floor rounding for Qt 5.14+ fractional DPI handling
* Non-integer DPI handling is fundamentally a broken concept, because UIs are
  essentially pixel art with some vector drawing. Rounding down half fractions
  seems to be a better tradeoff than rounding up or trying to render them as-is.
2020-08-27 13:19:21 +01:00
baldurk 6d810f2ca1 Fix naming getting muddled for indirect draws 2020-08-27 11:26:18 +01:00
baldurk 4eeaaad75f Fix event counting for single vulkan indirect multidraws. Closes #2025
* We need to count the fake indirect subcommand *before* checking if we're in
  range, otherwise replaying up to but not including the draw will miscount and
  replay the draw itself.
2020-08-27 11:26:03 +01:00
baldurk 3f63d1532d Fix extended thumbnail length not being written 2020-08-27 11:24:45 +01:00
baldurk ecbfeb7dc1 Fix linux compilation 2020-08-27 00:02:17 +01:00
baldurk 50089207c1 Fix 32-bit compile error 2020-08-26 20:56:28 +01:00
baldurk 8973ac0241 Don't serialise present chunk for glFrameTerminatorGREMEDY 2020-08-26 19:52:34 +01:00
baldurk f63a948392 Cache FBO attachments to avoid repeated query & lookup 2020-08-26 19:27:42 +01:00
baldurk 3a1b4500ee Avoid some unnecessary potentially expensive work on frequent calls 2020-08-26 19:27:42 +01:00
baldurk 022ba9ce67 Combine GL maps for looking up ID/Resource Record from resource name 2020-08-26 19:27:42 +01:00
baldurk 5e79465ab5 Avoid use of virtual function call for GetID within GL driver 2020-08-26 19:27:42 +01:00
baldurk c5887eb4e4 Reduce wasted iteration in GLRenderState::MarkDirty
* Only iterate up to the highest known bind for indexed targets, which will
  generally be low or 0.
2020-08-26 19:27:42 +01:00
baldurk 61d15e00ef Don't create empty GLRenderState for use with MarkDirty
* MarkDirty re-queries the state and doesn't use anything so it's wasted time
  initialising a massive structure
2020-08-26 19:27:42 +01:00
baldurk 55c62dd307 Serialise timestamps and durations as tick counts, and convert on replay
* When we're capturing programs with high-frequency enough API calls, the
  overhead of the math & extra function calls over Timing::GetTick() is
  measurable. Removing it and serialising pure tick based durations/timestamps
  and then converting on replay gives us identical results and saves time while
  background capturing.
2020-08-26 19:27:42 +01:00
baldurk 9fd7f447d2 Switch thumbnail to bytebuf instead of byte pointer and length 2020-08-26 19:27:42 +01:00
baldurk 51b228b042 Disable resource record chunk locking for command buffers
* The API user is supposed to lock this for us, so don't waste time locking
  ourselves.
2020-08-26 19:27:42 +01:00
baldurk 1b844d1498 Add resettable chunk allocator for recording command buffers 2020-08-26 19:27:41 +01:00
baldurk d922db6dff Fix broken re-use of resource shadow deferred ctx pointers. Closes #2023 2020-08-26 19:14:42 +01:00
baldurk 62f55a374c Add proper fence around overlay rendering command buffers 2020-08-26 18:46:56 +01:00
baldurk a457aa5a8f Fix handling of CONCURRENT swapchain images 2020-08-26 18:46:56 +01:00
baldurk f664d13bfc Clear up queue data when device is destroyed 2020-08-26 18:46:56 +01:00
baldurk 753806d526 Add a specialisation for buffer reference add/remove
* This skips some potentially expensive (and redundant) checks if the buffer is
  a view.
2020-08-25 17:24:23 +01:00
baldurk f013824f97 Cache D3D11 buffers being read-only to speed up bound-for-write checks 2020-08-25 16:16:39 +01:00
baldurk a32bf777be Add extra case to assert 2020-08-24 10:52:30 +01:00
baldurk 155d455f01 Fix typo in glClearFramebufferfv variants 2020-08-24 10:04:23 +01:00
baldurk a6871327aa GL renderbuffers do not have mips, return early from function
* Some of the other sub-functions don't handle non-texture targets
2020-08-21 11:49:44 +01:00
baldurk 409f256411 Fix event ID indexing for multidraw commands on GL. Closes #2019 2020-08-21 11:49:44 +01:00
Tim Gfrerer 07ee28c97f Allow Python 3.8 to be detected
Adds python 3.8 to the list of python 3 versions. 

Thank you so much for renderdoc!!
2020-08-21 11:07:11 +01:00
baldurk 5c0dadae84 Test that RTV descriptor copies in D3D12 are properly recorded mid-frame 2020-08-20 17:09:51 +01:00
baldurk 3e100109da Test destroying/freeing NULL handles, fix validation errors 2020-08-20 17:02:03 +01:00
baldurk 0b0beb3a20 Call virtual functions by explicit class in constructor 2020-08-20 16:11:05 +01:00
baldurk 81fbf4bcc9 Fix some dodgy memcpy calls 2020-08-20 16:11:05 +01:00
baldurk 112741a74c Remove some parameter name shadowing 2020-08-20 16:11:05 +01:00
baldurk fa24dc8872 Silence some PVS warnings 2020-08-20 16:11:05 +01:00
baldurk b5de095f53 Use explicit enum comparisons to check for empty flags 2020-08-20 15:26:02 +01:00