VirtualBox

source: vbox/trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/Makefile.kmk

Last change on this file was 103999, checked in by vboxsync, 2 months ago

Addition/3D,Additions/WINNT/Graphics: Updates for mesa-24.0.2 (not enabled yet). bugref:10606

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 9.1 KB
Line 
1# $Id: Makefile.kmk 103999 2024-03-22 12:38:39Z vboxsync $
2## @file
3# Makefile for the Windows guest display driver.
4#
5
6#
7# Copyright (C) 2011-2023 Oracle and/or its affiliates.
8#
9# This file is part of VirtualBox base platform packages, as
10# available from https://www.virtualbox.org.
11#
12# This program is free software; you can redistribute it and/or
13# modify it under the terms of the GNU General Public License
14# as published by the Free Software Foundation, in version 3 of the
15# License.
16#
17# This program is distributed in the hope that it will be useful, but
18# WITHOUT ANY WARRANTY; without even the implied warranty of
19# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20# General Public License for more details.
21#
22# You should have received a copy of the GNU General Public License
23# along with this program; if not, see <https://www.gnu.org/licenses>.
24#
25# SPDX-License-Identifier: GPL-3.0-only
26#
27
28SUB_DEPTH = ../../../../../../..
29include $(KBUILD_PATH)/subheader.kmk
30
31ifdef VBOX_WITH_MESA3D
32 ifndef VBOX_MESA3D_CONFIG_KMK_INCLUDED
33 include $(PATH_ROOT)/src/VBox/Additions/3D/Config.kmk
34 endif
35endif
36
37#
38# VBoxDisp - Windows Guest Additions XPDM Display Driver
39#
40# Note. This has to run on NT4! (*_NT4 => *_W2K3 when targeting 64-bit.)
41#
42SYSMODS += VBoxDisp
43VBoxDisp_TEMPLATE = VBoxGuestR0Drv
44VBoxDisp_SYSSUFF = .dll
45VBoxDisp_SDKS = ReorderCompilerIncs $(VBOX_WINDDK_GST_NT4)
46VBoxDisp_DEFS.x86 = _WIN32_WINNT=0x0501
47VBoxDisp_DEFS = VBOX_WITH_DDRAW
48VBoxDisp_DEFS += LOG_TO_BACKDOOR #LOG_ENABLED
49ifdef VBOX_WITH_VIDEOHWACCEL
50 VBoxDisp_DEFS += VBOX_WITH_VIDEOHWACCEL
51endif
52#VBoxDisp_DEFS += VBOX_VBVA_ADJUST_RECT
53VBoxDisp_INCS = \
54 ../../../include \
55 .. \
56 $(VBOX_GRAPHICS_INCS)
57VBoxDisp_LDFLAGS.x86 = /Entry:DrvEnableDriver@12
58VBoxDisp_LDFLAGS.amd64 = /Entry:DrvEnableDriver
59VBoxDisp_SOURCES = \
60 xpdm/VBoxDispDriver.cpp \
61 xpdm/VBoxDispMini.cpp \
62 xpdm/VBoxDispMouse.cpp \
63 xpdm/VBoxDispPalette.cpp \
64 xpdm/VBoxDispVBVA.cpp \
65 xpdm/VBoxDispDrawCmd.cpp \
66 xpdm/VBoxDispVRDP.cpp \
67 xpdm/VBoxDispVrdpBmp.cpp \
68 xpdm/VBoxDispVrdpTxt.cpp \
69 xpdm/VBoxDispDriverDDraw.cpp \
70 xpdm/VBoxDispDDraw.cpp \
71 xpdm/VBoxDisp.def \
72 xpdm/VBoxDisp.rc \
73 $(PATH_ROOT)/src/VBox/Additions/common/VBoxVideo/HGSMIBase.cpp \
74 $(PATH_ROOT)/src/VBox/Additions/common/VBoxVideo/HGSMIBuffers.cpp \
75 $(PATH_ROOT)/src/VBox/Additions/common/VBoxVideo/HGSMIHostCmd.cpp \
76 $(PATH_ROOT)/src/VBox/Additions/common/VBoxVideo/VBVABase.cpp \
77 $(PATH_ROOT)/src/VBox/Additions/common/VBoxVideo/Modesetting.cpp
78ifdef VBOX_WITH_VIDEOHWACCEL
79 VBoxDisp_SOURCES += \
80 xpdm/VBoxDispVHWA.cpp \
81 xpdm/VBoxDispDDrawVHWA.cpp
82endif
83
84
85VBoxDisp_LIBS = \
86 $(VBOX_LIB_IPRT_GUEST_R0_NT4) \
87 $(VBOX_PATH_ADDITIONS_LIB)/HGSMIGuestR0Lib$(VBOX_SUFF_LIB) \
88 $(PATH_SDK_$(VBOX_WINDDK_GST)_LIB)/win32k.lib # Linker needs newer win32k.lib (for x86 at least); incompatible loadcfg.obj in the WDK 7.1 one.
89ifneq ($(VBOX_VCC_CC_GUARD_CF),)
90 VBoxDisp_LIBS += \
91 $(PATH_SDK_$(VBOX_WINDDK_GST)_LIB)/BufferOverflowGDI.lib # for ___security_cookie
92endif
93VBoxDisp_USES.win += vboximportchecker
94VBoxDisp_VBOX_IMPORT_CHECKER.win.x86 = nt4/r0
95VBoxDisp_VBOX_IMPORT_CHECKER.win.amd64 = xp64/r0
96
97# Signing requires both miniport and display drivers so it'll be dealt with in the parent makefile.
98if defined(VBOX_SIGNING_MODE) && defined(VBOX_SIGN_ADDITIONS)
99 VBoxDisp_INSTTYPE := none
100 VBoxDisp_DEBUG_INSTTYPE := both
101 ifdef VBOX_WITH_WDDM
102 VBoxDispD3D_INSTTYPE := none
103 VBoxDispD3D_DEBUG_INSTTYPE := both
104 ifdef VBOX_WITH_WDDM_DX
105 VBoxDX_INSTTYPE := none
106 VBoxDX_DEBUG_INSTTYPE := both
107 endif
108 endif
109endif
110
111ifdef VBOX_WITH_WDDM
112 #
113 # VBoxDispD3D - Windows Guest Additions WDDM R3 Display Driver
114 #
115 DLLS += VBoxDispD3D
116 VBoxDispD3D_TEMPLATE = VBoxGuestR3DllMinVista
117 VBoxDispD3D_SDKS = ReorderCompilerIncs $(VBOX_WINDDK_GST_WLH)
118 VBoxDispD3D_DEFS = UNICODE _UNICODE VBOX_WITH_WDDM VBOXWDDMDISP LOG_TO_BACKDOOR LOG_TO_BACKDOOR_DRV VBOX_WITH_HGCM
119 ifdef DEBUG_misha
120 VBoxDispD3D_DEFS += LOG_ENABLED
121 endif
122 ifdef VBOXWDDM_WITH_VBVA
123 VBoxDispD3D_DEFS += VBOXWDDM_WITH_VBVA
124 endif
125 ifdef VBOX_WITH_VIDEOHWACCEL
126 VBoxDispD3D_DEFS += VBOX_WITH_VIDEOHWACCEL
127 endif
128 # Avoid "src\VBox\Additions\3D\mesa\mesa-21.3.8\include\c99_compat.h(99): warning C4668: '__STDC_VERSION__'
129 # is not defined as a preprocessor macro, replacing with '0' for '#if/#elif'"
130 VBoxDispD3D_DEFS += __STDC_VERSION__=0
131 VBoxDispD3D_INCS = \
132 ../../../include \
133 .. \
134 $(PATH_ROOT)/src/VBox/Additions/WINNT/Graphics/Video/disp/wddm/shared \
135 $(VBOX_GRAPHICS_INCS)
136 VBoxDispD3D_SOURCES = \
137 wddm/VBoxDispD3D.cpp \
138 wddm/VBoxDispD3DIf.cpp \
139 wddm/VBoxDispDbg.cpp \
140 wddm/VBoxD3DIf.cpp \
141 wddm/VBoxDispD3D.rc \
142 wddm/VBoxDispD3D.def
143 VBoxDispD3D_LIBS = \
144 $(VBOX_LIB_IPRT_GUEST_R3) \
145 $(VBOX_LIB_VBGL_R3) \
146 Psapi.lib \
147 $(VBOX_PATH_ADDITIONS_LIB)/VBoxDispMpLogger$(VBOX_SUFF_LIB) \
148 $(VBOX_PATH_ADDITIONS_LIB)/VBoxWddmUmKmt$(VBOX_SUFF_LIB)
149
150 ifdef VBOX_WITH_VMSVGA
151 VBoxDispD3D_DEFS += VBOX_WITH_VMSVGA
152 VBoxDispD3D_INCS += \
153 $(PATH_ROOT)/src/VBox/Additions/3D/win/include \
154 $(PATH_ROOT)/src/VBox/Devices/Graphics/vmsvga_include
155 endif
156
157 ifdef VBOX_WITH_MESA3D
158 VBoxDispD3D_DEFS += VBOX_WITH_MESA3D
159 VBoxDispD3D_DEFS += VBOX_MESA_V_MAJOR=$(VBOX_MESA_V_MAJOR)
160 VBoxDispD3D_INCS += \
161 $(VBOX_PATH_MESA)/src/gallium/include \
162 $(VBOX_PATH_MESA)/src \
163 $(VBOX_PATH_MESA)/include/c99 \
164 $(VBOX_PATH_MESA)/include
165 VBoxDispD3D_SOURCES += \
166 wddm/gallium/GaDxva.cpp \
167 wddm/gallium/GaDrvEnvWddm.cpp \
168 wddm/gallium/GaWddm.cpp \
169 wddm/gallium/GaDdi.cpp \
170 wddm/gallium/Present.cpp \
171 wddm/gallium/VBoxGallium.cpp \
172 wddm/gallium/VBoxGaD3DDevice9Ex.cpp \
173 wddm/gallium/VBoxD3DAdapter9.c
174
175 ifdef VBOX_WITH_VMSVGA3D_DX
176 VBoxDispD3D_DEFS += VBOX_WITH_VMSVGA3D_DX9
177 endif
178
179 ifdef VBOX_WITH_MESA3D_D3DTEST
180 VBoxDispD3D_DEFS += VBOX_WITH_MESA3D_D3DTEST
181 VBoxDispD3D_SOURCES += \
182 wddm/gallium/test/d3dhlp.cpp \
183 wddm/gallium/test/d3d9render.cpp \
184 wddm/gallium/GaDrvTest.cpp
185 endif
186 endif
187
188 #
189 # 64-bit systems needs a 32-bit version of VBoxDispD3D.
190 #
191 DLLS.amd64 += VBoxDispD3D-x86
192 VBoxDispD3D-x86_EXTENDS = VBoxDispD3D
193 VBoxDispD3D-x86_BLD_TRG_ARCH = x86
194 VBoxDispD3D-x86_LIBS = \
195 $(VBOX_LIB_IPRT_GUEST_R3_X86) \
196 $(VBOX_LIB_VBGL_R3_X86) \
197 Psapi.lib \
198 $(VBOX_PATH_ADDITIONS_LIB)/VBoxDispMpLogger-x86$(VBOX_SUFF_LIB) \
199 $(VBOX_PATH_ADDITIONS_LIB)/VBoxWddmUmKmt-x86$(VBOX_SUFF_LIB)
200 VBoxDispD3D-x86_DEFS = $(VBoxDispD3D_DEFS) VBOX_WDDM_WOW64
201
202 #
203 # VGPU10 driver VBoxDX
204 #
205 ifdef VBOX_WITH_VMSVGA3D_DX
206 DLLS += VBoxDX
207 VBoxDX_TEMPLATE = VBoxGuestR3DllMinVista
208 VBoxDX_DEFS = UNICODE _UNICODE VBOX_WITH_VMSVGA VBOX_WITH_VMSVGA3D_DX
209 VBoxDX_DEFS += D3D_UMD_INTERFACE_VERSION=D3D_UMD_INTERFACE_VERSION_WIN8
210 VBoxDX_DEFS += DXGKDDI_INTERFACE_VERSION=DXGKDDI_INTERFACE_VERSION_WIN8
211 VBoxDX_INCS = \
212 $(PATH_ROOT)/src/VBox/Additions/WINNT/Graphics/Video/disp/wddm/shared \
213 $(PATH_ROOT)/src/VBox/Additions/WINNT/Graphics/Video/common/wddm \
214 $(PATH_ROOT)/src/VBox/Additions/3D/win/include \
215 $(PATH_ROOT)/src/VBox/Additions/3D/win/VBoxWddmUmHlp \
216 $(PATH_ROOT)/src/VBox/Devices/Graphics/vmsvga_include \
217 $(VBOX_GRAPHICS_INCS)
218 VBoxDX_SOURCES = \
219 wddm/dx/VBoxDXDDI.cpp \
220 wddm/dx/VBoxDXDDIVideo.cpp \
221 wddm/dx/VBoxDX.cpp \
222 wddm/dx/VBoxDXVideo.cpp \
223 wddm/dx/VBoxDXCmd.cpp \
224 wddm/dx/VBoxDX.rc \
225 wddm/dx/VBoxDX.def
226 VBoxDX_LIBS = \
227 $(VBOX_LIB_IPRT_GUEST_R3) \
228 Psapi.lib \
229 $(VBOX_PATH_ADDITIONS_LIB)/VBoxWddmUmHlp$(VBOX_SUFF_LIB)
230
231 # 64-bit systems need a 32-bit version of VBoxDX
232 DLLS.amd64 += VBoxDX-x86
233 VBoxDX-x86_EXTENDS = VBoxDX
234 VBoxDX-x86_BLD_TRG_ARCH = x86
235 VBoxDX-x86_LIBS = \
236 $(VBOX_LIB_IPRT_GUEST_R3_X86) \
237 $(VBOX_LIB_VBGL_R3_X86) \
238 Psapi.lib \
239 $(VBOX_PATH_ADDITIONS_LIB)/VBoxWddmUmHlp-x86$(VBOX_SUFF_LIB)
240 VBoxDX-x86_DEFS = $(VBoxDX_DEFS) VBOX_WDDM_WOW64
241 endif # VBOX_WITH_VMSVGA3D_DX
242
243 include $(PATH_SUB_CURRENT)/wddm/shared/Makefile.kmk
244
245endif #ifdef VBOX_WITH_WDDM
246
247
248ifdef VBOX_WITH_VBOXVIDEOWINDBG
249 #
250 # A windbg extension and a few test programs.
251 #
252
253 DLLS += vbvdbg
254 vbvdbg_TEMPLATE = VBoxR3StaticDll
255 vbvdbg_SDKS = ReorderCompilerIncs $(VBOX_WINDDK_GST_WLH)
256 vbvdbg_DEFS = UNICODE _UNICODE
257 vbvdbg_SOURCES = \
258 wddm/dbg/VBoxVideoWinDbg.cpp \
259 wddm/dbg/VBoxVideoWinDbg.def
260
261 PROGRAMS += tstMvWnd
262 tstMvWnd_TEMPLATE = VBoxR3Static
263 tstMvWnd_DEFS = UNICODE _UNICODE
264 tstMvWnd_SOURCES = wddm/dbg/tstMvWnd.cpp
265 #tstMvWnd_LIBS = $(VBOX_LIB_IPRT_GUEST_R3) - Use guest template if this is wanted! duh!
266 #tstMvWnd_LDFLAGS = /SUBSYSTEM:windows
267
268 PROGRAMS += DumpD3DCaps9
269 DumpD3DCaps9_TEMPLATE = VBoxR3Exe
270 DumpD3DCaps9_SDKS = ReorderCompilerIncs $(VBOX_WINDDK_GST_WLH)
271 DumpD3DCaps9_DEFS = UNICODE _UNICODE
272 DumpD3DCaps9_SOURCES = wddm/dbg/DumpD3DCaps9.cpp
273 DumpD3DCaps9_LIBS = d3d9.lib
274
275 PROGRAMS += D3DFeatureLevel
276 D3DFeatureLevel_TEMPLATE = VBoxR3Static
277 D3DFeatureLevel_SDKS = ReorderCompilerIncs $(VBOX_WINDDK_GST_WLH)
278 D3DFeatureLevel_SOURCES = wddm/dbg/D3DFeatureLevel.cpp
279 D3DFeatureLevel_LIBS = d3d11.lib
280 #D3DFeatureLevel_LIBS = $(VBOX_LIB_IPRT_GUEST_R3) d3d11.lib - Use guest template if this is wanted! duh!
281 #D3DFeatureLevel_LDFLAGS.win = /SUBSYSTEM:CONSOLE
282
283endif # VBOX_WITH_VBOXVIDEOWINDBG
284
285include $(FILE_KBUILD_SUB_FOOTER)
Note: See TracBrowser for help on using the repository browser.

© 2023 Oracle
ContactPrivacy policyTerms of Use