Commit Graph

11377 Commits

Author SHA1 Message Date
baldurk 6b2f763bfa Ignore sets of empty name strings on resources 2020-09-01 11:09:03 +01:00
baldurk 865f9002da Keep remote server connection alive if it disconnects mid-replay
* We need to keep it alive until we've shut down the replay controller, and we
  keep that alive until the user explicitly closes the capture.
2020-09-01 11:08:01 +01:00
baldurk 9f5e6a725b Batch calls to UpdateBackgroundRefCache on descriptor copies 2020-09-01 10:42:42 +01:00
baldurk eb575e12ef Don't hook vulkan-1.dll, prevents layered implementations from recursing 2020-09-01 10:36:28 +01:00
baldurk d6b36f7abf Fix handling of saving cubemaps to disk in GL
* GL needs special handling because cubemaps need to be treated partially as
  arrays to select the target, then not as arrays when the data is retrieved.
2020-09-01 10:32:48 +01:00
baldurk e61794dd88 Don't forcibly change tab in texture viewer when one is closed 2020-09-01 10:27:45 +01:00
baldurk b5a6796240 Allow qrenderdoc command line python scripts to call sys.exit()
* Previously we'd catch the sys.exit "exception" and print it then show the
  window.
2020-08-31 13:10:38 +01:00
baldurk d5f45f6476 Allow overriding the python install on windows
* Also document the new requirement for os.add_dll_directory as of python 3.8
2020-08-31 12:38:49 +01:00
baldurk 8b935a1c11 Wrap and serialise calls through ID3D12CompatibilityDevice 2020-08-31 10:51:32 +01:00
baldurk 052cd255e8 Don't initialise AMD extensions during capture 2020-08-31 10:43:19 +01:00
baldurk 0ca90bd34e Fix variable descriptor count test 2020-08-31 10:10:51 +01:00
baldurk 4e8f96ac3f Re-enable chunk allocators on vulkan, reset individual pages
* On vulkan command pools aren't necessarily reset often or at all, individual
  command buffers are. So the chunk allocator needs to support freeing subsets
  of pages. When a command buffer ends we force that page to finish up and store
  a list of the pages the command buffer used, which can then be reset back when
  the command buffer is reset.
2020-08-28 20:54:19 +01:00
baldurk 05eef7b99a Temporarily disable chunk allocator on vulkan until reuse is fixed 2020-08-28 19:27:00 +01:00
baldurk 30ecf66cca Fix handling of variable descriptor counts to not allocate maximum size
* We previously ignored the variable descriptor size allowed by descriptor
  indexing,
2020-08-28 19:06:06 +01:00
baldurk 75f2dc119c Fix missing free() calls for miniz allocations 2020-08-28 19:06:06 +01:00
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