* When needed on windows we convert to/from UTF-8. For most places this is easy
enough, the callstack processing is now moved to store most data as UTF-8 in
the first place.
Intel published a performance query extension support defined back in
2013. This is available on Windows & Linux (in the Mesa driver). This
should provide the same types of counters as the MDAPI backend for
DX11.
Frameretrace [1] (a fork/branch of Apitrace) uses the same extension.
v2: Fix build without OpenGL
Simplify logic to enable counters
Warn about non enabled counters on Linux/Mesa
Generate counter Uuid
v3: Turn asserts into errors
Don't load perf entry points manually
v4: More clang-format
v5: Fix some Windows conversion warnings
v6: Fix errors on Windows where the driver reports an error on
glGetPerfQueryInfoINTEL as a mean to say that the queryId cannot
be used through the extension
v7: clang-format
v8: Initialize variable passed by pointers to GL entry points
v9: Only try to use the INTEL_performance_query on Mesa, experience
shows the Intel Windows driver doesn't report anything useful.
[1]: https://github.com/janesma/apitrace/wiki/screen-shots
* This causes a full rebuild in VS because the command line has changed
every time you commit or checkout in git (because the git commit
/D parameter has changed).
* Since we only need it in UI-facing projects we remove it from
every project except qrenderdoc, core renderdoc, and renderdoccmd.
They will still rebuild when the commit changes but technically VS is
right to do so.
* This way it's uniformly supported, so e.g. we can still get it when
the replay itself is running on android.
* To do this we just pass the 'raw' bytes, which contains the whole blob
needed for disassembly. This means a little extra work to disassemble
D3D blobs by doing a tiny parse of the DXBC.
* We enforce a naming scheme more strongly - types, member functions,
and enum values must be UpperCaseCamel, and member variables must be
lowerCaseCamel. No underscores allowed.
* eventId not eventID or EID, and Id preferred to ID in general. Also
for resourceId.
* Removed some lingering hungarian m_Foo naming.
* Some pipeline state structs that are almost identical between the
different APIs are pulled out into common structs. Where something
doesn't make sense (e.g. viewport enable for vulkan) it will just be
set to a sensible default (in that case always true).
* Changed scissors to be x/y & width/height instead of sometimes
left/top/right/bottom
* Abbreviations are discouraged, e.g. operation not op, function not
func.