[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