95 Commits

Author SHA1 Message Date
baldurk d57cc1b188 Add more consistency to docking panels and widgets
* Dock panels shouldn't have any frame border or anything like that.
* They should have an external margin of 3 pixels at their border,
  but then no further margins on the layouts (like sub-controls for
  the pipeline state views.
* Toolbars should be Raised & Panel frames. Later we'll replace them
  with actual QToolBars to better customise the painting.
2017-07-28 19:06:46 +01:00
baldurk 89945f711d Switch to SVG topology diagrams
* We need to custom paint the SVG at the right devicepixelratio because
  Qt seems to be busted at scaling up - nothing I can see causes the
  SVG to be rendered at higher than it's default resolution, so you end
  up with plain bilinear upscale.
* Since we're doing custom palette swap anyway, it's not much harm to
  just render ourselves, as we already basically had a dependency on
  QtSvg - just need to add the include files to the dependencies.
2017-07-28 19:06:46 +01:00
baldurk a6f0d07e09 Remove most stylesheet use as this messes with a custom style
* Use palettes where a certain colour is needed.
* Still need some solution for table borders in grid layouts
2017-07-28 19:06:44 +01:00
baldurk b254cd7ac1 Fix crash with NULL drawcall 2017-07-13 13:57:09 +01:00
baldurk 5078d68234 Use new stretch hints mode to improve column sizing in pipeline states 2017-07-12 19:51:10 +01:00
baldurk 1e840356a1 Change pipeline state viewers so minimum panel size is smaller
* Add scroll areas for the larger tabs and allow pipe flowchart to
  resize to its minimum size if needed.
* The idea here isn't that anyone will seriously try to use the pipe
  view at 500x200 but more that the minimum size doesn't become a
  problem while moving around windows or panels, or resizing temporarily
2017-07-12 19:44:51 +01:00
baldurk bcd08f77a6 Set word wrap on fixed state labels in pipeline viewers
* This allows the pipeline state viewer to have a smaller minimum size
  which is useful when resizing the whole program UI.
2017-07-12 17:29:09 +01:00
baldurk f8b458176a Add stub HLSL generation for editing D3D shaders that have no source 2017-07-06 16:34:48 +01:00
baldurk 13bf08a99e Remove disassembly from shader reflection, request it on demand 2017-07-05 16:31:44 +01:00
baldurk bdf2a68c71 Add shader's ID and entry point to the shader reflection struct
* This allows better identification of a shader from its reflection
  bundle. The entry point was already 'optionally' in the debug info
  struct which is no longer a great location for it.
* For APIs where the entry point isn't contractual and it might not be
  listed, instead we just fall back to 'main'. This means that the UI
  or anyone fetching the info can be guaranteed that some sensible entry
  point will be listed.
* Also for the debug info, remove the 'entryFile' index and instead just
  guarantee that as much as possible the entry point will be in the
  first file in the list.
2017-07-05 16:29:26 +01:00
baldurk d44528794a Change qrenderdoc icons to Farm-Fresh, to add high-DPI versions. 2017-06-19 16:17:20 +01:00
baldurk 2831c4dfdd Set a proper sizeHint for the pipeline flowchart 2017-06-19 16:17:19 +01:00
baldurk abcfcfd8a4 Display resolve attachments with other framebuffer outputs in UI 2017-06-16 15:59:39 +01:00
baldurk d515c69a9f Remove alternating row colors in most places.
* This was only added because the default tree widget controls don't
  render any grid lines. Now that we're custom drawing them, the row
  colors are distracting and can be confusing on themes where the
  selected row is very faint.
2017-06-13 18:19:02 +01:00
baldurk 7fe267d548 Only add log viewer at the end of constructors, so the window is ready
* Otherwise if OnLogFileLoaded gets called while adding the log viewer
  the window might be partially constructed and crash.
2017-06-09 12:08:39 +01:00
baldurk f0116c4c08 Remap topology diagrams to Base/Text palette colours instead of b/w 2017-06-01 15:22:22 +01:00
baldurk 2ddfc40182 Use the palette's lightness for highlighting matching input binds 2017-06-01 14:30:53 +01:00
baldurk fe8c76154f Draw gridlines in WindowText palette color, not just black 2017-06-01 14:23:34 +01:00
baldurk fbf03ecd77 Set up pipeline viewers to re-draw the mesh icon in an appropriate color 2017-05-30 17:14:37 +01:00
baldurk 641eaf4665 Add option to instantly show tooltips over RDTreeWidget items 2017-05-30 14:08:44 +01:00
baldurk 19218b6bef Remove hardcoded color stylesheets from shader labels in pipeline views 2017-05-29 17:52:25 +01:00
baldurk f8d10850f8 Fix ambiguous QVariant casts from uint64_t on linux 2017-05-17 13:59:17 +01:00
baldurk 9831a8eb24 Fix compile error comparing enums 2017-05-17 13:20:51 +01:00
baldurk 5b5e30cf54 Add HTML pipeline export for qrenderdoc 2017-05-15 10:11:56 +01:00
baldurk a6c77b5dee Give little tag structs unique names so we don't violate the ODR 2017-05-15 10:11:56 +01:00
baldurk 5986f209e1 Use Formatter::Format for formatting hex numbers 2017-05-15 10:11:55 +01:00
baldurk 08fa2ec411 Fix formatting of blend factor in pipeline state 2017-05-15 10:11:55 +01:00
baldurk c3e521f254 Set the tag for samplers on GL so the resource can be opened 2017-05-10 17:20:36 +01:00
baldurk 5b384f3c4a Don't hide RWs on GL if there are no subroutines 2017-05-10 17:20:35 +01:00
baldurk 886d6f608b Fix case that samplers are now "IsSRV" (renamed to IsReadOnly elsewhere) 2017-05-10 17:20:33 +01:00
baldurk ab432f24fc Implement the UI option for preferring monospaced font 2017-05-04 20:36:46 +01:00
baldurk ba3b76a61a Fix GL's vertex buffer columns to be consistent: Stride | Offset | Divis 2017-05-03 20:00:10 +01:00
baldurk ba59a28eba Fix shader label click handler - lambdas have QObject::sender() == NULL 2017-05-03 20:00:10 +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 e5ec2c7280 Fix warning about struct initialisation 2017-04-28 19:46:17 +01:00
baldurk c05bea4563 Hook up compute thread debugging in qrenderdoc's D3D11 pipe viewer 2017-04-28 18:36:56 +01:00
baldurk 18d3eae1c8 Ensure that constant buffer views are grouped together in docking 2017-04-28 18:36:56 +01:00
baldurk f62777459b Fix index used for constant buffer slots in D3D11 pipeline viewer 2017-04-28 18:36:55 +01:00
baldurk 0f8e25a103 Fix a case where descriptor bind length wasn't being checked for ~0U 2017-04-27 19:47:48 +01:00
baldurk 605fd4dcc5 Use single QVariant tagging on RDTreeWidgetItem instead of setData
* It saves on allocating a vector of vectors and in most cases is all we
  need.
2017-04-21 18:45:12 +01:00
baldurk f65f5ea9da Use new RDTreeWidget everywhere in favour of QTreeWidget
* Since we're promoting everything, we reset the behaviour of
  RDTreeWidget so that it's not doing anything different by default.
* RDTreeWidget's interface is a bit different, exposing some useful
  things like a single selected item and so on.
* We also can't set columns in the Qt Creator UI anymore, so we set them
  from code.
2017-04-21 18:44:52 +01:00
baldurk ea1dbc27f9 Remove parent widget parameter from shader view/edit/debug functions 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 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 fd6fce7a78 Refactor pipeline states to expose opaque string properties as enums.
* Things like addressing modes, stencil operations, and other things the
  UI didn't need to know about previously were only exposed as string
  values to be passed through and displayed.
* Now we describe these with enums so the API can be properly
  introspected and used by consumers that might want to know the actual
  values of these states.
2017-04-18 14:57:40 +01:00
baldurk 8262bd2770 Refactor viewport to have X/Y separate members instead of TopLeft[2] 2017-04-18 14:57:38 +01:00
baldurk f1df7423e2 Standardise pipeline object names with name/customName where relevant 2017-04-18 14:57:38 +01:00