Commit Graph
49 Commits
Author SHA1 Message Date
baldurk 3290dd1448 Move version information to public API so that all projects can share it 2016-11-11 20:35:59 +01:00
Michael Rennie b225731a2f Popup a dialog if we haven't granted Android storage permissions. 2016-11-11 20:34:04 +01:00
baldurk 5286f950ff Add processing to different formats and max size while fetching thumb 2016-11-02 23:39:35 +01:00
Michael Rennie bcb9914665 Start remoteserver and captured packages by adb commands in native code.
Use adb to enumerate installed 3rd party packages in capture dialog.
Cleaned up all the "adb:" strcmp's.
2016-11-02 16:10:29 +01:00
Michael Rennie 8899cb8e73 If adb path is set, use adb devices to enumerate Android devices.
Process::LaunchProcess() optionally returns the child's stdout & stderr.
Added carriage return to string trim().
2016-11-02 16:10:29 +01:00
baldurk f368a65843 Add easy support for self-hosted captures on windows only
* By renaming the renderdoc and renderdoccmd projects to something else
  (say 'selfhost' and 'selfhostcmd') then they can be used to capture
  renderdocui and the replaying that's happening.
* Only supported on development builds and might break down, but it's
  handy to have as an easy to enable option.
* There's also a couple of handy python functions exposed -
  renderdoc.StaticExports.StartSelfHostCapture(string dllname)
  renderdoc.StaticExports.EndSelfHostCapture(string dllname)
  which can be used to start and stop the capture around e.g. a shader
  debug operation or a pixel history operation or something similar.
2016-10-25 19:50:04 +02:00
baldurk 402ef54f0d Enable QT_MESSAGELOGCONTEXT and debugging info in release builds 2016-10-12 13:02:03 +02:00
baldurk e64359b40d Fix picky clang warning about comparing enums, which is on purpose 2016-10-07 22:08:03 +02:00
baldurk bfac4adfb8 Expose full logging to UI layer, pipe Qt messages etc into main logs 2016-10-07 15:58:45 +02:00
baldurk 9f4a60028e Handle injecting environment variable params
* This also fixes the problem of capturing 32-bit programs with 64-bit
  RenderDoc failing to properly insert environment variables and
  error'ing when it tries to do it directly.
2016-09-28 17:55:45 +02:00
Michael Rennie ab71450fb0 Add offset to Android network ports, to differentiate from localhost.
This requires adb forward to include the offset, for example:
adb forward tcp:38970 tcp:38920
adb forward tcp:39970 tcp:39920
2016-09-15 13:42:05 +01:00
baldurk c9eeef3151 [Coverity] Add proper NULL check before comparison 2016-09-14 17:41:14 +02:00
baldurk 4dc9857341 detect adb: (invalid in normal hostname) as android remote target
* For now, just redirect to 127.0.0.1 and assume the user has proper
  port forwarding set up, but in future we'd do this ourselves and maybe
  parse out a device name after the adb:
2016-09-12 20:05:51 +02:00
baldurk d2faf76356 Save machine ident in captures and compare to machine ident on open
* If the machine idents differ in significant ways that we'd consider
  it to be a different platform (currently just OS), and if so mark it
  as supported but suggested to be replayed remotely.
2016-08-19 17:26:36 +02:00
baldurk b5e6f8bef2 Allow specifying environment variable modifications
* This works for local and remote invocations of programs, but is mostly
  useful on unix systems (Windows programs use env vars less often)
2016-08-19 17:26:33 +02:00
baldurk 481a28dc29 Rename RemoteAccess to TargetControl to better disambiguate RemoteServer 2016-08-19 12:23:19 +02:00
baldurk 39f453b166 Rename replay host to remote server, consistently. 2016-08-01 19:38:21 +02:00
baldurk ced8a62af6 Add replay command (with optional remote replay) 2016-07-12 17:39:23 +02:00
baldurk 73dc89f25a Allow specifying a listen interface and port, for remote replaying 2016-07-12 17:39:22 +02:00
baldurk af3cfa8932 Add replay entry point to get git commit hash 2016-07-12 17:10:42 +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 5f28b745a2 Format code according to newly added clang-format
_  /)
                 mo / )
                 |/)\)
                  /\_
                  \__|=
                 (    )
                 __)(__
           _____/      \\_____
          |  _     ___   _   ||
          | | \     |   | \  ||
          | |  |    |   |  | ||
          | |_/     |   |_/  ||
          | | \     |   |    ||
          | |  \    |   |    ||
          | |   \. _|_. | .  ||
          |                  ||
          |repository history||
          |                  ||
  *       | *   **    * **   |**      **
   \))ejm97/.,(//,,..,,\||(,,.,\\,.((//
2016-05-22 19:41:53 +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
Cory Bloor 0093fdb31d Add GetVersionString to RenderDoc API 2016-04-17 04:48:15 -06:00
Cory Bloor 068e38f8f3 Fix memory leak in thumbnail size check 2016-04-17 04:43:54 -06:00
baldurk 2e0ffa7813 Batch update copyright years everywhere 2016-02-07 18:50:45 +01:00
baldurk 65011ebcfa Pass scoped context name/type directly, don't combine into temp string 2016-02-07 18:42:16 +01:00
baldurk 4609fa710b Update RenderDoc application-facing API to a stable/mature version.
* This API is now intended to be forward and backward compatible as much
  as possible. Meaning applications should be able to run without
  changing on many RenderDoc versions after the one they are built
  against without breaking.
* All function pointers are fetched at once in one versioned GetAPI()
  function, to save on constant GetProcAddress/dlsym'ing.
* Otherwise, it's largely similar to the previous API.
2015-08-23 15:12:05 +02:00
baldurk 5678ea7b29 Fix pixel history getting confused if some (not all) fragments discard 2015-07-16 22:17:06 +02:00
baldurk 1f5c8a450a linux compile fixes 2015-07-10 18:08:24 +02:00
baldurk af5c40cf7b Need to allocate memory via callback to renderdoc.dll as well as freeing
* This whole interface really needs a tidy-up at some point, but for now
  this is enough.
2015-07-10 16:38:39 +02:00
baldurk 4c988e9e3a Better arcball controls in the mesh viewer
* Tweaked flycam a bit too, but not much.
* Refactored the API/C# side camera classes to avoid exposing a ton of
  stuff just to do relative rotations in the arcball via quaternions.
2015-07-07 15:38:00 +02:00
baldurk edda31248f Render bounding box around mesh, centre & scale arcball on bbox
* The arcball lookat position can also be dragged with alt-click or
  middle click.
* Also supports other elements as position not just magically-selected
  "POSITION" element.
2015-07-06 19:58:45 +02:00
baldurk b8226fc97c Add new API calls for embedding renderdoc in apps
* This will easily let an application tell if an instance of the replay
  UI is currently connected, and if not launch it and connect. Good for
  integrating renderdoc somewhere where you can trigger a capture, and
  then have the replay UI pop up to either connect live, or open the
  most recently log.
2015-06-19 22:37:29 +02:00
baldurk de61af5921 Add app API function to get number of captures 2015-06-19 22:35:07 +02:00
baldurk b41b5242d1 Support switching between multiple APIs in the same program. Closes #124
* The core class is now responsible for tracking the active window and
  cycling through, so it can cycle through multiple APIs.
* For GL we only set up associations for capturable windows, and only
  those that present (since helper windows are often created). Since
  GL doesn't really have a 'this window is done rendering' call, we just
  decay old windows that haven't presented in >5 seconds.
* Also on GL, legacy/uncapturable windows aren't associated so they will
  not cycle to at all.
* The embedding API now expects a device pointer and window handle to
  set active window or start/end a capture. You can still pass NULLs if
  there is only one API active.
2015-04-13 11:31:30 +01:00
baldurk f1f72ec8ff Add process for programs to voluntarily remove renderdoc. Refs #115
* To remove renderdoc (e.g. if the API version doesn't match what is
  expected), user code can call RENDERDOC_Shutdown() to remove the running
  thread and undo any library hooks, then unload the dynamic library.
* This still isn't recommended as there could be unexpected side-effects,
  and it will definitely break if this happens after any APIs have been
  initialised, but it's an option.
2014-12-21 11:30:29 +00:00
baldurk 2484bc8bc7 Use UTF-8 everywhere possible and only use wchar_t where required.
* This means that all APIs pass byte string types. ALL strings everywhere
  in the entire codebase must be assumed to be and treated as UTF-8 content
  not ASCII.
* Gets rid of all the horrible %hs specifiers that caused warnings on
  linux! Hooray.
* We convert to wide strings, or use wide characters, only when necessary
  to use the Win32 API. Some windows specific code will stay in wide chars
  just for convenience.
* Files are already serialised as UTF-8 strings for linux/windows binary
  compatibility, so this change doesn't break backwards compatibility.
2014-11-23 14:45:16 +00:00
baldurk 61cc49163b Add API function to unload breakpad crash handler 2014-10-22 18:44:27 +01:00
baldurk 9460fbd970 Add feature to globally hook processes to inject indirectly.
* This allows you to hook into processes that are difficult to launch
  directly with the existing functionality in RenderDoc.
* This is rather risky, as it modifies the AppInit_DLLs registry key to
  inject a small shim dll that checks for the desired process and injects
  the full renderdoc.dll. If that registry key got left, or if there was
  some incompatibility with the shim dll, you could have problems. It
  should only ever be used as a last resort if there's no other way to
  capture.
2014-10-05 13:57:11 +01:00
baldurk dad0ba91c4 Return values should be bool32 not bool 2014-09-25 16:18:30 +01:00
baldurk aa4dc6f5ab bool should be explicit bool32 on parameters from external API 2014-09-17 18:40:12 +01:00
baldurk 69fec43309 Add API to set which keys trigger cap etc in-program
* Not exposed in the UI to be able to configured just yet, but it can be
  set by a program that's renderdoc-aware.
2014-09-14 13:17:00 +01:00
baldurk 67b8b4521a Add api for applications aware of renderdoc to get list of captures 2014-09-13 13:19:34 +01:00
baldurk 6fbb247efd Re-organise external-facing headers to be more easily used
* renderdoc/api/replay/ contains all the headers for using the replay and
  analysis side of renderdoc (like in a UI or auto-testing tool)
* renderdoc/api/app/ contains the headers if you wanted to write a
  renderdoc-aware application.
2014-09-13 12:52:25 +01:00
baldurk b8af0fa144 Compile fix for gcc (or others where 'and'/'or' are keywords) 2014-09-09 22:57:07 +01:00
baldurk d04aba48f7 Add simple API version fetch function.
* Plugins/apps that build against the header (and so get the
  RENDERDOC_API_VERSION macro) can call this to verify that they're running
  against compatible API functions. If the versions don't match, the app
  should immediately quit.
2014-09-02 00:54:43 +01:00
baldurk 546a1fbb31 Add functionality for overlay tweaking & manual capturing by apps
* The functionality is exposed via dllexported functions so that apps can
  call it to tweak renderdoc's behaviour when injects.
  1) Can now turn bits of the overlay off, or hide it entirely.
  2) Can also manually start and stop a capture on a given window. This
     skips the need for swapping between active swapchains, and allows the
     app to define the exact region of D3D11 calls to be captured (could in
     fact be many frames).
     The window provided determines the swapchain used for thumbnail, and
     also implicitly specifies the device to be used for capture.
2014-09-02 00:21:12 +01:00
baldurk c38affcded Initial commit of existing code.
* All renderdoc code up to this point was written by me, history is available by request
2014-05-02 08:33:01 +01:00