Commit Graph

755 Commits

Author SHA1 Message Date
Jake Turner 076b2827c6 Fixed unused variable warnings when compiling with VS 2022 compiler
Debug & Release builds for renderdoc.sln and demos.sln
2021-07-28 11:06:53 +01:00
baldurk d0accc409b Rename 'name' member of ActionDescription to 'customName'
* This is a deliberate break of compatibility since the field is now often
  empty, for non-markers. This means code will get a more explicit error when
  the name is being referenced, so it can be updated to fetch the name it needs
  as needed.
2021-07-01 15:15:05 +01:00
baldurk 7149302680 Rename 'draw' or 'drawcall' to action
* There's not a good accepted terminology for this kind of event, and for
  historical reasons 'drawcall' has been the accepted term, even though
  that can be quite confusing when a dispatch or a copy is a 'drawcall'.
* This is particularly highlighted by the event browser filters where
  $draw() includes draws and dispatches, but $dispatch() only includes
  dispatches, it's hard to intuitively understand why $draw() matches all
  of these calls.
* As a result we've defined the term 'action' to cover these types of
  events in the same way that we defined 'event' in the first place to
  mean a single atomic API call.
2021-07-01 15:15:05 +01:00
baldurk 2af1ac20c9 Add important tagging to parameters in D3D11 2021-07-01 15:15:02 +01:00
baldurk cf78735861 GetLiveID should respect replacements. Closes #2300
* This ensures we use the up to date edited pipeline for e.g. pipeline-based
  shader disassembly.
2021-06-28 13:10:11 +01:00
baldurk d8d6557feb Add support for file includes from custom shaders. Closes #2275 2021-05-17 13:47:58 +01:00
baldurk 46e1f84f2e Fix memory leak with double-duplicate of structured object 2021-05-13 15:47:54 +01:00
baldurk 2e0af1e3ca Fix string issues 2021-04-27 17:13:18 +01:00
baldurk 96afe77914 Disable hover pipeline thumbnails on remote replay
* Most remote replay links are slow enough that the lag introduced by
  synchronously fetching and displaying these thumbnails would be annoying for
  simple mouse-over scenarios.
2021-04-22 15:52:14 +01:00
baldurk 5b52bd7724 Treat API as unsupported if no frame capturers handle it. Closes #2222
* This is a bit coarse, as e.g. if you have one window that is unsupported on an
  API and another that is this will treat both as supported even if the active
  window doesn't support capturing. This is an unlikely case and needs a new UI
  to properly represent that.
2021-04-14 18:59:12 +01:00
baldurk c9fe986057 Print target control logging after logging has been enabled 2021-03-22 18:37:09 +00:00
baldurk aeaf26930c Implement reserved (sparse) resources on D3D12. Closes #2203 2021-03-12 18:08:23 +00:00
baldurk e5e5b064d8 Improve handling of sparse page table for awkward D3D cases
* Wrapped ranges in D3D are allowed to overflow from an image subresource into
  the miptail and set some/all of it :(.
* Also implement copy operations for D3D.
2021-03-12 18:08:22 +00:00
baldurk 145fd3c001 Compile fixes for 32-bit windows 2021-03-08 17:33:42 +00:00
baldurk 6d0ee7c2dd Explicitly instantiate serialise types 2021-03-08 17:27:13 +00:00
baldurk 4cda238c1d Fix linux compilation 2021-03-08 16:54:50 +00:00
baldurk 4afd76b669 Add API independent sparse page table tracker 2021-03-08 16:38:51 +00:00
baldurk a1e436a8e0 Add event and structured chunk for image viewer 2021-02-24 13:52:08 +00:00
baldurk d906e23f32 Store original texture details in image viewer, rather than patched
* If we need to patch the details we use that for proxy texture upload, but we
  still want to return the original details to the replay.
2021-02-24 13:52:07 +00:00
baldurk 11268b358a Remap block-compressed 3D textures to 2D arrays on GL. Closes #2186 2021-02-22 12:38:43 +00:00
baldurk bafdb16b4b Update intervals tests for better code coverage 2021-02-18 15:41:54 +00:00
Jake Turner 85ab48750e Linux compile fix after updating catch2
Add +#undef Always where it is required
2021-02-18 15:41:40 +00:00
baldurk c1c36f06ba Handle failed allocation in EXR image viewing path 2021-01-18 13:23:22 +00:00
baldurk 84dabc7b54 Update buffer size when it resizes mid-capture. Closes #2149
* We need to be careful with this, as we want to update the buffer's creation
  chunks without invalidating any data that may be present there.
2021-01-18 12:20:16 +00:00
baldurk 026da176bb Update copyright years to 2021 2021-01-13 13:56:10 +00:00
baldurk f5f9e78dde Completely remove idle background tracking of descriptors on vulkan
* In principle descriptors should be updated less often than they are
  referenced, so we used to cache tracking of them at update time to improve the
  speed that references can be processed at submit time during capture.
* Some applications though update a *lot* of descriptors *very* often,
  effectively writing all their descriptors for a frame every frame. That means
  that this background tracking is wasteful and has a big performance impact, so
  instead it's a better balance to do more work at submit time during capture.
2021-01-05 18:26:27 +00:00
baldurk 523af0f2b4 Ensure replay controller only gets deleted via Shutdown() 2020-12-16 14:42:20 +00:00
baldurk 3aaccc4fda Use rdcfixedarray in parameters for functions instead of C arrays
* This maps better to tuples in python
2020-12-15 22:52:38 +00:00
baldurk 6b8ce92d88 Clean up docstrings in python interfaces to be strictly typed/formatted
* Also added a script that can run as part of CI to verify that the docstring
  matches, by generating a regex from the docstring documented parameter types
  and return type and making sure we find a match within the C headers. This
  ensures all parameters are documented with the right types, no extra
  parameters are documented, and the return type is correct.
* The script also checks proper scoping so that if qrenderdoc docstrings
  mention a renderdoc type, they need to scope it properly.
2020-12-07 17:44:51 +00:00
baldurk e5f4ca7bb8 Remove use of const char * in public API and OS specific where possible
* This prevents unnecessary conversions back and forth between rdcstr and const
  char * when going through interfaces. In the OS specific layer this is rarely
  an issue because most of the implementations don't convert to rdcstr, but it
  is convenient to be able to pass in an rdcstr directly. The few cases where
  there's an unecessary construction of an rdcstr is acceptable.
* A couple of places in the public API need to return a string from a global
  function, so can't return an rdcstr due to C ABI, so they still return a const
  char *.
* Similarly const char * is kept for logging, to avoid a dependency on rdcstr
  and because that's one place where unnecessary conversions/constructions may
  be impactful.
2020-12-07 17:44:50 +00:00
baldurk 3cd10c9ed0 Disable crash reporting in edge 2020-12-07 16:35:05 +00:00
baldurk c27c714677 Fix compilation on stable builds 2020-11-27 11:08:06 +00:00
baldurk d0bf0f6eab Add Superluminal PerformanceAPI annotation support 2020-11-19 14:47:10 +00:00
baldurk 03b7229bad Support choosing multiview viewport in vertex debugging on vulkan 2020-10-28 13:34:08 +00:00
baldurk 40002634ad Fix order of operations error when shutting down remote replay 2020-10-28 12:08:36 +00:00
baldurk c468dafedc Don't stringify ResourceIds in structured data
* Users should stringify the actual value themselves if so desired. This reduces
  the number of string allocations in the structured data since ResourceIds are
  common.
2020-10-27 15:15:19 +00:00
baldurk 935cb113ed Add new string type rdcinflexiblestr specifically for structured data
* This is a string type which heavily optimises for immutability and minimal
  storage. It only contains one pointer to the string data and always
  reallocates on modify. For compile-time literals it doesn't modify or
  allocate.
* On x64 we use the top bit in a tagged pointer to store a flag of whether it's
  heap or literal, on other platforms it uses a separate field (meaning another
  pointer sized value effectively, including padding).
* This is best for structured data which tends to use a lot of immutable strings
  for type/name information, and only a few for actual string data (which are
  only allocated once and aren't modified after that). Similarly we rarely want
  to know only the size of any of these strings, we want the whole string so not
  explicitly storing the size is not a big deal.
* Overall this reduces SDObject from 128 bytes to 80 bytes.
2020-10-27 15:15:19 +00:00
baldurk c58f3edafa Support lazy-generating structured data objects for large arrays
* For certain very large arrays it can be nice to defer generation of structured
  data until it's needed, since often maybe only a handful of elements may be
  needed (or commonly none at all).
2020-10-27 15:15:19 +00:00
baldurk 394896a3c9 Hide list of children completely in structured data
* This makes it easier to enforce object ownership, as well as gives us options
  for e.g. generating structure data on demand lazily.
2020-10-26 10:24:47 +00:00
baldurk 117e16041a Add an error message and don't add child process for invalid ident 2020-10-26 10:24:40 +00:00
baldurk 632e9302b6 Cache whether chunks are from an allocator
* If chunks come from an allocator they can't be safely deleted because the
  allocator may have been reset and recorded over where these chunks were with
  other data. Fortunately we don't need to do anything to delete them, so
  storing the allocator status up front is sufficient.
2020-10-20 16:12:45 +01:00
baldurk 8f6359059b Make more config flags non-debug.
* Only performance-sensitive flags should be debug only. Otherwise there's no
  strong reason to limit these to non-official builds.
2020-10-01 17:48:35 +01:00
baldurk d863885373 Disable KHR_buffer_device_address on AMD windows for now
* It seems to be broken at the moment unfortunately, at least for our internal
  use cases (shader debugging and bindless feedback)
2020-10-01 17:48:35 +01:00
baldurk 0ed941bec2 Don't display window cycling message on platforms without keyboard input 2020-09-17 17:23:25 +01:00
baldurk 78f1f8f3d1 Remove volatile from Atomic parameter declarations
* This was leaky from windows' InterlockedIncrement etc declarations, and is not
  necessary.
2020-09-09 16:40:04 +01:00
baldurk afe3bee92d Only lock in resource manager while capturing
* On replay currently we only have single-threaded access so the lock is just
  overhead
2020-09-03 18:08:39 +01:00
baldurk 54286833bf Switch some maps to unordered_map where we only use them for lookups 2020-09-03 18:08:35 +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 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 684290c475 LZ4 compress embedded diagnostic log 2020-08-27 16:02:18 +01:00