VirtualBox

Ignore:
Timestamp:
Aug 11, 2014 6:30:55 PM (11 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
95478
Message:

more resize fixes, dumper fixes

Location:
trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk

  • trunk/src/VBox

  • trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPMisc.cpp

    r52136 r52350  
    804804}
    805805
    806 NTSTATUS vboxWddmRegOpenDisplaySettingsKey(IN PVBOXMP_DEVEXT pDeviceExtension, D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId, OUT PHANDLE phKey)
     806NTSTATUS vboxWddmRegOpenDisplaySettingsKey(IN PVBOXMP_DEVEXT pDevExt, D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId, OUT PHANDLE phKey)
    807807{
    808808    WCHAR Buf[512];
    809809    ULONG cbBuf = sizeof(Buf);
    810     NTSTATUS Status = vboxWddmRegQueryDisplaySettingsKeyName(pDeviceExtension, VidPnSourceId, cbBuf, Buf, &cbBuf);
     810    NTSTATUS Status = vboxWddmRegQueryDisplaySettingsKeyName(pDevExt, VidPnSourceId, cbBuf, Buf, &cbBuf);
    811811    Assert(Status == STATUS_SUCCESS);
    812812    if (Status == STATUS_SUCCESS)
     
    851851}
    852852
    853 NTSTATUS vboxWddmDisplaySettingsQueryPos(IN PVBOXMP_DEVEXT pDeviceExtension, D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId, POINT * pPos)
     853NTSTATUS vboxWddmDisplaySettingsQueryPos(IN PVBOXMP_DEVEXT pDevExt, D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId, POINT * pPos)
    854854{
    855855    Assert(KeGetCurrentIrql() == PASSIVE_LEVEL);
    856856    HANDLE hKey;
    857     NTSTATUS Status = vboxWddmRegOpenDisplaySettingsKey(pDeviceExtension, VidPnSourceId, &hKey);
     857    NTSTATUS Status = vboxWddmRegOpenDisplaySettingsKey(pDevExt, VidPnSourceId, &hKey);
    858858    //Assert(Status == STATUS_SUCCESS);
    859859    if (Status == STATUS_SUCCESS)
     
    877877
    878878    return Status;
     879}
     880
     881void vboxWddmDisplaySettingsCheckPos(IN PVBOXMP_DEVEXT pDevExt, D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId)
     882{
     883    POINT Pos = {0};
     884    NTSTATUS Status = vboxWddmDisplaySettingsQueryPos(pDevExt, VidPnSourceId, &Pos);
     885    if (!NT_SUCCESS(Status))
     886    {
     887        Log(("vboxWddmDisplaySettingsQueryPos failed %#x", Status));
     888        return;
     889    }
     890
     891    PVBOXWDDM_SOURCE pSource = &pDevExt->aSources[VidPnSourceId];
     892
     893    if (!memcmp(&pSource->VScreenPos, &Pos, sizeof (Pos)))
     894        return;
     895
     896    pSource->VScreenPos = Pos;
     897    pSource->u8SyncState &= ~VBOXWDDM_HGSYNC_F_SYNCED_DIMENSIONS;
     898
     899    vboxWddmGhDisplayCheckSetInfoFromSource(pDevExt, pSource);
    879900}
    880901
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPMisc.h

    r52136 r52350  
    8989NTSTATUS vboxWddmRegQueryDisplaySettingsKeyName(PVBOXMP_DEVEXT pDevExt, D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId,
    9090        ULONG cbBuf, PWCHAR pBuf, PULONG pcbResult);
    91 NTSTATUS vboxWddmRegOpenDisplaySettingsKey(IN PVBOXMP_DEVEXT pDeviceExtension, D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId, OUT PHANDLE phKey);
     91NTSTATUS vboxWddmRegOpenDisplaySettingsKey(IN PVBOXMP_DEVEXT pDevExt, D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId, OUT PHANDLE phKey);
    9292NTSTATUS vboxWddmRegDisplaySettingsQueryRelX(HANDLE hKey, int * pResult);
    9393NTSTATUS vboxWddmRegDisplaySettingsQueryRelY(HANDLE hKey, int * pResult);
    94 NTSTATUS vboxWddmDisplaySettingsQueryPos(IN PVBOXMP_DEVEXT pDeviceExtension, D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId, POINT * pPos);
     94NTSTATUS vboxWddmDisplaySettingsQueryPos(IN PVBOXMP_DEVEXT pDevExt, D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId, POINT * pPos);
     95void vboxWddmDisplaySettingsCheckPos(IN PVBOXMP_DEVEXT pDevExt, D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId);
    9596NTSTATUS vboxWddmRegQueryVideoGuidString(PVBOXMP_DEVEXT pDevExt, ULONG cbBuf, PWCHAR pBuf, PULONG pcbResult);
    9697
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPWddm.cpp

    r52348 r52350  
    449449    }
    450450
    451     if (!pSource->AllocData.Addr.SegmentId)
     451    if (!pSource->AllocData.Addr.SegmentId && pSource->AllocData.SurfDesc.width)
    452452        return false;
    453453
     
    51415141    LOGF(("ENTER, context(0x%x)", hAdapter));
    51425142
    5143     NTSTATUS Status = STATUS_SUCCESS;
    51445143    PVBOXMP_DEVEXT pDevExt = (PVBOXMP_DEVEXT)hAdapter;
    5145     Assert((UINT)VBoxCommonFromDeviceExt(pDevExt)->cDisplays > pSetVidPnSourceAddress->VidPnSourceId);
    5146 
    5147     PVBOXWDDM_SOURCE pSource = &pDevExt->aSources[pSetVidPnSourceAddress->VidPnSourceId];
    5148     POINT Pos;
    5149     Status= vboxWddmDisplaySettingsQueryPos(pDevExt, pSetVidPnSourceAddress->VidPnSourceId, &Pos);
    5150     //Assert(Status == STATUS_SUCCESS);
    5151     if (NT_SUCCESS(Status))
    5152     {
    5153         if (memcmp(&pSource->VScreenPos, &Pos, sizeof (Pos)))
    5154         {
    5155             pSource->VScreenPos = Pos;
    5156             pSource->u8SyncState &= ~VBOXWDDM_HGSYNC_F_SYNCED_DIMENSIONS;
    5157         }
    5158     }
    5159 
    5160     Status = STATUS_SUCCESS;
    5161 
    51625144    if ((UINT)VBoxCommonFromDeviceExt(pDevExt)->cDisplays <= pSetVidPnSourceAddress->VidPnSourceId)
    51635145    {
     
    51665148    }
    51675149
     5150    vboxWddmDisplaySettingsCheckPos(pDevExt, pSetVidPnSourceAddress->VidPnSourceId);
     5151
     5152    NTSTATUS Status = STATUS_SUCCESS;
     5153    PVBOXWDDM_SOURCE pSource = &pDevExt->aSources[pSetVidPnSourceAddress->VidPnSourceId];
    51685154    PVBOXWDDM_ALLOCATION pAllocation;
    51695155    Assert(pSetVidPnSourceAddress->hAllocation);
     
    52255211    LOGF(("ENTER, context(0x%x)", hAdapter));
    52265212
    5227     NTSTATUS Status = STATUS_SUCCESS;
    52285213    PVBOXMP_DEVEXT pDevExt = (PVBOXMP_DEVEXT)hAdapter;
    5229     Assert((UINT)VBoxCommonFromDeviceExt(pDevExt)->cDisplays > pSetVidPnSourceVisibility->VidPnSourceId);
    5230 
    5231     PVBOXWDDM_SOURCE pSource = &pDevExt->aSources[pSetVidPnSourceVisibility->VidPnSourceId];
    5232     POINT Pos;
    5233     Status= vboxWddmDisplaySettingsQueryPos(pDevExt, pSetVidPnSourceVisibility->VidPnSourceId, &Pos);
    5234     //Assert(Status == STATUS_SUCCESS);
    5235     if (NT_SUCCESS(Status))
    5236     {
    5237         if (memcmp(&pSource->VScreenPos, &Pos, sizeof (Pos)))
    5238         {
    5239             pSource->VScreenPos = Pos;
    5240             pSource->u8SyncState &= ~VBOXWDDM_HGSYNC_F_SYNCED_DIMENSIONS;
    5241         }
    5242     }
    5243     Status = STATUS_SUCCESS;
    52445214
    52455215    if ((UINT)VBoxCommonFromDeviceExt(pDevExt)->cDisplays <= pSetVidPnSourceVisibility->VidPnSourceId)
     
    52495219    }
    52505220
     5221    vboxWddmDisplaySettingsCheckPos(pDevExt, pSetVidPnSourceVisibility->VidPnSourceId);
     5222
     5223    NTSTATUS Status = STATUS_SUCCESS;
     5224    PVBOXWDDM_SOURCE pSource = &pDevExt->aSources[pSetVidPnSourceVisibility->VidPnSourceId];
    52515225    PVBOXWDDM_ALLOCATION pAllocation = pSource->pPrimaryAllocation;
    52525226    if (pAllocation)
     
    67496723            for (int i = 0; i < VBoxCommonFromDeviceExt(pDevExt)->cDisplays; ++i)
    67506724            {
    6751                 pDevExt->aSources[i].u8SyncState = 0;
    6752                 NTSTATUS tmpStatus= vboxWddmDisplaySettingsQueryPos(pDevExt, i, &pDevExt->aSources[i].VScreenPos);
    6753                 //Assert(tmpStatus == STATUS_SUCCESS);
    6754             }
     6725                vboxWddmDisplaySettingsCheckPos(pDevExt, i);
     6726            }
     6727
    67556728#ifdef VBOX_WITH_CROGL
    67566729            if (!VBOXWDDM_IS_DISPLAYONLY() && pDevExt->f3DEnabled)
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPWddm.h

    r51260 r52350  
    187187}
    188188
     189bool vboxWddmGhDisplayCheckSetInfoFromSource(PVBOXMP_DEVEXT pDevExt, PVBOXWDDM_SOURCE pSource);
     190
    189191#ifdef VBOX_WITH_CROGL
    190192#define VBOXWDDMENTRY_2_SWAPCHAIN(_pE) ((PVBOXWDDM_SWAPCHAIN)((uint8_t*)(_pE) - RT_OFFSETOF(VBOXWDDM_SWAPCHAIN, DevExtListEntry)))
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