* For VS we can assume that instances all output the same amount of data
so each instance outputs totalVerts / numInstances verts. However that
assumption doesn't hold true for geometry/tessellation stage where
each instance can expand independently.
* Unfortunately the only way to get per-instance sizes is to do an
O(N^2) loop of draws up to the real number of instances, checking the
total output each time, and find out the per-instance size from there.
* Once vulkan has an implementation for GS/Tess out, it will be simpler
as we can just patch the shader to write to an atomic counter with the
primitive/vertex output count in each instance.
* Not used yet, as I need to figure out how to apply list markers when
we record multiple individual lists. Doing open/close of a list just
for the marker seems wasteful. It could be fired directly at the queue
* Previously this fix was needed for shader debugging since we did a
replay up to before the draw, before debugging. However we don't do
that anymore and in general the event ID we last replayed will be
accurate.
* The majority of GL calls that create objects are pretty failure proof
since they don't really do anything apart from create/allocate. In the
case of glCreateShaderProgramv though it requires the call to be valid
e.g. the type enum to be correct, so it can actually return 0 if that
happens.
* If we don't check for this then we end up creating an ID and program
for name 0 which causes all sorts of problems.
* Thanks to build-master general @aras_p for the tip:
https://twitter.com/aras_p/status/841287101907910656
* The projects are still defined with the usual platforms Win32 and x64,
this only affects the naming in the solution configurations.
* Previously on VS2010, the DIA2 library wasn't properly supported on
64-bit, so it needed a separate program that always ran 32-bit and
proxied operations over a named pipe.
* Now DIA2 will load correctly in 32-bit and 64-bit, so we can do the
work in-process without needing the separate exe.
* We still need to distribute dbghelp.dll and symsrv.dll, so these now
live alongside renderdoc.dll in the build/install folder with matching
bitness.
* At the same time fixed a bug I noticed where the 0-based module index
would return 0 for the first valid module and be treated as invalid.
* Truly, this is a sad day. But unfortunately many dependencies are just
not supported and it's increasingly difficult to stay on VS2010.
* In an ideal world, the IDE and compiler would be decoupled, but that's
not the case.
* This is useful if the build doesn't happen within a git checkout and
you want to pass in the hash anyway, but it also allows adding
suffixes like -official etc.