Commit Graph

2283 Commits

Author SHA1 Message Date
baldurk 8f3b2c5b00 [Sparse #2] Redirect sparse resources to different initial state stubs 2016-02-07 18:45:38 +01:00
baldurk 702f487170 [Sparse #1] Track memory referencing of sparse resources into queues
* Normal resources have a single memory bind that can be added to frame
  references when the resource is. Sparse resources don't have that easy
  single mapping.
* Calls to MarkResourceFrameReferenced with a 0 ResourceId aren't a
  real problem, but we have to be careful when dirtying resources.
* We don't have to dirty memory that's sparsely bound as we'll dirty it
  as soon as its sparsely bound. We do have to worry about making sure
  that memory is correctly frame referenced.
* To do this command buffers track the sparsemapping structures (will be
  created for all sparse resources) that are referenced underneath them.
  Then at queue submit time the current sparse mapping is iterated and
  all bound memory marked frame referenced.
* For most cases where a buffer is bound or similar, we can directly add
  the sparsemapping from the resource record. For descriptor sets we
  must do this indirectly - by marking any bindframerefs in the descset
  record with a bit indicating that the associated resource is sparse,
  then at submit time when iterating the bindframerefs, taking any with
  the bit set and looking up its record to find the sparsemapping.
2016-02-07 18:45:37 +01:00
baldurk fb5f74ec74 Add function to dump thumbnail from a capture 2016-02-07 18:45:36 +01:00
baldurk 437d350725 Share code between Record and Merge Transitions 2016-02-07 18:45:35 +01:00
baldurk 12843544e2 Rename ImageRegionState members to match VkImageMemoryBarrier members
* This will let us re-use logic on either one in Record/MergeTransitions
2016-02-07 18:45:34 +01:00
baldurk 5990b996e2 Add MergeTransitions function (copy-pasted)
* This will merge recorded transitions from second level command buffers
  into first level command buffers.
2016-02-07 18:45:33 +01:00
baldurk 08d2b871cb Update release notes - vkCmdExecuteCommands will replay as a whole thing 2016-02-07 18:45:33 +01:00
baldurk 5586ae028f Record secondary command buffers and execute as block
* Not supporting image transitions within secondary command buffers, and
  doesn't support partial executes of secondary command buffers on the
  replay side.
2016-02-07 18:45:32 +01:00
baldurk 9fceda593f Fix recording transitions into wrong place on capture 2016-02-07 18:45:31 +01:00
baldurk efc0aa5a08 Mark function as not needing serialised 2016-02-07 18:45:30 +01:00
baldurk a0c5552f55 Update release notes to mark subpasses as nominally supported 2016-02-07 18:45:29 +01:00
baldurk 64aa299090 Store subpasses in creation info, use to fetch active attachments 2016-02-07 18:45:28 +01:00
baldurk 2a6e33ad0e Handle CmdNextSubpass and restore proper subpass on single-draw replay
* Not sure when a renderpass clear effects should be available for an
  attachment that isn't used in the first subpass. At the moment the
  clear doesn't show up until the first draw, but that's not such a bad
  bug even if it's our side rather than driver's.
2016-02-07 18:45:27 +01:00
baldurk 3dcb0411b2 Improve printing of array constants 2016-02-07 18:45:26 +01:00
baldurk fe449eca25 Declare function-local variables better 2016-02-07 18:45:26 +01:00
baldurk c71191906b Don't do any shader viewer work if the log is closed 2016-02-07 18:45:25 +01:00
baldurk b5b8cf574d Handle GLSL (not SPIR-V) being passed to shader module create.
* We can't analyse or reflect it at all, but we should at least pass it
  through.
* Currently invalid but there will probably be extensions that allow
  this, whether or not we'll allow them is a different matter.
2016-02-07 18:45:24 +01:00
baldurk 474c397637 Support push constants, store in pipeline state & restore replaying draw 2016-02-07 18:45:23 +01:00
baldurk d7dae641d2 Tidy up of new image initial state saving 2016-02-07 18:45:22 +01:00
baldurk 9b538c0221 Fixup for multiple mips 2016-02-07 18:45:21 +01:00
baldurk 5d9952cdba Start moving images to do proper copies to buffers for init states 2016-02-07 18:45:20 +01:00
baldurk d36ef2a001 Split out image and memory initial state handling 2016-02-07 18:45:19 +01:00
baldurk 3e332567d6 Pipelines should have created renderpass as a parent 2016-02-07 18:45:19 +01:00
baldurk af8addf20e Display if blend is enabled properly 2016-02-07 18:45:18 +01:00
baldurk c504cc456b Improve printing of begin/end render pass load/store operations 2016-02-07 18:45:17 +01:00
baldurk b363dc1fb5 Vulkan scissor regions are x,y,width,height 2016-02-07 18:45:16 +01:00
baldurk ba95d887f8 Don't remap memory indices for vkAllocMemory while in replay 2016-02-07 18:45:15 +01:00
baldurk 36d2ffd988 Handle super small buffers in buffer viewer without displaying nothing 2016-02-07 18:45:14 +01:00
baldurk 484d70ddbd Display buffers properly in resource list 2016-02-07 18:45:13 +01:00
baldurk 354e64a844 Pass back buffers and buffer information 2016-02-07 18:45:12 +01:00
baldurk 4ece1ed5b3 Handle vtx binds referencing unset vbuffers (valid if binds are unused) 2016-02-07 18:45:12 +01:00
baldurk b2676c2861 Store last swapchain presented and use it instead if none is specified 2016-02-07 18:45:11 +01:00
baldurk d198569313 Make swapchains parents of im and put GetSwapchainImages in swap record 2016-02-07 18:45:10 +01:00
baldurk 58703dd348 Don't try and create our own layer on replay if it was in createInfo 2016-02-07 18:45:09 +01:00
baldurk 2d8a6640eb Update VKTODO with note on blocker 2016-02-07 18:45:08 +01:00
baldurk 8696b2133c Remove VKTODO that is handled 2016-02-07 18:45:07 +01:00
baldurk 4fe74824b1 Switch buffer offsets and lengths to 64-bit, downcast only where needed 2016-02-07 18:45:06 +01:00
baldurk b569932a71 Update pipeline stage names to Vulkan nomenclature 2016-02-07 18:45:05 +01:00
baldurk f1f0d45113 Sum up release notes entry - not GPU portable at all 2016-02-07 18:45:05 +01:00
baldurk 6f351c05e1 Fixes for storing & displaying dynamic offsets in pipeline state 2016-02-07 18:45:04 +01:00
baldurk bb4522c2b7 Minor shader cleanup 2016-02-07 18:45:03 +01:00
baldurk bd237aea83 Remove release note about memory maps 2016-02-07 18:45:02 +01:00
baldurk fb3ccc9994 Finish map-intercept handling for now.
* Currently I've decided to stick with the scheme of reading back from
  mapped pointers where necessary to either compare or serialise. This
  is because the bookkeeping for intercepting memory maps is quite
  complex and right now it seems hard to justify as the overhead of the
  readback is not significant enough to worry about. Unless we encounter
  a case where the readback is hugely slower and frame captures begin to
  take 10s of seconds longer, it's not justifiable.
2016-02-07 18:45:01 +01:00
baldurk 34e37257bd Add explanation of current plan for memory map handling 2016-02-07 18:45:00 +01:00
baldurk 79e7785718 Move function to more appropriate file 2016-02-07 18:44:59 +01:00
baldurk 156c75b26d Modify memory properties to discourage coherent maps & remap memory idxs 2016-02-07 18:44:58 +01:00
baldurk 6bdf285166 Use consistent serialiser pointer 2016-02-07 18:44:58 +01:00
baldurk 7769e1d672 Change API events view to show { } sections in sub-nodes 2016-02-07 18:44:57 +01:00
baldurk 685032e78c Store renderpass load/store ops and display in drawcall names 2016-02-07 18:44:56 +01:00
baldurk dd57110036 Make a drawcall for render pass end 2016-02-07 18:44:55 +01:00