Commit Graph
640 Commits
Author SHA1 Message Date
baldurk 99adcc614f Allow multiple remote servers on one hostname, on different ports
* When a port is specified (with the usual :12345 suffix on the hostname) we use
  that for remote replay connections. We disable target control enumeration
  since that requires a port _range_ and captured applications self-assign those
  ports. Those can still be accessed via a normal unsuffixed remote specifier -
  even if there is no remote server running on the default port.
2022-02-15 17:15:48 +00:00
Remi Palandri d1858f4479 add support for VK_QCOM_FDM_offset 2022-02-14 21:02:27 +00:00
Remi Palandri 3d07a0b568 lazily fetch subsamples in MSAA textures 2022-02-10 10:24:17 +00:00
baldurk 6ab4c1ad74 Add support for VK_KHR_fragment_shading_rate. Closes #2426 2022-02-04 16:45:15 +00:00
Leonard Tsai f7c34cdb0c Support VK_KHR_depth_stencil_resolve attachment in pipeline state view
Depth stencil resolve attachments were not being serialized and exposed in the pipeline state view. This change serializes the attachment id for the depth-stencil resolve attachment so that it can show up in the pipeline state view.

Update name of depth/stencil in pipeline viewer

Fix clang formatting

Update struct type
2022-02-03 18:49:10 +00:00
baldurk e42b0ff2ca Refactor ShaderVariable use and non-32-bit precision. Closes #2466 2022-02-02 15:00:43 +00:00
baldurk 3ac4bd0ebd Refactor custom shaders to abstract binding differences. Closes #2458
* Newly written shaders and any updated shaders can now use pre-defined macros
  to abstract away binding differences between APIs, so custom shaders will be
  more portable in particular shaders written in HLSL for D3D or GLSL on OpenGL
  won't break on vulkan because they refer to incorrect binds.
2022-01-31 19:14:08 +00:00
baldurk 9d0511bf44 Ignore typecast for pixel context view, on custom shaders. Closes #2459
* When we've applied a custom shader we're now displaying from our internal
  custom shader output texture which means we need to ignore some display
  properties. These are already ignored in RenderTexture where the custom shader
  is applied, but we also need to ignore it in the context display.
2022-01-28 13:09:31 +00:00
Remi Palandri c86261e776 add gl_ViewIndex to PS-debugprintf 2022-01-25 19:49:34 +00:00
Remi Palandri b63033c5e6 add serialization for shader messages in VKPipe 2022-01-25 09:07:08 +00:00
baldurk 089126c34b Add a new in-app API function ShowReplayUI to raise the UI window
* This is not guaranteed to work, e.g. on windows where for good reason
  background windows can't necessarily raise themselves.
2022-01-12 11:24:22 +00:00
baldurk c8c3cc35fc Fix crash in rdcarray comparison 2021-11-24 13:02:56 +00:00
baldurk c413e5786a Add some unit test coverage of basic types 2021-11-19 14:55:15 +00:00
Mikkel Gjoel 41d39b58ce Pass range-min/max to ApplyCustomShader
Adding rangeminmax to globals, snippet support and updated docs to match

Fixes bug in replay_output.cpp, causing a crash due to missing texhandle
2021-11-03 20:26:18 +00:00
Mikkel Gjoel 90cad57410 ApplyCustomShader accepts TextureDisplay instead of extracted data 2021-11-01 11:49:05 +00:00
baldurk d00556dbb5 Support VK_EXT_dynamic_state2 & VK_EXT_vertex_input_dynamic_state 2021-10-22 16:22:42 +01:00
baldurk c070dfd847 Clarify root signature index in D3D12 pipeline view
* Internally we split ranges, but for display we should use the original root
  signature index.
2021-10-04 18:39:33 +01:00
baldurk c24dd2e7aa Use shader stage to properly disambiguate entry points on vulkan
* It's possible to have two entry points in a SPIR-V module both named "main" as
  long as they have different stages.
2021-10-04 17:03:27 +01:00
baldurk 25b17c8093 Add R/W locking around access to crash handler. Closes #2376
* The crash handler gets destroyed and recreated when we need to change creation
  parameters, and this races against anything else trying to use it to register
  or unregister memory regions.
* In partcular when initialising the replay we recreated the crash handler right
  after kicking off the GPU enumeration.
* We add a read/write lock so there's no significant added contention on most
  paths (even though it's not really high traffic in any case) to prevent this
  kind of problem in future.
2021-09-29 10:54:29 +01:00
baldurk 1b42dcc05f Fix crash returning serialiser's structured file to dummy driver
* If we hit a fatal error during initialisation, the structured file pointer
  still points at the temporary serialiser's structured file. It's not until we
  finish loading that we swap it into the driver-stored file that we can safely
  return and detach ownership of.
2021-09-17 14:29:05 +01:00
baldurk 36e17be519 Add some extra fatal error checks during early startup 2021-09-16 11:01:34 +01:00
baldurk f45f8eac43 Don't do anything in PickVertex if there are no vertices 2021-08-24 17:46:00 +01:00
baldurk cab76389c7 Add fatal (device lost/out of memory) error checking to backends
* We check for errors to try to catch them as soon as possible, and early-out
  return even in the middle of functions. The idea being even if this leaves us
  in a weird state we won't get called again as the replay controller will
  detect the error and substitute out a dummy driver.
2021-08-18 20:12:07 +01:00
baldurk 620e75c2a1 Add a system for backends to handle device lost/OOM errors and report it
* The UI will become non-functional and the backend will be replaced with a do-
  nothing one that keeps things alive without needing error bulletproofing
  everywhere in the real backend.
2021-08-18 20:12:07 +01:00
baldurk 45a8a63474 Dynamically allocate shaders and structured files to allow detaching
* These are the only handles returned up by reference from the replay driver,
  dynamically allocating them means that we can steal/move the ownership of
  these and keep them valid even after the replay driver is destroyed.
* Note - ShaderDebugTrace is also returned by reference but it is already
  dynamically allocated like this.
2021-08-18 20:12:06 +01:00
baldurk c319ac0234 Store API pipeline states in the replay controller
* Instead of storing the API pipeline states in the replay driver and returning
  pointers, we store them in the replay controller and write into it from the
  replay driver.
* This will allow us to remove the replay driver and still keep any previously
  obtained references/pointers to the pipeline state valid.
2021-08-18 20:12:06 +01:00
baldurk 46266a9dd6 Implement bindless feedback for DXBC shaders on D3D12 with patching 2021-07-15 16:41:23 +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 562905611d Update fake markers to work with new event browser model
* Fake markers now need a real event ID. We don't want to have to remap all
  events in a capture between UI and replay driver, so instead we assign non-
  contiguous events above the normal range and expect the UI to handle it.
2021-07-01 15:15:01 +01:00
baldurk 4483c982c9 Remove "API Events" drawcalls
* All drawcalls now contain events, even markers. We no longer add virtual "API
  Events", it gets added to the marker pop or command buffer close.
* Note that we will still default filter out marker pops, meaning this is a
  slight behaviour change as API events will no longer be easily selectable.
  However we're adding the ability to show all events which will be preferred.
2021-07-01 15:15:00 +01:00
baldurk aecf687098 Change event browser model to be event-based 2021-07-01 15:15:00 +01:00
baldurk bbbdba1728 Fix fallback discard pattern overwriting array bounds 2021-06-25 20:18:50 +01:00
baldurk c73d8c41a2 Don't replay when creating outputs
* This is only necessary if the overlay refresh will actually do work, but when
  an output is created it can't.
2021-06-17 15:10:42 +01:00
baldurk 1ed4b561e6 Fix discard patterns to work correctly with multisampled UINT textures 2021-05-27 14:18:05 +01:00
baldurk d8d6557feb Add support for file includes from custom shaders. Closes #2275 2021-05-17 13:47:58 +01:00
baldurk 4eb2621bca Fetch shader messages from DebugPrintf 2021-05-11 16:15:31 +01:00
baldurk e78a48bfc3 Implement proper out-of-bounds value filling for vulkan post-vs fetch 2021-04-23 19:07:31 +01:00
baldurk eac94b74f6 Allow cbuffer previewer to apply custom format to non-buffer-backed CBs
* This in particular means push constants and specialization constants on vulkan
  but also applies to root-value cbuffers on D3D12.
* GL bare uniforms are not feasible to expose in this way.
2021-04-14 18:59:12 +01:00
Jake Turner ddd6d2f86f Apple set the name of the python libs
Required to make RENDERDOC_RunFunctionalTests try to run on Apple
2021-03-26 09:39:55 +00:00
Jake Turner 30ca842e98 On Apple use the view object as the window handle
The view is constant per window, the layer can change.
The layer is constant for Vulkan windows
The layer changes for GL windows
2021-03-25 09:36:33 +00:00
baldurk d6e88ae4fa Remove redundant callstack member in APIEvent
* We already link to the chunk index and the chunk metadata contains the
  callstack, there's no need for a duplicate copy when there may be many
  APIEvents in a capture
2021-02-24 13:52:07 +00:00
baldurk 30dd13feb8 Pull index byte width and topology out of drawcall state
* These are treated as state on most APIs, only GL treats it as a drawcall
  parameter.
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 bb6b92f9a6 Compile fix for linux 2021-02-18 16:22:17 +00:00
baldurk 9232921e17 Add some missing test coverage of rdcstr 2021-02-18 15:41:55 +00:00
baldurk c3769ce569 Remove tautological test summing empty array
* We test above that the array is truly empty, if that passes the sum is
  superfluous.
2021-02-18 15:41:54 +00:00
baldurk 9290ed926b Display VRS state in D3D12 pipeline state viewer 2021-02-10 14:20:46 +00:00
baldurk 58ef496c8a Conservatively clamp number of samples when saving texture
* No actual texture should be returned with 0 samples but if there are problems
  we want to avoid crashing by dividing by 0 later.
2021-01-27 00:29:46 +00:00
baldurk 026da176bb Update copyright years to 2021 2021-01-13 13:56:10 +00:00