From: Christian König Date: Wed, 1 Feb 2012 22:38:45 +0000 (+0100) Subject: vl: add interlacing capabilities X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=f3f03c67e90f962f67e7b58b7c7baff3be251cb1;p=mesa.git vl: add interlacing capabilities Let the driver control interlaced or progressive format of video buffers. Signed-off-by: Christian König --- diff --git a/src/gallium/drivers/nouveau/nouveau_video.c b/src/gallium/drivers/nouveau/nouveau_video.c index 47d332a12b5..cfbf857a969 100644 --- a/src/gallium/drivers/nouveau/nouveau_video.c +++ b/src/gallium/drivers/nouveau/nouveau_video.c @@ -837,6 +837,12 @@ nouveau_screen_get_video_param(struct pipe_screen *pscreen, return vl_video_buffer_max_size(pscreen); case PIPE_VIDEO_CAP_PREFERED_FORMAT: return PIPE_FORMAT_NV12; + case PIPE_VIDEO_CAP_PREFERS_INTERLACED: + return false; + case PIPE_VIDEO_CAP_SUPPORTS_INTERLACED: + return false; + case PIPE_VIDEO_CAP_SUPPORTS_PROGRESSIVE: + return true; default: debug_printf("unknown video param: %d\n", param); return 0; diff --git a/src/gallium/drivers/nvfx/nvfx_screen.c b/src/gallium/drivers/nvfx/nvfx_screen.c index 623903ab756..ba1a2423d4b 100644 --- a/src/gallium/drivers/nvfx/nvfx_screen.c +++ b/src/gallium/drivers/nvfx/nvfx_screen.c @@ -236,6 +236,12 @@ nvfx_screen_get_video_param(struct pipe_screen *screen, return vl_video_buffer_max_size(screen); case PIPE_VIDEO_CAP_PREFERED_FORMAT: return PIPE_FORMAT_NV12; + case PIPE_VIDEO_CAP_PREFERS_INTERLACED: + return false; + case PIPE_VIDEO_CAP_SUPPORTS_INTERLACED: + return false; + case PIPE_VIDEO_CAP_SUPPORTS_PROGRESSIVE: + return true; default: return 0; } diff --git a/src/gallium/drivers/r300/r300_screen.c b/src/gallium/drivers/r300/r300_screen.c index 9a9418bc927..eb233a0b0be 100644 --- a/src/gallium/drivers/r300/r300_screen.c +++ b/src/gallium/drivers/r300/r300_screen.c @@ -314,6 +314,12 @@ static int r300_get_video_param(struct pipe_screen *screen, return vl_video_buffer_max_size(screen); case PIPE_VIDEO_CAP_PREFERED_FORMAT: return PIPE_FORMAT_NV12; + case PIPE_VIDEO_CAP_PREFERS_INTERLACED: + return false; + case PIPE_VIDEO_CAP_SUPPORTS_INTERLACED: + return false; + case PIPE_VIDEO_CAP_SUPPORTS_PROGRESSIVE: + return true; default: return 0; } diff --git a/src/gallium/drivers/r600/r600_pipe.c b/src/gallium/drivers/r600/r600_pipe.c index 351ecfe8437..140ae11af9a 100644 --- a/src/gallium/drivers/r600/r600_pipe.c +++ b/src/gallium/drivers/r600/r600_pipe.c @@ -535,6 +535,12 @@ static int r600_get_video_param(struct pipe_screen *screen, return vl_video_buffer_max_size(screen); case PIPE_VIDEO_CAP_PREFERED_FORMAT: return PIPE_FORMAT_NV12; + case PIPE_VIDEO_CAP_PREFERS_INTERLACED: + return false; + case PIPE_VIDEO_CAP_SUPPORTS_INTERLACED: + return false; + case PIPE_VIDEO_CAP_SUPPORTS_PROGRESSIVE: + return true; default: return 0; } diff --git a/src/gallium/drivers/softpipe/sp_screen.c b/src/gallium/drivers/softpipe/sp_screen.c index 6cafeafbe19..6d61d003975 100644 --- a/src/gallium/drivers/softpipe/sp_screen.c +++ b/src/gallium/drivers/softpipe/sp_screen.c @@ -209,6 +209,12 @@ softpipe_get_video_param(struct pipe_screen *screen, return vl_video_buffer_max_size(screen); case PIPE_VIDEO_CAP_PREFERED_FORMAT: return PIPE_FORMAT_NV12; + case PIPE_VIDEO_CAP_PREFERS_INTERLACED: + return false; + case PIPE_VIDEO_CAP_SUPPORTS_INTERLACED: + return false; + case PIPE_VIDEO_CAP_SUPPORTS_PROGRESSIVE: + return true; default: return 0; } diff --git a/src/gallium/include/pipe/p_video_enums.h b/src/gallium/include/pipe/p_video_enums.h index 3b61601536e..deacf8d1d9c 100644 --- a/src/gallium/include/pipe/p_video_enums.h +++ b/src/gallium/include/pipe/p_video_enums.h @@ -51,7 +51,10 @@ enum pipe_video_cap PIPE_VIDEO_CAP_NPOT_TEXTURES = 1, PIPE_VIDEO_CAP_MAX_WIDTH = 2, PIPE_VIDEO_CAP_MAX_HEIGHT = 3, - PIPE_VIDEO_CAP_PREFERED_FORMAT = 4 + PIPE_VIDEO_CAP_PREFERED_FORMAT = 4, + PIPE_VIDEO_CAP_PREFERS_INTERLACED = 5, + PIPE_VIDEO_CAP_SUPPORTS_PROGRESSIVE = 6, + PIPE_VIDEO_CAP_SUPPORTS_INTERLACED = 7 }; enum pipe_video_codec