* Mostly moving includes from common headers to cpp where possible, and removing
includes of the whole thing where only enums or rdcstr etc are needed.
* On APIs like vulkan the view casting happens from an already typed format, so
don't assume that casts are only applied when the underlying format is
typeless. When a cast is not valid the view format should never be different
from the underlying image format as the API should never make it possible to
validly create or bind a view with a different format.
* Subresource handling is more consistent - we pass around a struct now that
contains the array slice, mip level, and sample. We remove the concept of
'MSAA textures count samples as extra slices within the real slices' and
internalise that completely. This also means we have a consistent set
everywhere that we need to refer to a subresource.
* Functions that used to be in the ReplayOutput and use a couple of implicit
parameters from the texture viewer configuration are now in the
ReplayController and take them explicitly. This includes GetMinMax,
GetHistogram, and PickPixel.
* Since these functions aren't ReplayOutput relative, if you want to decode the
custom shader texture or the overlay texture you need to pass that ID
directly.
* Previously we had "Frame X" and "Start of Frame" hardcoded in the event
browser, and the end of frame was in many cases assumed to be a present call.
However with the in-application API this is not necessarily true.
* Presents are now serialised separately in all APIs and displayed wherever they
happen in the frame, and if there is no present at the end of the frame an
"End of Capture" marker is inserted. Similarly API-defined captures are not
given a potentially misleading frame number.
* Previously x and y always ranged from 0,0 to width-1,height-1. Even for lower
mips, the value was just effectively shifted.
* This is quite unclear at the API level so instead x and y are now relative to
the selected mip's dimensions.
Implemented PerformanceCounterViewer::OnEventChanged to handle global event changes.
Behaviour can be toggled on/off via a new 'Sync Views' button similar to the Mesh Viewer; the default is off.