Commit Graph

11390 Commits

Author SHA1 Message Date
baldurk 54286833bf Switch some maps to unordered_map where we only use them for lookups 2020-09-03 18:08:35 +01:00
baldurk ec023ac660 Avoid unnecessary re-layouts when populating thumbnails 2020-09-03 18:07:47 +01:00
baldurk c39a0bae5f Re-jig Following to hold a reference to TextureViewer
* This simplifies the code flow because we can be sure that we always have
  cached read-only/read-write resources (this was true before, but now it's
  clear).
2020-09-03 18:07:47 +01:00
baldurk 4dbfca2390 Add std::hash overload for ResourceId to allow use in hashmaps/hashsets 2020-09-03 18:07:46 +01:00
baldurk 3ac8746b01 Auto-size log view columns by hand
* Using the auto-resizing mode of RDHeaderView resizes based on the whole column
  every time, which is wasteful when only a few lines are added to a large log.
2020-09-03 17:45:41 +01:00
baldurk d71d275dc4 Don't re-read entire logfile every time, only read from last position 2020-09-03 17:45:41 +01:00
baldurk da0c836aef Cache bufferviewer column width calculation 2020-09-03 17:26:48 +01:00
baldurk 31b81ade3c Switch descriptor refs lock back to normal lock
* Unfortunately some programs have extreme contention on this lock due to
  multithreaded descriptor set writes enabled by UPDATE_AFTER_BIND.
2020-09-02 10:22:11 +01:00
baldurk 55febc88c4 Check shiboken2's python version matches python version we're linking to
* We also reverse Python_ADDITIONAL_VERSIONS so it finds the newest one. It
  doesn't seem like there's a way in general to make these match, so we hope
  that searching from newest to oldest will find the same in both - or at least
  it makes it easier for the user to fix by installing the newest in both.
2020-09-01 17:39:05 +01:00
baldurk 3b9b0d8887 Check that both pyside2 and shiboken2 are found
* It seems like packaging of these two is inconsistent, and pyside2 dev files
  being available doesn't always imply shiboken2 dev files are present. Be safe
  and check both.
2020-09-01 17:20:52 +01:00
Andreas Hollandt f32262ad24 support Intel performance counters on Windows 2020-09-01 16:59:08 +01:00
baldurk 10878bb5a9 Never clamp to an invalid index even for invalid inputs
* This prevents a crash as at least index 0 is always a valid scalar lookup.
2020-09-01 16:39:19 +01:00
baldurk 83f7a26ee9 Query which shader disassembly formats require a pipeline
* This allows us to be a bit more friendly in the UI when we don't have a
  particular pipeline associated with a shader.
2020-09-01 14:03:59 +01:00
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