VirtualBox

Changeset 50913 in vbox for trunk/src/VBox/HostServices


Ignore:
Timestamp:
Mar 27, 2014 5:56:50 PM (11 years ago)
Author:
vboxsync
Message:

wddm/graphics: new command submission working for 2D, more testing needed

Location:
trunk/src/VBox/HostServices/SharedOpenGL
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/HostServices/SharedOpenGL/crserver/crservice.cpp

    r50827 r50913  
    15241524                case VBOXCRCMDCTL_TYPE_DISABLE:
    15251525                {
    1526                     if (paParms->u.pointer.size != sizeof (VBOXCRCMDCTL))
     1526                    if (paParms->u.pointer.size != sizeof (VBOXCRCMDCTL_DISABLE))
    15271527                        WARN(("invalid param size"));
    1528                     int rc = crVBoxServerHgcmDisable();
     1528                    VBOXCRCMDCTL_DISABLE *pDisable = (VBOXCRCMDCTL_DISABLE*)pCtl;
     1529                    int rc = crVBoxServerHgcmDisable(&pDisable->Data);
    15291530                    if (RT_SUCCESS(rc))
    15301531                        g_u32fCrHgcmDisabled = 1;
     
    15381539                        WARN(("invalid param size"));
    15391540                    VBOXCRCMDCTL_ENABLE *pEnable = (VBOXCRCMDCTL_ENABLE*)pCtl;
    1540                     int rc = crVBoxServerHgcmEnable(pEnable->hRHCmd, pEnable->pfnRHCmd);
     1541                    int rc = crVBoxServerHgcmEnable(&pEnable->Data);
    15411542                    if (RT_SUCCESS(rc))
    15421543                        g_u32fCrHgcmDisabled = 0;
  • trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server.h

    r50831 r50913  
    5151
    5252#define VBOXCRHGSMI_CMD_CHECK_COMPLETE(_pData, _rc) do { \
    53         if (CRVBOXHGSMI_CMDDATA_IS_SET(_pData)) { \
     53        if (CRVBOXHGSMI_CMDDATA_IS_HGSMICMD(_pData)) { \
    5454            VBOXCRHGSMI_CMD_COMPLETE(_pData, _rc); \
    5555        } \
  • trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_main.c

    r50831 r50913  
    8484{
    8585    CRClient *pClient = NULL;
    86     int32_t i;
    8786
    8887    pClient = crVBoxServerClientById(u32ClientID);
     
    158157
    159158    tearingdown = 1;
     159
     160    if (cr_server.DisableData.hNotifyTerm)
     161    {
     162        VBOXCRCMDCTL_HGCMENABLE_DATA EnableData;
     163        int rc = cr_server.DisableData.pfnNotifyTerm(cr_server.DisableData.hNotifyTerm, &EnableData);
     164        if (!RT_SUCCESS(rc))
     165        {
     166            WARN(("pfnNotifyTerm failed %d", rc));
     167            return;
     168        }
     169
     170        rc = crVBoxServerHgcmEnable(&EnableData);
     171        if (!RT_SUCCESS(rc))
     172        {
     173            WARN(("crVBoxServerHgcmEnable failed %d", rc));
     174            return;
     175        }
     176
     177        cr_server.DisableData.pfnNotifyTermDone(cr_server.DisableData.hNotifyTerm);
     178    }
    160179
    161180    crStateSetCurrent( NULL );
     
    29752994        {
    29762995            spuCtx = cr_server.MainContextInfo.SpuContext;
    2977             spuWindow = pMural->CreateInfo.realVisualBits;
     2996            spuWindow = pMural->spuWindow;
    29782997        }
    29792998    }
     
    30143033    cParams = cBuffers-1;
    30153034
    3016     if (cbCmd != RT_OFFSETOF(VBOXCMDVBVA_CRCMD_CMD, aBuffers[cBuffers]))
     3035    if (cbCmd < RT_OFFSETOF(VBOXCMDVBVA_CRCMD_CMD, aBuffers[cBuffers]))
    30173036    {
    30183037        WARN(("invalid buffer size"));
     
    33633382                    rc = CrHTablePutToSlot(&cr_server.clientTable, u32ClientId, pClient);
    33643383                    if (RT_SUCCESS(rc))
     3384                    {
     3385                        pConnect->Hdr.u32CmdClientId = u32ClientId;
    33653386                        return VINF_SUCCESS;
     3387                    }
    33663388                    else
    33673389                        WARN(("CrHTablePutToSlot failed %d", rc));
     
    34543476static DECLCALLBACK(int8_t) crVBoxCrCmdCmd(HVBOXCRCMDSVR hSvr, const VBOXCMDVBVA_HDR *pCmd, uint32_t cbCmd)
    34553477{
    3456     AssertFailed();
    34573478    switch (pCmd->u8OpCode)
    34583479    {
     
    38843905}
    38853906
    3886 int32_t crVBoxServerHgcmEnable(HVBOXCRCMDCTL_REMAINING_HOST_COMMAND hRHCmd, PFNVBOXCRCMDCTL_REMAINING_HOST_COMMAND pfnRHCmd)
     3907int32_t crVBoxServerHgcmEnable(VBOXCRCMDCTL_HGCMENABLE_DATA *pData)
    38873908{
    38883909    int rc = VINF_SUCCESS;
    38893910    uint8_t* pCtl;
    38903911    uint32_t cbCtl;
     3912    HVBOXCRCMDCTL_REMAINING_HOST_COMMAND hRHCmd = pData->hRHCmd;
     3913    PFNVBOXCRCMDCTL_REMAINING_HOST_COMMAND pfnRHCmd = pData->pfnRHCmd;
    38913914
    38923915    Assert(!cr_server.fCrCmdEnabled);
     
    39083931}
    39093932
    3910 int32_t crVBoxServerHgcmDisable()
     3933int32_t crVBoxServerHgcmDisable(VBOXCRCMDCTL_HGCMDISABLE_DATA *pData)
    39113934{
    39123935    Assert(!cr_server.fCrCmdEnabled);
     
    39203943    cr_server.head_spu->dispatch_table.MakeCurrent(0, 0, 0);
    39213944
     3945    cr_server.DisableData = *pData;
     3946
    39223947    return VINF_SUCCESS;
    39233948}
  • trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_presenter.cpp

    r50831 r50913  
    372372                        pCopyRect->yBottom - pCopyRect->yTop,
    373373                        pu8Src,
    374                         fSrcInvert ? -pSrc->pitch : pSrc->pitch,
     374                        fSrcInvert ? -((GLint)pSrc->pitch) : pSrc->pitch,
    375375                        UnscaledSrcWidth,
    376376                        UnscaledSrcHeight
Note: See TracChangeset for help on using the changeset viewer.

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