VirtualBox

Ignore:
Timestamp:
Mar 9, 2010 3:55:30 PM (15 years ago)
Author:
vboxsync
Message:

wddm: bugfix

Location:
trunk/src/VBox/Additions/WINNT/Graphics/Miniport/wddm
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Additions/WINNT/Graphics/Miniport/wddm/VBoxVideoVidPn.cpp

    r27201 r27219  
    3535        */
    3636
    37         if (pNewVidPnPresentPathInfo->ContentTransformation.Scaling != D3DKMDT_VPPS_IDENTITY
     37        if (pNewVidPnPresentPathInfo->ContentTransformation.Scaling != D3DKMDT_VPPS_UNPINNED
     38                || pNewVidPnPresentPathInfo->ContentTransformation.Scaling != D3DKMDT_VPPS_IDENTITY
    3839                || pNewVidPnPresentPathInfo->ContentTransformation.Scaling != D3DKMDT_VPPS_CENTERED)
    3940        {
     
    658659            CONST D3DKMDT_VIDPN_SOURCE_MODE* pPinnedVidPnSourceModeInfo;
    659660            Status = pCurVidPnSourceModeSetInterface->pfnAcquirePinnedModeInfo(hCurVidPnSourceModeSet, &pPinnedVidPnSourceModeInfo);
    660             Assert(Status == STATUS_SUCCESS);
     661            Assert(Status == STATUS_SUCCESS || Status == STATUS_GRAPHICS_MODE_NOT_PINNED);
    661662            if (Status == STATUS_SUCCESS)
    662663            {
    663                 if (!pPinnedVidPnSourceModeInfo)
    664                 {
    665                     /* just create and populate the new source mode set for now */
    666                     D3DKMDT_HVIDPNSOURCEMODESET hNewVidPnSourceModeSet;
    667                     const DXGK_VIDPNSOURCEMODESET_INTERFACE *pNewVidPnSourceModeSetInterface;
    668                     Status = pVidPnInterface->pfnCreateNewSourceModeSet(hDesiredVidPn,
     664                Assert (pPinnedVidPnSourceModeInfo);
     665                /* release */
     666                pCurVidPnSourceModeSetInterface->pfnReleaseModeInfo(hCurVidPnSourceModeSet, pPinnedVidPnSourceModeInfo);
     667
     668            }
     669            else if (Status == STATUS_GRAPHICS_MODE_NOT_PINNED)
     670            {
     671                /* just create and populate the new source mode set for now */
     672                D3DKMDT_HVIDPNSOURCEMODESET hNewVidPnSourceModeSet;
     673                const DXGK_VIDPNSOURCEMODESET_INTERFACE *pNewVidPnSourceModeSetInterface;
     674                Status = pVidPnInterface->pfnCreateNewSourceModeSet(hDesiredVidPn,
    669675                                    pNewVidPnPresentPathInfo->VidPnSourceId, /*__in CONST D3DDDI_VIDEO_PRESENT_SOURCE_ID  VidPnSourceId */
    670676                                    &hNewVidPnSourceModeSet,
    671677                                    &pNewVidPnSourceModeSetInterface);
     678                Assert(Status == STATUS_SUCCESS);
     679                if (Status == STATUS_SUCCESS)
     680                {
     681                    Status = vboxVidPnPopulateSourceModeSetFromLegacy(pDevExt,
     682                                hNewVidPnSourceModeSet, pNewVidPnSourceModeSetInterface,
     683                                pModes, cModes, iPreferredMode);
    672684                    Assert(Status == STATUS_SUCCESS);
    673685                    if (Status == STATUS_SUCCESS)
    674686                    {
    675                         Status = vboxVidPnPopulateSourceModeSetFromLegacy(pDevExt,
    676                                 hNewVidPnSourceModeSet, pNewVidPnSourceModeSetInterface,
    677                                 pModes, cModes, iPreferredMode);
    678                         Assert(Status == STATUS_SUCCESS);
    679                         if (Status == STATUS_SUCCESS)
    680                         {
    681                             Status = pVidPnInterface->pfnAssignSourceModeSet(hDesiredVidPn,
     687                        Status = pVidPnInterface->pfnAssignSourceModeSet(hDesiredVidPn,
    682688                                    pNewVidPnPresentPathInfo->VidPnSourceId,
    683689                                    hNewVidPnSourceModeSet);
    684                             Assert(Status == STATUS_SUCCESS);
    685                             if(Status != STATUS_SUCCESS)
    686                             {
    687                                 drprintf((__FUNCTION__": pfnAssignSourceModeSet failed Status(0x%x)\n", Status));
    688                                 pVidPnInterface->pfnReleaseSourceModeSet(hDesiredVidPn, hNewVidPnSourceModeSet);
    689                             }
    690                         }
    691                         else
     690                        Assert(Status == STATUS_SUCCESS);
     691                        if(Status != STATUS_SUCCESS)
    692692                        {
    693                             drprintf((__FUNCTION__": vboxVidPnPopulateSourceModeSetFromLegacy failed Status(0x%x)\n", Status));
     693                            drprintf((__FUNCTION__": pfnAssignSourceModeSet failed Status(0x%x)\n", Status));
    694694                            pVidPnInterface->pfnReleaseSourceModeSet(hDesiredVidPn, hNewVidPnSourceModeSet);
    695695                        }
    696696                    }
    697697                    else
    698                         drprintf((__FUNCTION__": pfnCreateNewSourceModeSet failed Status(0x%x)\n", Status));
     698                    {
     699                        drprintf((__FUNCTION__": vboxVidPnPopulateSourceModeSetFromLegacy failed Status(0x%x)\n", Status));
     700                        pVidPnInterface->pfnReleaseSourceModeSet(hDesiredVidPn, hNewVidPnSourceModeSet);
     701                    }
    699702                }
    700703                else
    701                 {
    702                     /* release */
    703                     pCurVidPnSourceModeSetInterface->pfnReleaseModeInfo(hCurVidPnSourceModeSet, pPinnedVidPnSourceModeInfo);
    704                 }
     704                    drprintf((__FUNCTION__": pfnCreateNewSourceModeSet failed Status(0x%x)\n", Status));
    705705            }
    706706            else
     
    732732                CONST D3DKMDT_VIDPN_TARGET_MODE* pPinnedVidPnTargetModeInfo;
    733733                Status = pCurVidPnTargetModeSetInterface->pfnAcquirePinnedModeInfo(hCurVidPnTargetModeSet, &pPinnedVidPnTargetModeInfo);
    734                 Assert(Status == STATUS_SUCCESS);
     734                Assert(Status == STATUS_SUCCESS || Status == STATUS_GRAPHICS_MODE_NOT_PINNED);
    735735                if (Status == STATUS_SUCCESS)
    736736                {
    737                     if (!pPinnedVidPnTargetModeInfo)
    738                     {
    739                         /* just create and populate a new target mode info for now */
    740                         D3DKMDT_HVIDPNTARGETMODESET hNewVidPnTargetModeSet;
    741                         const DXGK_VIDPNTARGETMODESET_INTERFACE *pNewVidPnTargetModeSetInterface;
    742                         Status = pVidPnInterface->pfnCreateNewTargetModeSet(hDesiredVidPn,
     737                    Assert (pPinnedVidPnTargetModeInfo);
     738                    /* nothing to be done here, just release */
     739                    pCurVidPnTargetModeSetInterface->pfnReleaseModeInfo(hCurVidPnTargetModeSet, pPinnedVidPnTargetModeInfo);
     740                }
     741                else if (Status == STATUS_GRAPHICS_MODE_NOT_PINNED)
     742                {
     743                    /* just create and populate a new target mode info for now */
     744                    D3DKMDT_HVIDPNTARGETMODESET hNewVidPnTargetModeSet;
     745                    const DXGK_VIDPNTARGETMODESET_INTERFACE *pNewVidPnTargetModeSetInterface;
     746                    Status = pVidPnInterface->pfnCreateNewTargetModeSet(hDesiredVidPn,
    743747                                        pNewVidPnPresentPathInfo->VidPnTargetId, /*__in CONST D3DDDI_VIDEO_PRESENT_TARGET_ID  VidPnTargetId */
    744748                                        &hNewVidPnTargetModeSet,
    745749                                        &pNewVidPnTargetModeSetInterface);
     750                    Assert(Status == STATUS_SUCCESS);
     751                    if (Status == STATUS_SUCCESS)
     752                    {
     753                        Status = vboxVidPnPopulateTargetModeSetFromLegacy(pDevExt,
     754                                    hNewVidPnTargetModeSet, pNewVidPnTargetModeSetInterface,
     755                                    pResolutions, cResolutions, &pModes[iPreferredMode]);
    746756                        Assert(Status == STATUS_SUCCESS);
    747757                        if (Status == STATUS_SUCCESS)
    748758                        {
    749                             Status = vboxVidPnPopulateTargetModeSetFromLegacy(pDevExt,
    750                                     hNewVidPnTargetModeSet, pNewVidPnTargetModeSetInterface,
    751                                     pResolutions, cResolutions, &pModes[iPreferredMode]);
    752                             Assert(Status == STATUS_SUCCESS);
    753                             if (Status == STATUS_SUCCESS)
    754                             {
    755                                 Status = pVidPnInterface->pfnAssignTargetModeSet(hDesiredVidPn,
     759                            Status = pVidPnInterface->pfnAssignTargetModeSet(hDesiredVidPn,
    756760                                        pNewVidPnPresentPathInfo->VidPnTargetId,
    757761                                        hNewVidPnTargetModeSet);
    758                                 Assert(Status == STATUS_SUCCESS);
    759                                 if(Status != STATUS_SUCCESS)
    760                                 {
    761                                     drprintf((__FUNCTION__": pfnAssignTargetModeSet failed Status(0x%x)\n", Status));
    762                                     pVidPnInterface->pfnReleaseTargetModeSet(hDesiredVidPn, hNewVidPnTargetModeSet);
    763                                 }
    764                             }
    765                             else
     762                            Assert(Status == STATUS_SUCCESS);
     763                            if(Status != STATUS_SUCCESS)
    766764                            {
    767                                 drprintf((__FUNCTION__": vboxVidPnPopulateTargetModeSetFromLegacy failed Status(0x%x)\n", Status));
     765                                drprintf((__FUNCTION__": pfnAssignTargetModeSet failed Status(0x%x)\n", Status));
    768766                                pVidPnInterface->pfnReleaseTargetModeSet(hDesiredVidPn, hNewVidPnTargetModeSet);
    769767                            }
    770768                        }
    771                     }
    772                     else
    773                     {
    774                         /* nothing to be done here, just release */
    775                         pCurVidPnTargetModeSetInterface->pfnReleaseModeInfo(hCurVidPnTargetModeSet, pPinnedVidPnTargetModeInfo);
     769                        else
     770                        {
     771                            drprintf((__FUNCTION__": vboxVidPnPopulateTargetModeSetFromLegacy failed Status(0x%x)\n", Status));
     772                            pVidPnInterface->pfnReleaseTargetModeSet(hDesiredVidPn, hNewVidPnTargetModeSet);
     773                        }
    776774                    }
    777775                }
     
    963961        {
    964962            Assert(pPinnedVidPnSourceModeInfo);
    965             if (pPinnedVidPnSourceModeInfo)
    966             {
    967                 Status = vboxVidPnCommitSourceMode(pDevExt, pPinnedVidPnSourceModeInfo, pAllocation);
    968                 Assert(Status == STATUS_SUCCESS);
    969                 if (Status != STATUS_SUCCESS)
    970                     drprintf((__FUNCTION__": vboxVidPnCommitSourceMode failed Status(0x%x)\n", Status));
    971                 /* release */
    972                 pCurVidPnSourceModeSetInterface->pfnReleaseModeInfo(hCurVidPnSourceModeSet, pPinnedVidPnSourceModeInfo);
    973             }
    974             else
    975                 drprintf((__FUNCTION__": no pPinnedVidPnSourceModeInfo available for source id (%d)\n", srcId));
    976         }
     963            Status = vboxVidPnCommitSourceMode(pDevExt, pPinnedVidPnSourceModeInfo, pAllocation);
     964            Assert(Status == STATUS_SUCCESS);
     965            if (Status != STATUS_SUCCESS)
     966                drprintf((__FUNCTION__": vboxVidPnCommitSourceMode failed Status(0x%x)\n", Status));
     967            /* release */
     968            pCurVidPnSourceModeSetInterface->pfnReleaseModeInfo(hCurVidPnSourceModeSet, pPinnedVidPnSourceModeInfo);
     969        }
     970        else if (Status == STATUS_GRAPHICS_MODE_NOT_PINNED)
     971            drprintf((__FUNCTION__": no pPinnedVidPnSourceModeInfo available for source id (%d)\n", srcId));
    977972        else
    978973            drprintf((__FUNCTION__": pfnAcquirePinnedModeInfo failed Status(0x%x)\n", Status));
  • trunk/src/VBox/Additions/WINNT/Graphics/Miniport/wddm/VBoxVideoWddm.cpp

    r27205 r27219  
    10941094    PDEVICE_EXTENSION pContext = (PDEVICE_EXTENSION)hAdapter;
    10951095
    1096     vboxVDbgBreakF();
     1096    vboxVDbgBreakFv();
    10971097
    10981098    switch (pQueryAdapterInfo->Type)
     
    13771377    dfprintf(("==> "__FUNCTION__ ", context(0x%x)\n", hAdapter));
    13781378
    1379     AssertBreakpoint();
     1379    vboxVDbgBreakF();
    13801380
    13811381    NTSTATUS Status = STATUS_SUCCESS;
     
    14341434    dfprintf(("==> "__FUNCTION__ ", hAdapter(0x%x)\n", hAdapter));
    14351435
    1436     AssertBreakpoint();
     1436    vboxVDbgBreakF();
     1437
    14371438    PVBOXWDDM_ALLOCATION pAllocation = (PVBOXWDDM_ALLOCATION)pDescribeAllocation->hAllocation;
    14381439    pDescribeAllocation->Width = pAllocation->u.SurfInfo.width;
     
    14631464    dfprintf(("==> "__FUNCTION__ ", context(0x%x)\n", hAdapter));
    14641465
    1465     AssertBreakpoint();
     1466    vboxVDbgBreakF();
    14661467
    14671468    NTSTATUS Status = STATUS_SUCCESS;
     
    16931694}
    16941695
     1696/*
     1697 * DxgkDdiBuildPagingBuffer
     1698 */
    16951699NTSTATUS
    16961700APIENTRY
     
    17021706    PAGED_CODE();
    17031707
    1704     AssertBreakpoint();
     1708    vboxVDbgBreakF();
    17051709
    17061710    NTSTATUS Status = STATUS_SUCCESS;
     
    18571861    dfprintf(("==> "__FUNCTION__ ", context(0x%x)\n", hAdapter));
    18581862
    1859     AssertBreakpoint();
     1863    vboxVDbgBreakF();
    18601864
    18611865    PDEVICE_EXTENSION pContext = (PDEVICE_EXTENSION)hAdapter;
     
    21532157    dfprintf(("==> "__FUNCTION__ ", context(0x%x)\n", hAdapter));
    21542158
     2159    vboxVDbgBreakF();
     2160
    21552161    PDEVICE_EXTENSION pContext = (PDEVICE_EXTENSION)hAdapter;
    21562162
     
    24682474    dfprintf(("==> "__FUNCTION__ ", hAdapter(0x%x)\n", hAdapter));
    24692475
    2470     vboxVDbgBreakF();
     2476    vboxVDbgBreakFv();
    24712477
    24722478    dfprintf(("<== "__FUNCTION__ ", hAdapter(0x%x)\n", hAdapter));
     
    25582564}
    25592565
     2566/*
     2567 * DxgkDdiOpenAllocation
     2568 */
    25602569NTSTATUS
    25612570APIENTRY
     
    25692578    dfprintf(("==> "__FUNCTION__ ", hDevice(0x%x)\n", hDevice));
    25702579
    2571     AssertBreakpoint();
     2580    vboxVDbgBreakF();
    25722581
    25732582    NTSTATUS Status = STATUS_SUCCESS;
     
    28632872    dfprintf(("==> "__FUNCTION__ ", hDevice(0x%x)\n", hDevice));
    28642873
    2865     vboxVDbgBreakF();
     2874    vboxVDbgBreakFv();
    28662875
    28672876    NTSTATUS Status = STATUS_SUCCESS;
     
    28702879
    28712880    pContext->pDevice = pDevice;
     2881    pContext->hContext = pCreateContext->hContext;
    28722882    pContext->EngineAffinity = pCreateContext->EngineAffinity;
    28732883    pContext->NodeOrdinal = pCreateContext->NodeOrdinal;
  • trunk/src/VBox/Additions/WINNT/Graphics/Miniport/wddm/VBoxVideoWddm.h

    r27055 r27219  
    115115{
    116116    struct VBOXWDDM_DEVICE * pDevice;
     117    HANDLE hContext;
    117118    VBOXWDDM_CONTEXT_TYPE enmType;
    118119    UINT  NodeOrdinal;
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