Commit Graph

144 Commits

Author SHA1 Message Date
baldurk 203dca8434 Split out invocation of SPIRVDisassembler into member function 2017-12-22 17:03:08 +00:00
baldurk ebaefc82a9 Normalise and make python/public interface more consistent
* We enforce a naming scheme more strongly - types, member functions,
  and enum values must be UpperCaseCamel, and member variables must be
  lowerCaseCamel. No underscores allowed.
* eventId not eventID or EID, and Id preferred to ID in general. Also
  for resourceId.
* Removed some lingering hungarian m_Foo naming.
* Some pipeline state structs that are almost identical between the
  different APIs are pulled out into common structs. Where something
  doesn't make sense (e.g. viewport enable for vulkan) it will just be
  set to a sensible default (in that case always true).
* Changed scissors to be x/y & width/height instead of sometimes
  left/top/right/bottom
* Abbreviations are discouraged, e.g. operation not op, function not
  func.
2017-12-22 13:02:36 +00:00
baldurk b070a371e2 Improve D3D11 predication handling, and track other asyncs independently
* Instead of replaying predication, we now always skip it during replay,
  so all objects will render. This is much more consistent and
  understandable behaviour instead of things mysteriously disappearing
  with no obvious reason why.
* We track the predication that would have happened and replay Begin/End
  pairs so that we can know if the predication *would* have failed.
* This is displayed in the UI (currently in the raster state, for lack
  of a better location) with the pass/fail that would have happened.
* This information can feed into other places for analysis like the
  pixel history.
2017-12-20 23:41:08 +00:00
baldurk 0b527fab49 Use rdc types instead of Qt containers in public QRenderDoc interface
* This is to support python bindings - the pyside implementation of
  QVector, QString, etc is not available to SWIG, so SWIG treates these
  all as opaque types.
* Rather than trying to set up bindings that work for rdcarray and
  QList/QVector, or implementing separate bindings, we instead just say
  that the public interface must use the rdc types. In most cases they
  seamlessly convert to/from Qt types anyway.
* In a couple of places we use an array of pairs instead of a map. In
  future we probably want an rdcdict or rdcmap with proper dict bindings
  in python.
2017-12-13 22:43:01 +00:00
baldurk 9b9c74ec03 Fix transform feedback pipeline state display 2017-12-11 20:12:02 +00:00
baldurk a6ebf09785 Add analytics system - disabled for now
* This is a *very* light-touch analytics system that will track the
  simplest and most anonymous statistics that can be useful in
  determining which features are most used or perhaps underused, and
  where it's best to direct development attention.
* It is entirely implemented in the UI layer, no analytics-gathering
  code exists in the library that's injected into programs, and of
  course no capture data (screenshots, resource contents, shaders, etc
  etc) is transmitted.
* Once it's turned on, it will apply to both development and release
  builds. It tracks stats over a month, and then at the beginning of a
  new month it sends the previous data.
* When the user first starts up a build with analytics if there's no
  previous analytics database then they are informed of the new code and
  asked to approve it. They have the option of selecting to manually
  verify any sent reports, or just opt-ing out entirely.
2017-11-29 19:01:22 +00:00
baldurk 1d05177141 Add Qt helper for constructin rdcstr directly from QString 2017-11-29 19:01:21 +00:00
baldurk 286e117d56 Add headers needed for compilation without PCH
* Removing includes of Code/CaptureContext.h removed some dependencies.
2017-11-23 00:20:01 +00:00
baldurk 602511bf33 Reduce parameters that need to be passed for viewing shaders 2017-11-22 19:11:27 +00:00
baldurk 74e25673d2 Fix some integer sign extension/potential overflow issues.
* Reported by Coverity Scan. In all cases, should not be a problem, but
  with an upcast happening anyway we might as well ensure calculation
  happens at a higher precision.
2017-11-22 19:11:22 +00:00
baldurk 43d561a4c0 Fix NULL checking and NULL dereferencing issues
* Reported by Coverity Scan - most of these are not an issue and a
  couple of them are coverity getting really confused (like seeing a
  pointer being assigned to NULL and a count to 0, then a few lines
  later declaring that a loop 0..count will dereference the pointer).
* However it's harmless in all cases to add a bit of robustness to keep
  the analysis happy.
2017-11-22 19:11:21 +00:00
baldurk e75a468d3c Remove direct include of Code/CaptureContext.h in almost all files
* This is a leftover from before the interface was hoisted out, and most
  windows were still calling directly to CaptureContext instead of via
  the public ICaptureContext interface
2017-11-22 19:11:20 +00:00
baldurk 203f6b5255 Silence some warnings about casting from one enum type to another
* Reported by Coverity Scan - I don't think any of these were actually
  a problem since the enum definitions all matched.
2017-11-22 19:11:19 +00:00
baldurk e4555e0d53 Fix a mistaken value-copy
* Reported by Coverity Scan
2017-11-22 19:11:17 +00:00
baldurk 7ec2c79e86 Fix conditional branches on 'constant' values
* Reported by Coverity Scan
2017-11-22 11:59:18 +00:00
baldurk 4c67de2995 Fix copy-paste errors reported by Coverity Scan 2017-11-22 11:50:37 +00:00
baldurk c860d8baa3 Fix uninitialized variable warnings from static analysis
* Reported by Coverity Scan
2017-11-22 11:31:07 +00:00
baldurk a738c7726a Compile fixes on linux 2017-11-21 22:32:39 +00:00
baldurk e0fe401ca5 Add extra elements to pipeline viewer to display hidden state objects
* For example state objects on D3D11, or render pass on Vulkan.
* These are all properly resource-linked.
2017-11-21 19:10:35 +00:00
baldurk 6429d47ee8 Use bindpoint mapping to look up matching shader resources on D3D11 2017-11-20 20:01:02 +00:00
baldurk e790555914 Fix another case with not enough column data and protect against crashes 2017-11-17 17:06:51 +00:00
baldurk d206a012f3 Fix incorrect data-to-column count when adding data to treewidget
* We also add an error in case it happens again.
2017-11-17 16:33:00 +00:00
baldurk 33ff48811b Normalise terminology in UI code - don't call captures 'logs'
* Log is an overloaded term since it can also mean the debug log. We now
  consistently refer to capture files as capture files or just captures
  for short. The log is just for log messages and diagnostics.
* The user-facing UI was mostly already consistent, but many of the
  public interfaces exposed to python needed to be renamed, and it made
  more sense just to make everything consistent.
2017-11-17 16:30:57 +00:00
baldurk 200f0799a4 Generate clickable links to resource inspector in RDTreeWidget 2017-11-17 16:30:56 +00:00
baldurk 1776b4e6c0 Declare ResourceId Qt metatype in public header so it's QVariant'able 2017-11-17 16:30:55 +00:00
baldurk 25de6726f6 Add some cross-linking for panels that view a single resource
* We add a button with a link icon to indicate that it goes to the
  resource details. We'll re-use the crosshair as a visual metaphor for
  any interactive widget that goes to the resource inspector.
* To remove any possible confusion, we change the icon for the texture
  list and locked tabs in the texture viewer to not include the link.
2017-11-17 16:30:54 +00:00
baldurk 7c8628b237 Centralise resource naming with capture context to allow customisation
* We remove the now unneeded name fields in buffer/texture descriptions
  and some of the pipeline state structs.
* A single function will give the human-readable name for a resource id.
  This will look up a custom set of renames, on top of the names from
  the resource descriptions.
2017-11-17 16:30:53 +00:00
baldurk 8997cb9f07 Fix copy-paste error that searched ReadOnlyResources array for UAVs. 2017-11-17 16:30:48 +00:00
baldurk 2f02f2159e Fix some margins/spacings to be more consistent across the UI 2017-11-10 18:36:10 +00:00
baldurk b992e95f94 Update replay proxy to use new serialisation mechanism 2017-11-07 19:30:36 +00:00
baldurk e6c5c03896 Remove rdctype namespace. Rename rdctype::str -> rdcstr, rdcarray, etc
* Since these types are more prevalent than originally designed, it
  makes more sense to remove the namespace for ease of typing/naming.
* Also add a specialised type 'bytebuf' for an array of bytes.
* This makes mapping easier to SWIG since there's no special casing for
  namespaced arrays. Especially so for nested cases like
  rdctype::array<rdctype::str> -> rdcarray<rdcstr>
2017-11-03 16:04:59 +00:00
baldurk 5e59616a8c Update rdctype::array to have a more stl-like mutable interface
* For the most part the interface is stl-compatible, but we have a few
  little changes of our own for convenience.
* This class is still needed after deleting the C# UI, because we don't
  want to pass C++ stl structs over module boundaries and possibly run
  into hard to diagnose incompatibilities.
2017-11-03 16:01:58 +00:00
baldurk 42abaf2b4f Prefer using VK_AMD_shader_info to disassemble when available. 2017-10-23 15:05:29 +01:00
baldurk 4cd36280e8 Fix string comparison being the wrong way around on input bytecode check 2017-10-05 12:03:29 +01:00
baldurk aabea30012 Add alpha2coverage to VK state view, move it & alpha2one to MSAA group 2017-09-13 14:24:48 +01:00
baldurk 7259f9a04a Check samplers array for resources in descriptor sets too 2017-09-13 14:16:29 +01:00
baldurk cb644313db Don't select unused bindings over a valid bind in vk pipeline state
* If there's a variable which is unused and has no binding declared, it
  will be sorted to the end of the list and given a binding of 0. We
  don't want to let this override a valid binding for 0, so make sure we
  prioritise any variable which is marked as used over one that is
  unused.
2017-09-13 14:16:15 +01:00
baldurk ac62a124a5 Don't try and look up the descriptor for push constants in pipe export 2017-09-13 12:30:38 +01:00
baldurk b1031c8036 Remove samplers from ReadOnlyResources array, put them in their own list 2017-08-31 18:34:17 +01:00
baldurk 0faf0931c2 Ditch D3D11's anomalous identity bindpoint mapping for proper handling 2017-08-31 18:34:00 +01:00
baldurk 346419f7a6 Change compile flags from uint32_t to string key/value pairs
* For D3D this is overkill as we just stuff the uint32_t flags into a
  string. However for SPIR-V this will let us store the parameters from
  an OpModuleProcessed.
2017-08-30 11:56:42 +01:00
baldurk 40a0272a3e Remove use of bool32 replay API type&optimise mem layout in some structs 2017-08-24 10:44:45 +01:00
baldurk e85c8d19bf Combine 'special' with 'specialFormat' as single resource format type
* There was no good reason to have a flag indicating if the special
  format was valid or not. Now it's a single enum, with a value
  'Regular' indicating that the compCount/compWidth/compType fully
  describe the format itself.
* This makes code patterns easier as you no longer need to check for
  special then check for specialFormat, you can just test the type
  directly.
2017-08-24 10:37:16 +01:00
baldurk 1b88a39339 Optimise tree widget clearing and child adding by batching updates
* This takes a nice chunk of time off the pipeline state view in
  particular when changing between events.
2017-08-21 17:14:21 +01:00
baldurk 9b4ee72af6 Pass pipeline state around by reference instead of copying by value 2017-08-18 19:37:18 +01:00
baldurk 981436b75f Don't pass around string name of ResourceFormat, request it when needed 2017-08-18 19:37:16 +01:00
baldurk 4c24b0f28f Remove use of ToQStr to convert rdctype::str to QString 2017-08-18 14:13:22 +01:00
baldurk 2291a92302 Fix format string 2017-08-17 13:00:41 +01:00
baldurk 38028b1b64 Add default initialisation for tag object, fixes a warning on gcc 2017-08-16 16:25:29 +01:00
baldurk d57cc1b188 Add more consistency to docking panels and widgets
* Dock panels shouldn't have any frame border or anything like that.
* They should have an external margin of 3 pixels at their border,
  but then no further margins on the layouts (like sub-controls for
  the pipeline state views.
* Toolbars should be Raised & Panel frames. Later we'll replace them
  with actual QToolBars to better customise the painting.
2017-07-28 19:06:46 +01:00