Commit Graph

52 Commits

Author SHA1 Message Date
baldurk d63e3b89ad Add support for copying files back from remote server 2016-08-19 17:26:24 +02:00
baldurk fe08662e38 Handle non-local logs, make sure they are properly owned and deleted 2016-08-19 17:26:21 +02:00
baldurk 0207c74b90 Check remote server status at startup to pre-populate context chooser 2016-08-19 17:26:20 +02:00
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 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 5508f9f599 Handle duplicate contents being returned and dummy them. Refs #310
* Unfortunately too late for v0.30, but at least this will help anyone
  who upgrades v0.29 -> v0.31 or such.
2016-08-01 22:22:50 +02:00
baldurk 39f453b166 Rename replay host to remote server, consistently. 2016-08-01 19:38:21 +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 73dc89f25a Allow specifying a listen interface and port, for remote replaying 2016-07-12 17:39:22 +02:00
baldurk 11ee6e2e34 Allow dragging exes in anywhere and they won't be opened as logfiles 2016-06-20 17:30:29 +02:00
baldurk 10629ab92b Use https URLs to access renderdoc.org
* Previous versions accessing the http URLs will be redirected soon (as
  of time of writing this). The POST /bugsubmit won't be redirected as
  it's not feasible to redirect POST requests, but that will continue
  working.
2016-06-17 14:12:19 +02:00
baldurk 69705d9e99 Detect and report version mismatches to the user between core & UI 2016-05-19 20:45:13 +02:00
baldurk 281a3c93da Don't prompt to close a logfile if there's not one loaded 2016-05-09 21:50:10 +02:00
baldurk 898344c14c Persist the statistics viewer into window layouts 2016-04-13 00:38:51 +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 019c0db6fe Support .cap files in File -> Open menu and drag & drop 2016-04-02 15:58:17 +02:00
baldurk 94cf36b991 Add saved logs to recent file list immediately. Refs #197 2016-02-29 19:17:05 +01:00
baldurk 2e0ffa7813 Batch update copyright years everywhere 2016-02-07 18:50:45 +01:00
baldurk 2cca0a53c3 Set the window title to the filename when saving a log 2015-11-13 22:29:29 +01:00
baldurk bf9e6c1156 Make sure to unset the update flag if we're on the latest version 2015-10-06 17:07:51 +02:00
baldurk c4d95421e0 Fix crash if main window is closed while update check is ongoing 2015-10-04 15:31:10 +02:00
baldurk ebe442d1d8 Update tips dialog and add a menu item for it. 2015-09-25 21:09:12 +02:00
baldurk 2100344636 Fix logic to ensure we don't silently drop manual update checks 2015-09-15 18:43:06 +02:00
baldurk 2d12d5abee Add an update dialog that shows update notes & does upgrade smoothly 2015-08-30 00:11:48 +02:00
baldurk b593f7446e Fix picking up global control shortcuts incorrectly 2015-07-19 13:46:24 +02:00
baldurk 26cf1f8541 Make Ctrl-# shortcuts for EventBrowser bookmarks work anywhere 2015-07-15 21:37:56 +02:00
baldurk f6527107dc Add try {} catch to handle exceptions thrown from IO operations 2015-07-07 19:06:31 +02:00
baldurk 7a1cc84f41 Keep temporary log around to be able to save multiple times. Closes #130
* Previously if a temporary log was saved once, it would be moved there,
  so the user could in theory delete it and lose the only copy of the
  log.
* Now the temporary log is held until it's closed in the UI, to be able
  to be saved again. If the user saves the log though, this will stop
  any "unsaved log" prompts in the main UI window, so there is nothing
  stopping the user from saving the log, deleting that copy, then
  closing and they'll lose the log without prompt.
2015-04-12 18:37:16 +01:00
baldurk 6208e3992d Fall back to WARP if D3D11 hardware isn't present. Closes #121
* If hardware support for feature level 11 isn't present, fall back to
  the WARP software rasterizer. This will support everything needed, but
  it certainly won't run well.
* There are loud warnings - I added a debug message to the debug errors&
  warnings window so the status bar will indicate that, and it's in the
  title.
* At most once every 3 weeks there will also be a message box pop up
  when loading a log, to remind the user so that it isn't forgotten, as
  for obvious reasons this is not the intended use-case (hopefully once
  per 3 weeks isn't too often to be annoying).
2015-02-01 19:57:09 +00:00
baldurk 04f1d4a378 Centralise debug message processing, and allow adding custom warnings
* This will allow the adding of things like 'redundant api call' for calls
  that have no effect, as well as potential problems like drawing with an
  empty viewport, or similar things that are common problems. Reading out-
  of-bounds on buffers etc is a good example of 'defined' behaviour that
  is probably not desired.
* These heuristics could also identify potential performance problems.
* It also supports adding debug messages after log-load time, so you could
  do an additional extra-strength pass, or do a detailed check of one
  draw call (e.g. a broken draw, to try and figure out the problem). If
  there are any unread debug messages, the status bar will flash and the
  debug messages window will show a count as (N).
2015-01-11 00:20:50 +00:00
baldurk 2040a57e5d Check for new versions even if we think one is available
* This way if someone updates their install without clicking the menu item
  to clear this flag, it will still detect the update after a few days.
* (And when I forget to update which beta is latest, it will fix itself
  eventually. Oops).
2014-11-27 21:08:41 +00:00
baldurk 65df5a9192 Check file hasn't been removed out from under us before saving 2014-11-15 12:21:27 +00:00
baldurk 29894e4db3 Add Interactive/script running python shell window 2014-10-10 21:30:40 +01:00
baldurk 2cebc9866f Fix WindowFromPoint P/Invoke 2014-10-06 17:40:30 +01:00
baldurk 09863d920b [Refs #87: Static Analysis] Fix P/Invoke - C# point varies on x86/x64 2014-10-05 19:01:28 +01:00
baldurk e749f42876 [Refs #87: Static Analysis] string compare as uppercase or by length 2014-10-05 19:01:25 +01:00
baldurk 81e812b5f3 Add image viewer so that an image can be loaded as a faux-log
* This adds the ability to drag in/open up a dds or jpg file and get all
  the usual texture viewing and manipulation options.
2014-09-25 16:27:17 +01:00
baldurk d661f17a05 Update things to point to the new builds page available 2014-09-18 18:41:48 +01:00
baldurk 0292f5f140 Beta versions check for updates with their version & commit hash
* This will allow official and beta releases to have parallel update tracks
  as planned
2014-09-17 18:33:26 +01:00
baldurk 960387d485 Add a command line parameter --remoteaccess to connect to instance
* This is useful in e.g. a renderdoc-aware application that has voluntarily
  injected renderdoc, and then wants to boot the UI to automatically open
  up the management connection
2014-09-01 21:15:23 +01:00
baldurk be3ee7f915 Add support for 'beta' builds
* Beta builds will be between nightlies and official releases in terms of
  stability. Tested at least to make sure there are no obvious bugs, but
  haven't been through 1-2 weeks stabilising period.
* Beta builds will upload crash reports, so I can get early warning of any
  bugs that are creeping in on master.
2014-08-25 12:41:29 +01:00
baldurk 4ccc7d3901 Update email in code & add menu item for nightly builds 2014-08-22 08:13:21 +01:00
baldurk 74a0330271 Ensure C# UI uses consistent culture on all threads. Closes #72
* This means that e.g. decimal separator will always be . and similar
  effects, which avoids the need to have culture specific formatting or
  special-case handling around CSV export etc.
2014-07-23 08:36:05 +01:00