[xorg-x11-drv-openchrome/f17] Make EXA the default. Add support for Xv on VX900.

Xavier Bachelot xavierb at fedoraproject.org
Sun Mar 18 20:59:13 UTC 2012


commit ba3d105f0c975b19bdfd29a0edd52700ba11b54f
Author: Xavier Bachelot <xavier at bachelot.org>
Date:   Sun Mar 18 21:31:37 2012 +0100

    Make EXA the default.
    Add support for Xv on VX900.

 openchrome-0.2.905-enable_exa.patch           |   55 ++++++
 openchrome-0.2.905-xv_support_for_vx900.patch |  226 +++++++++++++++++++++++++
 xorg-x11-drv-openchrome.spec                  |   10 +-
 3 files changed, 290 insertions(+), 1 deletions(-)
---
diff --git a/openchrome-0.2.905-enable_exa.patch b/openchrome-0.2.905-enable_exa.patch
new file mode 100644
index 0000000..0b2ad0d
--- /dev/null
+++ b/openchrome-0.2.905-enable_exa.patch
@@ -0,0 +1,55 @@
+commit 818ef78be84b80ab1b4601e0392ed330abc440d5
+Author: James Simmons <jsimmons at infradead.org>
+Date:   Tue Jun 7 20:35:03 2011 +0000
+
+    enable EXA by default
+
+diff --git a/src/via_driver.c b/src/via_driver.c
+index 9d3650c..bc38b54 100644
+--- a/src/via_driver.c
++++ b/src/via_driver.c
+@@ -683,6 +683,7 @@ VIASetupDefaultOptions(ScrnInfoPtr pScrn)
+     pVia->shadowFB = FALSE;
+     pVia->NoAccel = FALSE;
+     pVia->noComposite = FALSE;
++    pVia->useEXA = TRUE;
+     pVia->exaScratchSize = VIA_SCRATCH_SIZE / 1024;
+     pVia->hwcursor = TRUE;
+     pVia->VQEnable = TRUE;
+@@ -1215,12 +1216,12 @@ VIAPreInit(ScrnInfoPtr pScrn, int flags)
+     if (!pVia->NoAccel) {
+         from = X_DEFAULT;
+         if ((s = (char *)xf86GetOptValString(VIAOptions, OPTION_ACCELMETHOD))) {
+-            if (!xf86NameCmp(s, "XAA")) {
+-                from = X_CONFIG;
+-                pVia->useEXA = FALSE;
+-            } else if (!xf86NameCmp(s, "EXA")) {
++            if (!xf86NameCmp(s, "EXA")) {
+                 from = X_CONFIG;
+                 pVia->useEXA = TRUE;
++            } else if (!xf86NameCmp(s, "XAA")) {
++                from = X_CONFIG;
++                pVia->useEXA = FALSE;
+             }
+         }
+         xf86DrvMsg(pScrn->scrnIndex, from,
+
+commit dfcb8c50c23381e59fd30ec34b929016ad2bc870
+Author: James Simmons <jsimmons at infradead.org>
+Date:   Tue Mar 6 14:22:25 2012 +0000
+
+    Disable EXA composite since it is broken. Will fix at a latter date.
+
+diff --git a/src/via_driver.c b/src/via_driver.c
+index bc38b54..8ee5cc3 100644
+--- a/src/via_driver.c
++++ b/src/via_driver.c
+@@ -682,7 +682,7 @@ VIASetupDefaultOptions(ScrnInfoPtr pScrn)
+ 
+     pVia->shadowFB = FALSE;
+     pVia->NoAccel = FALSE;
+-    pVia->noComposite = FALSE;
++    pVia->noComposite = TRUE;
+     pVia->useEXA = TRUE;
+     pVia->exaScratchSize = VIA_SCRATCH_SIZE / 1024;
+     pVia->hwcursor = TRUE;
diff --git a/openchrome-0.2.905-xv_support_for_vx900.patch b/openchrome-0.2.905-xv_support_for_vx900.patch
new file mode 100644
index 0000000..5d19ec8
--- /dev/null
+++ b/openchrome-0.2.905-xv_support_for_vx900.patch
@@ -0,0 +1,226 @@
+commit 4406c4826f650e896548b369a73173c504434881
+Author: Bartosz Kosiorek <gang65 at poczta.onet.pl>
+Date:   Thu Jan 27 06:01:13 2011 +0000
+
+    Initial XVideo support for VX900 chipset
+
+diff --git a/src/via.h b/src/via.h
+index 9d886d5..c3298ca 100644
+--- a/src/via.h
++++ b/src/via.h
+@@ -607,7 +607,8 @@
+ #define HQV_DST_DATA_OFFSET_CTRL1           0x180
+ #define HQV_DST_DATA_OFFSET_CTRL2           0x184  
+ #define HQV_DST_DATA_OFFSET_CTRL3           0x188  
+-#define HQV_DST_DATA_OFFSET_CTRL4           0x18C 
++#define HQV_DST_DATA_OFFSET_CTRL4           0x18C
++#define HQV_SHARPNESS_DECODER_HANDSHAKE_CTRL_410 0x1A4 
+ #define HQV_RESIDUE_PIXEL_FRAME_STARTADDR   0x1BC
+ #define HQV_BACKGROUND_DATA_OFFSET          0x1CC
+ #define HQV_SUBP_HSCALE_CTRL                0x1E0
+diff --git a/src/via_swov.c b/src/via_swov.c
+index c7912ec..54e96aa 100644
+--- a/src/via_swov.c
++++ b/src/via_swov.c
+@@ -335,6 +335,7 @@ VIAVidHWDiffInit(ScrnInfoPtr pScrn)
+             HWDiff->HQVCmeRegs = hqv_cme_regs;
+             break;
+         case VIA_VX855:
++        case VIA_VX900:
+             HWDiff->dwThreeHQVBuffer = VID_HWDIFF_TRUE;
+             HWDiff->dwHQVFetchByteUnit = VID_HWDIFF_TRUE;
+             HWDiff->dwSupportTwoColorKey = VID_HWDIFF_TRUE;
+@@ -889,6 +890,7 @@ viaCalculateVideoColor(VIAPtr pVia, int hue, int saturation,
+         case PCI_CHIP_VT3327:
+         case PCI_CHIP_VT3353:
+         case PCI_CHIP_VT3409:
++        case PCI_CHIP_VT3410:
+             model = 0;
+             break;
+         case PCI_CHIP_CLE3122:
+@@ -1028,6 +1030,7 @@ viaSetColorSpace(VIAPtr pVia, int hue, int saturation, int brightness,
+         case PCI_CHIP_VT3364:
+         case PCI_CHIP_VT3353:
+         case PCI_CHIP_VT3409:
++        case PCI_CHIP_VT3410:
+         case PCI_CHIP_CLE3122:
+             VIDOutD(V1_ColorSpaceReg_2, col2);
+             VIDOutD(V1_ColorSpaceReg_1, col1);
+@@ -1058,6 +1061,7 @@ ViaInitVideoStatusFlag(VIAPtr pVia)
+         case PCI_CHIP_VT3364:
+         case PCI_CHIP_VT3353:
+         case PCI_CHIP_VT3409:
++        case PCI_CHIP_VT3410:
+             return (VIDEO_HQV_INUSE | SW_USE_HQV | VIDEO_1_INUSE
+                     | VIDEO_ACTIVE | VIDEO_SHOW);
+         case PCI_CHIP_CLE3122:
+@@ -1098,6 +1102,7 @@ ViaSetVidCtl(VIAPtr pVia, unsigned int videoFlag)
+             case PCI_CHIP_VT3353:
+                 return V3_ENABLE | VIDEO_EXPIRE_NUM_VT3336;
+             case PCI_CHIP_VT3409:
++            case PCI_CHIP_VT3410:
+                 return V3_ENABLE | VIDEO_EXPIRE_NUM_VT3409;
+             case PCI_CHIP_CLE3122:
+                 if (CLE266_REV_IS_CX(pVia->ChipRev))
+@@ -1388,6 +1393,7 @@ SetFIFO_V3(VIAPtr pVia, CARD8 depth, CARD8 prethreshold, CARD8 threshold)
+         case PCI_CHIP_VT3327:
+         case PCI_CHIP_VT3353:
+         case PCI_CHIP_VT3409:
++        case PCI_CHIP_VT3410:
+             SaveVideoRegister(pVia, ALPHA_V3_FIFO_CONTROL,
+                               (VIDInD(ALPHA_V3_FIFO_CONTROL) & ALPHA_FIFO_MASK)
+                                | ((depth - 1) & 0xff) | ((threshold & 0xff) << 8));
+@@ -1453,6 +1459,7 @@ SetFIFO_V3_64or32or32(VIAPtr pVia)
+         case PCI_CHIP_VT3364:
+         case PCI_CHIP_VT3353:
+         case PCI_CHIP_VT3409:
++        case PCI_CHIP_VT3410:
+             SetFIFO_V3(pVia, 225, 200, 250);
+             break;
+         case PCI_CHIP_VT3204:
+@@ -1486,6 +1493,7 @@ SetFIFO_V3_64or32or16(VIAPtr pVia)
+         case PCI_CHIP_VT3364:
+         case PCI_CHIP_VT3353:
+         case PCI_CHIP_VT3409:
++        case PCI_CHIP_VT3410:
+             SetFIFO_V3(pVia, 225, 200, 250);
+             break;
+         case PCI_CHIP_VT3204:
+@@ -1670,7 +1678,7 @@ SetHQVFetch(VIAPtr pVia, CARD32 srcFetch, unsigned long srcHeight)
+         srcFetch >>= 3;  /* fetch unit is 8 bytes */
+     }
+ 
+-    if (pVia->ChipId != PCI_CHIP_VT3409)
++    if ((pVia->ChipId != PCI_CHIP_VT3409) && (pVia->ChipId != PCI_CHIP_VT3410))
+         SaveVideoRegister(pVia, HQV_SRC_FETCH_LINE + proReg,
+                           ((srcFetch - 1) << 16) | (srcHeight - 1));
+ }
+@@ -2142,10 +2150,13 @@ Upd_Video(ScrnInfoPtr pScrn, unsigned long videoFlag,
+     if (pVia->VideoEngine == VIDEO_ENGINE_CME) {
+         SaveVideoRegister(pVia, HQV_CME_REG(hwDiff, HQV_SDO_CTRL1),0);
+         SaveVideoRegister(pVia, HQV_CME_REG(hwDiff, HQV_SDO_CTRL3),((pUpdate->SrcRight - 1 ) << 16) | (pUpdate->SrcBottom - 1));
+-        if (pVia->Chipset == VIA_VX800 || pVia->Chipset == VIA_VX855) {
++        if ((pVia->Chipset == VIA_VX800) || 
++            (pVia->Chipset == VIA_VX855) || 
++            (pVia->Chipset == VIA_VX900)) {
+             SaveVideoRegister(pVia, HQV_CME_REG(hwDiff, HQV_SDO_CTRL2),0);
+             SaveVideoRegister(pVia, HQV_CME_REG(hwDiff, HQV_SDO_CTRL4),((pUpdate->SrcRight - 1 ) << 16) | (pUpdate->SrcBottom - 1));
+-            if (pVia->Chipset == VIA_VX855) {
++            if ((pVia->Chipset == VIA_VX855) ||
++                (pVia->Chipset == VIA_VX900)) {
+                 SaveVideoRegister(pVia, HQV_DST_DATA_OFFSET_CTRL1,0);
+                 SaveVideoRegister(pVia, HQV_DST_DATA_OFFSET_CTRL3,((pUpdate->SrcRight - 1 ) << 16) | (pUpdate->SrcBottom - 1));
+                 SaveVideoRegister(pVia, HQV_DST_DATA_OFFSET_CTRL2,0);
+@@ -2156,8 +2167,17 @@ Upd_Video(ScrnInfoPtr pScrn, unsigned long videoFlag,
+                 SaveVideoRegister(pVia, HQV_SUBP_HSCALE_CTRL,0);
+                 /*0x3e8*/
+                 SaveVideoRegister(pVia, HQV_SUBP_VSCALE_CTRL,0);
+-                SaveVideoRegister(pVia, HQV_DEFAULT_VIDEO_COLOR, HQV_FIX_COLOR);
+             }
++
++            if (pVia->Chipset == VIA_VX900) {
++
++                SaveVideoRegister(pVia, HQV_SHARPNESS_DECODER_HANDSHAKE_CTRL_410, 0);        
++            }
++
++            // TODO Need to be tested on VX800
++            /* 0x3B8 */
++            SaveVideoRegister(pVia, HQV_DEFAULT_VIDEO_COLOR, HQV_FIX_COLOR);
++    
+         }
+     }
+ 
+diff --git a/src/via_video.c b/src/via_video.c
+index 7ebdfec..933c066 100644
+--- a/src/via_video.c
++++ b/src/via_video.c
+@@ -283,11 +283,12 @@ DecideOverlaySupport(ScrnInfoPtr pScrn)
+     if (pVia->ChipId != PCI_CHIP_VT3205 &&
+         pVia->ChipId != PCI_CHIP_VT3204 &&
+         pVia->ChipId != PCI_CHIP_VT3259 &&
+-        pVia->ChipId != PCI_CHIP_VT3314 && 
+-        pVia->ChipId != PCI_CHIP_VT3327 && 
+-        pVia->ChipId != PCI_CHIP_VT3336 && 
+-        pVia->ChipId != PCI_CHIP_VT3409 && 
+-        pVia->ChipId != PCI_CHIP_VT3364 && 
++        pVia->ChipId != PCI_CHIP_VT3314 &&
++        pVia->ChipId != PCI_CHIP_VT3327 &&
++        pVia->ChipId != PCI_CHIP_VT3336 &&
++        pVia->ChipId != PCI_CHIP_VT3409 &&
++        pVia->ChipId != PCI_CHIP_VT3410 &&
++        pVia->ChipId != PCI_CHIP_VT3364 &&
+         pVia->ChipId != PCI_CHIP_VT3324 &&
+ 	pVia->ChipId != PCI_CHIP_VT3353) {
+         CARD32 bandwidth = (mode->HDisplay >> 4) * (mode->VDisplay >> 5) *
+@@ -660,6 +661,7 @@ viaInitVideo(ScreenPtr pScreen)
+         (pVia->Chipset == VIA_CX700) ||
+         (pVia->Chipset == VIA_VX800) ||
+         (pVia->Chipset == VIA_VX855) ||
++        (pVia->Chipset == VIA_VX900) ||
+         (pVia->Chipset == VIA_P4M890));
+     if ((pVia->drmVerMajor < 2) ||
+         ((pVia->drmVerMajor == 2) && (pVia->drmVerMinor < 9)))
+@@ -678,8 +680,8 @@ viaInitVideo(ScreenPtr pScreen)
+         (pVia->Chipset == VIA_K8M800) || (pVia->Chipset == VIA_PM800) ||
+         (pVia->Chipset == VIA_VM800) || (pVia->Chipset == VIA_K8M890) ||
+         (pVia->Chipset == VIA_P4M900) || (pVia->Chipset == VIA_CX700) ||
+-        (pVia->Chipset == VIA_P4M890) || (pVia->Chipset == VIA_VX800) || 
+-        (pVia->Chipset == VIA_VX855)) {
++        (pVia->Chipset == VIA_P4M890) || (pVia->Chipset == VIA_VX800) ||
++        (pVia->Chipset == VIA_VX855) || (pVia->Chipset == VIA_VX900)) {
+         num_new = viaSetupAdaptors(pScreen, &newAdaptors);
+         num_adaptors = xf86XVListGenericAdaptors(pScrn, &adaptors);
+     } else {
+
+commit aa56f57da6e403060536f4215e3142f38e98d84d
+Author: Bartosz Kosiorek <gang65 at poczta.onet.pl>
+Date:   Thu Jan 27 18:54:09 2011 +0000
+
+    Fix XVideo on VX900 chipset
+
+diff --git a/src/via.h b/src/via.h
+index c3298ca..8421b30 100644
+--- a/src/via.h
++++ b/src/via.h
+@@ -260,7 +260,7 @@
+ #define V1_EXPIRE_NUM_A         0x000a0000
+ #define V1_EXPIRE_NUM_F         0x000f0000 /* jason */
+ #define V1_FIFO_EXTENDED        0x00200000
+-#define V1_ON_CRT               0x00000000
++#define V1_ON_PRI               0x00000000
+ #define V1_ON_SND_DISPLAY       0x80000000
+ #define V1_FIFO_32V1_32V2       0x00000000
+ #define V1_FIFO_48V1_32V2       0x00200000
+diff --git a/src/via_mode.c b/src/via_mode.c
+index 476f1f1..d7bd243 100644
+--- a/src/via_mode.c
++++ b/src/via_mode.c
+@@ -1749,6 +1749,12 @@ ViaModeSet(ScrnInfoPtr pScrn, DisplayModePtr mode)
+         (pVia->Chipset == VIA_K8M800) || 
+         (pVia->Chipset == VIA_VX900) )) {
+         pBIOSInfo->FirstCRTC->IsActive=TRUE;
++        if (pVia->DDC1) {
++	    pBIOSInfo->SecondCRTC->IsActive=TRUE;
++        } else { 
++            //We need to disable the secondary to properly work XVideo on VX900
++            pBIOSInfo->SecondCRTC->IsActive=FALSE;
++        }
+         ViaModeFirstCRTC(pScrn, mode);
+     }
+     if (pBIOSInfo->Simultaneous->IsActive) {
+diff --git a/src/via_swov.c b/src/via_swov.c
+index 54e96aa..1fa07af 100644
+--- a/src/via_swov.c
++++ b/src/via_swov.c
+@@ -1885,9 +1885,9 @@ Upd_Video(ScrnInfoPtr pScrn, unsigned long videoFlag,
+      */
+     if ((pVia->VideoEngine == VIDEO_ENGINE_CME
+          || pVia->Chipset == VIA_VM800)
+-        && pVia->pBIOSInfo->Panel->IsActive) {
++        &&  (pBIOSInfo->SecondCRTC->IsActive==TRUE)) {
+ 
+-        /* V1_ON_SND_DISPLAY */
++        /* VAL_VIDEO_ON_SND_DISPLAY */
+         vidCtl |= V1_ON_SND_DISPLAY;
+         /* SECOND_DISPLAY_COLOR_KEY_ENABLE */
+         compose |= SECOND_DISPLAY_COLOR_KEY_ENABLE | 0x1;
diff --git a/xorg-x11-drv-openchrome.spec b/xorg-x11-drv-openchrome.spec
index 1074d26..9808283 100644
--- a/xorg-x11-drv-openchrome.spec
+++ b/xorg-x11-drv-openchrome.spec
@@ -10,7 +10,7 @@
 Summary:        Xorg X11 openchrome video driver
 Name:           xorg-x11-drv-openchrome
 Version:        0.2.905
-Release:        3%{?dist}
+Release:        4%{?dist}
 URL:            http://www.openchrome.org
 License:        MIT
 Group:          User Interface/X Hardware Support
@@ -20,8 +20,10 @@ Source0:        http://www.openchrome.org/releases/%{tarball}-%{version}.tar.bz2
 # Patches from upstream trunk :
 # svn diff -x -p http://svn.openchrome.org/svn/tags/release_0_2_904 http://svn.openchrome.org/svn/trunk
 #Patch0:         openchrome-0.2.904-svn933.patch
+Patch1:         openchrome-0.2.905-xv_support_for_vx900.patch
 
 # Fedora specific patches :
+Patch2:         openchrome-0.2.905-enable_exa.patch
 
 # Experimental patches (branch backport, etc...): 
 Patch13:        openchrome-0.2.904-fix_tvout_flickering.patch
@@ -63,6 +65,8 @@ X.Org X11 openchrome video driver XvMC development package.
 %prep
 %setup -q -n %{tarball}-%{version}
 #%patch0 -p0
+%patch1 -p1
+%patch2 -p1
 
 #%patch13 -p0
 
@@ -119,6 +123,10 @@ fi
 
 
 %changelog
+* Fri Mar 15 2012 Xavier Bachelot <xavier at bachelot.org> - 0.2.905-4
+- Make EXA the default (but disable compositing) (RHBZ#804194).
+- Xv support for VX900.
+
 * Sat Feb 11 2012 Peter Hutterer <peter.hutterer at redhat.com> - 0.2.905-3
 - ABI rebuild
 


More information about the scm-commits mailing list