* Previously we had "Frame X" and "Start of Frame" hardcoded in the event
browser, and the end of frame was in many cases assumed to be a present call.
However with the in-application API this is not necessarily true.
* Presents are now serialised separately in all APIs and displayed wherever they
happen in the frame, and if there is no present at the end of the frame an
"End of Capture" marker is inserted. Similarly API-defined captures are not
given a potentially misleading frame number.
* In particular, if there is a mismatched layer registered under e.g. /etc then
we always need to elevate, even if the user wants their layer to be fixed and
registered user-local.
* If the UI was launched with a filename as a parameter to open the capture, it
will be added to the recent capture file list. Only later (relatively
speaking) if we make a capture connection will we realise that it is temporary
and potentially delete the file. If we do so, remove the capture from the
recent file list.
* In particular make it clear that crashes caught in the injected program may or
may not be a RenderDoc bug. Even if we could point the finger to a particular
DLL we can't necessarily tie that DLL to the responsibility of either us or
the application.
* The defaults can be configured from the settings menu, and there's a new "Open
Capture with Options" menu option to open a capture with different options
temporarily.
* This allows RemoteHost handles to still be valid and usable (if returning
empty data) when they are deleted/removed if the device is disconnected, as
well as providing better multi-thread access (they lock internally)
* Unfortunately at least one deprecated function
QDesktopWidget::screenGeometry(const QPoint &p) has no easy alternative that
works on 5.9 which is the version we have available by default on windows.
* We also only use GIT_COMMIT_HASH where necessary to avoid rebuilding many
files for no reason, including splitting version.cpp out into a separate
project as we do with VS since otherwise changing its preprocessor defines
rebuilds the whole renderdoc project.
* At the same time, move the git hash to be internal only so we don't have to
try to link version.cpp into other projects like renderdoccmd or qrenderdoc.
* This gives a one-click way to run the last capture, if it's not
complex/regular enough to be worth saving to a settings file on its own.
* Doesn't save much if you're selecting an exe as the previous exe location is
remembered, but if you also have command line parameters or a working
directory it can help.
* This means it outputs natively/properly to stdout/stderr and its output can be
redirected with pipes.
* It does mean we need to be very careful whenever it's run internally to not
pop up a command window, which happens by default.
* This option will now toggle on the behaviour to fill undefined buffer contents
with a marker value, both if they're created without data (it will be zero
filled instead) or mapped with discard (it will keep the old contents
instead).
* There were too many hard to find problems or misconceptions about the buffer
filling for it to be useful. Now it will be opt-in instead.