unichrome-devel Mailing List for Unichrome
Brought to you by:
dwdeath
You can subscribe to this list here.
2004 |
Jan
|
Feb
(72) |
Mar
(169) |
Apr
(84) |
May
(51) |
Jun
(46) |
Jul
(98) |
Aug
(142) |
Sep
(294) |
Oct
(189) |
Nov
(220) |
Dec
(143) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2005 |
Jan
(153) |
Feb
(182) |
Mar
(75) |
Apr
(65) |
May
(54) |
Jun
(61) |
Jul
(48) |
Aug
(44) |
Sep
(78) |
Oct
(94) |
Nov
(74) |
Dec
(74) |
2006 |
Jan
(29) |
Feb
(23) |
Mar
(82) |
Apr
(10) |
May
(34) |
Jun
(1) |
Jul
(4) |
Aug
(16) |
Sep
(8) |
Oct
(5) |
Nov
(16) |
Dec
(21) |
2007 |
Jan
(19) |
Feb
(2) |
Mar
(1) |
Apr
(12) |
May
(7) |
Jun
(3) |
Jul
(1) |
Aug
|
Sep
(4) |
Oct
(4) |
Nov
|
Dec
(1) |
2008 |
Jan
|
Feb
|
Mar
(3) |
Apr
(3) |
May
(8) |
Jun
(2) |
Jul
(1) |
Aug
(2) |
Sep
(2) |
Oct
|
Nov
(6) |
Dec
(8) |
2009 |
Jan
(10) |
Feb
(9) |
Mar
(3) |
Apr
(16) |
May
(6) |
Jun
|
Jul
|
Aug
(1) |
Sep
|
Oct
(39) |
Nov
(15) |
Dec
|
2010 |
Jan
(2) |
Feb
|
Mar
(3) |
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
2011 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2014 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Noam L. <nl...@gm...> - 2014-05-23 20:24:18
|
Hi, I'm trying to set up an old Shuttle SK43G (VIA KM400 / 8237) with Lubuntu to donate it to a family without one. Looks like graphics rendering is making life hard on the CPU, so I'm trying to compile an appropriate driver using code from xf86-video-unichrome I'm running into compilation issues - missing xaalocal.h, xaa.h and probably other files no longer included in the standard/recent distributions. I grabbed the source for xaalocal.h from somewhere (it may not even be the right one), but can't find xaa.h. Any help would be appreciated in finding the right header files to compile the package and in compiling in general. I'm no expert user, just motivated to donate a computer and help a family in need and all this is completely new to me. Thanks, Noam |
From: <li...@fr...> - 2011-05-23 12:47:18
|
Reporting from xf86-video-unichrome: Main unichrome.sf.net repository Please visit: http://cgit.freedesktop.org/~libv/xf86-video-unichrome Or get your own copy by using: git-clone git://anongit.freedesktop.org/~libv/xf86-video-unichrome The branch, master has been updated via b917bee dri: In the modular case include via_drm.h from default path. via 4977111 crtc/edid: Close fd before fd gets out of scope. from 3e2dd0a xorg: update to new XvReputImage API Summary of changes: src/via_crt.c | 2 ++ src/via_memory.h | 2 +- 2 files changed, 3 insertions(+), 1 deletions(-) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 4977111db4a7990873a38b1e2cf6c8aafe431d6f Author: Egbert Eich <ei...@fr...> Date: Mon May 23 11:35:10 2011 +0200 crtc/edid: Close fd before fd gets out of scope. Signed-off-by: Egbert Eich <ei...@fr...> 4977111db4a7990873a38b1e2cf6c8aafe431d6f diff --git a/src/via_crt.c b/src/via_crt.c index 6c79292..0429e5a 100644 --- a/src/via_crt.c +++ b/src/via_crt.c @@ -154,6 +154,8 @@ CRTGetOptions(struct ViaOutput *Output) __func__, EDIDFileName, strerror(errno)); else Output->EDID = xf86InterpretEDID(Output->scrnIndex, Block); + + fclose(EDIDFile); } } ----------------------------------------------------------------------- commit b917bee87db8a65b8e8da0ca12c24a176c9e9fb2 Author: Egbert Eich <ei...@fr...> Date: Mon May 23 11:35:32 2011 +0200 dri: In the modular case include via_drm.h from default path. This file is provided by libdrm. The correct path to it should be provided by the libdrm pkgconfig file already. The path has changed from <prefix>/include/drm to <prefix>/include/libdrm recently. Signed-off-by: Egbert Eich <ei...@fr...> b917bee87db8a65b8e8da0ca12c24a176c9e9fb2 diff --git a/src/via_memory.h b/src/via_memory.h index e623969..8012fb1 100644 --- a/src/via_memory.h +++ b/src/via_memory.h @@ -30,7 +30,7 @@ /* don't include local via_drm.h when using modular */ #ifdef HAVE_CONFIG_H -#include "drm/via_drm.h" +#include <via_drm.h> #else #include "via_drm.h" #endif ----------------------------------------------------------------------- |
From: <li...@fr...> - 2010-12-06 16:10:14
|
Reporting from xf86-video-unichrome: Main unichrome.sf.net repository Please visit: http://cgit.freedesktop.org/~libv/xf86-video-unichrome Or get your own copy by using: git-clone git://anongit.freedesktop.org/~libv/xf86-video-unichrome The branch, master has been updated via 3e2dd0a xorg: update to new XvReputImage API via 71f2a86 xorg: remove x from xalloc/xcalloc/xfree symbols from cd12cce ID: VT3371: Belinea C.Book 150x. Summary of changes: configure.ac | 17 ++++++++++++++ src/via_ch7xxx.c | 6 ++-- src/via_crt.c | 4 +- src/via_cursor.c | 12 +++++----- src/via_dri.c | 46 +++++++++++++++++++------------------- src/via_driver.c | 26 +++++++++++----------- src/via_edid.c | 2 +- src/via_memory.c | 8 +++--- src/via_mode.c | 18 +++++++------- src/via_mpeg.c | 2 +- src/via_output.c | 6 ++-- src/via_panel.c | 14 ++++++------ src/via_sii16x.c | 2 +- src/via_video.c | 63 ++++++++++++++++++++++++++++++++++++++++++----------- src/via_vt162x.c | 14 ++++++------ src/via_xvmc.c | 4 +- wrapper/wrapper.c | 2 +- 17 files changed, 150 insertions(+), 96 deletions(-) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 71f2a864d7e9dd58f4f01f36587c765def9d2a97 Author: Luc Verhaegen <li...@sk...> Date: Mon Dec 6 16:48:07 2010 +0100 xorg: remove x from xalloc/xcalloc/xfree symbols These symbols are marked deprecated in newer X versions. Signed-off-by: Luc Verhaegen <li...@sk...> 71f2a864d7e9dd58f4f01f36587c765def9d2a97 diff --git a/src/via_ch7xxx.c b/src/via_ch7xxx.c index a8cbcd9..ed5dfaa 100644 --- a/src/via_ch7xxx.c +++ b/src/via_ch7xxx.c @@ -75,8 +75,8 @@ CH7xxxPrivateDestroy(struct ViaOutput *Output) VIAFUNC(Output); - xfree(Private->Regs); - xfree(Private); + free(Private->Regs); + free(Private); Output->PrivateDestroy = NULL; } @@ -329,7 +329,7 @@ CH7011TVStandardSet(struct ViaOutput *Output, int Standard) VIAFUNC(Output); if (Output->MonitorName) - xfree(Output->MonitorName); + free(Output->MonitorName); Private->Standard = Standard; diff --git a/src/via_crt.c b/src/via_crt.c index 0b6552a..6c79292 100644 --- a/src/via_crt.c +++ b/src/via_crt.c @@ -63,7 +63,7 @@ struct CRTPrivate { static void CRTPrivateDestroy(struct ViaOutput *Output) { - xfree(Output->Private); + free(Output->Private); /* So we won't try to destroy this twice */ Output->PrivateDestroy = NULL; @@ -157,7 +157,7 @@ CRTGetOptions(struct ViaOutput *Output) } } - xfree(Options); + free(Options); return NULL; } diff --git a/src/via_cursor.c b/src/via_cursor.c index 58f77df..b4207a8 100644 --- a/src/via_cursor.c +++ b/src/via_cursor.c @@ -307,7 +307,7 @@ VIACursorInit(ScrnInfoPtr pScrn, ScreenPtr pScreen) if (!xf86InitCursor(pScreen, infoPtr)) { xf86DestroyCursorInfoRec(infoPtr); - xfree(Cursor); + free(Cursor); return NULL; } @@ -333,9 +333,9 @@ VIACursorDestroy(VIAPtr pVia) xf86DestroyCursorInfoRec(Cursor->Info); if (Cursor->Image) - xfree(Cursor->Image); + free(Cursor->Image); - xfree(Cursor); + free(Cursor); pVia->Cursor = NULL; } @@ -354,10 +354,10 @@ VIACursorStore(VIAPtr pVia) if (Cursor->Image) { xf86DrvMsg(pVia->scrnIndex, X_WARNING, "%s: stale image left.\n", __func__); - xfree(Cursor->Image); + free(Cursor->Image); } - Cursor->Image = xcalloc(1, Cursor->Size); + Cursor->Image = calloc(1, Cursor->Size); memcpy(Cursor->Image, pVia->FBBase + Cursor->Address, Cursor->Size); Cursor->FG = (CARD32)VIAGETREG(VIA_REG_CURSOR_FG); @@ -385,7 +385,7 @@ VIACursorRestore(VIAPtr pVia) VIASETREG(VIA_REG_CURSOR_BG, Cursor->BG); VIASETREG(VIA_REG_CURSOR_MODE, Cursor->MC); - xfree(Cursor->Image); + free(Cursor->Image); Cursor->Image = NULL; } else xf86DrvMsg(pVia->scrnIndex, X_ERROR, "%s: No cursor image stored.\n", __func__); diff --git a/src/via_dri.c b/src/via_dri.c index efdb94d..d7104b8 100644 --- a/src/via_dri.c +++ b/src/via_dri.c @@ -253,7 +253,7 @@ VIADRICloseScreen(ScrnInfoPtr pScrn, ScreenPtr pScreen) if (pDri->pDRIInfo) { if ((pVIADRI = (VIADRIPtr) pDri->pDRIInfo->devPrivate)) { VIADRIIrqExit(pVia, pVIADRI); - xfree(pVIADRI); + free(pVIADRI); pDri->pDRIInfo->devPrivate = NULL; } DRIDestroyInfoRec(pDri->pDRIInfo); @@ -261,15 +261,15 @@ VIADRICloseScreen(ScrnInfoPtr pScrn, ScreenPtr pScreen) } if (pDri->pVisualConfigs) { - xfree(pDri->pVisualConfigs); + free(pDri->pVisualConfigs); pDri->pVisualConfigs = NULL; } if (pDri->pVisualConfigsPriv) { - xfree(pDri->pVisualConfigsPriv); + free(pDri->pVisualConfigsPriv); pDri->pVisualConfigsPriv = NULL; } - xfree(pDri); + free(pDri); pVia->Dri = NULL; } @@ -292,18 +292,18 @@ VIAInitVisualConfigs(ScrnInfoPtr pScrn) break; case 16: numConfigs = 12; - if (!(pConfigs = (__GLXvisualConfig*)xcalloc(sizeof(__GLXvisualConfig), + if (!(pConfigs = (__GLXvisualConfig*)calloc(sizeof(__GLXvisualConfig), numConfigs))) return FALSE; - if (!(pVIAConfigs = (VIAConfigPrivPtr)xcalloc(sizeof(VIAConfigPrivRec), + if (!(pVIAConfigs = (VIAConfigPrivPtr)calloc(sizeof(VIAConfigPrivRec), numConfigs))) { - xfree(pConfigs); + free(pConfigs); return FALSE; } - if (!(pVIAConfigPtrs = (VIAConfigPrivPtr*)xcalloc(sizeof(VIAConfigPrivPtr), + if (!(pVIAConfigPtrs = (VIAConfigPrivPtr*)calloc(sizeof(VIAConfigPrivPtr), numConfigs))) { - xfree(pConfigs); - xfree(pVIAConfigs); + free(pConfigs); + free(pVIAConfigs); return FALSE; } for (i=0; i<numConfigs; i++) @@ -392,18 +392,18 @@ VIAInitVisualConfigs(ScrnInfoPtr pScrn) case 32: numConfigs = 12; - if (!(pConfigs = (__GLXvisualConfig*)xcalloc(sizeof(__GLXvisualConfig), + if (!(pConfigs = (__GLXvisualConfig*)calloc(sizeof(__GLXvisualConfig), numConfigs))) return FALSE; - if (!(pVIAConfigs = (VIAConfigPrivPtr)xcalloc(sizeof(VIAConfigPrivRec), + if (!(pVIAConfigs = (VIAConfigPrivPtr)calloc(sizeof(VIAConfigPrivRec), numConfigs))) { - xfree(pConfigs); + free(pConfigs); return FALSE; } - if (!(pVIAConfigPtrs = (VIAConfigPrivPtr*)xcalloc(sizeof(VIAConfigPrivPtr), + if (!(pVIAConfigPtrs = (VIAConfigPrivPtr*)calloc(sizeof(VIAConfigPrivPtr), numConfigs))) { - xfree(pConfigs); - xfree(pVIAConfigs); + free(pConfigs); + free(pVIAConfigs); return FALSE; } for (i=0; i<numConfigs; i++) @@ -701,7 +701,7 @@ VIADRIScreenInit(ScrnInfoPtr pScrn, ScreenPtr pScreen) if (!pDri->pDRIInfo) { xf86DrvMsg(pScrn->scrnIndex, X_ERROR,\ "%s: DRICreateInfoRec failed.\n", __func__); - xfree(pDri); + free(pDri); return FALSE; } @@ -709,7 +709,7 @@ VIADRIScreenInit(ScrnInfoPtr pScrn, ScreenPtr pScreen) pDRIInfo->drmDriverName = VIAKernelDriverName; pDRIInfo->clientDriverName = VIAClientDriverName; - pDRIInfo->busIdString = xalloc(64); + pDRIInfo->busIdString = malloc(64); sprintf(pDRIInfo->busIdString, "PCI:%d:%d:%d", PCI_BUS(pVia->PciInfo), PCI_DEV(pVia->PciInfo), PCI_FUNC(pVia->PciInfo)); @@ -748,17 +748,17 @@ VIADRIScreenInit(ScrnInfoPtr pScrn, ScreenPtr pScreen) if ((sizeof(XF86DRISAREARec) + sizeof(drm_via_sarea_t)) > SAREA_MAX) { xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Data does not fit in SAREA\n"); DRIDestroyInfoRec(pDri->pDRIInfo); - xfree(pDri); + free(pDri); return FALSE; } pDRIInfo->SAREASize = SAREA_MAX; #endif - if (!(pVIADRI = (VIADRIPtr)xcalloc(sizeof(VIADRIRec),1))) { + if (!(pVIADRI = (VIADRIPtr)calloc(sizeof(VIADRIRec),1))) { xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "%s: failed to allocate pVIADRI.\n", __func__); DRIDestroyInfoRec(pDri->pDRIInfo); - xfree(pDri); + free(pDri); return FALSE; } pDRIInfo->devPrivate = pVIADRI; @@ -775,10 +775,10 @@ VIADRIScreenInit(ScrnInfoPtr pScrn, ScreenPtr pScreen) if (!DRIScreenInit(pScreen, pDRIInfo, &pVia->drmFD)) { xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "[dri] DRIScreenInit failed. Disabling DRI.\n"); - xfree(pDRIInfo->devPrivate); + free(pDRIInfo->devPrivate); pDRIInfo->devPrivate = NULL; DRIDestroyInfoRec(pDri->pDRIInfo); - xfree(pDri); + free(pDri); pVia->drmFD = -1; return FALSE; } diff --git a/src/via_driver.c b/src/via_driver.c index a83cbed..4750b8e 100644 --- a/src/via_driver.c +++ b/src/via_driver.c @@ -469,27 +469,27 @@ VIAFreeRec(ScrnInfoPtr pScrn) if (pVia->Crtc[0]) { if (pVia->Crtc[0]->Name) - xfree(pVia->Crtc[0]->Name); - xfree(pVia->Crtc[0]); + free(pVia->Crtc[0]->Name); + free(pVia->Crtc[0]); } if (pVia->Crtc[1]) { if (pVia->Crtc[1]->Name) - xfree(pVia->Crtc[1]->Name); - xfree(pVia->Crtc[1]); + free(pVia->Crtc[1]->Name); + free(pVia->Crtc[1]); } ViaOutputsDestroy(pScrn->scrnIndex); if (pVia->Scratch) - xfree(pVia->Scratch); + free(pVia->Scratch); if (pVia->SavedReg.VGAFB) - xfree(pVia->SavedReg.VGAFB); + free(pVia->SavedReg.VGAFB); VIAUnmapMem(pScrn); - xfree(pScrn->driverPrivate); + free(pScrn->driverPrivate); pScrn->driverPrivate = NULL; } @@ -670,7 +670,7 @@ VIAProbe(DriverPtr drv, int flags) numUsed = xf86MatchPciInstances("unichrome", PCI_VENDOR_VIA, VIAChipsets, VIAPciChipsets, devSections, numDevSections, drv, &usedChips); - xfree(devSections); + free(devSections); if (numUsed <= 0) return FALSE; @@ -692,7 +692,7 @@ VIAProbe(DriverPtr drv, int flags) } } - xfree(usedChips); + free(usedChips); return foundScreen; } @@ -1129,7 +1129,7 @@ VIAPreInit(ScrnInfoPtr pScrn, int flags) { EntityInfoPtr pEnt = xf86GetEntityInfo(pScrn->entityList[0]); if (pEnt->resources) { - xfree(pEnt); + free(pEnt); VIAFreeRec(pScrn); return FALSE; } @@ -1139,7 +1139,7 @@ VIAPreInit(ScrnInfoPtr pScrn, int flags) pVia->ChipId = pVia->PciInfo->chipType; pVia->Chipset = pEnt->chipset; pScrn->chipset = (char *)xf86TokenToString(VIAChipsets, pVia->Chipset); - xfree(pEnt); + free(pEnt); } #endif @@ -2395,7 +2395,7 @@ VIAInternalScreenInit(ScrnInfoPtr pScrn, ScreenPtr pScreen) if (pVia->AccelMethod == VIA_ACCEL_SHADOWFB) { pVia->ShadowPitch = BitmapBytePad(pScrn->bitsPerPixel * width); - pVia->ShadowPtr = xalloc(pVia->ShadowPitch * height); + pVia->ShadowPtr = xnfcalloc(1, pVia->ShadowPitch * height); displayWidth = pVia->ShadowPitch / (pScrn->bitsPerPixel >> 3); FBStart = pVia->ShadowPtr; } else { @@ -2500,7 +2500,7 @@ VIACloseScreen(int scrnIndex, ScreenPtr pScreen) } if (pVia->ShadowPtr) { - xfree(pVia->ShadowPtr); + free(pVia->ShadowPtr); pVia->ShadowPtr = NULL; } diff --git a/src/via_edid.c b/src/via_edid.c index f5354c2..c6b07dd 100644 --- a/src/via_edid.c +++ b/src/via_edid.c @@ -283,7 +283,7 @@ ViaOutputEDIDSet(struct ViaOutput *Output, xf86MonPtr EDID) Modes = ViaModesAdd(Modes, Mode); break; case DS_NAME: - xfree(Output->MonitorName); + free(Output->MonitorName); Output->MonitorName = xnfcalloc(13, 1); memcpy(Output->MonitorName, EDID->det_mon[i].section.name, 13); break; diff --git a/src/via_memory.c b/src/via_memory.c index 8fa9d33..ca43f79 100644 --- a/src/via_memory.c +++ b/src/via_memory.c @@ -69,7 +69,7 @@ ViaMemFBFree(ScrnInfoPtr pScrn, struct ViaMem *Mem) xf86FreeOffscreenLinear((FBLinearPtr) Mem->Private); - /* sick bastards manually xfree this Private, + /* sick bastards manually free this Private, normal people know better */ } @@ -141,7 +141,7 @@ ViaMemDRMFree(ScrnInfoPtr pScrn, struct ViaMem *Mem) xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "%s: Failed to deallocate Memory.\n", __func__); - xfree((drm_via_mem_t *) Mem->Private); + free((drm_via_mem_t *) Mem->Private); } /* @@ -168,7 +168,7 @@ ViaMemDRMAlloc(ScrnInfoPtr pScrn, unsigned long size, CARD8 alignment) sizeof(drm_via_mem_t)); if (ret || (DrmMem->size != (size + alignment))) { - xfree(DrmMem); + free(DrmMem); return NULL; } @@ -244,6 +244,6 @@ ViaMemFree(ScrnInfoPtr pScrn, struct ViaMem *Mem) if (Mem->Free) Mem->Free(pScrn, Mem); - xfree(Mem); + free(Mem); } } diff --git a/src/via_mode.c b/src/via_mode.c index dc435ed..07e7e1f 100644 --- a/src/via_mode.c +++ b/src/via_mode.c @@ -92,7 +92,7 @@ ViaPrintModeline(int scrnIndex, DisplayModePtr mode) mode->HSyncStart, mode->HSyncEnd, mode->HTotal, mode->VDisplay, mode->VSyncStart, mode->VSyncEnd, mode->VTotal, flags); - xfree(flags); + free(flags); } #if 0 @@ -473,8 +473,8 @@ ViaModesDestroy(DisplayModePtr Modes) while (mode) { next = mode->next; - xfree(mode->name); - xfree(mode); + free(mode->name); + free(mode); mode = next; } } @@ -924,8 +924,8 @@ ViaCreateModesListAndValidate(ScrnInfoPtr pScrn, Bool Silent) "(%dx%d:%3.1fMhz): %s\n", Mode->name, Mode->HDisplay, Mode->VDisplay, Mode->Clock / 1000.0, ViaModeStatusToString(Status)); - xfree(Mode->name); - xfree(Mode); + free(Mode->name); + free(Mode); } } @@ -1162,7 +1162,7 @@ ViaModeCreateFromName(ScrnInfoPtr pScrn, char *name, Bool Silent) /* First, try a plain CVT mode */ Mode = ViaCVTMode(HDisplay, VDisplay, VRefresh, Reduced, FALSE); - xfree(Mode->name); + free(Mode->name); Mode->name = xnfstrdup(name); Mode->type = M_T_USERDEF; @@ -1178,7 +1178,7 @@ ViaModeCreateFromName(ScrnInfoPtr pScrn, char *name, Bool Silent) continue; Mode = ViaModeCopy(Crtc->FixedMode); - xfree(Mode->name); + free(Mode->name); Mode->name = xnfstrdup(name); Mode->type = M_T_USERDEF; @@ -1278,8 +1278,8 @@ ViaModeFixedInitCrtc(struct ViaCrtc *Crtc) "(%dx%d:%3.1fMhz): %s\n", Mode->name, Mode->HDisplay, Mode->VDisplay, Mode->Clock / 1000.0, ViaModeStatusToString(Status)); - xfree(Mode->name); - xfree(Mode); + free(Mode->name); + free(Mode); } } diff --git a/src/via_mpeg.c b/src/via_mpeg.c index 131b1dd..a8a9f4d 100644 --- a/src/via_mpeg.c +++ b/src/via_mpeg.c @@ -581,6 +581,6 @@ ViaMpegDestroy(ScrnInfoPtr pScrn) ViaMpegStop(pScrn); - xfree(Swov->Mpeg); + free(Swov->Mpeg); Swov->Mpeg = NULL; } diff --git a/src/via_output.c b/src/via_output.c index 8eee3d2..48093ac 100644 --- a/src/via_output.c +++ b/src/via_output.c @@ -69,12 +69,12 @@ ViaOutputDestroy(struct ViaOutput *Output) xf86DestroyI2CDevRec(Output->I2CDev, TRUE); if (Output->Options) - xfree(Output->Options); + free(Output->Options); if (Output->MonitorName) - xfree(Output->MonitorName); + free(Output->MonitorName); - xfree(Output); + free(Output); return Next; } diff --git a/src/via_panel.c b/src/via_panel.c index 3b24a6d..2c1e7d7 100644 --- a/src/via_panel.c +++ b/src/via_panel.c @@ -58,7 +58,7 @@ struct ViaPanelOutputPrivate { static void ViaPanelPrivateDestroy(struct ViaOutput *Output) { - xfree(Output->Private); + free(Output->Private); /* So we won't try to destroy this twice */ Output->PrivateDestroy = NULL; @@ -497,16 +497,16 @@ ViaPanelInit(int scrnIndex, I2CDevPtr pDev) } else { Output->PrivateDestroy(Output); - xfree(Output->Options); - xfree(Output); + free(Output->Options); + free(Output); return NULL; } if (!ViaPanelNativeResolution(pVia, Private)) { xf86DrvMsg(scrnIndex, X_ERROR, "%s: Disabling panel.\n", __func__); Output->PrivateDestroy(Output); - xfree(Output->Options); - xfree(Output); + free(Output->Options); + free(Output); return NULL; } @@ -536,8 +536,8 @@ ViaPanelInit(int scrnIndex, I2CDevPtr pDev) default: xf86DrvMsg(scrnIndex, X_WARNING, "%s: Unsupported chipset.\n", __func__); Output->PrivateDestroy(Output); - xfree(Output->Options); - xfree(Output); + free(Output->Options); + free(Output); return NULL; } diff --git a/src/via_sii16x.c b/src/via_sii16x.c index f933088..2f33f03 100644 --- a/src/via_sii16x.c +++ b/src/via_sii16x.c @@ -65,7 +65,7 @@ struct SiI16xOutputPrivate { static void SiI16xPrivateDestroy(struct ViaOutput *Output) { - xfree(Output->Private); + free(Output->Private); Output->PrivateDestroy = NULL; } diff --git a/src/via_video.c b/src/via_video.c index 1933dd8..fc8670d 100644 --- a/src/via_video.c +++ b/src/via_video.c @@ -315,7 +315,7 @@ ViaSwovCopyDMA(VIAPtr pVia, struct ViaMem *Mem, CARD8 *buf) xf86DrvMsg(pVia->scrnIndex, X_ERROR, "%s: Copying %p to %08X\n", __func__, blit.mem_addr, blit.fb_addr); if (new_buf) - xfree(new_buf); + free(new_buf); return FALSE; } @@ -331,7 +331,7 @@ ViaSwovCopyDMA(VIAPtr pVia, struct ViaMem *Mem, CARD8 *buf) } if (new_buf) - xfree(new_buf); + free(new_buf); if (error) { xf86DrvMsg(pVia->scrnIndex, X_ERROR, "%s: DMA copy sync failed: %d - %d\n", @@ -750,7 +750,7 @@ ViaSwovAlphaSurface(ScrnInfoPtr pScrn) if (Port->AlphaFB) ViaMemFree(pScrn, Port->AlphaFB); if (Port->AlphaLocalUnaligned) - xfree(Port->AlphaLocalUnaligned); + free(Port->AlphaLocalUnaligned); Port->AlphaFB = ViaMemAlloc(pScrn, (Port->AlphaWidth / 2) * Port->AlphaHeight, VIA_ALPHAADDRESS_ALIGN); @@ -816,7 +816,7 @@ ViaSwovAlphaDisable(ScrnInfoPtr pScrn) Port->AlphaFB = NULL; if (Port->AlphaLocalUnaligned) - xfree(Port->AlphaLocalUnaligned); + free(Port->AlphaLocalUnaligned); Port->AlphaLocalUnaligned = NULL; Port->AlphaLocal = NULL; @@ -1316,7 +1316,7 @@ ViaSwovSurfaceDestroy(ScrnInfoPtr pScrn) if (Port->AlphaFB) ViaMemFree(pScrn, Port->AlphaFB); if (Port->AlphaLocalUnaligned) - xfree(Port->AlphaLocalUnaligned); + free(Port->AlphaLocalUnaligned); Port->Front[0] = NULL; Port->Front[1] = NULL; @@ -2640,8 +2640,8 @@ ViaVideoDestroy(ScrnInfoPtr pScrn) #endif /* Now tear down the wallpaper */ - xfree(Swov->Adaptors); - xfree(Swov->Adaptor->pPortPrivates); + free(Swov->Adaptors); + free(Swov->Adaptor->pPortPrivates); xf86XVFreeVideoAdaptorRec(Swov->Adaptor); switch (pVia->Chipset) { @@ -2653,8 +2653,8 @@ ViaVideoDestroy(ScrnInfoPtr pScrn) break; } - xfree(Swov->Port); - xfree(Swov); + free(Swov->Port); + free(Swov); pVia->Swov = NULL; } diff --git a/src/via_vt162x.c b/src/via_vt162x.c index 182baf4..45a9983 100644 --- a/src/via_vt162x.c +++ b/src/via_vt162x.c @@ -78,8 +78,8 @@ VT162xPrivateDestroy(struct ViaOutput *Output) { struct VT162xOutputPrivate *Private = Output->Private; - xfree(Private->Regs); - xfree(Private); + free(Private->Regs); + free(Private); Output->PrivateDestroy = NULL; } @@ -349,7 +349,7 @@ VT1621TVStandardSet(struct ViaOutput *Output, int Standard) VIAFUNC(Output); if (Output->MonitorName) - xfree(Output->MonitorName); + free(Output->MonitorName); Private->Standard = Standard; @@ -447,7 +447,7 @@ VT1622TVStandardSet(struct ViaOutput *Output, int Standard) VIAFUNC(Output); if (Output->MonitorName) - xfree(Output->MonitorName); + free(Output->MonitorName); Private->Standard = Standard; @@ -495,7 +495,7 @@ VT1623TVStandardSet(struct ViaOutput *Output, int Standard) VIAFUNC(Output); if (Output->MonitorName) - xfree(Output->MonitorName); + free(Output->MonitorName); Private->Standard = Standard; @@ -856,7 +856,7 @@ ViaVT162xInit(int scrnIndex, I2CDevPtr pDev) Output->PrivateDestroy(Output); - xfree(Output->Options); - xfree(Output); + free(Output->Options); + free(Output); return NULL; } diff --git a/src/via_xvmc.c b/src/via_xvmc.c index 3b68f86..494393c 100644 --- a/src/via_xvmc.c +++ b/src/via_xvmc.c @@ -357,7 +357,7 @@ static void XvMCEClose(ExtensionEntry *XvMCE_Ext) { if (XvMCE_Ext->extPrivate) { - xfree(XvMCE_Ext->extPrivate); + free(XvMCE_Ext->extPrivate); XvMCE_Ext->extPrivate = NULL; } } @@ -555,7 +555,7 @@ ViaMCBrokenXine(int scrnIndex) ret = xf86ReturnOptValBool(Options, OPTION_BROKENXINE, FALSE); - xfree(Options); + free(Options); return ret; } diff --git a/wrapper/wrapper.c b/wrapper/wrapper.c index a443165..ecbebf8 100644 --- a/wrapper/wrapper.c +++ b/wrapper/wrapper.c @@ -112,7 +112,7 @@ WRAP_REPLACE(Setup)( for (i = 0; i < count; i++) gdevs[i]->driver = "unichrome"; - xfree(gdevs); + free(gdevs); } xf86LoadOneModule("unichrome", options); ----------------------------------------------------------------------- commit 3e2dd0afb9719295454d8d879d6f5ffde0755253 Author: Luc Verhaegen <li...@sk...> Date: Mon Dec 6 16:49:30 2010 +0100 xorg: update to new XvReputImage API Now we might get called not only for changing frame or clipping, but also for changing modes. Handle this accordingly. Signed-off-by: Luc Verhaegen <li...@sk...> 3e2dd0afb9719295454d8d879d6f5ffde0755253 diff --git a/configure.ac b/configure.ac index d7fcb01..f30691d 100644 --- a/configure.ac +++ b/configure.ac @@ -129,6 +129,23 @@ fi AC_MSG_RESULT([$have_xv]) AM_CONDITIONAL(XV, test x$have_xv = xyes) +# check whether reputimage gained some extra arguments +if test "x$have_xv" = xyes; then + SAVED_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $XORG_CFLAGS" + + AC_CHECK_MEMBER([ScrnInfoRec.ModeSet], + [SCRNINFO_HAS_MODESET=yes], [SCRNINFO_HAS_MODESET=no], + [#include "${sdkdir}/xf86str.h"]) + if test "x$SCRNINFO_HAS_MODESET" = xyes; then + AC_DEFINE(XV_NEW_REPUT, 1, + [XvReputImage takes more all coordinates]) + fi + + CFLAGS="$SAVED_CFLAGS" +fi +AM_CONDITIONAL(XV_NEW_REPUT, test x$XV_NEW_REPUT = xyes) + # Check what parts of XvMC are around. AC_MSG_CHECKING([XvMC protocol headers directory]) xvmcprotodir=$(pkg-config --variable=includedir xvmc) diff --git a/src/via_video.c b/src/via_video.c index fc8670d..6c27683 100644 --- a/src/via_video.c +++ b/src/via_video.c @@ -2130,12 +2130,22 @@ viaPutImage(ScrnInfoPtr pScrn, short src_x, short src_y, short drw_x, } /* - * This doesn't fix the case where the overlay window was not - * in the visible frame when switching away. That one requires - * some DIX poking. + * For the code inside XV_NEW_REPUT: + * A modeset might have happened, without updating the clients, so without + * updating fb contents. This is why this code is different. The scaling might + * have changed, forcing us to recalculate drw_ values. The src_ values are + * unchanged for reputimage (atm), and for our hardware we only need to + * recalculate the scaling. */ static int -ViaSwovReputImage(ScrnInfoPtr pScrn, short drw_x, short drw_y, +ViaSwovReputImage(ScrnInfoPtr pScrn, +#ifdef XV_NEW_REPUT + short src_x, short src_y, +#endif + short drw_x, short drw_y, +#ifdef XV_NEW_REPUT + short src_w, short src_h, short drw_w, short drw_h, +#endif RegionPtr clipBoxes, pointer data #if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) >= 1 , DrawablePtr pDraw @@ -2161,6 +2171,32 @@ ViaSwovReputImage(ScrnInfoPtr pScrn, short drw_x, short drw_y, ViaHQVIdle(Swov); +#ifdef XV_NEW_REPUT + /* Handle CRTC scaling */ + if (pVia->VisibleWidth < pVia->ScaledWidth) { + drw_w = (drw_w * pVia->ScaledWidth) / pVia->VisibleWidth; + drw_x = (drw_x * pVia->ScaledWidth) / pVia->VisibleWidth; + } + if (pVia->VisibleHeight < pVia->ScaledHeight) { + drw_h = (drw_h * pVia->ScaledHeight) / pVia->VisibleHeight; + drw_y = (drw_y * pVia->ScaledHeight) / pVia->VisibleHeight; + } + + /* FrameAdjust is usually in only a single direction */ + if ((pScrn->frameX0 != Swov->frameX0) || (drw_x != Port->Drw_X) || + (drw_w != Port->Drw_W)) { + Port->Drw_X = drw_x; + Port->Drw_W = drw_w; + HVisible = ViaSwovVisibleH(pScrn, Swov->Port); + } + + if ((pScrn->frameY0 != Swov->frameY0) || (drw_y != Port->Drw_Y) || + (drw_h != Port->Drw_H)) { + Port->Drw_Y = drw_y; + Port->Drw_H = drw_h; + VVisible = ViaSwovVisibleV(pScrn, Swov->Port); + } +#else /* Handle CRTC scaling */ if (pVia->VisibleWidth < pVia->ScaledWidth) drw_x = (drw_x * pVia->ScaledWidth) / pVia->VisibleWidth; @@ -2177,6 +2213,7 @@ ViaSwovReputImage(ScrnInfoPtr pScrn, short drw_x, short drw_y, Port->Drw_Y = drw_y; VVisible = ViaSwovVisibleV(pScrn, Swov->Port); } +#endif if (HVisible && VVisible) { ViaSwovStartAddress(Swov, Swov->Port); ----------------------------------------------------------------------- |
From: Catalin P. <ca...@vv...> - 2010-05-11 17:24:00
|
Hello, I've got an integrated S3 Unichrome Pro I'm trying to get working. I'm using git master from this repo: git://anongit.freedesktop.org/~libv/xf86-video-unichrome Is this the latest version of the code? Last update seems to be Nov 2009. I had some trouble compiling the code (little errors/warnings here and there) on CentOS 5 with gcc-4.1.2, attached is a patch that fixes the errors for me (0001-Fix-some-undefined-symbol-errors-warnings.patch). First off, here's X -version: X Window System Version 7.1.1 Release Date: 12 May 2006 X Protocol Version 11, Revision 0, Release 7.1.1 Build Operating System: Linux 2.6.18-128.1.10.el5PAE i686 Red Hat, Inc. Current Operating System: Linux builder 2.6.18-164.el5 #1 SMP Thu Sep 3 03:33:56 EDT 2009 i686 Build Date: 05 January 2010 Build ID: xorg-x11-server 1.1.1-48.67.el5_4.1 Before reporting problems, check http://wiki.x.org to make sure that you have the latest version. Module Loader present Outputs from lspci -n and lspci -v are attached. The mobo is an iDOT PC2500E: http://www.idot.com.tw/en/products/mb-pc2500e/ The photo matches the motherboard. Here are relevant parts of Xorg.0.log after successfully starting X: (--) UNICHROME(0): Found VT3344 UniChrome/Chrome IGP (--) UNICHROME(0): Found CN700/VN800/P4M800CE/P4M800Pro HostBridge (rev. 0x00). (EE) UNICHROME(0): Unknown Card-Ids (1019|AA51), report this to uni...@li... ASAP (--) UNICHROME(0): mapping MMIO @ 0xfb000000 with size 0x9000 (--) UNICHROME(0): mapping BitBlt MMIO @ 0xfb200000 with size 0x10000 (**) UNICHROME(0): Depth 24, (--) framebuffer bpp 32 (==) UNICHROME(0): RGB weight 888 (==) UNICHROME(0): Default visual is TrueColor (**) UNICHROME(0): Attempting to use AccelMethod "XAA" [...] (--) UNICHROME(0): Using 65536kB of RAM (100MHz DDR2 - PC2-3200) [...] (II) UNICHROME(0): I2C device "Bus 1:E-EDID segment register" registered at address 0x60. (II) UNICHROME(0): I2C device "Bus 1:ddc2" registered at address 0xA0. (--) UNICHROME(0): CRT: Attached! (II) UNICHROME(0): (II) UNICHROME(0): Listing CRTC to Output Mapping: (II) UNICHROME(0): (II) UNICHROME(0): CRTC 1: (II) UNICHROME(0): Output CRT on Bus CRT. (II) UNICHROME(0): (II) UNICHROME(0): CRTC 2: Disabled. (II) UNICHROME(0): (II) UNICHROME(0): Simultaneous display: Disabled. (II) UNICHROME(0): (II) UNICHROME(0): Disabled outputs: [...] (WW) UNICHROME(0): VIAAccelFBGrab: Chipset VT3344 is not supported. (WW) UNICHROME(0): VIAVQFBGrab: Chipset VT3344 is not supported. [...] (--) UNICHROME(0): mapping MMIO @ 0xfb000000 with size 0x9000 (--) UNICHROME(0): mapping BitBlt MMIO @ 0xfb200000 with size 0x10000 (II) UNICHROME(0): Direct FB Access Enabled. (--) UNICHROME(0): mapping framebuffer @ 0xf4000000 with size 0x4000000 (==) UNICHROME(0): Write-combining range (0xf4000000,0x4000000) (II) UNICHROME(0): 3D Engine has been initialized. (WW) UNICHROME(0): VIADRIScreenInit: VT3344 is not supported. (II) UNICHROME(0): [drm] Not using DMA for copying to FB (no DRI). (WW) UNICHROME(0): VIAInitAccel: Chipset VT3344 is not supported. (==) UNICHROME(0): Backing store disabled (II) UNICHROME(0): Using 64x64 HW Cursor. (II) UNICHROME(0): direct rendering disabled (WW) UNICHROME(0): ViaVideoInit: VT3344 is not supported. The output autodetection is correct: the mobo has a single VGA connector. I would like to get OpenGL acceleration working. glxinfo says: OpenGL vendor string: Mesa project: www.mesa3d.org OpenGL renderer string: Mesa GLX Indirect OpenGL version string: 1.2 (1.5 Mesa 6.5.1) which to me says I'm in software emulation. Any hope of getting OpenGL working with this card? Anything the kernel DRM driver can do to help with that? Currently I'm on 2.6.18 with via_drv 2.10.2 (20060616) according to via_drm.h. Thanks, Catalin |
From: <li...@fr...> - 2010-03-21 16:46:09
|
Reporting from xf86-video-unichrome: Main unichrome.sf.net repository Please visit: http://cgit.freedesktop.org/~libv/xf86-video-unichrome Or get your own copy by using: git-clone git://anongit.freedesktop.org/~libv/xf86-video-unichrome The branch, unified has been updated via 6db325e DRI: Add support for the dri sdk. from e158056 DRM: remove reg_pause_addr from _drm_via_dma_init. Summary of changes: configure.ac | 103 +++++++++++++++++++++++++++++++------------------ dri/Makefile.am | 65 +++++++++++++++++-------------- dri/via_context.c | 14 +++++-- dri/via_fb.c | 4 +- dri/via_ioctl.c | 2 +- dri/via_render.c | 4 +- dri/via_screen.c | 15 +++++-- dri/via_span.c | 20 ++++++---- dri/via_state.c | 4 +- dri/via_tex.c | 4 +- dri/via_texcombine.c | 4 +- dri/via_tris.c | 4 +- src/Makefile.am | 2 +- wrapper/Makefile.am | 2 +- 14 files changed, 147 insertions(+), 100 deletions(-) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 6db325ed9fdebf96722f5a64956914564d7820b2 Author: Luc Verhaegen <li...@sk...> Date: Sun Mar 21 17:46:55 2010 +0100 DRI: Add support for the dri sdk. Fix building against SDK, while also keeping --with-mesa-dir support around. 6db325ed9fdebf96722f5a64956914564d7820b2 diff --git a/configure.ac b/configure.ac index 13ecefd..8434951 100644 --- a/configure.ac +++ b/configure.ac @@ -120,7 +120,8 @@ AC_MSG_RESULT([$DRI]) AM_CONDITIONAL(DRI, test x$DRI = xyes) if test "$DRI" = yes; then - PKG_CHECK_MODULES(DRI, [libdrm xf86driproto]) + PKG_CHECK_MODULES(DRM, [libdrm]) + PKG_CHECK_MODULES(XF86DRIPROTO, [xf86driproto]) AC_DEFINE(DRIVER_DRI,1,[Enable DRI driver support]) fi @@ -342,46 +343,63 @@ fi # Figure out whether we can build the DRI driver. # # -AC_MSG_CHECKING([MESA DRI directory to build against]) -if test "x$mesa_build_dir" != x; then - AC_MSG_RESULT([$mesa_build_dir]) - build_dri_driver="yes" -else - AC_MSG_RESULT([none]) - build_dri_driver="no" -fi -# check version -if test "x$build_dri_driver" = xyes; then - AC_CHECK_FILE([${mesa_build_dir}/configs/default], - , [build_dri_driver="no"]) - - AC_MSG_CHECKING([MESA version]) +PKG_CHECK_MODULES([MESADRI], [libmesadri libmesadricommon], + mesa_dri_sdk=yes, mesa_dri_sdk=no) +if test "x$mesa_dri_sdk" = xyes; then + build_dri_driver="yes" + build_dri_tree="no" + mesa_dri_include=$(pkg-config --variable=includedir libmesadri) +else + # if the mesa SDK is not there, try direct building. + AC_MSG_CHECKING([MESA DRI directory to build against]) + if test "x$mesa_build_dir" != x; then + AC_MSG_RESULT([$mesa_build_dir]) + build_dri_driver="yes" + else + AC_MSG_RESULT([none]) + build_dri_driver="no" + fi + + # check version if test "x$build_dri_driver" = xyes; then - mesa_major=`grep "MESA_MAJOR=" ${mesa_build_dir}/configs/default | sed s/MESA_MAJOR=//` - mesa_minor=`grep "MESA_MINOR=" ${mesa_build_dir}/configs/default | sed s/MESA_MINOR=//` - mesa_tiny=`grep "MESA_TINY=" ${mesa_build_dir}/configs/default | sed s/MESA_TINY=//` - if test "x$mesa_major" != x -a \ - "x$mesa_minor" != x -a \ - "x$mesa_tiny" != x; then - build_dri_driver="yes" + AC_CHECK_FILE([${mesa_build_dir}/configs/default], , + [build_dri_driver="no"]) + + AC_MSG_CHECKING([MESA version]) + + if test "x$build_dri_driver" = xyes; then + mesa_major=`grep "MESA_MAJOR=" ${mesa_build_dir}/configs/default | sed s/MESA_MAJOR=//` + mesa_minor=`grep "MESA_MINOR=" ${mesa_build_dir}/configs/default | sed s/MESA_MINOR=//` + mesa_tiny=`grep "MESA_TINY=" ${mesa_build_dir}/configs/default | sed s/MESA_TINY=//` + if test "x$mesa_major" != x -a \ + "x$mesa_minor" != x -a \ + "x$mesa_tiny" != x; then + build_dri_driver="yes" + else + build_dri_driver="no" + fi + fi + + if test "x$build_dri_driver" = xyes; then + AC_MSG_RESULT([$mesa_major.$mesa_minor.$mesa_tiny]) else - build_dri_driver="no" + AC_MSG_RESULT([failed]) fi fi + # due to mesa's unique structure, we need to link statically to libmesa.a if test "x$build_dri_driver" = xyes; then - AC_MSG_RESULT([$mesa_major.$mesa_minor.$mesa_tiny]) - else - AC_MSG_RESULT([failed]) + AC_CHECK_FILE([${mesa_build_dir}/src/mesa/libmesa.a], , + [build_dri_driver="no"]) fi -fi -# due to mesa's unique structure, we need to link statically to libmesa.a -if test "x$build_dri_driver" = xyes; then - AC_CHECK_FILE([${mesa_build_dir}/src/mesa/libmesa.a], - , [build_dri_driver="no"]) + if test "x$build_dri_driver" = xyes; then + build_dri_tree="yes" + mesa_dri_include=${mesa_build_dir}/src/ + MESADRI_CFLAGS="-I${mesa_dri_include}/mesa/ -I${mesa_build_dir}/include/" + fi fi AC_MSG_CHECKING([whether we build the MESA DRI driver]) @@ -390,18 +408,20 @@ AC_MSG_RESULT([$build_dri_driver]) AM_CONDITIONAL(BUILD_DRI, test "x$build_dri_driver" = xyes) if test "x$build_dri_driver" = xyes; then AC_OUTPUT([dri/Makefile]) +fi + +if test "x$build_dri_tree" = xyes; then MESA_DIR=$mesa_build_dir AC_SUBST([MESA_DIR]) -fi -if test "x$build_dri_driver" = xyes; then AC_CHECK_FILE([${mesa_build_dir}/src/mesa/drivers/dri/common/dri_metaops.c], [mesa_have_dri_metaops=yes],) fi +AM_CONDITIONAL(MESA_DRI_TREE, test "x$build_dri_tree" = xyes) AM_CONDITIONAL(MESA_HAVE_DRI_METAOPS, test "x$mesa_have_dri_metaops" = xyes) if test "x$build_dri_driver" = xyes; then - AC_EGREP_HEADER([msaa_samples], [${mesa_build_dir}/src/mesa/drivers/dri/common/utils.h], + AC_EGREP_HEADER([msaa_samples], [${mesa_dri_include}/mesa/drivers/dri/common/utils.h], [mesa_have_msaa=yes],) if test "x$mesa_have_msaa" = xyes; then AC_DEFINE(MESA_HAVE_MSAA, 1, [MESA has MSAA support.]) @@ -409,7 +429,7 @@ if test "x$build_dri_driver" = xyes; then SAVED_CFLAGS="$CFLAGS" - CFLAGS="-I${mesa_build_dir}/src/mesa/ $DRI_CFLAGS -I${mesa_build_dir}/include/" + CFLAGS="$DRM_CFLAGS $MESADRI_CFLAGS" AC_CHECK_MEMBER([struct __DRIextensionRec.name], [mesa_dri_screen_extension="yes"], , [#include "GL/gl.h" @@ -433,7 +453,7 @@ if test "x$build_dri_driver" = xyes; then # only run this test if the previous succeeded. AC_CHECK_MEMBER([struct gl_framebuffer._ColorDrawBufferIndexes], [mesa_gl_framebuffer_colordrawbufferindexes="yes"], , - [#include "${mesa_build_dir}/src/mesa/main/mtypes.h"]) + [#include "${mesa_dri_include}/mesa/main/mtypes.h"]) fi if test "x$mesa_gl_framebuffer_colordrawbufferindexes" = xyes; then @@ -465,18 +485,25 @@ if test "x$build_dri_driver" = xyes; then # only run this test if the previous succeeded. AC_CHECK_MEMBER([struct gl_stencil_attrib._Enabled], [mesa_gl_stencil_attrib__enabled=yes], , - [#include "${mesa_build_dir}/src/mesa/main/mtypes.h"]) + [#include "${mesa_dri_include}/mesa/main/mtypes.h"]) fi if test "x$mesa_gl_stencil_attrib__enabled" = xyes; then AC_DEFINE(MESA_GL_STENCIL_ATTRIB__ENABLED, 1, [Does struct gl_stencil_attrib have _Enabled]) + + AC_CHECK_FILE([${mesa_dri_include}/mesa/main/formats.h], + [reworked_texformat="yes"], [reworked_texformat="no"]) + fi + + if test "x$reworked_texformat" = xyes; then + AC_DEFINE(REWORKED_TEXFORMAT, 1, [Were Texture formats reworked?]) fi CFLAGS="$SAVED_CFLAGS" fi -AC_SUBST([DRI_CFLAGS]) +#AC_SUBST([DRI_CFLAGS]) AC_SUBST([XORG_CFLAGS]) AC_SUBST([moduledir]) diff --git a/dri/Makefile.am b/dri/Makefile.am index dd0f568..089aee6 100644 --- a/dri/Makefile.am +++ b/dri/Makefile.am @@ -1,35 +1,9 @@ -MESA_DRI_DIR = @MESA_DIR@/src/mesa/drivers/dri +AM_CFLAGS = -DIN_DRI_DRIVER -DGLX_DIRECT_RENDERING -DGLX_INDIRECT_RENDERING -AM_CFLAGS = -DIN_DRI_DRIVER -D_GNU_SOURCE -g -O0 -AM_CFLAGS += -DUSE_X86_64_ASM -DPTHREADS -DHAVE_POSIX_MEMALIGN -AM_CFLAGS += -DUSE_EXTERNAL_DXTN_LIB=1 -DGLX_DIRECT_RENDERING -AM_CFLAGS += -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS -# -DREWORKED_TEXFORMAT - -AM_CFLAGS += -I/usr/include/drm -I@MESA_DIR@/src/mesa -I@MESA_DIR@/include/ -AM_CFLAGS += -I@MESA_DIR@/src/mesa/main -I@MESA_DIR@/src/mesa/glapi - -# convenience library -noinst_LTLIBRARIES = libdricommon.la -libdricommon_la_CFLAGS = $(AM_CFLAGS) -I@MESA_DIR@/src/mesa/shader -libdricommon_la_SOURCES = \ - $(MESA_DRI_DIR)/common/utils.c \ - $(MESA_DRI_DIR)/common/texmem.c \ - $(MESA_DRI_DIR)/common/vblank.c \ - $(MESA_DRI_DIR)/common/dri_util.c \ - $(MESA_DRI_DIR)/common/xmlconfig.c \ - $(MESA_DRI_DIR)/common/drirenderbuffer.c \ - $(MESA_DIR)/src/mesa/drivers/common/driverfuncs.c - -if MESA_HAVE_DRI_METAOPS -libdricommon_la_SOURCES += $(MESA_DRI_DIR)/common/dri_metaops.c -endif - -# actual driver unichrome_dri_la_LTLIBRARIES = unichrome_dri.la -unichrome_dri_la_CFLAGS = $(AM_CFLAGS) -I$(MESA_DRI_DIR) -unichrome_dri_la_LDFLAGS = -module -noprefix -ldrm -lexpat -lm -lpthread -ldl -unichrome_dri_la_LIBADD = @MESA_DIR@/src/mesa/libmesa.a libdricommon.la +unichrome_dri_la_CFLAGS = $(AM_CFLAGS) $(DRM_CFLAGS) $(MESADRI_CFLAGS) +unichrome_dri_la_LDFLAGS = -module -noprefix -avoid-version -lm -ldl \ + $(DRM_LIBS) $(MESADRI_LIBS) unichrome_dri_ladir = @libdir@/dri unichrome_dri_la_SOURCES = \ via_context.c \ @@ -42,3 +16,34 @@ unichrome_dri_la_SOURCES = \ via_state.c \ via_texcombine.c \ via_tris.c + +# for building without SDK. +if MESA_DRI_TREE + +MESA_DRI_DIR = @MESA_DIR@/src/mesa/drivers/dri/common + +MESADRI_CFLAGS += -DPTHREADS -I@MESA_DIR@/src/mesa/shader -I$(MESA_DRI_DIR) +MESADRI_CFLAGS += -I@MESA_DIR@/src/mesa -I@MESA_DIR@/include/ +MESADRI_CFLAGS += -I@MESA_DIR@/src/mesa/main -I@MESA_DIR@/src/mesa/glapi + +MESADRI_LIBS += -lexpat -lpthread + +# convenience library +noinst_LTLIBRARIES = libdricommon.la +libdricommon_la_CFLAGS = $(AM_CFLAGS) $(DRM_CFLAGS) $(MESADRI_CFLAGS) -D_GNU_SOURCE +libdricommon_la_SOURCES = \ + $(MESA_DRI_DIR)/utils.c \ + $(MESA_DRI_DIR)/texmem.c \ + $(MESA_DRI_DIR)/vblank.c \ + $(MESA_DRI_DIR)/dri_util.c \ + $(MESA_DRI_DIR)/xmlconfig.c \ + $(MESA_DRI_DIR)/drirenderbuffer.c \ + $(MESA_DIR)/src/mesa/drivers/common/driverfuncs.c + +if MESA_HAVE_DRI_METAOPS +libdricommon_la_SOURCES += $(MESA_DRI_DIR)/dri_metaops.c +endif + +unichrome_dri_la_LIBADD = @MESA_DIR@/src/mesa/libmesa.a libdricommon.la + +endif \ No newline at end of file diff --git a/dri/via_context.c b/dri/via_context.c index aa9b1a7..eff01d0 100644 --- a/dri/via_context.c +++ b/dri/via_context.c @@ -24,7 +24,7 @@ /** * \file via_context.c - * + * * \author John Sheng (presumably of either VIA Technologies or S3 Graphics) * \author Others at VIA Technologies? * \author Others at S3 Graphics? @@ -40,13 +40,19 @@ #include "main/renderbuffer.h" #include "main/simple_list.h" -#include "common/drirenderbuffer.h" -#include "common/vblank.h" +#include "drirenderbuffer.h" +#include "vblank.h" +#include "utils.h" #define need_GL_ARB_point_parameters #define need_GL_EXT_fog_coord #define need_GL_EXT_secondary_color -#include "common/extension_helper.h" +#if 0 +#include "extension_helper.h" +#else +#include "main/remap_helper.h" +#endif + #include "swrast_setup/swrast_setup.h" #include "tnl/tnl.h" diff --git a/dri/via_fb.c b/dri/via_fb.c index e95a30b..f25b556 100644 --- a/dri/via_fb.c +++ b/dri/via_fb.c @@ -28,8 +28,8 @@ #include <sys/ioctl.h> -#include "common/dri_util.h" -#include "common/xmlconfig.h" +#include "dri_util.h" +#include "xmlconfig.h" #include "main/imports.h" #include "main/simple_list.h" diff --git a/dri/via_ioctl.c b/dri/via_ioctl.c index d55d2bf..88e7670 100644 --- a/dri/via_ioctl.c +++ b/dri/via_ioctl.c @@ -30,7 +30,7 @@ #include "swrast/swrast.h" -#include "common/vblank.h" +#include "vblank.h" #include <tnl/t_vertex.h> diff --git a/dri/via_render.c b/dri/via_render.c index bc3d0bd..6370bcb 100644 --- a/dri/via_render.c +++ b/dri/via_render.c @@ -34,8 +34,8 @@ #include "main/macros.h" -#include "common/dri_util.h" -#include "common/xmlconfig.h" +#include "dri_util.h" +#include "xmlconfig.h" #include <tnl/t_vertex.h> diff --git a/dri/via_screen.c b/dri/via_screen.c index b589add..8918570 100644 --- a/dri/via_screen.c +++ b/dri/via_screen.c @@ -32,9 +32,9 @@ #include <main/framebuffer.h> #include <main/renderbuffer.h> -#include "common/utils.h" -#include "common/vblank.h" -#include "common/xmlpool.h" +#include "utils.h" +#include "vblank.h" +#include "xmlpool.h" #include "tnl/t_vertex.h" @@ -448,7 +448,10 @@ viaInitScreen(__DRIscreenPrivate *psp) VIA_DRIDDX_VERSION_MINOR, VIA_DRIDDX_VERSION_PATCH }; static const __DRIversion dri_expected = { 4, 0, 0 }; - static const __DRIversion drm_expected = { 2, 3, 0 }; + static const __DRIversion drm_expected = {VIA_DRM_DRIVER_MAJOR, + VIA_DRM_DRIVER_MINOR, + VIA_DRM_DRIVER_PATCHLEVEL}; + static const char *driver_name = "Unichrome"; VIADRIPtr dri_priv = (VIADRIPtr) psp->pDevPriv; @@ -510,7 +513,9 @@ __driCreateNewScreen_20050727(__DRInativeDisplay *dpy, int scrn, VIA_DRIDDX_VERSION_MINOR, VIA_DRIDDX_VERSION_PATCH }; static const __DRIversion dri_expected = { 4, 0, 0 }; - static const __DRIversion drm_expected = { 2, 3, 0 }; + static const __DRIversion drm_expected = {VIA_DRM_DRIVER_MAJOR, + VIA_DRM_DRIVER_MINOR, + VIA_DRM_DRIVER_PATCHLEVEL}; static const char *driver_name = "Unichrome"; dri_interface = interface; diff --git a/dri/via_span.c b/dri/via_span.c index 59ffb09..160e961 100644 --- a/dri/via_span.c +++ b/dri/via_span.c @@ -26,12 +26,16 @@ #include <config.h> #endif -#include "common/dri_util.h" -#include "common/xmlconfig.h" +#include "dri_util.h" +#include "xmlconfig.h" #include "swrast/swrast.h" #include <tnl/t_vertex.h> +#ifdef REWORKED_TEXFORMAT +#include "main/formats.h" +#endif + #include <drm/drm.h> #include "../drm/via_drm.h" @@ -69,7 +73,7 @@ #define TAG(x) via##x##_565 #define TAG2(x,y) via##x##_565##y -#include "common/spantmp2.h" +#include "spantmp2.h" /* 32 bit, ARGB8888 color spanline and pixel functions @@ -80,7 +84,7 @@ #define TAG(x) via##x##_8888 #define TAG2(x,y) via##x##_8888##y -#include "common/spantmp2.h" +#include "spantmp2.h" /* 16 bit depthbuffer functions. @@ -103,7 +107,7 @@ d = *(volatile GLushort *)(buf + (_x) * 2 + (_y) * depth_pitch); #define TAG(x) via##x##_z16 -#include "common/depthtmp.h" +#include "depthtmp.h" /* 32 bit depthbuffer functions. */ @@ -117,7 +121,7 @@ d = *(volatile GLuint *)(buf + (_x) * 4 + (_y) * depth_pitch); #define TAG(x) via##x##_z32 -#include "common/depthtmp.h" +#include "depthtmp.h" @@ -137,7 +141,7 @@ #define TAG(x) via##x##_z24_s8 -#include "common/depthtmp.h" +#include "depthtmp.h" #define WRITE_STENCIL( _x, _y, d ) { \ GLuint tmp = *(GLuint *)(buf + (_x)*4 + (_y)*depth_pitch); \ @@ -150,7 +154,7 @@ d = *(GLuint *)(buf + (_x)*4 + (_y)*depth_pitch) & 0xff; #define TAG(x) via##x##_z24_s8 -#include "common/stenciltmp.h" +#include "stenciltmp.h" diff --git a/dri/via_state.c b/dri/via_state.c index 7ba37c1..d80609b 100644 --- a/dri/via_state.c +++ b/dri/via_state.c @@ -31,8 +31,8 @@ #include "tnl/tnl.h" #include "swrast_setup/swrast_setup.h" -#include "common/dri_util.h" -#include "common/xmlconfig.h" +#include "dri_util.h" +#include "xmlconfig.h" #include "tnl/t_vertex.h" diff --git a/dri/via_tex.c b/dri/via_tex.c index 262eddc..3c9324d 100644 --- a/dri/via_tex.c +++ b/dri/via_tex.c @@ -41,8 +41,8 @@ #include "main/texstore.h" #include "main/simple_list.h" -#include "common/dri_util.h" -#include "common/xmlconfig.h" +#include "dri_util.h" +#include "xmlconfig.h" #include <tnl/t_vertex.h> diff --git a/dri/via_texcombine.c b/dri/via_texcombine.c index e325e5c..797bbed 100644 --- a/dri/via_texcombine.c +++ b/dri/via_texcombine.c @@ -34,8 +34,8 @@ #include "main/context.h" -#include "common/dri_util.h" -#include "common/xmlconfig.h" +#include "dri_util.h" +#include "xmlconfig.h" #include "tnl/t_vertex.h" diff --git a/dri/via_tris.c b/dri/via_tris.c index ee34f89..568d71e 100644 --- a/dri/via_tris.c +++ b/dri/via_tris.c @@ -34,8 +34,8 @@ #include "tnl/t_pipeline.h" #include "tnl/t_vertex.h" -#include "common/dri_util.h" -#include "common/xmlconfig.h" +#include "dri_util.h" +#include "xmlconfig.h" #include <drm/drm.h> #include "../drm/via_drm.h" diff --git a/src/Makefile.am b/src/Makefile.am index 8c163fa..26544e8 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -3,7 +3,7 @@ # -avoid-version prevents gratuitous .0.0.0 version numbers on the end # _ladir passes a dummy rpath to libtool so the thing will actually link # TODO: -nostdlib/-Bstatic/-lgcc platform magic, not installing the .a, etc. -AM_CFLAGS = @XORG_CFLAGS@ @DRI_CFLAGS@ +AM_CFLAGS = @XORG_CFLAGS@ @DRM_CFLAGS@ @XF86DRIPROTO_CFLAGS@ unichrome_drv_la_LTLIBRARIES = unichrome_drv.la unichrome_drv_la_LDFLAGS = -module -avoid-version unichrome_drv_ladir = @moduledir@/drivers diff --git a/wrapper/Makefile.am b/wrapper/Makefile.am index 66b08ac..99a314f 100644 --- a/wrapper/Makefile.am +++ b/wrapper/Makefile.am @@ -1,4 +1,4 @@ -AM_CFLAGS = @XORG_CFLAGS@ @DRI_CFLAGS@ +AM_CFLAGS = @XORG_CFLAGS@ EXTRA_DIST = wrapper.man drivermandir = $(DRIVER_MAN_DIR) SED = sed ----------------------------------------------------------------------- |
From: <li...@fr...> - 2010-03-21 11:49:47
|
Reporting from xf86-video-unichrome: Main unichrome.sf.net repository Please visit: http://cgit.freedesktop.org/~libv/xf86-video-unichrome Or get your own copy by using: git-clone git://anongit.freedesktop.org/~libv/xf86-video-unichrome The branch, unified has been updated via e158056 DRM: remove reg_pause_addr from _drm_via_dma_init. via 7c8c5cb VT3108: disable interrupts from within the drm. via 14691d1 DRM: rename to unichrome.ko via 2d9ff0c DRM: clean up unused structs and struct members. via 30fdda6 DRM: remove DRM_VIA_DEC_FUTEX. via 7476337 drm: adjust for unlocked drm_ioctl. via fe0a70a Configure: add ability to specificy linux kernel modules dir. from ac8db0f Wrapper: Fix build after removing xorg-server.h from toplevel config.h Summary of changes: configure.ac | 10 +++++- dri/via_ioctl.c | 3 ++ drm/Kbuild | 6 ++-- drm/via_dma.c | 16 +++++++-- drm/via_dmablit.c | 4 -- drm/via_dmablit.h | 4 -- drm/via_drm.h | 85 +++--------------------------------------------- drm/via_drv.c | 10 ++++-- drm/via_drv.h | 14 +------- drm/via_map.c | 23 +++++++++---- drm/via_mm.c | 6 +--- drm/via_video.c | 94 ----------------------------------------------------- src/via_dri.c | 34 +++++++++---------- 13 files changed, 74 insertions(+), 235 deletions(-) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit fe0a70a2d69e9ffa34ee96927eb65c19676e9e46 Author: Luc Verhaegen <li...@sk...> Date: Sat Mar 20 02:10:35 2010 +0100 Configure: add ability to specificy linux kernel modules dir. fe0a70a2d69e9ffa34ee96927eb65c19676e9e46 diff --git a/configure.ac b/configure.ac index c952c79..13ecefd 100644 --- a/configure.ac +++ b/configure.ac @@ -62,6 +62,12 @@ AC_ARG_ENABLE(drm_driver, [build_drm_driver="$enableval"], [build_drm_driver=auto]) +AC_ARG_WITH(linux-modules-dir, + AC_HELP_STRING([--with-linux-modules-dir=DIR], + [Linux kernel modules dir (/lib/modules/<version>). [[default=auto]]]), + [modules_path="$withval"], + [modules_path=auto]) + AC_ARG_WITH(mesa-dir, AC_HELP_STRING([--with-mesa-dir=DIR], [Mesa directory to build DRI driver against. [[default=none]]]), @@ -284,7 +290,9 @@ fi # we must have KBuild. if test "x$build_drm_driver" != xno; then AC_MSG_CHECKING([which linux modules path we are building against]) - modules_path=/lib/modules/`uname -r` + if test "x$modules_path" == xauto; then + modules_path=/lib/modules/`uname -r` + fi AC_MSG_RESULT([$modules_path]) AC_CHECK_FILE([${modules_path}/build/Makefile], ----------------------------------------------------------------------- commit 7476337246e984b0d7ac6ed93b18787c834a71b3 Author: Luc Verhaegen <li...@sk...> Date: Sat Mar 20 02:15:22 2010 +0100 drm: adjust for unlocked drm_ioctl. 7476337246e984b0d7ac6ed93b18787c834a71b3 diff --git a/drm/via_drv.c b/drm/via_drv.c index 73694a8..721eb18 100644 --- a/drm/via_drv.c +++ b/drm/via_drv.c @@ -75,7 +75,11 @@ static struct drm_driver driver = { .owner = THIS_MODULE, .open = drm_open, .release = drm_release, +#ifndef DRM_UNLOCKED .ioctl = drm_ioctl, +#else + .unlocked_ioctl = drm_ioctl, +#endif .mmap = drm_mmap, .poll = drm_poll, .fasync = drm_fasync, ----------------------------------------------------------------------- commit 30fdda6c3ef81007fe72ef9da5430563f34e91e8 Author: Luc Verhaegen <li...@sk...> Date: Sat Mar 20 02:37:38 2010 +0100 DRM: remove DRM_VIA_DEC_FUTEX. Only used by the less than ideal openchrome xvmc implementation. 30fdda6c3ef81007fe72ef9da5430563f34e91e8 diff --git a/drm/Kbuild b/drm/Kbuild index ddb1521..9314b41 100755 --- a/drm/Kbuild +++ b/drm/Kbuild @@ -1,5 +1,5 @@ EXTRA_CFLAGS += -I/usr/include -I./drivers/char/drm -I./include/drm via-y := via_irq.o via_drv.o via_map.o via_mm.o via_dma.o via_verifier.o \ - via_video.o via_dmablit.o + via_dmablit.o obj-m := via.o diff --git a/drm/via_dma.c b/drm/via_dma.c index bcc98ba..dac5ff8 100644 --- a/drm/via_dma.c +++ b/drm/via_dma.c @@ -747,7 +747,6 @@ struct drm_ioctl_desc via_ioctls[] = { DRM_IOCTL_DEF(DRM_VIA_AGP_INIT, via_agp_init, DRM_AUTH|DRM_MASTER), DRM_IOCTL_DEF(DRM_VIA_FB_INIT, via_fb_init, DRM_AUTH|DRM_MASTER), DRM_IOCTL_DEF(DRM_VIA_MAP_INIT, via_map_init, DRM_AUTH|DRM_MASTER), - DRM_IOCTL_DEF(DRM_VIA_DEC_FUTEX, via_decoder_futex, DRM_AUTH), DRM_IOCTL_DEF(DRM_VIA_DMA_INIT, via_dma_init, DRM_AUTH), DRM_IOCTL_DEF(DRM_VIA_CMDBUFFER, via_cmdbuffer, DRM_AUTH), DRM_IOCTL_DEF(DRM_VIA_FLUSH, via_flush_ioctl, DRM_AUTH), diff --git a/drm/via_drm.h b/drm/via_drm.h index 1c60bdb..465b429 100644 --- a/drm/via_drm.h +++ b/drm/via_drm.h @@ -24,6 +24,10 @@ #ifndef _VIA_DRM_H_ #define _VIA_DRM_H_ +#define VIA_DRM_DRIVER_MAJOR 3 +#define VIA_DRM_DRIVER_MINOR 0 +#define VIA_DRM_DRIVER_PATCHLEVEL 0 + #include <linux/types.h> /* WARNING: These defines must be the same as what the Xserver uses. @@ -38,14 +42,7 @@ #endif #define VIA_NR_SAREA_CLIPRECTS 8 -#define VIA_NR_XVMC_PORTS 10 -#define VIA_NR_XVMC_LOCKS 5 #define VIA_MAX_CACHELINE_SIZE 64 -#define XVMCLOCKPTR(saPriv,lockNo) \ - ((volatile struct drm_hw_lock *)(((((unsigned long) (saPriv)->XvMCLockArea) + \ - (VIA_MAX_CACHELINE_SIZE - 1)) & \ - ~(VIA_MAX_CACHELINE_SIZE - 1)) + \ - VIA_MAX_CACHELINE_SIZE*(lockNo))) /* Each region is a minimum of 64k, and there are at most 64 of them. */ @@ -68,7 +65,7 @@ #define DRM_VIA_AGP_INIT 0x02 #define DRM_VIA_FB_INIT 0x03 #define DRM_VIA_MAP_INIT 0x04 -#define DRM_VIA_DEC_FUTEX 0x05 +#define NOT_USED #define NOT_USED #define DRM_VIA_DMA_INIT 0x07 #define DRM_VIA_CMDBUFFER 0x08 @@ -85,7 +82,6 @@ #define DRM_IOCTL_VIA_AGP_INIT DRM_IOWR(DRM_COMMAND_BASE + DRM_VIA_AGP_INIT, drm_via_agp_t) #define DRM_IOCTL_VIA_FB_INIT DRM_IOWR(DRM_COMMAND_BASE + DRM_VIA_FB_INIT, drm_via_fb_t) #define DRM_IOCTL_VIA_MAP_INIT DRM_IOWR(DRM_COMMAND_BASE + DRM_VIA_MAP_INIT, drm_via_init_t) -#define DRM_IOCTL_VIA_DEC_FUTEX DRM_IOW( DRM_COMMAND_BASE + DRM_VIA_DEC_FUTEX, drm_via_futex_t) #define DRM_IOCTL_VIA_DMA_INIT DRM_IOWR(DRM_COMMAND_BASE + DRM_VIA_DMA_INIT, drm_via_dma_init_t) #define DRM_IOCTL_VIA_CMDBUFFER DRM_IOW( DRM_COMMAND_BASE + DRM_VIA_CMDBUFFER, drm_via_cmdbuffer_t) #define DRM_IOCTL_VIA_FLUSH DRM_IO( DRM_COMMAND_BASE + DRM_VIA_FLUSH) @@ -145,16 +141,6 @@ typedef struct _drm_via_init { unsigned long agpAddr; } drm_via_init_t; -typedef struct _drm_via_futex { - enum { - VIA_FUTEX_WAIT = 0x00, - VIA_FUTEX_WAKE = 0X01 - } func; - __u32 ms; - __u32 lock; - __u32 val; -} drm_via_futex_t; - typedef struct _drm_via_dma_init { enum { VIA_INIT_DMA = 0x01, @@ -190,18 +176,6 @@ typedef struct _drm_via_sarea { int ctxOwner; /* last context to upload state */ int vertexPrim; - /* - * Below is for XvMC. - * We want the lock integers alone on, and aligned to, a cache line. - * Therefore this somewhat strange construct. - */ - - char XvMCLockArea[VIA_MAX_CACHELINE_SIZE * (VIA_NR_XVMC_LOCKS + 1)]; - - unsigned int XvMCDisplaying[VIA_NR_XVMC_PORTS]; - unsigned int XvMCSubPicOn[VIA_NR_XVMC_PORTS]; - unsigned int XvMCCtxNoGrabbed; /* Last context to hold decoder */ - /* Used by the 3d driver only at this point, for pageflipping: */ unsigned int pfCurrentOffset; diff --git a/drm/via_drv.c b/drm/via_drv.c index 721eb18..50023d1 100644 --- a/drm/via_drv.c +++ b/drm/via_drv.c @@ -92,9 +92,9 @@ static struct drm_driver driver = { .name = DRIVER_NAME, .desc = DRIVER_DESC, .date = DRIVER_DATE, - .major = DRIVER_MAJOR, - .minor = DRIVER_MINOR, - .patchlevel = DRIVER_PATCHLEVEL, + .major = VIA_DRM_DRIVER_MAJOR, + .minor = VIA_DRM_DRIVER_MINOR, + .patchlevel = VIA_DRM_DRIVER_PATCHLEVEL, }; static int __init via_init(void) diff --git a/drm/via_drv.h b/drm/via_drv.h index c0e404a..e4f7730 100644 --- a/drm/via_drv.h +++ b/drm/via_drv.h @@ -29,11 +29,7 @@ #define DRIVER_NAME "via" #define DRIVER_DESC "VIA Unichrome / Pro" -#define DRIVER_DATE "20070202" - -#define DRIVER_MAJOR 2 -#define DRIVER_MINOR 11 -#define DRIVER_PATCHLEVEL 1 +#define DRIVER_DATE "20100320" #include "via_verifier.h" @@ -63,7 +59,6 @@ typedef struct drm_via_private { drm_local_map_t *fb; drm_local_map_t *mmio; unsigned long agpAddr; - wait_queue_head_t decoder_queue[VIA_NR_XVMC_LOCKS]; char *dma_ptr; unsigned int dma_low; unsigned int dma_high; @@ -121,7 +116,6 @@ extern int via_mem_alloc(struct drm_device *dev, void *data, struct drm_file *fi extern int via_mem_free(struct drm_device *dev, void *data, struct drm_file *file_priv); extern int via_agp_init(struct drm_device *dev, void *data, struct drm_file *file_priv); extern int via_map_init(struct drm_device *dev, void *data, struct drm_file *file_priv); -extern int via_decoder_futex(struct drm_device *dev, void *data, struct drm_file *file_priv); extern int via_wait_irq(struct drm_device *dev, void *data, struct drm_file *file_priv); extern int via_dma_blit_sync( struct drm_device *dev, void *data, struct drm_file *file_priv ); extern int via_dma_blit( struct drm_device *dev, void *data, struct drm_file *file_priv ); @@ -153,9 +147,6 @@ extern void via_driver_irq_uninstall(struct drm_device * dev); extern int via_dma_cleanup(struct drm_device * dev); extern void via_init_command_verifier(void); extern int via_driver_dma_quiescent(struct drm_device * dev); -extern void via_init_futex(drm_via_private_t *dev_priv); -extern void via_cleanup_futex(drm_via_private_t *dev_priv); -extern void via_release_futex(drm_via_private_t *dev_priv, int context); extern void via_reclaim_buffers_locked(struct drm_device *dev, struct drm_file *file_priv); diff --git a/drm/via_map.c b/drm/via_map.c index 0a00a4c..255fb85 100644 --- a/drm/via_map.c +++ b/drm/via_map.c @@ -61,8 +61,6 @@ static int via_do_init_map(struct drm_device * dev, drm_via_init_t * init) dev_priv->agpAddr = init->agpAddr; - via_init_futex(dev_priv); - via_init_dmablit(dev); dev->dev_private = (void *)dev_priv; diff --git a/drm/via_mm.c b/drm/via_mm.c index a20cd65..6065227 100644 --- a/drm/via_mm.c +++ b/drm/via_mm.c @@ -85,10 +85,6 @@ int via_fb_init(struct drm_device *dev, void *data, struct drm_file *file_priv) int via_final_context(struct drm_device *dev, int context) { - drm_via_private_t *dev_priv = (drm_via_private_t *) dev->dev_private; - - via_release_futex(dev_priv, context); - /* Linux specific until context tracking code gets ported to BSD */ /* Last context, perform cleanup */ if (dev->ctx_count == 1 && dev->dev_private) { @@ -97,7 +93,7 @@ int via_final_context(struct drm_device *dev, int context) if (dev->irq) #endif drm_irq_uninstall(dev); - via_cleanup_futex(dev_priv); + via_do_cleanup_map(dev); } return 1; diff --git a/drm/via_video.c b/drm/via_video.c deleted file mode 100644 index dadaa0a..0000000 --- a/drm/via_video.c +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Copyright 2005 Thomas Hellstrom. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sub license, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the - * next paragraph) shall be included in all copies or substantial portions - * of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL - * THE AUTHOR(S), AND/OR THE COPYRIGHT HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR - * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - * - * Author: Thomas Hellstrom 2005. - * - * Video and XvMC related functions. - */ - -#include <drmP.h> - -#include "via_drm.h" -#include "via_drv.h" - -void via_init_futex(drm_via_private_t * dev_priv) -{ - unsigned int i; - - DRM_DEBUG("\n"); - - for (i = 0; i < VIA_NR_XVMC_LOCKS; ++i) { - DRM_INIT_WAITQUEUE(&(dev_priv->decoder_queue[i])); - XVMCLOCKPTR(dev_priv->sarea_priv, i)->lock = 0; - } -} - -void via_cleanup_futex(drm_via_private_t * dev_priv) -{ -} - -void via_release_futex(drm_via_private_t * dev_priv, int context) -{ - unsigned int i; - volatile int *lock; - - if (!dev_priv->sarea_priv) - return; - - for (i = 0; i < VIA_NR_XVMC_LOCKS; ++i) { - lock = (volatile int *)XVMCLOCKPTR(dev_priv->sarea_priv, i); - if ((_DRM_LOCKING_CONTEXT(*lock) == context)) { - if (_DRM_LOCK_IS_HELD(*lock) - && (*lock & _DRM_LOCK_CONT)) { - DRM_WAKEUP(&(dev_priv->decoder_queue[i])); - } - *lock = 0; - } - } -} - -int via_decoder_futex(struct drm_device *dev, void *data, struct drm_file *file_priv) -{ - drm_via_futex_t *fx = data; - volatile int *lock; - drm_via_private_t *dev_priv = (drm_via_private_t *) dev->dev_private; - drm_via_sarea_t *sAPriv = dev_priv->sarea_priv; - int ret = 0; - - DRM_DEBUG("\n"); - - if (fx->lock > VIA_NR_XVMC_LOCKS) - return -EFAULT; - - lock = (volatile int *)XVMCLOCKPTR(sAPriv, fx->lock); - - switch (fx->func) { - case VIA_FUTEX_WAIT: - DRM_WAIT_ON(ret, dev_priv->decoder_queue[fx->lock], - (fx->ms / 10) * (DRM_HZ / 100), *lock != fx->val); - return ret; - case VIA_FUTEX_WAKE: - DRM_WAKEUP(&(dev_priv->decoder_queue[fx->lock])); - return 0; - } - return 0; -} ----------------------------------------------------------------------- commit 2d9ff0c54831fcd67e0ef0af460238099ecd7152 Author: Luc Verhaegen <li...@sk...> Date: Sat Mar 20 04:13:57 2010 +0100 DRM: clean up unused structs and struct members. 2d9ff0c54831fcd67e0ef0af460238099ecd7152 diff --git a/dri/via_ioctl.c b/dri/via_ioctl.c index 27895b6..d55d2bf 100644 --- a/dri/via_ioctl.c +++ b/dri/via_ioctl.c @@ -208,6 +208,9 @@ static void viaClear(GLcontext *ctx, GLbitfield mask) __DRIdrawablePrivate *dPriv = vmesa->driDrawable; struct via_renderbuffer *const vrb = (struct via_renderbuffer *) dPriv->driverPrivate; +#define VIA_FRONT 0x1 +#define VIA_BACK 0x2 +#define VIA_DEPTH 0x4 int flag = 0; GLuint i = 0; GLuint clear_depth_mask = 0xf << 28; diff --git a/drm/via_dmablit.c b/drm/via_dmablit.c index 045ad40..4de9d2f 100644 --- a/drm/via_dmablit.c +++ b/drm/via_dmablit.c @@ -196,9 +196,6 @@ via_free_sg_info(struct pci_dev *pdev, drm_via_sg_info_t *vsg) default: vsg->state = dr_via_sg_init; } - vfree(vsg->bounce_buffer); - vsg->bounce_buffer = NULL; - vsg->free_on_sequence = 0; } /* @@ -586,7 +583,6 @@ via_build_sg_info(struct drm_device *dev, drm_via_sg_info_t *vsg, drm_via_dmabli int ret = 0; vsg->direction = (draw) ? DMA_TO_DEVICE : DMA_FROM_DEVICE; - vsg->bounce_buffer = NULL; vsg->state = dr_via_sg_init; diff --git a/drm/via_dmablit.h b/drm/via_dmablit.h index 7408a54..5f17264 100644 --- a/drm/via_dmablit.h +++ b/drm/via_dmablit.h @@ -35,8 +35,6 @@ #define VIA_NUM_BLIT_ENGINES 2 #define VIA_NUM_BLIT_SLOTS 8 -struct _drm_via_descriptor; - typedef struct _drm_via_sg_info { struct page **pages; unsigned long num_pages; @@ -44,9 +42,7 @@ typedef struct _drm_via_sg_info { int num_desc_pages; int num_desc; enum dma_data_direction direction; - unsigned char *bounce_buffer; dma_addr_t chain_start; - uint32_t free_on_sequence; unsigned int descriptors_per_page; int aborted; enum { diff --git a/drm/via_drm.h b/drm/via_drm.h index 465b429..d69cb36 100644 --- a/drm/via_drm.h +++ b/drm/via_drm.h @@ -28,8 +28,6 @@ #define VIA_DRM_DRIVER_MINOR 0 #define VIA_DRM_DRIVER_PATCHLEVEL 0 -#include <linux/types.h> - /* WARNING: These defines must be the same as what the Xserver uses. * if you change them, you must change the defines in the Xserver. */ @@ -41,24 +39,8 @@ #define __user #endif -#define VIA_NR_SAREA_CLIPRECTS 8 -#define VIA_MAX_CACHELINE_SIZE 64 - -/* Each region is a minimum of 64k, and there are at most 64 of them. - */ -#define VIA_NR_TEX_REGIONS 64 -#define VIA_LOG_MIN_TEX_REGION_SIZE 16 #endif -#define VIA_UPLOAD_TEX0IMAGE 0x1 /* handled clientside */ -#define VIA_UPLOAD_TEX1IMAGE 0x2 /* handled clientside */ -#define VIA_UPLOAD_CTX 0x4 -#define VIA_UPLOAD_BUFFERS 0x8 -#define VIA_UPLOAD_TEX0 0x10 -#define VIA_UPLOAD_TEX1 0x20 -#define VIA_UPLOAD_CLIPRECTS 0x40 -#define VIA_UPLOAD_ALL 0xff - /* VIA specific ioctls */ #define DRM_VIA_ALLOCMEM 0x00 #define DRM_VIA_FREEMEM 0x01 @@ -92,19 +74,6 @@ #define DRM_IOCTL_VIA_DMA_BLIT DRM_IOW(DRM_COMMAND_BASE + DRM_VIA_DMA_BLIT, drm_via_dmablit_t) #define DRM_IOCTL_VIA_BLIT_SYNC DRM_IOW(DRM_COMMAND_BASE + DRM_VIA_BLIT_SYNC, drm_via_blitsync_t) -/* Indices into buf.Setup where various bits of state are mirrored per - * context and per buffer. These can be fired at the card as a unit, - * or in a piecewise fashion as required. - */ - -#define VIA_TEX_SETUP_SIZE 8 - -/* Flags for clear ioctl - */ -#define VIA_FRONT 0x1 -#define VIA_BACK 0x2 -#define VIA_DEPTH 0x4 -#define VIA_STENCIL 0x8 #define VIA_MEM_VIDEO 0 /* matches drm constant */ #define VIA_MEM_AGP 1 /* matches drm constant */ #define VIA_MEM_SYSTEM 2 @@ -158,26 +127,10 @@ typedef struct _drm_via_cmdbuffer { unsigned long size; } drm_via_cmdbuffer_t; -/* Warning: If you change the SAREA structure you must change the Xserver - * structure as well */ - -typedef struct _drm_via_tex_region { - unsigned char next, prev; /* indices to form a circular LRU */ - unsigned char inUse; /* owned by a client, or free? */ - int age; /* tracked by clients to update local LRU's */ -} drm_via_tex_region_t; - typedef struct _drm_via_sarea { - unsigned int dirty; - unsigned int nbox; - struct drm_clip_rect boxes[VIA_NR_SAREA_CLIPRECTS]; - drm_via_tex_region_t texList[VIA_NR_TEX_REGIONS + 1]; - int texAge; /* last time texture was uploaded */ int ctxOwner; /* last context to upload state */ - int vertexPrim; - /* Used by the 3d driver only at this point, for pageflipping: - */ + /* Used by the 3d driver only at this point, for pageflipping: */ unsigned int pfCurrentOffset; } drm_via_sarea_t; @@ -213,7 +166,6 @@ struct drm_via_wait_irq_request { unsigned irq; via_irq_seq_type_t type; __u32 sequence; - __u32 signal; }; typedef union drm_via_irqwait { diff --git a/drm/via_drv.h b/drm/via_drv.h index e4f7730..775d354 100644 --- a/drm/via_drv.h +++ b/drm/via_drv.h @@ -84,7 +84,6 @@ typedef struct drm_via_private { uint32_t irq_enable_mask; uint32_t irq_pending_mask; int *irq_map; - unsigned int idle_fault; struct drm_sman sman; int vram_initialized; int agp_initialized; ----------------------------------------------------------------------- commit 14691d1b3a06b17b27003cd18abac6cc2ad57e90 Author: Luc Verhaegen <li...@sk...> Date: Sat Mar 20 23:19:42 2010 +0100 DRM: rename to unichrome.ko 14691d1b3a06b17b27003cd18abac6cc2ad57e90 diff --git a/drm/Kbuild b/drm/Kbuild index 9314b41..5cb9a44 100755 --- a/drm/Kbuild +++ b/drm/Kbuild @@ -1,5 +1,5 @@ EXTRA_CFLAGS += -I/usr/include -I./drivers/char/drm -I./include/drm -via-y := via_irq.o via_drv.o via_map.o via_mm.o via_dma.o via_verifier.o \ +unichrome-y := via_irq.o via_drv.o via_map.o via_mm.o via_dma.o via_verifier.o \ via_dmablit.o -obj-m := via.o +obj-m := unichrome.o diff --git a/drm/via_drv.h b/drm/via_drv.h index 775d354..d532fd5 100644 --- a/drm/via_drv.h +++ b/drm/via_drv.h @@ -27,7 +27,7 @@ #include <drm_sman.h> #define DRIVER_AUTHOR "Various" -#define DRIVER_NAME "via" +#define DRIVER_NAME "unichrome" #define DRIVER_DESC "VIA Unichrome / Pro" #define DRIVER_DATE "20100320" diff --git a/src/via_dri.c b/src/via_dri.c index 8efe1d0..f16cbd6 100644 --- a/src/via_dri.c +++ b/src/via_dri.c @@ -96,7 +96,7 @@ extern void GlxSetVisualConfigs( #define AGP_MODE_V3_8x 0x0a #define AGP_MODE_V3_4x 0x09 -static char VIAKernelDriverName[] = "via"; +static char VIAKernelDriverName[] = "unichrome"; static char VIAClientDriverName[] = "unichrome"; struct ViaDri { ----------------------------------------------------------------------- commit 7c8c5cb39b41e367bf8180c33e8123ca7b19f2f4 Author: Luc Verhaegen <li...@sk...> Date: Sun Mar 21 04:06:39 2010 +0100 VT3108: disable interrupts from within the drm. 7c8c5cb39b41e367bf8180c33e8123ca7b19f2f4 diff --git a/drm/via_map.c b/drm/via_map.c index 255fb85..4c927a9 100644 --- a/drm/via_map.c +++ b/drm/via_map.c @@ -109,15 +109,26 @@ int via_driver_load(struct drm_device *dev, unsigned long chipset) return ret; } + if (dev->pci_device == 0x3108) { + /* VT3108 interrupts are horribly busted. */ + dev->driver->driver_features &= + ~(DRIVER_HAVE_IRQ | DRIVER_IRQ_SHARED); +#ifndef DRM_IOCTL_MODESET_CTL + dev->driver->driver_features &= ~ DRIVER_IRQ_VBL; +#endif + } #ifdef DRM_IOCTL_MODESET_CTL - ret = drm_vblank_init(dev, 1); - if (ret) { - drm_sman_takedown(&dev_priv->sman); - kfree(dev_priv); - return ret; + else { + ret = drm_vblank_init(dev, 1); + if (ret) { + drm_sman_takedown(&dev_priv->sman); + kfree(dev_priv); + return ret; + } } #endif /* DRM_IOCTL_MODESET_CTL */ + return 0; } diff --git a/src/via_dri.c b/src/via_dri.c index f16cbd6..47da011 100644 --- a/src/via_dri.c +++ b/src/via_dri.c @@ -126,17 +126,26 @@ VIADRIIrqInit(VIAPtr pVia, VIADRIPtr pVIADRI) drmGetInterruptFromBusID(pVia->drmFD, PCI_BUS(pVia->PciInfo), PCI_DEV(pVia->PciInfo), PCI_FUNC(pVia->PciInfo)); + if (pVIADRI->irqEnabled < 0) { + xf86DrvMsg(pVia->scrnIndex, X_WARNING, "%s Failed: %s.\n", + "drmGetInterruptFromBusID", strerror(-pVIADRI->irqEnabled)); + xf86DrvMsg(pVia->scrnIndex, X_INFO, "%s: Disabling interrupts.\n", + __func__); + pVIADRI->irqEnabled = 0; + return; + } + if ((drmCtlInstHandler(pVia->drmFD, pVIADRI->irqEnabled))) { xf86DrvMsg(pVia->scrnIndex, X_WARNING, "[drm] Failure adding irq handler. " "Falling back to irq-free operation.\n"); pVIADRI->irqEnabled = 0; + return; } - if (pVIADRI->irqEnabled) - xf86DrvMsg(pVia->scrnIndex, X_INFO, - "[drm] Irq handler installed, using IRQ %d.\n", - pVIADRI->irqEnabled); + xf86DrvMsg(pVia->scrnIndex, X_INFO, + "[drm] Irq handler installed, using IRQ %d.\n", + pVIADRI->irqEnabled); } /* ----------------------------------------------------------------------- commit e15805645653cfcacb1f2dc3c370c19b163e4f55 Author: Luc Verhaegen <li...@sk...> Date: Sun Mar 21 12:28:51 2010 +0100 DRM: remove reg_pause_addr from _drm_via_dma_init. The drm module should know this on its own. e15805645653cfcacb1f2dc3c370c19b163e4f55 diff --git a/drm/via_dma.c b/drm/via_dma.c index dac5ff8..98a387b 100644 --- a/drm/via_dma.c +++ b/drm/via_dma.c @@ -219,9 +219,18 @@ static int via_initialize(struct drm_device * dev, dev_priv->dma_wrap = init->size; dev_priv->dma_offset = init->offset; dev_priv->last_pause_ptr = NULL; - dev_priv->hw_addr_ptr = - (volatile uint32_t *)((char *)dev_priv->mmio->handle + - init->reg_pause_addr); + + switch (dev->pci_device) { + case 0x3118: + case 0x3157: + dev_priv->hw_addr_ptr = (volatile uint32_t *) + ((char *)dev_priv->mmio->handle + 0x40C); + break; + default: + dev_priv->hw_addr_ptr = (volatile uint32_t *) + ((char *)dev_priv->mmio->handle + 0x418); + break; + } via_cmdbuf_start(dev_priv); diff --git a/drm/via_drm.h b/drm/via_drm.h index d69cb36..6e0c4c6 100644 --- a/drm/via_drm.h +++ b/drm/via_drm.h @@ -25,7 +25,7 @@ #define _VIA_DRM_H_ #define VIA_DRM_DRIVER_MAJOR 3 -#define VIA_DRM_DRIVER_MINOR 0 +#define VIA_DRM_DRIVER_MINOR 1 #define VIA_DRM_DRIVER_PATCHLEVEL 0 /* WARNING: These defines must be the same as what the Xserver uses. @@ -119,7 +119,6 @@ typedef struct _drm_via_dma_init { unsigned long offset; unsigned long size; - unsigned long reg_pause_addr; } drm_via_dma_init_t; typedef struct _drm_via_cmdbuffer { diff --git a/src/via_dri.c b/src/via_dri.c index 47da011..c355f44 100644 --- a/src/via_dri.c +++ b/src/via_dri.c @@ -176,7 +176,7 @@ VIADRMCommandBufferStart(VIAPtr pVia) VIAFUNC(pVia); - if (pDri->drmVersion < 0x010400) + if (pDri->drmVersion < 0x030100) return FALSE; if (pVia->CommandBufferActive) @@ -185,19 +185,8 @@ VIADRMCommandBufferStart(VIAPtr pVia) ringBufInit.offset = pDri->agpSize; ringBufInit.size = AGP_CMDBUF_SIZE; - - /* Info frome code-snippet on DRI-DEVEL list; Erdi Chen. */ - switch (pVia->Chipset) { - case VT3118: - case VT3157: - ringBufInit.reg_pause_addr = 0x40c; - break; - default: - ringBufInit.reg_pause_addr = 0x418; - break; - } - ringBufInit.func = VIA_INIT_DMA; + if (drmCommandWrite(pVia->drmFD, DRM_VIA_DMA_INIT, &ringBufInit, sizeof(ringBufInit))) { xf86DrvMsg(pVia->scrnIndex, X_ERROR, ----------------------------------------------------------------------- |
From: Luc V. <li...@sk...> - 2010-03-10 23:06:20
|
On Wed, Mar 10, 2010 at 10:32:00PM +0000, rup...@ya... wrote: > Thanks Luc, > > I managed to get the make to work shortly before you replied by a > slightly different route, I did :- > > sudo apt-get build-dep xserver-xorg-core > > this pulled in a whole load of "stuff" and the process seamed ok after that. > Yup, same end result :) > > Right next question. > > I installed it as per instructions. > > Now I can get TV out working without the machine locking up which is a > major plus. > > The only problem is the TV signal out is a bit juddery when doing a > live TV watch. > > I have a PAL TV plugged into S-Video port, Ive done nothing more than > let it auto configure. > Im using a Hauppage TD-500 to capture DVB. > > My hardware is a Via EPIA M10000 with the CLE266 chipset and a GB of Ram. > > There could be a whole lot of things wrong my Hauppage config or the > config of unichrome driver. > > Am I being realistic of my expectations of the config above being > capable of runing mythtv? > Ive been using the same config apart from a T-500 for a while as a > backend server, but Ive always used a moded xbox runing XBMC as the > front end, so Im not really sure if the HW has enuf capability for the > front end? > > Assuming the HW is ok, what do I look at tweaking next? Check the manpage, and try playing with some of the options under: Supported TV Encoders -> "VIA Technologies VT1622, VT1622A, VT1623" Luc Verhaegen. |
From: <li...@fr...> - 2010-01-30 23:43:20
|
Reporting from xf86-video-unichrome: Main unichrome.sf.net repository Please visit: http://cgit.freedesktop.org/~libv/xf86-video-unichrome Or get your own copy by using: git-clone git://anongit.freedesktop.org/~libv/xf86-video-unichrome The branch, unified has been updated via ac8db0f Wrapper: Fix build after removing xorg-server.h from toplevel config.h from f4f853a Xorg: remove xorg-server.h from toplevel config.h. Summary of changes: wrapper/wrapper.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit ac8db0f613a304777f549d21c3871f54c400acec Author: Luc Verhaegen <li...@sk...> Date: Sun Jan 31 00:42:49 2010 +0100 Wrapper: Fix build after removing xorg-server.h from toplevel config.h ac8db0f613a304777f549d21c3871f54c400acec diff --git a/wrapper/wrapper.c b/wrapper/wrapper.c index a443165..34a95fd 100644 --- a/wrapper/wrapper.c +++ b/wrapper/wrapper.c @@ -30,6 +30,7 @@ */ #ifdef HAVE_CONFIG_H +#include "xorg-server.h" #include "config.h" #endif ----------------------------------------------------------------------- |
From: <li...@fr...> - 2010-01-18 00:09:01
|
Reporting from xf86-video-unichrome: Main unichrome.sf.net repository Please visit: http://cgit.freedesktop.org/~libv/xf86-video-unichrome Or get your own copy by using: git-clone git://anongit.freedesktop.org/~libv/xf86-video-unichrome The branch, unified has been created at f4f853a Xorg: remove xorg-server.h from toplevel config.h. - Log ----------------------------------------------------------------- commit 6bee1a1cd64d045e6e11b5c6313854952d021955 Author: Dave Airlie <airlied@starflyer.(none)> Date: Tue Nov 10 08:43:00 2009 +0100 DRM: Add via unichrome support Add DRM device driver for VIA Unichrome chipsets From: Unichrome Project http://unichrome.sf.net, Erdi Chen, Thomas Hellstrom Signed-off-by: Dave Airlie <ai...@li...> Original SHA-ID: 22f579c621e2f264e6d093b07d75f99bc97d5df2 6bee1a1cd64d045e6e11b5c6313854952d021955 diff --git a/drm/via_3d_reg.h b/drm/via_3d_reg.h new file mode 100644 index 0000000..cf61bb5 --- /dev/null +++ b/drm/via_3d_reg.h @@ -0,0 +1,1651 @@ +/* + * Copyright 1998-2003 VIA Technologies, Inc. All Rights Reserved. + * Copyright 2001-2003 S3 Graphics, Inc. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sub license, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial portions + * of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL + * VIA, S3 GRAPHICS, AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#ifndef VIA_3D_REG_H +#define VIA_3D_REG_H +#define HC_REG_BASE 0x0400 + +#define HC_REG_TRANS_SPACE 0x0040 + +#define HC_ParaN_MASK 0xffffffff +#define HC_Para_MASK 0x00ffffff +#define HC_SubA_MASK 0xff000000 +#define HC_SubA_SHIFT 24 +/* Transmission Setting + */ +#define HC_REG_TRANS_SET 0x003c +#define HC_ParaSubType_MASK 0xff000000 +#define HC_ParaType_MASK 0x00ff0000 +#define HC_ParaOS_MASK 0x0000ff00 +#define HC_ParaAdr_MASK 0x000000ff +#define HC_ParaSubType_SHIFT 24 +#define HC_ParaType_SHIFT 16 +#define HC_ParaOS_SHIFT 8 +#define HC_ParaAdr_SHIFT 0 + +#define HC_ParaType_CmdVdata 0x0000 +#define HC_ParaType_NotTex 0x0001 +#define HC_ParaType_Tex 0x0002 +#define HC_ParaType_Palette 0x0003 +#define HC_ParaType_PreCR 0x0010 +#define HC_ParaType_Auto 0x00fe + +/* Transmission Space + */ +#define HC_REG_Hpara0 0x0040 +#define HC_REG_HpataAF 0x02fc + +/* Read + */ +#define HC_REG_HREngSt 0x0000 +#define HC_REG_HRFIFOempty 0x0004 +#define HC_REG_HRFIFOfull 0x0008 +#define HC_REG_HRErr 0x000c +#define HC_REG_FIFOstatus 0x0010 +/* HC_REG_HREngSt 0x0000 + */ +#define HC_HDASZC_MASK 0x00010000 +#define HC_HSGEMI_MASK 0x0000f000 +#define HC_HLGEMISt_MASK 0x00000f00 +#define HC_HCRSt_MASK 0x00000080 +#define HC_HSE0St_MASK 0x00000040 +#define HC_HSE1St_MASK 0x00000020 +#define HC_HPESt_MASK 0x00000010 +#define HC_HXESt_MASK 0x00000008 +#define HC_HBESt_MASK 0x00000004 +#define HC_HE2St_MASK 0x00000002 +#define HC_HE3St_MASK 0x00000001 +/* HC_REG_HRFIFOempty 0x0004 + */ +#define HC_HRZDempty_MASK 0x00000010 +#define HC_HRTXAempty_MASK 0x00000008 +#define HC_HRTXDempty_MASK 0x00000004 +#define HC_HWZDempty_MASK 0x00000002 +#define HC_HWCDempty_MASK 0x00000001 +/* HC_REG_HRFIFOfull 0x0008 + */ +#define HC_HRZDfull_MASK 0x00000010 +#define HC_HRTXAfull_MASK 0x00000008 +#define HC_HRTXDfull_MASK 0x00000004 +#define HC_HWZDfull_MASK 0x00000002 +#define HC_HWCDfull_MASK 0x00000001 +/* HC_REG_HRErr 0x000c + */ +#define HC_HAGPCMErr_MASK 0x80000000 +#define HC_HAGPCMErrC_MASK 0x70000000 +/* HC_REG_FIFOstatus 0x0010 + */ +#define HC_HRFIFOATall_MASK 0x80000000 +#define HC_HRFIFOATbusy_MASK 0x40000000 +#define HC_HRATFGMDo_MASK 0x00000100 +#define HC_HRATFGMDi_MASK 0x00000080 +#define HC_HRATFRZD_MASK 0x00000040 +#define HC_HRATFRTXA_MASK 0x00000020 +#define HC_HRATFRTXD_MASK 0x00000010 +#define HC_HRATFWZD_MASK 0x00000008 +#define HC_HRATFWCD_MASK 0x00000004 +#define HC_HRATTXTAG_MASK 0x00000002 +#define HC_HRATTXCH_MASK 0x00000001 + +/* AGP Command Setting + */ +#define HC_SubA_HAGPBstL 0x0060 +#define HC_SubA_HAGPBendL 0x0061 +#define HC_SubA_HAGPCMNT 0x0062 +#define HC_SubA_HAGPBpL 0x0063 +#define HC_SubA_HAGPBpH 0x0064 +/* HC_SubA_HAGPCMNT 0x0062 + */ +#define HC_HAGPCMNT_MASK 0x00800000 +#define HC_HCmdErrClr_MASK 0x00400000 +#define HC_HAGPBendH_MASK 0x0000ff00 +#define HC_HAGPBstH_MASK 0x000000ff +#define HC_HAGPBendH_SHIFT 8 +#define HC_HAGPBstH_SHIFT 0 +/* HC_SubA_HAGPBpL 0x0063 + */ +#define HC_HAGPBpL_MASK 0x00fffffc +#define HC_HAGPBpID_MASK 0x00000003 +#define HC_HAGPBpID_PAUSE 0x00000000 +#define HC_HAGPBpID_JUMP 0x00000001 +#define HC_HAGPBpID_STOP 0x00000002 +/* HC_SubA_HAGPBpH 0x0064 + */ +#define HC_HAGPBpH_MASK 0x00ffffff + +/* Miscellaneous Settings + */ +#define HC_SubA_HClipTB 0x0070 +#define HC_SubA_HClipLR 0x0071 +#define HC_SubA_HFPClipTL 0x0072 +#define HC_SubA_HFPClipBL 0x0073 +#define HC_SubA_HFPClipLL 0x0074 +#define HC_SubA_HFPClipRL 0x0075 +#define HC_SubA_HFPClipTBH 0x0076 +#define HC_SubA_HFPClipLRH 0x0077 +#define HC_SubA_HLP 0x0078 +#define HC_SubA_HLPRF 0x0079 +#define HC_SubA_HSolidCL 0x007a +#define HC_SubA_HPixGC 0x007b +#define HC_SubA_HSPXYOS 0x007c +#define HC_SubA_HVertexCNT 0x007d + +#define HC_HClipT_MASK 0x00fff000 +#define HC_HClipT_SHIFT 12 +#define HC_HClipB_MASK 0x00000fff +#define HC_HClipB_SHIFT 0 +#define HC_HClipL_MASK 0x00fff000 +#define HC_HClipL_SHIFT 12 +#define HC_HClipR_MASK 0x00000fff +#define HC_HClipR_SHIFT 0 +#define HC_HFPClipBH_MASK 0x0000ff00 +#define HC_HFPClipBH_SHIFT 8 +#define HC_HFPClipTH_MASK 0x000000ff +#define HC_HFPClipTH_SHIFT 0 +#define HC_HFPClipRH_MASK 0x0000ff00 +#define HC_HFPClipRH_SHIFT 8 +#define HC_HFPClipLH_MASK 0x000000ff +#define HC_HFPClipLH_SHIFT 0 +#define HC_HSolidCH_MASK 0x000000ff +#define HC_HPixGC_MASK 0x00800000 +#define HC_HSPXOS_MASK 0x00fff000 +#define HC_HSPXOS_SHIFT 12 +#define HC_HSPYOS_MASK 0x00000fff + +/* Command + * Command A + */ +#define HC_HCmdHeader_MASK 0xfe000000 /*0xffe00000 */ +#define HC_HE3Fire_MASK 0x00100000 +#define HC_HPMType_MASK 0x000f0000 +#define HC_HEFlag_MASK 0x0000e000 +#define HC_HShading_MASK 0x00001c00 +#define HC_HPMValidN_MASK 0x00000200 +#define HC_HPLEND_MASK 0x00000100 +#define HC_HVCycle_MASK 0x000000ff +#define HC_HVCycle_Style_MASK 0x000000c0 +#define HC_HVCycle_ChgA_MASK 0x00000030 +#define HC_HVCycle_ChgB_MASK 0x0000000c +#define HC_HVCycle_ChgC_MASK 0x00000003 +#define HC_HPMType_Point 0x00000000 +#define HC_HPMType_Line 0x00010000 +#define HC_HPMType_Tri 0x00020000 +#define HC_HPMType_TriWF 0x00040000 +#define HC_HEFlag_NoAA 0x00000000 +#define HC_HEFlag_ab 0x00008000 +#define HC_HEFlag_bc 0x00004000 +#define HC_HEFlag_ca 0x00002000 +#define HC_HShading_Solid 0x00000000 +#define HC_HShading_FlatA 0x00000400 +#define HC_HShading_FlatB 0x00000800 +#define HC_HShading_FlatC 0x00000c00 +#define HC_HShading_Gouraud 0x00001000 +#define HC_HVCycle_Full 0x00000000 +#define HC_HVCycle_AFP 0x00000040 +#define HC_HVCycle_One 0x000000c0 +#define HC_HVCycle_NewA 0x00000000 +#define HC_HVCycle_AA 0x00000010 +#define HC_HVCycle_AB 0x00000020 +#define HC_HVCycle_AC 0x00000030 +#define HC_HVCycle_NewB 0x00000000 +#define HC_HVCycle_BA 0x00000004 +#define HC_HVCycle_BB 0x00000008 +#define HC_HVCycle_BC 0x0000000c +#define HC_HVCycle_NewC 0x00000000 +#define HC_HVCycle_CA 0x00000001 +#define HC_HVCycle_CB 0x00000002 +#define HC_HVCycle_CC 0x00000003 + +/* Command B + */ +#define HC_HLPrst_MASK 0x00010000 +#define HC_HLLastP_MASK 0x00008000 +#define HC_HVPMSK_MASK 0x00007f80 +#define HC_HBFace_MASK 0x00000040 +#define HC_H2nd1VT_MASK 0x0000003f +#define HC_HVPMSK_X 0x00004000 +#define HC_HVPMSK_Y 0x00002000 +#define HC_HVPMSK_Z 0x00001000 +#define HC_HVPMSK_W 0x00000800 +#define HC_HVPMSK_Cd 0x00000400 +#define HC_HVPMSK_Cs 0x00000200 +#define HC_HVPMSK_S 0x00000100 +#define HC_HVPMSK_T 0x00000080 + +/* Enable Setting + */ +#define HC_SubA_HEnable 0x0000 +#define HC_HenTXEnvMap_MASK 0x00200000 +#define HC_HenVertexCNT_MASK 0x00100000 +#define HC_HenCPUDAZ_MASK 0x00080000 +#define HC_HenDASZWC_MASK 0x00040000 +#define HC_HenFBCull_MASK 0x00020000 +#define HC_HenCW_MASK 0x00010000 +#define HC_HenAA_MASK 0x00008000 +#define HC_HenST_MASK 0x00004000 +#define HC_HenZT_MASK 0x00002000 +#define HC_HenZW_MASK 0x00001000 +#define HC_HenAT_MASK 0x00000800 +#define HC_HenAW_MASK 0x00000400 +#define HC_HenSP_MASK 0x00000200 +#define HC_HenLP_MASK 0x00000100 +#define HC_HenTXCH_MASK 0x00000080 +#define HC_HenTXMP_MASK 0x00000040 +#define HC_HenTXPP_MASK 0x00000020 +#define HC_HenTXTR_MASK 0x00000010 +#define HC_HenCS_MASK 0x00000008 +#define HC_HenFOG_MASK 0x00000004 +#define HC_HenABL_MASK 0x00000002 +#define HC_HenDT_MASK 0x00000001 + +/* Z Setting + */ +#define HC_SubA_HZWBBasL 0x0010 +#define HC_SubA_HZWBBasH 0x0011 +#define HC_SubA_HZWBType 0x0012 +#define HC_SubA_HZBiasL 0x0013 +#define HC_SubA_HZWBend 0x0014 +#define HC_SubA_HZWTMD 0x0015 +#define HC_SubA_HZWCDL 0x0016 +#define HC_SubA_HZWCTAGnum 0x0017 +#define HC_SubA_HZCYNum 0x0018 +#define HC_SubA_HZWCFire 0x0019 +/* HC_SubA_HZWBType + */ +#define HC_HZWBType_MASK 0x00800000 +#define HC_HZBiasedWB_MASK 0x00400000 +#define HC_HZONEasFF_MASK 0x00200000 +#define HC_HZOONEasFF_MASK 0x00100000 +#define HC_HZWBFM_MASK 0x00030000 +#define HC_HZWBLoc_MASK 0x0000c000 +#define HC_HZWBPit_MASK 0x00003fff +#define HC_HZWBFM_16 0x00000000 +#define HC_HZWBFM_32 0x00020000 +#define HC_HZWBFM_24 0x00030000 +#define HC_HZWBLoc_Local 0x00000000 +#define HC_HZWBLoc_SyS 0x00004000 +/* HC_SubA_HZWBend + */ +#define HC_HZWBend_MASK 0x00ffe000 +#define HC_HZBiasH_MASK 0x000000ff +#define HC_HZWBend_SHIFT 10 +/* HC_SubA_HZWTMD + */ +#define HC_HZWTMD_MASK 0x00070000 +#define HC_HEBEBias_MASK 0x00007f00 +#define HC_HZNF_MASK 0x000000ff +#define HC_HZWTMD_NeverPass 0x00000000 +#define HC_HZWTMD_LT 0x00010000 +#define HC_HZWTMD_EQ 0x00020000 +#define HC_HZWTMD_LE 0x00030000 +#define HC_HZWTMD_GT 0x00040000 +#define HC_HZWTMD_NE 0x00050000 +#define HC_HZWTMD_GE 0x00060000 +#define HC_HZWTMD_AllPass 0x00070000 +#define HC_HEBEBias_SHIFT 8 +/* HC_SubA_HZWCDL 0x0016 + */ +#define HC_HZWCDL_MASK 0x00ffffff +/* HC_SubA_HZWCTAGnum 0x0017 + */ +#define HC_HZWCTAGnum_MASK 0x00ff0000 +#define HC_HZWCTAGnum_SHIFT 16 +#define HC_HZWCDH_MASK 0x000000ff +#define HC_HZWCDH_SHIFT 0 +/* HC_SubA_HZCYNum 0x0018 + */ +#define HC_HZCYNum_MASK 0x00030000 +#define HC_HZCYNum_SHIFT 16 +#define HC_HZWCQWnum_MASK 0x00003fff +#define HC_HZWCQWnum_SHIFT 0 +/* HC_SubA_HZWCFire 0x0019 + */ +#define HC_ZWCFire_MASK 0x00010000 +#define HC_HZWCQWnumLast_MASK 0x00003fff +#define HC_HZWCQWnumLast_SHIFT 0 + +/* Stencil Setting + */ +#define HC_SubA_HSTREF 0x0023 +#define HC_SubA_HSTMD 0x0024 +/* HC_SubA_HSBFM + */ +#define HC_HSBFM_MASK 0x00030000 +#define HC_HSBLoc_MASK 0x0000c000 +#define HC_HSBPit_MASK 0x00003fff +/* HC_SubA_HSTREF + */ +#define HC_HSTREF_MASK 0x00ff0000 +#define HC_HSTOPMSK_MASK 0x0000ff00 +#define HC_HSTBMSK_MASK 0x000000ff +#define HC_HSTREF_SHIFT 16 +#define HC_HSTOPMSK_SHIFT 8 +/* HC_SubA_HSTMD + */ +#define HC_HSTMD_MASK 0x00070000 +#define HC_HSTOPSF_MASK 0x000001c0 +#define HC_HSTOPSPZF_MASK 0x00000038 +#define HC_HSTOPSPZP_MASK 0x00000007 +#define HC_HSTMD_NeverPass 0x00000000 +#define HC_HSTMD_LT 0x00010000 +#define HC_HSTMD_EQ 0x00020000 +#define HC_HSTMD_LE 0x00030000 +#define HC_HSTMD_GT 0x00040000 +#define HC_HSTMD_NE 0x00050000 +#define HC_HSTMD_GE 0x00060000 +#define HC_HSTMD_AllPass 0x00070000 +#define HC_HSTOPSF_KEEP 0x00000000 +#define HC_HSTOPSF_ZERO 0x00000040 +#define HC_HSTOPSF_REPLACE 0x00000080 +#define HC_HSTOPSF_INCRSAT 0x000000c0 +#define HC_HSTOPSF_DECRSAT 0x00000100 +#define HC_HSTOPSF_INVERT 0x00000140 +#define HC_HSTOPSF_INCR 0x00000180 +#define HC_HSTOPSF_DECR 0x000001c0 +#define HC_HSTOPSPZF_KEEP 0x00000000 +#define HC_HSTOPSPZF_ZERO 0x00000008 +#define HC_HSTOPSPZF_REPLACE 0x00000010 +#define HC_HSTOPSPZF_INCRSAT 0x00000018 +#define HC_HSTOPSPZF_DECRSAT 0x00000020 +#define HC_HSTOPSPZF_INVERT 0x00000028 +#define HC_HSTOPSPZF_INCR 0x00000030 +#define HC_HSTOPSPZF_DECR 0x00000038 +#define HC_HSTOPSPZP_KEEP 0x00000000 +#define HC_HSTOPSPZP_ZERO 0x00000001 +#define HC_HSTOPSPZP_REPLACE 0x00000002 +#define HC_HSTOPSPZP_INCRSAT 0x00000003 +#define HC_HSTOPSPZP_DECRSAT 0x00000004 +#define HC_HSTOPSPZP_INVERT 0x00000005 +#define HC_HSTOPSPZP_INCR 0x00000006 +#define HC_HSTOPSPZP_DECR 0x00000007 + +/* Alpha Setting + */ +#define HC_SubA_HABBasL 0x0030 +#define HC_SubA_HABBasH 0x0031 +#define HC_SubA_HABFM 0x0032 +#define HC_SubA_HATMD 0x0033 +#define HC_SubA_HABLCsat 0x0034 +#define HC_SubA_HABLCop 0x0035 +#define HC_SubA_HABLAsat 0x0036 +#define HC_SubA_HABLAop 0x0037 +#define HC_SubA_HABLRCa 0x0038 +#define HC_SubA_HABLRFCa 0x0039 +#define HC_SubA_HABLRCbias 0x003a +#define HC_SubA_HABLRCb 0x003b +#define HC_SubA_HABLRFCb 0x003c +#define HC_SubA_HABLRAa 0x003d +#define HC_SubA_HABLRAb 0x003e +/* HC_SubA_HABFM + */ +#define HC_HABFM_MASK 0x00030000 +#define HC_HABLoc_MASK 0x0000c000 +#define HC_HABPit_MASK 0x000007ff +/* HC_SubA_HATMD + */ +#define HC_HATMD_MASK 0x00000700 +#define HC_HATREF_MASK 0x000000ff +#define HC_HATMD_NeverPass 0x00000000 +#define HC_HATMD_LT 0x00000100 +#define HC_HATMD_EQ 0x00000200 +#define HC_HATMD_LE 0x00000300 +#define HC_HATMD_GT 0x00000400 +#define HC_HATMD_NE 0x00000500 +#define HC_HATMD_GE 0x00000600 +#define HC_HATMD_AllPass 0x00000700 +/* HC_SubA_HABLCsat + */ +#define HC_HABLCsat_MASK 0x00010000 +#define HC_HABLCa_MASK 0x0000fc00 +#define HC_HABLCa_C_MASK 0x0000c000 +#define HC_HABLCa_OPC_MASK 0x00003c00 +#define HC_HABLFCa_MASK 0x000003f0 +#define HC_HABLFCa_C_MASK 0x00000300 +#define HC_HABLFCa_OPC_MASK 0x000000f0 +#define HC_HABLCbias_MASK 0x0000000f +#define HC_HABLCbias_C_MASK 0x00000008 +#define HC_HABLCbias_OPC_MASK 0x00000007 +/*-- Define the input color. + */ +#define HC_XC_Csrc 0x00000000 +#define HC_XC_Cdst 0x00000001 +#define HC_XC_Asrc 0x00000002 +#define HC_XC_Adst 0x00000003 +#define HC_XC_Fog 0x00000004 +#define HC_XC_HABLRC 0x00000005 +#define HC_XC_minSrcDst 0x00000006 +#define HC_XC_maxSrcDst 0x00000007 +#define HC_XC_mimAsrcInvAdst 0x00000008 +#define HC_XC_OPC 0x00000000 +#define HC_XC_InvOPC 0x00000010 +#define HC_XC_OPCp5 0x00000020 +/*-- Define the input Alpha + */ +#define HC_XA_OPA 0x00000000 +#define HC_XA_InvOPA 0x00000010 +#define HC_XA_OPAp5 0x00000020 +#define HC_XA_0 0x00000000 +#define HC_XA_Asrc 0x00000001 +#define HC_XA_Adst 0x00000002 +#define HC_XA_Fog 0x00000003 +#define HC_XA_minAsrcFog 0x00000004 +#define HC_XA_minAsrcAdst 0x00000005 +#define HC_XA_maxAsrcFog 0x00000006 +#define HC_XA_maxAsrcAdst 0x00000007 +#define HC_XA_HABLRA 0x00000008 +#define HC_XA_minAsrcInvAdst 0x00000008 +#define HC_XA_HABLFRA 0x00000009 +/*-- + */ +#define HC_HABLCa_OPC (HC_XC_OPC << 10) +#define HC_HABLCa_InvOPC (HC_XC_InvOPC << 10) +#define HC_HABLCa_OPCp5 (HC_XC_OPCp5 << 10) +#define HC_HABLCa_Csrc (HC_XC_Csrc << 10) +#define HC_HABLCa_Cdst (HC_XC_Cdst << 10) +#define HC_HABLCa_Asrc (HC_XC_Asrc << 10) +#define HC_HABLCa_Adst (HC_XC_Adst << 10) +#define HC_HABLCa_Fog (HC_XC_Fog << 10) +#define HC_HABLCa_HABLRCa (HC_XC_HABLRC << 10) +#define HC_HABLCa_minSrcDst (HC_XC_minSrcDst << 10) +#define HC_HABLCa_maxSrcDst (HC_XC_maxSrcDst << 10) +#define HC_HABLFCa_OPC (HC_XC_OPC << 4) +#define HC_HABLFCa_InvOPC (HC_XC_InvOPC << 4) +#define HC_HABLFCa_OPCp5 (HC_XC_OPCp5 << 4) +#define HC_HABLFCa_Csrc (HC_XC_Csrc << 4) +#define HC_HABLFCa_Cdst (HC_XC_Cdst << 4) +#define HC_HABLFCa_Asrc (HC_XC_Asrc << 4) +#define HC_HABLFCa_Adst (HC_XC_Adst << 4) +#define HC_HABLFCa_Fog (HC_XC_Fog << 4) +#define HC_HABLFCa_HABLRCa (HC_XC_HABLRC << 4) +#define HC_HABLFCa_minSrcDst (HC_XC_minSrcDst << 4) +#define HC_HABLFCa_maxSrcDst (HC_XC_maxSrcDst << 4) +#define HC_HABLFCa_mimAsrcInvAdst (HC_XC_mimAsrcInvAdst << 4) +#define HC_HABLCbias_HABLRCbias 0x00000000 +#define HC_HABLCbias_Asrc 0x00000001 +#define HC_HABLCbias_Adst 0x00000002 +#define HC_HABLCbias_Fog 0x00000003 +#define HC_HABLCbias_Cin 0x00000004 +/* HC_SubA_HABLCop 0x0035 + */ +#define HC_HABLdot_MASK 0x00010000 +#define HC_HABLCop_MASK 0x00004000 +#define HC_HABLCb_MASK 0x00003f00 +#define HC_HABLCb_C_MASK 0x00003000 +#define HC_HABLCb_OPC_MASK 0x00000f00 +#define HC_HABLFCb_MASK 0x000000fc +#define HC_HABLFCb_C_MASK 0x000000c0 +#define HC_HABLFCb_OPC_MASK 0x0000003c +#define HC_HABLCshift_MASK 0x00000003 +#define HC_HABLCb_OPC (HC_XC_OPC << 8) +#define HC_HABLCb_InvOPC (HC_XC_InvOPC << 8) +#define HC_HABLCb_OPCp5 (HC_XC_OPCp5 << 8) +#define HC_HABLCb_Csrc (HC_XC_Csrc << 8) +#define HC_HABLCb_Cdst (HC_XC_Cdst << 8) +#define HC_HABLCb_Asrc (HC_XC_Asrc << 8) +#define HC_HABLCb_Adst (HC_XC_Adst << 8) +#define HC_HABLCb_Fog (HC_XC_Fog << 8) +#define HC_HABLCb_HABLRCa (HC_XC_HABLRC << 8) +#define HC_HABLCb_minSrcDst (HC_XC_minSrcDst << 8) +#define HC_HABLCb_maxSrcDst (HC_XC_maxSrcDst << 8) +#define HC_HABLFCb_OPC (HC_XC_OPC << 2) +#define HC_HABLFCb_InvOPC (HC_XC_InvOPC << 2) +#define HC_HABLFCb_OPCp5 (HC_XC_OPCp5 << 2) +#define HC_HABLFCb_Csrc (HC_XC_Csrc << 2) +#define HC_HABLFCb_Cdst (HC_XC_Cdst << 2) +#define HC_HABLFCb_Asrc (HC_XC_Asrc << 2) +#define HC_HABLFCb_Adst (HC_XC_Adst << 2) +#define HC_HABLFCb_Fog (HC_XC_Fog << 2) +#define HC_HABLFCb_HABLRCb (HC_XC_HABLRC << 2) +#define HC_HABLFCb_minSrcDst (HC_XC_minSrcDst << 2) +#define HC_HABLFCb_maxSrcDst (HC_XC_maxSrcDst << 2) +#define HC_HABLFCb_mimAsrcInvAdst (HC_XC_mimAsrcInvAdst << 2) +/* HC_SubA_HABLAsat 0x0036 + */ +#define HC_HABLAsat_MASK 0x00010000 +#define HC_HABLAa_MASK 0x0000fc00 +#define HC_HABLAa_A_MASK 0x0000c000 +#define HC_HABLAa_OPA_MASK 0x00003c00 +#define HC_HABLFAa_MASK 0x000003f0 +#define HC_HABLFAa_A_MASK 0x00000300 +#define HC_HABLFAa_OPA_MASK 0x000000f0 +#define HC_HABLAbias_MASK 0x0000000f +#define HC_HABLAbias_A_MASK 0x00000008 +#define HC_HABLAbias_OPA_MASK 0x00000007 +#define HC_HABLAa_OPA (HC_XA_OPA << 10) +#define HC_HABLAa_InvOPA (HC_XA_InvOPA << 10) +#define HC_HABLAa_OPAp5 (HC_XA_OPAp5 << 10) +#define HC_HABLAa_0 (HC_XA_0 << 10) +#define HC_HABLAa_Asrc (HC_XA_Asrc << 10) +#define HC_HABLAa_Adst (HC_XA_Adst << 10) +#define HC_HABLAa_Fog (HC_XA_Fog << 10) +#define HC_HABLAa_minAsrcFog (HC_XA_minAsrcFog << 10) +#define HC_HABLAa_minAsrcAdst (HC_XA_minAsrcAdst << 10) +#define HC_HABLAa_maxAsrcFog (HC_XA_maxAsrcFog << 10) +#define HC_HABLAa_maxAsrcAdst (HC_XA_maxAsrcAdst << 10) +#define HC_HABLAa_HABLRA (HC_XA_HABLRA << 10) +#define HC_HABLFAa_OPA (HC_XA_OPA << 4) +#define HC_HABLFAa_InvOPA (HC_XA_InvOPA << 4) +#define HC_HABLFAa_OPAp5 (HC_XA_OPAp5 << 4) +#define HC_HABLFAa_0 (HC_XA_0 << 4) +#define HC_HABLFAa_Asrc (HC_XA_Asrc << 4) +#define HC_HABLFAa_Adst (HC_XA_Adst << 4) +#define HC_HABLFAa_Fog (HC_XA_Fog << 4) +#define HC_HABLFAa_minAsrcFog (HC_XA_minAsrcFog << 4) +#define HC_HABLFAa_minAsrcAdst (HC_XA_minAsrcAdst << 4) +#define HC_HABLFAa_maxAsrcFog (HC_XA_maxAsrcFog << 4) +#define HC_HABLFAa_maxAsrcAdst (HC_XA_maxAsrcAdst << 4) +#define HC_HABLFAa_minAsrcInvAdst (HC_XA_minAsrcInvAdst << 4) +#define HC_HABLFAa_HABLFRA (HC_XA_HABLFRA << 4) +#define HC_HABLAbias_HABLRAbias 0x00000000 +#define HC_HABLAbias_Asrc 0x00000001 +#define HC_HABLAbias_Adst 0x00000002 +#define HC_HABLAbias_Fog 0x00000003 +#define HC_HABLAbias_Aaa 0x00000004 +/* HC_SubA_HABLAop 0x0037 + */ +#define HC_HABLAop_MASK 0x00004000 +#define HC_HABLAb_MASK 0x00003f00 +#define HC_HABLAb_OPA_MASK 0x00000f00 +#define HC_HABLFAb_MASK 0x000000fc +#define HC_HABLFAb_OPA_MASK 0x0000003c +#define HC_HABLAshift_MASK 0x00000003 +#define HC_HABLAb_OPA (HC_XA_OPA << 8) +#define HC_HABLAb_InvOPA (HC_XA_InvOPA << 8) +#define HC_HABLAb_OPAp5 (HC_XA_OPAp5 << 8) +#define HC_HABLAb_0 (HC_XA_0 << 8) +#define HC_HABLAb_Asrc (HC_XA_Asrc << 8) +#define HC_HABLAb_Adst (HC_XA_Adst << 8) +#define HC_HABLAb_Fog (HC_XA_Fog << 8) +#define HC_HABLAb_minAsrcFog (HC_XA_minAsrcFog << 8) +#define HC_HABLAb_minAsrcAdst (HC_XA_minAsrcAdst << 8) +#define HC_HABLAb_maxAsrcFog (HC_XA_maxAsrcFog << 8) +#define HC_HABLAb_maxAsrcAdst (HC_XA_maxAsrcAdst << 8) +#define HC_HABLAb_HABLRA (HC_XA_HABLRA << 8) +#define HC_HABLFAb_OPA (HC_XA_OPA << 2) +#define HC_HABLFAb_InvOPA (HC_XA_InvOPA << 2) +#define HC_HABLFAb_OPAp5 (HC_XA_OPAp5 << 2) +#define HC_HABLFAb_0 (HC_XA_0 << 2) +#define HC_HABLFAb_Asrc (HC_XA_Asrc << 2) +#define HC_HABLFAb_Adst (HC_XA_Adst << 2) +#define HC_HABLFAb_Fog (HC_XA_Fog << 2) +#define HC_HABLFAb_minAsrcFog (HC_XA_minAsrcFog << 2) +#define HC_HABLFAb_minAsrcAdst (HC_XA_minAsrcAdst << 2) +#define HC_HABLFAb_maxAsrcFog (HC_XA_maxAsrcFog << 2) +#define HC_HABLFAb_maxAsrcAdst (HC_XA_maxAsrcAdst << 2) +#define HC_HABLFAb_minAsrcInvAdst (HC_XA_minAsrcInvAdst << 2) +#define HC_HABLFAb_HABLFRA (HC_XA_HABLFRA << 2) +/* HC_SubA_HABLRAa 0x003d + */ +#define HC_HABLRAa_MASK 0x00ff0000 +#define HC_HABLRFAa_MASK 0x0000ff00 +#define HC_HABLRAbias_MASK 0x000000ff +#define HC_HABLRAa_SHIFT 16 +#define HC_HABLRFAa_SHIFT 8 +/* HC_SubA_HABLRAb 0x003e + */ +#define HC_HABLRAb_MASK 0x0000ff00 +#define HC_HABLRFAb_MASK 0x000000ff +#define HC_HABLRAb_SHIFT 8 + +/* Destination Setting + */ +#define HC_SubA_HDBBasL 0x0040 +#define HC_SubA_HDBBasH 0x0041 +#define HC_SubA_HDBFM 0x0042 +#define HC_SubA_HFBBMSKL 0x0043 +#define HC_SubA_HROP 0x0044 +/* HC_SubA_HDBFM 0x0042 + */ +#define HC_HDBFM_MASK 0x001f0000 +#define HC_HDBLoc_MASK 0x0000c000 +#define HC_HDBPit_MASK 0x00003fff +#define HC_HDBFM_RGB555 0x00000000 +#define HC_HDBFM_RGB565 0x00010000 +#define HC_HDBFM_ARGB4444 0x00020000 +#define HC_HDBFM_ARGB1555 0x00030000 +#define HC_HDBFM_BGR555 0x00040000 +#define HC_HDBFM_BGR565 0x00050000 +#define HC_HDBFM_ABGR4444 0x00060000 +#define HC_HDBFM_ABGR1555 0x00070000 +#define HC_HDBFM_ARGB0888 0x00080000 +#define HC_HDBFM_ARGB8888 0x00090000 +#define HC_HDBFM_ABGR0888 0x000a0000 +#define HC_HDBFM_ABGR8888 0x000b0000 +#define HC_HDBLoc_Local 0x00000000 +#define HC_HDBLoc_Sys 0x00004000 +/* HC_SubA_HROP 0x0044 + */ +#define HC_HROP_MASK 0x00000f00 +#define HC_HFBBMSKH_MASK 0x000000ff +#define HC_HROP_BLACK 0x00000000 +#define HC_HROP_DPon 0x00000100 +#define HC_HROP_DPna 0x00000200 +#define HC_HROP_Pn 0x00000300 +#define HC_HROP_PDna 0x00000400 +#define HC_HROP_Dn 0x00000500 +#define HC_HROP_DPx 0x00000600 +#define HC_HROP_DPan 0x00000700 +#define HC_HROP_DPa 0x00000800 +#define HC_HROP_DPxn 0x00000900 +#define HC_HROP_D 0x00000a00 +#define HC_HROP_DPno 0x00000b00 +#define HC_HROP_P 0x00000c00 +#define HC_HROP_PDno 0x00000d00 +#define HC_HROP_DPo 0x00000e00 +#define HC_HROP_WHITE 0x00000f00 + +/* Fog Setting + */ +#define HC_SubA_HFogLF 0x0050 +#define HC_SubA_HFogCL 0x0051 +#define HC_SubA_HFogCH 0x0052 +#define HC_SubA_HFogStL 0x0053 +#define HC_SubA_HFogStH 0x0054 +#define HC_SubA_HFogOOdMF 0x0055 +#define HC_SubA_HFogOOdEF 0x0056 +#define HC_SubA_HFogEndL 0x0057 +#define HC_SubA_HFogDenst 0x0058 +/* HC_SubA_FogLF 0x0050 + */ +#define HC_FogLF_MASK 0x00000010 +#define HC_FogEq_MASK 0x00000008 +#define HC_FogMD_MASK 0x00000007 +#define HC_FogMD_LocalFog 0x00000000 +#define HC_FogMD_LinearFog 0x00000002 +#define HC_FogMD_ExponentialFog 0x00000004 +#define HC_FogMD_Exponential2Fog 0x00000005 +/* #define HC_FogMD_FogTable 0x00000003 */ + +/* HC_SubA_HFogDenst 0x0058 + */ +#define HC_FogDenst_MASK 0x001fff00 +#define HC_FogEndL_MASK 0x000000ff + +/* Texture subtype definitions + */ +#define HC_SubType_Tex0 0x00000000 +#define HC_SubType_Tex1 0x00000001 +#define HC_SubType_TexGeneral 0x000000fe + +/* Attribute of texture n + */ +#define HC_SubA_HTXnL0BasL 0x0000 +#define HC_SubA_HTXnL1BasL 0x0001 +#define HC_SubA_HTXnL2BasL 0x0002 +#define HC_SubA_HTXnL3BasL 0x0003 +#define HC_SubA_HTXnL4BasL 0x0004 +#define HC_SubA_HTXnL5BasL 0x0005 +#define HC_SubA_HTXnL6BasL 0x0006 +#define HC_SubA_HTXnL7BasL 0x0007 +#define HC_SubA_HTXnL8BasL 0x0008 +#define HC_SubA_HTXnL9BasL 0x0009 +#define HC_SubA_HTXnLaBasL 0x000a +#define HC_SubA_HTXnLbBasL 0x000b +#define HC_SubA_HTXnLcBasL 0x000c +#define HC_SubA_HTXnLdBasL 0x000d +#define HC_SubA_HTXnLeBasL 0x000e +#define HC_SubA_HTXnLfBasL 0x000f +#define HC_SubA_HTXnL10BasL 0x0010 +#define HC_SubA_HTXnL11BasL 0x0011 +#define HC_SubA_HTXnL012BasH 0x0020 +#define HC_SubA_HTXnL345BasH 0x0021 +#define HC_SubA_HTXnL678BasH 0x0022 +#define HC_SubA_HTXnL9abBasH 0x0023 +#define HC_SubA_HTXnLcdeBasH 0x0024 +#define HC_SubA_HTXnLf1011BasH 0x0025 +#define HC_SubA_HTXnL0Pit 0x002b +#define HC_SubA_HTXnL1Pit 0x002c +#define HC_SubA_HTXnL2Pit 0x002d +#define HC_SubA_HTXnL3Pit 0x002e +#define HC_SubA_HTXnL4Pit 0x002f +#define HC_SubA_HTXnL5Pit 0x0030 +#define HC_SubA_HTXnL6Pit 0x0031 +#define HC_SubA_HTXnL7Pit 0x0032 +#define HC_SubA_HTXnL8Pit 0x0033 +#define HC_SubA_HTXnL9Pit 0x0034 +#define HC_SubA_HTXnLaPit 0x0035 +#define HC_SubA_HTXnLbPit 0x0036 +#define HC_SubA_HTXnLcPit 0x0037 +#define HC_SubA_HTXnLdPit 0x0038 +#define HC_SubA_HTXnLePit 0x0039 +#define HC_SubA_HTXnLfPit 0x003a +#define HC_SubA_HTXnL10Pit 0x003b +#define HC_SubA_HTXnL11Pit 0x003c +#define HC_SubA_HTXnL0_5WE 0x004b +#define HC_SubA_HTXnL6_bWE 0x004c +#define HC_SubA_HTXnLc_11WE 0x004d +#define HC_SubA_HTXnL0_5HE 0x0051 +#define HC_SubA_HTXnL6_bHE 0x0052 +#define HC_SubA_HTXnLc_11HE 0x0053 +#define HC_SubA_HTXnL0OS 0x0077 +#define HC_SubA_HTXnTB 0x0078 +#define HC_SubA_HTXnMPMD 0x0079 +#define HC_SubA_HTXnCLODu 0x007a +#define HC_SubA_HTXnFM 0x007b +#define HC_SubA_HTXnTRCH 0x007c +#define HC_SubA_HTXnTRCL 0x007d +#define HC_SubA_HTXnTBC 0x007e +#define HC_SubA_HTXnTRAH 0x007f +#define HC_SubA_HTXnTBLCsat 0x0080 +#define HC_SubA_HTXnTBLCop 0x0081 +#define HC_SubA_HTXnTBLMPfog 0x0082 +#define HC_SubA_HTXnTBLAsat 0x0083 +#define HC_SubA_HTXnTBLRCa 0x0085 +#define HC_SubA_HTXnTBLRCb 0x0086 +#define HC_SubA_HTXnTBLRCc 0x0087 +#define HC_SubA_HTXnTBLRCbias 0x0088 +#define HC_SubA_HTXnTBLRAa 0x0089 +#define HC_SubA_HTXnTBLRFog 0x008a +#define HC_SubA_HTXnBumpM00 0x0090 +#define HC_SubA_HTXnBumpM01 0x0091 +#define HC_SubA_HTXnBumpM10 0x0092 +#define HC_SubA_HTXnBumpM11 0x0093 +#define HC_SubA_HTXnLScale 0x0094 +#define HC_SubA_HTXSMD 0x0000 +/* HC_SubA_HTXnL012BasH 0x0020 + */ +#define HC_HTXnL0BasH_MASK 0x000000ff +#define HC_HTXnL1BasH_MASK 0x0000ff00 +#define HC_HTXnL2BasH_MASK 0x00ff0000 +#define HC_HTXnL1BasH_SHIFT 8 +#define HC_HTXnL2BasH_SHIFT 16 +/* HC_SubA_HTXnL345BasH 0x0021 + */ +#define HC_HTXnL3BasH_MASK 0x000000ff +#define HC_HTXnL4BasH_MASK 0x0000ff00 +#define HC_HTXnL5BasH_MASK 0x00ff0000 +#define HC_HTXnL4BasH_SHIFT 8 +#define HC_HTXnL5BasH_SHIFT 16 +/* HC_SubA_HTXnL678BasH 0x0022 + */ +#define HC_HTXnL6BasH_MASK 0x000000ff +#define HC_HTXnL7BasH_MASK 0x0000ff00 +#define HC_HTXnL8BasH_MASK 0x00ff0000 +#define HC_HTXnL7BasH_SHIFT 8 +#define HC_HTXnL8BasH_SHIFT 16 +/* HC_SubA_HTXnL9abBasH 0x0023 + */ +#define HC_HTXnL9BasH_MASK 0x000000ff +#define HC_HTXnLaBasH_MASK 0x0000ff00 +#define HC_HTXnLbBasH_MASK 0x00ff0000 +#define HC_HTXnLaBasH_SHIFT 8 +#define HC_HTXnLbBasH_SHIFT 16 +/* HC_SubA_HTXnLcdeBasH 0x0024 + */ +#define HC_HTXnLcBasH_MASK 0x000000ff +#define HC_HTXnLdBasH_MASK 0x0000ff00 +#define HC_HTXnLeBasH_MASK 0x00ff0000 +#define HC_HTXnLdBasH_SHIFT 8 +#define HC_HTXnLeBasH_SHIFT 16 +/* HC_SubA_HTXnLcdeBasH 0x0025 + */ +#define HC_HTXnLfBasH_MASK 0x000000ff +#define HC_HTXnL10BasH_MASK 0x0000ff00 +#define HC_HTXnL11BasH_MASK 0x00ff0000 +#define HC_HTXnL10BasH_SHIFT 8 +#define HC_HTXnL11BasH_SHIFT 16 +/* HC_SubA_HTXnL0Pit 0x002b + */ +#define HC_HTXnLnPit_MASK 0x00003fff +#define HC_HTXnEnPit_MASK 0x00080000 +#define HC_HTXnLnPitE_MASK 0x00f00000 +#define HC_HTXnLnPitE_SHIFT 20 +/* HC_SubA_HTXnL0_5WE 0x004b + */ +#define HC_HTXnL0WE_MASK 0x0000000f +#define HC_HTXnL1WE_MASK 0x000000f0 +#define HC_HTXnL2WE_MASK 0x00000f00 +#define HC_HTXnL3WE_MASK 0x0000f000 +#define HC_HTXnL4WE_MASK 0x000f0000 +#define HC_HTXnL5WE_MASK 0x00f00000 +#define HC_HTXnL1WE_SHIFT 4 +#define HC_HTXnL2WE_SHIFT 8 +#define HC_HTXnL3WE_SHIFT 12 +#define HC_HTXnL4WE_SHIFT 16 +#define HC_HTXnL5WE_SHIFT 20 +/* HC_SubA_HTXnL6_bWE 0x004c + */ +#define HC_HTXnL6WE_MASK 0x0000000f +#define HC_HTXnL7WE_MASK 0x000000f0 +#define HC_HTXnL8WE_MASK 0x00000f00 +#define HC_HTXnL9WE_MASK 0x0000f000 +#define HC_HTXnLaWE_MASK 0x000f0000 +#define HC_HTXnLbWE_MASK 0x00f00000 +#define HC_HTXnL7WE_SHIFT 4 +#define HC_HTXnL8WE_SHIFT 8 +#define HC_HTXnL9WE_SHIFT 12 +#define HC_HTXnLaWE_SHIFT 16 +#define HC_HTXnLbWE_SHIFT 20 +/* HC_SubA_HTXnLc_11WE 0x004d + */ +#define HC_HTXnLcWE_MASK 0x0000000f +#define HC_HTXnLdWE_MASK 0x000000f0 +#define HC_HTXnLeWE_MASK 0x00000f00 +#define HC_HTXnLfWE_MASK 0x0000f000 +#define HC_HTXnL10WE_MASK 0x000f0000 +#define HC_HTXnL11WE_MASK 0x00f00000 +#define HC_HTXnLdWE_SHIFT 4 +#define HC_HTXnLeWE_SHIFT 8 +#define HC_HTXnLfWE_SHIFT 12 +#define HC_HTXnL10WE_SHIFT 16 +#define HC_HTXnL11WE_SHIFT 20 +/* HC_SubA_HTXnL0_5HE 0x0051 + */ +#define HC_HTXnL0HE_MASK 0x0000000f +#define HC_HTXnL1HE_MASK 0x000000f0 +#define HC_HTXnL2HE_MASK 0x00000f00 +#define HC_HTXnL3HE_MASK 0x0000f000 +#define HC_HTXnL4HE_MASK 0x000f0000 +#define HC_HTXnL5HE_MASK 0x00f00000 +#define HC_HTXnL1HE_SHIFT 4 +#define HC_HTXnL2HE_SHIFT 8 +#define HC_HTXnL3HE_SHIFT 12 +#define HC_HTXnL4HE_SHIFT 16 +#define HC_HTXnL5HE_SHIFT 20 +/* HC_SubA_HTXnL6_bHE 0x0052 + */ +#define HC_HTXnL6HE_MASK 0x0000000f +#define HC_HTXnL7HE_MASK 0x000000f0 +#define HC_HTXnL8HE_MASK 0x00000f00 +#define HC_HTXnL9HE_MASK 0x0000f000 +#define HC_HTXnLaHE_MASK 0x000f0000 +#define HC_HTXnLbHE_MASK 0x00f00000 +#define HC_HTXnL7HE_SHIFT 4 +#define HC_HTXnL8HE_SHIFT 8 +#define HC_HTXnL9HE_SHIFT 12 +#define HC_HTXnLaHE_SHIFT 16 +#define HC_HTXnLbHE_SHIFT 20 +/* HC_SubA_HTXnLc_11HE 0x0053 + */ +#define HC_HTXnLcHE_MASK 0x0000000f +#define HC_HTXnLdHE_MASK 0x000000f0 +#define HC_HTXnLeHE_MASK 0x00000f00 +#define HC_HTXnLfHE_MASK 0x0000f000 +#define HC_HTXnL10HE_MASK 0x000f0000 +#define HC_HTXnL11HE_MASK 0x00f00000 +#define HC_HTXnLdHE_SHIFT 4 +#define HC_HTXnLeHE_SHIFT 8 +#define HC_HTXnLfHE_SHIFT 12 +#define HC_HTXnL10HE_SHIFT 16 +#define HC_HTXnL11HE_SHIFT 20 +/* HC_SubA_HTXnL0OS 0x0077 + */ +#define HC_HTXnL0OS_MASK 0x003ff000 +#define HC_HTXnLVmax_MASK 0x00000fc0 +#define HC_HTXnLVmin_MASK 0x0000003f +#define HC_HTXnL0OS_SHIFT 12 +#define HC_HTXnLVmax_SHIFT 6 +/* HC_SubA_HTXnTB 0x0078 + */ +#define HC_HTXnTB_MASK 0x00f00000 +#define HC_HTXnFLSe_MASK 0x0000e000 +#define HC_HTXnFLSs_MASK 0x00001c00 +#define HC_HTXnFLTe_MASK 0x00000380 +#define HC_HTXnFLTs_MASK 0x00000070 +#define HC_HTXnFLDs_MASK 0x0000000f +#define HC_HTXnTB_NoTB 0x00000000 +#define HC_HTXnTB_TBC_S 0x00100000 +#define HC_HTXnTB_TBC_T 0x00200000 +#define HC_HTXnTB_TB_S 0x00400000 +#define HC_HTXnTB_TB_T 0x00800000 +#define HC_HTXnFLSe_Nearest 0x00000000 +#define HC_HTXnFLSe_Linear 0x00002000 +#define HC_HTXnFLSe_NonLinear 0x00004000 +#define HC_HTXnFLSe_Sharp 0x00008000 +#define HC_HTXnFLSe_Flat_Gaussian_Cubic 0x0000c000 +#define HC_HTXnFLSs_Nearest 0x00000000 +#define HC_HTXnFLSs_Linear 0x00000400 +#define HC_HTXnFLSs_NonLinear 0x00000800 +#define HC_HTXnFLSs_Flat_Gaussian_Cubic 0x00001800 +#define HC_HTXnFLTe_Nearest 0x00000000 +#define HC_HTXnFLTe_Linear 0x00000080 +#define HC_HTXnFLTe_NonLinear 0x00000100 +#define HC_HTXnFLTe_Sharp 0x00000180 +#define HC_HTXnFLTe_Flat_Gaussian_Cubic 0x00000300 +#define HC_HTXnFLTs_Nearest 0x00000000 +#define HC_HTXnFLTs_Linear 0x00000010 +#define HC_HTXnFLTs_NonLinear 0x00000020 +#define HC_HTXnFLTs_Flat_Gaussian_Cubic 0x00000060 +#define HC_HTXnFLDs_Tex0 0x00000000 +#define HC_HTXnFLDs_Nearest 0x00000001 +#define HC_HTXnFLDs_Linear 0x00000002 +#define HC_HTXnFLDs_NonLinear 0x00000003 +#define HC_HTXnFLDs_Dither 0x00000004 +#define HC_HTXnFLDs_ConstLOD 0x00000005 +#define HC_HTXnFLDs_Ani 0x00000006 +#define HC_HTXnFLDs_AniDither 0x00000007 +/* HC_SubA_HTXnMPMD 0x0079 + */ +#define HC_HTXnMPMD_SMASK 0x00070000 +#define HC_HTXnMPMD_TMASK 0x00380000 +#define HC_HTXnLODDTf_MASK 0x00000007 +#define HC_HTXnXY2ST_MASK 0x00000008 +#define HC_HTXnMPMD_Tsingle 0x00000000 +#define HC_HTXnMPMD_Tclamp 0x00080000 +#define HC_HTXnMPMD_Trepeat 0x00100000 +#define HC_HTXnMPMD_Tmirror 0x00180000 +#define HC_HTXnMPMD_Twrap 0x00200000 +#define HC_HTXnMPMD_Ssingle 0x00000000 +#define HC_HTXnMPMD_Sclamp 0x00010000 +#define HC_HTXnMPMD_Srepeat 0x00020000 +#define HC_HTXnMPMD_Smirror 0x00030000 +#define HC_HTXnMPMD_Swrap 0x00040000 +/* HC_SubA_HTXnCLODu 0x007a + */ +#define HC_HTXnCLODu_MASK 0x000ffc00 +#define HC_HTXnCLODd_MASK 0x000003ff +#define HC_HTXnCLODu_SHIFT 10 +/* HC_SubA_HTXnFM 0x007b + */ +#define HC_HTXnFM_MASK 0x00ff0000 +#define HC_HTXnLoc_MASK 0x00000003 +#define HC_HTXnFM_INDEX 0x00000000 +#define HC_HTXnFM_Intensity 0x00080000 +#define HC_HTXnFM_Lum 0x00100000 +#define HC_HTXnFM_Alpha 0x00180000 +#define HC_HTXnFM_DX 0x00280000 +#define HC_HTXnFM_ARGB16 0x00880000 +#define HC_HTXnFM_ARGB32 0x00980000 +#define HC_HTXnFM_ABGR16 0x00a80000 +#define HC_HTXnFM_ABGR32 0x00b80000 +#define HC_HTXnFM_RGBA16 0x00c80000 +#define HC_HTXnFM_RGBA32 0x00d80000 +#define HC_HTXnFM_BGRA16 0x00e80000 +#define HC_HTXnFM_BGRA32 0x00f80000 +#define HC_HTXnFM_BUMPMAP 0x00380000 +#define HC_HTXnFM_Index1 (HC_HTXnFM_INDEX | 0x00000000) +#define HC_HTXnFM_Index2 (HC_HTXnFM_INDEX | 0x00010000) +#define HC_HTXnFM_Index4 (HC_HTXnFM_INDEX | 0x00020000) +#define HC_HTXnFM_Index8 (HC_HTXnFM_INDEX | 0x00030000) +#define HC_HTXnFM_T1 (HC_HTXnFM_Intensity | 0x00000000) +#define HC_HTXnFM_T2 (HC_HTXnFM_Intensity | 0x00010000) +#define HC_HTXnFM_T4 (HC_HTXnFM_Intensity | 0x00020000) +#define HC_HTXnFM_T8 (HC_HTXnFM_Intensity | 0x00030000) +#define HC_HTXnFM_L1 (HC_HTXnFM_Lum | 0x00000000) +#define HC_HTXnFM_L2 (HC_HTXnFM_Lum | 0x00010000) +#define HC_HTXnFM_L4 (HC_HTXnFM_Lum | 0x00020000) +#define HC_HTXnFM_L8 (HC_HTXnFM_Lum | 0x00030000) +#define HC_HTXnFM_AL44 (HC_HTXnFM_Lum | 0x00040000) +#define HC_HTXnFM_AL88 (HC_HTXnFM_Lum | 0x00050000) +#define HC_HTXnFM_A1 (HC_HTXnFM_Alpha | 0x00000000) +#define HC_HTXnFM_A2 (HC_HTXnFM_Alpha | 0x00010000) +#define HC_HTXnFM_A4 (HC_HTXnFM_Alpha | 0x00020000) +#define HC_HTXnFM_A8 (HC_HTXnFM_Alpha | 0x00030000) +#define HC_HTXnFM_DX1 (HC_HTXnFM_DX | 0x00010000) +#define HC_HTXnFM_DX23 (HC_HTXnFM_DX | 0x00020000) +#define HC_HTXnFM_DX45 (HC_HTXnFM_DX | 0x00030000) +#define HC_HTXnFM_RGB555 (HC_HTXnFM_ARGB16 | 0x00000000) +#define HC_HTXnFM_RGB565 (HC_HTXnFM_ARGB16 | 0x00010000) +#define HC_HTXnFM_ARGB1555 (HC_HTXnFM_ARGB16 | 0x00020000) +#define HC_HTXnFM_ARGB4444 (HC_HTXnFM_ARGB16 | 0x00030000) +#define HC_HTXnFM_ARGB0888 (HC_HTXnFM_ARGB32 | 0x00000000) +#define HC_HTXnFM_ARGB8888 (HC_HTXnFM_ARGB32 | 0x00010000) +#define HC_HTXnFM_BGR555 (HC_HTXnFM_ABGR16 | 0x00000000) +#define HC_HTXnFM_BGR565 (HC_HTXnFM_ABGR16 | 0x00010000) +#define HC_HTXnFM_ABGR1555 (HC_HTXnFM_ABGR16 | 0x00020000) +#define HC_HTXnFM_ABGR4444 (HC_HTXnFM_ABGR16 | 0x00030000) +#define HC_HTXnFM_ABGR0888 (HC_HTXnFM_ABGR32 | 0x00000000) +#define HC_HTXnFM_ABGR8888 (HC_HTXnFM_ABGR32 | 0x00010000) +#define HC_HTXnFM_RGBA5550 (HC_HTXnFM_RGBA16 | 0x00000000) +#define HC_HTXnFM_RGBA5551 (HC_HTXnFM_RGBA16 | 0x00020000) +#define HC_HTXnFM_RGBA4444 (HC_HTXnFM_RGBA16 | 0x00030000) +#define HC_HTXnFM_RGBA8880 (HC_HTXnFM_RGBA32 | 0x00000000) +#define HC_HTXnFM_RGBA8888 (HC_HTXnFM_RGBA32 | 0x00010000) +#define HC_HTXnFM_BGRA5550 (HC_HTXnFM_BGRA16 | 0x00000000) +#define HC_HTXnFM_BGRA5551 (HC_HTXnFM_BGRA16 | 0x00020000) +#define HC_HTXnFM_BGRA4444 (HC_HTXnFM_BGRA16 | 0x00030000) +#define HC_HTXnFM_BGRA8880 (HC_HTXnFM_BGRA32 | 0x00000000) +#define HC_HTXnFM_BGRA8888 (HC_HTXnFM_BGRA32 | 0x00010000) +#define HC_HTXnFM_VU88 (HC_HTXnFM_BUMPMAP | 0x00000000) +#define HC_HTXnFM_LVU655 (HC_HTXnFM_BUMPMAP | 0x00010000) +#define HC_HTXnFM_LVU888 (HC_HTXnFM_BUMPMAP | 0x00020000) +#define HC_HTXnLoc_Local 0x00000000 +#define HC_HTXnLoc_Sys 0x00000002 +#define HC_HTXnLoc_AGP 0x00000003 +/* HC_SubA_HTXnTRAH 0x007f + */ +#define HC_HTXnTRAH_MASK 0x00ff0000 +#define HC_HTXnTRAL_MASK 0x0000ff00 +#define HC_HTXnTBA_MASK 0x000000ff +#define HC_HTXnTRAH_SHIFT 16 +#define HC_HTXnTRAL_SHIFT 8 +/* HC_SubA_HTXnTBLCsat 0x0080 + *-- Define the input texture. + */ +#define HC_XTC_TOPC 0x00000000 +#define HC_XTC_InvTOPC 0x00000010 +#define HC_XTC_TOPCp5 0x00000020 +#define HC_XTC_Cbias 0x00000000 +#define HC_XTC_InvCbias 0x00000010 +#define HC_XTC_0 0x00000000 +#define HC_XTC_Dif 0x00000001 +#define HC_XTC_Spec 0x00000002 +#define HC_XTC_Tex 0x00000003 +#define HC_XTC_Cur 0x00000004 +#define HC_XTC_Adif 0x00000005 +#define HC_XTC_Fog 0x00000006 +#define HC_XTC_Atex 0x00000007 +#define HC_XTC_Acur 0x00000008 +#define HC_XTC_HTXnTBLRC 0x00000009 +#define HC_XTC_Ctexnext 0x0000000a +/*-- + */ +#define HC_HTXnTBLCsat_MASK 0x00800000 +#define HC_HTXnTBLCa_MASK 0x000fc000 +#define HC_HTXnTBLCb_MASK 0x00001f80 +#define HC_HTXnTBLCc_MASK 0x0000003f +#define HC_HTXnTBLCa_TOPC (HC_XTC_TOPC << 14) +#define HC_HTXnTBLCa_InvTOPC (HC_XTC_InvTOPC << 14) +#define HC_HTXnTBLCa_TOPCp5 (HC_XTC_TOPCp5 << 14) +#define HC_HTXnTBLCa_0 (HC_XTC_0 << 14) +#define HC_HTXnTBLCa_Dif (HC_XTC_Dif << 14) +#define HC_HTXnTBLCa_Spec (HC_XTC_Spec << 14) +#define HC_HTXnTBLCa_Tex (HC_XTC_Tex << 14) +#define HC_HTXnTBLCa_Cur (HC_XTC_Cur << 14) +#define HC_HTXnTBLCa_Adif (HC_XTC_Adif << 14) +#define HC_HTXnTBLCa_Fog (HC_XTC_Fog << 14) +#define HC_HTXnTBLCa_Atex (HC_XTC_Atex << 14) +#define HC_HTXnTBLCa_Acur (HC_XTC_Acur << 14) +#define HC_HTXnTBLCa_HTXnTBLRC (HC_XTC_HTXnTBLRC << 14) +#define HC_HTXnTBLCa_Ctexnext (HC_XTC_Ctexnext << 14) +#define HC_HTXnTBLCb_TOPC (HC_XTC_TOPC << 7) +#define HC_HTXnTBLCb_InvTOPC (HC_XTC_InvTOPC << 7) +#define HC_HTXnTBLCb_TOPCp5 (HC_XTC_TOPCp5 << 7) +#define HC_HTXnTBLCb_0 (HC_XTC_0 << 7) +#define HC_HTXnTBLCb_Dif (HC_XTC_Dif << 7) +#define HC_HTXnTBLCb_Spec (HC_XTC_Spec << 7) +#define HC_HTXnTBLCb_Tex (HC_XTC_Tex << 7) +#define HC_HTXnTBLCb_Cur (HC_XTC_Cur << 7) +#define HC_HTXnTBLCb_Adif (HC_XTC_Adif << 7) +#define HC_HTXnTBLCb_Fog (HC_XTC_Fog << 7) +#define HC_HTXnTBLCb_Atex (HC_XTC_Atex << 7) +#define HC_HTXnTBLCb_Acur (HC_XTC_Acur << 7) +#define HC_HTXnTBLCb_HTXnTBLRC (HC_XTC_HTXnTBLRC << 7) +#define HC_HTXnTBLCb_Ctexnext (HC_XTC_Ctexnext << 7) +#define HC_HTXnTBLCc_TOPC (HC_XTC_TOPC << 0) +#define HC_HTXnTBLCc_InvTOPC (HC_XTC_InvTOPC << 0) +#define HC_HTXnTBLCc_TOPCp5 (HC_XTC_TOPCp5 << 0) +#define HC_HTXnTBLCc_0 (HC_XTC_0 << 0) +#define HC_HTXnTBLCc_Dif (HC_XTC_Dif << 0) +#define HC_HTXnTBLCc_Spec (HC_XTC_Spec << 0) +#define HC_HTXnTBLCc_Tex (HC_XTC_Tex << 0) +#define HC_HTXnTBLCc_Cur (HC_XTC_Cur << 0) +#define HC_HTXnTBLCc_Adif (HC_XTC_Adif << 0) +#define HC_HTXnTBLCc_Fog (HC_XTC_Fog << 0) +#define HC_HTXnTBLCc_Atex (HC_XTC_Atex << 0) +#define HC_HTXnTBLCc_Acur (HC_XTC_Acur << 0) +#define HC_HTXnTBLCc_HTXnTBLRC (HC_XTC_HTXnTBLRC << 0) +#define HC_HTXnTBLCc_Ctexnext (HC_XTC_Ctexnext << 0) +/* HC_SubA_HTXnTBLCop 0x0081 + */ +#define HC_HTXnTBLdot_MASK 0x00c00000 +#define HC_HTXnTBLCop_MASK 0x00380000 +#define HC_HTXnTBLCbias_MASK 0x0007c000 +#define HC_HTXnTBLCshift_MASK 0x00001800 +#define HC_HTXnTBLAop_MASK 0x00000380 +#define HC_HTXnTBLAbias_MASK 0x00000078 +#define HC_HTXnTBLAshift_MASK 0x00000003 +#define HC_HTXnTBLCop_Add 0x00000000 +#define HC_HTXnTBLCop_Sub 0x00080000 +#define HC_HTXnTBLCop_Min 0x00100000 +#define HC_HTXnTBLCop_Max 0x00180000 +#define HC_HTXnTBLCop_Mask 0x00200000 +#define HC_HTXnTBLCbias_Cbias (HC_XTC_Cbias << 14) +#define HC_HTXnTBLCbias_InvCbias (HC_XTC_InvCbias << 14) +#define HC_HTXnTBLCbias_0 (HC_XTC_0 << 14) +#define HC_HTXnTBLCbias_Dif (HC_XTC_Dif << 14) +#define HC_HTXnTBLCbias_Spec (HC_XTC_Spec << 14) +#define HC_HTXnTBLCbias_Tex (HC_XTC_Tex << 14) +#define HC_HTXnTBLCbias_Cur (HC_XTC_Cur << 14) +#define HC_HTXnTBLCbias_Adif (HC_XTC_Adif << 14) +#define HC_HTXnTBLCbias_Fog (HC_XTC_Fog << 14) +#define HC_HTXnTBLCbias_Atex (HC_XTC_Atex << 14) +#define HC_HTXnTBLCbias_Acur (HC_XTC_Acur << 14) +#define HC_HTXnTBLCbias_HTXnTBLRC (HC_XTC_HTXnTBLRC << 14) +#define HC_HTXnTBLCshift_1 0x00000000 +#define HC_HTXnTBLCshift_2 0x00000800 +#define HC_HTXnTBLCshift_No 0x00001000 +#define HC_HTXnTBLCshift_DotP 0x00001800 +/*=* John Sheng [2003.7.18] texture combine *=*/ +#define HC_HTXnTBLDOT3 0x00080000 +#define HC_HTXnTBLDOT4 0x000C0000 + +#define HC_HTXnTBLAop_Add 0x00000000 +#define HC_HTXnTBLAop_Sub 0x00000080 +#define HC_HTXnTBLAop_Min 0x00000100 +#define HC_HTXnTBLAop_Max 0x00000180 +#define HC_HTXnTBLAop_Mask 0x00000200 +#define HC_HTXnTBLAbias_Inv 0x00000040 +#define HC_HTXnTBLAbias_Adif 0x00000000 +#define HC_HTXnTBLAbias_Fog 0x00000008 +#define HC_HTXnTBLAbias_Acur 0x00000010 +#define HC_HTXnTBLAbias_HTXnTBLRAbias 0x00000018 +#define HC_HTXnTBLAbias_Atex 0x00000020 +#define HC_HTXnTBLAshift_1 0x00000000 +#define HC_HTXnTBLAshift_2 0x00000001 +#define HC_HTXnTBLAshift_No 0x00000002 +/* #define HC_HTXnTBLAshift_DotP 0x00000003 */ +/* HC_SubA_HTXnTBLMPFog 0x0082 + */ +#define HC_HTXnTBLMPfog_MASK 0x00e00000 +#define HC_HTXnTBLMPfog_0 0x00000000 +#define HC_HTXnTBLMPfog_Adif 0x00200000 +#define HC_HTXnTBLMPfog_Fog 0x00400000 +#define HC_HTXnTBLMPfog_Atex 0x00600000 +#define HC_HTXnTBLMPfog_Acur 0x00800000 +#define HC_HTXnTBLMPfog_GHTXnTBLRFog 0x00a00000 +/* HC_SubA_HTXnTBLAsat 0x0083 + *-- Define the texture alpha input. + */ +#define HC_XTA_TOPA 0x00000000 +#define HC_XTA_InvTOPA 0x00000008 +#define HC_XTA_TOPAp5 0x00000010 +#define HC_XTA_Adif 0x00000000 +#define HC_XTA_Fog 0x00000001 +#define HC_XTA_Acur 0x00000002 +#define HC_XTA_HTXnTBLRA 0x00000003 +#define HC_XTA_Atex 0x00000004 +#define HC_XTA_Atexnext 0x00000005 +/*-- + */ +#define HC_HTXnTBLAsat_MASK 0x00800000 +#define HC_HTXnTBLAMB_MASK 0x00700000 +#define HC_HTXnTBLAa_MASK 0x0007c000 +#define HC_HTXnTBLAb_MASK 0x00000f80 +#define HC_HTXnTBLAc_MASK 0x0000001f +#define HC_HTXnTBLAMB_SHIFT 20 +#define HC_HTXnTBLAa_TOPA (HC_XTA_TOPA << 14) +#define HC_HTXnTBLAa_InvTOPA (HC_XTA_InvTOPA << 14) +#define HC_HTXnTBLAa_TOPAp5 (HC_XTA_TOPAp5 << 14) +#define HC_HTXnTBLAa_Adif (HC_XTA_Adif << 14) +#define HC_HTXnTBLAa_Fog (HC_XTA_Fog << 14) +#define HC_HTXnTBLAa_Acur (HC_XTA_Acur << 14) +#define HC_HTXnTBLAa_HTXnTBLRA (HC_XTA_HTXnTBLRA << 14) +#define HC_HTXnTBLAa_Atex (HC_XTA_Atex << 14) +#define HC_HTXnTBLAa_Atexnext (HC_XTA_Atexnext << 14) +#define HC_HTXnTBLAb_TOPA (HC_XTA_TOPA << 7) +#define HC_HTXnTBLAb_InvTOPA (HC_XTA_InvTOPA << 7) +#define HC_HTXnTBLAb_TOPAp5 (HC_XTA_TOPAp5 << 7) +#define HC_HTXnTBLAb_Adif (HC_XTA_Adif << 7) +#define HC_HTXnTBLAb_Fog (HC_XTA_Fog << 7) +#define HC_HTXnTBLAb_Acur (HC_XTA_Acur << 7) +#define HC_HTXnTBLAb_HTXnTBLRA (HC_XTA_HTXnTBLRA << 7) +#define HC_HTXnTBLAb_Atex (HC_XTA_Atex << 7) +#define HC_HTXnTBLAb_Atexnext (HC_XTA_Atexnext << 7) +#define HC_HTXnTBLAc_TOPA (HC_XTA_TOPA << 0) +#define HC_HTXnTBLAc_InvTOPA (HC_XTA_InvTOPA << 0) +#define HC_HTXnTBLAc_TOPAp5 (HC_XTA_TOPAp5 << 0) +#define HC_HTXnTBLAc_Adif (HC_XTA_Adif << 0) +#define HC_HTXnTBLAc_Fog (HC_XTA_Fog << 0) +#define HC_HTXnTBLAc_Acur (HC_XTA_Acur << 0) +#define HC_HTXnTBLAc_HTXnTBLRA (HC_XTA_HTXnTBLRA << 0) +#define HC_HTXnTBLAc_Atex (HC_XTA_Atex << 0) +#define HC_HTXnTBLAc_Atexnext (HC_XTA_Atexnext << 0) +/* HC_SubA_HTXnTBLRAa 0x0089 + */ +#define HC_HTXnTBLRAa_MASK 0x00ff0000 +#define HC_HTXnTBLRAb_MASK 0x0000ff00 +#define HC_HTXnTBLRAc_MASK 0x000000ff +#define HC_HTXnTBLRAa_SHIFT 16 +#define HC_HTXnTBLRAb_SHIFT 8 +#define HC_HTXnTBLRAc_SHIFT 0 +/* HC_SubA_HTXnTBLRFog 0x008a + */ +#define HC_HTXnTBLRFog_MASK 0x0000ff00 +#define HC_HTXnTBLRAbias_MASK 0x000000ff +#define HC_HTXnTBLRFog_SHIFT 8 +#define HC_HTXnTBLRAbias_SHIFT 0 +/* HC_SubA_HTXnLScale 0x0094 + */ +#define HC_HTXnLScale_MASK 0x0007fc00 +#define HC_HTXnLOff_MASK 0x000001ff +#define HC_HTXnLScale_SHIFT 10 +/* HC_SubA_HTXSMD 0x0000 + */ +#define HC_HTXSMD_MASK 0x00000080 +#define HC_HTXTMD_MASK 0x00000040 +#define HC_HTXNum_MASK 0x00000038 +#define HC_HTXTRMD_MASK 0x00000006 +#define HC_HTXCHCLR_MASK 0x00000001 +#define HC_HTXNum_SHIFT 3 + +/* Texture Palette n + */ +#define HC_SubType_TexPalette0 0x00000000 +#define HC_SubType_TexPalette1 0x00000001 +#define HC_SubType_FogTable 0x00000010 +#define HC_SubType_Stipple 0x00000014 +/* HC_SubA_TexPalette0 0x0000 + */ +#define HC_HTPnA_MASK 0xff000000 +#define HC_HTPnR_MASK 0x00ff0000 +#define HC_HTPnG_MASK 0x0000ff00 +#define HC_HTPnB_MASK 0x000000ff +/* HC_SubA_FogTable 0x0010 + */ +#define HC_HFPn3_MASK 0xff000000 +#define HC_HFPn2_MASK 0x00ff0000 +#define HC_HFPn1_MASK 0x0000ff00 +#define HC_HFPn_MASK 0x000000ff +#define HC_HFPn3_SHIFT 24 +#define HC_HFPn2_SHIFT 16 +#define HC_HFPn1_SHIFT 8 + +/* Auto Testing & Security + */ +#define HC_SubA_HenFIFOAT 0x0000 +#define HC_SubA_HFBDrawFirst 0x0004 +#define HC_SubA_HFBBasL 0x0005 +#define HC_SubA_HFBDst 0x0006 +/* HC_SubA_HenFIFOAT 0x0000 + */ +#define HC_HenFIFOAT_MASK 0x00000020 +#define HC_HenGEMILock_MASK 0x00000010 +#define HC_HenFBASwap_MASK 0x00000008 +#define HC_HenOT_MASK 0x00000004 +#define HC_HenCMDQ_MASK 0x00000002 +#define HC_HenTXCTSU_MASK 0x00000001 +/* HC_SubA_HFBDrawFirst 0x0004 + */ +#define HC_HFBDrawFirst_MASK 0x00000800 +#define HC_HFBQueue_MASK 0x00000400 +#define HC_HFBLock_MASK 0x00000200 +#define HC_HEOF_MASK 0x00000100 +#define HC_HFBBasH_MASK 0x000000ff + +/* GEMI Setting + */ +#define HC_SubA_HTArbRCM 0x0008 +#define HC_SubA_HTArbRZ 0x000a +#define HC_SubA_HTArbWZ 0x000b +#define HC_SubA_HTArbRTX 0x000c +#define HC_SubA_HTArbRCW 0x000d +#define HC_SubA_HTArbE2 0x000e +#define HC_SubA_HArbRQCM 0x0010 +#define HC_SubA_HArbWQCM 0x0011 +#define HC_SubA_HGEMITout 0x0020 +#define HC_SubA_HFthRTXD 0x0040 +#define HC_SubA_HFthRTXA 0x0044 +#define HC_SubA_HCMDQstL 0x0050 +#define HC_SubA_HCMDQendL 0x0051 +#define HC_SubA_HCMDQLen 0x0052 +/* HC_SubA_HTArbRCM 0x0008 + */ +#define HC_HTArbRCM_MASK 0x0000ffff +/* HC_SubA_HTArbRZ 0x000a + */ +#define HC_HTArbRZ_MASK 0x0000ffff +/* HC_SubA_HTArbWZ 0x000b + */ +#define HC_HTArbWZ_MASK 0x0000ffff +/* HC_SubA_HTArbRTX 0x000c + */ +#define HC_HTArbRTX_MASK 0x0000ffff +/* HC_SubA_HTArbRCW 0x000d + */ +#define HC_HTArbRCW_MASK 0x0000ffff +/* HC_SubA_HTArbE2 0x000e + */ +#define HC_HTArbE2_MASK 0x0000ffff +/* HC_SubA_HArbRQCM 0x0010 + */ +#define HC_HTArbRQCM_MASK 0x0000ffff +/* HC_SubA_HArbWQCM 0x0011 + */ +#define HC_HArbWQCM_MASK 0x0000ffff +/* HC_SubA_HGEMITout 0x0020 + */ +#define HC_HGEMITout_MASK 0x000f0000 +#define HC_HNPArbZC_MASK 0x0000ffff +#define HC_HGEMITout_SHIFT 16 +/* HC_SubA_HFthRTXD 0x0040 + */ +#define HC_HFthRTXD_MASK 0x00ff0000 +#define HC_HFthRZD_MASK 0x0000ff00 +#define HC_HFthWZD_MASK 0x000000ff +#define HC_HFthRTXD_SHIFT 16 +#define HC_HFthRZD_SHIFT 8 +/* HC_SubA_HFthRTXA 0x0044 + */ +#define HC_HFthRTXA_MASK 0x000000ff + +/****************************************************************************** +** Define the Halcyon Internal register access constants. For simulator only. +******************************************************************************/ +#define HC_SIMA_HAGPBstL 0x0000 +#define HC_SIMA_HAGPBendL 0x0001 +#define HC_SIMA_HAGPCMNT 0x0002 +#define HC_SIMA_HAGPBpL 0x0003 +#define HC_SIMA_HAGPBpH 0x0004 +#define HC_SIMA_HClipTB 0x0005 +#define HC_SIMA_HClipLR 0x0006 +#define HC_SIMA_HFPClipTL 0x0007 +#define HC_SIMA_HFPClipBL 0x0008 +#define HC_SIMA_HFPClipLL 0x0009 +#define HC_SIMA_HFPClipRL 0x000a +#define HC_SIMA_HFPClipTBH 0x000b +#define HC_SIMA_HFPClipLRH 0x000c +#define HC_SIMA_HLP 0x000d +#define HC_SIMA_HLPRF 0x000e +#define HC_SIMA_HSolidCL 0x000f +#define HC_SIMA_HPixGC 0x0010 +#define HC_SIMA_HSPXYOS 0x0011 +#define HC_SIMA_HCmdA 0x0012 +#define HC_SIMA_HCmdB 0x0013 +#define HC_SIMA_HEnable 0x0014 +#define HC_SIMA_HZWBBasL 0x0015 +#define HC_SIMA_HZWBBasH 0x0016 +#define HC_SIMA_HZWBType 0x0017 +#define HC_SIMA_HZBiasL 0x0018 +#define HC_SIMA_HZWBend 0x0019 +#define HC_SIMA_HZWTMD 0x001a +#define HC_SIMA_HZWCDL 0x001b +#define HC_SIMA_HZWCTAGnum 0x001c +#define HC_SIMA_HZCYNum 0x001d +#define HC_SIMA_HZWCFire 0x001e +/* #define HC_SIMA_HSBBasL 0x001d */ +/* #define HC_SIMA_HSBBasH 0x001e */ +/* #define HC_SIMA_HSBFM 0x001f */ +#define HC_SIMA_HSTREF 0x0020 +#define HC_SIMA_HSTMD 0x0021 +#define HC_SIMA_HABBasL 0x0022 +#define HC_SIMA_HABBasH 0x0023 +#define HC_SIMA_HABFM 0x0024 +#define HC_SIMA_HATMD 0x0025 +#define HC_SIMA_HABLCsat 0x0026 +#define HC_SIMA_HABLCop 0x0027 +#define HC_SIMA_HABLAsat 0x0028 +#define HC_SIMA_HABLAop 0x0029 +#define HC_SIMA_HABLRCa 0x002a +#define HC_SIMA_HABLRFCa 0x002b +#define HC_SIMA_HABLRCbias 0x002c +#define HC_SIMA_HABLRCb 0x002d +#define HC_SIMA_HABLRFCb 0x002e +#define HC_SIMA_HABLRAa 0x002f +#define HC_SIMA_HABLRAb 0x0030 +#define HC_SIMA_HDBBasL 0x0031 +#define HC_SIMA_HDBBasH 0x0032 +#define HC_SIMA_HDBFM 0x0033 +#define HC_SIMA_HFBBMSKL 0x0034 +#define HC_SIMA_HROP 0x0035 +#define HC_SIMA_HFogLF 0x0036 +#define HC_SIMA_HFogCL 0x0037 +#define HC_SIMA_HFogCH 0x0038 +#define HC_SIMA_HFogStL 0x0039 +#define HC_SIMA_HFogStH 0x003a +#define HC_SIMA_HFogOOdMF 0x003b +#define HC_SIMA_HFogOOdEF 0x003c +#define HC_SIMA_HFogEndL 0x003d +#define HC_SIMA_HFogDenst 0x003e +/*---- start of texture 0 setting ---- + */ +#define HC_SIMA_HTX0L0BasL 0x0040 +#define HC_SIMA_HTX0L1BasL 0x0041 +#define HC_SIMA_HTX0L2BasL 0x0042 +#define HC_SIMA_HTX0L3BasL 0x0043 +#define HC_SIMA_HTX0L4BasL 0x0044 +#define HC_SIMA_HTX0L5BasL 0x0045 +#define HC_SIMA_HTX0L6BasL 0x0046 +#define HC_SIMA_HTX0L7BasL 0x0047 +#define HC_SIMA_HTX0L8BasL 0x0048 +#define HC_SIMA_HTX0L9BasL 0x0049 +#define HC_SIMA_HTX0LaBasL 0x004a +#define HC_SIMA_HTX0LbBasL 0x004b +#define HC_SIMA_HTX0LcBasL 0x004c +#define HC_SIMA_HTX0LdBasL 0x004d +#define HC_SIMA_HTX0LeBasL 0x004e +#define HC_SIMA_HTX0LfBasL 0x004f +#define HC_SIMA_HTX0L10BasL 0x0050 +#define HC_SIMA_HTX0L11BasL 0x0051 +#define HC_SIMA_HTX0L012BasH 0x0052 +#define HC_SIMA_HTX0L345BasH 0x0053 +#define HC_SIMA_HTX0L678BasH 0x0054 +#define HC_SIMA_HTX0L9abBasH 0x0055 +#define HC_SIMA_HTX0LcdeBasH 0x0056 +#define HC_SIMA_HTX0Lf1011BasH 0x0057 +#define HC_SIMA_HTX0L0Pit 0x0058 +#define HC_SIMA_HTX0L1Pit 0x0059 +#define HC_SIMA_HTX0L2Pit 0x005a +#define HC_SIMA_HTX0L3Pit 0x005b +#define HC_SIMA_HTX0L4Pit 0x005c +#define HC_SIMA_HTX0L5Pit 0x005d +#define HC_SIMA_HTX0L6Pit 0x005e +#define HC_SIMA_HTX0L7Pit 0x005f +#define HC_SIMA_HTX0L8Pit 0x0060 +#define HC_SIMA_HTX0L9Pit 0x0061 +#define HC_SIMA_HTX0LaPit 0x0062 +#define HC_SIMA_HTX0LbPit 0x0063 +#define HC_SIMA_HTX0LcPit 0x0064 +#define HC_SIMA_HTX0LdPit 0x0065 +#define HC_SIMA_HTX0LePit 0x0066 +#define HC_SIMA_HTX0LfPit 0x0067 +#define HC_SIMA_HTX0L10Pit 0x0068 +#define HC_SIMA_HTX0L11Pit 0x0069 +#define HC_SIMA_HTX0L0_5WE 0x006a +#define HC_SIMA_HTX0L6_bWE 0x006b +#define HC_SIMA_HTX0Lc_11WE 0x006c +#define HC_SIMA_HTX0L0_5HE 0x006d +#define HC_SIMA_HTX0L6_bHE 0x006e +#define HC_SIMA_HTX0Lc_11HE 0x006f +#define HC_SIMA_HTX0L0OS 0x0070 +#define HC_SIMA_HTX0TB 0x0071 +#define HC_SIMA_HTX0MPMD 0x0072 +#define HC_SIMA_HTX0CLODu 0x0073 +#define HC_SIMA_HTX0FM 0x0074 +#define HC_SIMA_HTX0TRCH 0x0075 +#define HC_SIMA_HTX0TRCL 0x0076 +#define HC_SIMA_HTX0TBC 0x0077 +#define HC_SIMA_HTX0TRAH 0x0078 +#define HC_SIMA_HTX0TBLCsat 0x0079 +#define HC_SIMA_HTX0TBLCop 0x007a +#define HC_SIMA_HTX0TBLMPfog 0x007b +#define HC_SIMA_HTX0TBLAsat 0x007c +#define HC_SIMA_... [truncated message content] |
From: Adam R. <ada...@ya...> - 2009-11-30 03:55:37
|
On Sat, 11/28/09, Luc Verhaegen <li...@sk...> wrote: > Adam, i wanted to ask you what board you have, but it is > clear from your > Xorg.0.log which board this is: Jetway J7F5 with the > philips TV decoder > and the Analog Devices HDMI controller. > > I have the exact board sitting here, and have used it to > bring up at > least the VGA display. I will soon add further support, i > am currently > writing the necessary infrastructure. Hello Luc, The board that I used before may be a bit quiriy. I have run the same experiments on the widely retailed VIA Epia-EX board (VIA c7 + cx700m) with the same results (video only on VGA, no DDC, Xvideo extension reports zero adapters and xrandr initially only offers 640x480 and 800x600). Here is an Xorg.0.log (with "-logverbose 7") from that, in case the information is useful. If you decide to turn your attention to cx700, this is probably a better Xorg.0.log to use for reference. Adam Richter |
From: Luc V. <li...@sk...> - 2009-11-29 04:05:02
|
On Sat, Nov 28, 2009 at 07:18:03PM -0800, Konstantin Svist wrote: This is for the infill G5, an in-car entertainment system based on the CX700. LVDS panel at 800x480, and at least a composite connector on the breakout cable at the back of the machine. Will be interesting to work the layout for this device once i get to CX700. Luc Verhaegen. |
From: Konstantin S. <fr...@gm...> - 2009-11-29 03:18:14
|
00:00.0 Host bridge [0600]: VIA Technologies, Inc. CX700/VX700 Host Bridge [1106:0324] (rev 03) Subsystem: VIA Technologies, Inc. CX700/VX700 Host Bridge [1106:0324] Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 8 Region 0: Memory at f0000000 (32-bit, prefetchable) [size=128M] Capabilities: [80] AGP version 3.5 Status: RQ=8 Iso- ArqSz=0 Cal=2 SBA+ ITACoh- GART64- HTrans- 64bit- FW+ AGP3+ Rate=x4,x8 Command: RQ=1 ArqSz=0 Cal=2 SBA+ AGP+ GART64- 64bit- FW- Rate=x8 Capabilities: [50] Power Management version 2 Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-) Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME- Kernel driver in use: agpgart-via 00:00.1 Host bridge [0600]: VIA Technologies, Inc. CX700/VX700 Host Bridge [1106:1324] Subsystem: VIA Technologies, Inc. CX700/VX700 Host Bridge [1106:1324] Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 0 00:00.2 Host bridge [0600]: VIA Technologies, Inc. CX700/VX700 Host Bridge [1106:2324] Subsystem: VIA Technologies, Inc. CX700/VX700 Host Bridge [1106:2324] Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 0 00:00.3 Host bridge [0600]: VIA Technologies, Inc. CX700/VX700 Host Bridge [1106:3324] Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 0 00:00.4 Host bridge [0600]: VIA Technologies, Inc. CX700/VX700 Host Bridge [1106:4324] Subsystem: VIA Technologies, Inc. CX700/VX700 Host Bridge [1106:4324] Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 0 00:00.7 Host bridge [0600]: VIA Technologies, Inc. CX700/VX700 Host Bridge [1106:7324] Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 0 00:01.0 PCI bridge [0604]: VIA Technologies, Inc. VT8237/VX700 PCI Bridge [1106:b198] (prog-if 00 [Normal decode]) Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx- Status: Cap+ 66MHz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 0 Bus: primary=00, secondary=01, subordinate=01, sec-latency=0 I/O behind bridge: 0000f000-00000fff Memory behind bridge: fc900000-fe9fffff Prefetchable memory behind bridge: aff00000-efefffff Secondary status: 66MHz+ FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort+ <SERR+ <PERR+ BridgeCtl: Parity+ SERR+ NoISA- VGA+ MAbort- >Reset- FastB2B- PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn- Capabilities: [70] Power Management version 2 Flags: PMEClk- DSI- D1+ D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-) Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME- 00:0f.0 IDE interface [0101]: VIA Technologies, Inc. CX700/VX700 RAID Controller [1106:0581] (prog-if 8a [Master SecP PriP]) Subsystem: VIA Technologies, Inc. Wrong IDE ID [1106:0581] Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 32 Region 0: [virtual] Memory at 000001f0 (32-bit, non-prefetchable) [size=8] Region 1: [virtual] Memory at 000003f0 (type 3, non-prefetchable) [size=1] Region 2: [virtual] Memory at 00000170 (32-bit, non-prefetchable) [size=8] Region 3: [virtual] Memory at 00000370 (type 3, non-prefetchable) [size=1] Region 4: I/O ports at fc00 [size=16] Capabilities: [b0] Power Management version 2 Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-) Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME- Kernel driver in use: pata_via Kernel modules: pata_via 00:10.0 USB Controller [0c03]: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller [1106:3038] (rev 90) (prog-if 00 [UHCI]) Subsystem: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller [1106:3038] Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 64, Cache Line Size: 32 bytes Interrupt: pin A routed to IRQ 20 Region 4: I/O ports at dc00 [size=32] Capabilities: [80] Power Management version 2 Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=375mA PME(D0+,D1+,D2+,D3hot+,D3cold+) Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME- Kernel driver in use: uhci_hcd 00:10.1 USB Controller [0c03]: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller [1106:3038] (rev 90) (prog-if 00 [UHCI]) Subsystem: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller [1106:3038] Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 64, Cache Line Size: 32 bytes Interrupt: pin B routed to IRQ 22 Region 4: I/O ports at d880 [size=32] Capabilities: [80] Power Management version 2 Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=375mA PME(D0+,D1+,D2+,D3hot+,D3cold+) Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME- Kernel driver in use: uhci_hcd 00:10.2 USB Controller [0c03]: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller [1106:3038] (rev 90) (prog-if 00 [UHCI]) Subsystem: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller [1106:3038] Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 64, Cache Line Size: 32 bytes Interrupt: pin C routed to IRQ 21 Region 4: I/O ports at d800 [size=32] Capabilities: [80] Power Management version 2 Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=375mA PME(D0+,D1+,D2+,D3hot+,D3cold+) Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME- Kernel driver in use: uhci_hcd 00:10.4 USB Controller [0c03]: VIA Technologies, Inc. USB 2.0 [1106:3104] (rev 90) (prog-if 20 [EHCI]) Subsystem: VIA Technologies, Inc. USB 2.0 [1106:3104] Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 64, Cache Line Size: 64 bytes Interrupt: pin D routed to IRQ 23 Region 0: Memory at febffc00 (32-bit, non-prefetchable) [size=256] Capabilities: [80] Power Management version 2 Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=375mA PME(D0+,D1+,D2+,D3hot+,D3cold+) Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME+ Capabilities: [88] Debug port: BAR=1 offset=00a0 Kernel driver in use: ehci_hcd 00:11.0 ISA bridge [0601]: VIA Technologies, Inc. CX700/VX700 PCI to ISA Bridge [1106:8324] Subsystem: VIA Technologies, Inc. CX700/VX700 PCI to ISA Bridge [1106:8324] Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Capabilities: [c0] Power Management version 2 Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-) Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME- Kernel modules: i2c-viapro 00:11.7 Host bridge [0600]: VIA Technologies, Inc. CX700/VX700 Internal Module Bus [1106:324e] Subsystem: VIA Technologies, Inc. CX700/VX700 Internal Module Bus [1106:324e] Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 128 Capabilities: [58] HyperTransport: Interrupt Discovery and Configuration 00:13.0 PCI bridge [0604]: VIA Technologies, Inc. CX700/VX700 Host Bridge [1106:324b] (prog-if 00 [Normal decode]) Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx- Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort+ >SERR- <PERR- INTx- Latency: 0 Bus: primary=00, secondary=02, subordinate=02, sec-latency=0 I/O behind bridge: 0000f000-00000fff Memory behind bridge: fea00000-feafffff Prefetchable memory behind bridge: 00000000fff00000-00000000000fffff Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- <SERR- <PERR- BridgeCtl: Parity+ SERR+ NoISA- VGA- MAbort- >Reset- FastB2B- PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn- 00:13.1 PCI bridge [0604]: VIA Technologies, Inc. CX700/VX700 PCI to PCI Bridge [1106:324a] (prog-if 01 [Subtractive decode]) Control: I/O- Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx- Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort+ >SERR- <PERR- INTx- Latency: 0 Bus: primary=00, secondary=03, subordinate=03, sec-latency=0 I/O behind bridge: 0000f000-00000fff Memory behind bridge: fff00000-000fffff Prefetchable memory behind bridge: 00000000fff00000-00000000000fffff Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- <SERR- <PERR- BridgeCtl: Parity+ SERR+ NoISA- VGA- MAbort- >Reset- FastB2B- PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn- 01:00.0 VGA compatible controller [0300]: VIA Technologies, Inc. CX700/VX700 [S3 UniChrome Pro] [1106:3157] (rev 03) (prog-if 00 [VGA controller]) Subsystem: Device [0908:1975] Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap+ 66MHz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 64 (500ns min) Interrupt: pin A routed to IRQ 16 Region 0: Memory at c0000000 (32-bit, prefetchable) [size=512M] Region 1: Memory at fd000000 (32-bit, non-prefetchable) [size=16M] Expansion ROM at fe9f0000 [disabled] [size=64K] Capabilities: [60] Power Management version 2 Flags: PMEClk- DSI+ D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-) Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME- Capabilities: [70] AGP version 3.0 Status: RQ=256 Iso- ArqSz=0 Cal=7 SBA+ ITACoh- GART64- HTrans- 64bit- FW- AGP3+ Rate=x4,x8 Command: RQ=8 ArqSz=0 Cal=0 SBA+ AGP+ GART64- 64bit- FW- Rate=x8 02:01.0 Audio device [0403]: VIA Technologies, Inc. VT1708/A [Azalia HDAC] (VIA High Definition Audio Controller) [1106:3288] (rev 10) Subsystem: VIA Technologies, Inc. VT1708/A [Azalia HDAC] (VIA High Definition Audio Controller) [1106:3288] Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 0, Cache Line Size: 32 bytes Interrupt: pin A routed to IRQ 17 Region 0: Memory at feafc000 (64-bit, non-prefetchable) [size=16K] Capabilities: [50] Power Management version 2 Flags: PMEClk- DSI- D1- D2- AuxCurrent=55mA PME(D0+,D1-,D2-,D3hot+,D3cold+) Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME- Capabilities: [60] MSI: Enable- Count=1/1 Maskable- 64bit+ Address: 0000000000000000 Data: 0000 Capabilities: [70] Express (v1) Root Complex Integrated Endpoint, MSI 00 DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <64ns, L1 <1us ExtTag- RBE- FLReset- DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported- RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop- MaxPayload 128 bytes, MaxReadReq 128 bytes DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend+ LnkCap: Port #0, Speed unknown, Width x0, ASPM unknown, Latency L0 <64ns, L1 <1us ClockPM- Surprise- LLActRep- BwNot- LnkCtl: ASPM Disabled; Disabled- Retrain- CommClk- ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt- LnkSta: Speed unknown, Width x0, TrErr- Train- SlotClk- DLActive- BWMgmt- ABWMgmt- Kernel driver in use: HDA Intel Kernel modules: snd-hda-intel |
From: Luc V. <li...@sk...> - 2009-11-28 15:33:02
|
On Fri, Nov 27, 2009 at 10:05:22PM -0800, Adam Richter wrote: > Hello Luc, > > I am the person who posted on phoronix a few hours ago to say thanks for the XvMC development and mentioned that I was having trouble running your unichrome driver. > > On closer inspection, I see that when I run your driver on cx700, it does produce video, but only on the VGA port, not DVI, and at 1600x1200 rather than 1920x1200. xrandr seems unaware of any output device other than "default" (so I don't see how I could turn on DVI from xrandr) and it does not list the 1920x1200 video mode (perhaps I could tell it to use a custom video mode, but it should still be offering 1920x1200). In comparison, VIA's official driver and, I think, openchrome, both can drive the two screens as separate regions of a single frame buffer. > > Perhaps that problem is that kubuntu is using a xorg-server-1.6.x and rather than 1.7.x, which I may try tomorrow (I've built your driver against 1.7.x before). I will also try to give your modified xine/xxmc a try tomorrow. > > However, in the meantime, there are some messages in my Xorg.0.log that still merit a posting to unichrome-devel: > > 1. No mention of DDC. Most drivers that I'm used to dump the DDC information to Xorg.0.log if they have successfully received it. > 2. Valid video modes like 1920x1200 are being discarded, probably related to #1. > 3. Various complaints about the PCI ID that look like: > 3a. Driver doesn't like PCI vendor == PCI subvendor, PCI device == PCI subdevice ("Manufacturer plainly copied PCI ids to..." in Xorg.0.log). > 3b. If I disable the test in via_id.c that produced that the complaint in 3a, I get a new complaint due to cx700 device ID (0x3157) not being in ViaCardIds[] in via_id.c ("Unknown Card-Ids (1106|3157)" in Xorg.0.log2). > However I have not looked at the code enough to know if it is important that the ID the search through ViaCardIds[] must succeeed or if that array is basically just a quirks list. > > I have attached the following three files: > Xorg.0.log - result of running "X -noreset -ac" with your driver on kubuntu-9.10's Xorg-1.6.4-2ubuntu4. > Xorg.0.log2 - same, but with the test for PCI vendor/product == PCI subvendor/subproduct disabled. > Xorg.0.log3 - same as Xorog.0.log2 but with a line added to ViaCardIds[] for subvendor==0x1106, subproduct==0x3157 (still results in invalid video mode). > via_id.c.diff - A diff showing my changes to via_id.c that produced Xorg.0.log2 and Xorg.0.log3, for clarity. > > By the way, even when I add a line ViaCardIds[], xrandr still does not show 1920x1200 as a loaded video mode, and it only shows one output ("default") even though my system has both VGA and DVI. > > Thanks again for your quick response. I look forward to experimenting more with your driver. I hope this information is helpful for your development efforts. > > Adam Richter Adam, i wanted to ask you what board you have, but it is clear from your Xorg.0.log which board this is: Jetway J7F5 with the philips TV decoder and the Analog Devices HDMI controller. I have the exact board sitting here, and have used it to bring up at least the VGA display. I will soon add further support, i am currently writing the necessary infrastructure. Luc Verhaegen. |
From: Luc V. <li...@sk...> - 2009-11-28 12:39:25
|
On Fri, Nov 27, 2009 at 10:18:02PM -0800, Adam Richter wrote: > Hello Luc, > > On Friday, November 27, 2009, 10:05 PM, I wrote: > [...] > > On closer inspection, I see that when I run your driver on > > cx700, it does produce video, but only on the VGA port, not > > DVI, and at 1600x1200 rather than 1920x1200. xrandr > > seems unaware of any output device other than "default" (so > > I don't see how I could turn on DVI from xrandr) and it does > > not list the 1920x1200 video mode (perhaps I could tell it > > to use a custom video mode, but it should still be offering > > 1920x1200). In comparison, VIA's official driver and, > > I think, openchrome, both can drive the two screens as > > separate regions of a single frame buffer. > > For completeness, I should mention that when I run your driver > on cx700, I do not see any mention of XvMC in Xorg.0.log, > and xvinfo says: > > X-Video Extension version 2.2 > screen #0 > no adaptors present > > ...so I assume I have also failed to configure your XvMC support correctly. > > Adam Richter No, i just do not support CX700 yet beyond getting a basic mode on the VGA. But do not worry, i will soon expand support for it. And XvMC is still pretty far away as i still do not support Xv yet either.. Luc Verhaegen. |
From: Adam R. <ada...@ya...> - 2009-11-28 06:18:19
|
Hello Luc, On Friday, November 27, 2009, 10:05 PM, I wrote: [...] > On closer inspection, I see that when I run your driver on > cx700, it does produce video, but only on the VGA port, not > DVI, and at 1600x1200 rather than 1920x1200. xrandr > seems unaware of any output device other than "default" (so > I don't see how I could turn on DVI from xrandr) and it does > not list the 1920x1200 video mode (perhaps I could tell it > to use a custom video mode, but it should still be offering > 1920x1200). In comparison, VIA's official driver and, > I think, openchrome, both can drive the two screens as > separate regions of a single frame buffer. For completeness, I should mention that when I run your driver on cx700, I do not see any mention of XvMC in Xorg.0.log, and xvinfo says: X-Video Extension version 2.2 screen #0 no adaptors present ...so I assume I have also failed to configure your XvMC support correctly. Adam Richter |
From: Adam R. <ada...@ya...> - 2009-11-28 06:05:38
|
Hello Luc, I am the person who posted on phoronix a few hours ago to say thanks for the XvMC development and mentioned that I was having trouble running your unichrome driver. On closer inspection, I see that when I run your driver on cx700, it does produce video, but only on the VGA port, not DVI, and at 1600x1200 rather than 1920x1200. xrandr seems unaware of any output device other than "default" (so I don't see how I could turn on DVI from xrandr) and it does not list the 1920x1200 video mode (perhaps I could tell it to use a custom video mode, but it should still be offering 1920x1200). In comparison, VIA's official driver and, I think, openchrome, both can drive the two screens as separate regions of a single frame buffer. Perhaps that problem is that kubuntu is using a xorg-server-1.6.x and rather than 1.7.x, which I may try tomorrow (I've built your driver against 1.7.x before). I will also try to give your modified xine/xxmc a try tomorrow. However, in the meantime, there are some messages in my Xorg.0.log that still merit a posting to unichrome-devel: 1. No mention of DDC. Most drivers that I'm used to dump the DDC information to Xorg.0.log if they have successfully received it. 2. Valid video modes like 1920x1200 are being discarded, probably related to #1. 3. Various complaints about the PCI ID that look like: 3a. Driver doesn't like PCI vendor == PCI subvendor, PCI device == PCI subdevice ("Manufacturer plainly copied PCI ids to..." in Xorg.0.log). 3b. If I disable the test in via_id.c that produced that the complaint in 3a, I get a new complaint due to cx700 device ID (0x3157) not being in ViaCardIds[] in via_id.c ("Unknown Card-Ids (1106|3157)" in Xorg.0.log2). However I have not looked at the code enough to know if it is important that the ID the search through ViaCardIds[] must succeeed or if that array is basically just a quirks list. I have attached the following three files: Xorg.0.log - result of running "X -noreset -ac" with your driver on kubuntu-9.10's Xorg-1.6.4-2ubuntu4. Xorg.0.log2 - same, but with the test for PCI vendor/product == PCI subvendor/subproduct disabled. Xorg.0.log3 - same as Xorog.0.log2 but with a line added to ViaCardIds[] for subvendor==0x1106, subproduct==0x3157 (still results in invalid video mode). via_id.c.diff - A diff showing my changes to via_id.c that produced Xorg.0.log2 and Xorg.0.log3, for clarity. By the way, even when I add a line ViaCardIds[], xrandr still does not show 1920x1200 as a loaded video mode, and it only shows one output ("default") even though my system has both VGA and DVI. Thanks again for your quick response. I look forward to experimenting more with your driver. I hope this information is helpful for your development efforts. Adam Richter |
From: <li...@fr...> - 2009-11-17 15:14:07
|
Reporting from xf86-video-unichrome: Main unichrome.sf.net repository Please visit: http://cgit.freedesktop.org/~libv/xf86-video-unichrome Or get your own copy by using: git-clone git://anongit.freedesktop.org/~libv/xf86-video-unichrome The branch, master has been updated via cd12cce ID: VT3371: Belinea C.Book 150x. from 7f250dd Xv: Fix colourspace after resume. Summary of changes: src/via_id.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit cd12cce88ff886031c23c743569fba97eccace4e Author: Luc Verhaegen <li...@sk...> Date: Tue Nov 17 16:19:28 2009 +0100 ID: VT3371: Belinea C.Book 150x. Reported by Kanotix's Jörg Schirottke. cd12cce88ff886031c23c743569fba97eccace4e diff --git a/src/via_id.c b/src/via_id.c index 8c69883..eab3246 100644 --- a/src/via_id.c +++ b/src/via_id.c @@ -203,6 +203,7 @@ static struct ViaCardId ViaCardIds[] = { /* VT3371: P4M900, VN896, CN896 */ {"HP/Compaq Mininote (2133)", VT3371, 0x103C, 0x3030, TRUE }, {"Foxconn P4M9007MB", VT3371, 0x105B, 0x0C87, FALSE }, + {"Belinea C.Book 150x", VT3371, 0x1509, 0x1E30, TRUE }, /* aka VCM Alytes */ {"Fujitsu/Siemens Amilo Pro V3515", VT3371, 0x1734, 0x10CB, TRUE }, {"Fujitsu/Siemens Amilo Li 1705", VT3371, 0x1734, 0x10F7, TRUE }, /* VT1122: VX800 */ ----------------------------------------------------------------------- |
From: <li...@fr...> - 2009-11-11 16:28:00
|
Reporting from xf86-video-unichrome: Main unichrome.sf.net repository Please visit: http://cgit.freedesktop.org/~libv/xf86-video-unichrome Or get your own copy by using: git-clone git://anongit.freedesktop.org/~libv/xf86-video-unichrome The branch, master has been updated via 7f250dd Xv: Fix colourspace after resume. from f079865 Xv: Stopping clipping the viewport. Summary of changes: src/via_video.c | 30 ++++++++++++++++-------------- src/via_video.h | 2 ++ 2 files changed, 18 insertions(+), 14 deletions(-) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 7f250dd7e4174411b4b8c1b645b3e0b62c0183d3 Author: Luc Verhaegen <li...@sk...> Date: Wed Nov 11 17:33:37 2009 +0100 Xv: Fix colourspace after resume. Reported by LluÃs Batlle i Rossell. 7f250dd7e4174411b4b8c1b645b3e0b62c0183d3 diff --git a/src/via_video.c b/src/via_video.c index c754a1b..1933dd8 100644 --- a/src/via_video.c +++ b/src/via_video.c @@ -414,9 +414,9 @@ vPackFloat(float val, float hiLimit, float loLimit, float mult, int shift, * be added in the table above and, if needed, implemented in the model switch below. -- Thomas */ static void -viaCalculateVideoColor(VIAPtr pVia, CARD32 *col1, CARD32 *col2) +viaCalculateVideoColor(struct ViaXvPort *Port, CARD32 *col1, CARD32 *col2) { - struct ViaXvPort *Port = pVia->Swov->Port; + VIAPtr pVia = VIAPTR(xf86Screens[Port->scrnIndex]); float fA,fB1,fC1,fD,fB2,fC2,fB3,fC3; float fPI,fContrast,fSaturation,fHue,fBrightness; @@ -523,14 +523,15 @@ viaCalculateVideoColor(VIAPtr pVia, CARD32 *col1, CARD32 *col2) * */ static void -VIASetColorSpace(VIAPtr pVia) +VIASetColorSpace(struct ViaXvPort *Port) { + struct ViaSwov *Swov = VIAPTR(xf86Screens[Port->scrnIndex])->Swov; CARD32 col1,col2; - viaCalculateVideoColor(pVia, &col1, &col2); + viaCalculateVideoColor(Port, &col1, &col2); - pVia->Swov->Video->Video3ColorSpace1 = col1; - pVia->Swov->Video->Video3ColorSpace2 = col2; + Swov->Video->Video3ColorSpace1 = col1; + Swov->Video->Video3ColorSpace2 = col2; } /* @@ -868,7 +869,6 @@ ViaSwovAlphaSet(ScrnInfoPtr pScrn, INT32 value) static int viaSetPortAttribute(ScrnInfoPtr pScrn, Atom attribute, INT32 value, pointer data) { - VIAPtr pVia = VIAPTR(pScrn); struct ViaXvPort *Port = (struct ViaXvPort *) data; if (attribute == xvColorKey) { @@ -887,25 +887,25 @@ viaSetPortAttribute(ScrnInfoPtr pScrn, Atom attribute, INT32 value, pointer data return Success; } else if (attribute == xvBrightness) { Port->brightness = value; - VIASetColorSpace(pVia); + VIASetColorSpace(Port); return Success; } else if (attribute == xvContrast) { Port->contrast = value; - VIASetColorSpace(pVia); + VIASetColorSpace(Port); return Success; } else if (attribute == xvSaturation) { Port->saturation = value; - VIASetColorSpace(pVia); + VIASetColorSpace(Port); return Success; } else if (attribute == xvHue) { Port->hue = value; - VIASetColorSpace(pVia); + VIASetColorSpace(Port); return Success; } else if (attribute == xvOpacity) { if ((value < 0) || (value > 15)) return BadValue; - if (pVia->Swov->Active) + if (VIAPTR(pScrn)->Swov->Active) ViaSwovAlphaSet(pScrn, value); else Port->Opacity = value; @@ -1469,6 +1469,8 @@ ViaVideo3Init(struct ViaSwov *Swov) Swov->V3Shadow->Control = V3_COLORSPACE_SIGN | V3_YUV422 | V3_SWAP_HW_HQV; ViaVideo3Format(Swov); + + VIASetColorSpace(Swov->Port); } /* @@ -2497,6 +2499,8 @@ ViaXvPortInit(ScreenPtr pScreen) { struct ViaXvPort *Port = xnfcalloc(1, sizeof(struct ViaXvPort)); + Port->scrnIndex = pScreen->myNum; + Port->ColorKey = 0x821; Port->autoPaint = TRUE; Port->brightness = 5000.; @@ -2615,8 +2619,6 @@ ViaVideoInit(ScrnInfoPtr pScrn, ScreenPtr pScreen) if (Swov->Mpeg) ViaXvMCInit(pScrn, pScreen); #endif - - VIASetColorSpace(pVia); } /* diff --git a/src/via_video.h b/src/via_video.h index f5769ef..fe047ec 100644 --- a/src/via_video.h +++ b/src/via_video.h @@ -30,6 +30,8 @@ * Stream specific stuff. */ struct ViaXvPort { + int scrnIndex; + int brightness; int saturation; int contrast; ----------------------------------------------------------------------- |
From: <li...@fr...> - 2009-11-11 14:20:49
|
Reporting from xf86-video-unichrome: Main unichrome.sf.net repository Please visit: http://cgit.freedesktop.org/~libv/xf86-video-unichrome Or get your own copy by using: git-clone git://anongit.freedesktop.org/~libv/xf86-video-unichrome The branch, master has been updated via f079865 Xv: Stopping clipping the viewport. from 0776d86 XvMC: Further build fixes. Summary of changes: src/via_video.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit f079865427b78b8330bbabe67b114bd155a00505 Author: Luc Verhaegen <li...@sk...> Date: Wed Nov 11 15:26:27 2009 +0100 Xv: Stopping clipping the viewport. f079865427b78b8330bbabe67b114bd155a00505 diff --git a/src/via_video.c b/src/via_video.c index 4b3802e..c754a1b 100644 --- a/src/via_video.c +++ b/src/via_video.c @@ -2524,7 +2524,7 @@ ViaXvAdaptorInit(ScrnInfoPtr pScrn) Adaptor = xf86XVAllocateVideoAdaptorRec(pScrn); Adaptor->type = XvWindowMask | XvImageMask | XvInputMask; - Adaptor->flags = VIDEO_OVERLAID_IMAGES | VIDEO_CLIP_TO_VIEWPORT; + Adaptor->flags = VIDEO_OVERLAID_IMAGES; Adaptor->name = ViaXVAdaptorName; Adaptor->nEncodings = 1; ----------------------------------------------------------------------- |
From: <li...@fr...> - 2009-11-06 05:21:27
|
Reporting from xf86-video-unichrome: Main unichrome.sf.net repository Please visit: http://cgit.freedesktop.org/~libv/xf86-video-unichrome Or get your own copy by using: git-clone git://anongit.freedesktop.org/~libv/xf86-video-unichrome The branch, master has been updated via 0776d86 XvMC: Further build fixes. from 6260e0f XvMC: Fix up build systems against all my installations. Summary of changes: configure.ac | 23 ++++++++++++++--------- src/via_xvmc.c | 6 +++--- 2 files changed, 17 insertions(+), 12 deletions(-) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 0776d86e3cf8d198817fba07dbfca4e04aa760c6 Author: Luc Verhaegen <li...@sk...> Date: Fri Nov 6 06:23:21 2009 +0100 XvMC: Further build fixes. Fix issues pointed out by NixOS's LluÃs Batlle i Rossell: * xvmc has its own .pc file and thus its own header location. * dpms headers are part of xextproto and not xproto and thus need a different header .pc location as well. Further issues fixed: * xvmc build depends on DRI (for no good reason). * fix variable status uninitialized warnings on older X. 0776d86e3cf8d198817fba07dbfca4e04aa760c6 diff --git a/configure.ac b/configure.ac index bacea8a..d7fcb01 100644 --- a/configure.ac +++ b/configure.ac @@ -73,10 +73,6 @@ AC_MSG_CHECKING([X SDK headers directory]) sdkdir=$(pkg-config --variable=sdkdir xorg-server) AC_MSG_RESULT([$sdkdir]) -AC_MSG_CHECKING([X protocol headers directory]) -protodir=$(pkg-config --variable=includex11dir xproto) -AC_MSG_RESULT([$protodir]) - # Checks for libraries. # Checks for header files. @@ -134,18 +130,23 @@ AC_MSG_RESULT([$have_xv]) AM_CONDITIONAL(XV, test x$have_xv = xyes) # Check what parts of XvMC are around. +AC_MSG_CHECKING([XvMC protocol headers directory]) +xvmcprotodir=$(pkg-config --variable=includedir xvmc) +AC_MSG_RESULT([$xvmcprotodir]) + if test "x$have_xvmc" != xno; then - AC_CHECK_FILE([${protodir}/extensions/XvMC.h], + AC_CHECK_FILE([${xvmcprotodir}/X11/extensions/XvMC.h], [have_xvmc_h="yes"], [have_xvmc_h="no"]) - AC_CHECK_FILE([${protodir}/extensions/vldXvMC.h], + AC_CHECK_FILE([${xvmcprotodir}/X11/extensions/vldXvMC.h], [have_vldxvmc_h="yes"], [have_vldxvmc_h="no"]) - AC_CHECK_FILE([${protodir}/extensions/XvMClib.h], + AC_CHECK_FILE([${xvmcprotodir}/X11/extensions/XvMClib.h], [have_xvmclib_h="yes"], [have_xvmclib_h="no"]) fi # check for driver side xvmc support. AC_MSG_CHECKING([whether to include driver-side XvMC support]) if test "x$have_xv" = xyes -a \ + "x$DRI" = xyes -a \ "x$have_xvmc" != xno -a \ "x$have_xvmc_h" = xyes -a \ "x$have_vldxvmc_h" = xyes; then @@ -192,7 +193,7 @@ fi if test "x$build_xvmc" = xyes; then # if we have xvmclib.h, then we test this way. if test "x$have_xvmclib_h" = xyes; then - AC_EGREP_HEADER([XvMCQueryExtension], [${protodir}/extensions/vldXvMC.h], + AC_EGREP_HEADER([XvMCQueryExtension], [${xvmcprotodir}/X11/extensions/vldXvMC.h], [broken_vldxvmc_h="yes"], [broken_vldxvmc_h="no"]) else AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[#include "vldXvMC.h"]])], @@ -225,7 +226,11 @@ fi CFLAGS="$SAVED_CFLAGS" # in the xserver 1.7 timeframe, the protocol headers were split up. -AC_CHECK_FILE([${protodir}/extensions/dpmsconst.h], +AC_MSG_CHECKING([Xext protocol headers directory]) +xextprotodir=$(pkg-config --variable=includedir xextproto) +AC_MSG_RESULT([$xextprotodir]) + +AC_CHECK_FILE([${xextprotodir}/X11/extensions/dpmsconst.h], [have_dpmsconst_h="yes"], [have_dpmsconst_h="no"]) if test "x$have_dpmsconst_h" = xyes; then AC_DEFINE(HAVE_DPMSCONST_H, 1, [Proto Headers have dpmsconst.h]) diff --git a/src/via_xvmc.c b/src/via_xvmc.c index bad50e3..3b68f86 100644 --- a/src/via_xvmc.c +++ b/src/via_xvmc.c @@ -93,7 +93,7 @@ XvMCEProcQMatrixSend(ClientPtr client) struct XvMCEPrivates *Private; ScrnInfoPtr pScrn; XvPortPtr Port = NULL; - int status; + int status = Success; REQUEST(xvmceQMatrixSendReq); REQUEST_AT_LEAST_SIZE(xvmceQMatrixSendReq); @@ -144,7 +144,7 @@ XvMCEProcBufferSliceInit(ClientPtr client) struct XvMCEPrivates *Private; ScrnInfoPtr pScrn; XvPortPtr Port = NULL; - int status; + int status = Success; CARD8 F_MV_Range, B_MV_Range; CARD8 PictureStructure, FrameType, IntraDCPrecision; Bool ScanningAlternate, PredictionFrame, TopFieldFirst; @@ -280,7 +280,7 @@ XvMCEProcBufferSliceSend(ClientPtr client) struct XvMCEPrivates *Private; ScrnInfoPtr pScrn; XvPortPtr Port = NULL; - int status; + int status = Success; REQUEST(xvmceBufferSliceSendReq); REQUEST_AT_LEAST_SIZE(xvmceBufferSliceSendReq); ----------------------------------------------------------------------- |
From: Luc V. <li...@sk...> - 2009-11-04 21:01:58
|
First things first: It's on top of XvMC, so you do not need to patch any of media players (on top of what was already needed to get this to work in the past with competing "implementations"). If you are using xine, then you have to provide: Option "XvMCBrokenXine" "True" because xine's video_out_xxmc module is a horrible mess. You will notice many start/stop glitches and errors bourne out of this same issue too. Performance is 1/3rd slower than the competing implementation. A DVD uses 30-35% (combined xine and Xorg) cpu on a 600Mhz samuel2, compared to 20-25% with openchrome. This is highly respectable since my implementation: * sends individual slices over the X protocol. * No mpeg register writes (this includes slices) are sent over the command buffer. This code provides a new X extension that's meant to be purely in driver. The base idea is: the output of the mpeg engine needs to get fed into the other video engines to be displayed. So, we need to spend some of our time managing the communication of both engines. We already have the other video engines implemented nicely, so, why not stick this code next to that and have everyone be happy? The XvMC protocol is mostly about managing fb space from the X driver, and thinks that the only way the rest should be implemented is fully in the client library. It's a very weird protocol. To top it off, the client side libraries, for some reason, got wrapped, and that's what libXvMCW is for. Scary stuff. I hope the new media protocols are better at that. This code here extends XvMC, and sends some extra info straight over the X protocol, so that the driver can manage everything. This results in a very clear and overviewable implementation, and new mpeg2 slice decoder hardware can be implemented with just a few hundred lines of hardware specific code. What stops this code from working without drm and without SHM is just the implementation of the XvMC wrapper. If it wasn't for that, it would be just dandy sent over the actual network. So yes, it is slower, but 35% cpu usage on a samuel2 600Mhz is fast enough. No point in speeding it up; it's time to do important work again. Luc Verhaegen. |
From: <li...@fr...> - 2009-11-04 20:25:10
|
Reporting from xf86-video-unichrome: Main unichrome.sf.net repository Please visit: http://cgit.freedesktop.org/~libv/xf86-video-unichrome Or get your own copy by using: git-clone git://anongit.freedesktop.org/~libv/xf86-video-unichrome The branch, master has been updated via 6260e0f XvMC: Fix up build systems against all my installations. via 0eda44a Man: Update chipsets and add XvMC section and option. via 89807ff README: Provide intro, add package building and XvMC section. via 89b85ba Xv: Remove REGION_EQUAL build time compatibility. via 58780b3 README: Remove (partially empty) monolithic build info. via 9c13313 XvMC: Upon Init (CreateContext) reset the engine. via ab186cd XvMC: Fix up XvMCDestroyContext. via 298cfc4 Xv(MC): Improve engine idle waits. via 7de800a XvMC: Track flipping Buffer from via_video.c as well. via 8f8952c XvMC: Turns out we do not need to tell xine about our Status. via 98f8436 XvMC: Hide noisy debugging messages behind a macro. via b261850 XvMC: Remove useless Intrinsic.h inclusion in xvmce.c. via 7d414c5 XvMC: Dump subpicture support. via 8348ea2 XvMC: Subpicture: Implement preliminary Clear. via 68d0041 XvMC: Initial subpicture support: fill in XvMC hooks. via bc72449 XvMC: Working mpeg-2 decoding. via d94d058 XvMC: Send QMatrix to the hw. via 1f73170 XvMC: Extend protocol to pass slice count around. via 1318f24 XvMC: Fill out Xv side further so that we display (empty) mpeg buffers. via 589e5fe XvMC: Hook up mpeg code to test buffer handling. via b557de1 XvMC: Add MPEG and Subpicture engine hw code from xuma. via 0f4f1c9 XvMC: Hook up Xv and PutImage the surface XID into the driver. via d83fb0b XvMC: Implement SliceInit and SliceSend protocol. via 3f46f94 XvMC: Implement Buffer Status retrieval. via 430a114 XvMC: xvmc_unichrome.c: order functions logically. via 50bf8d8 XvMC: Add qmatrix proto and fill out context and surface handling. via 4fd8a42 XvMC: Fill out the library enough to fool xine. via 80817b8 XvMC: Start filling out XvMCCreateContext. via 4f0284b XvMC: Add boilerplate libXvMCunichrome via 9c31f65 XvMC: Add initial boilerplate XvMC support. from 510bc19 noDRI: fix build broken in 4a72fbb5898 Summary of changes: .gitignore | 1 + Makefile.am | 26 +- README | 143 +++++-- configure.ac | 113 ++++-- debian/control | 4 +- lib/Makefile.am | 1 + lib/xvmc/Makefile.am | 12 + lib/xvmc/xvmc_unichrome.c | 785 +++++++++++++++++++++++++++++++++++++ lib/xvmc/xvmce.c | 237 +++++++++++ src/via_i2c.h => lib/xvmc/xvmce.h | 27 +- lib/xvmc/xvmce_proto.h | 151 +++++++ man/unichrome.man | 32 ++- src/Makefile.am | 35 +-- src/via_dri.c | 23 +- src/via_mpeg.c | 586 +++++++++++++++++++++++++++ src/via_mpeg.h | 103 +++++ src/via_mpegregs.h | 118 ++++++ src/via_video.c | 301 +++++++++----- src/via_video.h | 6 + src/via_xvmc.c | 603 ++++++++++++++++++++++++++++ src/{via_i2c.h => via_xvmc.h} | 16 +- 21 files changed, 3076 insertions(+), 247 deletions(-) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 9c31f6572945cc028c82d4acc724ba2e669e4403 Author: Luc Verhaegen <li...@sk...> Date: Tue Jul 28 16:27:32 2009 +0200 XvMC: Add initial boilerplate XvMC support. 9c31f6572945cc028c82d4acc724ba2e669e4403 diff --git a/src/Makefile.am b/src/Makefile.am index e4ec08f..9c393fd 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -68,7 +68,9 @@ if XV unichrome_drv_la_SOURCES += \ via_video.c \ via_video.h \ - via_videoregs.h + via_videoregs.h \ + via_xvmc.c \ + via_xvmc.h endif if DRI diff --git a/src/via_driver.c b/src/via_driver.c index a83cbed..b311728 100644 --- a/src/via_driver.c +++ b/src/via_driver.c @@ -82,6 +82,10 @@ #include "via_regs.h" +#ifdef _VIA_VIDEO_H_ +#include "via_xvmc.h" +#endif + #include "vgaHW.h" #include "mipointer.h" @@ -2360,8 +2364,10 @@ VIAScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) #endif #ifdef _VIA_VIDEO_H_ - if (pVia->UseXv) + if (pVia->UseXv) { ViaVideoInit(pScrn, pScreen); + ViaMCInit(pScrn, pScreen); + } #endif if (pVia->Crtc[0]->Active) diff --git a/src/via_xvmc.c b/src/via_xvmc.c new file mode 100644 index 0000000..50a0e06 --- /dev/null +++ b/src/via_xvmc.c @@ -0,0 +1,159 @@ +/* + * Copyright 2009 Luc Verhaegen. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sub license, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial portions + * of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "xf86xvmc.h" +#include "fourcc.h" + +#include "X11/extensions/XvMC.h" +#include "X11/extensions/vldXvMC.h" + +#include "via_driver.h" +#include "via_video.h" + +static int ViaMCImageIDs[2] = {FOURCC_AI44, FOURCC_IA44}; +static XF86MCImageIDList ViaMCImageIDList = {2, ViaMCImageIDs}; + +static XF86ImageRec ViaMCIA44 = XVIMAGE_IA44; +static XF86ImageRec ViaMCAI44 = XVIMAGE_AI44; + +static XF86ImagePtr ViaMCSubPictures[2] = {&ViaMCIA44, &ViaMCAI44}; + +static XF86MCSurfaceInfoRec ViaMCMpeg2Surface = { + FOURCC_YV12, + XVMC_CHROMA_FORMAT_420, + 0, + 1024, 1024, 1024, 1024, + XVMC_MPEG_2 | XVMC_VLD, + XVMC_OVERLAID_SURFACE | XVMC_BACKEND_SUBPICTURE, + &ViaMCImageIDList +}; + +static XF86MCSurfaceInfoPtr ViaMCSurfaces[1] = {&ViaMCMpeg2Surface}; + +/* + * + */ +static int +ViaMCCreateContext(ScrnInfoPtr pScrn, XvMCContextPtr context, + int *num_priv, CARD32 **priv) +{ + VIAFUNC(pScrn); + + return BadAlloc; +} + +/* + * + */ +static void +ViaMCDestroyContext(ScrnInfoPtr pScrn, XvMCContextPtr context) +{ + VIAFUNC(pScrn); +} + +/* + * + */ +static int +ViaMCCreateSurface(ScrnInfoPtr pScrn, XvMCSurfacePtr surface, + int *num_priv, CARD32 **priv) +{ + VIAFUNC(pScrn); + + return BadAlloc; +} + +/* + * + */ +static void +ViaMCDestroySurface(ScrnInfoPtr pScrn, XvMCSurfacePtr surface) +{ + VIAFUNC(pScrn); +} + +/* + * + */ +static int +ViaMCCreateSubpicture(ScrnInfoPtr pScrn, XvMCSubpicturePtr subpicture, + int *num_priv, CARD32 **priv) +{ + VIAFUNC(pScrn); + + return BadAlloc; +} + +/* + * + */ +static void +ViaMCDestroySubpicture(ScrnInfoPtr pScrn, XvMCSubpicturePtr subpicture) +{ + VIAFUNC(pScrn); +} + +static XF86MCAdaptorRec ViaMCAdaptor = { + ViaXVAdaptorName, + 1, ViaMCSurfaces, + 2, ViaMCSubPictures, + ViaMCCreateContext, + ViaMCDestroyContext, + ViaMCCreateSurface, + ViaMCDestroySurface, + ViaMCCreateSubpicture, + ViaMCDestroySubpicture +}; +static XF86MCAdaptorPtr ViaMCAdaptors[1] = {&ViaMCAdaptor}; + +/* + * + */ +Bool +ViaMCInit(ScrnInfoPtr pScrn, ScreenPtr pScreen) +{ + VIAFUNC(pScrn); + + if (!xf86XvMCScreenInit(pScreen, 1, ViaMCAdaptors)) { + xf86DrvMsg(pScrn->scrnIndex, X_WARNING, + "%s: Failed to initialise XvMC.\n", __func__); + return FALSE; + } + + xf86XvMCRegisterDRInfo(pScreen, "XvMCunichrome", "1:0.0", 0, 0, 0); + + return TRUE; +} + +/* + * + */ +void +ViaXvMCDestroy(ScrnInfoPtr pScrn) +{ + VIAFUNC(pScrn); +} diff --git a/src/via_xvmc.h b/src/via_xvmc.h new file mode 100644 index 0000000..836d782 --- /dev/null +++ b/src/via_xvmc.h @@ -0,0 +1,30 @@ +/* + * Copyright 2009 Luc Verhaegen. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sub license, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial portions + * of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#ifndef VIA_XVMC_H +#define VIA_XVMC_H + +Bool ViaMCInit(ScrnInfoPtr pScrn, ScreenPtr pScreen); +void ViaMCDestroy(ScrnInfoPtr pScrn); + +#endif /* VIA_XVMC_H */ ----------------------------------------------------------------------- commit 4f0284bc6f77bf8b5367cc1cdbeb47e0a2b5e716 Author: Luc Verhaegen <li...@sk...> Date: Wed Jul 29 09:23:51 2009 +0200 XvMC: Add boilerplate libXvMCunichrome 4f0284bc6f77bf8b5367cc1cdbeb47e0a2b5e716 diff --git a/.gitignore b/.gitignore index 425a2f5..2b2ef0e 100644 --- a/.gitignore +++ b/.gitignore @@ -36,3 +36,4 @@ debian/substvars debian/xf86-video-unichrome.substvars debian/xf86-video-unichrome compile +*.pc diff --git a/Makefile.am b/Makefile.am index fb495ec..3936a8d 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,30 +1,10 @@ -# Copyright 2005 Adam Jackson. -# -# Permission is hereby granted, free of charge, to any person obtaining a -# copy of this software and associated documentation files (the "Software"), -# to deal in the Software without restriction, including without limitation -# on the rights to use, copy, modify, merge, publish, distribute, sub -# license, and/or sell copies of the Software, and to permit persons to whom -# the Software is furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice (including the next -# paragraph) shall be included in all copies or substantial portions of the -# Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL -# ADAM JACKSON BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - AUTOMAKE_OPTIONS = foreign if BUILD_WRAPPER WRAPPER_DIR = wrapper endif -SUBDIRS = src man $(WRAPPER_DIR) +SUBDIRS = src man lib $(WRAPPER_DIR) EXTRA_DIST = git_version.sh BUILT_SOURCES = git_version.h diff --git a/configure.ac b/configure.ac index e098dc5..cdc86bb 100644 --- a/configure.ac +++ b/configure.ac @@ -207,4 +207,7 @@ AC_OUTPUT([ Makefile src/Makefile man/Makefile + lib/Makefile + lib/xvmc/Makefile + lib/xvmc/libXvMCunichrome.pc ]) diff --git a/lib/Makefile.am b/lib/Makefile.am new file mode 100644 index 0000000..49f28d4 --- /dev/null +++ b/lib/Makefile.am @@ -0,0 +1 @@ +SUBDIRS = xvmc diff --git a/lib/xvmc/Makefile.am b/lib/xvmc/Makefile.am new file mode 100644 index 0000000..a2291b0 --- /dev/null +++ b/lib/xvmc/Makefile.am @@ -0,0 +1,8 @@ +lib_LTLIBRARIES = libXvMCunichrome.la + +libXvMCunichrome_la_SOURCES = xvmc_unichrome.c + +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = libXvMCunichrome.pc + +EXTRA_DIST = libXvMCunichrome.pc.in diff --git a/lib/xvmc/libXvMCunichrome.pc.in b/lib/xvmc/libXvMCunichrome.pc.in new file mode 100644 index 0000000..7761ab7 --- /dev/null +++ b/lib/xvmc/libXvMCunichrome.pc.in @@ -0,0 +1,12 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: libXvMCunichrome +Description: XvMC client side library for Unichrome. +Version: @PACKAGE_VERSION@ +Requires: xproto videoproto xv xvmc +Requires.private: x11 xext xv xvmc +Cflags: -I${includedir} +Libs: -L${libdir} -lXvMC -lXvMCunichrome diff --git a/lib/xvmc/xvmc_unichrome.c b/lib/xvmc/xvmc_unichrome.c new file mode 100644 index 0000000..6cee12f --- /dev/null +++ b/lib/xvmc/xvmc_unichrome.c @@ -0,0 +1,436 @@ +/* + * Copyright 2009 Luc Verhaegen. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sub license, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial portions + * of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#include <stdio.h> + +#include <X11/Xlibint.h> +#include <X11/extensions/Xvproto.h> +#include <X11/extensions/XvMCproto.h> +#include <X11/extensions/XvMClib.h> +#include <X11/extensions/Xext.h> +#include <X11/extensions/extutil.h> +#include <X11/extensions/Xv.h> +#include <X11/extensions/vldXvMC.h> + +/* + * + */ +_X_EXPORT Status +XvMCCreateContext(Display *display, XvPortID port, int surface_type_id, + int width, int height, int flags, XvMCContext *context) +{ + printf("%s\n", __func__); + + return BadImplementation; +} + + +/* + * + */ +_X_EXPORT Status +XvMCDestroyContext(Display *display, XvMCContext *context) +{ + printf("%s\n", __func__); + + return Success; +} + + +/* + * + */ +_X_EXPORT Status +XvMCCreateSurface(Display *display, XvMCContext *context, XvMCSurface *surface) +{ + printf("%s\n", __func__); + + return BadImplementation; +} + + +/* + * + */ +_X_EXPORT Status +XvMCDestroySurface(Display *display, XvMCSurface *surface) +{ + printf("%s\n", __func__); + + return Success; +} + +/* + * + */ +_X_EXPORT Status +XvMCPutSurface(Display *display, XvMCSurface *surface, Drawable draw, + short src_x, short src_y, unsigned short src_w, + unsigned short src_h, short dst_x, short dst_y, + unsigned short dst_w, unsigned short dst_h, int flags) +{ + printf("%s\n", __func__); + + return BadImplementation; +} + + +/* + * + */ +_X_EXPORT Status +XvMCHideSurface(Display *display, XvMCSurface *surface) +{ + printf("%s\n", __func__); + + return BadImplementation; +} + + +/* + * + */ +_X_EXPORT Status +XvMCCreateSubpicture(Display *display, XvMCContext *context, + XvMCSubpicture *subpicture, unsigned short width, + unsigned short height, int xvimage_id) +{ + printf("%s\n", __func__); + + return BadImplementation; +} + + +/* + * + */ +_X_EXPORT Status +XvMCClearSubpicture(Display *display, XvMCSubpicture *subpicture, + short x, short y, unsigned short width, + unsigned short height, unsigned int flags) +{ + printf("%s\n", __func__); + + return BadImplementation; +} + + +/* + * + */ +_X_EXPORT Status +XvMCCompositeSubpicture(Display *display, XvMCSubpicture *subpicture, + XvImage *image, short src_x, short src_y, + unsigned short width, unsigned short height, + short dst_x, short dst_y) +{ + printf("%s\n", __func__); + + return BadImplementation; +} + + +/* + * + */ +_X_EXPORT Status +XvMCDestroySubpicture(Display *display, XvMCSubpicture *subpicture) +{ + printf("%s\n", __func__); + + return Success; +} + + +/* + * + */ +_X_EXPORT Status +XvMCSetSubpicturePalette(Display *display, XvMCSubpicture *subpicture, + unsigned char *palette) +{ + printf("%s\n", __func__); + + return BadImplementation; +} + + +/* + * + */ +_X_EXPORT Status +XvMCBlendSubpicture(Display *display, XvMCSurface *surface, + XvMCSubpicture *subpicture, short sub_x, short sub_y, + unsigned short sub_width, unsigned short sub_h, + short surface_x, short surface_y, + unsigned short surface_width, unsigned short surface_h) +{ + printf("%s\n", __func__); + + return BadImplementation; +} + + +/* + * + */ +_X_EXPORT Status +XvMCBlendSubpicture2(Display *display, XvMCSurface *source, XvMCSurface *target, + XvMCSubpicture *subpicture, short sub_x, short sub_y, + unsigned short sub_width, unsigned short sub_h, + short surface_x, short surface_y, + unsigned short surface_width, unsigned short surface_h) +{ + printf("%s\n", __func__); + + return BadImplementation; +} + + +/* + * + */ +_X_EXPORT Status +XvMCSyncSurface(Display *display, XvMCSurface *surface) +{ + printf("%s\n", __func__); + + return BadImplementation; +} + + +/* + * + */ +_X_EXPORT Status +XvMCFlushSurface(Display *display, XvMCSurface *surface) +{ + printf("%s\n", __func__); + + return BadImplementation; +} + + +/* + * + */ +_X_EXPORT Status +XvMCGetSurfaceStatus(Display *display, XvMCSurface *surface, int *stat) +{ + printf("%s\n", __func__); + + return BadImplementation; +} + + +/* + * + */ +_X_EXPORT Status +XvMCRenderSurface(Display *display, XvMCContext *context, + unsigned int picture_structure, XvMCSurface *target, + XvMCSurface *past, XvMCSurface *future, unsigned int flags, + unsigned int num_macroblocks, unsigned int first_macroblock, + XvMCMacroBlockArray *macroblock_array, XvMCBlockArray *blocks) +{ + printf("%s\n", __func__); + + return BadImplementation; +} + + +/* + * + */ +_X_EXPORT Status +XvMCSyncSubpicture(Display *display, XvMCSubpicture *subpicture) +{ + printf("%s\n", __func__); + + return BadImplementation; +} + + +/* + * + */ +_X_EXPORT Status +XvMCFlushSubpicture(Display *display, XvMCSubpicture *subpicture) +{ + printf("%s\n", __func__); + + return BadImplementation; +} + + +/* + * + */ +_X_EXPORT Status +XvMCGetSubpictureStatus(Display *display, XvMCSubpicture *subpicture, int *stat) +{ + printf("%s\n", __func__); + + return BadImplementation; +} + + +/* + * + */ +_X_EXPORT Status +XvMCCreateBlocks(Display *display, XvMCContext *context, + unsigned int num_blocks, XvMCBlockArray *blocks) +{ + printf("%s\n", __func__); + + return BadImplementation; +} + + +/* + * + */ +_X_EXPORT Status +XvMCDestroyBlocks(Display *display, XvMCBlockArray *blocks) +{ + printf("%s\n", __func__); + + return Success; +} + + +/* + * + */ +_X_EXPORT Status +XvMCCreateMacroBlocks(Display *display, XvMCContext *context, + unsigned int num_blocks, XvMCMacroBlockArray *blocks) +{ + printf("%s\n", __func__); + + return BadImplementation; +} + + +/* + * + */ +_X_EXPORT Status +XvMCDestroyMacroBlocks(Display *display, XvMCMacroBlockArray *blocks) +{ + printf("%s\n", __func__); + + return Success; +} + +/* + * + */ +_X_EXPORT XvAttribute * +XvMCQueryAttributes(Display *display, XvMCContext *context, int *number) +{ + printf("%s\n", __func__); + + return NULL; +} + + +/* + * + */ +_X_EXPORT Status +XvMCSetAttribute(Display *display, XvMCContext *context, + Atom Attribute, int value) +{ + printf("%s\n", __func__); + + return BadImplementation; +} + + +/* + * + */ +_X_EXPORT Status +XvMCGetAttribute(Display *display, XvMCContext *context, + Atom Attribute, int *value) +{ + printf("%s\n", __func__); + + +} + + + +/* + * + */ +_X_EXPORT Status +XvMCBeginSurface(Display *display, XvMCContext *context, XvMCSurface *target, + XvMCSurface *past, XvMCSurface *future, + const XvMCMpegControl *control) +{ + printf("%s\n", __func__); + + return BadImplementation; +} + + +/* + * + */ +_X_EXPORT Status +XvMCLoadQMatrix(Display *display, XvMCContext *context, + const XvMCQMatrix *qmatrix) +{ + printf("%s\n", __func__); + + return BadImplementation; +} + + +/* + * + */ +_X_EXPORT Status +XvMCPutSlice(Display *display, XvMCContext *context, + char *slice, int size) +{ + printf("%s\n", __func__); + + return BadImplementation; +} + + +/* + * + */ +_X_EXPORT Status +XvMCPutSlice2(Display *display, XvMCContext *context, + char *slice, int size, int slicecode) +{ + printf("%s\n", __func__); + + return BadImplementation; +} ----------------------------------------------------------------------- commit 80817b84134067ee14403dccb967aca69e7233f8 Author: Luc Verhaegen <li...@sk...> Date: Wed Jul 29 16:19:21 2009 +0200 XvMC: Start filling out XvMCCreateContext. Add some initial code for the _further_ X extension. 80817b84134067ee14403dccb967aca69e7233f8 diff --git a/lib/xvmc/Makefile.am b/lib/xvmc/Makefile.am index a2291b0..471391e 100644 --- a/lib/xvmc/Makefile.am +++ b/lib/xvmc/Makefile.am @@ -1,6 +1,10 @@ lib_LTLIBRARIES = libXvMCunichrome.la -libXvMCunichrome_la_SOURCES = xvmc_unichrome.c +libXvMCunichrome_la_SOURCES = \ + xvmce.c \ + xvmce.h \ + xvmce_proto.h \ + xvmc_unichrome.c pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = libXvMCunichrome.pc diff --git a/lib/xvmc/xvmc_unichrome.c b/lib/xvmc/xvmc_unichrome.c index 6cee12f..9738ad3 100644 --- a/lib/xvmc/xvmc_unichrome.c +++ b/lib/xvmc/xvmc_unichrome.c @@ -24,14 +24,43 @@ #include <stdio.h> #include <X11/Xlibint.h> +#include <X11/extensions/Xv.h> +#include <X11/extensions/Xvlib.h> #include <X11/extensions/Xvproto.h> +#include <X11/extensions/XvMC.h> #include <X11/extensions/XvMCproto.h> #include <X11/extensions/XvMClib.h> #include <X11/extensions/Xext.h> #include <X11/extensions/extutil.h> -#include <X11/extensions/Xv.h> #include <X11/extensions/vldXvMC.h> +#include "xvmce.h" + +/* Oh you must be kidding me. What a bunch of clueless idiots. */ +extern Status _xvmc_create_context(Display *dpy, XvMCContext *context, + int *priv_count, CARD32 **priv_data); + +extern Status _xvmc_destroy_context(Display *dpy, XvMCContext *context); + +extern Status _xvmc_create_surface(Display *dpy, XvMCContext *context, + XvMCSurface *surface, int *priv_count, + CARD32 **priv_data); + +extern Status _xvmc_destroy_surface(Display *dpy, XvMCSurface *surface); + +extern Status _xvmc_create_subpicture(Display *dpy, XvMCContext *context, + XvMCSubpicture *subpicture, + int *priv_count, uint **priv_data); + +extern Status _xvmc_destroy_subpicture(Display *dpy, + XvMCSubpicture *subpicture); + + +static int XvMC_EventBase; +static int XvMC_ErrorBase; +static int XvMCE_EventBase; +static int XvMCE_ErrorBase; + /* * */ @@ -39,8 +68,52 @@ _X_EXPORT Status XvMCCreateContext(Display *display, XvPortID port, int surface_type_id, int width, int height, int flags, XvMCContext *context) { + Status status; + int major, minor; + int priv_count; + CARD32 *priv_data = NULL; + printf("%s\n", __func__); + if (!display || !context) + return BadValue; + + /* First, check XvMC. */ + if (!XvMCQueryExtension(display, &XvMC_EventBase, &XvMC_ErrorBase)) { + printf("%s: XvMC extension is missing.\n", __func__); + return BadRequest; + } + + status = XvMCQueryVersion(display, &major, &minor); + if (status != Success) { + printf("%s: XvMCQueryVersion failed: %d\n", __func__, status); + return BadImplementation; + } + printf("Found XvMC Extension version %d.%d.\n", major, minor); + + /* Now, check our own extension */ + status = XvMCEQueryExtension(display, &major, &minor, + &XvMCE_EventBase, &XvMCE_ErrorBase); + if (status != Success) { + printf("%s: XvMCEQueryExtension failed: %d\n", __func__, status); + return status; + } + printf("Found Unichrome XvMCE Extension version %d.%d.\n", major, minor); + + /* Only now, we can go and try to create a context, with a twist. */ + context->surface_type_id = surface_type_id; + context->width = width; /* this better be correct, or we die */ + context->height = height; + context->flags = flags; + context->port = port; + + /* now call the old, raped X extension hooks */ + status =_xvmc_create_context(display, context, &priv_count, &priv_data); + if (status != Success) { + printf("%s: _xvmc_create_context failed: %d\n", __func__, status); + return status; + } + return BadImplementation; } @@ -53,6 +126,9 @@ XvMCDestroyContext(Display *display, XvMCContext *context) { printf("%s\n", __func__); + if (!display || !context) + return BadValue; + return Success; } diff --git a/lib/xvmc/xvmce.c b/lib/xvmc/xvmce.c new file mode 100644 index 0000000..0576e60 --- /dev/null +++ b/lib/xvmc/xvmce.c @@ -0,0 +1,133 @@ +/* + * Copyright 2006-2009 Luc Verhaegen. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sub license, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial portions + * of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +/* + * Our own X extension to push mpeg-2 data over the X protocol. + * + * People are blind and stupid, and infatuated with DRM, and therefor + * completely messed up XvMC. + */ +#include <X11/Xlib.h> +#include <X11/extensions/Xv.h> +#include <X11/extensions/Xvlib.h> + +#include <stdio.h> + +#include <X11/Xlibint.h> +#include <X11/Xproto.h> +#include <X11/Intrinsic.h> +#include <X11/extensions/Xext.h> +#include <X11/extensions/extutil.h> + +#include "xvmce_proto.h" +#include "xvmce.h" + +#define XvMCECheckExtension(dpy, info, val) \ + XextCheckExtension(dpy, info, XVMCE_EXT_NAME, val) + +static XExtensionInfo *XvMCEExtInfo = NULL; + +static int XvMCEExtCloseDisplay(Display *dpy, XExtCodes *codes); +XEXT_GENERATE_CLOSE_DISPLAY(XvMCEExtCloseDisplay, XvMCEExtInfo) + +XExtDisplayInfo *XvMCEFindDisplay(Display *dpy); +static XExtensionHooks XvMCEExtHooks = { + NULL, /* create_gc */ + NULL, /* copy_gc */ + NULL, /* flush_gc */ + NULL, /* free_gc */ + NULL, /* create_font */ + NULL, /* free_font */ + XvMCEExtCloseDisplay, + NULL, /* wire_to_event */ + NULL, /* event_to_wire */ + NULL, /* error */ + NULL, /* error_string */ +}; +XEXT_GENERATE_FIND_DISPLAY(XvMCEFindDisplay, XvMCEExtInfo, XVMCE_EXT_NAME, + &XvMCEExtHooks, 0, NULL) + +#define XvMCEGetReq(name, req) \ + WORD64ALIGN\ + if ((dpy->bufptr + SIZEOF(xvmce##name##Req)) > dpy->bufmax)\ + _XFlush(dpy);\ + req = (xvmce##name##Req *)(dpy->last_req = dpy->bufptr);\ + req->reqType = info->codes->major_opcode;\ + req->xvmceReqType = xvmce_##name; \ + req->length = (SIZEOF(xvmce##name##Req))>>2;\ + dpy->bufptr += SIZEOF(xvmce##name##Req);\ + dpy->request++ + +#define XvmceGetReqExtra(name, req, len) \ + WORD64ALIGN\ + if ((dpy->bufptr + SIZEOF(xvmce##name##Req)) > dpy->bufmax)\ + _XFlush(dpy);\ + req = (xvmce##name##Req *)(dpy->last_req = dpy->bufptr);\ + req->reqType = info->codes->major_opcode;\ + req->xvmceReqType = xvmce_##name; \ + req->length = (SIZEOF(xvmce##name##Req) + len + 3)>>2;\ + dpy->bufptr += SIZEOF(xvmce##name##Req);\ + dpy->request++ + +/* + * + */ +Status +XvMCEQueryExtension(Display *dpy, int *Version, int *Release, + int *event_basep, int *error_basep) +{ + XExtDisplayInfo *info = XvMCEFindDisplay(dpy); + xvmceQueryExtensionReq *req; + xvmceQueryExtensionReply reply; + Status status; + + XvMCECheckExtension(dpy, info, BadImplementation); + + LockDisplay(dpy); + + XvMCEGetReq(QueryExtension, req); + + if (_XReply(dpy, (xReply *)&reply, 0, xFalse)) { + *Version = reply.Version; + *Release = reply.Release; + + if ((*Version != XVMCE_VERSION) || (*Release < XVMCE_RELEASE)) { + fprintf(stderr, "Incompatible %s version found.\n", XVMCE_EXT_NAME); + + status = BadImplementation; + } + + *event_basep = info->codes->first_event; + *error_basep = info->codes->first_error; + + status = Success; + } else { + fprintf(stderr, "%s; Xreply failed.\n", __func__); + status = BadAccess; + } + + UnlockDisplay(dpy); + SyncHandle(); + + return status; +} diff --git a/lib/xvmc/xvmce.h b/lib/xvmc/xvmce.h new file mode 100644 index 0000000..b196faf --- /dev/null +++ b/lib/xvmc/xvmce.h @@ -0,0 +1,29 @@ +/* + * Copyright 2009 Luc Verhaegen. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sub license, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial portions + * of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#ifndef XVMCE_H +#define XVMCE_H + +Status XvMCEQueryExtension(Display *dpy, int *Version, int *Release, int *event_basep, int *error_basep); + +#endif /* XVMCE_H */ diff --git a/lib/xvmc/xvmce_proto.h b/lib/xvmc/xvmce_proto.h new file mode 100644 index 0000000..38c42d6 --- /dev/null +++ b/lib/xvmc/xvmce_proto.h @@ -0,0 +1,61 @@ +/* + * Copyright 2006-2009 Luc Verhaegen. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sub license, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial portions + * of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +/* + * Protocol definition for unichrome xvmce. + */ +#ifndef XVMCE_PROTO_H +#define XVMCE_PROTO_H + +#define XVMCE_EXT_NAME "Unichrome XvMC-E" + +#define XVMCE_VERSION 0 +#define XVMCE_RELEASE 0 + +#define xvmce_QueryExtension 0 + +/* + * Version, are we compatible? + */ +typedef struct { + CARD8 reqType; + CARD8 xvmceReqType; /* xvmce_QueryExtension */ + CARD16 length B16; +} xvmceQueryExtensionReq; +#define sz_xvmceQueryExtensionReq 4 + +typedef struct { + BYTE type; /* X_Reply */ + BYTE pad0; + CARD16 sequenceNumber B16; + CARD32 length B32; + CARD32 Version B32; + CARD32 Release B32; + CARD32 pad2 B32; + CARD32 pad3 B32; + CARD32 pad4 B32; + CARD32 pad5 B32; +} xvmceQueryExtensionReply; +#define sz_xvmceQueryExtensionReply 32 + +#endif /* XVMCE_PROTO_H */ diff --git a/src/via_xvmc.c b/src/via_xvmc.c index 50a0e06..c98dab2 100644 --- a/src/via_xvmc.c +++ b/src/via_xvmc.c @@ -34,6 +34,118 @@ #include "via_driver.h" #include "via_video.h" +/* + * + * First, our own X protocol to make XvMC less brainless. + * + */ +#include <extnsionst.h> +#include <dixstruct.h> +#include "lib/xvmc/xvmce_proto.h" + +struct XvMCEPrivates +{ + int scrnIndex; +}; + +/* + * + */ +static int +XvMCEProcQueryExtension(ClientPtr client) +{ + ExtensionEntry *MPEGExt; + xvmceQueryExtensionReply rep; + + REQUEST_SIZE_MATCH(xvmceQueryExtensionReq); + + MPEGExt = CheckExtension(XVMCE_EXT_NAME); + if(!MPEGExt || !MPEGExt->extPrivate) + return BadMatch; + + rep.type = X_Reply; + rep.sequenceNumber = client->sequence; + rep.length = + (sizeof(xvmceQueryExtensionReply) - sizeof(xGenericReply)) >> 2; + rep.Version = XVMCE_VERSION; + rep.Release = XVMCE_RELEASE; + + WriteToClient(client, sizeof(xvmceQueryExtensionReply), (char *)&rep); + return (client->noClientException); +} + +/* + * + */ +static int +XvMCEHandler(ClientPtr client) +{ + REQUEST(xReq); + + switch (stuff->data) { + case xvmce_QueryExtension: + return XvMCEProcQueryExtension(client); + default: + break; + } + + return BadRequest; +} + +/* + * + */ +static int +XvMCESHandler(ClientPtr client) +{ + ErrorF("%s is not implemented.\n", __func__); + + return BadRequest; +} + +/* + * + */ +static void +XvMCEClose(ExtensionEntry *MPEGExt) +{ + if (MPEGExt->extPrivate) { + xfree(MPEGExt->extPrivate); + MPEGExt->extPrivate = NULL; + } +} + +/* + * + */ +static Bool +XvMCEInit(ScrnInfoPtr pScrn) +{ + ExtensionEntry *XvMCE_Ext; + struct XvMCEPrivates *Private; + + VIAFUNC(pScrn); + + XvMCE_Ext = AddExtension(XVMCE_EXT_NAME, 0, 0, XvMCEHandler, XvMCESHandler, + XvMCEClose, StandardMinorOpcode); + if (!XvMCE_Ext) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "%s: Failed to add %s.\n", + __func__, XVMCE_EXT_NAME); + return FALSE; + } + + Private = xnfcalloc(sizeof(struct XvMCEPrivates), 1); + Private->scrnIndex = pScrn->scrnIndex; + XvMCE_Ext->extPrivate = Private; + + return TRUE; +} + +/* + * + * Now, use what is somewhat useable from XvMC. + * + */ static int ViaMCImageIDs[2] = {FOURCC_AI44, FOURCC_IA44}; static XF86MCImageIDList ViaMCImageIDList = {2, ViaMCImageIDs}; @@ -63,7 +175,11 @@ ViaMCCreateContext(ScrnInfoPtr pScrn, XvMCContextPtr context, { VIAFUNC(pScrn); - return BadAlloc; + ViaDebug(pScrn->scrnIndex, "%s: adapter %d, surfaceid %08X (%dx%d); %08X\n", + __func__, context->adapt_num, context->surface_type_id, + context->width, context->height, context->flags); + + return Success; } /* @@ -138,6 +254,12 @@ ViaMCInit(ScrnInfoPtr pScrn, ScreenPtr pScreen) { VIAFUNC(pScrn); + if (!XvMCEInit(pScrn)) { + xf86DrvMsg(pScrn->scrnIndex, X_WARNING, + "%s: Failed to initialise XvMCE extension.\n", __func__); + return FALSE; + } + if (!xf86XvMCScreenInit(pScreen, 1, ViaMCAdaptors)) { xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "%s: Failed to initialise XvMC.\n", __func__); ----------------------------------------------------------------------- commit 4fd8a42f2091e544ffcd4dabe2f8adcb441e89ec Author: Luc Verhaegen <li...@sk...> Date: Thu Jul 30 01:28:17 2009 +0200 XvMC: Fill out the library enough to fool xine. 4fd8a42f2091e544ffcd4dabe2f8adcb441e89ec diff --git a/lib/xvmc/xvmc_unichrome.c b/lib/xvmc/xvmc_unichrome.c index 9738ad3..f43b44e 100644 --- a/lib/xvmc/xvmc_unichrome.c +++ b/lib/xvmc/xvmc_unichrome.c @@ -114,7 +114,7 @@ XvMCCreateContext(Display *display, XvPortID port, int surface_type_id, return status; } - return BadImplementation; + return Success; } @@ -141,7 +141,13 @@ XvMCCreateSurface(Display *display, XvMCContext *context, XvMCSurface *surface) { printf("%s\n", __func__); - return BadImplementation; + if (!display || !context) + return XvMCBadContext; + + if (!surface) + return XvMCBadSurface; + + return Success; } @@ -167,7 +173,7 @@ XvMCPutSurface(Display *display, XvMCSurface *surface, Drawable draw, { printf("%s\n", __func__); - return BadImplementation; + return Success; } @@ -291,7 +297,7 @@ XvMCSyncSurface(Display *display, XvMCSurface *surface) { printf("%s\n", __func__); - return BadImplementation; + return Success; } @@ -301,9 +307,9 @@ XvMCSyncSurface(Display *display, XvMCSurface *surface) _X_EXPORT Status XvMCFlushSurface(Display *display, XvMCSurface *surface) { - printf("%s\n", __func__); + //printf("%s\n", __func__); - return BadImplementation; + return Success; } @@ -426,9 +432,7 @@ XvMCDestroyMacroBlocks(Display *display, XvMCMacroBlockArray *blocks) _X_EXPORT XvAttribute * XvMCQueryAttributes(Display *display, XvMCContext *context, int *number) { - printf("%s\n", __func__); - - return NULL; + return XvQueryPortAttributes(display, context->port, number); } @@ -439,9 +443,7 @@ _X_EXPORT Status XvMCSetAttribute(Display *display, XvMCContext *context, Atom Attribute, int value) { - printf("%s\n", __func__); - - return BadImplementation; + return XvSetPortAttribute(display, context->port, Attribute, value); } @@ -452,9 +454,7 @@ _X_EXPORT Status XvMCGetAttribute(Display *display, XvMCContext *context, Atom Attribute, int *value) { - printf("%s\n", __func__); - - + return XvGetPortAttribute(display, context->port, Attribute, value); } @@ -467,9 +467,16 @@ XvMCBeginSurface(Display *display, XvMCContext *context, XvMCSurface *target, XvMCSurface *past, XvMCSurface *future, const XvMCMpegControl *control) { + static int i = 0; + + i++; + printf("%s\n", __func__); - return BadImplementation; + if (i & 0x01) + return Success; + else + return BadValue; } @@ -493,9 +500,9 @@ _X_EXPORT Status XvMCPutSlice(Display *display, XvMCContext *context, char *slice, int size) { - printf("%s\n", __func__); + //printf("%s\n", __func__); - return BadImplementation; + return Success; } @@ -506,7 +513,7 @@ _X_EXPORT Status XvMCPutSlice2(Display *display, XvMCContext *context, char *slice, int size, int slicecode) { - printf("%s\n", __func__); + //printf("%s\n", __func__); - return BadImplementation; + return Success; } ----------------------------------------------------------------------- commit 50bf8d8dc4843c19fe4a887c5b2e91c0ab2e5723 Author: Luc Verhaegen <li...@sk...> Date: Sat Aug 1 03:31:49 2009 +0200 XvMC: Add qmatrix proto and fill out context and surface handling. Qmatrix is part of the newly created X protocol. Surface and context creation/destruction, XID based, is using plain old XvMC. Verbosity was increased on both sides of the thing, to clearly track and verify the workings of the above code. 50bf8d8dc4843c19fe4a887c5b2e91c0ab2e5723 diff --git a/lib/xvmc/xvmc_unichrome.c b/lib/xvmc/xvmc_unichrome.c index f43b44e..d034715 100644 --- a/lib/xvmc/xvmc_unichrome.c +++ b/lib/xvmc/xvmc_unichrome.c @@ -35,6 +35,7 @@ #include <X11/extensions/vldXvMC.h> #include "xvmce.h" +#include "xvmce_proto.h" /* Oh you must be kidding me. What a bunch of clueless idiots. */ extern Status _xvmc_create_context(Display *dpy, XvMCContext *context, @@ -61,6 +62,9 @@ static int XvMC_ErrorBase; static int XvMCE_EventBase; static int XvMCE_ErrorBase; +static XID current_surface_id = 0; +static int current_surface_size = 0; + /* * */ @@ -109,12 +113,10 @@ XvMCCreateContext(Display *display, XvPortID port, int surface_type_id, /* now call the old, raped X extension hooks */ status =_xvmc_create_context(display, context, &priv_count, &priv_data); - if (status != Success) { + if (status != Success) printf("%s: _xvmc_create_context failed: %d\n", __func__, status); - return status; - } - return Success; + return status; } @@ -129,7 +131,7 @@ XvMCDestroyContext(Display *display, XvMCContext *context) if (!display || !context) return BadValue; - return Success; + return _xvmc_destroy_context(display, context); } @@ -139,6 +141,10 @@ XvMCDestroyContext(Display *display, XvMCContext *context) _X_EXPORT Status XvMCCreateSurface(Display *display, XvMCContext *context, XvMCSurface *surface) { + Status status; + int priv_count; + CARD32 *priv_data = NULL; + printf("%s\n", __func__); if (!display || !context) @@ -147,7 +153,14 @@ XvMCCreateSurface(Display *display, XvMCContext *context, XvMCSurface *surface) if (!surface) return XvMCBadSurface; - return Success; + status = _xvmc_create_surface(display, context, surface, + &priv_count, &priv_data); + if (status != Success) + printf("%s: _xvmc_create_surface failed: %d\n", __func__, status); + + printf("%s: Claimed 0x%08X.\n", __func__, surface->surface_id); + + return status; } @@ -159,7 +172,12 @@ XvMCDestroySurface(Display *display, XvMCSurface *surface) { printf("%s\n", __func__); - return Success; + if (!display || !surface) + return BadValue; + + printf("%s: releasing 0x%08X\n", __func__, surface->surface_id); + + return _xvmc_destroy_surface(display, surface); } /* @@ -171,7 +189,7 @@ XvMCPutSurface(Display *display, XvMCSurface *surface, Drawable draw, unsigned short src_h, short dst_x, short dst_y, unsigned short dst_w, unsigned short dst_h, int flags) { - printf("%s\n", __func__); + printf("%s: 0x%08X\n", __func__, surface->surface_id); return Success; } @@ -295,7 +313,7 @@ XvMCBlendSubpicture2(Display *display, XvMCSurface *source, XvMCSurface *target, _X_EXPORT Status XvMCSyncSurface(Display *display, XvMCSurface *surface) { - printf("%s\n", __func__); + printf("%s: 0x%08X\n", __func__, surface->surface_id); return Success; } @@ -307,7 +325,7 @@ XvMCSyncSurface(Display *display, XvMCSurface *surface) _X_EXPORT Status XvMCFlushSurface(Display *display, XvMCSurface *surface) { - //printf("%s\n", __func__); + printf("%s: 0x%08X (%dbytes)\n", __func__, surface->surface_id, current_surface_size); return Success; } @@ -384,7 +402,7 @@ _X_EXPORT Status XvMCCreateBlocks(Display *display, XvMCContext *context, unsigned int num_blocks, XvMCBlockArray *blocks) { - printf("%s\n", __func__); + fprintf(stderr, "%s is not implemented.\n", __func__); return BadImplementation; } @@ -396,7 +414,7 @@ XvMCCreateBlocks(Display *display, XvMCContext *context, _X_EXPORT Status XvMCDestroyBlocks(Display *display, XvMCBlockArray *blocks) { - printf("%s\n", __func__); + fprintf(stderr, "%s is not implemented.\n", __func__); return Success; } @@ -409,7 +427,7 @@ _X_EXPORT Status XvMCCreateMacroBlocks(Display *display, XvMCContext *context, unsigned int num_blocks, XvMCMacroBlockArray *blocks) { - printf("%s\n", __func__); + fprintf(stderr, "%s is not implemented.\n", __func__); return BadImplementation; } @@ -421,7 +439,7 @@ XvMCCreateMacroBlocks(Display *display, XvMCContext *context, _X_EXPORT Status XvMCDestroyMacroBlocks(Display *display, XvMCMacroBlockArray *blocks) { - printf("%s\n", __func__); + fprintf(stderr, "%s is not implemented.\n", __func__); return Success; } @@ -458,7 +476,6 @@ XvMCGetAttribute(Display *display, XvMCContext *context, } - /* * */ @@ -467,16 +484,17 @@ XvMCBeginSurface(Display *display, XvMCContext *context, XvMCSurface *target, XvMCSurface *past, XvMCSurface *future, const XvMCMpegControl *control) { - static int i = 0; - - i++; + if (current_surface_id == target->surface_id) + return BadValue; - printf("%s\n", __func__); + printf("%s: 0x%08X (0x%08X <- | -> 0x%08X)\n", __func__, + target->surface_id, + past ? past->surface_id : 0, + future? future->surface_id : 0); + current_surface_id = target->surface_id; + current_surface_size = 0; - if (i & 0x01) - return Success; - else - return BadValue; + return Success; } @@ -487,9 +505,48 @@ _X_EXPORT Status XvMCLoadQMatrix(Display *display, XvMCContext *context, const XvMCQMatrix *qmatrix) { - printf("%s\n", __func__); + Status status = Success; - return BadImplementation; + if (!display || !context) + return XvMCBadContext; + + if (!qmatrix) + return BadValue; + + if (qmatrix->load_intra_quantiser_matrix) { + status = XvMCEQMatrixSend(display, context->port, XVMCE_QMATRIX_INTRA, + qmatrix->intra_quantiser_matrix); + if (status != Success) + printf("%s: XvMCEQMatrixSend %s failed: %d\n", __func__, + "INTRA", status); + } + + if (qmatrix->load_non_intra_quantiser_matrix) { + status = XvMCEQMatrixSend(display, context->port, XVMCE_QMATRIX_NONINTRA, + qmatrix->non_intra_quantiser_matrix); + if (status != Success) + printf("%s: XvMCEQMatrixSend %s failed: %d\n", __func__, + "NONINTRA", status); + } + + if (qmatrix->load_chroma_intra_quantiser_matrix) { + status = XvMCEQMatrixSend(display, context->port, XVMCE_QMATRIX_INTRA_CHROMA, + qmatrix->chroma_intra_quantiser_matrix); + if (status != Success) + printf("%s: XvMCEQMatrixSend %s failed: %d\n", __func__, + "INTRA_CHROMA", status); + } + + if (qmatrix->load_chroma_non_intra_quantiser_matrix) { + status = XvMCEQMatrixSend(display, context->port, XVMCE_QMATRIX_NONINTRA_CHROMA, + qmatrix->chroma_non_intra_quantiser_matrix); + if (status != Success) + printf("%s: XvMCEQMatrixSend %s failed: %d\n", __func__, + "NONINTRA_CHROME", status); + } + + /* return last failure/success */ + return status; } @@ -500,7 +557,10 @@ _X_EXPORT Status XvMCPutSlice(Display *display, XvMCContext *context, char *slice, int size) { - //printf("%s\n", __func__); + printf("%s:0x%08X (%dbytes)\n", __func__, + current_surface_id, size); + + current_surface_size += size; return Success; } @@ -513,7 +573,10 @@ _X_EXPORT Status XvMCPutSlice2(Display *display, XvMCContext *context, char *slice, int size, int slicecode) { - //printf("%s\n", __func__); + printf("%s: 0x%08X: %02X (%dbytes)\n", __func__, + current_surface_id, slicecode, size); + + current_surface_size += size; return Success; } diff --git a/lib/xvmc/xvmce.c b/lib/xvmc/xvmce.c index 0576e60..69827d1 100644 --- a/lib/xvmc/xvmce.c +++ b/lib/xvmc/xvmce.c @@ -30,6 +30,7 @@ #include <X11/Xlib.h> #include <X11/extensions/Xv.h> #include <X11/extensions/Xvlib.h> +#include <X11/extensions/vldXvMC.h> #include <stdio.h> @@ -78,7 +79,7 @@ XEXT_GENERATE_FIND_DISPLAY(XvMCEFindDisplay, XvMCEExtInfo, XVMCE_EXT_NAME, dpy->bufptr += SIZEOF(xvmce##name##Req);\ dpy->request++ -#define XvmceGetReqExtra(name, req, len) \ +#define XvMCEGetReqExtra(name, req, len) \ WORD64ALIGN\ if ((dpy->bufptr + SIZEOF(xvmce##name##Req)) > dpy->bufmax)\ _XFlush(dpy);\ @@ -131,3 +132,31 @@ XvMCEQueryExtension(Display *dpy, int *Version, int *Release, return status; } + +/* + * + */ +Status +XvMCEQMatrixSend(Display *dpy, XvPortID port, char type, + const unsigned char qmatrix[64]) +{ + XExtDisplayInfo *info = XvMCEFindDisplay(dpy); + xvmceQMatrixSendReq *req; + + XvMCECheckExtension(dpy, info, BadImplementation); + + LockDisplay(dpy); + + XvMCEGetReqExtra(QMatrixSend, req, 64); + + req->Port = port; + req->Type = type; + + _XSend(dpy, (char *) qmatrix, 64); + + UnlockDisplay(dpy); + SyncHandle(); + + return Success; +} + diff --git a/lib/xvmc/xvmce.h b/lib/xvmc/xvmce.h index b196faf..49038c2 100644 --- a/lib/xvmc/xvmce.h +++ b/lib/xvmc/xvmce.h @@ -24,6 +24,9 @@ #ifndef XVMCE_H #define XVMCE_H -Status XvMCEQueryExtension(Display *dpy, int *Version, int *Release, int *event_basep, int *error_basep); +Status XvMCEQueryExtension(Display *display, int *Version, int *Release, + int *event_basep, int *error_basep); +Status XvMCEQMatrixSend(Display *display, XvPortID port, char type, + const unsigned char qmatrix[64]); #endif /* XVMCE_H */ diff --git a/lib/xvmc/xvmce_proto.h b/lib/xvmc/xvmce_proto.h index 38c42d6..bd4706b 100644 --- a/lib/xvmc/xvmce_proto.h +++ b/lib/xvmc/xvmce_proto.h @@ -33,6 +33,7 @@ #define XVMCE_RELEASE 0 #define xvmce_QueryExtension 0 +#define xvmce_QMatrixSend 1 /* * Version, are we compatible? @@ -58,4 +59,20 @@ typedef struct { } xvmceQueryExtensionReply; #define sz_xvmceQueryExtensionReply 32 +/* + * QMatrixSend, upload a Quantization matrix to the MPEG engine. + */ +typedef struct { + CARD8 reqType; + CARD8 xvmceReqType; /* xvmce_QMatrixSend */ + CARD16 length B16; + CARD32 Port B32; +#define XVMCE_QMATRIX_INTRA 0 +#define XVMCE_QMATRIX_NONINTRA 1 +#define XVMCE_QMATRIX_INTRA_CHROMA 2 +#define XVMCE_QMATRIX_NONINTRA_CHROMA 3 + CARD32 Type B32; +} xvmceQMatrixSendReq; +#define sz_xvmceQMatrixSendReq 12 + #endif /* XVMCE_PROTO_H */ diff --git a/src/via_xvmc.c b/src/via_xvmc.c index c98dab2..1abe972 100644 --- a/src/via_xvmc.c +++ b/src/via_xvmc.c @@ -54,13 +54,13 @@ struct XvMCEPrivates static int XvMCEProcQueryExtension(ClientPtr client) { - ExtensionEntry *MPEGExt; + ExtensionEntry *XvMCE_Ext; xvmceQueryExtensionReply rep; REQUEST_SIZE_MATCH(xvmceQueryExtensionReq); - MPEGExt = CheckExtension(XVMCE_EXT_NAME); - if(!MPEGExt || !MPEGExt->extPrivate) + XvMCE_Ext = CheckExtension(XVMCE_EXT_NAME); + if(!XvMCE_Ext || !XvMCE_Ext->extPrivate) return BadMatch; rep.type = X_Reply; @@ -78,6 +78,49 @@ XvMCEProcQueryExtension(ClientPtr client) * */ static int +XvMCEProcQMatrixSend(ClientPtr client) +{ + ExtensionEntry *XvMCE_Ext; + struct XvMCEPrivates *Private; + ScrnInfoPtr pScrn; + XvPortPtr Port; + + REQUEST(xvmceQMatrixSendReq); + REQUEST_AT_LEAST_SIZE(xvmceQMatrixSendReq); + + XvMCE_Ext = CheckExtension(XVMCE_EXT_NAME); + if (!XvMCE_Ext || !XvMCE_Ext->extPrivate) { + xf86Msg(X_WARNING, "%s: Extension not initialised.\n", __func__); + return BadMatch; + } + + Private = XvMCE_Ext->extPrivate; + pScrn = xf86Screens[Private->scrnIndex]; + + /* Does our client own this port? */ + Port = LookupIDByType(stuff->Port, XvGetRTPort()); + if (!Port) { + xf86DrvMsg(pScrn->scrnIndex, X_WARNING, + "%s: Client doesn't own this Xv Port.\n", __func__); + return BadAccess; + } + + /* check size: 16 = 64Bytes / 4, from 8x8 QMatrix */ + if (client->req_len != ((sz_xvmceQMatrixSendReq >> 2) + 16)) { + xf86DrvMsg(pScrn->scrnIndex, X_WARNING, + "%s: Request has wrong length.\n", __func__); + return BadLength; + } + + ViaDebug(pScrn->scrnIndex, "%s: type %1X\n", __func__, stuff->Type); + + return (client->noClientException); +} + +/* + * + */ +static int XvMCEHandler(ClientPtr client) { REQUEST(xReq); @@ -85,6 +128,8 @@ XvMCEHandler(ClientPtr client) switch (stuff->data) { case xvmce_QueryExtension: return XvMCEProcQueryExtension(client); + case xvmce_QMatrixSend: + return XvMCEProcQMatrixSend(client); default: break; } @@ -107,11 +152,11 @@ XvMCESHandler(ClientPtr client) * */ static void -XvMCEClose(ExtensionEntry *MPEGExt) +XvMCEClose(ExtensionEntry *XvMCE_Ext) { - if (MPEGExt->extPrivate) { - xfree(MPEGExt->extPrivate); - MPEGExt->extPrivate = NULL; + if (XvMCE_Ext->extPrivate) { + xfree(XvMCE_Ext->extPrivate); + XvMCE_Ext->extPrivate = NULL; } } @@ -166,6 +211,14 @@ static XF86MCSurfaceInfoRec ViaMCMpeg2Surface = { static XF86MCSurfaceInfoPtr ViaMCSurfaces[1] = {&ViaMCMpeg2Surface}; +/* Just some placeholders to be able to flesh out the library */ +static XID ViaMCContextID = 0; +static int ViaMCContextWidth = 0; +static int ViaMCContextHeight = 0; + +#define VIAMC_SURFACE_COUNT 8 +static XID ViaMCSurfacesIDs[VIAMC_SURFACE_COUNT] = { 0, 0, 0, 0, 0, 0, 0, 0}; + /* * */ @@ -173,12 +226,17 @@ static int ViaMCCreateContext(ScrnInfoPtr pScrn, XvMCContextPtr context, int *num_priv, CARD32 **priv) { - VIAFUNC(pScrn); - ViaDebug(pScrn->scrnIndex, "%s: adapter %d, surfaceid %08X (%dx%d); %08X\n", __func__, context->adapt_num, context->surface_type_id, context->width, context->height, context->flags); + if (ViaMCContextID) + return BadAccess; + + ViaMCContextID = context->context_id; + ViaMCContextWidth = context->height; + ViaMCContextHeight = context->flags; + return Success; } @@ -189,6 +247,13 @@ static void ViaMCDestroyContext(ScrnInfoPtr pScrn, XvMCContextPtr context) { VIAFUNC(pScrn); + + if (ViaMCContextID != context->context_id) + return; + + ViaMCContextID = 0; + ViaMCContextWidth = 0; + ViaMCContextHeight = 0; } /* @@ -198,9 +263,25 @@ static int ViaMCCreateSurface(ScrnInfoPtr pScrn, XvMCSurfacePtr surface, int *num_priv, CARD32 **priv) { + int i; + VIAFUNC(pScrn); - return BadAlloc; + if (ViaMCContextID != surface->context->context_id) + return BadAccess; + + for (i = 0; i < VIAMC_SURFACE_COUNT; i++) + if (!ViaMCSurfacesIDs[i]) + break; + + if (i == VIAMC_SURFACE_COUNT) + return BadAlloc; + + ViaDebug(pScrn->scrnIndex, "%s: claimed %d (%08X)\n", + __func__, i, surface->surface_id); + ViaMCSurfacesIDs[i] = surface->surface_id; + + return Success; } /* @@ -209,7 +290,23 @@ ViaMCCreateSurface(ScrnInfoPtr pScrn, XvMCSurfacePtr surface, static void ViaMCDestroySurface(ScrnInfoPtr pScrn, XvMCSurfacePtr surface) { + int i; + VIAFUNC(pScrn); + + if (ViaMCContextID != surface->context->context_id) + return; + + for (i = 0; i < VIAMC_SURFACE_COUNT; i++) + if (ViaMCSurfacesIDs[i] == surface->surface_id) + break; + + if (i == VIAMC_SURFACE_COUNT) + return; + + ViaDebug(pScrn->scrnIndex, "%s: released %d (%08X)\n", + __func__, i, surface->surface_id); + ViaMCSurfacesIDs[i] = 0; } /* ----------------------------------------------------------------------- commit 430a114355c0ae23bd2c4a29221ff4f31ed99e5b Author: Luc Verhaegen <li...@sk...> Date: Mon Aug 3 15:46:57 2009 +0200 XvMC: xvmc_unichrome.c: order functions logically. 430a114355c0ae23bd2c4a29221ff4f31ed99e5b diff --git a/lib/xvmc/xvmc_unichrome.c b/lib/xvmc/xvmc_unichrome.c index d034715..6d7c827 100644 --- a/lib/xvmc/xvmc_unichrome.c +++ b/lib/xvmc/xvmc_unichrome.c @@ -211,13 +211,11 @@ XvMCHideSurface(Display *display, XvMCSurface *surface) * */ _X_EXPORT Status -XvMCCreateSubpicture(Display *display, XvMCContext *context, - XvMCSubpicture *subpicture, unsigned short width, - unsigned short height, int xvimage_id) +XvMCSyncSurface(Display *display, XvMCSurface *surface) { - printf("%s\n", __func__); + printf("%s: 0x%08X\n", __func__, surface->surface_id); - return BadImplementation; + return Success; } @@ -225,13 +223,11 @@ XvMCCreateSubpicture(Display *display, XvMCContext *context, * */ _X_EXPORT Status -XvMCClearSubpicture(Display *display, XvMCSubpicture *subpicture, - short x, short y, unsigned short width, - unsigned short height, unsigned int flags) +XvMCFlushSurface(Display *display, XvMCSurface *surface) { - printf("%s\n", __func__); + printf("%s: 0x%08X (%dbytes)\n", __func__, surface->surface_id, current_surface_size); - return BadImplementation; + return Success; } @@ -239,10 +235,7 @@ XvMCClearSubpicture(Display *display, XvMCSubpicture *subpicture, * */ _X_EXPORT Status -XvMCCompositeSubpicture(Display *display, XvMCSubpicture *subpicture, - XvImage *image, short src_x, short src_y, - unsigned short width, unsigned short height, - short dst_x, short dst_y) +XvMCGetSurfaceStatus(Display *display, XvMCSurface *surface, int *stat) { printf("%s\n", __func__); @@ -254,9 +247,19 @@ XvMCCompositeSubpicture(Display *display, XvMCSubpicture *subpicture, * */ _X_EXPORT Status -XvMCDestroySubpicture(Display *display, XvMCSubpicture *subpicture) +XvMCBeginSurface(Display *display, XvMCContext *context, XvMCSurface *target, + XvMCSurface *past, XvMCSurface *future, + const XvMCMpegControl *control) { - printf("%s\n", __func__); + if (current_surface_id == target->surface_id) + return BadValue; + + printf("%s: 0x%08X (0x%08X <- | -> 0x%08X)\n", __func__, + target->surface_id, + past ? past->surface_id : 0, + future? future->surface_id : 0); + current_surface_id = target->surface_id; + current_surface_size = 0; return Success; } @@ -266,12 +269,15 @@ XvMCDestroySubpicture(Display *display, XvMCSubpicture *subpicture) * */ _X_EXPORT Status -XvMCSetSubpicturePalette(Display *display, XvMCSubpicture *subpicture, - unsigned char *palette) +XvMCPutSlice(Display *display, XvMCContext *context, + char *slice, int size) { - printf("%s\n", __func__); + printf("%s:0x%08X (%dbytes)\n", __func__, + current_surface_id, size); - return BadImplementation; + current_surface_size += size; + + return Success; } @@ -279,43 +285,82 @@ XvMCSetSubpicturePalette(Display *display, XvMCSubpicture *subpicture, * */ _X_EXPORT Status -XvMCBlendSubpicture(Display *display, XvMCSurface *surface, - XvMCSubpicture *subpicture, short sub_x, short sub_y, - unsigned short sub_width, unsigned short sub_h, - short surface_x, short surface_y, - unsigned short surface_width, unsigned short surface_h) +XvMCPutSlice2(Display *display, XvMCContext *context, + char *slice, int size, int slicecode) { - printf("%s\n", __func__); + printf("%s: 0x%08X: %02X (%dbytes)\n", __func__, + current_surface_id, slicecode, size); - return BadImplementation; -} + current_surface_size += size; + return Success; +} /* * */ _X_EXPORT Status -XvMCBlendSubpicture2(Display *display, XvMCSurface *source, XvMCSurface *target, - XvMCSubpicture *subpicture, short sub_x, short sub_y, - unsigned short sub_width, unsigned sh... [truncated message content] |
From: <li...@fr...> - 2009-11-04 02:10:08
|
Reporting from xf86-video-unichrome: Main unichrome.sf.net repository Please visit: http://cgit.freedesktop.org/~libv/xf86-video-unichrome Or get your own copy by using: git-clone git://anongit.freedesktop.org/~libv/xf86-video-unichrome The branch, master has been updated via 510bc19 noDRI: fix build broken in 4a72fbb5898 from 70530ab Wrapper: fix wrapper under DoConfigure circumstances. Summary of changes: src/via_driver.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 510bc196baeb3a5fae5e09214a71123e532cffb5 Author: Luc Verhaegen <li...@sk...> Date: Wed Nov 4 03:15:09 2009 +0100 noDRI: fix build broken in 4a72fbb5898 510bc196baeb3a5fae5e09214a71123e532cffb5 diff --git a/src/via_driver.c b/src/via_driver.c index 8622ddb..a83cbed 100644 --- a/src/via_driver.c +++ b/src/via_driver.c @@ -2215,9 +2215,11 @@ VIAScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) if (pVia->Crtc[1]->Active) ViaOutputsPower(pVia->Crtc[1], FALSE); +#ifdef HAVE_DRI /* Hack: need to figure out proper ordering for WriteMode, 3DInit and DRI Init */ pVia->directRenderingEnabled = pVia->UseDRI; +#endif VIAWriteMode(pScrn, pScrn->currentMode); ----------------------------------------------------------------------- |
From: <li...@fr...> - 2009-11-04 01:49:27
|
Reporting from xf86-video-unichrome: Main unichrome.sf.net repository Please visit: http://cgit.freedesktop.org/~libv/xf86-video-unichrome Or get your own copy by using: git-clone git://anongit.freedesktop.org/~libv/xf86-video-unichrome The branch, master has been updated via 70530ab Wrapper: fix wrapper under DoConfigure circumstances. from 4ce10d4 AGP: Fix up PCI message in VIADRIFinishScreenInit. Summary of changes: src/via_driver.c | 6 ++++-- wrapper/wrapper.c | 12 ++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 70530ab3720f96ed11a5f7e982a202e19c746c54 Author: Luc Verhaegen <li...@sk...> Date: Wed Nov 4 02:36:03 2009 +0100 Wrapper: fix wrapper under DoConfigure circumstances. xf86MatchDevice returns one then, but the pointer is still nulled. Accessing the first element of NULL then leads to fun. Also fix up the DoConfigure message of preinit (where we stop PreInit from being abused for monitor configuring). 70530ab3720f96ed11a5f7e982a202e19c746c54 diff --git a/src/via_driver.c b/src/via_driver.c index 0501b49..8622ddb 100644 --- a/src/via_driver.c +++ b/src/via_driver.c @@ -1101,8 +1101,10 @@ VIAPreInit(ScrnInfoPtr pScrn, int flags) VIAFUNC(pScrn); if (flags & PROBE_DETECT) { - xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "libv doesn't believe in " - "PROBE_DETECT calling PreInit.\n"); + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Skipping DDC probing in xserver configure stage.\n" + " libv does not believe in preconfigured monitors; " + "They should only be used\n as a last resort.\n"); return FALSE; } diff --git a/wrapper/wrapper.c b/wrapper/wrapper.c index 4a2c6b8..a443165 100644 --- a/wrapper/wrapper.c +++ b/wrapper/wrapper.c @@ -76,6 +76,18 @@ WRAP_REPLACE(Setup)( { static int Initialised = FALSE; + if (xf86DoConfigure && xf86DoConfigurePass1) { + xf86Msg(X_WARNING, "%s: xserver is configuring, skipping wrapper" + " driver.\n", __func__); + + if (errmaj) + *errmaj = LDR_NOERROR; + if (errmin) + *errmin = 0; + + return NULL; + } + if (Initialised) { if (errmaj) *errmaj = LDR_ONCEONLY; ----------------------------------------------------------------------- |
From: Luc V. <li...@sk...> - 2009-10-21 15:40:15
|
On Wed, Oct 21, 2009 at 05:34:06PM +0200, Luc Verhaegen wrote: > On Wed, Oct 21, 2009 at 03:21:51PM +0200, Xavier Bachelot wrote: > > > > Ah, ok. So the code is in the same state as last time we talked about it. > > This xuma branch, yes; it's a relic, providing the history for code that > will be pushed as soon as i have gone through some flashrom stuff that > has been piling up now, and i have finished up the last issues with it. > > > Which 3 variants of the mpeg engine is it supporting ? > > Which are the level of acceleration supported ? > > I'm definitely interested in giving it a run on my hardware. I have 2 of > > the engine variants available : first generation CLE266 and 3rd generation > > VX800 (both 32 and 64 bits) and VX855. > > I only implement Xv for VT3122, VT7205 and VT3108 (CLE266, KM400/P4M800, > and K8M800), only VT3122 and VT3108 have full video engines and have > full mpeg slice decoding capability (VT7205 has only one overlay engine > and only mpeg2 iDCT and macroblock), so only VT3122 and VT3108 have > working XvMC atm. > > So i support slice decoding, like the via XvMC implementation, i just > do not support any video at all on vt3118 and newer yet. > > But the implementation is such that i do not have to completely reinvent > the wheel again for other engines, there is less than 1kloc that would > have to be changed (and maybe a few interfaces changes) for slice > decoding to work there too. > > > Yes, XvMC is an half baked solution for early mpeg. Supposedly libva and > > libvdpau are much better tailored for the modern video encoding formats, > > not sure which one will win in the end. Or maybe even XvBA if it stops > > being a vaporware but I won't risk even a single cent on that ;-) > > About the 3 new APIs, let them fight it out first, there is a lot of > other work to do anyway. Nobody, except maybe the poor old Eden users > care about mpeg2 decoding anyway. > > Luc Verhaegen Ah, the list was taken out it seems. Luc Verhaegen. |