This patcheset add a device to allow guest machines with assigned hardware devices to send encoded video and other informations that will be handled as a normal display by Spice. New GPU devices are capable to capture and encode video in an efficient way. As the GPU in this case is assigned to the guest and not the host is easier if the guest do the hard job. This patchset add a new "com.redhat.stream.0" device visible to the guests. This device will be used by the guest to send streaming data. The host will forward the data to the client. To do so a new StreamChannel class, implementing the protocol DisplayChannel is implemented. Changes since git publish v3: - dynamically allocate channels. This solve the fixed ID problem and make easier in the future to implement multiple monitors. This required 2 additional patches, one to find next free ID and another that send new channel information to the client; - fixed some typos; - renamed "channel" field to "stream_channel" to avoid confusing them; - updated commit messages. Changes since git publish v2: - define PRIMARY_SURFACE_ID mnemonic to make code more readable; - renamed ask_new_stream to request_new_stream; - miscellaneous comment updates; - use NUM_STREAMS instead of fixed 40 value; - pass time to StreamChannel sending data; - add finalize method to free memory; - add support for cursor move. Frediano Ziglio (22): Avoid to use global variable for channel IDs Notify client of the creation of new channels dynamically stream-device: Add device to handle streaming stream-device: Start parsing new protocol from guest stream-channel: Write a really base channel to implement the streaming stream-channel: Start implementing DisplayChannel properly stream-device: Create channel for stream device stream-channel: Initialize blank display on client connection stream-device: Handle streaming data from device to channel stream-channel: Allows not fixed size stream-channel: Allows to register callback to get new stream request stream-channel: Support client connection/disconnection stream-channel: Do not show an empty blank screen on start char-device: Do not stop and clear interface on reset stream-device: Start supporting resetting device when close/open on guest stream-device: Create channel when needed stream-device: Limit sending queue from guest to server stream-channel: Activate streaming report from client cursor-channel: Allow to not handle a QXL device WIP stream-device: handle cursor from device WIP: Try to reduce delay stream-device: Implement mouse movement server/Makefile.am | 3 + server/char-device.c | 2 - server/char-device.h | 1 + server/cursor-channel.c | 8 +- server/cursor-channel.h | 4 +- server/main-channel-client.c | 50 ++++ server/main-channel-client.h | 3 + server/main-channel.c | 6 + server/main-channel.h | 3 + server/red-worker.c | 2 +- server/reds.c | 44 +++- server/reds.h | 1 + server/spicevmc.c | 10 +- server/stream-channel.c | 573 +++++++++++++++++++++++++++++++++++++++++++ server/stream-channel.h | 82 +++++++ server/stream-device.c | 524 +++++++++++++++++++++++++++++++++++++++ 16 files changed, 1305 insertions(+), 11 deletions(-) create mode 100644 server/stream-channel.c create mode 100644 server/stream-channel.h create mode 100644 server/stream-device.c -- 2.13.5 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel