[PATCH 1/1] UBUNTU: psb: fully disable detearing code paths as a run time option

Amit Kucheria amit.kucheria at canonical.com
Wed Apr 7 16:03:14 UTC 2010


Clarified offline from Colin that that drm_psb_detear is already defined in
the driver but not used to do much currently.

Change appears only in the #ifdef PSB_DETEAR blocks of code and look good.

Acked-by: Amit Kucheria <amit.kucheria at canonical.com>


On 10 Apr 07, Colin King wrote:
> From: Colin Ian King <colin.king at canonical.com>
> 
> BugLink: http://bugs.launchpad.net/bugs/556710
> 
> Extend the semantics of the psb detear module paramater to totally
> disable the detearing code paths.  This makes detear=0 functionally
> indentical to compiling the psb driver with PSB_DETEAR not defined
> (and hence disabled) in psb_drv.h. This provides the driver with the
> ability to totally disable detearing at module load time rather than
> at compile time.
> 
> Disabling detearing is a workaround to a couple of known issues:
> 
> 1) Playing MS-MPEG4 encoded video with Xv which causes X to crash
> 2) Playing a video while the screen is turned off (with DPMPS or
> xrandr) which causes X to hang
> 
> Signed-off-by: Colin Ian King <colin.king at canonical.com>
> ---
>  ubuntu/media/drm-poulsbo/psb_irq.c      |    2 +-
>  ubuntu/media/drm-poulsbo/psb_schedule.c |    2 +-
>  ubuntu/media/drm-poulsbo/psb_sgx.c      |    6 +++---
>  3 files changed, 5 insertions(+), 5 deletions(-)
> 
> diff --git a/ubuntu/media/drm-poulsbo/psb_irq.c b/ubuntu/media/drm-poulsbo/psb_irq.c
> index f3e19c6..51e1c41 100644
> --- a/ubuntu/media/drm-poulsbo/psb_irq.c
> +++ b/ubuntu/media/drm-poulsbo/psb_irq.c
> @@ -197,7 +197,7 @@ irqreturn_t psb_irq_handler(DRM_IRQ_ARGS)
>  
>  	if (vdc_stat) {
>  #ifdef PSB_DETEAR
> -		if(psb_blit_info.cmd_ready) {
> +		if (drm_psb_detear && psb_blit_info.cmd_ready) {
>  			psb_blit_info.cmd_ready = 0;
>  			psb_blit_2d_reg_write(dev_priv, psb_blit_info.cmdbuf);
>  			/* to resume the blocked psb_cmdbuf_2d() */
> diff --git a/ubuntu/media/drm-poulsbo/psb_schedule.c b/ubuntu/media/drm-poulsbo/psb_schedule.c
> index 959f8f9..a4b4021 100644
> --- a/ubuntu/media/drm-poulsbo/psb_schedule.c
> +++ b/ubuntu/media/drm-poulsbo/psb_schedule.c
> @@ -1208,7 +1208,7 @@ static int psb_setup_task_devlocked(struct drm_device *dev,
>  		task->scene = psb_scene_ref(scene);
>  
>  #ifdef PSB_DETEAR
> -	if(PSB_VIDEO_BLIT == arg->sVideoInfo.flag) {
> +	if (drm_psb_detear && PSB_VIDEO_BLIT == arg->sVideoInfo.flag) {
>  		task->bVideoFlag = PSB_VIDEO_BLIT;
>  		task->x = arg->sVideoInfo.x;
>  		task->y = arg->sVideoInfo.y;
> diff --git a/ubuntu/media/drm-poulsbo/psb_sgx.c b/ubuntu/media/drm-poulsbo/psb_sgx.c
> index 3027113..1722877 100644
> --- a/ubuntu/media/drm-poulsbo/psb_sgx.c
> +++ b/ubuntu/media/drm-poulsbo/psb_sgx.c
> @@ -177,7 +177,7 @@ int psb_2d_submit(struct drm_psb_private *dev_priv, uint32_t * cmdbuf,
>  #ifdef PSB_DETEAR
>  		/* delayed 2D blit tasks are not executed right now,
>  		   let's save a copy of the task */
> -		if(dev_priv->blit_2d) {
> +		if (drm_psb_detear && dev_priv->blit_2d) {
>  			/* FIXME: should use better approach other
>  			   than the dev_priv->blit_2d to distinguish
>  			   delayed 2D blit tasks */
> @@ -929,7 +929,7 @@ static int psb_cmdbuf_2d(struct drm_file *priv,
>  		return -EAGAIN;
>  
>  #ifdef PSB_DETEAR
> -	if(arg->sVideoInfo.flag == (PSB_DELAYED_2D_BLIT)) {
> +	if (drm_psb_detear && arg->sVideoInfo.flag == (PSB_DELAYED_2D_BLIT)) {
>  		dev_priv->blit_2d = 1;
>  	}
>  #endif	/* PSB_DETEAR */
> @@ -940,7 +940,7 @@ static int psb_cmdbuf_2d(struct drm_file *priv,
>  		goto out_unlock;
>  
>  #ifdef PSB_DETEAR
> -	if(arg->sVideoInfo.flag == (PSB_DELAYED_2D_BLIT)) {
> +	if (drm_psb_detear && arg->sVideoInfo.flag == (PSB_DELAYED_2D_BLIT)) {
>  		arg->sVideoInfo.flag = 0;
>  		clear_bit(0, &psb_blit_info.vdc_bit);
>  		psb_blit_info.cmd_ready = 1;
> -- 
> 1.6.3.3
> 
> 
> -- 
> kernel-team mailing list
> kernel-team at lists.ubuntu.com
> https://lists.ubuntu.com/mailman/listinfo/kernel-team

-- 
----------------------------------------------------------------------
Amit Kucheria, Kernel Engineer || amit.kucheria at canonical.com
----------------------------------------------------------------------




More information about the kernel-team mailing list