Commit Graph

454 Commits

Author SHA1 Message Date
baldurk d41c9538de Add support for SPIR-V specialization constants 2016-06-07 11:35:44 -07:00
baldurk 947f7decb2 Add 'show all instances' mode, and make colours consistent. Closes #248 2016-06-03 17:34:26 +02:00
baldurk 306ebd1ad7 Fix a backwards compatibility issue causing some panels to go missing 2016-06-01 19:02:45 +02:00
baldurk 56c8fbc595 Handle purely typed texel buffers with no members 2016-06-01 16:48:22 +02:00
baldurk 6c39971374 Add proper support for immutable samplers. Refs #260 2016-06-01 16:39:18 +02:00
baldurk 054a01c3b0 Check for drawcall potentially being NULL 2016-06-01 11:57:55 +02:00
baldurk 094e79dee2 Greatly speed up 'attach to running instance' dialog in the 99% case
* 99% of the time, you'll only have localhost and the application will
  be running on the first ident checked which will return a valid socket
  almost immediately.
* Instead of continuing to search through each valid port before
  returning valid data, we change the enumerate function to just find
  the next valid port and return - so we can update the UI as soon as
  we have the first result.
2016-06-01 11:31:57 +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 60706ca4eb Add options controlling marker colourising 2016-05-27 23:26:59 +02:00
baldurk 1978bc2409 Apply colours (optionally) to event browser and timeline bar. Refs #270 2016-05-27 19:44:25 +02:00
baldurk b74ad435e5 Add a 1:1 (zoom 100%) button. Refs #272 2016-05-26 23:58:58 +02:00
baldurk 1914a8a029 For APIs with proper separate sampler objects use debug names. Refs #273 2016-05-26 23:51:09 +02:00
baldurk 69705d9e99 Detect and report version mismatches to the user between core & UI 2016-05-19 20:45:13 +02:00
baldurk 16561cd117 Before updating, check to see if any live programs are running.
* Doing this early and via the remote access lets us give a friendly
  error message and direct the user to which program is currently using
  renderdoc.
2016-05-19 20:29:38 +02:00
baldurk 4b7e068703 Rename 'create debug device' capture option to 'API validation'
* More appropriate for non-D3D11 APIs and will cause less confusion.
2016-05-17 21:16:17 +02:00
baldurk 15feb427e9 Display marker regions with X-Y in the EID column to show the EID range
* So an event will just give its EID, but an expandable region will list
  the EID range it contains
2016-05-16 20:01:17 +02:00
baldurk 9c15dfc6c9 [Coverity] Don't dereference draw if it may be null 2016-05-13 23:46:44 +02:00
baldurk 76a872252c Add a set of search paths to look up when locating unstripped shaders
* This allows the application to embed/runtime set a relative path
  instead of needing an absolute path
2016-05-10 22:36:40 +02:00
baldurk d65bacc118 Add an editor dialog for ordered lists of items (text or paths) 2016-05-10 22:34:58 +02:00
baldurk ebeaa935af Implement copy-paste handlers for shader debugging reg windows 2016-05-09 22:22:37 +02:00
baldurk 945f423cde Don't let the user undo the initial text added to a Scintilla editor 2016-05-09 22:00:31 +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 274dbcd4ef Remove unnecessary double-calls of OnLogfileLoaded(). Refs #267 2016-05-04 21:52:31 +02:00
baldurk 3d69ece39a Display custom glObjectLabel for shaders, programs and pipeline 2016-04-27 23:18:56 +02:00
baldurk 32114f947f When saving textures, update the filename if type changes and vice-versa 2016-04-27 22:51:59 +02:00
Michael Vance 04936f08a9 Add additional sections of API covered in statistics.
Notes
======
- Added statistics recording for shader sets, blend state sets, depth/stencil state sets, rasterization state sets, and output merger/UAV sets.
- Some muddling of things like UAVs into the outputs set... additional "null" sets will be recorded and things, will clean that up in a future change.
- Added missing CS SRV set to the resources statistics.
- Added GetFrameStats() helper to simplify some prolog boilerplate.
- Hoist some of the histogram code out into a helper method, also hoist out the API summary to try to clean that messiness up.
- Change how the API call numbers are calculated--it's now just the API calls as distinct from draw/dispatches. Additionally the ratio is gainst the "pure" API call number, not with draws/dispatches included.

TODO
======
- Figure out where the missing ~4k API calls are in my game captures vs the numbers I'm seeing.
2016-04-25 13:08:17 -04:00
baldurk 5867d7ada1 Pass through resource view element size in D3D11 pipeline state
* This lets us calculate the offset and visible length when opening a
  buffer view from a resource binding.
2016-04-23 13:03:41 +02:00
baldurk 33d8585bdb Change default ID name from {x} to _x_.
* I think eyes are just more use to parsing legal identifier characters
  (like _s) rather than {}s syntax. It feels like it's probably more
  readable overall, although there's more of a risk of it blending into
  the names in the original code
2016-04-22 17:36:55 +02:00
baldurk 17c30078e2 Add expand and collapse all functions to event browser menu. Refs #254 2016-04-21 18:08:18 +02:00
baldurk dc6962adee Fix a crash if no texture is current when clicking view as buffer 2016-04-17 18:50:14 +02:00
baldurk 0ed364bf77 Protect against crash if copy-pasting with no tree nodes selected 2016-04-17 18:00:21 +02:00
baldurk 14781e4287 Handle invalid vulkan vertex input setup, and display better in pipeview 2016-04-17 17:50:45 +02:00
baldurk a969f3f5af Crash fix - handle IOException creating NamedPipe for global hooking 2016-04-17 17:10:08 +02:00
Cory Bloor 0b81ae2618 Update renderdocui about dialog copyright year 2016-04-17 04:48:15 -06:00
baldurk 171fbcfabd Fix crashes when loading 'image' logs 2016-04-14 21:05:40 +02:00
baldurk 898344c14c Persist the statistics viewer into window layouts 2016-04-13 00:38:51 +02:00
baldurk 9ee5218761 Add more file-size stats to statistics viewer 2016-04-13 00:37:28 +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
baldurk 4e9082ee7c Rename slots to bindslots - conflict with Qt #define keyword 2016-04-13 00:02:10 +02:00
baldurk d62ce264b6 Display custom names for input layouts 2016-04-12 22:46:25 +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 e24f93970d Add empty marked rows for descriptor sets required by shader but unbound 2016-04-11 20:57:24 +02:00
baldurk 96aa458dd1 Add an abort button for interrupting python scripts during execution 2016-04-06 22:54:16 +02:00
baldurk 019c0db6fe Support .cap files in File -> Open menu and drag & drop 2016-04-02 15:58:17 +02:00
baldurk 009bfb2c74 Where possible apply offs/len knowledge when viewing buffers. Refs #224 2016-04-02 15:39:27 +02:00
baldurk 5869e9c1bf Handle baseVertex as signed, separately from vertexOffset. Refs #228 2016-03-24 18:50:04 +01:00
baldurk 74c1d16b2b Index FB attachments properly with renderpass indices. Refs #200 2016-03-01 19:44:10 +01:00
baldurk 94cf36b991 Add saved logs to recent file list immediately. Refs #197 2016-02-29 19:17:05 +01:00
baldurk bd9768451f Make sure saving logs from connection dialog marks them as saved 2016-02-29 19:16:38 +01:00
baldurk 8333087595 Rename 'since last clear' to 'show whole pass' 2016-02-28 14:05:47 +01:00