VirtualBox

Changeset 75445 in vbox


Ignore:
Timestamp:
Nov 14, 2018 12:19:32 PM (6 years ago)
Author:
vboxsync
Message:

WDDM: Gallium driver (disabled)

Location:
trunk/src/VBox/Additions
Files:
17 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Additions/Makefile.kmk

    r69111 r75445  
    6666 endif
    6767 ifeq ($(KBUILD_TARGET),win)
    68   include $(PATH_SUB_CURRENT)/WINNT/Makefile.kmk
    6968  ifdef VBOX_WITH_MESA3D
    7069   include $(PATH_SUB_CURRENT)/3D/Makefile.kmk
    7170  endif
     71  include $(PATH_SUB_CURRENT)/WINNT/Makefile.kmk
    7272 endif
    7373 ifeq ($(KBUILD_TARGET),darwin)
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/Makefile.kmk

    r71323 r75445  
    8787        $(PATH_TARGET)/VBoxWddmCat.dir/VBoxDispD3D-x86.dll
    8888  endif # VBOXWDDM_WITH_DISPD3D
     89
     90  ifdef VBOX_WITH_MESA3D
     91   VBoxWddm-inf_SOURCES += \
     92        $(PATH_TARGET)/VBoxWddmCat.dir/VBoxNine.dll \
     93        $(PATH_TARGET)/VBoxWddmCat.dir/VBoxSVGA.dll \
     94        $(PATH_TARGET)/VBoxWddmCat.dir/VBoxGL.dll
     95   VBoxWddm-inf_SOURCES.amd64 += \
     96        $(PATH_TARGET)/VBoxWddmCat.dir/VBoxNine-x86.dll \
     97        $(PATH_TARGET)/VBoxWddmCat.dir/VBoxSVGA-x86.dll \
     98        $(PATH_TARGET)/VBoxWddmCat.dir/VBoxGL-x86.dll
     99  endif
    89100
    90101  ifdef VBOXWDDM_WITH_GL
     
    117128
    118129 VBOXWDDM_EDIT_INF_DISPD3D_FN_ARG = $(if $(VBOXWDDM_WITH_DISPD3D),-e 's/^;dispd3d  *//', -e '/^;dispd3d /d')
     130 VBOXWDDM_EDIT_INF_MESA3D_FN_ARG = $(if $(VBOX_WITH_MESA3D),-e 's/^;mesa3d  *//', -e '/^;mesa3d /d')
    119131 VBOXWDDM_EDIT_INF_GL_FN_ARG      = $(if $(VBOXWDDM_WITH_GL),-e 's/^;gl  *//', -e '/^;gl /d')
    120132 # Depends on VBOXWDDM_WITH_GL. ";icd" prefix is used for telling which lines are for OpenGL ICD
     
    124136                $(PATH_SUB_CURRENT)/mp/wddm/VBoxWddm.inf $(MAKEFILE_CURRENT) | $$(dir $$@)
    125137        $(call MSG_GENERATE,VBoxWddm-inf,$@,$<)
    126         $(call VBOX_EDIT_INF_FN,$<,$@ $(VBOXWDDM_EDIT_INF_DISPD3D_FN_ARG) $(VBOXWDDM_EDIT_INF_GL_FN_ARG) $(VBOXWDDM_EDIT_INF_ICD_FN_ARG))
     138        $(call VBOX_EDIT_INF_FN,$<,$@ $(VBOXWDDM_EDIT_INF_DISPD3D_FN_ARG) $(VBOXWDDM_EDIT_INF_MESA3D_FN_ARG) $(VBOXWDDM_EDIT_INF_GL_FN_ARG) $(VBOXWDDM_EDIT_INF_ICD_FN_ARG))
    127139
    128140 $(PATH_TARGET)/VBoxWddmCat.dir/VBoxWddm.sys: $$(VBoxWddm_1_TARGET) | $$(dir $$@)
     
    138150  endif
    139151 endif # VBOXWDDM_WITH_DISPD3D
     152
     153 ifdef VBOX_WITH_MESA3D
     154  $(PATH_TARGET)/VBoxWddmCat.dir/VBoxNine.dll: $$(VBoxNine_1_TARGET) | $$(dir $$@)
     155        $(INSTALL) -m 644 $< $(@D)
     156  $(PATH_TARGET)/VBoxWddmCat.dir/VBoxSVGA.dll: $$(VBoxSVGA_1_TARGET) | $$(dir $$@)
     157        $(INSTALL) -m 644 $< $(@D)
     158  $(PATH_TARGET)/VBoxWddmCat.dir/VBoxGL.dll: $$(VBoxGL_1_TARGET) | $$(dir $$@)
     159        $(INSTALL) -m 644 $< $(@D)
     160
     161  ifeq ($(KBUILD_TARGET_ARCH),amd64)
     162   $(PATH_TARGET)/VBoxWddmCat.dir/VBoxNine-x86.dll: $$(VBoxNine-x86_1_TARGET) | $$(dir $$@)
     163        $(INSTALL) -m 644 $< $(@D)
     164   $(PATH_TARGET)/VBoxWddmCat.dir/VBoxSVGA-x86.dll: $$(VBoxSVGA-x86_1_TARGET) | $$(dir $$@)
     165        $(INSTALL) -m 644 $< $(@D)
     166   $(PATH_TARGET)/VBoxWddmCat.dir/VBoxGL-x86.dll: $$(VBoxGL-x86_1_TARGET) | $$(dir $$@)
     167        $(INSTALL) -m 644 $< $(@D)
     168  endif
     169 endif
    140170
    141171 ifdef VBOXWDDM_WITH_GL
     
    202232                $(if $(VBOXWDDM_WITH_DISPD3D), $(PATH_TARGET)/VBoxWddmCat.dir/VBoxDispD3D.dll, ) \
    203233                $(if $(VBOXWDDM_WITH_DISPD3D), $(if-expr "$(KBUILD_TARGET_ARCH)" == "amd64", $(PATH_TARGET)/VBoxWddmCat.dir/VBoxDispD3D-x86.dll, ), ) \
     234                $(if $(VBOX_WITH_MESA3D), \
     235                        $(PATH_TARGET)/VBoxWddmCat.dir/VBoxNine.dll \
     236                        $(PATH_TARGET)/VBoxWddmCat.dir/VBoxSVGA.dll \
     237                        $(PATH_TARGET)/VBoxWddmCat.dir/VBoxGL.dll \
     238                        $(if-expr "$(KBUILD_TARGET_ARCH)" == "amd64", \
     239                                $(PATH_TARGET)/VBoxWddmCat.dir/VBoxNine-x86.dll \
     240                                $(PATH_TARGET)/VBoxWddmCat.dir/VBoxSVGA-x86.dll \
     241                                $(PATH_TARGET)/VBoxWddmCat.dir/VBoxGL-x86.dll, ), ) \
    204242                $(if $(VBOXWDDM_WITH_GL),  $(PATH_TARGET)/VBoxWddmCat.dir/VBoxOGL.dll \
    205243                                           $(PATH_TARGET)/VBoxWddmCat.dir/VBoxD3D9wddm.dll \
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/common/wddm/VBoxMPIf.h

    r74494 r75445  
    263263    /* context created by VBoxTray to handle seamless operations */
    264264    VBOXWDDM_CONTEXT_TYPE_CUSTOM_DISPIF_SEAMLESS
     265#ifdef VBOX_WITH_MESA3D
     266    /* Gallium driver context. */
     267    , VBOXWDDM_CONTEXT_TYPE_GA_3D
     268#endif
    265269} VBOXWDDM_CONTEXT_TYPE;
    266270
     
    283287            uint64_t u64UmInfo;
    284288        } vbox;
     289#ifdef VBOX_WITH_MESA3D
     290        struct
     291        {
     292            /* VBOXWDDM_F_GA_CONTEXT_* */
     293            uint32_t u32Flags;
     294        } vmsvga;
     295#endif
    285296    } u;
    286297} VBOXWDDM_CREATECONTEXT_INFO, *PVBOXWDDM_CREATECONTEXT_INFO;
     
    506517} VBOXDISPIFESCAPE_CRHGSMICTLCON_CALL, *PVBOXDISPIFESCAPE_CRHGSMICTLCON_CALL;
    507518
     519#ifdef VBOX_WITH_MESA3D
     520
     521#define VBOXWDDM_F_GA_CONTEXT_EXTENDED 0x00000001
     522#define VBOXWDDM_F_GA_CONTEXT_VGPU10   0x00000002
     523
     524#define VBOXESC_GAGETCID            0xA0000002
     525#define VBOXESC_GAREGION            0xA0000003
     526#define VBOXESC_GAPRESENT           0xA0000004
     527#define VBOXESC_GASURFACEDEFINE     0xA0000005
     528#define VBOXESC_GASURFACEDESTROY    0xA0000006
     529#define VBOXESC_GASHAREDSID         0xA0000008
     530#define VBOXESC_GAFENCECREATE       0xA0000020
     531#define VBOXESC_GAFENCEQUERY        0xA0000021
     532#define VBOXESC_GAFENCEWAIT         0xA0000022
     533#define VBOXESC_GAFENCEUNREF        0xA0000023
     534
     535/* Get Gallium context id (cid) of the WDDM context. */
     536typedef struct VBOXDISPIFESCAPE_GAGETCID
     537{
     538    VBOXDISPIFESCAPE EscapeHdr;
     539    uint32_t u32Cid;
     540} VBOXDISPIFESCAPE_GAGETCID;
     541
     542/* Create or delete a Guest Memory Region (GMR). */
     543#define GA_REGION_CMD_CREATE  0
     544#define GA_REGION_CMD_DESTROY 1
     545typedef struct VBOXDISPIFESCAPE_GAREGION
     546{
     547    VBOXDISPIFESCAPE EscapeHdr;
     548    uint32_t u32Command;
     549    uint32_t u32GmrId;
     550    uint32_t u32NumPages;
     551    uint32_t u32Reserved;
     552    uint64_t u64UserAddress;
     553} VBOXDISPIFESCAPE_GAREGION;
     554
     555/* Debug helper. Present the specified surface by copying to the guest screen VRAM. */
     556typedef struct VBOXDISPIFESCAPE_GAPRESENT
     557{
     558    VBOXDISPIFESCAPE EscapeHdr;
     559    uint32_t u32Sid;
     560    uint32_t u32Width;
     561    uint32_t u32Height;
     562} VBOXDISPIFESCAPE_GAPRESENT;
     563
     564/* Create a host surface. */
     565typedef struct VBOXDISPIFESCAPE_GASURFACEDEFINE
     566{
     567    VBOXDISPIFESCAPE EscapeHdr;
     568    uint32_t u32Sid; /* Returned surface id. */
     569    uint32_t cbReq;  /* Size of data after cSizes field. */
     570    uint32_t cSizes; /* Number of GASURFSIZE structures. */
     571    /* GASURFCREATE */
     572    /* GASURFSIZE[cSizes] */
     573} VBOXDISPIFESCAPE_GASURFACEDEFINE;
     574
     575/* Delete a host surface. */
     576typedef struct VBOXDISPIFESCAPE_GASURFACEDESTROY
     577{
     578    VBOXDISPIFESCAPE EscapeHdr;
     579    uint32_t u32Sid;
     580} VBOXDISPIFESCAPE_GASURFACEDESTROY;
     581
     582/* Inform the miniport that 'u32Sid' actually maps to 'u32SharedSid'.
     583 * If 'u32SharedSid' is ~0, then remove the mapping.
     584 */
     585typedef struct VBOXDISPIFESCAPE_GASHAREDSID
     586{
     587    VBOXDISPIFESCAPE EscapeHdr;
     588    uint32_t u32Sid;
     589    uint32_t u32SharedSid;
     590} VBOXDISPIFESCAPE_GASHAREDSID;
     591
     592/* Create a user mode fence object. */
     593typedef struct VBOXDISPIFESCAPE_GAFENCECREATE
     594{
     595    VBOXDISPIFESCAPE EscapeHdr;
     596
     597    /* IN: The miniport's handle of the fence.
     598     * Assigned by the miniport. Not DXGK fence id!
     599     */
     600    uint32_t u32FenceHandle;
     601} VBOXDISPIFESCAPE_GAFENCECREATE;
     602
     603/* Query a user mode fence object state. */
     604#define GA_FENCE_STATUS_NULL      0 /* Fence not found */
     605#define GA_FENCE_STATUS_IDLE      1
     606#define GA_FENCE_STATUS_SUBMITTED 2
     607#define GA_FENCE_STATUS_SIGNALED  3
     608typedef struct VBOXDISPIFESCAPE_GAFENCEQUERY
     609{
     610    VBOXDISPIFESCAPE EscapeHdr;
     611
     612    /* IN: The miniport's handle of the fence.
     613     * Assigned by the miniport. Not DXGK fence id!
     614     */
     615    uint32_t u32FenceHandle;
     616
     617    /* OUT: The miniport's sequence number associated with the command buffer.
     618     */
     619    uint32_t u32SubmittedSeqNo;
     620
     621    /* OUT: The miniport's sequence number associated with the last command buffer completed on host.
     622     */
     623    uint32_t u32ProcessedSeqNo;
     624
     625    /* OUT: GA_FENCE_STATUS_*. */
     626    uint32_t u32FenceStatus;
     627} VBOXDISPIFESCAPE_GAFENCEQUERY;
     628
     629/* Wait on a user mode fence object. */
     630typedef struct VBOXDISPIFESCAPE_GAFENCEWAIT
     631{
     632    VBOXDISPIFESCAPE EscapeHdr;
     633
     634    /* IN: The miniport's handle of the fence.
     635     * Assigned by the miniport. Not DXGK fence id!
     636     */
     637    uint32_t u32FenceHandle;
     638
     639    /* IN: Timeout in microseconds.
     640     */
     641    uint32_t u32TimeoutUS;
     642} VBOXDISPIFESCAPE_GAFENCEWAIT;
     643
     644/* Delete a user mode fence object. */
     645typedef struct VBOXDISPIFESCAPE_GAFENCEUNREF
     646{
     647    VBOXDISPIFESCAPE EscapeHdr;
     648
     649    /* IN: The miniport's handle of the fence.
     650     * Assigned by the miniport. Not DXGK fence id!
     651     */
     652    uint32_t u32FenceHandle;
     653} VBOXDISPIFESCAPE_GAFENCEUNREF;
     654
     655#include <VBoxGaHWInfo.h>
     656#endif /* VBOX_WITH_MESA3D */
    508657
    509658/* D3DDDICB_QUERYADAPTERINFO::pPrivateDriverData */
     
    523672            uint32_t    u32VBox3DCaps;   /* CR_VBOX_CAP_* */
    524673        } vbox;
     674#ifdef VBOX_WITH_MESA3D
     675        struct
     676        {
     677            /* VBOXVIDEO_HWTYPE_VMSVGA */
     678            VBOXGAHWINFO HWInfo;
     679        } vmsvga;
     680#endif
    525681    } u;
    526682} VBOXWDDM_QAI;
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/Makefile.kmk

    r71934 r75445  
    1818SUB_DEPTH = ../../../../../../..
    1919include $(KBUILD_PATH)/subheader.kmk
     20
     21ifdef VBOX_WITH_MESA3D
     22 ifndef VBOX_MESA3D_CONFIG_KMK_INCLUDED
     23  include $(PATH_ROOT)/src/VBox/Additions/3D/Config.kmk
     24 endif
     25endif
    2026
    2127#
     
    135141        $(VBOX_PATH_ADDITIONS_LIB)/VBoxCrHgsmi$(VBOX_SUFF_LIB)
    136142
     143ifdef VBOX_WITH_MESA3D
     144VBoxDispD3D_DEFS     += VBOX_WITH_MESA3D
     145VBoxDispD3D_INCS     += \
     146        $(VBOX_PATH_MESA)/src/gallium/include \
     147        $(VBOX_PATH_MESA)/src \
     148        $(VBOX_PATH_MESA)/include/c99 \
     149        $(VBOX_PATH_MESA)/include \
     150        $(VBOX_PATH_3D)/win/include \
     151        $(VBOX_PATH_VMSVGA_INC)
     152VBoxDispD3D_SOURCES  += \
     153        wddm/gallium/GaDrvEnvWddm.cpp \
     154        wddm/gallium/GaWddm.cpp \
     155        wddm/gallium/GaDdi.cpp \
     156        wddm/gallium/Present.cpp \
     157        wddm/gallium/VBoxGallium.cpp \
     158        wddm/gallium/VBoxGaD3DDevice9Ex.cpp \
     159        wddm/gallium/VBoxD3DAdapter9.c
     160
     161 ifdef VBOX_WITH_MESA3D_D3DTEST
     162VBoxDispD3D_DEFS     += VBOX_WITH_MESA3D_D3DTEST
     163VBoxDispD3D_SOURCES  += \
     164        wddm/gallium/test/d3dhlp.cpp \
     165        wddm/gallium/test/d3d9render.cpp \
     166        wddm/gallium/GaDrvTest.cpp
     167 endif
     168endif
     169
    137170#
    138171# 64-bit systems needs a 32-bit version of VBoxDispD3D.
     
    165198        $(PATH_ROOT)/src/VBox/Additions/WINNT/Graphics/Video/disp/wddm/shared \
    166199        $(VBOX_GRAPHICS_INCS)
     200ifdef VBOX_WITH_MESA3D
     201VBoxCrHgsmi_INCS     += $(VBOX_PATH_3D)/win/include
     202endif
    167203VBoxCrHgsmi_SOURCES     = \
    168204        wddm/VBoxCrHgsmi.cpp \
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/wddm/VBoxDispD3D.cpp

    r74477 r75445  
    58045804            if (pDevice->pAdapter->enmHwType == VBOXVIDEO_HWTYPE_VBOX)
    58055805                pDevice->pAdapter->D3D.D3D.pfnVBoxWineExD3DDev9Term((IDirect3DDevice9Ex *)pDevice->pDevice9If);
     5806#ifdef VBOX_WITH_MESA3D
     5807            else if (pDevice->pAdapter->enmHwType == VBOXVIDEO_HWTYPE_VMSVGA)
     5808            {
     5809                pDevice->pDevice9If->Release();
     5810                pDevice->pDevice9If = NULL;
     5811            }
     5812#endif
    58065813        }
    58075814    }
     
    63506357        pCreateData->pDeviceFuncs->pfnRename = NULL; //vboxWddmDDevRename;
    63516358
     6359#ifdef VBOX_WITH_MESA3D
     6360        /** @todo For now just override functions which are already implemented for Gallium backend.
     6361         * The plan is to have only OpenAdapter as common function between old Chromium and new Gallium code.
     6362         * Adapter and device callbacks will be reimplemented for Gallium, because this will simplify
     6363         * the Gallium-only code and keep the old code unchanged.
     6364         * Currently the common callbacks do things which Gallium does not need: vboxWddmDal*, etc.
     6365         *
     6366         * See gallium\GaDdi.h for list of GaDdi* functions which are already implemented.
     6367         */
     6368        if (pAdapter->enmHwType == VBOXVIDEO_HWTYPE_VMSVGA)
     6369        {
     6370            pDevice->pfnCreateDirect3DDevice = GaD3DIfDeviceCreate;
     6371            pDevice->pfnCreateSharedPrimary  = GaD3DIfCreateSharedPrimary;
     6372
     6373            pCreateData->pDeviceFuncs->pfnDrawPrimitive          = GaDdiDrawPrimitive;
     6374            pCreateData->pDeviceFuncs->pfnDrawIndexedPrimitive   = GaDdiDrawIndexedPrimitive;
     6375            pCreateData->pDeviceFuncs->pfnDrawPrimitive2         = GaDdiDrawPrimitive2;
     6376            pCreateData->pDeviceFuncs->pfnDrawIndexedPrimitive2  = GaDdiDrawIndexedPrimitive2;
     6377            pCreateData->pDeviceFuncs->pfnBlt                    = GaDdiBlt;
     6378            pCreateData->pDeviceFuncs->pfnTexBlt                 = GaDdiTexBlt;
     6379            pCreateData->pDeviceFuncs->pfnVolBlt                 = GaDdiVolBlt;
     6380            pCreateData->pDeviceFuncs->pfnFlush                  = GaDdiFlush;
     6381            pCreateData->pDeviceFuncs->pfnPresent                = GaDdiPresent;
     6382            pCreateData->pDeviceFuncs->pfnLock                   = GaDdiLock;
     6383            pCreateData->pDeviceFuncs->pfnUnlock                 = GaDdiUnlock;
     6384            pCreateData->pDeviceFuncs->pfnCreateVertexShaderFunc = GaDdiCreateVertexShaderFunc;
     6385            pCreateData->pDeviceFuncs->pfnCreatePixelShader      = GaDdiCreatePixelShader;
     6386            pCreateData->pDeviceFuncs->pfnCreateResource         = GaDdiCreateResource;
     6387            pCreateData->pDeviceFuncs->pfnDestroyResource        = GaDdiDestroyResource;
     6388            pCreateData->pDeviceFuncs->pfnOpenResource           = GaDdiOpenResource;
     6389        }
     6390#endif
     6391
    63526392        VBOXDISPPROFILE_DDI_INIT_DEV(pDevice);
    63536393#ifdef VBOX_WDDMDISP_WITH_PROFILE
     
    63716411                    VBOXDISPCRHGSMI_SCOPE_SET_DEV(pDevice);
    63726412
     6413#ifdef VBOX_WITH_MESA3D
     6414                    if (pAdapter->enmHwType == VBOXVIDEO_HWTYPE_VMSVGA)
     6415                    {
     6416                        RT_ZERO(pDevice->DefaultContext);
     6417                        hr = S_OK;
     6418                    }
     6419                    else
     6420                        hr = vboxDispCmCtxCreate(pDevice, &pDevice->DefaultContext);
     6421#else
    63736422                    hr = vboxDispCmCtxCreate(pDevice, &pDevice->DefaultContext);
     6423#endif
    63746424                    Assert(hr == S_OK);
    63756425                    if (hr == S_OK)
     
    64606510    }
    64616511
     6512#if defined(VBOX_WITH_MESA3D) && defined(VBOX_WITH_MESA3D_D3DTEST)
     6513    /* Built-in gallium backend test for early development stages.
     6514     * Use it only with kernel debugger attached to the VM.
     6515     */
     6516    extern void GaDrvTest(IGalliumStack *pGalliumStack, PVBOXWDDMDISP_DEVICE pDevice);
     6517    if (SUCCEEDED(hr))
     6518       GaDrvTest(pAdapter->D3D.pGalliumStack, pDevice);
     6519#endif
     6520
    64626521    vboxVDbgPrint(("<== "__FUNCTION__", hAdapter(0x%p)\n", hAdapter));
    64636522
     
    65746633    if (pAdapter->enmHwType == VBOXVIDEO_HWTYPE_VBOX)
    65756634        pAdapter->u32VBox3DCaps = pAdapterInfo->u.vbox.u32VBox3DCaps;
     6635#ifdef VBOX_WITH_MESA3D
     6636    /** @todo Remove the hack. u32VBox3DCaps should not be used with Gallium. */
     6637    else if (pAdapter->enmHwType == VBOXVIDEO_HWTYPE_VMSVGA)
     6638        pAdapter->u32VBox3DCaps = CR_VBOX_CAP_TEX_PRESENT | CR_VBOX_CAP_CMDVBVA;
     6639#endif
    65766640    pAdapter->AdapterInfo = *pAdapterInfo;
    65776641#ifdef VBOX_WITH_VIDEOHWACCEL
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/wddm/VBoxDispD3D.h

    r71934 r75445  
    297297    VBOXWDDM_SURFACE_DESC SurfDesc;
    298298    PVBOXWDDMDISP_SWAPCHAIN pSwapchain;
     299#ifdef VBOX_WITH_MESA3D
     300    uint32_t hostID;
     301#endif
    299302} VBOXWDDMDISP_ALLOCATION, *PVBOXWDDMDISP_ALLOCATION;
    300303
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/wddm/VBoxDispD3DIf.cpp

    r74477 r75445  
    12571257}
    12581258
     1259#ifdef VBOX_WITH_MESA3D
     1260HRESULT GaWddmD3DBackendOpen(PVBOXWDDMDISP_D3D pD3D, VBOXWDDM_QAI const *pAdapterInfo);
     1261#endif
     1262
    12591263static HRESULT vboxDispD3DGlobalDoOpen(PVBOXWDDMDISP_D3D pD3D, VBOXWDDM_QAI const *pAdapterInfo)
    12601264{
     
    12641268    if (pAdapterInfo->enmHwType == VBOXVIDEO_HWTYPE_VBOX)
    12651269        hr = vboxDispD3DGlobalDoOpenWine(pD3D);
     1270#ifdef VBOX_WITH_MESA3D
     1271    else if (pAdapterInfo->enmHwType == VBOXVIDEO_HWTYPE_VMSVGA)
     1272        hr = GaWddmD3DBackendOpen(pD3D, pAdapterInfo);
     1273#endif
    12661274    else
    12671275        hr = E_FAIL;
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/wddm/VBoxDispD3DIf.h

    r72010 r75445  
    1818#ifndef ___VBoxDispD3DIf_h___
    1919#define ___VBoxDispD3DIf_h___
     20
     21#ifdef VBOX_WITH_MESA3D
     22#include "gallium/VBoxGallium.h"
     23#endif
    2024
    2125/* D3D headers */
     
    9195    VBOXDISPD3D D3D;
    9296
     97#ifdef VBOX_WITH_MESA3D
     98    /* Gallium backend. */
     99    IGalliumStack *pGalliumStack;
     100#endif
    93101} VBOXWDDMDISP_D3D;
    94102
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/wddm/VBoxUhgsmiKmt.cpp

    r74477 r75445  
    333333    if (Query.enmHwType == VBOXVIDEO_HWTYPE_VBOX)
    334334        *pu32Caps = Query.u.vbox.u32VBox3DCaps;
     335#ifdef VBOX_WITH_MESA3D
     336    /** @todo Remove the hack. u32VBox3DCaps should not be used with Gallium. */
     337    else if (Query.enmHwType == VBOXVIDEO_HWTYPE_VMSVGA)
     338        *pu32Caps = CR_VBOX_CAP_TEX_PRESENT | CR_VBOX_CAP_CMDVBVA;
     339#endif
    335340    else
    336341        *pu32Caps = 0;
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/Makefile.kmk

    r72082 r75445  
    1818SUB_DEPTH = ../../../../../../..
    1919include $(KBUILD_PATH)/subheader.kmk
     20
     21ifdef VBOX_WITH_MESA3D
     22 ifndef VBOX_MESA3D_CONFIG_KMK_INCLUDED
     23  include $(PATH_ROOT)/src/VBox/Additions/3D/Config.kmk
     24 endif
     25endif
    2026
    2127#
     
    162168        $(PATH_SDK_$(VBOX_WINDDK_GST_W8)_LIB)/memcmp.lib
    163169
     170 ifdef VBOX_WITH_MESA3D
     171  VBoxWddm_DEFS           += VBOX_WITH_MESA3D
     172  VBoxWddm_DEFS           += __STDC_VERSION__=0    # for mesa include/c99_compat.h
     173  VBoxWddm_DEFS           += WIN9X_COMPAT_SPINLOCK # to avoid multiple KeInitializeSpinLock on amd64
     174  VBoxWddm_INCS           += \
     175        $(VBOX_PATH_3D)/win/include \
     176        $(VBOX_PATH_VMSVGA_INC)
     177  VBoxWddm_SOURCES        += \
     178        wddm/gallium/Svga.cpp \
     179        wddm/gallium/SvgaCmd.cpp \
     180        wddm/gallium/SvgaFifo.cpp \
     181        wddm/gallium/SvgaHw.cpp \
     182        wddm/gallium/VBoxMPGaWddm.cpp
     183 endif
     184
    164185endif # VBOX_WITH_WDDM
    165186
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/common/VBoxMPDevExt.h

    r71862 r75445  
    4141    ULONG cbVRAM;
    4242    ULONG ulApertureSize;
     43#ifdef VBOX_WITH_MESA3D
     44    PHYSICAL_ADDRESS phFIFO;
     45    ULONG cbFIFO;
     46    PHYSICAL_ADDRESS phIO;
     47    ULONG cbIO;
     48#endif
    4349} VBOXWDDM_HWRESOURCES, *PVBOXWDDM_HWRESOURCES;
    44 #endif
     50
     51#ifdef VBOX_WITH_MESA3D
     52typedef struct VBOXWDDM_EXT_GA *PVBOXWDDM_EXT_GA;
     53#endif
     54
     55#endif /* VBOX_WDDM_MINIPORT */
    4556
    4657#define VBOXMP_MAX_VIDEO_MODES 128
     
    217228#endif
    218229
     230#ifdef VBOX_WITH_MESA3D
     231   PVBOXWDDM_EXT_GA pGa;                       /* Pointer to Gallium backend data. */
     232#endif
     233
    219234} VBOXMP_DEVEXT, *PVBOXMP_DEVEXT;
    220235
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPTypes.h

    r69500 r75445  
    4545#endif
    4646
     47#ifndef VBOX_WITH_MESA3D
    4748/* one page size */
    4849#define VBOXWDDM_C_DMA_BUFFER_SIZE         0x1000
    4950#define VBOXWDDM_C_DMA_PRIVATEDATA_SIZE    0x4000
     51#else
     52#define VBOXWDDM_C_DMA_BUFFER_SIZE         0x10000
     53#define VBOXWDDM_C_DMA_PRIVATEDATA_SIZE    0x8000
     54#endif
    5055#define VBOXWDDM_C_ALLOC_LIST_SIZE         0xc00
    5156#define VBOXWDDM_C_PATH_LOCATION_LIST_SIZE 0xc00
     
    279284    VBOXVIDEOCM_CTX CmContext;
    280285    VBOXVIDEOCM_ALLOC_CONTEXT AllocContext;
     286#ifdef VBOX_WITH_MESA3D
     287    uint32_t u32Cid;               /* SVGA context id of this context. */
     288#endif
    281289} VBOXWDDM_CONTEXT, *PVBOXWDDM_CONTEXT;
    282290
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPWddm.cpp

    r75403 r75445  
    3232#include <VBoxVideoVBE.h>
    3333#include <VBox/Version.h>
     34
     35#ifdef VBOX_WITH_MESA3D
     36#include "gallium/VBoxMPGaWddm.h"
     37#endif
    3438
    3539#include <stdio.h>
     
    759763                   {
    760764                       case CmResourceTypePort:
     765#ifdef VBOX_WITH_MESA3D
     766                           AssertBreak(pHwResources->phIO.QuadPart == 0);
     767                           pHwResources->phIO = pPRc->u.Port.Start;
     768                           pHwResources->cbIO = pPRc->u.Port.Length;
     769#endif
    761770                           break;
    762771                       case CmResourceTypeInterrupt:
    763772                           break;
    764773                       case CmResourceTypeMemory:
     774#ifdef VBOX_WITH_MESA3D
     775                           if (pHwResources->phVRAM.QuadPart)
     776                           {
     777                               AssertBreak(pHwResources->phFIFO.QuadPart == 0);
     778                               pHwResources->phFIFO = pPRc->u.Memory.Start;
     779                               pHwResources->cbFIFO = pPRc->u.Memory.Length;
     780                               break;
     781                           }
     782#else
    765783                           /* we assume there is one memory segment */
    766784                           AssertBreak(pHwResources->phVRAM.QuadPart == 0);
     785#endif
    767786                           pHwResources->phVRAM = pPRc->u.Memory.Start;
    768787                           Assert(pHwResources->phVRAM.QuadPart != 0);
     
    826845        pDevExt->f3DEnabled = VBoxMpCrCtlConIs3DSupported();
    827846    }
     847    else if (pDevExt->enmHwType == VBOXVIDEO_HWTYPE_VMSVGA)
     848    {
     849        pDevExt->f3DEnabled = f3DSupported;
     850    }
    828851    else
    829852    {
     
    11721195#endif
    11731196                }
     1197#ifdef VBOX_WITH_MESA3D
     1198                else if (pDevExt->enmHwType == VBOXVIDEO_HWTYPE_VMSVGA)
     1199                {
     1200                    if (pDevExt->f3DEnabled)
     1201                    {
     1202                        pDevExt->fTexPresentEnabled = TRUE;
     1203                        pDevExt->fCmdVbvaEnabled = TRUE;
     1204                        pDevExt->fComplexTopologiesEnabled = FALSE; /** @todo Enable after implementing multimonitor support. */
     1205                    }
     1206                }
     1207#endif /* VBOX_WITH_MESA3D */
    11741208                else
    11751209                {
     
    13311365
    13321366                    VBoxWddmVModesInit(pDevExt);
     1367
     1368#ifdef VBOX_WITH_MESA3D
     1369                    if (pDevExt->enmHwType == VBOXVIDEO_HWTYPE_VMSVGA)
     1370                    {
     1371                        LOGREL(("WDDM: VRAM %#RX64/%#RX32, FIFO %#RX64/%#RX32, IO %#RX64/%#RX32",
     1372                                pDevExt->HwResources.phVRAM.QuadPart, pDevExt->HwResources.cbVRAM,
     1373                                pDevExt->HwResources.phFIFO.QuadPart, pDevExt->HwResources.cbFIFO,
     1374                                pDevExt->HwResources.phIO.QuadPart, pDevExt->HwResources.cbIO));
     1375
     1376                        Status = GaAdapterStart(pDevExt);
     1377                        if (Status == STATUS_SUCCESS)
     1378                        { /* likely */ }
     1379                        else
     1380                            LOGREL(("WDDM: GaAdapterStart failed Status(0x%x)", Status));
     1381                    }
     1382#endif
    13331383                }
    13341384                else
     
    13751425    PVBOXMP_DEVEXT pDevExt = (PVBOXMP_DEVEXT)MiniportDeviceContext;
    13761426    NTSTATUS Status = STATUS_SUCCESS;
     1427
     1428#ifdef VBOX_WITH_MESA3D
     1429     if (pDevExt->enmHwType == VBOXVIDEO_HWTYPE_VMSVGA)
     1430     {
     1431         GaAdapterStop(pDevExt);
     1432     }
     1433#endif
    13771434
    13781435#ifdef VBOX_WITH_CROGL
     
    15221579    PVBOXMP_DEVEXT pDevExt = (PVBOXMP_DEVEXT)MiniportDeviceContext;
    15231580    BOOLEAN bOur = FALSE;
     1581#ifdef VBOX_WITH_MESA3D
     1582    BOOLEAN bSvga = FALSE;
     1583    if (pDevExt->enmHwType == VBOXVIDEO_HWTYPE_VMSVGA)
     1584    {
     1585        bSvga = GaDxgkDdiInterruptRoutine(MiniportDeviceContext, MessageNumber);
     1586    }
     1587#endif
    15241588    bool bNeedDpc = FALSE;
    15251589    if (!VBoxCommonFromDeviceExt(pDevExt)->hostCtx.pfHostFlags) /* If HGSMI is enabled at all. */
    15261590    {
    15271591        WARN(("ISR called with hgsmi disabled!"));
     1592#ifdef VBOX_WITH_MESA3D
     1593        return bSvga;
     1594#else
    15281595        return FALSE;
     1596#endif
    15291597    }
    15301598
     
    15371605
    15381606    uint32_t flags = VBoxCommonFromDeviceExt(pDevExt)->hostCtx.pfHostFlags->u32HostFlags;
    1539     bOur = (flags & HGSMIHOSTFLAGS_IRQ);
     1607    bOur = RT_BOOL(flags & HGSMIHOSTFLAGS_IRQ);
    15401608
    15411609    if (bOur)
     
    16491717        pDevExt->u.primary.DxgkInterface.DxgkCbQueueDpc(pDevExt->u.primary.DxgkInterface.DeviceHandle);
    16501718
     1719#ifdef VBOX_WITH_MESA3D
     1720    return bSvga || bOur;
     1721#else
    16511722    return bOur;
     1723#endif
    16521724}
    16531725#endif
     
    18991971    pDevExt->u.primary.DxgkInterface.DxgkCbNotifyDpc(pDevExt->u.primary.DxgkInterface.DeviceHandle);
    19001972
     1973#ifdef VBOX_WITH_MESA3D
     1974    if (pDevExt->enmHwType == VBOXVIDEO_HWTYPE_VMSVGA)
     1975    {
     1976        GaDxgkDdiDpcRoutine(MiniportDeviceContext);
     1977    }
     1978#endif
     1979
    19011980    if (ASMAtomicReadU32(&pDevExt->fCompletingCommands))
    19021981    {
     
    22592338                /** @todo this correlates with pCaps->SchedulingCaps.MultiEngineAware */
    22602339                pCaps->GpuEngineTopology.NbAsymetricProcessingNodes = VBOXWDDM_NUM_NODES;
     2340#ifdef VBOX_WITH_MESA3D
     2341                if (pDevExt->enmHwType == VBOXVIDEO_HWTYPE_VMSVGA)
     2342                {
     2343                    /* The Gallium node has NodeOrdinal == 0, because:
     2344                     *   GDI context is created with it;
     2345                     *   we generate commands for the context;
     2346                     *   there seems to be no easy way to distinguish which node a fence was completed for.
     2347                     *
     2348                     * GDI context is used for example for copying between D3DKMDT_STANDARDALLOCATION_SHADOWSURFACE
     2349                     * and D3DKMDT_STANDARDALLOCATION_SHAREDPRIMARYSURFACE.
     2350                     */
     2351                    pCaps->GpuEngineTopology.NbAsymetricProcessingNodes = 1;
     2352                }
     2353#endif
    22612354
    22622355                if (VBoxQueryWinVersion(NULL) >= WINVERSION_8)
     
    23432436#endif
    23442437                    }
     2438#ifdef VBOX_WITH_MESA3D
     2439                    else if (pDevExt->enmHwType == VBOXVIDEO_HWTYPE_VMSVGA)
     2440                        GaQueryInfo(pDevExt->pGa, pDevExt->enmHwType, &pQAI->u.vmsvga.HWInfo);
     2441#endif
     2442
    23452443#ifdef VBOX_WITH_VIDEOHWACCEL
    23462444                    pQAI->cInfos = VBoxCommonFromDeviceExt(pDevExt)->cDisplays;
     
    24092507
    24102508    pCreateDevice->pInfo = NULL;
     2509
     2510#ifdef VBOX_WITH_MESA3D
     2511     if (pDevExt->enmHwType == VBOXVIDEO_HWTYPE_VMSVGA)
     2512     {
     2513         Status = GaDeviceCreate(pDevExt->pGa, pDevice);
     2514         if (Status != STATUS_SUCCESS)
     2515         {
     2516             vboxWddmMemFree(pDevice);
     2517         }
     2518     }
     2519#endif
    24112520
    24122521    LOGF(("LEAVE, context(0x%x), Status(0x%x)", hAdapter, Status));
     
    30723181    PAGED_CODE();
    30733182
     3183#ifdef VBOX_WITH_MESA3D
     3184    if (((PVBOXMP_DEVEXT)hAdapter)->enmHwType == VBOXVIDEO_HWTYPE_VMSVGA)
     3185    {
     3186        return GaDxgkDdiPatch(hAdapter, pPatch);
     3187    }
     3188#endif
     3189
    30743190    LOGF(("ENTER, context(0x%x)", hAdapter));
    30753191
     
    33033419    /* DxgkDdiSubmitCommand runs at dispatch, should not be pageable. */
    33043420
     3421#ifdef VBOX_WITH_MESA3D
     3422    if (((PVBOXMP_DEVEXT)hAdapter)->enmHwType == VBOXVIDEO_HWTYPE_VMSVGA)
     3423    {
     3424        return GaDxgkDdiSubmitCommand(hAdapter, pSubmitCommand);
     3425    }
     3426#endif
     3427
    33053428//    LOGF(("ENTER, context(0x%x)", hAdapter));
    33063429
     
    36263749    CONST DXGKARG_PREEMPTCOMMAND*  pPreemptCommand)
    36273750{
     3751#ifdef VBOX_WITH_MESA3D
     3752    if (((PVBOXMP_DEVEXT)hAdapter)->enmHwType == VBOXVIDEO_HWTYPE_VMSVGA)
     3753    {
     3754        return GaDxgkDdiPreemptCommand(hAdapter, pPreemptCommand);
     3755    }
     3756#endif
    36283757    LOGF(("ENTER, hAdapter(0x%x)", hAdapter));
    36293758
     
    36673796    DXGKARG_BUILDPAGINGBUFFER*  pBuildPagingBuffer)
    36683797{
     3798#ifdef VBOX_WITH_MESA3D
     3799    if (((PVBOXMP_DEVEXT)hAdapter)->enmHwType == VBOXVIDEO_HWTYPE_VMSVGA)
     3800    {
     3801        return GaDxgkDdiBuildPagingBuffer(hAdapter, pBuildPagingBuffer);
     3802    }
     3803#endif
     3804
    36693805    RT_NOREF(hAdapter);
    36703806    /* DxgkDdiBuildPagingBuffer should be made pageable. */
     
    45634699                    if (pDevExt->enmHwType == VBOXVIDEO_HWTYPE_VBOX)
    45644700                        pEscapeHdr->u32CmdSpecific = VBoxMpCrGetHostCaps();
     4701#ifdef VBOX_WITH_MESA3D
     4702                    else if (pDevExt->enmHwType == VBOXVIDEO_HWTYPE_VMSVGA)
     4703                        /** @todo User-mode driver probably should not need it in Gallium mode. */
     4704                        pEscapeHdr->u32CmdSpecific = CR_VBOX_CAP_TEX_PRESENT | CR_VBOX_CAP_CMDVBVA;
     4705#endif
    45654706                    else
    45664707                        pEscapeHdr->u32CmdSpecific = 0;
     
    50595200            }
    50605201            default:
     5202#ifdef VBOX_WITH_MESA3D
     5203                Status = GaDxgkDdiEscape(hAdapter, pEscape);
     5204                if (NT_SUCCESS(Status) || Status != STATUS_NOT_SUPPORTED)
     5205                    break;
     5206#endif
    50615207                WARN(("unsupported escape code (0x%x)", pEscapeHdr->escapeCode));
    50625208                break;
     
    51145260    DXGKARG_QUERYCURRENTFENCE*  pCurrentFence)
    51155261{
     5262#ifdef VBOX_WITH_MESA3D
     5263    if (((PVBOXMP_DEVEXT)hAdapter)->enmHwType == VBOXVIDEO_HWTYPE_VMSVGA)
     5264    {
     5265        return GaDxgkDdiQueryCurrentFence(hAdapter, pCurrentFence);
     5266    }
     5267#endif
    51165268    LOGF(("ENTER, hAdapter(0x%x)", hAdapter));
    51175269
     
    53385490    }
    53395491
     5492#ifdef VBOX_WITH_MESA3D
     5493    GaScreenDefine(pDevExt->pGa, (uint32_t)pSetVidPnSourceAddress->PrimaryAddress.QuadPart,
     5494                   pSetVidPnSourceAddress->VidPnSourceId,
     5495                   pSource->AllocData.SurfDesc.width, pSource->AllocData.SurfDesc.height);
     5496#endif
     5497
    53405498    pSource->u8SyncState &= ~VBOXWDDM_HGSYNC_F_SYNCED_LOCATION;
    53415499
     
    56695827
    56705828    vboxVDbgBreakFv();
     5829
     5830#ifdef VBOX_WITH_MESA3D
     5831    PVBOXWDDM_DEVICE pDevice = (PVBOXWDDM_DEVICE)hDevice;
     5832    PVBOXMP_DEVEXT pDevExt = pDevice->pAdapter;
     5833    if (pDevExt->enmHwType == VBOXVIDEO_HWTYPE_VMSVGA)
     5834    {
     5835        GaDeviceDestroy(pDevExt->pGa, pDevice);
     5836    }
     5837#endif
    56715838
    56725839    vboxWddmMemFree(hDevice);
     
    58556022//    LOGF(("ENTER, hContext(0x%x)", hContext));
    58566023    vboxVDbgBreakF();
     6024
     6025#ifdef VBOX_WITH_MESA3D
     6026    if (GaContextHwTypeIs((PVBOXWDDM_CONTEXT)hContext, VBOXVIDEO_HWTYPE_VMSVGA))
     6027    {
     6028        return GaDxgkDdiRender(hContext, pRender);
     6029    }
     6030#endif
    58576031
    58586032    if (pRender->DmaBufferPrivateDataSize < sizeof (VBOXCMDVBVA_HDR))
     
    62736447
    62746448    vboxVDbgBreakFv();
     6449#ifdef VBOX_WITH_MESA3D
     6450    if (GaContextHwTypeIs((PVBOXWDDM_CONTEXT)hContext, VBOXVIDEO_HWTYPE_VMSVGA))
     6451    {
     6452        return GaDxgkDdiPresent(hContext, pPresent);
     6453    }
     6454#endif
    62756455
    62766456#ifdef VBOX_STRICT
     
    70577237                        break;
    70587238                    }
     7239#ifdef VBOX_WITH_MESA3D
     7240                    case VBOXWDDM_CONTEXT_TYPE_GA_3D:
     7241                    {
     7242                        pContext->enmType = VBOXWDDM_CONTEXT_TYPE_GA_3D;
     7243                        Status = GaContextCreate(pDevExt->pGa, pInfo, pContext);
     7244                        break;
     7245                    }
     7246#endif
    70597247                    default:
    70607248                    {
     
    71417329            break;
    71427330        }
     7331#ifdef VBOX_WITH_MESA3D
     7332        case VBOXWDDM_CONTEXT_TYPE_GA_3D:
     7333        {
     7334            Status = GaContextDestroy(pDevExt->pGa, pContext);
     7335            break;
     7336        }
     7337#endif
    71437338        default:
    71447339            break;
     
    73187513    if (bUpdateRectInited && pSource->bVisible)
    73197514    {
     7515#ifdef VBOX_WITH_MESA3D
     7516        if (pDevExt->enmHwType == VBOXVIDEO_HWTYPE_VMSVGA)
     7517        {
     7518            /** @todo BLIT_GMRFB_TO_SCREEN */
     7519            GaUpdate(pDevExt->pGa,
     7520                     UpdateRect.left,
     7521                     UpdateRect.top,
     7522                     UpdateRect.right - UpdateRect.left,
     7523                     UpdateRect.bottom - UpdateRect.top);
     7524        }
     7525        else
     7526#endif
    73207527        VBOXVBVA_OP_WITHLOCK(ReportDirtyRect, pDevExt, pSource, &UpdateRect);
    73217528    }
     
    76957902#endif
    76967903        }
     7904        else if (enmHwType == VBOXVIDEO_HWTYPE_VMSVGA)
     7905        {
     7906            fCmdVbva = TRUE;
     7907        }
    76977908        else
    76987909        {
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxWddm.inf

    r71323 r75445  
    5555[VBoxVideo.Display]
    5656;dispd3d VBoxDispD3D.dll,,,0x00004000  ; COPYFLG_IN_USE_TRY_RENAME
     57;mesa3d VBoxNine.dll,,,0x00004000     ; COPYFLG_IN_USE_TRY_RENAME
     58;mesa3d VBoxSVGA.dll,,,0x00004000     ; COPYFLG_IN_USE_TRY_RENAME
     59;mesa3d VBoxGL.dll,,,0x00004000       ; COPYFLG_IN_USE_TRY_RENAME
    5760
    5861;amd64 [VBoxVideo.Display_wow64]
    5962;amd64 ;dispd3d VBoxDispD3D-x86.dll,,,0x00004000  ; COPYFLG_IN_USE_TRY_RENAME
     63;amd64 ;mesa3d VBoxNine-x86.dll,,,0x00004000     ; COPYFLG_IN_USE_TRY_RENAME
     64;amd64 ;mesa3d VBoxSVGA-x86.dll,,,0x00004000     ; COPYFLG_IN_USE_TRY_RENAME
     65;amd64 ;mesa3d VBoxGL-x86.dll,,,0x00004000       ; COPYFLG_IN_USE_TRY_RENAME
    6066
    6167[VBoxVideo.GL]
     
    119125VBoxWddm.sys = 1
    120126;amd64 ;dispd3d VBoxDispD3D-x86.dll = 1
     127;amd64 ;mesa3d VBoxNine-x86.dll = 1
     128;amd64 ;mesa3d VBoxSVGA-x86.dll = 1
     129;amd64 ;mesa3d VBoxGL-x86.dll = 1
    121130;dispd3d VBoxDispD3D.dll = 1
     131;mesa3d VBoxNine.dll = 1
     132;mesa3d VBoxSVGA.dll = 1
     133;mesa3d VBoxGL.dll = 1
    122134;amd64 ;gl VBoxOGL-x86.dll = 1
    123135;gl VBoxOGL.dll = 1
  • trunk/src/VBox/Additions/WINNT/Installer/Makefile.kmk

    r71323 r75445  
    134134        $(PATH_STAGE_BIN)/additions/VBoxWddm.inf \
    135135        $(PATH_STAGE_BIN)/additions/VBoxDispD3D.dll
     136 ifdef VBOX_WITH_MESA3D
     137DRIVER_FILES += \
     138        $(PATH_STAGE_BIN)/additions/VBoxNine.dll \
     139        $(PATH_STAGE_BIN)/additions/VBoxSVGA.dll \
     140        $(PATH_STAGE_BIN)/additions/VBoxGL.dll
     141 endif
    136142 ifdef VBOX_WITH_CROGL
    137143DRIVER_FILES += \
     
    146152DRIVER_FILES += \
    147153        $(PATH_STAGE_BIN)/additions/VBoxDispD3D-x86.dll
     154  ifdef VBOX_WITH_MESA3D
     155DRIVER_FILES += \
     156        $(PATH_STAGE_BIN)/additions/VBoxNine-x86.dll \
     157        $(PATH_STAGE_BIN)/additions/VBoxSVGA-x86.dll \
     158        $(PATH_STAGE_BIN)/additions/VBoxGL-x86.dll
     159  endif
    148160  ifdef VBOX_WITH_CROGL
    149161DRIVER_FILES += \
     
    184196        -E 'VBOX_WITH_LICENSE_INSTALL_RTF=$(if $(VBOX_BRAND_LICENSE_RTF),1,0)' \
    185197        -E 'VBOX_WITH_WDDM=$(if $(VBOX_WITH_WDDM),1,0)' \
     198        -E 'VBOX_WITH_MESA3D=$(if $(VBOX_WITH_MESA3D),1,0)' \
    186199        -E 'VBOX_BRAND_WIN_ADD_INST_DLGBMP=$(subst /,\,$(VBOX_BRAND_WIN_ADD_INST_DLGBMP))' \
    187200        -E 'VBOX_BRAND_LICENSE_RTF=$(subst /,\,$(VBOX_BRAND_LICENSE_RTF))' \
  • trunk/src/VBox/Additions/WINNT/Installer/VBoxGuestAdditionsCommon.nsh

    r71323 r75445  
    107107  FILE "$%PATH_OUT%\bin\additions\VBoxWddm.inf"
    108108  FILE "$%PATH_OUT%\bin\additions\VBoxDispD3D.dll"
     109  !if $%VBOX_WITH_MESA3D% == "1"
     110    FILE "$%PATH_OUT%\bin\additions\VBoxNine.dll"
     111    FILE "$%PATH_OUT%\bin\additions\VBoxSVGA.dll"
     112    FILE "$%PATH_OUT%\bin\additions\VBoxGL.dll"
     113  !endif
    109114
    110115  !if $%VBOX_WITH_CROGL% == "1"
     
    123128  !if $%BUILD_TARGET_ARCH% == "amd64"
    124129    FILE "$%PATH_OUT%\bin\additions\VBoxDispD3D-x86.dll"
     130    !if $%VBOX_WITH_MESA3D% == "1"
     131      FILE "$%PATH_OUT%\bin\additions\VBoxNine-x86.dll"
     132      FILE "$%PATH_OUT%\bin\additions\VBoxSVGA-x86.dll"
     133      FILE "$%PATH_OUT%\bin\additions\VBoxGL-x86.dll"
     134    !endif
    125135
    126136    !if $%VBOX_WITH_CROGL% == "1"
  • trunk/src/VBox/Additions/WINNT/Installer/VBoxGuestAdditionsW2KXP.nsh

    r71323 r75445  
    240240
    241241    FILE "$%PATH_OUT%\bin\additions\VBoxDispD3D.dll"
     242    !if $%VBOX_WITH_MESA3D% == "1"
     243      FILE "$%PATH_OUT%\bin\additions\VBoxNine.dll"
     244      FILE "$%PATH_OUT%\bin\additions\VBoxSVGA.dll"
     245      FILE "$%PATH_OUT%\bin\additions\VBoxGL.dll"
     246    !endif
    242247
    243248    !if $%VBOX_WITH_CROGL% == "1"
     
    256261    !if $%BUILD_TARGET_ARCH% == "amd64"
    257262      FILE "$%PATH_OUT%\bin\additions\VBoxDispD3D-x86.dll"
     263      !if $%VBOX_WITH_MESA3D% == "1"
     264        FILE "$%PATH_OUT%\bin\additions\VBoxNine-x86.dll"
     265        FILE "$%PATH_OUT%\bin\additions\VBoxSVGA-x86.dll"
     266        FILE "$%PATH_OUT%\bin\additions\VBoxGL-x86.dll"
     267      !endif
    258268
    259269      !if $%VBOX_WITH_CROGL% == "1"
     
    525535  ; Obsolete files end
    526536  Delete /REBOOTOK "$%PATH_OUT%\bin\additions\VBoxDispD3D.dll"
     537  !if $%VBOX_WITH_MESA3D% == "1"
     538    Delete /REBOOTOK "$%PATH_OUT%\bin\additions\VBoxNine.dll"
     539    Delete /REBOOTOK "$%PATH_OUT%\bin\additions\VBoxSVGA.dll"
     540    Delete /REBOOTOK "$%PATH_OUT%\bin\additions\VBoxGL.dll"
     541  !endif
    527542
    528543    Delete /REBOOTOK "$%PATH_OUT%\bin\additions\VBoxOGLarrayspu.dll"
     
    541556  !if $%BUILD_TARGET_ARCH% == "amd64"
    542557    Delete /REBOOTOK "$%PATH_OUT%\bin\additions\VBoxDispD3D-x86.dll"
     558    !if $%VBOX_WITH_MESA3D% == "1"
     559      Delete /REBOOTOK "$%PATH_OUT%\bin\additions\VBoxNine-x86.dll"
     560      Delete /REBOOTOK "$%PATH_OUT%\bin\additions\VBoxSVGA-x86.dll"
     561      Delete /REBOOTOK "$%PATH_OUT%\bin\additions\VBoxGL-x86.dll"
     562    !endif
    543563
    544564      Delete /REBOOTOK "$%PATH_OUT%\bin\additions\VBoxOGLarrayspu-x86.dll"
     
    609629
    610630  Delete /REBOOTOK "$g_strSystemDir\VBoxDispD3D.dll"
     631  !if $%VBOX_WITH_MESA3D% == "1"
     632    Delete /REBOOTOK "$g_strSystemDir\VBoxNine.dll"
     633    Delete /REBOOTOK "$g_strSystemDir\VBoxSVGA.dll"
     634    Delete /REBOOTOK "$g_strSystemDir\VBoxGL.dll"
     635  !endif
    611636!endif ; $%VBOX_WITH_WDDM% == "1"
    612637
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