pyrenderdoc uses pkg-config to find Qt rather than qmake, so we need to
give it the custom location too. I didn't notice this originally,
because it found my system version of Qt5 and compiled fine. Only when
I started doing static analysis and set up my exclusion list for Qt
headers did I notice there were multiple sets of headers being used.
Main goal was to fix undefined behaviour, but it's also 50x faster...
cppcheck:
[renderdoc/driver/shaders/dxbc/dxbc_debug.cpp:1163]: (error) Shifting signed 32-bit value by 31 bits is undefined behaviour
* In future one of the notes items would be for gathered hardware info.
Not automatically, but with one button press the full configuration
can be embedded.
* fflush is a no-op wrapper but nice to have for consistency.
* ftruncateat will take a file read-write handle and truncate it at a
given length. Useful if re-writing a file and the new data ends up
being shorter than the oldd ata.
* Move in addition to Copy, and success/fail bool return on both.
* Log is an overloaded term since it can also mean the debug log. We now
consistently refer to capture files as capture files or just captures
for short. The log is just for log messages and diagnostics.
* The user-facing UI was mostly already consistent, but many of the
public interfaces exposed to python needed to be renamed, and it made
more sense just to make everything consistent.
* We add a button with a link icon to indicate that it goes to the
resource details. We'll re-use the crosshair as a visual metaphor for
any interactive widget that goes to the resource inspector.
* To remove any possible confusion, we change the icon for the texture
list and locked tabs in the texture viewer to not include the link.
* 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.
* For Vulkan and D3D12, we now create a dummy command buffer to ensure
that there's actually a chunk available to correspond to the command
buffer that gets submitted or recorded to.
* This provides a way to find the name of any resource besides 'special'
resources like textures and buffers. In a follow-up commit, the names
will be removed from their descriptors.
* It also allows us to list which chunks in the structured file were
used to initialise the resource, giving the ability to look up and
display the initialisation parameters.
* At the same time we also list the derived/parent resources to better
allow the user to browse between related resources.
* This item delegate will forward on either to a specified other
delegate or to the base implementation. This allows chaining delegates
(i.e. having one built-in to the widget, which forwards to a user-set
delegate).
The EGL function pointer loading was scattered
in two files thus it is hard to keep track where
the symbols were loaded.
Introduced a class which holds all internally used
EGL function pointers with a helper method to
load the required pointers. Not all EGL pointers
are loaded just the used ones (just like before).
In some cases a few GL wrapper methods are called
with incorrect gl_CurChunk during serialization.
This can happen if the capturing application calls
a GL method - for which the gl_CurChunk will be set correctly -
and the wrapped method calls another wrapped GL method
but for that the gl_CurChunk will be incorrect.
Also during the ActivateContext call the gl_CurChunk
was not set.
For now do a hotfix for glDrawArrays and initial context.