[Spice-devel] [PATCH 11/11] worker: don't use weird RedCompressedBuf nbytes shifting
Pavel Grunt
pgrunt at redhat.com
Wed Nov 11 06:57:05 PST 2015
Hi,
On Wed, 2015-11-11 at 12:20 +0000, Frediano Ziglio wrote:
> From: Marc-André Lureau <marcandre.lureau at gmail.com>
>
> ---
> server/display-channel.h | 3 +--
> server/red_worker.c | 18 +++++++++---------
> 2 files changed, 10 insertions(+), 11 deletions(-)
>
> diff --git a/server/display-channel.h b/server/display-channel.h
> index 12ef60a..599cce7 100644
> --- a/server/display-channel.h
> +++ b/server/display-channel.h
> @@ -70,10 +70,9 @@
> #define NUM_STREAMS 50
> #define NUM_SURFACES 10000
>
> -#define RED_COMPRESS_BUF_SIZE (1024 * 64)
> typedef struct RedCompressBuf RedCompressBuf;
> struct RedCompressBuf {
> - uint32_t buf[RED_COMPRESS_BUF_SIZE / 4];
> + uint8_t buf[64 * 1024];
> RedCompressBuf *next;
> RedCompressBuf *send_next;
> };
I would go for Frediano's version:
http://lists.freedesktop.org/archives/spice-devel/2015-November/023349.html
Pavel
> diff --git a/server/red_worker.c b/server/red_worker.c
> index f37da2b..10b95e8 100644
> --- a/server/red_worker.c
> +++ b/server/red_worker.c
> @@ -3759,7 +3759,7 @@ static void glz_usr_free(GlzEncoderUsrContext *usr, void
> *ptr)
> free(ptr);
> }
>
> -static inline int encoder_usr_more_space(EncoderData *enc_data, uint32_t
> **io_ptr)
> +static int encoder_usr_more_space(EncoderData *enc_data, uint8_t **io_ptr)
> {
> RedCompressBuf *buf;
>
> @@ -3770,31 +3770,31 @@ static inline int encoder_usr_more_space(EncoderData
> *enc_data, uint32_t **io_pt
> enc_data->bufs_tail = buf;
> buf->send_next = NULL;
> *io_ptr = buf->buf;
> - return sizeof(buf->buf) >> 2;
> + return sizeof(buf->buf);
> }
>
> static int quic_usr_more_space(QuicUsrContext *usr, uint32_t **io_ptr, int
> rows_completed)
> {
> EncoderData *usr_data = &(((QuicData *)usr)->data);
> - return encoder_usr_more_space(usr_data, io_ptr);
> + return encoder_usr_more_space(usr_data, (uint8_t **)io_ptr) /
> sizeof(uint32_t);
> }
>
> static int lz_usr_more_space(LzUsrContext *usr, uint8_t **io_ptr)
> {
> EncoderData *usr_data = &(((LzData *)usr)->data);
> - return (encoder_usr_more_space(usr_data, (uint32_t **)io_ptr) << 2);
> + return encoder_usr_more_space(usr_data, io_ptr);
> }
>
> static int glz_usr_more_space(GlzEncoderUsrContext *usr, uint8_t **io_ptr)
> {
> EncoderData *usr_data = &(((GlzData *)usr)->data);
> - return (encoder_usr_more_space(usr_data, (uint32_t **)io_ptr) << 2);
> + return encoder_usr_more_space(usr_data, io_ptr);
> }
>
> static int jpeg_usr_more_space(JpegEncoderUsrContext *usr, uint8_t **io_ptr)
> {
> EncoderData *usr_data = &(((JpegData *)usr)->data);
> - return (encoder_usr_more_space(usr_data, (uint32_t **)io_ptr) << 2);
> + return encoder_usr_more_space(usr_data, io_ptr);
> }
>
> #ifdef USE_LZ4
> @@ -3808,7 +3808,7 @@ static int lz4_usr_more_space(Lz4EncoderUsrContext *usr,
> uint8_t **io_ptr)
> static int zlib_usr_more_space(ZlibEncoderUsrContext *usr, uint8_t **io_ptr)
> {
> EncoderData *usr_data = &(((ZlibData *)usr)->data);
> - return (encoder_usr_more_space(usr_data, (uint32_t **)io_ptr) << 2);
> + return encoder_usr_more_space(usr_data, io_ptr);
> }
>
> static inline int encoder_usr_more_lines(EncoderData *enc_data, uint8_t
> **lines)
> @@ -4462,8 +4462,8 @@ static inline int
> red_quic_compress_image(DisplayChannelClient *dcc, SpiceImage
> stride = -src->stride;
> }
> size = quic_encode(quic, type, src->x, src->y, NULL, 0, stride,
> - quic_data->data.bufs_head->buf,
> - sizeof(quic_data->data.bufs_head->buf) >> 2);
> + (uint32_t*)quic_data->data.bufs_head->buf,
> + sizeof(quic_data->data.bufs_head->buf) /
> sizeof(uint32_t));
>
> // the compressed buffer is bigger than the original data
> if ((size << 2) > (src->y * src->stride)) {
More information about the Spice-devel
mailing list