* On windows, the change in a global GIT_COMMIT_HASH define in each
project needing it meant a full rebuild every time the commit changed.
* Ideally we'd set the define only on one file in each project, but
MSBuild doesn't seem to support that. Instead we make a new tiny
project that compiles a single cpp exporting a global var, and
reference that global var in each other project.
* The commits following this add a new refactored serialisation system.
As a balance between readability of individual commits and ability to
bisect/compile at interim steps, the individual API back-ends are
disabled in this commit, so that after the serialisation system is
committed the project compiles again as soon as possible.
* However this is of course not much use in itself as then the code
can't function usefully. The drivers are re-enabled as each one is
updated to the new system, so at least the codebase should stay
compiling, even if each individual API may not yet be functioning.
* Moved the AMD project under an IHV folder
* Moved the AMD headers from the D3D11 project to the AMD project, and
added the GPUPerfAPI headers there too.
* Set the counterID inside the CounterDescription for AMD counters
* Add an extra search path for the GPUPerfAPI dlls, which will be inside
distributed builds soon.
* 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 includes changes to DXGI to remove hard dependency on D3D11 code
and support multiple D3D versions initialising through DXGI.
* Basically all of the D3D12 interception is unimplemented/stubbed out
and only the ID3D12Device interface is present.
* When I went to explain to someone why the target was named Profile and
not Debug as you might expect, I realised the reasons were entirely
opaque and historical. So instead, rename it to Development since that
is really what it's for - any profiling would be done in Release mode.
* This is kind of arbitrary at the moment, but in future when D3D12 and
Vulkan drivers appear, not everyone who builds RenderDoc will want to
build all drivers, so making them separate projects makes it more easy
to disable/remove them.
* This makes it easier for my auto build scripts (i.e. without xcopy use
I can run them from msysgit bash).
* pdblocate now has Profile32&Release32 vs Profile64&Release64. This was
the easiest way to do it as it has to be compiled in 32bit to interact
with DIA, but we want it copied to the solutions output folder (x64/...
or Win32/...)
* This allows you to hook into processes that are difficult to launch
directly with the existing functionality in RenderDoc.
* This is rather risky, as it modifies the AppInit_DLLs registry key to
inject a small shim dll that checks for the desired process and injects
the full renderdoc.dll. If that registry key got left, or if there was
some incompatibility with the shim dll, you could have problems. It
should only ever be used as a last resort if there's no other way to
capture.