VirtualBox

Ignore:
Timestamp:
Jul 12, 2018 9:06:33 PM (7 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
123672
Message:

*: Made RT_UOFFSETOF, RT_OFFSETOF, RT_UOFFSETOF_ADD and RT_OFFSETOF_ADD work like builtin_offsetof() and require compile time resolvable requests, adding RT_UOFFSETOF_DYN for the dynamic questions that can only be answered at runtime.

File:
1 edited

Legend:

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

    r72621 r73097  
    603603void vboxWddmResourceInit(PVBOXWDDMDISP_RESOURCE pRc, UINT cAllocs)
    604604{
    605     memset(pRc, 0, RT_OFFSETOF(VBOXWDDMDISP_RESOURCE, aAllocations[cAllocs]));
     605    memset(pRc, 0, RT_UOFFSETOF_DYN(VBOXWDDMDISP_RESOURCE, aAllocations[cAllocs]));
    606606    pRc->cAllocations = cAllocs;
    607607    for (UINT i = 0; i < cAllocs; ++i)
     
    614614static PVBOXWDDMDISP_RESOURCE vboxResourceAlloc(UINT cAllocs)
    615615{
    616     PVBOXWDDMDISP_RESOURCE pRc = (PVBOXWDDMDISP_RESOURCE)RTMemAlloc(RT_OFFSETOF(VBOXWDDMDISP_RESOURCE, aAllocations[cAllocs]));
     616    PVBOXWDDMDISP_RESOURCE pRc = (PVBOXWDDMDISP_RESOURCE)RTMemAlloc(RT_UOFFSETOF_DYN(VBOXWDDMDISP_RESOURCE, aAllocations[cAllocs]));
    617617    Assert(pRc);
    618618    if (pRc)
     
    759759    //    DdiEscape.Flags.Value = 0;
    760760        DdiEscape.pPrivateDriverData = &Buf.SwapchainInfo;
    761         DdiEscape.PrivateDriverDataSize = RT_OFFSETOF(VBOXDISPIFESCAPE_SWAPCHAININFO,
    762                                                       SwapchainInfo.ahAllocs[Buf.SwapchainInfo.SwapchainInfo.cAllocs]);
     761        DdiEscape.PrivateDriverDataSize = RT_UOFFSETOF_DYN(VBOXDISPIFESCAPE_SWAPCHAININFO,
     762                                                           SwapchainInfo.ahAllocs[Buf.SwapchainInfo.SwapchainInfo.cAllocs]);
    763763        hr = pDevice->RtCallbacks.pfnEscapeCb(pDevice->pAdapter->hAdapter, &DdiEscape);
    764764#ifdef DEBUG_misha
     
    925925DECLINLINE(UINT) vboxWddmSwapchainRtIndex(PVBOXWDDMDISP_SWAPCHAIN pSwapchain, PVBOXWDDMDISP_RENDERTGT pRT)
    926926{
    927     UINT offFirst = RT_OFFSETOF(VBOXWDDMDISP_SWAPCHAIN, aRTs);
     927    UINT offFirst = RT_UOFFSETOF(VBOXWDDMDISP_SWAPCHAIN, aRTs);
    928928    UINT offRT = UINT((uintptr_t)pRT - (uintptr_t)pSwapchain);
    929929    Assert(offRT < sizeof (VBOXWDDMDISP_SWAPCHAIN));
     
    20142014                memset(&pCaps->Caps /* do not cleanup the first "Head" field,
    20152015                                    zero starting with the one following "Head", i.e. Caps */,
    2016                         0, sizeof (DDRAW_MODE_SPECIFIC_CAPS) - RT_OFFSETOF(DDRAW_MODE_SPECIFIC_CAPS, Caps));
     2016                        0, sizeof(DDRAW_MODE_SPECIFIC_CAPS) - RT_UOFFSETOF(DDRAW_MODE_SPECIFIC_CAPS, Caps));
    20172017#ifdef VBOX_WITH_VIDEOHWACCEL
    20182018                if (!VBOXDISPMODE_IS_3D(pAdapter))
     
    21902190        case D3DDDICAPS_GETD3D8CAPS:
    21912191        {
    2192             Assert(pData->DataSize == RT_OFFSETOF(D3DCAPS9, DevCaps2));
    2193             if (pData->DataSize == RT_OFFSETOF(D3DCAPS9, DevCaps2))
     2192            Assert(pData->DataSize == RT_UOFFSETOF(D3DCAPS9, DevCaps2));
     2193            if (pData->DataSize == RT_UOFFSETOF(D3DCAPS9, DevCaps2))
    21942194            {
    21952195                Assert(VBOXDISPMODE_IS_3D(pAdapter));
    21962196                if (VBOXDISPMODE_IS_3D(pAdapter))
    21972197                {
    2198                     memcpy(pData->pData, &pAdapter->D3D.Caps, RT_OFFSETOF(D3DCAPS9, DevCaps2));
     2198                    memcpy(pData->pData, &pAdapter->D3D.Caps, RT_UOFFSETOF(D3DCAPS9, DevCaps2));
    21992199                    hr = S_OK;
    22002200                    break;
     
    62206220    PVBOXWDDMDISP_ADAPTER pAdapter = (PVBOXWDDMDISP_ADAPTER)hAdapter;
    62216221
    6222     PVBOXWDDMDISP_DEVICE pDevice = (PVBOXWDDMDISP_DEVICE)RTMemAllocZ(RT_OFFSETOF(VBOXWDDMDISP_DEVICE,
    6223                                                                                  apRTs[pAdapter->D3D.cMaxSimRTs]));
     6222    PVBOXWDDMDISP_DEVICE pDevice = (PVBOXWDDMDISP_DEVICE)RTMemAllocZ(RT_UOFFSETOF_DYN(VBOXWDDMDISP_DEVICE,
     6223                                                                                      apRTs[pAdapter->D3D.cMaxSimRTs]));
    62246224    if (pDevice)
    62256225    {
     
    65596559#ifdef VBOX_WITH_VIDEOHWACCEL
    65606560    Assert(pAdapterInfo->cInfos >= 1);
    6561     PVBOXWDDMDISP_ADAPTER pAdapter = (PVBOXWDDMDISP_ADAPTER)RTMemAllocZ(RT_OFFSETOF(VBOXWDDMDISP_ADAPTER,
    6562                                                                                     aHeads[pAdapterInfo->cInfos]));
     6561    PVBOXWDDMDISP_ADAPTER pAdapter = (PVBOXWDDMDISP_ADAPTER)RTMemAllocZ(RT_UOFFSETOF_DYN(VBOXWDDMDISP_ADAPTER,
     6562                                                                                         aHeads[pAdapterInfo->cInfos]));
    65636563#else
    65646564    Assert(pAdapterInfo->cInfos == 0);
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