Richard Boegli's CnC_Generals_Zero_Hour Fork WIP
This is documentation of Richard Boegil's Zero Hour Fork
 
Loading...
Searching...
No Matches
dx8caps.h
Go to the documentation of this file.
1/*
2** Command & Conquer Generals Zero Hour(tm)
3** Copyright 2025 Electronic Arts Inc.
4**
5** This program is free software: you can redistribute it and/or modify
6** it under the terms of the GNU General Public License as published by
7** the Free Software Foundation, either version 3 of the License, or
8** (at your option) any later version.
9**
10** This program is distributed in the hope that it will be useful,
11** but WITHOUT ANY WARRANTY; without even the implied warranty of
12** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13** GNU General Public License for more details.
14**
15** You should have received a copy of the GNU General Public License
16** along with this program. If not, see <http://www.gnu.org/licenses/>.
17*/
18
19/***********************************************************************************************
20 *** C O N F I D E N T I A L --- W E S T W O O D S T U D I O S ***
21 ***********************************************************************************************
22 * *
23 * Project Name : DX8 Caps *
24 * *
25 * $Archive:: /Commando/Code/ww3d2/dx8caps.h $*
26 * *
27 * Original Author:: Hector Yee *
28 * *
29 * Author : Kenny Mitchell *
30 * *
31 * $Modtime:: 06/27/02 1:27p $*
32 * *
33 * $Revision:: 24 $*
34 * *
35 * 06/27/02 KM Z Format support *
36 *---------------------------------------------------------------------------------------------*
37 * Functions: *
38 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
39
40#if _MSC_VER >= 1000
41#pragma once
42#endif // _MSC_VER >= 1000
43
44#ifndef DX8CAPS_H
45#define DX8CAPS_H
46
47#include "always.h"
48#include "ww3dformat.h"
49#include <d3d8.h>
50
52{
53public:
60
74
101
120
163
173
189
194
201
208
209
210 DX8Caps(IDirect3D8* direct3d, const D3DCAPS8& caps,WW3DFormat display_format, const D3DADAPTER_IDENTIFIER8& adapter_id);
211 DX8Caps(IDirect3D8* direct3d, IDirect3DDevice8* D3DDevice,WW3DFormat display_format, const D3DADAPTER_IDENTIFIER8& adapter_id);
212 static void Shutdown(void);
213
214 void Compute_Caps(WW3DFormat display_format, const D3DADAPTER_IDENTIFIER8& adapter_id);
215 bool Support_TnL() const { return SupportTnL; };
216 bool Support_DXTC() const { return SupportDXTC; }
217 bool Support_Gamma() const { return supportGamma; }
218 bool Support_NPatches() const { return SupportNPatches; }
219 bool Support_Bump_Envmap() const { return SupportBumpEnvmap; }
220 bool Support_Bump_Envmap_Luminance() const { return SupportBumpEnvmapLuminance; }
221 bool Support_ZBias() const { return SupportZBias; }
222 bool Support_Anisotropic_Filtering() const { return SupportAnisotropicFiltering; }
223 bool Support_ModAlphaAddClr() const { return SupportModAlphaAddClr; }
224 bool Support_Dot3() const { return SupportDot3; }
225 bool Support_PointSprites() const { return SupportPointSprites; }
226 bool Support_Cubemaps() const { return SupportCubemaps; }
227 bool Can_Do_Multi_Pass() const { return CanDoMultiPass; }
228 bool Is_Fog_Allowed() const { return IsFogAllowed; }
229
230 bool Is_Valid_Display_Format(int width, int height, WW3DFormat format);
231
232 int Get_Max_Textures_Per_Pass() const { return MaxTexturesPerPass; }
233
234 // -------------------------------------------------------------------------
235 //
236 // Vertex shader support. Version number is split in major and minor, such that 1.0 would
237 // have 1 as major and 0 as minor version number.
238 //
239 // -------------------------------------------------------------------------
240
241 int Get_Vertex_Shader_Major_Version() const { return 0xff&(VertexShaderVersion>>8); }
242 int Get_Vertex_Shader_Minor_Version() const { return 0xff&(VertexShaderVersion); }
243 int Get_Pixel_Shader_Major_Version() const { return 0xff&(PixelShaderVersion>>8); }
244 int Get_Pixel_Shader_Minor_Version() const { return 0xff&(PixelShaderVersion); }
245 int Get_Max_Simultaneous_Textures() const { return MaxSimultaneousTextures;}
246
247 bool Support_Texture_Format(WW3DFormat format) const { return SupportTextureFormat[format]; }
248 bool Support_Render_To_Texture_Format(WW3DFormat format) const { return SupportRenderToTextureFormat[format]; }
249 bool Support_Depth_Stencil_Format(WW3DZFormat format) const { return SupportDepthStencilFormat[format]; }
250
251 D3DCAPS8 const & Get_DX8_Caps() const { return Caps; }
252
253 const StringClass& Get_Log() const { return CapsLog; }
254 const StringClass& Get_Compact_Log() const { return CompactLog; }
255
256 unsigned Get_Vendor() const { return VendorId; }
257 unsigned Get_Device() const { return DeviceId; }
258 const StringClass& Get_Driver_Name() const { return DriverDLL; }
259 unsigned Get_Driver_Build_Version() const { return DriverBuildVersion; }
260
261 // This will return false if the driver version is known to have problems.
262 DriverVersionStatusType Get_Driver_Version_Status() { return DriverVersionStatus; }
263
264private:
265 static VendorIdType Define_Vendor(unsigned vendor_id);
266 static DeviceTypeATI Get_ATI_Device(unsigned device_id);
267 static DeviceType3DLabs Get_3DLabs_Device(unsigned device_id);
268 static DeviceTypeNVidia Get_NVidia_Device(unsigned device_id);
269 static DeviceType3Dfx Get_3Dfx_Device(unsigned device_id);
270 static DeviceTypeMatrox Get_Matrox_Device(unsigned device_id);
271 static DeviceTypePowerVR Get_PowerVR_Device(unsigned device_id);
272 static DeviceTypeS3 Get_S3_Device(unsigned device_id);
273 static DeviceTypeIntel Get_Intel_Device(unsigned device_id);
274
275 void Init_Caps(IDirect3DDevice8* D3DDevice);
276 void Check_Texture_Format_Support(WW3DFormat display_format,const D3DCAPS8& caps);
277 void Check_Render_To_Texture_Support(WW3DFormat display_format,const D3DCAPS8& caps);
278 void Check_Depth_Stencil_Support(WW3DFormat display_format, const D3DCAPS8& caps);
279 void Check_Texture_Compression_Support(const D3DCAPS8& caps);
280 void Check_Bumpmap_Support(const D3DCAPS8& caps);
281 void Check_Shader_Support(const D3DCAPS8& caps);
282 void Check_Maximum_Texture_Support(const D3DCAPS8& caps);
283 void Check_Driver_Version_Status();
284 void Vendor_Specific_Hacks(const D3DADAPTER_IDENTIFIER8& adapter_id);
285
286 int MaxDisplayWidth;
287 int MaxDisplayHeight;
288
289 D3DCAPS8 Caps;
290 bool SupportTnL;
291 bool SupportDXTC;
292 bool supportGamma;
293 bool SupportNPatches;
294 bool SupportBumpEnvmap;
295 bool SupportBumpEnvmapLuminance;
296 bool SupportTextureFormat[WW3D_FORMAT_COUNT];
297 bool SupportRenderToTextureFormat[WW3D_FORMAT_COUNT];
298 bool SupportDepthStencilFormat[WW3D_ZFORMAT_COUNT];
299 bool SupportZBias;
300 bool SupportAnisotropicFiltering;
301 bool SupportModAlphaAddClr;
302 bool SupportDot3;
303 bool SupportPointSprites;
304 bool SupportCubemaps;
305 bool CanDoMultiPass;
306 bool IsFogAllowed;
307 int MaxTexturesPerPass;
308 int VertexShaderVersion;
309 int PixelShaderVersion;
310 int MaxSimultaneousTextures;
311 unsigned DeviceId;
312 unsigned DriverBuildVersion;
313 DriverVersionStatusType DriverVersionStatus;
314 VendorIdType VendorId;
315 StringClass DriverDLL;
316 IDirect3D8* Direct3D; // warning XDK name conflict KJM
317 StringClass CapsLog;
318 StringClass CompactLog;
319};
320
321
322#endif
DriverVersionStatusType
Definition dx8caps.h:54
@ DRIVER_STATUS_BAD
Definition dx8caps.h:58
@ DRIVER_STATUS_GOOD
Definition dx8caps.h:56
@ DRIVER_STATUS_UNKNOWN
Definition dx8caps.h:55
@ DRIVER_STATUS_OK
Definition dx8caps.h:57
unsigned Get_Device() const
Definition dx8caps.h:257
unsigned Get_Driver_Build_Version() const
Definition dx8caps.h:259
D3DCAPS8 const & Get_DX8_Caps() const
Definition dx8caps.h:251
DeviceTypeNVidia
Definition dx8caps.h:121
@ DEVICE_NVIDIA_GEFORCE4_MX_420
Definition dx8caps.h:147
@ DEVICE_NVIDIA_GEFORCE_DDR
Definition dx8caps.h:129
@ DEVICE_NVIDIA_GEFORCE_256
Definition dx8caps.h:130
@ DEVICE_NVIDIA_GEFORCE2_INTEGRATED
Definition dx8caps.h:156
@ DEVICE_NVIDIA_GEFORCE2_MX_100_200
Definition dx8caps.h:159
@ DEVICE_NVIDIA_GEFORCE4_GO_440
Definition dx8caps.h:149
@ DEVICE_NVIDIA_QUADRO_DCC
Definition dx8caps.h:161
@ DEVICE_NVIDIA_GEFORCE2_MX_400
Definition dx8caps.h:160
@ DEVICE_NVIDIA_GEFORCE4
Definition dx8caps.h:148
@ DEVICE_NVIDIA_QUADRO2_MXR_EX_GO
Definition dx8caps.h:158
@ DEVICE_NVIDIA_GEFORCE2_ULTRA
Definition dx8caps.h:126
@ DEVICE_NVIDIA_GEFORCE4_TI
Definition dx8caps.h:143
@ DEVICE_NVIDIA_GEFORCE3_TI_200
Definition dx8caps.h:155
@ DEVICE_NVIDIA_TNT2_ULTRA
Definition dx8caps.h:133
@ DEVICE_NVIDIA_GEFORCE4_GO_420_32M
Definition dx8caps.h:151
@ DEVICE_NVIDIA_TNT2_M64
Definition dx8caps.h:135
@ DEVICE_NVIDIA_GEFORCE4_TI_4600
Definition dx8caps.h:141
@ DEVICE_NVIDIA_TNT_VANTA
Definition dx8caps.h:138
@ DEVICE_NVIDIA_NV1
Definition dx8caps.h:139
@ DEVICE_NVIDIA_GEFORCE4_MX_440
Definition dx8caps.h:146
@ DEVICE_NVIDIA_GEFORCE4_MX_460
Definition dx8caps.h:145
@ DEVICE_NVIDIA_GEFORCE4_GO
Definition dx8caps.h:153
@ DEVICE_NVIDIA_GEFORCE4_TI_4200
Definition dx8caps.h:144
@ DEVICE_NVIDIA_QUADRO2_PRO
Definition dx8caps.h:124
@ DEVICE_NVIDIA_TNT2
Definition dx8caps.h:132
@ DEVICE_NVIDIA_GEFORCE2_TI
Definition dx8caps.h:157
@ DEVICE_NVIDIA_GEFORCE4_GO_440_64M
Definition dx8caps.h:152
@ DEVICE_NVIDIA_RIVA_128
Definition dx8caps.h:137
@ DEVICE_NVIDIA_GEFORCE4_TI_4400
Definition dx8caps.h:142
@ DEVICE_NVIDIA_TNT2_ALADDIN
Definition dx8caps.h:131
@ DEVICE_NVIDIA_UNKNOWN
Definition dx8caps.h:122
@ DEVICE_NVIDIA_GEFORCE2_GO
Definition dx8caps.h:125
@ DEVICE_NVIDIA_QUADRO
Definition dx8caps.h:128
@ DEVICE_NVIDIA_GEFORCE4_GO_420
Definition dx8caps.h:150
@ DEVICE_NVIDIA_TNT2_VANTA
Definition dx8caps.h:134
@ DEVICE_NVIDIA_GEFORCE3_TI_500
Definition dx8caps.h:154
@ DEVICE_NVIDIA_GEFORCE3
Definition dx8caps.h:123
@ DEVICE_NVIDIA_GEFORCE2_MX
Definition dx8caps.h:140
@ DEVICE_NVIDIA_GEFORCE2_GTS
Definition dx8caps.h:127
@ DEVICE_NVIDIA_TNT
Definition dx8caps.h:136
const StringClass & Get_Compact_Log() const
Definition dx8caps.h:254
DeviceTypeATI
Definition dx8caps.h:75
@ DEVICE_ATI_RAGE_128_MOBILITY
Definition dx8caps.h:81
@ DEVICE_ATI_RAGE_128_MOBILITY_M4
Definition dx8caps.h:83
@ DEVICE_ATI_RAGE_128_PRO_VR
Definition dx8caps.h:87
@ DEVICE_ATI_RAGE_128_PRO_ULTRA
Definition dx8caps.h:84
@ DEVICE_ATI_RADEON_DDR
Definition dx8caps.h:95
@ DEVICE_ATI_RAGE_128_PRO_GL
Definition dx8caps.h:86
@ DEVICE_ATI_RAGE_IIC_AGP
Definition dx8caps.h:80
@ DEVICE_ATI_R8500
Definition dx8caps.h:99
@ DEVICE_ATI_RADEON_VE
Definition dx8caps.h:94
@ DEVICE_ATI_RAGE_PRO_MOBILITY
Definition dx8caps.h:91
@ DEVICE_ATI_R7500
Definition dx8caps.h:98
@ DEVICE_ATI_MOBILITY_R7500
Definition dx8caps.h:97
@ DEVICE_ATI_RAGE_128_MOBILITY_M3
Definition dx8caps.h:82
@ DEVICE_ATI_RAGE_128_GL
Definition dx8caps.h:88
@ DEVICE_ATI_RAGE_II_PLUS
Definition dx8caps.h:78
@ DEVICE_ATI_RAGE_128_4X
Definition dx8caps.h:85
@ DEVICE_ATI_RAGE_II
Definition dx8caps.h:77
@ DEVICE_ATI_RAGE_128_VR
Definition dx8caps.h:89
@ DEVICE_ATI_UNKNOWN
Definition dx8caps.h:76
@ DEVICE_ATI_MOBILITY_RADEON_VE_M6
Definition dx8caps.h:93
@ DEVICE_ATI_RADEON
Definition dx8caps.h:96
@ DEVICE_ATI_RAGE_IIC_PCI
Definition dx8caps.h:79
@ DEVICE_ATI_MOBILITY_RADEON
Definition dx8caps.h:92
@ DEVICE_ATI_RAGE_PRO
Definition dx8caps.h:90
bool Can_Do_Multi_Pass() const
Definition dx8caps.h:227
int Get_Pixel_Shader_Minor_Version() const
Definition dx8caps.h:244
DeviceTypeIntel
Definition dx8caps.h:202
@ DEVICE_INTEL_810E
Definition dx8caps.h:205
@ DEVICE_INTEL_815
Definition dx8caps.h:206
@ DEVICE_INTEL_810
Definition dx8caps.h:204
@ DEVICE_INTEL_UNKNOWN
Definition dx8caps.h:203
bool Is_Fog_Allowed() const
Definition dx8caps.h:228
const StringClass & Get_Log() const
Definition dx8caps.h:253
bool Support_Render_To_Texture_Format(WW3DFormat format) const
Definition dx8caps.h:248
DeviceTypeS3
Definition dx8caps.h:195
@ DEVICE_S3_UNKNOWN
Definition dx8caps.h:196
@ DEVICE_S3_SAVAGE_200
Definition dx8caps.h:199
@ DEVICE_S3_SAVAGE_4
Definition dx8caps.h:198
@ DEVICE_S3_SAVAGE_MX
Definition dx8caps.h:197
VendorIdType
Definition dx8caps.h:61
@ VENDOR_ATI
Definition dx8caps.h:64
@ VENDOR_UNKNOWN
Definition dx8caps.h:62
@ VENDOR_RENDITION
Definition dx8caps.h:72
@ VENDOR_3DFX
Definition dx8caps.h:69
@ VENDOR_S3
Definition dx8caps.h:66
@ VENDOR_CIRRUSLOGIC
Definition dx8caps.h:71
@ VENDOR_NVIDIA
Definition dx8caps.h:63
@ VENDOR_MATROX
Definition dx8caps.h:68
@ VENDOR_INTEL
Definition dx8caps.h:65
@ VENDOR_POWERVR
Definition dx8caps.h:67
@ VENDOR_3DLABS
Definition dx8caps.h:70
int Get_Max_Simultaneous_Textures() const
Definition dx8caps.h:245
int Get_Pixel_Shader_Major_Version() const
Definition dx8caps.h:243
bool Support_DXTC() const
Definition dx8caps.h:216
bool Support_TnL() const
Definition dx8caps.h:215
bool Support_Bump_Envmap_Luminance() const
Definition dx8caps.h:220
int Get_Vertex_Shader_Minor_Version() const
Definition dx8caps.h:242
bool Support_NPatches() const
Definition dx8caps.h:218
bool Support_Gamma() const
Definition dx8caps.h:217
bool Support_Cubemaps() const
Definition dx8caps.h:226
DeviceTypeMatrox
Definition dx8caps.h:174
@ DEVICE_MATROX_PARHELIA_AGP8X
Definition dx8caps.h:187
@ DEVICE_MATROX_G100_AGP
Definition dx8caps.h:181
@ DEVICE_MATROX_G200_PCI
Definition dx8caps.h:179
@ DEVICE_MATROX_PARHELIA
Definition dx8caps.h:186
@ DEVICE_MATROX_G550
Definition dx8caps.h:176
@ DEVICE_MATROX_MILLENNIUM_II_AGP
Definition dx8caps.h:182
@ DEVICE_MATROX_MYSTIQUE
Definition dx8caps.h:184
@ DEVICE_MATROX_UNKNOWN
Definition dx8caps.h:175
@ DEVICE_MATROX_G200_AGP
Definition dx8caps.h:178
@ DEVICE_MATROX_MILLENNIUM_II_PCI
Definition dx8caps.h:183
@ DEVICE_MATROX_MILLENNIUM
Definition dx8caps.h:185
@ DEVICE_MATROX_G400
Definition dx8caps.h:177
@ DEVICE_MATROX_G100_PCI
Definition dx8caps.h:180
bool Support_Texture_Format(WW3DFormat format) const
Definition dx8caps.h:247
bool Support_ModAlphaAddClr() const
Definition dx8caps.h:223
bool Support_Depth_Stencil_Format(WW3DZFormat format) const
Definition dx8caps.h:249
DeviceType3Dfx
Definition dx8caps.h:164
@ DEVICE_3DFX_VOODOO_GRAPHICS
Definition dx8caps.h:170
@ DEVICE_3DFX_VOODOO_RUSH
Definition dx8caps.h:171
@ DEVICE_3DFX_VOODOO_5500_AGP
Definition dx8caps.h:166
@ DEVICE_3DFX_VOODOO_3
Definition dx8caps.h:167
@ DEVICE_3DFX_VOODOO_2
Definition dx8caps.h:169
@ DEVICE_3DFX_UNKNOWN
Definition dx8caps.h:165
@ DEVICE_3DFX_BANSHEE
Definition dx8caps.h:168
bool Is_Valid_Display_Format(int width, int height, WW3DFormat format)
Definition dx8caps.cpp:990
DeviceType3DLabs
Definition dx8caps.h:102
@ DEVICE_3DLABS_PERMEDIA
Definition dx8caps.h:104
@ DEVICE_3DLABS_R3
Definition dx8caps.h:112
@ DEVICE_3DLABS_TI_P1
Definition dx8caps.h:117
@ DEVICE_3DLABS_OXYGEN_VX1
Definition dx8caps.h:116
@ DEVICE_3DLABS_PERMEDIA4
Definition dx8caps.h:113
@ DEVICE_3DLABS_UNKNOWN
Definition dx8caps.h:103
@ DEVICE_3DLABS_PERMEDIA2
Definition dx8caps.h:118
@ DEVICE_3DLABS_G2
Definition dx8caps.h:115
@ DEVICE_3DLABS_PERMEDIA3
Definition dx8caps.h:111
@ DEVICE_3DLABS_DELTA
Definition dx8caps.h:107
@ DEVICE_3DLABS_R4
Definition dx8caps.h:114
@ DEVICE_3DLABS_500TX
Definition dx8caps.h:106
@ DEVICE_3DLABS_GAMMA
Definition dx8caps.h:109
@ DEVICE_3DLABS_300SX
Definition dx8caps.h:105
@ DEVICE_3DLABS_MX
Definition dx8caps.h:108
@ DEVICE_3DLABS_PERMEDIA2S_ST
Definition dx8caps.h:110
static void Shutdown(void)
Definition dx8caps.cpp:502
int Get_Max_Textures_Per_Pass() const
Definition dx8caps.h:232
bool Support_ZBias() const
Definition dx8caps.h:221
bool Support_Anisotropic_Filtering() const
Definition dx8caps.h:222
bool Support_Bump_Envmap() const
Definition dx8caps.h:219
const StringClass & Get_Driver_Name() const
Definition dx8caps.h:258
bool Support_PointSprites() const
Definition dx8caps.h:225
DeviceTypePowerVR
Definition dx8caps.h:190
@ DEVICE_POWERVR_UNKNOWN
Definition dx8caps.h:191
@ DEVICE_POWERVR_KYRO
Definition dx8caps.h:192
int Get_Vertex_Shader_Major_Version() const
Definition dx8caps.h:241
bool Support_Dot3() const
Definition dx8caps.h:224
void Compute_Caps(WW3DFormat display_format, const D3DADAPTER_IDENTIFIER8 &adapter_id)
Definition dx8caps.cpp:533
unsigned Get_Vendor() const
Definition dx8caps.h:256
DX8Caps(IDirect3D8 *direct3d, const D3DCAPS8 &caps, WW3DFormat display_format, const D3DADAPTER_IDENTIFIER8 &adapter_id)
Definition dx8caps.cpp:480
DriverVersionStatusType Get_Driver_Version_Status()
Definition dx8caps.h:262
WW3DFormat
Definition ww3dformat.h:75
@ WW3D_FORMAT_COUNT
Definition ww3dformat.h:101
WW3DZFormat
Definition ww3dformat.h:106
@ WW3D_ZFORMAT_COUNT
Definition ww3dformat.h:121