Commit Graph

174 Commits

Author SHA1 Message Date
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 bf03ef4a8f Set defaults so non-array views etc have ArraySize = 1 2016-06-24 15:36:02 +02:00
baldurk 005a9ee226 Display swizzles on image views in vulkan pipeline view 2016-06-24 13:09:06 +02:00
baldurk f35a4c6b6b Use view format instead of resource format for Vulkan
* Since the Vulkan views are tighter and more strictly specified, we can
  always safely use the view format (in the non-mutable case it must
  exactly match the underlying resource's format).
2016-06-24 12:34:11 +02:00
baldurk a8457b56f6 Display required bytes of constant buffer if it differs from buffer size 2016-06-23 16:20:37 +02:00
baldurk 494627c299 Display image barriers in texture usage dropdown and timeline bar 2016-06-22 19:04:08 +02:00
baldurk 5864c11fa2 Add support for D3D11.3 and D3D11.4 (minor). Refs #235. Refs #145
* Only one major piece of functionality is unimplemented and stubbed out
  - WriteToSubresource and ReadFromSubresource in concert with passing
  a NULL D3D11_MAPPED_SUBRESOURCE parameter to ID3D11DeviceContext::Map.
2016-06-21 21:08:26 +02:00
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 6c39971374 Add proper support for immutable samplers. Refs #260 2016-06-01 16:39:18 +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 c1f66de413 Add early OS X compiling support from @Zorro666 - still non-functional!
* Build with cmake -DENABLE_VULKAN=OFF -DENABLE_QRENDERDOC=OFF
2016-05-31 12:05:45 +02:00
baldurk 54106a2108 Pass through marker colours to UI 2016-05-27 19:28: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 5f28b745a2 Format code according to newly added clang-format
_  /)
                 mo / )
                 |/)\)
                  /\_
                  \__|=
                 (    )
                 __)(__
           _____/      \\_____
          |  _     ___   _   ||
          | | \     |   | \  ||
          | |  |    |   |  | ||
          | |_/     |   |_/  ||
          | | \     |   |    ||
          | |  \    |   |    ||
          | |   \. _|_. | .  ||
          |                  ||
          |repository history||
          |                  ||
  *       | *   **    * **   |**      **
   \))ejm97/.,(//,,..,,\||(,,.,\\,.((//
2016-05-22 19:41:53 +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 863dc1d259 Split 'linux' os-specific code into 'posix' and then 'linux'/'android'
* And eventually probably 'apple' as well.
2016-05-14 01:53:51 +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 6437137aba [Coverity] Fix uninitialised members in replay API structures 2016-05-06 23:15:42 +02:00
baldurk 3d69ece39a Display custom glObjectLabel for shaders, programs and pipeline 2016-04-27 23:18:56 +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 c12a4e69c9 Don't use renderdoc platform defines in renderdoc_app.h
* This file will be included in user code, so we can't rely on our own
  platform defines being present.
2016-04-23 09:26:52 +02:00
Cory Bloor 0093fdb31d Add GetVersionString to RenderDoc API 2016-04-17 04:48:15 -06:00
Michael Vance 8b1794456d Switch RENDERDOC_PLATFORM to RENDERDOC_PLATFORM_<PLAT>.
Notes
======
- With no clean way to do string comparisons in the C preprocessor, have a define per-platform. This avoids the clever string concatenation for determining the OS-specic bits, and allows SN-DBS to distribute builds without custom rewrite rules.
- Fix up instances of WIN32, etc., in non-3rdparty sources to refer to this.
- Move the per-platform specific bits into their own subdirs.
2016-04-15 13:59:59 -04: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 5869e9c1bf Handle baseVertex as signed, separately from vertexOffset. Refs #228 2016-03-24 18:50:04 +01:00
baldurk 3cc79316b3 Add a GUID for the shader debug info that is required in a PRIV section 2016-03-06 14:54:07 +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 2e0ffa7813 Batch update copyright years everywhere 2016-02-07 18:50:45 +01:00
baldurk 82faf93a27 Fetch and store array stride with each constant block variable 2016-02-07 18:50:27 +01:00
baldurk 2107b2fe55 Handle push/pop markers when inserting via queuesubmit
* This allows push/pop regions to cross command buffers, as long as they
  are submitted in the right order etc.
2016-02-07 18:50:14 +01:00
baldurk c8436d3646 Implement resource usage tracking 2016-02-07 18:50:05 +01:00
baldurk ee175febb8 Add initialisers for a couple of missing things in pipeline state 2016-02-07 18:49:52 +01:00
baldurk bb2394183c Add ability to re-record all cmd buffers (for whole-frame timing) 2016-02-07 18:49:50 +01:00
baldurk 251a9773c2 remove min/max event IDs from FetchCounters - always times whole frame 2016-02-07 18:49:47 +01:00
baldurk e05614c6bf Set up drawcall previous/next/parent IDs in replay drivers 2016-02-07 18:49:37 +01:00
baldurk 459196fd21 Shift responsibility for 'whole pass' type processing to replay drivers
* Note, currently broken as the drivers don't have previous/next EIDs
  set up on their drawcalls
2016-02-07 18:49:36 +01:00
baldurk e0bbed0b34 Pass shader specialization data to pipeline state (just data, not in UI) 2016-02-07 18:49:22 +01:00
baldurk 4b7c33d531 Fixes for vulkan for BGRA changes, add R4G4 special format 2016-02-07 18:49:21 +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 03d0bc9f88 get vk_info.cpp compiling 2016-02-07 18:48:27 +01:00
baldurk 4f784b07d5 Handle array outputs in SPIR-V, add array index to signature parameter 2016-02-07 18:47:36 +01:00