* Because many of QHeaderView's functions are annoyingly not virtual,
we need some stub data available in QHeaderView even if it won't be
used for anything much, like the number of sections.
* If the export doesn't need buffers, we export directly from the loaded
capture file instead of re-loading it.
* Add progress bars for the load step so it shows what's happening
instead of looking stalled.
* Reduce compression rate on XML+ZIP buffers as it took too long trying
to compress when exporting large captures.
* If we're aligned up past the size of the allocation (possible if we
apply bufferImageGranularity due to the incoming allocation being
image and the last allocation in the block being a buffer) the next
required offset would be past the size, so avail = block.size - offs
would overflow and we'd try to allocate past the end of the block.
* This is a backwards-incompatible change, so it's done here before v1.0
so that we can freely break compatibility and not need to define a lot
of ugly compatibility code.
* The primary motivation is to make the serialised data more uniform
and have fewer special cases where the serialised form is naturally
defined from the functions/structs in question.
* There are still some special cases or variances but they should be
more isolated and only where really necessary.
* Remove some cases in the D3D12 struct serialising where we were
directly serialising child struct members in the parent struct.
* We now try to match argument/struct member order as closely as
possible.
* Serialising an array with a count no longer reads the count back out
into that variable, counts must be serialised separately. This means
all members/arguments are explicitly present in the structured data
and also eliminates the awkward case where a count needed to be
serialised separately after an array if we want to have the count be
a valid number even if the array could be NULL. It also means we don't
need the FIXED_COUNT() macro since array lengths can be plain values
and don't have to be a reference type.
* GLES separable programs are completely broken, so we need to just go
back to ye-olde style of linking shaders together. On GLES this is
particularly painful as it means we have to version match whatever
shader the user was using.