* This seemed to cause crashes on some systems as libproxy links to libstdc++
and can then cause symbol conflicts between the static libstdc++ and the
system's libstdc++.
* libproxy itself cannot be statically linked, so the solution is either to
configure Qt without libproxy and break anyone who needs proxy support, or
stop statically linking libstdc++ and add a new dependency. At commit time
most distributions have at least g++-5's libstdc++ in their minspec so we can
require that - the main two that seem to fall short are Debian Jessie and
CentOS 7. Users on those systems will have to install a newer libstdc++ or
compile from source rather than using the binary releases.
* Even if a function isn't passed a global binding array as a parameter, we
still need to patch it in order to find any accesses it makes directly to
global resources just as we do in the entry point.
This field was recently added to the `ImageInfo` struct, but had not yet
been added to the `ImageInfo` serialization. Serializing this field
would unnecessarily break capture compatibility.
The `imageType` field was added to detect 3D images--depth slices of 3D
images are interpreted as array layers when accessed through a 2D image
view. This data is (almost) redundant, because 2D images must have
`extent.depth==1`, according to the Valid Usage for `VkImageCreateInfo`.
The application could create an image with
`imageType==VK_IMAGE_TYPE_3D`, but with `extent.depth==1`; we would
interpret this as a 2D image, but, since this image would have 1 array
layer and 1 depth slice, this doesn't actually cause an issue.
Change-Id: I3d53d942cbe8f240845a80f6e12a7cecfdd86967
* 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 ensures that a thumbnail is created using the image from last
presented swapchain.
This swapchain, and the thumbnail still could be null. `CreateRDC` was
incorrectly asserting that the thumbnail contained non-null data. In
fact, `CreateRDC` already behaves correctly in the case of null
thumbnail data, so this assertion is removed.
Change-Id: I5b35463898029b0130fe9d8f39dda30e192deef6
The image info (layerCount, levelCount, sampleCount, extent, format,
type) was previously only available through `ImageLayouts`. This info
is now also stored in `ResourceInfo`.
Storing this in `ResourceInfo` makes this info easily accessible from
`VkResourceRecord`s representing `VkImage`s and `VkImageView`s. This
simplifies upcoming changes to the image tracking and avoids the lock
protecting the `m_ImageLayouts` map.
To simplify this duplication, a new struct `ImageInfo` is added here to
hold the image info in both `ResourceInfo` and `ImageLayouts`.
Change-Id: I390cbba4c3ce7b0bd6f004521497c21bf4c1e97f
This VkResourceRecord::resInfo being non-null was previously used as an
indicator that VkBuffer or VkImage resources had sparse bindings. Now,
`resInfo->IsSparse()` must also be true for the resource to be
considered as having sparse bindings.
Change-Id: Ia8a93ecb3248a682f71fcf6455d0d583ca129679
* We can't rely on the driver's reflection, since name information might be
stripped and the driver is within its rights to not reflect anything even if
we have names. Similarly queries by names etc will not work.
* Also we can't try to change bindings that are immutable on SPIR-V shaders -
UBO/SSBO bindings, transform feedback varyings, attrib and fragdata locations.
* Programs can't mix and match SPIR-V and GLSL, so when including our own
shaders in the overlay program make sure they match what the user's shaders
are.
* For mesh output, we need to patch the SPIR-V if it's a SPIR-V shader instead
of trying to use the GL XFB varyings set.
* The GL spec says that this is clearly allowed, but some buggy Android drivers
throw warnings or errors so we can add this harmless check on shutdown.