From patchwork Tue Aug 11 14:06:44 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Vetter X-Patchwork-Id: 40680 Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by demeter.kernel.org (8.14.2/8.14.2) with ESMTP id n7BE7KUC022390 for ; Tue, 11 Aug 2009 14:07:21 GMT Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id B1DDF9EFCD; Tue, 11 Aug 2009 07:07:20 -0700 (PDT) X-Original-To: intel-gfx@lists.freedesktop.org Delivered-To: intel-gfx@lists.freedesktop.org Received: from mail.ffwll.ch (cable-static-49-187.intergga.ch [157.161.49.187]) by gabe.freedesktop.org (Postfix) with ESMTP id 4B3FA9EDF0 for ; Tue, 11 Aug 2009 07:07:15 -0700 (PDT) Received: by mail.ffwll.ch (Postfix, from userid 1000) id B11A820C22A; Wed, 12 Aug 2009 00:00:43 +0200 (CEST) X-Spam-ASN: X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on orange.ffwll.ch X-Spam-Level: X-Spam-Hammy: 0.000-+--signedoffby, 0.000-+--signed-off-by, 0.000-+--100644 X-Spam-Status: No, score=-4.4 required=6.0 tests=ALL_TRUSTED,BAYES_00 autolearn=ham version=3.2.5 X-Spam-Spammy: 0.969-+--H*Ad:U*daniel.vetter, 0.969-+--H*m:ffwll, 0.946-+--H*Ad:D*ffwll.ch Received: from biene (unknown [192.168.23.129]) by mail.ffwll.ch (Postfix) with ESMTP id 82BFB20C22E; Wed, 12 Aug 2009 00:00:08 +0200 (CEST) Received: from daniel by biene with local (Exim 4.69) (envelope-from ) id 1Mas0B-0003en-P0; Tue, 11 Aug 2009 16:06:59 +0200 From: Daniel Vetter To: intel-gfx@lists.freedesktop.org Date: Tue, 11 Aug 2009 16:06:44 +0200 Message-Id: <06188abbed359c266f2033d8b3b28aa0aaf8aada.1249999028.git.daniel.vetter@ffwll.ch> X-Mailer: git-send-email 1.6.3.3 In-Reply-To: References: <0328734a90544a6cd72d9eaf64015db9d3462921.1249999028.git.daniel.vetter@ffwll.ch> <10614c7dd4ecbb1b4d3dd6a15b949cb389053f1f.1249999028.git.daniel.vetter@ffwll.ch> <891b387c6b31972a3e339508e57bd660b2991a17.1249999028.git.daniel.vetter@ffwll.ch> <2096013512e0099bfbb89439943c1b70cccabc92.1249999028.git.daniel.vetter@ffwll.ch> <8a3ddc0d78dcb40a14f8037b81cf202eaa40c301.1249999028.git.daniel.vetter@ffwll.ch> <3e0435569d2d7f58d58eb2f7c8a6952cc29b6934.1249999028.git.daniel.vetter@ffwll.ch> <52250eeaf73398c9c1f91ca7b2317f785f8eba56.1249999028.git.daniel.vetter@ffwll.ch> <3a4e39fa527e6f1bec9306a0c9d7b69b222532a6.1249999028.git.daniel.vetter@ffwll.ch> In-Reply-To: References: Cc: Daniel Vetter Subject: [Intel-gfx] [PATCH 14/18] Xv: create xvmc_passthrough helper X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.9 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: intel-gfx-bounces@lists.freedesktop.org Errors-To: intel-gfx-bounces@lists.freedesktop.org This way all thes strange special cases make much more sense. Signed-off-by: Daniel Vetter --- src/i830_video.c | 25 ++++++++++++++----------- 1 files changed, 14 insertions(+), 11 deletions(-) diff --git a/src/i830_video.c b/src/i830_video.c index 5e2db6c..8592750 100644 --- a/src/i830_video.c +++ b/src/i830_video.c @@ -1962,6 +1962,16 @@ is_planar_fourcc(int id) } } +static int +xvmc_passthrough(int id, Rotation rotation) +{ +#ifdef INTEL_XVMC + return id == FOURCC_XVMC && rotation == RR_Rotate_0; +#else + return 0; +#endif +} + static void i830_display_overlay(ScrnInfoPtr pScrn, xf86CrtcPtr crtc, int id, short width, short height, @@ -2205,16 +2215,13 @@ i830_setup_video_buffer(ScrnInfoPtr pScrn, I830PortPrivPtr pPriv, pPriv->buf = NULL; } -#ifdef INTEL_XVMC - if (id == FOURCC_XVMC && - pPriv->rotation == RR_Rotate_0) { + if (xvmc_passthrough(id, pPriv->rotation)) { if (pPriv->buf) { assert(pPriv->textured); drm_intel_bo_unreference(pPriv->buf); pPriv->buf = NULL; } } else { -#endif if (pPriv->buf == NULL) { pPriv->buf = drm_intel_bo_alloc(pI830->bufmgr, "xv buffer", alloc_size, 4096); @@ -2228,9 +2235,8 @@ i830_setup_video_buffer(ScrnInfoPtr pScrn, I830PortPrivPtr pPriv, return FALSE; } } -#ifdef INTEL_XVMC } -#endif + return TRUE; } @@ -2368,8 +2374,7 @@ i830_copy_video_data(ScrnInfoPtr pScrn, I830PortPrivPtr pPriv, npixels = ((((x2 + 0xffff) >> 16) + 1) & ~1) - left; if (is_planar_fourcc(id)) { - if (id != FOURCC_XVMC - || pPriv->rotation != RR_Rotate_0) { + if (!xvmc_passthrough(id, pPriv->rotation)) { top &= ~1; nlines = ((((y2 + 0xffff) >> 16) + 1) & ~1) - top; I830CopyPlanarData(pScrn, pPriv, buf, srcPitch, srcPitch2, *dstPitch, @@ -2485,13 +2490,11 @@ I830PutImage(ScrnInfoPtr pScrn, } if (IS_I965G(pI830)) { -#ifdef INTEL_XVMC - if (id == FOURCC_XVMC && pPriv->rotation == RR_Rotate_0) { + if (xvmc_passthrough(id, pPriv->rotation)) { pPriv->YBufOffset = buf - pI830->FbBase; pPriv->UBufOffset = pPriv->YBufOffset + height*width; pPriv->VBufOffset = pPriv->UBufOffset + height*width/4; } -#endif I965DisplayVideoTextured(pScrn, pPriv, id, clipBoxes, width, height, dstPitch, x1, y1, x2, y2, src_w, src_h, drw_w, drw_h, pPixmap);