* So RenderMesh doesn't pick up anything implicitly from the current
event, log, pipeline state etc - everything it needs is explicitly
provided by the config parameters (note this might include a buffer
generated by postvs data fetching, but the implementation now doesn't
need to care or treat it as a special case.
* This will allow shifting to RenderMesh being run locally just by
the UI specifying the buffer and simple vertex specification, rather
than by relying on any local log properties (or replaying the log).
* The reasoning behind this change is that it becomes much simpler to
implement, rather than having to modify the draw to do what we want,
we just do an entirely custom draw based on a few properties - similar
to the texture rendering. This will help e.g. for writing a GL
implementation.
* The second benefit is that we can just transfer the buffer contents
across the network when replaying remotely, so mesh rendering can be
implemented even for remote replay - the last unimplemented feature.
* It could also be used similar to the image viewer in future, to
display mesh files.
* The transform feedback is placed on the geometry shader tab the same as
in D3D11. It doesn't merit its own whole tab and that seemed like the
best place to put it (last processing stage before rasterization).
* To aid understanding, further stages are marked disabled if rasterizer
discard is on, and if no geometry shader is bound the stage is renamed.
* This has been bugging me for ages, it's not a problem typically for users
as the config would be saved on shutdown, but if you're debugging
renderdoc and you kill the process (by stopping debugging) after loading
a log but before closing the program, the recent file wouldn't be saved!
* e.g. class instances only crazy people use, so there's no point to have
it eating up a ton of space when 99.9% of the time it's empty. Also
the border colour in samplers is only listed if the addressing is set to
use the border colour.
* I also collapsed down some of the columns to make it a little simpler
visually, like min lod/max lod become just "lod clamp" with a range, and
constant buffers simplified down to a couple of columns.
* When jumping between draws the tables are rebuilt which destroys any
vertical scrolling, so we save/restore it which means the same row will
be at the top of the view. If there are fewer resources it'll just be
as scrolled down as possible.
* This will allow the adding of things like 'redundant api call' for calls
that have no effect, as well as potential problems like drawing with an
empty viewport, or similar things that are common problems. Reading out-
of-bounds on buffers etc is a good example of 'defined' behaviour that
is probably not desired.
* These heuristics could also identify potential performance problems.
* It also supports adding debug messages after log-load time, so you could
do an additional extra-strength pass, or do a detailed check of one
draw call (e.g. a broken draw, to try and figure out the problem). If
there are any unread debug messages, the status bar will flash and the
debug messages window will show a count as (N).
* This allows 'partial' rows in the mesh viewer, if a vertex input element
references invalid/out of bounds data, but the others are fine (coming
from different streams).
* 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/...)