Commit Graph

80 Commits

Author SHA1 Message Date
baldurk 200f0799a4 Generate clickable links to resource inspector in RDTreeWidget 2017-11-17 16:30:56 +00:00
baldurk 2ac0802b10 When a custom name is changed, refresh the UI to propagate it properly 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 d009ed3b30 Add a resource inspector window for viewing resource details 2017-11-17 16:30:52 +00:00
baldurk 152abc501a Fetch structured file on capture load so it's available persistently 2017-11-17 16:30:50 +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
Cory Bloor 8986596350 Make "Recent Capture Settings" update upon save 2017-10-11 03:26:17 -07:00
baldurk 9c948173c2 Recognise and add counter viewer as builtin window
* This means it's included in layouts when saved/restored
2017-08-24 15:00:02 +01:00
Matthäus G. Chajdas b39844bb59 Hook up the counter capture and result display. 2017-08-24 13:21:04 +01:00
Matthäus G. Chajdas 03343239c7 Implement a Performance Counter Viewer pane, hook up selection dialog 2017-08-24 13:21:03 +01:00
baldurk 9b4ee72af6 Pass pipeline state around by reference instead of copying by value 2017-08-18 19:37:18 +01:00
baldurk f41f6a2b66 Fix race condition accessing UI stuff on async loading thread 2017-08-03 17:57:22 +01:00
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 628e6481d5 Distinguish between friendly and real hostnames for remote hosts
* This means we don't pass a friendly hostname internally to connect to,
  and we don't display a hostname where we want a friendly hostname.
2017-06-19 16:17:20 +01:00
baldurk d19ba7eadc Make sure temporary logs opened from the command line are cleaned up 2017-06-13 18:13:31 +01:00
baldurk f9c9adedf3 Use logo.svg instead of icon.ico in qrenderdoc
* This means we don't need to distribute the ico reading qt plugin
2017-06-13 14:56:40 +01:00
baldurk 8e423f4c76 Add some parameter checking to the capture context interface 2017-06-09 17:00:44 +01:00
baldurk 2f1301e758 Settle on consistent 'capture' name for captured files, dropping 'log' 2017-06-08 16:35:14 +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 18d3eae1c8 Ensure that constant buffer views are grouped together in docking 2017-04-28 18:36:56 +01:00
baldurk 195ef0122a Port EventBrowser_AddFake option to qrenderdoc 2017-04-20 13:20:18 +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 6930841705 Rename ReplayRenderer to ReplayController
* It's not a renderer, it's an interface to controlling the replay and
  any 'renderer' type work actually happens in ReplayOutput.
2017-04-18 14:57:47 +01:00
baldurk f6c045f473 Refactor public interface to be less strict C and more python friendly
* Generally this means removing ref out parameters and instead returning
  values. In a couple of cases we will want to avoid copies in future
  either by returning const references (e.g. to the pipeline state which
  is immutable).
* At the same time, some pointless bool return values that were always
  true and didn't indicate errors have been removed. They can be added
  again if an error condition comes back.
* Some free functions still have out parameters as C linkage doesn't
  allow returning user types by value.
* The C# UI still invokes into C wrappers for all the C++ classes, which
  handle taking the return value and doing a copy into an out parameter
  still for compatibility.
2017-04-18 14:57:46 +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 d40fc8471d Change API enums to enum class, remove now redundant prefixing
* This gives a little nicer syntax, a bit better type safety, and also
  reflects better for SWIG bindings. Overall it's a minor change but
  better.
* We don't update the C# UI at all, since it's soon to be removed and
  not worth the effort/code churn.
* For now so we're ABI compatible with C#, all enums are uint32_t, but
  that is an obvious optimisation in future to reduce struct packing.
* We avoid 'None' as an enum value, because it's a reserved word in
  python so will cause problems generating bindings.
2017-04-18 14:57:33 +01:00
baldurk f76a4cc339 Don't launch blocking execute call on UI thread, pop up progress ticker
* This most commonly happens launching an Android program that takes a
  while to launch, or if you're launching a program with the delay for
  debugger option set.
* Instead of the whole UI hanging, you'll get a progress dialog to
  appear while it's waiting.
2017-02-24 17:34:02 +00: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 9e47ed53b5 Move resources.qrc into Resources/ folder 2017-02-09 19:28:22 +00:00
baldurk 7c422e3651 Add Load/Save functions around Deserialize/Serialise in config
* This lets us do some processing before saving and after loading
  regardless of the path the load/save takes.
2017-02-09 19:28:21 +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 9690db525b Add support for raw buffer views (not mesh output) 2017-01-26 23:31:58 +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