Commit Graph

164 Commits

Author SHA1 Message Date
baldurk d47e79ae07 Update copyright years to 2023 2023-02-01 12:23:32 +00:00
baldurk fee0218a33 Fix direct heap access not being displayed in D3D12 pipeline. Refs #2801 2022-12-21 23:03:39 +00:00
baldurk 153bc31a92 Fix off-by-one when searching for re-used arrays 2022-11-17 18:22:57 +00:00
baldurk 61fc2f82f2 Improve iteration for large unused descriptor arrays in D3D12 pipeline 2022-11-09 17:51:33 +00:00
baldurk 84c824e573 Tweak colour used for 'view details' highlighting in pipeline state view
* This helps those who have chosen the dark theme where rich resource text uses
  the default window text colour assuming it's a contrasting colour against the
  background (except when highlighted).
2022-08-18 16:39:42 +01:00
baldurk c387234c7f Fix compile error 2022-08-03 22:37:58 +01:00
baldurk 234fdc886b Fix signed compile warning 2022-08-03 22:23:38 +01:00
baldurk e1cc50dd08 Match "arrayed" bindings correctly in D3D12 2022-08-03 17:44:11 +01:00
baldurk 5d51b524c6 Fix interpreting and declaring buffer formats that include pointers 2022-07-25 10:08:59 +01:00
baldurk fda5c4819a Scroll shader viewer to entry point file & line using debug info 2022-07-22 16:10:59 +01:00
baldurk 31feedd16d Remove ShaderConstantDescriptor, inline into ShaderConstantType
* This struct was redundant isnce it was only ever used in the type and not
  meaningfully accessed directly.
2022-05-20 14:15:31 +01:00
baldurk 43fa3cd94b Use BufferViewer for viewing constant buffers
* Unifying these views means that constant buffers have all the same
  reformatting and it avoids having multiple paths for what is now effectively
  the same control (a buffer can either have fixed data, repeating data, or
  both)
2022-05-20 14:15:30 +01:00
baldurk a36516c8a5 Explicitly handle unbounded arrays and display declared fixed vars
* GL and Vulkan allow buffers to have fixed variables before a trailing AoS
  unbounded array. These fixed variables can't be easily displayed in a table
  and previously we skipped them. Now we display these in a tree format.
* We also support formats which don't have an unbounded array at all and display
  these just with the tree. This will allow the BufferViewer to subsume the
  capabilities of the ConstantBufferPreviewer (though it needs to handle opaque
  non-buffer-backed variables, and slot-following).
2022-05-20 13:37:26 +01:00
baldurk 97a3943cdd Use packing rules when generating format strings for structs
* This allows the calling code to pass a hint of what packing is known or likely
  to be used, meaning less generated manual offsetting/padding when the implicit
  rules cover it.
2022-05-20 13:37:26 +01:00
baldurk cb49f21f2a Support enums in buffer formatter 2022-05-20 13:37:26 +01:00
Benoit Dumesnil dfd00b1e38 Add support for shader model 6.6 bindless resources. 2022-03-21 11:30:47 +00:00
baldurk fcdea67879 Update copyright years to 2022 2022-02-17 17:38:32 +00:00
baldurk 888676ecc7 Fix crash reading D3D12 pipeline state from vulkan for compute selector 2021-11-17 13:07:12 +00:00
Steve Karolewics ec785ba167 Add ability to debug compute shaders by dispatch thread ID
In some cases it is easier to know the dispatch thread ID you want to
debug rather than the group/thread IDs. This change adds a new window
when the debug button is clicked, to allow you to specify which thread
to debug in the most convenient way.
2021-10-19 18:14:53 +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 7700c2a80d Don't trust presence/absence of raw buffer flag on D3D12 descriptors 2021-09-24 13:23:32 +01:00
baldurk c3a93bf61b Fix potential crash reading empty descriptor array on D3D12 2021-09-17 12:50:05 +01:00
baldurk d0acc2a349 Fix display of typed buffers in D3D pipeline state viewer 2021-07-28 11:37:13 +01:00
baldurk 46266a9dd6 Implement bindless feedback for DXBC shaders on D3D12 with patching 2021-07-15 16:41:23 +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 44431cd536 Explicitly mark depth states as 'disabled'. Closes #2296
* On all APIs when depth is disabled the writes are skipped as well. Explicitly
  set the function and write state to say that they are disabled.
* This also papers over a weirdness on D3D11 which has confused a couple of
  people, where the retrieved desc with GetDesc() on a state object can be
  different to the one it was created with when you set ignored parameters -
  like the depth function with depth disabled.
2021-06-22 10:37:49 +01:00
baldurk 71b6e2b321 Speculative crash fix, protect against invalid indices in cbuffer tag 2021-06-15 16:24:25 +01:00
baldurk 270d4e5b07 Add resource usage entries into context menu in pipeline state viewer 2021-04-19 16:44:19 +01: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 9290ed926b Display VRS state in D3D12 pipeline state viewer 2021-02-10 14:20:46 +00:00
baldurk 924c513d70 Fix cases where empty-range ellision in D3D12 pipeline state breaks
* We can't assume ranges in root signature elements map to shader binding
  arrays, there is a many:many relationship (one range can have multiple
  elements, or only part of an array, one array can have multiple ranges).
2021-01-15 14:57:34 +00:00
baldurk 6d1e37de3a Display bind array index in register name on D3D12 pipeline state 2021-01-15 14:14:50 +00:00
baldurk 026da176bb Update copyright years to 2021 2021-01-13 13:56:10 +00:00
baldurk fd1b051d2c Add helper for selecting sample mask, which varies in location by API 2020-12-18 14:05:54 +00:00
baldurk 7c35bdb174 Omit large ranges of empty resources in arrays in D3D12 pipeline state 2020-12-17 15:20:50 +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 58e16414e0 Add a number of control functions to the Qt python interface 2020-11-20 17:02:33 +00:00
baldurk 695ffaaf24 When viewing a texture from pipeline state, default to view typecast 2020-10-30 16:28:03 +00:00
baldurk 55c57f7e89 Display stencil values in binary and decimal in tooltips. Closes #2052 2020-10-01 15:56:52 +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 56f1b8c4e8 Fix size clamp being backwards for D3D12 index buffers 2020-07-21 19:57:09 +01:00
baldurk ed7d774fd4 Fix crash opening non-buffer-backed unused constant buffers 2020-06-29 13:10:50 +01:00
baldurk d4ddb565d0 Add a per-shader debuggable flag to allow finer grained status
* E.g. on D3D12 we can debug DXBC shaders but not DXIL shaders. On vulkan this
  will allow us to have the UI work better when encountering shaders with
  unsupported capabilities or extensions.
2020-06-18 17:22:45 +01:00
baldurk a0a373a8e1 Fix handling of buffer truncation and zero-sized buffers 2020-05-29 17:26:29 +01:00
baldurk ad86556ceb D3D12CBufTag should refer to reflection-based index, not root sig index 2020-05-19 16:40:11 +01:00
baldurk f2d69e9f9e Fix handling of ResourceMinLODClamp for cubemap textures on D3D12 2020-04-20 11:05:40 +01:00
baldurk 2980742a3a Add wrapper struct TextureSwizzle4 to be more swig-friendly
* Swig doesn't like having fixed C arrays of enums, so wrap it in a struct to
  make it more clear.
2020-04-17 16:53:54 +01:00
Steve Karolewics 1137c4694c Make D3D12Pipe root element centric instead of shader centric
D3D12Pipe now stores an array of root elements, each one corresponding
to a root element or range in the root signature. Migrated usage in the
D3D12 pipeline state viewer and PipeState retrieval of resources.
Restricted number of resource array textures displayed in the texture
viewer to prevent app hangs.
2020-04-08 18:38:38 +01:00
baldurk 936e6372cb Remove use of 3rdparty/ prefix from includes
* We instead always have 3rdparty/ in the relevant include search paths and rely
  on that. Each library still has its own unique base dir within 3rdparty to
  clarify where the include is coming from.
2020-03-11 18:00:53 +00:00
baldurk a18716e63d Fix crash if no drawcall is selected when exporting pipeline state 2020-03-05 11:15:48 +00:00