VirtualBox

Changeset 22087 in vbox for trunk/src


Ignore:
Timestamp:
Aug 7, 2009 8:41:49 PM (16 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
50836
Message:

Additions/x11/vboxvideo_13: merged back vboxvideo_15 parts of r43690: Additions/x11/vboxvideo: more DRI updates

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Additions/x11/vboxvideo/vboxvideo_13.c

    r22086 r22087  
    5151 * Authors: Paulo César Pereira de Andrade <[email protected]>
    5252 */
    53 
    54 #ifdef DEBUG_michael
    55 # define DEBUG_VIDEO 1
    56 #endif
    57 
    58 #ifdef DEBUG_VIDEO
    59 
    60 #define TRACE \
    61 do { \
    62     xf86Msg(X_INFO, __PRETTY_FUNCTION__); \
    63     xf86Msg(X_INFO, ": entering\n"); \
    64 } while(0)
    65 #define TRACE2 \
    66 do { \
    67     xf86Msg(X_INFO, __PRETTY_FUNCTION__); \
    68     xf86Msg(X_INFO, ": leaving\n"); \
    69 } while(0)
    70 #define TRACE3(...) \
    71 do { \
    72     xf86Msg(X_INFO, __PRETTY_FUNCTION__); \
    73     xf86Msg(X_INFO, __VA_ARGS__); \
    74 } while(0)
    75 
    76 #else  /* DEBUG_VIDEO not defined */
    77 
    78 #define TRACE       do { } while(0)
    79 #define TRACE2      do { } while(0)
    80 #define TRACE3(...) do { } while(0)
    81 
    82 #endif  /* DEBUG_VIDEO not defined */
    83 
    84 #define BOOL_STR(a) ((a) ? "TRUE" : "FALSE")
    8553
    8654#include "xorg-server.h"
     
    237205    Bool rc = TRUE;
    238206
    239     TRACE3("width=%d, height=%d\n", width, height);
     207    TRACE_LOG("width=%d, height=%d\n", width, height);
    240208    /* We only support horizontal resolutions which are a multiple of 8.  Round down if
    241209       necessary. */
     
    278246        scrn->displayWidth = width;
    279247    }
    280     TRACE3("returning %s\n", rc ? "TRUE" : "FALSE");
     248    TRACE_LOG("returning %s\n", rc ? "TRUE" : "FALSE");
    281249    return rc;
    282250}
     
    302270
    303271    (void) mode;
    304     TRACE3("name=%s, HDisplay=%d, VDisplay=%d\n", adjusted_mode->name,
     272    TRACE_LOG("name=%s, HDisplay=%d, VDisplay=%d\n", adjusted_mode->name,
    305273           adjusted_mode->HDisplay, adjusted_mode->VDisplay);
    306274    /* We only support horizontal resolutions which are a multiple of 8.  Round down if
     
    325293{
    326294    (void) mode;
    327     TRACE3("name=%s, HDisplay=%d, VDisplay=%d, x=%d, y=%d\n", adjusted_mode->name,
     295    TRACE_LOG("name=%s, HDisplay=%d, VDisplay=%d, x=%d, y=%d\n", adjusted_mode->name,
    328296           adjusted_mode->HDisplay, adjusted_mode->VDisplay, x, y);
    329297    VBOXSetMode(crtc->scrn, adjusted_mode);
     
    378346    ScrnInfoPtr pScrn = output->scrn;
    379347    int rc = MODE_OK;
    380     TRACE3("HDisplay=%d, VDisplay=%d\n", mode->HDisplay, mode->VDisplay);
     348    TRACE_LOG("HDisplay=%d, VDisplay=%d\n", mode->HDisplay, mode->VDisplay);
    381349    /* We always like modes specified by the user in the configuration
    382350     * file, as doing otherwise is likely to annoy people. */
     
    387355       )
    388356        rc = MODE_BAD;
    389     TRACE3("returning %s\n", MODE_OK == rc ? "MODE_OK" : "MODE_BAD");
     357    TRACE_LOG("returning %s\n", MODE_OK == rc ? "MODE_OK" : "MODE_BAD");
    390358    return rc;
    391359}
     
    413381                      Bool isPreferred, Bool isUserDef)
    414382{
    415     TRACE3("pszName=%s, x=%d, y=%d\n", pszName, x, y);
     383    TRACE_LOG("pszName=%s, x=%d, y=%d\n", pszName, x, y);
    416384    DisplayModePtr pMode = xnfcalloc(1, sizeof(DisplayModeRec));
    417385
     
    449417    VBOXPtr pVBox = VBOXGetRec(pScrn);
    450418
    451     TRACE;
     419    TRACE_ENTRY();
    452420    if (vbox_device_available(pVBox))
    453421    {
     
    474442                                 FALSE, TRUE);
    475443    }
    476 
    477     TRACE2;
     444    TRACE_EXIT();
    478445    return pModes;
    479446}
     
    551518};
    552519
     520#ifdef VBOX_DRI
     521static const char *drmSymbols[] = {
     522    "drmFreeVersion",
     523    "drmGetVersion",
     524    NULL
     525};
     526
     527static const char *driSymbols[] = {
     528    "DRICloseScreen",
     529    "DRICreateInfoRec",
     530    "DRIDestroyInfoRec",
     531    "DRIFinishScreenInit",
     532    "DRIGetSAREAPrivate",
     533    "DRILock",
     534    "DRIMoveBuffersHelper",
     535    "DRIQueryVersion",
     536    "DRIScreenInit",
     537    "DRIUnlock",
     538    "GlxSetVisualConfigs",
     539    "DRICreatePCIBusID",
     540    NULL
     541};
     542#endif
     543
    553544#ifdef XFree86LOADER
    554545/* Module loader interface */
     
    594585                          vbeSymbols,
    595586                          ramdacSymbols,
     587#ifdef VBOX_DRI
     588                          drmSymbols, driSymbols,
     589#endif
    596590                          NULL);
    597591        return (pointer)TRUE;
     
    629623    ScrnInfoPtr pScrn;
    630624
    631     TRACE;
     625    TRACE_ENTRY();
    632626    pScrn = xf86ConfigPciEntity(NULL, 0, entity_num, VBOXPCIchipsets,
    633627                                NULL, NULL, NULL, NULL, NULL);
     
    651645    }
    652646
    653     TRACE3("returning %s\n", BOOL_STR(pScrn != NULL));
     647    TRACE_LOG("returning %s\n", BOOL_STR(pScrn != NULL));
    654648    return (pScrn != NULL);
    655649}
     
    695689                        pScrn->name          = VBOX_NAME;
    696690                        pScrn->Probe         = VBOXProbe;
    697                         pScrn->PreInit       = VBOXPreInit;
     691            pScrn->PreInit       = VBOXPreInit;
    698692                        pScrn->ScreenInit    = VBOXScreenInit;
    699693                        pScrn->SwitchMode    = VBOXSwitchMode;
     
    909903    pScrn->bitmapBitOrder = BITMAP_BIT_ORDER;
    910904
     905#ifdef VBOX_DRI
     906    /* Load the dri module. */
     907    if (xf86LoadSubModule(pScrn, "dri")) {
     908        xf86LoaderReqSymLists(driSymbols, drmSymbols, NULL);
     909    }
     910#endif
    911911    return (TRUE);
    912912}
     
    927927    VBOXPtr pVBox = VBOXGetRec(pScrn);
    928928
    929     TRACE3("enable=%s\n", enable ? "TRUE" : "FALSE");
     929    TRACE_LOG("enable=%s\n", enable ? "TRUE" : "FALSE");
    930930    pVBox->accessEnabled = enable;
    931931    pVBox->EnableDisableFBAccess(scrnIndex, enable);
    932     TRACE2;
     932    TRACE_EXIT();
    933933}
    934934
     
    985985    if (!miSetPixmapDepths())
    986986        return (FALSE);
     987
     988#ifdef VBOX_DRI
     989    pVBox->useDRI = VBOXDRIScreenInit(scrnIndex, pScreen, pVBox);
     990#endif
    987991
    988992    /* I checked in the sources, and XFree86 4.2 does seem to support
     
    10771081        /* Report the largest resolution that we support */
    10781082    }
     1083
     1084#ifdef VBOX_DRI
     1085    if (pVBox->useDRI)
     1086        pVBox->useDRI = VBOXDRIFinishScreenInit(pScreen);
     1087#endif
    10791088    return (TRUE);
    10801089}
     
    10871096    bool rc;
    10881097
    1089     TRACE;
     1098    TRACE_ENTRY();
    10901099    pVBox->vtSwitch = FALSE;
     1100#ifdef VBOX_DRI
     1101    if (pVBox->useDRI)
     1102        DRIUnlock(screenInfo.screens[scrnIndex]);
     1103#endif
    10911104    rc = xf86SetDesiredModes(pScrn);
    1092     TRACE3("returning %s\n", rc ? "TRUE" : "FALSE");
     1105    TRACE_LOG("returning %s\n", rc ? "TRUE" : "FALSE");
    10931106    return rc;
    10941107}
     
    11001113    VBOXPtr pVBox = VBOXGetRec(pScrn);
    11011114
    1102     TRACE;
     1115    TRACE_ENTRY();
    11031116    pVBox->vtSwitch = TRUE;
    11041117    VBOXSaveRestore(pScrn, MODE_RESTORE);
     
    11091122        vboxDisableGraphicsCap(pVBox);
    11101123    }
    1111     TRACE2;
     1124#ifdef VBOX_DRI
     1125    if (pVBox->useDRI)
     1126        DRILock(screenInfo.screens[scrnIndex], 0);
     1127#endif
     1128    TRACE_EXIT();
    11121129}
    11131130
     
    11171134    ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
    11181135    VBOXPtr pVBox = VBOXGetRec(pScrn);
     1136
     1137#ifdef VBOX_DRI
     1138    if (pVBox->useDRI)
     1139        VBOXDRICloseScreen(pScreen, pVBox);
     1140    pVBox->useDRI = false;
     1141#endif
    11191142
    11201143    if (vbox_device_available(pVBox))
     
    11631186    float v;
    11641187
    1165     TRACE3("HDisplay=%d, VDisplay=%d, flag=%s, pass=%d\n",
     1188    TRACE_LOG("HDisplay=%d, VDisplay=%d, flag=%s, pass=%d\n",
    11661189           p->HDisplay, p->VDisplay, flag ? "TRUE" : "FALSE", pass);
    11671190    if (pass != MODECHECK_FINAL) {
     
    11971220        xf86DrvMsg(scrn, X_WARNING, "Graphics mode %s rejected by the X server\n", p->name);
    11981221    }
    1199     TRACE3("returning %d\n", ret);
     1222    TRACE_LOG("returning %d\n", ret);
    12001223    return ret;
    12011224}
     
    12081231    Bool rc;
    12091232
    1210     TRACE3("HDisplay=%d, VDisplay=%d\n", pMode->HDisplay, pMode->VDisplay);
     1233    TRACE_LOG("HDisplay=%d, VDisplay=%d\n", pMode->HDisplay, pMode->VDisplay);
    12111234    pScrn = xf86Screens[scrnIndex];  /* Why does X have three ways of refering to the screen? */
    12121235    pVBox = VBOXGetRec(pScrn);
     
    12181241    if (pVBox->accessEnabled)
    12191242        pVBox->EnableDisableFBAccess(scrnIndex, TRUE);
    1220     TRACE3("returning %s\n", rc ? "TRUE" : "FALSE");
     1243    TRACE_LOG("returning %s\n", rc ? "TRUE" : "FALSE");
    12211244    return rc;
    12221245}
     
    12321255
    12331256    int bpp = pScrn->depth == 24 ? 32 : 16;
    1234     TRACE3("HDisplay=%d, VDisplay=%d\n", pMode->HDisplay, pMode->VDisplay);
     1257    TRACE_LOG("HDisplay=%d, VDisplay=%d\n", pMode->HDisplay, pMode->VDisplay);
    12351258    pVBox = VBOXGetRec(pScrn);
    12361259    /* Don't fiddle with the hardware if we are switched
     
    12761299        }
    12771300    }
    1278     TRACE3("returning %s\n", rc ? "TRUE" : "FALSE");
     1301    TRACE_LOG("returning %s\n", rc ? "TRUE" : "FALSE");
    12791302    return rc;
    12801303}
     
    12861309    ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
    12871310
    1288     TRACE;
     1311    TRACE_ENTRY();
    12891312    /* Don't fiddle with the hardware if we are switched
    12901313     * to a virtual terminal. */
     
    12991322            vboxEnableVbva(pScrn);
    13001323    }
    1301     TRACE2;
     1324    TRACE_EXIT();
    13021325}
    13031326
     
    13141337    Bool rc = TRUE;
    13151338
    1316     TRACE;
     1339    TRACE_ENTRY();
    13171340    if (NULL == pVBox->base)
    13181341    {
     
    13511374        rc = pVBox->base != NULL;
    13521375    }
    1353     TRACE3("returning %s\n", rc ? "TRUE" : "FALSE");
     1376    TRACE_LOG("returning %s\n", rc ? "TRUE" : "FALSE");
    13541377    return rc;
    13551378}
     
    13601383    VBOXPtr pVBox = VBOXGetRec(pScrn);
    13611384
    1362     TRACE;
     1385    TRACE_ENTRY();
    13631386    if (pVBox->base == NULL)
    13641387        return;
     
    13751398#endif
    13761399    pVBox->base = NULL;
    1377     TRACE2;
     1400    TRACE_EXIT();
    13781401}
    13791402
     
    13901413    } while (0)
    13911414
    1392     TRACE;
     1415    TRACE_ENTRY();
    13931416    for (i = 0; i < numColors; i++) {
    13941417           idx = indices[i];
     
    14021425           VBOXDACDelay();
    14031426    }
    1404     TRACE2;
     1427    TRACE_EXIT();
    14051428}
    14061429
     
    14761499    Bool cont = TRUE;
    14771500
    1478     TRACE;
     1501    TRACE_ENTRY();
    14791502    if (pVBox->fonts != NULL)
    14801503        cont = FALSE;
     
    15401563        WriteMiscOut(miscOut);
    15411564    }
    1542     TRACE2;
     1565    TRACE_EXIT();
    15431566}
    15441567
     
    15491572    unsigned char miscOut, attr10, gr1, gr3, gr4, gr5, gr6, gr8, seq2, seq4, scrn;
    15501573
    1551     TRACE;
     1574    TRACE_ENTRY();
    15521575    if (pVBox->fonts != NULL)
    15531576    {
     
    16111634        WriteSeq(0x04, seq4);
    16121635    }
    1613     TRACE2;
     1636    TRACE_EXIT();
    16141637}
    16151638
     
    16201643    Bool rc = TRUE;
    16211644
    1622     TRACE;
     1645    TRACE_ENTRY();
    16231646    if (MODE_QUERY < 0 || function > MODE_RESTORE)
    16241647        rc = FALSE;
     
    16731696        }
    16741697    }
    1675     TRACE3("returning %s\n", rc ? "TRUE" : "FALSE");
     1698    TRACE_LOG("returning %s\n", rc ? "TRUE" : "FALSE");
    16761699    return rc;
    16771700}
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette