Commit Graph

101 Commits

Author SHA1 Message Date
baldurk 9e2fa30a7e Add check for all-opaque-black markers and ignore. Works around UE4 2016-05-28 12:25:29 +02:00
baldurk 1978bc2409 Apply colours (optionally) to event browser and timeline bar. Refs #270 2016-05-27 19:44:25 +02:00
baldurk 84528ce316 Check all files are writeable before applying update. Closes #264 2016-05-19 22:01:56 +02:00
baldurk 91afc2b391 Add a way for UI to pass arbitrary settings strings into the core module 2016-05-10 22:35:48 +02:00
baldurk 6bd906ac2b Update installed registry key to latest version number after an update 2016-04-28 21:54:10 +02:00
baldurk 14781e4287 Handle invalid vulkan vertex input setup, and display better in pipeview 2016-04-17 17:50:45 +02:00
baldurk 70b99a4412 Remove antiquated 'multiple frames in one capture' support.
* Cleans up the code a bunch, this support is unlikely to ever return
  and if it does it will need a rethink anyway.
2016-04-13 00:28:09 +02:00
Michael Vance 973ee146a8 Support for a new 'Statistics' pane.
Notes
======
- Create a (hopefully) cross-backend performance statistics abstraction as part of FetchFrameInfo. This currently collects statistics about constant buffer binds, sampler binds, resource binds, client and server style resource updates (e.g. Map and UpdateSubresource), index & vertex buffer binds, and draws and dispatches. In my captures this covers approximately half of all API traffic. The rest is often shader sets, and then usual RS, OM, etc., that aren't currently tracked. During READING state parsing on the wrapped device context, record statistics about the calls and store them into the current frame info. We inspect objects occasionally to get things like their type for recording. It may be useful to expand this in the future to check bind types, etc. On the GL/Vulkan backends the stats data is never initialized and we display the same statistics data as before.
- Add a new statistics pane in the UI. A variety of shim arbitration/marshalling is provided to get the statistics data across the managed/native boundary. Removed the old statistics menu item. Currently the statistics pane is just a text log of various gathered data, with ASCII art (woo!) histograms. However in the future we would like to have image based historgrams as well as support for gathering statistics on a mask of stages, etc.
- Remove 'diagnostic' events (e.g. push/pop/marker) from the API call count as it distorts the API:draw call ratio.
- Add _First and _Count to ShaderResourceType and ShaderStageType for weak enumeration (weak due to int cast requirement).
- Provide utility functions Log2Floor for 32 and 64 bit types. These require OS specific clz, which are provided for Windows/VS and Linux/gcc/clang.

TODO
======
- UI toolkit based historgram, ability to set stages enabled for statistics, etc.
- Revisit necessity of gathering statistics across frames--apparently there is no multi-frame capture in a single log anymore?
- Revisit min/max/etc. gathering on the data--is there some way to improve this to not be so mechanical? Perhaps with field enumeration? However if moving to C++/Qt in future, possibly not a good time investment.
2016-04-11 21:23:05 -04:00
baldurk 1f1694af4f Keep pan consistent when switching between integer multiple textures
* Basically for downsample chains and the like, the pixels should now
  exactly line up with each other rather than shifting back and forth.
2016-02-21 16:37:58 +01:00
baldurk 1a05f4fc4a Forcibly refresh UI state after editing a shader or removing an edit 2016-02-21 16:10:46 +01:00
baldurk f15ca1fb15 Always convert paths to full UNC paths. Refs #177
* This avoids ambiguity/possible change between a mapped network drive
  like Z:\ and the UNC path \\hostname\foo\bar\
2016-02-18 15:05:46 +01:00
baldurk 0d768bec64 Do string insensitive compare for 32-bit layer as well 2016-02-07 18:52:15 +01:00
baldurk 87cd6a1d4d Handle Wow6432Node implicit layers key not being present 2016-02-07 18:52:13 +01:00
baldurk 420f1e7000 Fix display of push constants in the UI 2016-02-07 18:52:05 +01:00
baldurk c698670368 Do comparison with layers in registry case insensitive
* Prevents the warning about layers being mis-registered popping up a
  false positive
2016-02-07 18:52:03 +01:00
baldurk 79c863c21d Make sure to add ALL leftovers after main loop in FakeProfileMarkers 2016-02-07 18:50:56 +01:00
baldurk 2e0ffa7813 Batch update copyright years everywhere 2016-02-07 18:50:45 +01:00
baldurk f05b32afae Slightly improve automagic pass markers 2016-02-07 18:50:21 +01:00
baldurk a41104bbd0 Display/report compute resources correctly 2016-02-07 18:50:11 +01:00
baldurk 258e08f740 Add a UI to prompt the user to install the vulkan implicit layer
* I don't like the fact that it doesn't "just work" but this is mostly
  limited by design decisions on the side of the vulkan loader.
* There is no good way with the loader to say 'please also include this
  layer in the enumerated lists'. There is an all-or-nothing override of
  layer searching, but that would break any layers the application might
  actually rely on.
* On balance I've decided to go with this method, as it's a one-off
  interruption for the user (unless someone is constantly switching
  between installs).
2016-02-07 18:49:59 +01:00
baldurk e1a37d4616 Reorganise hierarchy so that vkQueueSubmit is just labels
* Rather than explicitly having vkQueueSubmit as a node with command
  buffer children, and those with the contents, we now inline everything
  and just add labels at beginning and end.
* Also tweaked slightly the fake pass algorithm to handle labels being
  present and merging a bit more aggressively to merge adjacent command
  buffers that are doing the same pass.
2016-02-07 18:49:53 +01:00
baldurk 183919853f Proper null checks in C# operator == 2016-02-07 18:49:30 +01:00
baldurk a995ee66e2 Change handling of shaders and entry points so they're not aliased 2016-02-07 18:49:03 +01:00
baldurk 63d643d43c Replay functions compiling 2016-02-07 18:48:31 +01:00
baldurk 521ec84b8b Add pipeline export to HTML for vulkan 2016-02-07 18:48:08 +01:00
baldurk bd5a6752e2 Use viewport for guessing aspect ratio, not dimensions of depth/colour 2016-02-07 18:47:33 +01:00
baldurk 101d780956 Handle post-vs data being padded/aligned instead of tightly packed 2016-02-07 18:47:33 +01:00
baldurk 5c309d9d34 Refactor handling of resources/binding to be much more flexible
* This will handle the new vulkan binding model with multiple descriptor
  sets and arrays of objects in each binding. It also makes a few tidy
  ups and improvements to other APIs in presentation - will e.g. now
  show thumbnails for vertex and other stages.
2016-02-07 18:46:40 +01:00
baldurk e51cf27321 Get abbreviations from common pipeline state (as they're API specific)
* Also the PipelineStateViewer will set its current 'sticky' API type
  to the common pipeline state, so that when a log isn't loaded we can
  still get API-specific properties that match the last API used.
2016-02-07 18:46:38 +01:00
baldurk 8a6d2ebf30 Handle arrays of uniform buffers in descriptor slots 2016-02-07 18:46:35 +01:00
baldurk 36d2ffd988 Handle super small buffers in buffer viewer without displaying nothing 2016-02-07 18:45:14 +01:00
baldurk 4ece1ed5b3 Handle vtx binds referencing unset vbuffers (valid if binds are unused) 2016-02-07 18:45:12 +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 448df65773 Protect against framebuffer being unset when not in valid pipeline state 2016-02-07 18:42:29 +01:00
baldurk 238efe31f1 List resources for texture viewer to pick up 2016-02-07 18:42:11 +01:00
baldurk a25d07cf59 Display cbuffer contents within vulkan pipe viewer
* For now, we just assume that cbuffers are tightly packed according to
  D3D11 rules (matrices, structs, float3/4 are all float4 aligned), and
  once final SPIR-V is generated everything should have explicit
  offsets, strides, and sizes
2016-02-07 18:42:06 +01:00
baldurk 8832573dbb Expose SPIR-V reflection data to UI 2016-02-07 18:41:45 +01:00
baldurk 8eddd387d7 Add vulkan pipeline state viewer based on D3D11 viewer 2016-02-07 18:41:35 +01:00
baldurk edac1f0bfd Pass vulkan pipeline state along to UI 2016-02-07 18:41:29 +01:00
baldurk 8b7a025853 Refactor BGRA formats to not be special (so allow any BGRA format)
* Also add ASTC and D16S8 types while in the neighbourhood
2015-11-29 22:05:26 +01:00
baldurk ebe442d1d8 Update tips dialog and add a menu item for it. 2015-09-25 21:09:12 +02:00
baldurk 2d12d5abee Add an update dialog that shows update notes & does upgrade smoothly 2015-08-30 00:11:48 +02:00
baldurk 9d25afbfa0 Change OnEventSelected callbacks to be blocking invoke
* Fixes a race condition you could hit running from e.g. Python or some
  other non-UI thread.
2015-08-24 21:56:46 +02:00
baldurk 6a2344d9d8 Show correct inputs/outputs for copy and dispatch calls. Refs #147
* Next step is to display VS and other stage inputs on the input panel.
* Also need to tidy up the fetching of highest mip/array slice etc to
  use the same codepath.
2015-08-23 13:20:23 +02:00
baldurk f6b4b2fe22 Change python embedding to get standard library from zip, not a dll
* This seems way more reliable and smaller than shipping a compiled .dll
* For some reason I didn't find this method before (I only knew that
  you could ship the loose files which wasn't a good solution).
2015-08-23 11:17:46 +02:00
baldurk c9877b6d0b Re-jig loading progress bar calculation to be smoother/more informative 2015-07-19 10:57:37 +02:00
baldurk 8213281921 Fix up fetching layer/mip for FBOs on replay 2015-07-18 18:27:34 +02:00
baldurk 0933d96fc9 Add FileChanged notification, use to reload data in image viewer
* Things will get weird if the image changes drastically like in format
  or dimension.
2015-07-15 22:06:33 +02:00
baldurk e40ab9261a Handle edge-case where input layout bytecode doesn't use every element 2015-07-14 21:53:36 +02:00
baldurk 4c988e9e3a Better arcball controls in the mesh viewer
* Tweaked flycam a bit too, but not much.
* Refactored the API/C# side camera classes to avoid exposing a ton of
  stuff just to do relative rotations in the arcball via quaternions.
2015-07-07 15:38:00 +02:00