Commit Graph
97 Commits
Author SHA1 Message Date
baldurk fdeea5204d Refactor and optimise D3D11 refcounting implementation
* In heavy D3D11 workloads the refcounting overhead especially during fast
  binding changes was significant. Refactoring the refcounting to work on a
  different model and deferring destruction of objects removes most of the
  overhead.
2020-09-10 13:35:32 +01:00
baldurk 5c0dadae84 Test that RTV descriptor copies in D3D12 are properly recorded mid-frame 2020-08-20 17:09:51 +01:00
baldurk 9ce60a0b6e Test that OpenExistingHeapFromAddress can be captured and replayed 2020-07-29 15:39:04 +01:00
baldurk 485f7d21fc Make overlays interact consistently with viewport/scissor
* We also add a red/green display to the viewport and scissor overlay to show
  pixels that fail the scissor test.
2020-07-17 16:53:34 +01:00
Steve Karolewics e176fcb9d7 Fix D3D12 debugging with a texture mapped as UAV
The row pitch was not initialized, so any ld_uav_typed instructions
would likely return the wrong data.
2020-07-17 10:21:19 +01:00
baldurk 02a54be6ad When replaying resource discards fill with explicit pattern. Closes #284
* This helps catches cases where a discarded image is accidentally used and in
  many cases may still have valid data. Particularly on Vulkan this is relevant
  for DONT_CARE renderpass load and store ops.
2020-07-13 17:29:11 +01:00
Steve Karolewics 270700c290 Fix reporting of DXC errors in test app
Fallback to compiling without -Qembed_debug if it fails, to support
older Windows 10 SDKs
2020-07-01 10:45:40 +01:00
baldurk a0c66317e3 Add test of DXBC and DXIL D3D12 shader reflection 2020-06-19 14:46:00 +01:00
baldurk ab5c527489 Update D3D12 cbuffer test to check DXIL 2020-06-19 14:46:00 +01:00
baldurk f9218b5a90 Allow specifying D3D12_DESCRIPTOR_RANGE_FLAGS in root signatures 2020-06-19 14:46:00 +01:00
baldurk 631b56a04e Add support for compiling with dxcompiler in tests 2020-06-18 17:22:44 +01:00
baldurk a0a373a8e1 Fix handling of buffer truncation and zero-sized buffers 2020-05-29 17:26:29 +01:00
baldurk abb959e1fd Handle array textures and multiview properly in overlays. Closes #1895 2020-05-27 22:38:23 +01:00
baldurk 43b6f850d9 Fix sincos output on D3D12 shader debugging 2020-05-20 10:51:23 +01:00
baldurk 78335f7d00 Fix calculation of array stride on structs in D3D
# Conflicts:
#	util/test/tests/GL/GL_CBuffer_Zoo.py
2020-05-13 18:07:26 +01:00
baldurk 15fa728ab9 Fix handling of empty structs in D3D 2020-05-13 18:07:26 +01:00
baldurk bfcc484a7c Add tests of drawcall variants 2020-05-12 19:04:57 +01:00
baldurk da2af69671 Add support for specifying strip restart value in D3D12 PSOs 2020-05-11 18:04:23 +01:00
baldurk b8f83fca4c Add helper for blitting to swapchain in demos
* This isn't needed for testing but it's convenient to get simple window output
  even when we need to be writing to an F32 target
2020-05-11 18:04:22 +01:00
Steve Karolewics f9b86f3a82 Fix broken D3D shader linkage test cases
The rules for merging semantics into an array were not strict enough.
If either the type, interpolation mode, or size is different, or if it
is not using a register's x component, then we can't combine it. Also,
the rules for marking a semantic as array length 1 were too strict,
resulting in some semantics packing into other registers incorrectly.
2020-05-11 18:04:10 +01:00
Steve Karolewics f312dbba08 Add a D3D12 test for various VS/PS shader linkage scenarios
Fixed a bug that this new test uncovered. There are still several
draw calls that fail in this test, which can be fixed in future changes
2020-05-04 18:44:56 +01:00
Steve Karolewics 2c4f2a57a8 Add resource tracking to DXBC shader debugging
When a resource is accessed, it is now tracked by the debug step. The
shader viewer has a new panel to display resources accessed up to the
current step, with context menus to go to previous/next access of a
specific resource.
2020-04-27 18:16:46 +01:00
baldurk 66a9e00f3e Don't serialise D3D12_STREAM_OUTPUT_DESC.pBufferStrides if NumEntries==0
* This is true even if NumStrides is a high number, it's entirely ignored.
2020-04-21 17:09:33 +01:00
baldurk 8ee6e43ed6 Check that we can render secondary mesh data with only two components
* We need to be sure that we don't accidentally read RGB anyway.
2020-04-21 17:09:24 +01:00
baldurk 5e2de7dd34 Fix issues switching between mips with overlays on vulkan 2020-04-07 14:05:43 +01:00
baldurk d279d6dcd2 Silence D3D debug layer spam by including NULL terminator 2020-04-02 18:15:44 +01:00
baldurk 4c5b209e6f Test constant buffer offsetting in cbuffer zoo tests 2020-03-20 16:16:52 +00:00
Steve Karolewics 67447b7b7e Improve handling of resource arrays for D3D12
When getting read only resources from the pipe state, stitch back up
according to the bindpoint mappings. When displaying resources in UI,
don't traverse unbounded arrays. Fix resource swizzle on load/sample/
gather instructions, which happens on fetch result, not on the source
operand. Added more tests for unbounded arrays and different ways to
index into arrays.
2020-03-16 20:01:30 +00:00
baldurk 40611a3dde Test subresource rendering in overlay tests, remove png comparisons 2020-03-12 16:51:19 +00:00
baldurk b392c07d83 Add tests that use large vertex buffers 2020-03-11 18:00:53 +00:00
Steve Karolewics c74edcebbd Fix array resource indexing with NonUniformResourceIndex 2020-03-11 18:00:31 +00:00
Steve Karolewics baa7adea30 Implement GetSampleInfo for D3D12 debugging 2020-03-09 10:56:56 +00:00
Steve Karolewics 9b43481234 Prevent crash with OMSetRenderTargets in D3D12 2020-03-07 21:08:32 +00:00
Steve Karolewics dcd7ad0c8a Fix incorrect logical identifiers for constant buffers with D3D12
The assignment of logical identifiers is not guaranteed to match the
order of appearance in the shader bytecode. Adjusted D3D12_CBuffer_Zoo
to exercise this for testing.
2020-03-06 10:04:39 +00:00
baldurk fac4367cae Fix RTVs referencing when using RTsSingleHandleToDescriptorRange 2020-03-05 12:08:58 +00:00
Steve Karolewics a6c3177736 Add MSAA support to D3D12 PS debugging 2020-03-04 19:11:56 +00:00
Steve Karolewics 3927d82e24 Improve D3D12 compute shader debugging
Added fetching of texture data for UAVs, to allow stores to occur.
Fixed issues with sample/gather when debugging a compute shader.
Added a demo for dispatch in D3D12.
2020-02-24 18:10:43 +00:00
baldurk aacf148201 Add test of creating an empty capture 2020-02-21 17:56:53 +00:00
Steve Karolewics c56373ed94 Add impls of GetBuffer/ResourceInfo for D3D12 shader debugging 2020-02-21 17:56:33 +00:00
Steve Karolewics dfbe7fb6bf Remove primitive ID usage from pixel shader debugging when invalid
SV_PrimitiveID is only valid as a pixel shader input if there's either
no geometry shader, or the geometry shader emits SV_PrimitiveID. With
D3D11, the debug layer will complain but rendering will proceed. With
D3D12, the PSO fails to compile. For both APIs, pixel shader debugging
now checks whether this is true, and disables its usage if it isn't.
Added tests for various valid scenarios with SV_PrimitiveID.
2020-02-20 19:06:22 +00:00
Steve Karolewics 58b1186362 Fix resource bindings when reflection info is stripped
The logical identifiers, rather than shader registers, were used to
populate reflection info, causing the wrong slots in large descriptor
tables to be referenced for the pipeline state.
2020-02-14 10:39:28 +00:00
baldurk 06570ea7ad Remove backbuffer comparisons from test suite, simplify default triangle
* It's not particularly scalable and can be brittle to driver changes, and we
  can use targeted specific pixel tests to check what we really want - to see if
  the output has rendered correctly.
* Overlay tests still check files directly - this is a future refactor to
  remove.
2020-02-11 17:11:33 +00:00
baldurk 3e7273121f Fix numRows calculation in D3D12 texture zoo 2020-02-11 17:11:32 +00:00
baldurk a70be5bd98 Add missing sync in D3D12_Parameter_Zoo test 2020-02-11 17:11:32 +00:00
baldurk 76a88cc7a3 Add test of D3D12 render passes 2020-02-11 17:11:32 +00:00
Steve Karolewics 392d362ee8 Add a D3D12 test to exercise various resource mapping scenarios 2020-02-11 17:10:57 +00:00
Steve Karolewics ad69e791ad Add CBV support to D3D12ViewCreator 2020-02-11 17:10:57 +00:00
baldurk 530d7fbc12 Don't try to render triangle size for line or point draws 2020-02-05 15:17:46 +00:00
Steve Karolewics 67457bd784 Add a test for D3D12 shader debugging
This mimics the D3D11 shader debugging test, but performs the draws
twice - once with SM 5.0 and once with SM 5.1. The python test performs
the same checks as the D3D11 version, but is explicitly disabled since
D3D12 shader debugging is not yet enabled by default.
2020-02-04 19:11:17 +00:00
Steve Karolewics bd04112dd4 Add a non-shader-visible heap to D3D12ViewCreator for clearing UAVs 2020-02-04 19:11:17 +00:00