* Unfortunately there isn't an easy registry key to check to see if the
2015-2019 redist that we need is installed. Instead we need to check the
major/minor version to see if it's at least 14.20.
* This is complicated by the fact that windows installer returns DWORD registry
values with an extra # but provides no built-in way to strip it so it can be
compared numerically. The solution we've used here is a custom vbscript
action, but apparently they are problematic. Worst case I believe this will
try to install the runtime when not necessary, which might require an
unnecessary reboot. Or alternatively it may misdetect the runtime as installed
but the large majority of people have a compatible redist so this isn't too
bad either.
* Normally we only check mapped memory when it's referenced during capture by
some binding, but for BDA we don't have bindings so we have to conservatively
check it every time.
Specify the maximum count of parameters instead of number of bytes
i.e.
GLint iscol;
GL.glGetInternalformativ(target, fmt, eGL_DEPTH_COMPONENTS, sizeof(GLint), &isdepth);
becomes
GL.glGetInternalformativ(target, fmt, eGL_DEPTH_COMPONENTS, 1, &isdepth);
From GL references pages: https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGetInternalformat.xhtml
bufSize
Specifies the maximum number of integers of the specified width that may be written to params by the function.
* There's not a good accepted terminology for this kind of event, and for
historical reasons 'drawcall' has been the accepted term, even though
that can be quite confusing when a dispatch or a copy is a 'drawcall'.
* This is particularly highlighted by the event browser filters where
$draw() includes draws and dispatches, but $dispatch() only includes
dispatches, it's hard to intuitively understand why $draw() matches all
of these calls.
* As a result we've defined the term 'action' to cover these types of
events in the same way that we defined 'event' in the first place to
mean a single atomic API call.
* The first time a draw is selected bindless feedback runs, ensure the clear-
before-draw overlay works even then. This is a little bit of a hack but it
tests for a known issue.
* These canary values must be propagated correctly to derived pipelines (made
with patched shaders etc) or else the shaders disable themselves/misbehave,
which invalidates the test. That way if the test passes we know the
specialization constants were properly propagated.
* This is possible on D3D11 but only with certain cap bits, it's simpler to test
on D3D12 and the DXBC debugger will go through the same path for both.