* Moved the AMD project under an IHV folder
* Moved the AMD headers from the D3D11 project to the AMD project, and
added the GPUPerfAPI headers there too.
* Set the counterID inside the CounterDescription for AMD counters
* Add an extra search path for the GPUPerfAPI dlls, which will be inside
distributed builds soon.
* We forward a different range of ports to each device so we can pick
and choose which to communicate with based on its index.
* The index is encoded in the 'hostname' like so: adb:X:deviceidhere
* Whenever we want to interact with an android device we always specify
the device, never leave it to a default.
* This fixes a crash where an enumeration from application startup is
still going when opening the remote manager dialog, and then all the
android hosts that are being enumerated get deleted while it's still
going.
* Instead of having button enabling and so on logic in both
on_hostname_textEdited and on_hosts_itemClicked, just handle the
hostname edit as selection or unselecting any matching item, and then
process all the logic whenever the selection changes.
* Checking for a NULL parent item doesn't work, the parent will be the
invisible root item.
* Also make sure we don't delete a host that might have enumerations
still going for it.
Server pops up dialog requesting file system access when the server is
launched. This is only obvious when the device is unlocked, otherwise this
pop up is never displayed.
Fixed by waiting for the user to grant permissions by preventing starting
a target app until the server is ready to open captures.
* The example case is as follows:
- program binds a pipeline and 4 sets
- later, program rebinds a different pipeline with incompatible layout
- all 4 sets are invalid
- program only binds 2 sets as new program shaders only statically use
the first 2 sets.
* If we try to 'restore' the invalid set bindings at any point this is
invalid and can lead to crashes. We need to detect when sets have been
invalidated and bail out, assuming that the shader only statically
uses the sets that were valid.
* Of course if that is an unfounded assumption then we are not binding
sets that will be used, but this is just as invalid as leaving used
sets as invalid.
* We also need to change the PostVS data fetch, since we can't use the
set after all used sets, we have to instead see which set is the last
statically used one and use the next (even if it's in the original
layout).
* This fixes an edge case where we are connecting to a local IP that is
SSH port forwarded to a remote machine. We don't want to identify
remote files as local files and try to open them, so just do the easy
check of verifying if the file is available locally.
* 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.
* This means that e.g. right clicking on an item in a list/tree widget
will make sure it's selected before trying to display a context menu
or anything.
* IronPython >= 2.7.5, if installed, adds a *global* redirect so all
programs (like renderdoc) that tried to reference the 2.7.4 they
provided will instead get redirected to 2.7.5. Whether or not it even
exists.
* We can point the platform plugins path at the application dir for
qwindows.dll for example, but there's no equivalent for image format
plugins which we need for qsvg.dll. So instead we shove them all under
an explicit qtplugins path.
* Also now that we have this, copy qsvg.dll into the distribution.