Commit Graph

2306 Commits

Author SHA1 Message Date
baldurk 0f0ade44ae Implement descriptor set copies 2016-02-07 18:45:58 +01:00
baldurk 0b38e895e7 Fix error identifying NULL resource for frame record 2016-02-07 18:45:57 +01:00
baldurk c510a55bfa Do some tidy up with initial state buffer serialisation
* Remove redundant buffer allocation and copy, deserialise straight into
  the mapped memory that we allocate.
* Get memory allocation size from buffer correctly rather than assuming
  the buffer size will be identical (it probably will be, but still).
2016-02-07 18:45:57 +01:00
baldurk e2c7f7469f Remove VKTODO noise from initial state temporary buffers/flushing 2016-02-07 18:45:56 +01:00
baldurk 9059ef2dc1 Create a buffer bound to the whole of each devicememory
* This is used in initial state application for buffer copies without
  needing to create temporary buffers bound to the memory.
2016-02-07 18:45:55 +01:00
baldurk a27d67d49d Remove VKTODOs for tasks being post-poned to after 1.0
* Multiple device handling
* Stepping into vkCmdExecuteCommands
2016-02-07 18:45:54 +01:00
baldurk 2decca5f27 Reorganise VkResourceRecord to reduce wasted space
* This reduces the total size from 448 bytes -> 232 bytes, but does mean
  some extra pointer chasing. I'm not sure what the best balance is so
  this will do for now and I'll wait and see if profiling turns up any
  issues.
2016-02-07 18:45:53 +01:00
baldurk 773c1e48e5 Move Subresources into D3D11ResourceRecord, not needed in other APIs 2016-02-07 18:45:52 +01:00
baldurk cb0ee82c67 Image initial states are supported now :) 2016-02-07 18:45:51 +01:00
baldurk 4847a2e876 Move stepping into vkCmdExecuteCommands to post-1.0
* The solution I have in mind for this will just be too much churn and
  large changes like that should be avoided at this point.
2016-02-07 18:45:50 +01:00
baldurk 4966e4c41e Don't need to serialise vkResetCommandBuffer, just a driver hint
* vkBeginCommandBuffer does an implicit reset if you begin an already
  recorded command buffer, so we can just do our work there.
2016-02-07 18:45:49 +01:00
Greg Fischer 4fbad3d6b5 fix capture when other layers are active. 2016-02-07 18:45:49 +01:00
baldurk fa18e4b291 Serialise out physical device properties in enumerate, for clarity 2016-02-07 18:45:48 +01:00
baldurk c41e317eb4 Silently drop any removals of bind framerefs of stale IDs 2016-02-07 18:45:47 +01:00
baldurk 5b7f60ebe1 Handle CmdWaitEvents by creating an event to set immediately before 2016-02-07 18:45:46 +01:00
baldurk a9bc609e48 Rejig & compact release notes with current status 2016-02-07 18:45:45 +01:00
baldurk 1702172e7e Remove sparse resources from unsupported features 2016-02-07 18:45:44 +01:00
baldurk 6e6a855a33 [Sparse #7] Serialise out the memory for any bound to sparse resources 2016-02-07 18:45:43 +01:00
baldurk 2765de1467 Add drawcall entries for a few copy and clear functions 2016-02-07 18:45:42 +01:00
baldurk 9be607255e [Sparse #6] Implement sparse initial state stubs - page tables only 2016-02-07 18:45:41 +01:00
baldurk fe8440363b [Sparse #5] Implement stubs for updating page tables (opaque or image)
* Not supporting images with arrays or mips for now as that becomes
  more complicated. In theory a page table each, but then need to handle
  mip tail and stuff.
2016-02-07 18:45:41 +01:00
baldurk 28f448ea6f [Sparse #4] Serialise out sparse binding changes that happen mid-frame
* Also add stub calls to update in-memory tracked pages
2016-02-07 18:45:40 +01:00
baldurk 803e626e8d [Sparse #3] Create sparse info structs on resource creation 2016-02-07 18:45:39 +01:00
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