Commit Graph

55 Commits

Author SHA1 Message Date
baldurk 41092e869f Allow clicking 'next draw' from the frame start marker at EID 0 2017-07-17 12:36:04 +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 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 2a4596e06a Add python shell qt window 2017-04-19 18:03:19 +01:00
baldurk ea1dbc27f9 Remove parent widget parameter from shader view/edit/debug functions 2017-04-18 14:57:48 +01:00
baldurk 35f9c53486 Rename *Method to *Callback to be more explicit in the name 2017-04-18 14:57:48 +01:00
baldurk ceb73b85d9 Rename ILogViewerForm to ILogViewer 2017-04-18 14:57:48 +01:00
baldurk 494086f40d Rename RenderManager to ReplayManager 2017-04-18 14:57:48 +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 0ad5709df3 Remove poorly chosen 'Fetch' prefix from a few data structures.
* This goes all the way back to the first iterations where these were
  the only structures and 'Fetch' referred to them returning data from
  the core code to the UI.
2017-04-18 14:57:36 +01:00
baldurk c44f355380 Remove nested structs from D3D12 pipeline state and move to namespace 2017-04-18 14:57:34 +01:00
baldurk af33e5d296 Remove nested structs from Vulkan pipeline state and move to namespace 2017-04-18 14:57:34 +01:00
baldurk 9e23443356 Remove nested structs from GL pipeline state and move to namespace 2017-04-18 14:57:34 +01:00
baldurk b4d3401866 Remove nested structs from D3D11 pipeline state and move to namespace
* Moving into a namespace makes it easier to give the structs non-clumsy
  names while still being unique and not overlapping with the other API
  pipeline states.
2017-04-18 14:57:33 +01:00
baldurk 3841af5697 Add fake profile markers if a capture doesn't have any markers at all 2017-02-13 19:20:20 +00:00
baldurk 2285b209c3 Access CaptureContext & RenderManager by reference, not pointer
* Neither of these can or should be NULL so enforce it explicitly.
2017-02-09 19:28:24 +00:00
baldurk f4bd51fc21 Revamp progress dialogs to abstract away most of the handling 2017-02-09 19:28:20 +00:00
baldurk 923dfbd6fb Add Qt version of statistics viewer 2017-02-03 20:11:06 +00:00
baldurk 346550e012 Add debug message view to Qt 2017-02-03 20:11:04 +00:00
baldurk 477df04072 Make sure we're on a consistent event before calling OnLogFileLoaded
* Certain panels like BufferViewer assume there is a current drawcall
  at startup and not an invalid event ID like 0. Normally the event
  browser is loaded first and sets the event ID, but if it's later in
  the list this will break.
2017-02-01 11:17:56 +00:00
baldurk 7ef73f92ef Add shader viewer (view only - not edit/debug) using Scintilla widget 2017-01-23 19:09:29 +00:00
Alex Smith 6e2fc42cbd qrenderdoc: Show currently selected event in the API inspector
Currently, selecting an event with children (e.g. vkCmdExecuteCommands)
in the event browser will cause the API inspector window to show the
final child event, rather than the event itself. This behaviour makes
sense everywhere else: selecting an event with children shows the state
after all children have completed.

However, for the API inspector, we want to be able see API calls for
the parent event when it is selected rather than those of its last
child, particularly in the case of vkCmdExecuteCommands which may have
other API calls leading up to it.

To allow this, distinguish between the "current event" and "selected
event". For an event with children, the former refers to the last
child, while the latter refers to the event itself. ILogViewerForm now
has two separate event callbacks for when either one changes.

The API inspector now makes use of the selected event, while everything
else continues to use the current event.
2017-01-14 20:23:51 +00:00
baldurk 030cbfde9a Batch update copyright years everywhere 2017-01-06 12:13:31 +00:00
baldurk 4ce3c31fef Add un-finished work in progress mesh buffer viewer 2016-11-25 17:05:58 +01:00
baldurk a2d40f8061 Add constant buffer previewer for qrenderdoc 2016-11-25 14:17:20 +01:00
baldurk 6ef7dbb356 Add pipeline state viewer and implement vulkan viewer
* Minus interactions with as-yet-unimplemented windows like buffer and
  shader viewers.
* Also missing HTML export
2016-11-24 19:47:05 +01:00
baldurk e13b6277ed Add API Inspector 2016-11-21 19:33:19 +01:00
baldurk 23d8c12457 Add status message about log warnings/errors 2016-11-21 17:38:02 +01:00
baldurk 60f83c1b5e Set icons for child windows 2016-11-21 17:04:08 +01:00
baldurk 86c9742309 Let capture context manage singleton window panes 2016-11-14 15:20:51 +01:00
baldurk 2ccc157114 Add TempLogFilename() utility function 2016-11-09 18:33:38 +01:00
baldurk bb2f3a205c Move common Qt utility functions & JSON I/O together in a single place 2016-11-09 13:23:53 +01:00
baldurk 5a243c4b42 Add an implementation of QOverload to avoid depending on Qt 5.6
* Also switch travis to 5.6 so we don't add a dependency on 5.7 by
  accident.
2016-11-07 19:22:56 +01:00
baldurk 18898b7f09 Set up proper log loading/closing
* This includes the recent log menu list, progress bars and popup.
2016-10-12 16:59:25 +02:00
baldurk 8a375abe41 Add self-deletion and waiting to LambdaThread 2016-10-12 16:51:29 +02:00
baldurk ec1ce1d738 Fix bool checks across threads to be correct, so it's not optimised out 2016-10-12 13:01:09 +02:00
baldurk fbcb04944d Add texture saving dialog 2016-10-12 00:26:15 +02:00
baldurk b4b45835b0 Delete thread when it's cleaned up, not automatically 2016-10-11 18:32:34 +02:00
baldurk 3051c48357 Add RefreshStatus to force-replay to the current event 2016-10-10 13:29:05 +02:00
baldurk 9d49b7ae38 Add menu-showing function to RDDialog (using manual event loop pump) 2016-10-10 13:28:52 +02:00
baldurk 03eb2ea696 Save and load persistant config file 2016-10-07 19:51:05 +02:00
baldurk ff6da5d81e Add layout loading/saving to main window 2016-10-07 19:51:02 +02:00
baldurk b96d49190c Avoid naming manually connected slots on_x_y() 2016-10-07 15:58:45 +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 ccfa1ceaed Add some utility functions to rdctype::array/str
* Avoids the need to directly reference .elems to cast to const char*
  for strings, and has begin()/end() for C++11 foreach loops
2016-10-07 15:58:44 +02:00
baldurk a901fc0d5b Fix isRunning check - just wait for m_Thread to be NULL 2016-10-07 15:58:43 +02:00
baldurk 3ea107fd6c Don't race to a double-delete, LambdaThread deletes its own thread 2016-10-05 20:20:19 +02:00
baldurk 044c16a0a3 Switch to helper functions for blocking dialogs (file and message)
* To continue the workaround for QTBUG-56382 we need to run our own
  manual message loop for dialogs as well. We only use a couple so we
  can just run it through a handful of thin wrappers.
2016-10-05 16:52:05 +02:00
baldurk 86623528bf Work around QTBUG-56382 with manual event loop flushing
* See https://bugreports.qt.io/browse/QTBUG-56382 for more details -
  creating DXGI swapchains adds a windows hook, and enough windows hooks
  forces out Qt's internal hook which it relies upon for proper event
  processing.
2016-10-05 16:52:05 +02:00
baldurk c47ab2c515 Fix for conflicts between X headers and Qt due to overlapping #defines 2016-10-05 01:13:09 +02:00