* It's annoying to have the constant buffer view reset and collapse
everything, especially if moving between draws where the variables are
the same because the shader hasn't changed.
* We can just compare the previous set of variables to the new set and
if the types and structures (member variables etc) are the same, then
just update the values in-place.
* In CMake this is easy as we're already passing it through sed, but
in msbuild it's a little more complex as we need to write a little
in-line C# code to read out the version number and replace the
* We also update the JSON generation for layer registration on linux.
* By default VS creates a huge section of properties copy-pasted for
every Configuration|Platform combination, which is almost all the
same for each one.
* We instead create a common section with most of the properties that
are fixed, and then override/add to them for the few that vary (e.g.
optimisation settings for release, preprocessor macros).
* We used to ignore C4512 but we no longer need to.
C4100: 'identifier' : unreferenced formal parameter
C4512: 'class' : assignment operator could not be generated
Previously the allowed extension list was set when the
WrappedOpenGL driver was created. However at that point it is not always
clear if we are in GL or GL ES mode.
* Tacking -official onto the git hash was a hack only needed on windows,
and since we want more information it doesn't scale.
* Instead we track anything we need to know about the version in
separate variables, like whether it's a stable build or a nightly/
local build. Or if it's built by a downstream distribution then the
version number for the downstream build.
* The suffix is superfluous in the string name - it can be reconstructed
using the array size data. It just confuses things when trying to
replicate a variable declaration. E.g. int indices[4]; shouldn't be
listed as int[4] indices[4];
* Our function to get texture data requests a single mip and a single
array slice at a time. However this interacts badly with the GL get
function that returns array data all at once.
* Worst case, we end up fetching N array slices N times, meaning we do
N^2 work, and allocate way more memory than is required. There was
also a bug that caused the allocated memory for compressed arrays to
return all array slices instead of returning one slice, offsetted.
* Now instead we cache the returned array data and look it up for
subsequent requests, since it's very likely that we're going to ask
for the other array slices.
Using "1" here was very specific to the build system, as noted by the comment.
When run on systems with older APIs install, it resulted in java compile errors.