On Mon, 2014-02-03 at 11:33 +0100, Christian König wrote:
> From: Christian König <christian.koe...@amd.com>
> 
> Without the correct feedback buffer size UVD runs
> into an error on each frame, reducing the maximum FPS.
> 
> Signed-off-by: Christian König <christian.koe...@amd.com>

Some minor comments below, other than that

Reviewed-by: Michel Dänzer <michel.daen...@amd.com>


> diff --git a/src/gallium/drivers/radeon/radeon_uvd.c 
> b/src/gallium/drivers/radeon/radeon_uvd.c
> index 95757e3..6ac2199 100644
> --- a/src/gallium/drivers/radeon/radeon_uvd.c
> +++ b/src/gallium/drivers/radeon/radeon_uvd.c
> @@ -132,15 +136,20 @@ static void send_cmd(struct ruvd_decoder *dec, unsigned 
> cmd,
>  }
>  
>  /* map the next available message buffer */
> -static void map_msg_buf(struct ruvd_decoder *dec)
> +static void map_msg_fb_buf(struct ruvd_decoder *dec)

Maybe the function comment should be updated as well, e.g. to:

        /* map the next available message/feedback buffer */


> +     void *ptr;
>  
> -     /* grap the current message buffer */
> +     /* grap the current message/feedback buffer */

While you're at it, why not fix the spelling: 'grab'


> -     /* copy the message into it */
> -     dec->msg = dec->ws->buffer_map(buf->cs_handle, dec->cs, 
> PIPE_TRANSFER_WRITE);
> +     /* and map it for CPU access */
> +     ptr = dec->ws->buffer_map(buf->cs_handle, dec->cs, PIPE_TRANSFER_WRITE);
> +
> +     /* calc buffer offsets */
> +     dec->msg = ptr;
> +     dec->fb = ptr + FB_BUFFER_OFFSET;
>  }

This is pointer arithmetic on a void* pointer, which is not defined by
the C standard and not supported by all compilers. Maybe make ptr a
char* instead, or just cast it to that for the assignment.


> @@ -898,7 +913,8 @@ struct pipe_video_codec *ruvd_create_decoder(struct 
> pipe_context *context,
>  
>       bs_buf_size = width * height * 512 / (16 * 16);
>       for (i = 0; i < NUM_BUFFERS; ++i) {
> -             unsigned msg_fb_size = align(sizeof(struct ruvd_msg), 0x1000) + 
> 0x1000;
> +             unsigned msg_fb_size = FB_BUFFER_OFFSET + FB_BUFFER_SIZE;
> +             assert(sizeof(struct ruvd_msg) <= FB_BUFFER_OFFSET);

This looks like it could be a STATIC_ASSERT.


-- 
Earthling Michel Dänzer            |                  http://www.amd.com
Libre software enthusiast          |                Mesa and X developer

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to