VirtualBox

Ignore:
Timestamp:
Nov 8, 2010 10:47:34 PM (14 years ago)
Author:
vboxsync
Message:

wddm: more multi-monitor fixes

Location:
trunk/src/VBox/Additions/WINNT/Graphics
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Additions/WINNT/Graphics/Display/wddm/VBoxDispD3D.cpp

    r33836 r33879  
    34713471    IDirect3DDevice9 * pDevice9If = VBOXDISP_D3DEV(pDevice);
    34723472    IDirect3DPixelShader9 *pShader = (IDirect3DPixelShader9*)hShaderHandle;
    3473     Assert(pShader);
    34743473    HRESULT hr = pDevice9If->SetPixelShader(pShader);
    34753474    Assert(hr == S_OK);
     
    62556254    IDirect3DDevice9 * pDevice9If = VBOXDISP_D3DEV(pDevice);
    62566255    IDirect3DVertexShader9 *pShader = (IDirect3DVertexShader9*)hShaderHandle;
    6257     Assert(pShader);
    62586256    HRESULT hr = pDevice9If->SetVertexShader(pShader);
    62596257    Assert(hr == S_OK);
  • trunk/src/VBox/Additions/WINNT/Graphics/Miniport/VBoxVideo.cpp

    r33876 r33879  
    588588    return display;
    589589}
     590
     591static bool vboxVideoModesMatch(VIDEO_MODE_INFORMATION *pMode1, VIDEO_MODE_INFORMATION *pMode2)
     592{
     593    return pMode1->VisScreenHeight == pMode2->VisScreenHeight
     594            && pMode1->VisScreenWidth == pMode2->VisScreenWidth
     595            && pMode1->BitsPerPlane == pMode2->BitsPerPlane;
     596}
     597
     598static DECLINLINE(void) vboxVideoChackModeAdd(VIDEO_MODE_INFORMATION *pModes, int *pcNumModes)
     599{
     600    const int cNumModes = *pcNumModes;
     601    for (int i = 0; i < cNumModes; ++i)
     602    {
     603        if (vboxVideoModesMatch(&pModes[i], &pModes[cNumModes]))
     604            return;
     605    }
     606    (*pcNumModes)++;
     607}
     608
     609#ifdef VBOX_WITH_WDDM
     610# define VBOXVIDEOMODE_ADDED(_aModes, _pcModes) vboxVideoChackModeAdd(_aModes, _pcModes)
     611#else
     612# define VBOXVIDEOMODE_ADDED(_aModes, _pcModes) do { (*(_pcModes))++; } while (0)
     613#endif
    590614
    591615static int vboxVideoBuildModesTable(PDEVICE_EXTENSION DeviceExtension, int iDisplay,
     
    11421166            VideoModes[cNumVideoModes].VideoMemoryBitmapHeight      = yres - yOffset;
    11431167            VideoModes[cNumVideoModes].DriverSpecificAttributeFlags = 0;
    1144             ++cNumVideoModes;
     1168
     1169            VBOXVIDEOMODE_ADDED(VideoModes, &cNumVideoModes);
    11451170
    11461171            /* next run */
     
    11941219            VideoModes[cNumVideoModes] = CustomVideoModes[iDisplay];
    11951220            iPreferredVideoMode = cNumVideoModes;
    1196             ++cNumVideoModes;
     1221
     1222            VBOXVIDEOMODE_ADDED(VideoModes, &cNumVideoModes);
    11971223        }
    11981224
  • trunk/src/VBox/Additions/WINNT/Graphics/Miniport/wddm/VBoxVideoVidPn.cpp

    r33869 r33879  
    12571257                    break;
    12581258                case D3DKMDT_EPT_NOPIVOT:
    1259                     /* just create and populate the new source mode set for now */
    1260                     Status = vboxVidPnCreatePopulateSourceModeSetFromLegacy(pDevExt, hDesiredVidPn, pVidPnInterface,
    1261                             pNewVidPnPresentPathInfo->VidPnSourceId,
    1262                             pModes, cModes, iPreferredMode, NULL);
    1263                     Assert(Status == STATUS_SUCCESS);
    1264                     if (Status == STATUS_SUCCESS)
     1259                    Assert(!!pPinnedVidPnSourceModeInfo == !!pPinnedVidPnTargetModeInfo);
     1260                    if (!pPinnedVidPnSourceModeInfo && !pPinnedVidPnTargetModeInfo)
    12651261                    {
    1266                         /* just create and populate a new target mode info for now */
    1267                         Status = vboxVidPnCreatePopulateTargetModeSetFromLegacy(pDevExt, hDesiredVidPn, pVidPnInterface,
    1268                                 pNewVidPnPresentPathInfo->VidPnTargetId,
    1269                                 pResolutions,
    1270                                 cResolutions,
    1271                                 pPreferredMode,
    1272                                 0,
    1273                                 NULL);
     1262                        /* just create and populate the new source mode set for now */
     1263                        Status = vboxVidPnCreatePopulateSourceModeSetFromLegacy(pDevExt, hDesiredVidPn, pVidPnInterface,
     1264                                pNewVidPnPresentPathInfo->VidPnSourceId,
     1265                                pModes, cModes, iPreferredMode, NULL);
    12741266                        Assert(Status == STATUS_SUCCESS);
    1275                         if (Status != STATUS_SUCCESS)
    1276                             drprintf((__FUNCTION__": vboxVidPnCreatePopulateTargetModeSetFromLegacy failed Status(0x%x)\n", Status));
     1267                        if (Status == STATUS_SUCCESS)
     1268                        {
     1269                            /* just create and populate a new target mode info for now */
     1270                            Status = vboxVidPnCreatePopulateTargetModeSetFromLegacy(pDevExt, hDesiredVidPn, pVidPnInterface,
     1271                                    pNewVidPnPresentPathInfo->VidPnTargetId,
     1272                                    pResolutions,
     1273                                    cResolutions,
     1274                                    pPreferredMode,
     1275                                    0,
     1276                                    NULL);
     1277                            Assert(Status == STATUS_SUCCESS);
     1278                            if (Status != STATUS_SUCCESS)
     1279                                drprintf((__FUNCTION__": vboxVidPnCreatePopulateTargetModeSetFromLegacy failed Status(0x%x)\n", Status));
     1280                        }
     1281                        else
     1282                            drprintf((__FUNCTION__": vboxVidPnCreatePopulateSourceModeSetFromLegacy failed Status(0x%x)\n", Status));
    12771283                    }
    1278                     else
    1279                         drprintf((__FUNCTION__": vboxVidPnCreatePopulateSourceModeSetFromLegacy failed Status(0x%x)\n", Status));
    1280 
    12811284                    break;
    12821285                default:
  • trunk/src/VBox/Additions/WINNT/Graphics/Miniport/wddm/VBoxVideoWddm.cpp

    r33876 r33879  
    37193719    dfprintf(("==> "__FUNCTION__ ", context(0x%x)\n", hAdapter));
    37203720
    3721     vboxVDbgBreakF();
     3721    vboxVDbgBreakFv();
    37223722
    37233723    PDEVICE_EXTENSION pDevExt = (PDEVICE_EXTENSION)hAdapter;
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