VirtualBox

Ignore:
Timestamp:
Jul 9, 2012 12:44:47 PM (13 years ago)
Author:
vboxsync
Message:

wddm: basics for win8 display-only miniport driver

Location:
trunk/src/VBox/Additions/WINNT/Graphics/Video
Files:
2 added
3 edited

Legend:

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

    r41477 r42054  
    8686VBoxVideoWddm-inf_SOURCES.amd64 += \
    8787 $(PATH_TARGET)/VBoxVideoWddmCat.dir/VBoxDispD3D-x86.dll
    88 endif
     88endif # VBOXWDDM_WITH_DISPD3D
    8989
    9090ifdef VBOXWDDM_WITH_GL
     
    109109 $(PATH_TARGET)/VBoxVideoWddmCat.dir/VBoxOGLpackspu-x86.dll \
    110110 $(PATH_TARGET)/VBoxVideoWddmCat.dir/VBoxOGLpassthroughspu-x86.dll
    111 endif
     111endif # VBOXWDDM_WITH_GL
    112112
    113113endif # signing
     
    133133$(PATH_TARGET)/VBoxVideoWddmCat.dir/VBoxDispD3D-x86.dll: $$(VBoxDispD3D-x86_1_TARGET) | $$(dir $$@)
    134134        $(INSTALL) -m 644 $< $(@D)
    135  endif
    136 endif
     135 endif # ($(KBUILD_TARGET_ARCH), amd64)
     136endif # VBOXWDDM_WITH_DISPD3D
    137137
    138138ifdef VBOXWDDM_WITH_GL
     
    191191$(PATH_TARGET)/VBoxVideoWddmCat.dir/VBoxOGLpassthroughspu-x86.dll: $$(VBoxOGLpassthroughspu-x86_1_TARGET) | $$(dir $$@)
    192192        $(INSTALL) -m 644 $< $(@D)
    193  endif
    194 endif
     193 endif # ($(KBUILD_TARGET_ARCH), amd64)
     194endif # VBOXWDDM_WITH_GL
    195195
    196196$(PATH_TARGET)/VBoxVideoWddmCat.dir/VBoxVideoWddm.cat: \
     
    220220        $(call MSG_TOOL,Inf2Cat,VBoxVideoWddm-inf,$@,$<)
    221221        $(call VBOX_MAKE_CAT_FN, $(@D),$@)
    222 endif
     222       
     223 ifdef VBOX_WDDM_WIN8
     224# VBOXWDDMW8_WITH_DISPD3D = 1
     225 ifdef VBOX_WITH_CROGL
     226#  VBOXWDDMW8_WITH_GL = 1
     227 endif
     228 
     229 
     230INSTALLS += VBoxVideoW8-inf
     231VBoxVideoW8-inf_INST = $(INST_ADDITIONS)
     232VBoxVideoW8-inf_MODE = a+r,u+w
     233VBoxVideoW8-inf_SOURCES = \
     234    $(PATH_TARGET)/VBoxVideoW8Cat.dir/VBoxVideoW8.inf
     235ifdef VBOX_SIGN_ADDITIONS
     236VBoxVideoW8-inf_SOURCES += \
     237    $(PATH_TARGET)/VBoxVideoW8Cat.dir/VBoxVideoW8.sys \
     238    $(PATH_TARGET)/VBoxVideoW8Cat.dir/VBoxVideoW8.cat
     239
     240ifdef VBOXWDDMW8_WITH_DISPD3D
     241VBoxVideoW8-inf_SOURCES += \
     242 $(PATH_TARGET)/VBoxVideoW8Cat.dir/VBoxDispD3D.dll
     243VBoxVideoW8-inf_SOURCES.amd64 += \
     244 $(PATH_TARGET)/VBoxVideoW8Cat.dir/VBoxDispD3D-x86.dll
     245endif # VBOXWDDMW8_WITH_DISPD3D
     246
     247ifdef VBOXWDDMW8_WITH_GL
     248VBoxVideoW8-inf_SOURCES += \
     249 $(PATH_TARGET)/VBoxVideoW8Cat.dir/VBoxOGL.dll \
     250 $(PATH_TARGET)/VBoxVideoW8Cat.dir/VBoxD3D9wddm.dll \
     251 $(PATH_TARGET)/VBoxVideoW8Cat.dir/wined3dwddm.dll \
     252 $(PATH_TARGET)/VBoxVideoW8Cat.dir/VBoxOGLarrayspu.dll \
     253 $(PATH_TARGET)/VBoxVideoW8Cat.dir/VBoxOGLcrutil.dll \
     254 $(PATH_TARGET)/VBoxVideoW8Cat.dir/VBoxOGLerrorspu.dll \
     255 $(PATH_TARGET)/VBoxVideoW8Cat.dir/VBoxOGLfeedbackspu.dll \
     256 $(PATH_TARGET)/VBoxVideoW8Cat.dir/VBoxOGLpackspu.dll \
     257 $(PATH_TARGET)/VBoxVideoW8Cat.dir/VBoxOGLpassthroughspu.dll
     258VBoxVideoW8-inf_SOURCES.amd64 += \
     259 $(PATH_TARGET)/VBoxVideoW8Cat.dir/VBoxOGL-x86.dll \
     260 $(PATH_TARGET)/VBoxVideoW8Cat.dir/VBoxD3D9wddm-x86.dll \
     261 $(PATH_TARGET)/VBoxVideoW8Cat.dir/wined3dwddm-x86.dll \
     262 $(PATH_TARGET)/VBoxVideoW8Cat.dir/VBoxOGLarrayspu-x86.dll \
     263 $(PATH_TARGET)/VBoxVideoW8Cat.dir/VBoxOGLcrutil-x86.dll \
     264 $(PATH_TARGET)/VBoxVideoW8Cat.dir/VBoxOGLerrorspu-x86.dll \
     265 $(PATH_TARGET)/VBoxVideoW8Cat.dir/VBoxOGLfeedbackspu-x86.dll \
     266 $(PATH_TARGET)/VBoxVideoW8Cat.dir/VBoxOGLpackspu-x86.dll \
     267 $(PATH_TARGET)/VBoxVideoW8Cat.dir/VBoxOGLpassthroughspu-x86.dll
     268endif # VBOXWDDMW8_WITH_GL
     269
     270endif # signing
     271VBoxVideoW8-inf_CLEAN = $(VBoxVideoW8-inf_SOURCES)
     272VBoxVideoW8-inf_BLDDIRS = \
     273    $(PATH_TARGET)/VBoxVideoW8Cat.dir
     274
     275VBOXWDDMW8_EDIT_INF_DISPD3D_FN_ARG = $(if $(VBOXWDDMW8_WITH_DISPD3D),-e 's/^;dispd3d  *//', -e '/^;dispd3d /d')
     276VBOXWDDMW8_EDIT_INF_GL_FN_ARG      = $(if $(VBOXWDDMW8_WITH_GL),-e 's/^;gl  *//', -e '/^;gl /d')
     277
     278$(PATH_TARGET)/VBoxVideoW8Cat.dir/VBoxVideoW8.inf: $(PATH_SUB_CURRENT)/mp/wddm/VBoxVideoW8.inf $(MAKEFILE_CURRENT) | $$(dir $$@)
     279        $(call MSG_GENERATE,VBoxVideoW8-inf,$@,$<)
     280        $(call VBOX_EDIT_INF_FN,$<,$@ $(VBOXWDDMW8_EDIT_INF_DISPD3D_FN_ARG) $(VBOXWDDMW8_EDIT_INF_GL_FN_ARG))
     281
     282$(PATH_TARGET)/VBoxVideoW8Cat.dir/VBoxVideoW8.sys: $$(VBoxVideoW8_1_TARGET) | $$(dir $$@)
     283        $(INSTALL) -m 644 $< $(@D)
     284
     285ifdef VBOXWDDMW8_WITH_DISPD3D
     286$(PATH_TARGET)/VBoxVideoW8Cat.dir/VBoxDispD3D.dll: $$(VBoxDispD3D_1_TARGET) | $$(dir $$@)
     287        $(INSTALL) -m 644 $< $(@D)
     288
     289 ifeq ($(KBUILD_TARGET_ARCH),amd64)
     290$(PATH_TARGET)/VBoxVideoW8Cat.dir/VBoxDispD3D-x86.dll: $$(VBoxDispD3D-x86_1_TARGET) | $$(dir $$@)
     291        $(INSTALL) -m 644 $< $(@D)
     292 endif # ($(KBUILD_TARGET_ARCH), amd64)
     293endif # VBOXWDDMW8_WITH_DISPD3D
     294
     295ifdef VBOXWDDMW8_WITH_GL
     296$(PATH_TARGET)/VBoxVideoW8Cat.dir/VBoxOGL.dll: $$(VBoxOGL_1_TARGET) | $$(dir $$@)
     297        $(INSTALL) -m 644 $< $(@D)
     298
     299$(PATH_TARGET)/VBoxVideoW8Cat.dir/VBoxD3D9wddm.dll: $$(VBoxD3D9wddm_1_TARGET) | $$(dir $$@)
     300        $(INSTALL) -m 644 $< $(@D)
     301
     302$(PATH_TARGET)/VBoxVideoW8Cat.dir/wined3dwddm.dll: $$(wined3dwddm_1_TARGET) | $$(dir $$@)
     303        $(INSTALL) -m 644 $< $(@D)
     304
     305$(PATH_TARGET)/VBoxVideoW8Cat.dir/VBoxOGLarrayspu.dll: $$(VBoxOGLarrayspu_1_TARGET) | $$(dir $$@)
     306        $(INSTALL) -m 644 $< $(@D)
     307
     308$(PATH_TARGET)/VBoxVideoW8Cat.dir/VBoxOGLcrutil.dll: $$(VBoxOGLcrutil_1_TARGET) | $$(dir $$@)
     309        $(INSTALL) -m 644 $< $(@D)
     310
     311$(PATH_TARGET)/VBoxVideoW8Cat.dir/VBoxOGLerrorspu.dll: $$(VBoxOGLerrorspu_1_TARGET) | $$(dir $$@)
     312        $(INSTALL) -m 644 $< $(@D)
     313
     314$(PATH_TARGET)/VBoxVideoW8Cat.dir/VBoxOGLfeedbackspu.dll: $$(VBoxOGLfeedbackspu_1_TARGET) | $$(dir $$@)
     315        $(INSTALL) -m 644 $< $(@D)
     316
     317$(PATH_TARGET)/VBoxVideoW8Cat.dir/VBoxOGLpackspu.dll: $$(VBoxOGLpackspu_1_TARGET) | $$(dir $$@)
     318        $(INSTALL) -m 644 $< $(@D)
     319
     320$(PATH_TARGET)/VBoxVideoW8Cat.dir/VBoxOGLpassthroughspu.dll: $$(VBoxOGLpassthroughspu_1_TARGET) | $$(dir $$@)
     321        $(INSTALL) -m 644 $< $(@D)
     322
     323 ifeq ($(KBUILD_TARGET_ARCH), amd64)
     324$(PATH_TARGET)/VBoxVideoW8Cat.dir/VBoxOGL-x86.dll: $$(VBoxOGL-x86_1_TARGET) | $$(dir $$@)
     325        $(INSTALL) -m 644 $< $(@D)
     326
     327$(PATH_TARGET)/VBoxVideoW8Cat.dir/VBoxD3D9wddm-x86.dll: $$(VBoxD3D9wddm-x86_1_TARGET) | $$(dir $$@)
     328        $(INSTALL) -m 644 $< $(@D)
     329
     330$(PATH_TARGET)/VBoxVideoW8Cat.dir/wined3dwddm-x86.dll: $$(wined3dwddm-x86_1_TARGET) | $$(dir $$@)
     331        $(INSTALL) -m 644 $< $(@D)
     332
     333$(PATH_TARGET)/VBoxVideoW8Cat.dir/VBoxOGLarrayspu-x86.dll: $$(VBoxOGLarrayspu-x86_1_TARGET) | $$(dir $$@)
     334        $(INSTALL) -m 644 $< $(@D)
     335
     336$(PATH_TARGET)/VBoxVideoW8Cat.dir/VBoxOGLcrutil-x86.dll: $$(VBoxOGLcrutil-x86_1_TARGET) | $$(dir $$@)
     337        $(INSTALL) -m 644 $< $(@D)
     338
     339$(PATH_TARGET)/VBoxVideoW8Cat.dir/VBoxOGLerrorspu-x86.dll: $$(VBoxOGLerrorspu-x86_1_TARGET) | $$(dir $$@)
     340        $(INSTALL) -m 644 $< $(@D)
     341
     342$(PATH_TARGET)/VBoxVideoW8Cat.dir/VBoxOGLfeedbackspu-x86.dll: $$(VBoxOGLfeedbackspu-x86_1_TARGET) | $$(dir $$@)
     343        $(INSTALL) -m 644 $< $(@D)
     344
     345$(PATH_TARGET)/VBoxVideoW8Cat.dir/VBoxOGLpackspu-x86.dll: $$(VBoxOGLpackspu-x86_1_TARGET) | $$(dir $$@)
     346        $(INSTALL) -m 644 $< $(@D)
     347
     348$(PATH_TARGET)/VBoxVideoW8Cat.dir/VBoxOGLpassthroughspu-x86.dll: $$(VBoxOGLpassthroughspu-x86_1_TARGET) | $$(dir $$@)
     349        $(INSTALL) -m 644 $< $(@D)
     350 endif # ($(KBUILD_TARGET_ARCH), amd64)
     351endif # VBOXWDDMW8_WITH_GL
     352
     353$(PATH_TARGET)/VBoxVideoW8Cat.dir/VBoxVideoW8.cat: \
     354        $(PATH_TARGET)/VBoxVideoW8Cat.dir/VBoxVideoW8.inf \
     355        $(PATH_TARGET)/VBoxVideoW8Cat.dir/VBoxVideoW8.sys \
     356        $(if $(VBOXWDDMW8_WITH_DISPD3D), $(PATH_TARGET)/VBoxVideoW8Cat.dir/VBoxDispD3D.dll, ) \
     357        $(if $(VBOXWDDMW8_WITH_DISPD3D), $(if-expr "$(KBUILD_TARGET_ARCH)" == "amd64", $(PATH_TARGET)/VBoxVideoW8Cat.dir/VBoxDispD3D-x86.dll, ), ) \
     358        $(if $(VBOXWDDMW8_WITH_GL),  $(PATH_TARGET)/VBoxVideoW8Cat.dir/VBoxOGL.dll \
     359                       $(PATH_TARGET)/VBoxVideoW8Cat.dir/VBoxD3D9wddm.dll \
     360                       $(PATH_TARGET)/VBoxVideoW8Cat.dir/wined3dwddm.dll \
     361                       $(PATH_TARGET)/VBoxVideoW8Cat.dir/VBoxOGLarrayspu.dll \
     362                       $(PATH_TARGET)/VBoxVideoW8Cat.dir/VBoxOGLcrutil.dll \
     363                       $(PATH_TARGET)/VBoxVideoW8Cat.dir/VBoxOGLerrorspu.dll \
     364                       $(PATH_TARGET)/VBoxVideoW8Cat.dir/VBoxOGLfeedbackspu.dll \
     365                       $(PATH_TARGET)/VBoxVideoW8Cat.dir/VBoxOGLpackspu.dll \
     366                       $(PATH_TARGET)/VBoxVideoW8Cat.dir/VBoxOGLpassthroughspu.dll, ) \
     367        $(if $(VBOXWDDMW8_WITH_GL), $(if-expr "$(KBUILD_TARGET_ARCH)" == "amd64", \
     368                       $(PATH_TARGET)/VBoxVideoW8Cat.dir/VBoxOGL-x86.dll \
     369                       $(PATH_TARGET)/VBoxVideoW8Cat.dir/VBoxD3D9wddm-x86.dll \
     370                       $(PATH_TARGET)/VBoxVideoW8Cat.dir/wined3dwddm-x86.dll \
     371                       $(PATH_TARGET)/VBoxVideoW8Cat.dir/VBoxOGLarrayspu-x86.dll \
     372                       $(PATH_TARGET)/VBoxVideoW8Cat.dir/VBoxOGLcrutil-x86.dll \
     373                       $(PATH_TARGET)/VBoxVideoW8Cat.dir/VBoxOGLerrorspu-x86.dll \
     374                       $(PATH_TARGET)/VBoxVideoW8Cat.dir/VBoxOGLfeedbackspu-x86.dll \
     375                       $(PATH_TARGET)/VBoxVideoW8Cat.dir/VBoxOGLpackspu-x86.dll \
     376                       $(PATH_TARGET)/VBoxVideoW8Cat.dir/VBoxOGLpassthroughspu-x86.dll, ), )
     377        $(call MSG_TOOL,Inf2Cat,VBoxVideoW8-inf,$@,$<)
     378        $(call VBOX_MAKE_CAT_FN, $(@D),$@)
     379 endif # VBOX_WDDM_WIN8
     380endif # VBOX_WITH_WDDM
    223381
    224382include $(FILE_KBUILD_SUB_FOOTER)
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/Makefile.kmk

    r42028 r42054  
    148148        $(VBOX_LIB_IPRT_GUEST_R0_NT4) \
    149149        $(VBOX_PATH_ADDITIONS_LIB)/HGSMIGuestR0Lib$(VBOX_SUFF_LIB)
     150
     151 ifdef VBOX_WDDM_WIN8
     152  #
     153  # VBoxVideoW8 - Windows Guest Additions WDDM 1.2 Miniport Video Driver for Win8
     154  #
     155  SYSMODS += VBoxVideoW8
     156  VBoxVideoW8_EXTENDS    = VBoxVideoWddm
     157  VBoxVideoW8_TEMPLATE   = VBOXGUESTWIN8R0
     158  VBoxVideoW8_DEFS      += $(VBoxVideoWddm_DEFS) VBOX_WDDM_WIN8
     159  VBoxVideoW8_SDKS       = WINDDKW8
     160  VBoxVideoW8_SOURCES    = $(subst VBoxMPWddm.rc,VBoxMPW8.rc,$(VBoxVideoWddm_SOURCES))
     161  VBoxVideoW8_LIBS.x86   = \
     162    $(PATH_SDK_WINDDKW8_LIB)/BufferOverflowK.lib
     163  #VBoxVideoW8_LIBS.x86   += \
     164  #  $(PATH_SDK_WINDDKW8_LIB)/exsup.lib
     165  VBoxVideoW8_LIBS        = \
     166     $(PATH_SDK_WINDDKW8_LIB)/ntoskrnl.lib \
     167     $(PATH_SDK_WINDDKW8_LIB)/hal.lib \
     168     $(PATH_SDK_WINDDKW8_LIB)/displib.lib \
     169     $(VBOX_LIB_VBGL_R0) \
     170     $(VBOX_LIB_IPRT_GUEST_R0_NT4) \
     171     $(VBOX_PATH_ADDITIONS_LIB)/HGSMIGuestR0Lib$(VBOX_SUFF_LIB)
     172 endif # VBOX_WDDM_WIN8
     173 
    150174endif # VBOX_WITH_WDDM
    151175
     
    159183  VBoxVideoWddm_DEBUG_INSTTYPE = both
    160184 endif
    161 endif
     185endif # VBOX_SIGN_ADDITIONS
    162186
    163187include $(FILE_KBUILD_SUB_FOOTER)
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPWddm.cpp

    r41638 r42054  
    61346134}
    61356135
     6136#ifdef VBOX_WDDM_WIN8
     6137
     6138static NTSTATUS APIENTRY DxgkDdiQueryVidPnHWCapability(
     6139        __in     const HANDLE hAdapter,
     6140        __inout  DXGKARG_QUERYVIDPNHWCAPABILITY *pVidPnHWCaps
     6141      )
     6142{
     6143    LOGF(("ENTER, hAdapter(0x%x)", hAdapter));
     6144    vboxVDbgBreakF();
     6145    pVidPnHWCaps->VidPnHWCaps.DriverRotation = 0;
     6146    pVidPnHWCaps->VidPnHWCaps.DriverScaling = 0;
     6147    pVidPnHWCaps->VidPnHWCaps.DriverCloning = 0;
     6148    pVidPnHWCaps->VidPnHWCaps.DriverColorConvert = 0;
     6149    pVidPnHWCaps->VidPnHWCaps.DriverLinkedAdapaterOutput = 0;
     6150    pVidPnHWCaps->VidPnHWCaps.DriverRemoteDisplay = 0;
     6151    LOGF(("LEAVE, hAdapter(0x%x)", hAdapter));
     6152    return STATUS_SUCCESS;
     6153}
     6154
     6155static NTSTATUS APIENTRY DxgkDdiPresentDisplayOnly(
     6156        _In_  const HANDLE hAdapter,
     6157        _In_  const DXGKARG_PRESENT_DISPLAYONLY *pPresentDisplayOnly
     6158      )
     6159{
     6160    LOGF(("ENTER, hAdapter(0x%x)", hAdapter));
     6161    vboxVDbgBreakFv();
     6162    AssertBreakpoint();
     6163    LOGF(("LEAVE, hAdapter(0x%x)", hAdapter));
     6164    return STATUS_SUCCESS;
     6165}
     6166
     6167static NTSTATUS DxgkDdiStopDeviceAndReleasePostDisplayOwnership(
     6168  _In_   PVOID MiniportDeviceContext,
     6169  _In_   D3DDDI_VIDEO_PRESENT_TARGET_ID TargetId,
     6170  _Out_  PDXGK_DISPLAY_INFORMATION DisplayInfo
     6171)
     6172{
     6173    LOGF(("ENTER, hAdapter(0x%x)", MiniportDeviceContext));
     6174    vboxVDbgBreakFv();
     6175    AssertBreakpoint();
     6176    LOGF(("LEAVE, hAdapter(0x%x)", MiniportDeviceContext));
     6177    return STATUS_NOT_SUPPORTED;
     6178}
     6179
     6180static NTSTATUS DxgkDdiSystemDisplayEnable(
     6181        _In_   PVOID MiniportDeviceContext,
     6182        _In_   D3DDDI_VIDEO_PRESENT_TARGET_ID TargetId,
     6183        _In_   PDXGKARG_SYSTEM_DISPLAY_ENABLE_FLAGS Flags,
     6184        _Out_  UINT *Width,
     6185        _Out_  UINT *Height,
     6186        _Out_  D3DDDIFORMAT *ColorFormat
     6187      )
     6188{
     6189    LOGF(("ENTER, hAdapter(0x%x)", MiniportDeviceContext));
     6190    vboxVDbgBreakFv();
     6191    AssertBreakpoint();
     6192    LOGF(("LEAVE, hAdapter(0x%x)", MiniportDeviceContext));
     6193    return STATUS_NOT_SUPPORTED;
     6194}
     6195
     6196static VOID DxgkDdiSystemDisplayWrite(
     6197  _In_  PVOID MiniportDeviceContext,
     6198  _In_  PVOID Source,
     6199  _In_  UINT SourceWidth,
     6200  _In_  UINT SourceHeight,
     6201  _In_  UINT SourceStride,
     6202  _In_  UINT PositionX,
     6203  _In_  UINT PositionY
     6204)
     6205{
     6206    LOGF(("ENTER, hAdapter(0x%x)", MiniportDeviceContext));
     6207    vboxVDbgBreakFv();
     6208    AssertBreakpoint();
     6209    LOGF(("LEAVE, hAdapter(0x%x)", MiniportDeviceContext));
     6210}
     6211
     6212static NTSTATUS DxgkDdiGetChildContainerId(
     6213  _In_     PVOID MiniportDeviceContext,
     6214  _In_     ULONG ChildUid,
     6215  _Inout_  PDXGK_CHILD_CONTAINER_ID ContainerId
     6216)
     6217{
     6218    LOGF(("ENTER, hAdapter(0x%x)", MiniportDeviceContext));
     6219    vboxVDbgBreakFv();
     6220    AssertBreakpoint();
     6221    LOGF(("LEAVE, hAdapter(0x%x)", MiniportDeviceContext));
     6222    return STATUS_SUCCESS;
     6223}
     6224
     6225static NTSTATUS APIENTRY DxgkDdiSetPowerComponentFState(
     6226  _In_  const HANDLE DriverContext,
     6227  UINT ComponentIndex,
     6228  UINT FState
     6229)
     6230{
     6231    LOGF(("ENTER, DriverContext(0x%x)", DriverContext));
     6232    vboxVDbgBreakFv();
     6233    AssertBreakpoint();
     6234    LOGF(("LEAVE, DriverContext(0x%x)", DriverContext));
     6235    return STATUS_SUCCESS;
     6236}
     6237
     6238static NTSTATUS APIENTRY DxgkDdiPowerRuntimeControlRequest(
     6239  _In_       const HANDLE DriverContext,
     6240  _In_       LPCGUID PowerControlCode,
     6241  _In_opt_   PVOID InBuffer,
     6242  _In_       SIZE_T InBufferSize,
     6243  _Out_opt_  PVOID OutBuffer,
     6244  _In_       SIZE_T OutBufferSize,
     6245  _Out_opt_  PSIZE_T BytesReturned
     6246)
     6247{
     6248    LOGF(("ENTER, DriverContext(0x%x)", DriverContext));
     6249    vboxVDbgBreakFv();
     6250    AssertBreakpoint();
     6251    LOGF(("LEAVE, DriverContext(0x%x)", DriverContext));
     6252    return STATUS_SUCCESS;
     6253}
     6254
     6255static NTSTATUS DxgkDdiNotifySurpriseRemoval(
     6256        _In_  PVOID MiniportDeviceContext,
     6257        _In_  DXGK_SURPRISE_REMOVAL_TYPE RemovalType
     6258      )
     6259{
     6260    LOGF(("ENTER, hAdapter(0x%x)", MiniportDeviceContext));
     6261    vboxVDbgBreakFv();
     6262    AssertBreakpoint();
     6263    LOGF(("LEAVE, hAdapter(0x%x)", MiniportDeviceContext));
     6264    return STATUS_SUCCESS;
     6265}
     6266
     6267static NTSTATUS vboxWddmInitDisplayOnlyDriver(IN PDRIVER_OBJECT pDriverObject, IN PUNICODE_STRING pRegistryPath)
     6268{
     6269    KMDDOD_INITIALIZATION_DATA DriverInitializationData = {'\0'};
     6270
     6271    DriverInitializationData.Version = DXGKDDI_INTERFACE_VERSION_WIN8;
     6272
     6273    DriverInitializationData.DxgkDdiAddDevice = DxgkDdiAddDevice;
     6274    DriverInitializationData.DxgkDdiStartDevice = DxgkDdiStartDevice;
     6275    DriverInitializationData.DxgkDdiStopDevice = DxgkDdiStopDevice;
     6276    DriverInitializationData.DxgkDdiRemoveDevice = DxgkDdiRemoveDevice;
     6277    DriverInitializationData.DxgkDdiDispatchIoRequest = DxgkDdiDispatchIoRequest;
     6278    DriverInitializationData.DxgkDdiInterruptRoutine = DxgkDdiInterruptRoutine;
     6279    DriverInitializationData.DxgkDdiDpcRoutine = DxgkDdiDpcRoutine;
     6280    DriverInitializationData.DxgkDdiQueryChildRelations = DxgkDdiQueryChildRelations;
     6281    DriverInitializationData.DxgkDdiQueryChildStatus = DxgkDdiQueryChildStatus;
     6282    DriverInitializationData.DxgkDdiQueryDeviceDescriptor = DxgkDdiQueryDeviceDescriptor;
     6283    DriverInitializationData.DxgkDdiSetPowerState = DxgkDdiSetPowerState;
     6284    DriverInitializationData.DxgkDdiNotifyAcpiEvent = DxgkDdiNotifyAcpiEvent;
     6285    DriverInitializationData.DxgkDdiResetDevice = DxgkDdiResetDevice;
     6286    DriverInitializationData.DxgkDdiUnload = DxgkDdiUnload;
     6287    DriverInitializationData.DxgkDdiQueryInterface = DxgkDdiQueryInterface;
     6288    DriverInitializationData.DxgkDdiControlEtwLogging = DxgkDdiControlEtwLogging;
     6289    DriverInitializationData.DxgkDdiQueryAdapterInfo = DxgkDdiQueryAdapterInfo;
     6290    DriverInitializationData.DxgkDdiSetPalette = DxgkDdiSetPalette;
     6291    DriverInitializationData.DxgkDdiSetPointerPosition = DxgkDdiSetPointerPosition;
     6292    DriverInitializationData.DxgkDdiSetPointerShape = DxgkDdiSetPointerShape;
     6293    DriverInitializationData.DxgkDdiEscape = DxgkDdiEscape;
     6294    DriverInitializationData.DxgkDdiCollectDbgInfo = DxgkDdiCollectDbgInfo;
     6295    DriverInitializationData.DxgkDdiIsSupportedVidPn = DxgkDdiIsSupportedVidPn;
     6296    DriverInitializationData.DxgkDdiRecommendFunctionalVidPn = DxgkDdiRecommendFunctionalVidPn;
     6297    DriverInitializationData.DxgkDdiEnumVidPnCofuncModality = DxgkDdiEnumVidPnCofuncModality;
     6298    DriverInitializationData.DxgkDdiSetVidPnSourceVisibility = DxgkDdiSetVidPnSourceVisibility;
     6299    DriverInitializationData.DxgkDdiCommitVidPn = DxgkDdiCommitVidPn;
     6300    DriverInitializationData.DxgkDdiUpdateActiveVidPnPresentPath = DxgkDdiUpdateActiveVidPnPresentPath;
     6301    DriverInitializationData.DxgkDdiRecommendMonitorModes = DxgkDdiRecommendMonitorModes;
     6302    DriverInitializationData.DxgkDdiGetScanLine = DxgkDdiGetScanLine;
     6303    DriverInitializationData.DxgkDdiQueryVidPnHWCapability = DxgkDdiQueryVidPnHWCapability;
     6304    DriverInitializationData.DxgkDdiPresentDisplayOnly = DxgkDdiPresentDisplayOnly;
     6305    DriverInitializationData.DxgkDdiStopDeviceAndReleasePostDisplayOwnership = DxgkDdiStopDeviceAndReleasePostDisplayOwnership;
     6306    DriverInitializationData.DxgkDdiSystemDisplayEnable = DxgkDdiSystemDisplayEnable;
     6307    DriverInitializationData.DxgkDdiSystemDisplayWrite = DxgkDdiSystemDisplayWrite;
     6308//    DriverInitializationData.DxgkDdiGetChildContainerId = DxgkDdiGetChildContainerId;
     6309    DriverInitializationData.DxgkDdiControlInterrupt = DxgkDdiControlInterrupt;
     6310//    DriverInitializationData.DxgkDdiSetPowerComponentFState = DxgkDdiSetPowerComponentFState;
     6311//    DriverInitializationData.DxgkDdiPowerRuntimeControlRequest = DxgkDdiPowerRuntimeControlRequest;
     6312//    DriverInitializationData.DxgkDdiNotifySurpriseRemoval = DxgkDdiNotifySurpriseRemoval;
     6313
     6314    NTSTATUS Status = DxgkInitializeDisplayOnlyDriver(pDriverObject,
     6315                          pRegistryPath,
     6316                          &DriverInitializationData);
     6317    if (!NT_SUCCESS(Status))
     6318    {
     6319        WARN(("DxgkInitializeDisplayOnlyDriver failed! Status 0x%x", Status));
     6320    }
     6321    return Status;
     6322}
     6323#endif
     6324
     6325static NTSTATUS vboxWddmInitFullGraphicsDriver(IN PDRIVER_OBJECT pDriverObject, IN PUNICODE_STRING pRegistryPath)
     6326{
     6327    DRIVER_INITIALIZATION_DATA DriverInitializationData = {'\0'};
     6328
     6329    // Fill in the DriverInitializationData structure and call DxgkInitialize()
     6330    DriverInitializationData.Version = DXGKDDI_INTERFACE_VERSION;
     6331
     6332    DriverInitializationData.DxgkDdiAddDevice = DxgkDdiAddDevice;
     6333    DriverInitializationData.DxgkDdiStartDevice = DxgkDdiStartDevice;
     6334    DriverInitializationData.DxgkDdiStopDevice = DxgkDdiStopDevice;
     6335    DriverInitializationData.DxgkDdiRemoveDevice = DxgkDdiRemoveDevice;
     6336    DriverInitializationData.DxgkDdiDispatchIoRequest = DxgkDdiDispatchIoRequest;
     6337    DriverInitializationData.DxgkDdiInterruptRoutine = DxgkDdiInterruptRoutine;
     6338    DriverInitializationData.DxgkDdiDpcRoutine = DxgkDdiDpcRoutine;
     6339    DriverInitializationData.DxgkDdiQueryChildRelations = DxgkDdiQueryChildRelations;
     6340    DriverInitializationData.DxgkDdiQueryChildStatus = DxgkDdiQueryChildStatus;
     6341    DriverInitializationData.DxgkDdiQueryDeviceDescriptor = DxgkDdiQueryDeviceDescriptor;
     6342    DriverInitializationData.DxgkDdiSetPowerState = DxgkDdiSetPowerState;
     6343    DriverInitializationData.DxgkDdiNotifyAcpiEvent = DxgkDdiNotifyAcpiEvent;
     6344    DriverInitializationData.DxgkDdiResetDevice = DxgkDdiResetDevice;
     6345    DriverInitializationData.DxgkDdiUnload = DxgkDdiUnload;
     6346    DriverInitializationData.DxgkDdiQueryInterface = DxgkDdiQueryInterface;
     6347    DriverInitializationData.DxgkDdiControlEtwLogging = DxgkDdiControlEtwLogging;
     6348
     6349    DriverInitializationData.DxgkDdiQueryAdapterInfo = DxgkDdiQueryAdapterInfo;
     6350    DriverInitializationData.DxgkDdiCreateDevice = DxgkDdiCreateDevice;
     6351    DriverInitializationData.DxgkDdiCreateAllocation = DxgkDdiCreateAllocation;
     6352    DriverInitializationData.DxgkDdiDestroyAllocation = DxgkDdiDestroyAllocation;
     6353    DriverInitializationData.DxgkDdiDescribeAllocation = DxgkDdiDescribeAllocation;
     6354    DriverInitializationData.DxgkDdiGetStandardAllocationDriverData = DxgkDdiGetStandardAllocationDriverData;
     6355    DriverInitializationData.DxgkDdiAcquireSwizzlingRange = DxgkDdiAcquireSwizzlingRange;
     6356    DriverInitializationData.DxgkDdiReleaseSwizzlingRange = DxgkDdiReleaseSwizzlingRange;
     6357    DriverInitializationData.DxgkDdiPatch = DxgkDdiPatch;
     6358    DriverInitializationData.DxgkDdiSubmitCommand = DxgkDdiSubmitCommand;
     6359    DriverInitializationData.DxgkDdiPreemptCommand = DxgkDdiPreemptCommand;
     6360    DriverInitializationData.DxgkDdiBuildPagingBuffer = DxgkDdiBuildPagingBuffer;
     6361    DriverInitializationData.DxgkDdiSetPalette = DxgkDdiSetPalette;
     6362    DriverInitializationData.DxgkDdiSetPointerPosition = DxgkDdiSetPointerPosition;
     6363    DriverInitializationData.DxgkDdiSetPointerShape = DxgkDdiSetPointerShape;
     6364    DriverInitializationData.DxgkDdiResetFromTimeout = DxgkDdiResetFromTimeout;
     6365    DriverInitializationData.DxgkDdiRestartFromTimeout = DxgkDdiRestartFromTimeout;
     6366    DriverInitializationData.DxgkDdiEscape = DxgkDdiEscape;
     6367    DriverInitializationData.DxgkDdiCollectDbgInfo = DxgkDdiCollectDbgInfo;
     6368    DriverInitializationData.DxgkDdiQueryCurrentFence = DxgkDdiQueryCurrentFence;
     6369    DriverInitializationData.DxgkDdiIsSupportedVidPn = DxgkDdiIsSupportedVidPn;
     6370    DriverInitializationData.DxgkDdiRecommendFunctionalVidPn = DxgkDdiRecommendFunctionalVidPn;
     6371    DriverInitializationData.DxgkDdiEnumVidPnCofuncModality = DxgkDdiEnumVidPnCofuncModality;
     6372    DriverInitializationData.DxgkDdiSetVidPnSourceAddress = DxgkDdiSetVidPnSourceAddress;
     6373    DriverInitializationData.DxgkDdiSetVidPnSourceVisibility = DxgkDdiSetVidPnSourceVisibility;
     6374    DriverInitializationData.DxgkDdiCommitVidPn = DxgkDdiCommitVidPn;
     6375    DriverInitializationData.DxgkDdiUpdateActiveVidPnPresentPath = DxgkDdiUpdateActiveVidPnPresentPath;
     6376    DriverInitializationData.DxgkDdiRecommendMonitorModes = DxgkDdiRecommendMonitorModes;
     6377    DriverInitializationData.DxgkDdiRecommendVidPnTopology = DxgkDdiRecommendVidPnTopology;
     6378    DriverInitializationData.DxgkDdiGetScanLine = DxgkDdiGetScanLine;
     6379    DriverInitializationData.DxgkDdiStopCapture = DxgkDdiStopCapture;
     6380    DriverInitializationData.DxgkDdiControlInterrupt = DxgkDdiControlInterrupt;
     6381    DriverInitializationData.DxgkDdiCreateOverlay = DxgkDdiCreateOverlay;
     6382
     6383    DriverInitializationData.DxgkDdiDestroyDevice = DxgkDdiDestroyDevice;
     6384    DriverInitializationData.DxgkDdiOpenAllocation = DxgkDdiOpenAllocation;
     6385    DriverInitializationData.DxgkDdiCloseAllocation = DxgkDdiCloseAllocation;
     6386    DriverInitializationData.DxgkDdiRender = DxgkDdiRender;
     6387    DriverInitializationData.DxgkDdiPresent = DxgkDdiPresent;
     6388
     6389    DriverInitializationData.DxgkDdiUpdateOverlay = DxgkDdiUpdateOverlay;
     6390    DriverInitializationData.DxgkDdiFlipOverlay = DxgkDdiFlipOverlay;
     6391    DriverInitializationData.DxgkDdiDestroyOverlay = DxgkDdiDestroyOverlay;
     6392
     6393    DriverInitializationData.DxgkDdiCreateContext = DxgkDdiCreateContext;
     6394    DriverInitializationData.DxgkDdiDestroyContext = DxgkDdiDestroyContext;
     6395
     6396    DriverInitializationData.DxgkDdiLinkDevice = NULL; //DxgkDdiLinkDevice;
     6397    DriverInitializationData.DxgkDdiSetDisplayPrivateDriverFormat = DxgkDdiSetDisplayPrivateDriverFormat;
     6398//#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN7)
     6399//# error port to Win7 DDI
     6400//            DriverInitializationData.DxgkDdiRenderKm  = DxgkDdiRenderKm;
     6401//            DriverInitializationData.DxgkDdiRestartFromTimeout  = DxgkDdiRestartFromTimeout;
     6402//            DriverInitializationData.DxgkDdiSetVidPnSourceVisibility  = DxgkDdiSetVidPnSourceVisibility;
     6403//            DriverInitializationData.DxgkDdiUpdateActiveVidPnPresentPath  = DxgkDdiUpdateActiveVidPnPresentPath;
     6404//            DriverInitializationData.DxgkDdiQueryVidPnHWCapability  = DxgkDdiQueryVidPnHWCapability;
     6405//#endif
     6406
     6407    NTSTATUS Status = DxgkInitialize(pDriverObject,
     6408                          pRegistryPath,
     6409                          &DriverInitializationData);
     6410    if (!NT_SUCCESS(Status))
     6411    {
     6412        WARN(("DxgkInitialize failed! Status 0x%x", Status));
     6413    }
     6414    return Status;
     6415}
     6416
    61366417NTSTATUS
    61376418DriverEntry(
     
    61816462                f3Drequired = TRUE;
    61826463            }
     6464#ifndef VBOX_WDDM_WIN8
    61836465            else if (minor == 2)
    61846466            {
     
    61866468                f3Drequired = TRUE;
    61876469            }
     6470#endif
    61886471            else
    61896472            {
     
    62156498            if (NT_SUCCESS(Status))
    62166499            {
    6217                 DRIVER_INITIALIZATION_DATA DriverInitializationData = {'\0'};
    6218 
    6219                 // Fill in the DriverInitializationData structure and call DxgkInitialize()
    6220                 DriverInitializationData.Version = DXGKDDI_INTERFACE_VERSION;
    6221 
    6222                 DriverInitializationData.DxgkDdiAddDevice = DxgkDdiAddDevice;
    6223                 DriverInitializationData.DxgkDdiStartDevice = DxgkDdiStartDevice;
    6224                 DriverInitializationData.DxgkDdiStopDevice = DxgkDdiStopDevice;
    6225                 DriverInitializationData.DxgkDdiRemoveDevice = DxgkDdiRemoveDevice;
    6226                 DriverInitializationData.DxgkDdiDispatchIoRequest = DxgkDdiDispatchIoRequest;
    6227                 DriverInitializationData.DxgkDdiInterruptRoutine = DxgkDdiInterruptRoutine;
    6228                 DriverInitializationData.DxgkDdiDpcRoutine = DxgkDdiDpcRoutine;
    6229                 DriverInitializationData.DxgkDdiQueryChildRelations = DxgkDdiQueryChildRelations;
    6230                 DriverInitializationData.DxgkDdiQueryChildStatus = DxgkDdiQueryChildStatus;
    6231                 DriverInitializationData.DxgkDdiQueryDeviceDescriptor = DxgkDdiQueryDeviceDescriptor;
    6232                 DriverInitializationData.DxgkDdiSetPowerState = DxgkDdiSetPowerState;
    6233                 DriverInitializationData.DxgkDdiNotifyAcpiEvent = DxgkDdiNotifyAcpiEvent;
    6234                 DriverInitializationData.DxgkDdiResetDevice = DxgkDdiResetDevice;
    6235                 DriverInitializationData.DxgkDdiUnload = DxgkDdiUnload;
    6236                 DriverInitializationData.DxgkDdiQueryInterface = DxgkDdiQueryInterface;
    6237                 DriverInitializationData.DxgkDdiControlEtwLogging = DxgkDdiControlEtwLogging;
    6238 
    6239                 DriverInitializationData.DxgkDdiQueryAdapterInfo = DxgkDdiQueryAdapterInfo;
    6240                 DriverInitializationData.DxgkDdiCreateDevice = DxgkDdiCreateDevice;
    6241                 DriverInitializationData.DxgkDdiCreateAllocation = DxgkDdiCreateAllocation;
    6242                 DriverInitializationData.DxgkDdiDestroyAllocation = DxgkDdiDestroyAllocation;
    6243                 DriverInitializationData.DxgkDdiDescribeAllocation = DxgkDdiDescribeAllocation;
    6244                 DriverInitializationData.DxgkDdiGetStandardAllocationDriverData = DxgkDdiGetStandardAllocationDriverData;
    6245                 DriverInitializationData.DxgkDdiAcquireSwizzlingRange = DxgkDdiAcquireSwizzlingRange;
    6246                 DriverInitializationData.DxgkDdiReleaseSwizzlingRange = DxgkDdiReleaseSwizzlingRange;
    6247                 DriverInitializationData.DxgkDdiPatch = DxgkDdiPatch;
    6248                 DriverInitializationData.DxgkDdiSubmitCommand = DxgkDdiSubmitCommand;
    6249                 DriverInitializationData.DxgkDdiPreemptCommand = DxgkDdiPreemptCommand;
    6250                 DriverInitializationData.DxgkDdiBuildPagingBuffer = DxgkDdiBuildPagingBuffer;
    6251                 DriverInitializationData.DxgkDdiSetPalette = DxgkDdiSetPalette;
    6252                 DriverInitializationData.DxgkDdiSetPointerPosition = DxgkDdiSetPointerPosition;
    6253                 DriverInitializationData.DxgkDdiSetPointerShape = DxgkDdiSetPointerShape;
    6254                 DriverInitializationData.DxgkDdiResetFromTimeout = DxgkDdiResetFromTimeout;
    6255                 DriverInitializationData.DxgkDdiRestartFromTimeout = DxgkDdiRestartFromTimeout;
    6256                 DriverInitializationData.DxgkDdiEscape = DxgkDdiEscape;
    6257                 DriverInitializationData.DxgkDdiCollectDbgInfo = DxgkDdiCollectDbgInfo;
    6258                 DriverInitializationData.DxgkDdiQueryCurrentFence = DxgkDdiQueryCurrentFence;
    6259                 DriverInitializationData.DxgkDdiIsSupportedVidPn = DxgkDdiIsSupportedVidPn;
    6260                 DriverInitializationData.DxgkDdiRecommendFunctionalVidPn = DxgkDdiRecommendFunctionalVidPn;
    6261                 DriverInitializationData.DxgkDdiEnumVidPnCofuncModality = DxgkDdiEnumVidPnCofuncModality;
    6262                 DriverInitializationData.DxgkDdiSetVidPnSourceAddress = DxgkDdiSetVidPnSourceAddress;
    6263                 DriverInitializationData.DxgkDdiSetVidPnSourceVisibility = DxgkDdiSetVidPnSourceVisibility;
    6264                 DriverInitializationData.DxgkDdiCommitVidPn = DxgkDdiCommitVidPn;
    6265                 DriverInitializationData.DxgkDdiUpdateActiveVidPnPresentPath = DxgkDdiUpdateActiveVidPnPresentPath;
    6266                 DriverInitializationData.DxgkDdiRecommendMonitorModes = DxgkDdiRecommendMonitorModes;
    6267                 DriverInitializationData.DxgkDdiRecommendVidPnTopology = DxgkDdiRecommendVidPnTopology;
    6268                 DriverInitializationData.DxgkDdiGetScanLine = DxgkDdiGetScanLine;
    6269                 DriverInitializationData.DxgkDdiStopCapture = DxgkDdiStopCapture;
    6270                 DriverInitializationData.DxgkDdiControlInterrupt = DxgkDdiControlInterrupt;
    6271                 DriverInitializationData.DxgkDdiCreateOverlay = DxgkDdiCreateOverlay;
    6272 
    6273                 DriverInitializationData.DxgkDdiDestroyDevice = DxgkDdiDestroyDevice;
    6274                 DriverInitializationData.DxgkDdiOpenAllocation = DxgkDdiOpenAllocation;
    6275                 DriverInitializationData.DxgkDdiCloseAllocation = DxgkDdiCloseAllocation;
    6276                 DriverInitializationData.DxgkDdiRender = DxgkDdiRender;
    6277                 DriverInitializationData.DxgkDdiPresent = DxgkDdiPresent;
    6278 
    6279                 DriverInitializationData.DxgkDdiUpdateOverlay = DxgkDdiUpdateOverlay;
    6280                 DriverInitializationData.DxgkDdiFlipOverlay = DxgkDdiFlipOverlay;
    6281                 DriverInitializationData.DxgkDdiDestroyOverlay = DxgkDdiDestroyOverlay;
    6282 
    6283                 DriverInitializationData.DxgkDdiCreateContext = DxgkDdiCreateContext;
    6284                 DriverInitializationData.DxgkDdiDestroyContext = DxgkDdiDestroyContext;
    6285 
    6286                 DriverInitializationData.DxgkDdiLinkDevice = NULL; //DxgkDdiLinkDevice;
    6287                 DriverInitializationData.DxgkDdiSetDisplayPrivateDriverFormat = DxgkDdiSetDisplayPrivateDriverFormat;
    6288         //#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN7)
    6289         //# error port to Win7 DDI
    6290         //            DriverInitializationData.DxgkDdiRenderKm  = DxgkDdiRenderKm;
    6291         //            DriverInitializationData.DxgkDdiRestartFromTimeout  = DxgkDdiRestartFromTimeout;
    6292         //            DriverInitializationData.DxgkDdiSetVidPnSourceVisibility  = DxgkDdiSetVidPnSourceVisibility;
    6293         //            DriverInitializationData.DxgkDdiUpdateActiveVidPnPresentPath  = DxgkDdiUpdateActiveVidPnPresentPath;
    6294         //            DriverInitializationData.DxgkDdiQueryVidPnHWCapability  = DxgkDdiQueryVidPnHWCapability;
    6295         //#endif
    6296 
    6297                 Status = DxgkInitialize(DriverObject,
    6298                                       RegistryPath,
    6299                                       &DriverInitializationData);
     6500#ifdef VBOX_WDDM_WIN8
     6501                Status = vboxWddmInitDisplayOnlyDriver(DriverObject, RegistryPath);
     6502#else
     6503                Status = vboxWddmInitFullGraphicsDriver(DriverObject, RegistryPath);
     6504#endif
    63006505                if (NT_SUCCESS(Status))
    63016506                    return Status;
     6507
    63026508                VBoxWddmVrTerm();
    63036509            }
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