* 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!
* When binding an empty texture, sanitise the parameters so we don't
pass invalid enums for access/format.
* When fetching, actually use the indexed Get functions to get the right
slot. Ooops :S.
* GL_MIN_MAP_BUFFER_ALIGNMENT is now satisfied (up to 64), and from reading
the spec, yes the mip dimensions have to be defined as standard, you
can't define just some crazy custom mip chain sizes as that's invalid.
* For every texture unit in GL, you can have one of each texture bound to
it. So you can bind a 2d and a 3d to slot 5, and as long as you don't
try to use both at once, you can use one in one shader, one in another,
without needing to rebind. So the state vector we need to save includes
every type of texture.
* I think, from checking against the spec tables, this should be the entire
state vector saved now for core 4.5. There might still be some extension
state not saved.
* Note in some cases we still unconditionally return an object (like
ID3D11InfoQueue) just for compatibility's sake if it's pretty ubiquitous
and programs might expect it to always be there. This change however will
stop us from reporting interfaces that might actually not be HW or OS
supported.