Commit Graph

133 Commits

Author SHA1 Message Date
baldurk eeeba59058 Remove unnecessary GL/EGL link in qrenderdoc 2018-07-07 00:00:03 +01:00
baldurk 14e3a3d360 Move API-agnostic pipeline state wrapper into core interface
* There's no need for this to be in the UI, and moving it allows it to be used
  from script which is very useful.
2018-06-18 18:39:06 +01:00
baldurk e91116706c Move scripts/ folder to util/ 2018-05-01 18:53:03 +01:00
baldurk 4a986f44d3 Add a custom collapsing group box control 2018-04-26 13:34:09 +01:00
baldurk 048d2c4f4e Bring RenderDoc window to foreground when event is selected from RGP 2018-04-25 19:10:52 +01:00
baldurk 2d0f675ca8 Add socket-based interop with RGP and profile embedding in captures 2018-04-25 19:10:51 +01:00
baldurk 2354a0e71d Change OrderedListEditor to be a widget, not a dialog 2018-01-17 21:07:04 +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 16f64a5ace Remove use of unnecessary swig generated .py wrappers
* These .py wrappers are relevant for the non-builtin path, but since we
  use -builtin they serve no purpose except to make things more complex.
* So instead we make the module directly exported as 'module' instead of
  '_module'.
* On windows there's no conflict because we have renderdoc.dll vs
  renderdoc.pyd. On linux it's librenderdoc.so vs renderdoc.so.
* To prevent supporting files like .lib / .pdb from conflicting on
  windows we build the python modules into a subdirectory. They're not
  ever used by the UI (it links in the bindings directly).
2017-12-25 15:05:28 +00:00
baldurk 203dca8434 Split out invocation of SPIRVDisassembler into member function 2017-12-22 17:03:08 +00:00
baldurk 417a811fad Expand docstring checks to also check names of symbols in the interface 2017-12-22 14:41:43 +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 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 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 4a4089f316 Add generic user-provided notes to save along with the capture.
* In future one of the notes items would be for gathered hardware info.
  Not automatically, but with one button press the full configuration
  can be embedded.
2017-11-17 16:31:03 +00:00
baldurk d009ed3b30 Add a resource inspector window for viewing resource details 2017-11-17 16:30:52 +00:00
Cory Bloor bd994848e1 Improve docs for picking Qt version on Linux 2017-10-23 14:27:24 +02:00
baldurk 1992183e8e Add support for specifying a subfolder under the lib/ target. Refs #750
* This allows a buidler to customise from e.g. /usr/lib/librenderdoc.so
  to /usr/lib/renderdoc/librenderdoc.so - which is harmless since the
  library is 'private' and not intended to be linked against directly.
2017-09-26 11:00:17 +01:00
baldurk 80ec87fdd2 Pass -rdynamic to qrenderdoc link, ensures replay marker sym is exported 2017-09-11 20:23:56 +01:00
Matthäus G. Chajdas ba4c9d6837 Prepare everything for the performance counter viewer window. 2017-08-24 13:21:02 +01:00
Matthäus G. Chajdas 29376f34cc Add a performance counter selection dialog. 2017-08-24 13:21:01 +01:00
baldurk cfd816d7f3 Enable RDStyle by default, add style selection in the settings dialog 2017-08-16 17:39:37 +01:00
baldurk 9a782158fd Fork RDStyle to RDTweakedNativeStyle
* The idea is tha this style won't change the palette and will just do
  some minimal additions/changes to whatever the native style is, to
  work around some rough spots.
2017-07-28 19:06:41 +01:00
baldurk 83c413129e Add the beginnings of a unified cross-OS style
* First thing changed, auto-raise toolbuttons don't sink when enabled,
  but remain flat and highlighted.
2017-07-28 19:06:40 +01:00
baldurk 8476be2300 Fix mac build, split PlistBuddy use to separate script, suppress errors
* There's no "add or replace" so we have to just delete and ignore if
  it fails, then add/set as normal.
2017-07-25 22:06:30 +01:00
baldurk 6612024f43 Fix use of PlistBuddy on subsequent recompilations of qrenderdoc on OS X
* There's an error if you add a property that's already there, so we
  instead delete it each time before adding it.
2017-07-25 09:21:14 +01:00
baldurk d3d1bcd136 Add work in progress timeline bar
* Has an EID scale bar along the top, and simple zoom/pan, but nothing
  else.
2017-07-13 18:44:41 +01:00
baldurk def80ac8da Only build qt.conf on windows, it breaks linux platform plugin search :( 2017-06-13 14:56:40 +01:00
baldurk 3b6f63be0d Make event browser columns properly resizable and re-orderable
* Annoyingly although Qt has an internal bool allowUserMoveOfSection0
  which does exactly what we want allowing the tree column to be
  movable, we can't enable it because it's private. So instead we have
  to re-implement section moving ourselves.
* Minor tweak - also made RDTreeWidgets non-movable by default since
  usually we don't want to allow it.
2017-06-03 00:38:02 +01:00
baldurk 26c4284b26 Add new ToolWindowManagerSplitter files to projects 2017-06-01 12:31:29 +01:00
baldurk 158bc4d583 Update code for new toolwindowmanager 2017-05-29 13:31:28 +01:00
baldurk 441d136177 Add extended RDToolButton 2017-05-10 17:20:39 +01:00
baldurk 0ecc6ca877 Enable QT_NO_CAST_FROM_ASCII & QT_NO_CAST_TO_ASCII
* Added a couple of utility macros to help with the conversion. lit() is
  paired with tr() for untranslated text.
* QFormatStr is more explicitly for non-textual formatting strings.
* Both are just #define'd to QStringLiteral()
2017-05-02 22:58:12 +01:00
baldurk b5e6596512 Make sure we build qrenderdoc with svg 2017-04-27 15:16:34 +01:00
baldurk 2a4596e06a Add python shell qt window 2017-04-19 18:03:19 +01:00
baldurk a740696dbe Add an extended RDTextEdit control subclassed from QTextEdit 2017-04-18 14:57:49 +01:00
baldurk 494086f40d Rename RenderManager to ReplayManager 2017-04-18 14:57:48 +01:00
baldurk b8d3efdb31 Move document checking to a C++ header file
* It's better to edit C++ source natively not in the SWIG file, and also
  clang-format can format it.
2017-04-18 14:57:44 +01:00
baldurk cbc27222e2 Add qrenderdoc python SWIG bindings, for the stable/clean interface 2017-04-18 14:57:43 +01:00
baldurk 094c4164dc Refactor qrenderdoc to provide stable, clean and deliberate API
* Note, this API is still in-flux and beta, so there may still be some
  more changes before it's 'stable', and even then it will still be
  subject to some amount of change.
* This API is then exposed to python via SWIG bindings and hides
  internals that don't need to be visible, and means the actual API is
  easier to work with.
* We also use this API to reduce inter-dependencies between different
  windows that need to interact with each other at a high level.
* The naming is python/standard RenderDoc TitleCase method names, not
  Qt style camelCase methods.

# Conflicts:
#	qrenderdoc/Windows/PipelineState/D3D11PipelineStateViewer.cpp
#	qrenderdoc/Windows/TextureViewer.cpp
2017-04-18 14:57:43 +01:00
baldurk 2e2a58950a Integrate pyside2/shiboken2 to be able to bind Qt to python
* On linux we make it optional since it's too large a project to add
  as a build step via ExternalProject_add.
2017-04-18 14:57:41 +01:00
baldurk cb510298d8 Add wrapper around tracking a python context and executing scripts 2017-04-18 14:57:41 +01:00
baldurk 12472d93bc Link against python in qrenderdoc 2017-04-18 14:57:41 +01:00
baldurk 66353de7fb Add support for SWIG wrapping python callbacks as std::functions 2017-04-18 14:57:41 +01:00
baldurk 940d3662eb Add SWIG file to generate python bindings for internal replay API
* SWIG outputs two files - renderdoc_python.cpp with the main actual
  wrapping code, and renderdoc.py a small module that does some
  bootstrapping on python side.
* We use a custom version of SWIG that generates strong/typed enums in
  python based on enum classes, so in cmake we add this custom swig
  fork as an external project and compile it before generating the
  wrappers. On windows there's a committed version of the SWIG binary
  that gets run directly from the .pro or .vcxproj.
* The renderdoc.py gets embedded as a resource on windows or as a C
  generated unsigned char array via include-bin on other platforms, so
  that we can insert it into the python context without needing it to
  sit around on disk somewhere in sys.path
2017-04-18 14:57:40 +01:00
baldurk 7c45218df9 Since we no longer use anything from qmake on windows, don't set dirs 2017-04-18 14:57:40 +01:00
baldurk 2e87ca4531 Require qt creator to locate the cmake project to build on non-windows
* Previously the cmake build would put librenderdoc.so in a /bin folder
  in the source folder so the qt creator project could link against a
  fixed path when just opening the project solo.
* This won't scale though for fetching the SWIG outputs from cmake, and
  it's ugly to modify the source folder for out-of-source builds.
* Instead we have cmake generate a qt creator include file with all of
  the settings and paths needed, and pass the CMAKE_BINARY_DIR into
  qmake when building. This does mean that when opening the project in
  qt creator you need to specify CMAKE_DIR=/path/to/build though.
* As a bonus, this means we can let cmake identify where python is and
  have qt creator link against it rather than having to hardcode include
  paths etc.
2017-04-18 14:57:40 +01:00
Peter Gal 081f65dff1 Disallow the linker to ingore shared libraries during linking
In some cases when the renderdoccmd/qrenderdoc is linked the linker
ignores the libEGL.so and only uses the librenderdoc.so.
This is because the renderdoc shared library provides the
same symbols as the libEGL.so. However we need to keep the
libEGL.so as we are using RTLD_NEXT in the renderdoc shared
library.
2017-04-17 02:39:29 -07:00
Dimitris Kapnopoulos d3faa58a78 Added Tips Dialog. Changed Tips_SeenFirst to Tips_HasSeenFirst 2017-03-21 04:09:47 -07:00
Dimitris Kapnopoulos 4ab61286e4 Added custom Splitter class, RDSplitter, with titles in the handles 2017-03-13 10:02:43 -07:00