make unstable qxl compatible with 0.4 qxl
make unstable qxl compatible with 0.4 qxl

Add SET_MODE IO port back in.
Add QXLRom offset fields back in.

I/O ports, RAM and ROM layout are binary compatible now.

With these changes merged it should be possible to create *one* qxl
device which supports *both* 0.4 and unstable spice commands.

Everything the guest touches before entering native mode is binary
compatible.  Old (0.4) guests drivers enter native mode via SET_MODE,
new (unstqable) guest drivers enter native mode using CREATE_PRIMARY,
so when we see spice commands from the guest come in we know
whenever we have to interpret them as 0.4 or unstable ones.

Added commends to structs which need care wrt. compatibility when
updating.

Added some QXLCompat* structs for the 0.4 struct versions.

Added a flags field to QXLCommandEx so qxl can signal whenever commands
are compat or not.

Moved QXLRom->n_surfaces to make QXLRom->flags 64bit aligned.

Add padding to QXLRom to ensure future elements are 32bit aligned.

Signed-off-by: Gerd Hoffmann <cad73e70082427fddc9be3baaf34e698dffd21c0@redhat.com>

vdiot/spice-protocol,freedesktop-unofficial-mirror/spice__spice-protocol,vdiot/spice-protocol,SPICE/spice-protocol,elmarco/spice-protocol,dezelin/spice-protocol,Fantu/spice-protocol,fgouget/spice-protocol,elmarco/spice-protocol,dezelin/spice-protocol,SPICE/spice-protocol,vdiot/spice-protocol,elmarco/spice-protocol,freedesktop-unofficial-mirror/spice__spice-protocol,Fantu/spice-protocol,fgouget/spice-protocol,fgouget/spice-protocol,dezelin/spice-protocol,SPICE/spice-protocol