summaryrefslogtreecommitdiffstats
path: root/spice
Commit message (Collapse)AuthorAgeFilesLines
* Remove codegenMarc-André Lureau2016-03-101-24/+0
| | | | | | | | Codegen generates code specific to spice-common submodule. It's not meant as a generic protocol header or specification. See discussion and commits about spice-common codegen re-import. Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
* protocol: Add support for the VP8 and h264 video codecsFrancois Gouget2016-03-032-0/+6
| | | | | | | | | Clients that support multiple codecs must advertise the SPICE_DISPLAY_CAP_MULTI_CODEC capability and one SPICE_DISPLAY_CAP_CODEC_XXX per supported codec. Signed-off-by: Francois Gouget <fgouget@codeweavers.com> Acked-by: Christophe Fergeau <cfergeau@redhat.com>
* macros: do not use more type safe CONTAINEROF version if not requestedFrediano Ziglio2016-03-021-1/+6
| | | | | | | | This prevents incompatibility if users (like old spice-server/spice-gtk) are not expected to have this additional restriction. Signed-off-by: Frediano Ziglio <fziglio@redhat.com> Acked-by: Christophe Fergeau <cfergeau@redhat.com>
* protocol: add unix GL scanout messagesMarc-Andre Lureau2016-01-142-0/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add 2 new messages to the display channel to stream pre-rendered GL images of the display. This is only possible when the client supports SPICE_DISPLAY_CAP_GL_SCANOUT capability. The first message, SPICE_MSG_DISPLAY_GL_SCANOUT_UNIX, sends a gl image file handle via socket ancillary data, and can be imported in a GL context with the help of eglCreateImageKHR() (as with the 2d canvas, the SPICE_MSG_DISPLAY_MONITORS_CONFIG will give the monitors coordinates (x/y/w/h) within the image). There can be only one scanount per display channel. A SPICE_MSG_DISPLAY_GL_DRAW message is sent with the coordinate of the region within the scanount to (re)draw on the client display. For each draw, once the client is done with the rendering, it must acknowldge it by sending a SPICE_MSGC_DISPLAY_GL_DRAW_DONE message, in order to release the context (it is expected to improve this in the future with a cross-process GL fence). The relation with the existing display channel messages is that all other messages are unchanged: the last drawing command received must be displayed. However the scanout display is all or nothing. Consequently, if a 2d canvas draw is received, the display must be switched to the drawn canvas. In other words, if the last message received is a GL draw the display should switch to the GL display, if it's a 2d draw message the display should be switched to the client 2d canvas. (there will probably be a stipped-down "gl-only" channel in the future, or support for other streaming methods, but this protocol change should be enough for basic virgl or other gpu-accelerated support) Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Acked-by: Frediano Ziglio <fziglio@redhat.com>
* Use gcc builtin rather than asm for memory barriersChristophe Fergeau2016-01-081-6/+1
| | | | | | | | | | | | | This should make things more portable. On my machine, __sync_synchronize() uses mfence rather than lock; addl; Looking at the kernel memory barriers, this should be fine: http://lxr.free-electrons.com/source/arch/x86/um/asm/barrier.h The kernel favours using mfence, but falls back to lock; addl; when it's not available (32 bit non-SSE machines). https://bugs.freedesktop.org/show_bug.cgi?id=86997
* macros: make SPICE_CONTAINEROF more typesafeFrediano Ziglio2015-12-041-0/+6
| | | | | | | Check the pointer given is the same type as member pointer. Signed-off-by: Frediano Ziglio <fziglio@redhat.com> Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
* macros: fix compatibility with non-clang compilersFrediano Ziglio2015-08-201-0/+4
| | | | Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
* macros: fix alignment issue reported by clangVictor Toso2015-08-201-1/+1
| | | | | | | | | | | | | | | | char_device.c:131:52: warning: cast from 'uint8_t *' (aka 'unsigned char *') to 'SpiceCharDeviceMsgToClientItem *' (aka 'struct SpiceCharDeviceMsgToClientItem *') increases required alignment from 1 to 8 [-Wcast-align] SpiceCharDeviceMsgToClientItem *msg_item = SPICE_CONTAINEROF(item, ^~~~~~~~~~~~~~~~~~~~~~~ ../spice-common/spice-protocol/spice/macros.h:142:6: note: expanded from macro 'SPICE_CONTAINEROF' ((struct_type *)((uint8_t *)(ptr) - SPICE_OFFSETOF(struct_type, member))) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* macros: verify if __alloc_size__ works with clangVictor Toso2015-08-201-1/+2
| | | | | | | | | | | | | | | | | So we can avoid using using an attribute not supported for the compiler. warning: ../spice-common/common/mem.h:91:80: warning: unknown attribute '__alloc_size__' ignored [-Wunknown-attributes] void *spice_malloc0_n(size_t n_blocks, size_t n_block_bytes) SPICE_GNUC_MALLOC SPICE_GNUC_ALLOC_SIZE2(1,2); ../spice-common/spice-protocol/spice/macros.h:52:52: note: expanded from macro 'SPICE_GNUC_ALLOC_SIZE2' #define SPICE_GNUC_ALLOC_SIZE2(x,y) __attribute__((__alloc_size__(x,y))) ^
* Fix endianess compatibility with old GCC versionsFrediano Ziglio2015-08-191-1/+2
| | | | | | | | | | GCC 4.4.7 does not define __BYTE_ORDER__ macros so use architecture macro to attempt to detect endianess. Signed-off-by: Frediano Ziglio <fziglio@redhat.com> Reported-by: Swapna Krishnan <skrishna@redhat.com> Tested-by: Swapna Krishnan <skrishna@redhat.com> Acked-by: Uri Lublin <uril@redhat.com>
* Use 0xffu everywhere in new SPICE_MAGIC_CONST macroChristophe Fergeau2015-08-121-2/+2
| | | | | This should have been squashed in the commit introducing the macro, but I forgot to commit this before pushing it.
* Define and use new SPICE_MAGIC_CONST macroFrediano Ziglio2015-08-127-7/+21
| | | | | | | | | | This macro allow to define magic constants without using weird memory tweacks. This remove some possible warning from some compiler and make code more optimized as compiler is able to compute the constant. Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
* Detects processor endianess using preprocessorFrediano Ziglio2015-08-121-0/+55
| | | | | | This allow to define macros based on endianess in public headers Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
* build-sys: Add --enable-code-generatorChristophe Fergeau2015-08-071-0/+24
| | | | | | | | | This flag is only used for git builds, and can usually safely be disabled. When it's enabled, configure.ac will check that python-six and pyparsing are available, and will use these together with the codegen python scripts in order to automatically regenerate enums.h when the .proto files change.
* Add VD_AGENT_CAP_MONITORS_CONFIG_POSITION capability to client.Sandy Stutsman2015-08-061-0/+1
| | | | | | | | | This indicates the client's ability to handle multi-monitor configurations that are not multi-head. This commit addresses: https://bugzilla.redhat.com/show_bug.cgi?id=1248196 https://bugzilla.redhat.com/show_bug.cgi?id=1248189
* Rename SpiceImageCompress constantsChristophe Fergeau2015-07-231-12/+12
| | | | | | Having these constants use the same name as the ones in spice-server 0.12.5 causes compilation issues for spice-server users when using spice-server 0.12.5 or older, and spice-protocol 0.12.8.
* Add QXL_ESCAPE_MONITOR_CONFIG enumSandy Stutsman2015-06-301-0/+1
| | | | New escape for sending monitor position information from guest to client
* Add a preferred compression capabilityJavier Celaya2015-06-011-0/+1
|
* Update enums.h for preferred compression messageJavier Celaya2015-06-011-0/+14
|
* add volume synchronization to protocolVictor Toso2015-04-141-0/+9
| | | | | | | | With VD_AGENT_AUDIO_VOLUME_SYNC the client can send volume and mute values to be set in the guest for input or output devices. Currently this is done once after the agent send its capabilities. Related: https://bugzilla.redhat.com/show_bug.cgi?id=1012868
* vdi-dev: mark as deprecatedMarc-André Lureau2014-12-041-0/+4
| | | | | This interface has long been deprecated, and I don't know of any user. Perhaps the header could even be removed from spice-protocol?
* Add LZ4 compression display capability.Javier Celaya2014-12-022-0/+2
|
* Update enums.h for webdav channelMarc-André Lureau2014-03-191-2/+18
|
* Add support for the Opus codecJeremy White2014-01-022-0/+3
| | | | Signed-off-by: Jeremy White <jwhite@codeweavers.com>
* vdagent: add max-clipboard messageMarc-André Lureau2013-11-141-0/+6
| | | | | | | | | | Add an optional message sent by the client to ask the agent not to send clipboard data bigger than a certain size, in bytes. The message can be sent if the agent supports the capability MAX_CLIPBOARD, at any time. The agent is free to ignore or forget the value after a restart or a disconnection, but a bigger message might be discarded when received on client side, resulting in bandwidth waste.
* Mark VD_AGENT_CLIPBOARD_MAX as deprecatedMarc-André Lureau2013-11-141-0/+3
| | | | | | | | There is no use for those 2 values, and the default limit would be quite wrong. Put them in a deprecated block. If someone uses them, he will have to add -DSPICE_DEPRECATED, or just fix the code.
* macros: remove INLINEMarc-André Lureau2013-10-041-6/+0
| | | | | This macro isn't used in the protocol headers, and clashes with other define from qemu.
* enums: add SPICE_MSG_BASE_LASTMarc-André Lureau2013-09-121-0/+1
| | | | | | Make it explicit that 100 is the last value of the base channel messages. This allows clients to use the generated enum value too. (see spice.proto)
* vd_agent: Add caps for the agent to signal the guest line-ending (rhbz#752350)Hans de Goede2013-06-051-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When copy and pasting between a Linux guest and a Windows client or visa versa, the line-endings of the text will usually be wrong for the other side, so it is desirable to do automatic conversion. However sometimes it is possible for text in the clipboard on Linux to have MSDOS (CRLF) style line-endings, when copy and pasting from Linux to Linux it is undesirable to automatically convert these, since this would not happen when the apps were running directly on the same machine. So we want to do automatic conversion only if the client and guest native line-endings differ. This means that we cannot simply define one standard line-ending for VD_AGENT_CLIPBOARD_UTF8_TEXT data. Given the above it makes sense to only do conversion on one end. This patch adds new capabilities which allow the guest-agent to advertise what is the native line-ending of the guest. This should be used by the client in the following way: 1) Check if the guest-agent advertises any line-ending type at all, if not the guest line-ending is unknown -> do not convert 2) If the guest's native line-ending matches that of the platform the client is running on, then do no not convert 3) If the guest's native line-ending is different from the client platform, then convert received clipboard data into the client platform's native line-ending, and convert clipboard data which will be send to the guest-agent into the guest's native line-ending. Signed-off-by: Hans de Goede <hdegoede@redhat.com>
* add SPICE_MSG_PLAYBACK_LATENCYYonit Halperin2013-04-222-0/+2
| | | | | | | SPICE_MSG_PLAYBACK_LATENCY is intended for adjusting the latency of the audio playback. It is used for synchronizing the audio and video playback. The corresponding capability is SPICE_PLAYBACK_CAP_LATENCY.
* add SPICE_MSGC_DISPLAY_STREAM_REPORTYonit Halperin2013-04-222-0/+3
| | | | | | | | | If the server & client support SPICE_DISPLAY_CAP_STREAM_REPORT, the server first sends SPICE_MSG_DISPLAY_STREAM_ACTIVATE_REPORT. Then, the client periodically sends SPICE_MSGC_DISPLAY_STREAM_REPORT messages that supply the server details about the current quality of the video streaming on the client side. The server analyses the report and adjust the stream parameters accordingly.
* vd_agent: Add a new VD_AGENT_CLIENT_DISCONNECTED messageHans de Goede2013-03-051-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | Client -> agent messages can spawn multiple VDIChunks. When this happens the agent re-assembles the chunks into a complete VDAgentMessage before processing it. The server only guarentees coherency at the chunk level, so it is not possible for a partial chunk to get delivered to the agent. But it is possible for some chunks of a VDAgentMessage to be delivered to the agent followed by a client to disconnect without the rest of the VDAgentMessage being delivered! This will leave the agent in a wrong state, and the first messages send to it by the next client to connect will get seen as the rest of the VDAgentMessage from the previous client. This patch introduces a new VD_AGENT_CLIENT_DISCONNECTED message which the server will send from the VDP_SERVER_PORT on client disconnect, on which the agent can then reset its VDP_CLIENT_PORT state. Note that no capability is added for this, since capabilities are tracked between the client and the agent only. The server will simply always send this message on client disconnect, relying on older agents discarding the message since it has an unknown type (which both the windows and linux agents already do). Signed-off-by: Hans de Goede <hdegoede@redhat.com>
* vd_agent: Add a VD_AGENT_FILE_XFER_STATUS_SUCCESS result valueHans de Goede2013-02-281-0/+1
| | | | | | | | | | | | | | | | Currently the sender of a file xfer assumes success on having send the last data bytes. But the transfer may still fail on the other side. This commits adds a VD_AGENT_FILE_XFER_STATUS_SUCCESS result value instead. Since we have not done an agent release with file-xfer support yet, the client code can simply assume that it will always get *a* VD_AGENT_FILE_XFER_STATUS_ message for a transfer now. As for the existing spice-gtk release with file-xfer support, if it talks to an agent sending this message, this will trigger a g_return_if_fail, which is not really pretty, but has no negative side-effects other then an error message being logged. Signed-off-by: Hans de Goede <hdegoede@redhat.com>
* controller: add proxy messageMarc-André Lureau2013-01-281-0/+2
| | | | | | | | | | | | | | Add a new string message for sending proxy details. CONTROLLER_PROXY (ControllerData, string) The value must be of the form [protocol://]<host>[:port] The proxy string may be specified with a protocol:// prefix to specify alternative proxy protocols. If no protocol is specified in the proxy string or if the string doesn't match a supported one, the proxy will be treated as a HTTP proxy.
* vd_agent.h: add a VD_AGENT_CAP_SPARSE_MONITORS_CONFIG capability (rhbz#881072)Hans de Goede2013-01-181-0/+6
| | | | | | | | | | | | | | | | | | Currently the agent expect a monitor config to be continuous. If the user has 3 monitors (3 spice display windows) open and tries to disable the 2nd one, then instead of the 2nd one being closed, the 3th one ends up closed. To be able to fix this we need to be able to send a sparse monitor config to the agent. A monitor being disabled in such a sparse config is simply represented by its width and height being 0 in its VDAgentMonConfig. Since old versions of the agent won't be capable of dealing with such a 0x0 sized monitor, this patch adds a new VD_AGENT_CAP_SPARSE_MONITORS_CONFIG capability to signal to the client that the agent understands this, and the client should only send sparse monitor configs to agents with this capability. Signed-off-by: Hans de Goede <hdegoede@redhat.com>
* vd_agent.h: add file copy supportDunrong Huang2013-01-111-0/+25
| | | | | | | | | | | | | | | | | | | | | | | At present, Vmware and Virtualbox has supported file drag&drop feature, I think it's a good feature for users, so we want qemu/spice to supports it. This patch first adds communication protocol between client and guest, we must make the agent protocol stable before coding, this is what we want this patch to do. This feature has been discussed on spice mailing list. The more details are available at following pages: http://lists.freedesktop.org/archives/spice-devel/2012-November/011400.html and http://lists.freedesktop.org/archives/spice-devel/2012-November/011485.html Signed-off-by: Dunrong Huang <riegamaths@gmail.com> Cc: Hans de Goede <hdegoede@redhat.com> Cc: Marc-André Lureau <marcandre.lureau@redhat.com> Cc: Alon Levy <alevy@redhat.com> Cc: Uri Lublin <uril@redhat.com>
* Add port channel enum valuesMarc-André Lureau2012-11-302-0/+20
| | | | | | | | | | | | | | | | The channel is based on Spicevmc which simply tunnels data between client and server. A few messages have been added: SPICE_MSG_PORT_INIT: Describes the port state and fqdn name, should be sent only once when the client connects. SPICE_MSG_PORT_EVENT: Server port event. SPICE_PORT_EVENT_OPENED and SPICE_PORT_EVENT_CLOSED are typical values when the chardev is opened or closed. SPICE_MSGC_PORT_EVENT: Client port event. (See related spice.proto change in spice-common)
* qxl_dev.h: add client monitors configuration notification to guestAlon Levy2012-09-121-0/+16
| | | | | | | | | | | | | | | | | | | | | | | So far we have used the agent to notify the guest of a request to change the monitors configurations (heads) on the qxl device. This patch introduces a new interrupt and new fields in the qxl rom to notify the guest about a new request, similarly to how physical hardware notifies the driver. We compute crc over the monitors configuration to avoid host-write from a following update while guest-read corruption. The update protocol is: qemu: (2) fill QXLRom::client_monitors_config (3) raise QXL_INTERRUPT_CLIENT_MONITORS_CONFIG guest: (1) clear QXL_INTERRUPT_CLIENT_MONITORS_CONFIG bit in irq status (2) read QXLRom::client_monitors_config (3) (verify-crc)? done : goto 2 If the interrupt mask is ~0 or 0, or does not have QXL_INTERRUPT_CLIENT_MONITORS_CONFIG set, we also assume it doesn't support this interrupt.
* Add new client_present and client capabilities fields to QXLRomSøren Sandmann Pedersen2012-09-021-1/+4
| | | | | | | | | | | | | | | | The client_present field is a byte that is set of non-zero when a client is connected and to zero when no client is connected. The client_capabilities[58] array contains 464 bits that indicate the capabilities of the client. Each bit corresponds to a SPICE_DISPLAY_CAP_* capability. In particular, if the client has capability C, then bit (C % 8) in byte (C / 8) is set. The capability bits only have a defined meaning when a client is connected, ie., when client_present is non-zero. The number 58 was chosen to fill out a cache line in QXLRom. A new QXL_INTERRUPT_CLIENT interrupt is defined, which will be raised whenever a client connects or disconnects.
* Add A8 surface capabilitySøren Sandmann Pedersen2012-09-021-0/+1
| | | | | | Even though the ability to handle a8 surfaces was added at the same time as the composite command, they are logically separate, so add a capability bit to indicate the presence of a8 surfaces.
* inputs: add an INPUTS_KEY_SCANCODE messageMarc-André Lureau2012-08-272-0/+5
| | | | | | | | | | | | | | | Add a new arbitrary keyboard scancodes message. For now, it will be used to avoid unwanted key repeatition when there is jitter in the network and too much time between DOWN and UP messages, instead the client will send the press & release scancode in a sequence from a single message. If the server doesn't support INPUTS_CAP_KEY_SCANCODE, the client is responsible to handle a fallback mode with the exisiting KEY_DOWN and KEY_UP messages. See also: https://bugzilla.redhat.com/show_bug.cgi?id=812347
* seamless migration supportYonit Halperin2012-08-272-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The main difference between semi-seamless and seamless migration is that while in semi-seamless migration the state of all the channels is being completely reset after migration is complete, in seamless migration the essential parts of the state are restored on the server side, and are left the same on the client side. semi-seamless migration is equivalent to having the client disconnect from the src and connected from scratch to the dest, with the exception, that the handshake with the dest server occurs before the client has disconnected from the src. In semi-seamless migration in-flight data gets lost, e.g., a file transfer to a usb device might be disrupted. ======================= ===protocol details==== ======================= Let s1, s2, and c be the src server, dest server and client, respectively. Semi-Seamless migration protocol ================================ pre-migration phase: -------------------- (1) s1->c: SPICE_MSG_MAIN_MIGRATE_BEGIN In response, c tries to establish a connection to s2. After the connection is established, it is inactive (the client doesn't attempt to read or write messages from/to it) (2) c->s1: SPICE_MSGC_MAIN_MIGRATE_CONNECTED or SPICE_MSGC_MAIN_MIGRATE_CONNECT_ERROR post migration phase: --------------------- (1) s1->c: SPICE_MSG_MAIN_MIGRATE_END or SPICE_MSG_MAIN_MIGRATE_CANCEL In case of the former, c disconnects from s1, resets all its channels states and switches to an active connection with s2. (2) c->s2: SPICE_MSGC_MAIN_MIGRATE_END The msg signals that all the channels have been migrated successfully to s2. Seamless migration protocol =========================== pre-migration phase: -------------------- In case qemu/libvirt/client do not support seamless migration, s1 takes the semi-seamless pathway for migration. Otherwise: (1) s1->c: SPICE_MSG_MAIN_MIGRATE_BEGIN_SEAMLESS (*New*) The msg includes the version of the migration protocol of s1. In response c tries to establish a connection to s2. (2) If the connection fails: (2.1) c->s1: SPICE_MSGC_MAIN_MIGRATE_CONNECT_ERROR If s2 supports SPICE_MAIN_CAP_SEAMLESS_MIGRATE: (2.2) c->s2: SPICE_MSGC_MAIN_MIGRATE_DST_DO_SEAMLESS (*New*) The msg includes the version of the migration protocol of s1. The msg is used for querying s2 if seamless migration is possible, given the migration protocol version of s1. (2.2.1) s2->c: SPICE_MSG_MAIN_MIGRATE_DST_SEAMLESS_ACK/NACK (*New*) (2.2.2) c->s1: SPICE_MSGC_MAIN_MIGRATE_CONNECTED_SEAMLESS (*New*) or SPICE_MSGC_MAIN_MIGRATE_CONNECTED The latter is sent when c receives SEAMLESS_NACK, and indicates s1 to apply semi-seamless protocol on post migraion phase. If s2 does not support SPICE_MAIN_CAP_SEMI_SEAMLESS_MIGRATE: (2.3) c->s1: SPICE_MSGC_MAIN_MIGRATE_CONNECTED (see 2.2.2) post migration phase: --------------------- While the pre migration phase was conducted by the main channel, this phase's protocol occurs in all the migrated channels. (1) s1->c: SPICE_MSG_MIGRATE The msg marks the client that the connection is paused from s1 side, and next to this msg, the only possible msg s1 can send is SPICE_MSG_MIGRATE_DATA msg optional flags: (a) MIGRATE_FLUSH_MARK This flag is required for finalizing the channel connection without losing any in-flight data. This flag indicates that s1 expects SPICE_MSGC_MIGRATE_FLUSH_MARK, for signaling that c will pause the connection and not send any more messages to s1. (b) MIGRATE_DATA The flag indicates that c should receive from s1 SPICE_MSG_MIGRATE_DATA (2) c->s1: SPICE_MSGC_MIGRATE_FLUSH_MARK (if required) c pushes the msg to the head of its output msg queue, and sends it before all its other pending msgs - they will be sent to s2 later. (3) s1->c: SPICE_MSG_MIGRATE_DATA (if required) The msg contains all the data that the server requires for restoring the channel's state on s2 side correctly. (4) c disconnects the channel from s1 and switches to an active connection with s2. (4) c->s2: SPICE_MSGC_MIGRATE_DATA
* add SPICE_MSG_MAIN_AGENT_CONNECTED_TOKENSYonit Halperin2012-08-272-0/+2
| | | | | | Similarly to SPICE_MSG_AGENT_CONNECTED, the msg notifies the main channel about attaching an agent. In addition the msg also contains the number of tokens allocated to the client.
* Add support for QXLComposite to the Spice protocol headersSøren Sandmann Pedersen2012-08-223-0/+107
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This new command is intended to be used for implementing the Composite request from the Render X extension. See http://www.x.org/releases/current/doc/renderproto/renderproto.txt for a description of the Render extension. Composite has three fields: src, mask and destination, of which mask is optional (can be NULL). There are also two pointers to transformations, one for each of src and mask. The command also has 32 bits of flags which indicates - which compositing operator to use - which filters to apply when sampling source and mask - which repeat mode to apply when sampling source and mask - whether the mask should be considered to have 'component alpha' - whether the alpha channel of any of the images should be ignored. The last one of these features is necessary because in the X protocol an offscreen surface is simply a collection of bits with no visual interpretation. In order for Render to use these bits, a wrapper object is used that contains the pixel format. Since one offscreen surface can be wrapped by multple objects, there is not a one-to-one correspondence between pixel formats and surfaces. In SPICE surfaces do have an associated pixel format, which means the above feature of Render cannot be supported without adding a similar concept to the wrapper object to the SPICE protocol. However, the most common use for having multiple wrappers for one offscreen surface is to interpret an alpha surface as not having an alpha channel or vice versa.
* Add an 8BIT_A formatSøren Sandmann Pedersen2012-08-131-0/+1
| | | | | This format corresponds to a sequence of bytes, each of which represents an alpha value.
* support multiple monitors on a single display channelAlon Levy2012-06-273-1/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Adds on device: RAM Header monitors_config - pointer QXLMonitorsConfig count == n max_allowed = N >= 0 QXLHead 1 ... QXLHead n id, surface_id, x, y, width, height, flags IO: QXL_IO_MONITORS_CONFIG server flushes command ring, then calls server callback for changing monitors config. New revision to let the driver know about the new io: QXL_REVISION_STABLE_V12=0x04, Adds server/client capability: SPICE_DISPLAY_CAP_MONITORS_CONFIG Server message will be added in spice-server and spice-common. Version is bumped to 0.12.0 to indicate new IO and structs
* enums.h: update for smartcard updated spice.protoAlon Levy2012-06-221-0/+18
|
* Add QXL_ESCAPE_SET_CUSTOM_DISPLAYMarc-André Lureau2012-05-112-0/+21
| | | | | | | | | | | | QXL_ESCAPE_SET_CUSTOM_DISPLAY is Windows specific message to tell the display & miniport driver to update the mode table with a custom resolution. The mode table needs to be forcefully refreshed after setting a custom display, it can be done by querying an invalid/unknown mode: EnumDisplaySettings(dev_name, 0xffffff, &tempDevMode);
* video streaming: add support for frames of different sizesYonit Halperin2012-04-242-0/+5
| | | | | | | | | | | | | | | | rhbz #815422 Add SPICE_MSG_DISPLAY_STREAM_DATA_SIZED, for stream_data message that in addition to the mjpeg data, also contains the (1) width and height of the compressed frame. (2) the destination box of the frame. The server can send such messages only to clients with SPICE_DISPLAY_CAP_SIZED_STREAM. When playing a youtube video on Windows guest, the driver sometimes sends images which contain the video frames, but also other parts of the screen (e.g., the youtube process bar). In order to prevent glitches, we send these images as part of the stream, using SPICE_MSG_DISPLAY_STREAM_DATA_SIZED.
* qxl_dev: fix const cast warning for QXL_R[AO]M_MAGICAlon Levy2012-04-091-2/+2
|