Commit Graph

15607 Commits

Author SHA1 Message Date
baldurk 204f003f2b Ensure safe state is used for RT builds on compute command buffers 2025-02-11 14:06:01 +00:00
baldurk 0859fd0a95 Fix handling RT VBs with stride of 0 2025-02-11 14:05:46 +00:00
baldurk b5294824f7 Use custom heap for auditing readback buffer
* Can't use readback heaps for postbuild info, so need to stick a fake mustache
  on the readback heap
2025-02-11 13:43:23 +00:00
baldurk c2c055f807 Fix accidental case fallthrough 2025-02-11 00:22:11 +00:00
baldurk 1c7a4c24dd Unwrap staticmethod if necessary when checking python docstrings
* Happens on github CI for some reason.
2025-02-11 00:21:39 +00:00
baldurk 83a3f480c2 Update CI to build on ubuntu-22.04
* ubuntu-20.04 is being deprecated by github's runners
2025-02-11 00:21:09 +00:00
baldurk 98ce506da5 Specialise std::hash for old gcc/clang 2025-02-10 18:28:53 +00:00
baldurk 108987fdd9 Remove unused variable 2025-02-10 18:23:21 +00:00
baldurk 6c87445a03 Don't scissor shaderOut in pixel history
* This is not strictly necessary, just reduced wasted GPU work, but potentially
  this could affect accurate output for these values. We only need to scissor
  for cases where we're doing counters for checking writes and test passes.
2025-02-10 17:52:31 +00:00
baldurk 1befd5c32a Always consider subgroup index non-flat
* This is needed to ensure we get the right value for helper lanes
2025-02-10 17:52:31 +00:00
baldurk cfefa5d5ef Add a test for new group ops 2025-02-10 17:52:31 +00:00
baldurk da04916a77 Update capability & extension checking for SPIR-V debugging 2025-02-10 17:52:30 +00:00
baldurk af645809e5 Implement subgroup operations in SPIR-V debugger 2025-02-10 17:52:30 +00:00
baldurk 56decb5d8c Pass current active mask of workgroup to threads when stepping 2025-02-10 17:52:30 +00:00
baldurk 876b0f8ff7 Pass subgroup size separately from workgroup size when beginning debug
* For compute shaders these can be different, in vertex/pixel these are at most
  identical
2025-02-10 17:52:30 +00:00
baldurk c3abc4504c Fetch subgroup data for vertex & compute shaders the same as pixel 2025-02-10 17:52:30 +00:00
baldurk 1347741463 Add some helpers for setting up debug-grab patching spec constants 2025-02-10 17:52:30 +00:00
baldurk c52878b072 Add names and some missing destroys to GPUBuffers 2025-02-10 17:52:30 +00:00
baldurk 1ac3cf6baa Add dummy buffer writes to PostVS on binding path 2025-02-10 17:52:30 +00:00
baldurk af4bd659e0 Add fetch of subgroup data via GPU readback, handling helpers in PS 2025-02-10 17:52:30 +00:00
baldurk 8d3f40b0a9 Prepare SPIR-V debugger for larger workgroup sizes
* The workgroup size is passed in at creation time, and we handle the potenttial
  for multiple quads by identifying quads via quad ID
2025-02-10 17:52:30 +00:00
baldurk 1cfb684d16 Fetch subgroup configuration (which extensions) and max subgroup size 2025-02-10 17:52:30 +00:00
baldurk 7fcf64a562 Add query for per-thread properties when shader debugging
* This is distinct from input values or builtins because they're entirely
  internal for configuring the workgroup
2025-02-10 17:52:29 +00:00
baldurk 983cf91ef0 Track enabled status of some subgroup vulkan extensions we care about 2025-02-10 17:52:29 +00:00
baldurk b191a02cd1 Add helper tracking in SPIR-V editor to track U32 constants
* It's nice to avoid redeclaring the same constant over and over
2025-02-10 17:52:29 +00:00
baldurk c5b0cd2423 Add development-only checks of SPIR-V edits for valid IDs 2025-02-10 17:52:29 +00:00
baldurk f3ed63c7bf Refactor PS Input fetcher patch to be less pixel-specific
* We also (for now) preserve the existing entry point to keep codegen as similar
  as possible.
2025-02-10 17:52:29 +00:00
baldurk 046b5a0fd1 Add a pipeline cache to speed up repeated recreation of patched shaders 2025-02-10 17:52:29 +00:00
baldurk aae58c765a Add a helper for changing/wrapping an entry point in another function 2025-02-10 17:52:29 +00:00
baldurk 4ad2deb049 Add a helper for running an action with proper barriers for feedback 2025-02-10 17:52:29 +00:00
baldurk 7369b8ad6c Refactor vulkan shader debugging to not apply derivatives
* We still use derivatives to fetch the input values for the quad when
  debugging, but we do it on the shader side and read back the raw inputs rather
  than input+derivatives
2025-02-10 17:52:29 +00:00
baldurk 0af29aa6a2 Remove old helper function 2025-02-10 17:52:29 +00:00
baldurk 3fdbcbe638 Update VSOut fetch to use new patched-descriptor helpers 2025-02-10 17:52:28 +00:00
baldurk 26ef7efaa5 Update shader debugging to use new patched-descriptor helpers 2025-02-10 17:52:28 +00:00
baldurk 9bcb68c2de Update bindless feedback code to use new helpers 2025-02-10 17:52:28 +00:00
baldurk 2d067b0e70 Update pixel history dummy write workaround to use new helpers 2025-02-10 17:52:28 +00:00
baldurk 770ee04172 Add common shortcut to write a GPUBuffer to a storage descriptor 2025-02-10 17:52:28 +00:00
baldurk 18ee579490 Centralise helpers for common shader patching tasks
* These are the API-side helpers. One makes it easy to declare and add a
  new buffer for output, handling BDA (KHR and EXT) and plain bindings
  if needed.
* Another is a helper for "grab current state, substitute in a
  shader's SPIR-V, ready to do a single draw/dispatch"
2025-02-10 17:52:28 +00:00
baldurk f557c47c09 Store bindpoint inside VulkanStatePipeline 2025-02-10 17:52:28 +00:00
baldurk 07396bb1b8 Add helper for fetching GPUBuffer address 2025-02-10 17:52:28 +00:00
baldurk 025f1c6b01 Add new helper function for adding reserved descriptors to app desc set
* This is a temporary duplication of PatchReservedDescriptors to make a
  refactoring easier with smaller commits, and is mostly identical but returns
  its data in a struct instead of as loose outputs.
2025-02-10 17:52:28 +00:00
baldurk 70295c39a8 Add quick helper to resize-up feedback buffer 2025-02-10 17:52:28 +00:00
baldurk f7c3bb61fe Calculate desired patched-buffer storage mode once 2025-02-10 17:52:28 +00:00
baldurk 44bda13dbe Add some higher level SPIR-V editing helpers
* These both automate some common (and verbose) tasks and also add extra helpers
  for declaring a new output buffer that might come via BDA or via a binding.
2025-02-10 17:52:28 +00:00
baldurk 6868b67747 Calculate which scopes are available to a given thread when debuggng
* This is conservative as it's not calculated per-entry point, but over-
  simulating threads is not expected to be a huge issue.
2025-02-10 17:52:27 +00:00
baldurk f287da5bdf Fix assert on sparse page tables 2025-02-10 17:52:27 +00:00
Jake Turner 0a302c6707 Remove DXIL Debugger TODO's that have been done 2025-02-10 14:24:00 +00:00
baldurk 3c1fcf4616 Try to be more robust in the face of repeated VK_ERROR_OUT_OF_DATE 2025-02-07 11:28:25 +00:00
baldurk 2c5fee7c07 Set mesh viewer tables to always have a scrollbars
* This can prevent a very rare resize loop
2025-02-07 11:28:25 +00:00
baldurk b691f2421e Update vkconfig check 2025-02-06 17:55:07 +00:00