[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