Commit Graph
450 Commits
Author SHA1 Message Date
baldurk 468c6c1e80 Wrap up CaptureOptions encoding via string into member util functions 2018-02-14 19:21:55 +00:00
baldurk 1ee01e1f82 Apply a normalisation pass over the serialised data
* This is a backwards-incompatible change, so it's done here before v1.0
  so that we can freely break compatibility and not need to define a lot
  of ugly compatibility code.
* The primary motivation is to make the serialised data more uniform
  and have fewer special cases where the serialised form is naturally
  defined from the functions/structs in question.
* There are still some special cases or variances but they should be
  more isolated and only where really necessary.
* Remove some cases in the D3D12 struct serialising where we were
  directly serialising child struct members in the parent struct.
* We now try to match argument/struct member order as closely as
  possible.
* Serialising an array with a count no longer reads the count back out
  into that variable, counts must be serialised separately. This means
  all members/arguments are explicitly present in the structured data
  and also eliminates the awkward case where a count needed to be
  serialised separately after an array if we want to have the count be
  a valid number even if the array could be NULL. It also means we don't
  need the FIXED_COUNT() macro since array lengths can be plain values
  and don't have to be a reference type.
2018-02-14 15:57:53 +00:00
baldurk b0f2f6de58 For bitfields with no values set, return Type(0) instead of "" 2018-02-14 00:41:16 +00:00
baldurk 80bb034315 Treat -1 as the invalid microsecond duration value, not 0
* Some functions can be so quick that they register as a duration of 0.
  This is expected and we should not end up omitting it when importing
  or exporting because we think it was missing. As a 64-bit value,
  losing a bit for signedness is not a problem.
2018-02-12 20:47:51 +00:00
baldurk d3bf628394 Handle opening vulkan shaders that are not in a pipeline.
* Previously we were relying on the pipeline info create to initialise
  the reflection for an entry point, now we do it on demand wherever it
  is needed.
2018-02-09 19:03:55 +00:00
baldurk 5a5d8380ad Persist texture save config between saves. Refs #862 2018-02-09 17:51:32 +00:00
baldurk 3b94095201 Handle differences between EXT_debug_label and KHR_debug
* In particular they have different behaviour for what length value
  indicates that the length should be fetched from the NULL
  terminated string.
2018-02-02 18:39:46 +00:00
baldurk cb34a2daea Revamp android patching to only check for (& change) the debuggable flag
* We don't consider anything else, this includes permissions or the
  library being present. Since we no longer expect to patch in the
  library we also don't check its version (however we leave the tag in
  case it is useful in the future).
* If the user has root access we will never warn, assuming the injection
  will work fine even without the debuggable flag.
2018-01-26 21:19:14 +00:00
baldurk 8f405a2197 Render mesh data with instanced properties correctly. 2018-01-24 16:14:22 +00:00
baldurk 5150a9531b Allow queuing a sequence of frames both before capture, or while running
* We also make the frame counting consistent: Frame 0 is the frame from
  device initialisation to first present, Frame 1 is from first present
  to second, and so on after that.
2018-01-24 11:38:37 +00:00
baldurk f751be98ed Fix version project building on 32-bit 2018-01-16 23:17:55 +00:00
baldurk dea21b20a0 Remove global GIT_COMMIT_HASH define, use GitVersionHash global var
* On windows, the change in a global GIT_COMMIT_HASH define in each
  project needing it meant a full rebuild every time the commit changed.
* Ideally we'd set the define only on one file in each project, but
  MSBuild doesn't seem to support that. Instead we make a new tiny
  project that compiles a single cpp exporting a global var, and
  reference that global var in each other project.
2018-01-16 20:17:53 +00:00
baldurk 4b7e7f5df1 Add section type for embedded AMD RGP profiles 2018-01-11 15:33:43 +00:00
baldurk e305029ddd Update copyright years to 2018 2018-01-01 17:55:29 +00:00
baldurk 96e39cb781 Add a preview window ability to remote servers. Always on for android
* On android in particular this shows some sense of what's happening on
  the device and gives user feedback that it's not completely dead.
2018-01-01 17:31:23 +00:00
baldurk 7a2305ae31 Change by-ref passed float or bool parameters to callbacks in public API
* Mostly used for passing a progress float back during a long blocking
  call like opening a capture or doing a copy.
* This is much more feasible for python to bind to.
* In several cases we just use a tiny lambda that updates a float anyway
  since we can't push the progress directly into a progress dialog, but
  need to let it query from a temporary in-between float.
2018-01-01 17:31:23 +00:00
baldurk beaa642f73 Remove bool parameter to InitResolver to cancel resolving 2018-01-01 17:31:20 +00:00
baldurk 6572cd97f5 Tidy up handling of windowing data, make it a bit more type safe 2018-01-01 17:31:19 +00:00
baldurk 31b4064702 Use ItemHelper more in rdcarray to avoid slowdown on basic types 2017-12-29 18:30:45 +00:00
baldurk 559656e0f6 Send capture progress over an active target control connection 2017-12-29 18:30:43 +00:00
baldurk d14c7f3894 Track a set of active APIs instead of a single current API.
* We also let an API be active without presenting, and then note when it
  starts presenting. This lets us detect the case where an API has been
  started up and used, but isn't presenting so we're not able to capture
  it. Less confusing than telling the user no API is detected, and lets
  us direct them to the relevant documentation.
* There's also a flag indicating if the API can be captured even if it
  does present.
2017-12-29 18:30:38 +00:00
baldurk 9ca9e086b1 Add fake chunks for multi-indirect commands' data
* Currently we only have structured data for the CPU-side calls, but we
  want to display the information for the individual selectable GPU-side
  commands.
* So we add a new fake virtual chunk and insert it with data pulled from
  the GPU information, and any meta-data like the offset of that
  command.
2017-12-27 16:05:15 +00:00
baldurk 21d5943d82 Remove dependency on Qt in qrenderdoc python module
* The main addition here apart from some extra stubs is a new rdc type
  for date time objects.
* Although the module doesn't do anything and is only used for docs
  reflection it is desirable to not have to link against Qt as this
  can cause problems when linking the module without unresolved symbols.
2017-12-27 16:05:15 +00:00
baldurk 184c7be0b8 Add an enum listing how a shader's bytes are encoded. 2017-12-22 16:52:42 +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 d902981f72 [Coverity] Fix comparison operators with copy-paste errors 2017-12-21 12:15:32 +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 669fa9dc40 Expose the total number of sections via ICaptureAccess
* This lets external code iterate over all sections.
2017-12-20 18:01:20 +00:00
baldurk 0c1d602c37 Use ToStr not an internal array for fixed section names 2017-12-20 18:01:20 +00:00
baldurk 764b39a23c Add update checking system to Qt UI
* This only runs on windows - on other platforms we rely on system
  distribution or user local builds.
2017-12-19 17:31:32 +00:00
baldurk 08c67f2149 Revert accidental commit setting RENDERDOC_OFFICIAL_BUILD to 1
* This was during testing and accidentally got rolled in. My bad!
2017-12-19 16:08:04 +00:00
baldurk f2e7f8f1a0 Refactor crash/bug reporter system
* The UI dialog is now in Qt. We run qrenderdoc.exe with a very minimal
  startup to display the dialog and send the report.
* The flow has been simplified to have less text and an easier time to
  just click through and send.
* On the first report, the user is gently nudged to enter their email
  address for contact and by default the email is saved for next time.
  They're not nagged more than once about this.
* Optionally the user can select to upload the capture. This is always
  default off, and there is a confirmation dialog making sure the user
  intended to select it.
* After the bug is reported, a unique URL is generated and returned
  which the user can then click back on to see if there's any update. By
  default the UI will also remember the URL and check it every couple
  of days and alert the user in the help menu that there's an update.
2017-12-19 12:26:34 +00:00
baldurk 1e36e73ed9 Remove reference to hash_version.sh script 2017-12-19 12:26:34 +00:00
Cody Northrop 82f4e82155 Add version checking to Android workflow
* Tag the RenderDoc layer with a version string that
  matches the host, including git hash.
* In developer builds, check the version when scanning the
  application for RenderDoc support.
* Pass the warning back to the UI to offer ways to fix.
* Update APK patching to remove existing layer.
2017-12-19 13:26:11 +01:00
baldurk 2460bc998d Add sphinx_paramlinks extension and use :paramref:`` to reference params 2017-12-15 17:33:53 +00:00
baldurk 8d29758851 Remove members of public structs called 'bytes'
* It is at best confusing, and at worst could cause errors by aliasing
  with the python type.
2017-12-15 17:33:53 +00:00
baldurk de6e95845c When specifying a built-in type return type, always put it in ``s 2017-12-15 17:33:52 +00:00
baldurk 51cd28b62f Add ToStr case for raw filetype 2017-12-15 12:28:41 +00:00
Richard Khoury a1c8d1d256 Missed a file change from the previous commit. 2017-12-15 13:20:26 +01:00
Richard Khoury d8bc07f945 Added ability to save out overlay textures using the TextureSaveDialog.
This is part of the work specified by github Issue 586, allowing the
ability to save out the overlay in the TextureViewer.  If no overlays
are on then there is no option to save the overlay. Currently there is
no option to remap the overlay to a grayscale or absolute value range
before saving. This can be a future task.

NOTE: the overlay texture resource that's saved out is not the blended
texture that the user will see in the TextureViewer, it is just the
overlay itself. The ability to save out the blended texture would be a
future task.
2017-12-15 13:20:26 +01:00
Peter Gal bca909adef Android abstract socket
Replace Android TCP communication with unix abstract sockets.
This makes it possible to not require INTERNET permission for
Android applications.
2017-12-14 13:41:06 +00:00
baldurk a75a036a12 Add operator== and operator< to many interface structs
* This will enable the last few python list emulation functions, like
  index (which needs operator== to find objects) and sort (which
  obviously needs operator< to sort).
2017-12-13 22:43:03 +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 584b3c041c Add functionality to return raw thumbnail bytes, not encoded
* This is useful if you want to retrieve the thumbnail for in-memory
  processing instead of writing it to disk immediately.
2017-12-12 14:30:09 +00:00
baldurk 606660b4e2 Add analytics boolean that tracks if bundles are used in D3D12 2017-12-11 17:49:05 +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 dde3a21e67 Add helpers for constructing structured objects from primitives/QVariant 2017-11-29 19:01:21 +00:00
baldurk 47f2997ede Use std::is_trivial not std::is_standard_layout for checking memset'able 2017-11-27 21:20:42 +00:00
baldurk 7a11d1aa6b Where possible use memset to default initialise types like byte/int/etc 2017-11-27 20:35:00 +00:00