Commit Graph

119 Commits

Author SHA1 Message Date
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
Steve Karolewics dd69f8642a Add APIProperties for debugging and pixel history
Checks to enable debugging and pixel history are gated by the
APIProperties instead of whether the capture is D3D11. Shader
debugging for D3D12 is gated on a config option, which can be enabled
by adding "d3d12ShaderDebugging": "true" to the ConfigSettings
2020-02-12 21:58:33 +00:00
Steve Karolewics 671add4035 Fix shader debugging and pipeline viewer with constant buffer arrays
With SM5.1 and D3D12, constant buffer arrays can be declared which
are treated as an array of resources on the shader side, and a simple
collection of descriptors on the D3D12 side. DXBCDebug::GlobalState
handles the bridge between these by storing each array resource as a
nested ShaderVariable struct. Accessing the data for instructions
traverses the structure similarly. The shader viewer handles nested
resources and displays them in the appropriate tree view. In the
pipeline viewer, descriptors for CB arrays now indicate the array
index and correctly handle buffer offsets for viewing.
2020-02-11 17:10:57 +00:00
baldurk 7dd116abd4 Remove redundant/tautological comparisons identified by PVS Studio 2020-01-21 18:28:56 +00:00
Steve Karolewics bbd2a4ecb0 Implement D3D12Replay::DebugThread
Also added logic for initiating debugging in the D3D12 pipeline state
viewer. Both locations are guarded by defines for now.
2020-01-07 17:28:01 +00:00
baldurk 2916c0f9f7 Update copyright years to 2020 2020-01-06 16:20:45 +00:00
baldurk b3979262a5 Replace FormatElement with ShaderConstant/ShaderVariableType
* FormatElement is now a static BufferFormatter class to help generate and parse
  buffer formatting strings
2019-11-29 13:53:44 +00:00
baldurk db563bb0bf Refactor public interface around handling of textures
* Subresource handling is more consistent - we pass around a struct now that
  contains the array slice, mip level, and sample. We remove the concept of
  'MSAA textures count samples as extra slices within the real slices' and
  internalise that completely. This also means we have a consistent set
  everywhere that we need to refer to a subresource.
* Functions that used to be in the ReplayOutput and use a couple of implicit
  parameters from the texture viewer configuration are now in the
  ReplayController and take them explicitly. This includes GetMinMax,
  GetHistogram, and PickPixel.
* Since these functions aren't ReplayOutput relative, if you want to decode the
  custom shader texture or the overlay texture you need to pass that ID
  directly.
2019-11-26 17:38:25 +00:00
baldurk f42cb9e23c Use shader bindpoint mapping when generating HLSL shader editing stubs 2019-11-21 21:25:40 +00:00
baldurk 179dbb0e43 Display sample mask in D3D12 pipeline state 2019-10-14 14:06:42 +01:00
baldurk 59ad2ebfa2 Clear stream-out state when clearing pipeline state 2019-05-20 14:16:43 +01:00
baldurk 51c50e0da3 Localise addressing mode state display for GL
* On GL addressing modes are called wrap modes, and the wrap value is then known
  as repeat. If we don't 'localise' this then it can be confusing to show that
  it is "Wrap".
2019-05-17 16:32:55 +01:00
baldurk 96cc08b960 Rename 'show disabled' button to 'show unused' as it is clearer
* Bindings that are unused aren't disabled - they may in fact be explicitly
  enabled - but they are unused by the pipeline which is why they're hidden.
2019-05-17 16:32:55 +01:00
baldurk bbc2f47fa8 Centralise generation of buffer format strings for struct buffers
* We also fix a number of issues that could cause incorrect formats to be
  generated.
* Test cases added for D3D11/GL/Vulkan to test different struct types. These
  aren't automated at the moment because most of the code they're testing is in
  the UI itself.
2019-02-13 18:50:56 +00:00
baldurk 86ff87863e Update copyright years to 2019 2019-02-01 18:32:13 +00:00
baldurk 9443423389 Don't do expensive string work for resource rows that are hidden 2019-01-22 18:02:14 +00:00
baldurk cea0129b9a Don't completely disable tooltip on D3D12 for 'plain' resource views
* We still want the tooltip to display the resource state.
* Also add a tooltip for VBs/IBs which do have a state we want to display.
2019-01-04 16:37:23 +00:00
baldurk 6dd67d0069 Fix argument string for buffer views in D3D12 pipeline view 2019-01-03 12:22:28 +00:00
baldurk a7be02bd0b Add empty nodes to VBNodes tracking, to keep indices == vb slots
* This fixes VB highlighting when the bindings are sparse
2018-11-14 18:32:35 +00:00
baldurk bfb64300e4 Fix expansion of stream-out buffers in D3D pipeline state viewers 2018-11-01 12:23:13 +00:00
baldurk 8c3cc36e9c Fix check for undefined view format type 2018-11-01 12:23:11 +00:00
baldurk bc274b5b51 Only consider stream-out active on D3D if there are buffers bound 2018-10-25 10:49:56 +01:00
baldurk 8447e43e78 Fix panel menus 2018-10-23 15:15:39 +01:00
baldurk 94dfb9890b Allow registering window, panel and context menu items with callbacks 2018-10-23 14:23:12 +01:00
baldurk 4dd74c9290 Fix display of stream-out in D3D pipeline state viewers 2018-10-16 16:26:23 +01:00
baldurk 0282c9a685 Fix pipeline state highlighting of disabled input attributes
* Using the row index is not accurate when some input attributes are disabled,
  because they won't match up to the original index in the attributes list.
2018-10-11 11:09:36 +01:00
baldurk b91d19e316 Generate better buffer format strings when opening VB or IB buffer views 2018-10-11 11:09:36 +01:00
baldurk 5472319025 When opening buffer textures, auto-generate a reasonable buffer format. 2018-10-11 11:09:36 +01:00
baldurk d0b650778b Handle D3D12 register spaces with high values without full array size
* Technically register space values are arbitrary so the array should not be
  resized to account for all space indices, in case one is very large.
2018-09-25 17:24:01 +01:00
baldurk 76d9ddd584 Improve highlighting of unbound vertex/index buffers in pipeline state 2018-08-28 18:23:57 +01:00
baldurk 3c7b420e59 Expand SPIR-V disassemblers to general shader processing tools
* Instead of just configuring SPIR-V disassemblers and picking only the first
  one when we need to edit SPIR-V, we allow setting up any shader processor that
  goes between two shader encodings.
* When editing, the default will still be to use embedded source, and then after
  that the first tool that goes from the native shader format to a text format,
  but the drop-down allows you to pick any of them.
* Similarly in the shader viewer you can configure the compilation options and
  method, to choose the compiler you want to use. Embedded command line
  parameters in the shader are automatically appended.
2018-08-09 16:56:53 +01:00
baldurk a81e4a2b45 Pass through and allow different source shader encodings when editing
* This means e.g. the D3D11 back-end can accept DXBC directly if the UI can
  provide it, or compile from HLSL as before.
* More importantly, the Vulkan back-end can take SPIR-V compiled from any
  source, or compile from GLSL as before as a fall-back.
2018-08-09 16:56:52 +01:00
baldurk 24a5375133 Disable shader buttons when no shader is bound 2018-08-09 16:56:52 +01:00
baldurk d7e4060698 Make sure we don't open a shader viewer with an unbound shader 2018-08-07 12:42:52 +01:00
baldurk 14e3a3d360 Move API-agnostic pipeline state wrapper into core interface
* There's no need for this to be in the UI, and moving it allows it to be used
  from script which is very useful.
2018-06-18 18:39:06 +01:00
baldurk 45c3c27923 Rename DrawFlags::UseIBuffer to DrawFlags::Indexed 2018-06-15 19:40:54 +01:00
baldurk 72b40769b5 Add support for D3D12 up to D3D12.3. Closes #966 2018-06-07 14:49:07 +01:00
baldurk c2c0433999 Fix logic/blend enabled being wrong way around on D3D12 too 2018-06-05 21:08:06 +01:00
baldurk b1008ceb82 Add index buffer binding offset to byte offset when opening buffer view 2018-05-03 14:25:37 +01:00
baldurk bbc0581e7e Implement support VK_EXT_conservative_rasterization. Closes #898 2018-04-24 19:23:51 +01:00
baldurk e51a14f18a Fix display of RTVs and DSVs in D3D12 pipeline state viewer 2018-04-13 16:43:44 +01:00
baldurk 0cbcba2413 Fix issues with displaying UAVs in D3D12 pipeline state. Closes #926 2018-04-03 17:10:16 +01:00
baldurk 71992c3967 Fix incorrect view details tooltip formatter 2018-03-05 12:40:41 +00:00
baldurk e060c1b410 Format stencil references as 8-bit integers, not 32-bit 2018-03-01 18:45:32 +00:00
baldurk 04034c334b Gather pixel history panels together instead of making new dock for each 2018-02-19 00:52:13 +00:00
baldurk ccffa7656a Specify byte range for cbuffers in D3D12 pipeline state 2018-02-06 00:21:10 +00:00