This also moves the pipeline and descriptor set layouts used for texture
conversion (texel buffers) to ObjectCache, and shares a binding location
with the SSBO set.
Makes the information panel self-contained.
This was done first, as opposed to isolating the GameConfig panel--the
first panel in the group--as this panel had code all over the place in
ISOProperties, so I figured it'd be best to fix this one up first.
The SDL backend crashes when you close a joystick after SDL_Quit has
been called. Some backends don't need to be shutdown and
re-initialized everytime, we can just ask to enumerate devices again.
It's questionable whether ES_LAUNCH should write *anything* to the
command structure at all, ever, given that it never actually returns
it back through the mailbox. But it *definitely* shouldn't write
anything to it if it has just launched a DOL, because otherwise it might
clobber code/data from the just-loaded application.
When booting "cooked" executables, BATs should already be set up and
enabled. They should only really be disabled when booting NAND contents
in real mode.
Should we ever introduce anything else that has to be done when a command
buffer is executed (e.g. invalidating constants from previous commit), we
don't have to update all the callers.
This could happen because the vertex memory was already committed, if a
uniform buffer allocation failed and caused a command buffer to be
executed, it would be associated with the previous command buffer rather
than the buffer containing the draw that consumed these vertices.
This was happening when a fence wait happened mid-frame. The data written
between the fence being queued and the allocation occuring was incorrectly
assumed to be consumed by the GPU.
Hotkeys
Make a new class that inherits from InputConfigDialog with a specialised constructor. The changes are mainly the top portion and it now uses tabs to categorise the hotkeys.
Redo the GCPad configuration dialog
The layout is similar, but it now allows flexibility to change it more easily.
Redo the GC Keyboard configuration dialog
Same layout.
Redo completely the Wiimote configuration dialog
Separated the controls into 2 tabs to make them less imposing overall.
Redo the Nunchuk configuration dialog
Similar layout, except for 2 control group sizers.
Redo the Classic controller configuration dialog
Same layout.
Redo the Guitar input configuration dialog
Stacked 2 sets of group together.
Redo the Turntable configuration dialog
More stacked groups and the window is much less wide.
Just setting up a switch on the type so that different dialogs can be instantiated. This also makes the extension type an enum because I don't see why not here and finally, it removes ControlGroupSizer. This removal allows to not dynamically generate the UI, but instead, let the specialised constructors do the layout.