Commit Graph

127 Commits

Author SHA1 Message Date
baldurk 2060173049 Track busy and active connections and display in UI 2016-08-19 17:26:19 +02:00
baldurk 8a5d300e78 Use custom exception for replay creation failures 2016-08-19 17:26:18 +02:00
baldurk 84baa6d752 Partially implemented support for capturing & opening logs in a context 2016-08-19 17:26:12 +02:00
baldurk b1fcea3c3e When switching context, make a remote connection in the render manager 2016-08-19 17:26:10 +02:00
baldurk fa0b13f2ed Add context chooser to main window for choosing between remote servers 2016-08-19 17:26:09 +02:00
baldurk 4fde9b065f Expand remote host selection for attaching to handle remote servers
* Also remove some of the old remote-replay single-shot code handling.
2016-08-19 17:26:07 +02:00
baldurk 9a544e61af Rename ModalPopup to ProgressPopup 2016-08-19 17:26:06 +02:00
baldurk a4b9023df5 Update C# side P/Invoke interop 2016-08-19 17:26:05 +02:00
baldurk 4e450dbfcc Rename RemoteRenderer to RemoteServer 2016-08-19 12:23:19 +02:00
baldurk 481a28dc29 Rename RemoteAccess to TargetControl to better disambiguate RemoteServer 2016-08-19 12:23:19 +02:00
baldurk 5ed6ee2938 Add better error messages when failing to load images.
* This includes an enum for unsupported (but recognised) image formats
  instead of just a generic 'file corrupted' or misleading 'API
  unsupported' error.
2016-08-19 12:17:09 +02:00
baldurk 610b22f600 Fix a lot of high-contrast inconsistencies or brokenness. Refs #315
* In a couple of places I had to resort to if(IsHighContrast) but mostly
  this is just using system brushes consistently or not assuming black
  text.
* The default DockPanel theme doesn't work well, so make a minimal high-
  contrast theme for it and assign it everywhere.
* The pipeline flow was using fixed colours, use system brushes for the
  different elements and switch based on high-contrast to ensure active
  and inactive stages are visible (using ActiveCaption looks bad on
  normal themes because it's a big block of colour).
* For some reason the flat toolstrip renderer doesn't handle white-on-
  black themes, but the system one does. It's a little clunkier but it
  shows up correctly without writing tons of custom painting code.
* Range histogram uses a properly contrasting colour for the border.
* Treelist views use a better system colour for selected rows when
  inactive and hovered rows (when high contrast).
* Mesh view grids have a system background instead of white
* Various things (pipeline state, mesh viewe) set text colour when
  colourising backgrounds of things instead of assuming black.
2016-08-05 12:46:56 +02:00
baldurk 12e0c301af Handle themes with light text when picking contrasting colour. Refs #315 2016-08-05 11:19:56 +02:00
baldurk 20c81be074 Make sure to catch any exceptions from processing invalid/garbage paths 2016-07-25 18:27:18 +02:00
baldurk 132bef38af Calculate bytesize properly for packed formats in mesh viewer 2016-07-25 18:27:13 +02:00
baldurk 28c1768397 Add menu item to jump from pixel history modifications to each primitive 2016-07-22 14:40:40 +02:00
baldurk f492ddab27 Add missing handling of uscaled and sscaled formats 2016-07-21 16:06:10 +02:00
baldurk c59ce564cc Fetch compute descriptor sets properly for vulkan 2016-07-15 14:23:29 +02:00
baldurk 73dc89f25a Allow specifying a listen interface and port, for remote replaying 2016-07-12 17:39:22 +02:00
baldurk edbd1ce89b Pass through view format as a type hint to texture display/sampling
* This is only applicable really on D3D11 where the underlying texture
  can be typeless, and a default interpretation as unorm/float won't
  necessarily how the texture is actually being used.
2016-06-27 12:10:21 +02:00
baldurk 3f4ec852ba Pass through image layouts for vulkan and display in tooltips. Refs #199
* Semi experimental for now - I'm not convinced that having a tooltip
  for every image element is the best UI. It will need some iteration.
2016-06-24 17:54:41 +02:00
baldurk 27bbbc39a4 Pass through number of mips/layers in Vulkan image views 2016-06-24 16:31:04 +02:00
baldurk 494627c299 Display image barriers in texture usage dropdown and timeline bar 2016-06-22 19:04:08 +02:00
baldurk 6403b5a6d6 Use full pathnames for files, so we don't have duplicate keys in dict 2016-06-21 13:35:21 +02:00
baldurk e36f038827 Use start instead of end EID/DrawID for fake profile markers
* This causes the range in the event browser to show up properly as
  start-end instead of end-end.
2016-06-08 15:30:38 -07:00
baldurk 6e2a8344ce Fix crash with markerColour not being created for fake markers 2016-06-01 13:08:36 +02:00
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